@acorex/components 3.0.46 → 3.0.51

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 (53) hide show
  1. package/acorex-components.metadata.json +1 -1
  2. package/bundles/acorex-components.umd.js +171 -80
  3. package/bundles/acorex-components.umd.js.map +1 -1
  4. package/bundles/acorex-components.umd.min.js +1 -1
  5. package/bundles/acorex-components.umd.min.js.map +1 -1
  6. package/esm2015/lib/calendar/calendar-box/calendar-box.component.js +6 -6
  7. package/esm2015/lib/date-picker/date-picker.component.js +3 -2
  8. package/esm2015/lib/dropdown/dropdown.component.js +3 -2
  9. package/esm2015/lib/menu/menu2.component.js +1 -1
  10. package/esm2015/lib/property-editor/editors/color-editor/color.editor.js +2 -2
  11. package/esm2015/lib/property-editor/editors/column-editor/column.editor.js +2 -2
  12. package/esm2015/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.js +2 -2
  13. package/esm2015/lib/property-editor/editors/date-editor/date.editor.js +2 -2
  14. package/esm2015/lib/property-editor/editors/number-editor/number.editor.js +2 -2
  15. package/esm2015/lib/property-editor/editors/range-editor/range.editor.js +2 -2
  16. package/esm2015/lib/property-editor/editors/selectbox-editor/selectbox.editor.js +22 -12
  17. package/esm2015/lib/property-editor/editors/switch-editor/number.editor.js +2 -2
  18. package/esm2015/lib/property-editor/editors/text-editor/text.editor.js +2 -2
  19. package/esm2015/lib/property-editor/editors/time-editor/time.editor.js +2 -2
  20. package/esm2015/lib/property-editor/property-editor-renderer.directive.js +83 -37
  21. package/esm2015/lib/property-editor/property-editor.class.js +18 -4
  22. package/esm2015/lib/query-builder/query-builder-rule.component.js +5 -1
  23. package/esm2015/lib/query-builder/query-builder.service.js +4 -4
  24. package/esm2015/lib/selection-list/selection-list.component.js +6 -7
  25. package/esm2015/lib/tab-strip/tab-strip.component.js +11 -9
  26. package/esm5/lib/calendar/calendar-box/calendar-box.component.js +6 -6
  27. package/esm5/lib/date-picker/date-picker.component.js +3 -2
  28. package/esm5/lib/dropdown/dropdown.component.js +3 -2
  29. package/esm5/lib/menu/menu2.component.js +1 -1
  30. package/esm5/lib/property-editor/editors/color-editor/color.editor.js +2 -2
  31. package/esm5/lib/property-editor/editors/column-editor/column.editor.js +2 -2
  32. package/esm5/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.js +2 -2
  33. package/esm5/lib/property-editor/editors/date-editor/date.editor.js +2 -2
  34. package/esm5/lib/property-editor/editors/number-editor/number.editor.js +2 -2
  35. package/esm5/lib/property-editor/editors/range-editor/range.editor.js +2 -2
  36. package/esm5/lib/property-editor/editors/selectbox-editor/selectbox.editor.js +26 -12
  37. package/esm5/lib/property-editor/editors/switch-editor/number.editor.js +2 -2
  38. package/esm5/lib/property-editor/editors/text-editor/text.editor.js +2 -2
  39. package/esm5/lib/property-editor/editors/time-editor/time.editor.js +2 -2
  40. package/esm5/lib/property-editor/property-editor-renderer.directive.js +89 -39
  41. package/esm5/lib/property-editor/property-editor.class.js +24 -4
  42. package/esm5/lib/query-builder/query-builder-rule.component.js +5 -1
  43. package/esm5/lib/query-builder/query-builder.service.js +4 -4
  44. package/esm5/lib/selection-list/selection-list.component.js +3 -4
  45. package/esm5/lib/tab-strip/tab-strip.component.js +11 -9
  46. package/fesm2015/acorex-components.js +159 -82
  47. package/fesm2015/acorex-components.js.map +1 -1
  48. package/fesm5/acorex-components.js +172 -81
  49. package/fesm5/acorex-components.js.map +1 -1
  50. package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +7 -4
  51. package/lib/property-editor/property-editor-renderer.directive.d.ts +5 -3
  52. package/lib/property-editor/property-editor.class.d.ts +4 -2
  53. package/package.json +1 -1
@@ -1,13 +1,14 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { Directive, ViewContainerRef, ComponentFactoryResolver, Input, Output, EventEmitter } from '@angular/core';
3
- import { AXObjectUtil, AXRenderService, getPropByPath } from '@acorex/core';
2
+ import { Directive, ViewContainerRef, ComponentFactoryResolver, Input, Output, EventEmitter, KeyValueDiffer, KeyValueDiffers } from '@angular/core';
3
+ import { AXEventService, AXObjectUtil, AXRenderService, getPropByPath, setPropByPath } from '@acorex/core';
4
4
  import { AXValidationFormComponent } from '../validation/validation-form.component';
