@hestia-earth/ui-components 0.29.2 → 0.29.3
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/common/navigation-menu/navigation-menu.component.d.ts +1 -0
- package/common/semver-utils.d.ts +0 -1
- package/engine/engine-models-version-link/engine-models-version-link.component.d.ts +1 -1
- package/esm2022/bibliographies/bibliographies-search-confirm/bibliographies-search-confirm.component.mjs +3 -3
- package/esm2022/chart/chart.component.mjs +3 -3
- package/esm2022/common/blank-node-state/blank-node-state.component.mjs +3 -3
- package/esm2022/common/clipboard/clipboard.component.mjs +3 -3
- package/esm2022/common/collapsible-box/collapsible-box.component.mjs +3 -3
- package/esm2022/common/data-table/data-table.component.mjs +3 -3
- package/esm2022/common/drawer-container/drawer-container.component.mjs +3 -3
- package/esm2022/common/link-key-value/link-key-value.component.mjs +3 -3
- package/esm2022/common/maps-drawing-confirm/maps-drawing-confirm.component.mjs +3 -3
- package/esm2022/common/mobile-shell/mobile-shell.component.mjs +3 -3
- package/esm2022/common/navigation-menu/navigation-menu.component.mjs +7 -3
- package/esm2022/common/schema-version-link/schema-version-link.component.mjs +3 -3
- package/esm2022/common/search-extend/search-extend.component.mjs +3 -3
- package/esm2022/common/semver-utils.mjs +2 -3
- package/esm2022/common/shelf-dialog/shelf-dialog.component.mjs +3 -3
- package/esm2022/common/shell/shell.component.mjs +3 -3
- package/esm2022/common/sort-select/sort-select.component.mjs +3 -3
- package/esm2022/cycles/cycles-completeness/cycles-completeness.component.mjs +3 -3
- package/esm2022/cycles/cycles-nodes/cycles-nodes.component.mjs +3 -3
- package/esm2022/cycles/cycles-nodes-timeline/cycles-nodes-timeline.component.mjs +3 -3
- package/esm2022/engine/engine-models-stage-deep/engine-models-stage-deep.component.mjs +3 -3
- package/esm2022/engine/engine-models-version-link/engine-models-version-link.component.mjs +3 -3
- package/esm2022/engine/engine-requirements-form/engine-requirements-form.component.mjs +3 -3
- package/esm2022/files/files-error-summary/files-error-summary-item/files-error-summary-item.component.mjs +3 -3
- package/esm2022/files/files-upload-errors/files-upload-errors.component.mjs +3 -3
- package/esm2022/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.mjs +3 -3
- package/esm2022/impact-assessments/impact-assessments-indicator-breakdown-chart/impact-assessments-indicator-breakdown-chart.component.mjs +3 -3
- package/esm2022/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +3 -3
- package/esm2022/node/node-csv-export-confirm/node-csv-export-confirm.component.mjs +3 -3
- package/esm2022/node/node-csv-select-headers/node-csv-select-headers.component.mjs +3 -3
- package/esm2022/node/node-diffs/node-diffs.component.mjs +3 -3
- package/esm2022/node/node-link/node-link.component.mjs +3 -3
- package/esm2022/node/node-logs-file/node-logs-file.component.mjs +3 -3
- package/esm2022/node/node-missing-lookup-factors/node-missing-lookup-factors.component.mjs +3 -3
- package/esm2022/node/node-recommendations/node-recommendations.component.mjs +3 -3
- package/esm2022/node/node-value-details/node-value-details.component.mjs +5 -3
- package/esm2022/schema/schema-info/schema-info.component.mjs +3 -3
- package/esm2022/select/select-option/select-option.component.mjs +3 -3
- package/esm2022/select/select-option-group/select-option-group.component.mjs +3 -3
- package/esm2022/select/select.component.mjs +3 -3
- package/esm2022/sites/sites-nodes/sites-nodes.component.mjs +3 -3
- package/esm2022/terms/terms-property-content/terms-property-content.component.mjs +3 -3
- package/esm2022/terms/terms-sub-class-of-content/terms-sub-class-of-content.component.mjs +3 -3
- package/esm2022/terms/terms-units-description/terms-units-description.component.mjs +3 -3
- package/fesm2022/hestia-earth-ui-components.mjs +93 -88
- package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
- package/node/node-logs-models/node-logs-models.component.d.ts +1 -1
- package/package.json +1 -1
- package/styles.scss +0 -34
package/esm2022/impact-assessments/impact-assessments-graph/impact-assessments-graph.component.mjs
CHANGED
|
@@ -173,10 +173,10 @@ export class ImpactAssessmentsGraphComponent {
|
|
|
173
173
|
effect(() => this.showWarnings.set(this.warnings()?.length > 0), { allowSignalWrites: true });
|
|
174
174
|
}
|
|
175
175
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImpactAssessmentsGraphComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
176
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: ImpactAssessmentsGraphComponent, isStandalone: true, selector: "he-impact-assessments-graph", inputs: { impactAssessments: { classPropertyName: "impactAssessments", publicName: "impactAssessments", isSignal: true, isRequired: false, transformFunction: null }, dataState: { classPropertyName: "dataState", publicName: "dataState", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (loading()) {\n <div class=\"loading-container has-text-center my-5 py-5\">\n <fa-icon [icon]=\"faSpinner\" animation=\"spin\" size=\"lg\"
|
|
176
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: ImpactAssessmentsGraphComponent, isStandalone: true, selector: "he-impact-assessments-graph", inputs: { impactAssessments: { classPropertyName: "impactAssessments", publicName: "impactAssessments", isSignal: true, isRequired: false, transformFunction: null }, dataState: { classPropertyName: "dataState", publicName: "dataState", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (loading()) {\n <div class=\"loading-container has-text-center my-5 py-5\">\n <fa-icon [icon]=\"faSpinner\" animation=\"spin\" size=\"lg\" />\n <p class=\"is-mt-2 is-italic is-size-7\">Loading chart, please wait...</p>\n </div>\n} @else {\n @if (isRecalculated()) {\n @if (filteredImpactAssessments().length > 1) {\n <div class=\"field has-addons pt-2 px-3 mb-0\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Impact Assessment</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select\n [ngModel]=\"selectedImpactAssessmentId()\"\n (change)=\"selectedImpactAssessmentId.set($event.target.value)\"\n [disabled]=\"loading()\">\n @for (value of filteredImpactAssessments(); track value['@id']) {\n <option [value]=\"value['@id']\">\n {{ value.name || value['@id'] }}\n </option>\n }\n </select>\n </div>\n </div>\n </div>\n }\n @if (!noData()) {\n <div class=\"field has-addons py-2 px-3\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a model</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select\n [ngModel]=\"selectedModelId()\"\n (change)=\"selectedModelId.set($event.target.value)\"\n [disabled]=\"loading()\">\n @for (model of models(); track model['@id']) {\n <option [value]=\"model['@id']\">{{ model.name || model['@id'] }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n }\n @if (showWarnings()) {\n <div class=\"has-text-warning py-3 has-text-centered\">\n @for (warning of warnings(); track warning) {\n <p class=\"is-mb-2\">\n <fa-icon class=\"pr-2\" [icon]=\"faExclamationTriangle\" />\n @switch (warning) {\n @case ('missing-terms') {\n <span>Calculations are not up to date. Some terms may not display correctly.</span>\n }\n }\n </p>\n }\n <p class=\"is-underlined is-size-7\"><a (click)=\"showWarnings.set(false)\">View chart anyway.</a></p>\n </div>\n }\n @if (error()) {\n <p class=\"has-text-danger py-3\">\n @switch (error()) {\n @case ('not-found') {\n <p>Impact Assessment not found</p>\n }\n @default {\n <div>\n <span>An unexpected error occurred:</span>\n <p class=\"mt-1\">{{ error() }}</p>\n </div>\n }\n }\n </p>\n }\n @if (noData()) {\n <div class=\"py-3\">\n <p class=\"has-text-centered\">No chart available.</p>\n </div>\n }\n } @else {\n <p class=\"has-text-centered py-3\">\n No chart available. Switch to\n <code>recalculated</code>\n version.\n </p>\n }\n}\n\n@if (showChart()) {\n <he-hierarchy-chart [data]=\"chartData()\" [terms]=\"allTerms()\" (chartError)=\"error.set($event)\" />\n}\n", styles: [".loading-container{min-height:200px}\n"], dependencies: [{ kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: HierarchyChartComponent, selector: "he-hierarchy-chart", inputs: ["data", "terms"], outputs: ["chartError"] }] }); }
|
|
177
177
|
}
|
|
178
178
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImpactAssessmentsGraphComponent, decorators: [{
|
|
179
179
|
type: Component,
|
|
180
|
-
args: [{ selector: 'he-impact-assessments-graph', standalone: true, imports: [FaIconComponent, FormsModule, HierarchyChartComponent], template: "@if (loading()) {\n <div class=\"loading-container has-text-center my-5 py-5\">\n <fa-icon [icon]=\"faSpinner\" animation=\"spin\" size=\"lg\"
|
|
180
|
+
args: [{ selector: 'he-impact-assessments-graph', standalone: true, imports: [FaIconComponent, FormsModule, HierarchyChartComponent], template: "@if (loading()) {\n <div class=\"loading-container has-text-center my-5 py-5\">\n <fa-icon [icon]=\"faSpinner\" animation=\"spin\" size=\"lg\" />\n <p class=\"is-mt-2 is-italic is-size-7\">Loading chart, please wait...</p>\n </div>\n} @else {\n @if (isRecalculated()) {\n @if (filteredImpactAssessments().length > 1) {\n <div class=\"field has-addons pt-2 px-3 mb-0\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Impact Assessment</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select\n [ngModel]=\"selectedImpactAssessmentId()\"\n (change)=\"selectedImpactAssessmentId.set($event.target.value)\"\n [disabled]=\"loading()\">\n @for (value of filteredImpactAssessments(); track value['@id']) {\n <option [value]=\"value['@id']\">\n {{ value.name || value['@id'] }}\n </option>\n }\n </select>\n </div>\n </div>\n </div>\n }\n @if (!noData()) {\n <div class=\"field has-addons py-2 px-3\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select a model</span>\n </div>\n <div class=\"control is-expanded\">\n <div class=\"select is-small is-fullwidth is-secondary\">\n <select\n [ngModel]=\"selectedModelId()\"\n (change)=\"selectedModelId.set($event.target.value)\"\n [disabled]=\"loading()\">\n @for (model of models(); track model['@id']) {\n <option [value]=\"model['@id']\">{{ model.name || model['@id'] }}</option>\n }\n </select>\n </div>\n </div>\n </div>\n }\n @if (showWarnings()) {\n <div class=\"has-text-warning py-3 has-text-centered\">\n @for (warning of warnings(); track warning) {\n <p class=\"is-mb-2\">\n <fa-icon class=\"pr-2\" [icon]=\"faExclamationTriangle\" />\n @switch (warning) {\n @case ('missing-terms') {\n <span>Calculations are not up to date. Some terms may not display correctly.</span>\n }\n }\n </p>\n }\n <p class=\"is-underlined is-size-7\"><a (click)=\"showWarnings.set(false)\">View chart anyway.</a></p>\n </div>\n }\n @if (error()) {\n <p class=\"has-text-danger py-3\">\n @switch (error()) {\n @case ('not-found') {\n <p>Impact Assessment not found</p>\n }\n @default {\n <div>\n <span>An unexpected error occurred:</span>\n <p class=\"mt-1\">{{ error() }}</p>\n </div>\n }\n }\n </p>\n }\n @if (noData()) {\n <div class=\"py-3\">\n <p class=\"has-text-centered\">No chart available.</p>\n </div>\n }\n } @else {\n <p class=\"has-text-centered py-3\">\n No chart available. Switch to\n <code>recalculated</code>\n version.\n </p>\n }\n}\n\n@if (showChart()) {\n <he-hierarchy-chart [data]=\"chartData()\" [terms]=\"allTerms()\" (chartError)=\"error.set($event)\" />\n}\n", styles: [".loading-container{min-height:200px}\n"] }]
|
|
181
181
|
}], ctorParameters: () => [] });
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBhY3QtYXNzZXNzbWVudHMvaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoL2ltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaC9pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBbUQsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxr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Q3pJNUMsMnlHQThGQSxnR0R5Q1ksZUFBZSwyTUFBRSxXQUFXLDB2QkFBRSx1QkFBdUI7OzRGQUVwRCwrQkFBK0I7a0JBUDNDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBRzNCLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgc2lnbmFsLCBpbnB1dCwgZWZmZWN0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZpbHRlciwgZ3JvdXBCeSwgbWFwLCBtZXJnZU1hcCwgY2F0Y2hFcnJvciwgdGFwLCB0b0FycmF5LCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvciwgSVRlcm1KU09OTEQsIE5vZGVUeXBlLCBUZXJtVGVybVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBnZXREZWZhdWx0TW9kZWxJZCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvZ2xvc3NhcnknO1xuaW1wb3J0IHsgaXNFbXB0eSwgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZhSWNvbkNvbXBvbmVudCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IGZhRXhjbGFtYXRpb25UcmlhbmdsZSwgZmFTcGlubmVyIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcblxuaW1wb3J0IHsgSUxpbmUsIExldmVsLCBwYXJzZUxpbmVzLCBwYXJzZU1lc3NhZ2UgfSBmcm9tICcuLi8uLi9jb21tb24vbG9ncy11dGlscyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZERlZXAgfSBmcm9tICcuLi8uLi9jb21tb24vcnhqcy11dGlscyc7XG5pbXBvcnQgeyBmaW5kTWF0Y2hpbmdNb2RlbCB9IGZyb20gJy4uLy4uL2VuZ2luZS9lbmdpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBIZU5vZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IG1hdGNoVGVybVR5cGUsIG1hdGNoRXhhY3RRdWVyeSwgbWF0Y2hUeXBlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQge1xuICBnZXRVbml0c0FuZExhYmVsLFxuICBJQ2hhcnREYXRhLFxuICBJQ2hhcnRJbnB1dExvZyxcbiAgSVRlcm1NYXBwaW5nLFxuICB0ZXJtXG59IGZyb20gJy4uLy4uL2NoYXJ0L2hpZXJhcmNoeS1jaGFydC9oaWVyYXJjaHktY2hhcnQubW9kZWwnO1xuaW1wb3J0IHsgSGllcmFyY2h5Q2hhcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jaGFydC9oaWVyYXJjaHktY2hhcnQvaGllcmFyY2h5LWNoYXJ0LmNvbXBvbmVudCc7XG5cbmNvbnN0IGZpbHRlclRlcm1UeXBlcyA9IFtcbiAgVGVybVRlcm1UeXBlLnJlc291cmNlVXNlLFxuICBUZXJtVGVybVR5cGUuZW1pc3Npb24sXG4gIFRlcm1UZXJtVHlwZS5jaGFyYWN0ZXJpc2VkSW5kaWNhdG9yLFxuICBUZXJtVGVybVR5cGUuZW5kcG9pbnRJbmRpY2F0b3IsXG4gIFRlcm1UZXJtVHlwZS5tb2RlbFxuXTtcblxuY29uc3Qgc2VhcmNoUGFyYW1zID0gKHNob3VsZDogYW55W10pID0+ICh7XG4gIGZpZWxkczogWydAdHlwZScsICdAaWQnLCAnbmFtZScsICd1bml0cycsICd0ZXJtVHlwZSddLFxuICBsaW1pdDogOTk5OSwgLy8gZG8gbm90IHVzZSBzY3JvbGxcbiAgcXVlcnk6IHtcbiAgICBib29sOiB7XG4gICAgICBtdXN0OiBbbWF0Y2hUeXBlKE5vZGVUeXBlLlRlcm0pXSxcbiAgICAgIHNob3VsZCxcbiAgICAgIG1pbmltdW1fc2hvdWxkX21hdGNoOiAxXG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgcGFyc2VMb2cgPSAoZGF0YTogYW55KTogSUNoYXJ0RGF0YSA9PiAoe1xuICBpbmRpY2F0b3I6IGRhdGFbJ2tleS90ZXJtJ10gfHwgZGF0YS50ZXJtIHx8IGRhdGEuaW5kaWNhdG9yLFxuICBjb250cmlidXRvcjogZGF0YS5ub2RlLFxuICBjb2VmZmljaWVudDogK2RhdGEuY29lZmZpY2llbnQsXG4gIG1vZGVsSWQ6IGRhdGEubW9kZWwgfHwgJ1Vua25vd24nLFxuICB3ZWlnaHRlZFZhbHVlOiArZGF0YS52YWx1ZSAqICtkYXRhLmNvZWZmaWNpZW50LFxuICB2YWx1ZTogK2RhdGEudmFsdWVcbn0pO1xuXG5jb25zdCBkZWZhdWx0SW5kaWNhdG9yc01vZGVsSWQgPSAnZGVmYXVsdEluZGljYXRvcnNNb2RlbElkJztcbmNvbnN0IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxOYW1lID0gJ0RlZmF1bHQgSW5kaWNhdG9ycyAobXVsdGktbW9kZWwpJztcblxuY29uc3Qgd2FybmluZ3MgPSAobG9nczogSUNoYXJ0RGF0YVtdLCB0ZXJtczogeyBbaWQ6IHN0cmluZ106IHRlcm0gfSkgPT5cbiAgWyFsb2dzLmV2ZXJ5KGxvZyA9PiB0ZXJtc1tsb2cuaW5kaWNhdG9yXSAmJiB0ZXJtc1tsb2cuY29udHJpYnV0b3JdKSAmJiAnbWlzc2luZy10ZXJtcyddLmZpbHRlcihCb29sZWFuKTtcblxuY29uc3QgZmlsdGVyTG9nID0gKGluZGljYXRvcnM6IEluZGljYXRvcltdLCBsb2c6IElDaGFydERhdGEpID0+XG4gIFtcbiAgICAhIWxvZy5pbmRpY2F0b3IsXG4gICAgISFsb2cuY29udHJpYnV0b3IsXG4gICAgIWlzTmFOKGxvZy53ZWlnaHRlZFZhbHVlKSxcbiAgICBsb2cuY29lZmZpY2llbnQgPiAwLFxuICAgIGluZGljYXRvcnMuc29tZShlcnUgPT4gZXJ1LnRlcm1bJ0BpZCddID09PSBsb2cuaW5kaWNhdG9yKVxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xuXG5jb25zdCBwYXJzZUxvZ1ZhbHVlcyA9IChpbXBhY3RBc3Nlc3NtZW50OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgdmFsdWVzOiBJQ2hhcnREYXRhW10pID0+IHtcbiAgY29uc3QgbG9nID0gdmFsdWVzWzBdO1xuICBjb25zdCB7IHdlaWdodGVkVG90YWwsIHRvdGFsIH0gPSB2YWx1ZXMucmVkdWNlKFxuICAgIChwcmV2LCBjdXJyKSA9PiAoe1xuICAgICAgd2VpZ2h0ZWRUb3RhbDogcHJldi53ZWlnaHRlZFRvdGFsICsgY3Vyci53ZWlnaHRlZFZhbHVlLFxuICAgICAgdG90YWw6IHByZXYudG90YWwgKyBjdXJyLnZhbHVlXG4gICAgfSksXG4gICAgeyB3ZWlnaHRlZFRvdGFsOiAwLCB0b3RhbDogMCB9XG4gICk7XG5cbiAgY29uc3QgaW5wdXRzT2JqID0gKGltcGFjdEFzc2Vzc21lbnQuZW1pc3Npb25zUmVzb3VyY2VVc2UgfHwgW10pXG4gICAgLmZpbHRlcihlcnUgPT4gZXJ1LnRlcm1bJ0BpZCddID09PSBsb2cuY29udHJpYnV0b3IgJiYgZXJ1LmlucHV0cz8ubGVuZ3RoKVxuICAgIC5yZWR1Y2UoKGFjYywgZXJ1KSA9PiB7XG4gICAgICBjb25zdCBpbnB1dElkID0gZXJ1LmlucHV0cy5tYXAoaSA9PiBpWydAaWQnXSkuam9pbignOycpO1xuICAgICAgY29uc3QgY3VycmVudE9wZXJhdGlvbnMgPSBlcnUub3BlcmF0aW9uXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogZXJ1Lm9wZXJhdGlvblsnQGlkJ10sXG4gICAgICAgICAgICAgIC4uLmdldFVuaXRzQW5kTGFiZWwoZXJ1Lm9wZXJhdGlvbiksXG4gICAgICAgICAgICAgIG1vZGVsSWQ6IGxvZy5tb2RlbElkLFxuICAgICAgICAgICAgICB3ZWlnaHRlZFZhbHVlOiBlcnUudmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIDogW107XG5cbiAgICAgIGFjY1tpbnB1dElkXSA9IGFjY1tpbnB1dElkXVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmFjY1tpbnB1dElkXSxcbiAgICAgICAgICAgIHdlaWdodGVkVmFsdWU6IGFjY1tpbnB1dElkXS53ZWlnaHRlZFZhbHVlICsgZXJ1LnZhbHVlLFxuICAgICAgICAgICAgbW9kZWxJZDogbG9nLm1vZGVsSWQsXG4gICAgICAgICAgICBvcGVyYXRpb25zOiBbLi4uYWNjW2lucHV0SWRdLm9wZXJhdGlvbnMsIC4uLmN1cnJlbnRPcGVyYXRpb25zXVxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICBpZDogaW5wdXRJZCxcbiAgICAgICAgICAgIC4uLmdldFVuaXRzQW5kTGFiZWwoZXJ1LmlucHV0cy5sZW5ndGggPT09IDEgPyBlcnUuaW5wdXRzWzBdIDogeyBuYW1lOiAnSW5wdXQgZ3JvdXAgKHVuZGVyIGRldmVsb3BtZW50KScgfSksXG4gICAgICAgICAgICBtb2RlbElkOiBsb2cubW9kZWxJZCxcbiAgICAgICAgICAgIHdlaWdodGVkVmFsdWU6IGVydS52YWx1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvbnM6IFsuLi5jdXJyZW50T3BlcmF0aW9uc11cbiAgICAgICAgICB9O1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIGNvbnN0IGlucHV0czogSUNoYXJ0SW5wdXRMb2dbXSA9IE9iamVjdC52YWx1ZXMoaW5wdXRzT2JqKTtcbiAgcmV0dXJuIHsgLi4ubG9nLCB3ZWlnaHRlZFZhbHVlOiB3ZWlnaHRlZFRvdGFsLCB2YWx1ZTogdG90YWwsIGlucHV0cyB9IGFzIElDaGFydERhdGE7XG59O1xuXG5jb25zdCBwYXJzZU5vZGVMb2dzID0gKGltcGFjdEFzc2Vzc21lbnQ6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBpbmRpY2F0b3JzOiBJbmRpY2F0b3JbXSwgbGluZXM6IElMaW5lW10pID0+XG4gIGZyb20obGluZXMpLnBpcGUoXG4gICAgZmlsdGVyKCh7IGRhdGEgfSkgPT4gZGF0YS5sb2dnZXIgPT09ICdoZXN0aWFfZWFydGgubW9kZWxzJyAmJiBkYXRhLmxldmVsID09PSBMZXZlbC5kZWJ1ZyksXG4gICAgZmlsdGVyKCh7IGRhdGE6IHsgbWVzc2FnZSB9IH0pID0+ICEhbWVzc2FnZSksXG4gICAgbWFwKCh7IGRhdGE6IHsgbWVzc2FnZSB9IH0pID0+IHBhcnNlTWVzc2FnZShtZXNzYWdlKSksXG4gICAgZmlsdGVyKG1lc3NhZ2UgPT4gJ25vZGUnIGluIG1lc3NhZ2UpLFxuICAgIG1hcChkYXRhID0+IHBhcnNlTG9nKGRhdGEpKSxcbiAgICBmaWx0ZXIobG9nID0+IGZpbHRlckxvZyhpbmRpY2F0b3JzLCBsb2cpKSxcbiAgICBncm91cEJ5KGxvZyA9PiBbbG9nLmluZGljYXRvciwgbG9nLmNvbnRyaWJ1dG9yLCBsb2cubW9kZWxJZF0uam9pbignLycpKSxcbiAgICBtZXJnZU1hcChncm91cCA9PiBncm91cC5waXBlKHRvQXJyYXkoKSkpLFxuICAgIG1hcChkYXRhID0+IHBhcnNlTG9nVmFsdWVzKGltcGFjdEFzc2Vzc21lbnQsIGRhdGEpKSxcbiAgICB0b0FycmF5KClcbiAgKSBhcyBhbnkgYXMgT2JzZXJ2YWJsZTxJQ2hhcnREYXRhW10+O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGgnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGYUljb25Db21wb25lbnQsIEZvcm1zTW9kdWxlLCBIaWVyYXJjaHlDaGFydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNHcmFwaENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoU2VydmljZSA9IGluamVjdChIZVNlYXJjaFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG5vZGVTZXJ2aWNlID0gaW5qZWN0KEhlTm9kZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYVNwaW5uZXIgPSBmYVNwaW5uZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYUV4Y2xhbWF0aW9uVHJpYW5nbGUgPSBmYUV4Y2xhbWF0aW9uVHJpYW5nbGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbml0aWFsVGVybXMgPSB0b1NpZ25hbChcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2VcbiAgICAgIC5zZWFyY2gkPElUZXJtSlNPTkxELCBOb2RlVHlwZS5UZXJtPihzZWFyY2hQYXJhbXMoZmlsdGVyVGVybVR5cGVzLm1hcCh0ZXJtVHlwZSA9PiBtYXRjaFRlcm1UeXBlKHRlcm1UeXBlKSkpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCh7IHJlc3VsdHMgfSkgPT5cbiAgICAgICAgICBmcm9tKHJlc3VsdHMpLnBpcGUoXG4gICAgICAgICAgICBtYXAodGVybSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1vZGVsRG9jcyA9IHRlcm0udGVybVR5cGUgPT09IFRlcm1UZXJtVHlwZS5tb2RlbCA/IGZpbmRNYXRjaGluZ01vZGVsKHsgbW9kZWw6IHRlcm1bJ0BpZCddIH0pIDogbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi50ZXJtLFxuICAgICAgICAgICAgICAgIGRvY3M6IG1vZGVsRG9jcz8uYXBpRG9jc1BhdGggfHwgbW9kZWxEb2NzPy5kb2NQYXRoIHx8IG1vZGVsRG9jcz8ucGF0aFxuICAgICAgICAgICAgICB9IGFzIHRlcm07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRvQXJyYXkoKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKHRlcm1zID0+IE9iamVjdC5mcm9tRW50cmllcyh0ZXJtcy5tYXAodGVybSA9PiBbdGVybVsnQGlkJ10sIHRlcm1dKSkgYXMgSVRlcm1NYXBwaW5nKVxuICAgICAgKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxUZXJtcyQgPSB0b09ic2VydmFibGUodGhpcy5pbml0aWFsVGVybXMpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbXBhY3RBc3Nlc3NtZW50cyA9IGlucHV0PElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEW10+KFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGFTdGF0ZSA9IGlucHV0KERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWQpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNSZWNhbGN1bGF0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRhdGFTdGF0ZSgpID09PSBEYXRhU3RhdGUucmVjYWxjdWxhdGVkKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50cyA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuaW1wYWN0QXNzZXNzbWVudHMoKT8uZmlsdGVyKGlhID0+IGlhLmVuZHBvaW50cz8ubGVuZ3RoIHx8IGlhLmltcGFjdHM/Lmxlbmd0aCkgPz8gW11cbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkID0gc2lnbmFsPHN0cmluZz4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5maWx0ZXJlZEltcGFjdEFzc2Vzc21lbnRzKCk/LmZpbmQoaWEgPT4gaWFbJ0BpZCddID09PSB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkKCkpIHx8XG4gICAgICB0aGlzLmZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHMoKT8uWzBdXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5kaWNhdG9ycyA9IGNvbXB1dGVkKCgpID0+IFtcbiAgICAuLi4odGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQoKT8uZW5kcG9pbnRzID8/IFtdKSxcbiAgICAuLi4odGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQoKT8uaW1wYWN0cyA/PyBbXSlcbiAgXSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBub2RlTG9nc1JhdyQgPSB0b09ic2VydmFibGUodGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQpLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWREZWVwKCksXG4gICAgZmlsdGVyKHYgPT4gIWlzRW1wdHkodikpLFxuICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KHRydWUpKSxcbiAgICBtZXJnZU1hcChub2RlID0+XG4gICAgICB0aGlzLm5vZGVTZXJ2aWNlLmdldExvZyQoe1xuICAgICAgICAuLi5ub2RlLFxuICAgICAgICBkYXRhU3RhdGU6IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWRcbiAgICAgIH0pXG4gICAgKSxcbiAgICBtYXAodmFsdWUgPT4gKHZhbHVlID8gcGFyc2VMaW5lcyh2YWx1ZSkgOiAoW10gYXMgSUxpbmVbXSkpKSxcbiAgICBzdGFydFdpdGgoW10gYXMgSUxpbmVbXSlcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5vZGVMb2dzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubm9kZUxvZ3NSYXckLFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmlzUmVjYWxjdWxhdGVkKSxcbiAgICB0b09ic2VydmFibGUodGhpcy5pbmRpY2F0b3JzKSxcbiAgICB0b09ic2VydmFibGUodGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQpXG4gIF0pLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWREZWVwKCksXG4gICAgZmlsdGVyKChbbG9ncywgaXNSZWNhbGN1bGF0ZWQsIGluZGljYXRvcnNdKSA9PlxuICAgICAgWyEhbG9ncz8ubGVuZ3RoLCBpc1JlY2FsY3VsYXRlZCwgISFpbmRpY2F0b3JzPy5sZW5ndGhdLmV2ZXJ5KEJvb2xlYW4pXG4gICAgKSxcbiAgICBtZXJnZU1hcCgoW2xvZ3MsIF9pc1JlY2FsY3VsYXRlZCwgaW5kaWNhdG9ycywgaW1wYWN0QXNzZXNzbWVudF0pID0+XG4gICAgICBwYXJzZU5vZGVMb2dzKGltcGFjdEFzc2Vzc21lbnQsIGluZGljYXRvcnMsIGxvZ3MpXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB0aGlzLmVycm9yLnNldChlcnIudG9TdHJpbmcoKSk7XG4gICAgICByZXR1cm4gb2YoW10gYXMgSUNoYXJ0RGF0YVtdKTtcbiAgICB9KSxcbiAgICBzdGFydFdpdGgoW10gYXMgSUNoYXJ0RGF0YVtdKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZUxvZ3MgPSB0b1NpZ25hbCh0aGlzLm5vZGVMb2dzJCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsbFRlcm1zID0gdG9TaWduYWwoXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5ub2RlTG9ncyQsIHRoaXMuaW5pdGlhbFRlcm1zJF0pLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZERlZXAoKSxcbiAgICAgIGZpbHRlcih2YWx1ZXMgPT4gdmFsdWVzLmV2ZXJ5KHYgPT4gIWlzRW1wdHkodikpKSxcbiAgICAgIG1lcmdlTWFwKChbbG9ncywgdGVybXNdKSA9PlxuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2VcbiAgICAgICAgICAuc2VhcmNoJDxcbiAgICAgICAgICAgIElUZXJtSlNPTkxELFxuICAgICAgICAgICAgTm9kZVR5cGUuVGVybVxuICAgICAgICAgID4oc2VhcmNoUGFyYW1zKHVuaXF1ZShsb2dzLmZsYXRNYXAobCA9PiBbbC5jb250cmlidXRvciwgbC5pbmRpY2F0b3JdKS5maWx0ZXIodGVybUlkID0+ICF0ZXJtcz8uW3Rlcm1JZF0pKS5tYXAoaWQgPT4gbWF0Y2hFeGFjdFF1ZXJ5KCdAaWQnLCBpZCkpKSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoeyByZXN1bHRzIH0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLihPYmplY3QuZnJvbUVudHJpZXMocmVzdWx0cy5tYXAodGVybSA9PiBbdGVybVsnQGlkJ10sIHRlcm1dKSkgYXMgSVRlcm1NYXBwaW5nKSxcbiAgICAgICAgICAgICAgLi4udGVybXNcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIClcbiAgICAgICksXG4gICAgICBzdGFydFdpdGgoe30gYXMgSVRlcm1NYXBwaW5nKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKSlcbiAgICApXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5vRGF0YSA9IGNvbXB1dGVkKCgpID0+ICF0aGlzLm5vZGVMb2dzKCk/Lmxlbmd0aCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB3YXJuaW5ncyA9IGNvbXB1dGVkKCgpID0+XG4gICAgW3RoaXMubm9kZUxvZ3MoKSwgdGhpcy5hbGxUZXJtcygpXS5zb21lKHYgPT4gaXNFbXB0eSh2KSkgPyBbXSA6IHdhcm5pbmdzKHRoaXMubm9kZUxvZ3MoKSwgdGhpcy5hbGxUZXJtcygpKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd1dhcm5pbmdzID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVycm9yID0gc2lnbmFsPHN0cmluZz4odW5kZWZpbmVkKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRNb2RlbElkID0gc2lnbmFsPHN0cmluZz4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBoYXNEZWZhdWx0TW9kZWxMb2dzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLm5vZGVMb2dzKCk/LnNvbWUobG9nID0+IGxvZy5tb2RlbElkID09PSBnZXREZWZhdWx0TW9kZWxJZChsb2cuaW5kaWNhdG9yKSlcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGVscyA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICBbXG4gICAgICAgIC4uLih0aGlzLmhhc0RlZmF1bHRNb2RlbExvZ3MoKSA/IFt7ICdAaWQnOiBkZWZhdWx0SW5kaWNhdG9yc01vZGVsSWQsIG5hbWU6IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxOYW1lIH1dIDogW10pLFxuICAgICAgICAuLi51bmlxdWUodGhpcy5ub2RlTG9ncygpLm1hcCgoeyBtb2RlbElkIH0pID0+IHRoaXMuYWxsVGVybXMoKVttb2RlbElkXSB8fCB7ICdAaWQnOiBtb2RlbElkIH0pKVxuICAgICAgXSBhcyBQYXJ0aWFsPElUZXJtSlNPTkxEPltdXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0RGF0YSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ub2RlTG9ncygpLmZpbHRlcihcbiAgICAgIGxvZyA9PlxuICAgICAgICBsb2cubW9kZWxJZCA9PT1cbiAgICAgICAgKHRoaXMuc2VsZWN0ZWRNb2RlbElkKCkgPT09IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxJZFxuICAgICAgICAgID8gZ2V0RGVmYXVsdE1vZGVsSWQobG9nLmluZGljYXRvcilcbiAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRNb2RlbElkKCkpXG4gICAgKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd0NoYXJ0ID0gY29tcHV0ZWQoKCkgPT5cbiAgICBbIWlzRW1wdHkodGhpcy5jaGFydERhdGEoKSksICFpc0VtcHR5KHRoaXMuYWxsVGVybXMoKSksICF0aGlzLmxvYWRpbmcoKSwgIXRoaXMuZXJyb3IoKSwgIXRoaXMuc2hvd1dhcm5pbmdzKCldLmV2ZXJ5KFxuICAgICAgQm9vbGVhblxuICAgIClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJZCA9IHRoaXMuZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50cygpPy5bMF0/LlsnQGlkJ107XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRJZCgpICYmIGRlZmF1bHRJZCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQuc2V0KGRlZmF1bHRJZCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRNb2RlbElkKCkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9kZWxJZC5zZXQodGhpcy5tb2RlbHMoKT8uWzBdPy5bJ0BpZCddIHx8IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxJZCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgZWZmZWN0KCgpID0+IHRoaXMuc2hvd1dhcm5pbmdzLnNldCh0aGlzLndhcm5pbmdzKCk/Lmxlbmd0aCA+IDApLCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICB9XG59XG4iLCJAaWYgKGxvYWRpbmcoKSkge1xuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXIgaGFzLXRleHQtY2VudGVyIG15LTUgcHktNVwiPlxuICAgIDxmYS1pY29uIFtpY29uXT1cImZhU3Bpbm5lclwiIGFuaW1hdGlvbj1cInNwaW5cIiBzaXplPVwibGdcIj48L2ZhLWljb24+XG4gICAgPHAgY2xhc3M9XCJpcy1tdC0yIGlzLWl0YWxpYyBpcy1zaXplLTdcIj5Mb2FkaW5nIGNoYXJ0LCBwbGVhc2Ugd2FpdC4uLjwvcD5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgQGlmIChpc1JlY2FsY3VsYXRlZCgpKSB7XG4gICAgQGlmIChmaWx0ZXJlZEltcGFjdEFzc2Vzc21lbnRzKCkubGVuZ3RoID4gMSkge1xuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnMgcHQtMiBweC0zIG1iLTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWMgaXMtc2Vjb25kYXJ5XCI+U2VsZWN0IGFuIEltcGFjdCBBc3Nlc3NtZW50PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQoKVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQuc2V0KCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmcoKVwiPlxuICAgICAgICAgICAgICBAZm9yICh2YWx1ZSBvZiBmaWx0ZXJlZEltcGFjdEFzc2Vzc21lbnRzKCk7IHRyYWNrIHZhbHVlWydAaWQnXSkge1xuICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInZhbHVlWydAaWQnXVwiPlxuICAgICAgICAgICAgICAgICAge3sgdmFsdWUubmFtZSB8fCB2YWx1ZVsnQGlkJ10gfX1cbiAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoIW5vRGF0YSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9ucyBweS0yIHB4LTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWMgaXMtc2Vjb25kYXJ5XCI+U2VsZWN0IGEgbW9kZWw8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtc21hbGwgaXMtZnVsbHdpZHRoIGlzLXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZE1vZGVsSWQoKVwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0ZWRNb2RlbElkLnNldCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nKClcIj5cbiAgICAgICAgICAgICAgQGZvciAobW9kZWwgb2YgbW9kZWxzKCk7IHRyYWNrIG1vZGVsWydAaWQnXSkge1xuICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIm1vZGVsWydAaWQnXVwiPnt7IG1vZGVsLm5hbWUgfHwgbW9kZWxbJ0BpZCddIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKHNob3dXYXJuaW5ncygpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiaGFzLXRleHQtd2FybmluZyBweS0zIGhhcy10ZXh0LWNlbnRlcmVkXCI+XG4gICAgICAgIEBmb3IgKHdhcm5pbmcgb2Ygd2FybmluZ3MoKTsgdHJhY2sgd2FybmluZykge1xuICAgICAgICAgIDxwIGNsYXNzPVwiaXMtbWItMlwiPlxuICAgICAgICAgICAgPGZhLWljb24gY2xhc3M9XCJwci0yXCIgW2ljb25dPVwiZmFFeGNsYW1hdGlvblRyaWFuZ2xlXCI+PC9mYS1pY29uPlxuICAgICAgICAgICAgQHN3aXRjaCAod2FybmluZykge1xuICAgICAgICAgICAgICBAY2FzZSAoJ21pc3NpbmctdGVybXMnKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+Q2FsY3VsYXRpb25zIGFyZSBub3QgdXAgdG8gZGF0ZS4gU29tZSB0ZXJtcyBtYXkgbm90IGRpc3BsYXkgY29ycmVjdGx5Ljwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgfVxuICAgICAgICA8cCBjbGFzcz1cImlzLXVuZGVybGluZWQgaXMtc2l6ZS03XCI+PGEgKGNsaWNrKT1cInNob3dXYXJuaW5ncy5zZXQoZmFsc2UpXCI+VmlldyBjaGFydCBhbnl3YXkuPC9hPjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGVycm9yKCkpIHtcbiAgICAgIDxwIGNsYXNzPVwiaGFzLXRleHQtZGFuZ2VyIHB5LTNcIj5cbiAgICAgICAgQHN3aXRjaCAoZXJyb3IoKSkge1xuICAgICAgICAgIEBjYXNlICgnbm90LWZvdW5kJykge1xuICAgICAgICAgICAgPHA+SW1wYWN0IEFzc2Vzc21lbnQgbm90IGZvdW5kPC9wPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8c3Bhbj5BbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkOjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtdC0xXCI+e3sgZXJyb3IoKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9wPlxuICAgIH1cbiAgICBAaWYgKG5vRGF0YSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicHktM1wiPlxuICAgICAgICA8cCBjbGFzcz1cImhhcy10ZXh0LWNlbnRlcmVkXCI+Tm8gY2hhcnQgYXZhaWxhYmxlLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgPHAgY2xhc3M9XCJoYXMtdGV4dC1jZW50ZXJlZCBweS0zXCI+XG4gICAgICBObyBjaGFydCBhdmFpbGFibGUuIFN3aXRjaCB0b1xuICAgICAgPGNvZGU+cmVjYWxjdWxhdGVkPC9jb2RlPlxuICAgICAgdmVyc2lvbi5cbiAgICA8L3A+XG4gIH1cbn1cblxuQGlmIChzaG93Q2hhcnQoKSkge1xuICA8aGUtaGllcmFyY2h5LWNoYXJ0IFtkYXRhXT1cImNoYXJ0RGF0YSgpXCIgW3Rlcm1zXT1cImFsbFRlcm1zKClcIiAoY2hhcnRFcnJvcik9XCJlcnJvci5zZXQoJGV2ZW50KVwiIC8+XG59XG4iXX0=
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBhY3QtYXNzZXNzbWVudHMvaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoL2ltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaC9pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBbUQsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxr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Q3pJNUMsMnhHQThGQSxnR0R5Q1ksZUFBZSwyTUFBRSxXQUFXLDB2QkFBRSx1QkFBdUI7OzRGQUVwRCwrQkFBK0I7a0JBUDNDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBRzNCLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgc2lnbmFsLCBpbnB1dCwgZWZmZWN0LCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZpbHRlciwgZ3JvdXBCeSwgbWFwLCBtZXJnZU1hcCwgY2F0Y2hFcnJvciwgdGFwLCB0b0FycmF5LCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmcm9tLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgSUltcGFjdEFzc2Vzc21lbnRKU09OTEQsIEluZGljYXRvciwgSVRlcm1KU09OTEQsIE5vZGVUeXBlLCBUZXJtVGVybVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyBnZXREZWZhdWx0TW9kZWxJZCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvZ2xvc3NhcnknO1xuaW1wb3J0IHsgaXNFbXB0eSwgdW5pcXVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZhSWNvbkNvbXBvbmVudCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9hbmd1bGFyLWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IGZhRXhjbGFtYXRpb25UcmlhbmdsZSwgZmFTcGlubmVyIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcblxuaW1wb3J0IHsgSUxpbmUsIExldmVsLCBwYXJzZUxpbmVzLCBwYXJzZU1lc3NhZ2UgfSBmcm9tICcuLi8uLi9jb21tb24vbG9ncy11dGlscyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZERlZXAgfSBmcm9tICcuLi8uLi9jb21tb24vcnhqcy11dGlscyc7XG5pbXBvcnQgeyBmaW5kTWF0Y2hpbmdNb2RlbCB9IGZyb20gJy4uLy4uL2VuZ2luZS9lbmdpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBIZU5vZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbm9kZS9ub2RlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IG1hdGNoVGVybVR5cGUsIG1hdGNoRXhhY3RRdWVyeSwgbWF0Y2hUeXBlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQge1xuICBnZXRVbml0c0FuZExhYmVsLFxuICBJQ2hhcnREYXRhLFxuICBJQ2hhcnRJbnB1dExvZyxcbiAgSVRlcm1NYXBwaW5nLFxuICB0ZXJtXG59IGZyb20gJy4uLy4uL2NoYXJ0L2hpZXJhcmNoeS1jaGFydC9oaWVyYXJjaHktY2hhcnQubW9kZWwnO1xuaW1wb3J0IHsgSGllcmFyY2h5Q2hhcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jaGFydC9oaWVyYXJjaHktY2hhcnQvaGllcmFyY2h5LWNoYXJ0LmNvbXBvbmVudCc7XG5cbmNvbnN0IGZpbHRlclRlcm1UeXBlcyA9IFtcbiAgVGVybVRlcm1UeXBlLnJlc291cmNlVXNlLFxuICBUZXJtVGVybVR5cGUuZW1pc3Npb24sXG4gIFRlcm1UZXJtVHlwZS5jaGFyYWN0ZXJpc2VkSW5kaWNhdG9yLFxuICBUZXJtVGVybVR5cGUuZW5kcG9pbnRJbmRpY2F0b3IsXG4gIFRlcm1UZXJtVHlwZS5tb2RlbFxuXTtcblxuY29uc3Qgc2VhcmNoUGFyYW1zID0gKHNob3VsZDogYW55W10pID0+ICh7XG4gIGZpZWxkczogWydAdHlwZScsICdAaWQnLCAnbmFtZScsICd1bml0cycsICd0ZXJtVHlwZSddLFxuICBsaW1pdDogOTk5OSwgLy8gZG8gbm90IHVzZSBzY3JvbGxcbiAgcXVlcnk6IHtcbiAgICBib29sOiB7XG4gICAgICBtdXN0OiBbbWF0Y2hUeXBlKE5vZGVUeXBlLlRlcm0pXSxcbiAgICAgIHNob3VsZCxcbiAgICAgIG1pbmltdW1fc2hvdWxkX21hdGNoOiAxXG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgcGFyc2VMb2cgPSAoZGF0YTogYW55KTogSUNoYXJ0RGF0YSA9PiAoe1xuICBpbmRpY2F0b3I6IGRhdGFbJ2tleS90ZXJtJ10gfHwgZGF0YS50ZXJtIHx8IGRhdGEuaW5kaWNhdG9yLFxuICBjb250cmlidXRvcjogZGF0YS5ub2RlLFxuICBjb2VmZmljaWVudDogK2RhdGEuY29lZmZpY2llbnQsXG4gIG1vZGVsSWQ6IGRhdGEubW9kZWwgfHwgJ1Vua25vd24nLFxuICB3ZWlnaHRlZFZhbHVlOiArZGF0YS52YWx1ZSAqICtkYXRhLmNvZWZmaWNpZW50LFxuICB2YWx1ZTogK2RhdGEudmFsdWVcbn0pO1xuXG5jb25zdCBkZWZhdWx0SW5kaWNhdG9yc01vZGVsSWQgPSAnZGVmYXVsdEluZGljYXRvcnNNb2RlbElkJztcbmNvbnN0IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxOYW1lID0gJ0RlZmF1bHQgSW5kaWNhdG9ycyAobXVsdGktbW9kZWwpJztcblxuY29uc3Qgd2FybmluZ3MgPSAobG9nczogSUNoYXJ0RGF0YVtdLCB0ZXJtczogeyBbaWQ6IHN0cmluZ106IHRlcm0gfSkgPT5cbiAgWyFsb2dzLmV2ZXJ5KGxvZyA9PiB0ZXJtc1tsb2cuaW5kaWNhdG9yXSAmJiB0ZXJtc1tsb2cuY29udHJpYnV0b3JdKSAmJiAnbWlzc2luZy10ZXJtcyddLmZpbHRlcihCb29sZWFuKTtcblxuY29uc3QgZmlsdGVyTG9nID0gKGluZGljYXRvcnM6IEluZGljYXRvcltdLCBsb2c6IElDaGFydERhdGEpID0+XG4gIFtcbiAgICAhIWxvZy5pbmRpY2F0b3IsXG4gICAgISFsb2cuY29udHJpYnV0b3IsXG4gICAgIWlzTmFOKGxvZy53ZWlnaHRlZFZhbHVlKSxcbiAgICBsb2cuY29lZmZpY2llbnQgPiAwLFxuICAgIGluZGljYXRvcnMuc29tZShlcnUgPT4gZXJ1LnRlcm1bJ0BpZCddID09PSBsb2cuaW5kaWNhdG9yKVxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xuXG5jb25zdCBwYXJzZUxvZ1ZhbHVlcyA9IChpbXBhY3RBc3Nlc3NtZW50OiBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCwgdmFsdWVzOiBJQ2hhcnREYXRhW10pID0+IHtcbiAgY29uc3QgbG9nID0gdmFsdWVzWzBdO1xuICBjb25zdCB7IHdlaWdodGVkVG90YWwsIHRvdGFsIH0gPSB2YWx1ZXMucmVkdWNlKFxuICAgIChwcmV2LCBjdXJyKSA9PiAoe1xuICAgICAgd2VpZ2h0ZWRUb3RhbDogcHJldi53ZWlnaHRlZFRvdGFsICsgY3Vyci53ZWlnaHRlZFZhbHVlLFxuICAgICAgdG90YWw6IHByZXYudG90YWwgKyBjdXJyLnZhbHVlXG4gICAgfSksXG4gICAgeyB3ZWlnaHRlZFRvdGFsOiAwLCB0b3RhbDogMCB9XG4gICk7XG5cbiAgY29uc3QgaW5wdXRzT2JqID0gKGltcGFjdEFzc2Vzc21lbnQuZW1pc3Npb25zUmVzb3VyY2VVc2UgfHwgW10pXG4gICAgLmZpbHRlcihlcnUgPT4gZXJ1LnRlcm1bJ0BpZCddID09PSBsb2cuY29udHJpYnV0b3IgJiYgZXJ1LmlucHV0cz8ubGVuZ3RoKVxuICAgIC5yZWR1Y2UoKGFjYywgZXJ1KSA9PiB7XG4gICAgICBjb25zdCBpbnB1dElkID0gZXJ1LmlucHV0cy5tYXAoaSA9PiBpWydAaWQnXSkuam9pbignOycpO1xuICAgICAgY29uc3QgY3VycmVudE9wZXJhdGlvbnMgPSBlcnUub3BlcmF0aW9uXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogZXJ1Lm9wZXJhdGlvblsnQGlkJ10sXG4gICAgICAgICAgICAgIC4uLmdldFVuaXRzQW5kTGFiZWwoZXJ1Lm9wZXJhdGlvbiksXG4gICAgICAgICAgICAgIG1vZGVsSWQ6IGxvZy5tb2RlbElkLFxuICAgICAgICAgICAgICB3ZWlnaHRlZFZhbHVlOiBlcnUudmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIDogW107XG5cbiAgICAgIGFjY1tpbnB1dElkXSA9IGFjY1tpbnB1dElkXVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLmFjY1tpbnB1dElkXSxcbiAgICAgICAgICAgIHdlaWdodGVkVmFsdWU6IGFjY1tpbnB1dElkXS53ZWlnaHRlZFZhbHVlICsgZXJ1LnZhbHVlLFxuICAgICAgICAgICAgbW9kZWxJZDogbG9nLm1vZGVsSWQsXG4gICAgICAgICAgICBvcGVyYXRpb25zOiBbLi4uYWNjW2lucHV0SWRdLm9wZXJhdGlvbnMsIC4uLmN1cnJlbnRPcGVyYXRpb25zXVxuICAgICAgICAgIH1cbiAgICAgICAgOiB7XG4gICAgICAgICAgICBpZDogaW5wdXRJZCxcbiAgICAgICAgICAgIC4uLmdldFVuaXRzQW5kTGFiZWwoZXJ1LmlucHV0cy5sZW5ndGggPT09IDEgPyBlcnUuaW5wdXRzWzBdIDogeyBuYW1lOiAnSW5wdXQgZ3JvdXAgKHVuZGVyIGRldmVsb3BtZW50KScgfSksXG4gICAgICAgICAgICBtb2RlbElkOiBsb2cubW9kZWxJZCxcbiAgICAgICAgICAgIHdlaWdodGVkVmFsdWU6IGVydS52YWx1ZSxcbiAgICAgICAgICAgIG9wZXJhdGlvbnM6IFsuLi5jdXJyZW50T3BlcmF0aW9uc11cbiAgICAgICAgICB9O1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIGNvbnN0IGlucHV0czogSUNoYXJ0SW5wdXRMb2dbXSA9IE9iamVjdC52YWx1ZXMoaW5wdXRzT2JqKTtcbiAgcmV0dXJuIHsgLi4ubG9nLCB3ZWlnaHRlZFZhbHVlOiB3ZWlnaHRlZFRvdGFsLCB2YWx1ZTogdG90YWwsIGlucHV0cyB9IGFzIElDaGFydERhdGE7XG59O1xuXG5jb25zdCBwYXJzZU5vZGVMb2dzID0gKGltcGFjdEFzc2Vzc21lbnQ6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBpbmRpY2F0b3JzOiBJbmRpY2F0b3JbXSwgbGluZXM6IElMaW5lW10pID0+XG4gIGZyb20obGluZXMpLnBpcGUoXG4gICAgZmlsdGVyKCh7IGRhdGEgfSkgPT4gZGF0YS5sb2dnZXIgPT09ICdoZXN0aWFfZWFydGgubW9kZWxzJyAmJiBkYXRhLmxldmVsID09PSBMZXZlbC5kZWJ1ZyksXG4gICAgZmlsdGVyKCh7IGRhdGE6IHsgbWVzc2FnZSB9IH0pID0+ICEhbWVzc2FnZSksXG4gICAgbWFwKCh7IGRhdGE6IHsgbWVzc2FnZSB9IH0pID0+IHBhcnNlTWVzc2FnZShtZXNzYWdlKSksXG4gICAgZmlsdGVyKG1lc3NhZ2UgPT4gJ25vZGUnIGluIG1lc3NhZ2UpLFxuICAgIG1hcChkYXRhID0+IHBhcnNlTG9nKGRhdGEpKSxcbiAgICBmaWx0ZXIobG9nID0+IGZpbHRlckxvZyhpbmRpY2F0b3JzLCBsb2cpKSxcbiAgICBncm91cEJ5KGxvZyA9PiBbbG9nLmluZGljYXRvciwgbG9nLmNvbnRyaWJ1dG9yLCBsb2cubW9kZWxJZF0uam9pbignLycpKSxcbiAgICBtZXJnZU1hcChncm91cCA9PiBncm91cC5waXBlKHRvQXJyYXkoKSkpLFxuICAgIG1hcChkYXRhID0+IHBhcnNlTG9nVmFsdWVzKGltcGFjdEFzc2Vzc21lbnQsIGRhdGEpKSxcbiAgICB0b0FycmF5KClcbiAgKSBhcyBhbnkgYXMgT2JzZXJ2YWJsZTxJQ2hhcnREYXRhW10+O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGgnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGYUljb25Db21wb25lbnQsIEZvcm1zTW9kdWxlLCBIaWVyYXJjaHlDaGFydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNHcmFwaENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoU2VydmljZSA9IGluamVjdChIZVNlYXJjaFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG5vZGVTZXJ2aWNlID0gaW5qZWN0KEhlTm9kZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYVNwaW5uZXIgPSBmYVNwaW5uZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYUV4Y2xhbWF0aW9uVHJpYW5nbGUgPSBmYUV4Y2xhbWF0aW9uVHJpYW5nbGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbml0aWFsVGVybXMgPSB0b1NpZ25hbChcbiAgICB0aGlzLnNlYXJjaFNlcnZpY2VcbiAgICAgIC5zZWFyY2gkPElUZXJtSlNPTkxELCBOb2RlVHlwZS5UZXJtPihzZWFyY2hQYXJhbXMoZmlsdGVyVGVybVR5cGVzLm1hcCh0ZXJtVHlwZSA9PiBtYXRjaFRlcm1UeXBlKHRlcm1UeXBlKSkpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCh7IHJlc3VsdHMgfSkgPT5cbiAgICAgICAgICBmcm9tKHJlc3VsdHMpLnBpcGUoXG4gICAgICAgICAgICBtYXAodGVybSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1vZGVsRG9jcyA9IHRlcm0udGVybVR5cGUgPT09IFRlcm1UZXJtVHlwZS5tb2RlbCA/IGZpbmRNYXRjaGluZ01vZGVsKHsgbW9kZWw6IHRlcm1bJ0BpZCddIH0pIDogbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi50ZXJtLFxuICAgICAgICAgICAgICAgIGRvY3M6IG1vZGVsRG9jcz8uYXBpRG9jc1BhdGggfHwgbW9kZWxEb2NzPy5kb2NQYXRoIHx8IG1vZGVsRG9jcz8ucGF0aFxuICAgICAgICAgICAgICB9IGFzIHRlcm07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRvQXJyYXkoKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKHRlcm1zID0+IE9iamVjdC5mcm9tRW50cmllcyh0ZXJtcy5tYXAodGVybSA9PiBbdGVybVsnQGlkJ10sIHRlcm1dKSkgYXMgSVRlcm1NYXBwaW5nKVxuICAgICAgKVxuICApO1xuICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxUZXJtcyQgPSB0b09ic2VydmFibGUodGhpcy5pbml0aWFsVGVybXMpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbXBhY3RBc3Nlc3NtZW50cyA9IGlucHV0PElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEW10+KFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGFTdGF0ZSA9IGlucHV0KERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWQpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNSZWNhbGN1bGF0ZWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmRhdGFTdGF0ZSgpID09PSBEYXRhU3RhdGUucmVjYWxjdWxhdGVkKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50cyA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuaW1wYWN0QXNzZXNzbWVudHMoKT8uZmlsdGVyKGlhID0+IGlhLmVuZHBvaW50cz8ubGVuZ3RoIHx8IGlhLmltcGFjdHM/Lmxlbmd0aCkgPz8gW11cbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkID0gc2lnbmFsPHN0cmluZz4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5maWx0ZXJlZEltcGFjdEFzc2Vzc21lbnRzKCk/LmZpbmQoaWEgPT4gaWFbJ0BpZCddID09PSB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkKCkpIHx8XG4gICAgICB0aGlzLmZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHMoKT8uWzBdXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5kaWNhdG9ycyA9IGNvbXB1dGVkKCgpID0+IFtcbiAgICAuLi4odGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQoKT8uZW5kcG9pbnRzID8/IFtdKSxcbiAgICAuLi4odGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQoKT8uaW1wYWN0cyA/PyBbXSlcbiAgXSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBub2RlTG9nc1JhdyQgPSB0b09ic2VydmFibGUodGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQpLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWREZWVwKCksXG4gICAgZmlsdGVyKHYgPT4gIWlzRW1wdHkodikpLFxuICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KHRydWUpKSxcbiAgICBtZXJnZU1hcChub2RlID0+XG4gICAgICB0aGlzLm5vZGVTZXJ2aWNlLmdldExvZyQoe1xuICAgICAgICAuLi5ub2RlLFxuICAgICAgICBkYXRhU3RhdGU6IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWRcbiAgICAgIH0pXG4gICAgKSxcbiAgICBtYXAodmFsdWUgPT4gKHZhbHVlID8gcGFyc2VMaW5lcyh2YWx1ZSkgOiAoW10gYXMgSUxpbmVbXSkpKSxcbiAgICBzdGFydFdpdGgoW10gYXMgSUxpbmVbXSlcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG5vZGVMb2dzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMubm9kZUxvZ3NSYXckLFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmlzUmVjYWxjdWxhdGVkKSxcbiAgICB0b09ic2VydmFibGUodGhpcy5pbmRpY2F0b3JzKSxcbiAgICB0b09ic2VydmFibGUodGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnQpXG4gIF0pLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWREZWVwKCksXG4gICAgZmlsdGVyKChbbG9ncywgaXNSZWNhbGN1bGF0ZWQsIGluZGljYXRvcnNdKSA9PlxuICAgICAgWyEhbG9ncz8ubGVuZ3RoLCBpc1JlY2FsY3VsYXRlZCwgISFpbmRpY2F0b3JzPy5sZW5ndGhdLmV2ZXJ5KEJvb2xlYW4pXG4gICAgKSxcbiAgICBtZXJnZU1hcCgoW2xvZ3MsIF9pc1JlY2FsY3VsYXRlZCwgaW5kaWNhdG9ycywgaW1wYWN0QXNzZXNzbWVudF0pID0+XG4gICAgICBwYXJzZU5vZGVMb2dzKGltcGFjdEFzc2Vzc21lbnQsIGluZGljYXRvcnMsIGxvZ3MpXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB0aGlzLmVycm9yLnNldChlcnIudG9TdHJpbmcoKSk7XG4gICAgICByZXR1cm4gb2YoW10gYXMgSUNoYXJ0RGF0YVtdKTtcbiAgICB9KSxcbiAgICBzdGFydFdpdGgoW10gYXMgSUNoYXJ0RGF0YVtdKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZUxvZ3MgPSB0b1NpZ25hbCh0aGlzLm5vZGVMb2dzJCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsbFRlcm1zID0gdG9TaWduYWwoXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5ub2RlTG9ncyQsIHRoaXMuaW5pdGlhbFRlcm1zJF0pLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZERlZXAoKSxcbiAgICAgIGZpbHRlcih2YWx1ZXMgPT4gdmFsdWVzLmV2ZXJ5KHYgPT4gIWlzRW1wdHkodikpKSxcbiAgICAgIG1lcmdlTWFwKChbbG9ncywgdGVybXNdKSA9PlxuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2VcbiAgICAgICAgICAuc2VhcmNoJDxcbiAgICAgICAgICAgIElUZXJtSlNPTkxELFxuICAgICAgICAgICAgTm9kZVR5cGUuVGVybVxuICAgICAgICAgID4oc2VhcmNoUGFyYW1zKHVuaXF1ZShsb2dzLmZsYXRNYXAobCA9PiBbbC5jb250cmlidXRvciwgbC5pbmRpY2F0b3JdKS5maWx0ZXIodGVybUlkID0+ICF0ZXJtcz8uW3Rlcm1JZF0pKS5tYXAoaWQgPT4gbWF0Y2hFeGFjdFF1ZXJ5KCdAaWQnLCBpZCkpKSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoeyByZXN1bHRzIH0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLihPYmplY3QuZnJvbUVudHJpZXMocmVzdWx0cy5tYXAodGVybSA9PiBbdGVybVsnQGlkJ10sIHRlcm1dKSkgYXMgSVRlcm1NYXBwaW5nKSxcbiAgICAgICAgICAgICAgLi4udGVybXNcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIClcbiAgICAgICksXG4gICAgICBzdGFydFdpdGgoe30gYXMgSVRlcm1NYXBwaW5nKSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKSlcbiAgICApXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5vRGF0YSA9IGNvbXB1dGVkKCgpID0+ICF0aGlzLm5vZGVMb2dzKCk/Lmxlbmd0aCk7XG4gIHByb3RlY3RlZCByZWFkb25seSB3YXJuaW5ncyA9IGNvbXB1dGVkKCgpID0+XG4gICAgW3RoaXMubm9kZUxvZ3MoKSwgdGhpcy5hbGxUZXJtcygpXS5zb21lKHYgPT4gaXNFbXB0eSh2KSkgPyBbXSA6IHdhcm5pbmdzKHRoaXMubm9kZUxvZ3MoKSwgdGhpcy5hbGxUZXJtcygpKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd1dhcm5pbmdzID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGVycm9yID0gc2lnbmFsPHN0cmluZz4odW5kZWZpbmVkKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0ZWRNb2RlbElkID0gc2lnbmFsPHN0cmluZz4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBoYXNEZWZhdWx0TW9kZWxMb2dzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLm5vZGVMb2dzKCk/LnNvbWUobG9nID0+IGxvZy5tb2RlbElkID09PSBnZXREZWZhdWx0TW9kZWxJZChsb2cuaW5kaWNhdG9yKSlcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZGVscyA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICBbXG4gICAgICAgIC4uLih0aGlzLmhhc0RlZmF1bHRNb2RlbExvZ3MoKSA/IFt7ICdAaWQnOiBkZWZhdWx0SW5kaWNhdG9yc01vZGVsSWQsIG5hbWU6IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxOYW1lIH1dIDogW10pLFxuICAgICAgICAuLi51bmlxdWUodGhpcy5ub2RlTG9ncygpLm1hcCgoeyBtb2RlbElkIH0pID0+IHRoaXMuYWxsVGVybXMoKVttb2RlbElkXSB8fCB7ICdAaWQnOiBtb2RlbElkIH0pKVxuICAgICAgXSBhcyBQYXJ0aWFsPElUZXJtSlNPTkxEPltdXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYXJ0RGF0YSA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5ub2RlTG9ncygpLmZpbHRlcihcbiAgICAgIGxvZyA9PlxuICAgICAgICBsb2cubW9kZWxJZCA9PT1cbiAgICAgICAgKHRoaXMuc2VsZWN0ZWRNb2RlbElkKCkgPT09IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxJZFxuICAgICAgICAgID8gZ2V0RGVmYXVsdE1vZGVsSWQobG9nLmluZGljYXRvcilcbiAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRNb2RlbElkKCkpXG4gICAgKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd0NoYXJ0ID0gY29tcHV0ZWQoKCkgPT5cbiAgICBbIWlzRW1wdHkodGhpcy5jaGFydERhdGEoKSksICFpc0VtcHR5KHRoaXMuYWxsVGVybXMoKSksICF0aGlzLmxvYWRpbmcoKSwgIXRoaXMuZXJyb3IoKSwgIXRoaXMuc2hvd1dhcm5pbmdzKCldLmV2ZXJ5KFxuICAgICAgQm9vbGVhblxuICAgIClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRJZCA9IHRoaXMuZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50cygpPy5bMF0/LlsnQGlkJ107XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRJZCgpICYmIGRlZmF1bHRJZCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQuc2V0KGRlZmF1bHRJZCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRNb2RlbElkKCkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkTW9kZWxJZC5zZXQodGhpcy5tb2RlbHMoKT8uWzBdPy5bJ0BpZCddIHx8IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxJZCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgZWZmZWN0KCgpID0+IHRoaXMuc2hvd1dhcm5pbmdzLnNldCh0aGlzLndhcm5pbmdzKCk/Lmxlbmd0aCA+IDApLCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICB9XG59XG4iLCJAaWYgKGxvYWRpbmcoKSkge1xuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXIgaGFzLXRleHQtY2VudGVyIG15LTUgcHktNVwiPlxuICAgIDxmYS1pY29uIFtpY29uXT1cImZhU3Bpbm5lclwiIGFuaW1hdGlvbj1cInNwaW5cIiBzaXplPVwibGdcIiAvPlxuICAgIDxwIGNsYXNzPVwiaXMtbXQtMiBpcy1pdGFsaWMgaXMtc2l6ZS03XCI+TG9hZGluZyBjaGFydCwgcGxlYXNlIHdhaXQuLi48L3A+XG4gIDwvZGl2PlxufSBAZWxzZSB7XG4gIEBpZiAoaXNSZWNhbGN1bGF0ZWQoKSkge1xuICAgIEBpZiAoZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50cygpLmxlbmd0aCA+IDEpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zIHB0LTIgcHgtMyBtYi0wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljIGlzLXNlY29uZGFyeVwiPlNlbGVjdCBhbiBJbXBhY3QgQXNzZXNzbWVudDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1zbWFsbCBpcy1mdWxsd2lkdGggaXMtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkKClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkLnNldCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nKClcIj5cbiAgICAgICAgICAgICAgQGZvciAodmFsdWUgb2YgZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50cygpOyB0cmFjayB2YWx1ZVsnQGlkJ10pIHtcbiAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ2YWx1ZVsnQGlkJ11cIj5cbiAgICAgICAgICAgICAgICAgIHt7IHZhbHVlLm5hbWUgfHwgdmFsdWVbJ0BpZCddIH19XG4gICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKCFub0RhdGEoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGhhcy1hZGRvbnMgcHktMiBweC0zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljIGlzLXNlY29uZGFyeVwiPlNlbGVjdCBhIG1vZGVsPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0ZWRNb2RlbElkKClcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdGVkTW9kZWxJZC5zZXQoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZygpXCI+XG4gICAgICAgICAgICAgIEBmb3IgKG1vZGVsIG9mIG1vZGVscygpOyB0cmFjayBtb2RlbFsnQGlkJ10pIHtcbiAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJtb2RlbFsnQGlkJ11cIj57eyBtb2RlbC5uYW1lIHx8IG1vZGVsWydAaWQnXSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmIChzaG93V2FybmluZ3MoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImhhcy10ZXh0LXdhcm5pbmcgcHktMyBoYXMtdGV4dC1jZW50ZXJlZFwiPlxuICAgICAgICBAZm9yICh3YXJuaW5nIG9mIHdhcm5pbmdzKCk7IHRyYWNrIHdhcm5pbmcpIHtcbiAgICAgICAgICA8cCBjbGFzcz1cImlzLW1iLTJcIj5cbiAgICAgICAgICAgIDxmYS1pY29uIGNsYXNzPVwicHItMlwiIFtpY29uXT1cImZhRXhjbGFtYXRpb25UcmlhbmdsZVwiIC8+XG4gICAgICAgICAgICBAc3dpdGNoICh3YXJuaW5nKSB7XG4gICAgICAgICAgICAgIEBjYXNlICgnbWlzc2luZy10ZXJtcycpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj5DYWxjdWxhdGlvbnMgYXJlIG5vdCB1cCB0byBkYXRlLiBTb21lIHRlcm1zIG1heSBub3QgZGlzcGxheSBjb3JyZWN0bHkuPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9wPlxuICAgICAgICB9XG4gICAgICAgIDxwIGNsYXNzPVwiaXMtdW5kZXJsaW5lZCBpcy1zaXplLTdcIj48YSAoY2xpY2spPVwic2hvd1dhcm5pbmdzLnNldChmYWxzZSlcIj5WaWV3IGNoYXJ0IGFueXdheS48L2E+PC9wPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoZXJyb3IoKSkge1xuICAgICAgPHAgY2xhc3M9XCJoYXMtdGV4dC1kYW5nZXIgcHktM1wiPlxuICAgICAgICBAc3dpdGNoIChlcnJvcigpKSB7XG4gICAgICAgICAgQGNhc2UgKCdub3QtZm91bmQnKSB7XG4gICAgICAgICAgICA8cD5JbXBhY3QgQXNzZXNzbWVudCBub3QgZm91bmQ8L3A+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxzcGFuPkFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQ6PC9zcGFuPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cIm10LTFcIj57eyBlcnJvcigpIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L3A+XG4gICAgfVxuICAgIEBpZiAobm9EYXRhKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJweS0zXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaGFzLXRleHQtY2VudGVyZWRcIj5ObyBjaGFydCBhdmFpbGFibGUuPC9wPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICA8cCBjbGFzcz1cImhhcy10ZXh0LWNlbnRlcmVkIHB5LTNcIj5cbiAgICAgIE5vIGNoYXJ0IGF2YWlsYWJsZS4gU3dpdGNoIHRvXG4gICAgICA8Y29kZT5yZWNhbGN1bGF0ZWQ8L2NvZGU+XG4gICAgICB2ZXJzaW9uLlxuICAgIDwvcD5cbiAgfVxufVxuXG5AaWYgKHNob3dDaGFydCgpKSB7XG4gIDxoZS1oaWVyYXJjaHktY2hhcnQgW2RhdGFdPVwiY2hhcnREYXRhKClcIiBbdGVybXNdPVwiYWxsVGVybXMoKVwiIChjaGFydEVycm9yKT1cImVycm9yLnNldCgkZXZlbnQpXCIgLz5cbn1cbiJdfQ==
|
|
@@ -192,10 +192,10 @@ export class ImpactAssessmentsIndicatorBreakdownChartComponent {
|
|
|
192
192
|
this.selectedMethod.set(term);
|
|
193
193
|
}
|
|
194
194
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImpactAssessmentsIndicatorBreakdownChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
195
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: ImpactAssessmentsIndicatorBreakdownChartComponent, isStandalone: true, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: { impactAssessment: { classPropertyName: "impactAssessment", publicName: "impactAssessment", isSignal: true, isRequired: false, transformFunction: null }, indicators: { classPropertyName: "indicators", publicName: "indicators", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (loading()) {\n <div class=\"has-text-center py-3\">\n <fa-icon [icon]=\"faSpinner\" animation=\"spin\" size=\"lg\"
|
|
195
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", type: ImpactAssessmentsIndicatorBreakdownChartComponent, isStandalone: true, selector: "he-impact-assessments-indicator-breakdown-chart", inputs: { impactAssessment: { classPropertyName: "impactAssessment", publicName: "impactAssessment", isSignal: true, isRequired: false, transformFunction: null }, indicators: { classPropertyName: "indicators", publicName: "indicators", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (loading()) {\n <div class=\"has-text-center py-3\">\n <fa-icon [icon]=\"faSpinner\" animation=\"spin\" size=\"lg\" />\n </div>\n} @else {\n <div class=\"p-3\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n @if (terms()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectTerm($event)\">\n @for (term of terms(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n }\n </select>\n </div>\n </div>\n }\n @if (methods()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectMethod($event)\">\n <option [ngValue]=\"undefined\">Filter Model</option>\n @for (term of methods(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a\n class=\"button is-ghost is-small\"\n [href]=\"csvContent()\"\n [download]=\"downloadFilename()\"\n ngbTooltip=\"Download as CSV\"\n placement=\"bottom\">\n <fa-icon [icon]=\"faDownload\" />\n </a>\n </div>\n </div>\n @if (!selectedMethod()) {\n <p class=\"is-size-7\">\n <i>Selecting a Model is recommended to avoid duplicated entries.</i>\n </p>\n }\n </div>\n}\n\n<div class=\"is-mt-1\">\n @if (!loading() && noData()) {\n <p class=\"has-text-centered\">\n <span>No breakdown available for</span>\n @if (selectedTerm()) {\n <span class=\"is-pl-1\">{{ selectedTerm().name }}</span>\n }\n @if (selectedMethod()) {\n <span class=\"is-pl-1\">({{ selectedMethod().name }})</span>\n }\n <span>.</span>\n </p>\n }\n <he-chart class=\"is-relative\" [data]=\"chartData()\" [config]=\"chartConfig()\"></he-chart>\n</div>\n", styles: [":host{display:block;overflow:visible}he-chart{height:100%}he-chart::ng-deep .chart-container{min-height:400px}\n"], dependencies: [{ kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "component", type: ChartComponent, selector: "he-chart", inputs: ["data", "config"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
196
196
|
}
|
|
197
197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: ImpactAssessmentsIndicatorBreakdownChartComponent, decorators: [{
|
|
198
198
|
type: Component,
|
|
199
|
-
args: [{ selector: 'he-impact-assessments-indicator-breakdown-chart', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FaIconComponent, FormsModule, ChartComponent], template: "@if (loading()) {\n <div class=\"has-text-center py-3\">\n <fa-icon [icon]=\"faSpinner\" animation=\"spin\" size=\"lg\"
|
|
199
|
+
args: [{ selector: 'he-impact-assessments-indicator-breakdown-chart', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FaIconComponent, FormsModule, ChartComponent], template: "@if (loading()) {\n <div class=\"has-text-center py-3\">\n <fa-icon [icon]=\"faSpinner\" animation=\"spin\" size=\"lg\" />\n </div>\n} @else {\n <div class=\"p-3\" [class.is-hidden]=\"!terms()?.length\">\n <div class=\"columns\">\n <div class=\"column\">\n <div class=\"field has-addons\">\n <div class=\"control\">\n <span class=\"button is-small is-static is-secondary\">Select an Indicator</span>\n </div>\n @if (terms()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectTerm($event)\">\n @for (term of terms(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }} ({{ term.units }})</option>\n }\n </select>\n </div>\n </div>\n }\n @if (methods()?.length) {\n <div class=\"control is-expanded\">\n <div class=\"select is-fullwidth is-small is-secondary\">\n <select (change)=\"selectMethod($event)\">\n <option [ngValue]=\"undefined\">Filter Model</option>\n @for (term of methods(); track term) {\n <option [value]=\"term['@id']\">{{ term.name }}</option>\n }\n </select>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"column is-narrow\">\n <a\n class=\"button is-ghost is-small\"\n [href]=\"csvContent()\"\n [download]=\"downloadFilename()\"\n ngbTooltip=\"Download as CSV\"\n placement=\"bottom\">\n <fa-icon [icon]=\"faDownload\" />\n </a>\n </div>\n </div>\n @if (!selectedMethod()) {\n <p class=\"is-size-7\">\n <i>Selecting a Model is recommended to avoid duplicated entries.</i>\n </p>\n }\n </div>\n}\n\n<div class=\"is-mt-1\">\n @if (!loading() && noData()) {\n <p class=\"has-text-centered\">\n <span>No breakdown available for</span>\n @if (selectedTerm()) {\n <span class=\"is-pl-1\">{{ selectedTerm().name }}</span>\n }\n @if (selectedMethod()) {\n <span class=\"is-pl-1\">({{ selectedMethod().name }})</span>\n }\n <span>.</span>\n </p>\n }\n <he-chart class=\"is-relative\" [data]=\"chartData()\" [config]=\"chartConfig()\"></he-chart>\n</div>\n", styles: [":host{display:block;overflow:visible}he-chart{height:100%}he-chart::ng-deep .chart-container{min-height:400px}\n"] }]
|
|
200
200
|
}], ctorParameters: () => [] });
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGFjdC1hc3Nlc3NtZW50cy9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlGLE9BQU8sZUFBZSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQW1ELFFBQVEsRUFBUSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNySCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFx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QUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDOytHQTlNVSxpREFBaUQ7bUdBQWpELGlEQUFpRCx1WkM5RTlELDI5RUF1RUEsMEtES1ksZUFBZSwyTUFBRSxXQUFXLDRPQUFFLGNBQWM7OzRGQUUzQyxpREFBaUQ7a0JBUjdELFNBQVM7K0JBQ0UsaURBQWlELG1CQUcxQyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZpbHRlciwgZ3JvdXBCeSwgbWFwLCBtZXJnZUFsbCwgbWVyZ2VNYXAsIHRha2UsIHRhcCwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnREYXRhIH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IENoYXJ0RGF0YUxhYmVscyBmcm9tICdjaGFydGpzLXBsdWdpbi1kYXRhbGFiZWxzJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJbmRpY2F0b3IsIElUZXJtSlNPTkxELCBOb2RlVHlwZSwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdG9QcmVjaXNpb24sIHVuaXF1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYURvd25sb2FkLCBmYVNwaW5uZXIgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgbWF0Y2hUZXJtVHlwZSwgbWF0Y2hUeXBlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCB9IGZyb20gJy4uLy4uL2NvbW1vbi9yeGpzLXV0aWxzJztcbmltcG9ydCB7IExldmVsLCBwYXJzZUxpbmVzLCBwYXJzZU1lc3NhZ2UgfSBmcm9tICcuLi8uLi9jb21tb24vbG9ncy11dGlscyc7XG5pbXBvcnQgeyBsaXN0Q29sb3IgfSBmcm9tICcuLi8uLi9jb21tb24vY29sb3InO1xuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jaGFydC9jaGFydC5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgSUxvZyB7XG4gIG1vZGVsSWQ6IHN0cmluZztcbiAgaW1wYWN0VGVybUlkOiBzdHJpbmc7XG4gIGltcGFjdFRlcm1Vbml0cz86IHN0cmluZztcbiAgYmxhbmtOb2RlVGVybUlkOiBzdHJpbmc7XG4gIGNvZWZmaWNpZW50OiBudW1iZXI7XG4gIHZhbHVlOiBudW1iZXI7XG4gIC8vIHN0b3JlIGFsbCBpbmRpY2F0b3JzIHdpdGggaW5wdXRzXG4gIGlucHV0cz86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgfVtdO1xuICBpbnB1dHNWYWx1ZT86IG51bWJlcjtcbn1cblxuY29uc3QgcGFyc2VMb2cgPSAoZGF0YTogYW55KTogSUxvZyA9PiAoe1xuICBtb2RlbElkOiBkYXRhLm1vZGVsLFxuICBpbXBhY3RUZXJtSWQ6IGRhdGFbJ2tleS90ZXJtJ10gfHwgZGF0YS50ZXJtIHx8IGRhdGEuaW5kaWNhdG9yLFxuICBibGFua05vZGVUZXJtSWQ6IGRhdGEubm9kZSxcbiAgY29lZmZpY2llbnQ6ICtkYXRhLmNvZWZmaWNpZW50LFxuICB2YWx1ZTogK2RhdGEudmFsdWUgKiArZGF0YS5jb2VmZmljaWVudFxufSk7XG5cbmNvbnN0IGZpbHRlclRlcm1UeXBlcyA9IFtUZXJtVGVybVR5cGUuZW1pc3Npb24sIFRlcm1UZXJtVHlwZS5jaGFyYWN0ZXJpc2VkSW5kaWNhdG9yXTtcblxuY29uc3QgY3N2SGVhZGVycyA9IFtcbiAgJ0ltcGFjdCcsXG4gICdJbXBhY3QgVW5pdCcsXG4gICdNZXRob2QnLFxuICAnRW1pc3Npb24nLFxuICAnVmFsdWUnLFxuICAnSW5wdXRzJyxcbiAgJ0lucHV0cyB2YWx1ZScsXG4gICdGdW5jdGlvbmFsIFVuaXQnXG5dO1xuXG5jb25zdCBsb2dUb0NzdiA9IChsb2dzOiBJTG9nW10sIGltcGFjdDogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpID0+XG4gIFtcbiAgICBjc3ZIZWFkZXJzLmpvaW4oJywnKSxcbiAgICAuLi5sb2dzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5pbXBhY3RUZXJtSWQubG9jYWxlQ29tcGFyZShiLmltcGFjdFRlcm1JZCkpXG4gICAgICAuZmxhdE1hcCgoeyBpbXBhY3RUZXJtSWQsIGltcGFjdFRlcm1Vbml0cywgbW9kZWxJZCwgYmxhbmtOb2RlVGVybUlkLCB2YWx1ZSwgaW5wdXRzIH0pID0+IFtcbiAgICAgICAgW2ltcGFjdFRlcm1JZCwgaW1wYWN0VGVybVVuaXRzLCBtb2RlbElkLCBibGFua05vZGVUZXJtSWQsIHZhbHVlLCAnJywgJyddLFxuICAgICAgICAuLi5pbnB1dHMubWFwKHYgPT4gW2ltcGFjdFRlcm1JZCwgaW1wYWN0VGVybVVuaXRzLCBtb2RlbElkLCBibGFua05vZGVUZXJtSWQsICcnLCB2Lm5hbWUsIHYudmFsdWVdKVxuICAgICAgXSlcbiAgICAgIC5tYXAodiA9PiBbLi4udiwgaW1wYWN0LnByb2R1Y3Q/LnRlcm0/LnVuaXRzXS5qb2luKCcsJykpXG4gIF0uam9pbignXFxuJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGYUljb25Db21wb25lbnQsIEZvcm1zTW9kdWxlLCBDaGFydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JCcmVha2Rvd25DaGFydENvbXBvbmVudCB7XG4gIHByaXZhdGUgZG9tU2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gIHByaXZhdGUgc2VhcmNoU2VydmljZSA9IGluamVjdChIZVNlYXJjaFNlcnZpY2UpO1xuICBwcml2YXRlIG5vZGVTZXJ2aWNlID0gaW5qZWN0KEhlTm9kZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYVNwaW5uZXIgPSBmYVNwaW5uZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYURvd25sb2FkID0gZmFEb3dubG9hZDtcblxuICBwcm90ZWN0ZWQgaW1wYWN0QXNzZXNzbWVudCA9IGlucHV0KHVuZGVmaW5lZCBhcyBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCk7XG4gIHByaXZhdGUgaW1wYWN0QXNzZXNzbWVudCQgPSB0b09ic2VydmFibGUodGhpcy5pbXBhY3RBc3Nlc3NtZW50KTtcblxuICBwcm90ZWN0ZWQgaW5kaWNhdG9ycyA9IGlucHV0KFtdIGFzIEluZGljYXRvcltdKTtcblxuICBwcml2YXRlIGFsbExvZ3MgPSBzaWduYWwoW10gYXMgSUxvZ1tdKTtcbiAgcHJpdmF0ZSBsb2dzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmFsbExvZ3MoKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHsgaW1wYWN0VGVybUlkLCBtb2RlbElkIH0pID0+XG4gICAgICAgICAgaW1wYWN0VGVybUlkID09PSB0aGlzLnNlbGVjdGVkVGVybSgpPy5bJ0BpZCddICYmXG4gICAgICAgICAgKCF0aGlzLnNlbGVjdGVkTWV0aG9kKCkgfHwgbW9kZWxJZCA9PT0gdGhpcy5zZWxlY3RlZE1ldGhvZCgpPy5bJ0BpZCddKVxuICAgICAgKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIudmFsdWUgLSBhLnZhbHVlKVxuICApO1xuXG4gIHByaXZhdGUgZW1pc3Npb25zID0gdG9TaWduYWwoXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAuc2VhcmNoJDxJVGVybUpTT05MRCwgTm9kZVR5cGUuVGVybT4oe1xuICAgICAgICBmaWVsZHM6IFsnQHR5cGUnLCAnQGlkJywgJ25hbWUnXSxcbiAgICAgICAgbGltaXQ6IDEwMDAsXG4gICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgYm9vbDoge1xuICAgICAgICAgICAgbXVzdDogW21hdGNoVHlwZShOb2RlVHlwZS5UZXJtKV0sXG4gICAgICAgICAgICBzaG91bGQ6IGZpbHRlclRlcm1UeXBlcy5tYXAodGVybVR5cGUgPT4gbWF0Y2hUZXJtVHlwZSh0ZXJtVHlwZSkpLFxuICAgICAgICAgICAgbWluaW11bV9zaG91bGRfbWF0Y2g6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHsgcmVzdWx0cyB9KSA9PiByZXN1bHRzKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRUZXJtID0gc2lnbmFsKHVuZGVmaW5lZCBhcyBUZXJtKTtcbiAgcHJvdGVjdGVkIHRlcm1zID0gY29tcHV0ZWQoKCkgPT5cbiAgICB1bmlxdWUoXG4gICAgICAodGhpcy5pbmRpY2F0b3JzKCkgfHwgW10pXG4gICAgICAgIC5tYXAoKHsgdGVybSB9KSA9PiB0ZXJtISlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgICApXG4gICk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkTWV0aG9kID0gc2lnbmFsKHVuZGVmaW5lZCBhcyBUZXJtKTtcbiAgcHJvdGVjdGVkIG1ldGhvZHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHVuaXF1ZSgodGhpcy5pbmRpY2F0b3JzKCkgfHwgW10pLm1hcCgoeyBtZXRob2RNb2RlbCB9KSA9PiBtZXRob2RNb2RlbCEpLmZpbHRlcihCb29sZWFuKSlcbiAgKTtcblxuICBwcml2YXRlIGltcGFjdHMgPSBjb21wdXRlZCgoKSA9PiBbXG4gICAgLi4uKHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpPy5pbXBhY3RzIHx8IFtdKSxcbiAgICAuLi4odGhpcy5pbXBhY3RBc3Nlc3NtZW50KCk/LmVuZHBvaW50cyB8fCBbXSlcbiAgXSk7XG4gIHByb3RlY3RlZCBub0RhdGEgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ3MoKT8ubGVuZ3RoID09PSAwKTtcblxuICBwcm90ZWN0ZWQgY3N2Q29udGVudCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKFxuICAgICAgYGRhdGE6dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgsJHtlbmNvZGVVUklDb21wb25lbnQobG9nVG9Dc3YodGhpcy5sb2dzKCksIHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpKSl9YFxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSBpZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpPy5bJ0BpZCddIHx8ICh0aGlzLmltcGFjdEFzc2Vzc21lbnQoKSBhcyBhbnkpPy5pZCk7XG4gIHByb3RlY3RlZCBkb3dubG9hZEZpbGVuYW1lID0gY29tcHV0ZWQoKCkgPT4gYCR7dGhpcy5pZCgpfS1sb2dzLmNzdmApO1xuXG4gIHByaXZhdGUgdG90YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ3MoKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKSk7XG4gIHByaXZhdGUgbGFiZWxzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmxvZ3MoKS5tYXAoXG4gICAgICAoeyBibGFua05vZGVUZXJtSWQgfSkgPT4gdGhpcy5lbWlzc2lvbnMoKT8uZmluZCh2ID0+IHZbJ0BpZCddID09PSBibGFua05vZGVUZXJtSWQpPy5uYW1lIHx8IGJsYW5rTm9kZVRlcm1JZFxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSBkYXRhc2V0cyA9IGNvbXB1dGVkKCgpID0+IFtcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy5zZWxlY3RlZFRlcm0oKT8ubmFtZSA/PyAnJyxcbiAgICAgIGRhdGE6IHRoaXMubG9ncygpLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMubG9ncygpLm1hcChsaXN0Q29sb3IpLFxuICAgICAgYm9yZGVyQ29sb3I6IHRoaXMubG9ncygpLm1hcChsaXN0Q29sb3IpXG4gICAgfVxuICBdKTtcblxuICBwcm90ZWN0ZWQgY2hhcnREYXRhOiBTaWduYWw8Q2hhcnREYXRhPiA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgZGF0YXNldHM6IHRoaXMuZGF0YXNldHMoKSxcbiAgICBsYWJlbHM6IHRoaXMubGFiZWxzKClcbiAgfSkpO1xuICBwcm90ZWN0ZWQgY2hhcnRDb25maWc6IFNpZ25hbDxQYXJ0aWFsPENoYXJ0Q29uZmlndXJhdGlvbj4+ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICB0eXBlOiAnaG9yaXpvbnRhbEJhcicsXG4gICAgcGx1Z2luczogW0NoYXJ0RGF0YUxhYmVsc10sXG4gICAgb3B0aW9uczoge1xuICAgICAgcGx1Z2luczoge1xuICAgICAgICBkYXRhbGFiZWxzOiB7XG4gICAgICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgICAgICAgZm9ybWF0dGVyOiB2YWx1ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCByYXRpbyA9IHRvUHJlY2lzaW9uKCh2YWx1ZSAqIDEwMCkgLyB0aGlzLnRvdGFsKCksIDIpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gMCA/IGAke3RvUHJlY2lzaW9uKHZhbHVlLCAzKX0gKCR7cmF0aW99JSlgIDogJyc7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhbGlnbjogJ2VuZCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSxcbiAgICAgIGxlZ2VuZDoge1xuICAgICAgICBkaXNwbGF5OiBmYWxzZVxuICAgICAgfSxcbiAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBjYWxsYmFja3M6IHtcbiAgICAgICAgICB0aXRsZTogKHRvb2x0aXBJdGVtcywgZGF0YSkgPT4gZGF0YS5kYXRhc2V0cyFbdG9vbHRpcEl0ZW1zWzBdLmRhdGFzZXRJbmRleCFdPy5sYWJlbCB8fCAnJyxcbiAgICAgICAgICBsYWJlbDogdG9vbHRpcEl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSArKHRvb2x0aXBJdGVtLnZhbHVlIHx8ICcwJyk7XG4gICAgICAgICAgICBjb25zdCByYXRpbyA9IHRvUHJlY2lzaW9uKCh2YWx1ZSAqIDEwMCkgLyB0aGlzLnRvdGFsKCksIDIpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gMCA/IGAke3RvUHJlY2lzaW9uKHZhbHVlLCAzKX0gKCR7cmF0aW99JSlgIDogJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHhBeGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgeUF4ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICB9KSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbXBhY3RBc3Nlc3NtZW50JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcih2ID0+ICEhdiksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCgpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nLnNldCh0cnVlKSksXG4gICAgICAgIG1lcmdlTWFwKG5vZGUgPT4gKG5vZGUgPyB0aGlzLm5vZGVTZXJ2aWNlLmdldExvZyQoeyAuLi5ub2RlLCBkYXRhU3RhdGU6IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWQgfSkgOiBvZignJykpKSxcbiAgICAgICAgbWFwKHZhbHVlID0+ICh2YWx1ZSA/IHBhcnNlTGluZXModmFsdWUpIDogW10pKSxcbiAgICAgICAgbWVyZ2VBbGwoKSxcbiAgICAgICAgZmlsdGVyKCh7IGRhdGEgfSkgPT4gZGF0YS5sb2dnZXIgPT09ICdoZXN0aWFfZWFydGgubW9kZWxzJyAmJiBkYXRhLmxldmVsID09PSBMZXZlbC5kZWJ1ZyksXG4gICAgICAgIGZpbHRlcigoeyBkYXRhOiB7IG1lc3NhZ2UgfSB9KSA9PiAhIW1lc3NhZ2UpLFxuICAgICAgICBtYXAoKHsgZGF0YTogeyBtZXNzYWdlIH0gfSkgPT4gcGFyc2VNZXNzYWdlKG1lc3NhZ2UpKSxcbiAgICAgICAgZmlsdGVyKG1lc3NhZ2UgPT4gJ25vZGUnIGluIG1lc3NhZ2UpLFxuICAgICAgICBtYXAocGFyc2VMb2cpLFxuICAgICAgICBmaWx0ZXIobG9nID0+ICEhbG9nLmltcGFjdFRlcm1JZCAmJiAhIWxvZy5ibGFua05vZGVUZXJtSWQgJiYgIWlzTmFOKGxvZy52YWx1ZSkgJiYgbG9nLnZhbHVlID4gMCksXG4gICAgICAgIGdyb3VwQnkobG9nID0+IFtsb2cuaW1wYWN0VGVybUlkLCBsb2cuYmxhbmtOb2RlVGVybUlkLCBsb2cubW9kZWxJZF0uam9pbignLycpKSxcbiAgICAgICAgbWVyZ2VNYXAoZ3JvdXAgPT4gZ3JvdXAucGlwZSh0b0FycmF5KCkpKSxcbiAgICAgICAgbWFwKCh2YWx1ZXM6IElMb2dbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGxvZyA9IHZhbHVlc1swXTtcbiAgICAgICAgICBjb25zdCB0b3RhbCA9IHZhbHVlcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKTtcbiAgICAgICAgICBjb25zdCBibGFua05vZGVzID0gW1xuICAgICAgICAgICAgLi4uKHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpPy5lbWlzc2lvbnNSZXNvdXJjZVVzZSA/PyBbXSksXG4gICAgICAgICAgICAuLi4odGhpcy5pbXBhY3RBc3Nlc3NtZW50KCk/LmltcGFjdHMgPz8gW10pXG4gICAgICAgICAgXS5maWx0ZXIodiA9PiB2LnRlcm1bJ0BpZCddID09PSBsb2cuYmxhbmtOb2RlVGVybUlkKTtcblxuICAgICAgICAgIGNvbnN0IGlucHV0cyA9IGJsYW5rTm9kZXNcbiAgICAgICAgICAgIC5maWx0ZXIodiA9PiB2LmlucHV0cz8ubGVuZ3RoKVxuICAgICAgICAgICAgLm1hcCh2ID0+ICh7IG5hbWU6IHYuaW5wdXRzLm1hcChpID0+IGlbJ0BpZCddKS5qb2luKCc7JyksIHZhbHVlOiB2LnZhbHVlICogbG9nLmNvZWZmaWNpZW50IH0pKTtcbiAgICAgICAgICBjb25zdCBpbnB1dHNWYWx1ZSA9IGlucHV0cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKTtcblxuICAgICAgICAgIGNvbnN0IGltcGFjdCA9IHRoaXMuaW1wYWN0cygpLmZpbmQodiA9PiB2LnRlcm1bJ0BpZCddID09PSBsb2cuaW1wYWN0VGVybUlkKTtcblxuICAgICAgICAgIC8vIGxvZ3MgbWlnaHQgZXhpc3QgYnV0IGltcGFjdCB3YXMgbm90IGFkZGVkID0+IHNraXAgbG9nc1xuICAgICAgICAgIHJldHVybiBpbXBhY3RcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLmxvZyxcbiAgICAgICAgICAgICAgICBpbXBhY3RUZXJtVW5pdHM6IGltcGFjdC50ZXJtPy51bml0cyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdG90YWwsXG4gICAgICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgICAgIGlucHV0c1ZhbHVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcihsb2cgPT4gISFsb2cpLFxuICAgICAgICB0b0FycmF5KCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGxvZ3M6IElMb2dbXSkgPT4gdGhpcy5hbGxMb2dzLnNldChsb2dzKSk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSBzZWxlY3RlZCB0ZXJtIGV4aXN0c1xuICAgICAgICBjb25zdCB0ZXJtcyA9IHRoaXMudGVybXMoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUZXJtSWQgPSB0aGlzLnNlbGVjdGVkVGVybSgpPy5bJ0BpZCddO1xuICAgICAgICBpZiAoIXNlbGVjdGVkVGVybUlkIHx8ICF0ZXJtcy5maW5kKHRlcm0gPT4gdGVybVsnQGlkJ10gPT09IHNlbGVjdGVkVGVybUlkKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtLnNldCh0ZXJtc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdFRlcm0oeyB0YXJnZXQ6IHsgdmFsdWUgfSB9KSB7XG4gICAgY29uc3QgdGVybSA9IHRoaXMudGVybXMoKS5maW5kKHRlcm0gPT4gdGVybVsnQGlkJ10gPT09IHZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkVGVybS5zZXQodGVybSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0TWV0aG9kKHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLm1ldGhvZHMoKS5maW5kKHRlcm0gPT4gdGVybVsnQGlkJ10gPT09IHZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkTWV0aG9kLnNldCh0ZXJtKTtcbiAgfVxufVxuIiwiQGlmIChsb2FkaW5nKCkpIHtcbiAgPGRpdiBjbGFzcz1cImhhcy10ZXh0LWNlbnRlciBweS0zXCI+XG4gICAgPGZhLWljb24gW2ljb25dPVwiZmFTcGlubmVyXCIgYW5pbWF0aW9uPVwic3BpblwiIHNpemU9XCJsZ1wiPjwvZmEtaWNvbj5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGRpdiBjbGFzcz1cInAtM1wiIFtjbGFzcy5pcy1oaWRkZW5dPVwiIXRlcm1zKCk/Lmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uIGlzLXNtYWxsIGlzLXN0YXRpYyBpcy1zZWNvbmRhcnlcIj5TZWxlY3QgYW4gSW5kaWNhdG9yPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIEBpZiAodGVybXMoKT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLWZ1bGx3aWR0aCBpcy1zbWFsbCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0VGVybSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yICh0ZXJtIG9mIHRlcm1zKCk7IHRyYWNrIHRlcm0pIHtcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwidGVybVsnQGlkJ11cIj57eyB0ZXJtLm5hbWUgfX0gKHt7IHRlcm0udW5pdHMgfX0pPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAobWV0aG9kcygpPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sIGlzLWV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QgaXMtZnVsbHdpZHRoIGlzLXNtYWxsIGlzLXNlY29uZGFyeVwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RNZXRob2QoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJ1bmRlZmluZWRcIj5GaWx0ZXIgTW9kZWw8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgIEBmb3IgKHRlcm0gb2YgbWV0aG9kcygpOyB0cmFjayB0ZXJtKSB7XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInRlcm1bJ0BpZCddXCI+e3sgdGVybS5uYW1lIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1uYXJyb3dcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBpcy1naG9zdCBpcy1zbWFsbFwiXG4gICAgICAgICAgW2hyZWZdPVwiY3N2Q29udGVudCgpXCJcbiAgICAgICAgICBbZG93bmxvYWRdPVwiZG93bmxvYWRGaWxlbmFtZSgpXCJcbiAgICAgICAgICBuZ2JUb29sdGlwPVwiRG93bmxvYWQgYXMgQ1NWXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIj5cbiAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJmYURvd25sb2FkXCI+PC9mYS1pY29uPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKCFzZWxlY3RlZE1ldGhvZCgpKSB7XG4gICAgICA8cCBjbGFzcz1cImlzLXNpemUtN1wiPlxuICAgICAgICA8aT5TZWxlY3RpbmcgYSBNb2RlbCBpcyByZWNvbW1lbmRlZCB0byBhdm9pZCBkdXBsaWNhdGVkIGVudHJpZXMuPC9pPlxuICAgICAgPC9wPlxuICAgIH1cbiAgPC9kaXY+XG59XG5cbjxkaXYgY2xhc3M9XCJpcy1tdC0xXCI+XG4gIEBpZiAoIWxvYWRpbmcoKSAmJiBub0RhdGEoKSkge1xuICAgIDxwIGNsYXNzPVwiaGFzLXRleHQtY2VudGVyZWRcIj5cbiAgICAgIDxzcGFuPk5vIGJyZWFrZG93biBhdmFpbGFibGUgZm9yPC9zcGFuPlxuICAgICAgQGlmIChzZWxlY3RlZFRlcm0oKSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImlzLXBsLTFcIj57eyBzZWxlY3RlZFRlcm0oKS5uYW1lIH19PC9zcGFuPlxuICAgICAgfVxuICAgICAgQGlmIChzZWxlY3RlZE1ldGhvZCgpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtcGwtMVwiPih7eyBzZWxlY3RlZE1ldGhvZCgpLm5hbWUgfX0pPC9zcGFuPlxuICAgICAgfVxuICAgICAgPHNwYW4+Ljwvc3Bhbj5cbiAgICA8L3A+XG4gIH1cbiAgPGhlLWNoYXJ0IGNsYXNzPVwiaXMtcmVsYXRpdmVcIiBbZGF0YV09XCJjaGFydERhdGEoKVwiIFtjb25maWddPVwiY2hhcnRDb25maWcoKVwiPjwvaGUtY2hhcnQ+XG48L2Rpdj5cbiJdfQ==
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGFjdC1hc3Nlc3NtZW50cy9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC9pbXBhY3QtYXNzZXNzbWVudHMtaW5kaWNhdG9yLWJyZWFrZG93bi1jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0L2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlGLE9BQU8sZUFBZSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQW1ELFFBQVEsRUFBUSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNySCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFx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QUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDOytHQTlNVSxpREFBaUQ7bUdBQWpELGlEQUFpRCx1WkM5RTlELDI4RUF1RUEsMEtES1ksZUFBZSwyTUFBRSxXQUFXLDRPQUFFLGNBQWM7OzRGQUUzQyxpREFBaUQ7a0JBUjdELFNBQVM7K0JBQ0UsaURBQWlELG1CQUcxQyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZpbHRlciwgZ3JvdXBCeSwgbWFwLCBtZXJnZUFsbCwgbWVyZ2VNYXAsIHRha2UsIHRhcCwgdG9BcnJheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnREYXRhIH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IENoYXJ0RGF0YUxhYmVscyBmcm9tICdjaGFydGpzLXBsdWdpbi1kYXRhbGFiZWxzJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJbmRpY2F0b3IsIElUZXJtSlNPTkxELCBOb2RlVHlwZSwgVGVybSwgVGVybVRlcm1UeXBlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsgdG9QcmVjaXNpb24sIHVuaXF1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGYUljb25Db21wb25lbnQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBmYURvd25sb2FkLCBmYVNwaW5uZXIgfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgbWF0Y2hUZXJtVHlwZSwgbWF0Y2hUeXBlIH0gZnJvbSAnLi4vLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVOb2RlU2VydmljZSB9IGZyb20gJy4uLy4uL25vZGUvbm9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCB9IGZyb20gJy4uLy4uL2NvbW1vbi9yeGpzLXV0aWxzJztcbmltcG9ydCB7IExldmVsLCBwYXJzZUxpbmVzLCBwYXJzZU1lc3NhZ2UgfSBmcm9tICcuLi8uLi9jb21tb24vbG9ncy11dGlscyc7XG5pbXBvcnQgeyBsaXN0Q29sb3IgfSBmcm9tICcuLi8uLi9jb21tb24vY29sb3InO1xuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jaGFydC9jaGFydC5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgSUxvZyB7XG4gIG1vZGVsSWQ6IHN0cmluZztcbiAgaW1wYWN0VGVybUlkOiBzdHJpbmc7XG4gIGltcGFjdFRlcm1Vbml0cz86IHN0cmluZztcbiAgYmxhbmtOb2RlVGVybUlkOiBzdHJpbmc7XG4gIGNvZWZmaWNpZW50OiBudW1iZXI7XG4gIHZhbHVlOiBudW1iZXI7XG4gIC8vIHN0b3JlIGFsbCBpbmRpY2F0b3JzIHdpdGggaW5wdXRzXG4gIGlucHV0cz86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgfVtdO1xuICBpbnB1dHNWYWx1ZT86IG51bWJlcjtcbn1cblxuY29uc3QgcGFyc2VMb2cgPSAoZGF0YTogYW55KTogSUxvZyA9PiAoe1xuICBtb2RlbElkOiBkYXRhLm1vZGVsLFxuICBpbXBhY3RUZXJtSWQ6IGRhdGFbJ2tleS90ZXJtJ10gfHwgZGF0YS50ZXJtIHx8IGRhdGEuaW5kaWNhdG9yLFxuICBibGFua05vZGVUZXJtSWQ6IGRhdGEubm9kZSxcbiAgY29lZmZpY2llbnQ6ICtkYXRhLmNvZWZmaWNpZW50LFxuICB2YWx1ZTogK2RhdGEudmFsdWUgKiArZGF0YS5jb2VmZmljaWVudFxufSk7XG5cbmNvbnN0IGZpbHRlclRlcm1UeXBlcyA9IFtUZXJtVGVybVR5cGUuZW1pc3Npb24sIFRlcm1UZXJtVHlwZS5jaGFyYWN0ZXJpc2VkSW5kaWNhdG9yXTtcblxuY29uc3QgY3N2SGVhZGVycyA9IFtcbiAgJ0ltcGFjdCcsXG4gICdJbXBhY3QgVW5pdCcsXG4gICdNZXRob2QnLFxuICAnRW1pc3Npb24nLFxuICAnVmFsdWUnLFxuICAnSW5wdXRzJyxcbiAgJ0lucHV0cyB2YWx1ZScsXG4gICdGdW5jdGlvbmFsIFVuaXQnXG5dO1xuXG5jb25zdCBsb2dUb0NzdiA9IChsb2dzOiBJTG9nW10sIGltcGFjdDogSUltcGFjdEFzc2Vzc21lbnRKU09OTEQpID0+XG4gIFtcbiAgICBjc3ZIZWFkZXJzLmpvaW4oJywnKSxcbiAgICAuLi5sb2dzXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5pbXBhY3RUZXJtSWQubG9jYWxlQ29tcGFyZShiLmltcGFjdFRlcm1JZCkpXG4gICAgICAuZmxhdE1hcCgoeyBpbXBhY3RUZXJtSWQsIGltcGFjdFRlcm1Vbml0cywgbW9kZWxJZCwgYmxhbmtOb2RlVGVybUlkLCB2YWx1ZSwgaW5wdXRzIH0pID0+IFtcbiAgICAgICAgW2ltcGFjdFRlcm1JZCwgaW1wYWN0VGVybVVuaXRzLCBtb2RlbElkLCBibGFua05vZGVUZXJtSWQsIHZhbHVlLCAnJywgJyddLFxuICAgICAgICAuLi5pbnB1dHMubWFwKHYgPT4gW2ltcGFjdFRlcm1JZCwgaW1wYWN0VGVybVVuaXRzLCBtb2RlbElkLCBibGFua05vZGVUZXJtSWQsICcnLCB2Lm5hbWUsIHYudmFsdWVdKVxuICAgICAgXSlcbiAgICAgIC5tYXAodiA9PiBbLi4udiwgaW1wYWN0LnByb2R1Y3Q/LnRlcm0/LnVuaXRzXS5qb2luKCcsJykpXG4gIF0uam9pbignXFxuJyk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hlLWltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltcGFjdC1hc3Nlc3NtZW50cy1pbmRpY2F0b3ItYnJlYWtkb3duLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWluZGljYXRvci1icmVha2Rvd24tY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGYUljb25Db21wb25lbnQsIEZvcm1zTW9kdWxlLCBDaGFydENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNJbmRpY2F0b3JCcmVha2Rvd25DaGFydENvbXBvbmVudCB7XG4gIHByaXZhdGUgZG9tU2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gIHByaXZhdGUgc2VhcmNoU2VydmljZSA9IGluamVjdChIZVNlYXJjaFNlcnZpY2UpO1xuICBwcml2YXRlIG5vZGVTZXJ2aWNlID0gaW5qZWN0KEhlTm9kZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmYVNwaW5uZXIgPSBmYVNwaW5uZXI7XG4gIHByb3RlY3RlZCByZWFkb25seSBmYURvd25sb2FkID0gZmFEb3dubG9hZDtcblxuICBwcm90ZWN0ZWQgaW1wYWN0QXNzZXNzbWVudCA9IGlucHV0KHVuZGVmaW5lZCBhcyBJSW1wYWN0QXNzZXNzbWVudEpTT05MRCk7XG4gIHByaXZhdGUgaW1wYWN0QXNzZXNzbWVudCQgPSB0b09ic2VydmFibGUodGhpcy5pbXBhY3RBc3Nlc3NtZW50KTtcblxuICBwcm90ZWN0ZWQgaW5kaWNhdG9ycyA9IGlucHV0KFtdIGFzIEluZGljYXRvcltdKTtcblxuICBwcml2YXRlIGFsbExvZ3MgPSBzaWduYWwoW10gYXMgSUxvZ1tdKTtcbiAgcHJpdmF0ZSBsb2dzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmFsbExvZ3MoKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHsgaW1wYWN0VGVybUlkLCBtb2RlbElkIH0pID0+XG4gICAgICAgICAgaW1wYWN0VGVybUlkID09PSB0aGlzLnNlbGVjdGVkVGVybSgpPy5bJ0BpZCddICYmXG4gICAgICAgICAgKCF0aGlzLnNlbGVjdGVkTWV0aG9kKCkgfHwgbW9kZWxJZCA9PT0gdGhpcy5zZWxlY3RlZE1ldGhvZCgpPy5bJ0BpZCddKVxuICAgICAgKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIudmFsdWUgLSBhLnZhbHVlKVxuICApO1xuXG4gIHByaXZhdGUgZW1pc3Npb25zID0gdG9TaWduYWwoXG4gICAgdGhpcy5zZWFyY2hTZXJ2aWNlXG4gICAgICAuc2VhcmNoJDxJVGVybUpTT05MRCwgTm9kZVR5cGUuVGVybT4oe1xuICAgICAgICBmaWVsZHM6IFsnQHR5cGUnLCAnQGlkJywgJ25hbWUnXSxcbiAgICAgICAgbGltaXQ6IDEwMDAsXG4gICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgYm9vbDoge1xuICAgICAgICAgICAgbXVzdDogW21hdGNoVHlwZShOb2RlVHlwZS5UZXJtKV0sXG4gICAgICAgICAgICBzaG91bGQ6IGZpbHRlclRlcm1UeXBlcy5tYXAodGVybVR5cGUgPT4gbWF0Y2hUZXJtVHlwZSh0ZXJtVHlwZSkpLFxuICAgICAgICAgICAgbWluaW11bV9zaG91bGRfbWF0Y2g6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoKHsgcmVzdWx0cyB9KSA9PiByZXN1bHRzKSlcbiAgKTtcblxuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRUZXJtID0gc2lnbmFsKHVuZGVmaW5lZCBhcyBUZXJtKTtcbiAgcHJvdGVjdGVkIHRlcm1zID0gY29tcHV0ZWQoKCkgPT5cbiAgICB1bmlxdWUoXG4gICAgICAodGhpcy5pbmRpY2F0b3JzKCkgfHwgW10pXG4gICAgICAgIC5tYXAoKHsgdGVybSB9KSA9PiB0ZXJtISlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSlcbiAgICApXG4gICk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkTWV0aG9kID0gc2lnbmFsKHVuZGVmaW5lZCBhcyBUZXJtKTtcbiAgcHJvdGVjdGVkIG1ldGhvZHMgPSBjb21wdXRlZCgoKSA9PlxuICAgIHVuaXF1ZSgodGhpcy5pbmRpY2F0b3JzKCkgfHwgW10pLm1hcCgoeyBtZXRob2RNb2RlbCB9KSA9PiBtZXRob2RNb2RlbCEpLmZpbHRlcihCb29sZWFuKSlcbiAgKTtcblxuICBwcml2YXRlIGltcGFjdHMgPSBjb21wdXRlZCgoKSA9PiBbXG4gICAgLi4uKHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpPy5pbXBhY3RzIHx8IFtdKSxcbiAgICAuLi4odGhpcy5pbXBhY3RBc3Nlc3NtZW50KCk/LmVuZHBvaW50cyB8fCBbXSlcbiAgXSk7XG4gIHByb3RlY3RlZCBub0RhdGEgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ3MoKT8ubGVuZ3RoID09PSAwKTtcblxuICBwcm90ZWN0ZWQgY3N2Q29udGVudCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKFxuICAgICAgYGRhdGE6dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgsJHtlbmNvZGVVUklDb21wb25lbnQobG9nVG9Dc3YodGhpcy5sb2dzKCksIHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpKSl9YFxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSBpZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpPy5bJ0BpZCddIHx8ICh0aGlzLmltcGFjdEFzc2Vzc21lbnQoKSBhcyBhbnkpPy5pZCk7XG4gIHByb3RlY3RlZCBkb3dubG9hZEZpbGVuYW1lID0gY29tcHV0ZWQoKCkgPT4gYCR7dGhpcy5pZCgpfS1sb2dzLmNzdmApO1xuXG4gIHByaXZhdGUgdG90YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmxvZ3MoKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKSk7XG4gIHByaXZhdGUgbGFiZWxzID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmxvZ3MoKS5tYXAoXG4gICAgICAoeyBibGFua05vZGVUZXJtSWQgfSkgPT4gdGhpcy5lbWlzc2lvbnMoKT8uZmluZCh2ID0+IHZbJ0BpZCddID09PSBibGFua05vZGVUZXJtSWQpPy5uYW1lIHx8IGJsYW5rTm9kZVRlcm1JZFxuICAgIClcbiAgKTtcbiAgcHJpdmF0ZSBkYXRhc2V0cyA9IGNvbXB1dGVkKCgpID0+IFtcbiAgICB7XG4gICAgICBsYWJlbDogdGhpcy5zZWxlY3RlZFRlcm0oKT8ubmFtZSA/PyAnJyxcbiAgICAgIGRhdGE6IHRoaXMubG9ncygpLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMubG9ncygpLm1hcChsaXN0Q29sb3IpLFxuICAgICAgYm9yZGVyQ29sb3I6IHRoaXMubG9ncygpLm1hcChsaXN0Q29sb3IpXG4gICAgfVxuICBdKTtcblxuICBwcm90ZWN0ZWQgY2hhcnREYXRhOiBTaWduYWw8Q2hhcnREYXRhPiA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgZGF0YXNldHM6IHRoaXMuZGF0YXNldHMoKSxcbiAgICBsYWJlbHM6IHRoaXMubGFiZWxzKClcbiAgfSkpO1xuICBwcm90ZWN0ZWQgY2hhcnRDb25maWc6IFNpZ25hbDxQYXJ0aWFsPENoYXJ0Q29uZmlndXJhdGlvbj4+ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICB0eXBlOiAnaG9yaXpvbnRhbEJhcicsXG4gICAgcGx1Z2luczogW0NoYXJ0RGF0YUxhYmVsc10sXG4gICAgb3B0aW9uczoge1xuICAgICAgcGx1Z2luczoge1xuICAgICAgICBkYXRhbGFiZWxzOiB7XG4gICAgICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgICAgICAgZm9ybWF0dGVyOiB2YWx1ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCByYXRpbyA9IHRvUHJlY2lzaW9uKCh2YWx1ZSAqIDEwMCkgLyB0aGlzLnRvdGFsKCksIDIpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gMCA/IGAke3RvUHJlY2lzaW9uKHZhbHVlLCAzKX0gKCR7cmF0aW99JSlgIDogJyc7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhbGlnbjogJ2VuZCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICBtYWludGFpbkFzcGVjdFJhdGlvOiBmYWxzZSxcbiAgICAgIGxlZ2VuZDoge1xuICAgICAgICBkaXNwbGF5OiBmYWxzZVxuICAgICAgfSxcbiAgICAgIHRvb2x0aXBzOiB7XG4gICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBjYWxsYmFja3M6IHtcbiAgICAgICAgICB0aXRsZTogKHRvb2x0aXBJdGVtcywgZGF0YSkgPT4gZGF0YS5kYXRhc2V0cyFbdG9vbHRpcEl0ZW1zWzBdLmRhdGFzZXRJbmRleCFdPy5sYWJlbCB8fCAnJyxcbiAgICAgICAgICBsYWJlbDogdG9vbHRpcEl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSArKHRvb2x0aXBJdGVtLnZhbHVlIHx8ICcwJyk7XG4gICAgICAgICAgICBjb25zdCByYXRpbyA9IHRvUHJlY2lzaW9uKCh2YWx1ZSAqIDEwMCkgLyB0aGlzLnRvdGFsKCksIDIpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gMCA/IGAke3RvUHJlY2lzaW9uKHZhbHVlLCAzKX0gKCR7cmF0aW99JSlgIDogJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgc2NhbGVzOiB7XG4gICAgICAgIHhBeGVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZGlzcGxheTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgeUF4ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICB9KSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbXBhY3RBc3Nlc3NtZW50JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcih2ID0+ICEhdiksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkRGVlcCgpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nLnNldCh0cnVlKSksXG4gICAgICAgIG1lcmdlTWFwKG5vZGUgPT4gKG5vZGUgPyB0aGlzLm5vZGVTZXJ2aWNlLmdldExvZyQoeyAuLi5ub2RlLCBkYXRhU3RhdGU6IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWQgfSkgOiBvZignJykpKSxcbiAgICAgICAgbWFwKHZhbHVlID0+ICh2YWx1ZSA/IHBhcnNlTGluZXModmFsdWUpIDogW10pKSxcbiAgICAgICAgbWVyZ2VBbGwoKSxcbiAgICAgICAgZmlsdGVyKCh7IGRhdGEgfSkgPT4gZGF0YS5sb2dnZXIgPT09ICdoZXN0aWFfZWFydGgubW9kZWxzJyAmJiBkYXRhLmxldmVsID09PSBMZXZlbC5kZWJ1ZyksXG4gICAgICAgIGZpbHRlcigoeyBkYXRhOiB7IG1lc3NhZ2UgfSB9KSA9PiAhIW1lc3NhZ2UpLFxuICAgICAgICBtYXAoKHsgZGF0YTogeyBtZXNzYWdlIH0gfSkgPT4gcGFyc2VNZXNzYWdlKG1lc3NhZ2UpKSxcbiAgICAgICAgZmlsdGVyKG1lc3NhZ2UgPT4gJ25vZGUnIGluIG1lc3NhZ2UpLFxuICAgICAgICBtYXAocGFyc2VMb2cpLFxuICAgICAgICBmaWx0ZXIobG9nID0+ICEhbG9nLmltcGFjdFRlcm1JZCAmJiAhIWxvZy5ibGFua05vZGVUZXJtSWQgJiYgIWlzTmFOKGxvZy52YWx1ZSkgJiYgbG9nLnZhbHVlID4gMCksXG4gICAgICAgIGdyb3VwQnkobG9nID0+IFtsb2cuaW1wYWN0VGVybUlkLCBsb2cuYmxhbmtOb2RlVGVybUlkLCBsb2cubW9kZWxJZF0uam9pbignLycpKSxcbiAgICAgICAgbWVyZ2VNYXAoZ3JvdXAgPT4gZ3JvdXAucGlwZSh0b0FycmF5KCkpKSxcbiAgICAgICAgbWFwKCh2YWx1ZXM6IElMb2dbXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGxvZyA9IHZhbHVlc1swXTtcbiAgICAgICAgICBjb25zdCB0b3RhbCA9IHZhbHVlcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKTtcbiAgICAgICAgICBjb25zdCBibGFua05vZGVzID0gW1xuICAgICAgICAgICAgLi4uKHRoaXMuaW1wYWN0QXNzZXNzbWVudCgpPy5lbWlzc2lvbnNSZXNvdXJjZVVzZSA/PyBbXSksXG4gICAgICAgICAgICAuLi4odGhpcy5pbXBhY3RBc3Nlc3NtZW50KCk/LmltcGFjdHMgPz8gW10pXG4gICAgICAgICAgXS5maWx0ZXIodiA9PiB2LnRlcm1bJ0BpZCddID09PSBsb2cuYmxhbmtOb2RlVGVybUlkKTtcblxuICAgICAgICAgIGNvbnN0IGlucHV0cyA9IGJsYW5rTm9kZXNcbiAgICAgICAgICAgIC5maWx0ZXIodiA9PiB2LmlucHV0cz8ubGVuZ3RoKVxuICAgICAgICAgICAgLm1hcCh2ID0+ICh7IG5hbWU6IHYuaW5wdXRzLm1hcChpID0+IGlbJ0BpZCddKS5qb2luKCc7JyksIHZhbHVlOiB2LnZhbHVlICogbG9nLmNvZWZmaWNpZW50IH0pKTtcbiAgICAgICAgICBjb25zdCBpbnB1dHNWYWx1ZSA9IGlucHV0cy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgKyBjdXJyLnZhbHVlLCAwKTtcblxuICAgICAgICAgIGNvbnN0IGltcGFjdCA9IHRoaXMuaW1wYWN0cygpLmZpbmQodiA9PiB2LnRlcm1bJ0BpZCddID09PSBsb2cuaW1wYWN0VGVybUlkKTtcblxuICAgICAgICAgIC8vIGxvZ3MgbWlnaHQgZXhpc3QgYnV0IGltcGFjdCB3YXMgbm90IGFkZGVkID0+IHNraXAgbG9nc1xuICAgICAgICAgIHJldHVybiBpbXBhY3RcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLmxvZyxcbiAgICAgICAgICAgICAgICBpbXBhY3RUZXJtVW5pdHM6IGltcGFjdC50ZXJtPy51bml0cyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdG90YWwsXG4gICAgICAgICAgICAgICAgaW5wdXRzLFxuICAgICAgICAgICAgICAgIGlucHV0c1ZhbHVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcihsb2cgPT4gISFsb2cpLFxuICAgICAgICB0b0FycmF5KCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGxvZ3M6IElMb2dbXSkgPT4gdGhpcy5hbGxMb2dzLnNldChsb2dzKSk7XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIG1ha2Ugc3VyZSBzZWxlY3RlZCB0ZXJtIGV4aXN0c1xuICAgICAgICBjb25zdCB0ZXJtcyA9IHRoaXMudGVybXMoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUZXJtSWQgPSB0aGlzLnNlbGVjdGVkVGVybSgpPy5bJ0BpZCddO1xuICAgICAgICBpZiAoIXNlbGVjdGVkVGVybUlkIHx8ICF0ZXJtcy5maW5kKHRlcm0gPT4gdGVybVsnQGlkJ10gPT09IHNlbGVjdGVkVGVybUlkKSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUZXJtLnNldCh0ZXJtc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdFRlcm0oeyB0YXJnZXQ6IHsgdmFsdWUgfSB9KSB7XG4gICAgY29uc3QgdGVybSA9IHRoaXMudGVybXMoKS5maW5kKHRlcm0gPT4gdGVybVsnQGlkJ10gPT09IHZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkVGVybS5zZXQodGVybSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0TWV0aG9kKHsgdGFyZ2V0OiB7IHZhbHVlIH0gfSkge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLm1ldGhvZHMoKS5maW5kKHRlcm0gPT4gdGVybVsnQGlkJ10gPT09IHZhbHVlKTtcbiAgICB0aGlzLnNlbGVjdGVkTWV0aG9kLnNldCh0ZXJtKTtcbiAgfVxufVxuIiwiQGlmIChsb2FkaW5nKCkpIHtcbiAgPGRpdiBjbGFzcz1cImhhcy10ZXh0LWNlbnRlciBweS0zXCI+XG4gICAgPGZhLWljb24gW2ljb25dPVwiZmFTcGlubmVyXCIgYW5pbWF0aW9uPVwic3BpblwiIHNpemU9XCJsZ1wiIC8+XG4gIDwvZGl2PlxufSBAZWxzZSB7XG4gIDxkaXYgY2xhc3M9XCJwLTNcIiBbY2xhc3MuaXMtaGlkZGVuXT1cIiF0ZXJtcygpPy5sZW5ndGhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9uc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWMgaXMtc2Vjb25kYXJ5XCI+U2VsZWN0IGFuIEluZGljYXRvcjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBAaWYgKHRlcm1zKCk/Lmxlbmd0aCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2wgaXMtZXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdCBpcy1mdWxsd2lkdGggaXMtc21hbGwgaXMtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cInNlbGVjdFRlcm0oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAodGVybSBvZiB0ZXJtcygpOyB0cmFjayB0ZXJtKSB7XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cInRlcm1bJ0BpZCddXCI+e3sgdGVybS5uYW1lIH19ICh7eyB0ZXJtLnVuaXRzIH19KTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKG1ldGhvZHMoKT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLWZ1bGx3aWR0aCBpcy1zbWFsbCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICA8c2VsZWN0IChjaGFuZ2UpPVwic2VsZWN0TWV0aG9kKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwidW5kZWZpbmVkXCI+RmlsdGVyIE1vZGVsPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICBAZm9yICh0ZXJtIG9mIG1ldGhvZHMoKTsgdHJhY2sgdGVybSkge1xuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJ0ZXJtWydAaWQnXVwiPnt7IHRlcm0ubmFtZSB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4gaXMtbmFycm93XCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gaXMtZ2hvc3QgaXMtc21hbGxcIlxuICAgICAgICAgIFtocmVmXT1cImNzdkNvbnRlbnQoKVwiXG4gICAgICAgICAgW2Rvd25sb2FkXT1cImRvd25sb2FkRmlsZW5hbWUoKVwiXG4gICAgICAgICAgbmdiVG9vbHRpcD1cIkRvd25sb2FkIGFzIENTVlwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCI+XG4gICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFEb3dubG9hZFwiIC8+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIEBpZiAoIXNlbGVjdGVkTWV0aG9kKCkpIHtcbiAgICAgIDxwIGNsYXNzPVwiaXMtc2l6ZS03XCI+XG4gICAgICAgIDxpPlNlbGVjdGluZyBhIE1vZGVsIGlzIHJlY29tbWVuZGVkIHRvIGF2b2lkIGR1cGxpY2F0ZWQgZW50cmllcy48L2k+XG4gICAgICA8L3A+XG4gICAgfVxuICA8L2Rpdj5cbn1cblxuPGRpdiBjbGFzcz1cImlzLW10LTFcIj5cbiAgQGlmICghbG9hZGluZygpICYmIG5vRGF0YSgpKSB7XG4gICAgPHAgY2xhc3M9XCJoYXMtdGV4dC1jZW50ZXJlZFwiPlxuICAgICAgPHNwYW4+Tm8gYnJlYWtkb3duIGF2YWlsYWJsZSBmb3I8L3NwYW4+XG4gICAgICBAaWYgKHNlbGVjdGVkVGVybSgpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtcGwtMVwiPnt7IHNlbGVjdGVkVGVybSgpLm5hbWUgfX08L3NwYW4+XG4gICAgICB9XG4gICAgICBAaWYgKHNlbGVjdGVkTWV0aG9kKCkpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1wbC0xXCI+KHt7IHNlbGVjdGVkTWV0aG9kKCkubmFtZSB9fSk8L3NwYW4+XG4gICAgICB9XG4gICAgICA8c3Bhbj4uPC9zcGFuPlxuICAgIDwvcD5cbiAgfVxuICA8aGUtY2hhcnQgY2xhc3M9XCJpcy1yZWxhdGl2ZVwiIFtkYXRhXT1cImNoYXJ0RGF0YSgpXCIgW2NvbmZpZ109XCJjaGFydENvbmZpZygpXCI+PC9oZS1jaGFydD5cbjwvZGl2PlxuIl19
|