@ecodev/natural 56.0.1 → 56.0.2
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/esm2022/lib/modules/avatar/component/avatar.component.mjs +1 -1
- package/esm2022/lib/modules/dropdown-components/type-date/type-date.component.mjs +1 -1
- package/esm2022/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +1 -1
- package/esm2022/lib/modules/dropdown-components/type-hierarchic-selector/type-hierarchic-selector.component.mjs +1 -1
- package/esm2022/lib/modules/dropdown-components/type-natural-select/type-natural-select.component.mjs +1 -1
- package/esm2022/lib/modules/dropdown-components/type-number/type-number.component.mjs +1 -1
- package/esm2022/lib/modules/dropdown-components/type-text/type-text.component.mjs +1 -1
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +1 -1
- package/esm2022/lib/modules/relations/relations.component.mjs +3 -3
- package/esm2022/lib/modules/search/input/input.component.mjs +1 -1
- package/esm2022/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +1 -1
- package/esm2022/lib/services/abstract-model.service.mjs +3 -3
- package/esm2022/lib/services/debounce.service.mjs +26 -7
- package/esm2022/lib/services/enum.service.mjs +1 -1
- package/esm2022/lib/services/link-mutation.service.mjs +1 -1
- package/fesm2022/ecodev-natural.mjs +29 -10
- package/fesm2022/ecodev-natural.mjs.map +1 -1
- package/lib/services/debounce.service.d.ts +10 -2
- package/package.json +1 -1
|
@@ -179,7 +179,7 @@ export class NaturalRelationsComponent extends NaturalAbstractController {
|
|
|
179
179
|
return this.hierarchicSelectorConfig.filter(c => !!c.selectableAtKey)[0].selectableAtKey;
|
|
180
180
|
}
|
|
181
181
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NaturalRelationsComponent, deps: [{ token: i1.NaturalLinkMutationService }, { token: i2.NaturalHierarchicSelectorDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
182
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: NaturalRelationsComponent, isStandalone: true, selector: "natural-relations", inputs: { service: "service", placeholder: "placeholder", autocompleteSelectorFilter: "autocompleteSelectorFilter", displayWith: "displayWith", disabled: "disabled", main: "main", hierarchicSelectorFilters: "hierarchicSelectorFilters", hierarchicSelectorConfig: "hierarchicSelectorConfig", otherName: "otherName", filter: "filter" }, outputs: { selectionChange: "selectionChange" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "select", first: true, predicate: NaturalSelectComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"body\">\n <ng-template #defaultNameCell let-item=\"item\">\n {{ getDisplayFn()(item) }}\n </ng-template>\n\n @if (dataSource) {\n <table [dataSource]=\"dataSource\" class=\"natural-row-click\" mat-table>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row style=\"display: none\"></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns\" mat-row></tr>\n <ng-container matColumnDef=\"name\">\n <th *matHeaderCellDef i18n mat-header-cell>Titre</th>\n <td *matCellDef=\"let item\" mat-cell>\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultNameCell\"\n />\n </td>\n </ng-container>\n <ng-container matColumnDef=\"unlink\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n @if (!disabled) {\n <button\n (click)=\"removeRelation(element)\"\n [disabled]=\"removing.has(element)\"\n color=\"warn\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Dissocier\"\n >\n <mat-icon naturalIcon=\"link_off\" />\n </button>\n }\n </td>\n </ng-container>\n </table>\n }\n\n @if (dataSource?.data && (dataSource?.data?.length || 0) > (dataSource?.data?.pageSize || 0)) {\n <mat-paginator\n (page)=\"pagination($event)\"\n [length]=\"dataSource?.data?.length || 0\"\n [pageIndex]=\"dataSource?.data?.pageIndex || 0\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [pageSize]=\"dataSource?.data?.pageSize || 0\"\n />\n }\n\n @if (!loading && dataSource?.data?.length === 0) {\n <div class=\"margin-v mat-body\">\n <span i18n>Aucun r\u00E9sultat</span>\n </div>\n }\n\n @if (loading) {\n <mat-progress-spinner [diameter]=\"40\" class=\"loading\" mode=\"indeterminate\" />\n }\n</div>\n\n@if (!hierarchicSelectorConfig && service && !disabled) {\n <natural-select\n (selectionChange)=\"addRelations([$event])\"\n [displayWith]=\"$any(getDisplayFn())\"\n [filter]=\"autocompleteSelectorFilter\"\n [placeholder]=\"placeholder\"\n [service]=\"service\"\n [showIcon]=\"false\"\n />\n}\n\n@if (hierarchicSelectorConfig && !disabled) {\n <div>\n <button (click)=\"openNaturalHierarchicSelector()\" color=\"primary\" mat-flat-button>{{ placeholder }}</button>\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .body{display:flex;flex-direction:column}:host .loading{margin:20px auto}:host .mat-column-unlink{width:2.5em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: NaturalSelectComponent, selector: "natural-select", inputs: ["service", "optionRequired", "searchField", "searchOperator", "filter", "disabled"] }] }); }
|
|
182
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.2", type: NaturalRelationsComponent, isStandalone: true, selector: "natural-relations", inputs: { service: "service", placeholder: "placeholder", autocompleteSelectorFilter: "autocompleteSelectorFilter", displayWith: "displayWith", disabled: "disabled", main: "main", hierarchicSelectorFilters: "hierarchicSelectorFilters", hierarchicSelectorConfig: "hierarchicSelectorConfig", otherName: "otherName", filter: "filter" }, outputs: { selectionChange: "selectionChange" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "select", first: true, predicate: NaturalSelectComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"body\">\n <ng-template #defaultNameCell let-item=\"item\">\n {{ getDisplayFn()(item) }}\n </ng-template>\n\n @if (dataSource) {\n <table [dataSource]=\"dataSource\" class=\"natural-row-click\" mat-table>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row style=\"display: none\"></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns\" mat-row></tr>\n\n <ng-container matColumnDef=\"name\">\n <th *matHeaderCellDef i18n mat-header-cell>Titre</th>\n <td *matCellDef=\"let item\" mat-cell>\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultNameCell\"\n />\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"unlink\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n @if (!disabled) {\n <button\n (click)=\"removeRelation(element)\"\n [disabled]=\"removing.has(element)\"\n color=\"warn\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Dissocier\"\n >\n <mat-icon naturalIcon=\"link_off\" />\n </button>\n }\n </td>\n </ng-container>\n </table>\n }\n\n @if (dataSource?.data && (dataSource?.data?.length || 0) > (dataSource?.data?.pageSize || 0)) {\n <mat-paginator\n (page)=\"pagination($event)\"\n [length]=\"dataSource?.data?.length || 0\"\n [pageIndex]=\"dataSource?.data?.pageIndex || 0\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [pageSize]=\"dataSource?.data?.pageSize || 0\"\n />\n }\n\n @if (!loading && dataSource?.data?.length === 0) {\n <div class=\"margin-v mat-body\">\n <span i18n>Aucun r\u00E9sultat</span>\n </div>\n }\n\n @if (loading) {\n <mat-progress-spinner [diameter]=\"40\" class=\"loading\" mode=\"indeterminate\" />\n }\n</div>\n\n@if (!hierarchicSelectorConfig && service && !disabled) {\n <natural-select\n (selectionChange)=\"addRelations([$event])\"\n [displayWith]=\"$any(getDisplayFn())\"\n [filter]=\"autocompleteSelectorFilter\"\n [placeholder]=\"placeholder\"\n [service]=\"service\"\n [showIcon]=\"false\"\n />\n}\n\n@if (hierarchicSelectorConfig && !disabled) {\n <div>\n <button (click)=\"openNaturalHierarchicSelector()\" color=\"primary\" mat-flat-button>{{ placeholder }}</button>\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .body{display:flex;flex-direction:column}:host .loading{margin:20px auto}:host .mat-column-unlink{width:2.5em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: NaturalSelectComponent, selector: "natural-select", inputs: ["service", "optionRequired", "searchField", "searchOperator", "filter", "disabled"] }] }); }
|
|
183
183
|
}
|
|
184
184
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: NaturalRelationsComponent, decorators: [{
|
|
185
185
|
type: Component,
|
|
@@ -193,7 +193,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
|
|
|
193
193
|
MatPaginatorModule,
|
|
194
194
|
MatProgressSpinnerModule,
|
|
195
195
|
NaturalSelectComponent,
|
|
196
|
-
], template: "<div class=\"body\">\n <ng-template #defaultNameCell let-item=\"item\">\n {{ getDisplayFn()(item) }}\n </ng-template>\n\n @if (dataSource) {\n <table [dataSource]=\"dataSource\" class=\"natural-row-click\" mat-table>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row style=\"display: none\"></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns\" mat-row></tr>\n <ng-container matColumnDef=\"name\">\n <th *matHeaderCellDef i18n mat-header-cell>Titre</th>\n <td *matCellDef=\"let item\" mat-cell>\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultNameCell\"\n />\n </td>\n </ng-container>\n <ng-container matColumnDef=\"unlink\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n @if (!disabled) {\n <button\n (click)=\"removeRelation(element)\"\n [disabled]=\"removing.has(element)\"\n color=\"warn\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Dissocier\"\n >\n <mat-icon naturalIcon=\"link_off\" />\n </button>\n }\n </td>\n </ng-container>\n </table>\n }\n\n @if (dataSource?.data && (dataSource?.data?.length || 0) > (dataSource?.data?.pageSize || 0)) {\n <mat-paginator\n (page)=\"pagination($event)\"\n [length]=\"dataSource?.data?.length || 0\"\n [pageIndex]=\"dataSource?.data?.pageIndex || 0\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [pageSize]=\"dataSource?.data?.pageSize || 0\"\n />\n }\n\n @if (!loading && dataSource?.data?.length === 0) {\n <div class=\"margin-v mat-body\">\n <span i18n>Aucun r\u00E9sultat</span>\n </div>\n }\n\n @if (loading) {\n <mat-progress-spinner [diameter]=\"40\" class=\"loading\" mode=\"indeterminate\" />\n }\n</div>\n\n@if (!hierarchicSelectorConfig && service && !disabled) {\n <natural-select\n (selectionChange)=\"addRelations([$event])\"\n [displayWith]=\"$any(getDisplayFn())\"\n [filter]=\"autocompleteSelectorFilter\"\n [placeholder]=\"placeholder\"\n [service]=\"service\"\n [showIcon]=\"false\"\n />\n}\n\n@if (hierarchicSelectorConfig && !disabled) {\n <div>\n <button (click)=\"openNaturalHierarchicSelector()\" color=\"primary\" mat-flat-button>{{ placeholder }}</button>\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .body{display:flex;flex-direction:column}:host .loading{margin:20px auto}:host .mat-column-unlink{width:2.5em}\n"] }]
|
|
196
|
+
], template: "<div class=\"body\">\n <ng-template #defaultNameCell let-item=\"item\">\n {{ getDisplayFn()(item) }}\n </ng-template>\n\n @if (dataSource) {\n <table [dataSource]=\"dataSource\" class=\"natural-row-click\" mat-table>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row style=\"display: none\"></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns\" mat-row></tr>\n\n <ng-container matColumnDef=\"name\">\n <th *matHeaderCellDef i18n mat-header-cell>Titre</th>\n <td *matCellDef=\"let item\" mat-cell>\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultNameCell\"\n />\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"unlink\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n @if (!disabled) {\n <button\n (click)=\"removeRelation(element)\"\n [disabled]=\"removing.has(element)\"\n color=\"warn\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Dissocier\"\n >\n <mat-icon naturalIcon=\"link_off\" />\n </button>\n }\n </td>\n </ng-container>\n </table>\n }\n\n @if (dataSource?.data && (dataSource?.data?.length || 0) > (dataSource?.data?.pageSize || 0)) {\n <mat-paginator\n (page)=\"pagination($event)\"\n [length]=\"dataSource?.data?.length || 0\"\n [pageIndex]=\"dataSource?.data?.pageIndex || 0\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [pageSize]=\"dataSource?.data?.pageSize || 0\"\n />\n }\n\n @if (!loading && dataSource?.data?.length === 0) {\n <div class=\"margin-v mat-body\">\n <span i18n>Aucun r\u00E9sultat</span>\n </div>\n }\n\n @if (loading) {\n <mat-progress-spinner [diameter]=\"40\" class=\"loading\" mode=\"indeterminate\" />\n }\n</div>\n\n@if (!hierarchicSelectorConfig && service && !disabled) {\n <natural-select\n (selectionChange)=\"addRelations([$event])\"\n [displayWith]=\"$any(getDisplayFn())\"\n [filter]=\"autocompleteSelectorFilter\"\n [placeholder]=\"placeholder\"\n [service]=\"service\"\n [showIcon]=\"false\"\n />\n}\n\n@if (hierarchicSelectorConfig && !disabled) {\n <div>\n <button (click)=\"openNaturalHierarchicSelector()\" color=\"primary\" mat-flat-button>{{ placeholder }}</button>\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .body{display:flex;flex-direction:column}:host .loading{margin:20px auto}:host .mat-column-unlink{width:2.5em}\n"] }]
|
|
197
197
|
}], ctorParameters: () => [{ type: i1.NaturalLinkMutationService }, { type: i2.NaturalHierarchicSelectorDialogService }], propDecorators: { select: [{
|
|
198
198
|
type: ViewChild,
|
|
199
199
|
args: [NaturalSelectComponent]
|
|
@@ -224,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
|
|
|
224
224
|
}], filter: [{
|
|
225
225
|
type: Input
|
|
226
226
|
}] } });
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3JlbGF0aW9ucy9yZWxhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvcmVsYXRpb25zL3JlbGF0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBWSxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzFFLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxpQkFBaUIsRUFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsNEJBQTRCLEVBQWtDLE1BQU0sc0NBQXNDLENBQUM7QUFNbkgsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGVBQWUs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T0FDeEIsc0JBQXNCOzsyRkFHakIseUJBQXlCO2tCQWpCckMsU0FBUzsrQkFDSSxtQkFBbUIsY0FHakIsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIsd0JBQXdCO3dCQUN4QixzQkFBc0I7cUJBQ3pCO29KQW1CMEMsTUFBTTtzQkFBaEQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBQ0MsWUFBWTtzQkFBN0MsWUFBWTt1QkFBQyxXQUFXO2dCQUVULE9BQU87c0JBQXRCLEtBQUs7Z0JBS1UsV0FBVztzQkFBMUIsS0FBSztnQkFLVSwwQkFBMEI7c0JBQXpDLEtBQUs7Z0JBS1UsV0FBVztzQkFBMUIsS0FBSztnQkFLVSxRQUFRO3NCQUF2QixLQUFLO2dCQUswQixJQUFJO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFLRyxlQUFlO3NCQUF4QyxNQUFNO2dCQUtTLHlCQUF5QjtzQkFBeEMsS0FBSztnQkFLVSx3QkFBd0I7c0JBQXZDLEtBQUs7Z0JBS1UsU0FBUztzQkFBeEIsS0FBSztnQkF3Q0ssTUFBTTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BhZ2VFdmVudCwgTWF0UGFnaW5hdG9yTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHtmb3JrSm9pbiwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0Q29udHJvbGxlcn0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9hYnN0cmFjdC1jb250cm9sbGVyJztcbmltcG9ydCB7TmF0dXJhbERhdGFTb3VyY2UsIFBhZ2luYXRlZERhdGF9IGZyb20gJy4uLy4uL2NsYXNzZXMvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyLCBQYWdpbmF0aW9uSW5wdXQsIFF1ZXJ5VmFyaWFibGVzfSBmcm9tICcuLi8uLi9jbGFzc2VzL3F1ZXJ5LXZhcmlhYmxlLW1hbmFnZXInO1xuaW1wb3J0IHtIaWVyYXJjaGljRmlsdGVyc0NvbmZpZ3VyYXRpb259IGZyb20gJy4uLy4uL21vZHVsZXMvaGllcmFyY2hpYy1zZWxlY3Rvci9jbGFzc2VzL2hpZXJhcmNoaWMtZmlsdGVycy1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7TGlua2FibGVPYmplY3QsIE5hdHVyYWxMaW5rTXV0YXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9saW5rLW11dGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL2hpZXJhcmNoaWMtc2VsZWN0b3IvY2xhc3Nlcy9oaWVyYXJjaGljLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtIaWVyYXJjaGljRGlhbG9nQ29uZmlnfSBmcm9tICcuLi9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge05hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHtOYXR1cmFsU2VsZWN0Q29tcG9uZW50fSBmcm9tICcuLi9zZWxlY3Qvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHtmaW5hbGl6ZSwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWJzdHJhY3QtbW9kZWwuc2VydmljZSc7XG5pbXBvcnQge0V4dHJhY3RUYWxsT25lLCBFeHRyYWN0VmFsbH0gZnJvbSAnLi4vLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHtOYXR1cmFsSWNvbkRpcmVjdGl2ZX0gZnJvbSAnLi4vaWNvbi9pY29uLmRpcmVjdGl2ZSc7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtNYXRUb29sdGlwTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtNYXRUYWJsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQ3VzdG9tIHRlbXBsYXRlIHVzYWdlIDpcbiAqIDxuYXR1cmFsLXJlbGF0aW9ucyBbbWFpbl09XCJvd25lclwiIFtzZXJ2aWNlXT1cInN2Y1wiIFtmaWx0ZXJdPVwie31cIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhbiBpdGVtXCI+XG4gKiAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICogICAgICAgICA8c3Bhbj57eyBpdGVtLnh4eCB9fTwvc3Bhbj5cbiAqICAgICA8L25nLXRlbXBsYXRlPlxuICogPC9uYXR1cmFsLXJlbGF0aW9ucz5cbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtcmVsYXRpb25zJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVsYXRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZWxhdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBOYXR1cmFsSWNvbkRpcmVjdGl2ZSxcbiAgICAgICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgICAgIE5hdHVyYWxTZWxlY3RDb21wb25lbnQsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFJlbGF0aW9uc0NvbXBvbmVudDxcbiAgICAgICAgVFNlcnZpY2UgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgUGFnaW5hdGVkRGF0YTxMaW5rYWJsZU9iamVjdD4sXG4gICAgICAgICAgICBRdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgdW5rbm93bixcbiAgICAgICAgICAgIGFueVxuICAgICAgICA+LFxuICAgID5cbiAgICBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgICBAVmlld0NoaWxkKE5hdHVyYWxTZWxlY3RDb21wb25lbnQpIHByaXZhdGUgc2VsZWN0PzogTmF0dXJhbFNlbGVjdENvbXBvbmVudDxUU2VydmljZT47XG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgcHVibGljIGl0ZW1UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgQElucHV0KCkgcHVibGljIHNlcnZpY2U/OiBUU2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBwbGFjZWhvbGRlciB1c2VkIGluIHRoZSBidXR0b24gdG8gYWRkIGEgbmV3IHJlbGF0aW9uXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgZm9yIGF1dG9jb21wbGV0ZSBzZWxlY3RvclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvY29tcGxldGVTZWxlY3RvckZpbHRlcj86IEV4dHJhY3RWYWxsPFRTZXJ2aWNlPlsnZmlsdGVyJ10gfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gY3VzdG9taXplIHRoZSByZW5kZXJpbmcgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gYXMgdGV4dCBpbiBpbnB1dFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5V2l0aD86IChpdGVtOiBFeHRyYWN0VGFsbE9uZTxUU2VydmljZT4gfCBudWxsKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSByZWxhdGlvbnMgY2FuIGJlIGNoYW5nZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBtYWluIG9iamVjdCB0byB3aGljaCBhbGwgcmVsYXRpb25zIGJlbG9uZyB0b1xuICAgICAqL1xuICAgIEBJbnB1dCh7cmVxdWlyZWQ6IHRydWV9KSBwdWJsaWMgbWFpbiE6IExpbmthYmxlT2JqZWN0ICYge3Blcm1pc3Npb25zPzoge3VwZGF0ZTogYm9vbGVhbn19O1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYWZ0ZXIgcmVsYXRpb25zIHdlcmUgc3VjY2Vzc2Z1bGx5IGFkZGVkIG9uIHRoZSBzZXJ2ZXJcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlcnMgZm9yIGhpZXJhcmNoaWMgc2VsZWN0b3JcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaGllcmFyY2hpY1NlbGVjdG9yRmlsdGVycz86IEhpZXJhcmNoaWNGaWx0ZXJzQ29uZmlndXJhdGlvbiB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGluIGNhc2Ugd2UgcHJlZmVyIGhpZXJhcmNoaWMgc2VsZWN0aW9uIG92ZXIgYXV0b2NvbXBsZXRlIHNlbGVjdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBoaWVyYXJjaGljU2VsZWN0b3JDb25maWc/OiBOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb25bXTtcblxuICAgIC8qKlxuICAgICAqIExpbmsgbXV0YXRpb24gc2VtYW50aWNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgb3RoZXJOYW1lPzogc3RyaW5nIHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIExpc3Rpbmcgc2VydmljZSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBkYXRhU291cmNlPzogTmF0dXJhbERhdGFTb3VyY2U8UGFnaW5hdGVkRGF0YTxMaW5rYWJsZU9iamVjdD4+O1xuICAgIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUYWJsZSBjb2x1bW5zXG4gICAgICovXG4gICAgcHVibGljIGRpc3BsYXllZENvbHVtbnMgPSBbJ25hbWUnXTtcblxuICAgIHB1YmxpYyByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBbNSwgMjUsIDUwLCAxMDBdO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0UGFnaW5hdGlvbiA9IHtcbiAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICBwYWdlU2l6ZTogMjUsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIE9ic2VydmFibGUgdmFyaWFibGVzL29wdGlvbnMgZm9yIGxpc3Rpbmcgc2VydmljZSB1c2FnZSBhbmQgYXBvbGxvIHdhdGNoUXVlcnlcbiAgICAgKi9cbiAgICBwcml2YXRlIHZhcmlhYmxlc01hbmFnZXIgPSBuZXcgTmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlcjxRdWVyeVZhcmlhYmxlcz4oKTtcblxuICAgIHB1YmxpYyByZWFkb25seSByZW1vdmluZyA9IG5ldyBTZXQ8TGlua2FibGVPYmplY3Q+KCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbGlua011dGF0aW9uU2VydmljZTogTmF0dXJhbExpbmtNdXRhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nOiBOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZmlsdGVyIHVzZWQgdG8gZmlsdGVyIHJlbGF0aW9uc1xuICAgICAqXG4gICAgICogU28gaWYgdGhlIHJlbGF0aW9ucyBhcmUgZnJvbSBvbmUgYWN0aW9uIC0+IHRvIG1hbnkgb2JqZWN0aXZlcywgdGhlbiB0aGUgZmlsdGVyIG11c3QgZmlsdGVyXG4gICAgICogdGhlIG9iamVjdGl2ZXMgdGhhdCBoYXZlIGluZGVlZCBhIHJlbGF0aW9uIHRvIHRoZSBwYXJ0aWN1bGFyIGFjdGlvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZmlsdGVyKGZpbHRlcjogRXh0cmFjdFZhbGw8VFNlcnZpY2U+WydmaWx0ZXInXSkge1xuICAgICAgICB0aGlzLnZhcmlhYmxlc01hbmFnZXIuc2V0KCdyZWxhdGlvbnMtZmlsdGVyJywge2ZpbHRlcjogZmlsdGVyfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5SXRlbXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkICYmIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5pbmNsdWRlcygndW5saW5rJykpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5wb3AoKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluY2x1ZGVzKCd1bmxpbmsnKSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goJ3VubGluaycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24oKTtcblxuICAgICAgICAvLyBGb3JjZSBkaXNhYmxlZCBpZiBjYW5ub3QgdXBkYXRlIG9iamVjdFxuICAgICAgICBpZiAodGhpcy5tYWluICYmIHRoaXMubWFpbi5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMubWFpbi5wZXJtaXNzaW9ucy51cGRhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbmxpbmsgYWN0aW9uXG4gICAgICogUmVmZXRjaCByZXN1bHQgdG8gZGlzcGxheSBpdCBpbiB0YWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVSZWxhdGlvbihyZWxhdGlvbjogTGlua2FibGVPYmplY3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmluZy5hZGQocmVsYXRpb24pO1xuXG4gICAgICAgIHRoaXMubGlua011dGF0aW9uU2VydmljZVxuICAgICAgICAgICAgLnVubGluayh0aGlzLm1haW4sIHJlbGF0aW9uLCB0aGlzLm90aGVyTmFtZSlcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMucmVtb3ZpbmcuZGVsZXRlKHJlbGF0aW9uKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGF0YVNvdXJjZT8ucmVtb3ZlKHJlbGF0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGluayBhY3Rpb25cbiAgICAgKiBSZWZldGNoIHJlc3VsdCB0byBkaXNwbGF5IGl0IGluIHRhYmxlXG4gICAgICogVE9ETyA6IGNvdWxkIG1heWJlIHVzZSBcInVwZGF0ZVwiIGF0dHJpYnV0ZSBvZiBhcG9sbG8ubXV0YXRlIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0YWJsZSBmYXN0ZXIgKGJ1dCBoYXJkIHRvIGRvIGl0IGhlcmUpXG4gICAgICovXG4gICAgcHVibGljIGFkZFJlbGF0aW9ucyhyZWxhdGlvbnM6IChMaW5rYWJsZU9iamVjdCB8IEV4dHJhY3RUYWxsT25lPFRTZXJ2aWNlPiB8IHN0cmluZyB8IG51bGwpW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZXMgPSByZWxhdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlbGF0aW9uKTogcmVsYXRpb24gaXMgTGlua2FibGVPYmplY3QgPT4gISFyZWxhdGlvbiAmJiB0eXBlb2YgcmVsYXRpb24gPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgLm1hcChyZWxhdGlvbiA9PiB0aGlzLmxpbmtNdXRhdGlvblNlcnZpY2UubGluayh0aGlzLm1haW4sIHJlbGF0aW9uLCB0aGlzLm90aGVyTmFtZSkpO1xuXG4gICAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCgpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Q/LmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYWdpbmF0aW9uKGV2ZW50PzogUGFnZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGxldCBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uSW5wdXQgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQgJiZcbiAgICAgICAgICAgIChldmVudC5wYWdlSW5kZXggIT09IHRoaXMuZGVmYXVsdFBhZ2luYXRpb24ucGFnZUluZGV4IHx8IGV2ZW50LnBhZ2VTaXplICE9PSB0aGlzLmRlZmF1bHRQYWdpbmF0aW9uLnBhZ2VTaXplKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHBhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiBldmVudC5wYWdlSW5kZXgsXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IGV2ZW50LnBhZ2VTaXplLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3BhZ2luYXRpb24nLCB7cGFnaW5hdGlvbjogcGFnaW5hdGlvbiA/IHBhZ2luYXRpb24gOiB0aGlzLmRlZmF1bHRQYWdpbmF0aW9ufSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERpc3BsYXlGbigpOiAoaXRlbTogRXh0cmFjdFRhbGxPbmU8VFNlcnZpY2U+IHwgbnVsbCkgPT4gc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheVdpdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlXaXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChpdGVtOiBhbnkpID0+IChpdGVtID8gaXRlbS5mdWxsTmFtZSB8fCBpdGVtLm5hbWUgOiAnJyk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5OYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RBdEtleSA9IHRoaXMuZ2V0U2VsZWN0S2V5KCk7XG5cbiAgICAgICAgaWYgKCFzZWxlY3RBdEtleSB8fCAhdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0ge307XG5cbiAgICAgICAgY29uc3QgaGllcmFyY2hpY0NvbmZpZzogSGllcmFyY2hpY0RpYWxvZ0NvbmZpZyA9IHtcbiAgICAgICAgICAgIGhpZXJhcmNoaWNDb25maWc6IHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnLFxuICAgICAgICAgICAgaGllcmFyY2hpY1NlbGVjdGlvbjogc2VsZWN0ZWQsXG4gICAgICAgICAgICBoaWVyYXJjaGljRmlsdGVyczogdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JGaWx0ZXJzLFxuICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dcbiAgICAgICAgICAgIC5vcGVuKGhpZXJhcmNoaWNDb25maWcpXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQ/LmhpZXJhcmNoaWNTZWxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSByZXN1bHQuaGllcmFyY2hpY1NlbGVjdGlvbltzZWxlY3RBdEtleV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFJlbGF0aW9ucyhzZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGxpc3QgZnJvbSBkYXRhYmFzZVxuICAgICAqL1xuICAgIHByaXZhdGUgcXVlcnlJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IHF1ZXJ5UmVmID0gdGhpcy5zZXJ2aWNlLndhdGNoQWxsKHRoaXMudmFyaWFibGVzTWFuYWdlcikucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgICAgICAgdGFwKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBOYXR1cmFsRGF0YVNvdXJjZShxdWVyeVJlZik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RLZXkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnLmZpbHRlcihjID0+ICEhYy5zZWxlY3RhYmxlQXRLZXkpWzBdLnNlbGVjdGFibGVBdEtleTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYm9keVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE5hbWVDZWxsIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgICAgICB7eyBnZXREaXNwbGF5Rm4oKShpdGVtKSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICBAaWYgKGRhdGFTb3VyY2UpIHtcbiAgICAgICAgPHRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBjbGFzcz1cIm5hdHVyYWwtcm93LWNsaWNrXCIgbWF0LXRhYmxlPlxuICAgICAgICAgICAgPHRyICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCIgbWF0LWhlYWRlci1yb3cgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+PC90cj5cbiAgICAgICAgICAgIDx0ciAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiIG1hdC1yb3c+PC90cj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibmFtZVwiPlxuICAgICAgICAgICAgICAgIDx0aCAqbWF0SGVhZGVyQ2VsbERlZiBpMThuIG1hdC1oZWFkZXItY2VsbD5UaXRyZTwvdGg+XG4gICAgICAgICAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IGl0ZW1cIiBtYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UZW1wbGF0ZSA/IGl0ZW1UZW1wbGF0ZSA6IGRlZmF1bHROYW1lQ2VsbFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ1bmxpbmtcIj5cbiAgICAgICAgICAgICAgICA8dGggKm1hdEhlYWRlckNlbGxEZWYgbWF0LWhlYWRlci1jZWxsPjwvdGg+XG4gICAgICAgICAgICAgICAgPHRkICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBtYXQtY2VsbD5cbiAgICAgICAgICAgICAgICAgICAgQGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlUmVsYXRpb24oZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyZW1vdmluZy5oYXMoZWxlbWVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRpc3NvY2llclwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG5hdHVyYWxJY29uPVwibGlua19vZmZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdGFibGU+XG4gICAgfVxuXG4gICAgQGlmIChkYXRhU291cmNlPy5kYXRhICYmIChkYXRhU291cmNlPy5kYXRhPy5sZW5ndGggfHwgMCkgPiAoZGF0YVNvdXJjZT8uZGF0YT8ucGFnZVNpemUgfHwgMCkpIHtcbiAgICAgICAgPG1hdC1wYWdpbmF0b3JcbiAgICAgICAgICAgIChwYWdlKT1cInBhZ2luYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICBbbGVuZ3RoXT1cImRhdGFTb3VyY2U/LmRhdGE/Lmxlbmd0aCB8fCAwXCJcbiAgICAgICAgICAgIFtwYWdlSW5kZXhdPVwiZGF0YVNvdXJjZT8uZGF0YT8ucGFnZUluZGV4IHx8IDBcIlxuICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIlxuICAgICAgICAgICAgW3BhZ2VTaXplXT1cImRhdGFTb3VyY2U/LmRhdGE/LnBhZ2VTaXplIHx8IDBcIlxuICAgICAgICAvPlxuICAgIH1cblxuICAgIEBpZiAoIWxvYWRpbmcgJiYgZGF0YVNvdXJjZT8uZGF0YT8ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYXJnaW4tdiBtYXQtYm9keVwiPlxuICAgICAgICAgICAgPHNwYW4gaTE4bj5BdWN1biByw6lzdWx0YXQ8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAobG9hZGluZykge1xuICAgICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgW2RpYW1ldGVyXT1cIjQwXCIgY2xhc3M9XCJsb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAvPlxuICAgIH1cbjwvZGl2PlxuXG5AaWYgKCFoaWVyYXJjaGljU2VsZWN0b3JDb25maWcgJiYgc2VydmljZSAmJiAhZGlzYWJsZWQpIHtcbiAgICA8bmF0dXJhbC1zZWxlY3RcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJhZGRSZWxhdGlvbnMoWyRldmVudF0pXCJcbiAgICAgICAgW2Rpc3BsYXlXaXRoXT1cIiRhbnkoZ2V0RGlzcGxheUZuKCkpXCJcbiAgICAgICAgW2ZpbHRlcl09XCJhdXRvY29tcGxldGVTZWxlY3RvckZpbHRlclwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFtzZXJ2aWNlXT1cInNlcnZpY2VcIlxuICAgICAgICBbc2hvd0ljb25dPVwiZmFsc2VcIlxuICAgIC8+XG59XG5cbkBpZiAoaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnICYmICFkaXNhYmxlZCkge1xuICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9wZW5OYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yKClcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtZmxhdC1idXR0b24+e3sgcGxhY2Vob2xkZXIgfX08L2J1dHRvbj5cbiAgICA8L2Rpdj5cbn1cbiJdfQ==
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3JlbGF0aW9ucy9yZWxhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvcmVsYXRpb25zL3JlbGF0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBWSxrQkFBa0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzFFLE9BQU8sRUFBQyxRQUFRLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyxpQkFBaUIsRUFBZ0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRSxPQUFPLEVBQUMsNEJBQTRCLEVBQWtDLE1BQU0sc0NBQXNDLENBQUM7QUFNbkgsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGVBQWUs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T0FDeEIsc0JBQXNCOzsyRkFHakIseUJBQXlCO2tCQWpCckMsU0FBUzsrQkFDSSxtQkFBbUIsY0FHakIsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIsd0JBQXdCO3dCQUN4QixzQkFBc0I7cUJBQ3pCO29KQW1CMEMsTUFBTTtzQkFBaEQsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBQ0MsWUFBWTtzQkFBN0MsWUFBWTt1QkFBQyxXQUFXO2dCQUVULE9BQU87c0JBQXRCLEtBQUs7Z0JBS1UsV0FBVztzQkFBMUIsS0FBSztnQkFLVSwwQkFBMEI7c0JBQXpDLEtBQUs7Z0JBS1UsV0FBVztzQkFBMUIsS0FBSztnQkFLVSxRQUFRO3NCQUF2QixLQUFLO2dCQUswQixJQUFJO3NCQUFuQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFLRyxlQUFlO3NCQUF4QyxNQUFNO2dCQUtTLHlCQUF5QjtzQkFBeEMsS0FBSztnQkFLVSx3QkFBd0I7c0JBQXZDLEtBQUs7Z0JBS1UsU0FBUztzQkFBeEIsS0FBSztnQkF3Q0ssTUFBTTtzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BhZ2VFdmVudCwgTWF0UGFnaW5hdG9yTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHtmb3JrSm9pbiwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TmF0dXJhbEFic3RyYWN0Q29udHJvbGxlcn0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9hYnN0cmFjdC1jb250cm9sbGVyJztcbmltcG9ydCB7TmF0dXJhbERhdGFTb3VyY2UsIFBhZ2luYXRlZERhdGF9IGZyb20gJy4uLy4uL2NsYXNzZXMvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHtOYXR1cmFsUXVlcnlWYXJpYWJsZXNNYW5hZ2VyLCBQYWdpbmF0aW9uSW5wdXQsIFF1ZXJ5VmFyaWFibGVzfSBmcm9tICcuLi8uLi9jbGFzc2VzL3F1ZXJ5LXZhcmlhYmxlLW1hbmFnZXInO1xuaW1wb3J0IHtIaWVyYXJjaGljRmlsdGVyc0NvbmZpZ3VyYXRpb259IGZyb20gJy4uLy4uL21vZHVsZXMvaGllcmFyY2hpYy1zZWxlY3Rvci9jbGFzc2VzL2hpZXJhcmNoaWMtZmlsdGVycy1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7TGlua2FibGVPYmplY3QsIE5hdHVyYWxMaW5rTXV0YXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9saW5rLW11dGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL2hpZXJhcmNoaWMtc2VsZWN0b3IvY2xhc3Nlcy9oaWVyYXJjaGljLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtIaWVyYXJjaGljRGlhbG9nQ29uZmlnfSBmcm9tICcuLi9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge05hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlfSBmcm9tICcuLi9oaWVyYXJjaGljLXNlbGVjdG9yL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nL2hpZXJhcmNoaWMtc2VsZWN0b3ItZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHtOYXR1cmFsU2VsZWN0Q29tcG9uZW50fSBmcm9tICcuLi9zZWxlY3Qvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHtmaW5hbGl6ZSwgdGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge05hdHVyYWxBYnN0cmFjdE1vZGVsU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWJzdHJhY3QtbW9kZWwuc2VydmljZSc7XG5pbXBvcnQge0V4dHJhY3RUYWxsT25lLCBFeHRyYWN0VmFsbH0gZnJvbSAnLi4vLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHtNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHtOYXR1cmFsSWNvbkRpcmVjdGl2ZX0gZnJvbSAnLi4vaWNvbi9pY29uLmRpcmVjdGl2ZSc7XG5pbXBvcnQge01hdEljb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtNYXRUb29sdGlwTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtNYXRUYWJsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQ3VzdG9tIHRlbXBsYXRlIHVzYWdlIDpcbiAqIDxuYXR1cmFsLXJlbGF0aW9ucyBbbWFpbl09XCJvd25lclwiIFtzZXJ2aWNlXT1cInN2Y1wiIFtmaWx0ZXJdPVwie31cIiBwbGFjZWhvbGRlcj1cIlNlbGVjdCBhbiBpdGVtXCI+XG4gKiAgICAgPG5nLXRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICogICAgICAgICA8c3Bhbj57eyBpdGVtLnh4eCB9fTwvc3Bhbj5cbiAqICAgICA8L25nLXRlbXBsYXRlPlxuICogPC9uYXR1cmFsLXJlbGF0aW9ucz5cbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtcmVsYXRpb25zJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVsYXRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9yZWxhdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBOYXR1cmFsSWNvbkRpcmVjdGl2ZSxcbiAgICAgICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgICAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgICAgIE5hdHVyYWxTZWxlY3RDb21wb25lbnQsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF0dXJhbFJlbGF0aW9uc0NvbXBvbmVudDxcbiAgICAgICAgVFNlcnZpY2UgZXh0ZW5kcyBOYXR1cmFsQWJzdHJhY3RNb2RlbFNlcnZpY2U8XG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgUGFnaW5hdGVkRGF0YTxMaW5rYWJsZU9iamVjdD4sXG4gICAgICAgICAgICBRdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgICAgIHVua25vd24sXG4gICAgICAgICAgICBhbnksXG4gICAgICAgICAgICB1bmtub3duLFxuICAgICAgICAgICAgYW55LFxuICAgICAgICAgICAgdW5rbm93bixcbiAgICAgICAgICAgIGFueVxuICAgICAgICA+LFxuICAgID5cbiAgICBleHRlbmRzIE5hdHVyYWxBYnN0cmFjdENvbnRyb2xsZXJcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3lcbntcbiAgICBAVmlld0NoaWxkKE5hdHVyYWxTZWxlY3RDb21wb25lbnQpIHByaXZhdGUgc2VsZWN0PzogTmF0dXJhbFNlbGVjdENvbXBvbmVudDxUU2VydmljZT47XG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgcHVibGljIGl0ZW1UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gICAgQElucHV0KCkgcHVibGljIHNlcnZpY2U/OiBUU2VydmljZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBwbGFjZWhvbGRlciB1c2VkIGluIHRoZSBidXR0b24gdG8gYWRkIGEgbmV3IHJlbGF0aW9uXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXIgZm9yIGF1dG9jb21wbGV0ZSBzZWxlY3RvclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvY29tcGxldGVTZWxlY3RvckZpbHRlcj86IEV4dHJhY3RWYWxsPFRTZXJ2aWNlPlsnZmlsdGVyJ10gfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogRnVuY3Rpb24gdG8gY3VzdG9taXplIHRoZSByZW5kZXJpbmcgb2YgdGhlIHNlbGVjdGVkIGl0ZW0gYXMgdGV4dCBpbiBpbnB1dFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5V2l0aD86IChpdGVtOiBFeHRyYWN0VGFsbE9uZTxUU2VydmljZT4gfCBudWxsKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSByZWxhdGlvbnMgY2FuIGJlIGNoYW5nZWRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBtYWluIG9iamVjdCB0byB3aGljaCBhbGwgcmVsYXRpb25zIGJlbG9uZyB0b1xuICAgICAqL1xuICAgIEBJbnB1dCh7cmVxdWlyZWQ6IHRydWV9KSBwdWJsaWMgbWFpbiE6IExpbmthYmxlT2JqZWN0ICYge3Blcm1pc3Npb25zPzoge3VwZGF0ZTogYm9vbGVhbn19O1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYWZ0ZXIgcmVsYXRpb25zIHdlcmUgc3VjY2Vzc2Z1bGx5IGFkZGVkIG9uIHRoZSBzZXJ2ZXJcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEZpbHRlcnMgZm9yIGhpZXJhcmNoaWMgc2VsZWN0b3JcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgaGllcmFyY2hpY1NlbGVjdG9yRmlsdGVycz86IEhpZXJhcmNoaWNGaWx0ZXJzQ29uZmlndXJhdGlvbiB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGluIGNhc2Ugd2UgcHJlZmVyIGhpZXJhcmNoaWMgc2VsZWN0aW9uIG92ZXIgYXV0b2NvbXBsZXRlIHNlbGVjdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBoaWVyYXJjaGljU2VsZWN0b3JDb25maWc/OiBOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb25bXTtcblxuICAgIC8qKlxuICAgICAqIExpbmsgbXV0YXRpb24gc2VtYW50aWNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgb3RoZXJOYW1lPzogc3RyaW5nIHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIExpc3Rpbmcgc2VydmljZSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBkYXRhU291cmNlPzogTmF0dXJhbERhdGFTb3VyY2U8UGFnaW5hdGVkRGF0YTxMaW5rYWJsZU9iamVjdD4+O1xuICAgIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUYWJsZSBjb2x1bW5zXG4gICAgICovXG4gICAgcHVibGljIGRpc3BsYXllZENvbHVtbnMgPSBbJ25hbWUnXTtcblxuICAgIHB1YmxpYyByZWFkb25seSBwYWdlU2l6ZU9wdGlvbnMgPSBbNSwgMjUsIDUwLCAxMDBdO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0UGFnaW5hdGlvbiA9IHtcbiAgICAgICAgcGFnZUluZGV4OiAwLFxuICAgICAgICBwYWdlU2l6ZTogMjUsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIE9ic2VydmFibGUgdmFyaWFibGVzL29wdGlvbnMgZm9yIGxpc3Rpbmcgc2VydmljZSB1c2FnZSBhbmQgYXBvbGxvIHdhdGNoUXVlcnlcbiAgICAgKi9cbiAgICBwcml2YXRlIHZhcmlhYmxlc01hbmFnZXIgPSBuZXcgTmF0dXJhbFF1ZXJ5VmFyaWFibGVzTWFuYWdlcjxRdWVyeVZhcmlhYmxlcz4oKTtcblxuICAgIHB1YmxpYyByZWFkb25seSByZW1vdmluZyA9IG5ldyBTZXQ8TGlua2FibGVPYmplY3Q+KCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbGlua011dGF0aW9uU2VydmljZTogTmF0dXJhbExpbmtNdXRhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nOiBOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZmlsdGVyIHVzZWQgdG8gZmlsdGVyIHJlbGF0aW9uc1xuICAgICAqXG4gICAgICogU28gaWYgdGhlIHJlbGF0aW9ucyBhcmUgZnJvbSBvbmUgYWN0aW9uIC0+IHRvIG1hbnkgb2JqZWN0aXZlcywgdGhlbiB0aGUgZmlsdGVyIG11c3QgZmlsdGVyXG4gICAgICogdGhlIG9iamVjdGl2ZXMgdGhhdCBoYXZlIGluZGVlZCBhIHJlbGF0aW9uIHRvIHRoZSBwYXJ0aWN1bGFyIGFjdGlvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZmlsdGVyKGZpbHRlcjogRXh0cmFjdFZhbGw8VFNlcnZpY2U+WydmaWx0ZXInXSkge1xuICAgICAgICB0aGlzLnZhcmlhYmxlc01hbmFnZXIuc2V0KCdyZWxhdGlvbnMtZmlsdGVyJywge2ZpbHRlcjogZmlsdGVyfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5SXRlbXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkICYmIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5pbmNsdWRlcygndW5saW5rJykpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy5wb3AoKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLmluY2x1ZGVzKCd1bmxpbmsnKSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnB1c2goJ3VubGluaycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24oKTtcblxuICAgICAgICAvLyBGb3JjZSBkaXNhYmxlZCBpZiBjYW5ub3QgdXBkYXRlIG9iamVjdFxuICAgICAgICBpZiAodGhpcy5tYWluICYmIHRoaXMubWFpbi5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMubWFpbi5wZXJtaXNzaW9ucy51cGRhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVbmxpbmsgYWN0aW9uXG4gICAgICogUmVmZXRjaCByZXN1bHQgdG8gZGlzcGxheSBpdCBpbiB0YWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyByZW1vdmVSZWxhdGlvbihyZWxhdGlvbjogTGlua2FibGVPYmplY3QpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmluZy5hZGQocmVsYXRpb24pO1xuXG4gICAgICAgIHRoaXMubGlua011dGF0aW9uU2VydmljZVxuICAgICAgICAgICAgLnVubGluayh0aGlzLm1haW4sIHJlbGF0aW9uLCB0aGlzLm90aGVyTmFtZSlcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMucmVtb3ZpbmcuZGVsZXRlKHJlbGF0aW9uKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuZGF0YVNvdXJjZT8ucmVtb3ZlKHJlbGF0aW9uKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGluayBhY3Rpb25cbiAgICAgKiBSZWZldGNoIHJlc3VsdCB0byBkaXNwbGF5IGl0IGluIHRhYmxlXG4gICAgICogVE9ETyA6IGNvdWxkIG1heWJlIHVzZSBcInVwZGF0ZVwiIGF0dHJpYnV0ZSBvZiBhcG9sbG8ubXV0YXRlIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0YWJsZSBmYXN0ZXIgKGJ1dCBoYXJkIHRvIGRvIGl0IGhlcmUpXG4gICAgICovXG4gICAgcHVibGljIGFkZFJlbGF0aW9ucyhyZWxhdGlvbnM6IChMaW5rYWJsZU9iamVjdCB8IEV4dHJhY3RUYWxsT25lPFRTZXJ2aWNlPiB8IHN0cmluZyB8IG51bGwpW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZXMgPSByZWxhdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlbGF0aW9uKTogcmVsYXRpb24gaXMgTGlua2FibGVPYmplY3QgPT4gISFyZWxhdGlvbiAmJiB0eXBlb2YgcmVsYXRpb24gPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgLm1hcChyZWxhdGlvbiA9PiB0aGlzLmxpbmtNdXRhdGlvblNlcnZpY2UubGluayh0aGlzLm1haW4sIHJlbGF0aW9uLCB0aGlzLm90aGVyTmFtZSkpO1xuXG4gICAgICAgIGZvcmtKb2luKG9ic2VydmFibGVzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCgpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Q/LmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYWdpbmF0aW9uKGV2ZW50PzogUGFnZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGxldCBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uSW5wdXQgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgZXZlbnQgJiZcbiAgICAgICAgICAgIChldmVudC5wYWdlSW5kZXggIT09IHRoaXMuZGVmYXVsdFBhZ2luYXRpb24ucGFnZUluZGV4IHx8IGV2ZW50LnBhZ2VTaXplICE9PSB0aGlzLmRlZmF1bHRQYWdpbmF0aW9uLnBhZ2VTaXplKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHBhZ2luYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgcGFnZUluZGV4OiBldmVudC5wYWdlSW5kZXgsXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IGV2ZW50LnBhZ2VTaXplLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFyaWFibGVzTWFuYWdlci5zZXQoJ3BhZ2luYXRpb24nLCB7cGFnaW5hdGlvbjogcGFnaW5hdGlvbiA/IHBhZ2luYXRpb24gOiB0aGlzLmRlZmF1bHRQYWdpbmF0aW9ufSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERpc3BsYXlGbigpOiAoaXRlbTogRXh0cmFjdFRhbGxPbmU8VFNlcnZpY2U+IHwgbnVsbCkgPT4gc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheVdpdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlXaXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChpdGVtOiBhbnkpID0+IChpdGVtID8gaXRlbS5mdWxsTmFtZSB8fCBpdGVtLm5hbWUgOiAnJyk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5OYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RBdEtleSA9IHRoaXMuZ2V0U2VsZWN0S2V5KCk7XG5cbiAgICAgICAgaWYgKCFzZWxlY3RBdEtleSB8fCAhdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0ge307XG5cbiAgICAgICAgY29uc3QgaGllcmFyY2hpY0NvbmZpZzogSGllcmFyY2hpY0RpYWxvZ0NvbmZpZyA9IHtcbiAgICAgICAgICAgIGhpZXJhcmNoaWNDb25maWc6IHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnLFxuICAgICAgICAgICAgaGllcmFyY2hpY1NlbGVjdGlvbjogc2VsZWN0ZWQsXG4gICAgICAgICAgICBoaWVyYXJjaGljRmlsdGVyczogdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JGaWx0ZXJzLFxuICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dcbiAgICAgICAgICAgIC5vcGVuKGhpZXJhcmNoaWNDb25maWcpXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQ/LmhpZXJhcmNoaWNTZWxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSByZXN1bHQuaGllcmFyY2hpY1NlbGVjdGlvbltzZWxlY3RBdEtleV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFJlbGF0aW9ucyhzZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGxpc3QgZnJvbSBkYXRhYmFzZVxuICAgICAqL1xuICAgIHByaXZhdGUgcXVlcnlJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IHF1ZXJ5UmVmID0gdGhpcy5zZXJ2aWNlLndhdGNoQWxsKHRoaXMudmFyaWFibGVzTWFuYWdlcikucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpLFxuICAgICAgICAgICAgdGFwKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5sb2FkaW5nID0gZmFsc2UpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBOYXR1cmFsRGF0YVNvdXJjZShxdWVyeVJlZik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RLZXkoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnLmZpbHRlcihjID0+ICEhYy5zZWxlY3RhYmxlQXRLZXkpWzBdLnNlbGVjdGFibGVBdEtleTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYm9keVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE5hbWVDZWxsIGxldC1pdGVtPVwiaXRlbVwiPlxuICAgICAgICB7eyBnZXREaXNwbGF5Rm4oKShpdGVtKSB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICBAaWYgKGRhdGFTb3VyY2UpIHtcbiAgICAgICAgPHRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBjbGFzcz1cIm5hdHVyYWwtcm93LWNsaWNrXCIgbWF0LXRhYmxlPlxuICAgICAgICAgICAgPHRyICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCIgbWF0LWhlYWRlci1yb3cgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+PC90cj5cbiAgICAgICAgICAgIDx0ciAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1uc1wiIG1hdC1yb3c+PC90cj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJuYW1lXCI+XG4gICAgICAgICAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIGkxOG4gbWF0LWhlYWRlci1jZWxsPlRpdHJlPC90aD5cbiAgICAgICAgICAgICAgICA8dGQgKm1hdENlbGxEZWY9XCJsZXQgaXRlbVwiIG1hdC1jZWxsPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlID8gaXRlbVRlbXBsYXRlIDogZGVmYXVsdE5hbWVDZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidW5saW5rXCI+XG4gICAgICAgICAgICAgICAgPHRoICptYXRIZWFkZXJDZWxsRGVmIG1hdC1oZWFkZXItY2VsbD48L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgbWF0LWNlbGw+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVJlbGF0aW9uKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicmVtb3ZpbmcuaGFzKGVsZW1lbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEaXNzb2NpZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBuYXR1cmFsSWNvbj1cImxpbmtfb2ZmXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RhYmxlPlxuICAgIH1cblxuICAgIEBpZiAoZGF0YVNvdXJjZT8uZGF0YSAmJiAoZGF0YVNvdXJjZT8uZGF0YT8ubGVuZ3RoIHx8IDApID4gKGRhdGFTb3VyY2U/LmRhdGE/LnBhZ2VTaXplIHx8IDApKSB7XG4gICAgICAgIDxtYXQtcGFnaW5hdG9yXG4gICAgICAgICAgICAocGFnZSk9XCJwYWdpbmF0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgW2xlbmd0aF09XCJkYXRhU291cmNlPy5kYXRhPy5sZW5ndGggfHwgMFwiXG4gICAgICAgICAgICBbcGFnZUluZGV4XT1cImRhdGFTb3VyY2U/LmRhdGE/LnBhZ2VJbmRleCB8fCAwXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJkYXRhU291cmNlPy5kYXRhPy5wYWdlU2l6ZSB8fCAwXCJcbiAgICAgICAgLz5cbiAgICB9XG5cbiAgICBAaWYgKCFsb2FkaW5nICYmIGRhdGFTb3VyY2U/LmRhdGE/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwibWFyZ2luLXYgbWF0LWJvZHlcIj5cbiAgICAgICAgICAgIDxzcGFuIGkxOG4+QXVjdW4gcsOpc3VsdGF0PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKGxvYWRpbmcpIHtcbiAgICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIFtkaWFtZXRlcl09XCI0MFwiIGNsYXNzPVwibG9hZGluZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCIgLz5cbiAgICB9XG48L2Rpdj5cblxuQGlmICghaGllcmFyY2hpY1NlbGVjdG9yQ29uZmlnICYmIHNlcnZpY2UgJiYgIWRpc2FibGVkKSB7XG4gICAgPG5hdHVyYWwtc2VsZWN0XG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiYWRkUmVsYXRpb25zKFskZXZlbnRdKVwiXG4gICAgICAgIFtkaXNwbGF5V2l0aF09XCIkYW55KGdldERpc3BsYXlGbigpKVwiXG4gICAgICAgIFtmaWx0ZXJdPVwiYXV0b2NvbXBsZXRlU2VsZWN0b3JGaWx0ZXJcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbc2VydmljZV09XCJzZXJ2aWNlXCJcbiAgICAgICAgW3Nob3dJY29uXT1cImZhbHNlXCJcbiAgICAvPlxufVxuXG5AaWYgKGhpZXJhcmNoaWNTZWxlY3RvckNvbmZpZyAmJiAhZGlzYWJsZWQpIHtcbiAgICA8ZGl2PlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuTmF0dXJhbEhpZXJhcmNoaWNTZWxlY3RvcigpXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LWZsYXQtYnV0dG9uPnt7IHBsYWNlaG9sZGVyIH19PC9idXR0b24+XG4gICAgPC9kaXY+XG59XG4iXX0=
|
|
@@ -346,4 +346,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
|
|
|
346
346
|
type: HostListener,
|
|
347
347
|
args: ['focus']
|
|
348
348
|
}] } });
|
|
349
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULGVBQWUsRUFDZix5QkFBeUIsRUFHekIsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQW9CLFNBQVMsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQ0gscUJBQXFCLEdBR3hCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFDLHNCQUFzQixFQUE2QixNQUFNLDRDQUE0QyxDQUFDO0FBSTlHLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRXZELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixD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dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFLbEIsV0FBVztzQkFBMUIsS0FBSztnQkFLVSxlQUFlO3NCQUE5QixLQUFLO2dCQUtVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBSzBCLE1BQU07c0JBQXJDLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDO2dCQUtQLGFBQWE7c0JBQTVCLEtBQUs7Z0JBS29CLGVBQWU7c0JBQXhDLE1BQU07Z0JBS21CLE9BQU87c0JBQWhDLE1BQU07Z0JBbURBLEtBQUs7c0JBRFgsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIGNyZWF0ZUNvbXBvbmVudCxcbiAgICBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTdGF0aWNQcm92aWRlcixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Vycm9yU3RhdGVNYXRjaGVyLCBNYXRSaXBwbGUsIE1hdFJpcHBsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge0ZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGR9IGZyb20gJy4uL2NsYXNzZXMvZ3JhcGhxbC1kb2N0cmluZS50eXBlcyc7XG5pbXBvcnQge2dldEZhY2V0RnJvbVNlbGVjdGlvbn0gZnJvbSAnLi4vY2xhc3Nlcy91dGlscyc7XG5pbXBvcnQge05hdHVyYWxEcm9wZG93blJlZn0gZnJvbSAnLi4vZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLXJlZic7XG5pbXBvcnQge1xuICAgIE5BVFVSQUxfRFJPUERPV05fREFUQSxcbiAgICBOYXR1cmFsRHJvcGRvd25EYXRhLFxuICAgIE5hdHVyYWxEcm9wZG93blNlcnZpY2UsXG59IGZyb20gJy4uL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7RmFjZXRTZWxlY3RvckNvbXBvbmVudCwgRmFjZXRTZWxlY3RvckNvbmZpZ3VyYXRpb259IGZyb20gJy4uL2ZhY2V0LXNlbGVjdG9yL2ZhY2V0LXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge0Ryb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi90eXBlcy9kcm9wZG93bi1jb21wb25lbnQnO1xuaW1wb3J0IHtEcm9wZG93bkZhY2V0LCBGYWNldCwgRmxhZ0ZhY2V0LCBOYXR1cmFsU2VhcmNoRmFjZXRzfSBmcm9tICcuLi90eXBlcy9mYWNldCc7XG5pbXBvcnQge0Ryb3Bkb3duUmVzdWx0LCBOYXR1cmFsU2VhcmNoU2VsZWN0aW9ufSBmcm9tICcuLi90eXBlcy92YWx1ZXMnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge05hdHVyYWxJY29uRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9pY29uL2ljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5cbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcblxuLy8gUmVxdWlyZWQgdG8gY2hlY2sgaW52YWxpZCBmaWVsZHMgd2hlbiBpbml0aWFsaXppbmcgbmF0dXJhbC1zZWFyY2hcbmNsYXNzIEFsd2F5c0Vycm9yU3RhdGVNYXRjaGVyIGltcGxlbWVudHMgRXJyb3JTdGF0ZU1hdGNoZXIge1xuICAgIHB1YmxpYyBpc0Vycm9yU3RhdGUoY29udHJvbDogRm9ybUNvbnRyb2w8dW5rbm93bj4gfCBudWxsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIWNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gaXNDb21wb25lbnRWYWxpZChjb21wb25lbnQ6IERyb3Bkb3duQ29tcG9uZW50KTogVmFsaWRhdG9yRm4ge1xuICAgIHJldHVybiAoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgICBpZiAoIWNvbXBvbmVudC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7Y29tcG9uZW50OiB0cnVlfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmF0dXJhbC1pbnB1dCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdFJpcHBsZU1vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBOYXR1cmFsSWNvbkRpcmVjdGl2ZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIENvbnRyb2xzIHRoZSByaXBwbGUgZWZmZWN0LCB1c2VkIHdoZW4gb3BlbmluZyBhIGRyb3Bkb3duXG4gICAgICovXG4gICAgQFZpZXdDaGlsZChNYXRSaXBwbGUsIHtzdGF0aWM6IHRydWV9KSBwdWJsaWMgcmlwcGxlITogTWF0UmlwcGxlO1xuXG4gICAgLyoqXG4gICAgICogTmF0aXZlIGVsZW1lbnQgcmVmIGZvciA8aW5wdXQ+IHJlbGF0ZWQgdG8gdGhpcyA8bmF0dXJhbC1pbnB1dD4gY29tcG9uZW50XG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7c3RhdGljOiB0cnVlfSkgcHVibGljIGlucHV0ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIExhYmVsIGZvciB0aGlzIGZpZWxkXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZmllbGQgb24gd2hpY2ggZG8gYSBnbG9iYWwgc2VhcmNoICh3aXRob3V0IGZhY2V0KVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hGaWVsZE5hbWUgPSAnc2VhcmNoJztcblxuICAgIC8qKlxuICAgICAqIFNlbGVjdGVkIHNldHRlZCBmb3IgdGhpcyBjb21wb25lbnRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBBdmFpbGFibGUgZmFjZXRzLCBhbGxvd3MgdGhlIHVzZXIgdG8gcGljayBvbmUsIHRoYW4gZ2VuZXJhdGVkIHRoZW4gYSBzZWxlY3Rpb25cbiAgICAgKi9cbiAgICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSkgcHVibGljIGZhY2V0cyE6IE5hdHVyYWxTZWFyY2hGYWNldHM7XG5cbiAgICAvKipcbiAgICAgKiBUZXh0IGRpc3BsYXkgaW4gdGhlIGRyb3Bkb3duIHRvIHNlbGVjdCB0aGUgZmFjZXRcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZHJvcGRvd25UaXRsZSA9ICcnO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiB1c2VyIGEgYWRkZWQvdXBkYXRlZC9kZWxldGVkIGEgc2VhcmNoIChmcm9tIGdsb2JhbCBjb250ZXh0IG9yIGZyb20gZmFjZXQpXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB3aGVuIHVzZXIgcmVtb3ZlcyB0aGUgc2VhcmNoIGJ5IHByZXNzaW5nIHRoZSBjcm9zcyBpY29uXG4gICAgICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjbGVhcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxOYXR1cmFsSW5wdXRDb21wb25lbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RlZCBmYWNldCBmcm9tIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBmYWNldHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZmFjZXQ6IEZhY2V0IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBDb250cm9sbGVyIGZvciB0aGUgaW5wdXQgZmllbGRcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9ybUN0cmwgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b21lciBlcnJvciBtYXRjaGVyIHRoYXQgc2hvdWxkIHZhbGlkYXRlIG9uIGVhY2ggY2hhbmdlIChpbmNsdWRpbmcgaW5pdGlhbGlzYXRpb24pXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGVycm9yTWF0Y2hlciA9IG5ldyBBbHdheXNFcnJvclN0YXRlTWF0Y2hlcigpO1xuXG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlIG9mIHRoZSBvcGVuZWQgZHJvcGRvd24gY29udGFpbmVyXG4gICAgICovXG4gICAgcHJpdmF0ZSBkcm9wZG93blJlZjogTmF0dXJhbERyb3Bkb3duUmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2Ugb2YgdGhlIGNvbXBvbmVudCBpbnNpZGUgdGhlIGRyb3Bkb3duIGNvbnRhaW5lclxuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25Db21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxEcm9wZG93bkNvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqICBNaW5pbXVtIGlucHV0IGxlbmd0aCAobnVtYmVyIG9mIGNoYXJzKVxuICAgICAqICBTZWUgbGVuZ3RoIGF0dHJpYnV0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWluTGVuZ3RoID0gNTtcblxuICAgIC8qKlxuICAgICAqIFNpemUgb2YgdGhlIGlucHV0IChudW1iZXIgb2YgY2hhcnMpXG4gICAgICogTWF0Y2ggdGhlIGlucHV0LnNpemUgYXR0cmlidXRlXG4gICAgICovXG4gICAgcHVibGljIGxlbmd0aCA9IHRoaXMubWluTGVuZ3RoO1xuXG4gICAgLyoqXG4gICAgICogRmxhZywgdGhhdCwgaWYgbWFya2VkIGFzIHllcywgcHJldmVudHMgdGhlIG9wZW5pbmcgb2YgdGhlIGRyb3Bkb3duXG4gICAgICogSXMgdXNlZCB0byBwcmV2ZW50IGRyb3Bkb3duIG9wZW5pbmcgd2hlbiBuYXR1cmFsLXNlYXJjaCB0YWtlcyB0aGUgZm9jdXMgZnJvbSBwYXJlbnQgY29udGV4dCAobGlrZSBvbiBtb2RhbCBvcGVuaW5nKVxuICAgICAqL1xuICAgIHByaXZhdGUgbmV1dHJhbGl6ZURyb3Bkb3duT3BlbmluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1hbmFnZW1lbnQgZm9yIHRha2luZyB0aGUgZm9jdXMgZnJvbSBwYXJlbnQgY29udGV4dFxuICAgICAqIFdoZW4gZm9jdXNpbmcgbWFudWFsbHkgb24gdGhlIDxpbnB1dD4sIGEgZHJvcGRvd24gaXMgb3BlbmVkXG4gICAgICogQnV0IHdoZW4gdGhlIGZvY3VzIGlzIGdpdmVuIGZyb20gYW5ndWxhciBpbiBhIHBhcmVudCBjb250ZXh0IChsaWtlIGEgZGlhbG9nKSB0aGUgZHJvcGRvd24gd291bGQgb3BlbiBhbmQgd2UgZG9uJ3Qgd2FudCBpdC5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gICAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5uZXV0cmFsaXplRHJvcGRvd25PcGVuaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRyb3Bkb3duU2VydmljZTogTmF0dXJhbERyb3Bkb3duU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mYWNldHMgJiYgdGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbGVhcigpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZhY2V0cyAmJiB0aGlzLnNlbGVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5mYWNldCA9IGdldEZhY2V0RnJvbVNlbGVjdGlvbih0aGlzLmZhY2V0cywgdGhpcy5zZWxlY3Rpb24pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkcm9wZG93bkNvbXBvbmVudCA9IHRoaXMuY3JlYXRlQ29tcG9uZW50KHRoaXMuZmFjZXQgYXMgRHJvcGRvd25GYWNldDxGYWNldFNlbGVjdG9yQ29uZmlndXJhdGlvbj4pO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsaWRhdG9ycyhbaXNDb21wb25lbnRWYWxpZChkcm9wZG93bkNvbXBvbmVudCldKTtcbiAgICAgICAgICAgICAgICBkcm9wZG93bkNvbXBvbmVudC5yZW5kZXJlZFZhbHVlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmxhZygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQ3RybC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uICYmXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uZmllbGQgPT09IHRoaXMuc2VhcmNoRmllbGROYW1lICYmXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY29uZGl0aW9uLmxpa2VcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIGdsb2JhbCBzZWFyY2ggbW9kZVxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsdWUoJycgKyB0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24ubGlrZS52YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIElmIGNvbXBvbmVudCBpcyBpbnZhbGlkIChubyBmYWNldCBhbmQgbm90IGEgZ2xvYmFsIHNlYXJjaCksIGNsZWFyIGZyb20gcmVzdWx0IGFuZCBkZXN0cm95IGNvbXBvbmVudFxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jbGVhcigpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRyb3Bkb3duUmVmKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5mb3JtQ3RybC52YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9ICRsb2NhbGl6ZWBSZWNoZXJjaGVgO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJTaXplID0gKHRoaXMuZmFjZXQgPyB0aGlzLmZhY2V0LmRpc3BsYXkubGVuZ3RoIDogdGhpcy5wbGFjZWhvbGRlci5sZW5ndGgpICogMC42NjtcbiAgICAgICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLm1pbkxlbmd0aCwgTWF0aC5jZWlsKHBsYWNlaG9sZGVyU2l6ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNlYXJjaChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmZvcm1DdHJsLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZvcm1DdHJsLnZhbGlkICYmIHRoaXMuZm9ybUN0cmwuZGlydHkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5nZXRTZWxlY3Rpb24oe2xpa2U6IHt2YWx1ZTogdGhpcy5mb3JtQ3RybC52YWx1ZX19KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmFjZXQgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIHRoaXMuY2xlYXJlZC5lbWl0KHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duUmVmIHx8IHRoaXMubmV1dHJhbGl6ZURyb3Bkb3duT3BlbmluZykge1xuICAgICAgICAgICAgLy8gUHJldmVudCB0byBvcGVuIG11bHRpcGxlIGRyb3Bkb3ducy5cbiAgICAgICAgICAgIC8vIEhhcHBlbnMgYXMgd2Ugb3BlbiBvbiBcImZvY3VzXCIsIGFuZCBhbHQrdGFiIHJlLWFjdGl2YXRlIGZvY3VzIG9uIGFuIGVsZW1lbnQgdGhhdCBhbHJlYWR5IGhhZFxuICAgICAgICAgICAgLy8gZm9jdXMgd2hlbiBsZWF2aW5nIHdpbmRvdyB3aXRoIGFub3RoZXIgYWx0K3RhYlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sYXVuY2hSaXBwbGUoKTtcblxuICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBmYWNldCBhbmQgbm8gc3RyaW5nIHR5cGVkLCBzaG93IHBhbmVsIHRvIHNlbGVjdCB0aGUgZmFjZXRcbiAgICAgICAgaWYgKCF0aGlzLmZhY2V0ICYmICF0aGlzLmZvcm1DdHJsLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5GYWNldFNlbGVjdG9yRHJvcGRvd24odGhpcy5kcm9wZG93blRpdGxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIGEgZmFjZXQgaXMgc2VsZWN0ZWQsIG9wZW4gc3BlY2lmaWMgY29tcG9uZW50IGRyb3Bkb3duXG4gICAgICAgICAgICB0aGlzLm9wZW5UeXBlRHJvcGRvd24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc0Ryb3Bkb3duKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5mYWNldCAmJiAodGhpcy5mYWNldCBhcyBEcm9wZG93bkZhY2V0PHVua25vd24+KS5jb21wb25lbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZsYWcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLmZhY2V0ICYmICh0aGlzLmZhY2V0IGFzIEZsYWdGYWNldDxGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkPikuY29uZGl0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUNvbXBvbmVudChmYWNldDogRHJvcGRvd25GYWNldDx1bmtub3duPik6IERyb3Bkb3duQ29tcG9uZW50IHtcbiAgICAgICAgLy8gQWx3YXlzIGRlc3Ryb3kgYW5kIHJlY3JlYXRlIGNvbXBvbmVudFxuICAgICAgICAvLyBUb2RvIDogdGVzdCBpZiBmYWNldCBoYXMgY2hhbmdlZCwgaWYgbm90IHJlLXVzZSB0aGUgY29tcG9uZW50XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IHRoaXMuc2VsZWN0aW9uID8gdGhpcy5zZWxlY3Rpb24uY29uZGl0aW9uIDogbnVsbDtcbiAgICAgICAgY29uc3QgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YSA9IHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogY29uZGl0aW9uLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogZmFjZXQuY29uZmlndXJhdGlvbixcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBpbmplY3RvciA9IGNyZWF0ZUVudmlyb25tZW50SW5qZWN0b3IodGhpcy5jcmVhdGVQcm92aWRlcnMoZGF0YSksIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmID0gY3JlYXRlQ29tcG9uZW50KGZhY2V0LmNvbXBvbmVudCwge1xuICAgICAgICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogaW5qZWN0b3IsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlUHJvdmlkZXJzKGRhdGE6IE5hdHVyYWxEcm9wZG93bkRhdGEpOiBTdGF0aWNQcm92aWRlcltdIHtcbiAgICAgICAgLy8gQ3VzdG9taXplIGluamVjdG9yIHRvIGFsbG93IGRhdGEgYW5kIGRyb3Bkb3duIHJlZmVyZW5jZSBpbmplY3Rpb24gaW4gY29tcG9uZW50XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogTmF0dXJhbERyb3Bkb3duUmVmLFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBudWxsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBOQVRVUkFMX0RST1BET1dOX0RBVEEsXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IGRhdGEsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgbGF1bmNoUmlwcGxlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCByaXBwbGVSZWYgPSB0aGlzLnJpcHBsZS5sYXVuY2goe1xuICAgICAgICAgICAgcGVyc2lzdGVudDogdHJ1ZSxcbiAgICAgICAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICByaXBwbGVSZWYuZmFkZU91dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkZhY2V0U2VsZWN0b3JEcm9wZG93bih0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5mYWNldHMgfHwgKHRoaXMuZmFjZXRzICYmICF0aGlzLmZhY2V0cy5sZW5ndGgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhOiBOYXR1cmFsRHJvcGRvd25EYXRhPEZhY2V0U2VsZWN0b3JDb25maWd1cmF0aW9uPiA9IHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjoge30sXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgZmFjZXRzOiB0aGlzLmZhY2V0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaW5qZWN0b3JUb2tlbnMgPSB0aGlzLmNyZWF0ZVByb3ZpZGVycyhkYXRhKTtcbiAgICAgICAgdGhpcy5kcm9wZG93blJlZiA9IHRoaXMuZHJvcGRvd25TZXJ2aWNlLm9wZW4oRmFjZXRTZWxlY3RvckNvbXBvbmVudCwgdGhpcy5lbGVtZW50LCBpbmplY3RvclRva2VucywgZmFsc2UpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmLmNsb3NlZC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSBudWxsO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5mYWNldCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZhY2V0KHJlc3VsdC5mYWNldCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQuY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlblR5cGVEcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRHJvcGRvd24oKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZHJvcGRvd25GYWNldCA9IHRoaXMuZmFjZXQgYXMgRHJvcGRvd25GYWNldDx1bmtub3duPjtcblxuICAgICAgICBjb25zdCBkYXRhOiBOYXR1cmFsRHJvcGRvd25EYXRhID0ge1xuICAgICAgICAgICAgY29uZGl0aW9uOiB0aGlzLnNlbGVjdGlvbiA/IHRoaXMuc2VsZWN0aW9uLmNvbmRpdGlvbiA6IG51bGwsXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uOiBkcm9wZG93bkZhY2V0LmNvbmZpZ3VyYXRpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaW5qZWN0b3JUb2tlbnMgPSB0aGlzLmNyZWF0ZVByb3ZpZGVycyhkYXRhKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gZHJvcGRvd25GYWNldC5jb21wb25lbnQ7XG4gICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSB0aGlzLmRyb3Bkb3duU2VydmljZS5vcGVuKFxuICAgICAgICAgICAgY29tcG9uZW50LFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LFxuICAgICAgICAgICAgaW5qZWN0b3JUb2tlbnMsXG4gICAgICAgICAgICBkcm9wZG93bkZhY2V0LnNob3dWYWxpZGF0ZUJ1dHRvbiAhPT0gdW5kZWZpbmVkID8gZHJvcGRvd25GYWNldC5zaG93VmFsaWRhdGVCdXR0b24gOiB0cnVlLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZHJvcGRvd25SZWYuY2xvc2VkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blJlZiA9IG51bGw7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RmFjZXQoZmFjZXQ6IEZhY2V0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmFjZXQgPSBmYWNldDtcblxuICAgICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duKCkpIHtcbiAgICAgICAgICAgIHRoaXMub3BlblR5cGVEcm9wZG93bigpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNGbGFnKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUoe1xuICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogKGZhY2V0IGFzIEZsYWdGYWNldDxGaWx0ZXJHcm91cENvbmRpdGlvbkZpZWxkPikuY29uZGl0aW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsdWUocmVzdWx0OiBEcm9wZG93blJlc3VsdCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mYWNldCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLmdldFNlbGVjdGlvbihyZXN1bHQuY29uZGl0aW9uKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlbGVjdGlvbihjb25kaXRpb246IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb25bJ2NvbmRpdGlvbiddKTogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbjogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbiA9IHtcbiAgICAgICAgICAgIGZpZWxkOiB0aGlzLmZhY2V0ID8gdGhpcy5mYWNldC5maWVsZCA6IHRoaXMuc2VhcmNoRmllbGROYW1lLFxuICAgICAgICAgICAgY29uZGl0aW9uOiBjb25kaXRpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuZmFjZXQ/Lm5hbWUpIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5uYW1lID0gdGhpcy5mYWNldC5uYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgICB9XG59XG4iLCI8IS0tIGNsaWNrIGNvbmRpdGlvbiBzaG91bGQgbWF0Y2ggdG8gYWxsb3cgY2xpY2sgYWN0aW9uIG9ubHkgd2hlbiBubyBvdGhlciBidXR0b24gaXMgdmlzaWJsZSAtLT5cbjxtYXQtZm9ybS1maWVsZCAjZmllbGQgbWF0UmlwcGxlIChjbGljayk9XCIhc2VsZWN0aW9uICYmICEoZmFjZXQgJiYgIXNlbGVjdGlvbikgPyBvcGVuRHJvcGRvd24oKSA6IG51bGxcIj5cbiAgICBAaWYgKGZhY2V0KSB7XG4gICAgICAgIDxtYXQtbGFiZWw+e3sgZmFjZXQuZGlzcGxheSB9fTwvbWF0LWxhYmVsPlxuICAgIH1cbiAgICBAaWYgKCFmYWNldCkge1xuICAgICAgICA8bWF0LWxhYmVsPnt7IHBsYWNlaG9sZGVyIH19PC9tYXQtbGFiZWw+XG4gICAgfVxuXG4gICAgPGlucHV0XG4gICAgICAgICNpbnB1dFxuICAgICAgICAoYmx1cik9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgW2F0dHIuc2l6ZV09XCJsZW5ndGhcIlxuICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiZXJyb3JNYXRjaGVyXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1DdHJsXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cIihpc0Ryb3Bkb3duKCkgJiYgISFzZWxlY3Rpb24pIHx8IGlzRmxhZygpXCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgIC8+XG5cbiAgICBAaWYgKCFmYWNldCAmJiAhc2VsZWN0aW9uKSB7XG4gICAgICAgIDxtYXQtaWNvbiBuYXR1cmFsSWNvbj1cInNlYXJjaFwiIG1hdEljb25QcmVmaXggLz5cbiAgICB9XG5cbiAgICBAaWYgKHNlbGVjdGlvbikge1xuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhcigpXCIgbWF0LWljb24tYnV0dG9uIG1hdEljb25TdWZmaXg+XG4gICAgICAgICAgICA8bWF0LWljb24gbmF0dXJhbEljb249XCJjbG9zZVwiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cblxuICAgIEBpZiAoZmFjZXQgJiYgIXNlbGVjdGlvbikge1xuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhcigpXCIgbWF0LWljb24tYnV0dG9uIG1hdEljb25TdWZmaXg+XG4gICAgICAgICAgICA8bWF0LWljb24gbmF0dXJhbEljb249XCJ1bmRvXCIgLz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgfVxuPC9tYXQtZm9ybS1maWVsZD5cbjxkaXYgY2xhc3M9XCJoaWRlXCI+e3sgZm9ybUN0cmwudmFsdWUgPyBmb3JtQ3RybC52YWx1ZSA6IGZhY2V0ID8gZmFjZXQuZGlzcGxheSA6IHBsYWNlaG9sZGVyIH19PC9kaXY+XG4iXX0=
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VhcmNoL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlYXJjaC9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUVULGVBQWUsRUFDZix5QkFBeUIsRUFHekIsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RyxPQUFPLEVBQW9CLFNBQVMsRUFBRSxlQUFlLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQ0gscUJBQXFCLEdBR3hCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFDLHNCQUFzQixFQUE2QixNQUFNLDRDQUE0QyxDQUFDO0FBSTlHLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7QUFFaEUsb0VBQW9FO0FBQ3BFLE1BQU0sdUJBQXVCO0lBQ2xCLFlBQVksQ0FBQyxPQUFvQztRQUNwRCxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQztJQUN4QyxDQUFDO0NBQ0o7QUFFRCxTQUFTLGdCQUFnQixDQUFDLFNBQTRCO0lBQ2xELE9BQU8sR0FBNEIsRUFBRTtRQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUM3QixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQWtCRCxNQUFNLE9BQU8scUJBQXFCO0lBeUY5Qjs7OztPQUlHO0lBRUksS0FBSztRQUNSLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBRUQsWUFDcUIsT0FBZ0MsRUFDaEMsZUFBdUMsRUFDdkMsUUFBNkI7UUFGN0IsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBeEZsRDs7V0FFRztRQUNhLG9CQUFlLEdBQUcsUUFBUSxDQUFDO1FBRTNDOztXQUVHO1FBQ2EsY0FBUyxHQUFrQyxJQUFJLENBQUM7UUFPaEU7O1dBRUc7UUFDYSxrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUVuQzs7V0FFRztRQUN1QixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBRXZGOztXQUVHO1FBQ3VCLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBeUIsQ0FBQztRQUU5RTs7V0FFRztRQUNJLFVBQUssR0FBaUIsSUFBSSxDQUFDO1FBRWxDOztXQUVHO1FBQ2EsYUFBUSxHQUFHLElBQUksV0FBVyxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUVoRTs7V0FFRztRQUNhLGlCQUFZLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBRTdEOztXQUVHO1FBQ0ssZ0JBQVcsR0FBOEIsSUFBSSxDQUFDO1FBRXREOztXQUVHO1FBQ0sseUJBQW9CLEdBQTJDLElBQUksQ0FBQztRQUU1RTs7O1dBR0c7UUFDYyxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRS9COzs7V0FHRztRQUNJLFdBQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRS9COzs7V0FHRztRQUNLLDhCQUF5QixHQUFHLEtBQUssQ0FBQztJQWtCdkMsQ0FBQztJQUVHLFdBQVc7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFaEUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFrRCxDQUFDLENBQUM7Z0JBQ3hHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25FLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0IsQ0FBQztpQkFBTSxJQUNILElBQUksQ0FBQyxTQUFTO2dCQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxlQUFlO2dCQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQy9CLENBQUM7Z0JBQ0MscUJBQXFCO2dCQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JFLENBQUM7aUJBQU0sQ0FBQztnQkFDSixzR0FBc0c7Z0JBQ3RHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNuQyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNwRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFBLFdBQVcsQ0FBQztRQUM1QyxDQUFDO1FBRUQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2xHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQVk7UUFDdEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFDLElBQUksRUFBRSxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxZQUFZO1FBQ2YsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ3JELHNDQUFzQztZQUN0Qyw4RkFBOEY7WUFDOUYsaURBQWlEO1lBQ2pELE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXBCLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RCxDQUFDO2FBQU0sQ0FBQztZQUNKLDJEQUEyRDtZQUMzRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0wsQ0FBQztJQUVNLFVBQVU7UUFDYixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUssSUFBSSxDQUFDLEtBQWdDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVNLE1BQU07UUFDVCxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUssSUFBSSxDQUFDLEtBQThDLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUE2QjtRQUNqRCx3Q0FBd0M7UUFDeEMsZ0VBQWdFO1FBQ2hFLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ25FLE1BQU0sSUFBSSxHQUF3QjtZQUM5QixTQUFTLEVBQUUsU0FBUztZQUNwQixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7U0FDckMsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLHlCQUF5QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUN6RCxtQkFBbUIsRUFBRSxRQUFRO1NBQ2hDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQztJQUM5QyxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQXlCO1FBQzdDLGlGQUFpRjtRQUNqRixPQUFPO1lBQ0g7Z0JBQ0ksT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsUUFBUSxFQUFFLElBQUk7YUFDakI7WUFDRDtnQkFDSSxPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixRQUFRLEVBQUUsSUFBSTthQUNqQjtTQUNKLENBQUM7SUFDTixDQUFDO0lBRU8sWUFBWTtRQUNoQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNqQyxVQUFVLEVBQUUsSUFBSTtZQUNoQixRQUFRLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLHlCQUF5QixDQUFDLEtBQXlCO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2RCxPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFvRDtZQUMxRCxTQUFTLEVBQUUsRUFBRTtZQUNiLEtBQUssRUFBRSxLQUFLO1lBQ1osYUFBYSxFQUFFO2dCQUNYLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTthQUN0QjtTQUNKLENBQUM7UUFFRixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztxQkFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDMUIsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQStCLENBQUM7UUFFM0QsTUFBTSxJQUFJLEdBQXdCO1lBQzlCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUMzRCxhQUFhLEVBQUUsYUFBYSxDQUFDLGFBQWE7U0FDN0MsQ0FBQztRQUVGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUN4QyxTQUFTLEVBQ1QsSUFBSSxDQUFDLE9BQU8sRUFDWixjQUFjLEVBQ2QsYUFBYSxDQUFDLGtCQUFrQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzNGLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFZO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUIsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDVixTQUFTLEVBQUcsS0FBOEMsQ0FBQyxTQUFTO2FBQ3ZFLENBQUMsQ0FBQztRQUNQLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckMsQ0FBQztJQUNMLENBQUM7SUFFTyxRQUFRLENBQUMsTUFBc0I7UUFDbkMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ25FLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLFNBQThDO1FBQy9ELE1BQU0sU0FBUyxHQUEyQjtZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlO1lBQzNELFNBQVMsRUFBRSxTQUFTO1NBQ3ZCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDbkIsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUNyQyxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzs4R0ExVlEscUJBQXFCO2tHQUFyQixxQkFBcUIseVhBSW5CLFNBQVMsa0xDMUV4QixreENBdUNBLDJVRHFCUSxrQkFBa0IsNGlCQUNsQixlQUFlLGtTQUNmLGNBQWMsMFdBQ2QsV0FBVyxzWkFDWCxtQkFBbUIsaU5BQ25CLGFBQWEsb0xBQ2Isb0JBQW9CLGtHQUNwQixlQUFlOzsyRkFHVixxQkFBcUI7a0JBaEJqQyxTQUFTOytCQUNJLGVBQWUsY0FHYixJQUFJLFdBQ1A7d0JBQ0wsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQixlQUFlO3FCQUNsQjtzSkFNNEMsTUFBTTtzQkFBbEQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUtPLEtBQUs7c0JBQS9DLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFLbEIsV0FBVztzQkFBMUIsS0FBSztnQkFLVSxlQUFlO3NCQUE5QixLQUFLO2dCQUtVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBSzBCLE1BQU07c0JBQXJDLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDO2dCQUtQLGFBQWE7c0JBQTVCLEtBQUs7Z0JBS29CLGVBQWU7c0JBQXhDLE1BQU07Z0JBS21CLE9BQU87c0JBQWhDLE1BQU07Z0JBbURBLEtBQUs7c0JBRFgsWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIGNyZWF0ZUNvbXBvbmVudCxcbiAgICBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTdGF0aWNQcm92aWRlcixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvckZufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Vycm9yU3RhdGVNYXRjaGVyLCBNYXRSaXBwbGUsIE1hdFJpcHBsZU1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge0ZpbHRlckdyb3VwQ29uZGl0aW9uRmllbGR9IGZyb20gJy4uL2NsYXNzZXMvZ3JhcGhxbC1kb2N0cmluZS50eXBlcyc7XG5pbXBvcnQge2dldEZhY2V0RnJvbVNlbGVjdGlvbn0gZnJvbSAnLi4vY2xhc3Nlcy91dGlscyc7XG5pbXBvcnQge05hdHVyYWxEcm9wZG93blJlZn0gZnJvbSAnLi4vZHJvcGRvd24tY29udGFpbmVyL2Ryb3Bkb3duLXJlZic7XG5pbXBvcnQge1xuICAgIE5BVFVSQUxfRFJPUERPV05fREFUQSxcbiAgICBOYXR1cmFsRHJvcGRvd25EYXRhLFxuICAgIE5hdHVyYWxEcm9wZG93blNlcnZpY2UsXG59IGZyb20gJy4uL2Ryb3Bkb3duLWNvbnRhaW5lci9kcm9wZG93bi5zZXJ2aWNlJztcbmltcG9ydCB7RmFjZXRTZWxlY3RvckNvbXBvbmVudCwgRmFjZXRTZWxlY3RvckNvbmZpZ3VyYXRpb259IGZyb20gJy4uL2ZhY2V0LXNlbGVjdG9yL2ZhY2V0LXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQge0Ryb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi90eXBlcy9kcm9wZG93bi1jb21wb25lbnQnO1xuaW1wb3J0IHtEcm9wZG93bkZhY2V0LCBGYWNldCwgRmxhZ0ZhY2V0LCBOYXR1cmFsU2VhcmNoRmFjZXRzfSBmcm9tICcuLi90eXBlcy9mYWNldCc7XG5pbXBvcnQge0Ryb3Bkb3duUmVzdWx0LCBOYXR1cmFsU2VhcmNoU2VsZWN0aW9ufSBmcm9tICcuLi90eXBlcy92YWx1ZXMnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge05hdHVyYWxJY29uRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9pY29uL2ljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbi8vIFJlcXVpcmVkIHRvIGNoZWNrIGludmFsaWQgZmllbGRzIHdoZW4gaW5pdGlhbGl6aW5nIG5hdHVyYWwtc2VhcmNoXG5jbGFzcyBBbHdheXNFcnJvclN0YXRlTWF0Y2hlciBpbXBsZW1lbnRzIEVycm9yU3RhdGVNYXRjaGVyIHtcbiAgICBwdWJsaWMgaXNFcnJvclN0YXRlKGNvbnRyb2w6IEZvcm1Db250cm9sPHVua25vd24+IHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISFjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50VmFsaWQoY29tcG9uZW50OiBEcm9wZG93bkNvbXBvbmVudCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgICAgaWYgKCFjb21wb25lbnQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4ge2NvbXBvbmVudDogdHJ1ZX07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25hdHVyYWwtaW5wdXQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRSaXBwbGVNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTmF0dXJhbEljb25EaXJlY3RpdmUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBDb250cm9scyB0aGUgcmlwcGxlIGVmZmVjdCwgdXNlZCB3aGVuIG9wZW5pbmcgYSBkcm9wZG93blxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoTWF0UmlwcGxlLCB7c3RhdGljOiB0cnVlfSkgcHVibGljIHJpcHBsZSE6IE1hdFJpcHBsZTtcblxuICAgIC8qKlxuICAgICAqIE5hdGl2ZSBlbGVtZW50IHJlZiBmb3IgPGlucHV0PiByZWxhdGVkIHRvIHRoaXMgPG5hdHVyYWwtaW5wdXQ+IGNvbXBvbmVudFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0Jywge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyBpbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBMYWJlbCBmb3IgdGhpcyBmaWVsZFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE5hbWUgb2YgdGhlIGZpZWxkIG9uIHdoaWNoIGRvIGEgZ2xvYmFsIHNlYXJjaCAod2l0aG91dCBmYWNldClcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgc2VhcmNoRmllbGROYW1lID0gJ3NlYXJjaCc7XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RlZCBzZXR0ZWQgZm9yIHRoaXMgY29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdGlvbjogTmF0dXJhbFNlYXJjaFNlbGVjdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQXZhaWxhYmxlIGZhY2V0cywgYWxsb3dzIHRoZSB1c2VyIHRvIHBpY2sgb25lLCB0aGFuIGdlbmVyYXRlZCB0aGVuIGEgc2VsZWN0aW9uXG4gICAgICovXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIHB1YmxpYyBmYWNldHMhOiBOYXR1cmFsU2VhcmNoRmFjZXRzO1xuXG4gICAgLyoqXG4gICAgICogVGV4dCBkaXNwbGF5IGluIHRoZSBkcm9wZG93biB0byBzZWxlY3QgdGhlIGZhY2V0XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGRyb3Bkb3duVGl0bGUgPSAnJztcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdXNlciBhIGFkZGVkL3VwZGF0ZWQvZGVsZXRlZCBhIHNlYXJjaCAoZnJvbSBnbG9iYWwgY29udGV4dCBvciBmcm9tIGZhY2V0KVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOYXR1cmFsU2VhcmNoU2VsZWN0aW9uPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiB1c2VyIHJlbW92ZXMgdGhlIHNlYXJjaCBieSBwcmVzc2luZyB0aGUgY3Jvc3MgaWNvblxuICAgICAqL1xuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgY2xlYXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TmF0dXJhbElucHV0Q29tcG9uZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogU2VsZWN0ZWQgZmFjZXQgZnJvbSB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZmFjZXRzXG4gICAgICovXG4gICAgcHVibGljIGZhY2V0OiBGYWNldCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogQ29udHJvbGxlciBmb3IgdGhlIGlucHV0IGZpZWxkXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm1DdHJsID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tZXIgZXJyb3IgbWF0Y2hlciB0aGF0IHNob3VsZCB2YWxpZGF0ZSBvbiBlYWNoIGNoYW5nZSAoaW5jbHVkaW5nIGluaXRpYWxpc2F0aW9uKVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlcnJvck1hdGNoZXIgPSBuZXcgQWx3YXlzRXJyb3JTdGF0ZU1hdGNoZXIoKTtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSBvZiB0aGUgb3BlbmVkIGRyb3Bkb3duIGNvbnRhaW5lclxuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25SZWY6IE5hdHVyYWxEcm9wZG93blJlZiB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUmVmZXJlbmNlIG9mIHRoZSBjb21wb25lbnQgaW5zaWRlIHRoZSBkcm9wZG93biBjb250YWluZXJcbiAgICAgKi9cbiAgICBwcml2YXRlIGRyb3Bkb3duQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8RHJvcGRvd25Db21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiAgTWluaW11bSBpbnB1dCBsZW5ndGggKG51bWJlciBvZiBjaGFycylcbiAgICAgKiAgU2VlIGxlbmd0aCBhdHRyaWJ1dGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1pbkxlbmd0aCA9IDU7XG5cbiAgICAvKipcbiAgICAgKiBTaXplIG9mIHRoZSBpbnB1dCAobnVtYmVyIG9mIGNoYXJzKVxuICAgICAqIE1hdGNoIHRoZSBpbnB1dC5zaXplIGF0dHJpYnV0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBsZW5ndGggPSB0aGlzLm1pbkxlbmd0aDtcblxuICAgIC8qKlxuICAgICAqIEZsYWcsIHRoYXQsIGlmIG1hcmtlZCBhcyB5ZXMsIHByZXZlbnRzIHRoZSBvcGVuaW5nIG9mIHRoZSBkcm9wZG93blxuICAgICAqIElzIHVzZWQgdG8gcHJldmVudCBkcm9wZG93biBvcGVuaW5nIHdoZW4gbmF0dXJhbC1zZWFyY2ggdGFrZXMgdGhlIGZvY3VzIGZyb20gcGFyZW50IGNvbnRleHQgKGxpa2Ugb24gbW9kYWwgb3BlbmluZylcbiAgICAgKi9cbiAgICBwcml2YXRlIG5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBtYW5hZ2VtZW50IGZvciB0YWtpbmcgdGhlIGZvY3VzIGZyb20gcGFyZW50IGNvbnRleHRcbiAgICAgKiBXaGVuIGZvY3VzaW5nIG1hbnVhbGx5IG9uIHRoZSA8aW5wdXQ+LCBhIGRyb3Bkb3duIGlzIG9wZW5lZFxuICAgICAqIEJ1dCB3aGVuIHRoZSBmb2N1cyBpcyBnaXZlbiBmcm9tIGFuZ3VsYXIgaW4gYSBwYXJlbnQgY29udGV4dCAobGlrZSBhIGRpYWxvZykgdGhlIGRyb3Bkb3duIHdvdWxkIG9wZW4gYW5kIHdlIGRvbid0IHdhbnQgaXQuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxuICAgIHB1YmxpYyBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZXV0cmFsaXplRHJvcGRvd25PcGVuaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMubmV1dHJhbGl6ZURyb3Bkb3duT3BlbmluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkcm9wZG93blNlcnZpY2U6IE5hdHVyYWxEcm9wZG93blNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZmFjZXRzICYmIHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xlYXIoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5mYWNldHMgJiYgdGhpcy5zZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZmFjZXQgPSBnZXRGYWNldEZyb21TZWxlY3Rpb24odGhpcy5mYWNldHMsIHRoaXMuc2VsZWN0aW9uKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZHJvcGRvd25Db21wb25lbnQgPSB0aGlzLmNyZWF0ZUNvbXBvbmVudCh0aGlzLmZhY2V0IGFzIERyb3Bkb3duRmFjZXQ8RmFjZXRTZWxlY3RvckNvbmZpZ3VyYXRpb24+KTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbGlkYXRvcnMoW2lzQ29tcG9uZW50VmFsaWQoZHJvcGRvd25Db21wb25lbnQpXSk7XG4gICAgICAgICAgICAgICAgZHJvcGRvd25Db21wb25lbnQucmVuZGVyZWRWYWx1ZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0ZsYWcoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUN0cmwuc2V0VmFsdWUoJycpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmZpZWxkID09PSB0aGlzLnNlYXJjaEZpZWxkTmFtZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNvbmRpdGlvbi5saWtlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBnbG9iYWwgc2VhcmNoIG1vZGVcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKCcnICsgdGhpcy5zZWxlY3Rpb24uY29uZGl0aW9uLmxpa2UudmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBjb21wb25lbnQgaXMgaW52YWxpZCAobm8gZmFjZXQgYW5kIG5vdCBhIGdsb2JhbCBzZWFyY2gpLCBjbGVhciBmcm9tIHJlc3VsdCBhbmQgZGVzdHJveSBjb21wb25lbnRcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2xlYXIoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kcm9wZG93blJlZikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybUN0cmwudmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSAkbG9jYWxpemVgUmVjaGVyY2hlYDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyU2l6ZSA9ICh0aGlzLmZhY2V0ID8gdGhpcy5mYWNldC5kaXNwbGF5Lmxlbmd0aCA6IHRoaXMucGxhY2Vob2xkZXIubGVuZ3RoKSAqIDAuNjY7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5taW5MZW5ndGgsIE1hdGguY2VpbChwbGFjZWhvbGRlclNpemUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZWFyY2goZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICghdGhpcy5mb3JtQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb3JtQ3RybC52YWxpZCAmJiB0aGlzLmZvcm1DdHJsLmRpcnR5KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuZ2V0U2VsZWN0aW9uKHtsaWtlOiB7dmFsdWU6IHRoaXMuZm9ybUN0cmwudmFsdWV9fSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhY2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICB0aGlzLmZvcm1DdHJsLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB0aGlzLmNsZWFyZWQuZW1pdCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93blJlZiB8fCB0aGlzLm5ldXRyYWxpemVEcm9wZG93bk9wZW5pbmcpIHtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgdG8gb3BlbiBtdWx0aXBsZSBkcm9wZG93bnMuXG4gICAgICAgICAgICAvLyBIYXBwZW5zIGFzIHdlIG9wZW4gb24gXCJmb2N1c1wiLCBhbmQgYWx0K3RhYiByZS1hY3RpdmF0ZSBmb2N1cyBvbiBhbiBlbGVtZW50IHRoYXQgYWxyZWFkeSBoYWRcbiAgICAgICAgICAgIC8vIGZvY3VzIHdoZW4gbGVhdmluZyB3aW5kb3cgd2l0aCBhbm90aGVyIGFsdCt0YWJcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGF1bmNoUmlwcGxlKCk7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZmFjZXQgYW5kIG5vIHN0cmluZyB0eXBlZCwgc2hvdyBwYW5lbCB0byBzZWxlY3QgdGhlIGZhY2V0XG4gICAgICAgIGlmICghdGhpcy5mYWNldCAmJiAhdGhpcy5mb3JtQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuRmFjZXRTZWxlY3RvckRyb3Bkb3duKHRoaXMuZHJvcGRvd25UaXRsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBJZiBhIGZhY2V0IGlzIHNlbGVjdGVkLCBvcGVuIHNwZWNpZmljIGNvbXBvbmVudCBkcm9wZG93blxuICAgICAgICAgICAgdGhpcy5vcGVuVHlwZURyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaXNEcm9wZG93bigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuZmFjZXQgJiYgKHRoaXMuZmFjZXQgYXMgRHJvcGRvd25GYWNldDx1bmtub3duPikuY29tcG9uZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGbGFnKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5mYWNldCAmJiAodGhpcy5mYWNldCBhcyBGbGFnRmFjZXQ8RmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZD4pLmNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVDb21wb25lbnQoZmFjZXQ6IERyb3Bkb3duRmFjZXQ8dW5rbm93bj4pOiBEcm9wZG93bkNvbXBvbmVudCB7XG4gICAgICAgIC8vIEFsd2F5cyBkZXN0cm95IGFuZCByZWNyZWF0ZSBjb21wb25lbnRcbiAgICAgICAgLy8gVG9kbyA6IHRlc3QgaWYgZmFjZXQgaGFzIGNoYW5nZWQsIGlmIG5vdCByZS11c2UgdGhlIGNvbXBvbmVudFxuICAgICAgICBpZiAodGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25kaXRpb24gPSB0aGlzLnNlbGVjdGlvbiA/IHRoaXMuc2VsZWN0aW9uLmNvbmRpdGlvbiA6IG51bGw7XG4gICAgICAgIGNvbnN0IGRhdGE6IE5hdHVyYWxEcm9wZG93bkRhdGEgPSB7XG4gICAgICAgICAgICBjb25kaXRpb246IGNvbmRpdGlvbixcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb246IGZhY2V0LmNvbmZpZ3VyYXRpb24sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBjcmVhdGVFbnZpcm9ubWVudEluamVjdG9yKHRoaXMuY3JlYXRlUHJvdmlkZXJzKGRhdGEpLCB0aGlzLmluamVjdG9yKTtcbiAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZiA9IGNyZWF0ZUNvbXBvbmVudChmYWNldC5jb21wb25lbnQsIHtcbiAgICAgICAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IGluamVjdG9yLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZVByb3ZpZGVycyhkYXRhOiBOYXR1cmFsRHJvcGRvd25EYXRhKTogU3RhdGljUHJvdmlkZXJbXSB7XG4gICAgICAgIC8vIEN1c3RvbWl6ZSBpbmplY3RvciB0byBhbGxvdyBkYXRhIGFuZCBkcm9wZG93biByZWZlcmVuY2UgaW5qZWN0aW9uIGluIGNvbXBvbmVudFxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByb3ZpZGU6IE5hdHVyYWxEcm9wZG93blJlZixcbiAgICAgICAgICAgICAgICB1c2VWYWx1ZTogbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogTkFUVVJBTF9EUk9QRE9XTl9EQVRBLFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBkYXRhLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxhdW5jaFJpcHBsZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmlwcGxlUmVmID0gdGhpcy5yaXBwbGUubGF1bmNoKHtcbiAgICAgICAgICAgIHBlcnNpc3RlbnQ6IHRydWUsXG4gICAgICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmlwcGxlUmVmLmZhZGVPdXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5GYWNldFNlbGVjdG9yRHJvcGRvd24odGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZmFjZXRzIHx8ICh0aGlzLmZhY2V0cyAmJiAhdGhpcy5mYWNldHMubGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YTxGYWNldFNlbGVjdG9yQ29uZmlndXJhdGlvbj4gPSB7XG4gICAgICAgICAgICBjb25kaXRpb246IHt9LFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgICAgIGZhY2V0czogdGhpcy5mYWNldHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yVG9rZW5zID0gdGhpcy5jcmVhdGVQcm92aWRlcnMoZGF0YSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSB0aGlzLmRyb3Bkb3duU2VydmljZS5vcGVuKEZhY2V0U2VsZWN0b3JDb21wb25lbnQsIHRoaXMuZWxlbWVudCwgaW5qZWN0b3JUb2tlbnMsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5kcm9wZG93blJlZi5jbG9zZWQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duUmVmID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuZmFjZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGYWNldChyZXN1bHQuZmFjZXQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5UeXBlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0Ryb3Bkb3duKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRyb3Bkb3duRmFjZXQgPSB0aGlzLmZhY2V0IGFzIERyb3Bkb3duRmFjZXQ8dW5rbm93bj47XG5cbiAgICAgICAgY29uc3QgZGF0YTogTmF0dXJhbERyb3Bkb3duRGF0YSA9IHtcbiAgICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5zZWxlY3Rpb24gPyB0aGlzLnNlbGVjdGlvbi5jb25kaXRpb24gOiBudWxsLFxuICAgICAgICAgICAgY29uZmlndXJhdGlvbjogZHJvcGRvd25GYWNldC5jb25maWd1cmF0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGluamVjdG9yVG9rZW5zID0gdGhpcy5jcmVhdGVQcm92aWRlcnMoZGF0YSk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IGRyb3Bkb3duRmFjZXQuY29tcG9uZW50O1xuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmID0gdGhpcy5kcm9wZG93blNlcnZpY2Uub3BlbihcbiAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgICAgIGluamVjdG9yVG9rZW5zLFxuICAgICAgICAgICAgZHJvcGRvd25GYWNldC5zaG93VmFsaWRhdGVCdXR0b24gIT09IHVuZGVmaW5lZCA/IGRyb3Bkb3duRmFjZXQuc2hvd1ZhbGlkYXRlQnV0dG9uIDogdHJ1ZSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRyb3Bkb3duUmVmLmNsb3NlZC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25SZWYgPSBudWxsO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZShyZXN1bHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZhY2V0KGZhY2V0OiBGYWNldCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZhY2V0ID0gZmFjZXQ7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bigpKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5UeXBlRHJvcGRvd24oKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzRmxhZygpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHtcbiAgICAgICAgICAgICAgICBjb25kaXRpb246IChmYWNldCBhcyBGbGFnRmFjZXQ8RmlsdGVyR3JvdXBDb25kaXRpb25GaWVsZD4pLmNvbmRpdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbHVlKHJlc3VsdDogRHJvcGRvd25SZXN1bHQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmFjZXQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5nZXRTZWxlY3Rpb24ocmVzdWx0LmNvbmRpdGlvbikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3Rpb24oY29uZGl0aW9uOiBOYXR1cmFsU2VhcmNoU2VsZWN0aW9uWydjb25kaXRpb24nXSk6IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24ge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb246IE5hdHVyYWxTZWFyY2hTZWxlY3Rpb24gPSB7XG4gICAgICAgICAgICBmaWVsZDogdGhpcy5mYWNldCA/IHRoaXMuZmFjZXQuZmllbGQgOiB0aGlzLnNlYXJjaEZpZWxkTmFtZSxcbiAgICAgICAgICAgIGNvbmRpdGlvbjogY29uZGl0aW9uLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmZhY2V0Py5uYW1lKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24ubmFtZSA9IHRoaXMuZmFjZXQubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3Rpb247XG4gICAgfVxufVxuIiwiPCEtLSBjbGljayBjb25kaXRpb24gc2hvdWxkIG1hdGNoIHRvIGFsbG93IGNsaWNrIGFjdGlvbiBvbmx5IHdoZW4gbm8gb3RoZXIgYnV0dG9uIGlzIHZpc2libGUgLS0+XG48bWF0LWZvcm0tZmllbGQgI2ZpZWxkIG1hdFJpcHBsZSAoY2xpY2spPVwiIXNlbGVjdGlvbiAmJiAhKGZhY2V0ICYmICFzZWxlY3Rpb24pID8gb3BlbkRyb3Bkb3duKCkgOiBudWxsXCI+XG4gICAgQGlmIChmYWNldCkge1xuICAgICAgICA8bWF0LWxhYmVsPnt7IGZhY2V0LmRpc3BsYXkgfX08L21hdC1sYWJlbD5cbiAgICB9XG4gICAgQGlmICghZmFjZXQpIHtcbiAgICAgICAgPG1hdC1sYWJlbD57eyBwbGFjZWhvbGRlciB9fTwvbWF0LWxhYmVsPlxuICAgIH1cblxuICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgKGJsdXIpPVwic2VhcmNoKCRldmVudClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIFthdHRyLnNpemVdPVwibGVuZ3RoXCJcbiAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImVycm9yTWF0Y2hlclwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ3RybFwiXG4gICAgICAgIFtyZWFkb25seV09XCIoaXNEcm9wZG93bigpICYmICEhc2VsZWN0aW9uKSB8fCBpc0ZsYWcoKVwiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAvPlxuXG4gICAgQGlmICghZmFjZXQgJiYgIXNlbGVjdGlvbikge1xuICAgICAgICA8bWF0LWljb24gbmF0dXJhbEljb249XCJzZWFyY2hcIiBtYXRJY29uUHJlZml4IC8+XG4gICAgfVxuXG4gICAgQGlmIChzZWxlY3Rpb24pIHtcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXIoKVwiIG1hdC1pY29uLWJ1dHRvbiBtYXRJY29uU3VmZml4PlxuICAgICAgICAgICAgPG1hdC1pY29uIG5hdHVyYWxJY29uPVwiY2xvc2VcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG5cbiAgICBAaWYgKGZhY2V0ICYmICFzZWxlY3Rpb24pIHtcbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXIoKVwiIG1hdC1pY29uLWJ1dHRvbiBtYXRJY29uU3VmZml4PlxuICAgICAgICAgICAgPG1hdC1pY29uIG5hdHVyYWxJY29uPVwidW5kb1wiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIH1cbjwvbWF0LWZvcm0tZmllbGQ+XG48ZGl2IGNsYXNzPVwiaGlkZVwiPnt7IGZvcm1DdHJsLnZhbHVlID8gZm9ybUN0cmwudmFsdWUgOiBmYWNldCA/IGZhY2V0LmRpc3BsYXkgOiBwbGFjZWhvbGRlciB9fTwvZGl2PlxuIl19
|
|
@@ -142,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
|
|
|
142
142
|
}], filters: [{
|
|
143
143
|
type: Input
|
|
144
144
|
}] } });
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWhpZXJhcmNoaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VsZWN0L3NlbGVjdC1oaWVyYXJjaGljL3NlbGVjdC1oaWVyYXJjaGljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdC9zZWxlY3QtaGllcmFyY2hpYy9zZWxlY3QtaGllcmFyY2hpYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLElBQUksRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQWtDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBVWpHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7OztBQUVoRSxTQUFTLGdCQUFnQixDQUFDLElBQW9CO0lBQzFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU8sRUFBRSxDQUFDO0lBQ2Qs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QUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgU2VsZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdERpYWxvZ0NvbmZpZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TGl0ZXJhbH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHtIaWVyYXJjaGljRmlsdGVyc0NvbmZpZ3VyYXRpb259IGZyb20gJy4uLy4uL2hpZXJhcmNoaWMtc2VsZWN0b3IvY2xhc3Nlcy9oaWVyYXJjaGljLWZpbHRlcnMtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge1xuICAgIEhpZXJhcmNoaWNEaWFsb2dDb25maWcsXG4gICAgTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uLFxuICAgIE5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlLFxuICAgIE9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uLFxufSBmcm9tICcuLi8uLi9oaWVyYXJjaGljLXNlbGVjdG9yL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtBYnN0cmFjdFNlbGVjdH0gZnJvbSAnLi4vYWJzdHJhY3Qtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1JvdXRlckxpbmt9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge01hdFRvb2x0aXBNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge05hdHVyYWxJY29uRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9pY29uL2ljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcblxuZnVuY3Rpb24gZGVmYXVsdERpc3BsYXlGbihpdGVtOiBMaXRlcmFsIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbS5mdWxsTmFtZSB8fCBpdGVtLm5hbWUgfHwgaXRlbS5pYmFuIHx8IGl0ZW0uaWQgfHwgaXRlbTtcbn1cblxuLyoqXG4gKiBEZWZhdWx0IHVzYWdlOlxuICogPG5hdHVyYWwtc2VsZWN0IFtjb25maWddPVwibXlDb25maWdcIiBbKG5nTW9kZWwpXT1cImFtYXppbmdNb2RlbFwiXG4gKiAobmdNb2RlbENoYW5nZSk9YW1hemluZ0NoYW5nZUZuKCRldmVudCk+PC9uYXR1cmFsLXNlbGVjdD5cbiAqXG4gKiBbKG5nTW9kZWwpXSBhbmQgKG5nTW9kZWxDaGFuZ2UpIGFyZSBvcHRpb25hbFxuICpcbiAqIFBsYWNlaG9sZGVyIDpcbiAqIDxuYXR1cmFsLXNlbGVjdCBwbGFjZWhvbGRlcj1cImFtYXppbmcgcGxhY2Vob2xkZXJcIj5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduYXR1cmFsLXNlbGVjdC1oaWVyYXJjaGljJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWhpZXJhcmNoaWMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NlbGVjdC1oaWVyYXJjaGljLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICAgICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBNYXRJY29uTW9kdWxlLFxuICAgICAgICBOYXR1cmFsSWNvbkRpcmVjdGl2ZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgICAgICBSb3V0ZXJMaW5rLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdHVyYWxTZWxlY3RIaWVyYXJjaGljQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFNlbGVjdDxMaXRlcmFsLCBzdHJpbmc+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgICAvKipcbiAgICAgKiBJZiBwcm92aWRlZCBjYXVzZSBhIG5ldyBzZWxlY3QgYnV0dG9uIHRvIGFwcGVhclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RMYWJlbD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gZm9yIGhpZXJhcmNoaWMgcmVsYXRpb25zXG4gICAgICpcbiAgICAgKiBJdCBzaG91bGQgYmUgYW4gYXJyYXkgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudCB3aXRoIGBzZWxlY3RhYmxlQXRLZXlgIGNvbmZpZ3VyZWQsIG90aGVyd2lzZSB0aGUgc2VsZWN0b3Igd2lsbCBuZXZlciBvcGVuLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBjb25maWc6IE5hdHVyYWxIaWVyYXJjaGljQ29uZmlndXJhdGlvbltdIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBGaWx0ZXJzIGZvcm1hdHRlZCBmb3IgaGllcmFyY2hpYyBzZWxlY3RvclxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBmaWx0ZXJzPzogSGllcmFyY2hpY0ZpbHRlcnNDb25maWd1cmF0aW9uO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHNlbGVjdGVkIHZhbHVlIGFzIGFuIG9iamVjdC4gVGhlIGludGVybmFsIHZhbHVlIGlzIGBpbnRlcm5hbEN0cmwudmFsdWVgLCBhbmQgdGhhdCBpcyBhIHN0cmluZy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHZhbHVlOiBMaXRlcmFsIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBPbiBGaXJlZm94LCB0aGUgY29tYmluYXRpb24gb2YgPGlucHV0IChmb2N1cyk+IGV2ZW50IGFuZCBkaWFsb2cgb3BlbmluZyBjYXVzZSBzb21lIHN0cmFuZ2UgYnVnIHdoZXJlIGZvY3VzIGV2ZW50IGlzIGNhbGxlZCBtdWx0aXBsZVxuICAgICAqIHRpbWVzIFRoaXMgcHJldmVudHMgaXQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2NrT3BlbkRpYWxvZyA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2U6IE5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICApIHtcbiAgICAgICAgc3VwZXIobmdDb250cm9sKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBWZXJ5IGltcG9ydGFudCB0byByZXR1cm4gc29tZXRoaW5nLCBhYm92ZSBhbGwgaWYgW3NlbGVjdF09J2Rpc3BsYXllZFZhbHVlJyBhdHRyaWJ1dGUgdmFsdWUgaXMgdXNlZFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXREaXNwbGF5Rm4oKTogKGl0ZW06IExpdGVyYWwgfCBudWxsKSA9PiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5V2l0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheVdpdGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGVmYXVsdERpc3BsYXlGbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZSBwYXJlbnQgYmVjYXVzZSBvdXIgaW50ZXJuYWxDdHJsIHN0b3JlIHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIGFzIHN0cmluZyBpbnN0ZWFkIG9mIHJhdyBMaXRlcmFsXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IExpdGVyYWwgfCBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZSBhcyBMaXRlcmFsO1xuICAgICAgICB0aGlzLmludGVybmFsQ3RybC5zZXRWYWx1ZSh0aGlzLmdldERpc3BsYXlGbigpKHRoaXMudmFsdWUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkRpYWxvZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW50ZXJuYWxDdHJsLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sb2NrT3BlbkRpYWxvZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0QXRLZXkgPSB0aGlzLmdldFNlbGVjdEtleSgpO1xuICAgICAgICBpZiAoIXNlbGVjdEF0S2V5IHx8ICF0aGlzLmNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2NrT3BlbkRpYWxvZyA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMub25Ub3VjaGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQ6IE9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uID0ge307XG5cbiAgICAgICAgaWYgKHRoaXMuaW50ZXJuYWxDdHJsLnZhbHVlKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFtzZWxlY3RBdEtleV0gPSBbdGhpcy52YWx1ZV07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoaWVyYXJjaGljQ29uZmlnOiBIaWVyYXJjaGljRGlhbG9nQ29uZmlnID0ge1xuICAgICAgICAgICAgaGllcmFyY2hpY0NvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICAgICAgICBoaWVyYXJjaGljU2VsZWN0aW9uOiBzZWxlY3RlZCxcbiAgICAgICAgICAgIGhpZXJhcmNoaWNGaWx0ZXJzOiB0aGlzLmZpbHRlcnMsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgZGlhbG9nRm9jdXM6IE1hdERpYWxvZ0NvbmZpZyA9IHtyZXN0b3JlRm9jdXM6IGZhbHNlfTtcblxuICAgICAgICB0aGlzLmhpZXJhcmNoaWNTZWxlY3RvckRpYWxvZ1NlcnZpY2VcbiAgICAgICAgICAgIC5vcGVuKGhpZXJhcmNoaWNDb25maWcsIGRpYWxvZ0ZvY3VzKVxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2tPcGVuRGlhbG9nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdD8uaGllcmFyY2hpY1NlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSByZXN1bHQuaGllcmFyY2hpY1NlbGVjdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgb25seSBzZWxlY3Rpb24gYW1vbmdzdCBhbGwgcG9zc2libGUga2V5c1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlXaXRoU2VsZWN0aW9uID0gT2JqZWN0LmtleXMoc2VsZWN0aW9uKS5maW5kKGtleSA9PiBzZWxlY3Rpb25ba2V5XVswXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpbmdsZVNlbGVjdGlvbiA9IGtleVdpdGhTZWxlY3Rpb24gPyBzZWxlY3Rpb25ba2V5V2l0aFNlbGVjdGlvbl1bMF0gOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShzaW5nbGVTZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlKHNpbmdsZVNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dTZWxlY3RCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhISh0aGlzLmludGVybmFsQ3RybD8uZW5hYmxlZCAmJiB0aGlzLnNlbGVjdExhYmVsICYmIHRoaXMuZ2V0U2VsZWN0S2V5KCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VsZWN0S2V5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZz8uZmlsdGVyKGMgPT4gISFjLnNlbGVjdGFibGVBdEtleSlbMF0/LnNlbGVjdGFibGVBdEtleTtcbiAgICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1sYWJlbD57eyBwbGFjZWhvbGRlciB9fTwvbWF0LWxhYmVsPlxuXG4gICAgPCEtLSBJbnB1dCBmb3IgaGllcmFyY2hpY2FsIHNlbGVjdG9yIC0tPlxuICAgIDxpbnB1dFxuICAgICAgICAoYmx1cik9XCJibHVyLmVtaXQoKVwiXG4gICAgICAgIChmb2N1cyk9XCJvcGVuRGlhbG9nKClcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW50ZXJuYWxDdHJsXCJcbiAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cIm1hdGNoZXJcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiUmVjaGVyY2hlIGV0IHPDqWxlY3Rpb25cIlxuICAgICAgICBpMThuLWFyaWEtbGFiZWxcbiAgICAgICAgbWF0SW5wdXRcbiAgICAvPlxuXG4gICAgPCEtLSBNZXRhIGRhdGEgLS0+XG4gICAgQGlmIChzaG93SWNvbikge1xuICAgICAgICA8bWF0LWljb24gW25hdHVyYWxJY29uXT1cImljb25cIiBtYXRJY29uUHJlZml4IC8+XG4gICAgfVxuXG4gICAgQGlmIChoaW50KSB7XG4gICAgICAgIDxtYXQtaGludD57eyBoaW50IH19PC9tYXQtaGludD5cbiAgICB9XG5cbiAgICA8IS0tIENsZWFyIGJ1dHRvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwic3VmZml4LWJ1dHRvbnNcIiBtYXRJY29uU3VmZml4PlxuICAgICAgICBAaWYgKGludGVybmFsQ3RybC52YWx1ZSAmJiBpbnRlcm5hbEN0cmwuZW5hYmxlZCAmJiAhY2xlYXJMYWJlbCkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEw6lzw6lsZWN0aW9ubmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gbmF0dXJhbEljb249XCJjbG9zZVwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGludGVybmFsQ3RybC52YWx1ZSAmJiBuYXZpZ2F0ZVRvKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibmF2aWdhdGVUb1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgaTE4bi1tYXRUb29sdGlwXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk5hdmlndWVyIHZlcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBuYXR1cmFsSWNvbj1cIm9wZW5faW5fYnJvd3NlclwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgQGlmIChoYXNSZXF1aXJlZEVycm9yKCkpIHtcbiAgICAgICAgPG1hdC1lcnJvciBpMThuPkNlIGNoYW1wIGVzdCByZXF1aXM8L21hdC1lcnJvcj5cbiAgICB9XG48L21hdC1mb3JtLWZpZWxkPlxuXG48IS0tICAgIEFkZGl0aW9uYWwgKHVuKXNlbGVjdC8odW4pbGluayBidXR0b25zIGZvciBtb3JlIHZpc3VhbCBjb2hlc2lvbiB3aXRoIG5hdHVyYWwtcmVsYXRpb25zIC0tPjwhLS0gW2NsZWFyTGFiZWxdIGFuZC9vciBbc2VsZWN0TGFiZWxdIGhhcyB0byBiZSBnaXZlbiBhcyBhdHRyaWJ1dGUgaW5wdXQgLS0+XG5AaWYgKHNob3dTZWxlY3RCdXR0b24oKSB8fCBzaG93Q2xlYXJCdXR0b24oKSkge1xuICAgIDxkaXYgY2xhc3M9XCJleHRlcm5hbC1idXR0b25zXCI+XG4gICAgICAgIEBpZiAoc2hvd1NlbGVjdEJ1dHRvbigpKSB7XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvcGVuRGlhbG9nKClcIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtZmxhdC1idXR0b24+e3sgc2VsZWN0TGFiZWwgfX08L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHNob3dDbGVhckJ1dHRvbigpKSB7XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbGVhcigpXCIgY29sb3I9XCJ3YXJuXCIgbWF0LWJ1dHRvbj57eyBjbGVhckxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbn1cbiJdfQ==
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWhpZXJhcmNoaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmF0dXJhbC9zcmMvbGliL21vZHVsZXMvc2VsZWN0L3NlbGVjdC1oaWVyYXJjaGljL3NlbGVjdC1oaWVyYXJjaGljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25hdHVyYWwvc3JjL2xpYi9tb2R1bGVzL3NlbGVjdC9zZWxlY3QtaGllcmFyY2hpYy9zZWxlY3QtaGllcmFyY2hpYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLElBQUksRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQWtDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBVWpHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7OztBQUVoRSxTQUFTLGdCQUFnQixDQUFDLElBQW9CO0lBQzFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU8sRUFBRSxDQUFDO0lBQ2Qs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QUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgU2VsZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdERpYWxvZ0NvbmZpZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TGl0ZXJhbH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHtIaWVyYXJjaGljRmlsdGVyc0NvbmZpZ3VyYXRpb259IGZyb20gJy4uLy4uL2hpZXJhcmNoaWMtc2VsZWN0b3IvY2xhc3Nlcy9oaWVyYXJjaGljLWZpbHRlcnMtY29uZmlndXJhdGlvbic7XG5pbXBvcnQge1xuICAgIEhpZXJhcmNoaWNEaWFsb2dDb25maWcsXG4gICAgTmF0dXJhbEhpZXJhcmNoaWNDb25maWd1cmF0aW9uLFxuICAgIE5hdHVyYWxIaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlLFxuICAgIE9yZ2FuaXplZE1vZGVsU2VsZWN0aW9uLFxufSBmcm9tICcuLi8uLi9oaWVyYXJjaGljLXNlbGVjdG9yL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtBYnN0cmFjdFNlbGVjdH0gZnJvbSAnLi4vYWJzdHJhY3Qtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQge1JvdXRlckxpbmt9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge01hdFRvb2x0aXBNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHtNYXRCdXR0b25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQge05hdHVyYWxJY29uRGlyZWN0aXZlfSBmcm9tICcuLi8uLi9pY29uL2ljb24uZGlyZWN0aXZlJztcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5cbmZ1bmN0aW9uIGRlZmF1bHREaXNwbGF5Rm4oaXRlbTogTGl0ZXJhbCB8IG51bGwpOiBzdHJpbmcge1xuICAgIGlmICghaXRlbSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZW0uZnVsbE5hbWUgfHwgaXRlbS5uYW1lIHx8IGl0ZW0uaWJhbiB8fCBpdGVtLmlkIHx8IGl0ZW07XG59XG5cbi8qKlxuICogRGVmYXVsdCB1c2FnZTpcbiAqIDxuYXR1cmFsLXNlbGVjdCBbY29uZmlnXT1cIm15Q29uZmlnXCIgWyhuZ01vZGVsKV09XCJhbWF6aW5nTW9kZWxcIlxuICogKG5nTW9kZWxDaGFuZ2UpPWFtYXppbmdDaGFuZ2VGbigkZXZlbnQpPjwvbmF0dXJhbC1zZWxlY3Q+XG4gKlxuICogWyhuZ01vZGVsKV0gYW5kIChuZ01vZGVsQ2hhbmdlKSBhcmUgb3B0aW9uYWxcbiAqXG4gKiBQbGFjZWhvbGRlciA6XG4gKiA8bmF0dXJhbC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJhbWF6aW5nIHBsYWNlaG9sZGVyXCI+XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmF0dXJhbC1zZWxlY3QtaGllcmFyY2hpYycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1oaWVyYXJjaGljLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtaGllcmFyY2hpYy5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgICAgIE1hdElucHV0TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgTmF0dXJhbEljb25EaXJlY3RpdmUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICAgICAgUm91dGVyTGluayxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXR1cmFsU2VsZWN0SGllcmFyY2hpY0NvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RTZWxlY3Q8TGl0ZXJhbCwgc3RyaW5nPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gICAgLyoqXG4gICAgICogSWYgcHJvdmlkZWQgY2F1c2UgYSBuZXcgc2VsZWN0IGJ1dHRvbiB0byBhcHBlYXJcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0TGFiZWw/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIGZvciBoaWVyYXJjaGljIHJlbGF0aW9uc1xuICAgICAqXG4gICAgICogSXQgc2hvdWxkIGJlIGFuIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnQgd2l0aCBgc2VsZWN0YWJsZUF0S2V5YCBjb25maWd1cmVkLCBvdGhlcndpc2UgdGhlIHNlbGVjdG9yIHdpbGwgbmV2ZXIgb3Blbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgY29uZmlnOiBOYXR1cmFsSGllcmFyY2hpY0NvbmZpZ3VyYXRpb25bXSB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogRmlsdGVycyBmb3JtYXR0ZWQgZm9yIGhpZXJhcmNoaWMgc2VsZWN0b3JcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgZmlsdGVycz86IEhpZXJhcmNoaWNGaWx0ZXJzQ29uZmlndXJhdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzZWxlY3RlZCB2YWx1ZSBhcyBhbiBvYmplY3QuIFRoZSBpbnRlcm5hbCB2YWx1ZSBpcyBgaW50ZXJuYWxDdHJsLnZhbHVlYCwgYW5kIHRoYXQgaXMgYSBzdHJpbmcuXG4gICAgICovXG4gICAgcHJpdmF0ZSB2YWx1ZTogTGl0ZXJhbCB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogT24gRmlyZWZveCwgdGhlIGNvbWJpbmF0aW9uIG9mIDxpbnB1dCAoZm9jdXMpPiBldmVudCBhbmQgZGlhbG9nIG9wZW5pbmcgY2F1c2Ugc29tZSBzdHJhbmdlIGJ1ZyB3aGVyZSBmb2N1cyBldmVudCBpcyBjYWxsZWQgbXVsdGlwbGVcbiAgICAgKiB0aW1lcyBUaGlzIHByZXZlbnRzIGl0LlxuICAgICAqL1xuICAgIHByaXZhdGUgbG9ja09wZW5EaWFsb2cgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBoaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlOiBOYXR1cmFsSGllcmFyY2hpY1NlbGVjdG9yRGlhbG9nU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKG5nQ29udHJvbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmVyeSBpbXBvcnRhbnQgdG8gcmV0dXJuIHNvbWV0aGluZywgYWJvdmUgYWxsIGlmIFtzZWxlY3RdPSdkaXNwbGF5ZWRWYWx1ZScgYXR0cmlidXRlIHZhbHVlIGlzIHVzZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGlzcGxheUZuKCk6IChpdGVtOiBMaXRlcmFsIHwgbnVsbCkgPT4gc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheVdpdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlXaXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRlZmF1bHREaXNwbGF5Rm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgcGFyZW50IGJlY2F1c2Ugb3VyIGludGVybmFsQ3RybCBzdG9yZSB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBhcyBzdHJpbmcgaW5zdGVhZCBvZiByYXcgTGl0ZXJhbFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBMaXRlcmFsIHwgc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWUgYXMgTGl0ZXJhbDtcbiAgICAgICAgdGhpcy5pbnRlcm5hbEN0cmwuc2V0VmFsdWUodGhpcy5nZXREaXNwbGF5Rm4oKSh0aGlzLnZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5EaWFsb2coKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmludGVybmFsQ3RybC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubG9ja09wZW5EaWFsb2cpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdEF0S2V5ID0gdGhpcy5nZXRTZWxlY3RLZXkoKTtcbiAgICAgICAgaWYgKCFzZWxlY3RBdEtleSB8fCAhdGhpcy5jb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9ja09wZW5EaWFsb2cgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkOiBPcmdhbml6ZWRNb2RlbFNlbGVjdGlvbiA9IHt9O1xuXG4gICAgICAgIGlmICh0aGlzLmludGVybmFsQ3RybC52YWx1ZSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRbc2VsZWN0QXRLZXldID0gW3RoaXMudmFsdWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGllcmFyY2hpY0NvbmZpZzogSGllcmFyY2hpY0RpYWxvZ0NvbmZpZyA9IHtcbiAgICAgICAgICAgIGhpZXJhcmNoaWNDb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgICAgICAgaGllcmFyY2hpY1NlbGVjdGlvbjogc2VsZWN0ZWQsXG4gICAgICAgICAgICBoaWVyYXJjaGljRmlsdGVyczogdGhpcy5maWx0ZXJzLFxuICAgICAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGRpYWxvZ0ZvY3VzOiBNYXREaWFsb2dDb25maWcgPSB7cmVzdG9yZUZvY3VzOiBmYWxzZX07XG5cbiAgICAgICAgdGhpcy5oaWVyYXJjaGljU2VsZWN0b3JEaWFsb2dTZXJ2aWNlXG4gICAgICAgICAgICAub3BlbihoaWVyYXJjaGljQ29uZmlnLCBkaWFsb2dGb2N1cylcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NrT3BlbkRpYWxvZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQ/LmhpZXJhcmNoaWNTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gcmVzdWx0LmhpZXJhcmNoaWNTZWxlY3Rpb247XG4gICAgICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIG9ubHkgc2VsZWN0aW9uIGFtb25nc3QgYWxsIHBvc3NpYmxlIGtleXNcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5V2l0aFNlbGVjdGlvbiA9IE9iamVjdC5rZXlzKHNlbGVjdGlvbikuZmluZChrZXkgPT4gc2VsZWN0aW9uW2tleV1bMF0pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaW5nbGVTZWxlY3Rpb24gPSBrZXlXaXRoU2VsZWN0aW9uID8gc2VsZWN0aW9uW2tleVdpdGhTZWxlY3Rpb25dWzBdIDogbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUoc2luZ2xlU2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wYWdhdGVWYWx1ZShzaW5nbGVTZWxlY3Rpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93U2VsZWN0QnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5pbnRlcm5hbEN0cmw/LmVuYWJsZWQgJiYgdGhpcy5zZWxlY3RMYWJlbCAmJiB0aGlzLmdldFNlbGVjdEtleSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlbGVjdEtleSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWc/LmZpbHRlcihjID0+ICEhYy5zZWxlY3RhYmxlQXRLZXkpWzBdPy5zZWxlY3RhYmxlQXRLZXk7XG4gICAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtbGFiZWw+e3sgcGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cblxuICAgIDwhLS0gSW5wdXQgZm9yIGhpZXJhcmNoaWNhbCBzZWxlY3RvciAtLT5cbiAgICA8aW5wdXRcbiAgICAgICAgKGJsdXIpPVwiYmx1ci5lbWl0KClcIlxuICAgICAgICAoZm9jdXMpPVwib3BlbkRpYWxvZygpXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImludGVybmFsQ3RybFwiXG4gICAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJtYXRjaGVyXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIlJlY2hlcmNoZSBldCBzw6lsZWN0aW9uXCJcbiAgICAgICAgaTE4bi1hcmlhLWxhYmVsXG4gICAgICAgIG1hdElucHV0XG4gICAgLz5cblxuICAgIDwhLS0gTWV0YSBkYXRhIC0tPlxuICAgIEBpZiAoc2hvd0ljb24pIHtcbiAgICAgICAgPG1hdC1pY29uIFtuYXR1cmFsSWNvbl09XCJpY29uXCIgbWF0SWNvblByZWZpeCAvPlxuICAgIH1cblxuICAgIEBpZiAoaGludCkge1xuICAgICAgICA8bWF0LWhpbnQ+e3sgaGludCB9fTwvbWF0LWhpbnQ+XG4gICAgfVxuXG4gICAgPCEtLSBDbGVhciBidXR0b24gLS0+XG4gICAgPGRpdiBjbGFzcz1cInN1ZmZpeC1idXR0b25zXCIgbWF0SWNvblN1ZmZpeD5cbiAgICAgICAgQGlmIChpbnRlcm5hbEN0cmwudmFsdWUgJiYgaW50ZXJuYWxDdHJsLmVuYWJsZWQgJiYgIWNsZWFyTGFiZWwpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXBcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRMOpc8OpbGVjdGlvbm5lclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIG5hdHVyYWxJY29uPVwiY2xvc2VcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChpbnRlcm5hbEN0cmwudmFsdWUgJiYgbmF2aWdhdGVUbykge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIm5hdmlnYXRlVG9cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcFxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJOYXZpZ3VlciB2ZXJzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gbmF0dXJhbEljb249XCJvcGVuX2luX2Jyb3dzZXJcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoaGFzUmVxdWlyZWRFcnJvcigpKSB7XG4gICAgICAgIDxtYXQtZXJyb3IgaTE4bj5DZSBjaGFtcCBlc3QgcmVxdWlzPC9tYXQtZXJyb3I+XG4gICAgfVxuPC9tYXQtZm9ybS1maWVsZD5cblxuPCEtLSAgICBBZGRpdGlvbmFsICh1bilzZWxlY3QvKHVuKWxpbmsgYnV0dG9ucyBmb3IgbW9yZSB2aXN1YWwgY29oZXNpb24gd2l0aCBuYXR1cmFsLXJlbGF0aW9ucyAtLT48IS0tIFtjbGVhckxhYmVsXSBhbmQvb3IgW3NlbGVjdExhYmVsXSBoYXMgdG8gYmUgZ2l2ZW4gYXMgYXR0cmlidXRlIGlucHV0IC0tPlxuQGlmIChzaG93U2VsZWN0QnV0dG9uKCkgfHwgc2hvd0NsZWFyQnV0dG9uKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZXh0ZXJuYWwtYnV0dG9uc1wiPlxuICAgICAgICBAaWYgKHNob3dTZWxlY3RCdXR0b24oKSkge1xuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib3BlbkRpYWxvZygpXCIgY29sb3I9XCJwcmltYXJ5XCIgbWF0LWZsYXQtYnV0dG9uPnt7IHNlbGVjdExhYmVsIH19PC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzaG93Q2xlYXJCdXR0b24oKSkge1xuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXIoKVwiIGNvbG9yPVwid2FyblwiIG1hdC1idXR0b24+e3sgY2xlYXJMYWJlbCB9fTwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG59XG4iXX0=
|