@gnggln/ng-ui-system 1.0.0-alpha.21 → 1.0.0-alpha.23
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.
- package/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +1 -0
- package/crud-table/lib/components/form-builder/types/schema.types.d.ts +20 -0
- package/crud-table/lib/core/logging/logger.service.d.ts +1 -1
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +1 -1
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +1 -1
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +1 -1
- package/esm2022/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +13 -7
- package/esm2022/crud-table/lib/components/form-builder/types/schema.types.mjs +1 -1
- package/esm2022/crud-table/lib/core/logging/logger.service.mjs +1 -1
- package/esm2022/form-builder/lib/components/form-builder/form-wizard.component.mjs +105 -18
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +1 -1
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +1 -1
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +1 -1
- package/esm2022/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +13 -7
- package/esm2022/form-builder/lib/components/form-builder/types/index.mjs +1 -1
- package/esm2022/form-builder/lib/components/form-builder/types/schema.types.mjs +1 -1
- package/esm2022/form-builder/lib/core/logging/logger.service.mjs +1 -1
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +1 -1
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +1 -1
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +1 -1
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +13 -7
- package/esm2022/form-builder-editor/lib/components/form-builder/types/index.mjs +1 -1
- package/esm2022/form-builder-editor/lib/components/form-builder/types/schema.types.mjs +1 -1
- package/esm2022/form-builder-editor/lib/core/logging/logger.service.mjs +1 -1
- package/esm2022/lib/components/form-builder/form-wizard.component.mjs +105 -18
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +1 -1
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +1 -1
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +1 -1
- package/esm2022/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +13 -7
- package/esm2022/lib/components/form-builder/types/index.mjs +1 -1
- package/esm2022/lib/components/form-builder/types/schema.types.mjs +1 -1
- package/esm2022/lib/core/logging/logger.service.mjs +1 -1
- package/fesm2022/gnggln-ng-ui-system-crud-table.mjs +12 -6
- package/fesm2022/gnggln-ng-ui-system-crud-table.mjs.map +1 -1
- package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs +12 -6
- package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs.map +1 -1
- package/fesm2022/gnggln-ng-ui-system-form-builder.mjs +116 -23
- package/fesm2022/gnggln-ng-ui-system-form-builder.mjs.map +1 -1
- package/fesm2022/gnggln-ng-ui-system.mjs +116 -23
- package/fesm2022/gnggln-ng-ui-system.mjs.map +1 -1
- package/form-builder/lib/components/form-builder/form-wizard.component.d.ts +10 -1
- package/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +1 -0
- package/form-builder/lib/components/form-builder/types/index.d.ts +1 -1
- package/form-builder/lib/components/form-builder/types/schema.types.d.ts +20 -0
- package/form-builder/lib/core/logging/logger.service.d.ts +1 -1
- package/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +1 -0
- package/form-builder-editor/lib/components/form-builder/types/index.d.ts +1 -1
- package/form-builder-editor/lib/components/form-builder/types/schema.types.d.ts +20 -0
- package/form-builder-editor/lib/core/logging/logger.service.d.ts +1 -1
- package/lib/components/form-builder/form-wizard.component.d.ts +10 -1
- package/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +1 -0
- package/lib/components/form-builder/types/index.d.ts +1 -1
- package/lib/components/form-builder/types/schema.types.d.ts +20 -0
- package/lib/core/logging/logger.service.d.ts +1 -1
- package/package.json +13 -13
|
@@ -365,6 +365,12 @@ export class UiSpecificaTerritorialeComponent {
|
|
|
365
365
|
}
|
|
366
366
|
return value;
|
|
367
367
|
}
|
|
368
|
+
emitFormValueIfReady() {
|
|
369
|
+
if (!this.isInitializing && this.tipologicheLoaded) {
|
|
370
|
+
this.onChange(this.form.getRawValue());
|
|
371
|
+
this.notifyValidationChange();
|
|
372
|
+
}
|
|
373
|
+
}
|
|
368
374
|
// ─── Subscriptions ──────────────────────────────────────────────
|
|
369
375
|
setupFormSubscriptions() {
|
|
370
376
|
// Subscription per i cambiamenti territoriali (nazione/provincia/comune)
|
|
@@ -383,14 +389,13 @@ export class UiSpecificaTerritorialeComponent {
|
|
|
383
389
|
this.handleTerritorialChanges(nazioneId, provinciaId, comuneId);
|
|
384
390
|
}
|
|
385
391
|
});
|
|
386
|
-
// Subscription per tutti i cambiamenti del form
|
|
392
|
+
// Subscription per tutti i cambiamenti del form.
|
|
393
|
+
// getRawValue(): i campi disabilitati (es. CAP auto-selezionato, nazione con italyByDefault)
|
|
394
|
+
// non compaiono in form.value ma devono essere propagati al form parent.
|
|
387
395
|
this.form.valueChanges
|
|
388
396
|
.pipe(takeUntil(this.destroy$), distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)))
|
|
389
|
-
.subscribe((
|
|
390
|
-
|
|
391
|
-
this.onChange(formValue);
|
|
392
|
-
this.notifyValidationChange();
|
|
393
|
-
}
|
|
397
|
+
.subscribe(() => {
|
|
398
|
+
this.emitFormValueIfReady();
|
|
394
399
|
});
|
|
395
400
|
this.cdr.detectChanges();
|
|
396
401
|
}
|
|
@@ -419,6 +424,7 @@ export class UiSpecificaTerritorialeComponent {
|
|
|
419
424
|
this.filteredCaps = [];
|
|
420
425
|
}
|
|
421
426
|
this.applyFieldsDisabledState();
|
|
427
|
+
this.emitFormValueIfReady();
|
|
422
428
|
}
|
|
423
429
|
async updateFilteredComuni(provinciaId) {
|
|
424
430
|
if (!provinciaId) {
|
|
@@ -645,4 +651,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
645
651
|
}], disabled: [{
|
|
646
652
|
type: Input
|
|
647
653
|
}] } });
|
|
648
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY2lmaWNhLXRlcnJpdG9yaWFsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tYnVpbGRlci9zdWItY29tcG9uZW50cy9zcGVjaWZpY2EtdGVycml0b3JpYWxlL3NwZWNpZmljYS10ZXJyaXRvcmlhbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctdWktc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWJ1aWxkZXIvc3ViLWNvbXBvbmVudHMvc3BlY2lmaWNhLXRlcnJpdG9yaWFsZS9zcGVjaWZpY2EtdGVycml0b3JpYWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsRUFLVixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLGlCQUFpQixFQUNqQixhQUFhLEVBSWIsVUFBVSxFQUVWLFNBQVMsRUFDVCxtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztBQWdCekQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQXFCSCxNQUFNLE9BQU8sZ0NBQWdDO0lBdUMzQyxZQUNtQixFQUFlLEVBQ2Ys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LFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBmb3J3YXJkUmVmLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXHJcbiAgRm9ybUJ1aWxkZXIsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gIE5HX1ZBTElEQVRPUlMsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsXHJcbiAgVmFsaWRhdG9ycyxcclxuICBWYWxpZGF0b3IsXHJcbiAgTmdDb250cm9sLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCB0YWtlVW50aWwsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzdGFydFdpdGgsIG1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IFVpTG9jYXRpb25TZXJ2aWNlLCBVaU5hemlvbmUsIFVpUHJvdmluY2lhLCBVaUNvbXVuZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVaUxvY2F0aW9uQ29uZmlnLCBVaUxvY2F0aW9uVmFsdWUgfSBmcm9tICcuLi8uLi90eXBlcy90ZXJyaXRvcmlhbGUudHlwZXMnO1xyXG5cclxuLyoqXHJcbiAqIEludGVyZmFjY2lhIGludGVybmEgcGVyIGkgQ0FQIG5lbCBjb21wb25lbnRlLlxyXG4gKi9cclxuaW50ZXJmYWNlIFVpQ2FwT3B0aW9uIHtcclxuICAvKiogSUQgZGVsIENBUC4gKi9cclxuICBpZDogc3RyaW5nO1xyXG4gIC8qKiBDb2RpY2UgQ0FQIHZpc3VhbGl6emF0by4gKi9cclxuICBjb2RpY2U6IHN0cmluZztcclxuICAvKiogSUQgZGVsIGNvbXVuZSBhc3NvY2lhdG8uICovXHJcbiAgY29tdW5lSWQ6IHN0cmluZztcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgc3RhbmRhbG9uZSBwZXIgbGEgc2VsZXppb25lIGRpIGRhdGkgZ2VvZ3JhZmljaSBpdGFsaWFuaSBvIGVzdGVyaS5cclxuICpcclxuICogU3VwcG9ydGEgZHVlIG1vZGFsaXRhOlxyXG4gKiAtICoqSXRhbGlhKio6IHNlbGV6aW9uZSBhIGNhc2NhdGEgbmF6aW9uZSAtPiBwcm92aW5jaWEgLT4gY29tdW5lIC0+IENBUFxyXG4gKiAtICoqRXN0ZXJvKio6IHNlbGV6aW9uZSBuYXppb25lICsgY2FtcG8gdGVzdG8gbGliZXJvIHBlciBpbCBjb211bmVcclxuICpcclxuICogQ2FtcGkgb3B6aW9uYWxpIGNvbmZpZ3VyYWJpbGk6IGluZGlyaXp6bywgbWFpbCwgUEVDLCB0ZWxlZm9uby5cclxuICpcclxuICogSW1wbGVtZW50YSBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIGUgYFZhbGlkYXRvcmAgcGVyIGwnaW50ZWdyYXppb25lXHJcbiAqIGRpcmV0dGEgY29uIEFuZ3VsYXIgUmVhY3RpdmUgRm9ybXMuXHJcbiAqXHJcbiAqIFV0aWxpenphIGRhdGkgZGEgSlNPTiBzdGF0aWNpIHRyYW1pdGUgYFVpTG9jYXRpb25TZXJ2aWNlYFxyXG4gKiAobmVzc3VuYSBkaXBlbmRlbnphIGFsIGJhY2tlbmQpLlxyXG4gKlxyXG4gKiBAc2VsZWN0b3IgdWktc3BlY2lmaWNhLXRlcnJpdG9yaWFsZVxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBgYGBodG1sXHJcbiAqIDx1aS1zcGVjaWZpY2EtdGVycml0b3JpYWxlXHJcbiAqICAgW2Zvcm1Db250cm9sXT1cIm15Q29udHJvbFwiXHJcbiAqICAgW2NvbmZpZ109XCJ7IGl0YWx5QnlEZWZhdWx0OiB0cnVlLCBjYXA6IHsgc2hvdzogdHJ1ZSB9IH1cIlxyXG4gKiAvPlxyXG4gKiBgYGBcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndWktc3BlY2lmaWNhLXRlcnJpdG9yaWFsZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRTZWxlY3RNb2R1bGUsIE1hdElucHV0TW9kdWxlXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFVpU3BlY2lmaWNhVGVycml0b3JpYWxlQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBVaVNwZWNpZmljYVRlcnJpdG9yaWFsZUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NwZWNpZmljYS10ZXJyaXRvcmlhbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9zcGVjaWZpY2EtdGVycml0b3JpYWxlLmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpU3BlY2lmaWNhVGVycml0b3JpYWxlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8qKiBDb25maWd1cmF6aW9uZSBkZWwgY29tcG9uZW50ZS4gKi9cclxuICBASW5wdXQoKSBjb25maWc6IFVpTG9jYXRpb25Db25maWcgPSB7fTtcclxuXHJcbiAgLyoqIFN0YXRvIGRpc2FiaWxpdGF0byBnbG9iYWxlLiAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIC8vIOKUgOKUgOKUgCBQYXR0ZXJuIGRpIHZhbGlkYXppb25lIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG4gIHByaXZhdGUgcmVhZG9ubHkgRU1BSUxfUEFUVEVSTiA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcclxuICBwcml2YXRlIHJlYWRvbmx5IFBFQ19QQVRURVJOID0gL15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSQvO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgUEhPTkVfUEFUVEVSTiA9IC9eWytdP1swLTlcXHNcXC0oKV17NiwxNn0kLztcclxuXHJcbiAgLy8g4pSA4pSA4pSAIFN0YXRvIGludGVybm8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBpc0l0YWxpYW4gPSBmYWxzZTtcclxuICBpc0ZvcmVpZ24gPSBmYWxzZTtcclxuICBuZ0NvbnRyb2whOiBOZ0NvbnRyb2w7XHJcblxyXG4gIC8qKiBFbGVuY28gbmF6aW9uaSBkaXNwb25pYmlsaS4gKi9cclxuICBuYXppb25pOiBVaU5hemlvbmVbXSA9IFtdO1xyXG4gIC8qKiBFbGVuY28gcHJvdmluY2UgZGlzcG9uaWJpbGkuICovXHJcbiAgcHJvdmluY2U6IFVpUHJvdmluY2lhW10gPSBbXTtcclxuICAvKiogQ29tdW5pIGZpbHRyYXRpIHBlciBsYSBwcm92aW5jaWEgc2VsZXppb25hdGEuICovXHJcbiAgZmlsdGVyZWRDb211bmk6IFVpQ29tdW5lW10gPSBbXTtcclxuICAvKiogQ0FQIGZpbHRyYXRpIHBlciBpbCBjb211bmUgc2VsZXppb25hdG8uICovXHJcbiAgZmlsdGVyZWRDYXBzOiBVaUNhcE9wdGlvbltdID0gW107XHJcblxyXG4gIC8qKiBQcm9taXNlIGRpIGluaXppYWxpenphemlvbmUgKHV0aWxlIHBlciB0ZXN0IGUgdGFibGUtdGVycml0b3JpYWxlKS4gKi9cclxuICBpbml0aWFsaXphdGlvblByb21pc2U6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9IChfdmFsdWU6IFVpTG9jYXRpb25WYWx1ZSkgPT4ge307XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVmFsaWRhdG9yQ2hhbmdlID0gKCkgPT4ge307XHJcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIHBlbmRpbmdXcml0ZVZhbHVlOiBVaUxvY2F0aW9uVmFsdWUgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGlzSW5pdGlhbGl6aW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSB0aXBvbG9naWNoZUxvYWRlZCA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uU2VydmljZTogVWlMb2NhdGlvblNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0dXBOZ0NvbnRyb2woKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6YXRpb25Qcm9taXNlID0gdGhpcy5pbml0aWFsaXplQ29tcG9uZW50KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSA4pSAIENvbnRyb2xWYWx1ZUFjY2Vzc29yIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBVaUxvY2F0aW9uVmFsdWUgfCBudWxsKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudGlwb2xvZ2ljaGVMb2FkZWQpIHtcclxuICAgICAgdGhpcy5wZW5kaW5nV3JpdGVWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnByb2Nlc3NXcml0ZVZhbHVlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogVWlMb2NhdGlvblZhbHVlKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gKHZhbHVlKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5pc0luaXRpYWxpemluZykgZm4odmFsdWUpO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm0uZW5hYmxlKCk7XHJcbiAgICAgIHRoaXMuYXBwbHlGaWVsZHNEaXNhYmxlZFN0YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgVmFsaWRhdG9yIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICB2YWxpZGF0ZShfY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgaWYgKCF0aGlzLmZvcm0pIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyA9IHt9O1xyXG4gICAgY29uc3QgaXNOYXppb25lUmVxdWlyZWQgPSB0aGlzLmNvbmZpZy5uYXppb25lPy5yZXF1aXJlZCAhPT0gZmFsc2U7XHJcbiAgICBjb25zdCBpc1Byb3ZpbmNpYVJlcXVpcmVkID0gdGhpcy5jb25maWcucHJvdmluY2lhPy5yZXF1aXJlZCAhPT0gZmFsc2U7XHJcbiAgICBjb25zdCBpc0NvbXVuZVJlcXVpcmVkID0gdGhpcy5jb25maWcuY29tdW5lPy5yZXF1aXJlZCAhPT0gZmFsc2U7XHJcbiAgICBjb25zdCBpc0NvbXVuZUVzdGVyb1JlcXVpcmVkID0gdGhpcy5jb25maWcuY29tdW5lRXN0ZXJvPy5yZXF1aXJlZCAhPT0gZmFsc2U7XHJcblxyXG4gICAgLy8gVmFsaWRhemlvbmUgbmF6aW9uZVxyXG4gICAgaWYgKGlzTmF6aW9uZVJlcXVpcmVkICYmICF0aGlzLmZvcm0uZ2V0KCduYXppb25lSWQnKT8udmFsdWUpIHtcclxuICAgICAgZXJyb3JzWyduYXppb25lUmVxdWlyZWQnXSA9ICdTZWxlemlvbmEgdW5hIG5hemlvbmUnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFZhbGlkYXppb25pIEl0YWxpYVxyXG4gICAgaWYgKHRoaXMuaXNJdGFsaWFuKSB7XHJcbiAgICAgIGlmIChpc1Byb3ZpbmNpYVJlcXVpcmVkICYmICF0aGlzLmZvcm0uZ2V0KCdwcm92aW5jaWFJZCcpPy52YWx1ZSkge1xyXG4gICAgICAgIGVycm9yc1sncHJvdmluY2lhUmVxdWlyZWQnXSA9ICdTZWxlemlvbmEgdW5hIHByb3ZpbmNpYSc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzQ29tdW5lUmVxdWlyZWQgJiYgIXRoaXMuZm9ybS5nZXQoJ2NvbXVuZUlkJyk/LnZhbHVlKSB7XHJcbiAgICAgICAgZXJyb3JzWydjb211bmVSZXF1aXJlZCddID0gJ1NlbGV6aW9uYSB1biBjb211bmUnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5jYXA/LnJlcXVpcmVkICYmIHRoaXMuc2hvd0NBUCAmJiAhdGhpcy5mb3JtLmdldCgnY2FwJyk/LnZhbHVlKSB7XHJcbiAgICAgICAgZXJyb3JzWydjYXBSZXF1aXJlZCddID0gJ0luc2VyaXNjaSBpbCBDQVAnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5pbmRpcml6em8/LnJlcXVpcmVkICYmIHRoaXMuc2hvd0luZGlyaXp6bykge1xyXG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLmZvcm0uZ2V0KCdpbmRpcml6em8nKT8udmFsdWU7XHJcbiAgICAgICAgaWYgKCF2IHx8IHYudHJpbSgpID09PSAnJykgZXJyb3JzWydpbmRpcml6em9SZXF1aXJlZCddID0gXCJJbnNlcmlzY2kgbCdpbmRpcml6em9cIjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnZhbGlkYXRlQ29udGFjdEZpZWxkcyhlcnJvcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFZhbGlkYXppb25pIGVzdGVyb1xyXG4gICAgaWYgKHRoaXMuaXNGb3JlaWduKSB7XHJcbiAgICAgIGNvbnN0IGNvbXVuZUVzdGVybyA9IHRoaXMuZm9ybS5nZXQoJ2NvbXVuZUVzdGVybycpPy52YWx1ZTtcclxuICAgICAgaWYgKGlzQ29tdW5lRXN0ZXJvUmVxdWlyZWQgJiYgKCFjb211bmVFc3Rlcm8gfHwgY29tdW5lRXN0ZXJvLnRyaW0oKSA9PT0gJycpKSB7XHJcbiAgICAgICAgZXJyb3JzWydjb211bmVFc3Rlcm9SZXF1aXJlZCddID0gJ0luc2VyaXNjaSBpbCBjb211bmUgZXN0ZXJvJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSA4pSAIEFQSSBwdWJibGljYSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgLyoqIE1hcmNhIHR1dHRpIGkgY29udHJvbGxpIGludGVybmkgY29tZSB0b3VjaGVkLiAqL1xyXG4gIG1hcmtBc1RvdWNoZWQoKTogdm9pZCB7XHJcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaCgoYykgPT4gYy5tYXJrQXNUb3VjaGVkKCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFZlcmlmaWNhIHNlIG1vc3RyYXJlIGdsaSBlcnJvcmkgcGVyIHVuIGNhbXBvIGludGVybm8uICovXHJcbiAgc2hvdWxkU2hvd0ZpZWxkRXJyb3JzKGZpZWxkS2V5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkS2V5KTtcclxuICAgIHJldHVybiAhIShjb250cm9sPy5pbnZhbGlkICYmIChjb250cm9sLnRvdWNoZWQgfHwgY29udHJvbC5kaXJ0eSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEVycm9yaSBkaSB1biBjYW1wbyBpbnRlcm5vIGNvbWUgYXJyYXkgZGkgbWVzc2FnZ2kuICovXHJcbiAgZ2V0RmllbGRFcnJvcnMoZmllbGRLZXk6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGZpZWxkS2V5KTtcclxuICAgIGlmICghY29udHJvbD8uZXJyb3JzKSByZXR1cm4gW107XHJcbiAgICBjb25zdCBtZXNzYWdlczogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IGVycnMgPSBjb250cm9sLmVycm9ycztcclxuICAgIGlmIChlcnJzWydyZXF1aXJlZCddKSBtZXNzYWdlcy5wdXNoKCdDYW1wbyBvYmJsaWdhdG9yaW8nKTtcclxuICAgIGlmIChlcnJzWydwYXR0ZXJuJ10pIG1lc3NhZ2VzLnB1c2goJ0Zvcm1hdG8gbm9uIHZhbGlkbycpO1xyXG4gICAgaWYgKGVycnNbJ2VtYWlsJ10pIG1lc3NhZ2VzLnB1c2goJ0VtYWlsIG5vbiB2YWxpZGEnKTtcclxuICAgIHJldHVybiBtZXNzYWdlcztcclxuICB9XHJcblxyXG4gIC8qKiBIYW5kbGVyIGJsdXIgcGVyIHByb3BhZ2FyZSBpbCB0b3VjaGVkLiAqL1xyXG4gIG9uQmx1cigpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICAvKiogUmVzZXR0YSBsbyBzdGF0byBkZWwgY29tcG9uZW50ZS4gKi9cclxuICByZXNldENvbXBvbmVudFN0YXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0l0YWxpYW4gPSBmYWxzZTtcclxuICAgIHRoaXMuaXNGb3JlaWduID0gZmFsc2U7XHJcbiAgICB0aGlzLmZpbHRlcmVkQ29tdW5pID0gW107XHJcbiAgICB0aGlzLmZpbHRlcmVkQ2FwcyA9IFtdO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnY29tdW5lSWQnKT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdjYXAnKT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRvcnMoKTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgOKUgCBHZXR0ZXIgY2FsY29sYXRpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICAvKiogTGFiZWxzIHBlcnNvbmFsaXp6YWJpbGkgY29uIHZhbG9yaSBkaSBkZWZhdWx0LiAqL1xyXG4gIGdldCBsYWJlbHMoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuYXppb25lOiB0aGlzLmNvbmZpZy5sYWJlbHM/Lm5hemlvbmUgfHwgJ05hemlvbmUnLFxyXG4gICAgICBwcm92aW5jaWE6IHRoaXMuY29uZmlnLmxhYmVscz8ucHJvdmluY2lhIHx8ICdQcm92aW5jaWEnLFxyXG4gICAgICBjb211bmU6IHRoaXMuY29uZmlnLmxhYmVscz8uY29tdW5lIHx8ICdDb211bmUnLFxyXG4gICAgICBjYXA6IHRoaXMuY29uZmlnLmxhYmVscz8uY2FwIHx8ICdDQVAnLFxyXG4gICAgICBpbmRpcml6em86IHRoaXMuY29uZmlnLmxhYmVscz8uaW5kaXJpenpvIHx8ICdJbmRpcml6em8nLFxyXG4gICAgICBjb211bmVFc3Rlcm86IHRoaXMuY29uZmlnLmxhYmVscz8uY29tdW5lRXN0ZXJvIHx8ICdDb211bmUgRXN0ZXJvJyxcclxuICAgICAgbWFpbDogdGhpcy5jb25maWcubGFiZWxzPy5tYWlsIHx8ICdFbWFpbCcsXHJcbiAgICAgIHBlYzogdGhpcy5jb25maWcubGFiZWxzPy5wZWMgfHwgJ1BFQycsXHJcbiAgICAgIHRlbGVmb25vOiB0aGlzLmNvbmZpZy5sYWJlbHM/LnRlbGVmb25vIHx8ICdUZWxlZm9ubycsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc1ZhbGlkYXRpb25FcnJvcnMoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBleHRlcm5hbEludmFsaWQgPSAhIShcclxuICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LmludmFsaWQgJiZcclxuICAgICAgKHRoaXMubmdDb250cm9sLmNvbnRyb2wudG91Y2hlZCB8fCB0aGlzLm5nQ29udHJvbC5jb250cm9sLmRpcnR5KVxyXG4gICAgKTtcclxuICAgIGlmIChleHRlcm5hbEludmFsaWQpIHJldHVybiB0cnVlO1xyXG5cclxuICAgIGNvbnN0IGlzSW50ZXJhY3RlZCA9XHJcbiAgICAgIHRoaXMuZm9ybT8udG91Y2hlZCB8fCB0aGlzLmZvcm0/LmRpcnR5IHx8IHRoaXMubmdDb250cm9sPy5jb250cm9sPy50b3VjaGVkIHx8IHRoaXMubmdDb250cm9sPy5jb250cm9sPy5kaXJ0eTtcclxuICAgIGlmIChpc0ludGVyYWN0ZWQpIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy52YWxpZGF0ZShudWxsIGFzIGFueSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsaWRhdGlvbkVycm9ycygpOiBzdHJpbmdbXSB7XHJcbiAgICAvLyBFcnJvcmkgZXN0ZXJuaSBkYWwgRm9ybUJ1aWxkZXJcclxuICAgIGlmICh0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uZXJyb3JzKSB7XHJcbiAgICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgaWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2wuZXJyb3JzWydyZXF1aXJlZCddKSB7XHJcbiAgICAgICAgZXJyb3JzLnB1c2goJ0luaXppYSBzZWxlemlvbmFuZG8gbGEgbmF6aW9uZScpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkgcmV0dXJuIGVycm9ycztcclxuICAgIH1cclxuXHJcbiAgICAvLyBFcnJvcmkgaW50ZXJuaVxyXG4gICAgY29uc3QgaW50ZXJuYWxFcnJvcnMgPSB0aGlzLnZhbGlkYXRlKG51bGwgYXMgYW55KTtcclxuICAgIGlmICghaW50ZXJuYWxFcnJvcnMpIHJldHVybiBbXTtcclxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKGludGVybmFsRXJyb3JzKSBhcyBzdHJpbmdbXTtcclxuICB9XHJcblxyXG4gIGdldCBzaG93Q0FQKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNhcD8uc2hvdyAhPT0gZmFsc2U7XHJcbiAgfVxyXG4gIGdldCBzaG93SW5kaXJpenpvKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmluZGlyaXp6bz8uc2hvdyAhPT0gZmFsc2U7XHJcbiAgfVxyXG4gIGdldCBzaG93TWFpbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5tYWlsPy5zaG93ID09PSB0cnVlO1xyXG4gIH1cclxuICBnZXQgc2hvd1BFQygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wZWM/LnNob3cgPT09IHRydWU7XHJcbiAgfVxyXG4gIGdldCBzaG93VGVsZWZvbm8oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcudGVsZWZvbm8/LnNob3cgPT09IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FwQ29sdW1ucygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmNhcD8uY29sdW1ucyB8fCA2O1xyXG4gIH1cclxuICBnZXQgaW5kaXJpenpvQ29sdW1ucygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmluZGlyaXp6bz8uY29sdW1ucyB8fCAxMjtcclxuICB9XHJcbiAgZ2V0IG1haWxDb2x1bW5zKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcubWFpbD8uY29sdW1ucyB8fCA2O1xyXG4gIH1cclxuICBnZXQgcGVjQ29sdW1ucygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBlYz8uY29sdW1ucyB8fCA2O1xyXG4gIH1cclxuICBnZXQgdGVsZWZvbm9Db2x1bW5zKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcudGVsZWZvbm8/LmNvbHVtbnMgfHwgNjtcclxuICB9XHJcblxyXG4gIGdldCBpc0l0YWx5QnlEZWZhdWx0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLml0YWx5QnlEZWZhdWx0ID09PSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQ2FwRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjb211bmVJZCA9IHRoaXMuZm9ybS5nZXQoJ2NvbXVuZUlkJyk/LnZhbHVlO1xyXG4gICAgcmV0dXJuICFjb211bmVJZCB8fCB0aGlzLmZpbHRlcmVkQ2Fwcy5sZW5ndGggPT09IDAgfHwgdGhpcy5maWx0ZXJlZENhcHMubGVuZ3RoID09PSAxO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTmF6aW9uZURpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5jb25maWcuaXRhbHlCeURlZmF1bHQgPT09IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNSZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy5uYXppb25lPy5yZXF1aXJlZCAhPT0gZmFsc2UpIHJldHVybiB0cnVlO1xyXG4gICAgaWYgKCF0aGlzLm5nQ29udHJvbD8uY29udHJvbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgdmFsaWRhdG9yID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWxpZGF0b3I7XHJcbiAgICBpZiAodmFsaWRhdG9yKSB7XHJcbiAgICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRvcih7fSBhcyBBYnN0cmFjdENvbnRyb2wpO1xyXG4gICAgICByZXR1cm4gISFlcnJvcnM/LlsncmVxdWlyZWQnXTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgOKUgCBJbml6aWFsaXp6YXppb25lIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBwcml2YXRlIGFzeW5jIGluaXRpYWxpemVDb21wb25lbnQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCB0aGlzLmxvYWRMb2NhdGlvbkRhdGEoKTtcclxuICAgICAgdGhpcy50aXBvbG9naWNoZUxvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICBpZiAodGhpcy5wZW5kaW5nV3JpdGVWYWx1ZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc1dyaXRlVmFsdWUodGhpcy5wZW5kaW5nV3JpdGVWYWx1ZSk7XHJcbiAgICAgICAgdGhpcy5wZW5kaW5nV3JpdGVWYWx1ZSA9IG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hcHBseUluaXRpYWxDb25maWd1cmF0aW9uKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdGhpcy5zdWJzY3JpcHRpb25zSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICB0aGlzLnNldHVwRm9ybVN1YnNjcmlwdGlvbnMoKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tVaVNwZWNpZmljYVRlcnJpdG9yaWFsZV0gRXJyb3JlIGluaXppYWxpenphemlvbmU6JywgZXJyb3IpO1xyXG4gICAgICB0aGlzLnRpcG9sb2dpY2hlTG9hZGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIG5hemlvbmVJZDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBwcm92aW5jaWFJZDogW251bGxdLFxyXG4gICAgICBjb211bmVJZDogW3sgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlIH1dLFxyXG4gICAgICBjYXA6IFt7IHZhbHVlOiBudWxsLCBkaXNhYmxlZDogdHJ1ZSB9XSxcclxuICAgICAgY29tdW5lRXN0ZXJvOiBbbnVsbF0sXHJcbiAgICAgIGluZGlyaXp6bzogW251bGxdLFxyXG4gICAgICBtYWlsOiBbbnVsbF0sXHJcbiAgICAgIHBlYzogW251bGxdLFxyXG4gICAgICB0ZWxlZm9ubzogW251bGxdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwTmdDb250cm9sKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsLCB7IHNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pO1xyXG4gICAgaWYgKG5nQ29udHJvbCkge1xyXG4gICAgICB0aGlzLm5nQ29udHJvbCA9IG5nQ29udHJvbDtcclxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGxvYWRMb2NhdGlvbkRhdGEoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBbbmF6aW9uaVJlc3VsdCwgcHJvdmluY2VSZXN1bHRdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xyXG4gICAgICB0aGlzLmxvY2F0aW9uU2VydmljZS5nZXROYXppb25pKCksXHJcbiAgICAgIHRoaXMubG9jYXRpb25TZXJ2aWNlLmdldFByb3ZpbmNlKCksXHJcbiAgICBdKTtcclxuICAgIHRoaXMubmF6aW9uaSA9IG5hemlvbmlSZXN1bHQuZGF0YTtcclxuICAgIHRoaXMucHJvdmluY2UgPSBwcm92aW5jZVJlc3VsdC5jb250ZW50O1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSA4pSAIEdlc3Rpb25lIHdyaXRlVmFsdWUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc1dyaXRlVmFsdWUodmFsdWU6IFVpTG9jYXRpb25WYWx1ZSB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNJbml0aWFsaXppbmcgPSB0cnVlO1xyXG5cclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBjb25zdCBwcm9jZXNzZWRWYWx1ZSA9IHRoaXMuaGFuZGxlSXRhbHlCeURlZmF1bHRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHByb2Nlc3NlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudFN0YXRlKHByb2Nlc3NlZFZhbHVlKS50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLmFwcGx5SW5pdGlhbENvbmZpZ3VyYXRpb24oKTtcclxuICAgICAgICB0aGlzLmlzSW5pdGlhbGl6aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUocHJvY2Vzc2VkVmFsdWUsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgICAgIHRoaXMuaGFuZGxlVGVycml0b3JpYWxDaGFuZ2VzKFxyXG4gICAgICAgICAgcHJvY2Vzc2VkVmFsdWUubmF6aW9uZUlkIHx8ICcnLFxyXG4gICAgICAgICAgcHJvY2Vzc2VkVmFsdWUucHJvdmluY2lhSWQgfHwgJycsXHJcbiAgICAgICAgICBwcm9jZXNzZWRWYWx1ZS5jb211bmVJZCB8fCAnJyxcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmFsaWRhdG9ycygpO1xyXG4gICAgICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjdHJsKSA9PiBjdHJsLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcclxuICAgICAgICB0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybS5yZXNldCh1bmRlZmluZWQsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgdGhpcy5yZXNldENvbXBvbmVudFN0YXRlKCk7XHJcbiAgICAgIHRoaXMuYXBwbHlJbml0aWFsQ29uZmlndXJhdGlvbigpO1xyXG4gICAgICB0aGlzLmlzSW5pdGlhbGl6aW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUl0YWx5QnlEZWZhdWx0VmFsdWUodmFsdWU6IFVpTG9jYXRpb25WYWx1ZSk6IFVpTG9jYXRpb25WYWx1ZSB7XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnLml0YWx5QnlEZWZhdWx0KSByZXR1cm4gdmFsdWU7XHJcbiAgICBpZiAodmFsdWUubmF6aW9uZUlkICYmIHZhbHVlLm5hemlvbmVJZCAhPT0gJ0lUQScpIHtcclxuICAgICAgcmV0dXJuIHsgLi4udmFsdWUsIG5hemlvbmVJZDogJ0lUQScsIGNvbXVuZUVzdGVybzogdW5kZWZpbmVkIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgU3Vic2NyaXB0aW9ucyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgcHJpdmF0ZSBzZXR1cEZvcm1TdWJzY3JpcHRpb25zKCk6IHZvaWQge1xyXG4gICAgLy8gU3Vic2NyaXB0aW9uIHBlciBpIGNhbWJpYW1lbnRpIHRlcnJpdG9yaWFsaSAobmF6aW9uZS9wcm92aW5jaWEvY29tdW5lKVxyXG4gICAgY29tYmluZUxhdGVzdChbXHJcbiAgICAgIHRoaXMuZm9ybVxyXG4gICAgICAgIC5nZXQoJ25hemlvbmVJZCcpIVxyXG4gICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5mb3JtLmdldCgnbmF6aW9uZUlkJykhLnZhbHVlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXHJcbiAgICAgIHRoaXMuZm9ybVxyXG4gICAgICAgIC5nZXQoJ3Byb3ZpbmNpYUlkJykhXHJcbiAgICAgICAgLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmZvcm0uZ2V0KCdwcm92aW5jaWFJZCcpIS52YWx1ZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdjb211bmVJZCcpIS52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5mb3JtLmdldCgnY29tdW5lSWQnKSEudmFsdWUpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcclxuICAgIF0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICBtYXAoKFtuYXppb25lSWQsIHByb3ZpbmNpYUlkLCBjb211bmVJZF0pID0+ICh7IG5hemlvbmVJZCwgcHJvdmluY2lhSWQsIGNvbXVuZUlkIH0pKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh7IG5hemlvbmVJZCwgcHJvdmluY2lhSWQsIGNvbXVuZUlkIH0pID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXppbmcgJiYgdGhpcy50aXBvbG9naWNoZUxvYWRlZCkge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVUZXJyaXRvcmlhbENoYW5nZXMobmF6aW9uZUlkLCBwcm92aW5jaWFJZCwgY29tdW5lSWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gU3Vic2NyaXB0aW9uIHBlciB0dXR0aSBpIGNhbWJpYW1lbnRpIGRlbCBmb3JtXHJcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgY3VycikgPT4gSlNPTi5zdHJpbmdpZnkocHJldikgPT09IEpTT04uc3RyaW5naWZ5KGN1cnIpKSxcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChmb3JtVmFsdWUpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXppbmcgJiYgdGhpcy50aXBvbG9naWNoZUxvYWRlZCkge1xyXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZShmb3JtVmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5ub3RpZnlWYWxpZGF0aW9uQ2hhbmdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgTG9naWNhIHRlcnJpdG9yaWFsZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVUZXJyaXRvcmlhbENoYW5nZXMobmF6aW9uZUlkOiBzdHJpbmcsIHByb3ZpbmNpYUlkOiBzdHJpbmcsIGNvbXVuZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudXBkYXRlTmF0aW9uYWxpdHlTdGF0ZShuYXppb25lSWQpO1xyXG4gICAgYXdhaXQgdGhpcy51cGRhdGVUZXJyaXRvcmlhbERhdGEocHJvdmluY2lhSWQsIGNvbXVuZUlkKTtcclxuICAgIHRoaXMudXBkYXRlVmFsaWRhdG9ycygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVOYXRpb25hbGl0eVN0YXRlKG5hemlvbmVJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBuYXppb25lID0gdGhpcy5uYXppb25pLmZpbmQoKG4pID0+IG4uY29kU3RhdG9QayA9PT0gbmF6aW9uZUlkKTtcclxuICAgIHRoaXMuaXNJdGFsaWFuID0gbmF6aW9uZT8uY29kU3RhdG9QayA9PT0gJ0lUQSc7XHJcbiAgICB0aGlzLmlzRm9yZWlnbiA9ICEhKG5hemlvbmUgJiYgbmF6aW9uZS5jb2RTdGF0b1BrICE9PSAnSVRBJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVRlcnJpdG9yaWFsRGF0YShwcm92aW5jaWFJZDogc3RyaW5nLCBjb211bmVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5pc0l0YWxpYW4gJiYgcHJvdmluY2lhSWQpIHtcclxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVGaWx0ZXJlZENvbXVuaShwcm92aW5jaWFJZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkQ29tdW5pID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNJdGFsaWFuICYmIGNvbXVuZUlkKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlRmlsdGVyZWRDYXBzKGNvbXVuZUlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRDYXBzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBseUZpZWxkc0Rpc2FibGVkU3RhdGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlRmlsdGVyZWRDb211bmkocHJvdmluY2lhSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCFwcm92aW5jaWFJZCkge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkQ29tdW5pID0gW107XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRDb211bmkgPSBhd2FpdCB0aGlzLmxvY2F0aW9uU2VydmljZS5nZXRDb211bmlCeVByb3ZpbmNpYShwcm92aW5jaWFJZCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRDb211bmVJZCA9IHRoaXMuZm9ybS5nZXQoJ2NvbXVuZUlkJyk/LnZhbHVlO1xyXG4gICAgICBpZiAoY3VycmVudENvbXVuZUlkICYmICF0aGlzLmZpbHRlcmVkQ29tdW5pLmZpbmQoKGMpID0+IGMuY29kaWNlQ29tdW5lUGsgPT09IGN1cnJlbnRDb211bmVJZCkpIHtcclxuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IGNvbXVuZUlkOiBudWxsIH0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRDb211bmkgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlRmlsdGVyZWRDYXBzKGNvbXVuZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghY29tdW5lSWQpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZENhcHMgPSBbXTtcclxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBjYXA6IG51bGwgfSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjYXBzID0gYXdhaXQgdGhpcy5sb2NhdGlvblNlcnZpY2UuZ2V0Q2FwTGlzdChjb211bmVJZCk7XHJcbiAgICB0aGlzLmZpbHRlcmVkQ2FwcyA9IGNhcHMubWFwKChjYXBDb2RlKSA9PiAoeyBpZDogY2FwQ29kZSwgY29kaWNlOiBjYXBDb2RlLCBjb211bmVJZCB9KSk7XHJcblxyXG4gICAgY29uc3QgY3VycmVudENhcCA9IHRoaXMuZm9ybS5nZXQoJ2NhcCcpPy52YWx1ZTtcclxuICAgIGlmICh0aGlzLmZpbHRlcmVkQ2Fwcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBjYXA6IHRoaXMuZmlsdGVyZWRDYXBzWzBdLmlkIH0sIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmZpbHRlcmVkQ2Fwcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGlmICghY3VycmVudENhcCB8fCAhdGhpcy5maWx0ZXJlZENhcHMuc29tZSgoYykgPT4gYy5pZCA9PT0gY3VycmVudENhcCkpIHtcclxuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IGNhcDogbnVsbCB9LCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBjYXA6IG51bGwgfSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUNvbXBvbmVudFN0YXRlKHZhbHVlOiBVaUxvY2F0aW9uVmFsdWUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudXBkYXRlTmF0aW9uYWxpdHlTdGF0ZSh2YWx1ZS5uYXppb25lSWQgfHwgJycpO1xyXG4gICAgYXdhaXQgdGhpcy51cGRhdGVGaWx0ZXJlZENvbXVuaSh2YWx1ZS5wcm92aW5jaWFJZCB8fCAnJyk7XHJcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUZpbHRlcmVkQ2Fwcyh2YWx1ZS5jb211bmVJZCB8fCAnJyk7XHJcbiAgICB0aGlzLmFwcGx5RmllbGRzRGlzYWJsZWRTdGF0ZSgpO1xyXG4gICAgdGhpcy51cGRhdGVWYWxpZGF0b3JzKCk7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgU3RhdG8gY2FtcGkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWVsZHNEaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5mb3JtLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tdW5lQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoJ2NvbXVuZUlkJyk7XHJcbiAgICBjb25zdCBjYXBDb250cm9sID0gdGhpcy5mb3JtLmdldCgnY2FwJyk7XHJcbiAgICBjb25zdCBuYXppb25lQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoJ25hemlvbmVJZCcpO1xyXG5cclxuICAgIC8vIENvbXVuZSBhYmlsaXRhdG8gc29sbyBzZSBJdGFsaWEgKyBwcm92aW5jaWEgc2VsZXppb25hdGFcclxuICAgIGlmICh0aGlzLmlzSXRhbGlhbiAmJiB0aGlzLmZvcm0uZ2V0KCdwcm92aW5jaWFJZCcpPy52YWx1ZSkge1xyXG4gICAgICBjb211bmVDb250cm9sPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29tdW5lQ29udHJvbD8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ0FQIHNlZ3VlIGxvZ2ljYSBzcGVjaWZpY2FcclxuICAgIGlmICh0aGlzLmlzQ2FwRGlzYWJsZWQpIHtcclxuICAgICAgY2FwQ29udHJvbD8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjYXBDb250cm9sPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE5hemlvbmUgZGlzYWJpbGl0YXRhIHNlIGl0YWx5QnlEZWZhdWx0XHJcbiAgICBpZiAodGhpcy5pc0l0YWx5QnlEZWZhdWx0KSB7XHJcbiAgICAgIG5hemlvbmVDb250cm9sPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5hemlvbmVDb250cm9sPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSA4pSAIFZhbGlkYXppb25lIGRpbmFtaWNhIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVZhbGlkYXRvcnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250cm9sczogUmVjb3JkPHN0cmluZywgQWJzdHJhY3RDb250cm9sIHwgbnVsbD4gPSB7XHJcbiAgICAgIG5hemlvbmU6IHRoaXMuZm9ybS5nZXQoJ25hemlvbmVJZCcpLFxyXG4gICAgICBwcm92aW5jaWE6IHRoaXMuZm9ybS5nZXQoJ3Byb3ZpbmNpYUlkJyksXHJcbiAgICAgIGNvbXVuZTogdGhpcy5mb3JtLmdldCgnY29tdW5lSWQnKSxcclxuICAgICAgY29tdW5lRXN0ZXJvOiB0aGlzLmZvcm0uZ2V0KCdjb211bmVFc3Rlcm8nKSxcclxuICAgICAgY2FwOiB0aGlzLmZvcm0uZ2V0KCdjYXAnKSxcclxuICAgICAgaW5kaXJpenpvOiB0aGlzLmZvcm0uZ2V0KCdpbmRpcml6em8nKSxcclxuICAgICAgbWFpbDogdGhpcy5mb3JtLmdldCgnbWFpbCcpLFxyXG4gICAgICBwZWM6IHRoaXMuZm9ybS5nZXQoJ3BlYycpLFxyXG4gICAgICB0ZWxlZm9ubzogdGhpcy5mb3JtLmdldCgndGVsZWZvbm8nKSxcclxuICAgIH07XHJcblxyXG4gICAgLy8gUHVsaXNjaSB0dXR0aSBpIHZhbGlkYXRvcmlcclxuICAgIE9iamVjdC52YWx1ZXMoY29udHJvbHMpLmZvckVhY2goKGMpID0+IGM/LmNsZWFyVmFsaWRhdG9ycygpKTtcclxuXHJcbiAgICAvLyBOYXppb25lXHJcbiAgICBpZiAodGhpcy5jb25maWcubmF6aW9uZT8ucmVxdWlyZWQgIT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnRyb2xzWyduYXppb25lJ10/LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNJdGFsaWFuKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wcm92aW5jaWE/LnJlcXVpcmVkICE9PSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnRyb2xzWydwcm92aW5jaWEnXT8uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb25maWcuY29tdW5lPy5yZXF1aXJlZCAhPT0gZmFsc2UpIHtcclxuICAgICAgICBjb250cm9sc1snY29tdW5lJ10/LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29uZmlnLmNhcD8ucmVxdWlyZWQgJiYgdGhpcy5zaG93Q0FQKSB7XHJcbiAgICAgICAgY29udHJvbHNbJ2NhcCddPy5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5pbmRpcml6em8/LnJlcXVpcmVkICYmIHRoaXMuc2hvd0luZGlyaXp6bykge1xyXG4gICAgICAgIGNvbnRyb2xzWydpbmRpcml6em8nXT8uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwcGx5Q29udGFjdFZhbGlkYXRvcnMoY29udHJvbHMpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRm9yZWlnbikge1xyXG4gICAgICBpZiAodGhpcy5jb25maWcuY29tdW5lRXN0ZXJvPy5yZXF1aXJlZCAhPT0gZmFsc2UpIHtcclxuICAgICAgICBjb250cm9sc1snY29tdW5lRXN0ZXJvJ10/LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBBZ2dpb3JuYSBzZW56YSBlbWV0dGVyZSBldmVudGlcclxuICAgIE9iamVjdC52YWx1ZXMoY29udHJvbHMpLmZvckVhY2goKGMpID0+IGM/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcclxuICAgIHRoaXMubm90aWZ5VmFsaWRhdGlvbkNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUNvbnRhY3RWYWxpZGF0b3JzKGNvbnRyb2xzOiBSZWNvcmQ8c3RyaW5nLCBBYnN0cmFjdENvbnRyb2wgfCBudWxsPik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLm1haWw/LnJlcXVpcmVkICYmIHRoaXMuc2hvd01haWwpIHtcclxuICAgICAgY29udHJvbHNbJ21haWwnXT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuRU1BSUxfUEFUVEVSTildKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zaG93TWFpbCkge1xyXG4gICAgICBjb250cm9sc1snbWFpbCddPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5FTUFJTF9QQVRURVJOKV0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5wZWM/LnJlcXVpcmVkICYmIHRoaXMuc2hvd1BFQykge1xyXG4gICAgICBjb250cm9sc1sncGVjJ10/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLlBFQ19QQVRURVJOKV0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNob3dQRUMpIHtcclxuICAgICAgY29udHJvbHNbJ3BlYyddPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5QRUNfUEFUVEVSTildKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcudGVsZWZvbm8/LnJlcXVpcmVkICYmIHRoaXMuc2hvd1RlbGVmb25vKSB7XHJcbiAgICAgIGNvbnRyb2xzWyd0ZWxlZm9ubyddPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5QSE9ORV9QQVRURVJOKV0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNob3dUZWxlZm9ubykge1xyXG4gICAgICBjb250cm9sc1sndGVsZWZvbm8nXT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuUEhPTkVfUEFUVEVSTildKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVDb250YWN0RmllbGRzKGVycm9yczogVmFsaWRhdGlvbkVycm9ycyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLm1haWw/LnJlcXVpcmVkICYmIHRoaXMuc2hvd01haWwpIHtcclxuICAgICAgY29uc3QgdiA9IHRoaXMuZm9ybS5nZXQoJ21haWwnKT8udmFsdWU7XHJcbiAgICAgIGlmICghdiB8fCB2LnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgICBlcnJvcnNbJ21haWxSZXF1aXJlZCddID0gXCJJbnNlcmlzY2kgbCdlbWFpbFwiO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLkVNQUlMX1BBVFRFUk4udGVzdCh2KSkge1xyXG4gICAgICAgIGVycm9yc1snbWFpbEludmFsaWQnXSA9IFwiSW5zZXJpc2NpIHVuJ2VtYWlsIHZhbGlkYVwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb25maWcucGVjPy5yZXF1aXJlZCAmJiB0aGlzLnNob3dQRUMpIHtcclxuICAgICAgY29uc3QgdiA9IHRoaXMuZm9ybS5nZXQoJ3BlYycpPy52YWx1ZTtcclxuICAgICAgaWYgKCF2IHx8IHYudHJpbSgpID09PSAnJykge1xyXG4gICAgICAgIGVycm9yc1sncGVjUmVxdWlyZWQnXSA9ICdJbnNlcmlzY2kgbGEgUEVDJztcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5QRUNfUEFUVEVSTi50ZXN0KHYpKSB7XHJcbiAgICAgICAgZXJyb3JzWydwZWNJbnZhbGlkJ10gPSAnSW5zZXJpc2NpIHVuYSBQRUMgdmFsaWRhJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnRlbGVmb25vPy5yZXF1aXJlZCAmJiB0aGlzLnNob3dUZWxlZm9ubykge1xyXG4gICAgICBjb25zdCB2ID0gdGhpcy5mb3JtLmdldCgndGVsZWZvbm8nKT8udmFsdWU7XHJcbiAgICAgIGlmICghdiB8fCB2LnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgICBlcnJvcnNbJ3RlbGVmb25vUmVxdWlyZWQnXSA9ICdJbnNlcmlzY2kgaWwgdGVsZWZvbm8nO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLlBIT05FX1BBVFRFUk4udGVzdCh2KSkge1xyXG4gICAgICAgIGVycm9yc1sndGVsZWZvbm9JbnZhbGlkJ10gPSAnSW5zZXJpc2NpIHVuIG51bWVybyBkaSB0ZWxlZm9ubyB2YWxpZG8nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgQ29uZmlndXJhemlvbmUgaW5pemlhbGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHByaXZhdGUgYXBwbHlJbml0aWFsQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5hemlvbmVDb250cm9sID0gdGhpcy5mb3JtLmdldCgnbmF6aW9uZUlkJyk7XHJcbiAgICBjb25zdCBjdXJyZW50TmF6aW9uZUlkID0gbmF6aW9uZUNvbnRyb2w/LnZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5pdGFseUJ5RGVmYXVsdCkge1xyXG4gICAgICBjb25zdCBpdGFsaWEgPSB0aGlzLm5hemlvbmkuZmluZCgobikgPT4gbi5jb2RTdGF0b1BrID09PSAnSVRBJyk7XHJcbiAgICAgIGlmIChpdGFsaWEgJiYgKCFjdXJyZW50TmF6aW9uZUlkIHx8IGN1cnJlbnROYXppb25lSWQgIT09ICdJVEEnKSkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgbmF6aW9uZUlkOiBpdGFsaWEuY29kU3RhdG9QayB9LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVOYXRpb25hbGl0eVN0YXRlKCdJVEEnKTtcclxuICAgICAgbmF6aW9uZUNvbnRyb2w/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGN1cnJlbnROYXppb25lSWQpIHRoaXMudXBkYXRlTmF0aW9uYWxpdHlTdGF0ZShjdXJyZW50TmF6aW9uZUlkKTtcclxuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSBuYXppb25lQ29udHJvbD8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRvcnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbm90aWZ5VmFsaWRhdGlvbkNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vblZhbGlkYXRvckNoYW5nZSgpLCAwKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPCEtLVxyXG4gIENvbXBvbmVudGUgcGVyIGxhIHNlbGV6aW9uZSBkaSBkYXRpIGdlb2dyYWZpY2kgKEl0YWxpYS9Fc3Rlcm8pLlxyXG4gIFV0aWxpenphIGlsIGZsb3cgY29udHJvbCBtb2Rlcm5vIGRpIEFuZ3VsYXIgKEBpZiwgQGZvcikuXHJcbi0tPlxyXG48ZGl2XHJcbiAgY2xhc3M9XCJ1aS1sb2NhdGlvblwiXHJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcclxuICBbY2xhc3MudWktbG9jYXRpb24tLWZvcmVpZ25dPVwiaXNGb3JlaWduXCJcclxuICBbY2xhc3MudWktbG9jYXRpb24tLWl0YWxpYW5dPVwiaXNJdGFsaWFuXCJcclxuPlxyXG4gIDwhLS0gPT09PT09PT09PT09PT09PT09PT0gTkFaSU9ORSA9PT09PT09PT09PT09PT09PT09PSAtLT5cclxuICA8ZGl2IGNsYXNzPVwidWktbG9jYXRpb25fX2ZpZWxkLXJvd1wiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcclxuICAgICAgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZnVsbC13aWR0aFwiXHJcbiAgICAgIFtjbGFzcy51aS1sb2NhdGlvbl9faXRhbHktZGVmYXVsdF09XCJjb25maWcuaXRhbHlCeURlZmF1bHRcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWxhYmVsPnt7IGxhYmVscy5uYXppb25lIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmF6aW9uZUlkXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgaXNOYXppb25lRGlzYWJsZWRcIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZXppb25hIG5hemlvbmVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm51bGxcIj5TZWxlemlvbmEgbmF6aW9uZTwvbWF0LW9wdGlvbj5cclxuICAgICAgICBAZm9yIChuYXppb25lIG9mIG5hemlvbmk7IHRyYWNrIG5hemlvbmUuY29kU3RhdG9Qaykge1xyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm5hemlvbmUuY29kU3RhdG9Qa1wiPlxyXG4gICAgICAgICAgICB7eyBuYXppb25lLmRlc2NyaXppb25lIH19XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIEBpZiAoc2hvdWxkU2hvd0ZpZWxkRXJyb3JzKCduYXppb25lSWQnKSkge1xyXG4gICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICBAZm9yIChlcnJvciBvZiBnZXRGaWVsZEVycm9ycygnbmF6aW9uZUlkJyk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICA8ZGl2Pnt7IGVycm9yIH19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgIH1cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gPT09PT09PT09PT09PT09PT09PT0gQ0FNUEkgSVRBTElBID09PT09PT09PT09PT09PT09PT09IC0tPlxyXG4gIEBpZiAoaXNJdGFsaWFuKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidWktbG9jYXRpb25fX3Byb3ZpbmNpYS1jb211bmVcIj5cclxuICAgICAgPCEtLSBQcm92aW5jaWEgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZmllbGQtcm93XCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbHMucHJvdmluY2lhIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcm92aW5jaWFJZFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGV6aW9uYSBwcm92aW5jaWFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwibnVsbFwiPlNlbGV6aW9uYSBwcm92aW5jaWE8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIEBmb3IgKHByb3Ygb2YgcHJvdmluY2U7IHRyYWNrIHByb3YuY29kaWNlUHJvdmluY2lhUGspIHtcclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwicHJvdi5jb2RpY2VQcm92aW5jaWFQa1wiPlxyXG4gICAgICAgICAgICAgICAge3sgcHJvdi5ub21lUHJvdmluY2lhIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICBAaWYgKHNob3VsZFNob3dGaWVsZEVycm9ycygncHJvdmluY2lhSWQnKSkge1xyXG4gICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgIEBmb3IgKGVycm9yIG9mIGdldEZpZWxkRXJyb3JzKCdwcm92aW5jaWFJZCcpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIDxkaXY+e3sgZXJyb3IgfX08L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBDb211bmUgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZmllbGQtcm93XCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbHMuY29tdW5lIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb211bmVJZFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGV6aW9uYSBjb211bmVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwibnVsbFwiPlNlbGV6aW9uYSBjb211bmU8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIEBmb3IgKGNvbXVuZSBvZiBmaWx0ZXJlZENvbXVuaTsgdHJhY2sgY29tdW5lLmNvZGljZUNvbXVuZVBrKSB7XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImNvbXVuZS5jb2RpY2VDb211bmVQa1wiPlxyXG4gICAgICAgICAgICAgICAge3sgY29tdW5lLm5vbWVDb211bmUgfX1cclxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd0ZpZWxkRXJyb3JzKCdjb211bmVJZCcpKSB7XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgQGZvciAoZXJyb3Igb2YgZ2V0RmllbGRFcnJvcnMoJ2NvbXVuZUlkJyk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgPGRpdj57eyBlcnJvciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tID09PT09PT09PT09PT09PT09PT09IEdSSUdMSUEgQ0FNUEkgRElOQU1JQ0kgPT09PT09PT09PT09PT09PT09PT0gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwidWktbG9jYXRpb25fX2R5bmFtaWMtZ3JpZFwiPlxyXG4gICAgICA8IS0tIENBUCAtLT5cclxuICAgICAgQGlmIChzaG93Q0FQICYmIGlzSXRhbGlhbikge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZ3JpZC1jZWxsXCIgW3N0eWxlLmdyaWQtY29sdW1uXT1cIidzcGFuICcgKyBjYXBDb2x1bW5zXCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInVpLWxvY2F0aW9uX19mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWxzLmNhcCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNhcFwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGlzQ2FwRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZXppb25hIENBUFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwibnVsbFwiPlNlbGV6aW9uYSBDQVA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgQGZvciAoY2FwIG9mIGZpbHRlcmVkQ2FwczsgdHJhY2sgY2FwLmlkKSB7XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiY2FwLmlkXCI+e3sgY2FwLmNvZGljZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgQGlmIChzaG91bGRTaG93RmllbGRFcnJvcnMoJ2NhcCcpKSB7XHJcbiAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGVycm9yIG9mIGdldEZpZWxkRXJyb3JzKCdjYXAnKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZXJyb3IgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPCEtLSBJbmRpcml6em8gLS0+XHJcbiAgICAgIEBpZiAoc2hvd0luZGlyaXp6bykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZ3JpZC1jZWxsXCIgW3N0eWxlLmdyaWQtY29sdW1uXT1cIidzcGFuICcgKyBpbmRpcml6em9Db2x1bW5zXCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInVpLWxvY2F0aW9uX19mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWxzLmluZGlyaXp6byB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImluZGlyaXp6b1wiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJWaWEsIG51bWVybyBjaXZpY29cIlxyXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICBAaWYgKHNob3VsZFNob3dGaWVsZEVycm9ycygnaW5kaXJpenpvJykpIHtcclxuICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgQGZvciAoZXJyb3Igb2YgZ2V0RmllbGRFcnJvcnMoJ2luZGlyaXp6bycpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgPGRpdj57eyBlcnJvciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcblxyXG4gICAgICA8IS0tIE1haWwgLS0+XHJcbiAgICAgIEBpZiAoc2hvd01haWwpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidWktbG9jYXRpb25fX2dyaWQtY2VsbFwiIFtzdHlsZS5ncmlkLWNvbHVtbl09XCInc3BhbiAnICsgbWFpbENvbHVtbnNcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidWktbG9jYXRpb25fX2Z1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbHMubWFpbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWFpbFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlc2VtcGlvQGVtYWlsLmNvbVwiXHJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd0ZpZWxkRXJyb3JzKCdtYWlsJykpIHtcclxuICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgQGZvciAoZXJyb3Igb2YgZ2V0RmllbGRFcnJvcnMoJ21haWwnKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZXJyb3IgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPCEtLSBQRUMgLS0+XHJcbiAgICAgIEBpZiAoc2hvd1BFQykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZ3JpZC1jZWxsXCIgW3N0eWxlLmdyaWQtY29sdW1uXT1cIidzcGFuICcgKyBwZWNDb2x1bW5zXCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInVpLWxvY2F0aW9uX19mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWxzLnBlYyB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGVjXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzZW1waW9AcGVjLml0XCJcclxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgQGlmIChzaG91bGRTaG93RmllbGRFcnJvcnMoJ3BlYycpKSB7XHJcbiAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGVycm9yIG9mIGdldEZpZWxkRXJyb3JzKCdwZWMnKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZXJyb3IgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPCEtLSBUZWxlZm9ubyAtLT5cclxuICAgICAgQGlmIChzaG93VGVsZWZvbm8pIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidWktbG9jYXRpb25fX2dyaWQtY2VsbFwiIFtzdHlsZS5ncmlkLWNvbHVtbl09XCInc3BhbiAnICsgdGVsZWZvbm9Db2x1bW5zXCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInVpLWxvY2F0aW9uX19mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWxzLnRlbGVmb25vIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cInRlbFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGVsZWZvbm9cIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiKzM5IDEyMyA0NTYgNzg5MFwiXHJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd0ZpZWxkRXJyb3JzKCd0ZWxlZm9ubycpKSB7XHJcbiAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGVycm9yIG9mIGdldEZpZWxkRXJyb3JzKCd0ZWxlZm9ubycpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgPGRpdj57eyBlcnJvciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIDwhLS0gPT09PT09PT09PT09PT09PT09PT0gQ0FNUE8gRVNURVJPID09PT09PT09PT09PT09PT09PT09IC0tPlxyXG4gIEBpZiAoaXNGb3JlaWduKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidWktbG9jYXRpb25fX2ZpZWxkLXJvd1wiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInVpLWxvY2F0aW9uX19mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbHMuY29tdW5lRXN0ZXJvIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29tdW5lRXN0ZXJvXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiSW5zZXJpc2NpIGNpdHRhL2NvbXVuZVwiXHJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgQGlmIChzaG91bGRTaG93RmllbGRFcnJvcnMoJ2NvbXVuZUVzdGVybycpKSB7XHJcbiAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICBAZm9yIChlcnJvciBvZiBnZXRGaWVsZEVycm9ycygnY29tdW5lRXN0ZXJvJyk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgIDxkaXY+e3sgZXJyb3IgfX08L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19
|
|
654
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY2lmaWNhLXRlcnJpdG9yaWFsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tYnVpbGRlci9zdWItY29tcG9uZW50cy9zcGVjaWZpY2EtdGVycml0b3JpYWxlL3NwZWNpZmljYS10ZXJyaXRvcmlhbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctdWktc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWJ1aWxkZXIvc3ViLWNvbXBvbmVudHMvc3BlY2lmaWNhLXRlcnJpdG9yaWFsZS9zcGVjaWZpY2EtdGVycml0b3JpYWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsRUFLVixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLGlCQUFpQixFQUNqQixhQUFhLEVBSWIsVUFBVSxFQUVWLFNBQVMsRUFDVCxtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztBQWdCekQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQXFCSCxNQUFNLE9BQU8sZ0NBQWdDO0lBdUMzQyxZQUNtQixFQUFlLEVBQ2Ys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LFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGlDQUFpQyxDQUFDOzRCQUMvRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJO3VLQU01QixNQUFNO3NCQUFkLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBJbmplY3RvcixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtR3JvdXAsXHJcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgTkdfVkFMSURBVE9SUyxcclxuICBGb3JtQ29udHJvbCxcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3JzLFxyXG4gIFZhbGlkYXRvcixcclxuICBOZ0NvbnRyb2wsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIHRha2VVbnRpbCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN0YXJ0V2l0aCwgbWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgVWlMb2NhdGlvblNlcnZpY2UsIFVpTmF6aW9uZSwgVWlQcm92aW5jaWEsIFVpQ29tdW5lIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbG9jYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFVpTG9jYXRpb25Db25maWcsIFVpTG9jYXRpb25WYWx1ZSB9IGZyb20gJy4uLy4uL3R5cGVzL3RlcnJpdG9yaWFsZS50eXBlcyc7XHJcblxyXG4vKipcclxuICogSW50ZXJmYWNjaWEgaW50ZXJuYSBwZXIgaSBDQVAgbmVsIGNvbXBvbmVudGUuXHJcbiAqL1xyXG5pbnRlcmZhY2UgVWlDYXBPcHRpb24ge1xyXG4gIC8qKiBJRCBkZWwgQ0FQLiAqL1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgLyoqIENvZGljZSBDQVAgdmlzdWFsaXp6YXRvLiAqL1xyXG4gIGNvZGljZTogc3RyaW5nO1xyXG4gIC8qKiBJRCBkZWwgY29tdW5lIGFzc29jaWF0by4gKi9cclxuICBjb211bmVJZDogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50ZSBzdGFuZGFsb25lIHBlciBsYSBzZWxlemlvbmUgZGkgZGF0aSBnZW9ncmFmaWNpIGl0YWxpYW5pIG8gZXN0ZXJpLlxyXG4gKlxyXG4gKiBTdXBwb3J0YSBkdWUgbW9kYWxpdGE6XHJcbiAqIC0gKipJdGFsaWEqKjogc2VsZXppb25lIGEgY2FzY2F0YSBuYXppb25lIC0+IHByb3ZpbmNpYSAtPiBjb211bmUgLT4gQ0FQXHJcbiAqIC0gKipFc3Rlcm8qKjogc2VsZXppb25lIG5hemlvbmUgKyBjYW1wbyB0ZXN0byBsaWJlcm8gcGVyIGlsIGNvbXVuZVxyXG4gKlxyXG4gKiBDYW1waSBvcHppb25hbGkgY29uZmlndXJhYmlsaTogaW5kaXJpenpvLCBtYWlsLCBQRUMsIHRlbGVmb25vLlxyXG4gKlxyXG4gKiBJbXBsZW1lbnRhIGBDb250cm9sVmFsdWVBY2Nlc3NvcmAgZSBgVmFsaWRhdG9yYCBwZXIgbCdpbnRlZ3JhemlvbmVcclxuICogZGlyZXR0YSBjb24gQW5ndWxhciBSZWFjdGl2ZSBGb3Jtcy5cclxuICpcclxuICogVXRpbGl6emEgZGF0aSBkYSBKU09OIHN0YXRpY2kgdHJhbWl0ZSBgVWlMb2NhdGlvblNlcnZpY2VgXHJcbiAqIChuZXNzdW5hIGRpcGVuZGVuemEgYWwgYmFja2VuZCkuXHJcbiAqXHJcbiAqIEBzZWxlY3RvciB1aS1zcGVjaWZpY2EtdGVycml0b3JpYWxlXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPHVpLXNwZWNpZmljYS10ZXJyaXRvcmlhbGVcclxuICogICBbZm9ybUNvbnRyb2xdPVwibXlDb250cm9sXCJcclxuICogICBbY29uZmlnXT1cInsgaXRhbHlCeURlZmF1bHQ6IHRydWUsIGNhcDogeyBzaG93OiB0cnVlIH0gfVwiXHJcbiAqIC8+XHJcbiAqIGBgYFxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd1aS1zcGVjaWZpY2EtdGVycml0b3JpYWxlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdFNlbGVjdE1vZHVsZSwgTWF0SW5wdXRNb2R1bGVdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVWlTcGVjaWZpY2FUZXJyaXRvcmlhbGVDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFVpU3BlY2lmaWNhVGVycml0b3JpYWxlQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3BlY2lmaWNhLXRlcnJpdG9yaWFsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NwZWNpZmljYS10ZXJyaXRvcmlhbGUuY29tcG9uZW50LnNjc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlTcGVjaWZpY2FUZXJyaXRvcmlhbGVDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgLyoqIENvbmZpZ3VyYXppb25lIGRlbCBjb21wb25lbnRlLiAqL1xyXG4gIEBJbnB1dCgpIGNvbmZpZzogVWlMb2NhdGlvbkNvbmZpZyA9IHt9O1xyXG5cclxuICAvKiogU3RhdG8gZGlzYWJpbGl0YXRvIGdsb2JhbGUuICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8g4pSA4pSA4pSAIFBhdHRlcm4gZGkgdmFsaWRhemlvbmUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcbiAgcHJpdmF0ZSByZWFkb25seSBFTUFJTF9QQVRURVJOID0gL15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSQvO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgUEVDX1BBVFRFUk4gPSAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC87XHJcbiAgcHJpdmF0ZSByZWFkb25seSBQSE9ORV9QQVRURVJOID0gL15bK10/WzAtOVxcc1xcLSgpXXs2LDE2fSQvO1xyXG5cclxuICAvLyDilIDilIDilIAgU3RhdG8gaW50ZXJubyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIGlzSXRhbGlhbiA9IGZhbHNlO1xyXG4gIGlzRm9yZWlnbiA9IGZhbHNlO1xyXG4gIG5nQ29udHJvbCE6IE5nQ29udHJvbDtcclxuXHJcbiAgLyoqIEVsZW5jbyBuYXppb25pIGRpc3BvbmliaWxpLiAqL1xyXG4gIG5hemlvbmk6IFVpTmF6aW9uZVtdID0gW107XHJcbiAgLyoqIEVsZW5jbyBwcm92aW5jZSBkaXNwb25pYmlsaS4gKi9cclxuICBwcm92aW5jZTogVWlQcm92aW5jaWFbXSA9IFtdO1xyXG4gIC8qKiBDb211bmkgZmlsdHJhdGkgcGVyIGxhIHByb3ZpbmNpYSBzZWxlemlvbmF0YS4gKi9cclxuICBmaWx0ZXJlZENvbXVuaTogVWlDb211bmVbXSA9IFtdO1xyXG4gIC8qKiBDQVAgZmlsdHJhdGkgcGVyIGlsIGNvbXVuZSBzZWxlemlvbmF0by4gKi9cclxuICBmaWx0ZXJlZENhcHM6IFVpQ2FwT3B0aW9uW10gPSBbXTtcclxuXHJcbiAgLyoqIFByb21pc2UgZGkgaW5pemlhbGl6emF6aW9uZSAodXRpbGUgcGVyIHRlc3QgZSB0YWJsZS10ZXJyaXRvcmlhbGUpLiAqL1xyXG4gIGluaXRpYWxpemF0aW9uUHJvbWlzZTogUHJvbWlzZTx2b2lkPiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKF92YWx1ZTogVWlMb2NhdGlvblZhbHVlKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xyXG4gIHByaXZhdGUgb25WYWxpZGF0b3JDaGFuZ2UgPSAoKSA9PiB7fTtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcGVuZGluZ1dyaXRlVmFsdWU6IFVpTG9jYXRpb25WYWx1ZSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgaXNJbml0aWFsaXppbmcgPSBmYWxzZTtcclxuICBwcml2YXRlIHRpcG9sb2dpY2hlTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb25TZXJ2aWNlOiBVaUxvY2F0aW9uU2VydmljZSxcclxuICApIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXR1cE5nQ29udHJvbCgpO1xyXG4gICAgdGhpcy5pbml0aWFsaXphdGlvblByb21pc2UgPSB0aGlzLmluaXRpYWxpemVDb21wb25lbnQoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgQ29udHJvbFZhbHVlQWNjZXNzb3Ig4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IFVpTG9jYXRpb25WYWx1ZSB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50aXBvbG9naWNoZUxvYWRlZCkge1xyXG4gICAgICB0aGlzLnBlbmRpbmdXcml0ZVZhbHVlID0gdmFsdWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucHJvY2Vzc1dyaXRlVmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBVaUxvY2F0aW9uVmFsdWUpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSAodmFsdWUpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6aW5nKSBmbih2YWx1ZSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcclxuICAgICAgdGhpcy5hcHBseUZpZWxkc0Rpc2FibGVkU3RhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgOKUgCBWYWxpZGF0b3Ig4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHZhbGlkYXRlKF9jb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgY29uc3QgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID0ge307XHJcbiAgICBjb25zdCBpc05hemlvbmVSZXF1aXJlZCA9IHRoaXMuY29uZmlnLm5hemlvbmU/LnJlcXVpcmVkICE9PSBmYWxzZTtcclxuICAgIGNvbnN0IGlzUHJvdmluY2lhUmVxdWlyZWQgPSB0aGlzLmNvbmZpZy5wcm92aW5jaWE/LnJlcXVpcmVkICE9PSBmYWxzZTtcclxuICAgIGNvbnN0IGlzQ29tdW5lUmVxdWlyZWQgPSB0aGlzLmNvbmZpZy5jb211bmU/LnJlcXVpcmVkICE9PSBmYWxzZTtcclxuICAgIGNvbnN0IGlzQ29tdW5lRXN0ZXJvUmVxdWlyZWQgPSB0aGlzLmNvbmZpZy5jb211bmVFc3Rlcm8/LnJlcXVpcmVkICE9PSBmYWxzZTtcclxuXHJcbiAgICAvLyBWYWxpZGF6aW9uZSBuYXppb25lXHJcbiAgICBpZiAoaXNOYXppb25lUmVxdWlyZWQgJiYgIXRoaXMuZm9ybS5nZXQoJ25hemlvbmVJZCcpPy52YWx1ZSkge1xyXG4gICAgICBlcnJvcnNbJ25hemlvbmVSZXF1aXJlZCddID0gJ1NlbGV6aW9uYSB1bmEgbmF6aW9uZSc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVmFsaWRhemlvbmkgSXRhbGlhXHJcbiAgICBpZiAodGhpcy5pc0l0YWxpYW4pIHtcclxuICAgICAgaWYgKGlzUHJvdmluY2lhUmVxdWlyZWQgJiYgIXRoaXMuZm9ybS5nZXQoJ3Byb3ZpbmNpYUlkJyk/LnZhbHVlKSB7XHJcbiAgICAgICAgZXJyb3JzWydwcm92aW5jaWFSZXF1aXJlZCddID0gJ1NlbGV6aW9uYSB1bmEgcHJvdmluY2lhJztcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNDb211bmVSZXF1aXJlZCAmJiAhdGhpcy5mb3JtLmdldCgnY29tdW5lSWQnKT8udmFsdWUpIHtcclxuICAgICAgICBlcnJvcnNbJ2NvbXVuZVJlcXVpcmVkJ10gPSAnU2VsZXppb25hIHVuIGNvbXVuZSc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29uZmlnLmNhcD8ucmVxdWlyZWQgJiYgdGhpcy5zaG93Q0FQICYmICF0aGlzLmZvcm0uZ2V0KCdjYXAnKT8udmFsdWUpIHtcclxuICAgICAgICBlcnJvcnNbJ2NhcFJlcXVpcmVkJ10gPSAnSW5zZXJpc2NpIGlsIENBUCc7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29uZmlnLmluZGlyaXp6bz8ucmVxdWlyZWQgJiYgdGhpcy5zaG93SW5kaXJpenpvKSB7XHJcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuZm9ybS5nZXQoJ2luZGlyaXp6bycpPy52YWx1ZTtcclxuICAgICAgICBpZiAoIXYgfHwgdi50cmltKCkgPT09ICcnKSBlcnJvcnNbJ2luZGlyaXp6b1JlcXVpcmVkJ10gPSBcIkluc2VyaXNjaSBsJ2luZGlyaXp6b1wiO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudmFsaWRhdGVDb250YWN0RmllbGRzKGVycm9ycyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVmFsaWRhemlvbmkgZXN0ZXJvXHJcbiAgICBpZiAodGhpcy5pc0ZvcmVpZ24pIHtcclxuICAgICAgY29uc3QgY29tdW5lRXN0ZXJvID0gdGhpcy5mb3JtLmdldCgnY29tdW5lRXN0ZXJvJyk/LnZhbHVlO1xyXG4gICAgICBpZiAoaXNDb211bmVFc3Rlcm9SZXF1aXJlZCAmJiAoIWNvbXVuZUVzdGVybyB8fCBjb211bmVFc3Rlcm8udHJpbSgpID09PSAnJykpIHtcclxuICAgICAgICBlcnJvcnNbJ2NvbXVuZUVzdGVyb1JlcXVpcmVkJ10gPSAnSW5zZXJpc2NpIGlsIGNvbXVuZSBlc3Rlcm8nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVycm9ycykubGVuZ3RoID4gMCA/IGVycm9ycyA6IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgQVBJIHB1YmJsaWNhIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICAvKiogTWFyY2EgdHV0dGkgaSBjb250cm9sbGkgaW50ZXJuaSBjb21lIHRvdWNoZWQuICovXHJcbiAgbWFya0FzVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIE9iamVjdC52YWx1ZXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChjKSA9PiBjLm1hcmtBc1RvdWNoZWQoKSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKiogVmVyaWZpY2Egc2UgbW9zdHJhcmUgZ2xpIGVycm9yaSBwZXIgdW4gY2FtcG8gaW50ZXJuby4gKi9cclxuICBzaG91bGRTaG93RmllbGRFcnJvcnMoZmllbGRLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGRLZXkpO1xyXG4gICAgcmV0dXJuICEhKGNvbnRyb2w/LmludmFsaWQgJiYgKGNvbnRyb2wudG91Y2hlZCB8fCBjb250cm9sLmRpcnR5KSk7XHJcbiAgfVxyXG5cclxuICAvKiogRXJyb3JpIGRpIHVuIGNhbXBvIGludGVybm8gY29tZSBhcnJheSBkaSBtZXNzYWdnaS4gKi9cclxuICBnZXRGaWVsZEVycm9ycyhmaWVsZEtleTogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5nZXQoZmllbGRLZXkpO1xyXG4gICAgaWYgKCFjb250cm9sPy5lcnJvcnMpIHJldHVybiBbXTtcclxuICAgIGNvbnN0IG1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgY29uc3QgZXJycyA9IGNvbnRyb2wuZXJyb3JzO1xyXG4gICAgaWYgKGVycnNbJ3JlcXVpcmVkJ10pIG1lc3NhZ2VzLnB1c2goJ0NhbXBvIG9iYmxpZ2F0b3JpbycpO1xyXG4gICAgaWYgKGVycnNbJ3BhdHRlcm4nXSkgbWVzc2FnZXMucHVzaCgnRm9ybWF0byBub24gdmFsaWRvJyk7XHJcbiAgICBpZiAoZXJyc1snZW1haWwnXSkgbWVzc2FnZXMucHVzaCgnRW1haWwgbm9uIHZhbGlkYScpO1xyXG4gICAgcmV0dXJuIG1lc3NhZ2VzO1xyXG4gIH1cclxuXHJcbiAgLyoqIEhhbmRsZXIgYmx1ciBwZXIgcHJvcGFnYXJlIGlsIHRvdWNoZWQuICovXHJcbiAgb25CbHVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIC8qKiBSZXNldHRhIGxvIHN0YXRvIGRlbCBjb21wb25lbnRlLiAqL1xyXG4gIHJlc2V0Q29tcG9uZW50U3RhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzSXRhbGlhbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc0ZvcmVpZ24gPSBmYWxzZTtcclxuICAgIHRoaXMuZmlsdGVyZWRDb211bmkgPSBbXTtcclxuICAgIHRoaXMuZmlsdGVyZWRDYXBzID0gW107XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCdjb211bmVJZCcpPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ2NhcCcpPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIHRoaXMudXBkYXRlVmFsaWRhdG9ycygpO1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSA4pSAIEdldHRlciBjYWxjb2xhdGkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIC8qKiBMYWJlbHMgcGVyc29uYWxpenphYmlsaSBjb24gdmFsb3JpIGRpIGRlZmF1bHQuICovXHJcbiAgZ2V0IGxhYmVscygpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5hemlvbmU6IHRoaXMuY29uZmlnLmxhYmVscz8ubmF6aW9uZSB8fCAnTmF6aW9uZScsXHJcbiAgICAgIHByb3ZpbmNpYTogdGhpcy5jb25maWcubGFiZWxzPy5wcm92aW5jaWEgfHwgJ1Byb3ZpbmNpYScsXHJcbiAgICAgIGNvbXVuZTogdGhpcy5jb25maWcubGFiZWxzPy5jb211bmUgfHwgJ0NvbXVuZScsXHJcbiAgICAgIGNhcDogdGhpcy5jb25maWcubGFiZWxzPy5jYXAgfHwgJ0NBUCcsXHJcbiAgICAgIGluZGlyaXp6bzogdGhpcy5jb25maWcubGFiZWxzPy5pbmRpcml6em8gfHwgJ0luZGlyaXp6bycsXHJcbiAgICAgIGNvbXVuZUVzdGVybzogdGhpcy5jb25maWcubGFiZWxzPy5jb211bmVFc3Rlcm8gfHwgJ0NvbXVuZSBFc3Rlcm8nLFxyXG4gICAgICBtYWlsOiB0aGlzLmNvbmZpZy5sYWJlbHM/Lm1haWwgfHwgJ0VtYWlsJyxcclxuICAgICAgcGVjOiB0aGlzLmNvbmZpZy5sYWJlbHM/LnBlYyB8fCAnUEVDJyxcclxuICAgICAgdGVsZWZvbm86IHRoaXMuY29uZmlnLmxhYmVscz8udGVsZWZvbm8gfHwgJ1RlbGVmb25vJyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBnZXQgaGFzVmFsaWRhdGlvbkVycm9ycygpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGV4dGVybmFsSW52YWxpZCA9ICEhKFxyXG4gICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaW52YWxpZCAmJlxyXG4gICAgICAodGhpcy5uZ0NvbnRyb2wuY29udHJvbC50b3VjaGVkIHx8IHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlydHkpXHJcbiAgICApO1xyXG4gICAgaWYgKGV4dGVybmFsSW52YWxpZCkgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgY29uc3QgaXNJbnRlcmFjdGVkID1cclxuICAgICAgdGhpcy5mb3JtPy50b3VjaGVkIHx8IHRoaXMuZm9ybT8uZGlydHkgfHwgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnRvdWNoZWQgfHwgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LmRpcnR5O1xyXG4gICAgaWYgKGlzSW50ZXJhY3RlZCkge1xyXG4gICAgICByZXR1cm4gISF0aGlzLnZhbGlkYXRlKG51bGwgYXMgYW55KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldCB2YWxpZGF0aW9uRXJyb3JzKCk6IHN0cmluZ1tdIHtcclxuICAgIC8vIEVycm9yaSBlc3Rlcm5pIGRhbCBGb3JtQnVpbGRlclxyXG4gICAgaWYgKHRoaXMubmdDb250cm9sPy5jb250cm9sPy5lcnJvcnMpIHtcclxuICAgICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBpZiAodGhpcy5uZ0NvbnRyb2wuY29udHJvbC5lcnJvcnNbJ3JlcXVpcmVkJ10pIHtcclxuICAgICAgICBlcnJvcnMucHVzaCgnSW5pemlhIHNlbGV6aW9uYW5kbyBsYSBuYXppb25lJyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSByZXR1cm4gZXJyb3JzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEVycm9yaSBpbnRlcm5pXHJcbiAgICBjb25zdCBpbnRlcm5hbEVycm9ycyA9IHRoaXMudmFsaWRhdGUobnVsbCBhcyBhbnkpO1xyXG4gICAgaWYgKCFpbnRlcm5hbEVycm9ycykgcmV0dXJuIFtdO1xyXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoaW50ZXJuYWxFcnJvcnMpIGFzIHN0cmluZ1tdO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNob3dDQVAoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuY2FwPy5zaG93ICE9PSBmYWxzZTtcclxuICB9XHJcbiAgZ2V0IHNob3dJbmRpcml6em8oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuaW5kaXJpenpvPy5zaG93ICE9PSBmYWxzZTtcclxuICB9XHJcbiAgZ2V0IHNob3dNYWlsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLm1haWw/LnNob3cgPT09IHRydWU7XHJcbiAgfVxyXG4gIGdldCBzaG93UEVDKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBlYz8uc2hvdyA9PT0gdHJ1ZTtcclxuICB9XHJcbiAgZ2V0IHNob3dUZWxlZm9ubygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy50ZWxlZm9ubz8uc2hvdyA9PT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldCBjYXBDb2x1bW5zKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuY2FwPy5jb2x1bW5zIHx8IDY7XHJcbiAgfVxyXG4gIGdldCBpbmRpcml6em9Db2x1bW5zKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuaW5kaXJpenpvPy5jb2x1bW5zIHx8IDEyO1xyXG4gIH1cclxuICBnZXQgbWFpbENvbHVtbnMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy5tYWlsPy5jb2x1bW5zIHx8IDY7XHJcbiAgfVxyXG4gIGdldCBwZWNDb2x1bW5zKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcucGVjPy5jb2x1bW5zIHx8IDY7XHJcbiAgfVxyXG4gIGdldCB0ZWxlZm9ub0NvbHVtbnMoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmNvbmZpZy50ZWxlZm9ubz8uY29sdW1ucyB8fCA2O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSXRhbHlCeURlZmF1bHQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWcuaXRhbHlCeURlZmF1bHQgPT09IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNDYXBEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNvbXVuZUlkID0gdGhpcy5mb3JtLmdldCgnY29tdW5lSWQnKT8udmFsdWU7XHJcbiAgICByZXR1cm4gIWNvbXVuZUlkIHx8IHRoaXMuZmlsdGVyZWRDYXBzLmxlbmd0aCA9PT0gMCB8fCB0aGlzLmZpbHRlcmVkQ2Fwcy5sZW5ndGggPT09IDE7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNOYXppb25lRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmNvbmZpZy5pdGFseUJ5RGVmYXVsdCA9PT0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldCBpc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLm5hemlvbmU/LnJlcXVpcmVkICE9PSBmYWxzZSkgcmV0dXJuIHRydWU7XHJcbiAgICBpZiAoIXRoaXMubmdDb250cm9sPy5jb250cm9sKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCB2YWxpZGF0b3IgPSB0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbGlkYXRvcjtcclxuICAgIGlmICh2YWxpZGF0b3IpIHtcclxuICAgICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdG9yKHt9IGFzIEFic3RyYWN0Q29udHJvbCk7XHJcbiAgICAgIHJldHVybiAhIWVycm9ycz8uWydyZXF1aXJlZCddO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSA4pSAIEluaXppYWxpenphemlvbmUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaW5pdGlhbGl6ZUNvbXBvbmVudCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGF3YWl0IHRoaXMubG9hZExvY2F0aW9uRGF0YSgpO1xyXG4gICAgICB0aGlzLnRpcG9sb2dpY2hlTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnBlbmRpbmdXcml0ZVZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzV3JpdGVWYWx1ZSh0aGlzLnBlbmRpbmdXcml0ZVZhbHVlKTtcclxuICAgICAgICB0aGlzLnBlbmRpbmdXcml0ZVZhbHVlID0gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmFwcGx5SW5pdGlhbENvbmZpZ3VyYXRpb24oKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvbnNJbml0aWFsaXplZCkge1xyXG4gICAgICAgIHRoaXMuc2V0dXBGb3JtU3Vic2NyaXB0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignW1VpU3BlY2lmaWNhVGVycml0b3JpYWxlXSBFcnJvcmUgaW5pemlhbGl6emF6aW9uZTonLCBlcnJvcik7XHJcbiAgICAgIHRoaXMudGlwb2xvZ2ljaGVMb2FkZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgbmF6aW9uZUlkOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIHByb3ZpbmNpYUlkOiBbbnVsbF0sXHJcbiAgICAgIGNvbXVuZUlkOiBbeyB2YWx1ZTogbnVsbCwgZGlzYWJsZWQ6IHRydWUgfV0sXHJcbiAgICAgIGNhcDogW3sgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlIH1dLFxyXG4gICAgICBjb211bmVFc3Rlcm86IFtudWxsXSxcclxuICAgICAgaW5kaXJpenpvOiBbbnVsbF0sXHJcbiAgICAgIG1haWw6IFtudWxsXSxcclxuICAgICAgcGVjOiBbbnVsbF0sXHJcbiAgICAgIHRlbGVmb25vOiBbbnVsbF0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBOZ0NvbnRyb2woKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwsIHsgc2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgICBpZiAobmdDb250cm9sKSB7XHJcbiAgICAgIHRoaXMubmdDb250cm9sID0gbmdDb250cm9sO1xyXG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgbG9hZExvY2F0aW9uRGF0YSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IFtuYXppb25pUmVzdWx0LCBwcm92aW5jZVJlc3VsdF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXHJcbiAgICAgIHRoaXMubG9jYXRpb25TZXJ2aWNlLmdldE5hemlvbmkoKSxcclxuICAgICAgdGhpcy5sb2NhdGlvblNlcnZpY2UuZ2V0UHJvdmluY2UoKSxcclxuICAgIF0pO1xyXG4gICAgdGhpcy5uYXppb25pID0gbmF6aW9uaVJlc3VsdC5kYXRhO1xyXG4gICAgdGhpcy5wcm92aW5jZSA9IHByb3ZpbmNlUmVzdWx0LmNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgR2VzdGlvbmUgd3JpdGVWYWx1ZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzV3JpdGVWYWx1ZSh2YWx1ZTogVWlMb2NhdGlvblZhbHVlIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0luaXRpYWxpemluZyA9IHRydWU7XHJcblxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IHByb2Nlc3NlZFZhbHVlID0gdGhpcy5oYW5kbGVJdGFseUJ5RGVmYXVsdFZhbHVlKHZhbHVlKTtcclxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUocHJvY2Vzc2VkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50U3RhdGUocHJvY2Vzc2VkVmFsdWUpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXBwbHlJbml0aWFsQ29uZmlndXJhdGlvbigpO1xyXG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXppbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShwcm9jZXNzZWRWYWx1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVUZXJyaXRvcmlhbENoYW5nZXMoXHJcbiAgICAgICAgICBwcm9jZXNzZWRWYWx1ZS5uYXppb25lSWQgfHwgJycsXHJcbiAgICAgICAgICBwcm9jZXNzZWRWYWx1ZS5wcm92aW5jaWFJZCB8fCAnJyxcclxuICAgICAgICAgIHByb2Nlc3NlZFZhbHVlLmNvbXVuZUlkIHx8ICcnLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVWYWxpZGF0b3JzKCk7XHJcbiAgICAgICAgT2JqZWN0LnZhbHVlcyh0aGlzLmZvcm0uY29udHJvbHMpLmZvckVhY2goKGN0cmwpID0+IGN0cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSkpO1xyXG4gICAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtLnJlc2V0KHVuZGVmaW5lZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB0aGlzLnJlc2V0Q29tcG9uZW50U3RhdGUoKTtcclxuICAgICAgdGhpcy5hcHBseUluaXRpYWxDb25maWd1cmF0aW9uKCk7XHJcbiAgICAgIHRoaXMuaXNJbml0aWFsaXppbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlSXRhbHlCeURlZmF1bHRWYWx1ZSh2YWx1ZTogVWlMb2NhdGlvblZhbHVlKTogVWlMb2NhdGlvblZhbHVlIHtcclxuICAgIGlmICghdGhpcy5jb25maWcuaXRhbHlCeURlZmF1bHQpIHJldHVybiB2YWx1ZTtcclxuICAgIGlmICh2YWx1ZS5uYXppb25lSWQgJiYgdmFsdWUubmF6aW9uZUlkICE9PSAnSVRBJykge1xyXG4gICAgICByZXR1cm4geyAuLi52YWx1ZSwgbmF6aW9uZUlkOiAnSVRBJywgY29tdW5lRXN0ZXJvOiB1bmRlZmluZWQgfTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdEZvcm1WYWx1ZUlmUmVhZHkoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXppbmcgJiYgdGhpcy50aXBvbG9naWNoZUxvYWRlZCkge1xyXG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIGFzIFVpTG9jYXRpb25WYWx1ZSk7XHJcbiAgICAgIHRoaXMubm90aWZ5VmFsaWRhdGlvbkNoYW5nZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSA4pSAIFN1YnNjcmlwdGlvbnMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHByaXZhdGUgc2V0dXBGb3JtU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcclxuICAgIC8vIFN1YnNjcmlwdGlvbiBwZXIgaSBjYW1iaWFtZW50aSB0ZXJyaXRvcmlhbGkgKG5hemlvbmUvcHJvdmluY2lhL2NvbXVuZSlcclxuICAgIGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICB0aGlzLmZvcm1cclxuICAgICAgICAuZ2V0KCduYXppb25lSWQnKSFcclxuICAgICAgICAudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZm9ybS5nZXQoJ25hemlvbmVJZCcpIS52YWx1ZSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxyXG4gICAgICB0aGlzLmZvcm1cclxuICAgICAgICAuZ2V0KCdwcm92aW5jaWFJZCcpIVxyXG4gICAgICAgIC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5mb3JtLmdldCgncHJvdmluY2lhSWQnKSEudmFsdWUpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcclxuICAgICAgdGhpcy5mb3JtLmdldCgnY29tdW5lSWQnKSEudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZm9ybS5nZXQoJ2NvbXVuZUlkJykhLnZhbHVlKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXHJcbiAgICBdKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgbWFwKChbbmF6aW9uZUlkLCBwcm92aW5jaWFJZCwgY29tdW5lSWRdKSA9PiAoeyBuYXppb25lSWQsIHByb3ZpbmNpYUlkLCBjb211bmVJZCB9KSksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeyBuYXppb25lSWQsIHByb3ZpbmNpYUlkLCBjb211bmVJZCB9KSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6aW5nICYmIHRoaXMudGlwb2xvZ2ljaGVMb2FkZWQpIHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlVGVycml0b3JpYWxDaGFuZ2VzKG5hemlvbmVJZCwgcHJvdmluY2lhSWQsIGNvbXVuZUlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIC8vIFN1YnNjcmlwdGlvbiBwZXIgdHV0dGkgaSBjYW1iaWFtZW50aSBkZWwgZm9ybS5cclxuICAgIC8vIGdldFJhd1ZhbHVlKCk6IGkgY2FtcGkgZGlzYWJpbGl0YXRpIChlcy4gQ0FQIGF1dG8tc2VsZXppb25hdG8sIG5hemlvbmUgY29uIGl0YWx5QnlEZWZhdWx0KVxyXG4gICAgLy8gbm9uIGNvbXBhaW9ubyBpbiBmb3JtLnZhbHVlIG1hIGRldm9ubyBlc3NlcmUgcHJvcGFnYXRpIGFsIGZvcm0gcGFyZW50LlxyXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXYsIGN1cnIpID0+IEpTT04uc3RyaW5naWZ5KHByZXYpID09PSBKU09OLnN0cmluZ2lmeShjdXJyKSksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbWl0Rm9ybVZhbHVlSWZSZWFkeSgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgTG9naWNhIHRlcnJpdG9yaWFsZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVUZXJyaXRvcmlhbENoYW5nZXMobmF6aW9uZUlkOiBzdHJpbmcsIHByb3ZpbmNpYUlkOiBzdHJpbmcsIGNvbXVuZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudXBkYXRlTmF0aW9uYWxpdHlTdGF0ZShuYXppb25lSWQpO1xyXG4gICAgYXdhaXQgdGhpcy51cGRhdGVUZXJyaXRvcmlhbERhdGEocHJvdmluY2lhSWQsIGNvbXVuZUlkKTtcclxuICAgIHRoaXMudXBkYXRlVmFsaWRhdG9ycygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVOYXRpb25hbGl0eVN0YXRlKG5hemlvbmVJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBuYXppb25lID0gdGhpcy5uYXppb25pLmZpbmQoKG4pID0+IG4uY29kU3RhdG9QayA9PT0gbmF6aW9uZUlkKTtcclxuICAgIHRoaXMuaXNJdGFsaWFuID0gbmF6aW9uZT8uY29kU3RhdG9QayA9PT0gJ0lUQSc7XHJcbiAgICB0aGlzLmlzRm9yZWlnbiA9ICEhKG5hemlvbmUgJiYgbmF6aW9uZS5jb2RTdGF0b1BrICE9PSAnSVRBJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVRlcnJpdG9yaWFsRGF0YShwcm92aW5jaWFJZDogc3RyaW5nLCBjb211bmVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5pc0l0YWxpYW4gJiYgcHJvdmluY2lhSWQpIHtcclxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVGaWx0ZXJlZENvbXVuaShwcm92aW5jaWFJZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkQ29tdW5pID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNJdGFsaWFuICYmIGNvbXVuZUlkKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlRmlsdGVyZWRDYXBzKGNvbXVuZUlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRDYXBzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBseUZpZWxkc0Rpc2FibGVkU3RhdGUoKTtcclxuICAgIHRoaXMuZW1pdEZvcm1WYWx1ZUlmUmVhZHkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlRmlsdGVyZWRDb211bmkocHJvdmluY2lhSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCFwcm92aW5jaWFJZCkge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkQ29tdW5pID0gW107XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRDb211bmkgPSBhd2FpdCB0aGlzLmxvY2F0aW9uU2VydmljZS5nZXRDb211bmlCeVByb3ZpbmNpYShwcm92aW5jaWFJZCk7XHJcbiAgICAgIGNvbnN0IGN1cnJlbnRDb211bmVJZCA9IHRoaXMuZm9ybS5nZXQoJ2NvbXVuZUlkJyk/LnZhbHVlO1xyXG4gICAgICBpZiAoY3VycmVudENvbXVuZUlkICYmICF0aGlzLmZpbHRlcmVkQ29tdW5pLmZpbmQoKGMpID0+IGMuY29kaWNlQ29tdW5lUGsgPT09IGN1cnJlbnRDb211bmVJZCkpIHtcclxuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IGNvbXVuZUlkOiBudWxsIH0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRDb211bmkgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlRmlsdGVyZWRDYXBzKGNvbXVuZUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghY29tdW5lSWQpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZENhcHMgPSBbXTtcclxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBjYXA6IG51bGwgfSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjYXBzID0gYXdhaXQgdGhpcy5sb2NhdGlvblNlcnZpY2UuZ2V0Q2FwTGlzdChjb211bmVJZCk7XHJcbiAgICB0aGlzLmZpbHRlcmVkQ2FwcyA9IGNhcHMubWFwKChjYXBDb2RlKSA9PiAoeyBpZDogY2FwQ29kZSwgY29kaWNlOiBjYXBDb2RlLCBjb211bmVJZCB9KSk7XHJcblxyXG4gICAgY29uc3QgY3VycmVudENhcCA9IHRoaXMuZm9ybS5nZXQoJ2NhcCcpPy52YWx1ZTtcclxuICAgIGlmICh0aGlzLmZpbHRlcmVkQ2Fwcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBjYXA6IHRoaXMuZmlsdGVyZWRDYXBzWzBdLmlkIH0sIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmZpbHRlcmVkQ2Fwcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGlmICghY3VycmVudENhcCB8fCAhdGhpcy5maWx0ZXJlZENhcHMuc29tZSgoYykgPT4gYy5pZCA9PT0gY3VycmVudENhcCkpIHtcclxuICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IGNhcDogbnVsbCB9LCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBjYXA6IG51bGwgfSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUNvbXBvbmVudFN0YXRlKHZhbHVlOiBVaUxvY2F0aW9uVmFsdWUpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudXBkYXRlTmF0aW9uYWxpdHlTdGF0ZSh2YWx1ZS5uYXppb25lSWQgfHwgJycpO1xyXG4gICAgYXdhaXQgdGhpcy51cGRhdGVGaWx0ZXJlZENvbXVuaSh2YWx1ZS5wcm92aW5jaWFJZCB8fCAnJyk7XHJcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZUZpbHRlcmVkQ2Fwcyh2YWx1ZS5jb211bmVJZCB8fCAnJyk7XHJcbiAgICB0aGlzLmFwcGx5RmllbGRzRGlzYWJsZWRTdGF0ZSgpO1xyXG4gICAgdGhpcy51cGRhdGVWYWxpZGF0b3JzKCk7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgU3RhdG8gY2FtcGkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWVsZHNEaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5mb3JtLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29tdW5lQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoJ2NvbXVuZUlkJyk7XHJcbiAgICBjb25zdCBjYXBDb250cm9sID0gdGhpcy5mb3JtLmdldCgnY2FwJyk7XHJcbiAgICBjb25zdCBuYXppb25lQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQoJ25hemlvbmVJZCcpO1xyXG5cclxuICAgIC8vIENvbXVuZSBhYmlsaXRhdG8gc29sbyBzZSBJdGFsaWEgKyBwcm92aW5jaWEgc2VsZXppb25hdGFcclxuICAgIGlmICh0aGlzLmlzSXRhbGlhbiAmJiB0aGlzLmZvcm0uZ2V0KCdwcm92aW5jaWFJZCcpPy52YWx1ZSkge1xyXG4gICAgICBjb211bmVDb250cm9sPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29tdW5lQ29udHJvbD8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ0FQIHNlZ3VlIGxvZ2ljYSBzcGVjaWZpY2FcclxuICAgIGlmICh0aGlzLmlzQ2FwRGlzYWJsZWQpIHtcclxuICAgICAgY2FwQ29udHJvbD8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjYXBDb250cm9sPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE5hemlvbmUgZGlzYWJpbGl0YXRhIHNlIGl0YWx5QnlEZWZhdWx0XHJcbiAgICBpZiAodGhpcy5pc0l0YWx5QnlEZWZhdWx0KSB7XHJcbiAgICAgIG5hemlvbmVDb250cm9sPy5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG5hemlvbmVDb250cm9sPy5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSA4pSAIFZhbGlkYXppb25lIGRpbmFtaWNhIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVZhbGlkYXRvcnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb250cm9sczogUmVjb3JkPHN0cmluZywgQWJzdHJhY3RDb250cm9sIHwgbnVsbD4gPSB7XHJcbiAgICAgIG5hemlvbmU6IHRoaXMuZm9ybS5nZXQoJ25hemlvbmVJZCcpLFxyXG4gICAgICBwcm92aW5jaWE6IHRoaXMuZm9ybS5nZXQoJ3Byb3ZpbmNpYUlkJyksXHJcbiAgICAgIGNvbXVuZTogdGhpcy5mb3JtLmdldCgnY29tdW5lSWQnKSxcclxuICAgICAgY29tdW5lRXN0ZXJvOiB0aGlzLmZvcm0uZ2V0KCdjb211bmVFc3Rlcm8nKSxcclxuICAgICAgY2FwOiB0aGlzLmZvcm0uZ2V0KCdjYXAnKSxcclxuICAgICAgaW5kaXJpenpvOiB0aGlzLmZvcm0uZ2V0KCdpbmRpcml6em8nKSxcclxuICAgICAgbWFpbDogdGhpcy5mb3JtLmdldCgnbWFpbCcpLFxyXG4gICAgICBwZWM6IHRoaXMuZm9ybS5nZXQoJ3BlYycpLFxyXG4gICAgICB0ZWxlZm9ubzogdGhpcy5mb3JtLmdldCgndGVsZWZvbm8nKSxcclxuICAgIH07XHJcblxyXG4gICAgLy8gUHVsaXNjaSB0dXR0aSBpIHZhbGlkYXRvcmlcclxuICAgIE9iamVjdC52YWx1ZXMoY29udHJvbHMpLmZvckVhY2goKGMpID0+IGM/LmNsZWFyVmFsaWRhdG9ycygpKTtcclxuXHJcbiAgICAvLyBOYXppb25lXHJcbiAgICBpZiAodGhpcy5jb25maWcubmF6aW9uZT8ucmVxdWlyZWQgIT09IGZhbHNlKSB7XHJcbiAgICAgIGNvbnRyb2xzWyduYXppb25lJ10/LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNJdGFsaWFuKSB7XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wcm92aW5jaWE/LnJlcXVpcmVkICE9PSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnRyb2xzWydwcm92aW5jaWEnXT8uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5jb25maWcuY29tdW5lPy5yZXF1aXJlZCAhPT0gZmFsc2UpIHtcclxuICAgICAgICBjb250cm9sc1snY29tdW5lJ10/LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuY29uZmlnLmNhcD8ucmVxdWlyZWQgJiYgdGhpcy5zaG93Q0FQKSB7XHJcbiAgICAgICAgY29udHJvbHNbJ2NhcCddPy5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5pbmRpcml6em8/LnJlcXVpcmVkICYmIHRoaXMuc2hvd0luZGlyaXp6bykge1xyXG4gICAgICAgIGNvbnRyb2xzWydpbmRpcml6em8nXT8uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmFwcGx5Q29udGFjdFZhbGlkYXRvcnMoY29udHJvbHMpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRm9yZWlnbikge1xyXG4gICAgICBpZiAodGhpcy5jb25maWcuY29tdW5lRXN0ZXJvPy5yZXF1aXJlZCAhPT0gZmFsc2UpIHtcclxuICAgICAgICBjb250cm9sc1snY29tdW5lRXN0ZXJvJ10/LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBBZ2dpb3JuYSBzZW56YSBlbWV0dGVyZSBldmVudGlcclxuICAgIE9iamVjdC52YWx1ZXMoY29udHJvbHMpLmZvckVhY2goKGMpID0+IGM/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pKTtcclxuICAgIHRoaXMubm90aWZ5VmFsaWRhdGlvbkNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhcHBseUNvbnRhY3RWYWxpZGF0b3JzKGNvbnRyb2xzOiBSZWNvcmQ8c3RyaW5nLCBBYnN0cmFjdENvbnRyb2wgfCBudWxsPik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLm1haWw/LnJlcXVpcmVkICYmIHRoaXMuc2hvd01haWwpIHtcclxuICAgICAgY29udHJvbHNbJ21haWwnXT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuRU1BSUxfUEFUVEVSTildKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zaG93TWFpbCkge1xyXG4gICAgICBjb250cm9sc1snbWFpbCddPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5FTUFJTF9QQVRURVJOKV0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5wZWM/LnJlcXVpcmVkICYmIHRoaXMuc2hvd1BFQykge1xyXG4gICAgICBjb250cm9sc1sncGVjJ10/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLlBFQ19QQVRURVJOKV0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNob3dQRUMpIHtcclxuICAgICAgY29udHJvbHNbJ3BlYyddPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5QRUNfUEFUVEVSTildKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jb25maWcudGVsZWZvbm8/LnJlcXVpcmVkICYmIHRoaXMuc2hvd1RlbGVmb25vKSB7XHJcbiAgICAgIGNvbnRyb2xzWyd0ZWxlZm9ubyddPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5QSE9ORV9QQVRURVJOKV0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNob3dUZWxlZm9ubykge1xyXG4gICAgICBjb250cm9sc1sndGVsZWZvbm8nXT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuUEhPTkVfUEFUVEVSTildKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVDb250YWN0RmllbGRzKGVycm9yczogVmFsaWRhdGlvbkVycm9ycyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnLm1haWw/LnJlcXVpcmVkICYmIHRoaXMuc2hvd01haWwpIHtcclxuICAgICAgY29uc3QgdiA9IHRoaXMuZm9ybS5nZXQoJ21haWwnKT8udmFsdWU7XHJcbiAgICAgIGlmICghdiB8fCB2LnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgICBlcnJvcnNbJ21haWxSZXF1aXJlZCddID0gXCJJbnNlcmlzY2kgbCdlbWFpbFwiO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLkVNQUlMX1BBVFRFUk4udGVzdCh2KSkge1xyXG4gICAgICAgIGVycm9yc1snbWFpbEludmFsaWQnXSA9IFwiSW5zZXJpc2NpIHVuJ2VtYWlsIHZhbGlkYVwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jb25maWcucGVjPy5yZXF1aXJlZCAmJiB0aGlzLnNob3dQRUMpIHtcclxuICAgICAgY29uc3QgdiA9IHRoaXMuZm9ybS5nZXQoJ3BlYycpPy52YWx1ZTtcclxuICAgICAgaWYgKCF2IHx8IHYudHJpbSgpID09PSAnJykge1xyXG4gICAgICAgIGVycm9yc1sncGVjUmVxdWlyZWQnXSA9ICdJbnNlcmlzY2kgbGEgUEVDJztcclxuICAgICAgfSBlbHNlIGlmICghdGhpcy5QRUNfUEFUVEVSTi50ZXN0KHYpKSB7XHJcbiAgICAgICAgZXJyb3JzWydwZWNJbnZhbGlkJ10gPSAnSW5zZXJpc2NpIHVuYSBQRUMgdmFsaWRhJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnRlbGVmb25vPy5yZXF1aXJlZCAmJiB0aGlzLnNob3dUZWxlZm9ubykge1xyXG4gICAgICBjb25zdCB2ID0gdGhpcy5mb3JtLmdldCgndGVsZWZvbm8nKT8udmFsdWU7XHJcbiAgICAgIGlmICghdiB8fCB2LnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgICBlcnJvcnNbJ3RlbGVmb25vUmVxdWlyZWQnXSA9ICdJbnNlcmlzY2kgaWwgdGVsZWZvbm8nO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLlBIT05FX1BBVFRFUk4udGVzdCh2KSkge1xyXG4gICAgICAgIGVycm9yc1sndGVsZWZvbm9JbnZhbGlkJ10gPSAnSW5zZXJpc2NpIHVuIG51bWVybyBkaSB0ZWxlZm9ubyB2YWxpZG8nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgQ29uZmlndXJhemlvbmUgaW5pemlhbGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHByaXZhdGUgYXBwbHlJbml0aWFsQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5hemlvbmVDb250cm9sID0gdGhpcy5mb3JtLmdldCgnbmF6aW9uZUlkJyk7XHJcbiAgICBjb25zdCBjdXJyZW50TmF6aW9uZUlkID0gbmF6aW9uZUNvbnRyb2w/LnZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5pdGFseUJ5RGVmYXVsdCkge1xyXG4gICAgICBjb25zdCBpdGFsaWEgPSB0aGlzLm5hemlvbmkuZmluZCgobikgPT4gbi5jb2RTdGF0b1BrID09PSAnSVRBJyk7XHJcbiAgICAgIGlmIChpdGFsaWEgJiYgKCFjdXJyZW50TmF6aW9uZUlkIHx8IGN1cnJlbnROYXppb25lSWQgIT09ICdJVEEnKSkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgbmF6aW9uZUlkOiBpdGFsaWEuY29kU3RhdG9QayB9LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy51cGRhdGVOYXRpb25hbGl0eVN0YXRlKCdJVEEnKTtcclxuICAgICAgbmF6aW9uZUNvbnRyb2w/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGN1cnJlbnROYXppb25lSWQpIHRoaXMudXBkYXRlTmF0aW9uYWxpdHlTdGF0ZShjdXJyZW50TmF6aW9uZUlkKTtcclxuICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSBuYXppb25lQ29udHJvbD8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZVZhbGlkYXRvcnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbm90aWZ5VmFsaWRhdGlvbkNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm9uVmFsaWRhdG9yQ2hhbmdlKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5vblZhbGlkYXRvckNoYW5nZSgpLCAwKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPCEtLVxyXG4gIENvbXBvbmVudGUgcGVyIGxhIHNlbGV6aW9uZSBkaSBkYXRpIGdlb2dyYWZpY2kgKEl0YWxpYS9Fc3Rlcm8pLlxyXG4gIFV0aWxpenphIGlsIGZsb3cgY29udHJvbCBtb2Rlcm5vIGRpIEFuZ3VsYXIgKEBpZiwgQGZvcikuXHJcbi0tPlxyXG48ZGl2XHJcbiAgY2xhc3M9XCJ1aS1sb2NhdGlvblwiXHJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcclxuICBbY2xhc3MudWktbG9jYXRpb24tLWZvcmVpZ25dPVwiaXNGb3JlaWduXCJcclxuICBbY2xhc3MudWktbG9jYXRpb24tLWl0YWxpYW5dPVwiaXNJdGFsaWFuXCJcclxuPlxyXG4gIDwhLS0gPT09PT09PT09PT09PT09PT09PT0gTkFaSU9ORSA9PT09PT09PT09PT09PT09PT09PSAtLT5cclxuICA8ZGl2IGNsYXNzPVwidWktbG9jYXRpb25fX2ZpZWxkLXJvd1wiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcclxuICAgICAgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZnVsbC13aWR0aFwiXHJcbiAgICAgIFtjbGFzcy51aS1sb2NhdGlvbl9faXRhbHktZGVmYXVsdF09XCJjb25maWcuaXRhbHlCeURlZmF1bHRcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWxhYmVsPnt7IGxhYmVscy5uYXppb25lIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmF6aW9uZUlkXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgaXNOYXppb25lRGlzYWJsZWRcIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZXppb25hIG5hemlvbmVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm51bGxcIj5TZWxlemlvbmEgbmF6aW9uZTwvbWF0LW9wdGlvbj5cclxuICAgICAgICBAZm9yIChuYXppb25lIG9mIG5hemlvbmk7IHRyYWNrIG5hemlvbmUuY29kU3RhdG9Qaykge1xyXG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm5hemlvbmUuY29kU3RhdG9Qa1wiPlxyXG4gICAgICAgICAgICB7eyBuYXppb25lLmRlc2NyaXppb25lIH19XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIEBpZiAoc2hvdWxkU2hvd0ZpZWxkRXJyb3JzKCduYXppb25lSWQnKSkge1xyXG4gICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICBAZm9yIChlcnJvciBvZiBnZXRGaWVsZEVycm9ycygnbmF6aW9uZUlkJyk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICA8ZGl2Pnt7IGVycm9yIH19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgIH1cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gPT09PT09PT09PT09PT09PT09PT0gQ0FNUEkgSVRBTElBID09PT09PT09PT09PT09PT09PT09IC0tPlxyXG4gIEBpZiAoaXNJdGFsaWFuKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidWktbG9jYXRpb25fX3Byb3ZpbmNpYS1jb211bmVcIj5cclxuICAgICAgPCEtLSBQcm92aW5jaWEgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZmllbGQtcm93XCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbHMucHJvdmluY2lhIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcm92aW5jaWFJZFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGV6aW9uYSBwcm92aW5jaWFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwibnVsbFwiPlNlbGV6aW9uYSBwcm92aW5jaWE8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIEBmb3IgKHByb3Ygb2YgcHJvdmluY2U7IHRyYWNrIHByb3YuY29kaWNlUHJvdmluY2lhUGspIHtcclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwicHJvdi5jb2RpY2VQcm92aW5jaWFQa1wiPlxyXG4gICAgICAgICAgICAgICAge3sgcHJvdi5ub21lUHJvdmluY2lhIH19XHJcbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICBAaWYgKHNob3VsZFNob3dGaWVsZEVycm9ycygncHJvdmluY2lhSWQnKSkge1xyXG4gICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgIEBmb3IgKGVycm9yIG9mIGdldEZpZWxkRXJyb3JzKCdwcm92aW5jaWFJZCcpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIDxkaXY+e3sgZXJyb3IgfX08L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBDb211bmUgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZmllbGQtcm93XCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZnVsbC13aWR0aFwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbHMuY29tdW5lIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb211bmVJZFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlbGV6aW9uYSBjb211bmVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwibnVsbFwiPlNlbGV6aW9uYSBjb211bmU8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIEBmb3IgKGNvbXVuZSBvZiBmaWx0ZXJlZENvbXVuaTsgdHJhY2sgY29tdW5lLmNvZGljZUNvbXVuZVBrKSB7XHJcbiAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImNvbXVuZS5jb2RpY2VDb211bmVQa1wiPlxyXG4gICAgICAgICAgICAgICAge3sgY29tdW5lLm5vbWVDb211bmUgfX1cclxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd0ZpZWxkRXJyb3JzKCdjb211bmVJZCcpKSB7XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgQGZvciAoZXJyb3Igb2YgZ2V0RmllbGRFcnJvcnMoJ2NvbXVuZUlkJyk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgPGRpdj57eyBlcnJvciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tID09PT09PT09PT09PT09PT09PT09IEdSSUdMSUEgQ0FNUEkgRElOQU1JQ0kgPT09PT09PT09PT09PT09PT09PT0gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwidWktbG9jYXRpb25fX2R5bmFtaWMtZ3JpZFwiPlxyXG4gICAgICA8IS0tIENBUCAtLT5cclxuICAgICAgQGlmIChzaG93Q0FQICYmIGlzSXRhbGlhbikge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZ3JpZC1jZWxsXCIgW3N0eWxlLmdyaWQtY29sdW1uXT1cIidzcGFuICcgKyBjYXBDb2x1bW5zXCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInVpLWxvY2F0aW9uX19mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWxzLmNhcCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNhcFwiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGlzQ2FwRGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZXppb25hIENBUFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwibnVsbFwiPlNlbGV6aW9uYSBDQVA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgQGZvciAoY2FwIG9mIGZpbHRlcmVkQ2FwczsgdHJhY2sgY2FwLmlkKSB7XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiY2FwLmlkXCI+e3sgY2FwLmNvZGljZSB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgQGlmIChzaG91bGRTaG93RmllbGRFcnJvcnMoJ2NhcCcpKSB7XHJcbiAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGVycm9yIG9mIGdldEZpZWxkRXJyb3JzKCdjYXAnKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZXJyb3IgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPCEtLSBJbmRpcml6em8gLS0+XHJcbiAgICAgIEBpZiAoc2hvd0luZGlyaXp6bykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZ3JpZC1jZWxsXCIgW3N0eWxlLmdyaWQtY29sdW1uXT1cIidzcGFuICcgKyBpbmRpcml6em9Db2x1bW5zXCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInVpLWxvY2F0aW9uX19mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWxzLmluZGlyaXp6byB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImluZGlyaXp6b1wiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJWaWEsIG51bWVybyBjaXZpY29cIlxyXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICBAaWYgKHNob3VsZFNob3dGaWVsZEVycm9ycygnaW5kaXJpenpvJykpIHtcclxuICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgQGZvciAoZXJyb3Igb2YgZ2V0RmllbGRFcnJvcnMoJ2luZGlyaXp6bycpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgPGRpdj57eyBlcnJvciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcblxyXG4gICAgICA8IS0tIE1haWwgLS0+XHJcbiAgICAgIEBpZiAoc2hvd01haWwpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidWktbG9jYXRpb25fX2dyaWQtY2VsbFwiIFtzdHlsZS5ncmlkLWNvbHVtbl09XCInc3BhbiAnICsgbWFpbENvbHVtbnNcIj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidWktbG9jYXRpb25fX2Z1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbHMubWFpbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWFpbFwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlc2VtcGlvQGVtYWlsLmNvbVwiXHJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd0ZpZWxkRXJyb3JzKCdtYWlsJykpIHtcclxuICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgQGZvciAoZXJyb3Igb2YgZ2V0RmllbGRFcnJvcnMoJ21haWwnKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZXJyb3IgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPCEtLSBQRUMgLS0+XHJcbiAgICAgIEBpZiAoc2hvd1BFQykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1sb2NhdGlvbl9fZ3JpZC1jZWxsXCIgW3N0eWxlLmdyaWQtY29sdW1uXT1cIidzcGFuICcgKyBwZWNDb2x1bW5zXCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInVpLWxvY2F0aW9uX19mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWxzLnBlYyB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGVjXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzZW1waW9AcGVjLml0XCJcclxuICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgQGlmIChzaG91bGRTaG93RmllbGRFcnJvcnMoJ3BlYycpKSB7XHJcbiAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGVycm9yIG9mIGdldEZpZWxkRXJyb3JzKCdwZWMnKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZXJyb3IgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgPCEtLSBUZWxlZm9ubyAtLT5cclxuICAgICAgQGlmIChzaG93VGVsZWZvbm8pIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidWktbG9jYXRpb25fX2dyaWQtY2VsbFwiIFtzdHlsZS5ncmlkLWNvbHVtbl09XCInc3BhbiAnICsgdGVsZWZvbm9Db2x1bW5zXCI+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInVpLWxvY2F0aW9uX19mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWxzLnRlbGVmb25vIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cInRlbFwiXHJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGVsZWZvbm9cIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiKzM5IDEyMyA0NTYgNzg5MFwiXHJcbiAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIEBpZiAoc2hvdWxkU2hvd0ZpZWxkRXJyb3JzKCd0ZWxlZm9ubycpKSB7XHJcbiAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGVycm9yIG9mIGdldEZpZWxkRXJyb3JzKCd0ZWxlZm9ubycpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgPGRpdj57eyBlcnJvciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcblxyXG4gIDwhLS0gPT09PT09PT09PT09PT09PT09PT0gQ0FNUE8gRVNURVJPID09PT09PT09PT09PT09PT09PT09IC0tPlxyXG4gIEBpZiAoaXNGb3JlaWduKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwidWktbG9jYXRpb25fX2ZpZWxkLXJvd1wiPlxyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInVpLWxvY2F0aW9uX19mdWxsLXdpZHRoXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbHMuY29tdW5lRXN0ZXJvIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29tdW5lRXN0ZXJvXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiSW5zZXJpc2NpIGNpdHRhL2NvbXVuZVwiXHJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgQGlmIChzaG91bGRTaG93RmllbGRFcnJvcnMoJ2NvbXVuZUVzdGVybycpKSB7XHJcbiAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICBAZm9yIChlcnJvciBvZiBnZXRGaWVsZEVycm9ycygnY29tdW5lRXN0ZXJvJyk7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICAgIDxkaXY+e3sgZXJyb3IgfX08L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L2Rpdj5cclxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// ── Tipi validazione ──
|
|
2
2
|
export { UI_FORM_NESTED_FIELD_ERRORS_KEY, } from './validation.types';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tYnVpbGRlci90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSx5QkFBeUI7QUFDekIsT0FBTyxFQVNMLCtCQUErQixHQUNoQyxNQUFNLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8g4pSA4pSAIFRpcGkgY2FtcG8g4pSA4pSAXG5leHBvcnQge1xuICBVaUZpZWxkVHlwZSxcbiAgVWlGaWVsZE9wdGlvbixcbiAgVWlEeW5hbWljT3B0aW9uc0NvbmZpZyxcbiAgVWlEZXBlbmRlbnRPcHRpb25zQ29uZmlnLFxuICBVaUljb25Ub29sdGlwLFxuICBVaUZpbGVEYXRhLFxuICBVaUZpbGVJbnB1dENvbmZpZyxcbiAgVWlDdXN0b21Db21wb25lbnRDb25maWcsXG4gIFVpQ3VzdG9tRmllbGRUZW1wbGF0ZUNvbnRleHQsXG4gIFVpQ3VzdG9tRm9ybUNvbXBvbmVudCxcbiAgVWlGb3JtRmllbGREZXNjcmlwdG9yLFxufSBmcm9tICcuL2ZpZWxkLnR5cGVzJztcblxuLy8g4pSA4pSAIFRpcGkgdmFsaWRhemlvbmUg4pSA4pSAXG5leHBvcnQge1xuICBVaUNyb3NzRmllbGRPcGVyYXRvcixcbiAgVWlDcm9zc0ZpZWxkQ29uZmlnLFxuICBVaURhdGVLZXl3b3JkLFxuICBVaURhdGVWYWxpZGF0aW9uQ29uZmlnLFxuICBVaVZhbGlkYXRpb25UeXBlLFxuICBVaVZhbGlkYXRpb25SdWxlLFxuICBVaUZvcm1WYWxpZGF0aW9uU3RhdGUsXG4gIFVpRm9ybUVycm9yRGV0YWlsLFxuICBVSV9GT1JNX05FU1RFRF9GSUVMRF9FUlJPUlNfS0VZLFxufSBmcm9tICcuL3ZhbGlkYXRpb24udHlwZXMnO1xuXG4vLyDilIDilIAgVGlwaSBjb25kaXppb25lIOKUgOKUgFxuZXhwb3J0IHtcbiAgVWlDb25kaXRpb25hbE9wZXJhdG9yLFxuICBVaUZpZWxkQ29uZGl0aW9uLFxufSBmcm9tICcuL2NvbmRpdGlvbi50eXBlcyc7XG5cbi8vIOKUgOKUgCBUaXBpIHRlcnJpdG9yaWFsZSAobG9jYXRpb24pIOKUgOKUgFxuZXhwb3J0IHtcbiAgVWlMb2NhdGlvbkZpZWxkQ29uZmlnLFxuICBVaUxvY2F0aW9uQ29uZmlnLFxuICBVaUxvY2F0aW9uTGFiZWxzLFxuICBVaUxvY2F0aW9uVmFsdWUsXG4gIFVpTG9jYXRpb25UYWJsZUNvbmZpZyxcbiAgVWlMb2NhdGlvblJvdyxcbn0gZnJvbSAnLi90ZXJyaXRvcmlhbGUudHlwZXMnO1xuXG4vLyDilIDilIAgVGlwaSBsb2NhdGlvbiBnZW9jb2RpZmljYXRhIOKUgOKUgFxuZXhwb3J0IHtcbiAgVWlHZW9jb2RlZExvY2F0aW9uVHlwZSxcbiAgVWlHZW9jb2RlZExvY2F0aW9uSW5wdXQsXG4gIFVpR2VvY29kZWRJdGFsaWFuRGV0YWlscyxcbiAgVWlHZW9jb2RlZEZvcmVpZ25EZXRhaWxzLFxuICBVaUxvY2F0aW9uR2VvY29kZWRGaWVsZENvbmZpZyxcbn0gZnJvbSAnLi9nZW9jb2RlZC1sb2NhdGlvbi50eXBlcyc7XG5cbi8vIOKUgOKUgCBUaXBpIHNjaGVtYSDilIDilIBcbmV4cG9ydCB7XG4gIFVpUmVwZWF0YWJsZUNvbmZpZyxcbiAgVWlXaXphcmRTdGVwVmFsaWRhdGlvbixcbiAgVWlXaXphcmRWYWxpZGF0aW9uRm4sXG4gIFVpV2l6YXJkU3RlcENvbmZpZyxcbiAgVWlGb3JtU2VjdGlvbixcbiAgVWlGb3JtQnVpbGRlckNvbmZpZyxcbiAgVWlXaXphcmRDb25maWcsXG4gIFVpV2l6YXJkU3RhdGUsXG4gIFVpRm9ybVNjaGVtYSxcbiAgVWlGb3JtRGF0YSxcbiAgVWlGb3JtQ3VzdG9tRXZlbnQsXG4gIFVpV2l6YXJkU3RlcENoYW5nZUV2ZW50LFxuICBVaVdpemFyZFN0ZXBDb21wbGV0ZUV2ZW50LFxuICBVaVdpemFyZFJlc3VtZU9wdGlvbnMsXG4gIFVpV2l6YXJkUmVzdW1lUmVzdWx0LFxufSBmcm9tICcuL3NjaGVtYS50eXBlcyc7XG4iXX0=
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
* Tipi per lo schema del form, sezioni e configurazione.
|
|
4
4
|
*/
|
|
5
5
|
export {};
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctdWktc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWJ1aWxkZXIvdHlwZXMvc2NoZW1hLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBuZy11aS1zeXN0ZW0vZm9ybS1idWlsZGVyXG4gKiBUaXBpIHBlciBsbyBzY2hlbWEgZGVsIGZvcm0sIHNlemlvbmkgZSBjb25maWd1cmF6aW9uZS5cbiAqL1xuXG5pbXBvcnQgeyBVaUZvcm1GaWVsZERlc2NyaXB0b3IgfSBmcm9tICcuL2ZpZWxkLnR5cGVzJztcbmltcG9ydCB7IFVpRmllbGRDb25kaXRpb24gfSBmcm9tICcuL2NvbmRpdGlvbi50eXBlcyc7XG5pbXBvcnQgeyBVaUljb25OYW1lIH0gZnJvbSAnLi4vLi4vLi4vY29yZS90eXBlcyc7XG5cbi8vIOKUgOKUgOKUgCBXaXphcmQgc3RlcCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBDb25maWd1cmF6aW9uZSBkaSB2YWxpZGF6aW9uZSBwZXIgdW4gc2luZ29sbyBzdGVwIGRlbCB3aXphcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVWlXaXphcmRTdGVwVmFsaWRhdGlvbiB7XG4gIC8qKiBTZSBsbyBzdGVwIHJpY2hpZWRlIHZhbGlkYXppb25lIHByaW1hIGRpIHByb2NlZGVyZS4gQGRlZmF1bHQgdHJ1ZSAqL1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIC8qKiBDYW1waSBzcGVjaWZpY2kgZGEgdmFsaWRhcmUgaW4gcXVlc3RvIHN0ZXAgKHNlIG9tZXNzbywgdHV0dGkgaSBjYW1waSBkZWxsbyBzdGVwKS4gKi9cbiAgdmFsaWRhdGVGaWVsZHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFNlIGBmYWxzZWAsIG5lbGxhIG5hdmlnYXppb25lIHdpemFyZCBpIGNhbXBpIGB0eXBlOiAnY3VzdG9tJ2Agbm9uIGNvbmNvcnJvbm9cbiAgICogYWxsYSB2YWxpZGl0w6AgZGVsbG8gc3RlcCAoZSBpIGxvcm8gZXJyb3JpIG5vbiBibG9jY2FubyBpbCBwYXNzYWdnaW8pLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB2YWxpZGF0ZUN1c3RvbUNvbXBvbmVudHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEZ1bnppb25lIGRpIHZhbGlkYXppb25lIGN1c3RvbSBwZXIgdW5vIHN0ZXAgZGVsIHdpemFyZC5cbiAqIFZpZW5lIGludm9jYXRhIHByaW1hIGRlbGxhIG5hdmlnYXppb25lIGFsbG8gc3RlcCBzdWNjZXNzaXZvLlxuICpcbiAqIEBwYXJhbSBmb3JtRGF0YSAtIERhdGkgY29ycmVudGkgZGVsIGZvcm0gY29tcGxldG8uXG4gKiBAcGFyYW0gY3VycmVudFN0ZXAgLSBJbmRpY2UgZGVsbG8gc3RlcCBjb3JyZW50ZSAoMC1iYXNlZCkuXG4gKiBAcGFyYW0gaXNWYWxpZCAtIFJpc3VsdGF0byBkZWxsYSB2YWxpZGF6aW9uZSBzdGFuZGFyZCBkZWwgZm9ybS5cbiAqIEByZXR1cm5zIGB0cnVlYCBwZXIgcGVybWV0dGVyZSBsYSBuYXZpZ2F6aW9uZSwgYGZhbHNlYCBwZXIgYmxvY2NhcmxhLlxuICovXG5leHBvcnQgdHlwZSBVaVdpemFyZFZhbGlkYXRpb25GbiA9IChcbiAgZm9ybURhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIGN1cnJlbnRTdGVwOiBudW1iZXIsXG4gIGlzVmFsaWQ6IGJvb2xlYW4sXG4pID0+IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuO1xuXG4vKipcbiAqIENvbmZpZ3VyYXppb25lIHdpemFyZCBwZXIgdW5hIHNlemlvbmUgZGVsIGZvcm0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVWlXaXphcmRTdGVwQ29uZmlnIHtcbiAgLyoqIE51bWVybyBkZWxsbyBzdGVwICgxLWJhc2VkIHBlciBVSSwgY29udmVydGl0byBhIDAtYmFzZWQgaW50ZXJuYW1lbnRlKS4gKi9cbiAgc3RlcE51bWJlcjogbnVtYmVyO1xuICAvKiogVGl0b2xvIHBlcnNvbmFsaXp6YXRvIHBlciBsbyBzdGVwLiAqL1xuICBzdGVwVGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBEZXNjcml6aW9uZSBkZWxsbyBzdGVwLiAqL1xuICBzdGVwRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBDb25maWd1cmF6aW9uZSBkaSB2YWxpZGF6aW9uZSBwZXIgcXVlc3RvIHN0ZXAuICovXG4gIHZhbGlkYXRpb24/OiBVaVdpemFyZFN0ZXBWYWxpZGF0aW9uO1xuICAvKiogUGVybWV0dGUgZGkgc2FsdGFyZSBxdWVzdG8gc3RlcCBzZW56YSB2YWxpZGF6aW9uZS4gKi9cbiAgYWxsb3dTa2lwPzogYm9vbGVhbjtcbiAgLyoqIE5vbWUgZGVsIG1ldG9kbyBkaSB2YWxpZGF6aW9uZSBjdXN0b20gKGRldmUgZXNzZXJlIHJlZ2lzdHJhdG8gbmVsIHdpemFyZCkuICovXG4gIGN1c3RvbVZhbGlkYXRpb25Gbj86IHN0cmluZztcbiAgLyoqIE1ldGFkYXRpIGFnZ2l1bnRpdmkgcGVyIGxvIHN0ZXAuICovXG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuLy8g4pSA4pSA4pSAIFNlemlvbmUgcmlwZXRpYmlsZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBDb25maWd1cmF6aW9uZSBwZXIgc2V6aW9uaSByaXBldGliaWxpIChkeW5hbWljIHJlcGVhdGVyKS5cbiAqIFBlcm1ldHRlIGRpIGFnZ2l1bmdlcmUvcmltdW92ZXJlL2R1cGxpY2FyZSBOIGlzdGFuemUgZGkgdW4gYmxvY2NvXG4gKiBkaSBjYW1waSwgY29uIGlsIG1vZGVsbG8gcmVhdHRpdm8gZ2VzdGl0byB0cmFtaXRlIEZvcm1BcnJheS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc2VjdGlvbjogVWlGb3JtU2VjdGlvbiA9IHtcbiAqICAgaWQ6ICdvYmlldHRpdmknLFxuICogICB0aXRsZTogJ09iaWV0dGl2aSBmb3JtYXRpdmknLFxuICogICByZXBlYXRhYmxlOiB7XG4gKiAgICAgbWluOiAxLFxuICogICAgIG1heDogMTAsXG4gKiAgICAgYWRkTGFiZWw6ICdBZ2dpdW5naSBvYmlldHRpdm8nLFxuICogICAgIGFkZEljb246ICdwbHVzJyxcbiAqICAgICBpbnN0YW5jZVRpdGxlOiAnT2JpZXR0aXZvIHtpbmRleH0nLFxuICogICB9LFxuICogICBmaWVsZHM6IFsgLi4uIF0sXG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVWlSZXBlYXRhYmxlQ29uZmlnIHtcbiAgLyoqXG4gICAqIE51bWVybyBtaW5pbW8gZGkgaXN0YW56ZSBvYmJsaWdhdG9yaWUuXG4gICAqIFNlIGBtaW4gPiAwYCwgYWxsYSBjcmVhemlvbmUgZGVsIGZvcm0gdmVuZ29ubyBwcmUtY3JlYXRlIGFsbWVubyBgbWluYCBpc3RhbnplXG4gICAqICh2dW90ZSBvIGRhIGBpbml0aWFsRGF0YVtzZWN0aW9uSWRdYCkuIFNlIG9tZXNzbywgdmFsZSBgMWAuXG4gICAqIENvbiBgbWluOiAwYCBub24gc2kgYWdnaXVuZ29ubyByaWdoZSBvbHRyZSBhIHF1ZWxsZSBnacOgIHByZXNlbnRpIGluIGBpbml0aWFsRGF0YWAuXG4gICAqL1xuICBtaW4/OiBudW1iZXI7XG4gIC8qKiBOdW1lcm8gbWFzc2ltbyBkaSBpc3RhbnplICh1bmRlZmluZWQgPSBpbGxpbWl0YXRvKS4gKi9cbiAgbWF4PzogbnVtYmVyO1xuICAvKiogTGFiZWwgcGVyIGlsIHB1bHNhbnRlIFwiQWdnaXVuZ2lcIi4gQGRlZmF1bHQgJysgQWdnaXVuZ2knICovXG4gIGFkZExhYmVsPzogc3RyaW5nO1xuICAvKiogSWNvbmEgTHVjaWRlIHBlciBpbCBwdWxzYW50ZSBcIkFnZ2l1bmdpXCIuIEBkZWZhdWx0ICdwbHVzJyAqL1xuICBhZGRJY29uPzogVWlJY29uTmFtZTtcbiAgLyoqIFRlbXBsYXRlIHBlciBpbCB0aXRvbG8gZGkgb2duaSBpc3RhbnphLiBge2luZGV4fWAgdmllbmUgc29zdGl0dWl0byBjb24gbCdpbmRpY2UgMS1iYXNlZC4gKi9cbiAgaW5zdGFuY2VUaXRsZT86IHN0cmluZztcbiAgLyoqIFNlIHJpY2hpZWRlcmUgY29uZmVybWEgcHJpbWEgZGVsbGEgcmltb3ppb25lLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjb25maXJtUmVtb3ZlPzogYm9vbGVhbjtcbiAgLyoqIE1lc3NhZ2dpbyBkaSBjb25mZXJtYSByaW1vemlvbmUuIEBkZWZhdWx0ICdTZWkgc2ljdXJvIGRpIHZvbGVyIHJpbXVvdmVyZSBxdWVzdGEgc2V6aW9uZT8nICovXG4gIGNvbmZpcm1NZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vLyDilIDilIDilIAgU2V6aW9uZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBTZXppb25lIGRlbCBmb3JtIGNoZSByYWdncnVwcGEgY2FtcGkgY29ycmVsYXRpLlxuICogU3VwcG9ydGEgY29sbGFwc2liaWxpdGEgKGFjY29yZGlvbiksIGNvbmRpemlvbmkgZGkgdmlzaWJpbGl0YSxcbiAqIGNvbmZpZ3VyYXppb25lIHdpemFyZCBvcHppb25hbGUgZSByaXBldGliaWxpdGEgZGluYW1pY2EuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNlY3Rpb246IFVpRm9ybVNlY3Rpb24gPSB7XG4gKiAgIGlkOiAnYW5hZ3JhZmljYScsXG4gKiAgIHRpdGxlOiAnRGF0aSBhbmFncmFmaWNpJyxcbiAqICAgZGVzY3JpcHRpb246ICdJbmZvcm1hemlvbmkgcGVyc29uYWxpIGRlbCBjYW5kaWRhdG8nLFxuICogICBjb2xsYXBzaWJsZTogdHJ1ZSxcbiAqICAgZmllbGRzOiBbIC4uLiBdLFxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVpRm9ybVNlY3Rpb24ge1xuICAvKiogSUQgdW5pdm9jbyBkZWxsYSBzZXppb25lLiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogVGl0b2xvIGRlbGxhIHNlemlvbmUuICovXG4gIHRpdGxlPzogc3RyaW5nO1xuICAvKiogRGVzY3JpemlvbmUgZGVsbGEgc2V6aW9uZS4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBJY29uYSBMdWNpZGUgb3B6aW9uYWxlIHBlciBsYSBzZXppb25lICh2aXNpYmlsZSBpbiBtb2RhbGl0w6AgY29sbGFwc2libGUpLiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucyAqL1xuICBpY29uPzogVWlJY29uTmFtZTtcbiAgLyoqIENhbXBpIGNvbnRlbnV0aSBuZWxsYSBzZXppb25lLiAqL1xuICBmaWVsZHM6IFVpRm9ybUZpZWxkRGVzY3JpcHRvcltdO1xuICAvKiogQ29uZGl6aW9uaSBwZXIgbGEgdmlzaWJpbGl0YSBkZWxsYSBzZXppb25lLiAqL1xuICBjb25kaXRpb25zPzogVWlGaWVsZENvbmRpdGlvbltdO1xuICAvKiogU2UgbGEgc2V6aW9uZSBlIGNvbGxhc3NhYmlsZSAoYWNjb3JkaW9uKS4gKi9cbiAgY29sbGFwc2libGU/OiBib29sZWFuO1xuICAvKiogU2UgbGEgc2V6aW9uZSBlIGluaXppYWxtZW50ZSBjb2xsYXNzYXRhLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjb2xsYXBzZWQ/OiBib29sZWFuO1xuICAvKiogQ2xhc3NpIENTUyBhZ2dpdW50aXZlIHBlciBsYSBzZXppb25lLiAqL1xuICBjc3NDbGFzc2VzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBDb25maWd1cmF6aW9uZSB3aXphcmQgcGVyIHF1ZXN0YSBzZXppb25lLlxuICAgKiBQacO5IHNlemlvbmkgcG9zc29ubyBjb25kaXZpZGVyZSBsbyBzdGVzc28gYHdpemFyZFN0ZXAuc3RlcE51bWJlcmA6IGZvcm1hbm8gdW4gdW5pY29cbiAgICogcGFzc28gZGVsIHdpemFyZCAoZXMuIHBpw7kgYmxvY2NoaSBgY29sbGFwc2libGVgIG5lbGxvIHN0ZXNzbyBzdGVwKS4gVGl0b2xvLCBkZXNjcml6aW9uZVxuICAgKiBlIHZhbGlkYXppb25lIGRlbCBwYXNzbyBzaSBpbnRlbmRvbm8gZGFsbGEgKipwcmltYSoqIHNlemlvbmUgZGVsIGdydXBwbyBpbiBvcmRpbmUgZGkgc2NoZW1hLlxuICAgKiBMZSBjaGlhdmkgZGVpIGNhbXBpIGRldm9ubyByZXN0YXJlIHVuaXZvY2hlIHRyYSB0dXR0ZSBsZSBzZXppb25pIGRlbGxvIHN0ZXNzbyBzY2hlbWEgd2l6YXJkLlxuICAgKi9cbiAgd2l6YXJkU3RlcD86IFVpV2l6YXJkU3RlcENvbmZpZztcbiAgLyoqIENvbmZpZ3VyYXppb25lIHBlciBzZXppb25lIHJpcGV0aWJpbGUuIFNlIGRlZmluaXRvLCBsYSBzZXppb25lIGRpdmVudGEgdW4gZHluYW1pYyByZXBlYXRlci4gKi9cbiAgcmVwZWF0YWJsZT86IFVpUmVwZWF0YWJsZUNvbmZpZztcbn1cblxuLy8g4pSA4pSA4pSAIENvbmZpZ3VyYXppb25lIGZvcm0g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogQ29uZmlndXJhemlvbmUgZ2xvYmFsZSBkZWwgZm9ybSBidWlsZGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVpRm9ybUJ1aWxkZXJDb25maWcge1xuICAvKiogTGF5b3V0IGRlbCBmb3JtLiBAZGVmYXVsdCAnZ3JpZCcgKi9cbiAgbGF5b3V0PzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyB8ICdncmlkJztcbiAgLyoqIE51bWVybyBkaSBjb2xvbm5lIG5lbCBncmlkLiBAZGVmYXVsdCAxMiAqL1xuICBjb2x1bW5zPzogbnVtYmVyO1xuICAvKiogTW9zdHJhIGkgcHVsc2FudGkgZGkgYXppb25lIChzdWJtaXQvcmVzZXQpLiBAZGVmYXVsdCB0cnVlICovXG4gIHNob3dCdXR0b25zPzogYm9vbGVhbjtcbiAgLyoqIE5hc2NvbmRlIHNvbG8gbCdhcmVhIHB1bHNhbnRpIGRlbCBmb290ZXIgKGB1aS1idXR0b24tYXJlYWApLCBub24gaWwgc3VtbWFyeSBlcnJvcmkuICovXG4gIGhpZGVGb290ZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogTmFzY29uZGUgZGVsIHR1dHRvIGlsIGJsb2NjbyBgdWktZm9ybS1lcnJvci1zdW1tYXJ5YC5cbiAgICogU2UgYXNzZW50ZS9mYWxzeSBpbCBzdW1tYXJ5IMOoIHZpc2liaWxlIGFuY2hlIHNlbnphIGVycm9yaSAoc3RhdG8gb2sgcHJldmVkaWJpbGUpLlxuICAgKi9cbiAgaGlkZUVycm9yU3VtbWFyeT86IGJvb2xlYW47XG4gIC8qKiBNZXNzYWdnaW8gbmVsIHN1bW1hcnkgcXVhbmRvIGlsIGZvcm0gbm9uIGhhIGVycm9yaSAoc3RhdG8gb2spLiAqL1xuICBlcnJvclN1bW1hcnlWYWxpZE1lc3NhZ2U/OiBzdHJpbmc7XG4gIC8qKiBMYWJlbCBwZXJzb25hbGl6emF0ZSBwZXIgaSBwdWxzYW50aS4gKi9cbiAgYnV0dG9uTGFiZWxzPzoge1xuICAgIHN1Ym1pdD86IHN0cmluZztcbiAgICByZXNldD86IHN0cmluZztcbiAgICBjYW5jZWw/OiBzdHJpbmc7XG4gIH07XG4gIC8qKiBDbGFzc2kgQ1NTIGdsb2JhbGkgc3VsIGNvbnRhaW5lciBkZWwgZm9ybS4gKi9cbiAgY3NzQ2xhc3Nlcz86IHN0cmluZ1tdO1xufVxuXG4vLyDilIDilIDilIAgQ29uZmlndXJhemlvbmUgd2l6YXJkIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIENvbmZpZ3VyYXppb25lIHBlciBsYSBtb2RhbGl0YSB3aXphcmQgZGVsIGZvcm0uXG4gKiBVc2F0YSBkYWwgY29tcG9uZW50ZSBgVWlGb3JtV2l6YXJkQ29tcG9uZW50YC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgd2l6YXJkQ29uZmlnOiBVaVdpemFyZENvbmZpZyA9IHtcbiAqICAgc2hvd1Byb2dyZXNzOiB0cnVlLFxuICogICBwcm9ncmVzc1N0eWxlOiAnc3RlcHMnLFxuICogICBhbGxvd0JhY2tOYXZpZ2F0aW9uOiB0cnVlLFxuICogICBidXR0b25MYWJlbHM6IHsgc3VibWl0OiAnU2FsdmEgZSBwcm9zZWd1aScsIHByZXZpb3VzOiAnSW5kaWV0cm8nLCBmaW5pc2g6ICdDb21wbGV0YScgfSxcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVaVdpemFyZENvbmZpZyB7XG4gIC8qKiBJRCBwZXIgc2luY3Jvbml6emF6aW9uZSB3aXJlbGVzcyB0cmEgaXN0YW56ZS4gKi9cbiAgd2l6YXJkSWQ/OiBzdHJpbmc7XG4gIC8qKiBOYXNjb25kZSBsJ2hlYWRlciBpbnRlcm5vIGRlbCB3aXphcmQgcGVyIGNvbnNlbnRpcmUgdW4gaGVhZGVyIGVzdGVybm8uICovXG4gIHdpcmVsZXNzSGVhZGluZz86IGJvb2xlYW47XG4gIC8qKiBNb3N0cmEgbGEgYmFycmEgZGkgcHJvZ3Jlc3NvLiBAZGVmYXVsdCB0cnVlICovXG4gIHNob3dQcm9ncmVzcz86IGJvb2xlYW47XG4gIC8qKiBTdGlsZSBkZWxsYSBiYXJyYSBkaSBwcm9ncmVzc28uIEBkZWZhdWx0ICdzdGVwcycgKi9cbiAgcHJvZ3Jlc3NTdHlsZT86ICdsaW5lYXInIHwgJ3N0ZXBzJztcbiAgLyoqIFBlcm1ldHRlIG5hdmlnYXppb25lIGFsbCdpbmRpZXRyby4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBhbGxvd0JhY2tOYXZpZ2F0aW9uPzogYm9vbGVhbjtcbiAgLyoqIFBlcm1ldHRlIG5hdmlnYXppb25lIGluIGF2YW50aSBzZW56YSB2YWxpZGF6aW9uZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dGb3J3YXJkTmF2aWdhdGlvbj86IGJvb2xlYW47XG4gIC8qKiBTYWx2YSBhdXRvbWF0aWNhbWVudGUgaSBkYXRpIGFkIG9nbmkgY2FtYmlvIHN0ZXAuICovXG4gIGF1dG9TYXZlPzogYm9vbGVhbjtcbiAgLyoqIENhbGxiYWNrIHBlciBpbCBzYWx2YXRhZ2dpbyBkZWkgZGF0aSBkZWxsbyBzdGVwLiAqL1xuICBvblN0ZXBTYXZlPzogKHN0ZXBEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBzdGVwTnVtYmVyOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuICAvKiogTW9zdHJhIHB1bHNhbnRpIGRpIG5hdmlnYXppb25lIChwcmVjZWRlbnRlL3N1Y2Nlc3Npdm8pLiBAZGVmYXVsdCB0cnVlICovXG4gIHNob3dOYXZpZ2F0aW9uQnV0dG9ucz86IGJvb2xlYW47XG4gIC8qKiBQb3NpemlvbmUgZGVpIHB1bHNhbnRpIGRpIG5hdmlnYXppb25lLiBAZGVmYXVsdCAnYm90dG9tJyAqL1xuICBuYXZpZ2F0aW9uUG9zaXRpb24/OiAndG9wJyB8ICdib3R0b20nIHwgJ2JvdGgnO1xuICAvKipcbiAgICogQ29uc2VudGUgZGkgc2FsdGFyZSBhIHVubyBzdGVwIGdpw6AgY29tcGxldGF0byBjbGljY2FuZG8gYnVsbGV0IG8gdGl0b2xvIHN0ZXBcbiAgICogcXVhbmRvIGBwcm9ncmVzc1N0eWxlYCDDqCBgJ3N0ZXBzJ2AuIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGFsbG93U3RlcEluZGljYXRvck5hdmlnYXRpb24/OiBib29sZWFuO1xuICAvKiogTGFiZWwgcGVyc29uYWxpenphdGUgcGVyIGkgcHVsc2FudGkgZGVsIHdpemFyZC4gKi9cbiAgYnV0dG9uTGFiZWxzPzoge1xuICAgIHByZXZpb3VzPzogc3RyaW5nO1xuICAgIC8qKiBMYWJlbCBwdWxzYW50ZSBhdmFudGk7IHNlIGFzc2VudGUgc2kgdXNhIGBzdWJtaXRgLiAqL1xuICAgIG5leHQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQWxpYXMgZGkgY29udmVuaWVuemEgKGNvbWUgYHN1Ym1pdGAgc3VsIGZvcm0gYnVpbGRlcikgcGVyIGlsIHB1bHNhbnRlIMKrYXZhbnRpwrsgLyBzYWx2YSBlIHByb3NlZ3VpLlxuICAgICAqIFVzYXRvIHNvbG8gc2UgYG5leHRgIG5vbiDDqCB2YWxvcml6emF0by5cbiAgICAgKi9cbiAgICBzdWJtaXQ/OiBzdHJpbmc7XG4gICAgZmluaXNoPzogc3RyaW5nO1xuICAgIHNhdmU/OiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKlxuICogU3RhdG8gY29ycmVudGUgZGVsIHdpemFyZCwgZXNwb3N0byBkYWwgYFdpemFyZFN5bmNTZXJ2aWNlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVaVdpemFyZFN0YXRlIHtcbiAgLyoqIFN0ZXAgY29ycmVudGUgKDAtYmFzZWQpLiAqL1xuICBjdXJyZW50U3RlcDogbnVtYmVyO1xuICAvKiogTnVtZXJvIHRvdGFsZSBkaSBzdGVwLiAqL1xuICB0b3RhbFN0ZXBzOiBudW1iZXI7XG4gIC8qKiBJbmRpY2kgZGVnbGkgc3RlcCBjb21wbGV0YXRpLiAqL1xuICBjb21wbGV0ZWRTdGVwczogU2V0PG51bWJlcj47XG4gIC8qKiBJbmRpY2kgZGVnbGkgc3RlcCB2aXNpdGF0aS4gKi9cbiAgdmlzaXRlZFN0ZXBzOiBTZXQ8bnVtYmVyPjtcbiAgLyoqIFNlIGlsIGZvcm0gbmVsbG8gc3RlcCBjb3JyZW50ZSBlIHZhbGlkby4gKi9cbiAgaXNWYWxpZDogYm9vbGVhbjtcbiAgLyoqIEVycm9yaSBwZXIgc3RlcC4gKi9cbiAgc3RlcEVycm9yczogUmVjb3JkPG51bWJlciwgc3RyaW5nW10+O1xufVxuXG4vLyDilIDilIDilIAgU2NoZW1hIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIFNjaGVtYSBjb21wbGV0byBkZWwgZm9ybS5cbiAqXG4gKiBSYXBwcmVzZW50YSBsYSBjb25maWd1cmF6aW9uZSBkaWNoaWFyYXRpdmEgZGVsbCdpbnRlcm8gZm9ybTpcbiAqIHNlemlvbmksIGNhbXBpLCB2YWxpZGF6aW9uaSwgY29uZGl6aW9uaSBlIGltcG9zdGF6aW9uaSBnbG9iYWxpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY29uc3QgbXlGb3JtOiBVaUZvcm1TY2hlbWEgPSB7XG4gKiAgIGlkOiAndXNlci1yZWdpc3RyYXRpb24nLFxuICogICB0aXRsZTogJ1JlZ2lzdHJhemlvbmUgdXRlbnRlJyxcbiAqICAgc2VjdGlvbnM6IFtcbiAqICAgICB7IGlkOiAncGVyc29uYWwnLCB0aXRsZTogJ0RhdGkgcGVyc29uYWxpJywgZmllbGRzOiBbLi4uXSB9LFxuICogICAgIHsgaWQ6ICdhZGRyZXNzJywgdGl0bGU6ICdJbmRpcml6em8nLCBmaWVsZHM6IFsuLi5dLCBjb2xsYXBzaWJsZTogdHJ1ZSB9LFxuICogICBdLFxuICogICBjb25maWc6IHsgY29sdW1uczogMTIsIHNob3dCdXR0b25zOiB0cnVlIH0sXG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVWlGb3JtU2NoZW1hIHtcbiAgLyoqIElEIHVuaXZvY28gZGVsIGZvcm0uICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBUaXRvbG8gZGVsIGZvcm0uICovXG4gIHRpdGxlPzogc3RyaW5nO1xuICAvKiogRGVzY3JpemlvbmUgZGVsIGZvcm0uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogU2V6aW9uaSBkZWwgZm9ybS4gKi9cbiAgc2VjdGlvbnM6IFVpRm9ybVNlY3Rpb25bXTtcbiAgLyoqIENvbmZpZ3VyYXppb25lIGdsb2JhbGUuICovXG4gIGNvbmZpZz86IFVpRm9ybUJ1aWxkZXJDb25maWc7XG59XG5cbi8vIOKUgOKUgOKUgCBUaXBpIGRpIHV0aWxpdGEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogRGF0aSBkZWwgZm9ybSBjb21lIG1hcHBhIGNoaWF2ZS12YWxvcmUuXG4gKi9cbmV4cG9ydCB0eXBlIFVpRm9ybURhdGEgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4vKipcbiAqIEV2ZW50byBlbWVzc28gZGFpIGNhbXBpIGN1c3RvbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVaUZvcm1DdXN0b21FdmVudCB7XG4gIC8qKiBDaGlhdmUgZGVsIGNhbXBvIGNoZSBoYSBlbWVzc28gbCdldmVudG8uICovXG4gIGZpZWxkOiBzdHJpbmc7XG4gIC8qKiBOb21lIGRlbGwnZXZlbnRvLiAqL1xuICBldmVudDogc3RyaW5nO1xuICAvKiogRGF0aSBhc3NvY2lhdGkgYWxsJ2V2ZW50by4gKi9cbiAgZGF0YTogYW55O1xufVxuXG4vKipcbiAqIEV2ZW50byBlbWVzc28gYWwgY2FtYmlvIHN0ZXAgZGVsIHdpemFyZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVaVdpemFyZFN0ZXBDaGFuZ2VFdmVudCB7XG4gIC8qKiBJbmRpY2UgZGVsbG8gc3RlcCBkaSBwYXJ0ZW56YS4gKi9cbiAgZnJvbTogbnVtYmVyO1xuICAvKiogSW5kaWNlIGRlbGxvIHN0ZXAgZGkgZGVzdGluYXppb25lLiAqL1xuICB0bzogbnVtYmVyO1xuICAvKiogRGlyZXppb25lIGRlbGxhIG5hdmlnYXppb25lLiAqL1xuICBkaXJlY3Rpb246ICduZXh0JyB8ICdwcmV2aW91cyc7XG59XG5cbi8qKlxuICogRXZlbnRvIGVtZXNzbyBhbCBjb21wbGV0YW1lbnRvIGRpIHVubyBzdGVwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVpV2l6YXJkU3RlcENvbXBsZXRlRXZlbnQge1xuICAvKiogSW5kaWNlIGRlbGxvIHN0ZXAgY29tcGxldGF0by4gKi9cbiAgc3RlcDogbnVtYmVyO1xuICAvKiogRGF0aSBkZWwgZm9ybSBhbCBtb21lbnRvIGRlbCBjb21wbGV0YW1lbnRvLiAqL1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuIl19
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctdWktc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWJ1aWxkZXIvdHlwZXMvc2NoZW1hLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBuZy11aS1zeXN0ZW0vZm9ybS1idWlsZGVyXG4gKiBUaXBpIHBlciBsbyBzY2hlbWEgZGVsIGZvcm0sIHNlemlvbmkgZSBjb25maWd1cmF6aW9uZS5cbiAqL1xuXG5pbXBvcnQgeyBVaUZvcm1GaWVsZERlc2NyaXB0b3IgfSBmcm9tICcuL2ZpZWxkLnR5cGVzJztcbmltcG9ydCB7IFVpRmllbGRDb25kaXRpb24gfSBmcm9tICcuL2NvbmRpdGlvbi50eXBlcyc7XG5pbXBvcnQgeyBVaUljb25OYW1lIH0gZnJvbSAnLi4vLi4vLi4vY29yZS90eXBlcyc7XG5cbi8vIOKUgOKUgOKUgCBXaXphcmQgc3RlcCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBDb25maWd1cmF6aW9uZSBkaSB2YWxpZGF6aW9uZSBwZXIgdW4gc2luZ29sbyBzdGVwIGRlbCB3aXphcmQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVWlXaXphcmRTdGVwVmFsaWRhdGlvbiB7XG4gIC8qKiBTZSBsbyBzdGVwIHJpY2hpZWRlIHZhbGlkYXppb25lIHByaW1hIGRpIHByb2NlZGVyZS4gQGRlZmF1bHQgdHJ1ZSAqL1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIC8qKiBDYW1waSBzcGVjaWZpY2kgZGEgdmFsaWRhcmUgaW4gcXVlc3RvIHN0ZXAgKHNlIG9tZXNzbywgdHV0dGkgaSBjYW1waSBkZWxsbyBzdGVwKS4gKi9cbiAgdmFsaWRhdGVGaWVsZHM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFNlIGBmYWxzZWAsIG5lbGxhIG5hdmlnYXppb25lIHdpemFyZCBpIGNhbXBpIGB0eXBlOiAnY3VzdG9tJ2Agbm9uIGNvbmNvcnJvbm9cbiAgICogYWxsYSB2YWxpZGl0w6AgZGVsbG8gc3RlcCAoZSBpIGxvcm8gZXJyb3JpIG5vbiBibG9jY2FubyBpbCBwYXNzYWdnaW8pLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICB2YWxpZGF0ZUN1c3RvbUNvbXBvbmVudHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEZ1bnppb25lIGRpIHZhbGlkYXppb25lIGN1c3RvbSBwZXIgdW5vIHN0ZXAgZGVsIHdpemFyZC5cbiAqIFZpZW5lIGludm9jYXRhIHByaW1hIGRlbGxhIG5hdmlnYXppb25lIGFsbG8gc3RlcCBzdWNjZXNzaXZvLlxuICpcbiAqIEBwYXJhbSBmb3JtRGF0YSAtIERhdGkgY29ycmVudGkgZGVsIGZvcm0gY29tcGxldG8uXG4gKiBAcGFyYW0gY3VycmVudFN0ZXAgLSBJbmRpY2UgZGVsbG8gc3RlcCBjb3JyZW50ZSAoMC1iYXNlZCkuXG4gKiBAcGFyYW0gaXNWYWxpZCAtIFJpc3VsdGF0byBkZWxsYSB2YWxpZGF6aW9uZSBzdGFuZGFyZCBkZWwgZm9ybS5cbiAqIEByZXR1cm5zIGB0cnVlYCBwZXIgcGVybWV0dGVyZSBsYSBuYXZpZ2F6aW9uZSwgYGZhbHNlYCBwZXIgYmxvY2NhcmxhLlxuICovXG5leHBvcnQgdHlwZSBVaVdpemFyZFZhbGlkYXRpb25GbiA9IChcbiAgZm9ybURhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIGN1cnJlbnRTdGVwOiBudW1iZXIsXG4gIGlzVmFsaWQ6IGJvb2xlYW4sXG4pID0+IFByb21pc2U8Ym9vbGVhbj4gfCBib29sZWFuO1xuXG4vKipcbiAqIENvbmZpZ3VyYXppb25lIHdpemFyZCBwZXIgdW5hIHNlemlvbmUgZGVsIGZvcm0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVWlXaXphcmRTdGVwQ29uZmlnIHtcbiAgLyoqIE51bWVybyBkZWxsbyBzdGVwICgxLWJhc2VkIHBlciBVSSwgY29udmVydGl0byBhIDAtYmFzZWQgaW50ZXJuYW1lbnRlKS4gKi9cbiAgc3RlcE51bWJlcjogbnVtYmVyO1xuICAvKiogVGl0b2xvIHBlcnNvbmFsaXp6YXRvIHBlciBsbyBzdGVwLiAqL1xuICBzdGVwVGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBEZXNjcml6aW9uZSBkZWxsbyBzdGVwLiAqL1xuICBzdGVwRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBDb25maWd1cmF6aW9uZSBkaSB2YWxpZGF6aW9uZSBwZXIgcXVlc3RvIHN0ZXAuICovXG4gIHZhbGlkYXRpb24/OiBVaVdpemFyZFN0ZXBWYWxpZGF0aW9uO1xuICAvKiogUGVybWV0dGUgZGkgc2FsdGFyZSBxdWVzdG8gc3RlcCBzZW56YSB2YWxpZGF6aW9uZS4gKi9cbiAgYWxsb3dTa2lwPzogYm9vbGVhbjtcbiAgLyoqIE5vbWUgZGVsIG1ldG9kbyBkaSB2YWxpZGF6aW9uZSBjdXN0b20gKGRldmUgZXNzZXJlIHJlZ2lzdHJhdG8gbmVsIHdpemFyZCkuICovXG4gIGN1c3RvbVZhbGlkYXRpb25Gbj86IHN0cmluZztcbiAgLyoqIE1ldGFkYXRpIGFnZ2l1bnRpdmkgcGVyIGxvIHN0ZXAuICovXG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuLy8g4pSA4pSA4pSAIFNlemlvbmUgcmlwZXRpYmlsZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBDb25maWd1cmF6aW9uZSBwZXIgc2V6aW9uaSByaXBldGliaWxpIChkeW5hbWljIHJlcGVhdGVyKS5cbiAqIFBlcm1ldHRlIGRpIGFnZ2l1bmdlcmUvcmltdW92ZXJlL2R1cGxpY2FyZSBOIGlzdGFuemUgZGkgdW4gYmxvY2NvXG4gKiBkaSBjYW1waSwgY29uIGlsIG1vZGVsbG8gcmVhdHRpdm8gZ2VzdGl0byB0cmFtaXRlIEZvcm1BcnJheS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc2VjdGlvbjogVWlGb3JtU2VjdGlvbiA9IHtcbiAqICAgaWQ6ICdvYmlldHRpdmknLFxuICogICB0aXRsZTogJ09iaWV0dGl2aSBmb3JtYXRpdmknLFxuICogICByZXBlYXRhYmxlOiB7XG4gKiAgICAgbWluOiAxLFxuICogICAgIG1heDogMTAsXG4gKiAgICAgYWRkTGFiZWw6ICdBZ2dpdW5naSBvYmlldHRpdm8nLFxuICogICAgIGFkZEljb246ICdwbHVzJyxcbiAqICAgICBpbnN0YW5jZVRpdGxlOiAnT2JpZXR0aXZvIHtpbmRleH0nLFxuICogICB9LFxuICogICBmaWVsZHM6IFsgLi4uIF0sXG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVWlSZXBlYXRhYmxlQ29uZmlnIHtcbiAgLyoqXG4gICAqIE51bWVybyBtaW5pbW8gZGkgaXN0YW56ZSBvYmJsaWdhdG9yaWUuXG4gICAqIFNlIGBtaW4gPiAwYCwgYWxsYSBjcmVhemlvbmUgZGVsIGZvcm0gdmVuZ29ubyBwcmUtY3JlYXRlIGFsbWVubyBgbWluYCBpc3RhbnplXG4gICAqICh2dW90ZSBvIGRhIGBpbml0aWFsRGF0YVtzZWN0aW9uSWRdYCkuIFNlIG9tZXNzbywgdmFsZSBgMWAuXG4gICAqIENvbiBgbWluOiAwYCBub24gc2kgYWdnaXVuZ29ubyByaWdoZSBvbHRyZSBhIHF1ZWxsZSBnacOgIHByZXNlbnRpIGluIGBpbml0aWFsRGF0YWAuXG4gICAqL1xuICBtaW4/OiBudW1iZXI7XG4gIC8qKiBOdW1lcm8gbWFzc2ltbyBkaSBpc3RhbnplICh1bmRlZmluZWQgPSBpbGxpbWl0YXRvKS4gKi9cbiAgbWF4PzogbnVtYmVyO1xuICAvKiogTGFiZWwgcGVyIGlsIHB1bHNhbnRlIFwiQWdnaXVuZ2lcIi4gQGRlZmF1bHQgJysgQWdnaXVuZ2knICovXG4gIGFkZExhYmVsPzogc3RyaW5nO1xuICAvKiogSWNvbmEgTHVjaWRlIHBlciBpbCBwdWxzYW50ZSBcIkFnZ2l1bmdpXCIuIEBkZWZhdWx0ICdwbHVzJyAqL1xuICBhZGRJY29uPzogVWlJY29uTmFtZTtcbiAgLyoqIFRlbXBsYXRlIHBlciBpbCB0aXRvbG8gZGkgb2duaSBpc3RhbnphLiBge2luZGV4fWAgdmllbmUgc29zdGl0dWl0byBjb24gbCdpbmRpY2UgMS1iYXNlZC4gKi9cbiAgaW5zdGFuY2VUaXRsZT86IHN0cmluZztcbiAgLyoqIFNlIHJpY2hpZWRlcmUgY29uZmVybWEgcHJpbWEgZGVsbGEgcmltb3ppb25lLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjb25maXJtUmVtb3ZlPzogYm9vbGVhbjtcbiAgLyoqIE1lc3NhZ2dpbyBkaSBjb25mZXJtYSByaW1vemlvbmUuIEBkZWZhdWx0ICdTZWkgc2ljdXJvIGRpIHZvbGVyIHJpbXVvdmVyZSBxdWVzdGEgc2V6aW9uZT8nICovXG4gIGNvbmZpcm1NZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vLyDilIDilIDilIAgU2V6aW9uZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBTZXppb25lIGRlbCBmb3JtIGNoZSByYWdncnVwcGEgY2FtcGkgY29ycmVsYXRpLlxuICogU3VwcG9ydGEgY29sbGFwc2liaWxpdGEgKGFjY29yZGlvbiksIGNvbmRpemlvbmkgZGkgdmlzaWJpbGl0YSxcbiAqIGNvbmZpZ3VyYXppb25lIHdpemFyZCBvcHppb25hbGUgZSByaXBldGliaWxpdGEgZGluYW1pY2EuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNlY3Rpb246IFVpRm9ybVNlY3Rpb24gPSB7XG4gKiAgIGlkOiAnYW5hZ3JhZmljYScsXG4gKiAgIHRpdGxlOiAnRGF0aSBhbmFncmFmaWNpJyxcbiAqICAgZGVzY3JpcHRpb246ICdJbmZvcm1hemlvbmkgcGVyc29uYWxpIGRlbCBjYW5kaWRhdG8nLFxuICogICBjb2xsYXBzaWJsZTogdHJ1ZSxcbiAqICAgZmllbGRzOiBbIC4uLiBdLFxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVpRm9ybVNlY3Rpb24ge1xuICAvKiogSUQgdW5pdm9jbyBkZWxsYSBzZXppb25lLiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogVGl0b2xvIGRlbGxhIHNlemlvbmUuICovXG4gIHRpdGxlPzogc3RyaW5nO1xuICAvKiogRGVzY3JpemlvbmUgZGVsbGEgc2V6aW9uZS4gKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKiBJY29uYSBMdWNpZGUgb3B6aW9uYWxlIHBlciBsYSBzZXppb25lICh2aXNpYmlsZSBpbiBtb2RhbGl0w6AgY29sbGFwc2libGUpLiBAc2VlIGh0dHBzOi8vbHVjaWRlLmRldi9pY29ucyAqL1xuICBpY29uPzogVWlJY29uTmFtZTtcbiAgLyoqIENhbXBpIGNvbnRlbnV0aSBuZWxsYSBzZXppb25lLiAqL1xuICBmaWVsZHM6IFVpRm9ybUZpZWxkRGVzY3JpcHRvcltdO1xuICAvKiogQ29uZGl6aW9uaSBwZXIgbGEgdmlzaWJpbGl0YSBkZWxsYSBzZXppb25lLiAqL1xuICBjb25kaXRpb25zPzogVWlGaWVsZENvbmRpdGlvbltdO1xuICAvKiogU2UgbGEgc2V6aW9uZSBlIGNvbGxhc3NhYmlsZSAoYWNjb3JkaW9uKS4gKi9cbiAgY29sbGFwc2libGU/OiBib29sZWFuO1xuICAvKiogU2UgbGEgc2V6aW9uZSBlIGluaXppYWxtZW50ZSBjb2xsYXNzYXRhLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBjb2xsYXBzZWQ/OiBib29sZWFuO1xuICAvKiogQ2xhc3NpIENTUyBhZ2dpdW50aXZlIHBlciBsYSBzZXppb25lLiAqL1xuICBjc3NDbGFzc2VzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBDb25maWd1cmF6aW9uZSB3aXphcmQgcGVyIHF1ZXN0YSBzZXppb25lLlxuICAgKiBQacO5IHNlemlvbmkgcG9zc29ubyBjb25kaXZpZGVyZSBsbyBzdGVzc28gYHdpemFyZFN0ZXAuc3RlcE51bWJlcmA6IGZvcm1hbm8gdW4gdW5pY29cbiAgICogcGFzc28gZGVsIHdpemFyZCAoZXMuIHBpw7kgYmxvY2NoaSBgY29sbGFwc2libGVgIG5lbGxvIHN0ZXNzbyBzdGVwKS4gVGl0b2xvLCBkZXNjcml6aW9uZVxuICAgKiBlIHZhbGlkYXppb25lIGRlbCBwYXNzbyBzaSBpbnRlbmRvbm8gZGFsbGEgKipwcmltYSoqIHNlemlvbmUgZGVsIGdydXBwbyBpbiBvcmRpbmUgZGkgc2NoZW1hLlxuICAgKiBMZSBjaGlhdmkgZGVpIGNhbXBpIGRldm9ubyByZXN0YXJlIHVuaXZvY2hlIHRyYSB0dXR0ZSBsZSBzZXppb25pIGRlbGxvIHN0ZXNzbyBzY2hlbWEgd2l6YXJkLlxuICAgKi9cbiAgd2l6YXJkU3RlcD86IFVpV2l6YXJkU3RlcENvbmZpZztcbiAgLyoqIENvbmZpZ3VyYXppb25lIHBlciBzZXppb25lIHJpcGV0aWJpbGUuIFNlIGRlZmluaXRvLCBsYSBzZXppb25lIGRpdmVudGEgdW4gZHluYW1pYyByZXBlYXRlci4gKi9cbiAgcmVwZWF0YWJsZT86IFVpUmVwZWF0YWJsZUNvbmZpZztcbn1cblxuLy8g4pSA4pSA4pSAIENvbmZpZ3VyYXppb25lIGZvcm0g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogQ29uZmlndXJhemlvbmUgZ2xvYmFsZSBkZWwgZm9ybSBidWlsZGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVpRm9ybUJ1aWxkZXJDb25maWcge1xuICAvKiogTGF5b3V0IGRlbCBmb3JtLiBAZGVmYXVsdCAnZ3JpZCcgKi9cbiAgbGF5b3V0PzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyB8ICdncmlkJztcbiAgLyoqIE51bWVybyBkaSBjb2xvbm5lIG5lbCBncmlkLiBAZGVmYXVsdCAxMiAqL1xuICBjb2x1bW5zPzogbnVtYmVyO1xuICAvKiogTW9zdHJhIGkgcHVsc2FudGkgZGkgYXppb25lIChzdWJtaXQvcmVzZXQpLiBAZGVmYXVsdCB0cnVlICovXG4gIHNob3dCdXR0b25zPzogYm9vbGVhbjtcbiAgLyoqIE5hc2NvbmRlIHNvbG8gbCdhcmVhIHB1bHNhbnRpIGRlbCBmb290ZXIgKGB1aS1idXR0b24tYXJlYWApLCBub24gaWwgc3VtbWFyeSBlcnJvcmkuICovXG4gIGhpZGVGb290ZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogTmFzY29uZGUgZGVsIHR1dHRvIGlsIGJsb2NjbyBgdWktZm9ybS1lcnJvci1zdW1tYXJ5YC5cbiAgICogU2UgYXNzZW50ZS9mYWxzeSBpbCBzdW1tYXJ5IMOoIHZpc2liaWxlIGFuY2hlIHNlbnphIGVycm9yaSAoc3RhdG8gb2sgcHJldmVkaWJpbGUpLlxuICAgKi9cbiAgaGlkZUVycm9yU3VtbWFyeT86IGJvb2xlYW47XG4gIC8qKiBNZXNzYWdnaW8gbmVsIHN1bW1hcnkgcXVhbmRvIGlsIGZvcm0gbm9uIGhhIGVycm9yaSAoc3RhdG8gb2spLiAqL1xuICBlcnJvclN1bW1hcnlWYWxpZE1lc3NhZ2U/OiBzdHJpbmc7XG4gIC8qKiBMYWJlbCBwZXJzb25hbGl6emF0ZSBwZXIgaSBwdWxzYW50aS4gKi9cbiAgYnV0dG9uTGFiZWxzPzoge1xuICAgIHN1Ym1pdD86IHN0cmluZztcbiAgICByZXNldD86IHN0cmluZztcbiAgICBjYW5jZWw/OiBzdHJpbmc7XG4gIH07XG4gIC8qKiBDbGFzc2kgQ1NTIGdsb2JhbGkgc3VsIGNvbnRhaW5lciBkZWwgZm9ybS4gKi9cbiAgY3NzQ2xhc3Nlcz86IHN0cmluZ1tdO1xufVxuXG4vLyDilIDilIDilIAgQ29uZmlndXJhemlvbmUgd2l6YXJkIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIENvbmZpZ3VyYXppb25lIHBlciBsYSBtb2RhbGl0YSB3aXphcmQgZGVsIGZvcm0uXG4gKiBVc2F0YSBkYWwgY29tcG9uZW50ZSBgVWlGb3JtV2l6YXJkQ29tcG9uZW50YC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgd2l6YXJkQ29uZmlnOiBVaVdpemFyZENvbmZpZyA9IHtcbiAqICAgc2hvd1Byb2dyZXNzOiB0cnVlLFxuICogICBwcm9ncmVzc1N0eWxlOiAnc3RlcHMnLFxuICogICBhbGxvd0JhY2tOYXZpZ2F0aW9uOiB0cnVlLFxuICogICBidXR0b25MYWJlbHM6IHsgc3VibWl0OiAnU2FsdmEgZSBwcm9zZWd1aScsIHByZXZpb3VzOiAnSW5kaWV0cm8nLCBmaW5pc2g6ICdDb21wbGV0YScgfSxcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVaVdpemFyZENvbmZpZyB7XG4gIC8qKiBJRCBwZXIgc2luY3Jvbml6emF6aW9uZSB3aXJlbGVzcyB0cmEgaXN0YW56ZS4gKi9cbiAgd2l6YXJkSWQ/OiBzdHJpbmc7XG4gIC8qKiBOYXNjb25kZSBsJ2hlYWRlciBpbnRlcm5vIGRlbCB3aXphcmQgcGVyIGNvbnNlbnRpcmUgdW4gaGVhZGVyIGVzdGVybm8uICovXG4gIHdpcmVsZXNzSGVhZGluZz86IGJvb2xlYW47XG4gIC8qKiBNb3N0cmEgbGEgYmFycmEgZGkgcHJvZ3Jlc3NvLiBAZGVmYXVsdCB0cnVlICovXG4gIHNob3dQcm9ncmVzcz86IGJvb2xlYW47XG4gIC8qKiBTdGlsZSBkZWxsYSBiYXJyYSBkaSBwcm9ncmVzc28uIEBkZWZhdWx0ICdzdGVwcycgKi9cbiAgcHJvZ3Jlc3NTdHlsZT86ICdsaW5lYXInIHwgJ3N0ZXBzJztcbiAgLyoqIFBlcm1ldHRlIG5hdmlnYXppb25lIGFsbCdpbmRpZXRyby4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBhbGxvd0JhY2tOYXZpZ2F0aW9uPzogYm9vbGVhbjtcbiAgLyoqIFBlcm1ldHRlIG5hdmlnYXppb25lIGluIGF2YW50aSBzZW56YSB2YWxpZGF6aW9uZS4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgYWxsb3dGb3J3YXJkTmF2aWdhdGlvbj86IGJvb2xlYW47XG4gIC8qKiBTYWx2YSBhdXRvbWF0aWNhbWVudGUgaSBkYXRpIGFkIG9nbmkgY2FtYmlvIHN0ZXAuICovXG4gIGF1dG9TYXZlPzogYm9vbGVhbjtcbiAgLyoqIENhbGxiYWNrIHBlciBpbCBzYWx2YXRhZ2dpbyBkZWkgZGF0aSBkZWxsbyBzdGVwLiAqL1xuICBvblN0ZXBTYXZlPzogKHN0ZXBEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBzdGVwTnVtYmVyOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuICAvKiogTW9zdHJhIHB1bHNhbnRpIGRpIG5hdmlnYXppb25lIChwcmVjZWRlbnRlL3N1Y2Nlc3Npdm8pLiBAZGVmYXVsdCB0cnVlICovXG4gIHNob3dOYXZpZ2F0aW9uQnV0dG9ucz86IGJvb2xlYW47XG4gIC8qKiBQb3NpemlvbmUgZGVpIHB1bHNhbnRpIGRpIG5hdmlnYXppb25lLiBAZGVmYXVsdCAnYm90dG9tJyAqL1xuICBuYXZpZ2F0aW9uUG9zaXRpb24/OiAndG9wJyB8ICdib3R0b20nIHwgJ2JvdGgnO1xuICAvKipcbiAgICogQ29uc2VudGUgZGkgc2FsdGFyZSBhIHVubyBzdGVwIGdpw6AgY29tcGxldGF0byBjbGljY2FuZG8gYnVsbGV0IG8gdGl0b2xvIHN0ZXBcbiAgICogcXVhbmRvIGBwcm9ncmVzc1N0eWxlYCDDqCBgJ3N0ZXBzJ2AuIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGFsbG93U3RlcEluZGljYXRvck5hdmlnYXRpb24/OiBib29sZWFuO1xuICAvKiogTGFiZWwgcGVyc29uYWxpenphdGUgcGVyIGkgcHVsc2FudGkgZGVsIHdpemFyZC4gKi9cbiAgYnV0dG9uTGFiZWxzPzoge1xuICAgIHByZXZpb3VzPzogc3RyaW5nO1xuICAgIC8qKiBMYWJlbCBwdWxzYW50ZSBhdmFudGk7IHNlIGFzc2VudGUgc2kgdXNhIGBzdWJtaXRgLiAqL1xuICAgIG5leHQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQWxpYXMgZGkgY29udmVuaWVuemEgKGNvbWUgYHN1Ym1pdGAgc3VsIGZvcm0gYnVpbGRlcikgcGVyIGlsIHB1bHNhbnRlIMKrYXZhbnRpwrsgLyBzYWx2YSBlIHByb3NlZ3VpLlxuICAgICAqIFVzYXRvIHNvbG8gc2UgYG5leHRgIG5vbiDDqCB2YWxvcml6emF0by5cbiAgICAgKi9cbiAgICBzdWJtaXQ/OiBzdHJpbmc7XG4gICAgZmluaXNoPzogc3RyaW5nO1xuICAgIHNhdmU/OiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKlxuICogU3RhdG8gY29ycmVudGUgZGVsIHdpemFyZCwgZXNwb3N0byBkYWwgYFdpemFyZFN5bmNTZXJ2aWNlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVaVdpemFyZFN0YXRlIHtcbiAgLyoqIFN0ZXAgY29ycmVudGUgKDAtYmFzZWQpLiAqL1xuICBjdXJyZW50U3RlcDogbnVtYmVyO1xuICAvKiogTnVtZXJvIHRvdGFsZSBkaSBzdGVwLiAqL1xuICB0b3RhbFN0ZXBzOiBudW1iZXI7XG4gIC8qKiBJbmRpY2kgZGVnbGkgc3RlcCBjb21wbGV0YXRpLiAqL1xuICBjb21wbGV0ZWRTdGVwczogU2V0PG51bWJlcj47XG4gIC8qKiBJbmRpY2kgZGVnbGkgc3RlcCB2aXNpdGF0aS4gKi9cbiAgdmlzaXRlZFN0ZXBzOiBTZXQ8bnVtYmVyPjtcbiAgLyoqIFNlIGlsIGZvcm0gbmVsbG8gc3RlcCBjb3JyZW50ZSBlIHZhbGlkby4gKi9cbiAgaXNWYWxpZDogYm9vbGVhbjtcbiAgLyoqIEVycm9yaSBwZXIgc3RlcC4gKi9cbiAgc3RlcEVycm9yczogUmVjb3JkPG51bWJlciwgc3RyaW5nW10+O1xufVxuXG4vLyDilIDilIDilIAgU2NoZW1hIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIFNjaGVtYSBjb21wbGV0byBkZWwgZm9ybS5cbiAqXG4gKiBSYXBwcmVzZW50YSBsYSBjb25maWd1cmF6aW9uZSBkaWNoaWFyYXRpdmEgZGVsbCdpbnRlcm8gZm9ybTpcbiAqIHNlemlvbmksIGNhbXBpLCB2YWxpZGF6aW9uaSwgY29uZGl6aW9uaSBlIGltcG9zdGF6aW9uaSBnbG9iYWxpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBleHBvcnQgY29uc3QgbXlGb3JtOiBVaUZvcm1TY2hlbWEgPSB7XG4gKiAgIGlkOiAndXNlci1yZWdpc3RyYXRpb24nLFxuICogICB0aXRsZTogJ1JlZ2lzdHJhemlvbmUgdXRlbnRlJyxcbiAqICAgc2VjdGlvbnM6IFtcbiAqICAgICB7IGlkOiAncGVyc29uYWwnLCB0aXRsZTogJ0RhdGkgcGVyc29uYWxpJywgZmllbGRzOiBbLi4uXSB9LFxuICogICAgIHsgaWQ6ICdhZGRyZXNzJywgdGl0bGU6ICdJbmRpcml6em8nLCBmaWVsZHM6IFsuLi5dLCBjb2xsYXBzaWJsZTogdHJ1ZSB9LFxuICogICBdLFxuICogICBjb25maWc6IHsgY29sdW1uczogMTIsIHNob3dCdXR0b25zOiB0cnVlIH0sXG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVWlGb3JtU2NoZW1hIHtcbiAgLyoqIElEIHVuaXZvY28gZGVsIGZvcm0uICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBUaXRvbG8gZGVsIGZvcm0uICovXG4gIHRpdGxlPzogc3RyaW5nO1xuICAvKiogRGVzY3JpemlvbmUgZGVsIGZvcm0uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogU2V6aW9uaSBkZWwgZm9ybS4gKi9cbiAgc2VjdGlvbnM6IFVpRm9ybVNlY3Rpb25bXTtcbiAgLyoqIENvbmZpZ3VyYXppb25lIGdsb2JhbGUuICovXG4gIGNvbmZpZz86IFVpRm9ybUJ1aWxkZXJDb25maWc7XG59XG5cbi8vIOKUgOKUgOKUgCBUaXBpIGRpIHV0aWxpdGEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogRGF0aSBkZWwgZm9ybSBjb21lIG1hcHBhIGNoaWF2ZS12YWxvcmUuXG4gKi9cbmV4cG9ydCB0eXBlIFVpRm9ybURhdGEgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuXG4vKipcbiAqIEV2ZW50byBlbWVzc28gZGFpIGNhbXBpIGN1c3RvbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVaUZvcm1DdXN0b21FdmVudCB7XG4gIC8qKiBDaGlhdmUgZGVsIGNhbXBvIGNoZSBoYSBlbWVzc28gbCdldmVudG8uICovXG4gIGZpZWxkOiBzdHJpbmc7XG4gIC8qKiBOb21lIGRlbGwnZXZlbnRvLiAqL1xuICBldmVudDogc3RyaW5nO1xuICAvKiogRGF0aSBhc3NvY2lhdGkgYWxsJ2V2ZW50by4gKi9cbiAgZGF0YTogYW55O1xufVxuXG4vKipcbiAqIEV2ZW50byBlbWVzc28gYWwgY2FtYmlvIHN0ZXAgZGVsIHdpemFyZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVaVdpemFyZFN0ZXBDaGFuZ2VFdmVudCB7XG4gIC8qKiBJbmRpY2UgZGVsbG8gc3RlcCBkaSBwYXJ0ZW56YS4gKi9cbiAgZnJvbTogbnVtYmVyO1xuICAvKiogSW5kaWNlIGRlbGxvIHN0ZXAgZGkgZGVzdGluYXppb25lLiAqL1xuICB0bzogbnVtYmVyO1xuICAvKiogRGlyZXppb25lIGRlbGxhIG5hdmlnYXppb25lLiAqL1xuICBkaXJlY3Rpb246ICduZXh0JyB8ICdwcmV2aW91cyc7XG59XG5cbi8qKlxuICogRXZlbnRvIGVtZXNzbyBhbCBjb21wbGV0YW1lbnRvIGRpIHVubyBzdGVwLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVpV2l6YXJkU3RlcENvbXBsZXRlRXZlbnQge1xuICAvKiogSW5kaWNlIGRlbGxvIHN0ZXAgY29tcGxldGF0by4gKi9cbiAgc3RlcDogbnVtYmVyO1xuICAvKiogRGF0aSBkZWwgZm9ybSBhbCBtb21lbnRvIGRlbCBjb21wbGV0YW1lbnRvLiAqL1xuICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG4vKipcbiAqIE9wemlvbmkgcGVyIHtAbGluayBVaUZvcm1XaXphcmRDb21wb25lbnQucmVzdW1lQ29tcGxldGVkU3RlcHNGcm9tVmFsaWRhdGlvbn0uXG4gKiBQZXIgZGVmYXVsdCBpbCByZXN1bWUgYWdnaW9ybmEgc29sbyBsbyBzdGF0byBVSSAoYGNvbXBsZXRlZFN0ZXBzYCwgc3RlcCBjb3JyZW50ZSlcbiAqIHNlbnphIGVtZXR0ZXJlIGV2ZW50aSBkaSBzYWx2YXRhZ2dpbyBvIGNvbXBsZXRhbWVudG8gc3RlcC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVaVdpemFyZFJlc3VtZU9wdGlvbnMge1xuICAvKiogU2UgYHRydWVgLCBlbWV0dGUgYHN0ZXBDb21wbGV0ZWAgcGVyIG9nbmkgc3RlcCB2YWxpZGF0byBkdXJhbnRlIGxvIHNjYW4uIEBkZWZhdWx0IGZhbHNlICovXG4gIGVtaXRTdGVwQ29tcGxldGU/OiBib29sZWFuO1xuICAvKiogU2UgYHRydWVgLCBpbnZvY2EgYG9uU3RlcFNhdmVgIHBlciBvZ25pIHN0ZXAgdmFsaWRhdG8gZHVyYW50ZSBsbyBzY2FuLiBAZGVmYXVsdCBmYWxzZSAqL1xuICBlbWl0U3RlcFNhdmU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJpc3VsdGF0byBkaSB7QGxpbmsgVWlGb3JtV2l6YXJkQ29tcG9uZW50LnJlc3VtZUNvbXBsZXRlZFN0ZXBzRnJvbVZhbGlkYXRpb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVpV2l6YXJkUmVzdW1lUmVzdWx0IHtcbiAgLyoqIFVsdGltbyBpbmRpY2Ugc3RlcCAoMC1iYXNlZCkgbWFyY2F0byBjb21lIGNvbXBsZXRhdG87IGAtMWAgc2UgbmVzc3Vuby4gKi9cbiAgbGFzdENvbXBsZXRlZFN0ZXA6IG51bWJlcjtcbiAgLyoqIFN0ZXAgY29ycmVudGUgZG9wbyBpbCByZXN1bWUgKHByaW1vIG5vbiB2YWxpZG8gbyB1bHRpbW8gc2UgdHV0dGkgdmFsaWRpKS4gKi9cbiAgY3VycmVudFN0ZXA6IG51bWJlcjtcbn1cbiJdfQ==
|