@vgip/meta-ui 1.4.4 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/esm2020/lib/common/metaAutofocus.directive.mjs +3 -3
  2. package/esm2020/lib/common/metaIcons.pipe.mjs +3 -3
  3. package/esm2020/lib/common/metaModel.pipe.mjs +3 -3
  4. package/esm2020/lib/common/metaStripHtml.pipe.mjs +3 -3
  5. package/esm2020/lib/common/utils/colorThemes.mjs +3 -1
  6. package/esm2020/lib/field.mjs +192 -172
  7. package/esm2020/lib/fieldAbstract.mjs +65 -65
  8. package/esm2020/lib/fieldBoolean/index.mjs +4 -4
  9. package/esm2020/lib/fieldDatetime/index.mjs +8 -8
  10. package/esm2020/lib/fieldInput/index.mjs +7 -7
  11. package/esm2020/lib/fieldRadio/index.mjs +8 -8
  12. package/esm2020/lib/fieldRichtext/index.mjs +8 -8
  13. package/esm2020/lib/fieldText/index.mjs +4 -4
  14. package/esm2020/lib/fieldUnknown/index.mjs +3 -3
  15. package/esm2020/lib/index.mjs +19 -21
  16. package/esm2020/lib/services/metaContext/index.mjs +3 -3
  17. package/esm2020/lib/services/metaMsg/index.mjs +3 -3
  18. package/esm2020/lib/services/metaReference/index.mjs +3 -3
  19. package/esm2020/lib/services/metaResource/index.mjs +3 -3
  20. package/esm2020/lib/services/metaResource/metaHttpClient.mjs +3 -3
  21. package/esm2020/lib/services/metaTracker/index.mjs +3 -3
  22. package/esm2020/lib/services/resourceDrafts/index.mjs +3 -3
  23. package/fesm2015/vgip-meta-ui.mjs +343 -323
  24. package/fesm2015/vgip-meta-ui.mjs.map +1 -1
  25. package/fesm2020/vgip-meta-ui.mjs +343 -323
  26. package/fesm2020/vgip-meta-ui.mjs.map +1 -1
  27. package/{vgip-meta-ui.d.ts → index.d.ts} +0 -0
  28. package/lib/common/metaAutofocus.directive.d.ts +1 -1
  29. package/lib/common/metaIcons.pipe.d.ts +1 -1
  30. package/lib/common/metaModel.pipe.d.ts +1 -1
  31. package/lib/common/metaStripHtml.pipe.d.ts +1 -1
  32. package/lib/field.d.ts +31 -25
  33. package/lib/fieldAbstract.d.ts +9 -9
  34. package/lib/fieldBoolean/index.d.ts +1 -1
  35. package/lib/fieldDatetime/index.d.ts +2 -2
  36. package/lib/fieldInput/index.d.ts +2 -2
  37. package/lib/fieldRadio/index.d.ts +2 -2
  38. package/lib/fieldRichtext/index.d.ts +1 -1
  39. package/lib/fieldText/index.d.ts +1 -1
  40. package/lib/fieldUnknown/index.d.ts +1 -1
  41. package/package.json +5 -5
@@ -19,6 +19,67 @@ export class FieldAbstract {
19
19
  this.logicalDisabled = false;
20
20
  this.flags = {};
21
21
  }
22
+ get parentChangeSubject() {
23
+ if (!Object.getOwnPropertyDescriptor(this.parent, '$changeSubject')) {
24
+ Object.defineProperty(this.parent, '$changeSubject', {
25
+ value: new BehaviorSubject({}).pipe(debounceTime(300), distinctUntilChanged()),
26
+ writable: false,
27
+ enumerable: false
28
+ });
29
+ }
30
+ return this.parent.$changeSubject;
31
+ }
32
+ get isPersistedParent() {
33
+ // eslint-disable-next-line no-underscore-dangle
34
+ return this.parent && this.parent._vgis && (this.parent._vgis.externalId || this.parent._vgis.id);
35
+ }
36
+ get validations() {
37
+ return this.meta.validations || {};
38
+ }
39
+ get name() {
40
+ return (typeof (this.index) === 'undefined') ? this.meta.name : `${this.meta.name}[${this.index}]`;
41
+ }
42
+ get default() {
43
+ return this.meta.default || this.meta.defaultValue;
44
+ }
45
+ get disabled() {
46
+ // TODO conditions
47
+ return this.logicalDisabled || this.validations.disabled || this.meta.disabled === true || this.flags.disabled
48
+ || (this.flags.updatable === false && this.isPersistedParent);
49
+ }
50
+ get readonly() {
51
+ // TODO conditions
52
+ return !!(this.validations.readonly || this.meta.readonly || (this.flags.updatable === false));
53
+ }
54
+ get sendToServer() {
55
+ return this.isPersistedParent ? (this.flags.updatable !== false) : (this.flags.creatable !== false);
56
+ }
57
+ get uiInput() {
58
+ if (!this.mainInput) {
59
+ this.mainInput = this.elementRef.nativeElement.querySelector('.main:not([type="hidden"]):not(.standalone)');
60
+ }
61
+ return this.mainInput;
62
+ }
63
+ get isOptional() {
64
+ const baseOptional = !this.meta.unset && !this.validations.required && !this.meta.visible;
65
+ switch (this.meta.type) {
66
+ case 'composite': {
67
+ if (baseOptional) {
68
+ return !this.meta.fields.find((f) => !f.$optional);
69
+ }
70
+ return false;
71
+ }
72
+ case 'list': {
73
+ if (baseOptional) {
74
+ return !(this.parent[this.meta.name] instanceof Array && this.parent[this.meta.name].length) && !this.meta.min;
75
+ }
76
+ return false;
77
+ }
78
+ default: {
79
+ return baseOptional && typeof (this.parent[this.meta.name]) === 'undefined';
80
+ }
81
+ }
82
+ }
22
83
  static setup(instance, parent, meta) { }
23
84
  ngAfterViewInit() {
24
85
  if (this.elementRef) {
@@ -136,26 +197,6 @@ export class FieldAbstract {
136
197
  }
137
198
  }
138
199
  }
139
- get isOptional() {
140
- const baseOptional = !this.meta.unset && !this.validations.required && !this.meta.visible;
141
- switch (this.meta.type) {
142
- case 'composite': {
143
- if (baseOptional) {
144
- return !this.meta.fields.find((f) => !f.$optional);
145
- }
146
- return false;
147
- }
148
- case 'list': {
149
- if (baseOptional) {
150
- return !(this.parent[this.meta.name] instanceof Array && this.parent[this.meta.name].length) && !this.meta.min;
151
- }
152
- return false;
153
- }
154
- default: {
155
- return baseOptional && typeof (this.parent[this.meta.name]) === 'undefined';
156
- }
157
- }
158
- }
159
200
  focus() {
160
201
  const input = this.uiInput;
161
202
  if (input) {
@@ -216,51 +257,10 @@ export class FieldAbstract {
216
257
  }
217
258
  this.meta.$optional = this.isOptional;
218
259
  }
219
- get parentChangeSubject() {
220
- if (!Object.getOwnPropertyDescriptor(this.parent, '$changeSubject')) {
221
- Object.defineProperty(this.parent, '$changeSubject', {
222
- value: new BehaviorSubject({}).pipe(debounceTime(300), distinctUntilChanged()),
223
- writable: false,
224
- enumerable: false
225
- });
226
- }
227
- return this.parent.$changeSubject;
228
- }
229
- get isPersistedParent() {
230
- // eslint-disable-next-line no-underscore-dangle
231
- return this.parent && this.parent._vgis && (this.parent._vgis.externalId || this.parent._vgis.id);
232
- }
233
260
  clear() {
234
261
  delete this.model;
235
262
  this.onModelChange(this.model);
236
263
  }
237
- get validations() {
238
- return this.meta.validations || {};
239
- }
240
- get name() {
241
- return (typeof (this.index) === 'undefined') ? this.meta.name : `${this.meta.name}[${this.index}]`;
242
- }
243
- get default() {
244
- return this.meta.default || this.meta.defaultValue;
245
- }
246
- get disabled() {
247
- // TODO conditions
248
- return this.logicalDisabled || this.validations.disabled || this.meta.disabled === true || this.flags.disabled
249
- || (this.flags.updatable === false && this.isPersistedParent);
250
- }
251
- get readonly() {
252
- // TODO conditions
253
- return !!(this.validations.readonly || this.meta.readonly || (this.flags.updatable === false));
254
- }
255
- get sendToServer() {
256
- return this.isPersistedParent ? (this.flags.updatable !== false) : (this.flags.creatable !== false);
257
- }
258
- get uiInput() {
259
- if (!this.mainInput) {
260
- this.mainInput = this.elementRef.nativeElement.querySelector('.main:not([type="hidden"]):not(.standalone)');
261
- }
262
- return this.mainInput;
263
- }
264
264
  applyValidations() {
265
265
  this.validationAttributes.forEach((attribute) => {
266
266
  const validation = this.validations[attribute];
@@ -270,9 +270,9 @@ export class FieldAbstract {
270
270
  });
271
271
  }
272
272
  }
273
- FieldAbstract.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: FieldAbstract, deps: [], target: i0.ɵɵFactoryTarget.Directive });
274
- FieldAbstract.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.2", type: FieldAbstract, ngImport: i0 });
275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: FieldAbstract, decorators: [{
273
+ FieldAbstract.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: FieldAbstract, deps: [], target: i0.ɵɵFactoryTarget.Directive });
274
+ FieldAbstract.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.0", type: FieldAbstract, ngImport: i0 });
275
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: FieldAbstract, decorators: [{
276
276
  type: Directive
277
277
  }] });
