@smartbit4all/ng-client 3.1.12 → 3.1.13
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/esm2020/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +13 -15
- package/esm2020/lib/smart-grid/smart-grid.component.mjs +3 -9
- package/esm2020/lib/smart-grid/smart-grid.service.mjs +3 -6
- package/fesm2015/smartbit4all-ng-client.mjs +8 -18
- package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
- package/fesm2020/smartbit4all-ng-client.mjs +8 -18
- package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.d.ts +2 -2
- package/lib/smart-grid/smart-grid.service.d.ts +1 -1
- package/package.json +1 -1
- package/smartbit4all-ng-client-3.1.13.tgz +0 -0
- package/smartbit4all-ng-client-3.1.12.tgz +0 -0
package/esm2020/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs
CHANGED
|
@@ -4,18 +4,16 @@ import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
|
4
4
|
import { SmartFormWidgetDirection, SmartFormWidgetType, } from '../../../smart-form/projects';
|
|
5
5
|
import { Subject, takeUntil } from 'rxjs';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "
|
|
8
|
-
import * as i2 from "
|
|
9
|
-
import * as i3 from "../../../smart-
|
|
10
|
-
import * as i4 from "
|
|
11
|
-
import * as i5 from "@angular/material/
|
|
12
|
-
import * as i6 from "@angular/
|
|
13
|
-
import * as i7 from "@angular/
|
|
14
|
-
import * as i8 from "@angular/common";
|
|
7
|
+
import * as i1 from "@angular/material/dialog";
|
|
8
|
+
import * as i2 from "../../../smart-icon/smart-icon/smart-icon.component";
|
|
9
|
+
import * as i3 from "../../../smart-form/smartform.component";
|
|
10
|
+
import * as i4 from "@angular/material/button";
|
|
11
|
+
import * as i5 from "@angular/material/icon";
|
|
12
|
+
import * as i6 from "@angular/cdk/drag-drop";
|
|
13
|
+
import * as i7 from "@angular/common";
|
|
15
14
|
export class TableLayoutDefinerComponent {
|
|
16
|
-
constructor(data,
|
|
15
|
+
constructor(data, dialogRef) {
|
|
17
16
|
this.data = data;
|
|
18
|
-
this.service = service;
|
|
19
17
|
this.dialogRef = dialogRef;
|
|
20
18
|
this._destroy$ = new Subject();
|
|
21
19
|
this.orderedColumnsAsObject = {};
|
|
@@ -129,7 +127,7 @@ export class TableLayoutDefinerComponent {
|
|
|
129
127
|
orderByList: this.view.orderByList,
|
|
130
128
|
orderedColumnNames: this.view.orderedColumnNames,
|
|
131
129
|
};
|
|
132
|
-
await this.service.update(config.uuid, config.identifier, updateData);
|
|
130
|
+
await this.data.customComponentInputs.config.service.update(config.uuid, config.identifier, updateData);
|
|
133
131
|
this.dialogRef.close();
|
|
134
132
|
}
|
|
135
133
|
getUpdatedOrderedColumns() {
|
|
@@ -162,16 +160,16 @@ export class TableLayoutDefinerComponent {
|
|
|
162
160
|
return true;
|
|
163
161
|
}
|
|
164
162
|
}
|
|
165
|
-
TableLayoutDefinerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TableLayoutDefinerComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.
|
|
166
|
-
TableLayoutDefinerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TableLayoutDefinerComponent, selector: "app-table-layout-definer", viewQueries: [{ propertyName: "formChildren", predicate: ["forms"], descendants: true }], ngImport: i0, template: "<div class=\"edit-columns-container\">\r\n <div class=\"example-list\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"column-meta-row\" *ngFor=\"let col of forms\" cdkDrag cdkDragLockAxis=\"y\">\r\n <smart-icon color=\"primary\" icon=\"drag_handle\"></smart-icon>\r\n <smartform class=\"form\" #forms [smartForm]=\"col\"></smartform>\r\n <button\r\n *ngIf=\"isAlwaysShow(col) && (view?.orderedColumnNames)!.length > 1\"\r\n (click)=\"removeColumn(col)\"\r\n mat-icon-button\r\n color=\"primary\"\r\n >\r\n <mat-icon>delete_outline</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div appStickyMenu class=\"button-toolbar\">\r\n <button mat-icon-button color=\"primary\" [disabled]=\"addDisabled\" (click)=\"addColumn()\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"disableSave\" (click)=\"submit()\">\r\n Ment\u00E9s\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".edit-columns-container{padding:1rem;display:flex;flex-direction:column;gap:1rem}.row{display:flex;flex-direction:row;gap:.5rem}.form{flex:1}.fields{padding:1rem 0;display:flex;flex-direction:column;gap:.5rem}.example-list{display:flex;flex-direction:column;gap:1rem;width:500px;max-width:100%;max-height:80vh;overflow:auto}.column-meta-row{display:flex;flex-direction:row;gap:1rem;justify-content:space-between;border:solid 1px #ccc;padding:1rem}.buttonsContainer{display:flex;flex-direction:row;justify-content:space-between}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}h2{margin:0}.button-toolbar{display:flex;flex-direction:row;justify-content:space-between;padding:.5rem}\n"], components: [{ type:
|
|
163
|
+
TableLayoutDefinerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TableLayoutDefinerComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
+
TableLayoutDefinerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TableLayoutDefinerComponent, selector: "app-table-layout-definer", viewQueries: [{ propertyName: "formChildren", predicate: ["forms"], descendants: true }], ngImport: i0, template: "<div class=\"edit-columns-container\">\r\n <div class=\"example-list\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"column-meta-row\" *ngFor=\"let col of forms\" cdkDrag cdkDragLockAxis=\"y\">\r\n <smart-icon color=\"primary\" icon=\"drag_handle\"></smart-icon>\r\n <smartform class=\"form\" #forms [smartForm]=\"col\"></smartform>\r\n <button\r\n *ngIf=\"isAlwaysShow(col) && (view?.orderedColumnNames)!.length > 1\"\r\n (click)=\"removeColumn(col)\"\r\n mat-icon-button\r\n color=\"primary\"\r\n >\r\n <mat-icon>delete_outline</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div appStickyMenu class=\"button-toolbar\">\r\n <button mat-icon-button color=\"primary\" [disabled]=\"addDisabled\" (click)=\"addColumn()\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"disableSave\" (click)=\"submit()\">\r\n Ment\u00E9s\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".edit-columns-container{padding:1rem;display:flex;flex-direction:column;gap:1rem}.row{display:flex;flex-direction:row;gap:.5rem}.form{flex:1}.fields{padding:1rem 0;display:flex;flex-direction:column;gap:.5rem}.example-list{display:flex;flex-direction:column;gap:1rem;width:500px;max-width:100%;max-height:80vh;overflow:auto}.column-meta-row{display:flex;flex-direction:row;gap:1rem;justify-content:space-between;border:solid 1px #ccc;padding:1rem}.buttonsContainer{display:flex;flex-direction:row;justify-content:space-between}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}h2{margin:0}.button-toolbar{display:flex;flex-direction:row;justify-content:space-between;padding:.5rem}\n"], components: [{ type: i2.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { type: i3.SmartformComponent, selector: "smartform", inputs: ["smartForm"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
167
165
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TableLayoutDefinerComponent, decorators: [{
|
|
168
166
|
type: Component,
|
|
169
167
|
args: [{ selector: 'app-table-layout-definer', template: "<div class=\"edit-columns-container\">\r\n <div class=\"example-list\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"column-meta-row\" *ngFor=\"let col of forms\" cdkDrag cdkDragLockAxis=\"y\">\r\n <smart-icon color=\"primary\" icon=\"drag_handle\"></smart-icon>\r\n <smartform class=\"form\" #forms [smartForm]=\"col\"></smartform>\r\n <button\r\n *ngIf=\"isAlwaysShow(col) && (view?.orderedColumnNames)!.length > 1\"\r\n (click)=\"removeColumn(col)\"\r\n mat-icon-button\r\n color=\"primary\"\r\n >\r\n <mat-icon>delete_outline</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div appStickyMenu class=\"button-toolbar\">\r\n <button mat-icon-button color=\"primary\" [disabled]=\"addDisabled\" (click)=\"addColumn()\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"disableSave\" (click)=\"submit()\">\r\n Ment\u00E9s\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".edit-columns-container{padding:1rem;display:flex;flex-direction:column;gap:1rem}.row{display:flex;flex-direction:row;gap:.5rem}.form{flex:1}.fields{padding:1rem 0;display:flex;flex-direction:column;gap:.5rem}.example-list{display:flex;flex-direction:column;gap:1rem;width:500px;max-width:100%;max-height:80vh;overflow:auto}.column-meta-row{display:flex;flex-direction:row;gap:1rem;justify-content:space-between;border:solid 1px #ccc;padding:1rem}.buttonsContainer{display:flex;flex-direction:row;justify-content:space-between}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}h2{margin:0}.button-toolbar{display:flex;flex-direction:row;justify-content:space-between;padding:.5rem}\n"] }]
|
|
170
168
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
171
169
|
type: Inject,
|
|
172
170
|
args: [MAT_DIALOG_DATA]
|
|
173
|
-
}] }, { type: i1.
|
|
171
|
+
}] }, { type: i1.MatDialogRef }]; }, propDecorators: { formChildren: [{
|
|
174
172
|
type: ViewChildren,
|
|
175
173
|
args: ['forms']
|
|
176
174
|
}] } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbGF5b3V0LWRlZmluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9jb21wb25lbnRzL3RhYmxlLWxheW91dC1kZWZpbmVyL3RhYmxlLWxheW91dC1kZWZpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWdyaWQvY29tcG9uZW50cy90YWJsZS1sYXlvdXQtZGVmaW5lci90YWJsZS1sYXlvdXQtZGVmaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFpQixTQUFTLEVBQUUsTUFBTSxFQUFhLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsbUJBQW1CLEdBRXBCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBUSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFnQmhELE1BQU0sT0FBTywyQkFBMkI7SUFVdEMsWUFDa0MsSUFBcUIsRUFDN0MsT0FBeUIsRUFDekIsU0FBb0Q7UUFGNUIsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDN0MsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBMkM7UUFadEQsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBSXpDLDJCQUFzQixHQUE4QixFQUFFLENBQUM7UUFDL0QsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0Isc0JBQWlCLEdBQWEs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bXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7XHJcbiAgU21hcnRGb3JtLFxyXG4gIFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbixcclxuICBTbWFydEZvcm1XaWRnZXRUeXBlLFxyXG4gIFNtYXJ0Zm9ybUNvbXBvbmVudCxcclxufSBmcm9tICcuLi8uLi8uLi9zbWFydC1mb3JtL3Byb2plY3RzJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdyaWRDb2x1bW5NZXRhLCBHcmlkVXBkYXRlRGF0YSwgR3JpZFZpZXcgfSBmcm9tICcuLi8uLi9hcGkvZ3JpZC1hcGknO1xyXG5pbXBvcnQgeyBTbWFydEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc21hcnQtZ3JpZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnREaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vLi4vc21hcnQtZGlhbG9nL3Byb2plY3RzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVMYXlvdXREZWZpbmVyQ29uZmlnIHtcclxuICB1dWlkOiBzdHJpbmc7XHJcbiAgaWRlbnRpZmllcjogc3RyaW5nO1xyXG4gIHZpZXc6IEdyaWRWaWV3O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC10YWJsZS1sYXlvdXQtZGVmaW5lcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWxheW91dC1kZWZpbmVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1sYXlvdXQtZGVmaW5lci5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZUxheW91dERlZmluZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBAVmlld0NoaWxkcmVuKCdmb3JtcycpIGZvcm1DaGlsZHJlbj86IFNtYXJ0Zm9ybUNvbXBvbmVudFtdO1xyXG4gIGZvcm1zPzogU21hcnRGb3JtW107XHJcbiAgdmlldz86IEdyaWRWaWV3O1xyXG4gIHByaXZhdGUgb3JkZXJlZENvbHVtbnNBc09iamVjdDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xyXG4gIGRpc2FibGVTYXZlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWx3YXlzU2hvd0NvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcbiAgYWRkRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFNtYXJ0RGlhbG9nRGF0YSxcclxuICAgIHByaXZhdGUgc2VydmljZTogU21hcnRHcmlkU2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8VGFibGVMYXlvdXREZWZpbmVyQ29tcG9uZW50PlxyXG4gICkge1xyXG4gICAgdGhpcy52aWV3ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhLmN1c3RvbUNvbXBvbmVudElucHV0cy5jb25maWcudmlldykpO1xyXG4gICAgdGhpcy5tYXBPcmRlcmVkQ29sdW1uc1RvT2JqZWN0KCk7XHJcbiAgICB0aGlzLmNvbnN0cnVjdEZvcm1zKCk7XHJcbiAgICB0aGlzLmdldEFsd2F5c1Nob3dDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmFkZERpc2FibGVkID0gISh0aGlzLmZvcm1zIS5sZW5ndGggPCB0aGlzLnZpZXchLmRlc2NyaXB0b3IhLmNvbHVtbnMubGVuZ3RoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY2liZUZvclZhbHVlQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjaWJlRm9yVmFsdWVDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1DaGlsZHJlbj8uZm9yRWFjaCgoY29tcDogU21hcnRmb3JtQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgIGNvbXAub25WYWx1ZUNoYW5nZVN1YmplY3Q/LnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBsZXQgdXBkYXRlZE9yZGVyZWRDb2x1bW5zID0gdGhpcy5nZXRVcGRhdGVkT3JkZXJlZENvbHVtbnMoKTtcclxuXHJcbiAgICAgICAgbGV0IGZpbmREdXBsaWNhdGVzID0gdXBkYXRlZE9yZGVyZWRDb2x1bW5zLmZpbHRlcihcclxuICAgICAgICAgIChpdGVtLCBpbmRleCkgPT4gdXBkYXRlZE9yZGVyZWRDb2x1bW5zLmluZGV4T2YoaXRlbSkgIT09IGluZGV4XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaXNhYmxlU2F2ZSA9IGZpbmREdXBsaWNhdGVzLmxlbmd0aCA+IDAgfHwgdGhpcy5oYXNFbXB0eVZhbHVlKHVwZGF0ZWRPcmRlcmVkQ29sdW1ucyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBoYXNFbXB0eVZhbHVlKHVwZGF0ZWRPcmRlcmVkQ29sdW1uczogc3RyaW5nW10pIHtcclxuICAgIHJldHVybiB1cGRhdGVkT3JkZXJlZENvbHVtbnMuc29tZSgodmFsdWUpID0+IHZhbHVlLmxlbmd0aCA9PT0gMCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RGb3JtcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybXMgPSB0aGlzLnZpZXchLm9yZGVyZWRDb2x1bW5OYW1lcy5tYXAoKGNvbDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGxldCBmb3JtOiBTbWFydEZvcm0gPSB7XHJcbiAgICAgICAgY29tcG9uZW50TW9kZWw6IHsgZGF0YTogdGhpcy5vcmRlcmVkQ29sdW1uc0FzT2JqZWN0IH0sXHJcbiAgICAgICAgZGlyZWN0aW9uOiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uQ09MLFxyXG4gICAgICAgIHVzZU9uVmFsdWVDaGFuZ2VFdmVudDogdHJ1ZSxcclxuICAgICAgICB3aWRnZXRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGtleTogaW5kZXgudG9TdHJpbmcoKSxcclxuICAgICAgICAgICAgbGFiZWw6ICcnLFxyXG4gICAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVCxcclxuICAgICAgICAgICAgdmFsdWVMaXN0OiB0aGlzLnZpZXchLmRlc2NyaXB0b3IhLmNvbHVtbnMuZmlsdGVyKChjbSkgPT4gIWNtLmFsd2F5c0hpZGRlbikubWFwKFxyXG4gICAgICAgICAgICAgIChjb2xNZXRhOiBHcmlkQ29sdW1uTWV0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAga2V5OiAnJyxcclxuICAgICAgICAgICAgICAgICAgbGFiZWw6IGNvbE1ldGEubGFiZWwsXHJcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb2xNZXRhLnByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiBmb3JtO1xyXG4gICAgfSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc3Vic2NpYmVGb3JWYWx1ZUNoYW5nZSgpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuICBhZGRDb2x1bW4oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtcyEubGVuZ3RoIDwgdGhpcy52aWV3IS5kZXNjcmlwdG9yIS5jb2x1bW5zLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnZpZXc/Lm9yZGVyZWRDb2x1bW5OYW1lcy5wdXNoKCcnKTtcclxuICAgICAgdGhpcy5vcmRlcmVkQ29sdW1uc0FzT2JqZWN0W3RoaXMudmlldyEub3JkZXJlZENvbHVtbk5hbWVzLmxlbmd0aCAtIDFdID0gJyc7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0Rm9ybXMoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlU2F2ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFkZERpc2FibGVkID0gISh0aGlzLmZvcm1zIS5sZW5ndGggPCB0aGlzLnZpZXchLmRlc2NyaXB0b3IhLmNvbHVtbnMubGVuZ3RoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUNvbHVtbihmb3JtOiBTbWFydEZvcm0pOiB2b2lkIHtcclxuICAgIGxldCBwcm9wZXJ0eU5hbWUgPSB0aGlzLm9yZGVyZWRDb2x1bW5zQXNPYmplY3RbZm9ybS53aWRnZXRzWzBdLmtleSFdO1xyXG4gICAgbGV0IGluZGV4ID0gdGhpcy52aWV3IS5vcmRlcmVkQ29sdW1uTmFtZXMuaW5kZXhPZihwcm9wZXJ0eU5hbWUpO1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdGhpcy52aWV3Py5vcmRlcmVkQ29sdW1uTmFtZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICAgIHRoaXMubWFwT3JkZXJlZENvbHVtbnNUb09iamVjdCgpO1xyXG4gICAgdGhpcy5jb25zdHJ1Y3RGb3JtcygpO1xyXG4gICAgdGhpcy5hZGREaXNhYmxlZCA9ICEodGhpcy5mb3JtcyEubGVuZ3RoIDwgdGhpcy52aWV3IS5kZXNjcmlwdG9yIS5jb2x1bW5zLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldExhYmVsRnJvbUNvbHVtbk1ldGEocHJvcDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBsYWJlbCA9IHRoaXMudmlldz8uZGVzY3JpcHRvcj8uY29sdW1ucy5maW5kKFxyXG4gICAgICAodmFsdWU6IEdyaWRDb2x1bW5NZXRhKSA9PiB2YWx1ZS5wcm9wZXJ0eU5hbWUgPT09IHByb3BcclxuICAgICk/LmxhYmVsO1xyXG4gICAgcmV0dXJuIGxhYmVsID8/IHByb3A7XHJcbiAgfVxyXG5cclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcclxuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmZvcm1zISwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICB9XHJcblxyXG4gIGdldEZvcm1Gb3JDb2woY29sOiBzdHJpbmcpOiBTbWFydEZvcm0ge1xyXG4gICAgbGV0IGZvcm06IFNtYXJ0Rm9ybSA9IHtcclxuICAgICAgY29tcG9uZW50TW9kZWw6IHsgZGF0YTogdGhpcy5vcmRlcmVkQ29sdW1uc0FzT2JqZWN0IH0sXHJcbiAgICAgIGRpcmVjdGlvbjogU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLkNPTCxcclxuICAgICAgd2lkZ2V0czogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGtleTogY29sLFxyXG4gICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0TGFiZWxGcm9tQ29sdW1uTWV0YShjb2wpLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgICB2YWx1ZUxpc3Q6IHRoaXMudmlldyEuZGVzY3JpcHRvciEuY29sdW1ucy5tYXAoKGNvbE1ldGE6IEdyaWRDb2x1bW5NZXRhKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAga2V5OiAnJyxcclxuICAgICAgICAgICAgICBsYWJlbDogY29sTWV0YS5sYWJlbCxcclxuICAgICAgICAgICAgICB2YWx1ZTogY29sTWV0YS5wcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gZm9ybTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHN1Ym1pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudmlldyEub3JkZXJlZENvbHVtbk5hbWVzID0gdGhpcy5nZXRVcGRhdGVkT3JkZXJlZENvbHVtbnMoKTtcclxuICAgIGxldCBjb25maWcgPSB0aGlzLmRhdGEuY3VzdG9tQ29tcG9uZW50SW5wdXRzLmNvbmZpZztcclxuXHJcbiAgICBsZXQgdXBkYXRlRGF0YTogR3JpZFVwZGF0ZURhdGEgPSB7XHJcbiAgICAgIG9yZGVyQnlMaXN0OiB0aGlzLnZpZXchLm9yZGVyQnlMaXN0LFxyXG4gICAgICBvcmRlcmVkQ29sdW1uTmFtZXM6IHRoaXMudmlldyEub3JkZXJlZENvbHVtbk5hbWVzLFxyXG4gICAgfTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UudXBkYXRlKGNvbmZpZy51dWlkLCBjb25maWcuaWRlbnRpZmllciwgdXBkYXRlRGF0YSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVcGRhdGVkT3JkZXJlZENvbHVtbnMoKSB7XHJcbiAgICBsZXQgdXBkYXRlZEtleU9yZGVyID0gdGhpcy5mb3JtcyEubWFwKChmb3JtOiBTbWFydEZvcm0pID0+IHtcclxuICAgICAgcmV0dXJuIGZvcm0ud2lkZ2V0c1swXS5rZXkhO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mb3JtQ2hpbGRyZW4/LmZvckVhY2goKGNvbXA6IFNtYXJ0Zm9ybUNvbXBvbmVudCkgPT4gY29tcC5zdWJtaXRGb3JtKCkpO1xyXG5cclxuICAgIGxldCB1cGRhdGVkT3JkZXJlZENvbHVtbnMgPSB1cGRhdGVkS2V5T3JkZXIhLm1hcCgodmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5vcmRlcmVkQ29sdW1uc0FzT2JqZWN0W3ZhbHVlXTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHVwZGF0ZWRPcmRlcmVkQ29sdW1ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFwT3JkZXJlZENvbHVtbnNUb09iamVjdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudmlldz8ub3JkZXJlZENvbHVtbk5hbWVzLm1hcCgodmFsdWU6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICB0aGlzLm9yZGVyZWRDb2x1bW5zQXNPYmplY3RbaW5kZXhdID0gdmFsdWU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0QWx3YXlzU2hvd0NvbHVtbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnZpZXc/LmRlc2NyaXB0b3I/LmNvbHVtbnMuZm9yRWFjaCgoY29sOiBHcmlkQ29sdW1uTWV0YSkgPT4ge1xyXG4gICAgICBpZiAoY29sLmFsd2F5c1Nob3cpIHtcclxuICAgICAgICB0aGlzLmFsd2F5c1Nob3dDb2x1bW5zLnB1c2goY29sLnByb3BlcnR5TmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaXNBbHdheXNTaG93KGNvbDogU21hcnRGb3JtKSB7XHJcbiAgICBsZXQga2V5ID0gY29sLndpZGdldHNbMF0ua2V5ITtcclxuXHJcbiAgICBpZiAodGhpcy5hbHdheXNTaG93Q29sdW1ucy5pbmNsdWRlcyh0aGlzLm9yZGVyZWRDb2x1bW5zQXNPYmplY3Rba2V5XSkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJlZGl0LWNvbHVtbnMtY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cImV4YW1wbGUtbGlzdFwiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLW1ldGEtcm93XCIgKm5nRm9yPVwibGV0IGNvbCBvZiBmb3Jtc1wiIGNka0RyYWcgY2RrRHJhZ0xvY2tBeGlzPVwieVwiPlxyXG4gICAgICA8c21hcnQtaWNvbiBjb2xvcj1cInByaW1hcnlcIiBpY29uPVwiZHJhZ19oYW5kbGVcIj48L3NtYXJ0LWljb24+XHJcbiAgICAgIDxzbWFydGZvcm0gY2xhc3M9XCJmb3JtXCIgI2Zvcm1zIFtzbWFydEZvcm1dPVwiY29sXCI+PC9zbWFydGZvcm0+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICAqbmdJZj1cImlzQWx3YXlzU2hvdyhjb2wpICYmICh2aWV3Py5vcmRlcmVkQ29sdW1uTmFtZXMpIS5sZW5ndGggPiAxXCJcclxuICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ29sdW1uKGNvbClcIlxyXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgID5cclxuICAgICAgICA8bWF0LWljb24+ZGVsZXRlX291dGxpbmU8L21hdC1pY29uPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGFwcFN0aWNreU1lbnUgY2xhc3M9XCJidXR0b24tdG9vbGJhclwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImFkZERpc2FibGVkXCIgKGNsaWNrKT1cImFkZENvbHVtbigpXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlU2F2ZVwiIChjbGljayk9XCJzdWJtaXQoKVwiPlxyXG4gICAgICBNZW50w6lzXHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbGF5b3V0LWRlZmluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9jb21wb25lbnRzL3RhYmxlLWxheW91dC1kZWZpbmVyL3RhYmxlLWxheW91dC1kZWZpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWdyaWQvY29tcG9uZW50cy90YWJsZS1sYXlvdXQtZGVmaW5lci90YWJsZS1sYXlvdXQtZGVmaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFpQixTQUFTLEVBQUUsTUFBTSxFQUFhLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsbUJBQW1CLEdBRXBCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLE9BQU8sRUFBUSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQWlCaEQsTUFBTSxPQUFPLDJCQUEyQjtJQVV0QyxZQUNrQyxJQUFxQixFQUM3QyxTQUFvRDtRQUQ1QixTQUFJLEdBQUosSUFBSSxDQUFpQjtRQUM3QyxjQUFTLEdBQVQsU0FBUyxDQUEyQztRQVh0RCxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFJekMsMkJBQXNCLEdBQThCLEVBQUUsQ0FBQztRQUMvRCxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixzQkFBaUIsR0FBYSxFQUFFLENBQUM7UUFDakMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFN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IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHtcclxuICBTbWFydEZvcm0sXHJcbiAgU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLFxyXG4gIFNtYXJ0Rm9ybVdpZGdldFR5cGUsXHJcbiAgU21hcnRmb3JtQ29tcG9uZW50LFxyXG59IGZyb20gJy4uLy4uLy4uL3NtYXJ0LWZvcm0vcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR3JpZENvbHVtbk1ldGEsIEdyaWRVcGRhdGVEYXRhLCBHcmlkVmlldyB9IGZyb20gJy4uLy4uL2FwaS9ncmlkLWFwaSc7XHJcbmltcG9ydCB7IFNtYXJ0R3JpZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zbWFydC1ncmlkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydERpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi8uLi9zbWFydC1kaWFsb2cvcHJvamVjdHMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUxheW91dERlZmluZXJDb25maWcge1xyXG4gIHV1aWQ6IHN0cmluZztcclxuICBpZGVudGlmaWVyOiBzdHJpbmc7XHJcbiAgdmlldzogR3JpZFZpZXc7XHJcbiAgc2VydmljZTogU21hcnRHcmlkU2VydmljZTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtdGFibGUtbGF5b3V0LWRlZmluZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1sYXlvdXQtZGVmaW5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtbGF5b3V0LWRlZmluZXIuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVMYXlvdXREZWZpbmVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgQFZpZXdDaGlsZHJlbignZm9ybXMnKSBmb3JtQ2hpbGRyZW4/OiBTbWFydGZvcm1Db21wb25lbnRbXTtcclxuICBmb3Jtcz86IFNtYXJ0Rm9ybVtdO1xyXG4gIHZpZXc/OiBHcmlkVmlldztcclxuICBwcml2YXRlIG9yZGVyZWRDb2x1bW5zQXNPYmplY3Q6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcclxuICBkaXNhYmxlU2F2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFsd2F5c1Nob3dDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGFkZERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBTbWFydERpYWxvZ0RhdGEsXHJcbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFRhYmxlTGF5b3V0RGVmaW5lckNvbXBvbmVudD5cclxuICApIHtcclxuICAgIHRoaXMudmlldyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YS5jdXN0b21Db21wb25lbnRJbnB1dHMuY29uZmlnLnZpZXcpKTtcclxuICAgIHRoaXMubWFwT3JkZXJlZENvbHVtbnNUb09iamVjdCgpO1xyXG4gICAgdGhpcy5jb25zdHJ1Y3RGb3JtcygpO1xyXG4gICAgdGhpcy5nZXRBbHdheXNTaG93Q29sdW1ucygpO1xyXG4gICAgdGhpcy5hZGREaXNhYmxlZCA9ICEodGhpcy5mb3JtcyEubGVuZ3RoIDwgdGhpcy52aWV3IS5kZXNjcmlwdG9yIS5jb2x1bW5zLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NpYmVGb3JWYWx1ZUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY2liZUZvclZhbHVlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtQ2hpbGRyZW4/LmZvckVhY2goKGNvbXA6IFNtYXJ0Zm9ybUNvbXBvbmVudCkgPT4ge1xyXG4gICAgICBjb21wLm9uVmFsdWVDaGFuZ2VTdWJqZWN0Py5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgbGV0IHVwZGF0ZWRPcmRlcmVkQ29sdW1ucyA9IHRoaXMuZ2V0VXBkYXRlZE9yZGVyZWRDb2x1bW5zKCk7XHJcblxyXG4gICAgICAgIGxldCBmaW5kRHVwbGljYXRlcyA9IHVwZGF0ZWRPcmRlcmVkQ29sdW1ucy5maWx0ZXIoXHJcbiAgICAgICAgICAoaXRlbSwgaW5kZXgpID0+IHVwZGF0ZWRPcmRlcmVkQ29sdW1ucy5pbmRleE9mKGl0ZW0pICE9PSBpbmRleFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZGlzYWJsZVNhdmUgPSBmaW5kRHVwbGljYXRlcy5sZW5ndGggPiAwIHx8IHRoaXMuaGFzRW1wdHlWYWx1ZSh1cGRhdGVkT3JkZXJlZENvbHVtbnMpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFzRW1wdHlWYWx1ZSh1cGRhdGVkT3JkZXJlZENvbHVtbnM6IHN0cmluZ1tdKSB7XHJcbiAgICByZXR1cm4gdXBkYXRlZE9yZGVyZWRDb2x1bW5zLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZS5sZW5ndGggPT09IDApO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0Rm9ybXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1zID0gdGhpcy52aWV3IS5vcmRlcmVkQ29sdW1uTmFtZXMubWFwKChjb2w6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBsZXQgZm9ybTogU21hcnRGb3JtID0ge1xyXG4gICAgICAgIGNvbXBvbmVudE1vZGVsOiB7IGRhdGE6IHRoaXMub3JkZXJlZENvbHVtbnNBc09iamVjdCB9LFxyXG4gICAgICAgIGRpcmVjdGlvbjogU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLkNPTCxcclxuICAgICAgICB1c2VPblZhbHVlQ2hhbmdlRXZlbnQ6IHRydWUsXHJcbiAgICAgICAgd2lkZ2V0czogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBrZXk6IGluZGV4LnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIGxhYmVsOiAnJyxcclxuICAgICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgICAgIHZhbHVlTGlzdDogdGhpcy52aWV3IS5kZXNjcmlwdG9yIS5jb2x1bW5zLmZpbHRlcigoY20pID0+ICFjbS5hbHdheXNIaWRkZW4pLm1hcChcclxuICAgICAgICAgICAgICAoY29sTWV0YTogR3JpZENvbHVtbk1ldGEpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgIGtleTogJycsXHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBjb2xNZXRhLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogY29sTWV0YS5wcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gZm9ybTtcclxuICAgIH0pO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnN1YnNjaWJlRm9yVmFsdWVDaGFuZ2UoKTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgYWRkQ29sdW1uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybXMhLmxlbmd0aCA8IHRoaXMudmlldyEuZGVzY3JpcHRvciEuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy52aWV3Py5vcmRlcmVkQ29sdW1uTmFtZXMucHVzaCgnJyk7XHJcbiAgICAgIHRoaXMub3JkZXJlZENvbHVtbnNBc09iamVjdFt0aGlzLnZpZXchLm9yZGVyZWRDb2x1bW5OYW1lcy5sZW5ndGggLSAxXSA9ICcnO1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdEZvcm1zKCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZVNhdmUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hZGREaXNhYmxlZCA9ICEodGhpcy5mb3JtcyEubGVuZ3RoIDwgdGhpcy52aWV3IS5kZXNjcmlwdG9yIS5jb2x1bW5zLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVDb2x1bW4oZm9ybTogU21hcnRGb3JtKTogdm9pZCB7XHJcbiAgICBsZXQgcHJvcGVydHlOYW1lID0gdGhpcy5vcmRlcmVkQ29sdW1uc0FzT2JqZWN0W2Zvcm0ud2lkZ2V0c1swXS5rZXkhXTtcclxuICAgIGxldCBpbmRleCA9IHRoaXMudmlldyEub3JkZXJlZENvbHVtbk5hbWVzLmluZGV4T2YocHJvcGVydHlOYW1lKTtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHRoaXMudmlldz8ub3JkZXJlZENvbHVtbk5hbWVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1hcE9yZGVyZWRDb2x1bW5zVG9PYmplY3QoKTtcclxuICAgIHRoaXMuY29uc3RydWN0Rm9ybXMoKTtcclxuICAgIHRoaXMuYWRkRGlzYWJsZWQgPSAhKHRoaXMuZm9ybXMhLmxlbmd0aCA8IHRoaXMudmlldyEuZGVzY3JpcHRvciEuY29sdW1ucy5sZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRMYWJlbEZyb21Db2x1bW5NZXRhKHByb3A6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgbGFiZWwgPSB0aGlzLnZpZXc/LmRlc2NyaXB0b3I/LmNvbHVtbnMuZmluZChcclxuICAgICAgKHZhbHVlOiBHcmlkQ29sdW1uTWV0YSkgPT4gdmFsdWUucHJvcGVydHlOYW1lID09PSBwcm9wXHJcbiAgICApPy5sYWJlbDtcclxuICAgIHJldHVybiBsYWJlbCA/PyBwcm9wO1xyXG4gIH1cclxuXHJcbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5mb3JtcyEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtRm9yQ29sKGNvbDogc3RyaW5nKTogU21hcnRGb3JtIHtcclxuICAgIGxldCBmb3JtOiBTbWFydEZvcm0gPSB7XHJcbiAgICAgIGNvbXBvbmVudE1vZGVsOiB7IGRhdGE6IHRoaXMub3JkZXJlZENvbHVtbnNBc09iamVjdCB9LFxyXG4gICAgICBkaXJlY3Rpb246IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbi5DT0wsXHJcbiAgICAgIHdpZGdldHM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBrZXk6IGNvbCxcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLmdldExhYmVsRnJvbUNvbHVtbk1ldGEoY29sKSxcclxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNULFxyXG4gICAgICAgICAgdmFsdWVMaXN0OiB0aGlzLnZpZXchLmRlc2NyaXB0b3IhLmNvbHVtbnMubWFwKChjb2xNZXRhOiBHcmlkQ29sdW1uTWV0YSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGtleTogJycsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IGNvbE1ldGEubGFiZWwsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGNvbE1ldGEucHJvcGVydHlOYW1lLFxyXG4gICAgICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGZvcm07XHJcbiAgfVxyXG5cclxuICBhc3luYyBzdWJtaXQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnZpZXchLm9yZGVyZWRDb2x1bW5OYW1lcyA9IHRoaXMuZ2V0VXBkYXRlZE9yZGVyZWRDb2x1bW5zKCk7XHJcbiAgICBsZXQgY29uZmlnID0gdGhpcy5kYXRhLmN1c3RvbUNvbXBvbmVudElucHV0cy5jb25maWc7XHJcblxyXG4gICAgbGV0IHVwZGF0ZURhdGE6IEdyaWRVcGRhdGVEYXRhID0ge1xyXG4gICAgICBvcmRlckJ5TGlzdDogdGhpcy52aWV3IS5vcmRlckJ5TGlzdCxcclxuICAgICAgb3JkZXJlZENvbHVtbk5hbWVzOiB0aGlzLnZpZXchLm9yZGVyZWRDb2x1bW5OYW1lcyxcclxuICAgIH07XHJcblxyXG4gICAgYXdhaXQgdGhpcy5kYXRhLmN1c3RvbUNvbXBvbmVudElucHV0cy5jb25maWcuc2VydmljZS51cGRhdGUoXHJcbiAgICAgIGNvbmZpZy51dWlkLFxyXG4gICAgICBjb25maWcuaWRlbnRpZmllcixcclxuICAgICAgdXBkYXRlRGF0YVxyXG4gICAgKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFVwZGF0ZWRPcmRlcmVkQ29sdW1ucygpIHtcclxuICAgIGxldCB1cGRhdGVkS2V5T3JkZXIgPSB0aGlzLmZvcm1zIS5tYXAoKGZvcm06IFNtYXJ0Rm9ybSkgPT4ge1xyXG4gICAgICByZXR1cm4gZm9ybS53aWRnZXRzWzBdLmtleSE7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmZvcm1DaGlsZHJlbj8uZm9yRWFjaCgoY29tcDogU21hcnRmb3JtQ29tcG9uZW50KSA9PiBjb21wLnN1Ym1pdEZvcm0oKSk7XHJcblxyXG4gICAgbGV0IHVwZGF0ZWRPcmRlcmVkQ29sdW1ucyA9IHVwZGF0ZWRLZXlPcmRlciEubWFwKCh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLm9yZGVyZWRDb2x1bW5zQXNPYmplY3RbdmFsdWVdO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdXBkYXRlZE9yZGVyZWRDb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtYXBPcmRlcmVkQ29sdW1uc1RvT2JqZWN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy52aWV3Py5vcmRlcmVkQ29sdW1uTmFtZXMubWFwKCh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHRoaXMub3JkZXJlZENvbHVtbnNBc09iamVjdFtpbmRleF0gPSB2YWx1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRBbHdheXNTaG93Q29sdW1ucygpOiB2b2lkIHtcclxuICAgIHRoaXMudmlldz8uZGVzY3JpcHRvcj8uY29sdW1ucy5mb3JFYWNoKChjb2w6IEdyaWRDb2x1bW5NZXRhKSA9PiB7XHJcbiAgICAgIGlmIChjb2wuYWx3YXlzU2hvdykge1xyXG4gICAgICAgIHRoaXMuYWx3YXlzU2hvd0NvbHVtbnMucHVzaChjb2wucHJvcGVydHlOYW1lKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc0Fsd2F5c1Nob3coY29sOiBTbWFydEZvcm0pIHtcclxuICAgIGxldCBrZXkgPSBjb2wud2lkZ2V0c1swXS5rZXkhO1xyXG5cclxuICAgIGlmICh0aGlzLmFsd2F5c1Nob3dDb2x1bW5zLmluY2x1ZGVzKHRoaXMub3JkZXJlZENvbHVtbnNBc09iamVjdFtrZXldKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImVkaXQtY29sdW1ucy1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1saXN0XCIgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tbWV0YS1yb3dcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGZvcm1zXCIgY2RrRHJhZyBjZGtEcmFnTG9ja0F4aXM9XCJ5XCI+XHJcbiAgICAgIDxzbWFydC1pY29uIGNvbG9yPVwicHJpbWFyeVwiIGljb249XCJkcmFnX2hhbmRsZVwiPjwvc21hcnQtaWNvbj5cclxuICAgICAgPHNtYXJ0Zm9ybSBjbGFzcz1cImZvcm1cIiAjZm9ybXMgW3NtYXJ0Rm9ybV09XCJjb2xcIj48L3NtYXJ0Zm9ybT5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwiaXNBbHdheXNTaG93KGNvbCkgJiYgKHZpZXc/Lm9yZGVyZWRDb2x1bW5OYW1lcykhLmxlbmd0aCA+IDFcIlxyXG4gICAgICAgIChjbGljayk9XCJyZW1vdmVDb2x1bW4oY29sKVwiXHJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxtYXQtaWNvbj5kZWxldGVfb3V0bGluZTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgYXBwU3RpY2t5TWVudSBjbGFzcz1cImJ1dHRvbi10b29sYmFyXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiYWRkRGlzYWJsZWRcIiAoY2xpY2spPVwiYWRkQ29sdW1uKClcIj5cclxuICAgICAgPG1hdC1pY29uPmFkZDwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImRpc2FibGVTYXZlXCIgKGNsaWNrKT1cInN1Ym1pdCgpXCI+XHJcbiAgICAgIE1lbnTDqXNcclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -444,17 +444,11 @@ export class SmartGridComponent {
|
|
|
444
444
|
uuid: this.uuid,
|
|
445
445
|
identifier: this.smartGrid.gridIdentifier,
|
|
446
446
|
view: this.service.gridModel.view,
|
|
447
|
+
service: this.service,
|
|
447
448
|
},
|
|
448
449
|
},
|
|
449
450
|
};
|
|
450
|
-
|
|
451
|
-
dialogRef
|
|
452
|
-
.afterClosed()
|
|
453
|
-
.pipe(takeUntil(this._destroy$))
|
|
454
|
-
.subscribe((result) => {
|
|
455
|
-
this.service.gridModelChanged.next();
|
|
456
|
-
dialogRef.close();
|
|
457
|
-
});
|
|
451
|
+
this.dialog.open(TableLayoutDefinerComponent, { data: dialogData });
|
|
458
452
|
}
|
|
459
453
|
}
|
|
460
454
|
SmartGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridComponent, deps: [{ token: i1.SmartGridService }, { token: i2.ComponentFactoryService }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -472,4 +466,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
472
466
|
type: ViewChild,
|
|
473
467
|
args: ['table', { read: ViewContainerRef }]
|
|
474
468
|
}] } });
|
|
475
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1ncmlkL3NtYXJ0LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9zbWFydC1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssRUFJTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxVQUFVLEVBQ1Ysb0JBQW9CLEVBRXBCLDRCQUE0QixFQUU1QiwyQkFBMkIsRUFDM0IsZUFBZSxFQUNmLGNBQWMsRUFDZCxtQkFBbUIsR0FDcEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLGlCQUFpQixHQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUcvRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7OztBQVduRSxNQUFNLE9BQU8sa0JBQWtCO0lBa0M3QixZQUNVLE9BQXlCLEVBQ3pCLFNBQWtDLEVBQ2xDLE1BQWlCO1FBRmpCLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQ3pCLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBQ2xDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFwQ1Ysb0JBQWUsR0FBVyxFQUFFLENBQUM7UUFDN0IsMkJBQXNCLEdBQWEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU1RCxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHeEMsUUFBRyxHQUFZLEtBQUssQ0FBQztRQWtCOUIsb0JBQWUsR0FBYSxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFFeEQscUJBQWdCLEdBQWlCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFL0Msd0JBQW1CLEdBQXFCLElBQUksR0FBRyxFQUFFLENBQUM7UUFFbEQsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBQ3ZDLGNBQVMsR0FBWSxJQUFJLENBQUM7UUFPeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNDLDhEQUE4RDtZQUM5RCxJQUFJLENBQUMsU0FBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUNwRDtRQUNELElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQztTQUMxQztRQUNELElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM3RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNaLG1CQUFtQjtZQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBVSxDQUFDLFNBQVMsQ0FBQztZQUNuRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDZjtRQUVELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM1QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7UUFDRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVM7WUFBRSxNQUFNLElBQUksS0FBSyxFQUFFLENBQUM7UUFDbEQsT0FBTyxJQUFJLENBQUMsVUFBVyxDQUFDLFNBQVUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLE9BQU87UUFDbEIsbURBQW1EO1FBQ25ELE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxLQUFLLENBQUMsTUFBTTtRQUNsQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztRQUM1QyxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQztZQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUMzRCxJQUFJLFNBQVMsQ0FBQyxlQUFlLElBQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNyRSxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUM7YUFDbEQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7YUFDcEQ7WUFDRCxJQUFJLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLFNBQVUsQ0FBQyxlQUFlLEdBQUcsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDO2FBQ2hGO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztTQUN2RDtRQUNELElBQUksSUFBSSxDQUFDLFNBQVUsQ0FBQyxTQUFTLEtBQUssY0FBYyxDQUFDLEtBQUssRUFBRTtZQUN0RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEI7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFVLENBQUMsU0FBUyxLQUFLLGNBQWMsQ0FBQyxVQUFVLEVBQUU7WUFDbEUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7U0FDakM7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFVLENBQUMsU0FBUyxLQUFLLGNBQWMsQ0FBQyxJQUFJLEVBQUU7WUFDNUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXO1FBQ3ZCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFVLENBQUMsU0FBVSxDQUFDLElBQUksQ0FBQyxJQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDckUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3BCLElBQUksY0FBYyxHQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsU0FBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFvQixFQUFFLEVBQUU7Z0JBQy9FLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsU0FBUyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3hEO1FBRUQsSUFBSSxTQUFTLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxTQUFVLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRTtZQUMxQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO1NBQ25EO2FBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRTtZQUNsRSxTQUFTO2dCQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxLQUFLLGlCQUFpQixDQUFDLFFBQVE7b0JBQ2pGLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUztvQkFDMUIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7U0FDakM7YUFBTTtZQUNMLFNBQVMsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBVSxDQUFDLFNBQVMsS0FBSyxjQUFjLENBQUMsS0FBSyxFQUFFO1lBQ3RELElBQUksV0FBVyxHQUFpQztnQkFDOUMsR0FBRyxJQUFJLENBQUMsU0FBVSxDQUFDLFdBQVc7Z0JBQzlCLFNBQVMsRUFBRSxRQUFRO2dCQUNuQixTQUFTO2dCQUNULHVCQUF1QixFQUFFLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRztnQkFDdEQsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFVLENBQUMsVUFBVTtnQkFDdEMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVUsQ0FBQyxpQkFBaUI7Z0JBQ3BELElBQUksRUFBRSwyQkFBMkIsQ0FBQyxNQUFNO2dCQUN4QyxRQUFRLEVBQUUsSUFBSTthQUNmLENBQUM7WUFFRixJQUNFLElBQUksQ0FBQyxTQUFVLENBQUMsZUFBZTtnQkFDL0IsSUFBSSxDQUFDLFNBQVUsQ0FBQyx5QkFBeUI7Z0JBQ3pDLElBQUksQ0FBQyxTQUFVLENBQUMsWUFBWTtnQkFDNUIsSUFBSSxDQUFDLFNBQVUsQ0FBQyxrQkFBa0IsRUFDbEM7Z0JBQ0EsV0FBVyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkQsV0FBVyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMxRDtZQUVELDZCQUE2QjtZQUM3QixpQ0FBaUM7WUFDakMsc0RBQXNEO1lBQ3RELElBQUk7WUFFSixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFO2dCQUNqQyxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDOUQ7WUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixFQUFFO2dCQUMxQyxXQUFXLENBQUMsc0JBQXNCLEdBQUcsWUFBWSxDQUFDO2FBQ25EO1lBRUQsSUFBSSxXQUFXLENBQUMsYUFBYSxFQUFFO2dCQUM3QixXQUFXLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzthQUNoQztZQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFRLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDO1lBRTlFLElBQ0UsQ0FBQyxXQUFXLENBQUMsU0FBUztnQkFDdEIsQ0FBQyxXQUFXLENBQUMsaUJBQWlCO2dCQUM5QixhQUFhLEtBQUssaUJBQWlCLENBQUMsSUFBSSxFQUN4QztnQkFDQSxNQUFNLFVBQVUsR0FBRyxhQUFhLEtBQUssaUJBQWlCLENBQUMsUUFBUSxDQUFDO2dCQUVoRSxXQUFXLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2dCQUVyQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJO3FCQUM1QyxJQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztxQkFDcEQsR0FBRyxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUcsQ0FBQyxDQUFDO2dCQUUxQyxXQUFXLENBQUMsU0FBUyxHQUFHLElBQUksY0FBYyxDQUFTLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUM3RTtZQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQU0sV0FBVyxDQUFDLENBQUM7WUFFbkQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ25FO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBRXpCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNwQixPQUFPO2lCQUNSO2dCQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDckQsSUFBSSxDQUFDLFVBQVcsRUFDaEIsbUJBQW1CLEVBQ25CLElBQUksR0FBRyxDQUFjLENBQUMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FDeEQsQ0FBQztnQkFFRixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFNBQVM7cUJBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztxQkFDMUQsU0FBUyxDQUFDLENBQUMsTUFBd0IsRUFBRSxFQUFFO29CQUN0QyxNQUFNLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUV2RCxRQUFRLE1BQU0sQ0FBQyxLQUFLLEVBQUU7d0JBQ3BCLEtBQUssU0FBUzs0QkFDWixNQUFNLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUM7NEJBQ25DLE1BQU07d0JBQ1IsS0FBSyxlQUFlLENBQUMsR0FBRzs0QkFDdEIsTUFBTSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDOzRCQUNwQyxNQUFNO3dCQUNSLEtBQUssZUFBZSxDQUFDLElBQUk7NEJBQ3ZCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDOzRCQUN6QixNQUFNO3FCQUNUO29CQUVELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFVLENBQUMsU0FBUyxDQUFDLElBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUMzRCxDQUFDLGdCQUF5QyxFQUFFLEVBQUUsQ0FDNUMsZ0JBQWdCLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQyxZQUFZLENBQ3hELENBQUM7b0JBQ0YsSUFBSSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO3dCQUMzQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDeEUsSUFBSSxDQUFDLFNBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUMvRDt5QkFBTSxJQUFJLE1BQU0sRUFBRTt3QkFDakIsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO3FCQUM3Qjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsU0FBVSxDQUFDLFNBQVMsQ0FBQyxJQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQzs0QkFDL0MsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLOzRCQUNuQixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVk7eUJBQ2xDLENBQUMsQ0FBQztxQkFDSjtvQkFFRCxJQUFJLGNBQWMsR0FBbUI7d0JBQ25DLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBVSxDQUFDLFNBQVMsQ0FBQyxJQUFLLENBQUMsV0FBVzt3QkFDeEQsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFNBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSyxDQUFDLGtCQUFrQjtxQkFDdkUsQ0FBQztvQkFDRixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDLENBQUMsQ0FBQztnQkFFTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsT0FBTztxQkFDMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3FCQUMxRCxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEMsQ0FBQyxDQUFDLENBQUM7YUFDTjtTQUNGO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFhLElBQVEsQ0FBQztJQUU3QixLQUFLLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ3ZDLElBQUksSUFBSSxDQUFDLFNBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUN2QyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hELElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBVSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMzRDtTQUNGO1FBQ0QsT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFVLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVUsQ0FBQyxTQUFVLENBQUMsSUFBSSxDQUFDLElBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUNoRixPQUFPO2dCQUNMLEtBQUssRUFBRSxFQUFFO2dCQUNULGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBVSxDQUFDLGVBQWU7Z0JBQ2hELGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBVSxDQUFDLHdCQUF3QjtnQkFDekQsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBVSxDQUFDLG1CQUFtQjtnQkFDcEQsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFVLENBQUMsNEJBQTRCO2dCQUN2RCxJQUFJLEVBQUUsSUFBSTthQUNYLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE9BQU87SUFDVCxDQUFDO0lBRU8sS0FBSyxDQUFDLGVBQWU7UUFDM0IsSUFBSSxNQUFNLEdBQXVCLEVBQUUsQ0FBQztRQUVwQyxJQUFJLElBQUksQ0FBQyxTQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLElBQUksQ0FBQyxTQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFnQixFQUFFLEVBQUU7Z0JBQ2pFLElBQUksWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUN4QyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFLLENBQUMsQ0FDakUsQ0FBQztnQkFFRixJQUFJLFlBQVksRUFBRTtvQkFDaEIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFFBQWEsRUFBRSxFQUFFO3dCQUN2QyxJQUFJLFVBQVUsR0FDWixNQUFNLElBQUksQ0FBQyxTQUFVLENBQUMseUJBQXlCLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQ2hGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztvQkFDM0QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztpQkFDSDtZQUNILENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDtRQUVELE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixJQUFJLENBQUMsU0FBVSxDQUFDLFNBQVMsQ0FBQyxJQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxZQUFvQixFQUFFLEVBQUU7WUFDcEYsSUFBSSxVQUFVLEdBQVEsSUFBSSxDQUFDLFNBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSyxDQUFDLFVBQVcsQ0FBQyxPQUFRLENBQUMsSUFBSSxDQUM3RSxDQUFDLGFBQTZCLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEtBQUssWUFBWSxDQUMvRSxDQUFDO1lBQ0YsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsU0FBVSxDQUFDLFdBQVcsRUFBRSx1QkFBdUIsRUFBRSxJQUFJLENBQ2hGLENBQUMsTUFBd0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksS0FBSyxZQUFZLENBQ25FLENBQUM7WUFDRixJQUFJLFVBQVUsRUFBRTtnQkFDZCxJQUFJLDJCQUEyQixHQUFHLElBQUksQ0FBQyxTQUFVLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUNqRixDQUFDLGdCQUF5QyxFQUFFLEVBQUUsQ0FDNUMsZ0JBQWdCLENBQUMsWUFBWSxLQUFLLFVBQVUsQ0FBQyxZQUFZLENBQzVELENBQUM7Z0JBQ0YsSUFBSSxLQUFLLENBQUM7Z0JBQ1YsSUFBSSxXQUFXLENBQUM7Z0JBQ2hCLElBQUksMkJBQTJCLEVBQUU7b0JBQy9CLEtBQUs7d0JBQ0gsMkJBQTJCLENBQUMsS0FBSyxLQUFLLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxHQUFHOzRCQUN6RSxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUc7NEJBQ3JCLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO29CQUMzQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDdkQsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUM5RCxDQUFDLE1BQStCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEtBQUssVUFBVSxDQUFDLFlBQVksQ0FDckYsQ0FBQzt3QkFDRixXQUFXLEVBQUUsQ0FBQztxQkFDZjtpQkFDRjtnQkFDRCxNQUFNLFlBQVksR0FBRyxpQkFBaUIsRUFBRSxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQztnQkFDbEUsSUFBSSxLQUFhLENBQUM7Z0JBRWxCLElBQUksSUFBSSxDQUFDLFNBQVUsQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDcEMsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7aUJBQy9FO3FCQUFNO29CQUNMLEtBQUssR0FBRyxZQUFZLENBQUM7aUJBQ3RCO2dCQUVELElBQUksVUFBVSxHQUFHLGlCQUFpQixFQUFFLFVBQVUsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDZixJQUFJLFVBQVUsQ0FBQyxTQUFTLEtBQUssMEJBQTBCLEVBQUU7d0JBQ3ZELFVBQVUsR0FBRzs0QkFDWCxJQUFJLEVBQUUsNEJBQTRCLENBQUMsUUFBUTs0QkFDM0MsVUFBVSxFQUFFLGlCQUFpQjt5QkFDOUIsQ0FBQztxQkFDSDt5QkFBTSxJQUFJLFVBQVUsQ0FBQyxTQUFTLEtBQUssc0JBQXNCLEVBQUU7d0JBQzFELFVBQVUsR0FBRzs0QkFDWCxJQUFJLEVBQUUsNEJBQTRCLENBQUMsUUFBUTs0QkFDM0MsVUFBVSxFQUFFLFlBQVk7eUJBQ3pCLENBQUM7cUJBQ0g7aUJBQ0Y7Z0JBRUQsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixHQUFHLGlCQUFpQjtvQkFDcEIsS0FBSyxFQUFFLEtBQUs7b0JBQ1osWUFBWSxFQUFFLE9BQU8sR0FBRyxVQUFVLENBQUMsWUFBWTtvQkFDL0MsS0FBSztvQkFDTCxXQUFXO29CQUNYLFVBQVU7aUJBQ1gsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVUsQ0FBQyxXQUFXLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxDQUMzRSxDQUFDLFdBQTZCLEVBQUUsRUFBRSxDQUNoQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFvQixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FDN0YsQ0FBQztRQUVGLElBQUksVUFBVSxFQUFFO1lBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1NBQzVCO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBVSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFNBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQW9CLEVBQUUsRUFBRTtnQkFDckUsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixLQUFLLEVBQUUsRUFBRTtvQkFDVCxZQUFZLEVBQUUsZ0JBQWdCO29CQUM5QixPQUFPLEVBQUU7d0JBQ1A7NEJBQ0UsSUFBSSxFQUFFLG9CQUFvQixDQUFDLE1BQU07NEJBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7NEJBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUM7NEJBQ3BELElBQUksRUFBRTtnQ0FDSjtvQ0FDRSxJQUFJLEVBQUUsWUFBWTtpQ0FDbkI7NkJBQ0Y7NEJBQ0QsS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLFlBQVksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQ3pCLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0NBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUM7NEJBQ3BDLENBQUMsQ0FBQzt5QkFDTDtxQkFDRjtpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUF3QixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQyxFQUFFO1lBQ2pGLElBQUksSUFBSSxDQUFDLFNBQVUsQ0FBQyxPQUFPLEVBQUUsZUFBZSxLQUFLLGdCQUFnQixDQUFDLFVBQVUsRUFBRTtnQkFDNUUsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixLQUFLLEVBQUUsRUFBRTtvQkFDVCxZQUFZLEVBQUUsU0FBUztvQkFDdkIsT0FBTyxFQUFFO3dCQUNQOzRCQUNFLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxJQUFJOzRCQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOzRCQUNqQyxJQUFJLEVBQUUsV0FBVzs0QkFDakIsMkJBQTJCLEVBQUUsU0FBUzs0QkFDdEMsVUFBVSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOzRCQUM1QyxJQUFJLEVBQUUsRUFBRTt5QkFDVDtxQkFDRjtvQkFDRCxVQUFVLEVBQUUsS0FBSztpQkFDbEIsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQWdCO1FBQ3hDLElBQUksTUFBTSxHQUFHLEtBQUssRUFBRSxRQUFRLEdBQUcsS0FBSyxFQUFFLFNBQVMsQ0FBQztRQUNoRCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQzNCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ3hCLElBQUksQ0FBQyxTQUFVLENBQUMsU0FBUyxDQUFDLFFBQVMsRUFDbkMsSUFBSSxDQUFDLFNBQVUsQ0FBQyxjQUFjLEVBQzlCLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFDakIsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUNqQixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBVyxFQUFFLEdBQVEsRUFBRSxRQUFhO1FBQ3hELElBQUksU0FBbUIsQ0FBQztRQUV4QixJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsUUFBUSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEY7UUFFRCxTQUFTLEdBQUcsRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFDO1FBQzVCLFNBQVMsQ0FBQyxNQUFNLEdBQUc7WUFDakIsR0FBRyxRQUFRLENBQUMsTUFBTTtZQUNsQixLQUFLLEVBQUUsR0FBRztTQUNYLENBQUM7UUFFRixJQUFJLGFBQWEsR0FBUTtZQUN2QixZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVUsQ0FBQyxZQUFZO1lBQzFDLFFBQVEsRUFBRSxTQUFTO1NBQ3BCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxTQUFVLENBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFO1lBQ2xELGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBVSxDQUFDLE9BQVEsQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMvRTtRQUVELElBQUksQ0FBQyxTQUFVLENBQUMsZUFBZSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDOUQsSUFBSSxDQUFDLFNBQVUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNqRCxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVUsQ0FBQyxjQUFjO1lBQ3hDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRTtTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFhO1FBQ3BDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxPQUFnQjtRQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDTSxhQUFhLENBQUMsT0FBZ0I7UUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8sYUFBYSxDQUFDLE9BQWdCO1FBQ3BDLElBQUksZ0JBQXNDLENBQUM7UUFDM0MsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRTtZQUM3QyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNwRixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUU3RSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDckMsQ0FBQyxRQUFrQixFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLG9CQUFvQixDQUMvRCxDQUFDO2dCQUNGLElBQUksZ0JBQWdCLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO29CQUM1QyxPQUFPO2lCQUNSO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQVU7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFFdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQy9GLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBVSxFQUFFLEdBQUksQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxTQUFVLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBQ08sS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFpQjtRQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsU0FBVSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1RSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLFVBQVUsR0FBb0I7WUFDaEMsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSx3QkFBd0I7YUFDaEM7WUFDRCxJQUFJLEVBQUUsRUFBRTtZQUNSLGVBQWUsRUFBRSwyQkFBMkI7WUFDNUMscUJBQXFCLEVBQUU7Z0JBQ3JCLE1BQU0sRUFBRTtvQkFDTixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFVLENBQUMsY0FBYztvQkFDMUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUk7aUJBQ2xDO2FBQ0Y7U0FDRixDQUFDO1FBQ0YsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUVwRixTQUFTO2FBQ04sV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDL0IsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzsrR0EzaUJVLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1HQUZsQixDQUFDLGdCQUFnQixDQUFDLDBHQVlELGdCQUFnQixrREMxRDlDLG0wREF1REE7MkZEUGEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLFlBQVksYUFHWCxDQUFDLGdCQUFnQixDQUFDO3FLQU9wQixTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRzBDLFVBQVU7c0JBQXpELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7XHJcbiAgU21hcnRUYWJsZSxcclxuICBTbWFydFRhYmxlQnV0dG9uVHlwZSxcclxuICBTbWFydFRhYmxlSGVhZGVyLFxyXG4gIFNtYXJ0VGFibGVIZWFkZXJQcm9wZXJ0eVR5cGUsXHJcbiAgU21hcnRUYWJsZUludGVyZmFjZSxcclxuICBTbWFydFRhYmxlSW50ZXJmYWNlVHlwZUVudW0sXHJcbiAgU21hcnRUYWJsZU9yZGVyLFxyXG4gIFNtYXJ0VGFibGVUeXBlLFxyXG4gIFNtYXJ0dGFibGVDb21wb25lbnQsXHJcbn0gZnJvbSAnLi4vc21hcnQtdGFibGUvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBHcmlkQ29sdW1uTWV0YSxcclxuICBHcmlkUm93LFxyXG4gIEdyaWRTZWxlY3Rpb25Nb2RlLFxyXG4gIEdyaWRTZWxlY3Rpb25UeXBlLFxyXG4gIEdyaWRVcGRhdGVEYXRhLFxyXG59IGZyb20gJy4vYXBpL2dyaWQtYXBpJztcclxuaW1wb3J0IHsgR3JpZFVpQWN0aW9uVHlwZSwgU21hcnRHcmlkLCBTbWFydExheW91dERlZiB9IGZyb20gJy4vbW9kZWxzL21vZGVsJztcclxuaW1wb3J0IHsgU21hcnRHcmlkU2VydmljZSB9IGZyb20gJy4vc21hcnQtZ3JpZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGFibGVMYXlvdXREZWZpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWxheW91dC1kZWZpbmVyL3RhYmxlLWxheW91dC1kZWZpbmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV4cGFuZGFibGVTZWN0aW9uIH0gZnJvbSAnLi4vc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uL3Byb2plY3RzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnQtZmFjdG9yeS1zZXJ2aWNlL3Byb2plY3RzJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbk9yZGVyQnkgfSBmcm9tICcuLi9zbWFydC1maWx0ZXIvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTbWFydERpYWxvZ0RhdGEgfSBmcm9tICcuLi9zbWFydC1kaWFsb2cvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbiB9IGZyb20gJy4uL3ZpZXctY29udGV4dC9hcGknO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzbWFydC1ncmlkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtZ3JpZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtZ3JpZC5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbU21hcnRHcmlkU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydEdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0UGFnZVNpemU6IG51bWJlciA9IDEwO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gPSBbNSwgMTAsIDI1LCA1MF07XHJcblxyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBASW5wdXQoKSBzbWFydEdyaWQ/OiBTbWFydEdyaWQ7XHJcbiAgQElucHV0KCkgdXVpZCE6IHN0cmluZztcclxuICBASW5wdXQoKSBkZXY6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gdGFibGVcclxuICBAVmlld0NoaWxkKCd0YWJsZScsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSB2Y1JlZlRhYmxlPzogVmlld0NvbnRhaW5lclJlZjtcclxuICBjb21wb25lbnRSZWZUYWJsZSE6IENvbXBvbmVudFJlZjxTbWFydHRhYmxlQ29tcG9uZW50PjtcclxuICBzbWFydFRhYmxlITogU21hcnRUYWJsZTxHcmlkUm93PjtcclxuXHJcbiAgLy8gZXhwYW5kYWJsZVxyXG4gIC8vIGdyaWREYXRhXHJcbiAgZXhwYW5kYWJsZVNlY3Rpb25zPzogRXhwYW5kYWJsZVNlY3Rpb248YW55PltdO1xyXG5cclxuICBwYWdlRXZlbnQ/OiBQYWdlRXZlbnQ7XHJcbiAgZGF0YXNvdXJjZT86IG51bGw7XHJcbiAgcGFnZVNpemU/OiBudW1iZXI7XHJcbiAgbGVuZ3RoPzogbnVtYmVyO1xyXG4gIHZhbHVlczogYW55O1xyXG4gIGdyaWRUYWJsZSE6IFNtYXJ0VGFibGU8YW55PjtcclxuXHJcbiAgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IHRoaXMuZGVmYXVsdFBhZ2VTaXplT3B0aW9ucztcclxuXHJcbiAgc2VsZWN0aW9uQ2hhbmdlczogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgdWlBY3Rpb25EZXNjcmlwdG9yczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgYWZ0ZXJWaWV3SW5pdEV4ZWN1dGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNCbG9ja2VkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNlcnZpY2U6IFNtYXJ0R3JpZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNmU2VydmljZTogQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nXHJcbiAgKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyBjYWxsZWQgYWZ0ZXIgZXZlcnkgc2VydmljZSBjYWxsIChsb2FkLCBzYXZlLCByZWZyZXNoLCBldGMuKVxyXG4gICAgICB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsID0gdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbDtcclxuICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3NtYXJ0R3JpZCddKSB7XHJcbiAgICAgIHRoaXMuc21hcnRHcmlkID0gY2hhbmdlc1snc21hcnRHcmlkJ10uY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGNoYW5nZXNbJ3V1aWQnXSkge1xyXG4gICAgICB0aGlzLnV1aWQgPSBjaGFuZ2VzWyd1dWlkJ10uY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYWZ0ZXJWaWV3SW5pdEV4ZWN1dGVkICYmIHRoaXMudXVpZCAmJiB0aGlzLnNtYXJ0R3JpZCkge1xyXG4gICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRldikge1xyXG4gICAgICAvLyBmb3IgZGV2IHB1cnBvc2VzXHJcbiAgICAgIHRoaXMuc2VydmljZS5ncmlkTW9kZWwgPSB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsO1xyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnV1aWQgJiYgdGhpcy5zbWFydEdyaWQgJiYgIXRoaXMuZGV2KSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hZnRlclZpZXdJbml0RXhlY3V0ZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB0aGUgc2VsZWN0ZWQgcm93cyBvZiB0aGUgdGFibGVcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0U2VsZWN0ZWRSb3dzKCk6IFNlbGVjdGlvbk1vZGVsPEdyaWRSb3c+IHtcclxuICAgIGlmICghdGhpcy5zbWFydFRhYmxlLnNlbGVjdGlvbikgdGhyb3cgbmV3IEVycm9yKCk7XHJcbiAgICByZXR1cm4gdGhpcy5zbWFydFRhYmxlIS5zZWxlY3Rpb24hO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2Qgc2VuZHMgYSBHRVQgcmVxdWVzdCB0byB0aGUgZ2VuZXJpYyBHcmlkQVBJIGFuZCByZWZyZXNoZXMgdGhlIHByZXNlbnRlZFxyXG4gICAqIGdyaWQgd2l0aCB0aGUgbmV3ZXN0IG9uZS5cclxuICAgKi9cclxuICBwdWJsaWMgYXN5bmMgcmVmcmVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vIHdpbGwgY2F1c2UgdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbENoYW5nZWQgdG8gZmlyZVxyXG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLmxvYWQodGhpcy51dWlkLCB0aGlzLnNtYXJ0R3JpZCEuZ3JpZElkZW50aWZpZXIpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyByZW5kZXIoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBncmlkTW9kZWwgPSB0aGlzLnNtYXJ0R3JpZD8uZ3JpZE1vZGVsO1xyXG4gICAgaWYgKGdyaWRNb2RlbCkge1xyXG4gICAgICB0aGlzLmxlbmd0aCA9IGdyaWRNb2RlbC50b3RhbFJvd0NvdW50O1xyXG4gICAgICB0aGlzLnBhZ2VTaXplID0gZ3JpZE1vZGVsLnBhZ2VTaXplID8/IHRoaXMuZGVmYXVsdFBhZ2VTaXplO1xyXG4gICAgICBpZiAoZ3JpZE1vZGVsLnBhZ2VTaXplT3B0aW9ucyAmJiBncmlkTW9kZWwucGFnZVNpemVPcHRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucyA9IGdyaWRNb2RlbC5wYWdlU2l6ZU9wdGlvbnM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLmRlZmF1bHRQYWdlU2l6ZU9wdGlvbnM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGdyaWRNb2RlbD8udmlldz8uZGVzY3JpcHRvcj8uc2hvd0VkaXRDb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zbWFydEdyaWQhLnNob3dFZGl0Q29sdW1ucyA9IGdyaWRNb2RlbD8udmlldz8uZGVzY3JpcHRvcj8uc2hvd0VkaXRDb2x1bW5zO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdHcmlkTW9kZWwgaXMgdW5kZWZpbmVkIGluIGNvbXBvbmVudCEnKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNtYXJ0R3JpZCEubGF5b3V0RGVmID09PSBTbWFydExheW91dERlZi5UQUJMRSkge1xyXG4gICAgICB0aGlzLnJlbmRlclRhYmxlKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc21hcnRHcmlkIS5sYXlvdXREZWYgPT09IFNtYXJ0TGF5b3V0RGVmLkVYUEFOREFCTEUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJFeHBhbmRhYmxlU2VjdGlvbnMoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydEdyaWQhLmxheW91dERlZiA9PT0gU21hcnRMYXlvdXREZWYuQ0FSRCkge1xyXG4gICAgICB0aGlzLnJlbmRlckNhcmRzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzQmxvY2tlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyByZW5kZXJUYWJsZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCB0YWJsZVJvdyA9IHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwhLnBhZ2Uucm93cyEubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoIXRhYmxlUm93Lmxlbmd0aCkge1xyXG4gICAgICBsZXQgcGxhY2VIb2xkZXJSb3c6IGFueSA9IHt9O1xyXG4gICAgICB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXc/LmRlc2NyaXB0b3I/LmNvbHVtbnMubWFwKChtZXRhOiBHcmlkQ29sdW1uTWV0YSkgPT4ge1xyXG4gICAgICAgIHBsYWNlSG9sZGVyUm93W21ldGEucHJvcGVydHlOYW1lXSA9IHVuZGVmaW5lZDtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwucGFnZS5yb3dzID0gW3BsYWNlSG9sZGVyUm93XTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdGFibGVUeXBlO1xyXG4gICAgaWYgKHRoaXMuc21hcnRHcmlkIS50YWJsZUNvbmZpZz8udGFibGVUeXBlKSB7XHJcbiAgICAgIHRhYmxlVHlwZSA9IHRoaXMuc21hcnRHcmlkIS50YWJsZUNvbmZpZy50YWJsZVR5cGU7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VydmljZS5ncmlkTW9kZWw/LnZpZXc/LmRlc2NyaXB0b3I/LnNlbGVjdGlvblR5cGUpIHtcclxuICAgICAgdGFibGVUeXBlID1cclxuICAgICAgICB0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsLnZpZXcuZGVzY3JpcHRvci5zZWxlY3Rpb25UeXBlID09PSBHcmlkU2VsZWN0aW9uVHlwZS5DaGVja2JveFxyXG4gICAgICAgICAgPyBTbWFydFRhYmxlVHlwZS5DSEVDS19CT1hcclxuICAgICAgICAgIDogU21hcnRUYWJsZVR5cGUuUk9XX1NFTEVDVDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRhYmxlVHlwZSA9IFNtYXJ0VGFibGVUeXBlLklOSEVSSVRFRDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zbWFydEdyaWQhLmxheW91dERlZiA9PT0gU21hcnRMYXlvdXREZWYuVEFCTEUpIHtcclxuICAgICAgbGV0IHRhYmxlQ29uZmlnOiBTbWFydFRhYmxlSW50ZXJmYWNlPEdyaWRSb3c+ID0ge1xyXG4gICAgICAgIC4uLnRoaXMuc21hcnRHcmlkIS50YWJsZUNvbmZpZyxcclxuICAgICAgICB0YWJsZVJvd3M6IHRhYmxlUm93LFxyXG4gICAgICAgIHRhYmxlVHlwZSxcclxuICAgICAgICBjdXN0b21TbWFydFRhYmxlSGVhZGVyczogYXdhaXQgdGhpcy5jb25zdHJ1Y3RIZWFkZXIoKSEsXHJcbiAgICAgICAgZXhwYW5kYWJsZTogdGhpcy5zbWFydEdyaWQhLmV4cGFuZGFibGUsXHJcbiAgICAgICAgZXhwYW5kZWRDb21wb25lbnQ6IHRoaXMuc21hcnRHcmlkIS5leHBhbmRlZENvbXBvbmVudCxcclxuICAgICAgICB0eXBlOiBTbWFydFRhYmxlSW50ZXJmYWNlVHlwZUVudW0uTk9STUFMLFxyXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc21hcnRHcmlkIS51aUFjdGlvblNlcnZpY2UgJiZcclxuICAgICAgICB0aGlzLnNtYXJ0R3JpZCEudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZSAmJlxyXG4gICAgICAgIHRoaXMuc21hcnRHcmlkIS5zZXJ2aWNlVG9Vc2UgJiZcclxuICAgICAgICB0aGlzLnNtYXJ0R3JpZCEudmlld0NvbnRleHRTZXJ2aWNlXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRhYmxlQ29uZmlnLm9uU2VsZWN0aW9uID0gdGhpcy5vblNlbGVjdC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRhYmxlQ29uZmlnLm9uQWxsU2VsZWN0aW9uID0gdGhpcy5vblNlbGVjdEFsbC5iaW5kKHRoaXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBQcmVwYXJlZCBmb3Igc2ltcGxlIGNsaWNrc1xyXG4gICAgICAvLyBpZiAoIXRhYmxlQ29uZmlnLm9uUm93Q2xpY2spIHtcclxuICAgICAgLy8gICB0YWJsZUNvbmZpZy5vblJvd0NsaWNrID0gdGhpcy5vbkNsaWNrLmJpbmQodGhpcyk7XHJcbiAgICAgIC8vIH1cclxuXHJcbiAgICAgIGlmICghdGFibGVDb25maWcub25Sb3dEb3VibGVDbGljaykge1xyXG4gICAgICAgIHRhYmxlQ29uZmlnLm9uUm93RG91YmxlQ2xpY2sgPSB0aGlzLm9uRG91YmxlQ2xpY2suYmluZCh0aGlzKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF0YWJsZUNvbmZpZy5pc1Jvd0Rpc2FibGVkUHJvcGVydHlOYW1lKSB7XHJcbiAgICAgICAgdGFibGVDb25maWcuc2VsZWN0YWJsZVByb3BlcnR5TmFtZSA9ICdzZWxlY3RhYmxlJztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRhYmxlQ29uZmlnLmFzeW5jT25FeHBhbmQpIHtcclxuICAgICAgICB0YWJsZUNvbmZpZy5yb3dFeHBhbmRlciA9IHRoaXM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHNlbGVjdGlvbk1vZGUgPSB0aGlzLnNlcnZpY2UhLmdyaWRNb2RlbC52aWV3Py5kZXNjcmlwdG9yPy5zZWxlY3Rpb25Nb2RlO1xyXG5cclxuICAgICAgaWYgKFxyXG4gICAgICAgICF0YWJsZUNvbmZpZy5zZWxlY3Rpb24gJiZcclxuICAgICAgICAhdGFibGVDb25maWcuc2VsZWN0aW9uUHJvcGVydHkgJiZcclxuICAgICAgICBzZWxlY3Rpb25Nb2RlICE9PSBHcmlkU2VsZWN0aW9uTW9kZS5Ob25lXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBzZWxlY3Rpb25Nb2RlID09PSBHcmlkU2VsZWN0aW9uTW9kZS5NdWx0aXBsZTtcclxuXHJcbiAgICAgICAgdGFibGVDb25maWcuc2VsZWN0aW9uUHJvcGVydHkgPSAnaWQnO1xyXG5cclxuICAgICAgICBjb25zdCBzZWxlY3RlZElkcyA9IHRoaXMuc2VydmljZS5ncmlkTW9kZWwucGFnZVxyXG4gICAgICAgICAgLnJvd3MhLmZpbHRlcigoZ3JpZFJvdzogR3JpZFJvdykgPT4gZ3JpZFJvdy5zZWxlY3RlZClcclxuICAgICAgICAgIC5tYXAoKGdyaWRSb3c6IEdyaWRSb3cpID0+IGdyaWRSb3cuaWQhKTtcclxuXHJcbiAgICAgICAgdGFibGVDb25maWcuc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbk1vZGVsPHN0cmluZz4oaXNNdWx0aXBsZSwgc2VsZWN0ZWRJZHMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNtYXJ0VGFibGUgPSBuZXcgU21hcnRUYWJsZTxhbnk+KHRhYmxlQ29uZmlnKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZlRhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWZUYWJsZS5pbnN0YW5jZS51cGRhdGVTbWFydFRhYmxlKHRoaXMuc21hcnRUYWJsZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52Y1JlZlRhYmxlPy5jbGVhcigpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMudmNSZWZUYWJsZSkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZlRhYmxlID0gdGhpcy5jZlNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICAgICAgdGhpcy52Y1JlZlRhYmxlISxcclxuICAgICAgICAgIFNtYXJ0dGFibGVDb21wb25lbnQsXHJcbiAgICAgICAgICBuZXcgTWFwPHN0cmluZywgYW55PihbWydzbWFydFRhYmxlJywgdGhpcy5zbWFydFRhYmxlXV0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IHRoaXMuY29tcG9uZW50UmVmVGFibGUuaW5zdGFuY2Uuc29ydEV2ZW50XHJcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnRSZWZUYWJsZS5pbnN0YW5jZS5fZGVzdHJveSQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgoaGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiB7XHJcbiAgICAgICAgICAgIGhlYWRlci5wcm9wZXJ0eU5hbWUgPSBoZWFkZXIucHJvcGVydHlOYW1lLnN1YnN0cmluZyg1KTtcclxuXHJcbiAgICAgICAgICAgIHN3aXRjaCAoaGVhZGVyLm9yZGVyKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XHJcbiAgICAgICAgICAgICAgICBoZWFkZXIub3JkZXIgPSBTbWFydFRhYmxlT3JkZXIuQVNDO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSBTbWFydFRhYmxlT3JkZXIuQVNDOlxyXG4gICAgICAgICAgICAgICAgaGVhZGVyLm9yZGVyID0gU21hcnRUYWJsZU9yZGVyLkRFU0M7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIFNtYXJ0VGFibGVPcmRlci5ERVNDOlxyXG4gICAgICAgICAgICAgICAgaGVhZGVyLm9yZGVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXIgPSB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXchLm9yZGVyQnlMaXN0LmZpbmQoXHJcbiAgICAgICAgICAgICAgKGZpbHRlckV4cHJlc3Npb246IEZpbHRlckV4cHJlc3Npb25PcmRlckJ5KSA9PlxyXG4gICAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbi5wcm9wZXJ0eU5hbWUgPT09IGhlYWRlci5wcm9wZXJ0eU5hbWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGZpbHRlciAmJiAhaGVhZGVyLm9yZGVyKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC52aWV3Py5vcmRlckJ5TGlzdC5pbmRleE9mKGZpbHRlcik7XHJcbiAgICAgICAgICAgICAgdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC52aWV3Py5vcmRlckJ5TGlzdC5zcGxpY2UoaW5kZXghLCAxKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXIpIHtcclxuICAgICAgICAgICAgICBmaWx0ZXIub3JkZXIgPSBoZWFkZXIub3JkZXI7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC52aWV3IS5vcmRlckJ5TGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG9yZGVyOiBoZWFkZXIub3JkZXIsXHJcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IGhlYWRlci5wcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBncmlkVXBkYXRlRGF0YTogR3JpZFVwZGF0ZURhdGEgPSB7XHJcbiAgICAgICAgICAgICAgb3JkZXJCeUxpc3Q6IHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwudmlldyEub3JkZXJCeUxpc3QsXHJcbiAgICAgICAgICAgICAgb3JkZXJlZENvbHVtbk5hbWVzOiB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXchLm9yZGVyZWRDb2x1bW5OYW1lcyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlLnNvcnQodGhpcy5zbWFydEdyaWQhLCBncmlkVXBkYXRlRGF0YSk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWZUYWJsZS5pbnN0YW5jZS5zbWFydFRhYmxlLnNlbGVjdGlvbj8uY2hhbmdlZFxyXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50UmVmVGFibGUuaW5zdGFuY2UuX2Rlc3Ryb3kkKSlcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlcy5uZXh0KHJvdyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cGFuZChyb3dJZDogbnVtYmVyKTogYW55IHt9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBleHBhbmRBc3luYyhyb3dJbmRleDogbnVtYmVyKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGlmICh0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnBhZ2Uucm93cykge1xyXG4gICAgICBsZXQgcm93ID0gdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC5wYWdlLnJvd3Nbcm93SW5kZXhdO1xyXG4gICAgICBpZiAocm93ICYmIHJvdy5pZCkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNlcnZpY2UuZXhwYW5kKHRoaXMuc21hcnRHcmlkISwgcm93LmlkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VydmljZS5leHBhbmQodGhpcy5zbWFydEdyaWQhLCByb3dJbmRleC50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVuZGVyRXhwYW5kYWJsZVNlY3Rpb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5leHBhbmRhYmxlU2VjdGlvbnMgPSB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsIS5wYWdlLnJvd3MhLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICAgIGhlYWRlckNvbXBvbmVudDogdGhpcy5zbWFydEdyaWQhLmhlYWRlckNvbXBvbmVudCxcclxuICAgICAgICBoZWFkZXJJbnB1dE5hbWU6IHRoaXMuc21hcnRHcmlkIS5oZWFkZXJDb21wb25lbnRJbnB1dE5hbWUsXHJcbiAgICAgICAgaGVhZGVyRGF0YTogaXRlbSxcclxuICAgICAgICBjdXN0b21Db21wb25lbnQ6IHRoaXMuc21hcnRHcmlkIS5leHBhbmRhYmxlQ29tcG9uZW50LFxyXG4gICAgICAgIGlucHV0TmFtZTogdGhpcy5zbWFydEdyaWQhLmV4cGFuZGFibGVDb21wb25lbnRJbnB1dE5hbWUsXHJcbiAgICAgICAgZGF0YTogaXRlbSxcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW5kZXJDYXJkcygpOiB2b2lkIHtcclxuICAgIC8vIFRPRE9cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgY29uc3RydWN0SGVhZGVyKCk6IFByb21pc2U8U21hcnRUYWJsZUhlYWRlcltdPiB7XHJcbiAgICBsZXQgaGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyW10gPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC5wYWdlLnJvd3MgJiYgdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC5wYWdlLnJvd3MubGVuZ3RoKSB7XHJcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgIHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwucGFnZS5yb3dzLm1hcChhc3luYyAoZ3JpZFJvdzogR3JpZFJvdykgPT4ge1xyXG4gICAgICAgICAgbGV0IG5ld1VpQWN0aW9ucyA9IGdyaWRSb3cuYWN0aW9ucz8uZmlsdGVyKFxyXG4gICAgICAgICAgICAodWlBY3Rpb246IGFueSkgPT4gIXRoaXMudWlBY3Rpb25EZXNjcmlwdG9ycy5nZXQodWlBY3Rpb24uY29kZSEpXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGlmIChuZXdVaUFjdGlvbnMpIHtcclxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgICAgICAgbmV3VWlBY3Rpb25zLm1hcChhc3luYyAodWlBY3Rpb246IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGRlc2NyaXB0b3IgPVxyXG4gICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNtYXJ0R3JpZCEudWlBY3Rpb25EZXNjcmlwdG9yU2VydmljZS5nZXRBY3Rpb25EZXNjcmlwdG9yKHVpQWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudWlBY3Rpb25EZXNjcmlwdG9ycy5zZXQodWlBY3Rpb24uY29kZSEsIGRlc2NyaXB0b3IpO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC52aWV3IS5vcmRlcmVkQ29sdW1uTmFtZXMubWFwKGFzeW5jIChwcm9wZXJ0eU5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGxldCBkZXNjQ29sdW1uOiBhbnkgPSB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXchLmRlc2NyaXB0b3IhLmNvbHVtbnMhLmZpbmQoXHJcbiAgICAgICAgICAoY29sRGVzY3JpcHRvcjogR3JpZENvbHVtbk1ldGEpID0+IGNvbERlc2NyaXB0b3IucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCBjdXN0b21UYWJsZUhlYWRlciA9IHRoaXMuc21hcnRHcmlkIS50YWJsZUNvbmZpZz8uY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/LmZpbmQoXHJcbiAgICAgICAgICAoaGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiBoZWFkZXIucHJvcGVydHlOYW1lID09PSBwcm9wZXJ0eU5hbWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChkZXNjQ29sdW1uKSB7XHJcbiAgICAgICAgICBsZXQgZmlsdGVyRXhwcmVzc2lvbk9yZGVyQnlJdGVtID0gdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC52aWV3Py5vcmRlckJ5TGlzdD8uZmluZChcclxuICAgICAgICAgICAgKGZpbHRlckV4cHJlc3Npb246IEZpbHRlckV4cHJlc3Npb25PcmRlckJ5KSA9PlxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb24ucHJvcGVydHlOYW1lID09PSBkZXNjQ29sdW1uLnByb3BlcnR5TmFtZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGxldCBvcmRlcjtcclxuICAgICAgICAgIGxldCBvcmRlck51bWJlcjtcclxuICAgICAgICAgIGlmIChmaWx0ZXJFeHByZXNzaW9uT3JkZXJCeUl0ZW0pIHtcclxuICAgICAgICAgICAgb3JkZXIgPVxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25PcmRlckJ5SXRlbS5vcmRlciA9PT0gRmlsdGVyRXhwcmVzc2lvbk9yZGVyQnkuT3JkZXJFbnVtLkFzY1xyXG4gICAgICAgICAgICAgICAgPyBTbWFydFRhYmxlT3JkZXIuQVNDXHJcbiAgICAgICAgICAgICAgICA6IFNtYXJ0VGFibGVPcmRlci5ERVNDO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZXJ2aWNlLmdyaWRNb2RlbC52aWV3IS5vcmRlckJ5TGlzdC5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgb3JkZXJOdW1iZXIgPSB0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsLnZpZXchLm9yZGVyQnlMaXN0LmZpbmRJbmRleChcclxuICAgICAgICAgICAgICAgIChmaWx0ZXI6IEZpbHRlckV4cHJlc3Npb25PcmRlckJ5KSA9PiBmaWx0ZXIucHJvcGVydHlOYW1lID09PSBkZXNjQ29sdW1uLnByb3BlcnR5TmFtZVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgb3JkZXJOdW1iZXIrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3Qgb3JpZ25hbExhYmVsID0gY3VzdG9tVGFibGVIZWFkZXI/LmxhYmVsID8/IGRlc2NDb2x1bW4ubGFiZWw7XHJcbiAgICAgICAgICBsZXQgbGFiZWw6IHN0cmluZztcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5zbWFydEdyaWQhLnRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgICAgICAgICAgbGFiZWwgPSBhd2FpdCB0aGlzLnNtYXJ0R3JpZCEudHJhbnNsYXRlU2VydmljZT8uZ2V0KG9yaWduYWxMYWJlbCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsYWJlbCA9IG9yaWduYWxMYWJlbDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBsZXQgcHJvcGVydGllcyA9IGN1c3RvbVRhYmxlSGVhZGVyPy5wcm9wZXJ0aWVzO1xyXG4gICAgICAgICAgaWYgKCFwcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgICAgIGlmIChkZXNjQ29sdW1uLnR5cGVDbGFzcyA9PT0gJ2phdmEudGltZS5PZmZzZXREYXRlVGltZScpIHtcclxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0ge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogU21hcnRUYWJsZUhlYWRlclByb3BlcnR5VHlwZS5EQVRFVElNRSxcclxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6ICd5eXl5Lk1NLmRkIEg6bW0nLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVzY0NvbHVtbi50eXBlQ2xhc3MgPT09ICdqYXZhLnRpbWUuT2Zmc2V0RGF0ZScpIHtcclxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzID0ge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogU21hcnRUYWJsZUhlYWRlclByb3BlcnR5VHlwZS5EQVRFVElNRSxcclxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6ICd5eXl5Lk1NLmRkJyxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaGVhZGVyLnB1c2goe1xyXG4gICAgICAgICAgICAuLi5jdXN0b21UYWJsZUhlYWRlcixcclxuICAgICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWU6ICdkYXRhLicgKyBkZXNjQ29sdW1uLnByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgb3JkZXIsXHJcbiAgICAgICAgICAgIG9yZGVyTnVtYmVyLFxyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgY29tcGxlbWVudCA9IHRoaXMuc21hcnRHcmlkIS50YWJsZUNvbmZpZz8uY3VzdG9tU21hcnRUYWJsZUhlYWRlcnM/LmZpbHRlcihcclxuICAgICAgKHRhYmxlSGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PlxyXG4gICAgICAgICFoZWFkZXIuc29tZSgodEg6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHRILnByb3BlcnR5TmFtZS5pbmNsdWRlcyh0YWJsZUhlYWRlci5wcm9wZXJ0eU5hbWUpKVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoY29tcGxlbWVudCkge1xyXG4gICAgICBoZWFkZXIucHVzaCguLi5jb21wbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zbWFydEdyaWQhLm9wdGlvbnM/LnNpbXBsZUJ1dHRvbnMpIHtcclxuICAgICAgdGhpcy5zbWFydEdyaWQhLm9wdGlvbnMuc2ltcGxlQnV0dG9ucy5mb3JFYWNoKCh1aUFjdGlvbkNvZGU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGhlYWRlci5wdXNoKHtcclxuICAgICAgICAgIGxhYmVsOiAnJyxcclxuICAgICAgICAgIHByb3BlcnR5TmFtZTogJ3NpbXBsZV9idXR0b25zJyxcclxuICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IFNtYXJ0VGFibGVCdXR0b25UeXBlLlJBSVNFRCxcclxuICAgICAgICAgICAgICBjYWxsYmFjazogdGhpcy5leGVjdXRlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuYnV0dG9uVHJhbnNsYXRvcih7IGNvZGU6IHVpQWN0aW9uQ29kZSB9KSxcclxuICAgICAgICAgICAgICBhcmdzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIGNvZGU6IHVpQWN0aW9uQ29kZSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICAgICAgICAgIHNob3dCdXR0b25JZjogKHJvdzogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgcm93LmFjdGlvbnMuc29tZSgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmNvZGUgPT09IHVpQWN0aW9uQ29kZTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFoZWFkZXIuc29tZSgoaGVhZGVyOiBTbWFydFRhYmxlSGVhZGVyKSA9PiBoZWFkZXIucHJvcGVydHlOYW1lID09PSAnbXlfbWVudScpKSB7XHJcbiAgICAgIGlmICh0aGlzLnNtYXJ0R3JpZCEub3B0aW9ucz8ucm93VWlBY3Rpb25UeXBlID09PSBHcmlkVWlBY3Rpb25UeXBlLlBPUFVQX01FTlUpIHtcclxuICAgICAgICBoZWFkZXIucHVzaCh7XHJcbiAgICAgICAgICBsYWJlbDogJycsXHJcbiAgICAgICAgICBwcm9wZXJ0eU5hbWU6ICdteV9tZW51JyxcclxuICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IFNtYXJ0VGFibGVCdXR0b25UeXBlLk1FTlUsXHJcbiAgICAgICAgICAgICAgY2FsbGJhY2s6IHRoaXMuZXhlY3V0ZS5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgIGljb246ICdtb3JlX3ZlcnQnLFxyXG4gICAgICAgICAgICAgIG1lbnVJdGVtQnV0dG9uc1Byb3BlcnR5TmFtZTogJ2FjdGlvbnMnLFxyXG4gICAgICAgICAgICAgIHRyYW5zbGF0b3I6IHRoaXMuYnV0dG9uVHJhbnNsYXRvci5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgIGFyZ3M6IFtdLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICAgIGlzU29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGhlYWRlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBvbkNoYW5nZVBhZ2UoZXZlbnQ6IFBhZ2VFdmVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IG9mZnNldCA9IGV2ZW50Py5wYWdlU2l6ZSAqIGV2ZW50Py5wYWdlSW5kZXg7XHJcbiAgICBsZXQgbGltaXQgPSBldmVudC5wYWdlU2l6ZTtcclxuICAgIGF3YWl0IHRoaXMuc2VydmljZS5zZXRQYWdlKFxyXG4gICAgICB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXdVdWlkISxcclxuICAgICAgdGhpcy5zbWFydEdyaWQhLmdyaWRJZGVudGlmaWVyLFxyXG4gICAgICBvZmZzZXQudG9TdHJpbmcoKSxcclxuICAgICAgbGltaXQudG9TdHJpbmcoKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZXhlY3V0ZShhcmdzOiBhbnlbXSwgcm93OiBhbnksIHVpQWN0aW9uOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBfdWlBY3Rpb246IFVpQWN0aW9uO1xyXG5cclxuICAgIGlmICghdWlBY3Rpb24pIHtcclxuICAgICAgdWlBY3Rpb24gPSByb3cuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbjogVWlBY3Rpb24pID0+IGFjdGlvbi5jb2RlID09PSBhcmdzWzBdLmNvZGUpWzBdO1xyXG4gICAgfVxyXG5cclxuICAgIF91aUFjdGlvbiA9IHsgLi4udWlBY3Rpb24gfTtcclxuICAgIF91aUFjdGlvbi5wYXJhbXMgPSB7XHJcbiAgICAgIC4uLnVpQWN0aW9uLnBhcmFtcyxcclxuICAgICAgbW9kZWw6IHJvdyxcclxuICAgIH07XHJcblxyXG4gICAgbGV0IHVpQWN0aW9uTW9kZWw6IGFueSA9IHtcclxuICAgICAgc2VydmljZVRvVXNlOiB0aGlzLnNtYXJ0R3JpZCEuc2VydmljZVRvVXNlLFxyXG4gICAgICB1aUFjdGlvbjogX3VpQWN0aW9uLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5zbWFydEdyaWQhLm9wdGlvbnM/LnVpQWN0aW9uTW9kZWxDYWxsYmFjaykge1xyXG4gICAgICB1aUFjdGlvbk1vZGVsID0gdGhpcy5zbWFydEdyaWQhLm9wdGlvbnMhLnVpQWN0aW9uTW9kZWxDYWxsYmFjayh1aUFjdGlvbk1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNtYXJ0R3JpZCEudWlBY3Rpb25TZXJ2aWNlLnVpQWN0aW9uTW9kZWwgPSB1aUFjdGlvbk1vZGVsO1xyXG4gICAgdGhpcy5zbWFydEdyaWQhLnVpQWN0aW9uU2VydmljZS5leGVjdXRlKF91aUFjdGlvbiwge1xyXG4gICAgICB3aWRnZXRJZDogdGhpcy5zbWFydEdyaWQhLmdyaWRJZGVudGlmaWVyLFxyXG4gICAgICBub2RlSWQ6IHJvdy5pZCxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidXR0b25UcmFuc2xhdG9yKHVpQWN0aW9uOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgbGV0IGRlc2MgPSB0aGlzLnVpQWN0aW9uRGVzY3JpcHRvcnMuZ2V0KHVpQWN0aW9uLmNvZGUpO1xyXG4gICAgcmV0dXJuIGRlc2MgPyBkZXNjLnRpdGxlIDogdWlBY3Rpb24uY29kZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsYXlvdXREZWYoKTogdHlwZW9mIFNtYXJ0TGF5b3V0RGVmIHtcclxuICAgIHJldHVybiBTbWFydExheW91dERlZjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNsaWNrKGdyaWRSb3c6IEdyaWRSb3cpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFuZGxlT25DbGljayhncmlkUm93KTtcclxuICB9XHJcbiAgcHVibGljIG9uRG91YmxlQ2xpY2soZ3JpZFJvdzogR3JpZFJvdyk6IHZvaWQge1xyXG4gICAgdGhpcy5oYW5kbGVPbkNsaWNrKGdyaWRSb3cpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVPbkNsaWNrKGdyaWRSb3c6IEdyaWRSb3cpOiB2b2lkIHtcclxuICAgIGxldCBkZWZhdWx0Um93QWN0aW9uOiBVaUFjdGlvbiB8IHVuZGVmaW5lZDtcclxuICAgIGlmICh0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsPy5kZWZhdWx0Um93QWN0aW9ucykge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbC5kZWZhdWx0Um93QWN0aW9ucy5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICBjb25zdCBkZWZhdWx0Um93QWN0aW9uQ29kZSA9IHRoaXMuc2VydmljZS5ncmlkTW9kZWwuZGVmYXVsdFJvd0FjdGlvbnNbaW5kZXhdO1xyXG5cclxuICAgICAgICBkZWZhdWx0Um93QWN0aW9uID0gZ3JpZFJvdy5hY3Rpb25zLmZpbmQoXHJcbiAgICAgICAgICAodWlBY3Rpb246IFVpQWN0aW9uKSA9PiB1aUFjdGlvbi5jb2RlID09PSBkZWZhdWx0Um93QWN0aW9uQ29kZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGRlZmF1bHRSb3dBY3Rpb24pIHtcclxuICAgICAgICAgIHRoaXMuZXhlY3V0ZShbXSwgZ3JpZFJvdywgZGVmYXVsdFJvd0FjdGlvbik7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIG9uU2VsZWN0KHJvd0lkOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuaXNCbG9ja2VkID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCByb3cgPSB0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsLnBhZ2Uucm93cz8uZmluZCgoZ3JpZFJvdzogR3JpZFJvdykgPT4gZ3JpZFJvdy5pZCA9PT0gcm93SWQpO1xyXG4gICAgY29uc3Qgdmlld0NvbnRleHRDaGFuZ2UgPSBhd2FpdCB0aGlzLnNlcnZpY2Uuc2VsZWN0KHRoaXMuc21hcnRHcmlkISwgcm93ISk7XHJcbiAgICB0aGlzLnNtYXJ0R3JpZCEudmlld0NvbnRleHRTZXJ2aWNlLmhhbmRsZUNoYW5nZXModmlld0NvbnRleHRDaGFuZ2UuY2hhbmdlcyk7XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgYXN5bmMgb25TZWxlY3RBbGwoc2VsZWN0ZWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuaXNCbG9ja2VkID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCB2aWV3Q29udGV4dENoYW5nZSA9IGF3YWl0IHRoaXMuc2VydmljZS5zZWxlY3RBbGwodGhpcy5zbWFydEdyaWQhLCBzZWxlY3RlZCk7XHJcbiAgICB0aGlzLnNtYXJ0R3JpZCEudmlld0NvbnRleHRTZXJ2aWNlLmhhbmRsZUNoYW5nZXModmlld0NvbnRleHRDaGFuZ2UuY2hhbmdlcyk7XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgfVxyXG4gIGVkaXRDb2x1bW5zKCk6IHZvaWQge1xyXG4gICAgbGV0IGRpYWxvZ0RhdGE6IFNtYXJ0RGlhbG9nRGF0YSA9IHtcclxuICAgICAgY29udGVudDoge1xyXG4gICAgICAgIHRpdGxlOiAnT3N6bG9wb2sgdGVzdHJlc3phYsOhc2EnLFxyXG4gICAgICB9LFxyXG4gICAgICBzaXplOiB7fSxcclxuICAgICAgY3VzdG9tQ29tcG9uZW50OiBUYWJsZUxheW91dERlZmluZXJDb21wb25lbnQsXHJcbiAgICAgIGN1c3RvbUNvbXBvbmVudElucHV0czoge1xyXG4gICAgICAgIGNvbmZpZzoge1xyXG4gICAgICAgICAgdXVpZDogdGhpcy51dWlkLFxyXG4gICAgICAgICAgaWRlbnRpZmllcjogdGhpcy5zbWFydEdyaWQhLmdyaWRJZGVudGlmaWVyLFxyXG4gICAgICAgICAgdmlldzogdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbC52aWV3LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgbGV0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVGFibGVMYXlvdXREZWZpbmVyQ29tcG9uZW50LCB7IGRhdGE6IGRpYWxvZ0RhdGEgfSk7XHJcblxyXG4gICAgZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5ncmlkTW9kZWxDaGFuZ2VkLm5leHQoKTtcclxuICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJzbWFydEdyaWRcIiBjbGFzcz1cInNtYXJ0R3JpZC1jb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwic21hcnQtZ3JpZC1lZGl0LWJ1dHRvblwiICpuZ0lmPVwic21hcnRHcmlkLnNob3dFZGl0Q29sdW1uc1wiPlxyXG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiZWRpdENvbHVtbnMoKVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICBPc3psb3BvayB0ZXN0cmVzemFiw6FzYVxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSA8ZGl2IFtuZ0NsYXNzXT1cImlzQmxvY2tlZCA/ICdibG9ja2VkJyA6ICcnXCI+PC9kaXY+IC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJzbWFydEdyaWRDb250ZW50XCI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic21hcnRHcmlkLnNob3dSZXN1bHRDb3VudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWFydEdyaWQtZGF0YS1udW1iZXJcIj5cclxuICAgICAgICAgIHt7IHNtYXJ0R3JpZC5ncmlkTW9kZWwudG90YWxSb3dDb3VudCB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWFydC1ncmlkLXRhYmxlLWNvbnRhaW5lclwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3RhYmxlPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwic21hcnRHcmlkLmxheW91dERlZiA9PT0gbGF5b3V0RGVmKCkuRVhQQU5EQUJMRVwiPlxyXG4gICAgICA8c21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uXHJcbiAgICAgICAgI2dyaWRFeHBhbmRhYmxlU2VjdGlvblxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBleHBhbmRhYmxlU2VjdGlvbiBvZiBleHBhbmRhYmxlU2VjdGlvbnNcIlxyXG4gICAgICAgIFtkYXRhXT1cImV4cGFuZGFibGVTZWN0aW9uXCJcclxuICAgICAgPjwvc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwic21hcnRHcmlkLmxheW91dERlZiA9PT0gbGF5b3V0RGVmKCkuQ0FSRFwiXHJcbiAgICAgIGNsYXNzPVwiY2FyZHMtY29udGFpbmVyXCJcclxuICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICdncmlkLXRlbXBsYXRlLWNvbHVtbnMnOlxyXG4gICAgICAgICAgc21hcnRHcmlkLm51bWJlck9mQ29sdW1uICE9PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgPyAncmVwZWF0KCcgKyBzbWFydEdyaWQubnVtYmVyT2ZDb2x1bW4gKyAnLCAxZnIpJ1xyXG4gICAgICAgICAgICA6ICcnXHJcbiAgICAgIH1cIlxyXG4gICAgPlxyXG4gICAgICA8YXBwLXNtYXJ0LWdyaWQtY2FyZFxyXG4gICAgICAgIGNsYXNzPVwic21hcnRHcmlkLWNhcmQtY29udGFpbmVyXCJcclxuICAgICAgICAqbmdGb3I9XCJsZXQgdGFzayBvZiBzbWFydEdyaWQuZ3JpZE1vZGVsLnBhZ2Uucm93c1wiXHJcbiAgICAgICAgW2l0ZW1dPVwidGFza1wiXHJcbiAgICAgICAgW3NtYXJ0R3JpZF09XCJzbWFydEdyaWRcIlxyXG4gICAgICA+PC9hcHAtc21hcnQtZ3JpZC1jYXJkPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtYXQtcGFnaW5hdG9yXHJcbiAgICAqbmdJZj1cInNtYXJ0R3JpZC5wYWdpbmF0b3JcIlxyXG4gICAgI3BhZ2luYXRvclxyXG4gICAgW2xlbmd0aF09XCJsZW5ndGhcIlxyXG4gICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcclxuICAgIChwYWdlKT1cIm9uQ2hhbmdlUGFnZSgkZXZlbnQpXCJcclxuICA+PC9tYXQtcGFnaW5hdG9yPlxyXG48L2Rpdj5cclxuIl19
|
|
469
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1ncmlkL3NtYXJ0LWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9zbWFydC1ncmlkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBRUwsU0FBUyxFQUVULEtBQUssRUFJTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxVQUFVLEVBQ1Ysb0JBQW9CLEVBRXBCLDRCQUE0QixFQUU1QiwyQkFBMkIsRUFDM0IsZUFBZSxFQUNmLGNBQWMsRUFDZCxtQkFBbUIsR0FDcEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLGlCQUFpQixHQUVsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBYSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUcvRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7OztBQVduRSxNQUFNLE9BQU8sa0JBQWtCO0lBa0M3QixZQUNVLE9BQXlCLEVBQ3pCLFNBQWtDLEVBQ2xDLE1BQWlCO1FBRmpCLFlBQU8sR0FBUCxPQUFPLENBQWtC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LENBQUMsMEdBWUQsZ0JBQWdCLGtEQzFEOUMsbTBEQXVEQTsyRkRQYSxrQkFBa0I7a0JBTjlCLFNBQVM7K0JBQ0UsWUFBWSxhQUdYLENBQUMsZ0JBQWdCLENBQUM7cUtBT3BCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFHMEMsVUFBVTtzQkFBekQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHtcclxuICBTbWFydFRhYmxlLFxyXG4gIFNtYXJ0VGFibGVCdXR0b25UeXBlLFxyXG4gIFNtYXJ0VGFibGVIZWFkZXIsXHJcbiAgU21hcnRUYWJsZUhlYWRlclByb3BlcnR5VHlwZSxcclxuICBTbWFydFRhYmxlSW50ZXJmYWNlLFxyXG4gIFNtYXJ0VGFibGVJbnRlcmZhY2VUeXBlRW51bSxcclxuICBTbWFydFRhYmxlT3JkZXIsXHJcbiAgU21hcnRUYWJsZVR5cGUsXHJcbiAgU21hcnR0YWJsZUNvbXBvbmVudCxcclxufSBmcm9tICcuLi9zbWFydC10YWJsZS9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIEdyaWRDb2x1bW5NZXRhLFxyXG4gIEdyaWRSb3csXHJcbiAgR3JpZFNlbGVjdGlvbk1vZGUsXHJcbiAgR3JpZFNlbGVjdGlvblR5cGUsXHJcbiAgR3JpZFVwZGF0ZURhdGEsXHJcbn0gZnJvbSAnLi9hcGkvZ3JpZC1hcGknO1xyXG5pbXBvcnQgeyBHcmlkVWlBY3Rpb25UeXBlLCBTbWFydEdyaWQsIFNtYXJ0TGF5b3V0RGVmIH0gZnJvbSAnLi9tb2RlbHMvbW9kZWwnO1xyXG5pbXBvcnQgeyBTbWFydEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi9zbWFydC1ncmlkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUYWJsZUxheW91dERlZmluZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtbGF5b3V0LWRlZmluZXIvdGFibGUtbGF5b3V0LWRlZmluZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwYW5kYWJsZVNlY3Rpb24gfSBmcm9tICcuLi9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24vcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudC1mYWN0b3J5LXNlcnZpY2UvcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uT3JkZXJCeSB9IGZyb20gJy4uL3NtYXJ0LWZpbHRlci9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFNtYXJ0RGlhbG9nRGF0YSB9IGZyb20gJy4uL3NtYXJ0LWRpYWxvZy9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFVpQWN0aW9uIH0gZnJvbSAnLi4vdmlldy1jb250ZXh0L2FwaSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LWdyaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbWFydC1ncmlkLmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFtTbWFydEdyaWRTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0R3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRQYWdlU2l6ZTogbnVtYmVyID0gMTA7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0UGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFs1LCAxMCwgMjUsIDUwXTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIEBJbnB1dCgpIHNtYXJ0R3JpZD86IFNtYXJ0R3JpZDtcclxuICBASW5wdXQoKSB1dWlkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRldjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyB0YWJsZVxyXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHZjUmVmVGFibGU/OiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIGNvbXBvbmVudFJlZlRhYmxlITogQ29tcG9uZW50UmVmPFNtYXJ0dGFibGVDb21wb25lbnQ+O1xyXG4gIHNtYXJ0VGFibGUhOiBTbWFydFRhYmxlPEdyaWRSb3c+O1xyXG5cclxuICAvLyBleHBhbmRhYmxlXHJcbiAgLy8gZ3JpZERhdGFcclxuICBleHBhbmRhYmxlU2VjdGlvbnM/OiBFeHBhbmRhYmxlU2VjdGlvbjxhbnk+W107XHJcblxyXG4gIHBhZ2VFdmVudD86IFBhZ2VFdmVudDtcclxuICBkYXRhc291cmNlPzogbnVsbDtcclxuICBwYWdlU2l6ZT86IG51bWJlcjtcclxuICBsZW5ndGg/OiBudW1iZXI7XHJcbiAgdmFsdWVzOiBhbnk7XHJcbiAgZ3JpZFRhYmxlITogU21hcnRUYWJsZTxhbnk+O1xyXG5cclxuICBwYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gdGhpcy5kZWZhdWx0UGFnZVNpemVPcHRpb25zO1xyXG5cclxuICBzZWxlY3Rpb25DaGFuZ2VzOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICB1aUFjdGlvbkRlc2NyaXB0b3JzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcCgpO1xyXG5cclxuICBhZnRlclZpZXdJbml0RXhlY3V0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0Jsb2NrZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc2VydmljZTogU21hcnRHcmlkU2VydmljZSxcclxuICAgIHByaXZhdGUgY2ZTZXJ2aWNlOiBDb21wb25lbnRGYWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2dcclxuICApIHtcclxuICAgIHRoaXMuc2VydmljZS5ncmlkTW9kZWxDaGFuZ2VkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIC8vIGNhbGxlZCBhZnRlciBldmVyeSBzZXJ2aWNlIGNhbGwgKGxvYWQsIHNhdmUsIHJlZnJlc2gsIGV0Yy4pXHJcbiAgICAgIHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwgPSB0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsO1xyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snc21hcnRHcmlkJ10pIHtcclxuICAgICAgdGhpcy5zbWFydEdyaWQgPSBjaGFuZ2VzWydzbWFydEdyaWQnXS5jdXJyZW50VmFsdWU7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1sndXVpZCddKSB7XHJcbiAgICAgIHRoaXMudXVpZCA9IGNoYW5nZXNbJ3V1aWQnXS5jdXJyZW50VmFsdWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hZnRlclZpZXdJbml0RXhlY3V0ZWQgJiYgdGhpcy51dWlkICYmIHRoaXMuc21hcnRHcmlkKSB7XHJcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGV2KSB7XHJcbiAgICAgIC8vIGZvciBkZXYgcHVycG9zZXNcclxuICAgICAgdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbCA9IHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWw7XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudXVpZCAmJiB0aGlzLnNtYXJ0R3JpZCAmJiAhdGhpcy5kZXYpIHtcclxuICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFmdGVyVmlld0luaXRFeGVjdXRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHRoZSBzZWxlY3RlZCByb3dzIG9mIHRoZSB0YWJsZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRTZWxlY3RlZFJvd3MoKTogU2VsZWN0aW9uTW9kZWw8R3JpZFJvdz4ge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0VGFibGUuc2VsZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoKTtcclxuICAgIHJldHVybiB0aGlzLnNtYXJ0VGFibGUhLnNlbGVjdGlvbiE7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCBzZW5kcyBhIEdFVCByZXF1ZXN0IHRvIHRoZSBnZW5lcmljIEdyaWRBUEkgYW5kIHJlZnJlc2hlcyB0aGUgcHJlc2VudGVkXHJcbiAgICogZ3JpZCB3aXRoIHRoZSBuZXdlc3Qgb25lLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBhc3luYyByZWZyZXNoKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gd2lsbCBjYXVzZSB0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsQ2hhbmdlZCB0byBmaXJlXHJcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UubG9hZCh0aGlzLnV1aWQsIHRoaXMuc21hcnRHcmlkIS5ncmlkSWRlbnRpZmllcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHJlbmRlcigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGdyaWRNb2RlbCA9IHRoaXMuc21hcnRHcmlkPy5ncmlkTW9kZWw7XHJcbiAgICBpZiAoZ3JpZE1vZGVsKSB7XHJcbiAgICAgIHRoaXMubGVuZ3RoID0gZ3JpZE1vZGVsLnRvdGFsUm93Q291bnQ7XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSBncmlkTW9kZWwucGFnZVNpemUgPz8gdGhpcy5kZWZhdWx0UGFnZVNpemU7XHJcbiAgICAgIGlmIChncmlkTW9kZWwucGFnZVNpemVPcHRpb25zICYmIGdyaWRNb2RlbC5wYWdlU2l6ZU9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMucGFnZVNpemVPcHRpb25zID0gZ3JpZE1vZGVsLnBhZ2VTaXplT3B0aW9ucztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucyA9IHRoaXMuZGVmYXVsdFBhZ2VTaXplT3B0aW9ucztcclxuICAgICAgfVxyXG4gICAgICBpZiAoZ3JpZE1vZGVsPy52aWV3Py5kZXNjcmlwdG9yPy5zaG93RWRpdENvbHVtbnMpIHtcclxuICAgICAgICB0aGlzLnNtYXJ0R3JpZCEuc2hvd0VkaXRDb2x1bW5zID0gZ3JpZE1vZGVsPy52aWV3Py5kZXNjcmlwdG9yPy5zaG93RWRpdENvbHVtbnM7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0dyaWRNb2RlbCBpcyB1bmRlZmluZWQgaW4gY29tcG9uZW50IScpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc21hcnRHcmlkIS5sYXlvdXREZWYgPT09IFNtYXJ0TGF5b3V0RGVmLlRBQkxFKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyVGFibGUoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zbWFydEdyaWQhLmxheW91dERlZiA9PT0gU21hcnRMYXlvdXREZWYuRVhQQU5EQUJMRSkge1xyXG4gICAgICB0aGlzLnJlbmRlckV4cGFuZGFibGVTZWN0aW9ucygpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNtYXJ0R3JpZCEubGF5b3V0RGVmID09PSBTbWFydExheW91dERlZi5DQVJEKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyQ2FyZHMoKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNCbG9ja2VkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHJlbmRlclRhYmxlKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHRhYmxlUm93ID0gdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbCEucGFnZS5yb3dzIS5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gaXRlbTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICghdGFibGVSb3cubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBwbGFjZUhvbGRlclJvdzogYW55ID0ge307XHJcbiAgICAgIHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwudmlldz8uZGVzY3JpcHRvcj8uY29sdW1ucy5tYXAoKG1ldGE6IEdyaWRDb2x1bW5NZXRhKSA9PiB7XHJcbiAgICAgICAgcGxhY2VIb2xkZXJSb3dbbWV0YS5wcm9wZXJ0eU5hbWVdID0gdW5kZWZpbmVkO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC5wYWdlLnJvd3MgPSBbcGxhY2VIb2xkZXJSb3ddO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB0YWJsZVR5cGU7XHJcbiAgICBpZiAodGhpcy5zbWFydEdyaWQhLnRhYmxlQ29uZmlnPy50YWJsZVR5cGUpIHtcclxuICAgICAgdGFibGVUeXBlID0gdGhpcy5zbWFydEdyaWQhLnRhYmxlQ29uZmlnLnRhYmxlVHlwZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZXJ2aWNlLmdyaWRNb2RlbD8udmlldz8uZGVzY3JpcHRvcj8uc2VsZWN0aW9uVHlwZSkge1xyXG4gICAgICB0YWJsZVR5cGUgPVxyXG4gICAgICAgIHRoaXMuc2VydmljZS5ncmlkTW9kZWwudmlldy5kZXNjcmlwdG9yLnNlbGVjdGlvblR5cGUgPT09IEdyaWRTZWxlY3Rpb25UeXBlLkNoZWNrYm94XHJcbiAgICAgICAgICA/IFNtYXJ0VGFibGVUeXBlLkNIRUNLX0JPWFxyXG4gICAgICAgICAgOiBTbWFydFRhYmxlVHlwZS5ST1dfU0VMRUNUO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGFibGVUeXBlID0gU21hcnRUYWJsZVR5cGUuSU5IRVJJVEVEO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0R3JpZCEubGF5b3V0RGVmID09PSBTbWFydExheW91dERlZi5UQUJMRSkge1xyXG4gICAgICBsZXQgdGFibGVDb25maWc6IFNtYXJ0VGFibGVJbnRlcmZhY2U8R3JpZFJvdz4gPSB7XHJcbiAgICAgICAgLi4udGhpcy5zbWFydEdyaWQhLnRhYmxlQ29uZmlnLFxyXG4gICAgICAgIHRhYmxlUm93czogdGFibGVSb3csXHJcbiAgICAgICAgdGFibGVUeXBlLFxyXG4gICAgICAgIGN1c3RvbVNtYXJ0VGFibGVIZWFkZXJzOiBhd2FpdCB0aGlzLmNvbnN0cnVjdEhlYWRlcigpISxcclxuICAgICAgICBleHBhbmRhYmxlOiB0aGlzLnNtYXJ0R3JpZCEuZXhwYW5kYWJsZSxcclxuICAgICAgICBleHBhbmRlZENvbXBvbmVudDogdGhpcy5zbWFydEdyaWQhLmV4cGFuZGVkQ29tcG9uZW50LFxyXG4gICAgICAgIHR5cGU6IFNtYXJ0VGFibGVJbnRlcmZhY2VUeXBlRW51bS5OT1JNQUwsXHJcbiAgICAgICAgc29ydGFibGU6IHRydWUsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5zbWFydEdyaWQhLnVpQWN0aW9uU2VydmljZSAmJlxyXG4gICAgICAgIHRoaXMuc21hcnRHcmlkIS51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlICYmXHJcbiAgICAgICAgdGhpcy5zbWFydEdyaWQhLnNlcnZpY2VUb1VzZSAmJlxyXG4gICAgICAgIHRoaXMuc21hcnRHcmlkIS52aWV3Q29udGV4dFNlcnZpY2VcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGFibGVDb25maWcub25TZWxlY3Rpb24gPSB0aGlzLm9uU2VsZWN0LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGFibGVDb25maWcub25BbGxTZWxlY3Rpb24gPSB0aGlzLm9uU2VsZWN0QWxsLmJpbmQodGhpcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFByZXBhcmVkIGZvciBzaW1wbGUgY2xpY2tzXHJcbiAgICAgIC8vIGlmICghdGFibGVDb25maWcub25Sb3dDbGljaykge1xyXG4gICAgICAvLyAgIHRhYmxlQ29uZmlnLm9uUm93Q2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKTtcclxuICAgICAgLy8gfVxyXG5cclxuICAgICAgaWYgKCF0YWJsZUNvbmZpZy5vblJvd0RvdWJsZUNsaWNrKSB7XHJcbiAgICAgICAgdGFibGVDb25maWcub25Sb3dEb3VibGVDbGljayA9IHRoaXMub25Eb3VibGVDbGljay5iaW5kKHRoaXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIXRhYmxlQ29uZmlnLmlzUm93RGlzYWJsZWRQcm9wZXJ0eU5hbWUpIHtcclxuICAgICAgICB0YWJsZUNvbmZpZy5zZWxlY3RhYmxlUHJvcGVydHlOYW1lID0gJ3NlbGVjdGFibGUnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGFibGVDb25maWcuYXN5bmNPbkV4cGFuZCkge1xyXG4gICAgICAgIHRhYmxlQ29uZmlnLnJvd0V4cGFuZGVyID0gdGhpcztcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3Qgc2VsZWN0aW9uTW9kZSA9IHRoaXMuc2VydmljZSEuZ3JpZE1vZGVsLnZpZXc/LmRlc2NyaXB0b3I/LnNlbGVjdGlvbk1vZGU7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIXRhYmxlQ29uZmlnLnNlbGVjdGlvbiAmJlxyXG4gICAgICAgICF0YWJsZUNvbmZpZy5zZWxlY3Rpb25Qcm9wZXJ0eSAmJlxyXG4gICAgICAgIHNlbGVjdGlvbk1vZGUgIT09IEdyaWRTZWxlY3Rpb25Nb2RlLk5vbmVcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgaXNNdWx0aXBsZSA9IHNlbGVjdGlvbk1vZGUgPT09IEdyaWRTZWxlY3Rpb25Nb2RlLk11bHRpcGxlO1xyXG5cclxuICAgICAgICB0YWJsZUNvbmZpZy5zZWxlY3Rpb25Qcm9wZXJ0eSA9ICdpZCc7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSWRzID0gdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbC5wYWdlXHJcbiAgICAgICAgICAucm93cyEuZmlsdGVyKChncmlkUm93OiBHcmlkUm93KSA9PiBncmlkUm93LnNlbGVjdGVkKVxyXG4gICAgICAgICAgLm1hcCgoZ3JpZFJvdzogR3JpZFJvdykgPT4gZ3JpZFJvdy5pZCEpO1xyXG5cclxuICAgICAgICB0YWJsZUNvbmZpZy5zZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8c3RyaW5nPihpc011bHRpcGxlLCBzZWxlY3RlZElkcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc21hcnRUYWJsZSA9IG5ldyBTbWFydFRhYmxlPGFueT4odGFibGVDb25maWcpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmVGFibGUpIHtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZlRhYmxlLmluc3RhbmNlLnVwZGF0ZVNtYXJ0VGFibGUodGhpcy5zbWFydFRhYmxlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZjUmVmVGFibGU/LmNsZWFyKCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy52Y1JlZlRhYmxlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmVGFibGUgPSB0aGlzLmNmU2VydmljZS5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgICAgICB0aGlzLnZjUmVmVGFibGUhLFxyXG4gICAgICAgICAgU21hcnR0YWJsZUNvbXBvbmVudCxcclxuICAgICAgICAgIG5ldyBNYXA8c3RyaW5nLCBhbnk+KFtbJ3NtYXJ0VGFibGUnLCB0aGlzLnNtYXJ0VGFibGVdXSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBsZXQgc3Vic2NyaXB0aW9uID0gdGhpcy5jb21wb25lbnRSZWZUYWJsZS5pbnN0YW5jZS5zb3J0RXZlbnRcclxuICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudFJlZlRhYmxlLmluc3RhbmNlLl9kZXN0cm95JCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKChoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IHtcclxuICAgICAgICAgICAgaGVhZGVyLnByb3BlcnR5TmFtZSA9IGhlYWRlci5wcm9wZXJ0eU5hbWUuc3Vic3RyaW5nKDUpO1xyXG5cclxuICAgICAgICAgICAgc3dpdGNoIChoZWFkZXIub3JkZXIpIHtcclxuICAgICAgICAgICAgICBjYXNlIHVuZGVmaW5lZDpcclxuICAgICAgICAgICAgICAgIGhlYWRlci5vcmRlciA9IFNtYXJ0VGFibGVPcmRlci5BU0M7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIFNtYXJ0VGFibGVPcmRlci5BU0M6XHJcbiAgICAgICAgICAgICAgICBoZWFkZXIub3JkZXIgPSBTbWFydFRhYmxlT3JkZXIuREVTQztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgU21hcnRUYWJsZU9yZGVyLkRFU0M6XHJcbiAgICAgICAgICAgICAgICBoZWFkZXIub3JkZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGZpbHRlciA9IHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwudmlldyEub3JkZXJCeUxpc3QuZmluZChcclxuICAgICAgICAgICAgICAoZmlsdGVyRXhwcmVzc2lvbjogRmlsdGVyRXhwcmVzc2lvbk9yZGVyQnkpID0+XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uLnByb3BlcnR5TmFtZSA9PT0gaGVhZGVyLnByb3BlcnR5TmFtZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyICYmICFoZWFkZXIub3JkZXIpIHtcclxuICAgICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXc/Lm9yZGVyQnlMaXN0LmluZGV4T2YoZmlsdGVyKTtcclxuICAgICAgICAgICAgICB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXc/Lm9yZGVyQnlMaXN0LnNwbGljZShpbmRleCEsIDEpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlcikge1xyXG4gICAgICAgICAgICAgIGZpbHRlci5vcmRlciA9IGhlYWRlci5vcmRlcjtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXchLm9yZGVyQnlMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgb3JkZXI6IGhlYWRlci5vcmRlcixcclxuICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZTogaGVhZGVyLnByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGdyaWRVcGRhdGVEYXRhOiBHcmlkVXBkYXRlRGF0YSA9IHtcclxuICAgICAgICAgICAgICBvcmRlckJ5TGlzdDogdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC52aWV3IS5vcmRlckJ5TGlzdCxcclxuICAgICAgICAgICAgICBvcmRlcmVkQ29sdW1uTmFtZXM6IHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwudmlldyEub3JkZXJlZENvbHVtbk5hbWVzLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnNlcnZpY2Uuc29ydCh0aGlzLnNtYXJ0R3JpZCEsIGdyaWRVcGRhdGVEYXRhKTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZlRhYmxlLmluc3RhbmNlLnNtYXJ0VGFibGUuc2VsZWN0aW9uPy5jaGFuZ2VkXHJcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jb21wb25lbnRSZWZUYWJsZS5pbnN0YW5jZS5fZGVzdHJveSQpKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocm93OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VzLm5leHQocm93KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kKHJvd0lkOiBudW1iZXIpOiBhbnkge31cclxuXHJcbiAgcHVibGljIGFzeW5jIGV4cGFuZEFzeW5jKHJvd0luZGV4OiBudW1iZXIpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgaWYgKHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwucGFnZS5yb3dzKSB7XHJcbiAgICAgIGxldCByb3cgPSB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnBhZ2Uucm93c1tyb3dJbmRleF07XHJcbiAgICAgIGlmIChyb3cgJiYgcm93LmlkKSB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VydmljZS5leHBhbmQodGhpcy5zbWFydEdyaWQhLCByb3cuaWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZXJ2aWNlLmV4cGFuZCh0aGlzLnNtYXJ0R3JpZCEsIHJvd0luZGV4LnRvU3RyaW5nKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW5kZXJFeHBhbmRhYmxlU2VjdGlvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGFuZGFibGVTZWN0aW9ucyA9IHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwhLnBhZ2Uucm93cyEubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgaGVhZGVyQ29tcG9uZW50OiB0aGlzLnNtYXJ0R3JpZCEuaGVhZGVyQ29tcG9uZW50LFxyXG4gICAgICAgIGhlYWRlcklucHV0TmFtZTogdGhpcy5zbWFydEdyaWQhLmhlYWRlckNvbXBvbmVudElucHV0TmFtZSxcclxuICAgICAgICBoZWFkZXJEYXRhOiBpdGVtLFxyXG4gICAgICAgIGN1c3RvbUNvbXBvbmVudDogdGhpcy5zbWFydEdyaWQhLmV4cGFuZGFibGVDb21wb25lbnQsXHJcbiAgICAgICAgaW5wdXROYW1lOiB0aGlzLnNtYXJ0R3JpZCEuZXhwYW5kYWJsZUNvbXBvbmVudElucHV0TmFtZSxcclxuICAgICAgICBkYXRhOiBpdGVtLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbmRlckNhcmRzKCk6IHZvaWQge1xyXG4gICAgLy8gVE9ET1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjb25zdHJ1Y3RIZWFkZXIoKTogUHJvbWlzZTxTbWFydFRhYmxlSGVhZGVyW10+IHtcclxuICAgIGxldCBoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXJbXSA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnBhZ2Uucm93cyAmJiB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnBhZ2Uucm93cy5sZW5ndGgpIHtcclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgICAgdGhpcy5zbWFydEdyaWQhLmdyaWRNb2RlbC5wYWdlLnJvd3MubWFwKGFzeW5jIChncmlkUm93OiBHcmlkUm93KSA9PiB7XHJcbiAgICAgICAgICBsZXQgbmV3VWlBY3Rpb25zID0gZ3JpZFJvdy5hY3Rpb25zPy5maWx0ZXIoXHJcbiAgICAgICAgICAgICh1aUFjdGlvbjogYW55KSA9PiAhdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JzLmdldCh1aUFjdGlvbi5jb2RlISlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgaWYgKG5ld1VpQWN0aW9ucykge1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICBuZXdVaUFjdGlvbnMubWFwKGFzeW5jICh1aUFjdGlvbjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGVzY3JpcHRvciA9XHJcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc21hcnRHcmlkIS51aUFjdGlvbkRlc2NyaXB0b3JTZXJ2aWNlLmdldEFjdGlvbkRlc2NyaXB0b3IodWlBY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51aUFjdGlvbkRlc2NyaXB0b3JzLnNldCh1aUFjdGlvbi5jb2RlISwgZGVzY3JpcHRvcik7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXchLm9yZGVyZWRDb2x1bW5OYW1lcy5tYXAoYXN5bmMgKHByb3BlcnR5TmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgbGV0IGRlc2NDb2x1bW46IGFueSA9IHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwudmlldyEuZGVzY3JpcHRvciEuY29sdW1ucyEuZmluZChcclxuICAgICAgICAgIChjb2xEZXNjcmlwdG9yOiBHcmlkQ29sdW1uTWV0YSkgPT4gY29sRGVzY3JpcHRvci5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgbGV0IGN1c3RvbVRhYmxlSGVhZGVyID0gdGhpcy5zbWFydEdyaWQhLnRhYmxlQ29uZmlnPy5jdXN0b21TbWFydFRhYmxlSGVhZGVycz8uZmluZChcclxuICAgICAgICAgIChoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IGhlYWRlci5wcm9wZXJ0eU5hbWUgPT09IHByb3BlcnR5TmFtZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGRlc2NDb2x1bW4pIHtcclxuICAgICAgICAgIGxldCBmaWx0ZXJFeHByZXNzaW9uT3JkZXJCeUl0ZW0gPSB0aGlzLnNtYXJ0R3JpZCEuZ3JpZE1vZGVsLnZpZXc/Lm9yZGVyQnlMaXN0Py5maW5kKFxyXG4gICAgICAgICAgICAoZmlsdGVyRXhwcmVzc2lvbjogRmlsdGVyRXhwcmVzc2lvbk9yZGVyQnkpID0+XHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbi5wcm9wZXJ0eU5hbWUgPT09IGRlc2NDb2x1bW4ucHJvcGVydHlOYW1lXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgbGV0IG9yZGVyO1xyXG4gICAgICAgICAgbGV0IG9yZGVyTnVtYmVyO1xyXG4gICAgICAgICAgaWYgKGZpbHRlckV4cHJlc3Npb25PcmRlckJ5SXRlbSkge1xyXG4gICAgICAgICAgICBvcmRlciA9XHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbk9yZGVyQnlJdGVtLm9yZGVyID09PSBGaWx0ZXJFeHByZXNzaW9uT3JkZXJCeS5PcmRlckVudW0uQXNjXHJcbiAgICAgICAgICAgICAgICA/IFNtYXJ0VGFibGVPcmRlci5BU0NcclxuICAgICAgICAgICAgICAgIDogU21hcnRUYWJsZU9yZGVyLkRFU0M7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsLnZpZXchLm9yZGVyQnlMaXN0Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICBvcmRlck51bWJlciA9IHRoaXMuc2VydmljZS5ncmlkTW9kZWwudmlldyEub3JkZXJCeUxpc3QuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgICAgKGZpbHRlcjogRmlsdGVyRXhwcmVzc2lvbk9yZGVyQnkpID0+IGZpbHRlci5wcm9wZXJ0eU5hbWUgPT09IGRlc2NDb2x1bW4ucHJvcGVydHlOYW1lXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBvcmRlck51bWJlcisrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBvcmlnbmFsTGFiZWwgPSBjdXN0b21UYWJsZUhlYWRlcj8ubGFiZWwgPz8gZGVzY0NvbHVtbi5sYWJlbDtcclxuICAgICAgICAgIGxldCBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnNtYXJ0R3JpZCEudHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgICAgICAgICBsYWJlbCA9IGF3YWl0IHRoaXMuc21hcnRHcmlkIS50cmFuc2xhdGVTZXJ2aWNlPy5nZXQob3JpZ25hbExhYmVsKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxhYmVsID0gb3JpZ25hbExhYmVsO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGxldCBwcm9wZXJ0aWVzID0gY3VzdG9tVGFibGVIZWFkZXI/LnByb3BlcnRpZXM7XHJcbiAgICAgICAgICBpZiAoIXByb3BlcnRpZXMpIHtcclxuICAgICAgICAgICAgaWYgKGRlc2NDb2x1bW4udHlwZUNsYXNzID09PSAnamF2YS50aW1lLk9mZnNldERhdGVUaW1lJykge1xyXG4gICAgICAgICAgICAgIHByb3BlcnRpZXMgPSB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBTbWFydFRhYmxlSGVhZGVyUHJvcGVydHlUeXBlLkRBVEVUSU1FLFxyXG4gICAgICAgICAgICAgICAgZGF0ZUZvcm1hdDogJ3l5eXkuTU0uZGQgSDptbScsXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChkZXNjQ29sdW1uLnR5cGVDbGFzcyA9PT0gJ2phdmEudGltZS5PZmZzZXREYXRlJykge1xyXG4gICAgICAgICAgICAgIHByb3BlcnRpZXMgPSB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBTbWFydFRhYmxlSGVhZGVyUHJvcGVydHlUeXBlLkRBVEVUSU1FLFxyXG4gICAgICAgICAgICAgICAgZGF0ZUZvcm1hdDogJ3l5eXkuTU0uZGQnLFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBoZWFkZXIucHVzaCh7XHJcbiAgICAgICAgICAgIC4uLmN1c3RvbVRhYmxlSGVhZGVyLFxyXG4gICAgICAgICAgICBsYWJlbDogbGFiZWwsXHJcbiAgICAgICAgICAgIHByb3BlcnR5TmFtZTogJ2RhdGEuJyArIGRlc2NDb2x1bW4ucHJvcGVydHlOYW1lLFxyXG4gICAgICAgICAgICBvcmRlcixcclxuICAgICAgICAgICAgb3JkZXJOdW1iZXIsXHJcbiAgICAgICAgICAgIHByb3BlcnRpZXMsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIGxldCBjb21wbGVtZW50ID0gdGhpcy5zbWFydEdyaWQhLnRhYmxlQ29uZmlnPy5jdXN0b21TbWFydFRhYmxlSGVhZGVycz8uZmlsdGVyKFxyXG4gICAgICAodGFibGVIZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+XHJcbiAgICAgICAgIWhlYWRlci5zb21lKCh0SDogU21hcnRUYWJsZUhlYWRlcikgPT4gdEgucHJvcGVydHlOYW1lLmluY2x1ZGVzKHRhYmxlSGVhZGVyLnByb3BlcnR5TmFtZSkpXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChjb21wbGVtZW50KSB7XHJcbiAgICAgIGhlYWRlci5wdXNoKC4uLmNvbXBsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0R3JpZCEub3B0aW9ucz8uc2ltcGxlQnV0dG9ucykge1xyXG4gICAgICB0aGlzLnNtYXJ0R3JpZCEub3B0aW9ucy5zaW1wbGVCdXR0b25zLmZvckVhY2goKHVpQWN0aW9uQ29kZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaGVhZGVyLnB1c2goe1xyXG4gICAgICAgICAgbGFiZWw6ICcnLFxyXG4gICAgICAgICAgcHJvcGVydHlOYW1lOiAnc2ltcGxlX2J1dHRvbnMnLFxyXG4gICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogU21hcnRUYWJsZUJ1dHRvblR5cGUuUkFJU0VELFxyXG4gICAgICAgICAgICAgIGNhbGxiYWNrOiB0aGlzLmV4ZWN1dGUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5idXR0b25UcmFuc2xhdG9yKHsgY29kZTogdWlBY3Rpb25Db2RlIH0pLFxyXG4gICAgICAgICAgICAgIGFyZ3M6IFtcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgY29kZTogdWlBY3Rpb25Db2RlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgICAgICAgICAgc2hvd0J1dHRvbklmOiAocm93OiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICByb3cuYWN0aW9ucy5zb21lKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uY29kZSA9PT0gdWlBY3Rpb25Db2RlO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWhlYWRlci5zb21lKChoZWFkZXI6IFNtYXJ0VGFibGVIZWFkZXIpID0+IGhlYWRlci5wcm9wZXJ0eU5hbWUgPT09ICdteV9tZW51JykpIHtcclxuICAgICAgaWYgKHRoaXMuc21hcnRHcmlkIS5vcHRpb25zPy5yb3dVaUFjdGlvblR5cGUgPT09IEdyaWRVaUFjdGlvblR5cGUuUE9QVVBfTUVOVSkge1xyXG4gICAgICAgIGhlYWRlci5wdXNoKHtcclxuICAgICAgICAgIGxhYmVsOiAnJyxcclxuICAgICAgICAgIHByb3BlcnR5TmFtZTogJ215X21lbnUnLFxyXG4gICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogU21hcnRUYWJsZUJ1dHRvblR5cGUuTUVOVSxcclxuICAgICAgICAgICAgICBjYWxsYmFjazogdGhpcy5leGVjdXRlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgaWNvbjogJ21vcmVfdmVydCcsXHJcbiAgICAgICAgICAgICAgbWVudUl0ZW1CdXR0b25zUHJvcGVydHlOYW1lOiAnYWN0aW9ucycsXHJcbiAgICAgICAgICAgICAgdHJhbnNsYXRvcjogdGhpcy5idXR0b25UcmFuc2xhdG9yLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgYXJnczogW10sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgICAgaXNTb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaGVhZGVyO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG9uQ2hhbmdlUGFnZShldmVudDogUGFnZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgb2Zmc2V0ID0gZXZlbnQ/LnBhZ2VTaXplICogZXZlbnQ/LnBhZ2VJbmRleDtcclxuICAgIGxldCBsaW1pdCA9IGV2ZW50LnBhZ2VTaXplO1xyXG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnNldFBhZ2UoXHJcbiAgICAgIHRoaXMuc21hcnRHcmlkIS5ncmlkTW9kZWwudmlld1V1aWQhLFxyXG4gICAgICB0aGlzLnNtYXJ0R3JpZCEuZ3JpZElkZW50aWZpZXIsXHJcbiAgICAgIG9mZnNldC50b1N0cmluZygpLFxyXG4gICAgICBsaW1pdC50b1N0cmluZygpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlKGFyZ3M6IGFueVtdLCByb3c6IGFueSwgdWlBY3Rpb246IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IF91aUFjdGlvbjogVWlBY3Rpb247XHJcblxyXG4gICAgaWYgKCF1aUFjdGlvbikge1xyXG4gICAgICB1aUFjdGlvbiA9IHJvdy5hY3Rpb25zLmZpbHRlcigoYWN0aW9uOiBVaUFjdGlvbikgPT4gYWN0aW9uLmNvZGUgPT09IGFyZ3NbMF0uY29kZSlbMF07XHJcbiAgICB9XHJcblxyXG4gICAgX3VpQWN0aW9uID0geyAuLi51aUFjdGlvbiB9O1xyXG4gICAgX3VpQWN0aW9uLnBhcmFtcyA9IHtcclxuICAgICAgLi4udWlBY3Rpb24ucGFyYW1zLFxyXG4gICAgICBtb2RlbDogcm93LFxyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgdWlBY3Rpb25Nb2RlbDogYW55ID0ge1xyXG4gICAgICBzZXJ2aWNlVG9Vc2U6IHRoaXMuc21hcnRHcmlkIS5zZXJ2aWNlVG9Vc2UsXHJcbiAgICAgIHVpQWN0aW9uOiBfdWlBY3Rpb24sXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0R3JpZCEub3B0aW9ucz8udWlBY3Rpb25Nb2RlbENhbGxiYWNrKSB7XHJcbiAgICAgIHVpQWN0aW9uTW9kZWwgPSB0aGlzLnNtYXJ0R3JpZCEub3B0aW9ucyEudWlBY3Rpb25Nb2RlbENhbGxiYWNrKHVpQWN0aW9uTW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc21hcnRHcmlkIS51aUFjdGlvblNlcnZpY2UudWlBY3Rpb25Nb2RlbCA9IHVpQWN0aW9uTW9kZWw7XHJcbiAgICB0aGlzLnNtYXJ0R3JpZCEudWlBY3Rpb25TZXJ2aWNlLmV4ZWN1dGUoX3VpQWN0aW9uLCB7XHJcbiAgICAgIHdpZGdldElkOiB0aGlzLnNtYXJ0R3JpZCEuZ3JpZElkZW50aWZpZXIsXHJcbiAgICAgIG5vZGVJZDogcm93LmlkLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1dHRvblRyYW5zbGF0b3IodWlBY3Rpb246IGFueSk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGVzYyA9IHRoaXMudWlBY3Rpb25EZXNjcmlwdG9ycy5nZXQodWlBY3Rpb24uY29kZSk7XHJcbiAgICByZXR1cm4gZGVzYyA/IGRlc2MudGl0bGUgOiB1aUFjdGlvbi5jb2RlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxheW91dERlZigpOiB0eXBlb2YgU21hcnRMYXlvdXREZWYge1xyXG4gICAgcmV0dXJuIFNtYXJ0TGF5b3V0RGVmO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xpY2soZ3JpZFJvdzogR3JpZFJvdyk6IHZvaWQge1xyXG4gICAgdGhpcy5oYW5kbGVPbkNsaWNrKGdyaWRSb3cpO1xyXG4gIH1cclxuICBwdWJsaWMgb25Eb3VibGVDbGljayhncmlkUm93OiBHcmlkUm93KTogdm9pZCB7XHJcbiAgICB0aGlzLmhhbmRsZU9uQ2xpY2soZ3JpZFJvdyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZU9uQ2xpY2soZ3JpZFJvdzogR3JpZFJvdyk6IHZvaWQge1xyXG4gICAgbGV0IGRlZmF1bHRSb3dBY3Rpb246IFVpQWN0aW9uIHwgdW5kZWZpbmVkO1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS5ncmlkTW9kZWw/LmRlZmF1bHRSb3dBY3Rpb25zKSB7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsLmRlZmF1bHRSb3dBY3Rpb25zLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRSb3dBY3Rpb25Db2RlID0gdGhpcy5zZXJ2aWNlLmdyaWRNb2RlbC5kZWZhdWx0Um93QWN0aW9uc1tpbmRleF07XHJcblxyXG4gICAgICAgIGRlZmF1bHRSb3dBY3Rpb24gPSBncmlkUm93LmFjdGlvbnMuZmluZChcclxuICAgICAgICAgICh1aUFjdGlvbjogVWlBY3Rpb24pID0+IHVpQWN0aW9uLmNvZGUgPT09IGRlZmF1bHRSb3dBY3Rpb25Db2RlXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZGVmYXVsdFJvd0FjdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5leGVjdXRlKFtdLCBncmlkUm93LCBkZWZhdWx0Um93QWN0aW9uKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgb25TZWxlY3Qocm93SWQ6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5pc0Jsb2NrZWQgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IHJvdyA9IHRoaXMuc2VydmljZS5ncmlkTW9kZWwucGFnZS5yb3dzPy5maW5kKChncmlkUm93OiBHcmlkUm93KSA9PiBncmlkUm93LmlkID09PSByb3dJZCk7XHJcbiAgICBjb25zdCB2aWV3Q29udGV4dENoYW5nZSA9IGF3YWl0IHRoaXMuc2VydmljZS5zZWxlY3QodGhpcy5zbWFydEdyaWQhLCByb3chKTtcclxuICAgIHRoaXMuc21hcnRHcmlkIS52aWV3Q29udGV4dFNlcnZpY2UuaGFuZGxlQ2hhbmdlcyh2aWV3Q29udGV4dENoYW5nZS5jaGFuZ2VzKTtcclxuXHJcbiAgICB0aGlzLnJlZnJlc2goKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBhc3luYyBvblNlbGVjdEFsbChzZWxlY3RlZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5pc0Jsb2NrZWQgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IHZpZXdDb250ZXh0Q2hhbmdlID0gYXdhaXQgdGhpcy5zZXJ2aWNlLnNlbGVjdEFsbCh0aGlzLnNtYXJ0R3JpZCEsIHNlbGVjdGVkKTtcclxuICAgIHRoaXMuc21hcnRHcmlkIS52aWV3Q29udGV4dFNlcnZpY2UuaGFuZGxlQ2hhbmdlcyh2aWV3Q29udGV4dENoYW5nZS5jaGFuZ2VzKTtcclxuXHJcbiAgICB0aGlzLnJlZnJlc2goKTtcclxuICB9XHJcbiAgZWRpdENvbHVtbnMoKTogdm9pZCB7XHJcbiAgICBsZXQgZGlhbG9nRGF0YTogU21hcnREaWFsb2dEYXRhID0ge1xyXG4gICAgICBjb250ZW50OiB7XHJcbiAgICAgICAgdGl0bGU6ICdPc3psb3BvayB0ZXN0cmVzemFiw6FzYScsXHJcbiAgICAgIH0sXHJcbiAgICAgIHNpemU6IHt9LFxyXG4gICAgICBjdXN0b21Db21wb25lbnQ6IFRhYmxlTGF5b3V0RGVmaW5lckNvbXBvbmVudCxcclxuICAgICAgY3VzdG9tQ29tcG9uZW50SW5wdXRzOiB7XHJcbiAgICAgICAgY29uZmlnOiB7XHJcbiAgICAgICAgICB1dWlkOiB0aGlzLnV1aWQsXHJcbiAgICAgICAgICBpZGVudGlmaWVyOiB0aGlzLnNtYXJ0R3JpZCEuZ3JpZElkZW50aWZpZXIsXHJcbiAgICAgICAgICB2aWV3OiB0aGlzLnNlcnZpY2UuZ3JpZE1vZGVsLnZpZXcsXHJcbiAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnNlcnZpY2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmRpYWxvZy5vcGVuKFRhYmxlTGF5b3V0RGVmaW5lckNvbXBvbmVudCwgeyBkYXRhOiBkaWFsb2dEYXRhIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwic21hcnRHcmlkXCIgY2xhc3M9XCJzbWFydEdyaWQtY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cInNtYXJ0LWdyaWQtZWRpdC1idXR0b25cIiAqbmdJZj1cInNtYXJ0R3JpZC5zaG93RWRpdENvbHVtbnNcIj5cclxuICAgIDxidXR0b24gKGNsaWNrKT1cImVkaXRDb2x1bW5zKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgT3N6bG9wb2sgdGVzdHJlc3phYsOhc2FcclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gPGRpdiBbbmdDbGFzc109XCJpc0Jsb2NrZWQgPyAnYmxvY2tlZCcgOiAnJ1wiPjwvZGl2PiAtLT5cclxuICA8ZGl2IGNsYXNzPVwic21hcnRHcmlkQ29udGVudFwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cInNtYXJ0R3JpZC5zaG93UmVzdWx0Q291bnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic21hcnRHcmlkLWRhdGEtbnVtYmVyXCI+XHJcbiAgICAgICAgICB7eyBzbWFydEdyaWQuZ3JpZE1vZGVsLnRvdGFsUm93Q291bnQgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwic21hcnQtZ3JpZC10YWJsZS1jb250YWluZXJcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlICN0YWJsZT48L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cInNtYXJ0R3JpZC5sYXlvdXREZWYgPT09IGxheW91dERlZigpLkVYUEFOREFCTEVcIj5cclxuICAgICAgPHNtYXJ0LWV4cGFuZGFibGUtc2VjdGlvblxyXG4gICAgICAgICNncmlkRXhwYW5kYWJsZVNlY3Rpb25cclxuICAgICAgICAqbmdGb3I9XCJsZXQgZXhwYW5kYWJsZVNlY3Rpb24gb2YgZXhwYW5kYWJsZVNlY3Rpb25zXCJcclxuICAgICAgICBbZGF0YV09XCJleHBhbmRhYmxlU2VjdGlvblwiXHJcbiAgICAgID48L3NtYXJ0LWV4cGFuZGFibGUtc2VjdGlvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cInNtYXJ0R3JpZC5sYXlvdXREZWYgPT09IGxheW91dERlZigpLkNBUkRcIlxyXG4gICAgICBjbGFzcz1cImNhcmRzLWNvbnRhaW5lclwiXHJcbiAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJzpcclxuICAgICAgICAgIHNtYXJ0R3JpZC5udW1iZXJPZkNvbHVtbiAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgID8gJ3JlcGVhdCgnICsgc21hcnRHcmlkLm51bWJlck9mQ29sdW1uICsgJywgMWZyKSdcclxuICAgICAgICAgICAgOiAnJ1xyXG4gICAgICB9XCJcclxuICAgID5cclxuICAgICAgPGFwcC1zbWFydC1ncmlkLWNhcmRcclxuICAgICAgICBjbGFzcz1cInNtYXJ0R3JpZC1jYXJkLWNvbnRhaW5lclwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IHRhc2sgb2Ygc21hcnRHcmlkLmdyaWRNb2RlbC5wYWdlLnJvd3NcIlxyXG4gICAgICAgIFtpdGVtXT1cInRhc2tcIlxyXG4gICAgICAgIFtzbWFydEdyaWRdPVwic21hcnRHcmlkXCJcclxuICAgICAgPjwvYXBwLXNtYXJ0LWdyaWQtY2FyZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bWF0LXBhZ2luYXRvclxyXG4gICAgKm5nSWY9XCJzbWFydEdyaWQucGFnaW5hdG9yXCJcclxuICAgICNwYWdpbmF0b3JcclxuICAgIFtsZW5ndGhdPVwibGVuZ3RoXCJcclxuICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiXHJcbiAgICAocGFnZSk9XCJvbkNoYW5nZVBhZ2UoJGV2ZW50KVwiXHJcbiAgPjwvbWF0LXBhZ2luYXRvcj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -52,11 +52,8 @@ export class SmartGridService {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
SmartGridService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridService, deps: [{ token: i1.GridService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
55
|
-
SmartGridService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridService
|
|
55
|
+
SmartGridService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridService });
|
|
56
56
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridService, decorators: [{
|
|
57
|
-
type: Injectable
|
|
58
|
-
args: [{
|
|
59
|
-
providedIn: 'root',
|
|
60
|
-
}]
|
|
57
|
+
type: Injectable
|
|
61
58
|
}], ctorParameters: function () { return [{ type: i1.GridService }]; } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZ3JpZC9zbWFydC1ncmlkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBTTlDLE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsWUFBb0IsR0FBZ0I7UUFBaEIsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUZwQyxxQkFBZ0IsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVULENBQUM7SUFFeEMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFZLEVBQUUsY0FBc0I7UUFDN0MsSUFBSSxlQUFlLEdBQUcsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQ1gsSUFBWSxFQUNaLGNBQXNCLEVBQ3RCLE1BQWMsRUFDZCxLQUFhO1FBRWIsTUFBTSxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQW9CLEVBQUUsY0FBOEI7UUFDN0QsSUFBSSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRzthQUNqQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFTLEVBQUUsU0FBUyxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUM7YUFDL0UsU0FBUyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFvQixFQUFFLEtBQWE7UUFDOUMsT0FBTyxNQUFNLElBQUksQ0FBQyxHQUFHO2FBQ2xCLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVMsRUFBRSxTQUFTLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQzthQUN0RSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFvQixFQUFFLE9BQWdCO1FBQ2pELE9BQU8sQ0FBQyxRQUFRLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ3JDLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRzthQUNsQixNQUFNLENBQ0wsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFTLEVBQzdCLFNBQVMsQ0FBQyxjQUFjLEVBQ3hCLE9BQU8sQ0FBQyxFQUFHLEVBQ1gsT0FBTyxDQUFDLFFBQVEsQ0FDakI7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFvQixFQUFFLFFBQWlCO1FBQ3JELE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRzthQUNsQixTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFTLEVBQUUsU0FBUyxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUM7YUFDNUUsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBWSxFQUFFLFVBQWtCLEVBQUUsVUFBMEI7UUFDdkUsSUFBSSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RGLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxVQUFVLENBQUMsU0FBZ0MsRUFBRSxNQUFjO1FBQ2pFLElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1NBQzlCO2FBQU07WUFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLDJDQUEyQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ3JFO0lBQ0gsQ0FBQzs7NkdBL0RVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20sIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgR3JpZE1vZGVsLCBHcmlkUm93LCBHcmlkU2VydmljZSwgR3JpZFVwZGF0ZURhdGEgfSBmcm9tICcuL2FwaS9ncmlkLWFwaSc7XHJcbmltcG9ydCB7IFNtYXJ0R3JpZENvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydEdyaWQgfSBmcm9tICcuL21vZGVscy9tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTbWFydEdyaWRTZXJ2aWNlIHtcclxuICBncmlkTW9kZWxDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuICBncmlkTW9kZWwhOiBHcmlkTW9kZWw7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGk6IEdyaWRTZXJ2aWNlKSB7fVxyXG5cclxuICBhc3luYyBsb2FkKHV1aWQ6IHN0cmluZywgZ3JpZElkZW50aWZpZXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IGdyaWRNb2RlbFJlc3VsdCA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5hcGkubG9hZCh1dWlkLCBncmlkSWRlbnRpZmllcikpO1xyXG4gICAgdGhpcy51cGRhdGVHcmlkKGdyaWRNb2RlbFJlc3VsdCwgJ2xvYWQnKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNldFBhZ2UoXHJcbiAgICB1dWlkOiBzdHJpbmcsXHJcbiAgICBncmlkSWRlbnRpZmllcjogc3RyaW5nLFxyXG4gICAgb2Zmc2V0OiBzdHJpbmcsXHJcbiAgICBsaW1pdDogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCBsYXN0VmFsdWVGcm9tKHRoaXMuYXBpLnNldFBhZ2UodXVpZCwgZ3JpZElkZW50aWZpZXIsIG9mZnNldCwgbGltaXQpKTtcclxuICAgIGF3YWl0IHRoaXMubG9hZCh1dWlkLCBncmlkSWRlbnRpZmllcik7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzb3J0KHNtYXJ0R3JpZDogU21hcnRHcmlkLCBncmlkVXBkYXRlRGF0YTogR3JpZFVwZGF0ZURhdGEpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBncmlkTW9kZWxSZXN1bHQgPSBhd2FpdCB0aGlzLmFwaVxyXG4gICAgICAudXBkYXRlKHNtYXJ0R3JpZC5ncmlkTW9kZWwudmlld1V1aWQhLCBzbWFydEdyaWQuZ3JpZElkZW50aWZpZXIsIGdyaWRVcGRhdGVEYXRhKVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUdyaWQoZ3JpZE1vZGVsUmVzdWx0LCAnc29ydCcpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZXhwYW5kKHNtYXJ0R3JpZDogU21hcnRHcmlkLCByb3dJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmFwaVxyXG4gICAgICAuZXhwYW5kKHNtYXJ0R3JpZC5ncmlkTW9kZWwudmlld1V1aWQhLCBzbWFydEdyaWQuZ3JpZElkZW50aWZpZXIsIHJvd0lkKVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZWxlY3Qoc21hcnRHcmlkOiBTbWFydEdyaWQsIGdyaWRSb3c6IEdyaWRSb3cpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgZ3JpZFJvdy5zZWxlY3RlZCA9ICFncmlkUm93LnNlbGVjdGVkO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYXBpXHJcbiAgICAgIC5zZWxlY3QoXHJcbiAgICAgICAgc21hcnRHcmlkLmdyaWRNb2RlbC52aWV3VXVpZCEsXHJcbiAgICAgICAgc21hcnRHcmlkLmdyaWRJZGVudGlmaWVyLFxyXG4gICAgICAgIGdyaWRSb3cuaWQhLFxyXG4gICAgICAgIGdyaWRSb3cuc2VsZWN0ZWRcclxuICAgICAgKVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZWxlY3RBbGwoc21hcnRHcmlkOiBTbWFydEdyaWQsIHNlbGVjdGVkOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmFwaVxyXG4gICAgICAuc2VsZWN0QWxsKHNtYXJ0R3JpZC5ncmlkTW9kZWwudmlld1V1aWQhLCBzbWFydEdyaWQuZ3JpZElkZW50aWZpZXIsIHNlbGVjdGVkKVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGUodXVpZDogc3RyaW5nLCBpZGVudGlmaWVyOiBzdHJpbmcsIHVwZGF0ZURhdGE6IEdyaWRVcGRhdGVEYXRhKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgZ3JpZE1vZGVsUmVzdWx0ID0gYXdhaXQgdGhpcy5hcGkudXBkYXRlKHV1aWQsIGlkZW50aWZpZXIsIHVwZGF0ZURhdGEpLnRvUHJvbWlzZSgpO1xyXG4gICAgdGhpcy51cGRhdGVHcmlkKGdyaWRNb2RlbFJlc3VsdCwgJ3VwZGF0ZScpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVHcmlkKGdyaWRNb2RlbDogR3JpZE1vZGVsIHwgdW5kZWZpbmVkLCBtZXRob2Q6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGdyaWRNb2RlbCkge1xyXG4gICAgICB0aGlzLmdyaWRNb2RlbCA9IGdyaWRNb2RlbDtcclxuICAgICAgdGhpcy5ncmlkTW9kZWxDaGFuZ2VkLm5leHQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEdyaWRNb2RlbCBpcyB1bmRlZmluZWQgaW4gc2VydmljZSBhZnRlciAke21ldGhvZH0hYCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -10548,18 +10548,14 @@ class SmartGridService {
|
|
|
10548
10548
|
}
|
|
10549
10549
|
}
|
|
10550
10550
|
SmartGridService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridService, deps: [{ token: GridService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10551
|
-
SmartGridService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridService
|
|
10551
|
+
SmartGridService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridService });
|
|
10552
10552
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridService, decorators: [{
|
|
10553
|
-
type: Injectable
|
|
10554
|
-
args: [{
|
|
10555
|
-
providedIn: 'root',
|
|
10556
|
-
}]
|
|
10553
|
+
type: Injectable
|
|
10557
10554
|
}], ctorParameters: function () { return [{ type: GridService }]; } });
|
|
10558
10555
|
|
|
10559
10556
|
class TableLayoutDefinerComponent {
|
|
10560
|
-
constructor(data,
|
|
10557
|
+
constructor(data, dialogRef) {
|
|
10561
10558
|
this.data = data;
|
|
10562
|
-
this.service = service;
|
|
10563
10559
|
this.dialogRef = dialogRef;
|
|
10564
10560
|
this._destroy$ = new Subject();
|
|
10565
10561
|
this.orderedColumnsAsObject = {};
|
|
@@ -10679,7 +10675,7 @@ class TableLayoutDefinerComponent {
|
|
|
10679
10675
|
orderByList: this.view.orderByList,
|
|
10680
10676
|
orderedColumnNames: this.view.orderedColumnNames,
|
|
10681
10677
|
};
|
|
10682
|
-
yield this.service.update(config.uuid, config.identifier, updateData);
|
|
10678
|
+
yield this.data.customComponentInputs.config.service.update(config.uuid, config.identifier, updateData);
|
|
10683
10679
|
this.dialogRef.close();
|
|
10684
10680
|
});
|
|
10685
10681
|
}
|
|
@@ -10716,7 +10712,7 @@ class TableLayoutDefinerComponent {
|
|
|
10716
10712
|
return true;
|
|
10717
10713
|
}
|
|
10718
10714
|
}
|
|
10719
|
-
TableLayoutDefinerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TableLayoutDefinerComponent, deps: [{ token: MAT_DIALOG_DATA }, { token:
|
|
10715
|
+
TableLayoutDefinerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TableLayoutDefinerComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$2.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
10720
10716
|
TableLayoutDefinerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TableLayoutDefinerComponent, selector: "app-table-layout-definer", viewQueries: [{ propertyName: "formChildren", predicate: ["forms"], descendants: true }], ngImport: i0, template: "<div class=\"edit-columns-container\">\r\n <div class=\"example-list\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <div class=\"column-meta-row\" *ngFor=\"let col of forms\" cdkDrag cdkDragLockAxis=\"y\">\r\n <smart-icon color=\"primary\" icon=\"drag_handle\"></smart-icon>\r\n <smartform class=\"form\" #forms [smartForm]=\"col\"></smartform>\r\n <button\r\n *ngIf=\"isAlwaysShow(col) && (view?.orderedColumnNames)!.length > 1\"\r\n (click)=\"removeColumn(col)\"\r\n mat-icon-button\r\n color=\"primary\"\r\n >\r\n <mat-icon>delete_outline</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div appStickyMenu class=\"button-toolbar\">\r\n <button mat-icon-button color=\"primary\" [disabled]=\"addDisabled\" (click)=\"addColumn()\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button mat-raised-button color=\"primary\" [disabled]=\"disableSave\" (click)=\"submit()\">\r\n Ment\u00E9s\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".edit-columns-container{padding:1rem;display:flex;flex-direction:column;gap:1rem}.row{display:flex;flex-direction:row;gap:.5rem}.form{flex:1}.fields{padding:1rem 0;display:flex;flex-direction:column;gap:.5rem}.example-list{display:flex;flex-direction:column;gap:1rem;width:500px;max-width:100%;max-height:80vh;overflow:auto}.column-meta-row{display:flex;flex-direction:row;gap:1rem;justify-content:space-between;border:solid 1px #ccc;padding:1rem}.buttonsContainer{display:flex;flex-direction:row;justify-content:space-between}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}h2{margin:0}.button-toolbar{display:flex;flex-direction:row;justify-content:space-between;padding:.5rem}\n"], components: [{ type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { type: SmartformComponent, selector: "smartform", inputs: ["smartForm"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2$2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
10721
10717
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TableLayoutDefinerComponent, decorators: [{
|
|
10722
10718
|
type: Component,
|
|
@@ -10725,7 +10721,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
10725
10721
|
return [{ type: undefined, decorators: [{
|
|
10726
10722
|
type: Inject,
|
|
10727
10723
|
args: [MAT_DIALOG_DATA]
|
|
10728
|
-
}] }, { type:
|
|
10724
|
+
}] }, { type: i1$2.MatDialogRef }];
|
|
10729
10725
|
}, propDecorators: { formChildren: [{
|
|
10730
10726
|
type: ViewChildren,
|
|
10731
10727
|
args: ['forms']
|
|
@@ -11588,17 +11584,11 @@ class SmartGridComponent {
|
|
|
11588
11584
|
uuid: this.uuid,
|
|
11589
11585
|
identifier: this.smartGrid.gridIdentifier,
|
|
11590
11586
|
view: this.service.gridModel.view,
|
|
11587
|
+
service: this.service,
|
|
11591
11588
|
},
|
|
11592
11589
|
},
|
|
11593
11590
|
};
|
|
11594
|
-
|
|
11595
|
-
dialogRef
|
|
11596
|
-
.afterClosed()
|
|
11597
|
-
.pipe(takeUntil(this._destroy$))
|
|
11598
|
-
.subscribe((result) => {
|
|
11599
|
-
this.service.gridModelChanged.next();
|
|
11600
|
-
dialogRef.close();
|
|
11601
|
-
});
|
|
11591
|
+
this.dialog.open(TableLayoutDefinerComponent, { data: dialogData });
|
|
11602
11592
|
}
|
|
11603
11593
|
}
|
|
11604
11594
|
SmartGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartGridComponent, deps: [{ token: SmartGridService }, { token: ComponentFactoryService }, { token: i1$2.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|