angular-odata 0.99.2 → 0.100.1

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 (72) hide show
  1. package/esm2020/lib/api.mjs +65 -55
  2. package/esm2020/lib/cache/cache.mjs +2 -2
  3. package/esm2020/lib/client.mjs +3 -3
  4. package/esm2020/lib/helper.mjs +91 -86
  5. package/esm2020/lib/models/collection.mjs +35 -46
  6. package/esm2020/lib/models/model.mjs +36 -40
  7. package/esm2020/lib/models/options.mjs +53 -36
  8. package/esm2020/lib/module.mjs +4 -4
  9. package/esm2020/lib/options.mjs +4 -3
  10. package/esm2020/lib/resources/query/builder.mjs +5 -7
  11. package/esm2020/lib/resources/query/expressions/base.mjs +1 -1
  12. package/esm2020/lib/resources/query/expressions/compute.mjs +13 -6
  13. package/esm2020/lib/resources/query/expressions/expand.mjs +77 -13
  14. package/esm2020/lib/resources/query/expressions/filter.mjs +11 -5
  15. package/esm2020/lib/resources/query/expressions/orderby.mjs +11 -3
  16. package/esm2020/lib/resources/query/expressions/search.mjs +15 -3
  17. package/esm2020/lib/resources/query/expressions/select.mjs +10 -5
  18. package/esm2020/lib/resources/query/expressions/syntax.mjs +42 -9
  19. package/esm2020/lib/resources/query/handlers.mjs +41 -30
  20. package/esm2020/lib/resources/query/options.mjs +47 -44
  21. package/esm2020/lib/resources/resource.mjs +22 -61
  22. package/esm2020/lib/resources/responses/annotations.mjs +6 -6
  23. package/esm2020/lib/resources/responses/options.mjs +1 -2
  24. package/esm2020/lib/resources/responses/response.mjs +3 -3
  25. package/esm2020/lib/resources/types/entity-set.mjs +1 -1
  26. package/esm2020/lib/resources/types/entity.mjs +3 -3
  27. package/esm2020/lib/resources/types/function.mjs +9 -1
  28. package/esm2020/lib/schema/callable.mjs +6 -2
  29. package/esm2020/lib/schema/enum-type.mjs +10 -2
  30. package/esm2020/lib/schema/parsers/callable.mjs +3 -2
  31. package/esm2020/lib/schema/parsers/enum-type.mjs +6 -5
  32. package/esm2020/lib/schema/parsers/structured-type.mjs +5 -5
  33. package/esm2020/lib/schema/structured-type.mjs +4 -9
  34. package/esm2020/lib/services/entity-set.mjs +6 -6
  35. package/esm2020/lib/services/factory.mjs +3 -3
  36. package/esm2020/lib/types.mjs +2 -1
  37. package/esm2020/lib/utils/objects.mjs +5 -1
  38. package/esm2020/lib/utils/urls.mjs +2 -2
  39. package/fesm2015/angular-odata.mjs +642 -498
  40. package/fesm2015/angular-odata.mjs.map +1 -1
  41. package/fesm2020/angular-odata.mjs +642 -502
  42. package/fesm2020/angular-odata.mjs.map +1 -1
  43. package/lib/helper.d.ts +28 -57
  44. package/lib/models/collection.d.ts +4 -2
  45. package/lib/models/model.d.ts +3 -9
  46. package/lib/models/options.d.ts +13 -11
  47. package/lib/options.d.ts +4 -4
  48. package/lib/resources/query/builder.d.ts +2 -1
  49. package/lib/resources/query/expressions/base.d.ts +1 -0
  50. package/lib/resources/query/expressions/compute.d.ts +3 -2
  51. package/lib/resources/query/expressions/expand.d.ts +40 -12
  52. package/lib/resources/query/expressions/filter.d.ts +22 -21
  53. package/lib/resources/query/expressions/orderby.d.ts +4 -2
  54. package/lib/resources/query/expressions/search.d.ts +5 -2
  55. package/lib/resources/query/expressions/select.d.ts +3 -2
  56. package/lib/resources/query/expressions/syntax.d.ts +12 -2
  57. package/lib/resources/query/handlers.d.ts +19 -15
  58. package/lib/resources/query/options.d.ts +15 -15
  59. package/lib/resources/resource.d.ts +1 -0
  60. package/lib/resources/responses/annotations.d.ts +12 -18
  61. package/lib/resources/responses/options.d.ts +2 -3
  62. package/lib/resources/responses/response.d.ts +1 -3
  63. package/lib/resources/types/entity-set.d.ts +1 -1
  64. package/lib/resources/types/function.d.ts +3 -0
  65. package/lib/schema/callable.d.ts +4 -4
  66. package/lib/schema/enum-type.d.ts +10 -4
  67. package/lib/schema/parsers/callable.d.ts +9 -7
  68. package/lib/schema/parsers/enum-type.d.ts +7 -5
  69. package/lib/schema/parsers/structured-type.d.ts +7 -7
  70. package/lib/schema/structured-type.d.ts +4 -4
  71. package/lib/types.d.ts +6 -5
  72. package/package.json +3 -3
@@ -3,8 +3,11 @@ import { Objects, Types } from '../../utils';
3
3
  import { buildPathAndQuery, } from './builder';
4
4
  import { ODataQueryOptionHandler } from './handlers';