278
278
  export class MetaElem {
@@ -283,4 +283,4 @@ export class MetaElemDisableadble {
283
283
  this.elementRef.nativeElement.classList.remove(this.cssmodifier);
284
284
  }
285
285
  }
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRBYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21ldGEtdWkvc3JjL2xpYi9maWVsZEFic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUEyQyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYseURBQXlEO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBUXhFLGtFQUFrRTtBQUNsRSxNQUFNLE9BQWdCLGFBQWE7SUFGbkM7UUFpQkUseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBRzFCLGdCQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVsRCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixVQUFLLEdBQVEsRUFBRSxDQUFDO0tBb1FqQjtJQWxRQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUM7SUFFeEMsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssT0FBTyxFQUFFO2dCQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLG1CQUFtQixDQUFDO2FBQzVDO2lCQUFNO2dCQUNMLFFBQVEsSUFBSSxDQUFDLGVBQWUsRUFBRTtvQkFDNUIsS0FBSyxXQUFXO3dCQUNkLElBQUksQ0FBQyxlQUFlLEdBQUcseUJBQXlCLENBQUM7d0JBQ2pELE1BQU07b0JBQ1IsS0FBSyxPQUFPO3dC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LElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxDQUFDO2FBQ3pFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzswR0F6Um1CLGFBQWE7OEZBQWIsYUFBYTsyRkFBYixhQUFhO2tCQUZsQyxTQUFTOztBQStSVixNQUFNLE9BQU8sUUFBUTtDQUdwQjtBQUVELE1BQU0sT0FBZ0Isb0JBQW9CO0lBS3hDLE9BQU87UUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQEF1dGhvcjogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBEYXRlOiAyMDE5LTA5LTE5IDE3OjM0OjQ0XG4gKiBATGFzdCBNb2RpZmllZCBieTogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDQtMTggMjE6MTg6MDhcbiAqL1xuXG5pbXBvcnQgeyBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBFdmVudEVtaXR0ZXIsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBtZXRhRGFyaywgbWV0YUxpZ2h0IH0gZnJvbSAnLi9jb21tb24vdXRpbHMvY29sb3JUaGVtZXMnO1xuaW1wb3J0IHsgZXh0cmFjdFZhbHVlQnlTbWFydFByb3AgfSBmcm9tICcuLi9saWIvY29tbW9uL3V0aWxzL3NtYXJ0UHJvcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1ldGFGaWVsZDxUIGV4dGVuZHMgRmllbGRBYnN0cmFjdD4ge1xuICBtZXRhOiBhbnk7XG4gIG1vZGVsOiBhbnk7XG59XG5cbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQgeyAvLyBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgbW9kZWw6IGFueTtcbiAgbWV0YTogYW55O1xuICBpbmRleDogbnVtYmVyO1xuICBwYXJlbnQ6IGFueTtcbiAgaW50ZWdyYXRpb25Db2RlOiBzdHJpbmc7XG4gIGludGVncmF0aW9uSWNvbjogc3RyaW5nO1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcbiAgbW9kZWxJbnB1dDogSFRNTElucHV0RWxlbWVudDtcbiAgbW9kZWxDb250cm9sOiBIVE1MSW5wdXRFbGVtZW50O1xuICBtYWluSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIGtleUxpc3RlbmVyQWN0aXZlOiBib29sZWFuO1xuICBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIG9uTGVhdmU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICB2YWxpZGF0aW9uQXR0cmlidXRlcyA9IFtdO1xuICBwcmV2aWV3OiBib29sZWFuO1xuICBwcmV2TW9kZWw6IGFueTtcbiAgY2hhbmdlRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudHMnKTtcbiAgbWV0YVJlc291cmNlU2VydmljZTogYW55O1xuICBsb2dpY2FsRGlzYWJsZWQgPSBmYWxzZTtcbiAgdGhlbWU6IHN0cmluZztcbiAgZmxhZ3M6IGFueSA9IHt9O1xuXG4gIHN0YXRpYyBzZXR1cChpbnN0YW5jZSwgcGFyZW50LCBtZXRhKSB7IH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuZWxlbWVudFJlZikge1xuICAgICAgaWYgKHRoaXMuaW50ZWdyYXRpb25Db2RlID09PSAnbW9ja3MnKSB7XG4gICAgICAgIHRoaXMuaW50ZWdyYXRpb25JY29uID0gJ0JyYW5kLWljb24tdm9uYWdlJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnRlZ3JhdGlvbkNvZGUpIHtcbiAgICAgICAgICBjYXNlICdvZmZpY2UzNjUnOlxuICAgICAgICAgICAgdGhpcy5pbnRlZ3JhdGlvbkljb24gPSAnQnJhbmQtaWNvbi1vZmZpY2UtY29sb3InO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnc3VnYXInOlxuICAgICAgICAgICAgdGhpcy5pbnRlZ3JhdGlvbkljb24gPSAnQnJhbmQtaWNvbi1zdWdhcmNybS1jb2xvcic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdtc2R5bmFtaWNzJzpcbiAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRpb25JY29uID0gJ0JyYW5kLWljb24tZHluYW1pY3MtY29sb3InO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRoaXMuaW50ZWdyYXRpb25JY29uID0gYEJyYW5kLWljb24tJHsodGhpcy5pbnRlZ3JhdGlvbkNvZGUgfHwgJycpLnRvTG93ZXJDYXNlKCl9LWNvbG9yYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMubWV0YSwgJyRvcHRpb25hbCcsIHtcbiAgICAgICAgdmFsdWU6ICh0eXBlb2YodGhpcy5kZWZhdWx0KSA9PT0gJ3VuZGVmaW5lZCcpICYmIHRoaXMuaXNPcHRpb25hbCxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgICAgdGhpcy5mbGFncyA9IHRoaXMubWV0YS5mbGFncyB8fCB7fTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLm1ldGEsICckaGlkZGVuJywge1xuICAgICAgICB2YWx1ZTogIXRoaXMuaXNQZXJzaXN0ZWRQYXJlbnQgJiYgdGhpcy5mbGFncy5jcmVhdGFibGUgPT09IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICBpZiAodHlwZW9mKHRoaXMubWV0YS5oaWRkZW4pICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBpZiAodHlwZW9mKHRoaXMubWV0YS5oaWRkZW4pID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGNvbnN0IHNldEhpZGRlbkJ5UHJvcGVydHlDb25maWcgPSAocGFyKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mKHRoaXMubWV0YS5oaWRkZW5bcGFyXSkgPT09ICdib29sZWFuJykgeyAvLyBhbnkgdmFsdWUgbWFrZXMgbWUgaGlkZGVuXG4gICAgICAgICAgICAgIHRoaXMubWV0YS4kaGlkZGVuID0gISF0aGlzLnBhcmVudFtwYXJdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBleHRyYWN0VmFsdWVCeVNtYXJ0UHJvcCh0aGlzLnBhcmVudCwgcGFyKTtcbiAgICAgICAgICAgICAgY29uc3QgcGFyVmFsdWUgPSB2YWx1ZSA/ICh2YWx1ZS5pZCB8fCB2YWx1ZS52YWx1ZSB8fCB2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgdGhpcy5tZXRhLiRoaWRkZW4gPSB0aGlzLm1ldGEuaGlkZGVuW3Bhcl0gPT09IHBhclZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9yIChjb25zdCBwYXIgb2YgT2JqZWN0LmtleXModGhpcy5tZXRhLmhpZGRlbikpIHtcbiAgICAgICAgICAgIHNldEhpZGRlbkJ5UHJvcGVydHlDb25maWcocGFyKTtcbiAgICAgICAgICAgIHRoaXMucGFyZW50Q2hhbmdlU3ViamVjdC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eShwYXIuc3BsaXQoJy4nKVswXSkpIHtcbiAgICAgICAgICAgICAgICBzZXRIaWRkZW5CeVByb3BlcnR5Q29uZmlnKHBhcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWV0YS4kaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZih0aGlzLm1ldGEuaGlkZGVuKSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBpZiAodGhpcy5tZXRhLmhpZGRlbi50b1VwcGVyQ2FzZSgpID09PSAnQ1JFQVRFJykge1xuICAgICAgICAgICAgdGhpcy5tZXRhLiRoaWRkZW4gPSAhdGhpcy5pc1BlcnNpc3RlZFBhcmVudDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWV0YS5oaWRkZW4udG9VcHBlckNhc2UoKSA9PT0gJ1VQREFURScpIHtcbiAgICAgICAgICAgIHRoaXMubWV0YS4kaGlkZGVuID0gdGhpcy5pc1BlcnNpc3RlZFBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tZXRhLiRoaWRkZW49ICEhdGhpcy5tZXRhLmhpZGRlbjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5tZXRhLCAnJGludmlzaWJsZScsIHtcbiAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICBpZiAodHlwZW9mKHRoaXMubWV0YS52aXNpYmxlKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLm1ldGEudmlzaWJsZSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3Qgc2V0SW52aXNpYmxlQnlQcm9wZXJ0eUNvbmZpZyA9IChwYXIpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YodGhpcy5tZXRhLnZpc2libGVbcGFyXSkgPT09ICdib29sZWFuJykgeyAvLyBhbnkgdmFsdWUgbWFrZXMgbWUgaGlkZGVuXG4gICAgICAgICAgICAgIHRoaXMubWV0YS4kaW52aXNpYmxlID0gIXRoaXMucGFyZW50W3Bhcl07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGV4dHJhY3RWYWx1ZUJ5U21hcnRQcm9wKHRoaXMucGFyZW50LCBwYXIpO1xuICAgICAgICAgICAgICBjb25zdCBwYXJWYWx1ZSA9IHZhbHVlID8gKHZhbHVlLmlkIHx8IHZhbHVlLnZhbHVlIHx8IHZhbHVlKSA6IHZhbHVlO1xuICAgICAgICAgICAgICB0aGlzLm1ldGEuJGludmlzaWJsZSA9IHRoaXMubWV0YS52aXNpYmxlW3Bhcl0gIT09IHBhclZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9yIChjb25zdCBwYXIgb2YgT2JqZWN0LmtleXModGhpcy5tZXRhLnZpc2libGUpKSB7XG4gICAgICAgICAgICBzZXRJbnZpc2libGVCeVByb3BlcnR5Q29uZmlnKHBhcik7XG4gICAgICAgICAgICB0aGlzLnBhcmVudENoYW5nZVN1YmplY3Quc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkocGFyLnNwbGl0KCcuJylbMF0pKSB7XG4gICAgICAgICAgICAgICAgc2V0SW52aXNpYmxlQnlQcm9wZXJ0eUNvbmZpZyhwYXIpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1ldGEuJGludmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucGFyZW50W3RoaXMubWV0YS5uYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YodGhpcy5tZXRhLnZpc2libGUpID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGlmICh0aGlzLm1ldGEudmlzaWJsZS50b1VwcGVyQ2FzZSgpID09PSAnQ1JFQVRFJykge1xuICAgICAgICAgICAgdGhpcy5tZXRhLiRpbnZpc2libGUgPSB0aGlzLmlzUGVyc2lzdGVkUGFyZW50O1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZXRhLnZpc2libGUudG9VcHBlckNhc2UoKSA9PT0gJ1VQREFURScpIHtcbiAgICAgICAgICAgIHRoaXMubWV0YS4kaW52aXNpYmxlID0gIXRoaXMuaXNQZXJzaXN0ZWRQYXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnRoZW1lICE9PSAnaW5oZXJpdCcpIHtcbiAgICAgICAgY29uc3QgbWV0YVRoZW1lID0gdGhpcy50aGVtZSA9PT0gJ2RhcmsnID8gbWV0YURhcmsgOiBtZXRhTGlnaHQ7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1ldGFUaGVtZS5wcm9wZXJ0aWVzKSkge1xuICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGtleSwgbWV0YVRoZW1lLnByb3BlcnRpZXNba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgaXNPcHRpb25hbCgpIHtcbiAgICBjb25zdCBiYXNlT3B0aW9uYWwgPSAhdGhpcy5tZXRhLnVuc2V0ICYmICF0aGlzLnZhbGlkYXRpb25zLnJlcXVpcmVkICYmICF0aGlzLm1ldGEudmlzaWJsZTtcbiAgICBzd2l0Y2ggKHRoaXMubWV0YS50eXBlKSB7XG4gICAgICBjYXNlICdjb21wb3NpdGUnOiB7XG4gICAgICAgIGlmIChiYXNlT3B0aW9uYWwpIHtcbiAgICAgICAgICByZXR1cm4gIXRoaXMubWV0YS5maWVsZHMuZmluZCgoZikgPT4gIWYuJG9wdGlvbmFsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjYXNlICdsaXN0Jzoge1xuICAgICAgICBpZiAoYmFzZU9wdGlvbmFsKSB7XG4gICAgICAgICAgcmV0dXJuICEodGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdIGluc3RhbmNlb2YgQXJyYXkgJiYgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdLmxlbmd0aCkgJiYgIXRoaXMubWV0YS5taW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gYmFzZU9wdGlvbmFsICYmIHR5cGVvZih0aGlzLnBhcmVudFt0aGlzLm1ldGEubmFtZV0pID09PSAndW5kZWZpbmVkJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMudWlJbnB1dDtcbiAgICBpZiAoaW5wdXQpIHtcbiAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgbW9kZWxUb1ZhbHVlKG0sIHZhbHVlVHlwZSkge1xuICAgIGlmICh0eXBlb2YobSkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBzd2l0Y2ggKHZhbHVlVHlwZSkge1xuICAgICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgICAgcmV0dXJuIG0gPyB7IGlkOiBtLmlkLCBsYWJlbDogbS5sYWJlbCwgdHlwZTogbS50eXBlIH0gOiBtO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ251bWJlcic6IHtcbiAgICAgICAgICBpZiAobSAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gbS5pZCB8fCBtO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KHYsIDEwKTtcbiAgICAgICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGlmIChtICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBtLmlkIHx8IG07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25TdWJqZWN0Q2hhbmdlKG1vZGVsKSB7XG4gICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcy5wYXJlbnQsICckY2hhbmdlU3ViamVjdCcpKSB7XG4gICAgICBjb25zdCBwYXJlbnRDaGFuZ2U6IGFueSA9IHt9O1xuICAgICAgcGFyZW50Q2hhbmdlW3RoaXMubWV0YS5uYW1lXSA9IG1vZGVsO1xuICAgICAgdGhpcy5wYXJlbnRDaGFuZ2VTdWJqZWN0Lm5leHQocGFyZW50Q2hhbmdlKTtcbiAgICB9XG4gIH1cblxuICBvbk1vZGVsQ2hhbmdlKG1vZGVsKSB7XG4gICAgLy8gVE9ETyBhZGQgcmVzb3VyY2UgdHlwZSBsb2dpY1xuICAgIGlmICh0aGlzLm1vZGVsIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHRoaXMucGFyZW50W3RoaXMubWV0YS5uYW1lXSA9IHRoaXMubW9kZWwubWFwKChtKSA9PiB0aGlzLm1vZGVsVG9WYWx1ZShtLCB0aGlzLm1ldGEudmFsdWVUeXBlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFyZW50W3RoaXMubWV0YS5uYW1lXSA9IHRoaXMubW9kZWxUb1ZhbHVlKG1vZGVsLCB0aGlzLm1ldGEudmFsdWVUeXBlKTtcbiAgICB9XG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KG1vZGVsKTtcbiAgICB0aGlzLm9uU3ViamVjdENoYW5nZShtb2RlbCk7XG4gICAgLy8gY29uc29sZS5sb2coJ29uQ2hhbmdlJywgbW9kZWwpO1xuICAgIHRoaXMuY2hhbmdlRXZlbnQuaW5pdE1vdXNlRXZlbnQoJ2NoYW5nZScsIHRydWUsIHRydWUsIHdpbmRvdywgMCwgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwpO1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQodGhpcy5jaGFuZ2VFdmVudCk7XG4gICAgaWYgKHRoaXMubW9kZWwpIHtcbiAgICAgIHRoaXMucHJldk1vZGVsID0gdGhpcy5tb2RlbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZXRhLnVuc2V0ID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5tZXRhLiRvcHRpb25hbCA9IHRoaXMuaXNPcHRpb25hbDtcbiAgfVxuXG4gIGdldCBwYXJlbnRDaGFuZ2VTdWJqZWN0KCkge1xuICAgIGlmICghT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLnBhcmVudCwgJyRjaGFuZ2VTdWJqZWN0JykpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLnBhcmVudCwgJyRjaGFuZ2VTdWJqZWN0Jywge1xuICAgICAgICB2YWx1ZTogbmV3IEJlaGF2aW9yU3ViamVjdCh7fSkucGlwZShkZWJvdW5jZVRpbWUoMzAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuJGNoYW5nZVN1YmplY3Q7XG4gIH1cblxuICBnZXQgaXNQZXJzaXN0ZWRQYXJlbnQoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgcmV0dXJuIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50Ll92Z2lzICYmICh0aGlzLnBhcmVudC5fdmdpcy5leHRlcm5hbElkIHx8IHRoaXMucGFyZW50Ll92Z2lzLmlkICk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICBkZWxldGUgdGhpcy5tb2RlbDtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5tb2RlbCk7XG4gIH1cblxuICBnZXQgdmFsaWRhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YS52YWxpZGF0aW9ucyB8fCB7fTtcbiAgfVxuXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiAodHlwZW9mICh0aGlzLmluZGV4KSA9PT0gJ3VuZGVmaW5lZCcpID8gdGhpcy5tZXRhLm5hbWUgOiBgJHt0aGlzLm1ldGEubmFtZX1bJHt0aGlzLmluZGV4fV1gO1xuICB9XG5cbiAgZ2V0IGRlZmF1bHQoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YS5kZWZhdWx0IHx8IHRoaXMubWV0YS5kZWZhdWx0VmFsdWU7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgLy8gVE9ETyBjb25kaXRpb25zXG4gICAgcmV0dXJuIHRoaXMubG9naWNhbERpc2FibGVkIHx8IHRoaXMudmFsaWRhdGlvbnMuZGlzYWJsZWQgfHwgdGhpcy5tZXRhLmRpc2FibGVkID09PSB0cnVlIHx8IHRoaXMuZmxhZ3MuZGlzYWJsZWRcbiAgICAgIHx8ICh0aGlzLmZsYWdzLnVwZGF0YWJsZSA9PT0gZmFsc2UgJiYgdGhpcy5pc1BlcnNpc3RlZFBhcmVudCk7XG4gIH1cblxuICBnZXQgcmVhZG9ubHkoKSB7XG4gICAgLy8gVE9ETyBjb25kaXRpb25zXG4gICAgcmV0dXJuICEhKHRoaXMudmFsaWRhdGlvbnMucmVhZG9ubHkgfHwgdGhpcy5tZXRhLnJlYWRvbmx5IHx8ICh0aGlzLmZsYWdzLnVwZGF0YWJsZSA9PT0gZmFsc2UpKTtcbiAgfVxuXG4gIGdldCBzZW5kVG9TZXJ2ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNQZXJzaXN0ZWRQYXJlbnQgPyAodGhpcy5mbGFncy51cGRhdGFibGUgIT09IGZhbHNlKSA6ICh0aGlzLmZsYWdzLmNyZWF0YWJsZSAhPT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IHVpSW5wdXQoKSB7XG4gICAgaWYgKCF0aGlzLm1haW5JbnB1dCkge1xuICAgICAgdGhpcy5tYWluSW5wdXQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubWFpbjpub3QoW3R5cGU9XCJoaWRkZW5cIl0pOm5vdCguc3RhbmRhbG9uZSknKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFpbklucHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVZhbGlkYXRpb25zKCkge1xuICAgIHRoaXMudmFsaWRhdGlvbkF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uID0gdGhpcy52YWxpZGF0aW9uc1thdHRyaWJ1dGVdO1xuICAgICAgaWYgKHZhbGlkYXRpb24pIHtcbiAgICAgICAgdGhpcy5tb2RlbElucHV0LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbGlkYXRpb24udmFsdWUgfHwgdmFsaWRhdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgTWV0YUVsZW0ge1xuICBjc3NlbGVtOiBzdHJpbmc7XG4gIG1ldGE6IGFueTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1ldGFFbGVtRGlzYWJsZWFkYmxlIGltcGxlbWVudHMgTWV0YUVsZW0ge1xuICBjc3Ntb2RpZmllcjogc3RyaW5nO1xuICBhYnN0cmFjdCBtZXRhOiBhbnk7XG4gIGFic3RyYWN0IGNzc2VsZW06IHN0cmluZztcbiAgYWJzdHJhY3QgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcbiAgZGlzYWJsZSgpIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNzc21vZGlmaWVyKTtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY3NzbW9kaWZpZXIpO1xuICB9XG59XG5cbiJdfQ==
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRBYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21ldGEtdWkvc3JjL2xpYi9maWVsZEFic3RyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUEyQyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYseURBQXlEO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBUXhFLGtFQUFrRTtBQUNsRSxNQUFNLE9BQWdCLGFBQWE7SUFGbkM7UUFpQkUseUJBQW9CLEdBQUcsRUFBRSxDQUFDO1FBRzFCLGdCQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVsRCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixVQUFLLEdBQVEsRUFBRSxDQUFDO0tBb1FqQjtJQWxRQyxJQUFJLG1CQUFtQjtRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtZQUNuRSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ25ELEtBQUssRUFBRSxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUM7Z0JBQzlFLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFVBQVUsRUFBRSxLQUFLO2FBQ2xCLENBQUMsQ0FBQztT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LElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxDQUFDO2FBQ3pFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzswR0F6Um1CLGFBQWE7OEZBQWIsYUFBYTsyRkFBYixhQUFhO2tCQUZsQyxTQUFTOztBQStSVixNQUFNLE9BQU8sUUFBUTtDQUdwQjtBQUVELE1BQU0sT0FBZ0Isb0JBQW9CO0lBS3hDLE9BQU87UUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQEF1dGhvcjogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBEYXRlOiAyMDE5LTA5LTE5IDE3OjM0OjQ0XG4gKiBATGFzdCBNb2RpZmllZCBieTogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDQtMTggMjE6MTg6MDhcbiAqL1xuXG5pbXBvcnQgeyBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBFdmVudEVtaXR0ZXIsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBtZXRhRGFyaywgbWV0YUxpZ2h0IH0gZnJvbSAnLi9jb21tb24vdXRpbHMvY29sb3JUaGVtZXMnO1xuaW1wb3J0IHsgZXh0cmFjdFZhbHVlQnlTbWFydFByb3AgfSBmcm9tICcuLi9saWIvY29tbW9uL3V0aWxzL3NtYXJ0UHJvcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1ldGFGaWVsZDxUIGV4dGVuZHMgRmllbGRBYnN0cmFjdD4ge1xuICBtZXRhOiBhbnk7XG4gIG1vZGVsOiBhbnk7XG59XG5cbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmllbGRBYnN0cmFjdCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQgeyAvLyBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgbW9kZWw6IGFueTtcbiAgbWV0YTogYW55O1xuICBpbmRleDogbnVtYmVyO1xuICBwYXJlbnQ6IGFueTtcbiAgaW50ZWdyYXRpb25Db2RlOiBzdHJpbmc7XG4gIGludGVncmF0aW9uSWNvbjogc3RyaW5nO1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcbiAgbW9kZWxJbnB1dDogSFRNTElucHV0RWxlbWVudDtcbiAgbW9kZWxDb250cm9sOiBIVE1MSW5wdXRFbGVtZW50O1xuICBtYWluSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG4gIGtleUxpc3RlbmVyQWN0aXZlOiBib29sZWFuO1xuICBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT47XG4gIG9uTGVhdmU6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICB2YWxpZGF0aW9uQXR0cmlidXRlcyA9IFtdO1xuICBwcmV2aWV3OiBib29sZWFuO1xuICBwcmV2TW9kZWw6IGFueTtcbiAgY2hhbmdlRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudHMnKTtcbiAgbWV0YVJlc291cmNlU2VydmljZTogYW55O1xuICBsb2dpY2FsRGlzYWJsZWQgPSBmYWxzZTtcbiAgdGhlbWU6IHN0cmluZztcbiAgZmxhZ3M6IGFueSA9IHt9O1xuXG4gIGdldCBwYXJlbnRDaGFuZ2VTdWJqZWN0KCkge1xuICAgIGlmICghT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLnBhcmVudCwgJyRjaGFuZ2VTdWJqZWN0JykpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLnBhcmVudCwgJyRjaGFuZ2VTdWJqZWN0Jywge1xuICAgICAgICB2YWx1ZTogbmV3IEJlaGF2aW9yU3ViamVjdCh7fSkucGlwZShkZWJvdW5jZVRpbWUoMzAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuJGNoYW5nZVN1YmplY3Q7XG4gIH1cblxuICBnZXQgaXNQZXJzaXN0ZWRQYXJlbnQoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgcmV0dXJuIHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50Ll92Z2lzICYmICh0aGlzLnBhcmVudC5fdmdpcy5leHRlcm5hbElkIHx8IHRoaXMucGFyZW50Ll92Z2lzLmlkICk7XG4gIH1cblxuICBnZXQgdmFsaWRhdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YS52YWxpZGF0aW9ucyB8fCB7fTtcbiAgfVxuXG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiAodHlwZW9mICh0aGlzLmluZGV4KSA9PT0gJ3VuZGVmaW5lZCcpID8gdGhpcy5tZXRhLm5hbWUgOiBgJHt0aGlzLm1ldGEubmFtZX1bJHt0aGlzLmluZGV4fV1gO1xuICB9XG5cbiAgZ2V0IGRlZmF1bHQoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YS5kZWZhdWx0IHx8IHRoaXMubWV0YS5kZWZhdWx0VmFsdWU7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgLy8gVE9ETyBjb25kaXRpb25zXG4gICAgcmV0dXJuIHRoaXMubG9naWNhbERpc2FibGVkIHx8IHRoaXMudmFsaWRhdGlvbnMuZGlzYWJsZWQgfHwgdGhpcy5tZXRhLmRpc2FibGVkID09PSB0cnVlIHx8IHRoaXMuZmxhZ3MuZGlzYWJsZWRcbiAgICAgIHx8ICh0aGlzLmZsYWdzLnVwZGF0YWJsZSA9PT0gZmFsc2UgJiYgdGhpcy5pc1BlcnNpc3RlZFBhcmVudCk7XG4gIH1cblxuICBnZXQgcmVhZG9ubHkoKSB7XG4gICAgLy8gVE9ETyBjb25kaXRpb25zXG4gICAgcmV0dXJuICEhKHRoaXMudmFsaWRhdGlvbnMucmVhZG9ubHkgfHwgdGhpcy5tZXRhLnJlYWRvbmx5IHx8ICh0aGlzLmZsYWdzLnVwZGF0YWJsZSA9PT0gZmFsc2UpKTtcbiAgfVxuXG4gIGdldCBzZW5kVG9TZXJ2ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNQZXJzaXN0ZWRQYXJlbnQgPyAodGhpcy5mbGFncy51cGRhdGFibGUgIT09IGZhbHNlKSA6ICh0aGlzLmZsYWdzLmNyZWF0YWJsZSAhPT0gZmFsc2UpO1xuICB9XG5cbiAgZ2V0IHVpSW5wdXQoKSB7XG4gICAgaWYgKCF0aGlzLm1haW5JbnB1dCkge1xuICAgICAgdGhpcy5tYWluSW5wdXQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubWFpbjpub3QoW3R5cGU9XCJoaWRkZW5cIl0pOm5vdCguc3RhbmRhbG9uZSknKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFpbklucHV0O1xuICB9XG5cbiAgZ2V0IGlzT3B0aW9uYWwoKSB7XG4gICAgY29uc3QgYmFzZU9wdGlvbmFsID0gIXRoaXMubWV0YS51bnNldCAmJiAhdGhpcy52YWxpZGF0aW9ucy5yZXF1aXJlZCAmJiAhdGhpcy5tZXRhLnZpc2libGU7XG4gICAgc3dpdGNoICh0aGlzLm1ldGEudHlwZSkge1xuICAgICAgY2FzZSAnY29tcG9zaXRlJzoge1xuICAgICAgICBpZiAoYmFzZU9wdGlvbmFsKSB7XG4gICAgICAgICAgcmV0dXJuICF0aGlzLm1ldGEuZmllbGRzLmZpbmQoKGYpID0+ICFmLiRvcHRpb25hbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY2FzZSAnbGlzdCc6IHtcbiAgICAgICAgaWYgKGJhc2VPcHRpb25hbCkge1xuICAgICAgICAgIHJldHVybiAhKHRoaXMucGFyZW50W3RoaXMubWV0YS5uYW1lXSBpbnN0YW5jZW9mIEFycmF5ICYmIHRoaXMucGFyZW50W3RoaXMubWV0YS5uYW1lXS5sZW5ndGgpICYmICF0aGlzLm1ldGEubWluO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIGJhc2VPcHRpb25hbCAmJiB0eXBlb2YodGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdKSA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHNldHVwKGluc3RhbmNlLCBwYXJlbnQsIG1ldGEpIHsgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5lbGVtZW50UmVmKSB7XG4gICAgICBpZiAodGhpcy5pbnRlZ3JhdGlvbkNvZGUgPT09ICdtb2NrcycpIHtcbiAgICAgICAgdGhpcy5pbnRlZ3JhdGlvbkljb24gPSAnQnJhbmQtaWNvbi12b25hZ2UnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLmludGVncmF0aW9uQ29kZSkge1xuICAgICAgICAgIGNhc2UgJ29mZmljZTM2NSc6XG4gICAgICAgICAgICB0aGlzLmludGVncmF0aW9uSWNvbiA9ICdCcmFuZC1pY29uLW9mZmljZS1jb2xvcic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdzdWdhcic6XG4gICAgICAgICAgICB0aGlzLmludGVncmF0aW9uSWNvbiA9ICdCcmFuZC1pY29uLXN1Z2FyY3JtLWNvbG9yJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21zZHluYW1pY3MnOlxuICAgICAgICAgICAgdGhpcy5pbnRlZ3JhdGlvbkljb24gPSAnQnJhbmQtaWNvbi1keW5hbWljcy1jb2xvcic7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy5pbnRlZ3JhdGlvbkljb24gPSBgQnJhbmQtaWNvbi0keyh0aGlzLmludGVncmF0aW9uQ29kZSB8fCAnJykudG9Mb3dlckNhc2UoKX0tY29sb3JgO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5tZXRhLCAnJG9wdGlvbmFsJywge1xuICAgICAgICB2YWx1ZTogKHR5cGVvZih0aGlzLmRlZmF1bHQpID09PSAndW5kZWZpbmVkJykgJiYgdGhpcy5pc09wdGlvbmFsLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICB0aGlzLmZsYWdzID0gdGhpcy5tZXRhLmZsYWdzIHx8IHt9O1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMubWV0YSwgJyRoaWRkZW4nLCB7XG4gICAgICAgIHZhbHVlOiAhdGhpcy5pc1BlcnNpc3RlZFBhcmVudCAmJiB0aGlzLmZsYWdzLmNyZWF0YWJsZSA9PT0gZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIGlmICh0eXBlb2YodGhpcy5tZXRhLmhpZGRlbikgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5tZXRhLmhpZGRlbikgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3Qgc2V0SGlkZGVuQnlQcm9wZXJ0eUNvbmZpZyA9IChwYXIpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YodGhpcy5tZXRhLmhpZGRlbltwYXJdKSA9PT0gJ2Jvb2xlYW4nKSB7IC8vIGFueSB2YWx1ZSBtYWtlcyBtZSBoaWRkZW5cbiAgICAgICAgICAgICAgdGhpcy5tZXRhLiRoaWRkZW4gPSAhIXRoaXMucGFyZW50W3Bhcl07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGV4dHJhY3RWYWx1ZUJ5U21hcnRQcm9wKHRoaXMucGFyZW50LCBwYXIpO1xuICAgICAgICAgICAgICBjb25zdCBwYXJWYWx1ZSA9IHZhbHVlID8gKHZhbHVlLmlkIHx8IHZhbHVlLnZhbHVlIHx8IHZhbHVlKSA6IHZhbHVlO1xuICAgICAgICAgICAgICB0aGlzLm1ldGEuJGhpZGRlbiA9IHRoaXMubWV0YS5oaWRkZW5bcGFyXSA9PT0gcGFyVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBhciBvZiBPYmplY3Qua2V5cyh0aGlzLm1ldGEuaGlkZGVuKSkge1xuICAgICAgICAgICAgc2V0SGlkZGVuQnlQcm9wZXJ0eUNvbmZpZyhwYXIpO1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRDaGFuZ2VTdWJqZWN0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmhhc093blByb3BlcnR5KHBhci5zcGxpdCgnLicpWzBdKSkge1xuICAgICAgICAgICAgICAgIHNldEhpZGRlbkJ5UHJvcGVydHlDb25maWcocGFyKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tZXRhLiRoaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnBhcmVudFt0aGlzLm1ldGEubmFtZV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mKHRoaXMubWV0YS5oaWRkZW4pID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGlmICh0aGlzLm1ldGEuaGlkZGVuLnRvVXBwZXJDYXNlKCkgPT09ICdDUkVBVEUnKSB7XG4gICAgICAgICAgICB0aGlzLm1ldGEuJGhpZGRlbiA9ICF0aGlzLmlzUGVyc2lzdGVkUGFyZW50O1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5tZXRhLmhpZGRlbi50b1VwcGVyQ2FzZSgpID09PSAnVVBEQVRFJykge1xuICAgICAgICAgICAgdGhpcy5tZXRhLiRoaWRkZW4gPSB0aGlzLmlzUGVyc2lzdGVkUGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1ldGEuJGhpZGRlbj0gISF0aGlzLm1ldGEuaGlkZGVuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLm1ldGEsICckaW52aXNpYmxlJywge1xuICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlXG4gICAgICB9KTtcbiAgICAgIGlmICh0eXBlb2YodGhpcy5tZXRhLnZpc2libGUpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBpZiAodHlwZW9mKHRoaXMubWV0YS52aXNpYmxlKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBzZXRJbnZpc2libGVCeVByb3BlcnR5Q29uZmlnID0gKHBhcikgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZih0aGlzLm1ldGEudmlzaWJsZVtwYXJdKSA9PT0gJ2Jvb2xlYW4nKSB7IC8vIGFueSB2YWx1ZSBtYWtlcyBtZSBoaWRkZW5cbiAgICAgICAgICAgICAgdGhpcy5tZXRhLiRpbnZpc2libGUgPSAhdGhpcy5wYXJlbnRbcGFyXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZXh0cmFjdFZhbHVlQnlTbWFydFByb3AodGhpcy5wYXJlbnQsIHBhcik7XG4gICAgICAgICAgICAgIGNvbnN0IHBhclZhbHVlID0gdmFsdWUgPyAodmFsdWUuaWQgfHwgdmFsdWUudmFsdWUgfHwgdmFsdWUpIDogdmFsdWU7XG4gICAgICAgICAgICAgIHRoaXMubWV0YS4kaW52aXNpYmxlID0gdGhpcy5tZXRhLnZpc2libGVbcGFyXSAhPT0gcGFyVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBhciBvZiBPYmplY3Qua2V5cyh0aGlzLm1ldGEudmlzaWJsZSkpIHtcbiAgICAgICAgICAgIHNldEludmlzaWJsZUJ5UHJvcGVydHlDb25maWcocGFyKTtcbiAgICAgICAgICAgIHRoaXMucGFyZW50Q2hhbmdlU3ViamVjdC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eShwYXIuc3BsaXQoJy4nKVswXSkpIHtcbiAgICAgICAgICAgICAgICBzZXRJbnZpc2libGVCeVByb3BlcnR5Q29uZmlnKHBhcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWV0YS4kaW52aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZih0aGlzLm1ldGEudmlzaWJsZSkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgaWYgKHRoaXMubWV0YS52aXNpYmxlLnRvVXBwZXJDYXNlKCkgPT09ICdDUkVBVEUnKSB7XG4gICAgICAgICAgICB0aGlzLm1ldGEuJGludmlzaWJsZSA9IHRoaXMuaXNQZXJzaXN0ZWRQYXJlbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1ldGEudmlzaWJsZS50b1VwcGVyQ2FzZSgpID09PSAnVVBEQVRFJykge1xuICAgICAgICAgICAgdGhpcy5tZXRhLiRpbnZpc2libGUgPSAhdGhpcy5pc1BlcnNpc3RlZFBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudGhlbWUgIT09ICdpbmhlcml0Jykge1xuICAgICAgICBjb25zdCBtZXRhVGhlbWUgPSB0aGlzLnRoZW1lID09PSAnZGFyaycgPyBtZXRhRGFyayA6IG1ldGFMaWdodDtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWV0YVRoZW1lLnByb3BlcnRpZXMpKSB7XG4gICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCBtZXRhVGhlbWUucHJvcGVydGllc1trZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy51aUlucHV0O1xuICAgIGlmIChpbnB1dCkge1xuICAgICAgaW5wdXQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBtb2RlbFRvVmFsdWUobSwgdmFsdWVUeXBlKSB7XG4gICAgaWYgKHR5cGVvZihtKSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHN3aXRjaCAodmFsdWVUeXBlKSB7XG4gICAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgICByZXR1cm4gbSA/IHsgaWQ6IG0uaWQsIGxhYmVsOiBtLmxhYmVsLCB0eXBlOiBtLnR5cGUgfSA6IG07XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnbnVtYmVyJzoge1xuICAgICAgICAgIGlmIChtICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSBtLmlkIHx8IG07XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQodiwgMTApO1xuICAgICAgICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgaWYgKG0gIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG0uaWQgfHwgbTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblN1YmplY3RDaGFuZ2UobW9kZWwpIHtcbiAgICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLnBhcmVudCwgJyRjaGFuZ2VTdWJqZWN0JykpIHtcbiAgICAgIGNvbnN0IHBhcmVudENoYW5nZTogYW55ID0ge307XG4gICAgICBwYXJlbnRDaGFuZ2VbdGhpcy5tZXRhLm5hbWVdID0gbW9kZWw7XG4gICAgICB0aGlzLnBhcmVudENoYW5nZVN1YmplY3QubmV4dChwYXJlbnRDaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uTW9kZWxDaGFuZ2UobW9kZWwpIHtcbiAgICAvLyBUT0RPIGFkZCByZXNvdXJjZSB0eXBlIGxvZ2ljXG4gICAgaWYgKHRoaXMubW9kZWwgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdID0gdGhpcy5tb2RlbC5tYXAoKG0pID0+IHRoaXMubW9kZWxUb1ZhbHVlKG0sIHRoaXMubWV0YS52YWx1ZVR5cGUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdID0gdGhpcy5tb2RlbFRvVmFsdWUobW9kZWwsIHRoaXMubWV0YS52YWx1ZVR5cGUpO1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQobW9kZWwpO1xuICAgIHRoaXMub25TdWJqZWN0Q2hhbmdlKG1vZGVsKTtcbiAgICAvLyBjb25zb2xlLmxvZygnb25DaGFuZ2UnLCBtb2RlbCk7XG4gICAgdGhpcy5jaGFuZ2VFdmVudC5pbml0TW91c2VFdmVudCgnY2hhbmdlJywgdHJ1ZSwgdHJ1ZSwgd2luZG93LCAwLCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCwgbnVsbCk7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZGlzcGF0Y2hFdmVudCh0aGlzLmNoYW5nZUV2ZW50KTtcbiAgICBpZiAodGhpcy5tb2RlbCkge1xuICAgICAgdGhpcy5wcmV2TW9kZWwgPSB0aGlzLm1vZGVsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1ldGEudW5zZXQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLm1ldGEuJG9wdGlvbmFsID0gdGhpcy5pc09wdGlvbmFsO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgZGVsZXRlIHRoaXMubW9kZWw7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMubW9kZWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVZhbGlkYXRpb25zKCkge1xuICAgIHRoaXMudmFsaWRhdGlvbkF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uID0gdGhpcy52YWxpZGF0aW9uc1thdHRyaWJ1dGVdO1xuICAgICAgaWYgKHZhbGlkYXRpb24pIHtcbiAgICAgICAgdGhpcy5tb2RlbElucHV0LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbGlkYXRpb24udmFsdWUgfHwgdmFsaWRhdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgTWV0YUVsZW0ge1xuICBjc3NlbGVtOiBzdHJpbmc7XG4gIG1ldGE6IGFueTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1ldGFFbGVtRGlzYWJsZWFkYmxlIGltcGxlbWVudHMgTWV0YUVsZW0ge1xuICBjc3Ntb2RpZmllcjogc3RyaW5nO1xuICBhYnN0cmFjdCBtZXRhOiBhbnk7XG4gIGFic3RyYWN0IGNzc2VsZW06IHN0cmluZztcbiAgYWJzdHJhY3QgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcbiAgZGlzYWJsZSgpIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNzc21vZGlmaWVyKTtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY3NzbW9kaWZpZXIpO1xuICB9XG59XG5cbiJdfQ==
@@ -41,12 +41,12 @@ export class FieldBoolean extends FieldAbstract {
41
41
  }
