angular-odata 0.102.6 → 0.110.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/esm2020/lib/api.mjs +47 -7
  2. package/esm2020/lib/client.mjs +6 -31
  3. package/esm2020/lib/helper.mjs +14 -7
  4. package/esm2020/lib/models/collection.mjs +27 -27
  5. package/esm2020/lib/models/model.mjs +14 -8
  6. package/esm2020/lib/models/options.mjs +47 -26
  7. package/esm2020/lib/options.mjs +8 -2
  8. package/esm2020/lib/resources/query/expressions/compute.mjs +3 -9
  9. package/esm2020/lib/resources/query/expressions/expand.mjs +3 -9
  10. package/esm2020/lib/resources/query/expressions/filter.mjs +11 -14
  11. package/esm2020/lib/resources/query/expressions/orderby.mjs +3 -9
  12. package/esm2020/lib/resources/query/expressions/search.mjs +2 -5
  13. package/esm2020/lib/resources/query/expressions/select.mjs +3 -9
  14. package/esm2020/lib/resources/query/expressions/syntax.mjs +12 -7
  15. package/esm2020/lib/resources/query/options.mjs +9 -3
  16. package/esm2020/lib/resources/request.mjs +30 -2
  17. package/esm2020/lib/resources/resource.mjs +13 -59
  18. package/esm2020/lib/resources/responses/annotations.mjs +21 -3
  19. package/esm2020/lib/resources/responses/response.mjs +1 -1
  20. package/esm2020/lib/resources/responses/types.mjs +1 -1
  21. package/esm2020/lib/resources/types/batch.mjs +6 -9
  22. package/esm2020/lib/resources/types/count.mjs +1 -1
  23. package/esm2020/lib/resources/types/entity-set.mjs +32 -10
  24. package/esm2020/lib/resources/types/entity.mjs +1 -1
  25. package/esm2020/lib/resources/types/media.mjs +1 -1
  26. package/esm2020/lib/resources/types/metadata.mjs +3 -5
  27. package/esm2020/lib/resources/types/navigation-property.mjs +24 -6
  28. package/esm2020/lib/resources/types/options.mjs +1 -1
  29. package/esm2020/lib/resources/types/property.mjs +24 -4
  30. package/esm2020/lib/resources/types/reference.mjs +1 -1
  31. package/esm2020/lib/resources/types/singleton.mjs +1 -4
  32. package/esm2020/lib/resources/types/value.mjs +2 -2
  33. package/esm2020/lib/schema/callable.mjs +4 -4
  34. package/esm2020/lib/schema/enum-type.mjs +9 -6
  35. package/esm2020/lib/schema/parsers/callable.mjs +9 -11
  36. package/esm2020/lib/schema/parsers/edm.mjs +18 -10
  37. package/esm2020/lib/schema/parsers/enum-type.mjs +21 -23
  38. package/esm2020/lib/schema/parsers/structured-type.mjs +10 -10
  39. package/esm2020/lib/schema/schema.mjs +5 -5
  40. package/esm2020/lib/schema/structured-type.mjs +6 -4
  41. package/esm2020/lib/services/entity-set.mjs +7 -7
  42. package/esm2020/lib/types.mjs +1 -1
  43. package/esm2020/lib/utils/enums.mjs +1 -1
  44. package/esm2020/lib/utils/http.mjs +1 -1
  45. package/esm2020/lib/utils/objects.mjs +1 -1
  46. package/fesm2015/angular-odata.mjs +418 -350
  47. package/fesm2015/angular-odata.mjs.map +1 -1
  48. package/fesm2020/angular-odata.mjs +408 -308
  49. package/fesm2020/angular-odata.mjs.map +1 -1
  50. package/lib/api.d.ts +10 -3
  51. package/lib/client.d.ts +139 -1425
  52. package/lib/helper.d.ts +4 -1
  53. package/lib/models/collection.d.ts +13 -6
  54. package/lib/models/model.d.ts +7 -9
  55. package/lib/models/options.d.ts +15 -9
  56. package/lib/options.d.ts +8 -2
  57. package/lib/resources/query/expressions/compute.d.ts +1 -3
  58. package/lib/resources/query/expressions/expand.d.ts +1 -3
  59. package/lib/resources/query/expressions/filter.d.ts +2 -4
  60. package/lib/resources/query/expressions/orderby.d.ts +1 -3
  61. package/lib/resources/query/expressions/search.d.ts +0 -1
  62. package/lib/resources/query/expressions/select.d.ts +1 -3
  63. package/lib/resources/query/handlers.d.ts +3 -1
  64. package/lib/resources/request.d.ts +13 -2
  65. package/lib/resources/resource.d.ts +2 -9
  66. package/lib/resources/responses/annotations.d.ts +20 -12
  67. package/lib/resources/responses/types.d.ts +3 -3
  68. package/lib/resources/types/count.d.ts +1 -1
  69. package/lib/resources/types/entity-set.d.ts +23 -6
  70. package/lib/resources/types/entity.d.ts +8 -24
  71. package/lib/resources/types/media.d.ts +7 -15
  72. package/lib/resources/types/metadata.d.ts +1 -1
  73. package/lib/resources/types/navigation-property.d.ts +26 -28
  74. package/lib/resources/types/options.d.ts +4 -2
  75. package/lib/resources/types/property.d.ts +28 -15
  76. package/lib/resources/types/reference.d.ts +3 -12
  77. package/lib/resources/types/singleton.d.ts +8 -27
  78. package/lib/schema/callable.d.ts +3 -1
  79. package/lib/schema/enum-type.d.ts +8 -2
  80. package/lib/schema/parsers/callable.d.ts +6 -6
  81. package/lib/schema/parsers/enum-type.d.ts +5 -10
  82. package/lib/schema/parsers/structured-type.d.ts +7 -5
  83. package/lib/schema/schema.d.ts +3 -2
  84. package/lib/schema/structured-type.d.ts +4 -3
  85. package/lib/services/entity-set.d.ts +15 -6
  86. package/lib/types.d.ts +4 -1
  87. package/lib/utils/http.d.ts +1 -1
  88. package/lib/utils/objects.d.ts +19 -5
  89. package/package.json +1 -1
@@ -1,12 +1,10 @@
1
- import { map } from 'rxjs/operators';
2
1
  import { DEFAULT_VERSION, PARAM_SEPARATOR, QUERY_SEPARATOR, VALUE_SEPARATOR, } from '../constants';
3
2
  import { ODataHelper } from '../helper';
4
3
  import { ODataStructuredType } from '../schema';
5
4
  import { PathSegmentNames, } from '../types';
6
- import { Http, Objects, Types } from '../utils/index';
5
+ import { Objects, Types } from '../utils/index';
7
6
  import { ODataPathSegments, ODataPathSegmentsHandler } from './path';
8
7
  import { isQueryCustomType, ODataQueryOptions, ODataQueryOptionsHandler, } from './query';