5
5
  export class ODataQueryOptions {
6
- constructor(options) {
7
- this.options = options || {};
6
+ constructor(values) {
7
+ this.values =
8
+ values instanceof Map
9
+ ? values
10
+ : new Map(Object.entries(values || {}));
8
11
  }
9
12
  // Params
10
13
  pathAndParams(escape = false) {
@@ -22,11 +25,11 @@ export class ODataQueryOptions {
22
25
  QueryOptionNames.expand,
23
26
  QueryOptionNames.format,
24
27
  ]
25
- .filter((key) => !Types.isEmpty(this.options[key]))
28
+ .filter((key) => !Types.isEmpty(this.values.get(key)))
26
29
  .reduce((acc, key) => {
27
- let value = this.options[key];
28
- if (Types.rawType(value) === 'Expression') {
29
- value = value.render(aliases);
30
+ let value = this.values.get(key);
31
+ if (Types.rawType(value).endsWith('Expression')) {
32
+ value = value.render({ aliases });
30
33
  }
31
34
  return Object.assign(acc, { [key]: value });
32
35
  }, {});
@@ -41,63 +44,63 @@ export class ODataQueryOptions {
41
44
  .join('&'));
42
45
  }
43
46
  toJSON() {
44
- return Object.keys(this.options).reduce((acc, key) => {
45
- let value = this.options[key];
46
- if (Types.rawType(value) === 'Expression') {
47
- value = value.toJSON();
48
- }
47
+ return [...this.values.keys()].reduce((acc, key) => {
48
+ let value = this.values.get(key);
49
+ value =
50
+ Types.isObject(value) && 'toJSON' in value ? value.toJSON() : value;
49
51
  return Object.assign(acc, { [key]: value });
50
52
  }, {});
51
53
  }
52
54
  toQueryArguments() {
53
55
  return {
54
- select: this.options[QueryOptionNames.select],
55
- expand: this.options[QueryOptionNames.expand],
56
- transform: this.options[QueryOptionNames.transform],
57
- compute: this.options[QueryOptionNames.compute],
58
- search: this.options[QueryOptionNames.search],
59
- filter: this.options[QueryOptionNames.filter],
60
- orderBy: this.options[QueryOptionNames.orderBy],
61
- top: this.options[QueryOptionNames.top],
62
- skip: this.options[QueryOptionNames.skip],
63
- skiptoken: this.options[QueryOptionNames.skiptoken],
56
+ select: this.values.get(QueryOptionNames.select),
57
+ expand: this.values.get(QueryOptionNames.expand),
58
+ transform: this.values.get(QueryOptionNames.transform),
59
+ compute: this.values.get(QueryOptionNames.compute),
60
+ search: this.values.get(QueryOptionNames.search),
61
+ filter: this.values.get(QueryOptionNames.filter),
62
+ orderBy: this.values.get(QueryOptionNames.orderBy),
63
+ top: this.values.get(QueryOptionNames.top),
64
+ skip: this.values.get(QueryOptionNames.skip),
65
+ skiptoken: this.values.get(QueryOptionNames.skiptoken),
64
66
  };
65
67
  }
66
68
  clone() {
67
- const options = Object.keys(this.options).reduce((acc, key) => {
68
- let value = this.options[key];
69
- if (Types.rawType(value) !== 'Expression') {
70
- value = Objects.clone(value);
71
- }
72
- return Object.assign(acc, { [key]: value });
73
- }, {});
74
- return new ODataQueryOptions(options);
69
+ return new ODataQueryOptions(Objects.clone(this.values));
75
70
  }
76
71
  // Set Renderable
77
- expression(name, exp) {
78
- return (this.options[name] = exp);
72
+ expression(key, exp) {
73
+ if (exp !== undefined)
74
+ this.values.set(key, exp);
75
+ return this.values.get(key);
79
76
  }
80
77
  // Option Handler
81
- option(name, opts) {
78
+ option(key, opts) {
82
79
  if (opts !== undefined)
83
- this.options[name] = opts;
84
- return new ODataQueryOptionHandler(this.options, name);
80
+ this.values.set(key, opts);
81
+ return new ODataQueryOptionHandler(this.values, key);
85
82
  }
86
83
  // Query Options tools
87
- has(name) {
88
- return this.options[name] !== undefined;
84
+ has(key) {
85
+ return this.values.has(key);
89
86
  }
90
- remove(...names) {
91
- names.forEach((name) => this.option(name).clear());
87
+ remove(...keys) {
88
+ [...this.values.keys()]
89
+ .filter((k) => keys.indexOf(k) !== -1)
90
+ .forEach((key) => {
91
+ this.values.delete(key);
92
+ });
92
93
  }
93
- keep(...names) {
94
- this.options = Object.keys(this.options)
95
- .filter((k) => names.indexOf(k) !== -1)
96
- .reduce((acc, k) => Object.assign(acc, { [k]: this.options[k] }), {});
94
+ keep(...keys) {
95
+ [...this.values.keys()]
96
+ .filter((k) => keys.indexOf(k) === -1)
97
+ .forEach((key) => {
98
+ this.values.delete(key);
99
+ });
97
100
  }
98
101
  // Clear
99
102
  clear() {
100
- this.options = {};
103
+ this.values.clear();
101
104
  }
102
105
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcXVlcnkvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLGlCQUFpQixHQU9sQixNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFnQnJELE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBWSxPQUFpQztRQUMzQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFNBQVM7SUFDVCxhQUFhLENBQUMsU0FBa0IsS0FBSztRQUNuQyxJQUFJLE9BQU8sR0FBc0IsRUFBRSxDQUFDO1FBQ3BDLElBQUksT0FBTyxHQUFHO1lBQ1osZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1lBQ3ZCLGdCQUFnQixDQUFDLE1BQU07WUFDdkIsZ0JBQWdCLENBQUMsT0FBTztZQUN4QixnQkFBZ0IsQ0FBQyxTQUFTO1lBQzFCLGdCQUFnQixDQUFDLE9BQU87WUFDeEIsZ0JBQWdCLENBQUMsR0FBRztZQUNwQixnQkFBZ0IsQ0FBQyxJQUFJO1lBQ3JCLGdCQUFnQixDQUFDLFNBQVM7WUFDMUIsZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1NBQ3hCO2FBQ0UsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2xELE1B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LE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLENBQUMsR0FBRyxLQUF5QjtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNyQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzFELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsUUFBUTtJQUNSLEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeU9wdGlvbk5hbWVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JqZWN0cywgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1xuICBidWlsZFBhdGhBbmRRdWVyeSxcbiAgRXhwYW5kLFxuICBGaWx0ZXIsXG4gIE9yZGVyQnksXG4gIFF1ZXJ5Q3VzdG9tVHlwZSxcbiAgU2VsZWN0LFxuICBUcmFuc2Zvcm0sXG59IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQgeyBFeHByZXNzaW9uIH0gZnJvbSAnLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlciB9IGZyb20gJy4vaGFuZGxlcnMnO1xuXG5leHBvcnQgdHlwZSBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+ID0ge1xuICBbUXVlcnlPcHRpb25OYW1lcy5zZWxlY3RdPzogU2VsZWN0PFQ+O1xuICBbUXVlcnlPcHRpb25OYW1lcy5maWx0ZXJdPzogRmlsdGVyPFQ+O1xuICBbUXVlcnlPcHRpb25OYW1lcy5zZWFyY2hdPzogc3RyaW5nO1xuICBbUXVlcnlPcHRpb25OYW1lcy5jb21wdXRlXT86IHN0cmluZztcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMudHJhbnNmb3JtXT86IFRyYW5zZm9ybTxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeV0/OiBPcmRlckJ5PFQ+O1xuICBbUXVlcnlPcHRpb25OYW1lcy50b3BdPzogbnVtYmVyO1xuICBbUXVlcnlPcHRpb25OYW1lcy5za2lwXT86IG51bWJlcjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuc2tpcHRva2VuXT86IHN0cmluZztcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuZXhwYW5kXT86IEV4cGFuZDxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuZm9ybWF0XT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVF1ZXJ5T3B0aW9uczxUPiB7XG4gIG9wdGlvbnM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIH1cblxuICAvLyBQYXJhbXNcbiAgcGF0aEFuZFBhcmFtcyhlc2NhcGU6IGJvb2xlYW4gPSBmYWxzZSk6IFtzdHJpbmcsIHsgW25hbWU6IHN0cmluZ106IGFueSB9XSB7XG4gICAgbGV0IGFsaWFzZXM6IFF1ZXJ5Q3VzdG9tVHlwZVtdID0gW107XG4gICAgbGV0IG9wdGlvbnMgPSBbXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnNlbGVjdCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuZmlsdGVyLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5zZWFyY2gsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmNvbXB1dGUsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnRyYW5zZm9ybSxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeSxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMudG9wLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5za2lwLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5za2lwdG9rZW4sXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmV4cGFuZCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuZm9ybWF0LFxuICAgIF1cbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gIVR5cGVzLmlzRW1wdHkodGhpcy5vcHRpb25zW2tleV0pKVxuICAgICAgLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5vcHRpb25zW2tleV07XG4gICAgICAgIGlmIChUeXBlcy5yYXdUeXBlKHZhbHVlKSA9PT0gJ0V4cHJlc3Npb24nKSB7XG4gICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZW5kZXIoYWxpYXNlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICAgIH0sIHt9KTtcblxuICAgIHJldHVybiBidWlsZFBhdGhBbmRRdWVyeTxhbnk+KHsgLi4ub3B0aW9ucywgYWxpYXNlcywgZXNjYXBlIH0pO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBjb25zdCBbcGF0aCwgcGFyYW1zXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgIHJldHVybiAoXG4gICAgICBwYXRoICtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtcylcbiAgICAgICAgLmZpbHRlcigoWywgdmFsdWVdKSA9PiAhVHlwZXMuaXNFbXB0eSh2YWx1ZSkpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fT0ke3ZhbHVlfWApXG4gICAgICAgIC5qb2luKCcmJylcbiAgICApO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMub3B0aW9uc1trZXldO1xuICAgICAgaWYgKFR5cGVzLnJhd1R5cGUodmFsdWUpID09PSAnRXhwcmVzc2lvbicpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50b0pTT04oKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGFjYywgeyBba2V5XTogdmFsdWUgfSk7XG4gICAgfSwge30pO1xuICB9XG5cbiAgdG9RdWVyeUFyZ3VtZW50cygpOiBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+IHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0OiB0aGlzLm9wdGlvbnNbUXVlcnlPcHRpb25OYW1lcy5zZWxlY3RdLFxuICAgICAgZXhwYW5kOiB0aGlzLm9wdGlvbnNbUXVlcnlPcHRpb25OYW1lcy5leHBhbmRdLFxuICAgICAgdHJhbnNmb3JtOiB0aGlzLm9wdGlvbnNbUXVlcnlPcHRpb25OYW1lcy50cmFuc2Zvcm1dLFxuICAgICAgY29tcHV0ZTogdGhpcy5vcHRpb25zW1F1ZXJ5T3B0aW9uTmFtZXMuY29tcHV0ZV0sXG4gICAgICBzZWFyY2g6IHRoaXMub3B0aW9uc1tRdWVyeU9wdGlvbk5hbWVzLnNlYXJjaF0sXG4gICAgICBmaWx0ZXI6IHRoaXMub3B0aW9uc1tRdWVyeU9wdGlvbk5hbWVzLmZpbHRlcl0sXG4gICAgICBvcmRlckJ5OiB0aGlzLm9wdGlvbnNbUXVlcnlPcHRpb25OYW1lcy5vcmRlckJ5XSxcbiAgICAgIHRvcDogdGhpcy5vcHRpb25zW1F1ZXJ5T3B0aW9uTmFtZXMudG9wXSxcbiAgICAgIHNraXA6IHRoaXMub3B0aW9uc1tRdWVyeU9wdGlvbk5hbWVzLnNraXBdLFxuICAgICAgc2tpcHRva2VuOiB0aGlzLm9wdGlvbnNbUXVlcnlPcHRpb25OYW1lcy5za2lwdG9rZW5dLFxuICAgIH0gYXMgT0RhdGFRdWVyeUFyZ3VtZW50czxUPjtcbiAgfVxuXG4gIGNsb25lPE8+KCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMub3B0aW9uc1trZXldO1xuICAgICAgaWYgKFR5cGVzLnJhd1R5cGUodmFsdWUpICE9PSAnRXhwcmVzc2lvbicpIHtcbiAgICAgICAgdmFsdWUgPSBPYmplY3RzLmNsb25lKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGFjYywgeyBba2V5XTogdmFsdWUgfSk7XG4gICAgfSwge30pO1xuICAgIHJldHVybiBuZXcgT0RhdGFRdWVyeU9wdGlvbnM8Tz4ob3B0aW9ucyk7XG4gIH1cblxuICAvLyBTZXQgUmVuZGVyYWJsZVxuICBleHByZXNzaW9uKG5hbWU6IFF1ZXJ5T3B0aW9uTmFtZXMsIGV4cDogRXhwcmVzc2lvbjxUPikge1xuICAgIHJldHVybiAodGhpcy5vcHRpb25zW25hbWVdID0gZXhwKTtcbiAgfVxuXG4gIC8vIE9wdGlvbiBIYW5kbGVyXG4gIG9wdGlvbjxPPihuYW1lOiBRdWVyeU9wdGlvbk5hbWVzLCBvcHRzPzogTykge1xuICAgIGlmIChvcHRzICE9PSB1bmRlZmluZWQpIHRoaXMub3B0aW9uc1tuYW1lXSA9IG9wdHM7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxPPih0aGlzLm9wdGlvbnMsIG5hbWUpO1xuICB9XG5cbiAgLy8gUXVlcnkgT3B0aW9ucyB0b29sc1xuICBoYXMobmFtZTogUXVlcnlPcHRpb25OYW1lcykge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNbbmFtZV0gIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJlbW92ZSguLi5uYW1lczogUXVlcnlPcHRpb25OYW1lc1tdKSB7XG4gICAgbmFtZXMuZm9yRWFjaCgobmFtZSkgPT4gdGhpcy5vcHRpb24obmFtZSkuY2xlYXIoKSk7XG4gIH1cblxuICBrZWVwKC4uLm5hbWVzOiBRdWVyeU9wdGlvbk5hbWVzW10pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBPYmplY3Qua2V5cyh0aGlzLm9wdGlvbnMpXG4gICAgICAuZmlsdGVyKChrKSA9PiBuYW1lcy5pbmRleE9mKGsgYXMgUXVlcnlPcHRpb25OYW1lcykgIT09IC0xKVxuICAgICAgLnJlZHVjZSgoYWNjLCBrKSA9PiBPYmplY3QuYXNzaWduKGFjYywgeyBba106IHRoaXMub3B0aW9uc1trXSB9KSwge30pO1xuICB9XG5cbiAgLy8gQ2xlYXJcbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5vcHRpb25zID0ge307XG4gIH1cbn1cbiJdfQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcXVlcnkvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLGlCQUFpQixHQU9sQixNQUFNLFdBQVcsQ0FBQztBQVNuQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFnQnJELE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBWSxNQUE2RDtRQUN2RSxJQUFJLENBQUMsTUFBTTtZQUNULE1BQU0sWUFBWSxHQUFHO2dCQUNuQixDQUFDLENBQUMsTUFBTTtnQkFDUixDQUFDLENBQUMsSUFBSSxHQUFHLENBQ0wsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFtQyxDQUMvRCxDQUFDO0lBQ1YsQ0FBQztJQUVELFNBQVM7SUFDVCxhQUFhLENBQUMsU0FBa0IsS0FBSztRQUNuQyxJQUFJLE9BQU8sR0FBc0IsRUFBRSxDQUFDO1FBQ3BDLElBQUksT0FBTyxHQUFHO1lBQ1osZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1lBQ3ZCLGdCQUFnQixDQUFDLE1BQU07WUFDdkIsZ0JBQWdCLENBQUMsT0FBTztZQUN4QixnQkFBZ0IsQ0FBQyxTQUFTO1lBQzFCLGdCQUFnQixDQUFDLE9BQU87WUFDeEIsZ0JBQWdCLENBQUMsR0FBRztZQUNwQixnQkFBZ0IsQ0FBQyxJQUFJO1lBQ3JCLGdCQUFnQixDQUFDLFNBQVM7WUFDMUIsZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1NBQ3hCO2FBQ0UsTUFBTSxDQUFD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QUNoQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDckMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJLENBQUMsR0FBRyxJQUF3QjtRQUM5QixDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNwQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDckMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO0lBQ1IsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlPcHRpb25OYW1lcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IE9iamVjdHMsIFR5cGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgYnVpbGRQYXRoQW5kUXVlcnksXG4gIEV4cGFuZCxcbiAgRmlsdGVyLFxuICBPcmRlckJ5LFxuICBRdWVyeUN1c3RvbVR5cGUsXG4gIFNlbGVjdCxcbiAgVHJhbnNmb3JtLFxufSBmcm9tICcuL2J1aWxkZXInO1xuaW1wb3J0IHtcbiAgRXhwcmVzc2lvbixcbiAgRmlsdGVyRXhwcmVzc2lvbixcbiAgT3JkZXJCeUV4cHJlc3Npb24sXG4gIFNlYXJjaEV4cHJlc3Npb24sXG59IGZyb20gJy4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgRXhwYW5kRXhwcmVzc2lvbiB9IGZyb20gJy4vZXhwcmVzc2lvbnMvZXhwYW5kJztcbmltcG9ydCB7IFNlbGVjdEV4cHJlc3Npb24gfSBmcm9tICcuL2V4cHJlc3Npb25zL3NlbGVjdCc7XG5pbXBvcnQgeyBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlciB9IGZyb20gJy4vaGFuZGxlcnMnO1xuXG5leHBvcnQgdHlwZSBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+ID0ge1xuICBbUXVlcnlPcHRpb25OYW1lcy5zZWxlY3RdPzogU2VsZWN0PFQ+IHwgU2VsZWN0RXhwcmVzc2lvbjxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuZmlsdGVyXT86IEZpbHRlcjxUPiB8IEZpbHRlckV4cHJlc3Npb248VD47XG4gIFtRdWVyeU9wdGlvbk5hbWVzLnNlYXJjaF0/OiBzdHJpbmcgfCBTZWFyY2hFeHByZXNzaW9uPFQ+O1xuICBbUXVlcnlPcHRpb25OYW1lcy5jb21wdXRlXT86IHN0cmluZztcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMudHJhbnNmb3JtXT86IFRyYW5zZm9ybTxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeV0/OiBPcmRlckJ5PFQ+IHwgT3JkZXJCeUV4cHJlc3Npb248VD47XG4gIFtRdWVyeU9wdGlvbk5hbWVzLnRvcF0/OiBudW1iZXI7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLnNraXBdPzogbnVtYmVyO1xuICBbUXVlcnlPcHRpb25OYW1lcy5za2lwdG9rZW5dPzogc3RyaW5nO1xuICBbUXVlcnlPcHRpb25OYW1lcy5leHBhbmRdPzogRXhwYW5kPFQ+IHwgRXhwYW5kRXhwcmVzc2lvbjxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuZm9ybWF0XT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVF1ZXJ5T3B0aW9uczxUPiB7XG4gIHZhbHVlczogTWFwPFF1ZXJ5T3B0aW9uTmFtZXMsIGFueT47XG5cbiAgY29uc3RydWN0b3IodmFsdWVzPzogTWFwPFF1ZXJ5T3B0aW9uTmFtZXMsIGFueT4gfCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHRoaXMudmFsdWVzID1cbiAgICAgIHZhbHVlcyBpbnN0YW5jZW9mIE1hcFxuICAgICAgICA/IHZhbHVlc1xuICAgICAgICA6IG5ldyBNYXAoXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyh2YWx1ZXMgfHwge30pIGFzIEFycmF5PFtRdWVyeU9wdGlvbk5hbWVzLCBhbnldPlxuICAgICAgICAgICk7XG4gIH1cblxuICAvLyBQYXJhbXNcbiAgcGF0aEFuZFBhcmFtcyhlc2NhcGU6IGJvb2xlYW4gPSBmYWxzZSk6IFtzdHJpbmcsIHsgW25hbWU6IHN0cmluZ106IGFueSB9XSB7XG4gICAgbGV0IGFsaWFzZXM6IFF1ZXJ5Q3VzdG9tVHlwZVtdID0gW107XG4gICAgbGV0IG9wdGlvbnMgPSBbXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnNlbGVjdCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuZmlsdGVyLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5zZWFyY2gsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmNvbXB1dGUsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnRyYW5zZm9ybSxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeSxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMudG9wLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5za2lwLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5za2lwdG9rZW4sXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmV4cGFuZCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuZm9ybWF0LFxuICAgIF1cbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gIVR5cGVzLmlzRW1wdHkodGhpcy52YWx1ZXMuZ2V0KGtleSkpKVxuICAgICAgLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZXMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChUeXBlcy5yYXdUeXBlKHZhbHVlKS5lbmRzV2l0aCgnRXhwcmVzc2lvbicpKSB7XG4gICAgICAgICAgdmFsdWUgPSAodmFsdWUgYXMgRXhwcmVzc2lvbjxUPikucmVuZGVyKHsgYWxpYXNlcyB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2tleV06IHZhbHVlIH0pO1xuICAgICAgfSwge30pO1xuXG4gICAgcmV0dXJuIGJ1aWxkUGF0aEFuZFF1ZXJ5PGFueT4oeyAuLi5vcHRpb25zLCBhbGlhc2VzLCBlc2NhcGUgfSk7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIGNvbnN0IFtwYXRoLCBwYXJhbXNdID0gdGhpcy5wYXRoQW5kUGFyYW1zKCk7XG4gICAgcmV0dXJuIChcbiAgICAgIHBhdGggK1xuICAgICAgT2JqZWN0LmVudHJpZXMocGFyYW1zKVxuICAgICAgICAuZmlsdGVyKChbLCB2YWx1ZV0pID0+ICFUeXBlcy5pc0VtcHR5KHZhbHVlKSlcbiAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9PSR7dmFsdWV9YClcbiAgICAgICAgLmpvaW4oJyYnKVxuICAgICk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnZhbHVlcy5rZXlzKCldLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWVzLmdldChrZXkpO1xuICAgICAgdmFsdWUgPVxuICAgICAgICBUeXBlcy5pc09iamVjdCh2YWx1ZSkgJiYgJ3RvSlNPTicgaW4gdmFsdWUgPyB2YWx1ZS50b0pTT04oKSA6IHZhbHVlO1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrZXldOiB2YWx1ZSB9KTtcbiAgICB9LCB7fSk7XG4gIH1cblxuICB0b1F1ZXJ5QXJndW1lbnRzKCk6IE9EYXRhUXVlcnlBcmd1bWVudHM8VD4ge1xuICAgIHJldHVybiB7XG4gICAgICBzZWxlY3Q6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLnNlbGVjdCksXG4gICAgICBleHBhbmQ6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLmV4cGFuZCksXG4gICAgICB0cmFuc2Zvcm06IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLnRyYW5zZm9ybSksXG4gICAgICBjb21wdXRlOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb25OYW1lcy5jb21wdXRlKSxcbiAgICAgIHNlYXJjaDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMuc2VhcmNoKSxcbiAgICAgIGZpbHRlcjogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMuZmlsdGVyKSxcbiAgICAgIG9yZGVyQnk6IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLm9yZGVyQnkpLFxuICAgICAgdG9wOiB0aGlzLnZhbHVlcy5nZXQoUXVlcnlPcHRpb25OYW1lcy50b3ApLFxuICAgICAgc2tpcDogdGhpcy52YWx1ZXMuZ2V0KFF1ZXJ5T3B0aW9uTmFtZXMuc2tpcCksXG4gICAgICBza2lwdG9rZW46IHRoaXMudmFsdWVzLmdldChRdWVyeU9wdGlvbk5hbWVzLnNraXB0b2tlbiksXG4gICAgfSBhcyBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+O1xuICB9XG5cbiAgY2xvbmU8Tz4oKSB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVF1ZXJ5T3B0aW9uczxPPihPYmplY3RzLmNsb25lKHRoaXMudmFsdWVzKSk7XG4gIH1cblxuICAvLyBTZXQgUmVuZGVyYWJsZVxuICBleHByZXNzaW9uKGtleTogUXVlcnlPcHRpb25OYW1lcywgZXhwPzogRXhwcmVzc2lvbjxUPikge1xuICAgIGlmIChleHAgIT09IHVuZGVmaW5lZCkgdGhpcy52YWx1ZXMuc2V0KGtleSwgZXhwKTtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuZ2V0KGtleSk7XG4gIH1cblxuICAvLyBPcHRpb24gSGFuZGxlclxuICBvcHRpb248Tz4oa2V5OiBRdWVyeU9wdGlvbk5hbWVzLCBvcHRzPzogTykge1xuICAgIGlmIChvcHRzICE9PSB1bmRlZmluZWQpIHRoaXMudmFsdWVzLnNldChrZXksIG9wdHMpO1xuICAgIHJldHVybiBuZXcgT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8Tz4odGhpcy52YWx1ZXMsIGtleSk7XG4gIH1cblxuICAvLyBRdWVyeSBPcHRpb25zIHRvb2xzXG4gIGhhcyhrZXk6IFF1ZXJ5T3B0aW9uTmFtZXMpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMuaGFzKGtleSk7XG4gIH1cblxuICByZW1vdmUoLi4ua2V5czogUXVlcnlPcHRpb25OYW1lc1tdKSB7XG4gICAgWy4uLnRoaXMudmFsdWVzLmtleXMoKV1cbiAgICAgIC5maWx0ZXIoKGspID0+IGtleXMuaW5kZXhPZihrKSAhPT0gLTEpXG4gICAgICAuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHRoaXMudmFsdWVzLmRlbGV0ZShrZXkpO1xuICAgICAgfSk7XG4gIH1cblxuICBrZWVwKC4uLmtleXM6IFF1ZXJ5T3B0aW9uTmFtZXNbXSkge1xuICAgIFsuLi50aGlzLnZhbHVlcy5rZXlzKCldXG4gICAgICAuZmlsdGVyKChrKSA9PiBrZXlzLmluZGV4T2YoaykgPT09IC0xKVxuICAgICAgLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICB0aGlzLnZhbHVlcy5kZWxldGUoa2V5KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gQ2xlYXJcbiAgY2xlYXIoKSB7XG4gICAgdGhpcy52YWx1ZXMuY2xlYXIoKTtcbiAgfVxufVxuIl19
@@ -115,29 +115,28 @@ export class ODataResource {
115
115
  query: this.cloneQuery(),
116
116
  });
117
117
  }
118
+ __parser(value, options, type) {
119
+ const dataType = options !== undefined && Types.isPlainObject(value)
120
+ ? options.helper.type(value)
121
+ : undefined;
122
+ if (dataType !== undefined) {
123
+ // Parser from data type
124
+ return this.api.parserForType(dataType);
125
+ }
126
+ else if (this.schema !== undefined && 'parser' in this.schema) {
127
+ // Parser from resource schema
128
+ return this.schema.parser;
129
+ }
130
+ else if (type !== undefined) {
131
+ // Parser from resource type
132
+ return this.api.parserForType(type);
133
+ }
134
+ return undefined;
135
+ }
118
136
  deserialize(value, options) {
119
137
  const resourceType = this.returnType();
120
- const resourceSchema = this.schema;
121
- const _p = (value, options) => {
122
- const dataType = Types.isPlainObject(value)
123
- ? options.helper.type(value)
124
- : undefined;
125
- if (dataType !== undefined) {
126
- // Parser from data type
127
- return this.api.parserForType(dataType);
128
- }
129
- else if (resourceSchema !== undefined && 'parser' in resourceSchema) {
130
- // Parser from resource schema
131
- return resourceSchema.parser;
132
- }
133
- else if (resourceType !== undefined) {
134
- // Parser from resource type
135
- return this.api.parserForType(resourceType);
136
- }
137
- return undefined;
138
- };
139
138
  const _d = (value, options) => {
140
- const parser = _p(value, options);
139
+ const parser = this.__parser(value, options, resourceType);
141
140
  return parser !== undefined && 'deserialize' in parser
142
141
  ? parser.deserialize(value, options)
143
142
  : value;
@@ -148,27 +147,8 @@ export class ODataResource {
148
147
  }
149
148
  serialize(value, options) {
150
149
  const resourceType = this.type();
151
- const resourceSchema = this.schema;
152
- const _p = (value, options) => {
153
- const dataType = Types.isPlainObject(value)
154
- ? options.helper.type(value)
155
- : undefined;
156
- if (dataType !== undefined) {
157
- // Parser from data type
158
- return this.api.parserForType(dataType);
159
- }
160
- else if (resourceSchema !== undefined && 'parser' in resourceSchema) {
161
- // Parser from resource schema
162
- return resourceSchema.parser;
163
- }
164
- else if (resourceType !== undefined) {
165
- // Parser from resource type
166
- return this.api.parserForType(resourceType);
167
- }
168
- return undefined;
169
- };
170
150
  const _s = (value, options) => {
171
- const parser = _p(value, options);
151
+ const parser = this.__parser(value, options, resourceType);
172
152
  return parser !== undefined && 'serialize' in parser
173
153
  ? parser.serialize(value, options)
174
154
  : value;
@@ -179,27 +159,8 @@ export class ODataResource {
179
159
  }
180
160
  encode(value, options) {
181
161
  const resourceType = this.type();
182
- const resourceSchema = this.schema;
183
- const _p = (value, options) => {
184
- const dataType = Types.isPlainObject(value)
185
- ? options.helper.type(value)
186
- : undefined;
187
- if (dataType !== undefined) {
188
- // Parser from data type
189
- return this.api.parserForType(dataType);
190
- }
191
- else if (resourceSchema !== undefined && 'parser' in resourceSchema) {
192
- // Parser from resource schema
193
- return resourceSchema.parser;
194
- }
195
- else if (resourceType !== undefined) {
196
- // Parser from resource type
197
- return this.api.parserForType(resourceType);
198
- }
199
- return undefined;
200
- };
201
162
  const _e = (value, options) => {
202
- const parser = _p(value, options);
163
+ const parser = this.__parser(value, options, resourceType);
203
164
  return parser !== undefined && 'encode' in parser
204
165
  ? parser.encode(value, options)
205
166
  : value;
@@ -315,4 +276,4 @@ export class ODataResource {
315
276
  return this.request('DELETE', options);
316
277
  }
317
278
  }
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEdBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUdoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsd0JBQXdCLEdBRXpCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFnQnpDLE1BQU0sT0FBTyxhQUFhO0lBTXhCLFlBQ0UsR0FBYSxFQUNiLEVBQ0UsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLE1BS0osRUFBRTtRQUVOLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFDLENB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Q0FDWCxJQUFTLEVBQ1QsVUFZSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVTLEtBQUssQ0FDYixJQUFTLEVBQ1QsVUFZSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVTLE1BQU0sQ0FDZCxVQVlJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gIFBBUkFNX1NFUEFSQVRPUixcbiAgUVVFUllfU0VQQVJBVE9SLFxuICBWQUxVRV9TRVBBUkFUT1IsXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPRGF0YUNvbGxlY3Rpb24sIE9EYXRhTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgT0RhdGFTdHJ1Y3R1cmVkVHlwZSB9IGZyb20gJy4uL3NjaGVtYSc7XG5pbXBvcnQgeyBPRGF0YVNjaGVtYUVsZW1lbnQgfSBmcm9tICcuLi9zY2hlbWEvZWxlbWVudCc7XG5pbXBvcnQgeyBPcHRpb25zSGVscGVyLCBQYXJzZXIsIFF1ZXJ5T3B0aW9uTmFtZXMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBIdHRwLCBPYmplY3RzLCBUeXBlcyB9IGZyb20gJy4uL3V0aWxzL2luZGV4JztcbmltcG9ydCB7IE9EYXRhUGF0aFNlZ21lbnRzLCBPRGF0YVBhdGhTZWdtZW50c0hhbmRsZXIgfSBmcm9tICcuL3BhdGgnO1xuaW1wb3J0IHtcbiAgaXNRdWVyeUN1c3RvbVR5cGUsXG4gIE9EYXRhUXVlcnlPcHRpb25zLFxuICBPRGF0YVF1ZXJ5T3B0aW9uc0hhbmRsZXIsXG4gIFF1ZXJ5Q3VzdG9tVHlwZSxcbn0gZnJvbSAnLi9xdWVyeSc7XG5pbXBvcnQgeyBPRGF0YVJlcXVlc3QgfSBmcm9tICcuL3JlcXVlc3QnO1xuaW1wb3J0IHtcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YUVudGl0eUFubm90YXRpb25zLFxuICBPRGF0YVJlc3BvbnNlLFxufSBmcm9tICcuL3Jlc3BvbnNlcy9pbmRleCc7XG5pbXBvcnQgeyBPRGF0YU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRW50aXR5S2V5PFQ+ID1cbiAgfCB7XG4gICAgICByZWFkb25seSBbUCBpbiBrZXlvZiBUXT86IFRbUF07XG4gICAgfVxuICB8IFF1ZXJ5Q3VzdG9tVHlwZVxuICB8IHN0cmluZ1xuICB8IG51bWJlcjtcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVzb3VyY2U8VD4ge1xuICAvLyBWQVJJQUJMRVNcbiAgcHVibGljIGFwaTogT0RhdGFBcGk7XG4gIHB1YmxpYyBzY2hlbWE/OiBPRGF0YVNjaGVtYUVsZW1lbnQ7XG4gIHByb3RlY3RlZCBwYXRoU2VnbWVudHM6IE9EYXRhUGF0aFNlZ21lbnRzO1xuICBwcm90ZWN0ZWQgcXVlcnlPcHRpb25zOiBPRGF0YVF1ZXJ5T3B0aW9uczxUPjtcbiAgY29uc3RydWN0b3IoXG4gICAgYXBpOiBPRGF0YUFwaSxcbiAgICB7XG4gICAgICBzZWdtZW50cyxcbiAgICAgIHF1ZXJ5LFxuICAgICAgc2NoZW1hLFxuICAgIH06IHtcbiAgICAgIHNlZ21lbnRzPzogT0RhdGFQYXRoU2VnbWVudHM7XG4gICAgICBxdWVyeT86IE9EYXRhUXVlcnlPcHRpb25zPFQ+O1xuICAgICAgc2NoZW1hPzogT0RhdGFTY2hlbWFFbGVtZW50O1xuICAgIH0gPSB7fVxuICApIHtcbiAgICB0aGlzLmFwaSA9IGFwaTtcbiAgICB0aGlzLnBhdGhTZWdtZW50cyA9IHNlZ21lbnRzIHx8IG5ldyBPRGF0YVBhdGhTZWdtZW50cygpO1xuICAgIHRoaXMucXVlcnlPcHRpb25zID0gcXVlcnkgfHwgbmV3IE9EYXRhUXVlcnlPcHRpb25zKCk7XG4gICAgdGhpcy5zY2hlbWEgPSBzY2hlbWE7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMubGFzdCgpPy50eXBlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXR1cm5cbiAgICovXG4gIHJldHVyblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoKT8udHlwZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHN0cmluZyBBbGwgY292ZXJlZCB0eXBlcyBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMudHlwZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBib29sZWFuIFRoZSByZXNvdXJjZSBoYXMga2V5ID9cbiAgICovXG4gIGhhc0tleSgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnBhdGhTZWdtZW50cy5sYXN0KHsga2V5OiB0cnVlIH0pPy5oYXNLZXkoKSk7XG4gIH1cblxuICBjbGVhcktleSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMubGFzdCh7IGtleTogdHJ1ZSB9KT8uY2xlYXJLZXkoKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBNb2RlbHNcbiAgYXNNb2RlbDxNIGV4dGVuZHMgT0RhdGFNb2RlbDxUPj4oXG4gICAgZW50aXR5PzogUGFydGlhbDxUPiB8IHsgW25hbWU6IHN0cmluZ106IGFueSB9LFxuICAgIHsgYW5ub3RzLCByZXNldCB9OiB7IGFubm90cz86IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM7IHJlc2V0PzogYm9vbGVhbiB9ID0ge31cbiAgKTogTSB7XG4gICAgbGV0IHJlc291cmNlOiBPRGF0YVJlc291cmNlPFQ+ID0gdGhpcyBhcyBPRGF0YVJlc291cmNlPFQ+O1xuICAgIGNvbnN0IHR5cGUgPSBhbm5vdHM/LnR5cGUgfHwgdGhpcy5yZXR1cm5UeXBlKCk7XG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkgdGhyb3cgRXJyb3IoJycpO1xuICAgIGNvbnN0IE1vZGVsID0gdGhpcy5hcGkubW9kZWxGb3JUeXBlKHR5cGUpO1xuICAgIGxldCBlbnRpdHlTZXQgPSBhbm5vdHM/LmVudGl0eVNldDtcbiAgICBpZiAoZW50aXR5U2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc291cmNlID0gdGhpcy5hcGkuZW50aXR5U2V0PFQ+KGVudGl0eVNldCkuZW50aXR5KGVudGl0eSBhcyBQYXJ0aWFsPFQ+KTtcbiAgICAgIHJlc291cmNlLnF1ZXJ5KChxKSA9PiBxLmFwcGx5KHRoaXMucXVlcnlPcHRpb25zLnRvUXVlcnlBcmd1bWVudHMoKSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE1vZGVsKGVudGl0eSwgeyByZXNvdXJjZSwgYW5ub3RzLCByZXNldCB9KSBhcyBNO1xuICB9XG5cbiAgYXNDb2xsZWN0aW9uPE0gZXh0ZW5kcyBPRGF0YU1vZGVsPFQ+LCBDIGV4dGVuZHMgT0RhdGFDb2xsZWN0aW9uPFQsIE0+PihcbiAgICBlbnRpdGllcz86IFBhcnRpYWw8VD5bXSB8IHsgW25hbWU6IHN0cmluZ106IGFueSB9W10sXG4gICAge1xuICAgICAgYW5ub3RzLFxuICAgICAgcmVzZXQsXG4gICAgfTogeyBhbm5vdHM/OiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM7IHJlc2V0PzogYm9vbGVhbiB9ID0ge31cbiAgKTogQyB7XG4gICAgbGV0IHJlc291cmNlOiBPRGF0YVJlc291cmNlPFQ+ID0gdGhpcyBhcyBPRGF0YVJlc291cmNlPFQ+O1xuICAgIGNvbnN0IHR5cGUgPSBhbm5vdHM/LnR5cGUgfHwgdGhpcy5yZXR1cm5UeXBlKCk7XG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkgdGhyb3cgRXJyb3IoJycpO1xuICAgIGNvbnN0IENvbGxlY3Rpb24gPSB0aGlzLmFwaS5jb2xsZWN0aW9uRm9yVHlwZSh0eXBlKTtcbiAgICBsZXQgcGF0aCA9IGFubm90cz8uZW50aXR5U2V0O1xuICAgIGlmIChwYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc291cmNlID0gdGhpcy5hcGkuZW50aXR5U2V0PFQ+KHBhdGgpO1xuICAgICAgcmVzb3VyY2UucXVlcnkoKHEpID0+IHEuYXBwbHkodGhpcy5xdWVyeU9wdGlvbnMudG9RdWVyeUFyZ3VtZW50cygpKSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbihlbnRpdGllcywgeyByZXNvdXJjZSwgYW5ub3RzLCByZXNldCB9KSBhcyBDO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIGlzU3VidHlwZU9mKG90aGVyOiBPRGF0YVJlc291cmNlPGFueT4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3RoZXIuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuc2NoZW1hPy5pc1N1YnR5cGVPZihvdGhlci5zY2hlbWEpXG4gICAgKTtcbiAgfVxuXG4gIGlzU3VwZXJ0eXBlT2Yob3RoZXI6IE9EYXRhUmVzb3VyY2U8YW55Pikge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBvdGhlci5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5zY2hlbWE/LmlzU3VwZXJ0eXBlT2Yob3RoZXIuc2NoZW1hKVxuICAgICk7XG4gIH1cblxuICBpc0VxdWFsVG8ob3RoZXI6IE9EYXRhUmVzb3VyY2U8YW55PiwgdGVzdD86ICdwYXRoJyB8ICdwYXJhbXMnKSB7XG4gICAgY29uc3QgW3NlbGZQYXRoLCBzZWxmUGFyYW1zXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgIGNvbnN0IFtvdGhlclBhdGgsIG90aGVyUGFyYW1zXSA9IG90aGVyLnBhdGhBbmRQYXJhbXMoKTtcbiAgICByZXR1cm4gdGVzdCA9PT0gJ3BhdGgnXG4gICAgICA/IG90aGVyUGF0aCA9PT0gc2VsZlBhdGhcbiAgICAgIDogdGVzdCA9PT0gJ3BhcmFtcydcbiAgICAgID8gVHlwZXMuaXNFcXVhbChzZWxmUGFyYW1zLCBvdGhlclBhcmFtcylcbiAgICAgIDogb3RoZXJQYXRoID09PSBzZWxmUGF0aCAmJiBUeXBlcy5pc0VxdWFsKHNlbGZQYXJhbXMsIG90aGVyUGFyYW1zKTtcbiAgfVxuXG4gIHBhdGhBbmRQYXJhbXMoZXNjYXBlOiBib29sZWFuID0gZmFsc2UpOiBbc3RyaW5nLCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfV0ge1xuICAgIGNvbnN0IFtzcGF0aCwgc3BhcmFtc10gPSB0aGlzLnBhdGhTZWdtZW50cy5wYXRoQW5kUGFyYW1zKGVzY2FwZSk7XG4gICAgY29uc3QgWywgcXBhcmFtc10gPSB0aGlzLnF1ZXJ5T3B0aW9ucy5wYXRoQW5kUGFyYW1zKGVzY2FwZSk7XG4gICAgcmV0dXJuIFtzcGF0aCwgeyAuLi5zcGFyYW1zLCAuLi5xcGFyYW1zIH1dO1xuICB9XG5cbiAgZW5kcG9pbnRVcmwocGFyYW1zOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmFwaS5zZXJ2aWNlUm9vdFVybH0ke3RoaXN9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IFtwYXRoXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7cGF0aH1gO1xuICAgIH1cbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgbGV0IFtwYXRoLCBwYXJhbXNdID0gdGhpcy5wYXRoQW5kUGFyYW1zKCk7XG4gICAgbGV0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmVudHJpZXMocGFyYW1zKVxuICAgICAgLm1hcCgoZSkgPT4gYCR7ZVswXX0ke1ZBTFVFX1NFUEFSQVRPUn0ke2VbMV19YClcbiAgICAgIC5qb2luKFBBUkFNX1NFUEFSQVRPUik7XG4gICAgcmV0dXJuIHF1ZXJ5U3RyaW5nID8gYCR7cGF0aH0ke1FVRVJZX1NFUEFSQVRPUn0ke3F1ZXJ5U3RyaW5nfWAgOiBwYXRoO1xuICB9XG5cbiAgY2xvbmUoKTogT0RhdGFSZXNvdXJjZTxUPiB7XG4gICAgY29uc3QgQ3RvciA9IHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIE9EYXRhUmVzb3VyY2U7XG4gICAgcmV0dXJuIG5ldyBDdG9yKHRoaXMuYXBpLCB7XG4gICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAgc2VnbWVudHM6IHRoaXMuY2xvbmVTZWdtZW50cygpLFxuICAgICAgcXVlcnk6IHRoaXMuY2xvbmVRdWVyeTxUPigpLFxuICAgIH0pO1xuICB9XG5cbiAgZGVzZXJpYWxpemUodmFsdWU6IGFueSwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBhbnkge1xuICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IHRoaXMucmV0dXJuVHlwZSgpO1xuICAgIGNvbnN0IHJlc291cmNlU2NoZW1hID0gdGhpcy5zY2hlbWE7XG4gICAgY29uc3QgX3AgPSAodmFsdWU6IGFueSwgb3B0aW9uczogT3B0aW9uc0hlbHBlcik6IFBhcnNlcjxUPiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICBjb25zdCBkYXRhVHlwZSA9IFR5cGVzLmlzUGxhaW5PYmplY3QodmFsdWUpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIudHlwZSh2YWx1ZSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoZGF0YVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBQYXJzZXIgZnJvbSBkYXRhIHR5cGVcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhcnNlckZvclR5cGU8VD4oZGF0YVR5cGUpO1xuICAgICAgfSBlbHNlIGlmIChyZXNvdXJjZVNjaGVtYSAhPT0gdW5kZWZpbmVkICYmICdwYXJzZXInIGluIHJlc291cmNlU2NoZW1hKSB7XG4gICAgICAgIC8vIFBhcnNlciBmcm9tIHJlc291cmNlIHNjaGVtYVxuICAgICAgICByZXR1cm4gKDxhbnk+cmVzb3VyY2VTY2hlbWEpLnBhcnNlciBhcyBQYXJzZXI8VD4gfCB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2UgaWYgKHJlc291cmNlVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIFBhcnNlciBmcm9tIHJlc291cmNlIHR5cGVcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhcnNlckZvclR5cGU8VD4ocmVzb3VyY2VUeXBlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfTtcbiAgICBjb25zdCBfZCA9ICh2YWx1ZTogYW55LCBvcHRpb25zOiBPcHRpb25zSGVscGVyKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZXIgPSBfcCh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ2Rlc2VyaWFsaXplJyBpbiBwYXJzZXJcbiAgICAgICAgPyBwYXJzZXIuZGVzZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpXG4gICAgICAgIDogdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBfZCh2LCBvcHRpb25zIHx8IHRoaXMuYXBpLm9wdGlvbnMpKVxuICAgICAgOiBfZCh2YWx1ZSwgb3B0aW9ucyB8fCB0aGlzLmFwaS5vcHRpb25zKTtcbiAgfVxuXG4gIHNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zPzogT3B0aW9uc0hlbHBlcik6IGFueSB7XG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy50eXBlKCk7XG4gICAgY29uc3QgcmVzb3VyY2VTY2hlbWEgPSB0aGlzLnNjaGVtYTtcbiAgICBjb25zdCBfcCA9ICh2YWx1ZTogYW55LCBvcHRpb25zOiBPcHRpb25zSGVscGVyKTogUGFyc2VyPFQ+IHwgdW5kZWZpbmVkID0+IHtcbiAgICAgIGNvbnN0IGRhdGFUeXBlID0gVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSlcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci50eXBlKHZhbHVlKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIGlmIChkYXRhVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIFBhcnNlciBmcm9tIGRhdGEgdHlwZVxuICAgICAgICByZXR1cm4gdGhpcy5hcGkucGFyc2VyRm9yVHlwZTxUPihkYXRhVHlwZSk7XG4gICAgICB9IGVsc2UgaWYgKHJlc291cmNlU2NoZW1hICE9PSB1bmRlZmluZWQgJiYgJ3BhcnNlcicgaW4gcmVzb3VyY2VTY2hlbWEpIHtcbiAgICAgICAgLy8gUGFyc2VyIGZyb20gcmVzb3VyY2Ugc2NoZW1hXG4gICAgICAgIHJldHVybiAoPGFueT5yZXNvdXJjZVNjaGVtYSkucGFyc2VyIGFzIFBhcnNlcjxUPiB8IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSBpZiAocmVzb3VyY2VUeXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gUGFyc2VyIGZyb20gcmVzb3VyY2UgdHlwZVxuICAgICAgICByZXR1cm4gdGhpcy5hcGkucGFyc2VyRm9yVHlwZTxUPihyZXNvdXJjZVR5cGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIGNvbnN0IF9zID0gKHZhbHVlOiBhbnksIG9wdGlvbnM6IE9wdGlvbnNIZWxwZXIpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IF9wKHZhbHVlLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiBwYXJzZXIgIT09IHVuZGVmaW5lZCAmJiAnc2VyaWFsaXplJyBpbiBwYXJzZXJcbiAgICAgICAgPyBwYXJzZXIuc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKVxuICAgICAgICA6IHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gX3Modiwgb3B0aW9ucyB8fCB0aGlzLmFwaS5vcHRpb25zKSlcbiAgICAgIDogX3ModmFsdWUsIG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucyk7XG4gIH1cblxuICBlbmNvZGUodmFsdWU6IGFueSwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBhbnkge1xuICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IHRoaXMudHlwZSgpO1xuICAgIGNvbnN0IHJlc291cmNlU2NoZW1hID0gdGhpcy5zY2hlbWE7XG4gICAgY29uc3QgX3AgPSAodmFsdWU6IGFueSwgb3B0aW9uczogT3B0aW9uc0hlbHBlcik6IFBhcnNlcjxUPiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICBjb25zdCBkYXRhVHlwZSA9IFR5cGVzLmlzUGxhaW5PYmplY3QodmFsdWUpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIudHlwZSh2YWx1ZSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoZGF0YVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBQYXJzZXIgZnJvbSBkYXRhIHR5cGVcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhcnNlckZvclR5cGU8VD4oZGF0YVR5cGUpO1xuICAgICAgfSBlbHNlIGlmIChyZXNvdXJjZVNjaGVtYSAhPT0gdW5kZWZpbmVkICYmICdwYXJzZXInIGluIHJlc291cmNlU2NoZW1hKSB7XG4gICAgICAgIC8vIFBhcnNlciBmcm9tIHJlc291cmNlIHNjaGVtYVxuICAgICAgICByZXR1cm4gKDxhbnk+cmVzb3VyY2VTY2hlbWEpLnBhcnNlciBhcyBQYXJzZXI8VD4gfCB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2UgaWYgKHJlc291cmNlVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIFBhcnNlciBmcm9tIHJlc291cmNlIHR5cGVcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhcnNlckZvclR5cGU8VD4ocmVzb3VyY2VUeXBlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfTtcbiAgICBjb25zdCBfZSA9ICh2YWx1ZTogYW55LCBvcHRpb25zOiBPcHRpb25zSGVscGVyKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZXIgPSBfcCh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ2VuY29kZScgaW4gcGFyc2VyXG4gICAgICAgID8gcGFyc2VyLmVuY29kZSh2YWx1ZSwgb3B0aW9ucylcbiAgICAgICAgOiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IF9lKHYsIG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucykpXG4gICAgICA6IF9lKHZhbHVlLCBvcHRpb25zIHx8IHRoaXMuYXBpLm9wdGlvbnMpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB7XG4gICAgICBzZWdtZW50czogdGhpcy5wYXRoU2VnbWVudHMudG9KU09OKCksXG4gICAgICBvcHRpb25zOiB0aGlzLnF1ZXJ5T3B0aW9ucy50b0pTT04oKSxcbiAgICB9O1xuICB9XG5cbiAgY2xvbmVTZWdtZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMuY2xvbmUoKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBRdWVyeSBPcHRpb25zXG4gIGNsZWFyUXVlcnkoKSB7XG4gICAgdGhpcy5xdWVyeU9wdGlvbnMuY2xlYXIoKTtcbiAgfVxuXG4gIGNsb25lUXVlcnk8UD4oKSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlPcHRpb25zLmNsb25lPFA+KCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSBwYXRoIHNlZ21lbnRzIG9mIHRoZSByZXNvdXJjZVxuICAgKiBDcmVhdGUgYW4gb2JqZWN0IGhhbmRsZXIgZm9yIG11dGF0ZSB0aGUgcGF0aCBzZWdtZW50cyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIGYgRnVuY3Rpb24gY29udGV4dCBmb3IgaGFuZGxlIHRoZSBzZWdtZW50c1xuICAgKiBAcmV0dXJucyBPRGF0YUFjdGlvblJlc291cmNlXG4gICAqL1xuICBzZWdtZW50KGY6IChxOiBPRGF0YVBhdGhTZWdtZW50c0hhbmRsZXI8VD4pID0+IHZvaWQpIHtcbiAgICBmKG5ldyBPRGF0YVBhdGhTZWdtZW50c0hhbmRsZXI8VD4odGhpcy5wYXRoU2VnbWVudHMpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHF1ZXJ5IG9wdGlvbnMgb2YgdGhlIHJlc291cmNlXG4gICAqIENyZWF0ZSBhbiBvYmplY3QgaGFuZGxlciBmb3IgbXV0YXRlIHRoZSBxdWVyeSBvcHRpb25zIG9mIHRoZSByZXNvdXJjZVxuICAgKiBAcGFyYW0gZiBGdW5jdGlvbiBjb250ZXh0IGZvciBoYW5kbGUgdGhlIHF1ZXJ5IG9wdGlvbnNcbiAgICovXG4gIHF1ZXJ5KGY6IChxOiBPRGF0YVF1ZXJ5T3B0aW9uc0hhbmRsZXI8VD4pID0+IHZvaWQpIHtcbiAgICBmKG5ldyBPRGF0YVF1ZXJ5T3B0aW9uc0hhbmRsZXI8VD4odGhpcy5xdWVyeU9wdGlvbnMpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlS2V5PFQ+KFxuICAgIHZhbHVlOiBhbnksXG4gICAgc2NoZW1hPzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPlxuICApOiBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChpc1F1ZXJ5Q3VzdG9tVHlwZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKFR5cGVzLmlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gc2NoZW1hIGluc3RhbmNlb2YgT0RhdGFTdHJ1Y3R1cmVkVHlwZVxuICAgICAgICA/IHNjaGVtYS5yZXNvbHZlS2V5KHZhbHVlKVxuICAgICAgICA6IE9iamVjdHMucmVzb2x2ZUtleSh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSBhcyBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzb2x2ZUtleSh2YWx1ZTogYW55KTogRW50aXR5S2V5PFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gT0RhdGFSZXNvdXJjZS5yZXNvbHZlS2V5PFQ+KFxuICAgICAgdmFsdWUsXG4gICAgICB0aGlzLnNjaGVtYSBhcyBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+XG4gICAgKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyBCYXNlIFJlcXVlc3RzXG4gIHByb3RlY3RlZCByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk/OiBhbnk7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uTmFtZXNbXTtcbiAgICB9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYXBpT3B0aW9ucyA9IHRoaXMuYXBpLm9wdGlvbnM7XG4gICAgbGV0IHBhcmFtcyA9IG9wdGlvbnMucGFyYW1zIHx8IHt9O1xuICAgIGlmIChvcHRpb25zLndpdGhDb3VudCkge1xuICAgICAgcGFyYW1zID0gSHR0cC5tZXJnZUh0dHBQYXJhbXMocGFyYW1zLCBhcGlPcHRpb25zLmhlbHBlci5jb3VudFBhcmFtKCkpO1xuICAgIH1cblxuICAgIGxldCBldGFnID0gb3B0aW9ucy5ldGFnO1xuICAgIGlmIChldGFnID09PSB1bmRlZmluZWQgJiYgVHlwZXMuaXNQbGFpbk9iamVjdChvcHRpb25zLmJvZHkpKSB7XG4gICAgICBldGFnID0gYXBpT3B0aW9ucy5oZWxwZXIuZXRhZyhvcHRpb25zLmJvZHkpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgT0RhdGFSZXF1ZXN0KHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIGV0YWcsXG4gICAgICBib2R5OiBvcHRpb25zLmJvZHksXG4gICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgcmVzb3VyY2U6IHRoaXMsXG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxuICAgICAgaGVhZGVyczogb3B0aW9ucy5oZWFkZXJzLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IG9wdGlvbnMucmVwb3J0UHJvZ3Jlc3MsXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucy5yZXNwb25zZVR5cGUsXG4gICAgICBmZXRjaFBvbGljeTogb3B0aW9ucy5mZXRjaFBvbGljeSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMsXG4gICAgICBib2R5UXVlcnlPcHRpb25zOiBvcHRpb25zLmJvZHlRdWVyeU9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXMkID0gdGhpcy5hcGkucmVxdWVzdChyZXF1ZXN0KTtcbiAgICBzd2l0Y2ggKG9wdGlvbnMucmVzcG9uc2VUeXBlKSB7XG4gICAgICBjYXNlICdlbnRpdGllcyc6XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy5lbnRpdGllcygpKSk7XG4gICAgICBjYXNlICdlbnRpdHknOlxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMuZW50aXR5KCkpKTtcbiAgICAgIGNhc2UgJ3Byb3BlcnR5JzpcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLnByb3BlcnR5KCkpKTtcbiAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLnZhbHVlKCkgYXMgVCkpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gT3RoZXIgcmVzcG9uc2VUeXBlcyAoYXJyYXlidWZmZXIsIGJsb2IsIGpzb24sIHRleHQpIHJldHVybiBib2R5XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy5ib2R5KSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldChcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uTmFtZXNbXTtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdHRVQnLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwb3N0KFxuICAgIGJvZHk6IGFueSxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUE9TVCcsIHsgYm9keSwgLi4ub3B0aW9ucyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdXQoXG4gICAgYm9keTogYW55LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUFVUJywgeyBib2R5LCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhdGNoKFxuICAgIGJvZHk6IGFueSxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ1BBVENIJywgeyBib2R5LCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlbGV0ZShcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ0RFTEVURScsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEdBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUdoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsd0JBQXdCLEdBRXpCLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFnQnpDLE1BQU0sT0FBTyxhQUFhO0lBTXhCLFlBQ0UsR0FBYSxFQUNiLEVBQ0UsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLE1BS0osRUFBRTtRQUVOLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFDLENB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QUFDLENBQUM7SUFDckQsQ0FBQztJQUVTLE1BQU0sQ0FDZCxVQVlJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gIFBBUkFNX1NFUEFSQVRPUixcbiAgUVVFUllfU0VQQVJBVE9SLFxuICBWQUxVRV9TRVBBUkFUT1IsXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPRGF0YUNvbGxlY3Rpb24sIE9EYXRhTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgT0RhdGFTdHJ1Y3R1cmVkVHlwZSB9IGZyb20gJy4uL3NjaGVtYSc7XG5pbXBvcnQgeyBPRGF0YVNjaGVtYUVsZW1lbnQgfSBmcm9tICcuLi9zY2hlbWEvZWxlbWVudCc7XG5pbXBvcnQgeyBPcHRpb25zSGVscGVyLCBQYXJzZXIsIFF1ZXJ5T3B0aW9uTmFtZXMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBIdHRwLCBPYmplY3RzLCBUeXBlcyB9IGZyb20gJy4uL3V0aWxzL2luZGV4JztcbmltcG9ydCB7IE9EYXRhUGF0aFNlZ21lbnRzLCBPRGF0YVBhdGhTZWdtZW50c0hhbmRsZXIgfSBmcm9tICcuL3BhdGgnO1xuaW1wb3J0IHtcbiAgaXNRdWVyeUN1c3RvbVR5cGUsXG4gIE9EYXRhUXVlcnlPcHRpb25zLFxuICBPRGF0YVF1ZXJ5T3B0aW9uc0hhbmRsZXIsXG4gIFF1ZXJ5Q3VzdG9tVHlwZSxcbn0gZnJvbSAnLi9xdWVyeSc7XG5pbXBvcnQgeyBPRGF0YVJlcXVlc3QgfSBmcm9tICcuL3JlcXVlc3QnO1xuaW1wb3J0IHtcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YUVudGl0eUFubm90YXRpb25zLFxuICBPRGF0YVJlc3BvbnNlLFxufSBmcm9tICcuL3Jlc3BvbnNlcy9pbmRleCc7XG5pbXBvcnQgeyBPRGF0YU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRW50aXR5S2V5PFQ+ID1cbiAgfCB7XG4gICAgICByZWFkb25seSBbUCBpbiBrZXlvZiBUXT86IFRbUF07XG4gICAgfVxuICB8IFF1ZXJ5Q3VzdG9tVHlwZVxuICB8IHN0cmluZ1xuICB8IG51bWJlcjtcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVzb3VyY2U8VD4ge1xuICAvLyBWQVJJQUJMRVNcbiAgcHVibGljIGFwaTogT0RhdGFBcGk7XG4gIHB1YmxpYyBzY2hlbWE/OiBPRGF0YVNjaGVtYUVsZW1lbnQ7XG4gIHByb3RlY3RlZCBwYXRoU2VnbWVudHM6IE9EYXRhUGF0aFNlZ21lbnRzO1xuICBwcm90ZWN0ZWQgcXVlcnlPcHRpb25zOiBPRGF0YVF1ZXJ5T3B0aW9uczxUPjtcbiAgY29uc3RydWN0b3IoXG4gICAgYXBpOiBPRGF0YUFwaSxcbiAgICB7XG4gICAgICBzZWdtZW50cyxcbiAgICAgIHF1ZXJ5LFxuICAgICAgc2NoZW1hLFxuICAgIH06IHtcbiAgICAgIHNlZ21lbnRzPzogT0RhdGFQYXRoU2VnbWVudHM7XG4gICAgICBxdWVyeT86IE9EYXRhUXVlcnlPcHRpb25zPFQ+O1xuICAgICAgc2NoZW1hPzogT0RhdGFTY2hlbWFFbGVtZW50O1xuICAgIH0gPSB7fVxuICApIHtcbiAgICB0aGlzLmFwaSA9IGFwaTtcbiAgICB0aGlzLnBhdGhTZWdtZW50cyA9IHNlZ21lbnRzIHx8IG5ldyBPRGF0YVBhdGhTZWdtZW50cygpO1xuICAgIHRoaXMucXVlcnlPcHRpb25zID0gcXVlcnkgfHwgbmV3IE9EYXRhUXVlcnlPcHRpb25zKCk7XG4gICAgdGhpcy5zY2hlbWEgPSBzY2hlbWE7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMubGFzdCgpPy50eXBlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXR1cm5cbiAgICovXG4gIHJldHVyblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoKT8udHlwZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHN0cmluZyBBbGwgY292ZXJlZCB0eXBlcyBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMudHlwZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBib29sZWFuIFRoZSByZXNvdXJjZSBoYXMga2V5ID9cbiAgICovXG4gIGhhc0tleSgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnBhdGhTZWdtZW50cy5sYXN0KHsga2V5OiB0cnVlIH0pPy5oYXNLZXkoKSk7XG4gIH1cblxuICBjbGVhcktleSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMubGFzdCh7IGtleTogdHJ1ZSB9KT8uY2xlYXJLZXkoKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBNb2RlbHNcbiAgYXNNb2RlbDxNIGV4dGVuZHMgT0RhdGFNb2RlbDxUPj4oXG4gICAgZW50aXR5PzogUGFydGlhbDxUPiB8IHsgW25hbWU6IHN0cmluZ106IGFueSB9LFxuICAgIHsgYW5ub3RzLCByZXNldCB9OiB7IGFubm90cz86IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM7IHJlc2V0PzogYm9vbGVhbiB9ID0ge31cbiAgKTogTSB7XG4gICAgbGV0IHJlc291cmNlOiBPRGF0YVJlc291cmNlPFQ+ID0gdGhpcyBhcyBPRGF0YVJlc291cmNlPFQ+O1xuICAgIGNvbnN0IHR5cGUgPSBhbm5vdHM/LnR5cGUgfHwgdGhpcy5yZXR1cm5UeXBlKCk7XG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkgdGhyb3cgRXJyb3IoJycpO1xuICAgIGNvbnN0IE1vZGVsID0gdGhpcy5hcGkubW9kZWxGb3JUeXBlKHR5cGUpO1xuICAgIGxldCBlbnRpdHlTZXQgPSBhbm5vdHM/LmVudGl0eVNldDtcbiAgICBpZiAoZW50aXR5U2V0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc291cmNlID0gdGhpcy5hcGkuZW50aXR5U2V0PFQ+KGVudGl0eVNldCkuZW50aXR5KGVudGl0eSBhcyBQYXJ0aWFsPFQ+KTtcbiAgICAgIHJlc291cmNlLnF1ZXJ5KChxKSA9PiBxLmFwcGx5KHRoaXMucXVlcnlPcHRpb25zLnRvUXVlcnlBcmd1bWVudHMoKSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IE1vZGVsKGVudGl0eSwgeyByZXNvdXJjZSwgYW5ub3RzLCByZXNldCB9KSBhcyBNO1xuICB9XG5cbiAgYXNDb2xsZWN0aW9uPE0gZXh0ZW5kcyBPRGF0YU1vZGVsPFQ+LCBDIGV4dGVuZHMgT0RhdGFDb2xsZWN0aW9uPFQsIE0+PihcbiAgICBlbnRpdGllcz86IFBhcnRpYWw8VD5bXSB8IHsgW25hbWU6IHN0cmluZ106IGFueSB9W10sXG4gICAge1xuICAgICAgYW5ub3RzLFxuICAgICAgcmVzZXQsXG4gICAgfTogeyBhbm5vdHM/OiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM7IHJlc2V0PzogYm9vbGVhbiB9ID0ge31cbiAgKTogQyB7XG4gICAgbGV0IHJlc291cmNlOiBPRGF0YVJlc291cmNlPFQ+ID0gdGhpcyBhcyBPRGF0YVJlc291cmNlPFQ+O1xuICAgIGNvbnN0IHR5cGUgPSBhbm5vdHM/LnR5cGUgfHwgdGhpcy5yZXR1cm5UeXBlKCk7XG4gICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCkgdGhyb3cgRXJyb3IoJycpO1xuICAgIGNvbnN0IENvbGxlY3Rpb24gPSB0aGlzLmFwaS5jb2xsZWN0aW9uRm9yVHlwZSh0eXBlKTtcbiAgICBsZXQgcGF0aCA9IGFubm90cz8uZW50aXR5U2V0O1xuICAgIGlmIChwYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc291cmNlID0gdGhpcy5hcGkuZW50aXR5U2V0PFQ+KHBhdGgpO1xuICAgICAgcmVzb3VyY2UucXVlcnkoKHEpID0+IHEuYXBwbHkodGhpcy5xdWVyeU9wdGlvbnMudG9RdWVyeUFyZ3VtZW50cygpKSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQ29sbGVjdGlvbihlbnRpdGllcywgeyByZXNvdXJjZSwgYW5ub3RzLCByZXNldCB9KSBhcyBDO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIGlzU3VidHlwZU9mKG90aGVyOiBPRGF0YVJlc291cmNlPGFueT4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3RoZXIuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuc2NoZW1hPy5pc1N1YnR5cGVPZihvdGhlci5zY2hlbWEpXG4gICAgKTtcbiAgfVxuXG4gIGlzU3VwZXJ0eXBlT2Yob3RoZXI6IE9EYXRhUmVzb3VyY2U8YW55Pikge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBvdGhlci5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5zY2hlbWE/LmlzU3VwZXJ0eXBlT2Yob3RoZXIuc2NoZW1hKVxuICAgICk7XG4gIH1cblxuICBpc0VxdWFsVG8ob3RoZXI6IE9EYXRhUmVzb3VyY2U8YW55PiwgdGVzdD86ICdwYXRoJyB8ICdwYXJhbXMnKSB7XG4gICAgY29uc3QgW3NlbGZQYXRoLCBzZWxmUGFyYW1zXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgIGNvbnN0IFtvdGhlclBhdGgsIG90aGVyUGFyYW1zXSA9IG90aGVyLnBhdGhBbmRQYXJhbXMoKTtcbiAgICByZXR1cm4gdGVzdCA9PT0gJ3BhdGgnXG4gICAgICA/IG90aGVyUGF0aCA9PT0gc2VsZlBhdGhcbiAgICAgIDogdGVzdCA9PT0gJ3BhcmFtcydcbiAgICAgID8gVHlwZXMuaXNFcXVhbChzZWxmUGFyYW1zLCBvdGhlclBhcmFtcylcbiAgICAgIDogb3RoZXJQYXRoID09PSBzZWxmUGF0aCAmJiBUeXBlcy5pc0VxdWFsKHNlbGZQYXJhbXMsIG90aGVyUGFyYW1zKTtcbiAgfVxuXG4gIHBhdGhBbmRQYXJhbXMoZXNjYXBlOiBib29sZWFuID0gZmFsc2UpOiBbc3RyaW5nLCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfV0ge1xuICAgIGNvbnN0IFtzcGF0aCwgc3BhcmFtc10gPSB0aGlzLnBhdGhTZWdtZW50cy5wYXRoQW5kUGFyYW1zKGVzY2FwZSk7XG4gICAgY29uc3QgWywgcXBhcmFtc10gPSB0aGlzLnF1ZXJ5T3B0aW9ucy5wYXRoQW5kUGFyYW1zKGVzY2FwZSk7XG5cbiAgICByZXR1cm4gW3NwYXRoLCB7IC4uLnNwYXJhbXMsIC4uLnFwYXJhbXMgfV07XG4gIH1cblxuICBlbmRwb2ludFVybChwYXJhbXM6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7dGhpc31gO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgW3BhdGhdID0gdGhpcy5wYXRoQW5kUGFyYW1zKCk7XG4gICAgICByZXR1cm4gYCR7dGhpcy5hcGkuc2VydmljZVJvb3RVcmx9JHtwYXRofWA7XG4gICAgfVxuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBsZXQgW3BhdGgsIHBhcmFtc10gPSB0aGlzLnBhdGhBbmRQYXJhbXMoKTtcbiAgICBsZXQgcXVlcnlTdHJpbmcgPSBPYmplY3QuZW50cmllcyhwYXJhbXMpXG4gICAgICAubWFwKChlKSA9PiBgJHtlWzBdfSR7VkFMVUVfU0VQQVJBVE9SfSR7ZVsxXX1gKVxuICAgICAgLmpvaW4oUEFSQU1fU0VQQVJBVE9SKTtcbiAgICByZXR1cm4gcXVlcnlTdHJpbmcgPyBgJHtwYXRofSR7UVVFUllfU0VQQVJBVE9SfSR7cXVlcnlTdHJpbmd9YCA6IHBhdGg7XG4gIH1cblxuICBjbG9uZSgpOiBPRGF0YVJlc291cmNlPFQ+IHtcbiAgICBjb25zdCBDdG9yID0gdGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgT0RhdGFSZXNvdXJjZTtcbiAgICByZXR1cm4gbmV3IEN0b3IodGhpcy5hcGksIHtcbiAgICAgIHNjaGVtYTogdGhpcy5zY2hlbWEsXG4gICAgICBzZWdtZW50czogdGhpcy5jbG9uZVNlZ21lbnRzKCksXG4gICAgICBxdWVyeTogdGhpcy5jbG9uZVF1ZXJ5PFQ+KCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9fcGFyc2VyKFxuICAgIHZhbHVlOiBhbnksXG4gICAgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIsXG4gICAgdHlwZT86IHN0cmluZ1xuICApOiBQYXJzZXI8VD4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRhdGFUeXBlID1cbiAgICAgIG9wdGlvbnMgIT09IHVuZGVmaW5lZCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KHZhbHVlKVxuICAgICAgICA/IG9wdGlvbnMuaGVscGVyLnR5cGUodmFsdWUpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGlmIChkYXRhVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBQYXJzZXIgZnJvbSBkYXRhIHR5cGVcbiAgICAgIHJldHVybiB0aGlzLmFwaS5wYXJzZXJGb3JUeXBlPFQ+KGRhdGFUeXBlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2NoZW1hICE9PSB1bmRlZmluZWQgJiYgJ3BhcnNlcicgaW4gdGhpcy5zY2hlbWEpIHtcbiAgICAgIC8vIFBhcnNlciBmcm9tIHJlc291cmNlIHNjaGVtYVxuICAgICAgcmV0dXJuICg8YW55PnRoaXMuc2NoZW1hKS5wYXJzZXIgYXMgUGFyc2VyPFQ+IHwgdW5kZWZpbmVkO1xuICAgIH0gZWxzZSBpZiAodHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBQYXJzZXIgZnJvbSByZXNvdXJjZSB0eXBlXG4gICAgICByZXR1cm4gdGhpcy5hcGkucGFyc2VyRm9yVHlwZTxUPih0eXBlKTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGRlc2VyaWFsaXplKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zSGVscGVyKTogYW55IHtcbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBjb25zdCBfZCA9ICh2YWx1ZTogYW55LCBvcHRpb25zOiBPcHRpb25zSGVscGVyKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLl9fcGFyc2VyKHZhbHVlLCBvcHRpb25zLCByZXNvdXJjZVR5cGUpO1xuICAgICAgcmV0dXJuIHBhcnNlciAhPT0gdW5kZWZpbmVkICYmICdkZXNlcmlhbGl6ZScgaW4gcGFyc2VyXG4gICAgICAgID8gcGFyc2VyLmRlc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKVxuICAgICAgICA6IHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gX2Qodiwgb3B0aW9ucyB8fCB0aGlzLmFwaS5vcHRpb25zKSlcbiAgICAgIDogX2QodmFsdWUsIG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucyk7XG4gIH1cblxuICBzZXJpYWxpemUodmFsdWU6IGFueSwgb3B0aW9ucz86IE9wdGlvbnNIZWxwZXIpOiBhbnkge1xuICAgIGNvbnN0IHJlc291cmNlVHlwZSA9IHRoaXMudHlwZSgpO1xuICAgIGNvbnN0IF9zID0gKHZhbHVlOiBhbnksIG9wdGlvbnM6IE9wdGlvbnNIZWxwZXIpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuX19wYXJzZXIodmFsdWUsIG9wdGlvbnMsIHJlc291cmNlVHlwZSk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ3NlcmlhbGl6ZScgaW4gcGFyc2VyXG4gICAgICAgID8gcGFyc2VyLnNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucylcbiAgICAgICAgOiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IF9zKHYsIG9wdGlvbnMgfHwgdGhpcy5hcGkub3B0aW9ucykpXG4gICAgICA6IF9zKHZhbHVlLCBvcHRpb25zIHx8IHRoaXMuYXBpLm9wdGlvbnMpO1xuICB9XG5cbiAgZW5jb2RlKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBPcHRpb25zSGVscGVyKTogYW55IHtcbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnR5cGUoKTtcbiAgICBjb25zdCBfZSA9ICh2YWx1ZTogYW55LCBvcHRpb25zOiBPcHRpb25zSGVscGVyKSA9PiB7XG4gICAgICBjb25zdCBwYXJzZXIgPSB0aGlzLl9fcGFyc2VyKHZhbHVlLCBvcHRpb25zLCByZXNvdXJjZVR5cGUpO1xuICAgICAgcmV0dXJuIHBhcnNlciAhPT0gdW5kZWZpbmVkICYmICdlbmNvZGUnIGluIHBhcnNlclxuICAgICAgICA/IHBhcnNlci5lbmNvZGUodmFsdWUsIG9wdGlvbnMpXG4gICAgICAgIDogdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBfZSh2LCBvcHRpb25zIHx8IHRoaXMuYXBpLm9wdGlvbnMpKVxuICAgICAgOiBfZSh2YWx1ZSwgb3B0aW9ucyB8fCB0aGlzLmFwaS5vcHRpb25zKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VnbWVudHM6IHRoaXMucGF0aFNlZ21lbnRzLnRvSlNPTigpLFxuICAgICAgb3B0aW9uczogdGhpcy5xdWVyeU9wdGlvbnMudG9KU09OKCksXG4gICAgfTtcbiAgfVxuXG4gIGNsb25lU2VnbWVudHMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmNsb25lKCk7XG4gIH1cblxuICAvLyNyZWdpb24gUXVlcnkgT3B0aW9uc1xuICBjbGVhclF1ZXJ5KCkge1xuICAgIHRoaXMucXVlcnlPcHRpb25zLmNsZWFyKCk7XG4gIH1cblxuICBjbG9uZVF1ZXJ5PFA+KCkge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5T3B0aW9ucy5jbG9uZTxQPigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcGF0aCBzZWdtZW50cyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQ3JlYXRlIGFuIG9iamVjdCBoYW5kbGVyIGZvciBtdXRhdGUgdGhlIHBhdGggc2VnbWVudHMgb2YgdGhlIHJlc291cmNlXG4gICAqIEBwYXJhbSBmIEZ1bmN0aW9uIGNvbnRleHQgZm9yIGhhbmRsZSB0aGUgc2VnbWVudHNcbiAgICogQHJldHVybnMgT0RhdGFBY3Rpb25SZXNvdXJjZVxuICAgKi9cbiAgc2VnbWVudChmOiAocTogT0RhdGFQYXRoU2VnbWVudHNIYW5kbGVyPFQ+KSA9PiB2b2lkKSB7XG4gICAgZihuZXcgT0RhdGFQYXRoU2VnbWVudHNIYW5kbGVyPFQ+KHRoaXMucGF0aFNlZ21lbnRzKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zIG9mIHRoZSByZXNvdXJjZVxuICAgKiBDcmVhdGUgYW4gb2JqZWN0IGhhbmRsZXIgZm9yIG11dGF0ZSB0aGUgcXVlcnkgb3B0aW9ucyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIGYgRnVuY3Rpb24gY29udGV4dCBmb3IgaGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBxdWVyeShmOiAocTogT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+KSA9PiB2b2lkKSB7XG4gICAgZihuZXcgT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+KHRoaXMucXVlcnlPcHRpb25zKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdGF0aWMgcmVzb2x2ZUtleTxUPihcbiAgICB2YWx1ZTogYW55LFxuICAgIHNjaGVtYT86IE9EYXRhU3RydWN0dXJlZFR5cGU8VD5cbiAgKTogRW50aXR5S2V5PFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoaXNRdWVyeUN1c3RvbVR5cGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIGlmIChUeXBlcy5pc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHNjaGVtYSBpbnN0YW5jZW9mIE9EYXRhU3RydWN0dXJlZFR5cGVcbiAgICAgICAgPyBzY2hlbWEucmVzb2x2ZUtleSh2YWx1ZSlcbiAgICAgICAgOiBPYmplY3RzLnJlc29sdmVLZXkodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUgYXMgRW50aXR5S2V5PFQ+IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc29sdmVLZXkodmFsdWU6IGFueSk6IEVudGl0eUtleTxUPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIE9EYXRhUmVzb3VyY2UucmVzb2x2ZUtleTxUPihcbiAgICAgIHZhbHVlLFxuICAgICAgdGhpcy5zY2hlbWEgYXMgT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPlxuICAgICk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8gQmFzZSBSZXF1ZXN0c1xuICBwcm90ZWN0ZWQgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICAgIGJvZHlRdWVyeU9wdGlvbnM/OiBRdWVyeU9wdGlvbk5hbWVzW107XG4gICAgfVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGFwaU9wdGlvbnMgPSB0aGlzLmFwaS5vcHRpb25zO1xuICAgIGxldCBwYXJhbXMgPSBvcHRpb25zLnBhcmFtcyB8fCB7fTtcbiAgICBpZiAob3B0aW9ucy53aXRoQ291bnQpIHtcbiAgICAgIHBhcmFtcyA9IEh0dHAubWVyZ2VIdHRwUGFyYW1zKHBhcmFtcywgYXBpT3B0aW9ucy5oZWxwZXIuY291bnRQYXJhbSgpKTtcbiAgICB9XG5cbiAgICBsZXQgZXRhZyA9IG9wdGlvbnMuZXRhZztcbiAgICBpZiAoZXRhZyA9PT0gdW5kZWZpbmVkICYmIFR5cGVzLmlzUGxhaW5PYmplY3Qob3B0aW9ucy5ib2R5KSkge1xuICAgICAgZXRhZyA9IGFwaU9wdGlvbnMuaGVscGVyLmV0YWcob3B0aW9ucy5ib2R5KTtcbiAgICB9XG5cbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IE9EYXRhUmVxdWVzdCh7XG4gICAgICBtZXRob2QsXG4gICAgICBldGFnLFxuICAgICAgYm9keTogb3B0aW9ucy5ib2R5LFxuICAgICAgYXBpOiB0aGlzLmFwaSxcbiAgICAgIHJlc291cmNlOiB0aGlzLFxuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgIGhlYWRlcnM6IG9wdGlvbnMuaGVhZGVycyxcbiAgICAgIHJlcG9ydFByb2dyZXNzOiBvcHRpb25zLnJlcG9ydFByb2dyZXNzLFxuICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICByZXNwb25zZVR5cGU6IG9wdGlvbnMucmVzcG9uc2VUeXBlLFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnMuZmV0Y2hQb2xpY3ksXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IG9wdGlvbnMud2l0aENyZWRlbnRpYWxzLFxuICAgICAgYm9keVF1ZXJ5T3B0aW9uczogb3B0aW9ucy5ib2R5UXVlcnlPcHRpb25zLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzJCA9IHRoaXMuYXBpLnJlcXVlc3QocmVxdWVzdCk7XG4gICAgc3dpdGNoIChvcHRpb25zLnJlc3BvbnNlVHlwZSkge1xuICAgICAgY2FzZSAnZW50aXRpZXMnOlxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMuZW50aXRpZXMoKSkpO1xuICAgICAgY2FzZSAnZW50aXR5JzpcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLmVudGl0eSgpKSk7XG4gICAgICBjYXNlICdwcm9wZXJ0eSc6XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy5wcm9wZXJ0eSgpKSk7XG4gICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy52YWx1ZSgpIGFzIFQpKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIE90aGVyIHJlc3BvbnNlVHlwZXMgKGFycmF5YnVmZmVyLCBibG9iLCBqc29uLCB0ZXh0KSByZXR1cm4gYm9keVxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMuYm9keSkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQoXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICAgIGJvZHlRdWVyeU9wdGlvbnM/OiBRdWVyeU9wdGlvbk5hbWVzW107XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnR0VUJywgb3B0aW9ucyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcG9zdChcbiAgICBib2R5OiBhbnksXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ1BPU1QnLCB7IGJvZHksIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHV0KFxuICAgIGJvZHk6IGFueSxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ1BVVCcsIHsgYm9keSwgLi4ub3B0aW9ucyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXRjaChcbiAgICBib2R5OiBhbnksXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQQVRDSCcsIHsgYm9keSwgLi4ub3B0aW9ucyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWxldGUoXG4gICAgb3B0aW9uczogT0RhdGFPcHRpb25zICYge1xuICAgICAgZXRhZz86IHN0cmluZztcbiAgICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICAgIHwgJ2FycmF5YnVmZmVyJ1xuICAgICAgICB8ICdibG9iJ1xuICAgICAgICB8ICdqc29uJ1xuICAgICAgICB8ICd0ZXh0J1xuICAgICAgICB8ICd2YWx1ZSdcbiAgICAgICAgfCAncHJvcGVydHknXG4gICAgICAgIHwgJ2VudGl0eSdcbiAgICAgICAgfCAnZW50aXRpZXMnO1xuICAgICAgd2l0aENvdW50PzogYm9vbGVhbjtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdERUxFVEUnLCBvcHRpb25zKTtcbiAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
1
  export class ODataAnnotations {
2
- constructor(helper, annotations = {}, context) {
2
+ constructor(helper, annotations = new Map(), context) {
3
3
  this.helper = helper;
4
4
  this.annotations = annotations;
5
5
  this.context = context;
@@ -16,7 +16,7 @@ export class ODataAnnotations {
16
16
  }
17
17
  export class ODataPropertyAnnotations extends ODataAnnotations {
18
18
  clone() {
19
- return new ODataPropertyAnnotations(this.helper, { ...this.annotations }, this.context);
19
+ return new ODataPropertyAnnotations(this.helper, new Map(this.annotations), this.context);
20
20
  }
21
21
  data(data) {
22
22
  return this.helper.property(data);
@@ -24,7 +24,7 @@ export class ODataPropertyAnnotations extends ODataAnnotations {
24
24
  }
25
25
  export class ODataEntityAnnotations extends ODataAnnotations {
26
26
  clone() {
27
- return new ODataEntityAnnotations(this.helper, { ...this.annotations }, this.context);
27
+ return new ODataEntityAnnotations(this.helper, new Map(this.annotations), this.context);
28
28
  }
29
29
  data(data) {
30
30
  return this.helper.entity(data);
@@ -63,7 +63,7 @@ export class ODataEntityAnnotations extends ODataAnnotations {
63
63
  return this._properties;
64
64
  }
65
65
  property(name) {
66
- return this.properties[name];
66
+ return this.properties.get(name);
67
67
  }
68
68
  get functions() {
69
69
  if (this._functions === undefined) {
@@ -77,7 +77,7 @@ export class ODataEntityAnnotations extends ODataAnnotations {
77
77
  }
78
78
  export class ODataEntitiesAnnotations extends ODataAnnotations {
79
79
  clone() {
80
- return new ODataEntitiesAnnotations(this.helper, { ...this.annotations }, this.context);
80
+ return new ODataEntitiesAnnotations(this.helper, new Map(this.annotations), this.context);
81
81
  }
82
82
  data(data) {
83
83
  return this.helper.entities(data);
@@ -116,4 +116,4 @@ export class ODataEntitiesAnnotations extends ODataAnnotations {
116
116
  return this.functions[name];
117
117
  }
118
118
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9hbm5vdGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQWdCLGdCQUFnQjtJQUNwQyxZQUNTLE1BQTBCLEVBQ3ZCLGNBQXdDLEVBQUUsRUFDMUMsT0FBc0I7UUFGekIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQStCO1FBQzFDLFlBQU8sR0FBUCxPQUFPLENBQWU7SUFDL0IsQ0FBQztJQUVKLFVBQVUsQ0FBSSxJQUE2QixFQUFFLFFBQTJCO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBTSxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztJQUNsRSxDQUFDO0NBS0Y7QUFFRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZ0JBQWdCO0lBQzVELEtBQUs7UUFDSCxPQUFPLElBQUksd0JBQXdCLENBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQ1gsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxJQUE2QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQUVELE1B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QUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUdELElBQUksU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPRGF0YUNvbnRleHQsIE9EYXRhVmVyc2lvbkhlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcic7XG5cbmltcG9ydCB7IE9EYXRhTWV0YWRhdGFUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgT0RhdGFBbm5vdGF0aW9ucyB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBoZWxwZXI6IE9EYXRhVmVyc2lvbkhlbHBlcixcbiAgICBwcm90ZWN0ZWQgYW5ub3RhdGlvbnM6IHsgW2Fubm90OiBzdHJpbmddOiBhbnkgfSA9IHt9LFxuICAgIHByb3RlY3RlZCBjb250ZXh0PzogT0RhdGFDb250ZXh0XG4gICkge31cblxuICBhdHRyaWJ1dGVzPFQ+KGRhdGE6IHsgW25hbWU6IHN0cmluZ106IGFueSB9LCBtZXRhZGF0YTogT0RhdGFNZXRhZGF0YVR5cGUpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuYXR0cmlidXRlcyhkYXRhLCBtZXRhZGF0YSkgYXMgVDtcbiAgfVxuXG4gIGdldCBlbnRpdHlTZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dD8uZW50aXR5U2V0O1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLnR5cGUodGhpcy5hbm5vdGF0aW9ucykgfHwgdGhpcy5jb250ZXh0Py50eXBlO1xuICB9XG5cbiAgLy8gTWV0aG9kXG4gIGFic3RyYWN0IGNsb25lKCk6IE9EYXRhQW5ub3RhdGlvbnM7XG4gIGFic3RyYWN0IGRhdGEoZGF0YTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0pOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhUHJvcGVydHlBbm5vdGF0aW9ucyBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnMge1xuICBjbG9uZSgpOiBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMge1xuICAgIHJldHVybiBuZXcgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zKFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICB7IC4uLnRoaXMuYW5ub3RhdGlvbnMgfSxcbiAgICAgIHRoaXMuY29udGV4dFxuICAgICk7XG4gIH1cblxuICBkYXRhKGRhdGE6IHsgW25hbWU6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLnByb3BlcnR5KGRhdGEpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUVudGl0eUFubm90YXRpb25zIGV4dGVuZHMgT0RhdGFBbm5vdGF0aW9ucyB7XG4gIGNsb25lKCk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnMge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9ucyhcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgeyAuLi50aGlzLmFubm90YXRpb25zIH0sXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lbnRpdHkoZGF0YSk7XG4gIH1cblxuICBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmlkKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGV0YWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmV0YWcodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFFdGFnKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYUV0YWcodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWV0YWRhdGFFdGFnKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZXRhZGF0YUV0YWcodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgcmVhZExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLnJlYWRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGVkaXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lZGl0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYVJlYWRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYVJlYWRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhRWRpdExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhRWRpdExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFDb250ZW50VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFDb250ZW50VHlwZSh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Byb3BlcnRpZXM/OiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbiAgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgaWYgKHRoaXMuX3Byb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcHJvcGVydGllcyA9IHRoaXMuaGVscGVyLnByb3BlcnRpZXModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzO1xuICB9XG5cbiAgcHJvcGVydHkobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcGVydGllc1tuYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuICBnZXQgZnVuY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLl9mdW5jdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZnVuY3Rpb25zID0gdGhpcy5oZWxwZXIuZnVuY3Rpb25zKHRoaXMuYW5ub3RhdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZnVuY3Rpb25zO1xuICB9XG5cbiAgZnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zW25hbWVdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnMgZXh0ZW5kcyBPRGF0YUFubm90YXRpb25zIHtcbiAgY2xvbmUoKTogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zIHtcbiAgICByZXR1cm4gbmV3IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucyhcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgeyAuLi50aGlzLmFubm90YXRpb25zIH0sXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lbnRpdGllcyhkYXRhKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgY291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmNvdW50KHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG5leHRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5uZXh0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBkZWx0YUxpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmRlbHRhTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCB0b3AoKSB7XG4gICAgbGV0IG1hdGNoID0gKHRoaXMubmV4dExpbmsgfHwgJycpLm1hdGNoKC9bJj9dezF9XFwkdG9wPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcCgpIHtcbiAgICBsZXQgbWF0Y2ggPSAodGhpcy5uZXh0TGluayB8fCAnJykubWF0Y2goL1smP117MX1cXCRza2lwPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcHRva2VuKCkge1xuICAgIGxldCBtYXRjaCA9ICh0aGlzLm5leHRMaW5rIHx8ICcnKS5tYXRjaCgvWyY/XXsxfVxcJHNraXB0b2tlbj0oW1xcZFxcd1xccyddKykvKTtcbiAgICByZXR1cm4gbWF0Y2ggIT09IG51bGwgPyBtYXRjaFsxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuICBnZXQgZnVuY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLl9mdW5jdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZnVuY3Rpb25zID0gdGhpcy5oZWxwZXIuZnVuY3Rpb25zKHRoaXMuYW5ub3RhdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZnVuY3Rpb25zO1xuICB9XG4gIGZ1bmN0aW9uKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc1tuYW1lXTtcbiAgfVxufVxuIl19
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9hbm5vdGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQWdCLGdCQUFnQjtJQUNwQyxZQUNTLE1BQTBCLEVBQ3ZCLGNBQWdDLElBQUksR0FBRyxFQUFlLEVBQ3RELE9BQXNCO1FBRnpCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUEyQztRQUN0RCxZQUFPLEdBQVAsT0FBTyxDQUFlO0lBQy9CLENBQUM7SUFFSixVQUFVLENBQUksSUFBNEIsRUFBRSxRQUEyQjtRQUNyRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLENBQU0sQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDbEUsQ0FBQztDQUtGO0FBRUQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdCQUFnQjtJQUM1RCxLQUFLO1FBQ0gsT0FBTyxJQUFJLHdCQUF3QixDQUNqQyxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxJQUE0QjtRQUMvQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENB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QUssR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDM0UsT0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvQyxDQUFDO0lBR0QsSUFBSSxTQUFTO1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsUUFBUSxDQUFDLElBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9EYXRhQ29udGV4dCwgT0RhdGFWZXJzaW9uSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVyJztcblxuaW1wb3J0IHsgT0RhdGFNZXRhZGF0YVR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPRGF0YUFubm90YXRpb25zIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGhlbHBlcjogT0RhdGFWZXJzaW9uSGVscGVyLFxuICAgIHByb3RlY3RlZCBhbm5vdGF0aW9uczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCksIFxuICAgIHByb3RlY3RlZCBjb250ZXh0PzogT0RhdGFDb250ZXh0XG4gICkge31cblxuICBhdHRyaWJ1dGVzPFQ+KGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIG1ldGFkYXRhOiBPRGF0YU1ldGFkYXRhVHlwZSk6IFQge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5hdHRyaWJ1dGVzKGRhdGEsIG1ldGFkYXRhKSBhcyBUO1xuICB9XG5cbiAgZ2V0IGVudGl0eVNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0Py5lbnRpdHlTZXQ7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIudHlwZSh0aGlzLmFubm90YXRpb25zKSB8fCB0aGlzLmNvbnRleHQ/LnR5cGU7XG4gIH1cblxuICAvLyBNZXRob2RcbiAgYWJzdHJhY3QgY2xvbmUoKTogT0RhdGFBbm5vdGF0aW9ucztcbiAgYWJzdHJhY3QgZGF0YShkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhUHJvcGVydHlBbm5vdGF0aW9ucyBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnMge1xuICBjbG9uZSgpOiBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMge1xuICAgIHJldHVybiBuZXcgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zKFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwKHRoaXMuYW5ub3RhdGlvbnMpLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgfVxuXG4gIGRhdGEoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5wcm9wZXJ0eShkYXRhKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFFbnRpdHlBbm5vdGF0aW9ucyBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnMge1xuICBjbG9uZSgpOiBPRGF0YUVudGl0eUFubm90YXRpb25zIHtcbiAgICByZXR1cm4gbmV3IE9EYXRhRW50aXR5QW5ub3RhdGlvbnMoXG4gICAgICB0aGlzLmhlbHBlcixcbiAgICAgIG5ldyBNYXAodGhpcy5hbm5vdGF0aW9ucyksXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmVudGl0eShkYXRhKTtcbiAgfVxuXG4gIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuaWQodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgZXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUV0YWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhRXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZXRhZGF0YUV0YWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1ldGFkYXRhRXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgZWRpdExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmVkaXRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhUmVhZExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhUmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFFZGl0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFFZGl0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUNvbnRlbnRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYUNvbnRlbnRUeXBlKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJvcGVydGllcz86IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIGFueT4+O1xuICBnZXQgcHJvcGVydGllcygpIHtcbiAgICBpZiAodGhpcy5fcHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9wcm9wZXJ0aWVzID0gdGhpcy5oZWxwZXIucHJvcGVydGllcyh0aGlzLmFubm90YXRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXM7XG4gIH1cblxuICBwcm9wZXJ0eShuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wZXJ0aWVzLmdldChuYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIGdldCBmdW5jdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuX2Z1bmN0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbnMgPSB0aGlzLmhlbHBlci5mdW5jdGlvbnModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnM7XG4gIH1cblxuICBmdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbbmFtZV07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucyBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnMge1xuICBjbG9uZSgpOiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnMge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zKFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwKHRoaXMuYW5ub3RhdGlvbnMpLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgfVxuXG4gIGRhdGEoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lbnRpdGllcyhkYXRhKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgY291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmNvdW50KHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG5leHRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5uZXh0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBkZWx0YUxpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmRlbHRhTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCB0b3AoKSB7XG4gICAgbGV0IG1hdGNoID0gKHRoaXMubmV4dExpbmsgfHwgJycpLm1hdGNoKC9bJj9dezF9XFwkdG9wPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcCgpIHtcbiAgICBsZXQgbWF0Y2ggPSAodGhpcy5uZXh0TGluayB8fCAnJykubWF0Y2goL1smP117MX1cXCRza2lwPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcHRva2VuKCkge1xuICAgIGxldCBtYXRjaCA9ICh0aGlzLm5leHRMaW5rIHx8ICcnKS5tYXRjaCgvWyY/XXsxfVxcJHNraXB0b2tlbj0oW1xcZFxcd1xccyddKykvKTtcbiAgICByZXR1cm4gbWF0Y2ggIT09IG51bGwgPyBtYXRjaFsxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIGdldCBmdW5jdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuX2Z1bmN0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbnMgPSB0aGlzLmhlbHBlci5mdW5jdGlvbnModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnM7XG4gIH1cbiAgZnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zW25hbWVdO1xuICB9XG59XG4iXX0=
@@ -3,7 +3,6 @@ import { ODataHelper } from '../../helper';
3
3
  export class ODataResponseOptions {
4
4
  constructor(config) {
5
5
  this.version = config.version || DEFAULT_VERSION;
6
- this.stringAsEnum = config.stringAsEnum;
7
6
  }
8
7
  get helper() {
9
8
  return ODataHelper[this.version];
@@ -49,4 +48,4 @@ export class ODataResponseOptions {
49
48
  });
50
49
  }
51
50
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcmVzcG9uc2VzL29wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUNMLGVBQWUsRUFDZixPQUFPLEVBQ1AsV0FBVyxFQUNYLFdBQVcsRUFDWCxXQUFXLEdBQ1osTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNDLE1BQU0sT0FBTyxvQkFBb0I7SUFhL0IsWUFBWSxNQUFlO1FBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUM7UUFDakQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQjtRQUMxQixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQixRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDaEIsS0FBSyxnQkFBZ0I7b0JBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBc0IsQ0FBQztvQkFDdkMsTUFBTTtnQkFDUixLQUFLLGlCQUFpQjtvQkFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDO29CQUM3QixNQUFNO2dCQUNSLEtBQUssbUJBQW1CO29CQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQztvQkFDckMsTUFBTTthQUNUO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWU7UUFDeEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQXFCLENBQUM7SUFDekMsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQjtRQUMxQiwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxZQUFvQjtRQUMzQixZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQzVDLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDakMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO29CQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2FBQ2pEO1lBQ0QsSUFDRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDdkU7Z0JBQ0EsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUE4QixDQUFDO2FBQ3BEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDYWNoZUNhY2hlYWJpbGl0eSxcbiAgT0RhdGFNZXRhZGF0YVR5cGUsXG4gIE9EYXRhVmVyc2lvbixcbiAgT3B0aW9ucyxcbiAgUmVzcG9uc2VPcHRpb25zLFxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge1xuICBERUZBVUxUX1ZFUlNJT04sXG4gIE1BWF9BR0UsXG4gIFZFUlNJT05fMl8wLFxuICBWRVJTSU9OXzNfMCxcbiAgVkVSU0lPTl80XzAsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7IE9EYXRhSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVyJztcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVzcG9uc2VPcHRpb25zIGltcGxlbWVudHMgUmVzcG9uc2VPcHRpb25zIHtcbiAgdmVyc2lvbjogT0RhdGFWZXJzaW9uO1xuICBzdHJlYW1pbmc/OiBib29sZWFuO1xuICAvLyBPRGF0YVxuICBtZXRhZGF0YT86IE9EYXRhTWV0YWRhdGFUeXBlO1xuICBzdHJpbmdBc0VudW0/OiBib29sZWFuO1xuICBpZWVlNzU0Q29tcGF0aWJsZT86IGJvb2xlYW47XG4gIC8vIExvY2F0aW9uXG4gIGxvY2F0aW9uPzogc3RyaW5nO1xuICAvLyBDYWNoZVxuICBjYWNoZWFiaWxpdHk/OiAncHVibGljJyB8ICdwcml2YXRlJyB8ICduby1jYWNoZScgfCAnbm8tc3RvcmUnO1xuICBtYXhBZ2U/OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBPcHRpb25zKSB7XG4gICAgdGhpcy52ZXJzaW9uID0gY29uZmlnLnZlcnNpb24gfHwgREVGQVVMVF9WRVJTSU9OO1xuICAgIHRoaXMuc3RyaW5nQXNFbnVtID0gY29uZmlnLnN0cmluZ0FzRW51bTtcbiAgfVxuXG4gIGdldCBoZWxwZXIoKSB7XG4gICAgcmV0dXJuIE9EYXRhSGVscGVyW3RoaXMudmVyc2lvbl07XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICByZXR1cm4gbmV3IE9EYXRhUmVzcG9uc2VPcHRpb25zKHRoaXMpO1xuICB9XG5cbiAgc2V0RmVhdHVyZXMoZmVhdHVyZXM6IHN0cmluZykge1xuICAgIGZlYXR1cmVzLnNwbGl0KCc7JykuZm9yRWFjaCgobykgPT4ge1xuICAgICAgbGV0IFtrLCB2XSA9IG8uc3BsaXQoJz0nKTtcbiAgICAgIHN3aXRjaCAoay50cmltKCkpIHtcbiAgICAgICAgY2FzZSAnb2RhdGEubWV0YWRhdGEnOlxuICAgICAgICAgIHRoaXMubWV0YWRhdGEgPSB2IGFzIE9EYXRhTWV0YWRhdGFUeXBlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdvZGF0YS5zdHJlYW1pbmcnOlxuICAgICAgICAgIHRoaXMuc3RyZWFtaW5nID0gdiA9PSAndHJ1ZSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0lFRUU3NTRDb21wYXRpYmxlJzpcbiAgICAgICAgICB0aGlzLmllZWU3NTRDb21wYXRpYmxlID0gdiA9PSAndHJ1ZSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzZXRWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgIGNvbnN0IHZhbHVlID0gdmVyc2lvbi5yZXBsYWNlKC9cXDsvZywgJycpLnRyaW0oKTtcbiAgICBpZiAoW1ZFUlNJT05fMl8wLCBWRVJTSU9OXzNfMCwgVkVSU0lPTl80XzBdLmluZGV4T2YodmFsdWUpICE9PSAtMSlcbiAgICAgIHRoaXMudmVyc2lvbiA9IHZhbHVlIGFzIE9EYXRhVmVyc2lvbjtcbiAgfVxuXG4gIHNldExvY2F0aW9uKGxvY2F0aW9uOiBzdHJpbmcpIHtcbiAgICAvLyBUT0RPOiByZXNvbHZlIGxvY2F0aW9uP1xuICAgIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgfVxuXG4gIHNldENhY2hlKGNhY2hlQ29udHJvbDogc3RyaW5nKSB7XG4gICAgY2FjaGVDb250cm9sLnNwbGl0KCcsJykuZm9yRWFjaCgoZGlyZWN0aXZlKSA9PiB7XG4gICAgICBpZiAoZGlyZWN0aXZlLnN0YXJ0c1dpdGgoTUFYX0FHRSkpIHtcbiAgICAgICAgbGV0IG1heEFnZSA9IE51bWJlcihkaXJlY3RpdmUuc3BsaXQoJz0nKVsxXSk7XG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG1heEFnZSkpIHRoaXMubWF4QWdlID0gbWF4QWdlO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBbJ3B1YmxpYycsICdwcml2YXRlJywgJ25vLWNhY2hlJywgJ25vLXN0b3JlJ10uaW5kZXhPZihkaXJlY3RpdmUpICE9PSAtMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY2FjaGVhYmlsaXR5ID0gZGlyZWN0aXZlIGFzIENhY2hlQ2FjaGVhYmlsaXR5O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcmVzcG9uc2VzL29wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUNMLGVBQWUsRUFDZixPQUFPLEVBQ1AsV0FBVyxFQUNYLFdBQVcsRUFDWCxXQUFXLEdBQ1osTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNDLE1BQU0sT0FBTyxvQkFBb0I7SUFZL0IsWUFBWSxNQUFxQjtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDO0lBQ25ELENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQjtRQUMxQixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQixRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDaEIsS0FBSyxnQkFBZ0I7b0JBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBc0IsQ0FBQztvQkFDdkMsTUFBTTtnQkFDUixLQUFLLGlCQUFpQjtvQkFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDO29CQUM3QixNQUFNO2dCQUNSLEtBQUssbUJBQW1CO29CQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQztvQkFDckMsTUFBTTthQUNUO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWU7UUFDeEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQXFCLENBQUM7SUFDekMsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQjtRQUMxQiwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVEsQ0FBQyxZQUFvQjtRQUMzQixZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQzVDLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDakMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO29CQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2FBQ2pEO1lBQ0QsSUFDRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDdkU7Z0JBQ0EsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUE4QixDQUFDO2FBQ3BEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDYWNoZUNhY2hlYWJpbGl0eSxcbiAgT0RhdGFNZXRhZGF0YVR5cGUsXG4gIE9EYXRhVmVyc2lvbixcbiAgT3B0aW9uc0hlbHBlcixcbiAgUmVzcG9uc2VPcHRpb25zLFxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge1xuICBERUZBVUxUX1ZFUlNJT04sXG4gIE1BWF9BR0UsXG4gIFZFUlNJT05fMl8wLFxuICBWRVJTSU9OXzNfMCxcbiAgVkVSU0lPTl80XzAsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7IE9EYXRhSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVyJztcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVzcG9uc2VPcHRpb25zIGltcGxlbWVudHMgUmVzcG9uc2VPcHRpb25zIHtcbiAgdmVyc2lvbjogT0RhdGFWZXJzaW9uO1xuICBzdHJlYW1pbmc/OiBib29sZWFuO1xuICAvLyBPRGF0YVxuICBtZXRhZGF0YT86IE9EYXRhTWV0YWRhdGFUeXBlO1xuICBpZWVlNzU0Q29tcGF0aWJsZT86IGJvb2xlYW47XG4gIC8vIExvY2F0aW9uXG4gIGxvY2F0aW9uPzogc3RyaW5nO1xuICAvLyBDYWNoZVxuICBjYWNoZWFiaWxpdHk/OiAncHVibGljJyB8ICdwcml2YXRlJyB8ICduby1jYWNoZScgfCAnbm8tc3RvcmUnO1xuICBtYXhBZ2U/OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBPcHRpb25zSGVscGVyKSB7XG4gICAgdGhpcy52ZXJzaW9uID0gY29uZmlnLnZlcnNpb24gfHwgREVGQVVMVF9WRVJTSU9OO1xuICB9XG5cbiAgZ2V0IGhlbHBlcigpIHtcbiAgICByZXR1cm4gT0RhdGFIZWxwZXJbdGhpcy52ZXJzaW9uXTtcbiAgfVxuXG4gIGNsb25lKCkge1xuICAgIHJldHVybiBuZXcgT0RhdGFSZXNwb25zZU9wdGlvbnModGhpcyk7XG4gIH1cblxuICBzZXRGZWF0dXJlcyhmZWF0dXJlczogc3RyaW5nKSB7XG4gICAgZmVhdHVyZXMuc3BsaXQoJzsnKS5mb3JFYWNoKChvKSA9PiB7XG4gICAgICBsZXQgW2ssIHZdID0gby5zcGxpdCgnPScpO1xuICAgICAgc3dpdGNoIChrLnRyaW0oKSkge1xuICAgICAgICBjYXNlICdvZGF0YS5tZXRhZGF0YSc6XG4gICAgICAgICAgdGhpcy5tZXRhZGF0YSA9IHYgYXMgT0RhdGFNZXRhZGF0YVR5cGU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ29kYXRhLnN0cmVhbWluZyc6XG4gICAgICAgICAgdGhpcy5zdHJlYW1pbmcgPSB2ID09ICd0cnVlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnSUVFRTc1NENvbXBhdGlibGUnOlxuICAgICAgICAgIHRoaXMuaWVlZTc1NENvbXBhdGlibGUgPSB2ID09ICd0cnVlJztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNldFZlcnNpb24odmVyc2lvbjogc3RyaW5nKSB7XG4gICAgY29uc3QgdmFsdWUgPSB2ZXJzaW9uLnJlcGxhY2UoL1xcOy9nLCAnJykudHJpbSgpO1xuICAgIGlmIChbVkVSU0lPTl8yXzAsIFZFUlNJT05fM18wLCBWRVJTSU9OXzRfMF0uaW5kZXhPZih2YWx1ZSkgIT09IC0xKVxuICAgICAgdGhpcy52ZXJzaW9uID0gdmFsdWUgYXMgT0RhdGFWZXJzaW9uO1xuICB9XG5cbiAgc2V0TG9jYXRpb24obG9jYXRpb246IHN0cmluZykge1xuICAgIC8vIFRPRE86IHJlc29sdmUgbG9jYXRpb24/XG4gICAgdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9uO1xuICB9XG5cbiAgc2V0Q2FjaGUoY2FjaGVDb250cm9sOiBzdHJpbmcpIHtcbiAgICBjYWNoZUNvbnRyb2wuc3BsaXQoJywnKS5mb3JFYWNoKChkaXJlY3RpdmUpID0+IHtcbiAgICAgIGlmIChkaXJlY3RpdmUuc3RhcnRzV2l0aChNQVhfQUdFKSkge1xuICAgICAgICBsZXQgbWF4QWdlID0gTnVtYmVyKGRpcmVjdGl2ZS5zcGxpdCgnPScpWzFdKTtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obWF4QWdlKSkgdGhpcy5tYXhBZ2UgPSBtYXhBZ2U7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIFsncHVibGljJywgJ3ByaXZhdGUnLCAnbm8tY2FjaGUnLCAnbm8tc3RvcmUnXS5pbmRleE9mKGRpcmVjdGl2ZSkgIT09IC0xXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5jYWNoZWFiaWxpdHkgPSBkaXJlY3RpdmUgYXMgQ2FjaGVDYWNoZWFiaWxpdHk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==