42
42
  }
43
43
  }
44
- FieldBoolean.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: FieldBoolean, deps: null, target: i0.ɵɵFactoryTarget.Component });
45
- FieldBoolean.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: FieldBoolean, selector: "ng-component", inputs: { meta: "meta" }, usesInheritance: true, ngImport: i0, template: "<div class='vgip-meta-field-preview' *ngIf='preview && model'>\n <div class='vgip-meta-field-label'>{{meta.label || meta.name}}</div>\n <div class='vgip-meta-field-value __gu'>\n {{ model ? '\u2714' : '\u2718'}}\n </div>\n</div>\n<div *ngIf='!preview' class=\"Vlt-form__element\" [ngClass]=\"{ 'Vlt-form__element--error': f.invalid && ((f | metaModel)._parent.submitted || (f | metaModel ).touched) }\">\n\t<input class='model' type='hidden' [required]='validations.required' [(ngModel)]='model' #f='ngModel' [name]='name' />\n\t<div class=\"Vlt-switch\" *ngIf=\"meta.subtype === 'switch'\">\n\t\t<label style='vertical-align: middle;'>\n\t\t\t<input class='model' type=\"checkbox\" [(ngModel)]='parent[meta.name]' [name]='name'/>\n\t\t\t<span class=\"Vlt-switch__slider\"></span>\n\t\t\t<span style='margin-left: 60px; line-height: 30px; white-space: nowrap;'>{{meta.label || meta.name}}</span>\n\t\t</label>\n\t</div>\n\t<div class=\"Vlt-checkbox\" *ngIf=\"meta.subtype !== 'switch'\">\n\t\t<label style='cursor: pointer;'>\n\t\t\t<span class=\"Vlt-checkbox__button\">\n\t\t\t\t<input class='model' type=\"checkbox\" [(ngModel)]='parent[meta.name]' [name]='name'/>\n\t\t\t\t<span class=\"Vlt-checkbox__icon\"></span>\n\t\t\t</span>\n\t\t\t{{meta.label || meta.name}}\n\t\t</label>\n\t</div>\n\t<small *ngIf='f.invalid && ((f | metaModel)._parent.submitted || ((f | metaModel ).touched))' class=\"Vlt-form__element__error\">\n <span *ngIf=\"f.errors.required\">Required</span>\n <span *ngIf=\"f.errors.custom\">{{f.errors.custom}}&nbsp;</span>\n </small>\n\t<small *ngIf='meta.hint' class=\"Vlt-form__element__hint\">{{meta.hint}}</small>\n</div>\n", styles: [".Vlt-checkbox+.Vlt-form__element__hint{margin-top:4px}.Vlt-checkbox__button input:not(:checked)~.Vlt-checkbox__icon{background-color:var(--vgip-meta-input-bg-color);border-color:var(--vgip-meta-input-border-color)}.Vlt-checkbox__button input:checked~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-border-color)}.Vlt-checkbox__button input:hover:not(:checked)~.Vlt-checkbox__icon,.Vlt-checkbox__button input:focus:not(:checked)~.Vlt-checkbox__icon,.Vlt-checkbox__button input:active:not(:checked)~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-active-border-color)}.Vlt-checkbox__button input:hover:checked~.Vlt-checkbox__icon,.Vlt-checkbox__button input:focus:checked~.Vlt-checkbox__icon,.Vlt-checkbox__button input:active:checked~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-accent-color)}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }], pipes: { "metaModel": i3.MetaModelPipe }, viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: FieldBoolean, decorators: [{
44
+ FieldBoolean.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: FieldBoolean, deps: null, target: i0.ɵɵFactoryTarget.Component });
45
+ FieldBoolean.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.0", type: FieldBoolean, selector: "ng-component", inputs: { meta: "meta" }, usesInheritance: true, ngImport: i0, template: "<div class='vgip-meta-field-preview' *ngIf='preview && model'>\n <div class='vgip-meta-field-label'>{{meta.label || meta.name}}</div>\n <div class='vgip-meta-field-value __gu'>\n {{ model ? '\u2714' : '\u2718'}}\n </div>\n</div>\n<div *ngIf='!preview' class=\"Vlt-form__element\" [ngClass]=\"{ 'Vlt-form__element--error': f.invalid && ((f | metaModel)._parent.submitted || (f | metaModel ).touched) }\">\n\t<input class='model' type='hidden' [required]='validations.required' [(ngModel)]='model' #f='ngModel' [name]='name' />\n\t<div class=\"Vlt-switch\" *ngIf=\"meta.subtype === 'switch'\">\n\t\t<label style='vertical-align: middle;'>\n\t\t\t<input class='model' type=\"checkbox\" [(ngModel)]='parent[meta.name]' [name]='name'/>\n\t\t\t<span class=\"Vlt-switch__slider\"></span>\n\t\t\t<span style='margin-left: 60px; line-height: 30px; white-space: nowrap;'>{{meta.label || meta.name}}</span>\n\t\t</label>\n\t</div>\n\t<div class=\"Vlt-checkbox\" *ngIf=\"meta.subtype !== 'switch'\">\n\t\t<label style='cursor: pointer;'>\n\t\t\t<span class=\"Vlt-checkbox__button\">\n\t\t\t\t<input class='model' type=\"checkbox\" [(ngModel)]='parent[meta.name]' [name]='name'/>\n\t\t\t\t<span class=\"Vlt-checkbox__icon\"></span>\n\t\t\t</span>\n\t\t\t{{meta.label || meta.name}}\n\t\t</label>\n\t</div>\n\t<small *ngIf='f.invalid && ((f | metaModel)._parent.submitted || ((f | metaModel ).touched))' class=\"Vlt-form__element__error\">\n <span *ngIf=\"f.errors.required\">Required</span>\n <span *ngIf=\"f.errors.custom\">{{f.errors.custom}}&nbsp;</span>\n </small>\n\t<small *ngIf='meta.hint' class=\"Vlt-form__element__hint\">{{meta.hint}}</small>\n</div>\n", styles: [".Vlt-checkbox+.Vlt-form__element__hint{margin-top:4px}.Vlt-checkbox__button input:not(:checked)~.Vlt-checkbox__icon{background-color:var(--vgip-meta-input-bg-color);border-color:var(--vgip-meta-input-border-color)}.Vlt-checkbox__button input:checked~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-border-color)}.Vlt-checkbox__button input:hover:not(:checked)~.Vlt-checkbox__icon,.Vlt-checkbox__button input:focus:not(:checked)~.Vlt-checkbox__icon,.Vlt-checkbox__button input:active:not(:checked)~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-active-border-color)}.Vlt-checkbox__button input:hover:checked~.Vlt-checkbox__icon,.Vlt-checkbox__button input:focus:checked~.Vlt-checkbox__icon,.Vlt-checkbox__button input:active:checked~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-accent-color)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.MetaModelPipe, name: "metaModel" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: FieldBoolean, decorators: [{
47
47
  type: Component,
48
48
  args: [{ viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class='vgip-meta-field-preview' *ngIf='preview && model'>\n <div class='vgip-meta-field-label'>{{meta.label || meta.name}}</div>\n <div class='vgip-meta-field-value __gu'>\n {{ model ? '\u2714' : '\u2718'}}\n </div>\n</div>\n<div *ngIf='!preview' class=\"Vlt-form__element\" [ngClass]=\"{ 'Vlt-form__element--error': f.invalid && ((f | metaModel)._parent.submitted || (f | metaModel ).touched) }\">\n\t<input class='model' type='hidden' [required]='validations.required' [(ngModel)]='model' #f='ngModel' [name]='name' />\n\t<div class=\"Vlt-switch\" *ngIf=\"meta.subtype === 'switch'\">\n\t\t<label style='vertical-align: middle;'>\n\t\t\t<input class='model' type=\"checkbox\" [(ngModel)]='parent[meta.name]' [name]='name'/>\n\t\t\t<span class=\"Vlt-switch__slider\"></span>\n\t\t\t<span style='margin-left: 60px; line-height: 30px; white-space: nowrap;'>{{meta.label || meta.name}}</span>\n\t\t</label>\n\t</div>\n\t<div class=\"Vlt-checkbox\" *ngIf=\"meta.subtype !== 'switch'\">\n\t\t<label style='cursor: pointer;'>\n\t\t\t<span class=\"Vlt-checkbox__button\">\n\t\t\t\t<input class='model' type=\"checkbox\" [(ngModel)]='parent[meta.name]' [name]='name'/>\n\t\t\t\t<span class=\"Vlt-checkbox__icon\"></span>\n\t\t\t</span>\n\t\t\t{{meta.label || meta.name}}\n\t\t</label>\n\t</div>\n\t<small *ngIf='f.invalid && ((f | metaModel)._parent.submitted || ((f | metaModel ).touched))' class=\"Vlt-form__element__error\">\n <span *ngIf=\"f.errors.required\">Required</span>\n <span *ngIf=\"f.errors.custom\">{{f.errors.custom}}&nbsp;</span>\n </small>\n\t<small *ngIf='meta.hint' class=\"Vlt-form__element__hint\">{{meta.hint}}</small>\n</div>\n", styles: [".Vlt-checkbox+.Vlt-form__element__hint{margin-top:4px}.Vlt-checkbox__button input:not(:checked)~.Vlt-checkbox__icon{background-color:var(--vgip-meta-input-bg-color);border-color:var(--vgip-meta-input-border-color)}.Vlt-checkbox__button input:checked~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-border-color)}.Vlt-checkbox__button input:hover:not(:checked)~.Vlt-checkbox__icon,.Vlt-checkbox__button input:focus:not(:checked)~.Vlt-checkbox__icon,.Vlt-checkbox__button input:active:not(:checked)~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-active-border-color)}.Vlt-checkbox__button input:hover:checked~.Vlt-checkbox__icon,.Vlt-checkbox__button input:focus:checked~.Vlt-checkbox__icon,.Vlt-checkbox__button input:active:checked~.Vlt-checkbox__icon{border-color:var(--vgip-meta-input-accent-color)}\n"] }]
49
49
  }], propDecorators: { meta: [{
50
50
  type: Input
51
51
  }] } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvZmllbGRCb29sZWFuL2luZGV4LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWV0YS11aS9zcmMvbGliL2ZpZWxkQm9vbGVhbi92aWV3Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQUNqRCw2REFBNkQ7QUFPN0QsTUFBTSxPQUFPLFlBQWEsU0FBUSxhQUFhO0lBSTdDLFFBQVE7UUFDTixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pELEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNiLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO29CQUNqRCxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQztpQkFDMUM7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO29CQUM5RSxLQUFLLEdBQUcsS0FBSyxDQUFDO2lCQUNmO2dCQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkgsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3hDLENBQUM7WUFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQzdCLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUNILElBQUksT0FBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFdBQVcsRUFBRTtZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxPQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLElBQUksT0FBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxXQUFXLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxZQUFZLEtBQUssQ0FBQyxFQUFFO1lBQzVILFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2xELENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNQO0lBQ0gsQ0FBQzs7eUdBOUJVLFlBQVk7NkZBQVosWUFBWSxxR0NsQnpCLGdvREE4QkEsbzZERGRpQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQzsyRkFFeEQsWUFBWTtrQkFMeEIsU0FBUztvQ0FHTyxDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQzs4QkFHMUQsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEBBdXRob3I6IEFsZXhhbmRlci5WYW5nZWxvdkB2b25hZ2UuY29tIFxuICogQERhdGU6IDIwMTktMDktMTkgMTc6MzQ6NDkgXG4gKiBATGFzdCBNb2RpZmllZCBieTogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDMtMjYgMTI6NTc6NTFcbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRmllbGRBYnN0cmFjdCB9IGZyb20gJy4uL2ZpZWxkQWJzdHJhY3QnO1xuLy8gaW1wb3J0IHsgdE1ldGFGaWVsZCB9IGZyb20gJy4uLy4uLy4uL21ldGFUeXBlcy90TWV0YUZpZWxkJ1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXcuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0eWxlLnNjc3MnXSxcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XVxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZEJvb2xlYW4gZXh0ZW5kcyBGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbWV0YTogYW55O1xuICB2YWx1ZTogYm9vbGVhbjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBvcmlnVmFsdWUgPSB0aGlzLnBhcmVudFt0aGlzLm1ldGEubmFtZV07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMucGFyZW50LCB0aGlzLm1ldGEubmFtZSwge1xuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHZhbHVlID0gdmFsdWUudmFsdWUgfHwgdmFsdWUuaWQgfHwgZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWx1ZSAmJiAodHlwZW9mKHRoaXMucHJldk1vZGVsKSA9PT0gJ2Jvb2xlYW4nKSAmJiB0aGlzLmlzUGVyc2lzdGVkUGFyZW50KSB7XG4gICAgICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vZGVsID0gKHZhbHVlID09PSB0cnVlKSB8fCAodmFsdWUgIT0gbnVsbCAmJiAoWyd0cnVlJywgJzEnXS5pbmRleE9mKHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkgIT09IC0xKSk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1vZGVsO1xuICAgICAgICB0aGlzLm1ldGEuJG9wdGlvbmFsID0gdGhpcy5pc09wdGlvbmFsO1xuICAgICAgfSxcbiAgICAgIGdldDogKCkgPT4gdGhpcy52YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuc2VuZFRvU2VydmVyLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZihvcmlnVmFsdWUpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdID0gb3JpZ1ZhbHVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mKHRoaXMubWV0YS5kZWZhdWx0KSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mKHRoaXMubW9kZWwpID09PSAndW5kZWZpbmVkJyAmJiAhKHRoaXMubWV0YS5kZWZhdWx0IGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdID0gdGhpcy5tZXRhLmRlZmF1bHQ7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9J3ZnaXAtbWV0YS1maWVsZC1wcmV2aWV3JyAqbmdJZj0ncHJldmlldyAmJiBtb2RlbCc+XG4gIDxkaXYgY2xhc3M9J3ZnaXAtbWV0YS1maWVsZC1sYWJlbCc+e3ttZXRhLmxhYmVsIHx8IG1ldGEubmFtZX19PC9kaXY+XG4gIDxkaXYgY2xhc3M9J3ZnaXAtbWV0YS1maWVsZC12YWx1ZSBfX2d1Jz5cbiAgICB7eyBtb2RlbCA/ICfinJQnIDogJ+KcmCd9fVxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj0nIXByZXZpZXcnIGNsYXNzPVwiVmx0LWZvcm1fX2VsZW1lbnRcIiBbbmdDbGFzc109XCJ7ICdWbHQtZm9ybV9fZWxlbWVudC0tZXJyb3InOiBmLmludmFsaWQgJiYgKChmIHwgbWV0YU1vZGVsKS5fcGFyZW50LnN1Ym1pdHRlZCB8fCAoZiB8IG1ldGFNb2RlbCApLnRvdWNoZWQpIH1cIj5cblx0PGlucHV0IGNsYXNzPSdtb2RlbCcgdHlwZT0naGlkZGVuJyBbcmVxdWlyZWRdPSd2YWxpZGF0aW9ucy5yZXF1aXJlZCcgWyhuZ01vZGVsKV09J21vZGVsJyAjZj0nbmdNb2RlbCcgW25hbWVdPSduYW1lJyAvPlxuXHQ8ZGl2IGNsYXNzPVwiVmx0LXN3aXRjaFwiICpuZ0lmPVwibWV0YS5zdWJ0eXBlID09PSAnc3dpdGNoJ1wiPlxuXHRcdDxsYWJlbCBzdHlsZT0ndmVydGljYWwtYWxpZ246IG1pZGRsZTsnPlxuXHRcdFx0PGlucHV0IGNsYXNzPSdtb2RlbCcgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09J3BhcmVudFttZXRhLm5hbWVdJyBbbmFtZV09J25hbWUnLz5cblx0XHRcdDxzcGFuIGNsYXNzPVwiVmx0LXN3aXRjaF9fc2xpZGVyXCI+PC9zcGFuPlxuXHRcdFx0PHNwYW4gc3R5bGU9J21hcmdpbi1sZWZ0OiA2MHB4OyBsaW5lLWhlaWdodDogMzBweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsnPnt7bWV0YS5sYWJlbCB8fCBtZXRhLm5hbWV9fTwvc3Bhbj5cblx0XHQ8L2xhYmVsPlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cIlZsdC1jaGVja2JveFwiICpuZ0lmPVwibWV0YS5zdWJ0eXBlICE9PSAnc3dpdGNoJ1wiPlxuXHRcdDxsYWJlbCBzdHlsZT0nY3Vyc29yOiBwb2ludGVyOyc+XG5cdFx0XHQ8c3BhbiBjbGFzcz1cIlZsdC1jaGVja2JveF9fYnV0dG9uXCI+XG5cdFx0XHRcdDxpbnB1dCBjbGFzcz0nbW9kZWwnIHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPSdwYXJlbnRbbWV0YS5uYW1lXScgW25hbWVdPSduYW1lJy8+XG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiVmx0LWNoZWNrYm94X19pY29uXCI+PC9zcGFuPlxuXHRcdFx0PC9zcGFuPlxuXHRcdFx0e3ttZXRhLmxhYmVsIHx8IG1ldGEubmFtZX19XG5cdFx0PC9sYWJlbD5cblx0PC9kaXY+XG5cdDxzbWFsbCAqbmdJZj0nZi5pbnZhbGlkICYmICgoZiB8IG1ldGFNb2RlbCkuX3BhcmVudC5zdWJtaXR0ZWQgfHwgKChmIHwgbWV0YU1vZGVsICkudG91Y2hlZCkpJyBjbGFzcz1cIlZsdC1mb3JtX19lbGVtZW50X19lcnJvclwiPlxuICAgIDxzcGFuICpuZ0lmPVwiZi5lcnJvcnMucmVxdWlyZWRcIj5SZXF1aXJlZDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cImYuZXJyb3JzLmN1c3RvbVwiPnt7Zi5lcnJvcnMuY3VzdG9tfX0mbmJzcDs8L3NwYW4+XG4gIDwvc21hbGw+XG5cdDxzbWFsbCAqbmdJZj0nbWV0YS5oaW50JyBjbGFzcz1cIlZsdC1mb3JtX19lbGVtZW50X19oaW50XCI+e3ttZXRhLmhpbnR9fTwvc21hbGw+XG48L2Rpdj5cbiJdfQ==
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvZmllbGRCb29sZWFuL2luZGV4LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWV0YS11aS9zcmMvbGliL2ZpZWxkQm9vbGVhbi92aWV3Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQUNqRCw2REFBNkQ7QUFPN0QsTUFBTSxPQUFPLFlBQWEsU0FBUSxhQUFhO0lBSTdDLFFBQVE7UUFDTixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pELEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNiLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO29CQUNqRCxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQztpQkFDMUM7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO29CQUM5RSxLQUFLLEdBQUcsS0FBSyxDQUFDO2lCQUNmO2dCQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkgsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3hDLENBQUM7WUFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQzdCLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUNILElBQUksT0FBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFdBQVcsRUFBRTtZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxPQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxXQUFXLElBQUksT0FBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxXQUFXLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxZQUFZLEtBQUssQ0FBQyxFQUFFO1lBQzVILFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2xELENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNQO0lBQ0gsQ0FBQzs7eUdBOUJVLFlBQVk7NkZBQVosWUFBWSxxR0NsQnpCLGdvREE4QkEsOGpFRGRpQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQzsyRkFFeEQsWUFBWTtrQkFMeEIsU0FBUztvQ0FHTyxDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQzs4QkFHMUQsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEBBdXRob3I6IEFsZXhhbmRlci5WYW5nZWxvdkB2b25hZ2UuY29tIFxuICogQERhdGU6IDIwMTktMDktMTkgMTc6MzQ6NDkgXG4gKiBATGFzdCBNb2RpZmllZCBieTogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDMtMjYgMTI6NTc6NTFcbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRmllbGRBYnN0cmFjdCB9IGZyb20gJy4uL2ZpZWxkQWJzdHJhY3QnO1xuLy8gaW1wb3J0IHsgdE1ldGFGaWVsZCB9IGZyb20gJy4uLy4uLy4uL21ldGFUeXBlcy90TWV0YUZpZWxkJ1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXcuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3N0eWxlLnNjc3MnXSxcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XVxufSlcbmV4cG9ydCBjbGFzcyBGaWVsZEJvb2xlYW4gZXh0ZW5kcyBGaWVsZEFic3RyYWN0IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbWV0YTogYW55O1xuICB2YWx1ZTogYm9vbGVhbjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBvcmlnVmFsdWUgPSB0aGlzLnBhcmVudFt0aGlzLm1ldGEubmFtZV07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMucGFyZW50LCB0aGlzLm1ldGEubmFtZSwge1xuICAgICAgc2V0OiAodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiAodmFsdWUpID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHZhbHVlID0gdmFsdWUudmFsdWUgfHwgdmFsdWUuaWQgfHwgZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2YWx1ZSAmJiAodHlwZW9mKHRoaXMucHJldk1vZGVsKSA9PT0gJ2Jvb2xlYW4nKSAmJiB0aGlzLmlzUGVyc2lzdGVkUGFyZW50KSB7XG4gICAgICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vZGVsID0gKHZhbHVlID09PSB0cnVlKSB8fCAodmFsdWUgIT0gbnVsbCAmJiAoWyd0cnVlJywgJzEnXS5pbmRleE9mKHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkgIT09IC0xKSk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1vZGVsO1xuICAgICAgICB0aGlzLm1ldGEuJG9wdGlvbmFsID0gdGhpcy5pc09wdGlvbmFsO1xuICAgICAgfSxcbiAgICAgIGdldDogKCkgPT4gdGhpcy52YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRoaXMuc2VuZFRvU2VydmVyLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZihvcmlnVmFsdWUpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdID0gb3JpZ1ZhbHVlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mKHRoaXMubWV0YS5kZWZhdWx0KSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mKHRoaXMubW9kZWwpID09PSAndW5kZWZpbmVkJyAmJiAhKHRoaXMubWV0YS5kZWZhdWx0IGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wYXJlbnRbdGhpcy5tZXRhLm5hbWVdID0gdGhpcy5tZXRhLmRlZmF1bHQ7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9J3ZnaXAtbWV0YS1maWVsZC1wcmV2aWV3JyAqbmdJZj0ncHJldmlldyAmJiBtb2RlbCc+XG4gIDxkaXYgY2xhc3M9J3ZnaXAtbWV0YS1maWVsZC1sYWJlbCc+e3ttZXRhLmxhYmVsIHx8IG1ldGEubmFtZX19PC9kaXY+XG4gIDxkaXYgY2xhc3M9J3ZnaXAtbWV0YS1maWVsZC12YWx1ZSBfX2d1Jz5cbiAgICB7eyBtb2RlbCA/ICfinJQnIDogJ+KcmCd9fVxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj0nIXByZXZpZXcnIGNsYXNzPVwiVmx0LWZvcm1fX2VsZW1lbnRcIiBbbmdDbGFzc109XCJ7ICdWbHQtZm9ybV9fZWxlbWVudC0tZXJyb3InOiBmLmludmFsaWQgJiYgKChmIHwgbWV0YU1vZGVsKS5fcGFyZW50LnN1Ym1pdHRlZCB8fCAoZiB8IG1ldGFNb2RlbCApLnRvdWNoZWQpIH1cIj5cblx0PGlucHV0IGNsYXNzPSdtb2RlbCcgdHlwZT0naGlkZGVuJyBbcmVxdWlyZWRdPSd2YWxpZGF0aW9ucy5yZXF1aXJlZCcgWyhuZ01vZGVsKV09J21vZGVsJyAjZj0nbmdNb2RlbCcgW25hbWVdPSduYW1lJyAvPlxuXHQ8ZGl2IGNsYXNzPVwiVmx0LXN3aXRjaFwiICpuZ0lmPVwibWV0YS5zdWJ0eXBlID09PSAnc3dpdGNoJ1wiPlxuXHRcdDxsYWJlbCBzdHlsZT0ndmVydGljYWwtYWxpZ246IG1pZGRsZTsnPlxuXHRcdFx0PGlucHV0IGNsYXNzPSdtb2RlbCcgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09J3BhcmVudFttZXRhLm5hbWVdJyBbbmFtZV09J25hbWUnLz5cblx0XHRcdDxzcGFuIGNsYXNzPVwiVmx0LXN3aXRjaF9fc2xpZGVyXCI+PC9zcGFuPlxuXHRcdFx0PHNwYW4gc3R5bGU9J21hcmdpbi1sZWZ0OiA2MHB4OyBsaW5lLWhlaWdodDogMzBweDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsnPnt7bWV0YS5sYWJlbCB8fCBtZXRhLm5hbWV9fTwvc3Bhbj5cblx0XHQ8L2xhYmVsPlxuXHQ8L2Rpdj5cblx0PGRpdiBjbGFzcz1cIlZsdC1jaGVja2JveFwiICpuZ0lmPVwibWV0YS5zdWJ0eXBlICE9PSAnc3dpdGNoJ1wiPlxuXHRcdDxsYWJlbCBzdHlsZT0nY3Vyc29yOiBwb2ludGVyOyc+XG5cdFx0XHQ8c3BhbiBjbGFzcz1cIlZsdC1jaGVja2JveF9fYnV0dG9uXCI+XG5cdFx0XHRcdDxpbnB1dCBjbGFzcz0nbW9kZWwnIHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPSdwYXJlbnRbbWV0YS5uYW1lXScgW25hbWVdPSduYW1lJy8+XG5cdFx0XHRcdDxzcGFuIGNsYXNzPVwiVmx0LWNoZWNrYm94X19pY29uXCI+PC9zcGFuPlxuXHRcdFx0PC9zcGFuPlxuXHRcdFx0e3ttZXRhLmxhYmVsIHx8IG1ldGEubmFtZX19XG5cdFx0PC9sYWJlbD5cblx0PC9kaXY+XG5cdDxzbWFsbCAqbmdJZj0nZi5pbnZhbGlkICYmICgoZiB8IG1ldGFNb2RlbCkuX3BhcmVudC5zdWJtaXR0ZWQgfHwgKChmIHwgbWV0YU1vZGVsICkudG91Y2hlZCkpJyBjbGFzcz1cIlZsdC1mb3JtX19lbGVtZW50X19lcnJvclwiPlxuICAgIDxzcGFuICpuZ0lmPVwiZi5lcnJvcnMucmVxdWlyZWRcIj5SZXF1aXJlZDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cImYuZXJyb3JzLmN1c3RvbVwiPnt7Zi5lcnJvcnMuY3VzdG9tfX0mbmJzcDs8L3NwYW4+XG4gIDwvc21hbGw+XG5cdDxzbWFsbCAqbmdJZj0nbWV0YS5oaW50JyBjbGFzcz1cIlZsdC1mb3JtX19lbGVtZW50X19oaW50XCI+e3ttZXRhLmhpbnR9fTwvc21hbGw+XG48L2Rpdj5cbiJdfQ==