9
- import { ODataRequest } from './request';
10
8
  export class ODataResource {
11
9
  constructor(api, { segments, query, schema, } = {}) {
12
10
  this.api = api;
@@ -139,7 +137,6 @@ export class ODataResource {
139
137
  return undefined;
140
138
  }
141
139
  deserialize(value, options) {
142
- const parserOptions = options || this.api.options.parserOptions;
143
140
  const resourceType = this.returnType();
144
141
  const _d = (value, options) => {
145
142
  const parser = this.__parser(value, options, resourceType);
@@ -148,11 +145,10 @@ export class ODataResource {
148
145
  : value;
149
146
  };
150
147
  return Array.isArray(value)
151
- ? value.map((v) => _d(v, parserOptions))
152
- : _d(value, parserOptions);
148
+ ? value.map((v) => _d(v, options))
149
+ : _d(value, options);
153
150
  }
154
151
  serialize(value, options) {
155
- const parserOptions = options || this.api.options.parserOptions;
156
152
  const resourceType = this.type();
157
153
  const _s = (value, options) => {
158
154
  const parser = this.__parser(value, options, resourceType);
@@ -161,11 +157,10 @@ export class ODataResource {
161
157
  : value;
162
158
  };
163
159
  return Array.isArray(value)
164
- ? value.map((v) => _s(v, parserOptions))
165
- : _s(value, parserOptions);
160
+ ? value.map((v) => _s(v, options))
161
+ : _s(value, options);
166
162
  }
167
163
  encode(value, options) {
168
- const parserOptions = options || this.api.options.parserOptions;
169
164
  const resourceType = this.type();
170
165
  const _e = (value, options) => {
171
166
  const parser = this.__parser(value, options, resourceType);
@@ -174,8 +169,8 @@ export class ODataResource {
174
169
  : value;
175
170
  };
176
171
  return Array.isArray(value)
177
- ? value.map((v) => _e(v, parserOptions))
178
- : _e(value, parserOptions);
172
+ ? value.map((v) => _e(v, options))
173
+ : _e(value, options);
179
174
  }
180
175
  toJSON() {
181
176
  return {
@@ -235,61 +230,20 @@ export class ODataResource {
235
230
  return ODataResource.resolveKey(value, this.schema);
236
231
  }
237
232
  //#endregion
238
- // Base Requests
239
- request(method, options) {
240
- const apiOptions = this.api.options;
241
- let params = options.params || {};
242
- if (options.withCount) {
243
- params = Http.mergeHttpParams(params, apiOptions.helper.countParam());
244
- }
245
- let etag = options.etag;
246
- if (etag === undefined && Types.isPlainObject(options.body)) {
247
- etag = apiOptions.helper.etag(options.body);
248
- }
249
- const request = new ODataRequest({
250
- method,
251
- etag,
252
- body: options.body,
253
- api: this.api,
254
- resource: this,
255
- observe: 'response',
256
- headers: options.headers,
257
- reportProgress: options.reportProgress,
258
- params: params,
259
- responseType: options.responseType,
260
- fetchPolicy: options.fetchPolicy,
261
- withCredentials: options.withCredentials,
262
- bodyQueryOptions: options.bodyQueryOptions,
263
- });
264
- const res$ = this.api.request(request);
265
- switch (options.responseType) {
266
- case 'entities':
267
- return res$.pipe(map((res) => res.entities()));
268
- case 'entity':
269
- return res$.pipe(map((res) => res.entity()));
270
- case 'property':
271
- return res$.pipe(map((res) => res.property()));
272
- case 'value':
273
- return res$.pipe(map((res) => res.value()));
274
- default:
275
- // Other responseTypes (arraybuffer, blob, json, text) return body
276
- return res$.pipe(map((res) => res.body));
277
- }
278
- }
279
233
  get(options = {}) {
280
- return this.request('GET', options);
234
+ return this.api.request('GET', this, options);
281
235
  }
282
236
  post(body, options = {}) {
283
- return this.request('POST', { body, ...options });
237
+ return this.api.request('POST', this, { body, ...options });
284
238
  }
285
239
  put(body, options = {}) {
286
- return this.request('PUT', { body, ...options });
240
+ return this.api.request('PUT', this, { body, ...options });
287
241
  }
288
242
  patch(body, options = {}) {
289
- return this.request('PATCH', { body, ...options });
243
+ return this.api.request('PATCH', this, { body, ...options });
290
244
  }
291
245
  delete(options = {}) {
292
- return this.request('DELETE', options);
246
+ return this.api.request('DELETE', this, options);
293
247
  }
294
248
  }
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVoRCxPQUFPLEVBSUwsZ0JBQWdCLEdBQ2pCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQix3QkFBd0IsR0FFekIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQWdCekMsTUFBTSxPQUFPLGFBQWE7SUFNeEIsWUFDRSxHQUFhLEVBQ2IsRUFDRSxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sTUFLSixFQUFFO1FBRU4sSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsSUFBSSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZC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RDtJQUNILENBQUM7SUFFUyxHQUFHLENBQ1gsVUFhSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRVMsSUFBSSxDQUNaLElBQVMsRUFDVCxVQVdJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRVMsR0FBRyxDQUNYLElBQVMsRUFDVCxVQVlJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRVMsS0FBSyxDQUNiLElBQVMsRUFDVCxVQVlJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRVMsTUFBTSxDQUNkLFVBWUksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT0RhdGFBcGkgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9WRVJTSU9OLFxuICBQQVJBTV9TRVBBUkFUT1IsXG4gIFFVRVJZX1NFUEFSQVRPUixcbiAgVkFMVUVfU0VQQVJBVE9SLFxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT0RhdGFIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXInO1xuaW1wb3J0IHsgT0RhdGFDb2xsZWN0aW9uLCBPRGF0YU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IE9EYXRhU3RydWN0dXJlZFR5cGUgfSBmcm9tICcuLi9zY2hlbWEnO1xuaW1wb3J0IHsgT0RhdGFTY2hlbWFFbGVtZW50IH0gZnJvbSAnLi4vc2NoZW1hL2VsZW1lbnQnO1xuaW1wb3J0IHtcbiAgUGFyc2VyT3B0aW9ucyxcbiAgUGFyc2VyLFxuICBRdWVyeU9wdGlvbk5hbWVzLFxuICBQYXRoU2VnbWVudE5hbWVzLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBIdHRwLCBPYmplY3RzLCBUeXBlcyB9IGZyb20gJy4uL3V0aWxzL2luZGV4JztcbmltcG9ydCB7IE9EYXRhUGF0aFNlZ21lbnRzLCBPRGF0YVBhdGhTZWdtZW50c0hhbmRsZXIgfSBmcm9tICcuL3BhdGgnO1xuaW1wb3J0IHtcbiAgaXNRdWVyeUN1c3RvbVR5cGUsXG4gIE9EYXRhUXVlcnlPcHRpb25zLFxuICBPRGF0YVF1ZXJ5T3B0aW9uc0hhbmRsZXIsXG4gIFF1ZXJ5Q3VzdG9tVHlwZSxcbn0gZnJvbSAnLi9xdWVyeSc7XG5pbXBvcnQgeyBPRGF0YVJlcXVlc3QgfSBmcm9tICcuL3JlcXVlc3QnO1xuaW1wb3J0IHtcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YUVudGl0eUFubm90YXRpb25zLFxuICBPRGF0YVJlc3BvbnNlLFxufSBmcm9tICcuL3Jlc3BvbnNlcy9pbmRleCc7XG5pbXBvcnQgeyBPRGF0YU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRW50aXR5S2V5PFQ+ID1cbiAgfCB7XG4gICAgICByZWFkb25seSBbUCBpbiBrZXlvZiBUXT86IFRbUF07XG4gICAgfVxuICB8IFF1ZXJ5Q3VzdG9tVHlwZVxuICB8IHN0cmluZ1xuICB8IG51bWJlcjtcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVzb3VyY2U8VD4ge1xuICAvLyBWQVJJQUJMRVNcbiAgcHVibGljIGFwaTogT0RhdGFBcGk7XG4gIHB1YmxpYyBzY2hlbWE/OiBPRGF0YVNjaGVtYUVsZW1lbnQ7XG4gIHByb3RlY3RlZCBwYXRoU2VnbWVudHM6IE9EYXRhUGF0aFNlZ21lbnRzO1xuICBwcm90ZWN0ZWQgcXVlcnlPcHRpb25zOiBPRGF0YVF1ZXJ5T3B0aW9uczxUPjtcbiAgY29uc3RydWN0b3IoXG4gICAgYXBpOiBPRGF0YUFwaSxcbiAgICB7XG4gICAgICBzZWdtZW50cyxcbiAgICAgIHF1ZXJ5LFxuICAgICAgc2NoZW1hLFxuICAgIH06IHtcbiAgICAgIHNlZ21lbnRzPzogT0RhdGFQYXRoU2VnbWVudHM7XG4gICAgICBxdWVyeT86IE9EYXRhUXVlcnlPcHRpb25zPFQ+O1xuICAgICAgc2NoZW1hPzogT0RhdGFTY2hlbWFFbGVtZW50O1xuICAgIH0gPSB7fVxuICApIHtcbiAgICB0aGlzLmFwaSA9IGFwaTtcbiAgICB0aGlzLnBhdGhTZWdtZW50cyA9IHNlZ21lbnRzIHx8IG5ldyBPRGF0YVBhdGhTZWdtZW50cygpO1xuICAgIHRoaXMucXVlcnlPcHRpb25zID0gcXVlcnkgfHwgbmV3IE9EYXRhUXVlcnlPcHRpb25zKCk7XG4gICAgdGhpcy5zY2hlbWEgPSBzY2hlbWE7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMubGFzdCgpPy50eXBlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXR1cm5cbiAgICovXG4gIHJldHVyblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoKT8udHlwZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHN0cmluZyBBbGwgY292ZXJlZCB0eXBlcyBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMudHlwZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBib29sZWFuIFRoZSByZXNvdXJjZSBoYXMga2V5ID9cbiAgICovXG4gIGhhc0tleSgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnBhdGhTZWdtZW50cy5sYXN0KHsga2V5OiB0cnVlIH0pPy5oYXNLZXkoKSk7XG4gIH1cblxuICBoYXNFbnRpdHlLZXkoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5wYXRoU2VnbWVudHMuZ2V0KFBhdGhTZWdtZW50TmFtZXMuZW50aXR5U2V0KT8uaGFzS2V5KCkpO1xuICB9XG5cbiAgY2xlYXJLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoeyBrZXk6IHRydWUgfSk/LmNsZWFyS2V5KCk7XG4gIH1cblxuICAvLyNyZWdpb24gTW9kZWxzXG4gIGFzTW9kZWw8TSBleHRlbmRzIE9EYXRhTW9kZWw8VD4+KFxuICAgIGVudGl0eT86IFBhcnRpYWw8VD4gfCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSxcbiAgICB7IGFubm90cywgcmVzZXQgfTogeyBhbm5vdHM/OiBPRGF0YUVudGl0eUFubm90YXRpb25zOyByZXNldD86IGJvb2xlYW4gfSA9IHt9XG4gICk6IE0ge1xuICAgIGxldCByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPiA9IHRoaXMgYXMgT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBjb25zdCB0eXBlID0gYW5ub3RzPy50eXBlIHx8IHRoaXMucmV0dXJuVHlwZSgpO1xuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHRocm93IEVycm9yKCcnKTtcbiAgICBjb25zdCBNb2RlbCA9IHRoaXMuYXBpLm1vZGVsRm9yVHlwZSh0eXBlKTtcbiAgICBsZXQgZW50aXR5U2V0ID0gYW5ub3RzPy5lbnRpdHlTZXQ7XG4gICAgaWYgKGVudGl0eVNldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXNvdXJjZSA9IHRoaXMuYXBpLmVudGl0eVNldDxUPihlbnRpdHlTZXQpLmVudGl0eShlbnRpdHkgYXMgUGFydGlhbDxUPik7XG4gICAgICByZXNvdXJjZS5xdWVyeSgocSkgPT4gcS5hcHBseSh0aGlzLnF1ZXJ5T3B0aW9ucy50b1F1ZXJ5QXJndW1lbnRzKCkpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNb2RlbChlbnRpdHksIHsgcmVzb3VyY2UsIGFubm90cywgcmVzZXQgfSkgYXMgTTtcbiAgfVxuXG4gIGFzQ29sbGVjdGlvbjxNIGV4dGVuZHMgT0RhdGFNb2RlbDxUPiwgQyBleHRlbmRzIE9EYXRhQ29sbGVjdGlvbjxULCBNPj4oXG4gICAgZW50aXRpZXM/OiBQYXJ0aWFsPFQ+W10gfCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfVtdLFxuICAgIHtcbiAgICAgIGFubm90cyxcbiAgICAgIHJlc2V0LFxuICAgIH06IHsgYW5ub3RzPzogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zOyByZXNldD86IGJvb2xlYW4gfSA9IHt9XG4gICk6IEMge1xuICAgIGxldCByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPiA9IHRoaXMgYXMgT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBjb25zdCB0eXBlID0gYW5ub3RzPy50eXBlIHx8IHRoaXMucmV0dXJuVHlwZSgpO1xuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHRocm93IEVycm9yKCcnKTtcbiAgICBjb25zdCBDb2xsZWN0aW9uID0gdGhpcy5hcGkuY29sbGVjdGlvbkZvclR5cGUodHlwZSk7XG4gICAgbGV0IHBhdGggPSBhbm5vdHM/LmVudGl0eVNldDtcbiAgICBpZiAocGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXNvdXJjZSA9IHRoaXMuYXBpLmVudGl0eVNldDxUPihwYXRoKTtcbiAgICAgIHJlc291cmNlLnF1ZXJ5KChxKSA9PiBxLmFwcGx5KHRoaXMucXVlcnlPcHRpb25zLnRvUXVlcnlBcmd1bWVudHMoKSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IENvbGxlY3Rpb24oZW50aXRpZXMsIHsgcmVzb3VyY2UsIGFubm90cywgcmVzZXQgfSkgYXMgQztcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBpc1N1YnR5cGVPZihvdGhlcjogT0RhdGFSZXNvdXJjZTxhbnk+KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG90aGVyLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLnNjaGVtYT8uaXNTdWJ0eXBlT2Yob3RoZXIuc2NoZW1hKVxuICAgICk7XG4gIH1cblxuICBpc1N1cGVydHlwZU9mKG90aGVyOiBPRGF0YVJlc291cmNlPGFueT4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3RoZXIuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuc2NoZW1hPy5pc1N1cGVydHlwZU9mKG90aGVyLnNjaGVtYSlcbiAgICApO1xuICB9XG5cbiAgaXNFcXVhbFRvKG90aGVyOiBPRGF0YVJlc291cmNlPGFueT4sIHRlc3Q/OiAncGF0aCcgfCAncGFyYW1zJykge1xuICAgIGNvbnN0IFtzZWxmUGF0aCwgc2VsZlBhcmFtc10gPSB0aGlzLnBhdGhBbmRQYXJhbXMoKTtcbiAgICBjb25zdCBbb3RoZXJQYXRoLCBvdGhlclBhcmFtc10gPSBvdGhlci5wYXRoQW5kUGFyYW1zKCk7XG4gICAgcmV0dXJuIHRlc3QgPT09ICdwYXRoJ1xuICAgICAgPyBvdGhlclBhdGggPT09IHNlbGZQYXRoXG4gICAgICA6IHRlc3QgPT09ICdwYXJhbXMnXG4gICAgICA/IFR5cGVzLmlzRXF1YWwoc2VsZlBhcmFtcywgb3RoZXJQYXJhbXMpXG4gICAgICA6IG90aGVyUGF0aCA9PT0gc2VsZlBhdGggJiYgVHlwZXMuaXNFcXVhbChzZWxmUGFyYW1zLCBvdGhlclBhcmFtcyk7XG4gIH1cblxuICBwYXRoQW5kUGFyYW1zKGVzY2FwZTogYm9vbGVhbiA9IGZhbHNlKTogW3N0cmluZywgeyBbbmFtZTogc3RyaW5nXTogYW55IH1dIHtcbiAgICBjb25zdCBbc3BhdGgsIHNwYXJhbXNdID0gdGhpcy5wYXRoU2VnbWVudHMucGF0aEFuZFBhcmFtcyhlc2NhcGUpO1xuICAgIGNvbnN0IFssIHFwYXJhbXNdID0gdGhpcy5xdWVyeU9wdGlvbnMucGF0aEFuZFBhcmFtcyhlc2NhcGUpO1xuXG4gICAgcmV0dXJuIFtzcGF0aCwgeyAuLi5zcGFyYW1zLCAuLi5xcGFyYW1zIH1dO1xuICB9XG5cbiAgZW5kcG9pbnRVcmwocGFyYW1zOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmFwaS5zZXJ2aWNlUm9vdFVybH0ke3RoaXN9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IFtwYXRoXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7cGF0aH1gO1xuICAgIH1cbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgbGV0IFtwYXRoLCBwYXJhbXNdID0gdGhpcy5wYXRoQW5kUGFyYW1zKCk7XG4gICAgbGV0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmVudHJpZXMocGFyYW1zKVxuICAgICAgLm1hcCgoZSkgPT4gYCR7ZVswXX0ke1ZBTFVFX1NFUEFSQVRPUn0ke2VbMV19YClcbiAgICAgIC5qb2luKFBBUkFNX1NFUEFSQVRPUik7XG4gICAgcmV0dXJuIHF1ZXJ5U3RyaW5nID8gYCR7cGF0aH0ke1FVRVJZX1NFUEFSQVRPUn0ke3F1ZXJ5U3RyaW5nfWAgOiBwYXRoO1xuICB9XG5cbiAgY2xvbmUoKTogT0RhdGFSZXNvdXJjZTxUPiB7XG4gICAgY29uc3QgQ3RvciA9IHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIE9EYXRhUmVzb3VyY2U7XG4gICAgcmV0dXJuIG5ldyBDdG9yKHRoaXMuYXBpLCB7XG4gICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAgc2VnbWVudHM6IHRoaXMuY2xvbmVTZWdtZW50cygpLFxuICAgICAgcXVlcnk6IHRoaXMuY2xvbmVRdWVyeTxUPigpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfX3BhcnNlcihcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM/OiBQYXJzZXJPcHRpb25zLFxuICAgIHR5cGU/OiBzdHJpbmdcbiAgKTogUGFyc2VyPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBkYXRhVHlwZSA9XG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSlcbiAgICAgICAgPyBPRGF0YUhlbHBlcltvcHRpb25zLnZlcnNpb24gfHwgREVGQVVMVF9WRVJTSU9OXS50eXBlKHZhbHVlKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAoZGF0YVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gZGF0YSB0eXBlXG4gICAgICByZXR1cm4gdGhpcy5hcGkucGFyc2VyRm9yVHlwZTxUPihkYXRhVHlwZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmICdwYXJzZXInIGluIHRoaXMuc2NoZW1hKSB7XG4gICAgICAvLyBQYXJzZXIgZnJvbSByZXNvdXJjZSBzY2hlbWFcbiAgICAgIHJldHVybiAoPGFueT50aGlzLnNjaGVtYSkucGFyc2VyIGFzIFBhcnNlcjxUPiB8IHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gcmVzb3VyY2UgdHlwZVxuICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhcnNlckZvclR5cGU8VD4odHlwZSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zPzogUGFyc2VyT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgcGFyc2VyT3B0aW9ucyA9IG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucy5wYXJzZXJPcHRpb25zO1xuICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IHRoaXMucmV0dXJuVHlwZSgpO1xuICAgIGNvbnN0IF9kID0gKHZhbHVlOiBhbnksIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuX19wYXJzZXIodmFsdWUsIG9wdGlvbnMsIHJlc291cmNlVHlwZSk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ2Rlc2VyaWFsaXplJyBpbiBwYXJzZXJcbiAgICAgICAgPyBwYXJzZXIuZGVzZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpXG4gICAgICAgIDogdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBfZCh2LCBwYXJzZXJPcHRpb25zKSlcbiAgICAgIDogX2QodmFsdWUsIHBhcnNlck9wdGlvbnMpO1xuICB9XG5cbiAgc2VyaWFsaXplKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBQYXJzZXJPcHRpb25zKTogYW55IHtcbiAgICBjb25zdCBwYXJzZXJPcHRpb25zID0gb3B0aW9ucyB8fCB0aGlzLmFwaS5vcHRpb25zLnBhcnNlck9wdGlvbnM7XG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy50eXBlKCk7XG4gICAgY29uc3QgX3MgPSAodmFsdWU6IGFueSwgb3B0aW9uczogUGFyc2VyT3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5fX3BhcnNlcih2YWx1ZSwgb3B0aW9ucywgcmVzb3VyY2VUeXBlKTtcbiAgICAgIHJldHVybiBwYXJzZXIgIT09IHVuZGVmaW5lZCAmJiAnc2VyaWFsaXplJyBpbiBwYXJzZXJcbiAgICAgICAgPyBwYXJzZXIuc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKVxuICAgICAgICA6IHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gX3ModiwgcGFyc2VyT3B0aW9ucykpXG4gICAgICA6IF9zKHZhbHVlLCBwYXJzZXJPcHRpb25zKTtcbiAgfVxuXG4gIGVuY29kZSh2YWx1ZTogYW55LCBvcHRpb25zPzogUGFyc2VyT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgcGFyc2VyT3B0aW9ucyA9IG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucy5wYXJzZXJPcHRpb25zO1xuICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IHRoaXMudHlwZSgpO1xuICAgIGNvbnN0IF9lID0gKHZhbHVlOiBhbnksIG9wdGlvbnM6IFBhcnNlck9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuX19wYXJzZXIodmFsdWUsIG9wdGlvbnMsIHJlc291cmNlVHlwZSk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ2VuY29kZScgaW4gcGFyc2VyXG4gICAgICAgID8gcGFyc2VyLmVuY29kZSh2YWx1ZSwgb3B0aW9ucylcbiAgICAgICAgOiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IF9lKHYsIHBhcnNlck9wdGlvbnMpKVxuICAgICAgOiBfZSh2YWx1ZSwgcGFyc2VyT3B0aW9ucyk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlZ21lbnRzOiB0aGlzLnBhdGhTZWdtZW50cy50b0pTT04oKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMucXVlcnlPcHRpb25zLnRvSlNPTigpLFxuICAgIH07XG4gIH1cblxuICBjbG9uZVNlZ21lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy5jbG9uZSgpO1xuICB9XG5cbiAgLy8jcmVnaW9uIFF1ZXJ5IE9wdGlvbnNcbiAgY2xlYXJRdWVyeSgpIHtcbiAgICB0aGlzLnF1ZXJ5T3B0aW9ucy5jbGVhcigpO1xuICB9XG5cbiAgY2xvbmVRdWVyeTxQPigpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeU9wdGlvbnMuY2xvbmU8UD4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHBhdGggc2VnbWVudHMgb2YgdGhlIHJlc291cmNlXG4gICAqIENyZWF0ZSBhbiBvYmplY3QgaGFuZGxlciBmb3IgbXV0YXRlIHRoZSBwYXRoIHNlZ21lbnRzIG9mIHRoZSByZXNvdXJjZVxuICAgKiBAcGFyYW0gZiBGdW5jdGlvbiBjb250ZXh0IGZvciBoYW5kbGUgdGhlIHNlZ21lbnRzXG4gICAqIEByZXR1cm5zIE9EYXRhQWN0aW9uUmVzb3VyY2VcbiAgICovXG4gIHNlZ21lbnQoXG4gICAgZjogKHE6IE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlcjxUPiwgcz86IE9EYXRhU3RydWN0dXJlZFR5cGU8VD4pID0+IHZvaWRcbiAgKSB7XG4gICAgLypcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlKCk7XG4gICAgY29uc3Qgc2NoZW1hID0gdHlwZSA/IHRoaXMuYXBpLmZpbmRTdHJ1Y3R1cmVkVHlwZUZvclR5cGU8VD4odHlwZSkgOiB1bmRlZmluZWQ7XG4gICAgKi9cbiAgICBmKFxuICAgICAgbmV3IE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlcjxUPih0aGlzLnBhdGhTZWdtZW50cyksXG4gICAgICB0aGlzLnNjaGVtYSBpbnN0YW5jZW9mIE9EYXRhU3RydWN0dXJlZFR5cGUgPyB0aGlzLnNjaGVtYSA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zIG9mIHRoZSByZXNvdXJjZVxuICAgKiBDcmVhdGUgYW4gb2JqZWN0IGhhbmRsZXIgZm9yIG11dGF0ZSB0aGUgcXVlcnkgb3B0aW9ucyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIGYgRnVuY3Rpb24gY29udGV4dCBmb3IgaGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBxdWVyeShcbiAgICBmOiAocTogT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+LCBzPzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPikgPT4gdm9pZFxuICApIHtcbiAgICAvKlxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBjb25zdCBzY2hlbWEgPSB0eXBlID8gdGhpcy5hcGkuZmluZFN0cnVjdHVyZWRUeXBlRm9yVHlwZTxUPih0eXBlKSA6IHVuZGVmaW5lZDtcbiAgICAqL1xuICAgIGYoXG4gICAgICBuZXcgT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+KHRoaXMucXVlcnlPcHRpb25zKSxcbiAgICAgIHRoaXMuc2NoZW1hIGluc3RhbmNlb2YgT0RhdGFTdHJ1Y3R1cmVkVHlwZSA/IHRoaXMuc2NoZW1hIDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlS2V5PFQ+KFxuICAgIHZhbHVlOiBhbnksXG4gICAgc2NoZW1hPzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPlxuICApOiBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChpc1F1ZXJ5Q3VzdG9tVHlwZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKFR5cGVzLmlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gc2NoZW1hIGluc3RhbmNlb2YgT0RhdGFTdHJ1Y3R1cmVkVHlwZVxuICAgICAgICA/IHNjaGVtYS5yZXNvbHZlS2V5KHZhbHVlKVxuICAgICAgICA6IE9iamVjdHMucmVzb2x2ZUtleSh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSBhcyBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzb2x2ZUtleSh2YWx1ZTogYW55KTogRW50aXR5S2V5PFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gT0RhdGFSZXNvdXJjZS5yZXNvbHZlS2V5PFQ+KFxuICAgICAgdmFsdWUsXG4gICAgICB0aGlzLnNjaGVtYSBhcyBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+XG4gICAgKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyBCYXNlIFJlcXVlc3RzXG4gIHByb3RlY3RlZCByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk/OiBhbnk7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uTmFtZXNbXTtcbiAgICB9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYXBpT3B0aW9ucyA9IHRoaXMuYXBpLm9wdGlvbnM7XG4gICAgbGV0IHBhcmFtcyA9IG9wdGlvbnMucGFyYW1zIHx8IHt9O1xuICAgIGlmIChvcHRpb25zLndpdGhDb3VudCkge1xuICAgICAgcGFyYW1zID0gSHR0cC5tZXJnZUh0dHBQYXJhbXMocGFyYW1zLCBhcGlPcHRpb25zLmhlbHBlci5jb3VudFBhcmFtKCkpO1xuICAgIH1cblxuICAgIGxldCBldGFnID0gb3B0aW9ucy5ldGFnO1xuICAgIGlmIChldGFnID09PSB1bmRlZmluZWQgJiYgVHlwZXMuaXNQbGFpbk9iamVjdChvcHRpb25zLmJvZHkpKSB7XG4gICAgICBldGFnID0gYXBpT3B0aW9ucy5oZWxwZXIuZXRhZyhvcHRpb25zLmJvZHkpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgT0RhdGFSZXF1ZXN0KHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIGV0YWcsXG4gICAgICBib2R5OiBvcHRpb25zLmJvZHksXG4gICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgcmVzb3VyY2U6IHRoaXMsXG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxuICAgICAgaGVhZGVyczogb3B0aW9ucy5oZWFkZXJzLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IG9wdGlvbnMucmVwb3J0UHJvZ3Jlc3MsXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucy5yZXNwb25zZVR5cGUsXG4gICAgICBmZXRjaFBvbGljeTogb3B0aW9ucy5mZXRjaFBvbGljeSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMsXG4gICAgICBib2R5UXVlcnlPcHRpb25zOiBvcHRpb25zLmJvZHlRdWVyeU9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXMkID0gdGhpcy5hcGkucmVxdWVzdChyZXF1ZXN0KTtcbiAgICBzd2l0Y2ggKG9wdGlvbnMucmVzcG9uc2VUeXBlKSB7XG4gICAgICBjYXNlICdlbnRpdGllcyc6XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy5lbnRpdGllcygpKSk7XG4gICAgICBjYXNlICdlbnRpdHknOlxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMuZW50aXR5KCkpKTtcbiAgICAgIGNhc2UgJ3Byb3BlcnR5JzpcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLnByb3BlcnR5KCkpKTtcbiAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLnZhbHVlKCkgYXMgVCkpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gT3RoZXIgcmVzcG9uc2VUeXBlcyAoYXJyYXlidWZmZXIsIGJsb2IsIGpzb24sIHRleHQpIHJldHVybiBib2R5XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy5ib2R5KSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldChcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uTmFtZXNbXTtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdHRVQnLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwb3N0KFxuICAgIGJvZHk6IGFueSxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUE9TVCcsIHsgYm9keSwgLi4ub3B0aW9ucyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdXQoXG4gICAgYm9keTogYW55LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUFVUJywgeyBib2R5LCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhdGNoKFxuICAgIGJvZHk6IGFueSxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ1BBVENIJywgeyBib2R5LCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlbGV0ZShcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ0RFTEVURScsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEdBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWhELE9BQU8sRUFJTCxnQkFBZ0IsR0FDakIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsd0JBQXdCLEdBRXpCLE1BQU0sU0FBUyxDQUFDO0FBZWpCLE1BQU0sT0FBTyxhQUFhO0lBTXhCLFlBQ0UsR0FBYSxFQUNiLEVBQ0UsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLE1BS0osRUFBRTtRQUVOLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFDLENB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LENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBSSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFUyxJQUFJLENBQ1osSUFBUyxFQUNULFVBV0ksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUksTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVTLEdBQUcsQ0FDWCxJQUFTLEVBQ1QsVUFZSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBSSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRVMsS0FBSyxDQUNiLElBQVMsRUFDVCxVQVlJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFJLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFUyxNQUFNLENBQ2QsVUFZSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gIERFRkFVTFRfVkVSU0lPTixcbiAgUEFSQU1fU0VQQVJBVE9SLFxuICBRVUVSWV9TRVBBUkFUT1IsXG4gIFZBTFVFX1NFUEFSQVRPUixcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhSGVscGVyIH0gZnJvbSAnLi4vaGVscGVyJztcbmltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiwgT0RhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBPRGF0YVN0cnVjdHVyZWRUeXBlIH0gZnJvbSAnLi4vc2NoZW1hJztcbmltcG9ydCB7IE9EYXRhU2NoZW1hRWxlbWVudCB9IGZyb20gJy4uL3NjaGVtYS9lbGVtZW50JztcbmltcG9ydCB7XG4gIFBhcnNlck9wdGlvbnMsXG4gIFBhcnNlcixcbiAgUXVlcnlPcHRpb25OYW1lcyxcbiAgUGF0aFNlZ21lbnROYW1lcyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JqZWN0cywgVHlwZXMgfSBmcm9tICcuLi91dGlscy9pbmRleCc7XG5pbXBvcnQgeyBPRGF0YVBhdGhTZWdtZW50cywgT0RhdGFQYXRoU2VnbWVudHNIYW5kbGVyIH0gZnJvbSAnLi9wYXRoJztcbmltcG9ydCB7XG4gIGlzUXVlcnlDdXN0b21UeXBlLFxuICBPRGF0YVF1ZXJ5T3B0aW9ucyxcbiAgT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyLFxuICBRdWVyeUN1c3RvbVR5cGUsXG59IGZyb20gJy4vcXVlcnknO1xuaW1wb3J0IHtcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YUVudGl0eUFubm90YXRpb25zLFxufSBmcm9tICcuL3Jlc3BvbnNlcy9pbmRleCc7XG5pbXBvcnQgeyBPRGF0YU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRW50aXR5S2V5PFQ+ID1cbiAgfCB7XG4gICAgICByZWFkb25seSBbUCBpbiBrZXlvZiBUXT86IFRbUF07XG4gICAgfVxuICB8IFF1ZXJ5Q3VzdG9tVHlwZVxuICB8IHN0cmluZ1xuICB8IG51bWJlcjtcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVzb3VyY2U8VD4ge1xuICAvLyBWQVJJQUJMRVNcbiAgcHVibGljIGFwaTogT0RhdGFBcGk7XG4gIHB1YmxpYyBzY2hlbWE/OiBPRGF0YVNjaGVtYUVsZW1lbnQ7XG4gIHByb3RlY3RlZCBwYXRoU2VnbWVudHM6IE9EYXRhUGF0aFNlZ21lbnRzO1xuICBwcm90ZWN0ZWQgcXVlcnlPcHRpb25zOiBPRGF0YVF1ZXJ5T3B0aW9uczxUPjtcbiAgY29uc3RydWN0b3IoXG4gICAgYXBpOiBPRGF0YUFwaSxcbiAgICB7XG4gICAgICBzZWdtZW50cyxcbiAgICAgIHF1ZXJ5LFxuICAgICAgc2NoZW1hLFxuICAgIH06IHtcbiAgICAgIHNlZ21lbnRzPzogT0RhdGFQYXRoU2VnbWVudHM7XG4gICAgICBxdWVyeT86IE9EYXRhUXVlcnlPcHRpb25zPFQ+O1xuICAgICAgc2NoZW1hPzogT0RhdGFTY2hlbWFFbGVtZW50O1xuICAgIH0gPSB7fVxuICApIHtcbiAgICB0aGlzLmFwaSA9IGFwaTtcbiAgICB0aGlzLnBhdGhTZWdtZW50cyA9IHNlZ21lbnRzIHx8IG5ldyBPRGF0YVBhdGhTZWdtZW50cygpO1xuICAgIHRoaXMucXVlcnlPcHRpb25zID0gcXVlcnkgfHwgbmV3IE9EYXRhUXVlcnlPcHRpb25zKCk7XG4gICAgdGhpcy5zY2hlbWEgPSBzY2hlbWE7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMubGFzdCgpPy50eXBlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXR1cm5cbiAgICovXG4gIHJldHVyblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoKT8udHlwZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHN0cmluZyBBbGwgY292ZXJlZCB0eXBlcyBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMudHlwZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBib29sZWFuIFRoZSByZXNvdXJjZSBoYXMga2V5ID9cbiAgICovXG4gIGhhc0tleSgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnBhdGhTZWdtZW50cy5sYXN0KHsga2V5OiB0cnVlIH0pPy5oYXNLZXkoKSk7XG4gIH1cblxuICBoYXNFbnRpdHlLZXkoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5wYXRoU2VnbWVudHMuZ2V0KFBhdGhTZWdtZW50TmFtZXMuZW50aXR5U2V0KT8uaGFzS2V5KCkpO1xuICB9XG5cbiAgY2xlYXJLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoeyBrZXk6IHRydWUgfSk/LmNsZWFyS2V5KCk7XG4gIH1cblxuICAvLyNyZWdpb24gTW9kZWxzXG4gIGFzTW9kZWw8TSBleHRlbmRzIE9EYXRhTW9kZWw8VD4+KFxuICAgIGVudGl0eT86IFBhcnRpYWw8VD4gfCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSxcbiAgICB7IGFubm90cywgcmVzZXQgfTogeyBhbm5vdHM/OiBPRGF0YUVudGl0eUFubm90YXRpb25zPFQ+OyByZXNldD86IGJvb2xlYW4gfSA9IHt9XG4gICk6IE0ge1xuICAgIGxldCByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPiA9IHRoaXMgYXMgT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBjb25zdCB0eXBlID0gYW5ub3RzPy50eXBlIHx8IHRoaXMucmV0dXJuVHlwZSgpO1xuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHRocm93IEVycm9yKCcnKTtcbiAgICBjb25zdCBNb2RlbCA9IHRoaXMuYXBpLm1vZGVsRm9yVHlwZSh0eXBlKTtcbiAgICBsZXQgZW50aXR5U2V0ID0gYW5ub3RzPy5lbnRpdHlTZXQ7XG4gICAgaWYgKGVudGl0eVNldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXNvdXJjZSA9IHRoaXMuYXBpLmVudGl0eVNldDxUPihlbnRpdHlTZXQpLmVudGl0eShlbnRpdHkgYXMgUGFydGlhbDxUPik7XG4gICAgICByZXNvdXJjZS5xdWVyeSgocSkgPT4gcS5hcHBseSh0aGlzLnF1ZXJ5T3B0aW9ucy50b1F1ZXJ5QXJndW1lbnRzKCkpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNb2RlbChlbnRpdHksIHsgcmVzb3VyY2UsIGFubm90cywgcmVzZXQgfSkgYXMgTTtcbiAgfVxuXG4gIGFzQ29sbGVjdGlvbjxNIGV4dGVuZHMgT0RhdGFNb2RlbDxUPiwgQyBleHRlbmRzIE9EYXRhQ29sbGVjdGlvbjxULCBNPj4oXG4gICAgZW50aXRpZXM/OiBQYXJ0aWFsPFQ+W10gfCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfVtdLFxuICAgIHtcbiAgICAgIGFubm90cyxcbiAgICAgIHJlc2V0LFxuICAgIH06IHsgYW5ub3RzPzogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPFQ+OyByZXNldD86IGJvb2xlYW4gfSA9IHt9XG4gICk6IEMge1xuICAgIGxldCByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPiA9IHRoaXMgYXMgT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBjb25zdCB0eXBlID0gYW5ub3RzPy50eXBlIHx8IHRoaXMucmV0dXJuVHlwZSgpO1xuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHRocm93IEVycm9yKCcnKTtcbiAgICBjb25zdCBDb2xsZWN0aW9uID0gdGhpcy5hcGkuY29sbGVjdGlvbkZvclR5cGUodHlwZSk7XG4gICAgbGV0IHBhdGggPSBhbm5vdHM/LmVudGl0eVNldDtcbiAgICBpZiAocGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXNvdXJjZSA9IHRoaXMuYXBpLmVudGl0eVNldDxUPihwYXRoKTtcbiAgICAgIHJlc291cmNlLnF1ZXJ5KChxKSA9PiBxLmFwcGx5KHRoaXMucXVlcnlPcHRpb25zLnRvUXVlcnlBcmd1bWVudHMoKSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IENvbGxlY3Rpb24oZW50aXRpZXMsIHsgcmVzb3VyY2UsIGFubm90cywgcmVzZXQgfSkgYXMgQztcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBpc1N1YnR5cGVPZihvdGhlcjogT0RhdGFSZXNvdXJjZTxhbnk+KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG90aGVyLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLnNjaGVtYT8uaXNTdWJ0eXBlT2Yob3RoZXIuc2NoZW1hKVxuICAgICk7XG4gIH1cblxuICBpc1N1cGVydHlwZU9mKG90aGVyOiBPRGF0YVJlc291cmNlPGFueT4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3RoZXIuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuc2NoZW1hPy5pc1N1cGVydHlwZU9mKG90aGVyLnNjaGVtYSlcbiAgICApO1xuICB9XG5cbiAgaXNFcXVhbFRvKG90aGVyOiBPRGF0YVJlc291cmNlPGFueT4sIHRlc3Q/OiAncGF0aCcgfCAncGFyYW1zJykge1xuICAgIGNvbnN0IFtzZWxmUGF0aCwgc2VsZlBhcmFtc10gPSB0aGlzLnBhdGhBbmRQYXJhbXMoKTtcbiAgICBjb25zdCBbb3RoZXJQYXRoLCBvdGhlclBhcmFtc10gPSBvdGhlci5wYXRoQW5kUGFyYW1zKCk7XG4gICAgcmV0dXJuIHRlc3QgPT09ICdwYXRoJ1xuICAgICAgPyBvdGhlclBhdGggPT09IHNlbGZQYXRoXG4gICAgICA6IHRlc3QgPT09ICdwYXJhbXMnXG4gICAgICA/IFR5cGVzLmlzRXF1YWwoc2VsZlBhcmFtcywgb3RoZXJQYXJhbXMpXG4gICAgICA6IG90aGVyUGF0aCA9PT0gc2VsZlBhdGggJiYgVHlwZXMuaXNFcXVhbChzZWxmUGFyYW1zLCBvdGhlclBhcmFtcyk7XG4gIH1cblxuICBwYXRoQW5kUGFyYW1zKGVzY2FwZTogYm9vbGVhbiA9IGZhbHNlKTogW3N0cmluZywgeyBbbmFtZTogc3RyaW5nXTogYW55IH1dIHtcbiAgICBjb25zdCBbc3BhdGgsIHNwYXJhbXNdID0gdGhpcy5wYXRoU2VnbWVudHMucGF0aEFuZFBhcmFtcyhlc2NhcGUpO1xuICAgIGNvbnN0IFssIHFwYXJhbXNdID0gdGhpcy5xdWVyeU9wdGlvbnMucGF0aEFuZFBhcmFtcyhlc2NhcGUpO1xuXG4gICAgcmV0dXJuIFtzcGF0aCwgeyAuLi5zcGFyYW1zLCAuLi5xcGFyYW1zIH1dO1xuICB9XG5cbiAgZW5kcG9pbnRVcmwocGFyYW1zOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmFwaS5zZXJ2aWNlUm9vdFVybH0ke3RoaXN9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IFtwYXRoXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7cGF0aH1gO1xuICAgIH1cbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgbGV0IFtwYXRoLCBwYXJhbXNdID0gdGhpcy5wYXRoQW5kUGFyYW1zKCk7XG4gICAgbGV0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmVudHJpZXMocGFyYW1zKVxuICAgICAgLm1hcCgoZSkgPT4gYCR7ZVswXX0ke1ZBTFVFX1NFUEFSQVRPUn0ke2VbMV19YClcbiAgICAgIC5qb2luKFBBUkFNX1NFUEFSQVRPUik7XG4gICAgcmV0dXJuIHF1ZXJ5U3RyaW5nID8gYCR7cGF0aH0ke1FVRVJZX1NFUEFSQVRPUn0ke3F1ZXJ5U3RyaW5nfWAgOiBwYXRoO1xuICB9XG5cbiAgY2xvbmUoKTogT0RhdGFSZXNvdXJjZTxUPiB7XG4gICAgY29uc3QgQ3RvciA9IHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIE9EYXRhUmVzb3VyY2U7XG4gICAgcmV0dXJuIG5ldyBDdG9yKHRoaXMuYXBpLCB7XG4gICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAgc2VnbWVudHM6IHRoaXMuY2xvbmVTZWdtZW50cygpLFxuICAgICAgcXVlcnk6IHRoaXMuY2xvbmVRdWVyeTxUPigpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfX3BhcnNlcihcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM/OiBQYXJzZXJPcHRpb25zLFxuICAgIHR5cGU/OiBzdHJpbmdcbiAgKTogUGFyc2VyPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBkYXRhVHlwZSA9XG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSlcbiAgICAgICAgPyBPRGF0YUhlbHBlcltvcHRpb25zLnZlcnNpb24gfHwgREVGQVVMVF9WRVJTSU9OXS50eXBlKHZhbHVlKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAoZGF0YVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gZGF0YSB0eXBlXG4gICAgICByZXR1cm4gdGhpcy5hcGkucGFyc2VyRm9yVHlwZTxUPihkYXRhVHlwZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmICdwYXJzZXInIGluIHRoaXMuc2NoZW1hKSB7XG4gICAgICAvLyBQYXJzZXIgZnJvbSByZXNvdXJjZSBzY2hlbWFcbiAgICAgIHJldHVybiAoPGFueT50aGlzLnNjaGVtYSkucGFyc2VyIGFzIFBhcnNlcjxUPiB8IHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gcmVzb3VyY2UgdHlwZVxuICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhcnNlckZvclR5cGU8VD4odHlwZSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zPzogUGFyc2VyT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy5yZXR1cm5UeXBlKCk7XG4gICAgY29uc3QgX2QgPSAodmFsdWU6IGFueSwgb3B0aW9ucz86IFBhcnNlck9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuX19wYXJzZXIodmFsdWUsIG9wdGlvbnMsIHJlc291cmNlVHlwZSk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ2Rlc2VyaWFsaXplJyBpbiBwYXJzZXJcbiAgICAgICAgPyBwYXJzZXIuZGVzZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpXG4gICAgICAgIDogdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBfZCh2LCBvcHRpb25zKSlcbiAgICAgIDogX2QodmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgc2VyaWFsaXplKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBQYXJzZXJPcHRpb25zKTogYW55IHtcbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnR5cGUoKTtcbiAgICBjb25zdCBfcyA9ICh2YWx1ZTogYW55LCBvcHRpb25zPzogUGFyc2VyT3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5fX3BhcnNlcih2YWx1ZSwgb3B0aW9ucywgcmVzb3VyY2VUeXBlKTtcbiAgICAgIHJldHVybiBwYXJzZXIgIT09IHVuZGVmaW5lZCAmJiAnc2VyaWFsaXplJyBpbiBwYXJzZXJcbiAgICAgICAgPyBwYXJzZXIuc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKVxuICAgICAgICA6IHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gX3Modiwgb3B0aW9ucykpXG4gICAgICA6IF9zKHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIGVuY29kZSh2YWx1ZTogYW55LCBvcHRpb25zPzogUGFyc2VyT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy50eXBlKCk7XG4gICAgY29uc3QgX2UgPSAodmFsdWU6IGFueSwgb3B0aW9ucz86IFBhcnNlck9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuX19wYXJzZXIodmFsdWUsIG9wdGlvbnMsIHJlc291cmNlVHlwZSk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ2VuY29kZScgaW4gcGFyc2VyXG4gICAgICAgID8gcGFyc2VyLmVuY29kZSh2YWx1ZSwgb3B0aW9ucylcbiAgICAgICAgOiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IF9lKHYsIG9wdGlvbnMpKVxuICAgICAgOiBfZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlZ21lbnRzOiB0aGlzLnBhdGhTZWdtZW50cy50b0pTT04oKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMucXVlcnlPcHRpb25zLnRvSlNPTigpLFxuICAgIH07XG4gIH1cblxuICBjbG9uZVNlZ21lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy5jbG9uZSgpO1xuICB9XG5cbiAgLy8jcmVnaW9uIFF1ZXJ5IE9wdGlvbnNcbiAgY2xlYXJRdWVyeSgpIHtcbiAgICB0aGlzLnF1ZXJ5T3B0aW9ucy5jbGVhcigpO1xuICB9XG5cbiAgY2xvbmVRdWVyeTxQPigpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeU9wdGlvbnMuY2xvbmU8UD4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHBhdGggc2VnbWVudHMgb2YgdGhlIHJlc291cmNlXG4gICAqIENyZWF0ZSBhbiBvYmplY3QgaGFuZGxlciBmb3IgbXV0YXRlIHRoZSBwYXRoIHNlZ21lbnRzIG9mIHRoZSByZXNvdXJjZVxuICAgKiBAcGFyYW0gZiBGdW5jdGlvbiBjb250ZXh0IGZvciBoYW5kbGUgdGhlIHNlZ21lbnRzXG4gICAqIEByZXR1cm5zIE9EYXRhQWN0aW9uUmVzb3VyY2VcbiAgICovXG4gIHNlZ21lbnQoXG4gICAgZjogKHE6IE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlcjxUPiwgcz86IE9EYXRhU3RydWN0dXJlZFR5cGU8VD4pID0+IHZvaWRcbiAgKSB7XG4gICAgLypcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlKCk7XG4gICAgY29uc3Qgc2NoZW1hID0gdHlwZSA/IHRoaXMuYXBpLmZpbmRTdHJ1Y3R1cmVkVHlwZUZvclR5cGU8VD4odHlwZSkgOiB1bmRlZmluZWQ7XG4gICAgKi9cbiAgICBmKFxuICAgICAgbmV3IE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlcjxUPih0aGlzLnBhdGhTZWdtZW50cyksXG4gICAgICB0aGlzLnNjaGVtYSBpbnN0YW5jZW9mIE9EYXRhU3RydWN0dXJlZFR5cGUgPyB0aGlzLnNjaGVtYSA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zIG9mIHRoZSByZXNvdXJjZVxuICAgKiBDcmVhdGUgYW4gb2JqZWN0IGhhbmRsZXIgZm9yIG11dGF0ZSB0aGUgcXVlcnkgb3B0aW9ucyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIGYgRnVuY3Rpb24gY29udGV4dCBmb3IgaGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBxdWVyeShcbiAgICBmOiAocTogT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+LCBzPzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPikgPT4gdm9pZFxuICApIHtcbiAgICAvKlxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBjb25zdCBzY2hlbWEgPSB0eXBlID8gdGhpcy5hcGkuZmluZFN0cnVjdHVyZWRUeXBlRm9yVHlwZTxUPih0eXBlKSA6IHVuZGVmaW5lZDtcbiAgICAqL1xuICAgIGYoXG4gICAgICBuZXcgT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+KHRoaXMucXVlcnlPcHRpb25zKSxcbiAgICAgIHRoaXMuc2NoZW1hIGluc3RhbmNlb2YgT0RhdGFTdHJ1Y3R1cmVkVHlwZSA/IHRoaXMuc2NoZW1hIDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlS2V5PFQ+KFxuICAgIHZhbHVlOiBhbnksXG4gICAgc2NoZW1hPzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPlxuICApOiBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChpc1F1ZXJ5Q3VzdG9tVHlwZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKFR5cGVzLmlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gc2NoZW1hIGluc3RhbmNlb2YgT0RhdGFTdHJ1Y3R1cmVkVHlwZVxuICAgICAgICA/IHNjaGVtYS5yZXNvbHZlS2V5KHZhbHVlKVxuICAgICAgICA6IE9iamVjdHMucmVzb2x2ZUtleSh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSBhcyBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzb2x2ZUtleSh2YWx1ZTogYW55KTogRW50aXR5S2V5PFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gT0RhdGFSZXNvdXJjZS5yZXNvbHZlS2V5PFQ+KFxuICAgICAgdmFsdWUsXG4gICAgICB0aGlzLnNjaGVtYSBhcyBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+XG4gICAgKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBwcm90ZWN0ZWQgZ2V0KFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgICBib2R5UXVlcnlPcHRpb25zPzogUXVlcnlPcHRpb25OYW1lc1tdO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaS5yZXF1ZXN0PFQ+KCdHRVQnLCB0aGlzLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwb3N0KFxuICAgIGJvZHk6IGFueSxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLnJlcXVlc3Q8VD4oJ1BPU1QnLCB0aGlzLCB7IGJvZHksIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHV0KFxuICAgIGJvZHk6IGFueSxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaS5yZXF1ZXN0PFQ+KCdQVVQnLCB0aGlzLCB7IGJvZHksIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGF0Y2goXG4gICAgYm9keTogYW55LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLnJlcXVlc3Q8VD4oJ1BBVENIJywgdGhpcywgeyBib2R5LCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlbGV0ZShcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaS5yZXF1ZXN0PFQ+KCdERUxFVEUnLCB0aGlzLCBvcHRpb25zKTtcbiAgfVxufVxuIl19
@@ -7,6 +7,12 @@ export class ODataAnnotations {
7
7
  attributes(data, metadata) {
8
8
  return this.helper.attributes(data, metadata);
9
9
  }
10
+ update(data) {
11
+ this.annotations = new Map([
12
+ ...this.annotations,
13
+ ...this.helper.annotations(data),
14
+ ]);
15
+ }
10
16
  get entitySet() {
11
17
  return this.context?.entitySet;
12
18
  }
@@ -15,6 +21,9 @@ export class ODataAnnotations {
15
21
  }
16
22
  }
17
23
  export class ODataPropertyAnnotations extends ODataAnnotations {
24
+ union(other) {
25
+ return new ODataPropertyAnnotations(this.helper, new Map([...this.annotations, ...other.annotations]), Object.assign({}, this.context, other.context));
26
+ }
18
27
  clone() {
19
28
  return new ODataPropertyAnnotations(this.helper, new Map(this.annotations), this.context);
20
29
  }
@@ -23,6 +32,9 @@ export class ODataPropertyAnnotations extends ODataAnnotations {
23
32
  }
24
33
  }
25
34
  export class ODataEntityAnnotations extends ODataAnnotations {
35
+ union(other) {
36
+ return new ODataEntityAnnotations(this.helper, new Map([...this.annotations, ...other.annotations]), Object.assign({}, this.context, other.context));
37
+ }
26
38
  clone() {
27
39
  return new ODataEntityAnnotations(this.helper, new Map(this.annotations), this.context);
28
40
  }
@@ -62,8 +74,11 @@ export class ODataEntityAnnotations extends ODataAnnotations {
62
74
  }
63
75
  return this._properties;
64
76
  }
65
- property(name) {
66
- return this.properties.get(name);
77
+ property(name, type) {
78
+ const props = this.properties.get(name);
79
+ return type === 'collection'
80
+ ? new ODataEntitiesAnnotations(this.helper, props)
81
+ : new ODataEntityAnnotations(this.helper, props);
67
82
  }
68
83
  get functions() {
69
84
  if (this._functions === undefined) {
@@ -76,6 +91,9 @@ export class ODataEntityAnnotations extends ODataAnnotations {
76
91
  }
77
92
  }
78
93
  export class ODataEntitiesAnnotations extends ODataAnnotations {
94
+ union(other) {
95
+ return new ODataEntitiesAnnotations(this.helper, new Map([...this.annotations, ...other.annotations]), Object.assign({}, this.context, other.context));
96
+ }
79
97
  clone() {
80
98
  return new ODataEntitiesAnnotations(this.helper, new Map(this.annotations), this.context);
81
99
  }
@@ -116,4 +134,4 @@ export class ODataEntitiesAnnotations extends ODataAnnotations {
116
134
  return this.functions[name];
117
135
  }
118
136
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9hbm5vdGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQWdCLGdCQUFnQjtJQUNwQyxZQUNTLE1BQTBCLEVBQ3ZCLGNBQWdDLElBQUksR0FBRyxFQUFlLEVBQ3RELE9BQXNCO1FBRnpCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUEyQztRQUN0RCxZQUFPLEdBQVAsT0FBTyxDQUFlO0lBQy9CLENBQUM7SUFFSixVQUFVLENBQUksSUFBNEIsRUFBRSxRQUEyQjtRQUNyRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLENBQU0sQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDbEUsQ0FBQztDQUtGO0FBRUQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdCQUFnQjtJQUM1RCxLQUFLO1FBQ0gsT0FBTyxJQUFJLHdCQUF3QixDQUNqQyxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxJQUE0QjtRQUMvQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENB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QUssR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDM0UsT0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvQyxDQUFDO0lBR0QsSUFBSSxTQUFTO1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsUUFBUSxDQUFDLElBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9EYXRhQ29udGV4dCwgT0RhdGFWZXJzaW9uSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVyJztcblxuaW1wb3J0IHsgT0RhdGFNZXRhZGF0YVR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPRGF0YUFubm90YXRpb25zIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGhlbHBlcjogT0RhdGFWZXJzaW9uSGVscGVyLFxuICAgIHByb3RlY3RlZCBhbm5vdGF0aW9uczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCksXG4gICAgcHJvdGVjdGVkIGNvbnRleHQ/OiBPRGF0YUNvbnRleHRcbiAgKSB7fVxuXG4gIGF0dHJpYnV0ZXM8VD4oZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgbWV0YWRhdGE6IE9EYXRhTWV0YWRhdGFUeXBlKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmF0dHJpYnV0ZXMoZGF0YSwgbWV0YWRhdGEpIGFzIFQ7XG4gIH1cblxuICBnZXQgZW50aXR5U2V0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQ/LmVudGl0eVNldDtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci50eXBlKHRoaXMuYW5ub3RhdGlvbnMpIHx8IHRoaXMuY29udGV4dD8udHlwZTtcbiAgfVxuXG4gIC8vIE1ldGhvZFxuICBhYnN0cmFjdCBjbG9uZSgpOiBPRGF0YUFubm90YXRpb25zO1xuICBhYnN0cmFjdCBkYXRhKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zIGV4dGVuZHMgT0RhdGFBbm5vdGF0aW9ucyB7XG4gIGNsb25lKCk6IE9EYXRhUHJvcGVydHlBbm5vdGF0aW9ucyB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMoXG4gICAgICB0aGlzLmhlbHBlcixcbiAgICAgIG5ldyBNYXAodGhpcy5hbm5vdGF0aW9ucyksXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLnByb3BlcnR5KGRhdGEpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUVudGl0eUFubm90YXRpb25zIGV4dGVuZHMgT0RhdGFBbm5vdGF0aW9ucyB7XG4gIGNsb25lKCk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnMge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9ucyhcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcCh0aGlzLmFubm90YXRpb25zKSxcbiAgICAgIHRoaXMuY29udGV4dFxuICAgICk7XG4gIH1cblxuICBkYXRhKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZW50aXR5KGRhdGEpO1xuICB9XG5cbiAgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5pZCh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBldGFnKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5ldGFnKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhRXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFFdGFnKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1ldGFkYXRhRXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWV0YWRhdGFFdGFnKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IHJlYWRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5yZWFkTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBlZGl0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZWRpdExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFSZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFSZWFkTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUVkaXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYUVkaXRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhQ29udGVudFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhQ29udGVudFR5cGUodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIF9wcm9wZXJ0aWVzPzogTWFwPHN0cmluZywgTWFwPHN0cmluZywgYW55Pj47XG4gIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIGlmICh0aGlzLl9wcm9wZXJ0aWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3Byb3BlcnRpZXMgPSB0aGlzLmhlbHBlci5wcm9wZXJ0aWVzKHRoaXMuYW5ub3RhdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcHJvcGVydGllcztcbiAgfVxuXG4gIHByb3BlcnR5KG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXMuZ2V0KG5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnVuY3Rpb25zPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgZ2V0IGZ1bmN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5fZnVuY3Rpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2Z1bmN0aW9ucyA9IHRoaXMuaGVscGVyLmZ1bmN0aW9ucyh0aGlzLmFubm90YXRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Z1bmN0aW9ucztcbiAgfVxuXG4gIGZ1bmN0aW9uKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc1tuYW1lXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zIGV4dGVuZHMgT0RhdGFBbm5vdGF0aW9ucyB7XG4gIGNsb25lKCk6IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucyB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnMoXG4gICAgICB0aGlzLmhlbHBlcixcbiAgICAgIG5ldyBNYXAodGhpcy5hbm5vdGF0aW9ucyksXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmVudGl0aWVzKGRhdGEpO1xuICB9XG5cbiAgZ2V0IHJlYWRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5yZWFkTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBjb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuY291bnQodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbmV4dExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm5leHRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGRlbHRhTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZGVsdGFMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IHRvcCgpIHtcbiAgICBsZXQgbWF0Y2ggPSAodGhpcy5uZXh0TGluayB8fCAnJykubWF0Y2goL1smP117MX1cXCR0b3A9KFxcZCspLyk7XG4gICAgcmV0dXJuIG1hdGNoICE9PSBudWxsID8gTnVtYmVyKG1hdGNoWzFdKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBza2lwKCkge1xuICAgIGxldCBtYXRjaCA9ICh0aGlzLm5leHRMaW5rIHx8ICcnKS5tYXRjaCgvWyY/XXsxfVxcJHNraXA9KFxcZCspLyk7XG4gICAgcmV0dXJuIG1hdGNoICE9PSBudWxsID8gTnVtYmVyKG1hdGNoWzFdKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBza2lwdG9rZW4oKSB7XG4gICAgbGV0IG1hdGNoID0gKHRoaXMubmV4dExpbmsgfHwgJycpLm1hdGNoKC9bJj9dezF9XFwkc2tpcHRva2VuPShbXFxkXFx3XFxzJ10rKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IG1hdGNoWzFdIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnVuY3Rpb25zPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgZ2V0IGZ1bmN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5fZnVuY3Rpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2Z1bmN0aW9ucyA9IHRoaXMuaGVscGVyLmZ1bmN0aW9ucyh0aGlzLmFubm90YXRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Z1bmN0aW9ucztcbiAgfVxuICBmdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbbmFtZV07XG4gIH1cbn1cbiJdfQ==
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9hbm5vdGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQWdCLGdCQUFnQjtJQUNwQyxZQUNTLE1BQTBCLEVBQ3ZCLGNBQWdDLElBQUksR0FBRyxFQUFlLEVBQ3RELE9BQXNCO1FBRnpCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUEyQztRQUN0RCxZQUFPLEdBQVAsT0FBTyxDQUFlO0lBQy9CLENBQUM7SUFFSixVQUFVLENBQUMsSUFBNEIsRUFBRSxRQUEyQjtRQUNsRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLENBQWUsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQTRCO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQWM7WUFDdEMsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDbEUsQ0FBQztDQU1GO0FBRUQsTUFBTSxPQUFPLHdCQUE0QixTQUFRLGdCQUFtQjtJQUNsRSxLQUFLLENBQUMsS0FBb0M7UUFDeEMsT0FBTyxJQUFJLHdCQUF3QixDQUNqQyxJQUFJ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QUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDL0QsT0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUdELElBQUksU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPRGF0YUNvbnRleHQsIE9EYXRhVmVyc2lvbkhlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcic7XG5cbmltcG9ydCB7IE9EYXRhTWV0YWRhdGFUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgT0RhdGFBbm5vdGF0aW9uczxUPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBoZWxwZXI6IE9EYXRhVmVyc2lvbkhlbHBlcixcbiAgICBwcm90ZWN0ZWQgYW5ub3RhdGlvbnM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgYW55PigpLFxuICAgIHByb3RlY3RlZCBjb250ZXh0PzogT0RhdGFDb250ZXh0XG4gICkge31cblxuICBhdHRyaWJ1dGVzKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIG1ldGFkYXRhOiBPRGF0YU1ldGFkYXRhVHlwZSk6IFBhcnRpYWw8VD4ge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5hdHRyaWJ1dGVzKGRhdGEsIG1ldGFkYXRhKSBhcyBQYXJ0aWFsPFQ+O1xuICB9XG5cbiAgdXBkYXRlKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLmFubm90YXRpb25zID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oW1xuICAgICAgLi4udGhpcy5hbm5vdGF0aW9ucyxcbiAgICAgIC4uLnRoaXMuaGVscGVyLmFubm90YXRpb25zKGRhdGEpLFxuICAgIF0pO1xuICB9XG5cbiAgZ2V0IGVudGl0eVNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0Py5lbnRpdHlTZXQ7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIudHlwZSh0aGlzLmFubm90YXRpb25zKSB8fCB0aGlzLmNvbnRleHQ/LnR5cGU7XG4gIH1cblxuICAvLyBNZXRob2RcbiAgYWJzdHJhY3QgdW5pb24ob3RoZXI6IE9EYXRhQW5ub3RhdGlvbnM8YW55Pik6IE9EYXRhQW5ub3RhdGlvbnM8YW55PjtcbiAgYWJzdHJhY3QgY2xvbmUoKTogT0RhdGFBbm5vdGF0aW9uczxhbnk+O1xuICBhYnN0cmFjdCBkYXRhKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zPFQ+IGV4dGVuZHMgT0RhdGFBbm5vdGF0aW9uczxUPiB7XG4gIHVuaW9uKG90aGVyOiBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55Pik6IE9EYXRhUHJvcGVydHlBbm5vdGF0aW9uczxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9EYXRhUHJvcGVydHlBbm5vdGF0aW9uczxhbnk+KFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwPHN0cmluZywgYW55PihbLi4udGhpcy5hbm5vdGF0aW9ucywgLi4ub3RoZXIuYW5ub3RhdGlvbnNdKSxcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29udGV4dCwgb3RoZXIuY29udGV4dClcbiAgICApO1xuICB9XG5cbiAgY2xvbmUoKTogT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zPGFueT4ge1xuICAgIHJldHVybiBuZXcgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zPGFueT4oXG4gICAgICB0aGlzLmhlbHBlcixcbiAgICAgIG5ldyBNYXAodGhpcy5hbm5vdGF0aW9ucyksXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLnByb3BlcnR5KGRhdGEpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUVudGl0eUFubm90YXRpb25zPFQ+IGV4dGVuZHMgT0RhdGFBbm5vdGF0aW9uczxUPiB7XG4gIHVuaW9uKG90aGVyOiBPRGF0YUVudGl0eUFubm90YXRpb25zPGFueT4pOiBPRGF0YUVudGl0eUFubm90YXRpb25zPGFueT4ge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+KFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwPHN0cmluZywgYW55PihbLi4udGhpcy5hbm5vdGF0aW9ucywgLi4ub3RoZXIuYW5ub3RhdGlvbnNdKSxcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29udGV4dCwgb3RoZXIuY29udGV4dClcbiAgICApO1xuICB9XG5cbiAgY2xvbmUoKTogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcCh0aGlzLmFubm90YXRpb25zKSxcbiAgICAgIHRoaXMuY29udGV4dFxuICAgICk7XG4gIH1cblxuICBkYXRhKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZW50aXR5KGRhdGEpO1xuICB9XG5cbiAgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5pZCh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBldGFnKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5ldGFnKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhRXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFFdGFnKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1ldGFkYXRhRXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWV0YWRhdGFFdGFnKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IHJlYWRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5yZWFkTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBlZGl0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZWRpdExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFSZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFSZWFkTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUVkaXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYUVkaXRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhQ29udGVudFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhQ29udGVudFR5cGUodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIF9wcm9wZXJ0aWVzPzogTWFwPGtleW9mIFQsIE1hcDxzdHJpbmcsIGFueT4+O1xuICBnZXQgcHJvcGVydGllcygpIHtcbiAgICBpZiAodGhpcy5fcHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9wcm9wZXJ0aWVzID0gdGhpcy5oZWxwZXIucHJvcGVydGllczxUPih0aGlzLmFubm90YXRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXM7XG4gIH1cblxuICBwcm9wZXJ0eTxGPihuYW1lOiBrZXlvZiBULCB0eXBlOiAnY29sbGVjdGlvbicpOiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8Rj47XG4gIHByb3BlcnR5PEY+KG5hbWU6IGtleW9mIFQsIHR5cGU6ICdzaW5nbGUnKTogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxGPjtcbiAgcHJvcGVydHk8Rj4oXG4gICAgbmFtZToga2V5b2YgVCxcbiAgICB0eXBlOiAnc2luZ2xlJyB8ICdjb2xsZWN0aW9uJ1xuICApOiBPRGF0YUVudGl0eUFubm90YXRpb25zPEY+IHwgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPEY+IHtcbiAgICBjb25zdCBwcm9wcyA9IHRoaXMucHJvcGVydGllcy5nZXQobmFtZSk7XG4gICAgcmV0dXJuIHR5cGUgPT09ICdjb2xsZWN0aW9uJ1xuICAgICAgPyBuZXcgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPEY+KHRoaXMuaGVscGVyLCBwcm9wcylcbiAgICAgIDogbmV3IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8Rj4odGhpcy5oZWxwZXIsIHByb3BzKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIGdldCBmdW5jdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuX2Z1bmN0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbnMgPSB0aGlzLmhlbHBlci5mdW5jdGlvbnModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnM7XG4gIH1cblxuICBmdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbbmFtZV07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9uczxUPiBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICB1bmlvbihvdGhlcjogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPGFueT4pOiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oWy4uLnRoaXMuYW5ub3RhdGlvbnMsIC4uLm90aGVyLmFubm90YXRpb25zXSksXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbnRleHQsIG90aGVyLmNvbnRleHQpXG4gICAgKTtcbiAgfVxuXG4gIGNsb25lKCk6IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9uczxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9uczxhbnk+KFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwKHRoaXMuYW5ub3RhdGlvbnMpLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgfVxuXG4gIGRhdGEoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lbnRpdGllcyhkYXRhKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgY291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmNvdW50KHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG5leHRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5uZXh0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBkZWx0YUxpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmRlbHRhTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCB0b3AoKSB7XG4gICAgbGV0IG1hdGNoID0gKHRoaXMubmV4dExpbmsgfHwgJycpLm1hdGNoKC9bJj9dezF9XFwkdG9wPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcCgpIHtcbiAgICBsZXQgbWF0Y2ggPSAodGhpcy5uZXh0TGluayB8fCAnJykubWF0Y2goL1smP117MX1cXCRza2lwPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcHRva2VuKCkge1xuICAgIGxldCBtYXRjaCA9ICh0aGlzLm5leHRMaW5rIHx8ICcnKS5tYXRjaCgvWyY/XXsxfVxcJHNraXB0b2tlbj0oW1xcZFxcd1xccyddKykvKTtcbiAgICByZXR1cm4gbWF0Y2ggIT09IG51bGwgPyBtYXRjaFsxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIGdldCBmdW5jdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuX2Z1bmN0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbnMgPSB0aGlzLmhlbHBlci5mdW5jdGlvbnModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnM7XG4gIH1cbiAgZnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zW25hbWVdO1xuICB9XG59XG4iXX0=
@@ -167,4 +167,4 @@ export class ODataResponse extends HttpResponse {
167
167
  return value;
168
168
  }
169
169
  }
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLHdCQUF3QixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHMUMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGFBQWEsRUFDYixlQUFlLEVBQ2YsWUFBWSxFQUNaLHNCQUFzQixHQUN2QixNQUFNLGlCQUFpQixDQUFDO0FBR3pCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBaUIsU0FBUSxZQUFlO0lBSW5ELFlBQVksSUFRWDtRQUNDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBSSxHQUFvQixFQUFFLEdBQW9CO1FBQ25FLE9BQU8sSUFBSSxhQUFhLENBQUk7WUFDMUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1lBQ1osUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLE9BQU8sRUFBRSxH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QUksS0FBSyxLQUFLLElBQUk7WUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBTSxDQUFDO1FBQzNFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIE9EYXRhRW50aXR5QW5ub3RhdGlvbnMsXG4gIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucyxcbiAgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zLFxufSBmcm9tICcuL2Fubm90YXRpb25zJztcbmltcG9ydCB7IFR5cGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgT0RhdGFSZXNvdXJjZSB9IGZyb20gJy4uL3Jlc291cmNlJztcbmltcG9ydCB7IE9EYXRhRW50aXRpZXMsIE9EYXRhRW50aXR5LCBPRGF0YVByb3BlcnR5IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBBUFBMSUNBVElPTl9KU09OLFxuICBPREFUQV9WRVJTSU9OX0hFQURFUlMsXG4gIENPTlRFTlRfVFlQRSxcbiAgQ0FDSEVfQ09OVFJPTCxcbiAgTE9DQVRJT05fSEVBREVSLFxuICBFVEFHX0hFQURFUlMsXG4gIE9EQVRBX0VOVElUWUlEX0hFQURFUlMsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPRGF0YUFwaSB9IGZyb20gJy4uLy4uL2FwaSc7XG5pbXBvcnQgeyBPRGF0YVJlcXVlc3QgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7IE9EYXRhUmVzcG9uc2VPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IEh0dHAgfSBmcm9tICcuLi8uLi91dGlscy9odHRwJztcbmltcG9ydCB7IE9EYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL2hlbHBlcic7XG5cbi8qKlxuICogT0RhdGEgUmVzcG9uc2VcbiAqL1xuZXhwb3J0IGNsYXNzIE9EYXRhUmVzcG9uc2U8VD4gZXh0ZW5kcyBIdHRwUmVzcG9uc2U8VD4ge1xuICByZWFkb25seSBhcGk6IE9EYXRhQXBpO1xuICByZWFkb25seSByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcblxuICBjb25zdHJ1Y3Rvcihpbml0OiB7XG4gICAgYXBpOiBPRGF0YUFwaTtcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBib2R5OiBUIHwgbnVsbDtcbiAgICBoZWFkZXJzOiBIdHRwSGVhZGVycztcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgdXJsPzogc3RyaW5nO1xuICB9KSB7XG4gICAgc3VwZXIoaW5pdCk7XG4gICAgdGhpcy5hcGkgPSBpbml0LmFwaTtcbiAgICB0aGlzLnJlc291cmNlID0gaW5pdC5yZXNvdXJjZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSHR0cFJlc3BvbnNlPFQ+KHJlcTogT0RhdGFSZXF1ZXN0PFQ+LCByZXM6IEh0dHBSZXNwb25zZTxUPikge1xuICAgIHJldHVybiBuZXcgT0RhdGFSZXNwb25zZTxUPih7XG4gICAgICBhcGk6IHJlcS5hcGksXG4gICAgICByZXNvdXJjZTogcmVxLnJlc291cmNlLFxuICAgICAgYm9keTogcmVzLmJvZHksXG4gICAgICBoZWFkZXJzOiByZXMuaGVhZGVycyxcbiAgICAgIHN0YXR1czogcmVzLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IHJlcy5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiByZXMudXJsIHx8IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTjxUPihcbiAgICByZXE6IE9EYXRhUmVxdWVzdDxUPixcbiAgICBqc29uOiB7XG4gICAgICBib2R5OiBUIHwgbnVsbDtcbiAgICAgIGhlYWRlcnM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG4gICAgICBzdGF0dXM6IG51bWJlcjtcbiAgICAgIHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICAgIHVybDogc3RyaW5nIHwgbnVsbDtcbiAgICB9XG4gICkge1xuICAgIHJldHVybiBuZXcgT0RhdGFSZXNwb25zZTxUPih7XG4gICAgICBhcGk6IHJlcS5hcGksXG4gICAgICByZXNvdXJjZTogcmVxLnJlc291cmNlLFxuICAgICAgYm9keToganNvbi5ib2R5LFxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKGpzb24uaGVhZGVycyksXG4gICAgICBzdGF0dXM6IGpzb24uc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDoganNvbi5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiBqc29uLnVybCB8fCB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvZHk6IHRoaXMuYm9keSxcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyc1xuICAgICAgICAua2V5cygpXG4gICAgICAgIC5tYXAoKG5hbWUpID0+ICh7IFtuYW1lXTogdGhpcy5oZWFkZXJzLmdldEFsbChuYW1lKSB8fCBbXSB9KSlcbiAgICAgICAgLnJlZHVjZSgoYWNjLCBoZWFkZXIpID0+IE9iamVjdC5hc3NpZ24oYWNjLCBoZWFkZXIpLCB7fSksXG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfb3B0aW9ucz86IE9EYXRhUmVzcG9uc2VPcHRpb25zO1xuICBnZXQgb3B0aW9ucygpOiBPRGF0YVJlc3BvbnNlT3B0aW9ucyB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IG5ldyBPRGF0YVJlc3BvbnNlT3B0aW9ucyh0aGlzLmFwaS5vcHRpb25zLnBhcnNlck9wdGlvbnMpO1xuICAgICAgY29uc3QgY29udGVudFR5cGUgPSB0aGlzLmhlYWRlcnMuZ2V0KENPTlRFTlRfVFlQRSk7XG4gICAgICBpZiAoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5kZXhPZihBUFBMSUNBVElPTl9KU09OKSAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBjb250ZW50VHlwZVxuICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgLmZpbmQoKHApID0+IHAuc3RhcnRzV2l0aChBUFBMSUNBVElPTl9KU09OKSkgYXMgc3RyaW5nO1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldEZlYXR1cmVzKGZlYXR1cmVzKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGhlYWRlciA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIE9EQVRBX1ZFUlNJT05fSEVBREVSUyk7XG4gICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSAodGhpcy5oZWFkZXJzLmdldChoZWFkZXIpIHx8ICcnKS5yZXBsYWNlKC9cXDsvZywgJycpIGFzXG4gICAgICAgICAgfCAnMi4wJ1xuICAgICAgICAgIHwgJzMuMCdcbiAgICAgICAgICB8ICc0LjAnO1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldFZlcnNpb24odmVyc2lvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5oZWFkZXJzLmdldChMT0NBVElPTl9IRUFERVIpO1xuICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMuc2V0TG9jYXRpb24obG9jYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWNoZUNvbnRyb2wgPSB0aGlzLmhlYWRlcnMuZ2V0KENBQ0hFX0NPTlRST0wpO1xuICAgICAgaWYgKGNhY2hlQ29udHJvbCkge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldENhY2hlKGNhY2hlQ29udHJvbCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGF5bG9hZD86IGFueTtcbiAgZ2V0IHBheWxvYWQoKSB7XG4gICAgaWYgKHRoaXMuX3BheWxvYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcGF5bG9hZCA9XG4gICAgICAgIHRoaXMuYm9keSAmJiB0aGlzLm9wdGlvbnMudmVyc2lvbiA9PT0gJzIuMCdcbiAgICAgICAgICA/ICg8YW55PnRoaXMuYm9keSlbJ2QnXVxuICAgICAgICAgIDogdGhpcy5ib2R5O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcGF5bG9hZDtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnRleHQ/OiBhbnk7XG4gIGdldCBjb250ZXh0KCk6IE9EYXRhQ29udGV4dCB7XG4gICAgaWYgKHRoaXMuX2NvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY29udGV4dCA9IHRoaXMub3B0aW9ucy5oZWxwZXIuY29udGV4dChcbiAgICAgICAgVHlwZXMuaXNQbGFpbk9iamVjdCh0aGlzLnBheWxvYWQpID8gdGhpcy5wYXlsb2FkIDoge31cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYW5ub3RhdGlvbnM/OiBNYXA8c3RyaW5nLCBhbnk+O1xuICBnZXQgYW5ub3RhdGlvbnMoKTogTWFwPHN0cmluZywgYW55PiB7XG4gICAgaWYgKHRoaXMuX2Fubm90YXRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB0aGlzLl9hbm5vdGF0aW9ucyA9IG9wdGlvbnMuaGVscGVyLmFubm90YXRpb25zKHRoaXMucGF5bG9hZCB8fCB7fSk7XG4gICAgICBsZXQga2V5ID0gSHR0cC5yZXNvbHZlSGVhZGVyS2V5KHRoaXMuaGVhZGVycywgRVRBR19IRUFERVJTKTtcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgZXRhZyA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGV0YWcpIHRoaXMuX2Fubm90YXRpb25zLnNldChvcHRpb25zLmhlbHBlci5PREFUQV9FVEFHLCBldGFnKTtcbiAgICAgIH1cbiAgICAgIGtleSA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIE9EQVRBX0VOVElUWUlEX0hFQURFUlMpO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCBlbnRpdHlJZCA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGVudGl0eUlkKSB0aGlzLl9hbm5vdGF0aW9ucy5zZXQob3B0aW9ucy5oZWxwZXIuT0RBVEFfSUQsIGVudGl0eUlkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Fubm90YXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBlbnRpdHlcbiAgICogQHJldHVybnNcbiAgICovXG4gIGVudGl0eSgpOiBPRGF0YUVudGl0eTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YUVudGl0eUFubm90YXRpb25zKFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBjb25zdCBkYXRhID0gcGF5bG9hZCA/IGFubm90cy5kYXRhKHBheWxvYWQpIDogbnVsbDtcbiAgICBsZXQgZW50aXR5ID0gKFxuICAgICAgZGF0YSAhPT0gbnVsbCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KGRhdGEpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIuYXR0cmlidXRlcyhkYXRhLCB0aGlzLmFwaS5vcHRpb25zLnN0cmlwTWV0YWRhdGEpXG4gICAgICAgIDogZGF0YVxuICAgICkgYXMgVCB8IG51bGw7XG5cbiAgICBpZiAoZW50aXR5ICE9PSBudWxsKVxuICAgICAgZW50aXR5ID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShlbnRpdHksIG9wdGlvbnMpIGFzIFQ7XG4gICAgcmV0dXJuIHsgZW50aXR5LCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgZW50aXRpZXNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGVudGl0aWVzKCk6IE9EYXRhRW50aXRpZXM8VD4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBjb25zdCBhbm5vdHMgPSBuZXcgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zKFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBsZXQgZW50aXRpZXMgPSBwYXlsb2FkID8gYW5ub3RzLmRhdGEocGF5bG9hZCkgOiBudWxsO1xuICAgIGlmIChlbnRpdGllcyAhPT0gbnVsbClcbiAgICAgIGVudGl0aWVzID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShlbnRpdGllcywgb3B0aW9ucykgYXMgVFtdO1xuICAgIHJldHVybiB7IGVudGl0aWVzLCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBwcm9wZXJ0eVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJvcGVydHkoKTogT0RhdGFQcm9wZXJ0eTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMoXG4gICAgICBvcHRpb25zLmhlbHBlcixcbiAgICAgIHRoaXMuYW5ub3RhdGlvbnMsXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICAgIGNvbnN0IGRhdGEgPSBwYXlsb2FkID8gKGFubm90cy5kYXRhKHBheWxvYWQpIGFzIFQpIDogbnVsbDtcbiAgICBsZXQgcHJvcGVydHkgPSAoXG4gICAgICBkYXRhICE9PSBudWxsICYmIFR5cGVzLmlzUGxhaW5PYmplY3QoZGF0YSlcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci5hdHRyaWJ1dGVzKGRhdGEsIHRoaXMuYXBpLm9wdGlvbnMuc3RyaXBNZXRhZGF0YSlcbiAgICAgICAgOiBkYXRhXG4gICAgKSBhcyBUIHwgbnVsbDtcblxuICAgIGlmIChwcm9wZXJ0eSAhPT0gbnVsbClcbiAgICAgIHByb3BlcnR5ID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShwcm9wZXJ0eSwgb3B0aW9ucykgYXMgVDtcbiAgICByZXR1cm4geyBwcm9wZXJ0eSwgYW5ub3RzIH07XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSByZXNwb25zZSBib2R5IGFzIGEgdmFsdWVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHZhbHVlKCk6IFQgfCBudWxsIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLnBheWxvYWQ7XG4gICAgbGV0IHZhbHVlID0gKFxuICAgICAgcGF5bG9hZCAhPT0gbnVsbCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KHBheWxvYWQpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIuYXR0cmlidXRlcyhwYXlsb2FkLCB0aGlzLmFwaS5vcHRpb25zLnN0cmlwTWV0YWRhdGEpXG4gICAgICAgIDogcGF5bG9hZFxuICAgICkgYXMgVCB8IG51bGw7XG5cbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHZhbHVlID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucykgYXMgVDtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLHdCQUF3QixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHMUMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGFBQWEsRUFDYixlQUFlLEVBQ2YsWUFBWSxFQUNaLHNCQUFzQixHQUN2QixNQUFNLGlCQUFpQixDQUFDO0FBR3pCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBaUIsU0FBUSxZQUFlO0lBSW5ELFlBQVksSUFRWDtRQUNDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBSSxHQUFvQixFQUFFLEdBQW9CO1FBQ25FLE9BQU8sSUFBSSxhQUFhLENBQUk7WUFDMUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1lBQ1osUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLE9BQU8sRUFBRSxH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LElBQUksS0FBSyxLQUFLLElBQUk7WUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBTSxDQUFDO1FBQzNFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIE9EYXRhRW50aXR5QW5ub3RhdGlvbnMsXG4gIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucyxcbiAgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zLFxufSBmcm9tICcuL2Fubm90YXRpb25zJztcbmltcG9ydCB7IFR5cGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgT0RhdGFSZXNvdXJjZSB9IGZyb20gJy4uL3Jlc291cmNlJztcbmltcG9ydCB7IE9EYXRhRW50aXRpZXMsIE9EYXRhRW50aXR5LCBPRGF0YVByb3BlcnR5IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBBUFBMSUNBVElPTl9KU09OLFxuICBPREFUQV9WRVJTSU9OX0hFQURFUlMsXG4gIENPTlRFTlRfVFlQRSxcbiAgQ0FDSEVfQ09OVFJPTCxcbiAgTE9DQVRJT05fSEVBREVSLFxuICBFVEFHX0hFQURFUlMsXG4gIE9EQVRBX0VOVElUWUlEX0hFQURFUlMsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPRGF0YUFwaSB9IGZyb20gJy4uLy4uL2FwaSc7XG5pbXBvcnQgeyBPRGF0YVJlcXVlc3QgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7IE9EYXRhUmVzcG9uc2VPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IEh0dHAgfSBmcm9tICcuLi8uLi91dGlscy9odHRwJztcbmltcG9ydCB7IE9EYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL2hlbHBlcic7XG5cbi8qKlxuICogT0RhdGEgUmVzcG9uc2VcbiAqL1xuZXhwb3J0IGNsYXNzIE9EYXRhUmVzcG9uc2U8VD4gZXh0ZW5kcyBIdHRwUmVzcG9uc2U8VD4ge1xuICByZWFkb25seSBhcGk6IE9EYXRhQXBpO1xuICByZWFkb25seSByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcblxuICBjb25zdHJ1Y3Rvcihpbml0OiB7XG4gICAgYXBpOiBPRGF0YUFwaTtcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBib2R5OiBUIHwgbnVsbDtcbiAgICBoZWFkZXJzOiBIdHRwSGVhZGVycztcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgdXJsPzogc3RyaW5nO1xuICB9KSB7XG4gICAgc3VwZXIoaW5pdCk7XG4gICAgdGhpcy5hcGkgPSBpbml0LmFwaTtcbiAgICB0aGlzLnJlc291cmNlID0gaW5pdC5yZXNvdXJjZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSHR0cFJlc3BvbnNlPFQ+KHJlcTogT0RhdGFSZXF1ZXN0PFQ+LCByZXM6IEh0dHBSZXNwb25zZTxUPikge1xuICAgIHJldHVybiBuZXcgT0RhdGFSZXNwb25zZTxUPih7XG4gICAgICBhcGk6IHJlcS5hcGksXG4gICAgICByZXNvdXJjZTogcmVxLnJlc291cmNlLFxuICAgICAgYm9keTogcmVzLmJvZHksXG4gICAgICBoZWFkZXJzOiByZXMuaGVhZGVycyxcbiAgICAgIHN0YXR1czogcmVzLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IHJlcy5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiByZXMudXJsIHx8IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTjxUPihcbiAgICByZXE6IE9EYXRhUmVxdWVzdDxUPixcbiAgICBqc29uOiB7XG4gICAgICBib2R5OiBUIHwgbnVsbDtcbiAgICAgIGhlYWRlcnM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG4gICAgICBzdGF0dXM6IG51bWJlcjtcbiAgICAgIHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICAgIHVybDogc3RyaW5nIHwgbnVsbDtcbiAgICB9XG4gICkge1xuICAgIHJldHVybiBuZXcgT0RhdGFSZXNwb25zZTxUPih7XG4gICAgICBhcGk6IHJlcS5hcGksXG4gICAgICByZXNvdXJjZTogcmVxLnJlc291cmNlLFxuICAgICAgYm9keToganNvbi5ib2R5LFxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKGpzb24uaGVhZGVycyksXG4gICAgICBzdGF0dXM6IGpzb24uc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDoganNvbi5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiBqc29uLnVybCB8fCB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvZHk6IHRoaXMuYm9keSxcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyc1xuICAgICAgICAua2V5cygpXG4gICAgICAgIC5tYXAoKG5hbWUpID0+ICh7IFtuYW1lXTogdGhpcy5oZWFkZXJzLmdldEFsbChuYW1lKSB8fCBbXSB9KSlcbiAgICAgICAgLnJlZHVjZSgoYWNjLCBoZWFkZXIpID0+IE9iamVjdC5hc3NpZ24oYWNjLCBoZWFkZXIpLCB7fSksXG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfb3B0aW9ucz86IE9EYXRhUmVzcG9uc2VPcHRpb25zO1xuICBnZXQgb3B0aW9ucygpOiBPRGF0YVJlc3BvbnNlT3B0aW9ucyB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IG5ldyBPRGF0YVJlc3BvbnNlT3B0aW9ucyh0aGlzLmFwaS5vcHRpb25zLnBhcnNlck9wdGlvbnMpO1xuICAgICAgY29uc3QgY29udGVudFR5cGUgPSB0aGlzLmhlYWRlcnMuZ2V0KENPTlRFTlRfVFlQRSk7XG4gICAgICBpZiAoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5kZXhPZihBUFBMSUNBVElPTl9KU09OKSAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBjb250ZW50VHlwZVxuICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgLmZpbmQoKHApID0+IHAuc3RhcnRzV2l0aChBUFBMSUNBVElPTl9KU09OKSkgYXMgc3RyaW5nO1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldEZlYXR1cmVzKGZlYXR1cmVzKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGhlYWRlciA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIE9EQVRBX1ZFUlNJT05fSEVBREVSUyk7XG4gICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSAodGhpcy5oZWFkZXJzLmdldChoZWFkZXIpIHx8ICcnKS5yZXBsYWNlKC9cXDsvZywgJycpIGFzXG4gICAgICAgICAgfCAnMi4wJ1xuICAgICAgICAgIHwgJzMuMCdcbiAgICAgICAgICB8ICc0LjAnO1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldFZlcnNpb24odmVyc2lvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5oZWFkZXJzLmdldChMT0NBVElPTl9IRUFERVIpO1xuICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMuc2V0TG9jYXRpb24obG9jYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWNoZUNvbnRyb2wgPSB0aGlzLmhlYWRlcnMuZ2V0KENBQ0hFX0NPTlRST0wpO1xuICAgICAgaWYgKGNhY2hlQ29udHJvbCkge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldENhY2hlKGNhY2hlQ29udHJvbCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGF5bG9hZD86IGFueTtcbiAgZ2V0IHBheWxvYWQoKSB7XG4gICAgaWYgKHRoaXMuX3BheWxvYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcGF5bG9hZCA9XG4gICAgICAgIHRoaXMuYm9keSAmJiB0aGlzLm9wdGlvbnMudmVyc2lvbiA9PT0gJzIuMCdcbiAgICAgICAgICA/ICg8YW55PnRoaXMuYm9keSlbJ2QnXVxuICAgICAgICAgIDogdGhpcy5ib2R5O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcGF5bG9hZDtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnRleHQ/OiBhbnk7XG4gIGdldCBjb250ZXh0KCk6IE9EYXRhQ29udGV4dCB7XG4gICAgaWYgKHRoaXMuX2NvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY29udGV4dCA9IHRoaXMub3B0aW9ucy5oZWxwZXIuY29udGV4dChcbiAgICAgICAgVHlwZXMuaXNQbGFpbk9iamVjdCh0aGlzLnBheWxvYWQpID8gdGhpcy5wYXlsb2FkIDoge31cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYW5ub3RhdGlvbnM/OiBNYXA8c3RyaW5nLCBhbnk+O1xuICBnZXQgYW5ub3RhdGlvbnMoKTogTWFwPHN0cmluZywgYW55PiB7XG4gICAgaWYgKHRoaXMuX2Fubm90YXRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB0aGlzLl9hbm5vdGF0aW9ucyA9IG9wdGlvbnMuaGVscGVyLmFubm90YXRpb25zKHRoaXMucGF5bG9hZCB8fCB7fSk7XG4gICAgICBsZXQga2V5ID0gSHR0cC5yZXNvbHZlSGVhZGVyS2V5KHRoaXMuaGVhZGVycywgRVRBR19IRUFERVJTKTtcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgZXRhZyA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGV0YWcpIHRoaXMuX2Fubm90YXRpb25zLnNldChvcHRpb25zLmhlbHBlci5PREFUQV9FVEFHLCBldGFnKTtcbiAgICAgIH1cbiAgICAgIGtleSA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIE9EQVRBX0VOVElUWUlEX0hFQURFUlMpO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCBlbnRpdHlJZCA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGVudGl0eUlkKSB0aGlzLl9hbm5vdGF0aW9ucy5zZXQob3B0aW9ucy5oZWxwZXIuT0RBVEFfSUQsIGVudGl0eUlkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Fubm90YXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBlbnRpdHlcbiAgICogQHJldHVybnNcbiAgICovXG4gIGVudGl0eSgpOiBPRGF0YUVudGl0eTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YUVudGl0eUFubm90YXRpb25zPFQ+KFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBjb25zdCBkYXRhID0gcGF5bG9hZCA/IGFubm90cy5kYXRhKHBheWxvYWQpIDogbnVsbDtcbiAgICBsZXQgZW50aXR5ID0gKFxuICAgICAgZGF0YSAhPT0gbnVsbCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KGRhdGEpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIuYXR0cmlidXRlcyhkYXRhLCB0aGlzLmFwaS5vcHRpb25zLnN0cmlwTWV0YWRhdGEpXG4gICAgICAgIDogZGF0YVxuICAgICkgYXMgVCB8IG51bGw7XG5cbiAgICBpZiAoZW50aXR5ICE9PSBudWxsKVxuICAgICAgZW50aXR5ID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShlbnRpdHksIG9wdGlvbnMpIGFzIFQ7XG4gICAgcmV0dXJuIHsgZW50aXR5LCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgZW50aXRpZXNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGVudGl0aWVzKCk6IE9EYXRhRW50aXRpZXM8VD4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBjb25zdCBhbm5vdHMgPSBuZXcgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPFQ+KFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBsZXQgZW50aXRpZXMgPSBwYXlsb2FkID8gYW5ub3RzLmRhdGEocGF5bG9hZCkgOiBudWxsO1xuICAgIGlmIChlbnRpdGllcyAhPT0gbnVsbClcbiAgICAgIGVudGl0aWVzID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShlbnRpdGllcywgb3B0aW9ucykgYXMgVFtdO1xuICAgIHJldHVybiB7IGVudGl0aWVzLCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBwcm9wZXJ0eVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJvcGVydHkoKTogT0RhdGFQcm9wZXJ0eTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8VD4oXG4gICAgICBvcHRpb25zLmhlbHBlcixcbiAgICAgIHRoaXMuYW5ub3RhdGlvbnMsXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICAgIGNvbnN0IGRhdGEgPSBwYXlsb2FkID8gKGFubm90cy5kYXRhKHBheWxvYWQpIGFzIFQpIDogbnVsbDtcbiAgICBsZXQgcHJvcGVydHkgPSAoXG4gICAgICBkYXRhICE9PSBudWxsICYmIFR5cGVzLmlzUGxhaW5PYmplY3QoZGF0YSlcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci5hdHRyaWJ1dGVzKFxuICAgICAgICAgICAgZGF0YSBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgICAgICAgICAgdGhpcy5hcGkub3B0aW9ucy5zdHJpcE1ldGFkYXRhXG4gICAgICAgICAgKVxuICAgICAgICA6IGRhdGFcbiAgICApIGFzIFQgfCBudWxsO1xuXG4gICAgaWYgKHByb3BlcnR5ICE9PSBudWxsKVxuICAgICAgcHJvcGVydHkgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKHByb3BlcnR5LCBvcHRpb25zKSBhcyBUO1xuICAgIHJldHVybiB7IHByb3BlcnR5LCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSB2YWx1ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdmFsdWUoKTogVCB8IG51bGwge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBsZXQgdmFsdWUgPSAoXG4gICAgICBwYXlsb2FkICE9PSBudWxsICYmIFR5cGVzLmlzUGxhaW5PYmplY3QocGF5bG9hZClcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci5hdHRyaWJ1dGVzKHBheWxvYWQsIHRoaXMuYXBpLm9wdGlvbnMuc3RyaXBNZXRhZGF0YSlcbiAgICAgICAgOiBwYXlsb2FkXG4gICAgKSBhcyBUIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkgdmFsdWUgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKSBhcyBUO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YUVudGl0eUFubm90YXRpb25zLFxuICBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMsXG59IGZyb20gJy4vYW5ub3RhdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBPRGF0YUVudGl0eTxUPiA9IHtcbiAgZW50aXR5OiBUIHwgbnVsbDtcbiAgYW5ub3RzOiBPRGF0YUVudGl0eUFubm90YXRpb25zO1xufTtcbmV4cG9ydCB0eXBlIE9EYXRhRW50aXRpZXM8VD4gPSB7XG4gIGVudGl0aWVzOiBUW10gfCBudWxsO1xuICBhbm5vdHM6IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucztcbn07XG5leHBvcnQgdHlwZSBPRGF0YVByb3BlcnR5PFQ+ID0ge1xuICBwcm9wZXJ0eTogVCB8IG51bGw7XG4gIGFubm90czogT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zO1xufTtcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YUVudGl0eUFubm90YXRpb25zLFxuICBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMsXG59IGZyb20gJy4vYW5ub3RhdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBPRGF0YUVudGl0eTxUPiA9IHtcbiAgZW50aXR5OiBUIHwgbnVsbDtcbiAgYW5ub3RzOiBPRGF0YUVudGl0eUFubm90YXRpb25zPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgT0RhdGFFbnRpdGllczxUPiA9IHtcbiAgZW50aXRpZXM6IFRbXSB8IG51bGw7XG4gIGFubm90czogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgT0RhdGFQcm9wZXJ0eTxUPiA9IHtcbiAgcHJvcGVydHk6IFQgfCBudWxsO1xuICBhbm5vdHM6IE9EYXRhUHJvcGVydHlBbm5vdGF0aW9uczxUPjtcbn07XG4iXX0=