tango-app-ui-store-builder 1.2.16 → 1.2.18
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/components/access-denied/access-denied.component.mjs +31 -0
- package/esm2022/lib/components/collection-update-ai/collection-update-ai.component.mjs +3 -3
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +3 -3
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template/template-assign-stores/preview-modal/preview-modal.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template/template-assign-stores/template-assign-stores.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template-table/find-and-replace/find-and-replace.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template-table/fixture-template-table.component.mjs +25 -3
- package/esm2022/lib/components/fixture-template-tree/fixture-template-tree.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +9 -3
- package/esm2022/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.mjs +9 -3
- package/esm2022/lib/components/onboard-store-plano/onboard-store-plano.component.mjs +133 -21
- package/esm2022/lib/components/plano-configurations/plano-configurations.component.mjs +25 -9
- package/esm2022/lib/components/plano-library/fixture-library/fixture-library.component.mjs +28 -5
- package/esm2022/lib/components/plano-tools/allow-edit/allow-edit.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/cad-files/cad-files.component.mjs +5 -4
- package/esm2022/lib/components/plano-tools/cad-render/cad-render.component.mjs +6 -5
- package/esm2022/lib/components/plano-tools/delete-floor/delete-floor.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/delete-task/delete-task.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/layout-touchup/layout-touchup.component.mjs +134 -0
- package/esm2022/lib/components/plano-tools/layout-touchup/touchup-editor/touchup-editor.component.mjs +5103 -0
- package/esm2022/lib/components/plano-tools/modify-fixture-numbers/modify-fixture-numbers.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/move-bucket/move-bucket.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/plano-data-export/plano-data-export.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/plano-migrate/plano-migrate.component.mjs +6 -5
- package/esm2022/lib/components/plano-tools/store-exports/store-exports.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/swap-template/swap-template.component.mjs +4 -3
- package/esm2022/lib/components/plano-tools/tool-page-header/tool-page-header.component.mjs +22 -0
- package/esm2022/lib/components/plano-tools/tools-parent/tools-parent.component.mjs +27 -8
- package/esm2022/lib/components/planogram/merch-compliance/merch-compliance.component.mjs +3 -3
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-locator.component.mjs +3 -3
- package/esm2022/lib/components/planogram/plano-overview/plano-comparison/plano-comparison.component.mjs +3 -3
- package/esm2022/lib/components/planogram/plano-overview/plano-overview.component.mjs +3 -3
- package/esm2022/lib/components/popups/publish-plano-modal/publish-plano-modal.component.mjs +1 -1
- package/esm2022/lib/components/store-plano/store-plano-tree-view/store-plano-tree-view.component.mjs +3 -3
- package/esm2022/lib/components/store-plano/store-plano.component.mjs +3 -3
- package/esm2022/lib/functions/feature-access.guard.mjs +20 -0
- package/esm2022/lib/functions/plano.function.mjs +22 -1
- package/esm2022/lib/services/store-builder.service.mjs +24 -3
- package/esm2022/lib/tango-store-builder-routing.module.mjs +35 -55
- package/esm2022/lib/tango-store-builder.module.mjs +14 -2
- package/fesm2022/tango-app-ui-store-builder.mjs +5863 -376
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/access-denied/access-denied.component.d.ts +18 -0
- package/lib/components/fixture-template-table/fixture-template-table.component.d.ts +6 -0
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +4 -4
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +5 -5
- package/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.d.ts +1 -0
- package/lib/components/manage-store-plano/zone-verification-feedback/zone-verification-feedback.component.d.ts +1 -0
- package/lib/components/onboard-store-plano/onboard-store-plano.component.d.ts +8 -0
- package/lib/components/plano-configurations/plano-configurations.component.d.ts +9 -1
- package/lib/components/plano-library/fixture-library/fixture-library.component.d.ts +5 -1
- package/lib/components/plano-tools/layout-touchup/layout-touchup.component.d.ts +50 -0
- package/lib/components/plano-tools/layout-touchup/touchup-editor/touchup-editor.component.d.ts +331 -0
- package/lib/components/plano-tools/tool-page-header/tool-page-header.component.d.ts +8 -0
- package/lib/components/plano-tools/tools-parent/tools-parent.component.d.ts +4 -2
- package/lib/functions/feature-access.guard.d.ts +9 -0
- package/lib/functions/plano.function.d.ts +9 -0
- package/lib/services/store-builder.service.d.ts +16 -0
- package/lib/tango-store-builder.module.d.ts +62 -58
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@ import * as i1 from "../../../services/store-builder.service";
|
|
|
5
5
|
import * as i2 from "tango-app-ui-global";
|
|
6
6
|
import * as i3 from "@angular/forms";
|
|
7
7
|
import * as i4 from "../../collection-update-ai/components/store-select/store-select.component";
|
|
8
|
+
import * as i5 from "../tool-page-header/tool-page-header.component";
|
|
8
9
|
export class ModifyFixtureNumbersComponent {
|
|
9
10
|
sbs;
|
|
10
11
|
gs;
|
|
@@ -147,10 +148,10 @@ export class ModifyFixtureNumbersComponent {
|
|
|
147
148
|
this.destroy$.complete();
|
|
148
149
|
}
|
|
149
150
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModifyFixtureNumbersComponent, deps: [{ token: i1.StoreBuilderService }, { token: i2.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
150
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ModifyFixtureNumbersComponent, selector: "lib-modify-fixture-numbers", ngImport: i0, template: "<section class=\"modify-fixture-numbers p-3\">\r\n <
|
|
151
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ModifyFixtureNumbersComponent, selector: "lib-modify-fixture-numbers", ngImport: i0, template: "<section class=\"modify-fixture-numbers p-3\">\r\n <lib-tool-page-header\r\n title=\"Modify Fixture Numbers\"\r\n description=\"Renumber fixtures in a planogram.\"\r\n ></lib-tool-page-header>\r\n <div class=\"card p-4\">\r\n\r\n <!-- Store Select -->\r\n <div class=\"mb-3\" style=\"max-width: 600px;\">\r\n <label class=\"form-label\">Store</label>\r\n <lib-store-select\r\n [options]=\"storeOptions\"\r\n [initialSelected]=\"initialStores\"\r\n [singleSelect]=\"true\"\r\n (selectedChange)=\"onStoresSelected($event)\">\r\n </lib-store-select>\r\n </div>\r\n\r\n <!-- Auto Reorder -->\r\n @if (selectedStoreName) {\r\n <div class=\"mb-3 d-flex align-items-center gap-3\">\r\n <button class=\"btn btn-primary\" (click)=\"onAutoReorder()\" [disabled]=\"isReordering\">\r\n {{ isReordering ? 'Reordering...' : 'Auto Reorder Fixture Numbers' }}\r\n </button>\r\n <small class=\"text-muted\">\r\n Reorders fixtureNumber per floor by associatedElementNumber, then associatedElementFixtureNumber.\r\n </small>\r\n </div>\r\n }\r\n\r\n <!-- Fixture List -->\r\n @if (selectedStoreName) {\r\n @if (isLoadingFixtures) {\r\n <div class=\"text-muted\">Loading fixtures...</div>\r\n } @else if (floorGroups.length === 0) {\r\n <div class=\"text-muted\">No fixtures found for this store.</div>\r\n } @else {\r\n @for (group of floorGroups; track group.floorId) {\r\n <div class=\"floor-group mb-4\">\r\n <h6 class=\"floor-heading\">Floor: <span class=\"text-muted small\">{{ group.floorId }}</span></h6>\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-sm align-middle fixture-table\">\r\n <thead>\r\n <tr>\r\n <th>Header Label</th>\r\n <th>Fixture Type</th>\r\n <th>Element #</th>\r\n <th style=\"width: 140px;\">Fixture #</th>\r\n <th style=\"width: 180px;\">Element Fixture #</th>\r\n <th style=\"width: 110px;\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (f of group.fixtures; track f._id) {\r\n <tr>\r\n <td>{{ f.headerLabel || '\u2014' }}</td>\r\n <td>{{ f.fixtureType || '\u2014' }}</td>\r\n <td>{{ f.associatedElementNumber ?? '\u2014' }}</td>\r\n <td>\r\n <input type=\"number\" class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"f.editFixtureNumber\">\r\n </td>\r\n <td>\r\n <input type=\"number\" class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"f.editAssociatedElementFixtureNumber\">\r\n </td>\r\n <td>\r\n <button class=\"btn btn-sm btn-success\" (click)=\"onSaveFixture(f)\"\r\n [disabled]=\"f.isSaving\">\r\n {{ f.isSaving ? 'Saving...' : 'Save' }}\r\n </button>\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n }\r\n }\r\n }\r\n\r\n <!-- Message -->\r\n @if (message) {\r\n <div class=\"mt-3 alert\" [class.alert-success]=\"messageType === 'success'\"\r\n [class.alert-danger]=\"messageType === 'error'\">\r\n {{ message }}\r\n </div>\r\n }\r\n </div>\r\n</section>\r\n", styles: [".modify-fixture-numbers .floor-group{border:1px solid #e4e7ec;border-radius:8px;padding:12px 16px;background-color:#fff}.modify-fixture-numbers .floor-heading{margin-bottom:12px;color:#344054}.modify-fixture-numbers .fixture-table th{background-color:#f9fafb;font-weight:600;font-size:13px;color:#475467}.modify-fixture-numbers .fixture-table td{font-size:13px;vertical-align:middle}.modify-fixture-numbers .fixture-table input.form-control-sm{max-width:140px}\n"], dependencies: [{ kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.StoreSelectComponent, selector: "lib-store-select", inputs: ["options", "initialSelected", "singleSelect"], outputs: ["selectedChange"] }, { kind: "component", type: i5.ToolPageHeaderComponent, selector: "lib-tool-page-header", inputs: ["title", "description", "backLink"] }] });
|
|
151
152
|
}
|
|
152
153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModifyFixtureNumbersComponent, decorators: [{
|
|
153
154
|
type: Component,
|
|
154
|
-
args: [{ selector: 'lib-modify-fixture-numbers', template: "<section class=\"modify-fixture-numbers p-3\">\r\n <
|
|
155
|
+
args: [{ selector: 'lib-modify-fixture-numbers', template: "<section class=\"modify-fixture-numbers p-3\">\r\n <lib-tool-page-header\r\n title=\"Modify Fixture Numbers\"\r\n description=\"Renumber fixtures in a planogram.\"\r\n ></lib-tool-page-header>\r\n <div class=\"card p-4\">\r\n\r\n <!-- Store Select -->\r\n <div class=\"mb-3\" style=\"max-width: 600px;\">\r\n <label class=\"form-label\">Store</label>\r\n <lib-store-select\r\n [options]=\"storeOptions\"\r\n [initialSelected]=\"initialStores\"\r\n [singleSelect]=\"true\"\r\n (selectedChange)=\"onStoresSelected($event)\">\r\n </lib-store-select>\r\n </div>\r\n\r\n <!-- Auto Reorder -->\r\n @if (selectedStoreName) {\r\n <div class=\"mb-3 d-flex align-items-center gap-3\">\r\n <button class=\"btn btn-primary\" (click)=\"onAutoReorder()\" [disabled]=\"isReordering\">\r\n {{ isReordering ? 'Reordering...' : 'Auto Reorder Fixture Numbers' }}\r\n </button>\r\n <small class=\"text-muted\">\r\n Reorders fixtureNumber per floor by associatedElementNumber, then associatedElementFixtureNumber.\r\n </small>\r\n </div>\r\n }\r\n\r\n <!-- Fixture List -->\r\n @if (selectedStoreName) {\r\n @if (isLoadingFixtures) {\r\n <div class=\"text-muted\">Loading fixtures...</div>\r\n } @else if (floorGroups.length === 0) {\r\n <div class=\"text-muted\">No fixtures found for this store.</div>\r\n } @else {\r\n @for (group of floorGroups; track group.floorId) {\r\n <div class=\"floor-group mb-4\">\r\n <h6 class=\"floor-heading\">Floor: <span class=\"text-muted small\">{{ group.floorId }}</span></h6>\r\n <div class=\"table-responsive\">\r\n <table class=\"table table-sm align-middle fixture-table\">\r\n <thead>\r\n <tr>\r\n <th>Header Label</th>\r\n <th>Fixture Type</th>\r\n <th>Element #</th>\r\n <th style=\"width: 140px;\">Fixture #</th>\r\n <th style=\"width: 180px;\">Element Fixture #</th>\r\n <th style=\"width: 110px;\">Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (f of group.fixtures; track f._id) {\r\n <tr>\r\n <td>{{ f.headerLabel || '\u2014' }}</td>\r\n <td>{{ f.fixtureType || '\u2014' }}</td>\r\n <td>{{ f.associatedElementNumber ?? '\u2014' }}</td>\r\n <td>\r\n <input type=\"number\" class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"f.editFixtureNumber\">\r\n </td>\r\n <td>\r\n <input type=\"number\" class=\"form-control form-control-sm\"\r\n [(ngModel)]=\"f.editAssociatedElementFixtureNumber\">\r\n </td>\r\n <td>\r\n <button class=\"btn btn-sm btn-success\" (click)=\"onSaveFixture(f)\"\r\n [disabled]=\"f.isSaving\">\r\n {{ f.isSaving ? 'Saving...' : 'Save' }}\r\n </button>\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n }\r\n }\r\n }\r\n\r\n <!-- Message -->\r\n @if (message) {\r\n <div class=\"mt-3 alert\" [class.alert-success]=\"messageType === 'success'\"\r\n [class.alert-danger]=\"messageType === 'error'\">\r\n {{ message }}\r\n </div>\r\n }\r\n </div>\r\n</section>\r\n", styles: [".modify-fixture-numbers .floor-group{border:1px solid #e4e7ec;border-radius:8px;padding:12px 16px;background-color:#fff}.modify-fixture-numbers .floor-heading{margin-bottom:12px;color:#344054}.modify-fixture-numbers .fixture-table th{background-color:#f9fafb;font-weight:600;font-size:13px;color:#475467}.modify-fixture-numbers .fixture-table td{font-size:13px;vertical-align:middle}.modify-fixture-numbers .fixture-table input.form-control-sm{max-width:140px}\n"] }]
|
|
155
156
|
}], ctorParameters: () => [{ type: i1.StoreBuilderService }, { type: i2.GlobalStateService }] });
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kaWZ5LWZpeHR1cmUtbnVtYmVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9wbGFuby10b29scy9tb2RpZnktZml4dHVyZS1udW1iZXJzL21vZGlmeS1maXh0dXJlLW51bWJlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvbW9kaWZ5LWZpeHR1cmUtbnVtYmVycy9tb2RpZnktZml4dHVyZS1udW1iZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQTJCdEYsTUFBTSxPQUFPLDZCQUE2QjtJQWdCOUI7SUFDQTtJQWhCVixRQUFRLENBQVM7SUFDakIsWUFBWSxHQUFrQixFQUFFLENBQUM7SUFDakMsYUFBYSxHQUFrQixFQUFFLENBQUM7SUFDbEMsaUJBQWlCLEdBQVcsRUFBRSxDQUFDO0lBRS9CLFdBQVcsR0FBaUIsRUFBRSxDQUFDO0lBQy9CLGlCQUFpQixHQUFZLEtBQUssQ0FBQztJQUNuQyxZQUFZLEdBQVksS0FBSyxDQUFDO0lBRTlCLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFDckIsV0FBVyxHQUF3QixTQUFTLENBQUM7SUFFNUIsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFaEQsWUFDVSxHQUF3QixFQUN4QixFQUFzQjtRQUR0QixRQUFHLEdBQUgsR0FBRyxDQUFxQjtRQUN4QixPQUFFLEdBQUYs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bkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFN0b3JlT3B0aW9uIH0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbi11cGRhdGUtYWkvY29tcG9uZW50cy9zdG9yZS1zZWxlY3Qvc3RvcmUtc2VsZWN0LmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgRml4dHVyZVJvdyB7XHJcbiAgX2lkOiBzdHJpbmc7XHJcbiAgZmxvb3JJZDogc3RyaW5nO1xyXG4gIGZpeHR1cmVOdW1iZXI6IG51bWJlciB8IG51bGw7XHJcbiAgYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyOiBudW1iZXIgfCBudWxsO1xyXG4gIGFzc29jaWF0ZWRFbGVtZW50TnVtYmVyOiBudW1iZXIgfCBudWxsO1xyXG4gIGZpeHR1cmVUeXBlOiBzdHJpbmc7XHJcbiAgZml4dHVyZU5hbWU6IHN0cmluZztcclxuICBoZWFkZXJMYWJlbDogc3RyaW5nO1xyXG4gIGVkaXRGaXh0dXJlTnVtYmVyOiBudW1iZXIgfCBudWxsO1xyXG4gIGVkaXRBc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXI6IG51bWJlciB8IG51bGw7XHJcbiAgaXNTYXZpbmc6IGJvb2xlYW47XHJcbn1cclxuXHJcbmludGVyZmFjZSBGbG9vckdyb3VwIHtcclxuICBmbG9vcklkOiBzdHJpbmc7XHJcbiAgZml4dHVyZXM6IEZpeHR1cmVSb3dbXTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItbW9kaWZ5LWZpeHR1cmUtbnVtYmVycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGlmeS1maXh0dXJlLW51bWJlcnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9tb2RpZnktZml4dHVyZS1udW1iZXJzLmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZGlmeUZpeHR1cmVOdW1iZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgc3RvcmVPcHRpb25zOiBTdG9yZU9wdGlvbltdID0gW107XHJcbiAgaW5pdGlhbFN0b3JlczogU3RvcmVPcHRpb25bXSA9IFtdO1xyXG4gIHNlbGVjdGVkU3RvcmVOYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgZmxvb3JHcm91cHM6IEZsb29yR3JvdXBbXSA9IFtdO1xyXG4gIGlzTG9hZGluZ0ZpeHR1cmVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNSZW9yZGVyaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIG1lc3NhZ2U6IHN0cmluZyA9ICcnO1xyXG4gIG1lc3NhZ2VUeXBlOiAnc3VjY2VzcycgfCAnZXJyb3InID0gJ3N1Y2Nlc3MnO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNiczogU3RvcmVCdWlsZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXHJcbiAgICAgICAgZmlsdGVyKChkYXRhKSA9PiAhIWRhdGEpLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZGF0YT8uY2xpZW50KSB7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gZGF0YS5jbGllbnQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGxldCBoZWFkZXJEYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJykgYXMgc3RyaW5nXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGhlYWRlckRhdGE/LmNsaWVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkU3RvcmVzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZFN0b3JlcygpIHtcclxuICAgIHRoaXMuc2JzLmdldFN0b3JlT3JDbHVzdGVyTGlzdCh7IHNlYXJjaE1vZGU6ICdzdG9yZScgfSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzPy5kYXRhKSB7XHJcbiAgICAgICAgdGhpcy5zdG9yZU9wdGlvbnMgPSByZXMuZGF0YTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblN0b3Jlc1NlbGVjdGVkKHN0b3JlczogU3RvcmVPcHRpb25bXSkge1xyXG4gICAgbGV0IHN0b3JlID0gc3RvcmVzWzBdO1xyXG4gICAgbGV0IG5ld05hbWUgPSBzdG9yZSA/IHN0b3JlLmxhYmVsIDogJyc7XHJcbiAgICBpZiAobmV3TmFtZSA9PT0gdGhpcy5zZWxlY3RlZFN0b3JlTmFtZSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZU5hbWUgPSBuZXdOYW1lO1xyXG4gICAgdGhpcy5mbG9vckdyb3VwcyA9IFtdO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTdG9yZU5hbWUpIHtcclxuICAgICAgdGhpcy5sb2FkRml4dHVyZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRGaXh0dXJlcygpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZFN0b3JlTmFtZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5pc0xvYWRpbmdGaXh0dXJlcyA9IHRydWU7XHJcbiAgICB0aGlzLnNicy5nZXRTdG9yZUZpeHR1cmVzRm9yUmVvcmRlcih0aGlzLnNlbGVjdGVkU3RvcmVOYW1lLCB0aGlzLmNsaWVudElkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgZml4dHVyZXM6IEZpeHR1cmVSb3dbXSA9IChyZXM/LmRhdGEgfHwgW10pLm1hcCgoZjogYW55KSA9PiAoe1xyXG4gICAgICAgICAgLi4uZixcclxuICAgICAgICAgIGVkaXRGaXh0dXJlTnVtYmVyOiBmLmZpeHR1cmVOdW1iZXIsXHJcbiAgICAgICAgICBlZGl0QXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyOiBmLmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlcixcclxuICAgICAgICAgIGlzU2F2aW5nOiBmYWxzZSxcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5mbG9vckdyb3VwcyA9IHRoaXMuZ3JvdXBCeUZsb29yKGZpeHR1cmVzKTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0ZpeHR1cmVzID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mbG9vckdyb3VwcyA9IFtdO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nRml4dHVyZXMgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ3JvdXBCeUZsb29yKGZpeHR1cmVzOiBGaXh0dXJlUm93W10pOiBGbG9vckdyb3VwW10ge1xyXG4gICAgbGV0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBGaXh0dXJlUm93W10+KCk7XHJcbiAgICBmb3IgKGxldCBmIG9mIGZpeHR1cmVzKSB7XHJcbiAgICAgIGxldCBrZXkgPSBTdHJpbmcoZi5mbG9vcklkKTtcclxuICAgICAgaWYgKCFtYXAuaGFzKGtleSkpIHtcclxuICAgICAgICBtYXAuc2V0KGtleSwgW10pO1xyXG4gICAgICB9XHJcbiAgICAgIG1hcC5nZXQoa2V5KSEucHVzaChmKTtcclxuICAgIH1cclxuICAgIHJldHVybiBBcnJheS5mcm9tKG1hcC5lbnRyaWVzKCkpLm1hcCgoW2Zsb29ySWQsIGl0ZW1zXSkgPT4gKHsgZmxvb3JJZCwgZml4dHVyZXM6IGl0ZW1zIH0pKTtcclxuICB9XHJcblxyXG4gIG9uQXV0b1Jlb3JkZXIoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRTdG9yZU5hbWUgfHwgdGhpcy5pc1Jlb3JkZXJpbmcpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzUmVvcmRlcmluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNicy5yZW9yZGVyU3RvcmVGaXh0dXJlTnVtYmVycyh7XHJcbiAgICAgIHN0b3JlTmFtZTogdGhpcy5zZWxlY3RlZFN0b3JlTmFtZSxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50SWQsXHJcbiAgICB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgaW5mbyA9IHJlcz8uZGF0YSB8fCB7fTtcclxuICAgICAgICB0aGlzLnNob3dNZXNzYWdlKFxyXG4gICAgICAgICAgYFJlb3JkZXJlZCAke2luZm8uZml4dHVyZXNVcGRhdGVkID8/IDB9IGZpeHR1cmVzIGFjcm9zcyAke2luZm8uZmxvb3JzUHJvY2Vzc2VkID8/IDB9IGZsb29yKHMpLmAsXHJcbiAgICAgICAgICAnc3VjY2VzcydcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuaXNSZW9yZGVyaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5sb2FkRml4dHVyZXMoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHJlb3JkZXIgZml4dHVyZXMuJywgJ2Vycm9yJyk7XHJcbiAgICAgICAgdGhpcy5pc1Jlb3JkZXJpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlRml4dHVyZShmaXh0dXJlOiBGaXh0dXJlUm93KSB7XHJcbiAgICBpZiAoZml4dHVyZS5pc1NhdmluZykgcmV0dXJuO1xyXG5cclxuICAgIGxldCBwYXlsb2FkOiBhbnkgPSB7IGZpeHR1cmVJZDogZml4dHVyZS5faWQgfTtcclxuICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKGZpeHR1cmUuZWRpdEZpeHR1cmVOdW1iZXIgIT09IGZpeHR1cmUuZml4dHVyZU51bWJlcikge1xyXG4gICAgICBwYXlsb2FkLmZpeHR1cmVOdW1iZXIgPSBmaXh0dXJlLmVkaXRGaXh0dXJlTnVtYmVyO1xyXG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChmaXh0dXJlLmVkaXRBc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXIgIT09IGZpeHR1cmUuYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyKSB7XHJcbiAgICAgIHBheWxvYWQuYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyID0gZml4dHVyZS5lZGl0QXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyO1xyXG4gICAgICBjaGFuZ2VkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5zaG93TWVzc2FnZSgnTm8gY2hhbmdlcyB0byBzYXZlLicsICdlcnJvcicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZml4dHVyZS5pc1NhdmluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNicy51cGRhdGVGaXh0dXJlTnVtYmVyTWFudWFsKHBheWxvYWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICBmaXh0dXJlLmZpeHR1cmVOdW1iZXIgPSBmaXh0dXJlLmVkaXRGaXh0dXJlTnVtYmVyO1xyXG4gICAgICAgIGZpeHR1cmUuYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyID0gZml4dHVyZS5lZGl0QXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyO1xyXG4gICAgICAgIGZpeHR1cmUuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3dNZXNzYWdlKCdGaXh0dXJlIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LicsICdzdWNjZXNzJyk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICBmaXh0dXJlLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZShlcnI/LmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gdXBkYXRlIGZpeHR1cmUuJywgJ2Vycm9yJyk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNob3dNZXNzYWdlKG1zZzogc3RyaW5nLCB0eXBlOiAnc3VjY2VzcycgfCAnZXJyb3InKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2UgPSBtc2c7XHJcbiAgICB0aGlzLm1lc3NhZ2VUeXBlID0gdHlwZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMubWVzc2FnZSA9ICcnKSwgNTAwMCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cIm1vZGlmeS1maXh0dXJlLW51bWJlcnMgcC0zXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgcC00XCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtYi0zXCI+TW9kaWZ5IEZpeHR1cmUgTnVtYmVyczwvaDU+XHJcblxyXG4gICAgPCEtLSBTdG9yZSBTZWxlY3QgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiIHN0eWxlPVwibWF4LXdpZHRoOiA2MDBweDtcIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN0b3JlPC9sYWJlbD5cclxuICAgICAgPGxpYi1zdG9yZS1zZWxlY3RcclxuICAgICAgICBbb3B0aW9uc109XCJzdG9yZU9wdGlvbnNcIlxyXG4gICAgICAgIFtpbml0aWFsU2VsZWN0ZWRdPVwiaW5pdGlhbFN0b3Jlc1wiXHJcbiAgICAgICAgW3NpbmdsZVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwib25TdG9yZXNTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgIDwvbGliLXN0b3JlLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQXV0byBSZW9yZGVyIC0tPlxyXG4gICAgQGlmIChzZWxlY3RlZFN0b3JlTmFtZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJvbkF1dG9SZW9yZGVyKClcIiBbZGlzYWJsZWRdPVwiaXNSZW9yZGVyaW5nXCI+XHJcbiAgICAgICAgICB7eyBpc1Jlb3JkZXJpbmcgPyAnUmVvcmRlcmluZy4uLicgOiAnQXV0byBSZW9yZGVyIEZpeHR1cmUgTnVtYmVycycgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XHJcbiAgICAgICAgICBSZW9yZGVycyBmaXh0dXJlTnVtYmVyIHBlciBmbG9vciBieSBhc3NvY2lhdGVkRWxlbWVudE51bWJlciwgdGhlbiBhc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXIuXHJcbiAgICAgICAgPC9zbWFsbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG4gICAgPCEtLSBGaXh0dXJlIExpc3QgLS0+XHJcbiAgICBAaWYgKHNlbGVjdGVkU3RvcmVOYW1lKSB7XHJcbiAgICAgIEBpZiAoaXNMb2FkaW5nRml4dHVyZXMpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZFwiPkxvYWRpbmcgZml4dHVyZXMuLi48L2Rpdj5cclxuICAgICAgfSBAZWxzZSBpZiAoZmxvb3JHcm91cHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWRcIj5ObyBmaXh0dXJlcyBmb3VuZCBmb3IgdGhpcyBzdG9yZS48L2Rpdj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgQGZvciAoZ3JvdXAgb2YgZmxvb3JHcm91cHM7IHRyYWNrIGdyb3VwLmZsb29ySWQpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG9vci1ncm91cCBtYi00XCI+XHJcbiAgICAgICAgICAgIDxoNiBjbGFzcz1cImZsb29yLWhlYWRpbmdcIj5GbG9vcjogPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsXCI+e3sgZ3JvdXAuZmxvb3JJZCB9fTwvc3Bhbj48L2g2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXNtIGFsaWduLW1pZGRsZSBmaXh0dXJlLXRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+SGVhZGVyIExhYmVsPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+Rml4dHVyZSBUeXBlPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+RWxlbWVudCAjPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMTQwcHg7XCI+Rml4dHVyZSAjPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJ3aWR0aDogMTgwcHg7XCI+RWxlbWVudCBGaXh0dXJlICM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAxMTBweDtcIj5BY3Rpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgQGZvciAoZiBvZiBncm91cC5maXh0dXJlczsgdHJhY2sgZi5faWQpIHtcclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZi5oZWFkZXJMYWJlbCB8fCAn4oCUJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZi5maXh0dXJlVHlwZSB8fCAn4oCUJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZi5hc3NvY2lhdGVkRWxlbWVudE51bWJlciA/PyAn4oCUJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImYuZWRpdEZpeHR1cmVOdW1iZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImYuZWRpdEFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwib25TYXZlRml4dHVyZShmKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImYuaXNTYXZpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmLmlzU2F2aW5nID8gJ1NhdmluZy4uLicgOiAnU2F2ZScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICA8IS0tIE1lc3NhZ2UgLS0+XHJcbiAgICBAaWYgKG1lc3NhZ2UpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cIm10LTMgYWxlcnRcIiBbY2xhc3MuYWxlcnQtc3VjY2Vzc109XCJtZXNzYWdlVHlwZSA9PT0gJ3N1Y2Nlc3MnXCJcclxuICAgICAgICBbY2xhc3MuYWxlcnQtZGFuZ2VyXT1cIm1lc3NhZ2VUeXBlID09PSAnZXJyb3InXCI+XHJcbiAgICAgICAge3sgbWVzc2FnZSB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG4iXX0=
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kaWZ5LWZpeHR1cmUtbnVtYmVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9wbGFuby10b29scy9tb2RpZnktZml4dHVyZS1udW1iZXJzL21vZGlmeS1maXh0dXJlLW51bWJlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvbW9kaWZ5LWZpeHR1cmUtbnVtYmVycy9tb2RpZnktZml4dHVyZS1udW1iZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUEyQnRGLE1BQU0sT0FBTyw2QkFBNkI7SUFnQjlCO0lBQ0E7SUFoQlYsUUFBUSxDQUFTO0lBQ2pCLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLGFBQWEsR0FBa0IsRUFBRSxDQUFDO0lBQ2xDLGlCQUFpQixHQUFXLEVBQUUsQ0FBQztJQUUvQixXQUFXLEdBQWlCLEVBQUUsQ0FBQztJQUMvQixpQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFDbkMsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUU5QixPQUFPLEdBQVcsRUFBRSxDQUFDO0lBQ3JCLFdBQVcsR0FBd0IsU0FBUyxDQUFDO0lBRTVCLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRWhELFlBQ1UsR0FBd0IsRUFDeEIsRUFBc0I7UUFEdEIsUUFBRyxHQUFILEdBQUcsQ0FBcUI7UUFDeEIsT0FBRSxHQUFG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T25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3RvcmVCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdG9yZU9wdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb24tdXBkYXRlLWFpL2NvbXBvbmVudHMvc3RvcmUtc2VsZWN0L3N0b3JlLXNlbGVjdC5jb21wb25lbnQnO1xyXG5cclxuaW50ZXJmYWNlIEZpeHR1cmVSb3cge1xyXG4gIF9pZDogc3RyaW5nO1xyXG4gIGZsb29ySWQ6IHN0cmluZztcclxuICBmaXh0dXJlTnVtYmVyOiBudW1iZXIgfCBudWxsO1xyXG4gIGFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlcjogbnVtYmVyIHwgbnVsbDtcclxuICBhc3NvY2lhdGVkRWxlbWVudE51bWJlcjogbnVtYmVyIHwgbnVsbDtcclxuICBmaXh0dXJlVHlwZTogc3RyaW5nO1xyXG4gIGZpeHR1cmVOYW1lOiBzdHJpbmc7XHJcbiAgaGVhZGVyTGFiZWw6IHN0cmluZztcclxuICBlZGl0Rml4dHVyZU51bWJlcjogbnVtYmVyIHwgbnVsbDtcclxuICBlZGl0QXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyOiBudW1iZXIgfCBudWxsO1xyXG4gIGlzU2F2aW5nOiBib29sZWFuO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRmxvb3JHcm91cCB7XHJcbiAgZmxvb3JJZDogc3RyaW5nO1xyXG4gIGZpeHR1cmVzOiBGaXh0dXJlUm93W107XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLW1vZGlmeS1maXh0dXJlLW51bWJlcnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RpZnktZml4dHVyZS1udW1iZXJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbW9kaWZ5LWZpeHR1cmUtbnVtYmVycy5jb21wb25lbnQuc2NzcycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNb2RpZnlGaXh0dXJlTnVtYmVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBjbGllbnRJZDogc3RyaW5nO1xyXG4gIHN0b3JlT3B0aW9uczogU3RvcmVPcHRpb25bXSA9IFtdO1xyXG4gIGluaXRpYWxTdG9yZXM6IFN0b3JlT3B0aW9uW10gPSBbXTtcclxuICBzZWxlY3RlZFN0b3JlTmFtZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIGZsb29yR3JvdXBzOiBGbG9vckdyb3VwW10gPSBbXTtcclxuICBpc0xvYWRpbmdGaXh0dXJlczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzUmVvcmRlcmluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBtZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICBtZXNzYWdlVHlwZTogJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyA9ICdzdWNjZXNzJztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzYnM6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgIGZpbHRlcigoZGF0YSkgPT4gISFkYXRhKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGE/LmNsaWVudCkge1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGEuY2xpZW50O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBsZXQgaGVhZGVyRGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdoZWFkZXItZmlsdGVycycpIGFzIHN0cmluZ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuY2xpZW50SWQgPSBoZWFkZXJEYXRhPy5jbGllbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9hZFN0b3JlcygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRTdG9yZXMoKSB7XHJcbiAgICB0aGlzLnNicy5nZXRTdG9yZU9yQ2x1c3Rlckxpc3QoeyBzZWFyY2hNb2RlOiAnc3RvcmUnIH0pLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcz8uZGF0YSkge1xyXG4gICAgICAgIHRoaXMuc3RvcmVPcHRpb25zID0gcmVzLmRhdGE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TdG9yZXNTZWxlY3RlZChzdG9yZXM6IFN0b3JlT3B0aW9uW10pIHtcclxuICAgIGxldCBzdG9yZSA9IHN0b3Jlc1swXTtcclxuICAgIGxldCBuZXdOYW1lID0gc3RvcmUgPyBzdG9yZS5sYWJlbCA6ICcnO1xyXG4gICAgaWYgKG5ld05hbWUgPT09IHRoaXMuc2VsZWN0ZWRTdG9yZU5hbWUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGVkU3RvcmVOYW1lID0gbmV3TmFtZTtcclxuICAgIHRoaXMuZmxvb3JHcm91cHMgPSBbXTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkU3RvcmVOYW1lKSB7XHJcbiAgICAgIHRoaXMubG9hZEZpeHR1cmVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkRml4dHVyZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRTdG9yZU5hbWUpIHJldHVybjtcclxuICAgIHRoaXMuaXNMb2FkaW5nRml4dHVyZXMgPSB0cnVlO1xyXG4gICAgdGhpcy5zYnMuZ2V0U3RvcmVGaXh0dXJlc0ZvclJlb3JkZXIodGhpcy5zZWxlY3RlZFN0b3JlTmFtZSwgdGhpcy5jbGllbnRJZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGZpeHR1cmVzOiBGaXh0dXJlUm93W10gPSAocmVzPy5kYXRhIHx8IFtdKS5tYXAoKGY6IGFueSkgPT4gKHtcclxuICAgICAgICAgIC4uLmYsXHJcbiAgICAgICAgICBlZGl0Rml4dHVyZU51bWJlcjogZi5maXh0dXJlTnVtYmVyLFxyXG4gICAgICAgICAgZWRpdEFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlcjogZi5hc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXIsXHJcbiAgICAgICAgICBpc1NhdmluZzogZmFsc2UsXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuZmxvb3JHcm91cHMgPSB0aGlzLmdyb3VwQnlGbG9vcihmaXh0dXJlcyk7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmdGaXh0dXJlcyA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZmxvb3JHcm91cHMgPSBbXTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZ0ZpeHR1cmVzID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdyb3VwQnlGbG9vcihmaXh0dXJlczogRml4dHVyZVJvd1tdKTogRmxvb3JHcm91cFtdIHtcclxuICAgIGxldCBtYXAgPSBuZXcgTWFwPHN0cmluZywgRml4dHVyZVJvd1tdPigpO1xyXG4gICAgZm9yIChsZXQgZiBvZiBmaXh0dXJlcykge1xyXG4gICAgICBsZXQga2V5ID0gU3RyaW5nKGYuZmxvb3JJZCk7XHJcbiAgICAgIGlmICghbWFwLmhhcyhrZXkpKSB7XHJcbiAgICAgICAgbWFwLnNldChrZXksIFtdKTtcclxuICAgICAgfVxyXG4gICAgICBtYXAuZ2V0KGtleSkhLnB1c2goZik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShtYXAuZW50cmllcygpKS5tYXAoKFtmbG9vcklkLCBpdGVtc10pID0+ICh7IGZsb29ySWQsIGZpeHR1cmVzOiBpdGVtcyB9KSk7XHJcbiAgfVxyXG5cclxuICBvbkF1dG9SZW9yZGVyKCkge1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkU3RvcmVOYW1lIHx8IHRoaXMuaXNSZW9yZGVyaW5nKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5pc1Jlb3JkZXJpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zYnMucmVvcmRlclN0b3JlRml4dHVyZU51bWJlcnMoe1xyXG4gICAgICBzdG9yZU5hbWU6IHRoaXMuc2VsZWN0ZWRTdG9yZU5hbWUsXHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxyXG4gICAgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGluZm8gPSByZXM/LmRhdGEgfHwge307XHJcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZShcclxuICAgICAgICAgIGBSZW9yZGVyZWQgJHtpbmZvLmZpeHR1cmVzVXBkYXRlZCA/PyAwfSBmaXh0dXJlcyBhY3Jvc3MgJHtpbmZvLmZsb29yc1Byb2Nlc3NlZCA/PyAwfSBmbG9vcihzKS5gLFxyXG4gICAgICAgICAgJ3N1Y2Nlc3MnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmlzUmVvcmRlcmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubG9hZEZpeHR1cmVzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dNZXNzYWdlKGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byByZW9yZGVyIGZpeHR1cmVzLicsICdlcnJvcicpO1xyXG4gICAgICAgIHRoaXMuaXNSZW9yZGVyaW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZUZpeHR1cmUoZml4dHVyZTogRml4dHVyZVJvdykge1xyXG4gICAgaWYgKGZpeHR1cmUuaXNTYXZpbmcpIHJldHVybjtcclxuXHJcbiAgICBsZXQgcGF5bG9hZDogYW55ID0geyBmaXh0dXJlSWQ6IGZpeHR1cmUuX2lkIH07XHJcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xyXG5cclxuICAgIGlmIChmaXh0dXJlLmVkaXRGaXh0dXJlTnVtYmVyICE9PSBmaXh0dXJlLmZpeHR1cmVOdW1iZXIpIHtcclxuICAgICAgcGF5bG9hZC5maXh0dXJlTnVtYmVyID0gZml4dHVyZS5lZGl0Rml4dHVyZU51bWJlcjtcclxuICAgICAgY2hhbmdlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoZml4dHVyZS5lZGl0QXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyICE9PSBmaXh0dXJlLmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlcikge1xyXG4gICAgICBwYXlsb2FkLmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlciA9IGZpeHR1cmUuZWRpdEFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlcjtcclxuICAgICAgY2hhbmdlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFjaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuc2hvd01lc3NhZ2UoJ05vIGNoYW5nZXMgdG8gc2F2ZS4nLCAnZXJyb3InKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGZpeHR1cmUuaXNTYXZpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zYnMudXBkYXRlRml4dHVyZU51bWJlck1hbnVhbChwYXlsb2FkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgZml4dHVyZS5maXh0dXJlTnVtYmVyID0gZml4dHVyZS5lZGl0Rml4dHVyZU51bWJlcjtcclxuICAgICAgICBmaXh0dXJlLmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlciA9IGZpeHR1cmUuZWRpdEFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlcjtcclxuICAgICAgICBmaXh0dXJlLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZSgnRml4dHVyZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4nLCAnc3VjY2VzcycpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgZml4dHVyZS5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHVwZGF0ZSBmaXh0dXJlLicsICdlcnJvcicpO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaG93TWVzc2FnZShtc2c6IHN0cmluZywgdHlwZTogJ3N1Y2Nlc3MnIHwgJ2Vycm9yJykge1xyXG4gICAgdGhpcy5tZXNzYWdlID0gbXNnO1xyXG4gICAgdGhpcy5tZXNzYWdlVHlwZSA9IHR5cGU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLm1lc3NhZ2UgPSAnJyksIDUwMDApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gY2xhc3M9XCJtb2RpZnktZml4dHVyZS1udW1iZXJzIHAtM1wiPlxyXG4gIDxsaWItdG9vbC1wYWdlLWhlYWRlclxyXG4gICAgdGl0bGU9XCJNb2RpZnkgRml4dHVyZSBOdW1iZXJzXCJcclxuICAgIGRlc2NyaXB0aW9uPVwiUmVudW1iZXIgZml4dHVyZXMgaW4gYSBwbGFub2dyYW0uXCJcclxuICA+PC9saWItdG9vbC1wYWdlLWhlYWRlcj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBwLTRcIj5cclxuXHJcbiAgICA8IS0tIFN0b3JlIFNlbGVjdCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0zXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDYwMHB4O1wiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RvcmU8L2xhYmVsPlxyXG4gICAgICA8bGliLXN0b3JlLXNlbGVjdFxyXG4gICAgICAgIFtvcHRpb25zXT1cInN0b3JlT3B0aW9uc1wiXHJcbiAgICAgICAgW2luaXRpYWxTZWxlY3RlZF09XCJpbml0aWFsU3RvcmVzXCJcclxuICAgICAgICBbc2luZ2xlU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJvblN0b3Jlc1NlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgPC9saWItc3RvcmUtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBBdXRvIFJlb3JkZXIgLS0+XHJcbiAgICBAaWYgKHNlbGVjdGVkU3RvcmVOYW1lKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uQXV0b1Jlb3JkZXIoKVwiIFtkaXNhYmxlZF09XCJpc1Jlb3JkZXJpbmdcIj5cclxuICAgICAgICAgIHt7IGlzUmVvcmRlcmluZyA/ICdSZW9yZGVyaW5nLi4uJyA6ICdBdXRvIFJlb3JkZXIgRml4dHVyZSBOdW1iZXJzJyB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIj5cclxuICAgICAgICAgIFJlb3JkZXJzIGZpeHR1cmVOdW1iZXIgcGVyIGZsb29yIGJ5IGFzc29jaWF0ZWRFbGVtZW50TnVtYmVyLCB0aGVuIGFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlci5cclxuICAgICAgICA8L3NtYWxsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuXHJcbiAgICA8IS0tIEZpeHR1cmUgTGlzdCAtLT5cclxuICAgIEBpZiAoc2VsZWN0ZWRTdG9yZU5hbWUpIHtcclxuICAgICAgQGlmIChpc0xvYWRpbmdGaXh0dXJlcykge1xyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+TG9hZGluZyBmaXh0dXJlcy4uLjwvZGl2PlxyXG4gICAgICB9IEBlbHNlIGlmIChmbG9vckdyb3Vwcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZFwiPk5vIGZpeHR1cmVzIGZvdW5kIGZvciB0aGlzIHN0b3JlLjwvZGl2PlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgICBAZm9yIChncm91cCBvZiBmbG9vckdyb3VwczsgdHJhY2sgZ3JvdXAuZmxvb3JJZCkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsb29yLWdyb3VwIG1iLTRcIj5cclxuICAgICAgICAgICAgPGg2IGNsYXNzPVwiZmxvb3ItaGVhZGluZ1wiPkZsb29yOiA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj57eyBncm91cC5mbG9vcklkIH19PC9zcGFuPjwvaDY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc20gYWxpZ24tbWlkZGxlIGZpeHR1cmUtdGFibGVcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD5IZWFkZXIgTGFiZWw8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD5GaXh0dXJlIFR5cGU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aD5FbGVtZW50ICM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAxNDBweDtcIj5GaXh0dXJlICM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cIndpZHRoOiAxODBweDtcIj5FbGVtZW50IEZpeHR1cmUgIzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwid2lkdGg6IDExMHB4O1wiPkFjdGlvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICBAZm9yIChmIG9mIGdyb3VwLmZpeHR1cmVzOyB0cmFjayBmLl9pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBmLmhlYWRlckxhYmVsIHx8ICfigJQnIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBmLmZpeHR1cmVUeXBlIHx8ICfigJQnIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBmLmFzc29jaWF0ZWRFbGVtZW50TnVtYmVyID8/ICfigJQnIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZi5lZGl0Rml4dHVyZU51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZi5lZGl0QXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2Vzc1wiIChjbGljayk9XCJvblNhdmVGaXh0dXJlKGYpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZi5pc1NhdmluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGYuaXNTYXZpbmcgPyAnU2F2aW5nLi4uJyA6ICdTYXZlJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIDwhLS0gTWVzc2FnZSAtLT5cclxuICAgIEBpZiAobWVzc2FnZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtMyBhbGVydFwiIFtjbGFzcy5hbGVydC1zdWNjZXNzXT1cIm1lc3NhZ2VUeXBlID09PSAnc3VjY2VzcydcIlxyXG4gICAgICAgIFtjbGFzcy5hbGVydC1kYW5nZXJdPVwibWVzc2FnZVR5cGUgPT09ICdlcnJvcidcIj5cclxuICAgICAgICB7eyBtZXNzYWdlIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
|
|
@@ -8,6 +8,7 @@ import * as i3 from "@ng-bootstrap/ng-bootstrap";
|
|
|
8
8
|
import * as i4 from "../../reactive-select/reactive-select.component";
|
|
9
9
|
import * as i5 from "@angular/common";
|
|
10
10
|
import * as i6 from "@angular/forms";
|
|
11
|
+
import * as i7 from "../tool-page-header/tool-page-header.component";
|
|
11
12
|
const STATUS_OPTIONS = [
|
|
12
13
|
{ value: "draft", label: "Draft", bucket: "Onboarding" },
|
|
13
14
|
{
|
|
@@ -230,10 +231,10 @@ export class MoveBucketComponent {
|
|
|
230
231
|
this.destroy$.complete();
|
|
231
232
|
}
|
|
232
233
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MoveBucketComponent, deps: [{ token: i1.StoreBuilderService }, { token: i2.GlobalStateService }, { token: i3.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
|
|
233
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MoveBucketComponent, selector: "lib-move-bucket", ngImport: i0, template: "<section class=\"move-bucket p-3\">\r\n <
|
|
234
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MoveBucketComponent, selector: "lib-move-bucket", ngImport: i0, template: "<section class=\"move-bucket p-3\">\r\n <lib-tool-page-header\r\n title=\"Move Store Bucket\"\r\n description=\"Move a floor between Onboarding (Draft / Allocation Pending) and ManagePlano (Completed) without losing store data.\"\r\n ></lib-tool-page-header>\r\n <div class=\"card p-4\" style=\"max-width: 640px;\">\r\n\r\n <!-- Store -->\r\n <div class=\"mb-3\">\r\n <lib-reactive-select\r\n label=\"Store\"\r\n [idField]=\"'id'\"\r\n [nameField]=\"'label'\"\r\n [data]=\"storeOptions\"\r\n [search]=\"true\"\r\n [ngModel]=\"selectedStoreId\"\r\n (ngModelChange)=\"onStoreSelected($event)\">\r\n </lib-reactive-select>\r\n </div>\r\n\r\n <!-- Floor -->\r\n <div class=\"mb-3\" *ngIf=\"selectedStoreId\">\r\n <ng-container *ngIf=\"isLoadingFloors; else floorPicker\">\r\n <div class=\"text-muted small\">Loading floors...</div>\r\n </ng-container>\r\n <ng-template #floorPicker>\r\n <ng-container *ngIf=\"floors.length > 0; else noFloors\">\r\n <lib-reactive-select\r\n label=\"Floor\"\r\n [idField]=\"'_id'\"\r\n [nameField]=\"'displayName'\"\r\n [data]=\"floors\"\r\n [search]=\"true\"\r\n [ngModel]=\"selectedFloorId\"\r\n (ngModelChange)=\"onFloorSelected($event)\">\r\n </lib-reactive-select>\r\n </ng-container>\r\n <ng-template #noFloors>\r\n <div class=\"text-muted small\">No floors found for this store.</div>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- Current bucket info + target status -->\r\n <ng-container *ngIf=\"selectedFloorId && currentStatus\">\r\n <div class=\"mb-3 p-3 rounded current-info\">\r\n <div class=\"d-flex justify-content-between small\">\r\n <span class=\"text-muted\">Current bucket</span>\r\n <span class=\"fw-semibold\">{{ getBucketLabel(currentStatus) }}</span>\r\n </div>\r\n <div class=\"d-flex justify-content-between small mt-1\">\r\n <span class=\"text-muted\">Current status</span>\r\n <span class=\"fw-semibold\">{{ getStatusLabel(currentStatus) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <lib-reactive-select\r\n label=\"Move to status\"\r\n [idField]=\"'value'\"\r\n [nameField]=\"'label'\"\r\n [subTextField]=\"'bucket'\"\r\n [data]=\"statusOptions\"\r\n [ngModel]=\"targetStatus\"\r\n (ngModelChange)=\"onTargetStatusSelected($event)\">\r\n </lib-reactive-select>\r\n <div class=\"form-text text-warning\" *ngIf=\"statusChanged\">\r\n isPlanoApproved will be set to\r\n <strong>{{ targetStatus === 'draft' ? 'false' : 'true' }}</strong>,\r\n planoProgress will be set to\r\n <strong>{{ targetStatus === 'completed' ? 25 : 0 }}</strong>.\r\n </div>\r\n </div>\r\n\r\n <!-- Task cleanup checkboxes -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Clear tasks & compliance rows (optional)</label>\r\n <div class=\"d-flex flex-column gap-2\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"clrLayout\"\r\n [(ngModel)]=\"clearLayoutTasks\">\r\n <label class=\"form-check-label\" for=\"clrLayout\">\r\n Layout tasks\r\n <span class=\"text-muted small\">(planoType: layout, layoutFixture)</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"clrFixture\"\r\n [(ngModel)]=\"clearFixtureTasks\">\r\n <label class=\"form-check-label\" for=\"clrFixture\">\r\n Fixture tasks\r\n <span class=\"text-muted small\">(planoType: fixture, vm)</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"clrZone\"\r\n [(ngModel)]=\"clearZoneTasks\">\r\n <label class=\"form-check-label\" for=\"clrZone\">\r\n Zone tasks\r\n <span class=\"text-muted small\">(planoType: zoneVerification)</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Submit -->\r\n <button class=\"btn btn-primary\" (click)=\"onSubmit()\" [disabled]=\"!canSubmit\">\r\n {{ isSubmitting ? 'Updating...' : 'Update' }}\r\n </button>\r\n\r\n <div class=\"mt-3 alert\" *ngIf=\"message\"\r\n [class.alert-success]=\"messageType === 'success'\"\r\n [class.alert-danger]=\"messageType === 'error'\"\r\n style=\"white-space: pre-line;\">\r\n {{ message }}\r\n </div>\r\n </div>\r\n</section>\r\n", styles: [".move-bucket .current-info{background-color:#f9fafb;border:1px solid #e4e7ec}\n"], dependencies: [{ kind: "component", type: i4.ReactiveSelectComponent, selector: "lib-reactive-select", inputs: ["idField", "nameField", "subTextField", "searchField", "label", "data", "action", "search", "prefix", "actionLabel", "disabled"], outputs: ["actionClick"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.ToolPageHeaderComponent, selector: "lib-tool-page-header", inputs: ["title", "description", "backLink"] }] });
|
|
234
235
|
}
|
|
235
236
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MoveBucketComponent, decorators: [{
|
|
236
237
|
type: Component,
|
|
237
|
-
args: [{ selector: "lib-move-bucket", template: "<section class=\"move-bucket p-3\">\r\n <
|
|
238
|
+
args: [{ selector: "lib-move-bucket", template: "<section class=\"move-bucket p-3\">\r\n <lib-tool-page-header\r\n title=\"Move Store Bucket\"\r\n description=\"Move a floor between Onboarding (Draft / Allocation Pending) and ManagePlano (Completed) without losing store data.\"\r\n ></lib-tool-page-header>\r\n <div class=\"card p-4\" style=\"max-width: 640px;\">\r\n\r\n <!-- Store -->\r\n <div class=\"mb-3\">\r\n <lib-reactive-select\r\n label=\"Store\"\r\n [idField]=\"'id'\"\r\n [nameField]=\"'label'\"\r\n [data]=\"storeOptions\"\r\n [search]=\"true\"\r\n [ngModel]=\"selectedStoreId\"\r\n (ngModelChange)=\"onStoreSelected($event)\">\r\n </lib-reactive-select>\r\n </div>\r\n\r\n <!-- Floor -->\r\n <div class=\"mb-3\" *ngIf=\"selectedStoreId\">\r\n <ng-container *ngIf=\"isLoadingFloors; else floorPicker\">\r\n <div class=\"text-muted small\">Loading floors...</div>\r\n </ng-container>\r\n <ng-template #floorPicker>\r\n <ng-container *ngIf=\"floors.length > 0; else noFloors\">\r\n <lib-reactive-select\r\n label=\"Floor\"\r\n [idField]=\"'_id'\"\r\n [nameField]=\"'displayName'\"\r\n [data]=\"floors\"\r\n [search]=\"true\"\r\n [ngModel]=\"selectedFloorId\"\r\n (ngModelChange)=\"onFloorSelected($event)\">\r\n </lib-reactive-select>\r\n </ng-container>\r\n <ng-template #noFloors>\r\n <div class=\"text-muted small\">No floors found for this store.</div>\r\n </ng-template>\r\n </ng-template>\r\n </div>\r\n\r\n <!-- Current bucket info + target status -->\r\n <ng-container *ngIf=\"selectedFloorId && currentStatus\">\r\n <div class=\"mb-3 p-3 rounded current-info\">\r\n <div class=\"d-flex justify-content-between small\">\r\n <span class=\"text-muted\">Current bucket</span>\r\n <span class=\"fw-semibold\">{{ getBucketLabel(currentStatus) }}</span>\r\n </div>\r\n <div class=\"d-flex justify-content-between small mt-1\">\r\n <span class=\"text-muted\">Current status</span>\r\n <span class=\"fw-semibold\">{{ getStatusLabel(currentStatus) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <lib-reactive-select\r\n label=\"Move to status\"\r\n [idField]=\"'value'\"\r\n [nameField]=\"'label'\"\r\n [subTextField]=\"'bucket'\"\r\n [data]=\"statusOptions\"\r\n [ngModel]=\"targetStatus\"\r\n (ngModelChange)=\"onTargetStatusSelected($event)\">\r\n </lib-reactive-select>\r\n <div class=\"form-text text-warning\" *ngIf=\"statusChanged\">\r\n isPlanoApproved will be set to\r\n <strong>{{ targetStatus === 'draft' ? 'false' : 'true' }}</strong>,\r\n planoProgress will be set to\r\n <strong>{{ targetStatus === 'completed' ? 25 : 0 }}</strong>.\r\n </div>\r\n </div>\r\n\r\n <!-- Task cleanup checkboxes -->\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\">Clear tasks & compliance rows (optional)</label>\r\n <div class=\"d-flex flex-column gap-2\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"clrLayout\"\r\n [(ngModel)]=\"clearLayoutTasks\">\r\n <label class=\"form-check-label\" for=\"clrLayout\">\r\n Layout tasks\r\n <span class=\"text-muted small\">(planoType: layout, layoutFixture)</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"clrFixture\"\r\n [(ngModel)]=\"clearFixtureTasks\">\r\n <label class=\"form-check-label\" for=\"clrFixture\">\r\n Fixture tasks\r\n <span class=\"text-muted small\">(planoType: fixture, vm)</span>\r\n </label>\r\n </div>\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"clrZone\"\r\n [(ngModel)]=\"clearZoneTasks\">\r\n <label class=\"form-check-label\" for=\"clrZone\">\r\n Zone tasks\r\n <span class=\"text-muted small\">(planoType: zoneVerification)</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Submit -->\r\n <button class=\"btn btn-primary\" (click)=\"onSubmit()\" [disabled]=\"!canSubmit\">\r\n {{ isSubmitting ? 'Updating...' : 'Update' }}\r\n </button>\r\n\r\n <div class=\"mt-3 alert\" *ngIf=\"message\"\r\n [class.alert-success]=\"messageType === 'success'\"\r\n [class.alert-danger]=\"messageType === 'error'\"\r\n style=\"white-space: pre-line;\">\r\n {{ message }}\r\n </div>\r\n </div>\r\n</section>\r\n", styles: [".move-bucket .current-info{background-color:#f9fafb;border:1px solid #e4e7ec}\n"] }]
|
|
238
239
|
}], ctorParameters: () => [{ type: i1.StoreBuilderService }, { type: i2.GlobalStateService }, { type: i3.NgbModal }] });
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS1idWNrZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvbW92ZS1idWNrZXQvbW92ZS1idWNrZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvbW92ZS1idWNrZXQvbW92ZS1idWNrZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLE9BQU8sRUFDUCxTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7Ozs7Ozs7QUF3QjdHLE1BQU0sY0FBYyxHQUFtQjtJQUNyQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFO0lBQ3hEO1FBQ0UsS0FBSyxFQUFFLG1CQUFtQjtRQUMxQixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLE1BQU0sRUFBRSxZQUFZO0tBQ3JCO0lBQ0QsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRTtDQUNsRSxDQUFDO0FBT0YsTUFBTSxPQUFPLG1CQUFtQjtJQTBCcEI7SUFDQTtJQUNBO0lBM0JWLFFBQVEsQ0FBUztJQUVqQixZQUFZLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxlQUFlLEdBQWtCLElBQUksQ0FBQztJQUN0QyxrQkFBa0IsR0FBa0IsSUFB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QUUsQ0FBQztJQUMzQixDQUFDO3dHQXRQVSxtQkFBbUI7NEZBQW5CLG1CQUFtQix1RENsRGhDLHkySkF1SEE7OzRGRHJFYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7XHJcbiAgZGVib3VuY2VUaW1lLFxyXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxyXG4gIGZpbHRlcixcclxuICBTdWJqZWN0LFxyXG4gIHRha2VVbnRpbCxcclxufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBTdG9yZUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEZWxldGVDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vcG9wdXBzL2RlbGV0ZS1jb25maXJtYXRpb24vZGVsZXRlLWNvbmZpcm1hdGlvbi5jb21wb25lbnRcIjtcclxuXHJcbmludGVyZmFjZSBTdG9yZU9wdGlvbiB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBsYWJlbDogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRmxvb3JPcHRpb24ge1xyXG4gIF9pZDogc3RyaW5nO1xyXG4gIGZsb29yTnVtYmVyOiBudW1iZXI7XHJcbiAgZmxvb3JOYW1lOiBzdHJpbmc7XHJcbiAgc3RhdHVzOiBCdWNrZXRTdGF0dXM7XHJcbiAgaXNQbGFub0FwcHJvdmVkPzogYm9vbGVhbjtcclxuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG50eXBlIEJ1Y2tldFN0YXR1cyA9IFwiZHJhZnRcIiB8IFwiYWxsb2NhdGlvblBlbmRpbmdcIiB8IFwiY29tcGxldGVkXCI7XHJcblxyXG5pbnRlcmZhY2UgU3RhdHVzT3B0aW9uIHtcclxuICB2YWx1ZTogQnVja2V0U3RhdHVzO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgYnVja2V0OiBzdHJpbmc7XHJcbn1cclxuXHJcbmNvbnN0IFNUQVRVU19PUFRJT05TOiBTdGF0dXNPcHRpb25bXSA9IFtcclxuICB7IHZhbHVlOiBcImRyYWZ0XCIsIGxhYmVsOiBcIkRyYWZ0XCIsIGJ1Y2tldDogXCJPbmJvYXJkaW5nXCIgfSxcclxuICB7XHJcbiAgICB2YWx1ZTogXCJhbGxvY2F0aW9uUGVuZGluZ1wiLFxyXG4gICAgbGFiZWw6IFwiQWxsb2NhdGlvbiBQZW5kaW5nXCIsXHJcbiAgICBidWNrZXQ6IFwiT25ib2FyZGluZ1wiLFxyXG4gIH0sXHJcbiAgeyB2YWx1ZTogXCJjb21wbGV0ZWRcIiwgbGFiZWw6IFwiQ29tcGxldGVkXCIsIGJ1Y2tldDogXCJNYW5hZ2VQbGFub1wiIH0sXHJcbl07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItbW92ZS1idWNrZXRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL21vdmUtYnVja2V0LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9tb3ZlLWJ1Y2tldC5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTW92ZUJ1Y2tldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBjbGllbnRJZDogc3RyaW5nO1xyXG5cclxuICBzdG9yZU9wdGlvbnM6IFN0b3JlT3B0aW9uW10gPSBbXTtcclxuICBzZWxlY3RlZFN0b3JlSWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkU3RvcmVMYWJlbDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGZsb29yczogRmxvb3JPcHRpb25bXSA9IFtdO1xyXG4gIHNlbGVjdGVkRmxvb3JJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgaXNMb2FkaW5nRmxvb3JzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHN0YXR1c09wdGlvbnMgPSBTVEFUVVNfT1BUSU9OUztcclxuICB0YXJnZXRTdGF0dXM6IEJ1Y2tldFN0YXR1cyB8IG51bGwgPSBudWxsO1xyXG4gIGN1cnJlbnRTdGF0dXM6IEJ1Y2tldFN0YXR1cyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjbGVhckxheW91dFRhc2tzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2xlYXJGaXh0dXJlVGFza3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjbGVhclpvbmVUYXNrczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBpc1N1Ym1pdHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBtZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIG1lc3NhZ2VUeXBlOiBcInN1Y2Nlc3NcIiB8IFwiZXJyb3JcIiA9IFwic3VjY2Vzc1wiO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNiczogU3RvcmVCdWlsZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXHJcbiAgICAgICAgZmlsdGVyKChkYXRhKSA9PiAhIWRhdGEpLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGE/LmNsaWVudCkge1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGEuY2xpZW50O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBoZWFkZXJEYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJoZWFkZXItZmlsdGVyc1wiKSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGhlYWRlckRhdGE/LmNsaWVudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkU3RvcmVzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZFN0b3JlcygpIHtcclxuICAgIHRoaXMuc2JzXHJcbiAgICAgIC5nZXRTdG9yZU9yQ2x1c3Rlckxpc3QoeyBzZWFyY2hNb2RlOiBcInN0b3JlXCIgfSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnN0b3JlT3B0aW9ucyA9IHJlcz8uZGF0YSB8fCBbXTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblN0b3JlU2VsZWN0ZWQoc3RvcmVJZDogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFN0b3JlSWQgPSBzdG9yZUlkO1xyXG4gICAgY29uc3Qgc3RvcmUgPSB0aGlzLnN0b3JlT3B0aW9ucy5maW5kKChzKSA9PiBzLmlkID09PSBzdG9yZUlkKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUxhYmVsID0gc3RvcmU/LmxhYmVsID8/IG51bGw7XHJcbiAgICB0aGlzLnJlc2V0Rmxvb3JTdGF0ZSgpO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRTdG9yZUxhYmVsKSB7XHJcbiAgICAgIHRoaXMubG9hZEZsb29ycygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNldEZsb29yU3RhdGUoKSB7XHJcbiAgICB0aGlzLmZsb29ycyA9IFtdO1xyXG4gICAgdGhpcy5zZWxlY3RlZEZsb29ySWQgPSBudWxsO1xyXG4gICAgdGhpcy5jdXJyZW50U3RhdHVzID0gbnVsbDtcclxuICAgIHRoaXMudGFyZ2V0U3RhdHVzID0gbnVsbDtcclxuICAgIHRoaXMuY2xlYXJMYXlvdXRUYXNrcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbGVhckZpeHR1cmVUYXNrcyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jbGVhclpvbmVUYXNrcyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZsb29ycygpIHtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZFN0b3JlTGFiZWwpIHJldHVybjtcclxuICAgIHRoaXMuaXNMb2FkaW5nRmxvb3JzID0gdHJ1ZTtcclxuICAgIHRoaXMuc2JzXHJcbiAgICAgIC5nZXRGbG9vcnNXaXRoU3RhdHVzKHRoaXMuc2VsZWN0ZWRTdG9yZUxhYmVsLCB0aGlzLmNsaWVudElkKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHJhdzogYW55W10gPSByZXM/LmRhdGE/LmZsb29ycyB8fCBbXTtcclxuICAgICAgICAgIHRoaXMuZmxvb3JzID0gcmF3XHJcbiAgICAgICAgICAgIC5tYXAoKGYpID0+ICh7XHJcbiAgICAgICAgICAgICAgX2lkOiBmLl9pZCxcclxuICAgICAgICAgICAgICBmbG9vck51bWJlcjogZi5mbG9vck51bWJlcixcclxuICAgICAgICAgICAgICBmbG9vck5hbWU6IGYuZmxvb3JOYW1lLFxyXG4gICAgICAgICAgICAgIHN0YXR1czogZi5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgaXNQbGFub0FwcHJvdmVkOiBmLmlzUGxhbm9BcHByb3ZlZCxcclxuICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogYEZsb29yICR7Zi5mbG9vck51bWJlcn0g4oCUICR7Zi5mbG9vck5hbWV9IFske3RoaXMuZ2V0U3RhdHVzTGFiZWwoZi5zdGF0dXMpfV1gLFxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuZmxvb3JOdW1iZXIgLSBiLmZsb29yTnVtYmVyKTtcclxuICAgICAgICAgIGlmICh0aGlzLmZsb29ycy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkZsb29yU2VsZWN0ZWQodGhpcy5mbG9vcnNbMF0uX2lkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nRmxvb3JzID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dNZXNzYWdlKFxyXG4gICAgICAgICAgICBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IFwiRmFpbGVkIHRvIGxvYWQgZmxvb3JzLlwiLFxyXG4gICAgICAgICAgICBcImVycm9yXCIsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmdGbG9vcnMgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRmxvb3JTZWxlY3RlZChmbG9vcklkOiBzdHJpbmcgfCBudWxsKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRmxvb3JJZCA9IGZsb29ySWQ7XHJcbiAgICBjb25zdCBmbG9vciA9IHRoaXMuZmxvb3JzLmZpbmQoKGYpID0+IGYuX2lkID09PSBmbG9vcklkKTtcclxuICAgIGlmIChmbG9vcikge1xyXG4gICAgICB0aGlzLmN1cnJlbnRTdGF0dXMgPSBmbG9vci5zdGF0dXM7XHJcbiAgICAgIHRoaXMudGFyZ2V0U3RhdHVzID0gZmxvb3Iuc3RhdHVzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50U3RhdHVzID0gbnVsbDtcclxuICAgICAgdGhpcy50YXJnZXRTdGF0dXMgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25UYXJnZXRTdGF0dXNTZWxlY3RlZCh2YWx1ZTogQnVja2V0U3RhdHVzIHwgbnVsbCkge1xyXG4gICAgdGhpcy50YXJnZXRTdGF0dXMgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBzdGF0dXNDaGFuZ2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy50YXJnZXRTdGF0dXMgJiYgdGhpcy50YXJnZXRTdGF0dXMgIT09IHRoaXMuY3VycmVudFN0YXR1cztcclxuICB9XHJcblxyXG4gIGdldCBjYW5TdWJtaXQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5pc1N1Ym1pdHRpbmcpIHJldHVybiBmYWxzZTtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZEZsb29ySWQgfHwgIXRoaXMudGFyZ2V0U3RhdHVzKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBhbnlDbGVhciA9XHJcbiAgICAgIHRoaXMuY2xlYXJMYXlvdXRUYXNrcyB8fCB0aGlzLmNsZWFyRml4dHVyZVRhc2tzIHx8IHRoaXMuY2xlYXJab25lVGFza3M7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNDaGFuZ2VkIHx8IGFueUNsZWFyO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RhdHVzTGFiZWwoc3RhdHVzOiBCdWNrZXRTdGF0dXMgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuICAgIGlmICghc3RhdHVzKSByZXR1cm4gXCItLVwiO1xyXG4gICAgcmV0dXJuIFNUQVRVU19PUFRJT05TLmZpbmQoKHMpID0+IHMudmFsdWUgPT09IHN0YXR1cyk/LmxhYmVsIHx8IHN0YXR1cztcclxuICB9XHJcblxyXG4gIGdldEJ1Y2tldExhYmVsKHN0YXR1czogQnVja2V0U3RhdHVzIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXN0YXR1cykgcmV0dXJuIFwiLS1cIjtcclxuICAgIHJldHVybiBTVEFUVVNfT1BUSU9OUy5maW5kKChzKSA9PiBzLnZhbHVlID09PSBzdGF0dXMpPy5idWNrZXQgfHwgXCItLVwiO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25TdWJtaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2FuU3VibWl0KSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZmxvb3IgPSB0aGlzLmZsb29ycy5maW5kKChmKSA9PiBmLl9pZCA9PT0gdGhpcy5zZWxlY3RlZEZsb29ySWQpO1xyXG4gICAgY29uc3QgZmxvb3JMYWJlbCA9IGZsb29yXHJcbiAgICAgID8gYEZsb29yICR7Zmxvb3IuZmxvb3JOdW1iZXJ9ICgke2Zsb29yLmZsb29yTmFtZX0pYFxyXG4gICAgICA6IFwic2VsZWN0ZWQgZmxvb3JcIjtcclxuXHJcbiAgICBjb25zdCBjbGVhclN1bW1hcnk6IHN0cmluZ1tdID0gW107XHJcbiAgICBpZiAodGhpcy5jbGVhckxheW91dFRhc2tzKSBjbGVhclN1bW1hcnkucHVzaChcIkxheW91dFwiKTtcclxuICAgIGlmICh0aGlzLmNsZWFyRml4dHVyZVRhc2tzKSBjbGVhclN1bW1hcnkucHVzaChcIkZpeHR1cmVcIik7XHJcbiAgICBpZiAodGhpcy5jbGVhclpvbmVUYXNrcykgY2xlYXJTdW1tYXJ5LnB1c2goXCJab25lXCIpO1xyXG5cclxuICAgIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGluZXMucHVzaChgU3RvcmU6ICR7dGhpcy5zZWxlY3RlZFN0b3JlTGFiZWwgPz8gXCItLVwifWApO1xyXG4gICAgbGluZXMucHVzaChmbG9vckxhYmVsKTtcclxuICAgIGlmICh0aGlzLnN0YXR1c0NoYW5nZWQpIHtcclxuICAgICAgbGluZXMucHVzaChcclxuICAgICAgICBgU3RhdHVzOiAke3RoaXMuZ2V0U3RhdHVzTGFiZWwodGhpcy5jdXJyZW50U3RhdHVzKX0g4oaSICR7dGhpcy5nZXRTdGF0dXNMYWJlbCh0aGlzLnRhcmdldFN0YXR1cyl9YCxcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChjbGVhclN1bW1hcnkubGVuZ3RoKSB7XHJcbiAgICAgIGxpbmVzLnB1c2goYENsZWFyIHRhc2tzOiAke2NsZWFyU3VtbWFyeS5qb2luKFwiLCBcIil9YCk7XHJcbiAgICB9XHJcbiAgICBsaW5lcy5wdXNoKFwiVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS4gQ29udGludWU/XCIpO1xyXG5cclxuICAgIGNvbnN0IGNvbmZpcm1lZCA9IGF3YWl0IHRoaXMuY29uZmlybShcclxuICAgICAgXCJDb25maXJtIGJ1Y2tldCB1cGRhdGVcIixcclxuICAgICAgbGluZXMuam9pbihcIlxcblwiKSxcclxuICAgICk7XHJcbiAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGZsb29ySWQ6IHRoaXMuc2VsZWN0ZWRGbG9vcklkISxcclxuICAgICAgdGFyZ2V0U3RhdHVzOiB0aGlzLnRhcmdldFN0YXR1cyEsXHJcbiAgICAgIGNsZWFyTGF5b3V0VGFza3M6IHRoaXMuY2xlYXJMYXlvdXRUYXNrcyxcclxuICAgICAgY2xlYXJGaXh0dXJlVGFza3M6IHRoaXMuY2xlYXJGaXh0dXJlVGFza3MsXHJcbiAgICAgIGNsZWFyWm9uZVRhc2tzOiB0aGlzLmNsZWFyWm9uZVRhc2tzLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmlzU3VibWl0dGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNicy5tb3ZlU3RvcmVCdWNrZXQocGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHJlcz8uZGF0YSB8fCB7fTtcclxuICAgICAgICBjb25zdCBkZWxldGVkID0gZGF0YT8uZGVsZXRlZENvdW50cyB8fCB7fTtcclxuICAgICAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBpZiAoZGF0YT8ucHJldlN0YXR1cyAmJiBkYXRhPy5uZXh0U3RhdHVzKSB7XHJcbiAgICAgICAgICBwYXJ0cy5wdXNoKFxyXG4gICAgICAgICAgICBgTW92ZWQgJHt0aGlzLmdldFN0YXR1c0xhYmVsKGRhdGEucHJldlN0YXR1cyl9IOKGkiAke3RoaXMuZ2V0U3RhdHVzTGFiZWwoZGF0YS5uZXh0U3RhdHVzKX1gLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGRlbGV0ZWQucHJvY2Vzc2VkVGFza3MgfHwgZGVsZXRlZC5wbGFub1Rhc2tDb21wbGlhbmNlcykge1xyXG4gICAgICAgICAgcGFydHMucHVzaChcclxuICAgICAgICAgICAgYENsZWFyZWQgJHtkZWxldGVkLnByb2Nlc3NlZFRhc2tzIHx8IDB9IHRhc2socyksICR7ZGVsZXRlZC5wbGFub1Rhc2tDb21wbGlhbmNlcyB8fCAwfSBjb21wbGlhbmNlIHJvdyhzKWAsXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dNZXNzYWdlKFxyXG4gICAgICAgICAgcGFydHMuam9pbihcIi4gXCIpIHx8IFwiVXBkYXRlZCBzdWNjZXNzZnVsbHlcIixcclxuICAgICAgICAgIFwic3VjY2Vzc1wiLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxvYWRGbG9vcnMoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCBcIkZhaWxlZCB0byB1cGRhdGUuXCIsIFwiZXJyb3JcIik7XHJcbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjb25maXJtKHRpdGxlOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRGVsZXRlQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZWYuY29tcG9uZW50SW5zdGFuY2UudGl0bGUgPSB0aXRsZTtcclxuICAgICAgcmVmLmNvbXBvbmVudEluc3RhbmNlLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XHJcbiAgICAgIHJlZi5jb21wb25lbnRJbnN0YW5jZS5jb25maXJtTGFiZWwgPSBcIlVwZGF0ZVwiO1xyXG4gICAgICByZWYuY29tcG9uZW50SW5zdGFuY2UuY29uZmlybUNsYXNzID0gXCJidG4tcHJpbWFyeVwiO1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWYucmVzdWx0O1xyXG4gICAgICByZXR1cm4gcmVzdWx0ID09PSBcIm9rXCI7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd01lc3NhZ2UobXNnOiBzdHJpbmcsIHR5cGU6IFwic3VjY2Vzc1wiIHwgXCJlcnJvclwiKSB7XHJcbiAgICB0aGlzLm1lc3NhZ2UgPSBtc2c7XHJcbiAgICB0aGlzLm1lc3NhZ2VUeXBlID0gdHlwZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMubWVzc2FnZSA9IFwiXCIpLCA2MDAwKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uIGNsYXNzPVwibW92ZS1idWNrZXQgcC0zXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgcC00XCIgc3R5bGU9XCJtYXgtd2lkdGg6IDY0MHB4O1wiPlxyXG4gICAgPGg1IGNsYXNzPVwibWItMVwiPk1vdmUgU3RvcmUgQnVja2V0PC9oNT5cclxuICAgIDxwIGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtYi0zXCI+XHJcbiAgICAgIE1vdmUgYSBmbG9vciBiZXR3ZWVuIE9uYm9hcmRpbmcgKERyYWZ0IC8gQWxsb2NhdGlvbiBQZW5kaW5nKSBhbmQgTWFuYWdlUGxhbm8gKENvbXBsZXRlZCkgd2l0aG91dCBsb3Npbmcgc3RvcmUgZGF0YS5cclxuICAgIDwvcD5cclxuXHJcbiAgICA8IS0tIFN0b3JlIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3RcclxuICAgICAgICBsYWJlbD1cIlN0b3JlXCJcclxuICAgICAgICBbaWRGaWVsZF09XCInaWQnXCJcclxuICAgICAgICBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIlxyXG4gICAgICAgIFtkYXRhXT1cInN0b3JlT3B0aW9uc1wiXHJcbiAgICAgICAgW3NlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZFN0b3JlSWRcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU3RvcmVTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRmxvb3IgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiICpuZ0lmPVwic2VsZWN0ZWRTdG9yZUlkXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRpbmdGbG9vcnM7IGVsc2UgZmxvb3JQaWNrZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbFwiPkxvYWRpbmcgZmxvb3JzLi4uPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zsb29yUGlja2VyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmbG9vcnMubGVuZ3RoID4gMDsgZWxzZSBub0Zsb29yc1wiPlxyXG4gICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3RcclxuICAgICAgICAgICAgbGFiZWw9XCJGbG9vclwiXHJcbiAgICAgICAgICAgIFtpZEZpZWxkXT1cIidfaWQnXCJcclxuICAgICAgICAgICAgW25hbWVGaWVsZF09XCInZGlzcGxheU5hbWUnXCJcclxuICAgICAgICAgICAgW2RhdGFdPVwiZmxvb3JzXCJcclxuICAgICAgICAgICAgW3NlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRGbG9vcklkXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GbG9vclNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI25vRmxvb3JzPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj5ObyBmbG9vcnMgZm91bmQgZm9yIHRoaXMgc3RvcmUuPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQ3VycmVudCBidWNrZXQgaW5mbyArIHRhcmdldCBzdGF0dXMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRGbG9vcklkICYmIGN1cnJlbnRTdGF0dXNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcC0zIHJvdW5kZWQgY3VycmVudC1pbmZvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBzbWFsbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+Q3VycmVudCBidWNrZXQ8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+e3sgZ2V0QnVja2V0TGFiZWwoY3VycmVudFN0YXR1cykgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBzbWFsbCBtdC0xXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWRcIj5DdXJyZW50IHN0YXR1czwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGRcIj57eyBnZXRTdGF0dXNMYWJlbChjdXJyZW50U3RhdHVzKSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0XHJcbiAgICAgICAgICBsYWJlbD1cIk1vdmUgdG8gc3RhdHVzXCJcclxuICAgICAgICAgIFtpZEZpZWxkXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgW25hbWVGaWVsZF09XCInbGFiZWwnXCJcclxuICAgICAgICAgIFtzdWJUZXh0RmllbGRdPVwiJ2J1Y2tldCdcIlxyXG4gICAgICAgICAgW2RhdGFdPVwic3RhdHVzT3B0aW9uc1wiXHJcbiAgICAgICAgICBbbmdNb2RlbF09XCJ0YXJnZXRTdGF0dXNcIlxyXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UYXJnZXRTdGF0dXNTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC13YXJuaW5nXCIgKm5nSWY9XCJzdGF0dXNDaGFuZ2VkXCI+XHJcbiAgICAgICAgICBpc1BsYW5vQXBwcm92ZWQgd2lsbCBiZSBzZXQgdG9cclxuICAgICAgICAgIDxzdHJvbmc+e3sgdGFyZ2V0U3RhdHVzID09PSAnZHJhZnQnID8gJ2ZhbHNlJyA6ICd0cnVlJyB9fTwvc3Ryb25nPixcclxuICAgICAgICAgIHBsYW5vUHJvZ3Jlc3Mgd2lsbCBiZSBzZXQgdG9cclxuICAgICAgICAgIDxzdHJvbmc+e3sgdGFyZ2V0U3RhdHVzID09PSAnY29tcGxldGVkJyA/IDI1IDogMCB9fTwvc3Ryb25nPi5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFRhc2sgY2xlYW51cCBjaGVja2JveGVzIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5DbGVhciB0YXNrcyAmYW1wOyBjb21wbGlhbmNlIHJvd3MgKG9wdGlvbmFsKTwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2xyTGF5b3V0XCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNsZWFyTGF5b3V0VGFza3NcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImNsckxheW91dFwiPlxyXG4gICAgICAgICAgICAgIExheW91dCB0YXNrc1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbFwiPihwbGFub1R5cGU6IGxheW91dCwgbGF5b3V0Rml4dHVyZSk8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNsckZpeHR1cmVcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2xlYXJGaXh0dXJlVGFza3NcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImNsckZpeHR1cmVcIj5cclxuICAgICAgICAgICAgICBGaXh0dXJlIHRhc2tzXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsXCI+KHBsYW5vVHlwZTogZml4dHVyZSwgdm0pPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjbHJab25lXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNsZWFyWm9uZVRhc2tzXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJjbHJab25lXCI+XHJcbiAgICAgICAgICAgICAgWm9uZSB0YXNrc1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbFwiPihwbGFub1R5cGU6IHpvbmVWZXJpZmljYXRpb24pPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBTdWJtaXQgLS0+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIiBbZGlzYWJsZWRdPVwiIWNhblN1Ym1pdFwiPlxyXG4gICAgICB7eyBpc1N1Ym1pdHRpbmcgPyAnVXBkYXRpbmcuLi4nIDogJ1VwZGF0ZScgfX1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC0zIGFsZXJ0XCIgKm5nSWY9XCJtZXNzYWdlXCJcclxuICAgICAgW2NsYXNzLmFsZXJ0LXN1Y2Nlc3NdPVwibWVzc2FnZVR5cGUgPT09ICdzdWNjZXNzJ1wiXHJcbiAgICAgIFtjbGFzcy5hbGVydC1kYW5nZXJdPVwibWVzc2FnZVR5cGUgPT09ICdlcnJvcidcIlxyXG4gICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmUtbGluZTtcIj5cclxuICAgICAge3sgbWVzc2FnZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS1idWNrZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvbW92ZS1idWNrZXQvbW92ZS1idWNrZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvcGxhbm8tdG9vbHMvbW92ZS1idWNrZXQvbW92ZS1idWNrZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLE9BQU8sRUFDUCxTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUM7QUFHZCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7Ozs7Ozs7O0FBd0I3RyxNQUFNLGNBQWMsR0FBbUI7SUFDckMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRTtJQUN4RDtRQUNFLEtBQUssRUFBRSxtQkFBbUI7UUFDMUIsS0FBSyxFQUFFLG9CQUFvQjtRQUMzQixNQUFNLEVBQUUsWUFBWTtLQUNyQjtJQUNELEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUU7Q0FDbEUsQ0FBQztBQU9GLE1BQU0sT0FBTyxtQkFBbUI7SUEwQnBCO0lBQ0E7SUFDQTtJQTNCVixRQUFRLENBQVM7SUFFakIsWUFBWSxHQUFrQixFQUFFLENBQUM7SUFDakMsZUFBZSxHQUFrQixJQUFJLENBQUM7SUFDdEMsa0JBQWtCLEdBQWtCLElB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QUFFLENBQUM7SUFDM0IsQ0FBQzt3R0F0UFUsbUJBQW1COzRGQUFuQixtQkFBbUIsdURDbERoQywyMkpBdUhBOzs0RkRyRWEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gXCJAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcFwiO1xyXG5pbXBvcnQge1xyXG4gIGRlYm91bmNlVGltZSxcclxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcclxuICBmaWx0ZXIsXHJcbiAgU3ViamVjdCxcclxuICB0YWtlVW50aWwsXHJcbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgU3RvcmVCdWlsZGVyU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9zdG9yZS1idWlsZGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGVsZXRlQ29uZmlybWF0aW9uQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL3BvcHVwcy9kZWxldGUtY29uZmlybWF0aW9uL2RlbGV0ZS1jb25maXJtYXRpb24uY29tcG9uZW50XCI7XHJcblxyXG5pbnRlcmZhY2UgU3RvcmVPcHRpb24ge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbGFiZWw6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIEZsb29yT3B0aW9uIHtcclxuICBfaWQ6IHN0cmluZztcclxuICBmbG9vck51bWJlcjogbnVtYmVyO1xyXG4gIGZsb29yTmFtZTogc3RyaW5nO1xyXG4gIHN0YXR1czogQnVja2V0U3RhdHVzO1xyXG4gIGlzUGxhbm9BcHByb3ZlZD86IGJvb2xlYW47XHJcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcclxufVxyXG5cclxudHlwZSBCdWNrZXRTdGF0dXMgPSBcImRyYWZ0XCIgfCBcImFsbG9jYXRpb25QZW5kaW5nXCIgfCBcImNvbXBsZXRlZFwiO1xyXG5cclxuaW50ZXJmYWNlIFN0YXR1c09wdGlvbiB7XHJcbiAgdmFsdWU6IEJ1Y2tldFN0YXR1cztcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGJ1Y2tldDogc3RyaW5nO1xyXG59XHJcblxyXG5jb25zdCBTVEFUVVNfT1BUSU9OUzogU3RhdHVzT3B0aW9uW10gPSBbXHJcbiAgeyB2YWx1ZTogXCJkcmFmdFwiLCBsYWJlbDogXCJEcmFmdFwiLCBidWNrZXQ6IFwiT25ib2FyZGluZ1wiIH0sXHJcbiAge1xyXG4gICAgdmFsdWU6IFwiYWxsb2NhdGlvblBlbmRpbmdcIixcclxuICAgIGxhYmVsOiBcIkFsbG9jYXRpb24gUGVuZGluZ1wiLFxyXG4gICAgYnVja2V0OiBcIk9uYm9hcmRpbmdcIixcclxuICB9LFxyXG4gIHsgdmFsdWU6IFwiY29tcGxldGVkXCIsIGxhYmVsOiBcIkNvbXBsZXRlZFwiLCBidWNrZXQ6IFwiTWFuYWdlUGxhbm9cIiB9LFxyXG5dO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLW1vdmUtYnVja2V0XCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9tb3ZlLWJ1Y2tldC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsOiBcIi4vbW92ZS1idWNrZXQuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vdmVCdWNrZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgY2xpZW50SWQ6IHN0cmluZztcclxuXHJcbiAgc3RvcmVPcHRpb25zOiBTdG9yZU9wdGlvbltdID0gW107XHJcbiAgc2VsZWN0ZWRTdG9yZUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBzZWxlY3RlZFN0b3JlTGFiZWw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBmbG9vcnM6IEZsb29yT3B0aW9uW10gPSBbXTtcclxuICBzZWxlY3RlZEZsb29ySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIGlzTG9hZGluZ0Zsb29yczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzdGF0dXNPcHRpb25zID0gU1RBVFVTX09QVElPTlM7XHJcbiAgdGFyZ2V0U3RhdHVzOiBCdWNrZXRTdGF0dXMgfCBudWxsID0gbnVsbDtcclxuICBjdXJyZW50U3RhdHVzOiBCdWNrZXRTdGF0dXMgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY2xlYXJMYXlvdXRUYXNrczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNsZWFyRml4dHVyZVRhc2tzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY2xlYXJab25lVGFza3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgaXNTdWJtaXR0aW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgbWVzc2FnZTogc3RyaW5nID0gXCJcIjtcclxuICBtZXNzYWdlVHlwZTogXCJzdWNjZXNzXCIgfCBcImVycm9yXCIgPSBcInN1Y2Nlc3NcIjtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzYnM6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLFxyXG4gICAgICAgIGZpbHRlcigoZGF0YSkgPT4gISFkYXRhKSxcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuY2xpZW50SWQgPSBkYXRhLmNsaWVudDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgaGVhZGVyRGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgYXMgc3RyaW5nLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuY2xpZW50SWQgPSBoZWFkZXJEYXRhPy5jbGllbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubG9hZFN0b3JlcygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRTdG9yZXMoKSB7XHJcbiAgICB0aGlzLnNic1xyXG4gICAgICAuZ2V0U3RvcmVPckNsdXN0ZXJMaXN0KHsgc2VhcmNoTW9kZTogXCJzdG9yZVwiIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdG9yZU9wdGlvbnMgPSByZXM/LmRhdGEgfHwgW107XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TdG9yZVNlbGVjdGVkKHN0b3JlSWQ6IHN0cmluZyB8IG51bGwpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRTdG9yZUlkID0gc3RvcmVJZDtcclxuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5zdG9yZU9wdGlvbnMuZmluZCgocykgPT4gcy5pZCA9PT0gc3RvcmVJZCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkU3RvcmVMYWJlbCA9IHN0b3JlPy5sYWJlbCA/PyBudWxsO1xyXG4gICAgdGhpcy5yZXNldEZsb29yU3RhdGUoKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkU3RvcmVMYWJlbCkge1xyXG4gICAgICB0aGlzLmxvYWRGbG9vcnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRGbG9vclN0YXRlKCkge1xyXG4gICAgdGhpcy5mbG9vcnMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGbG9vcklkID0gbnVsbDtcclxuICAgIHRoaXMuY3VycmVudFN0YXR1cyA9IG51bGw7XHJcbiAgICB0aGlzLnRhcmdldFN0YXR1cyA9IG51bGw7XHJcbiAgICB0aGlzLmNsZWFyTGF5b3V0VGFza3MgPSBmYWxzZTtcclxuICAgIHRoaXMuY2xlYXJGaXh0dXJlVGFza3MgPSBmYWxzZTtcclxuICAgIHRoaXMuY2xlYXJab25lVGFza3MgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGxvYWRGbG9vcnMoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRTdG9yZUxhYmVsKSByZXR1cm47XHJcbiAgICB0aGlzLmlzTG9hZGluZ0Zsb29ycyA9IHRydWU7XHJcbiAgICB0aGlzLnNic1xyXG4gICAgICAuZ2V0Rmxvb3JzV2l0aFN0YXR1cyh0aGlzLnNlbGVjdGVkU3RvcmVMYWJlbCwgdGhpcy5jbGllbnRJZClcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCByYXc6IGFueVtdID0gcmVzPy5kYXRhPy5mbG9vcnMgfHwgW107XHJcbiAgICAgICAgICB0aGlzLmZsb29ycyA9IHJhd1xyXG4gICAgICAgICAgICAubWFwKChmKSA9PiAoe1xyXG4gICAgICAgICAgICAgIF9pZDogZi5faWQsXHJcbiAgICAgICAgICAgICAgZmxvb3JOdW1iZXI6IGYuZmxvb3JOdW1iZXIsXHJcbiAgICAgICAgICAgICAgZmxvb3JOYW1lOiBmLmZsb29yTmFtZSxcclxuICAgICAgICAgICAgICBzdGF0dXM6IGYuc3RhdHVzLFxyXG4gICAgICAgICAgICAgIGlzUGxhbm9BcHByb3ZlZDogZi5pc1BsYW5vQXBwcm92ZWQsXHJcbiAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IGBGbG9vciAke2YuZmxvb3JOdW1iZXJ9IOKAlCAke2YuZmxvb3JOYW1lfSBbJHt0aGlzLmdldFN0YXR1c0xhYmVsKGYuc3RhdHVzKX1dYCxcclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmZsb29yTnVtYmVyIC0gYi5mbG9vck51bWJlcik7XHJcbiAgICAgICAgICBpZiAodGhpcy5mbG9vcnMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25GbG9vclNlbGVjdGVkKHRoaXMuZmxvb3JzWzBdLl9pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ0Zsb29ycyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShcclxuICAgICAgICAgICAgZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCBcIkZhaWxlZCB0byBsb2FkIGZsb29ycy5cIixcclxuICAgICAgICAgICAgXCJlcnJvclwiLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nRmxvb3JzID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkZsb29yU2VsZWN0ZWQoZmxvb3JJZDogc3RyaW5nIHwgbnVsbCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEZsb29ySWQgPSBmbG9vcklkO1xyXG4gICAgY29uc3QgZmxvb3IgPSB0aGlzLmZsb29ycy5maW5kKChmKSA9PiBmLl9pZCA9PT0gZmxvb3JJZCk7XHJcbiAgICBpZiAoZmxvb3IpIHtcclxuICAgICAgdGhpcy5jdXJyZW50U3RhdHVzID0gZmxvb3Iuc3RhdHVzO1xyXG4gICAgICB0aGlzLnRhcmdldFN0YXR1cyA9IGZsb29yLnN0YXR1cztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFN0YXR1cyA9IG51bGw7XHJcbiAgICAgIHRoaXMudGFyZ2V0U3RhdHVzID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVGFyZ2V0U3RhdHVzU2VsZWN0ZWQodmFsdWU6IEJ1Y2tldFN0YXR1cyB8IG51bGwpIHtcclxuICAgIHRoaXMudGFyZ2V0U3RhdHVzID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgc3RhdHVzQ2hhbmdlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMudGFyZ2V0U3RhdHVzICYmIHRoaXMudGFyZ2V0U3RhdHVzICE9PSB0aGlzLmN1cnJlbnRTdGF0dXM7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuU3VibWl0KCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuaXNTdWJtaXR0aW5nKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRGbG9vcklkIHx8ICF0aGlzLnRhcmdldFN0YXR1cykgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgYW55Q2xlYXIgPVxyXG4gICAgICB0aGlzLmNsZWFyTGF5b3V0VGFza3MgfHwgdGhpcy5jbGVhckZpeHR1cmVUYXNrcyB8fCB0aGlzLmNsZWFyWm9uZVRhc2tzO1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzQ2hhbmdlZCB8fCBhbnlDbGVhcjtcclxuICB9XHJcblxyXG4gIGdldFN0YXR1c0xhYmVsKHN0YXR1czogQnVja2V0U3RhdHVzIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXN0YXR1cykgcmV0dXJuIFwiLS1cIjtcclxuICAgIHJldHVybiBTVEFUVVNfT1BUSU9OUy5maW5kKChzKSA9PiBzLnZhbHVlID09PSBzdGF0dXMpPy5sYWJlbCB8fCBzdGF0dXM7XHJcbiAgfVxyXG5cclxuICBnZXRCdWNrZXRMYWJlbChzdGF0dXM6IEJ1Y2tldFN0YXR1cyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFzdGF0dXMpIHJldHVybiBcIi0tXCI7XHJcbiAgICByZXR1cm4gU1RBVFVTX09QVElPTlMuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gc3RhdHVzKT8uYnVja2V0IHx8IFwiLS1cIjtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uU3VibWl0KCkge1xyXG4gICAgaWYgKCF0aGlzLmNhblN1Ym1pdCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGZsb29yID0gdGhpcy5mbG9vcnMuZmluZCgoZikgPT4gZi5faWQgPT09IHRoaXMuc2VsZWN0ZWRGbG9vcklkKTtcclxuICAgIGNvbnN0IGZsb29yTGFiZWwgPSBmbG9vclxyXG4gICAgICA/IGBGbG9vciAke2Zsb29yLmZsb29yTnVtYmVyfSAoJHtmbG9vci5mbG9vck5hbWV9KWBcclxuICAgICAgOiBcInNlbGVjdGVkIGZsb29yXCI7XHJcblxyXG4gICAgY29uc3QgY2xlYXJTdW1tYXJ5OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuY2xlYXJMYXlvdXRUYXNrcykgY2xlYXJTdW1tYXJ5LnB1c2goXCJMYXlvdXRcIik7XHJcbiAgICBpZiAodGhpcy5jbGVhckZpeHR1cmVUYXNrcykgY2xlYXJTdW1tYXJ5LnB1c2goXCJGaXh0dXJlXCIpO1xyXG4gICAgaWYgKHRoaXMuY2xlYXJab25lVGFza3MpIGNsZWFyU3VtbWFyeS5wdXNoKFwiWm9uZVwiKTtcclxuXHJcbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcclxuICAgIGxpbmVzLnB1c2goYFN0b3JlOiAke3RoaXMuc2VsZWN0ZWRTdG9yZUxhYmVsID8/IFwiLS1cIn1gKTtcclxuICAgIGxpbmVzLnB1c2goZmxvb3JMYWJlbCk7XHJcbiAgICBpZiAodGhpcy5zdGF0dXNDaGFuZ2VkKSB7XHJcbiAgICAgIGxpbmVzLnB1c2goXHJcbiAgICAgICAgYFN0YXR1czogJHt0aGlzLmdldFN0YXR1c0xhYmVsKHRoaXMuY3VycmVudFN0YXR1cyl9IOKGkiAke3RoaXMuZ2V0U3RhdHVzTGFiZWwodGhpcy50YXJnZXRTdGF0dXMpfWAsXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2xlYXJTdW1tYXJ5Lmxlbmd0aCkge1xyXG4gICAgICBsaW5lcy5wdXNoKGBDbGVhciB0YXNrczogJHtjbGVhclN1bW1hcnkuam9pbihcIiwgXCIpfWApO1xyXG4gICAgfVxyXG4gICAgbGluZXMucHVzaChcIlRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuIENvbnRpbnVlP1wiKTtcclxuXHJcbiAgICBjb25zdCBjb25maXJtZWQgPSBhd2FpdCB0aGlzLmNvbmZpcm0oXHJcbiAgICAgIFwiQ29uZmlybSBidWNrZXQgdXBkYXRlXCIsXHJcbiAgICAgIGxpbmVzLmpvaW4oXCJcXG5cIiksXHJcbiAgICApO1xyXG4gICAgaWYgKCFjb25maXJtZWQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICBmbG9vcklkOiB0aGlzLnNlbGVjdGVkRmxvb3JJZCEsXHJcbiAgICAgIHRhcmdldFN0YXR1czogdGhpcy50YXJnZXRTdGF0dXMhLFxyXG4gICAgICBjbGVhckxheW91dFRhc2tzOiB0aGlzLmNsZWFyTGF5b3V0VGFza3MsXHJcbiAgICAgIGNsZWFyRml4dHVyZVRhc2tzOiB0aGlzLmNsZWFyRml4dHVyZVRhc2tzLFxyXG4gICAgICBjbGVhclpvbmVUYXNrczogdGhpcy5jbGVhclpvbmVUYXNrcyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zYnMubW92ZVN0b3JlQnVja2V0KHBheWxvYWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXM/LmRhdGEgfHwge307XHJcbiAgICAgICAgY29uc3QgZGVsZXRlZCA9IGRhdGE/LmRlbGV0ZWRDb3VudHMgfHwge307XHJcbiAgICAgICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgaWYgKGRhdGE/LnByZXZTdGF0dXMgJiYgZGF0YT8ubmV4dFN0YXR1cykge1xyXG4gICAgICAgICAgcGFydHMucHVzaChcclxuICAgICAgICAgICAgYE1vdmVkICR7dGhpcy5nZXRTdGF0dXNMYWJlbChkYXRhLnByZXZTdGF0dXMpfSDihpIgJHt0aGlzLmdldFN0YXR1c0xhYmVsKGRhdGEubmV4dFN0YXR1cyl9YCxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChkZWxldGVkLnByb2Nlc3NlZFRhc2tzIHx8IGRlbGV0ZWQucGxhbm9UYXNrQ29tcGxpYW5jZXMpIHtcclxuICAgICAgICAgIHBhcnRzLnB1c2goXHJcbiAgICAgICAgICAgIGBDbGVhcmVkICR7ZGVsZXRlZC5wcm9jZXNzZWRUYXNrcyB8fCAwfSB0YXNrKHMpLCAke2RlbGV0ZWQucGxhbm9UYXNrQ29tcGxpYW5jZXMgfHwgMH0gY29tcGxpYW5jZSByb3cocylgLFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZShcclxuICAgICAgICAgIHBhcnRzLmpvaW4oXCIuIFwiKSB8fCBcIlVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XCIsXHJcbiAgICAgICAgICBcInN1Y2Nlc3NcIixcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5sb2FkRmxvb3JzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dNZXNzYWdlKGVycj8uZXJyb3I/Lm1lc3NhZ2UgfHwgXCJGYWlsZWQgdG8gdXBkYXRlLlwiLCBcImVycm9yXCIpO1xyXG4gICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgY29uZmlybSh0aXRsZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKERlbGV0ZUNvbmZpcm1hdGlvbkNvbXBvbmVudCwge1xyXG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgICAgcmVmLmNvbXBvbmVudEluc3RhbmNlLnRpdGxlID0gdGl0bGU7XHJcbiAgICAgIHJlZi5jb21wb25lbnRJbnN0YW5jZS5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xyXG4gICAgICByZWYuY29tcG9uZW50SW5zdGFuY2UuY29uZmlybUxhYmVsID0gXCJVcGRhdGVcIjtcclxuICAgICAgcmVmLmNvbXBvbmVudEluc3RhbmNlLmNvbmZpcm1DbGFzcyA9IFwiYnRuLXByaW1hcnlcIjtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVmLnJlc3VsdDtcclxuICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gXCJva1wiO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dNZXNzYWdlKG1zZzogc3RyaW5nLCB0eXBlOiBcInN1Y2Nlc3NcIiB8IFwiZXJyb3JcIikge1xyXG4gICAgdGhpcy5tZXNzYWdlID0gbXNnO1xyXG4gICAgdGhpcy5tZXNzYWdlVHlwZSA9IHR5cGU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLm1lc3NhZ2UgPSBcIlwiKSwgNjAwMCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBjbGFzcz1cIm1vdmUtYnVja2V0IHAtM1wiPlxyXG4gIDxsaWItdG9vbC1wYWdlLWhlYWRlclxyXG4gICAgdGl0bGU9XCJNb3ZlIFN0b3JlIEJ1Y2tldFwiXHJcbiAgICBkZXNjcmlwdGlvbj1cIk1vdmUgYSBmbG9vciBiZXR3ZWVuIE9uYm9hcmRpbmcgKERyYWZ0IC8gQWxsb2NhdGlvbiBQZW5kaW5nKSBhbmQgTWFuYWdlUGxhbm8gKENvbXBsZXRlZCkgd2l0aG91dCBsb3Npbmcgc3RvcmUgZGF0YS5cIlxyXG4gID48L2xpYi10b29sLXBhZ2UtaGVhZGVyPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIHAtNFwiIHN0eWxlPVwibWF4LXdpZHRoOiA2NDBweDtcIj5cclxuXHJcbiAgICA8IS0tIFN0b3JlIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3RcclxuICAgICAgICBsYWJlbD1cIlN0b3JlXCJcclxuICAgICAgICBbaWRGaWVsZF09XCInaWQnXCJcclxuICAgICAgICBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIlxyXG4gICAgICAgIFtkYXRhXT1cInN0b3JlT3B0aW9uc1wiXHJcbiAgICAgICAgW3NlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZFN0b3JlSWRcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU3RvcmVTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRmxvb3IgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiICpuZ0lmPVwic2VsZWN0ZWRTdG9yZUlkXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRpbmdGbG9vcnM7IGVsc2UgZmxvb3JQaWNrZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbFwiPkxvYWRpbmcgZmxvb3JzLi4uPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zsb29yUGlja2VyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmbG9vcnMubGVuZ3RoID4gMDsgZWxzZSBub0Zsb29yc1wiPlxyXG4gICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3RcclxuICAgICAgICAgICAgbGFiZWw9XCJGbG9vclwiXHJcbiAgICAgICAgICAgIFtpZEZpZWxkXT1cIidfaWQnXCJcclxuICAgICAgICAgICAgW25hbWVGaWVsZF09XCInZGlzcGxheU5hbWUnXCJcclxuICAgICAgICAgICAgW2RhdGFdPVwiZmxvb3JzXCJcclxuICAgICAgICAgICAgW3NlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRGbG9vcklkXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25GbG9vclNlbGVjdGVkKCRldmVudClcIj5cclxuICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI25vRmxvb3JzPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGxcIj5ObyBmbG9vcnMgZm91bmQgZm9yIHRoaXMgc3RvcmUuPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQ3VycmVudCBidWNrZXQgaW5mbyArIHRhcmdldCBzdGF0dXMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRGbG9vcklkICYmIGN1cnJlbnRTdGF0dXNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcC0zIHJvdW5kZWQgY3VycmVudC1pbmZvXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBzbWFsbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+Q3VycmVudCBidWNrZXQ8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+e3sgZ2V0QnVja2V0TGFiZWwoY3VycmVudFN0YXR1cykgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBzbWFsbCBtdC0xXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWRcIj5DdXJyZW50IHN0YXR1czwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGRcIj57eyBnZXRTdGF0dXNMYWJlbChjdXJyZW50U3RhdHVzKSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0XHJcbiAgICAgICAgICBsYWJlbD1cIk1vdmUgdG8gc3RhdHVzXCJcclxuICAgICAgICAgIFtpZEZpZWxkXT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgW25hbWVGaWVsZF09XCInbGFiZWwnXCJcclxuICAgICAgICAgIFtzdWJUZXh0RmllbGRdPVwiJ2J1Y2tldCdcIlxyXG4gICAgICAgICAgW2RhdGFdPVwic3RhdHVzT3B0aW9uc1wiXHJcbiAgICAgICAgICBbbmdNb2RlbF09XCJ0YXJnZXRTdGF0dXNcIlxyXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UYXJnZXRTdGF0dXNTZWxlY3RlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC13YXJuaW5nXCIgKm5nSWY9XCJzdGF0dXNDaGFuZ2VkXCI+XHJcbiAgICAgICAgICBpc1BsYW5vQXBwcm92ZWQgd2lsbCBiZSBzZXQgdG9cclxuICAgICAgICAgIDxzdHJvbmc+e3sgdGFyZ2V0U3RhdHVzID09PSAnZHJhZnQnID8gJ2ZhbHNlJyA6ICd0cnVlJyB9fTwvc3Ryb25nPixcclxuICAgICAgICAgIHBsYW5vUHJvZ3Jlc3Mgd2lsbCBiZSBzZXQgdG9cclxuICAgICAgICAgIDxzdHJvbmc+e3sgdGFyZ2V0U3RhdHVzID09PSAnY29tcGxldGVkJyA/IDI1IDogMCB9fTwvc3Ryb25nPi5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFRhc2sgY2xlYW51cCBjaGVja2JveGVzIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5DbGVhciB0YXNrcyAmYW1wOyBjb21wbGlhbmNlIHJvd3MgKG9wdGlvbmFsKTwvbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIGlkPVwiY2xyTGF5b3V0XCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNsZWFyTGF5b3V0VGFza3NcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImNsckxheW91dFwiPlxyXG4gICAgICAgICAgICAgIExheW91dCB0YXNrc1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbFwiPihwbGFub1R5cGU6IGxheW91dCwgbGF5b3V0Rml4dHVyZSk8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiBpZD1cImNsckZpeHR1cmVcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2xlYXJGaXh0dXJlVGFza3NcIj5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImNsckZpeHR1cmVcIj5cclxuICAgICAgICAgICAgICBGaXh0dXJlIHRhc2tzXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsXCI+KHBsYW5vVHlwZTogZml4dHVyZSwgdm0pPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjbHJab25lXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNsZWFyWm9uZVRhc2tzXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJjbHJab25lXCI+XHJcbiAgICAgICAgICAgICAgWm9uZSB0YXNrc1xyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbFwiPihwbGFub1R5cGU6IHpvbmVWZXJpZmljYXRpb24pPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBTdWJtaXQgLS0+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIiBbZGlzYWJsZWRdPVwiIWNhblN1Ym1pdFwiPlxyXG4gICAgICB7eyBpc1N1Ym1pdHRpbmcgPyAnVXBkYXRpbmcuLi4nIDogJ1VwZGF0ZScgfX1cclxuICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC0zIGFsZXJ0XCIgKm5nSWY9XCJtZXNzYWdlXCJcclxuICAgICAgW2NsYXNzLmFsZXJ0LXN1Y2Nlc3NdPVwibWVzc2FnZVR5cGUgPT09ICdzdWNjZXNzJ1wiXHJcbiAgICAgIFtjbGFzcy5hbGVydC1kYW5nZXJdPVwibWVzc2FnZVR5cGUgPT09ICdlcnJvcidcIlxyXG4gICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmUtbGluZTtcIj5cclxuICAgICAge3sgbWVzc2FnZSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19
|