5
5
  var AXPropertyEditorRendererDirective = /** @class */ (function () {
6
- function AXPropertyEditorRendererDirective(target, componentFactoryResolver, renderService) {
6
+ function AXPropertyEditorRendererDirective(target, componentFactoryResolver, renderService, eventService) {
7
7
  this.target = target;
8
8
  this.componentFactoryResolver = componentFactoryResolver;
9
9
  this.renderService = renderService;
10
- this.readonly = false;
10
+ this.eventService = eventService;
11
+ this._context = {};
11
12
  this.onValueChange = new EventEmitter();
12
13
  }
13
14
  Object.defineProperty(AXPropertyEditorRendererDirective.prototype, "context", {
@@ -16,9 +17,6 @@ var AXPropertyEditorRendererDirective = /** @class */ (function () {
16
17
  },
17
18
  set: function (v) {
18
19
  this._context = v;
19
- if (v && this.instance) {
20
- this.assignProps();
21
- }
22
20
  },
23
21
  enumerable: true,
24
22
  configurable: true
@@ -37,60 +35,110 @@ var AXPropertyEditorRendererDirective = /** @class */ (function () {
37
35
  var cmpRef = _this.target.createComponent(factory);
38
36
  _this.instance = cmpRef.instance;
39
37
  _this.subscription = _this.instance.valueChange.subscribe(function (value) {
40
- if (_this.instance.initiated === true) {
41
- _this.property.value = value;
42
- _this.onValueChange.emit(_this.property);
38
+ var _a, _b;
39
+ _this.property.value = value;
40
+ _this.onValueChange.emit(_this.property);
41
+ if ((_b = (_a = _this.property) === null || _a === void 0 ? void 0 : _a.property) === null || _b === void 0 ? void 0 : _b.name) {
42
+ setTimeout(function () {
43
+ _this.eventService.broadcast("props-" + _this.groupId + "-" + _this.property.property.name, _this.property);
44
+ }, 0);
43
45
  }
44
46
  });
45
- //
47
+ _this.watchChanges();
48
+ _this.assignProps();
49
+ _this.instance.value = _this.property.value;
50
+ // this.instance.onRenderCompleted.subscribe(() => {
51
+ // });
46
52
  if (_this.validationForm) {
47
53
  _this.instance.validatableComponentRegistered.subscribe(function (v) {
48
54
  _this.validationForm.addWidget(v);
49
55
  });
50
56
  }
51
- //
52
- //setTimeout(() => {
53
- _this.instance.readonly = _this.readonly;
54
- _this.assignProps();
55
- _this.instance.value = _this.property.value;
56
- _this.instance.initiat();
57
- cmpRef.changeDetectorRef.markForCheck();
58
- //});
59
57
  }
60
58
  });
61
59
  };
62
- AXPropertyEditorRendererDirective.prototype.assignProps = function () {
60
+ AXPropertyEditorRendererDirective.prototype.watchChanges = function () {
63
61
  var _this = this;
62
+ var _a, _b;
63
+ var varsRegx = /((\$\{[a-zA-Z_0-9]+\})+)/gm;
64
+ var varNameRegx = /[a-zA-Z_0-9]+/gm;
64
65
  var options = this.property.property.editorOptions;
65
66
  if (!options) {
66
67
  return;
67
68
  }
68
69
  var _loop_1 = function (p) {
70
+ if (options.hasOwnProperty(p)) {
71
+ var opt_1 = options[p];
72
+ var vars_1 = typeof opt_1 === 'string' ? (_a = opt_1) === null || _a === void 0 ? void 0 : _a.match(varsRegx) : [];
73
+ // bind the props
74
+ if ((_b = vars_1) === null || _b === void 0 ? void 0 : _b.length) {
75
+ vars_1.forEach(function (v) {
76
+ var _a;
77
+ var path = ((_a = v.match(varNameRegx)) === null || _a === void 0 ? void 0 : _a.length) ? v.match(varNameRegx)[0] : null;
78
+ if (path) {
79
+ _this.eventService.on("props-" + _this.groupId + "-" + path, function (e) {
80
+ var execCode = opt_1.slice();
81
+ var params = {};
82
+ vars_1.forEach(function (vv) {
83
+ var _a;
84
+ var p2 = ((_a = vv.match(varNameRegx)) === null || _a === void 0 ? void 0 : _a.length) ? vv.match(varNameRegx)[0] : null;
85
+ params[p2] = AXObjectUtil.deepCopy(_this.context[p2]) || null;
86
+ execCode = execCode.replace(vv, "__params__." + p2);
87
+ });
88
+ var func = new Function('__params__', "try { return " + execCode + "} catch(e){ console.log(e); return null; }");
89
+ var val = func(params);
90
+ var keys = p.split('.');
91
+ var prop = Object.assign({}, _this.instance[keys[0]]);
92
+ if (keys.length > 1) {
93
+ _this.instance[keys[0]] = setPropByPath(prop, p, val);
94
+ }
95
+ else {
96
+ setPropByPath(_this.instance, p, val);
97
+ }
98
+ });
99
+ }
100
+ });
101
+ }
102
+ // else {
103
+ // this.assignProps();
104
+ // }
105
+ }
106
+ };
107
+ for (var p in options) {
108
+ _loop_1(p);
109
+ }
110
+ };
111
+ AXPropertyEditorRendererDirective.prototype.assignProps = function () {
112
+ var _this = this;
113
+ var _a, _b;
114
+ var options = this.property.property.editorOptions;
115
+ if (!options) {
116
+ return;
117
+ }
118
+ var varsRegx = /((\$\{[a-zA-Z_0-9]+\})+)/gm;
119
+ var _loop_2 = function (p) {
69
120
  if (options.hasOwnProperty(p)) {
70
121
  var opt = options[p];
71
- if (typeof opt === 'string' && opt.startsWith('$$')) {
72
- var key = opt.substring(2);
73
- var val = getPropByPath(this_1.context, key);
74
- if (val) {
75
- this_1.instance[p] = typeof val === 'function' ? val({ data: this_1.context, host: this_1.host }, this_1.property) : val;
76
- }
122
+ var vars = typeof opt === 'string' ? (_a = opt) === null || _a === void 0 ? void 0 : _a.match(varsRegx) : [];
123
+ if ((_b = vars) === null || _b === void 0 ? void 0 : _b.length) {
124
+ return "continue";
77
125
  }
78
126
  else {
79
- var res = typeof opt === 'function' ? opt({ data: this_1.context, host: this_1.host }, this_1.property) : opt;
80
- if (res instanceof Promise) {
81
- res.then(function (v) {
82
- _this.instance[p] = v;
127
+ var val_1 = typeof opt === 'function' ? opt({ data: this_1.context, host: this_1.host }, this_1.property) : opt;
128
+ if (val_1 instanceof Promise) {
129
+ val_1.then(function (v) {
130
+ setPropByPath(_this.instance, p, val_1);
83
131
  });
84
132
  }
85
133
  else {
86
- this_1.instance[p] = res;
134
+ setPropByPath(this_1.instance, p, val_1);
87
135
  }
88
136
  }
89
137
  }
90
138
  };
91
139
  var this_1 = this;
92
140
  for (var p in options) {
93
- _loop_1(p);
141
+ _loop_2(p);
94
142
  }
95
143
  };
96
144
  AXPropertyEditorRendererDirective.prototype.ngOnDestroy = function () {
@@ -101,16 +149,13 @@ var AXPropertyEditorRendererDirective = /** @class */ (function () {
101
149
  AXPropertyEditorRendererDirective.ctorParameters = function () { return [
102
150
  { type: ViewContainerRef },
103
151
  { type: ComponentFactoryResolver },
104
- { type: AXRenderService }
152
+ { type: AXRenderService },
153
+ { type: AXEventService }
105
154
  ]; };
106
155
  __decorate([
107
156
  Input(),
108
157
  __metadata("design:type", Object)
109
158
  ], AXPropertyEditorRendererDirective.prototype, "property", void 0);
110
- __decorate([
111
- Input(),
112
- __metadata("design:type", Boolean)
113
- ], AXPropertyEditorRendererDirective.prototype, "readonly", void 0);
114
159
  __decorate([
115
160
  Input(),
116
161
  __metadata("design:type", AXValidationFormComponent)
@@ -124,6 +169,10 @@ var AXPropertyEditorRendererDirective = /** @class */ (function () {
124
169
  Input(),
125
170
  __metadata("design:type", Object)
126
171
  ], AXPropertyEditorRendererDirective.prototype, "host", void 0);
172
+ __decorate([
173
+ Input(),
174
+ __metadata("design:type", Object)
175
+ ], AXPropertyEditorRendererDirective.prototype, "groupId", void 0);
127
176
  __decorate([
128
177
  Output(),
129
178
  __metadata("design:type", EventEmitter)
@@ -134,9 +183,10 @@ var AXPropertyEditorRendererDirective = /** @class */ (function () {
134
183
  }),
135
184
  __metadata("design:paramtypes", [ViewContainerRef,
136
185
  ComponentFactoryResolver,
137
- AXRenderService])
186
+ AXRenderService,
187
+ AXEventService])
138
188
  ], AXPropertyEditorRendererDirective);
139
189
  return AXPropertyEditorRendererDirective;
140
190
  }());
141
191
  export { AXPropertyEditorRendererDirective };
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZWRpdG9yLXJlbmRlcmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9wcm9wZXJ0eS1lZGl0b3IvcHJvcGVydHktZWRpdG9yLXJlbmRlcmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuSCxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFLcEY7SUFzQ0ksMkNBQ1ksTUFBd0IsRUFDeEIsd0JBQWtELEVBQ2xELGFBQThCO1FBRjlCLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQ3hCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBL0IxQyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBd0IxQixrQkFBYSxHQUFrRCxJQUFJLFlBQVksRUFBbUMsQ0FBQztJQVVuSCxDQUFDO0lBekJELHNCQUFXLHNEQUFPO2FBQWxCO1lBQ0ksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3pCLENBQUM7YUFDRCxVQUFtQixDQUFNO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN0QjtRQUNMLENBQUM7OztPQU5BO0lBMEJELGlEQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVE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QWlDLENBMkg3QztJQUFELHdDQUFDO0NBQUEsQUEzSEQsSUEySEM7U0EzSFksaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBWaWV3Q29udGFpbmVyUmVmLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWFByb3BlcnlFZGl0b3JDb21wb25lbnQsIEFYUHJvcGVyeUVkaXRvclZhbHVlQ2hhbmdlRXZlbnQsIEFYUHJvcGVydHlDb25maWcgfSBmcm9tICcuL3Byb3BlcnR5LWVkaXRvci5jbGFzcyc7XHJcbmltcG9ydCB7IEFYT2JqZWN0VXRpbCwgQVhSZW5kZXJTZXJ2aWNlLCBnZXRQcm9wQnlQYXRoIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24tZm9ybS5jb21wb25lbnQnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1theC1wcm9wZXJ0eS1lZGl0b3ItcmVuZGVyZXJdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYUHJvcGVydHlFZGl0b3JSZW5kZXJlckRpcmVjdGl2ZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBpbnN0YW5jZTogQVhQcm9wZXJ5RWRpdG9yQ29tcG9uZW50PGFueT47XHJcblxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwcm9wZXJ0eTogQVhQcm9wZXJ0eUNvbmZpZztcclxuXHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHZhbGlkYXRpb25Gb3JtOiBBWFZhbGlkYXRpb25Gb3JtQ29tcG9uZW50O1xyXG5cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfY29udGV4dDogYW55O1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgY29udGV4dCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNldCBjb250ZXh0KHY6IGFueSkge1xyXG4gICAgICAgIHRoaXMuX2NvbnRleHQgPSB2O1xyXG4gICAgICAgIGlmICh2ICYmIHRoaXMuaW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5hc3NpZ25Qcm9wcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgaG9zdDogYW55O1xyXG5cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIG9uVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBWFByb3BlcnlFZGl0b3JWYWx1ZUNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhQcm9wZXJ5RWRpdG9yVmFsdWVDaGFuZ2VFdmVudD4oKTtcclxuXHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgdGFyZ2V0OiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJTZXJ2aWNlOiBBWFJlbmRlclNlcnZpY2VcclxuICAgICkge1xyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgY2xlYXIoKSB7XHJcbiAgICAgICAgdGhpcy5pbnN0YW5jZS52YWx1ZSA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVDb21wb25lbnQoKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIGNyZWF0ZUNvbXBvbmVudCgpIHtcclxuICAgICAgICB0aGlzLnJlbmRlclNlcnZpY2UuZmluZExvYWRlZENvbXBvbmVudEJ5Um91dGUodGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eS5lZGl0b3JDbGFzcykudGhlbihjID0+IHtcclxuICAgICAgICAgICAgaWYgKGMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjLmNvbXBvbmVudCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjbXBSZWYgPSB0aGlzLnRhcmdldC5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlID0gY21wUmVmLmluc3RhbmNlIGFzIEFYUHJvcGVyeUVkaXRvckNvbXBvbmVudDxhbnk+O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmluc3RhbmNlLnZhbHVlQ2hhbmdlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UuaW5pdGlhdGVkID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcGVydHkudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQodGhpcy5wcm9wZXJ0eSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAvLyAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbGlkYXRpb25Gb3JtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS52YWxpZGF0YWJsZUNvbXBvbmVudFJlZ2lzdGVyZWQuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25Gb3JtLmFkZFdpZGdldCh2KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vXHJcbiAgICAgICAgICAgICAgICAvL3NldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UucmVhZG9ubHkgPSB0aGlzLnJlYWRvbmx5O1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXNzaWduUHJvcHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLnZhbHVlID0gdGhpcy5wcm9wZXJ0eS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLmluaXRpYXQoKTtcclxuICAgICAgICAgICAgICAgICAgICBjbXBSZWYuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgICAgICAvL30pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgYXNzaWduUHJvcHMoKSB7XHJcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMucHJvcGVydHkucHJvcGVydHkuZWRpdG9yT3B0aW9ucztcclxuICAgICAgICBpZiAoIW9wdGlvbnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGNvbnN0IHAgaW4gb3B0aW9ucykge1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShwKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gb3B0aW9uc1twXTtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0ID09PSAnc3RyaW5nJyAmJiBvcHQuc3RhcnRzV2l0aCgnJCQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IG9wdC5zdWJzdHJpbmcoMik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsID0gZ2V0UHJvcEJ5UGF0aCh0aGlzLmNvbnRleHQsIGtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlW3BdID0gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJyA/IHZhbCh7IGRhdGE6IHRoaXMuY29udGV4dCwgaG9zdDogdGhpcy5ob3N0IH0sIHRoaXMucHJvcGVydHkpIDogdmFsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IHR5cGVvZiBvcHQgPT09ICdmdW5jdGlvbicgPyBvcHQoeyBkYXRhOiB0aGlzLmNvbnRleHQsIGhvc3Q6IHRoaXMuaG9zdCB9LCB0aGlzLnByb3BlcnR5KSA6IG9wdDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMudGhlbih2ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2VbcF0gPSB2O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2VbcF0gPSByZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZWRpdG9yLXJlbmRlcmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9wcm9wZXJ0eS1lZGl0b3IvcHJvcGVydHktZWRpdG9yLXJlbmRlcmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBKLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBS3BGO0lBa0NJLDJDQUNZLE1BQXdCLEVBQ3hCLHdCQUFrRCxFQUNsRCxhQUE4QixFQUM5QixZQUE0QjtRQUg1QixXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUN4Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUF6QmhDLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFpQjNCLGtCQUFhLEdBQWtELElBQUksWUFBWSxFQUFtQyxDQUFDO0lBV25ILENBQUM7SUExQkQsc0JBQVcsc0RBQU87YUFBbEI7WUFDSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDekIsQ0FBQzthQUNELFVBQW1CLENBQU07WUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDdEIsQ0FBQzs7O09BSEE7SUEyQkQsaURBQUssR0FBTDtRQUNJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lB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Q29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFZpZXdDb250YWluZXJSZWYsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBLZXlWYWx1ZURpZmZlciwgS2V5VmFsdWVEaWZmZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYUHJvcGVyeUVkaXRvckNvbXBvbmVudCwgQVhQcm9wZXJ5RWRpdG9yVmFsdWVDaGFuZ2VFdmVudCwgQVhQcm9wZXJ0eUNvbmZpZyB9IGZyb20gJy4vcHJvcGVydHktZWRpdG9yLmNsYXNzJztcclxuaW1wb3J0IHsgQVhFdmVudFNlcnZpY2UsIEFYT2JqZWN0VXRpbCwgQVhSZW5kZXJTZXJ2aWNlLCBnZXRQcm9wQnlQYXRoLCBzZXRQcm9wQnlQYXRoIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24tZm9ybS5jb21wb25lbnQnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1theC1wcm9wZXJ0eS1lZGl0b3ItcmVuZGVyZXJdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYUHJvcGVydHlFZGl0b3JSZW5kZXJlckRpcmVjdGl2ZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBpbnN0YW5jZTogQVhQcm9wZXJ5RWRpdG9yQ29tcG9uZW50PGFueT47XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHByb3BlcnR5OiBBWFByb3BlcnR5Q29uZmlnO1xyXG5cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgdmFsaWRhdGlvbkZvcm06IEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQ7XHJcblxyXG5cclxuXHJcbiAgICBwcml2YXRlIF9jb250ZXh0OiBhbnkgPSB7fTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IGNvbnRleHQoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY29udGV4dDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgY29udGV4dCh2OiBhbnkpIHtcclxuICAgICAgICB0aGlzLl9jb250ZXh0ID0gdjtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgaG9zdDogYW55O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBncm91cElkOiBhbnk7XHJcblxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgb25WYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEFYUHJvcGVyeUVkaXRvclZhbHVlQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFByb3BlcnlFZGl0b3JWYWx1ZUNoYW5nZUV2ZW50PigpO1xyXG5cclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSB0YXJnZXQ6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgICAgICBwcml2YXRlIHJlbmRlclNlcnZpY2U6IEFYUmVuZGVyU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGV2ZW50U2VydmljZTogQVhFdmVudFNlcnZpY2VcclxuICAgICkge1xyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgY2xlYXIoKSB7XHJcbiAgICAgICAgdGhpcy5pbnN0YW5jZS52YWx1ZSA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVDb21wb25lbnQoKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gICAgY3JlYXRlQ29tcG9uZW50KCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyU2VydmljZS5maW5kTG9hZGVkQ29tcG9uZW50QnlSb3V0ZSh0aGlzLnByb3BlcnR5LnByb3BlcnR5LmVkaXRvckNsYXNzKS50aGVuKGMgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGMuY29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNtcFJlZiA9IHRoaXMudGFyZ2V0LmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UgPSBjbXBSZWYuaW5zdGFuY2UgYXMgQVhQcm9wZXJ5RWRpdG9yQ29tcG9uZW50PGFueT47XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuaW5zdGFuY2UudmFsdWVDaGFuZ2Uuc3Vic2NyaWJlKHZhbHVlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5LnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQodGhpcy5wcm9wZXJ0eSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcGVydHk/LnByb3BlcnR5Py5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UuYnJvYWRjYXN0KGBwcm9wcy0ke3RoaXMuZ3JvdXBJZH0tJHt0aGlzLnByb3BlcnR5LnByb3BlcnR5Lm5hbWV9YCwgdGhpcy5wcm9wZXJ0eSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy53YXRjaENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXNzaWduUHJvcHMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UudmFsdWUgPSB0aGlzLnByb3BlcnR5LnZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuaW5zdGFuY2Uub25SZW5kZXJDb21wbGV0ZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsaWRhdGlvbkZvcm0pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLnZhbGlkYXRhYmxlQ29tcG9uZW50UmVnaXN0ZXJlZC5zdWJzY3JpYmUodiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbkZvcm0uYWRkV2lkZ2V0KHYpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgd2F0Y2hDaGFuZ2VzKCkge1xyXG4gICAgICAgIGNvbnN0IHZhcnNSZWd4ID0gLygoXFwkXFx7W2EtekEtWl8wLTldK1xcfSkrKS9nbTtcclxuICAgICAgICBjb25zdCB2YXJOYW1lUmVneCA9IC9bYS16QS1aXzAtOV0rL2dtO1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnByb3BlcnR5LnByb3BlcnR5LmVkaXRvck9wdGlvbnM7XHJcbiAgICAgICAgaWYgKCFvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBwIGluIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkocCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9wdCA9IG9wdGlvbnNbcF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YXJzID0gdHlwZW9mIG9wdCA9PT0gJ3N0cmluZycgPyBvcHQ/Lm1hdGNoKHZhcnNSZWd4KSA6IFtdO1xyXG4gICAgICAgICAgICAgICAgLy8gYmluZCB0aGUgcHJvcHNcclxuICAgICAgICAgICAgICAgIGlmICh2YXJzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXJzLmZvckVhY2godiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSB2Lm1hdGNoKHZhck5hbWVSZWd4KT8ubGVuZ3RoID8gdi5tYXRjaCh2YXJOYW1lUmVneClbMF0gOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uub24oYHByb3BzLSR7dGhpcy5ncm91cElkfS0ke3BhdGh9YCwgKGU6IEFYUHJvcGVydHlDb25maWcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXhlY0NvZGUgPSBvcHQuc2xpY2UoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJzLmZvckVhY2godnYgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwMiA9IHZ2Lm1hdGNoKHZhck5hbWVSZWd4KT8ubGVuZ3RoID8gdnYubWF0Y2godmFyTmFtZVJlZ3gpWzBdIDogbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW3AyXSA9IEFYT2JqZWN0VXRpbC5kZWVwQ29weSh0aGlzLmNvbnRleHRbcDJdKSB8fCBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjQ29kZSA9IGV4ZWNDb2RlLnJlcGxhY2UodnYsIGBfX3BhcmFtc19fLiR7cDJ9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oJ19fcGFyYW1zX18nLCBgdHJ5IHsgcmV0dXJuICR7ZXhlY0NvZGV9fSBjYXRjaChlKXsgIGNvbnNvbGUubG9nKGUpOyByZXR1cm4gbnVsbDsgIH1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWwgPSBmdW5jKHBhcmFtcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBwLnNwbGl0KCcuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuaW5zdGFuY2Vba2V5c1swXV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZVtrZXlzWzBdXSA9IHNldFByb3BCeVBhdGgocHJvcCwgcCwgdmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb3BCeVBhdGgodGhpcy5pbnN0YW5jZSwgcCwgdmFsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vICAgIHRoaXMuYXNzaWduUHJvcHMoKTtcclxuICAgICAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBhc3NpZ25Qcm9wcygpIHtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wcm9wZXJ0eS5wcm9wZXJ0eS5lZGl0b3JPcHRpb25zO1xyXG4gICAgICAgIGlmICghb3B0aW9ucykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHZhcnNSZWd4ID0gLygoXFwkXFx7W2EtekEtWl8wLTldK1xcfSkrKS9nbTtcclxuICAgICAgICBmb3IgKGNvbnN0IHAgaW4gb3B0aW9ucykge1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShwKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gb3B0aW9uc1twXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZhcnMgPSB0eXBlb2Ygb3B0ID09PSAnc3RyaW5nJyA/IG9wdD8ubWF0Y2godmFyc1JlZ3gpIDogW107XHJcbiAgICAgICAgICAgICAgICBpZiAodmFycz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWwgPSB0eXBlb2Ygb3B0ID09PSAnZnVuY3Rpb24nID8gb3B0KHsgZGF0YTogdGhpcy5jb250ZXh0LCBob3N0OiB0aGlzLmhvc3QgfSwgdGhpcy5wcm9wZXJ0eSkgOiBvcHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsLnRoZW4odiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQcm9wQnlQYXRoKHRoaXMuaW5zdGFuY2UsIHAsIHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvcEJ5UGF0aCh0aGlzLmluc3RhbmNlLCBwLCB2YWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
@@ -3,12 +3,25 @@ import { Input, Output, EventEmitter } from '@angular/core';
3
3
  import { Subject } from 'rxjs';
4
4
  var AXProperyEditorComponent = /** @class */ (function () {
5
5
  function AXProperyEditorComponent(cdr) {
6
+ var _this = this;
6
7
  this.cdr = cdr;
7
8
  this.readonly = false;
8
- this.initiated = false;
9
+ this._initiated = false;
10
+ this._valueBound = false;
9
11
  this.validatableComponentRegistered = new Subject();
10
12
  this.valueChange = new EventEmitter();
13
+ this.onRenderCompleted = new EventEmitter();
14
+ this.onRenderCompleted.subscribe(function () {
15
+ _this._initiated = true;
16
+ });
11
17
  }
18
+ Object.defineProperty(AXProperyEditorComponent.prototype, "initiated", {
19
+ get: function () {
20
+ return this._initiated && this._valueBound;
21
+ },
22
+ enumerable: true,
23
+ configurable: true
24
+ });
12
25
  AXProperyEditorComponent.prototype.registerForValidationForm = function (component) {
13
26
  this.validatableComponentRegistered.next(component);
14
27
  };
@@ -17,10 +30,15 @@ var AXProperyEditorComponent = /** @class */ (function () {
17
30
  return this._value;
18
31
  },
19
32
  set: function (v) {
33
+ var _this = this;
20
34
  if (v !== this._value) {
21
35
  this._value = v;
22
36
  this.valueChange.emit(v);
23
37
  this.cdr.detectChanges();
38
+ //TODO: find better solution
39
+ setTimeout(function () {
40
+ _this._valueBound = true;
41
+ }, 100);
24
42
  }
25
43
  },
26
44
  enumerable: true,
@@ -29,12 +47,14 @@ var AXProperyEditorComponent = /** @class */ (function () {
29
47
  AXProperyEditorComponent.prototype.handleValueChange = function (v) {
30
48
  this.value = v;
31
49
  };
32
- AXProperyEditorComponent.prototype.initiat = function () {
33
- };
34
50
  __decorate([
35
51
  Output(),
36
52
  __metadata("design:type", EventEmitter)
37
53
  ], AXProperyEditorComponent.prototype, "valueChange", void 0);
54
+ __decorate([
55
+ Output(),
56
+ __metadata("design:type", EventEmitter)
57
+ ], AXProperyEditorComponent.prototype, "onRenderCompleted", void 0);
38
58
  __decorate([
39
59
  Input(),
40
60
  __metadata("design:type", Object),
@@ -98,4 +118,4 @@ export function propertyEditor(options) {
98
118
  AXPropertyDecorators.register(target, key, options);
99
119
  };
100
120
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZWRpdG9yLmNsYXNzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjb3JleC9jb21wb25lbnRzLyIsInNvdXJjZXMiOlsibGliL3Byb3BlcnR5LWVkaXRvci9wcm9wZXJ0eS1lZGl0b3IuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQTZDL0I7SUFnQ0ksa0NBQXNCLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBN0I1QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0IsbUNBQThCLEdBQW9DLElBQUksT0FBTyxFQUEwQixDQUFDO1FBU3hHLGdCQUFXLEdBQW9CLElBQUksWUFBWSxFQUFLLENBQUM7SUFpQnJELENBQUM7SUF2QkQsNERBQXlCLEdBQXpCLFVBQTBCLFNBQWtDO1FBQ3hELElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQVFELHNCQUFXLDJDQUFLO2FBQWhCO1lBQ0ksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLENBQUM7YUFFRCxVQUFpQixDQUFJO1lBQ2pCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUM1QjtRQUNMLENBQUM7OztPQVJBO0lBZUQsb0RBQWlCLEdBQWpCLFVBQWtCLENBQUk7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENB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QU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUF2Q2MsNkJBQVEsR0FBRyxJQUFJLEtBQUssRUFBdUIsQ0FBQztJQXdDL0QsMkJBQUM7Q0FBQSxBQXpDRCxJQXlDQztTQXpDWSxvQkFBb0I7QUE2Q2pDLE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBNEI7SUFDdkQsT0FBTyxVQUFDLE1BQVcsRUFBRSxHQUFXO1FBQzNCLE9BQWUsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQzVCLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQVhWYWxpZGF0YWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UvZWxlbWVudC5jbGFzcyc7XHJcblxyXG5leHBvcnQgdHlwZSBBWERhdGFUeXBlID0gJ3N0cmluZycgfCAnbnVtYmVyJyB8ICdkYXRlJyB8ICdib29sZWFuJyB8ICdvYmplY3QnO1xyXG5leHBvcnQgdHlwZSBBWENvbnRyb2xUeXBlID0gJ3RleHRib3gnIHwgJ251bWJlcmJveCcgfCAnZGF0ZVBpY2tlcicgfCAnc3dpdGNoJyB8ICdjdXN0b20nO1xyXG5cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYUHJvcGVydHlEZWYge1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIGhpbnQ/OiBzdHJpbmc7XHJcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnk7XHJcbiAgICBlZGl0b3JDbGFzczogYW55O1xyXG4gICAgZWRpdG9yT3B0aW9ucz86IGFueTtcclxuICAgIHZpc2libGU/OiBib29sZWFuIHwgKCgpID0+IGJvb2xlYW4pO1xyXG4gICAgb3JkZXI/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhQcm9wZXJ0eUVkaXRvckRlZiB7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgaGludD86IHN0cmluZztcclxuICAgIGRlZmF1bHRWYWx1ZT86IGFueTtcclxuICAgIGVkaXRvckNsYXNzOiBhbnk7XHJcbiAgICBlZGl0b3JPcHRpb25zPzogYW55O1xyXG4gICAgdmlzaWJsZT86IGJvb2xlYW4gfCAoKCkgPT4gYm9vbGVhbik7XHJcbiAgICBvcmRlcj86IG51bWJlcjtcclxufVxyXG5cclxuXHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWFByb3BlcnR5Q29uZmlnIHtcclxuICAgIHByb3BlcnR5OiBBWFByb3BlcnR5RGVmO1xyXG4gICAgdmFsdWU6IGFueTtcclxufVxyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhQcm9wZXJ5RWRpdG9yVmFsdWVDaGFuZ2VFdmVudCB7XHJcbiAgICBwcm9wZXJ0eTogQVhQcm9wZXJ0eURlZjtcclxuICAgIHZhbHVlOiBhbnk7XHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUHJvcGVyeUVkaXRvckNvbXBvbmVudDxUPntcclxuXHJcblxyXG4gICAgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGluaXRpYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICB2YWxpZGF0YWJsZUNvbXBvbmVudFJlZ2lzdGVyZWQ6IFN1YmplY3Q8QVhWYWxpZGF0YWJsZUNvbXBvbmVudD4gPSBuZXcgU3ViamVjdDxBWFZhbGlkYXRhYmxlQ29tcG9uZW50PigpO1xyXG5cclxuXHJcbiAgICByZWdpc3RlckZvclZhbGlkYXRpb25Gb3JtKGNvbXBvbmVudD86IEFYVmFsaWRhdGFibGVDb21wb25lbnQpIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRhYmxlQ29tcG9uZW50UmVnaXN0ZXJlZC5uZXh0KGNvbXBvbmVudCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxUPiA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcclxuXHJcbiAgICBwcml2YXRlIF92YWx1ZTogVDtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0IHZhbHVlKHY6IFQpIHtcclxuICAgICAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB2O1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodik7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIH1cclxuXHJcbiAgICB1aWQ6IHN0cmluZztcclxuXHJcbiAgICBoYW5kbGVWYWx1ZUNoYW5nZSh2OiBUKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlhdCgpOiB2b2lkIHtcclxuXHJcbiAgICB9XHJcblxyXG5cclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgQVhQcm9wZXJ0eURlY29yYXRvciB7XHJcbiAgICBjbHM6IGFueTtcclxuICAgIHByb3BlcnR5OiBzdHJpbmc7XHJcbiAgICBvcHRpb25zOiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgY2xzOiBhbnksXHJcbiAgICAgICAgcHJvcGVydHk6IHN0cmluZyxcclxuICAgICAgICBvcHRpb25zOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmNscyA9IGNscztcclxuICAgICAgICB0aGlzLnByb3BlcnR5ID0gcHJvcGVydHk7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcclxuICAgIH1cclxufVxyXG5cclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBBWFByb3BlcnR5RGVjb3JhdG9ycyB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBSRUdJU1RSWSA9IG5ldyBBcnJheTxBWFByb3BlcnR5RGVjb3JhdG9yPigpO1xyXG5cclxuICAgIHN0YXRpYyByZWdpc3RlcihjbHM6IHN0cmluZywgcHJvcGVydHk6IHN0cmluZywgb3B0aW9ucz86IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBBWFByb3BlcnR5RGVjb3JhdG9ycy5SRUdJU1RSWS5maW5kKGMgPT4gYy5jbHMgPT09IGNscyAmJiBjLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XHJcbiAgICAgICAgaWYgKGl0ZW0pIHtcclxuICAgICAgICAgICAgaXRlbS5vcHRpb25zID0gb3B0aW9ucztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIEFYUHJvcGVydHlEZWNvcmF0b3JzLlJFR0lTVFJZLnB1c2gobmV3IEFYUHJvcGVydHlEZWNvcmF0b3IoY2xzLCBwcm9wZXJ0eSwgb3B0aW9ucykpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHN0YXRpYyBoYXMoY2xzOiBzdHJpbmcsIHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gQVhQcm9wZXJ0eURlY29yYXRvcnMuUkVHSVNUUlkuc29tZShjID0+IGMuY2xzID09PSBjbHMgJiYgYy5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQoY2xzOiBzdHJpbmcsIHByb3BlcnR5OiBzdHJpbmcpOiBBWFByb3BlcnR5RGVjb3JhdG9yIHtcclxuICAgICAgICByZXR1cm4gQVhQcm9wZXJ0eURlY29yYXRvcnMuUkVHSVNUUlkuZmluZChjID0+IGMuY2xzID09PSBjbHMgJiYgYy5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBpc1ZhbGlkKHByb3BlcnR5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAocHJvcGVydHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIEFYUHJvcGVydHlEZWNvcmF0b3JzLlJFR0lTVFJZLnNvbWUoYyA9PiBjLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZ2V0UHJvcGVydGllcyh0YXJnZXQ6IGFueSk6IEFYUHJvcGVydHlEZWNvcmF0b3JbXSB7XHJcbiAgICAgICAgY29uc3QgbGlzdDogQVhQcm9wZXJ0eURlY29yYXRvcltdID0gW107XHJcbiAgICAgICAgY29uc3QgcDogYW55W10gPSBBcnJheTxhbnk+KCk7XHJcbiAgICAgICAgbGV0IHN1cGVyQ2xhc3MgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0KTtcclxuICAgICAgICB3aGlsZSAoc3VwZXJDbGFzcy5jb25zdHJ1Y3Rvci5uYW1lICE9PSAnT2JqZWN0Jykge1xyXG4gICAgICAgICAgICBwLnB1c2goc3VwZXJDbGFzcy5jb25zdHJ1Y3Rvcik7XHJcbiAgICAgICAgICAgIHN1cGVyQ2xhc3MgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc3VwZXJDbGFzcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxpc3QucHVzaCguLi5BWFByb3BlcnR5RGVjb3JhdG9ycy5SRUdJU1RSWS5maWx0ZXIoYyA9PiBwLmluY2x1ZGVzKGMuY2xzLmNvbnN0cnVjdG9yKSkpO1xyXG4gICAgICAgIHJldHVybiBsaXN0O1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0eUVkaXRvcihvcHRpb25zOiBBWFByb3BlcnR5RWRpdG9yRGVmKSB7XHJcbiAgICByZXR1cm4gKHRhcmdldDogYW55LCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIChvcHRpb25zIGFzIGFueSkubmFtZSA9IGtleTtcclxuICAgICAgICBBWFByb3BlcnR5RGVjb3JhdG9ycy5yZWdpc3Rlcih0YXJnZXQsIGtleSwgb3B0aW9ucyk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4iXX0=
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZWRpdG9yLmNsYXNzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjb3JleC9jb21wb25lbnRzLyIsInNvdXJjZXMiOlsibGliL3Byb3BlcnR5LWVkaXRvci9wcm9wZXJ0eS1lZGl0b3IuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQTZDL0I7SUErQ0ksa0NBQXNCLEdBQXNCO1FBQTVDLGlCQUlDO1FBSnFCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBNUM1QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBR2xCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFPckMsbUNBQThCLEdBQW9DLElBQUksT0FBTyxFQUEwQixDQUFDO1FBU3hHLGdCQUFXLEdBQW9CLElBQUksWUFBWSxFQUFLLENBQUM7UUFJckQsc0JBQWlCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFxQjdELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7WUFDN0IsS0FBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBMUNELHNCQUFXLCtDQUFTO2FBQXBCO1lBQ0ksT0FBTyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDL0MsQ0FBQzs7O09BQUE7SUFNRCw0REFBeUIsR0FBekIsVUFBMEIsU0FBa0M7UUFDeEQsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBWUQsc0JBQVcsMkNBQUs7YUFBaEI7WUFDSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdkIsQ0FBQzthQUVELFVBQWlC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QUFDO1FBQzlCLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDN0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0IsVUFBVSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbEQ7UUFDRCxJQUFJLENBQUMsSUFBSSxPQUFULElBQUksV0FBUyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUE3QixDQUE2QixDQUFDLEdBQUU7UUFDdkYsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQXZDYyw2QkFBUSxHQUFHLElBQUksS0FBSyxFQUF1QixDQUFDO0lBd0MvRCwyQkFBQztDQUFBLEFBekNELElBeUNDO1NBekNZLG9CQUFvQjtBQTZDakMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUE0QjtJQUN2RCxPQUFPLFVBQUMsTUFBVyxFQUFFLEdBQVc7UUFDM0IsT0FBZSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDNUIsb0JBQW9CLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBWFZhbGlkYXRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcclxuXHJcbmV4cG9ydCB0eXBlIEFYRGF0YVR5cGUgPSAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ2RhdGUnIHwgJ2Jvb2xlYW4nIHwgJ29iamVjdCc7XHJcbmV4cG9ydCB0eXBlIEFYQ29udHJvbFR5cGUgPSAndGV4dGJveCcgfCAnbnVtYmVyYm94JyB8ICdkYXRlUGlja2VyJyB8ICdzd2l0Y2gnIHwgJ2N1c3RvbSc7XHJcblxyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQVhQcm9wZXJ0eURlZiB7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgaGludD86IHN0cmluZztcclxuICAgIGRlZmF1bHRWYWx1ZT86IGFueTtcclxuICAgIGVkaXRvckNsYXNzOiBhbnk7XHJcbiAgICBlZGl0b3JPcHRpb25zPzogYW55O1xyXG4gICAgdmlzaWJsZT86IGJvb2xlYW4gfCAoKCkgPT4gYm9vbGVhbik7XHJcbiAgICBvcmRlcj86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWFByb3BlcnR5RWRpdG9yRGVmIHtcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICBoaW50Pzogc3RyaW5nO1xyXG4gICAgZGVmYXVsdFZhbHVlPzogYW55O1xyXG4gICAgZWRpdG9yQ2xhc3M6IGFueTtcclxuICAgIGVkaXRvck9wdGlvbnM/OiBhbnk7XHJcbiAgICB2aXNpYmxlPzogYm9vbGVhbiB8ICgoKSA9PiBib29sZWFuKTtcclxuICAgIG9yZGVyPzogbnVtYmVyO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYUHJvcGVydHlDb25maWcge1xyXG4gICAgcHJvcGVydHk6IEFYUHJvcGVydHlEZWY7XHJcbiAgICB2YWx1ZTogYW55O1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWFByb3BlcnlFZGl0b3JWYWx1ZUNoYW5nZUV2ZW50IHtcclxuICAgIHByb3BlcnR5OiBBWFByb3BlcnR5RGVmO1xyXG4gICAgdmFsdWU6IGFueTtcclxufVxyXG5cclxuXHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQcm9wZXJ5RWRpdG9yQ29tcG9uZW50PFQ+e1xyXG5cclxuXHJcbiAgICByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICBwcml2YXRlIF9pbml0aWF0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgX3ZhbHVlQm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgZ2V0IGluaXRpYXRlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW5pdGlhdGVkICYmIHRoaXMuX3ZhbHVlQm91bmQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHZhbGlkYXRhYmxlQ29tcG9uZW50UmVnaXN0ZXJlZDogU3ViamVjdDxBWFZhbGlkYXRhYmxlQ29tcG9uZW50PiA9IG5ldyBTdWJqZWN0PEFYVmFsaWRhdGFibGVDb21wb25lbnQ+KCk7XHJcblxyXG5cclxuICAgIHJlZ2lzdGVyRm9yVmFsaWRhdGlvbkZvcm0oY29tcG9uZW50PzogQVhWYWxpZGF0YWJsZUNvbXBvbmVudCkge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGFibGVDb21wb25lbnRSZWdpc3RlcmVkLm5leHQoY29tcG9uZW50KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPFQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG5cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIG9uUmVuZGVyQ29tcGxldGVkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHJpdmF0ZSBfdmFsdWU6IFQ7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdldCB2YWx1ZSgpOiBUIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCB2YWx1ZSh2OiBUKSB7XHJcbiAgICAgICAgaWYgKHYgIT09IHRoaXMuX3ZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdjtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHYpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIC8vVE9ETzogZmluZCBiZXR0ZXIgc29sdXRpb25cclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZUJvdW5kID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgICAgICB0aGlzLm9uUmVuZGVyQ29tcGxldGVkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYXRlZCA9IHRydWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdWlkOiBzdHJpbmc7XHJcblxyXG4gICAgaGFuZGxlVmFsdWVDaGFuZ2UodjogVCkge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2O1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBBWFByb3BlcnR5RGVjb3JhdG9yIHtcclxuICAgIGNsczogYW55O1xyXG4gICAgcHJvcGVydHk6IHN0cmluZztcclxuICAgIG9wdGlvbnM6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBjbHM6IGFueSxcclxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxyXG4gICAgICAgIG9wdGlvbnM6IGFueSkge1xyXG4gICAgICAgIHRoaXMuY2xzID0gY2xzO1xyXG4gICAgICAgIHRoaXMucHJvcGVydHkgPSBwcm9wZXJ0eTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEFYUHJvcGVydHlEZWNvcmF0b3JzIHtcclxuICAgIHByaXZhdGUgc3RhdGljIFJFR0lTVFJZID0gbmV3IEFycmF5PEFYUHJvcGVydHlEZWNvcmF0b3I+KCk7XHJcblxyXG4gICAgc3RhdGljIHJlZ2lzdGVyKGNsczogc3RyaW5nLCBwcm9wZXJ0eTogc3RyaW5nLCBvcHRpb25zPzogYW55KSB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IEFYUHJvcGVydHlEZWNvcmF0b3JzLlJFR0lTVFJZLmZpbmQoYyA9PiBjLmNscyA9PT0gY2xzICYmIGMucHJvcGVydHkgPT09IHByb3BlcnR5KTtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgICBpdGVtLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgQVhQcm9wZXJ0eURlY29yYXRvcnMuUkVHSVNUUlkucHVzaChuZXcgQVhQcm9wZXJ0eURlY29yYXRvcihjbHMsIHByb3BlcnR5LCBvcHRpb25zKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgc3RhdGljIGhhcyhjbHM6IHN0cmluZywgcHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBBWFByb3BlcnR5RGVjb3JhdG9ycy5SRUdJU1RSWS5zb21lKGMgPT4gYy5jbHMgPT09IGNscyAmJiBjLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdldChjbHM6IHN0cmluZywgcHJvcGVydHk6IHN0cmluZyk6IEFYUHJvcGVydHlEZWNvcmF0b3Ige1xyXG4gICAgICAgIHJldHVybiBBWFByb3BlcnR5RGVjb3JhdG9ycy5SRUdJU1RSWS5maW5kKGMgPT4gYy5jbHMgPT09IGNscyAmJiBjLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGlzVmFsaWQocHJvcGVydHk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gQVhQcm9wZXJ0eURlY29yYXRvcnMuUkVHSVNUUlkuc29tZShjID0+IGMucHJvcGVydHkgPT09IHByb3BlcnR5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRQcm9wZXJ0aWVzKHRhcmdldDogYW55KTogQVhQcm9wZXJ0eURlY29yYXRvcltdIHtcclxuICAgICAgICBjb25zdCBsaXN0OiBBWFByb3BlcnR5RGVjb3JhdG9yW10gPSBbXTtcclxuICAgICAgICBjb25zdCBwOiBhbnlbXSA9IEFycmF5PGFueT4oKTtcclxuICAgICAgICBsZXQgc3VwZXJDbGFzcyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpO1xyXG4gICAgICAgIHdoaWxlIChzdXBlckNsYXNzLmNvbnN0cnVjdG9yLm5hbWUgIT09ICdPYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHAucHVzaChzdXBlckNsYXNzLmNvbnN0cnVjdG9yKTtcclxuICAgICAgICAgICAgc3VwZXJDbGFzcyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihzdXBlckNsYXNzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGlzdC5wdXNoKC4uLkFYUHJvcGVydHlEZWNvcmF0b3JzLlJFR0lTVFJZLmZpbHRlcihjID0+IHAuaW5jbHVkZXMoYy5jbHMuY29uc3RydWN0b3IpKSk7XHJcbiAgICAgICAgcmV0dXJuIGxpc3Q7XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnR5RWRpdG9yKG9wdGlvbnM6IEFYUHJvcGVydHlFZGl0b3JEZWYpIHtcclxuICAgIHJldHVybiAodGFyZ2V0OiBhbnksIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgKG9wdGlvbnMgYXMgYW55KS5uYW1lID0ga2V5O1xyXG4gICAgICAgIEFYUHJvcGVydHlEZWNvcmF0b3JzLnJlZ2lzdGVyKHRhcmdldCwga2V5LCBvcHRpb25zKTtcclxuICAgIH07XHJcbn1cclxuXHJcbiJdfQ==
@@ -45,6 +45,10 @@ var AXQueryBuilderRuleComponent = /** @class */ (function () {
45
45
  value: 'not-contains',
46
46
  text: AXTranslator.get('queryBuilder.not-contains')
47
47
  },
48
+ {
49
+ value: 'contains-all',
50
+ text: AXTranslator.get('queryBuilder.contains-all')
51
+ },
48
52
  {
49
53
  value: 'null',
50
54
  text: AXTranslator.get('queryBuilder.null')
@@ -368,4 +372,4 @@ var AXQueryBuilderRuleComponent = /** @class */ (function () {
368
372
  return AXQueryBuilderRuleComponent;
369
373
  }());
370
374
  export { AXQueryBuilderRuleComponent };
371
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1ydWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9xdWVyeS1idWlsZGVyL3F1ZXJ5LWJ1aWxkZXItcnVsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBMkIscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBUXBGO0lBbUNFO1FBQUEsaUJBQWdCO1FBMUJoQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBUzFCLFNBQUksR0FBbUIsS0FBSyxDQUFDO1FBRzdCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFHbkIsaUJBQVksR0FBMEMsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFHbEcsZ0JBQVcsR0FBMEMsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFFakcsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVqQyxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QiwwQkFBcUIsR0FBWSxJQUFJLENBQUM7UUFZdEMsdUJBQWtCLEdBQUcsVUFBQyxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPO2dCQUN6QixPQUFPLENBQUM7b0JBQ047d0JB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UUFBOUIsU0FBUyxDQUFDLGtCQUFrQixDQUFDO2tDQUFtQixrQkFBa0I7eUVBQUM7SUFDOUI7UUFBckMsU0FBUyxDQUFDLHlCQUF5QixDQUFDO2tDQUFPLHlCQUF5Qjs2REFBQztJQUV0RTtRQURDLEtBQUssRUFBRTs7a0VBQ2tCO0lBRzFCO1FBREMsS0FBSyxFQUFFO2tDQUNGLGtCQUFrQjs2REFBQztJQUd6QjtRQURDLEtBQUssRUFBRTtrQ0FDQSxtQkFBbUI7K0RBQUM7SUFHNUI7UUFEQyxLQUFLLEVBQUU7OzZEQUNxQjtJQUc3QjtRQURDLEtBQUssRUFBRTs7K0RBQ1c7SUFHbkI7UUFEQyxNQUFNLEVBQUU7a0NBQ0ssWUFBWTtxRUFBd0U7SUFHbEc7UUFEQyxNQUFNLEVBQUU7a0NBQ0ksWUFBWTtvRUFBd0U7SUEzQnRGLDJCQUEyQjtRQU52QyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsZUFBZTtZQUN6QiwyeU1BQWdEO1lBQ2hELElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtZQUNuQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtTQUN0QyxDQUFDOztPQUNXLDJCQUEyQixDQStVdkM7SUFBRCxrQ0FBQztDQUFBLEFBL1VELElBK1VDO1NBL1VZLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhRdWVyeUJ1aWxkZXJSdWxlLCBBWFF1ZXJ5QnVpbGRlckdyb3VwLCBBWFF1ZXJ5QnVpbGRlclJ1bGVFdmVudCwgQVhRdWVyeUJ1aWxkZXJDb250cm9sIH0gZnJvbSAnLi9xdWVyeS1idWlsZGVyLmNsYXNzJztcclxuaW1wb3J0IHsgQVhUcmFuc2xhdG9yIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuaW1wb3J0IHsgQVhTZWxlY3RCb3hDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3Rib3gvc2VsZWN0Ym94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYVGV4dEJveENvbXBvbmVudCB9IGZyb20gJy4uL3RleHRib3gvdGV4dGJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWFZhbGlkYXRpb25Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vdmFsaWRhdGlvbi92YWxpZGF0aW9uLWZvcm0uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtcXVlcnktcnVsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICdxdWVyeS1idWlsZGVyLXJ1bGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGhvc3Q6IHsgY2xhc3M6ICdheCBheC1xdWVyeS1ydWxlJyB9LFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYUXVlcnlCdWlsZGVyUnVsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnc2VsZWN0Qm94Jykgc2VsZWN0Qm94OiBBWFNlbGVjdEJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdzZWxlY3RCb3hWYWx1ZScpIHNlbGVjdEJveFZhbHVlOiBBWFNlbGVjdEJveENvbXBvbmVudDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2VsZWN0Qm94Qm9vbGVhbicpIHNlbGVjdEJveEJvb2xlYW46IEFYU2VsZWN0Qm94Q29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKCd0ZXh0Qm94TmFtZVZhbHVlJykgdGV4dEJveE5hbWVWYWx1ZTogQVhUZXh0Qm94Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoQVhWYWxpZGF0aW9uRm9ybUNvbXBvbmVudCkgZm9ybTogQVhWYWxpZGF0aW9uRm9ybUNvbXBvbmVudDtcclxuICBASW5wdXQoKVxyXG4gIGlzRWRpdGluZzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcnVsZTogQVhRdWVyeUJ1aWxkZXJSdWxlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBhcmVudDogQVhRdWVyeUJ1aWxkZXJHcm91cDtcclxuXHJcbiAgQElucHV0KClcclxuICBtb2RlOiAnbmV3JyB8ICdlZGl0JyA9ICduZXcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGZpZWxkczogYW55W10gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgb25SdWxlRGVsZXRlOiBFdmVudEVtaXR0ZXI8QVhRdWVyeUJ1aWxkZXJSdWxlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFF1ZXJ5QnVpbGRlclJ1bGVFdmVudD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcnVsZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFF1ZXJ5QnVpbGRlclJ1bGVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYUXVlcnlCdWlsZGVyUnVsZUV2ZW50PigpO1xyXG5cclxuICBzaG93VmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgaXNPbkRlbWFuZExhYmVsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNob3dTZWxlY3RCb3g6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHNob3dPcGVyYXRvclNlbGVjdEJveDogYm9vbGVhbiA9IHRydWU7XHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vQ2FsbGVkIGFmdGVyIG5nQWZ0ZXJDb250ZW50SW5pdCB3aGVuIHRoZSBjb21wb25lbnQncyB2aWV3IGhhcyBiZWVuIGluaXRpYWxpemVkLiBBcHBsaWVzIHRvIGNvbXBvbmVudHMgb25seS5cclxuICAgIC8vQWRkICdpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQnIHRvIHRoZSBjbGFzcy5cclxuICAgIGlmICh0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCkge1xyXG4gICAgICB0aGlzLmlzT25EZW1hbmRMYWJlbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByb3ZpZGVEYXRhQm9vbGVhbiA9IChlKSA9PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgcmVzb2x2ZShbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdmFsdWU6ICd0cnVlJyxcclxuICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci50cnVlJylcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHZhbHVlOiAnZmFsc2UnLFxyXG4gICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmZhbHNlJylcclxuICAgICAgICB9XHJcbiAgICAgIF0pO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgc2F2ZVJ1bGUoKSB7XHJcbiAgICB0aGlzLmZvcm0udmFsaWRhdGUoKS50aGVuKChjKSA9PiB7fSk7XHJcbiAgfVxyXG5cclxuICBwcm92aWRlRGF0YU9wZXJhdG9yID0gKGUpID0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5ydWxlLmRhdGFUeXBlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGlmICh0aGlzLnJ1bGUgJiYgdGhpcy5ydWxlLmNvbnRyb2wgJiYgdGhpcy5ydWxlLmNvbnRyb2wudHlwZSAmJiB0aGlzLnJ1bGUuY29udHJvbC50eXBlID09ICdzZWxlY3RCb3gnKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5ydWxlLmNvbnRyb2wub3B0aW9ucy5tb2RlID09ICdtdWx0aXBsZScpIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICdjb250YWlucycsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuY29udGFpbnMnKVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICdub3QtY29udGFpbnMnLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm5vdC1jb250YWlucycpXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ251bGwnLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm51bGwnKVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICdub3QtbnVsbCcsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubm90LW51bGwnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ2VxdWFsJyxcclxuICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5lcXVhbCcpXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ25vdC1lcXVhbCcsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubm90LWVxdWFsJylcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnbnVsbCcsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubnVsbCcpXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ25vdC1udWxsJyxcclxuICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ub3QtbnVsbCcpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzb2x2ZShbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB2YWx1ZTogJ2VxdWFsJyxcclxuICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZXF1YWwnKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdjb250YWlucycsXHJcbiAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmNvbnRhaW5zJylcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHZhbHVlOiAnc3RhcnQtd2l0aCcsXHJcbiAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLnN0YXJ0LXdpdGgnKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdlbmQtd2l0aCcsXHJcbiAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmVuZC13aXRoJylcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHZhbHVlOiAnbm90LWVxdWFsJyxcclxuICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubm90LWVxdWFsJylcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHZhbHVlOiAnbnVsbCcsXHJcbiAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm51bGwnKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdub3QtbnVsbCcsXHJcbiAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm5vdC1udWxsJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnJ1bGUuZGF0YVR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgcmVzb2x2ZShbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnZXF1YWwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZXF1YWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdndCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ncmVhdGVyLXRoYW4nKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdndGUnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZ3JlYXRlci10aGFuLWVxdWFsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbHQnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubGVzcy10aGFuJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbHRlJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmxlc3MtdGhhbi1lcXVhbCcpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2YWx1ZTogJ25vdC1lcXVhbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ub3QtZXF1YWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdudWxsJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm51bGwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdub3QtbnVsbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ub3QtbnVsbCcpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMucnVsZS5kYXRhVHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgICAgcmVzb2x2ZShbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnZXF1YWwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZXF1YWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdudWxsJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm51bGwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdub3QtbnVsbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ub3QtbnVsbCcpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH1cclxuICAgICAgcmVzb2x2ZShbXSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBoYW5kbGVFZGl0Q2xpY2soKSB7XHJcbiAgICB0aGlzLmlzRWRpdGluZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDb21taXRDbGljaygpIHtcclxuICAgIHRoaXMuaXNFZGl0aW5nID0gZmFsc2U7XHJcbiAgICB0aGlzLnJ1bGVDaGFuZ2VkLmVtaXQoeyBpdGVtczogdGhpcy5ydWxlLCBjb21wb25lbnQ6IHRoaXMgfSk7XHJcbiAgfVxyXG4gIGhhbmRsZVJlbW92ZUNsaWNrKCkge1xyXG4gICAgdGhpcy5vblJ1bGVEZWxldGUuZW1pdCh7IGl0ZW1zOiB0aGlzLnJ1bGUsIGNvbXBvbmVudDogdGhpcyB9KTtcclxuICB9XHJcbiAgY2FwdGlvbkNoYW5nZShlKSB7XHJcbiAgICBpZiAoZS5zZWxlY3RlZEl0ZW1zWzBdKSB7XHJcbiAgICAgIHRoaXMucnVsZS5jYXB0aW9uID0gZS5zZWxlY3RlZEl0ZW1zWzBdLmNhcHRpb247XHJcbiAgICAgIHRoaXMucnVsZS5kYXRhRmllbGQgPSBlLnNlbGVjdGVkSXRlbXNbMF0uZGF0YUZpZWxkO1xyXG4gICAgICB0aGlzLnJ1bGUuZGF0YVR5cGUgPSBlLnNlbGVjdGVkSXRlbXNbMF0uZGF0YVR5cGU7XHJcbiAgICAgIHRoaXMucnVsZS5jb250cm9sID0gZS5zZWxlY3RlZEl0ZW1zWzBdLmNvbnRyb2wgfHwgbmV3IEFYUXVlcnlCdWlsZGVyQ29udHJvbCgpO1xyXG4gICAgICB0aGlzLnJ1bGUuZGF0YUZpZWxkSXRlbVswXSA9IGUuc2VsZWN0ZWRJdGVtc1swXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RCb3gpIHtcclxuICAgICAgaWYgKHRoaXMucnVsZS5jb250cm9sLnR5cGUgPT09ICdzZWxlY3RCb3gnICYmIHRoaXMucnVsZS5jb250cm9sLm9wdGlvbnMubW9kZSA9PSAnbXVsdGlwbGUnKSB7XHJcbiAgICAgICAgdGhpcy5ydWxlLm9wZXJhdG9yID0gJ2NvbnRhaW5zJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJ1bGUub3BlcmF0b3IgPSAnZXF1YWwnO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2VsZWN0Qm94LnJlZnJlc2goKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dPcGVyYXRvclNlbGVjdEJveCA9IGZhbHNlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd09wZXJhdG9yU2VsZWN0Qm94ID0gdHJ1ZTtcclxuICAgIH0sIDIwKTtcclxuXHJcbiAgICB0aGlzLnJ1bGUudmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5ydWxlLnZhbHVlSXRlbSA9IFtdO1xyXG4gICAgdGhpcy5ydWxlLnRleHQgPSAnJztcclxuXHJcbiAgICBpZiAodGhpcy5ydWxlLmNvbnRyb2wudHlwZSA9PT0gJ3NlbGVjdEJveCcgJiYgdGhpcy5zZWxlY3RCb3hWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNob3dTZWxlY3RCb3ggPSBmYWxzZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93U2VsZWN0Qm94ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdEJveFZhbHVlLnJlZnJlc2goKTtcclxuICAgICAgfSwgMjApO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucnVsZS5jb250cm9sLnR5cGUgPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Qm94Qm9vbGVhbi5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJ1bGVDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGl0ZW1zOiB0aGlzLnJ1bGUgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVyYXRvckNoYW5nZShlKSB7XHJcbiAgICB0aGlzLnJ1bGUub3BlcmF0b3IgPSBlWzBdLnZhbHVlO1xyXG4gICAgdGhpcy5ydWxlQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBpdGVtczogdGhpcy5ydWxlIH0pO1xyXG5cclxuICAgIGlmIChlWzBdLnZhbHVlICE9PSAnbnVsbCcgJiYgZVswXS52YWx1ZSAhPT0gJ25vdC1udWxsJykge1xyXG4gICAgICB0aGlzLnNob3dWYWx1ZSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dWYWx1ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJ1bGUudmFsdWUgPSAnJztcclxuICAgICAgdGhpcy5ydWxlLnRleHQgPSAnJztcclxuICAgICAgdGhpcy5ydWxlLnZhbHVlSXRlbSA9IFtdO1xyXG4gICAgICB0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuICB2YWx1ZUNoYW5nZShlKSB7XHJcbiAgICAvLyB0aGlzLnJ1bGUudGV4dCA9IGUudmFsdWUgPT0gdW5kZWZpbmVkID8gZVswXS52YWx1ZSA6IChlLnZhbHVlID09IG51bGwgPyAnJyA6IGUudmFsdWUpO1xyXG5cclxuICAgIHRoaXMucnVsZS50ZXh0ID0gZVswXSA/IChlWzBdLnZhbHVlID09IG51bGwgPyAnJyA6IGVbMF0udmFsdWUpIDogZS52YWx1ZSA9PSBudWxsID8gJycgOiBlLnZhbHVlO1xyXG4gICAgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPSAnJztcclxuICAgIHRoaXMucnVsZUNoYW5nZWQuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgaXRlbXM6IHRoaXMucnVsZSB9KTtcclxuICB9XHJcbiAgb25EZW1hbmRMYWJlbENoYW5nZShlKSB7XHJcbiAgICAvLyB0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9IGUudmFsdWUgPT0gdW5kZWZpbmVkID8gJz8/Pz98JyArIGVbMF0udmFsdWUgOiAnPz8/P3wnICsgZS52YWx1ZTtcclxuICAgIHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID0gZVswXSA/ICc/Pz8/fCcgKyAoZVswXS52YWx1ZSA9PSBudWxsID8gJycgOiBlWzBdLnZhbHVlKSA6ICc/Pz8/fCcgKyAoZS52YWx1ZSA9PSBudWxsID8gJycgOiBlLnZhbHVlKTtcclxuICAgIHRoaXMucnVsZS52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5ydWxlLnRleHQgPSAnJztcclxuICAgIHRoaXMucnVsZS52YWx1ZUl0ZW0gPSBbXTtcclxuXHJcbiAgICB0aGlzLnJ1bGVDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGl0ZW1zOiB0aGlzLnJ1bGUgfSk7XHJcbiAgfVxyXG4gIHZhbHVlQm9vbGVhbkNoYW5nZShlKSB7XHJcbiAgICAvLyB0aGlzLnJ1bGUudGV4dCA9IGUudmFsdWUgPT0gdW5kZWZpbmVkID8gZVswXS52YWx1ZSA6IChlLnZhbHVlID09IG51bGwgPyAnJyA6IGUudmFsdWUpO1xyXG4gICAgdGhpcy5ydWxlLnRleHQgPSBlWzBdID8gKGVbMF0udmFsdWUgPT0gbnVsbCA/ICcnIDogZVswXS52YWx1ZSkgOiBlLnZhbHVlID09IG51bGwgPyAnJyA6IGUudmFsdWU7XHJcbiAgICB0aGlzLnJ1bGUudmFsdWUgPSBlLnZhbHVlID09IHVuZGVmaW5lZCA/IGVbMF0udmFsdWUgOiBlLnZhbHVlO1xyXG4gICAgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPSAnJztcclxuICAgIHRoaXMucnVsZUNoYW5nZWQuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgaXRlbXM6IHRoaXMucnVsZSB9KTtcclxuICB9XHJcbiAgZ2V0T25EZW1hbmROYW1lKHYpIHtcclxuICAgIHJldHVybiB2ID8gdi5zcGxpdCgnfCcpWzFdIDogJyc7XHJcbiAgfVxyXG4gIHNlbGVjdGVkSXRlbXNDaGFuZ2UoZSkge1xyXG4gICAgbGV0IG4gPSB0aGlzLmdldE9wdGlvbigndGV4dEZpZWxkJyk7XHJcblxyXG4gICAgaWYgKHRoaXMucnVsZS5jb250cm9sLm9wdGlvbnMubW9kZSA9PT0gJ3NpbmdsZScpIHtcclxuICAgICAgdGhpcy5ydWxlLnRleHQgPSBlWzBdW25dO1xyXG4gICAgICBpZiAodGhpcy5ydWxlICYmIHRoaXMucnVsZS5jb250cm9sLm9wdGlvbnMudmFsdWVGaWVsZCkge1xyXG4gICAgICAgIHRoaXMucnVsZS52YWx1ZSA9IGVbMF1bdGhpcy5ydWxlLmNvbnRyb2wub3B0aW9ucy52YWx1ZUZpZWxkXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJ1bGUudmFsdWUgPSBlWzBdLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucnVsZS52YWx1ZUl0ZW1bMF0gPSBlWzBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ydWxlLnRleHQgPSBlLm1hcCgoeCkgPT4geFtuXSkuam9pbignLSAnKTtcclxuICAgICAgY29uc3QgVEhBVCA9IHRoaXM7XHJcbiAgICAgIGlmIChUSEFULnJ1bGUgJiYgVEhBVC5ydWxlLmNvbnRyb2wub3B0aW9ucy52YWx1ZUZpZWxkKSB7XHJcbiAgICAgICAgVEhBVC5ydWxlLnZhbHVlID0gZS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybiBpdGVtW1RIQVQucnVsZS5jb250cm9sLm9wdGlvbnMudmFsdWVGaWVsZF07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ydWxlLnZhbHVlID0gZS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybiBpdGVtLnZhbHVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucnVsZS52YWx1ZUl0ZW0gPSBlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucnVsZUNoYW5nZWQuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgaXRlbXM6IHRoaXMucnVsZSB9KTtcclxuICAgIHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID0gJyc7XHJcbiAgfVxyXG4gIG9uRGVtYW5kTGFiZWwoZSkge1xyXG4gICAgLy8gaWYgKGUudmFsdWUgJiYgKHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID09ICc/Pz8/fCcgfHwgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9PT0gbnVsbCB8fCB0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9PT0gJycpKSB7XHJcbiAgICAvLyAgIHRoaXMudGV4dEJveE5hbWVWYWx1ZS5mb2N1cygpO1xyXG4gICAgLy8gfVxyXG4gICAgaWYgKGUudmFsdWUgPT0gZmFsc2UpIHtcclxuICAgICAgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPSAnJztcclxuICAgIH1cclxuICAgIHRoaXMuaXNPbkRlbWFuZExhYmVsID0gZS52YWx1ZTtcclxuICB9XHJcbiAgZ2V0UHJvdmlkZURhdGEgPSAoZSkgPT4ge1xyXG4gICAgaWYgKHRoaXMucnVsZSAmJiB0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zICYmIHRoaXMucnVsZS5jb250cm9sLm9wdGlvbnMuZGF0YVNvdXJjZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5ydWxlLmNvbnRyb2wub3B0aW9ucy5kYXRhU291cmNlKHsgLi4uZSwgb3B0aW9uc0RhdGE6IHsgLi4udGhpcy5ydWxlLmNvbnRyb2wub3B0aW9ucyB9IH0pO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGdldE9wdGlvbihuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zID8gdGhpcy5ydWxlLmNvbnRyb2wub3B0aW9uc1tuYW1lXSA6IG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
375
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci1ydWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BhY29yZXgvY29tcG9uZW50cy8iLCJzb3VyY2VzIjpbImxpYi9xdWVyeS1idWlsZGVyL3F1ZXJ5LWJ1aWxkZXItcnVsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBMkIscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBUXBGO0lBbUNFO1FBQUEsaUJBQWdCO1FBMUJoQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBUzFCLFNBQUksR0FBbUIsS0FBSyxDQUFDO1FBRzdCLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFHbkIsaUJBQVksR0FBMEMsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFHbEcsZ0JBQVcsR0FBMEMsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFFakcsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVqQyxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QiwwQkFBcUIsR0FBWSxJQUFJLENBQUM7UUFZdEMsdUJBQWtCLEdBQUcsVUFBQyxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPO2dCQUN6QixPQUFPLENBQUM7b0JBQ047d0JB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QUM7a0NBQWlCLG9CQUFvQjt1RUFBQztJQUVuQztRQUE5QixTQUFTLENBQUMsa0JBQWtCLENBQUM7a0NBQW1CLG9CQUFvQjt5RUFBQztJQUV2QztRQUE5QixTQUFTLENBQUMsa0JBQWtCLENBQUM7a0NBQW1CLGtCQUFrQjt5RUFBQztJQUM5QjtRQUFyQyxTQUFTLENBQUMseUJBQXlCLENBQUM7a0NBQU8seUJBQXlCOzZEQUFDO0lBRXRFO1FBREMsS0FBSyxFQUFFOztrRUFDa0I7SUFHMUI7UUFEQyxLQUFLLEVBQUU7a0NBQ0Ysa0JBQWtCOzZEQUFDO0lBR3pCO1FBREMsS0FBSyxFQUFFO2tDQUNBLG1CQUFtQjsrREFBQztJQUc1QjtRQURDLEtBQUssRUFBRTs7NkRBQ3FCO0lBRzdCO1FBREMsS0FBSyxFQUFFOzsrREFDVztJQUduQjtRQURDLE1BQU0sRUFBRTtrQ0FDSyxZQUFZO3FFQUF3RTtJQUdsRztRQURDLE1BQU0sRUFBRTtrQ0FDSSxZQUFZO29FQUF3RTtJQTNCdEYsMkJBQTJCO1FBTnZDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxlQUFlO1lBQ3pCLDJ5TUFBZ0Q7WUFDaEQsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFO1lBQ25DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO1NBQ3RDLENBQUM7O09BQ1csMkJBQTJCLENBbVZ2QztJQUFELGtDQUFDO0NBQUEsQUFuVkQsSUFtVkM7U0FuVlksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWFF1ZXJ5QnVpbGRlclJ1bGUsIEFYUXVlcnlCdWlsZGVyR3JvdXAsIEFYUXVlcnlCdWlsZGVyUnVsZUV2ZW50LCBBWFF1ZXJ5QnVpbGRlckNvbnRyb2wgfSBmcm9tICcuL3F1ZXJ5LWJ1aWxkZXIuY2xhc3MnO1xyXG5pbXBvcnQgeyBBWFRyYW5zbGF0b3IgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQgeyBBWFNlbGVjdEJveENvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdGJveC9zZWxlY3Rib3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhUZXh0Qm94Q29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dGJveC90ZXh0Ym94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24tZm9ybS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdheC1xdWVyeS1ydWxlJyxcclxuICB0ZW1wbGF0ZVVybDogJ3F1ZXJ5LWJ1aWxkZXItcnVsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgaG9zdDogeyBjbGFzczogJ2F4IGF4LXF1ZXJ5LXJ1bGUnIH0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhRdWVyeUJ1aWxkZXJSdWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdzZWxlY3RCb3gnKSBzZWxlY3RCb3g6IEFYU2VsZWN0Qm94Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEJveFZhbHVlJykgc2VsZWN0Qm94VmFsdWU6IEFYU2VsZWN0Qm94Q29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKCdzZWxlY3RCb3hCb29sZWFuJykgc2VsZWN0Qm94Qm9vbGVhbjogQVhTZWxlY3RCb3hDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RleHRCb3hOYW1lVmFsdWUnKSB0ZXh0Qm94TmFtZVZhbHVlOiBBWFRleHRCb3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChBWFZhbGlkYXRpb25Gb3JtQ29tcG9uZW50KSBmb3JtOiBBWFZhbGlkYXRpb25Gb3JtQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpXHJcbiAgaXNFZGl0aW5nOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBydWxlOiBBWFF1ZXJ5QnVpbGRlclJ1bGU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcGFyZW50OiBBWFF1ZXJ5QnVpbGRlckdyb3VwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIG1vZGU6ICduZXcnIHwgJ2VkaXQnID0gJ25ldyc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZmllbGRzOiBhbnlbXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvblJ1bGVEZWxldGU6IEV2ZW50RW1pdHRlcjxBWFF1ZXJ5QnVpbGRlclJ1bGVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYUXVlcnlCdWlsZGVyUnVsZUV2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBydWxlQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYUXVlcnlCdWlsZGVyUnVsZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhRdWVyeUJ1aWxkZXJSdWxlRXZlbnQ+KCk7XHJcblxyXG4gIHNob3dWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBpc09uRGVtYW5kTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc2hvd1NlbGVjdEJveDogYm9vbGVhbiA9IHRydWU7XHJcbiAgc2hvd09wZXJhdG9yU2VsZWN0Qm94OiBib29sZWFuID0gdHJ1ZTtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge31cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy9DYWxsZWQgYWZ0ZXIgbmdBZnRlckNvbnRlbnRJbml0IHdoZW4gdGhlIGNvbXBvbmVudCdzIHZpZXcgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuIEFwcGxpZXMgdG8gY29tcG9uZW50cyBvbmx5LlxyXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCcgdG8gdGhlIGNsYXNzLlxyXG4gICAgaWYgKHRoaXMucnVsZS5vbkRlbWFuZExhYmVsKSB7XHJcbiAgICAgIHRoaXMuaXNPbkRlbWFuZExhYmVsID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJvdmlkZURhdGFCb29sZWFuID0gKGUpID0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICByZXNvbHZlKFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB2YWx1ZTogJ3RydWUnLFxyXG4gICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLnRydWUnKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdmFsdWU6ICdmYWxzZScsXHJcbiAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZmFsc2UnKVxyXG4gICAgICAgIH1cclxuICAgICAgXSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBzYXZlUnVsZSgpIHtcclxuICAgIHRoaXMuZm9ybS52YWxpZGF0ZSgpLnRoZW4oKGMpID0+IHt9KTtcclxuICB9XHJcblxyXG4gIHByb3ZpZGVEYXRhT3BlcmF0b3IgPSAoZSkgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnJ1bGUuZGF0YVR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucnVsZSAmJiB0aGlzLnJ1bGUuY29udHJvbCAmJiB0aGlzLnJ1bGUuY29udHJvbC50eXBlICYmIHRoaXMucnVsZS5jb250cm9sLnR5cGUgPT0gJ3NlbGVjdEJveCcpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zLm1vZGUgPT0gJ211bHRpcGxlJykge1xyXG4gICAgICAgICAgICByZXNvbHZlKFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ2NvbnRhaW5zJyxcclxuICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5jb250YWlucycpXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ25vdC1jb250YWlucycsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubm90LWNvbnRhaW5zJylcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnY29udGFpbnMtYWxsJyxcclxuICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5jb250YWlucy1hbGwnKVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICdudWxsJyxcclxuICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5udWxsJylcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiAnbm90LW51bGwnLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm5vdC1udWxsJylcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICdlcXVhbCcsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZXF1YWwnKVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICdub3QtZXF1YWwnLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm5vdC1lcXVhbCcpXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ251bGwnLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm51bGwnKVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6ICdub3QtbnVsbCcsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubm90LW51bGwnKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc29sdmUoW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdlcXVhbCcsXHJcbiAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmVxdWFsJylcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHZhbHVlOiAnY29udGFpbnMnLFxyXG4gICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5jb250YWlucycpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB2YWx1ZTogJ3N0YXJ0LXdpdGgnLFxyXG4gICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5zdGFydC13aXRoJylcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHZhbHVlOiAnZW5kLXdpdGgnLFxyXG4gICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5lbmQtd2l0aCcpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB2YWx1ZTogJ25vdC1lcXVhbCcsXHJcbiAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLm5vdC1lcXVhbCcpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB2YWx1ZTogJ251bGwnLFxyXG4gICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5udWxsJylcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHZhbHVlOiAnbm90LW51bGwnLFxyXG4gICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5ub3QtbnVsbCcpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ydWxlLmRhdGFUeXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgIHJlc29sdmUoW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2YWx1ZTogJ2VxdWFsJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmVxdWFsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnZ3QnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIuZ3JlYXRlci10aGFuJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnZ3RlJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmdyZWF0ZXItdGhhbi1lcXVhbCcpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2YWx1ZTogJ2x0JyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmxlc3MtdGhhbicpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2YWx1ZTogJ2x0ZScsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5sZXNzLXRoYW4tZXF1YWwnKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFsdWU6ICdub3QtZXF1YWwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubm90LWVxdWFsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbnVsbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5udWxsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbm90LW51bGwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubm90LW51bGwnKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnJ1bGUuZGF0YVR5cGUgPT09ICdib29sZWFuJykge1xyXG4gICAgICAgIHJlc29sdmUoW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB2YWx1ZTogJ2VxdWFsJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgncXVlcnlCdWlsZGVyLmVxdWFsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbnVsbCcsXHJcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ3F1ZXJ5QnVpbGRlci5udWxsJylcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhbHVlOiAnbm90LW51bGwnLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdxdWVyeUJ1aWxkZXIubm90LW51bGwnKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJlc29sdmUoW10pO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlRWRpdENsaWNrKCkge1xyXG4gICAgdGhpcy5pc0VkaXRpbmcgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ29tbWl0Q2xpY2soKSB7XHJcbiAgICB0aGlzLmlzRWRpdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5ydWxlQ2hhbmdlZC5lbWl0KHsgaXRlbXM6IHRoaXMucnVsZSwgY29tcG9uZW50OiB0aGlzIH0pO1xyXG4gIH1cclxuICBoYW5kbGVSZW1vdmVDbGljaygpIHtcclxuICAgIHRoaXMub25SdWxlRGVsZXRlLmVtaXQoeyBpdGVtczogdGhpcy5ydWxlLCBjb21wb25lbnQ6IHRoaXMgfSk7XHJcbiAgfVxyXG4gIGNhcHRpb25DaGFuZ2UoZSkge1xyXG4gICAgaWYgKGUuc2VsZWN0ZWRJdGVtc1swXSkge1xyXG4gICAgICB0aGlzLnJ1bGUuY2FwdGlvbiA9IGUuc2VsZWN0ZWRJdGVtc1swXS5jYXB0aW9uO1xyXG4gICAgICB0aGlzLnJ1bGUuZGF0YUZpZWxkID0gZS5zZWxlY3RlZEl0ZW1zWzBdLmRhdGFGaWVsZDtcclxuICAgICAgdGhpcy5ydWxlLmRhdGFUeXBlID0gZS5zZWxlY3RlZEl0ZW1zWzBdLmRhdGFUeXBlO1xyXG4gICAgICB0aGlzLnJ1bGUuY29udHJvbCA9IGUuc2VsZWN0ZWRJdGVtc1swXS5jb250cm9sIHx8IG5ldyBBWFF1ZXJ5QnVpbGRlckNvbnRyb2woKTtcclxuICAgICAgdGhpcy5ydWxlLmRhdGFGaWVsZEl0ZW1bMF0gPSBlLnNlbGVjdGVkSXRlbXNbMF07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0Qm94KSB7XHJcbiAgICAgIGlmICh0aGlzLnJ1bGUuY29udHJvbC50eXBlID09PSAnc2VsZWN0Qm94JyAmJiB0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zLm1vZGUgPT0gJ211bHRpcGxlJykge1xyXG4gICAgICAgIHRoaXMucnVsZS5vcGVyYXRvciA9ICdjb250YWlucyc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ydWxlLm9wZXJhdG9yID0gJ2VxdWFsJztcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlbGVjdEJveC5yZWZyZXNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaG93T3BlcmF0b3JTZWxlY3RCb3ggPSBmYWxzZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dPcGVyYXRvclNlbGVjdEJveCA9IHRydWU7XHJcbiAgICB9LCAyMCk7XHJcblxyXG4gICAgdGhpcy5ydWxlLnZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMucnVsZS52YWx1ZUl0ZW0gPSBbXTtcclxuICAgIHRoaXMucnVsZS50ZXh0ID0gJyc7XHJcblxyXG4gICAgaWYgKHRoaXMucnVsZS5jb250cm9sLnR5cGUgPT09ICdzZWxlY3RCb3gnICYmIHRoaXMuc2VsZWN0Qm94VmFsdWUpIHtcclxuICAgICAgdGhpcy5zaG93U2VsZWN0Qm94ID0gZmFsc2U7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd1NlbGVjdEJveCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RCb3hWYWx1ZS5yZWZyZXNoKCk7XHJcbiAgICAgIH0sIDIwKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJ1bGUuY29udHJvbC50eXBlID09ICdib29sZWFuJykge1xyXG4gICAgICB0aGlzLnNlbGVjdEJveEJvb2xlYW4ucmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ydWxlQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBpdGVtczogdGhpcy5ydWxlIH0pO1xyXG4gIH1cclxuXHJcbiAgb3BlcmF0b3JDaGFuZ2UoZSkge1xyXG4gICAgdGhpcy5ydWxlLm9wZXJhdG9yID0gZVswXS52YWx1ZTtcclxuICAgIHRoaXMucnVsZUNoYW5nZWQuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgaXRlbXM6IHRoaXMucnVsZSB9KTtcclxuXHJcbiAgICBpZiAoZVswXS52YWx1ZSAhPT0gJ251bGwnICYmIGVbMF0udmFsdWUgIT09ICdub3QtbnVsbCcpIHtcclxuICAgICAgdGhpcy5zaG93VmFsdWUgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93VmFsdWUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ydWxlLnZhbHVlID0gJyc7XHJcbiAgICAgIHRoaXMucnVsZS50ZXh0ID0gJyc7XHJcbiAgICAgIHRoaXMucnVsZS52YWx1ZUl0ZW0gPSBbXTtcclxuICAgICAgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPSAnJztcclxuICAgIH1cclxuICB9XHJcbiAgdmFsdWVDaGFuZ2UoZSkge1xyXG4gICAgLy8gdGhpcy5ydWxlLnRleHQgPSBlLnZhbHVlID09IHVuZGVmaW5lZCA/IGVbMF0udmFsdWUgOiAoZS52YWx1ZSA9PSBudWxsID8gJycgOiBlLnZhbHVlKTtcclxuXHJcbiAgICB0aGlzLnJ1bGUudGV4dCA9IGVbMF0gPyAoZVswXS52YWx1ZSA9PSBudWxsID8gJycgOiBlWzBdLnZhbHVlKSA6IGUudmFsdWUgPT0gbnVsbCA/ICcnIDogZS52YWx1ZTtcclxuICAgIHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID0gJyc7XHJcbiAgICB0aGlzLnJ1bGVDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGl0ZW1zOiB0aGlzLnJ1bGUgfSk7XHJcbiAgfVxyXG4gIG9uRGVtYW5kTGFiZWxDaGFuZ2UoZSkge1xyXG4gICAgLy8gdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPSBlLnZhbHVlID09IHVuZGVmaW5lZCA/ICc/Pz8/fCcgKyBlWzBdLnZhbHVlIDogJz8/Pz98JyArIGUudmFsdWU7XHJcbiAgICB0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9IGVbMF0gPyAnPz8/P3wnICsgKGVbMF0udmFsdWUgPT0gbnVsbCA/ICcnIDogZVswXS52YWx1ZSkgOiAnPz8/P3wnICsgKGUudmFsdWUgPT0gbnVsbCA/ICcnIDogZS52YWx1ZSk7XHJcbiAgICB0aGlzLnJ1bGUudmFsdWUgPSAnJztcclxuICAgIHRoaXMucnVsZS50ZXh0ID0gJyc7XHJcbiAgICB0aGlzLnJ1bGUudmFsdWVJdGVtID0gW107XHJcblxyXG4gICAgdGhpcy5ydWxlQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBpdGVtczogdGhpcy5ydWxlIH0pO1xyXG4gIH1cclxuICB2YWx1ZUJvb2xlYW5DaGFuZ2UoZSkge1xyXG4gICAgLy8gdGhpcy5ydWxlLnRleHQgPSBlLnZhbHVlID09IHVuZGVmaW5lZCA/IGVbMF0udmFsdWUgOiAoZS52YWx1ZSA9PSBudWxsID8gJycgOiBlLnZhbHVlKTtcclxuICAgIHRoaXMucnVsZS50ZXh0ID0gZVswXSA/IChlWzBdLnZhbHVlID09IG51bGwgPyAnJyA6IGVbMF0udmFsdWUpIDogZS52YWx1ZSA9PSBudWxsID8gJycgOiBlLnZhbHVlO1xyXG4gICAgdGhpcy5ydWxlLnZhbHVlID0gZS52YWx1ZSA9PSB1bmRlZmluZWQgPyBlWzBdLnZhbHVlIDogZS52YWx1ZTtcclxuICAgIHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID0gJyc7XHJcbiAgICB0aGlzLnJ1bGVDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGl0ZW1zOiB0aGlzLnJ1bGUgfSk7XHJcbiAgfVxyXG4gIGdldE9uRGVtYW5kTmFtZSh2KSB7XHJcbiAgICByZXR1cm4gdiA/IHYuc3BsaXQoJ3wnKVsxXSA6ICcnO1xyXG4gIH1cclxuICBzZWxlY3RlZEl0ZW1zQ2hhbmdlKGUpIHtcclxuICAgIGxldCBuID0gdGhpcy5nZXRPcHRpb24oJ3RleHRGaWVsZCcpO1xyXG5cclxuICAgIGlmICh0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zLm1vZGUgPT09ICdzaW5nbGUnKSB7XHJcbiAgICAgIHRoaXMucnVsZS50ZXh0ID0gZVswXVtuXTtcclxuICAgICAgaWYgKHRoaXMucnVsZSAmJiB0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zLnZhbHVlRmllbGQpIHtcclxuICAgICAgICB0aGlzLnJ1bGUudmFsdWUgPSBlWzBdW3RoaXMucnVsZS5jb250cm9sLm9wdGlvbnMudmFsdWVGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ydWxlLnZhbHVlID0gZVswXS52YWx1ZTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJ1bGUudmFsdWVJdGVtWzBdID0gZVswXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucnVsZS50ZXh0ID0gZS5tYXAoKHgpID0+IHhbbl0pLmpvaW4oJy0gJyk7XHJcbiAgICAgIGNvbnN0IFRIQVQgPSB0aGlzO1xyXG4gICAgICBpZiAoVEhBVC5ydWxlICYmIFRIQVQucnVsZS5jb250cm9sLm9wdGlvbnMudmFsdWVGaWVsZCkge1xyXG4gICAgICAgIFRIQVQucnVsZS52YWx1ZSA9IGUubWFwKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICByZXR1cm4gaXRlbVtUSEFULnJ1bGUuY29udHJvbC5vcHRpb25zLnZhbHVlRmllbGRdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucnVsZS52YWx1ZSA9IGUubWFwKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgICByZXR1cm4gaXRlbS52YWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJ1bGUudmFsdWVJdGVtID0gZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJ1bGVDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGl0ZW1zOiB0aGlzLnJ1bGUgfSk7XHJcbiAgICB0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9ICcnO1xyXG4gIH1cclxuICBvbkRlbWFuZExhYmVsKGUpIHtcclxuICAgIC8vIGlmIChlLnZhbHVlICYmICh0aGlzLnJ1bGUub25EZW1hbmRMYWJlbCA9PSAnPz8/P3wnIHx8IHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID09PSB1bmRlZmluZWQgfHwgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPT09IG51bGwgfHwgdGhpcy5ydWxlLm9uRGVtYW5kTGFiZWwgPT09ICcnKSkge1xyXG4gICAgLy8gICB0aGlzLnRleHRCb3hOYW1lVmFsdWUuZm9jdXMoKTtcclxuICAgIC8vIH1cclxuICAgIGlmIChlLnZhbHVlID09IGZhbHNlKSB7XHJcbiAgICAgIHRoaXMucnVsZS5vbkRlbWFuZExhYmVsID0gJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzT25EZW1hbmRMYWJlbCA9IGUudmFsdWU7XHJcbiAgfVxyXG4gIGdldFByb3ZpZGVEYXRhID0gKGUpID0+IHtcclxuICAgIGlmICh0aGlzLnJ1bGUgJiYgdGhpcy5ydWxlLmNvbnRyb2wub3B0aW9ucyAmJiB0aGlzLnJ1bGUuY29udHJvbC5vcHRpb25zLmRhdGFTb3VyY2UpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucnVsZS5jb250cm9sLm9wdGlvbnMuZGF0YVNvdXJjZSh7IC4uLmUsIG9wdGlvbnNEYXRhOiB7IC4uLnRoaXMucnVsZS5jb250cm9sLm9wdGlvbnMgfSB9KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBnZXRPcHRpb24obmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5ydWxlLmNvbnRyb2wub3B0aW9ucyA/IHRoaXMucnVsZS5jb250cm9sLm9wdGlvbnNbbmFtZV0gOiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=