basesite-shared-grid-lib 15.10.48 → 15.10.50
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/basesite-shared-grid-lib-15.10.50.tgz +0 -0
- package/esm2020/lib/grid-library.component.mjs +6 -3
- package/esm2020/lib/grid-library.service.mjs +3 -3
- package/esm2020/lib/helpers/oDataProvider.mjs +12 -4
- package/fesm2015/basesite-shared-grid-lib.mjs +18 -7
- package/fesm2015/basesite-shared-grid-lib.mjs.map +1 -1
- package/fesm2020/basesite-shared-grid-lib.mjs +18 -7
- package/fesm2020/basesite-shared-grid-lib.mjs.map +1 -1
- package/lib/grid-library.component.d.ts +2 -1
- package/lib/grid-library.service.d.ts +1 -1
- package/package.json +1 -1
- package/basesite-shared-grid-lib-15.10.48.tgz +0 -0
|
Binary file
|
|
@@ -368,7 +368,7 @@ export class GridLibraryComponent {
|
|
|
368
368
|
getGridState() {
|
|
369
369
|
if (this.gridId && this.loggedInUser) {
|
|
370
370
|
this.gridService
|
|
371
|
-
.getGridState(this.gridId, this.loggedInUser)
|
|
371
|
+
.getGridState(this.gridId, this.loggedInUser, this.siteId)
|
|
372
372
|
.pipe(takeUntil(this.unsubscribe$))
|
|
373
373
|
.subscribe((response) => {
|
|
374
374
|
if (response.status == 1 &&
|
|
@@ -398,6 +398,7 @@ export class GridLibraryComponent {
|
|
|
398
398
|
gridConfig: JSON.stringify(columnState),
|
|
399
399
|
uiGridId: this.gridId,
|
|
400
400
|
userId: this.loggedInUser,
|
|
401
|
+
siteId: this.siteId
|
|
401
402
|
};
|
|
402
403
|
if (event.type === 'columnPinned' || (event.type === 'filterChanged' || event.type === 'sortChanged') || event.type === 'columnResized' || event.type === 'columnMoved' || event.type === 'columnVisible') {
|
|
403
404
|
this.gridColumnState = columnState;
|
|
@@ -493,7 +494,7 @@ export class GridLibraryComponent {
|
|
|
493
494
|
}
|
|
494
495
|
}
|
|
495
496
|
GridLibraryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: GridLibraryComponent, deps: [{ token: i1.GridLibraryService }, { token: i2.ColumnValueFormatter }, { token: i3.TokenSharingService }], target: i0.ɵɵFactoryTarget.Component });
|
|
496
|
-
GridLibraryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: GridLibraryComponent, selector: "lib-basesite-shared-grid-lib", inputs: { columnDefs: "columnDefs", rowData: "rowData", paginationAutoPageSize: "paginationAutoPageSize", rowSelection: "rowSelection", gridId: "gridId", loggedInUser: "loggedInUser", enableServerSidePaging: "enableServerSidePaging", serverDataUrl: "serverDataUrl", environment: "environment", cacheBlockSize: "cacheBlockSize", rowMultiSelectWithClick: "rowMultiSelectWithClick", floatingFilter: "floatingFilter", token: "token", userRoles: "userRoles" }, outputs: { btnClickHandler: "btnClickHandler", firstDataRendered: "firstDataRendered", filterChanged: "filterChanged", selectionChanged: "selectionChanged" }, usesOnChanges: true, ngImport: i0, template: `
|
|
497
|
+
GridLibraryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: GridLibraryComponent, selector: "lib-basesite-shared-grid-lib", inputs: { columnDefs: "columnDefs", rowData: "rowData", paginationAutoPageSize: "paginationAutoPageSize", rowSelection: "rowSelection", gridId: "gridId", loggedInUser: "loggedInUser", siteId: "siteId", enableServerSidePaging: "enableServerSidePaging", serverDataUrl: "serverDataUrl", environment: "environment", cacheBlockSize: "cacheBlockSize", rowMultiSelectWithClick: "rowMultiSelectWithClick", floatingFilter: "floatingFilter", token: "token", userRoles: "userRoles" }, outputs: { btnClickHandler: "btnClickHandler", firstDataRendered: "firstDataRendered", filterChanged: "filterChanged", selectionChanged: "selectionChanged" }, usesOnChanges: true, ngImport: i0, template: `
|
|
497
498
|
<ag-grid-angular
|
|
498
499
|
#agGrid
|
|
499
500
|
style="width: 100%;height:98.2vh"
|
|
@@ -601,6 +602,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
601
602
|
type: Input
|
|
602
603
|
}], loggedInUser: [{
|
|
603
604
|
type: Input
|
|
605
|
+
}], siteId: [{
|
|
606
|
+
type: Input
|
|
604
607
|
}], enableServerSidePaging: [{
|
|
605
608
|
type: Input
|
|
606
609
|
}], serverDataUrl: [{
|
|
@@ -626,4 +629,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
626
629
|
}], selectionChanged: [{
|
|
627
630
|
type: Output
|
|
628
631
|
}] } });
|
|
629
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYi9zcmMvbGliL2dyaWQtbGlicmFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQWdCdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVuRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBc0QzQyxNQUFNLE9BQU8sb0JBQW9CO0lBNEMvQixZQUNVLFdBQStCLEVBQy9CLGdCQUFzQyxFQUN0QyxvQkFBeUM7UUFGekMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQTNDbkQsaUNBQWlDO1FBQ3hCLDJCQUFzQixHQUFHLElBQUksQ0FBQztRQUM5QixpQkFBWSxHQUFRLFVBQVUsQ0FBQztRQUcvQiwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFHeEMsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0IsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBQ3pDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLGNBQVMsR0FBVSxFQUFFLENBQUM7UUFDL0IsZ0JBQWdCO1FBQ04s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O3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFnR3JpZEFuZ3VsYXIgfSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xyXG5pbXBvcnQge1xyXG4gIENvbERlZixcclxuICBHZXRDb250ZXh0TWVudUl0ZW1zUGFyYW1zLFxyXG4gIEdldFJvd0lkRnVuYyxcclxuICBHZXRSb3dJZFBhcmFtcyxcclxuICBHcmlkQXBpLFxyXG4gIEdyaWRSZWFkeUV2ZW50LFxyXG4gIE1lbnVJdGVtRGVmLFxyXG4gIFBhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJQYXJhbXMsXHJcbiAgUm93TW9kZWxUeXBlLFxyXG4gIFJvd05vZGUsXHJcbiAgVmFsdWVGb3JtYXR0ZXJQYXJhbXMsXHJcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBHcmlkTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuL2dyaWQtbGlicmFyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2RhdGFTZXJ2ZXJTaWRlUHJvdmlkZXIgfSBmcm9tICcuL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBCdXR0b25SZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vcmVuZGVyZXIvYnV0dG9uLXJlbmRlcmVyL2J1dHRvbi1yZW5kZXJlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21Ub29sdGlwIH0gZnJvbSAnLi9yZW5kZXJlci90b29sdGlwLXJlbmRlcmVyL2N1c3RvbS10b29sdGlwLXJlbmRlcmVyJztcclxuaW1wb3J0IHsgRHJvcGRvd25SZW5kZXJlciB9IGZyb20gJy4vcmVuZGVyZXIvZHJvcGRvd24tcmVuZGVyZXIvZHJvcC1kb3duLXJlbmRlcmVyJztcclxuaW1wb3J0IHsgQ29sdW1uVmFsdWVGb3JtYXR0ZXIgfSBmcm9tICcuL2Zvcm1hdHRlcnMvY29sdW1uLXZhbHVlLWZvcm1hdHRlcic7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUb2tlblNoYXJpbmdTZXJ2aWNlIH0gZnJvbSAnLi90b2tlbi1zaGFyaW5nLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYmFzZXNpdGUtc2hhcmVkLWdyaWQtbGliJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGFnLWdyaWQtYW5ndWxhclxyXG4gICAgICAjYWdHcmlkXHJcbiAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0Ojk4LjJ2aFwiXHJcbiAgICAgIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtIHNoYXJlZC1ncmlkLWxpYlwiXHJcbiAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIlxyXG4gICAgICBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcclxuICAgICAgW3Jvd0RhdGFdPVwicm93RGF0YVwiXHJcbiAgICAgIFtyb3dTZWxlY3Rpb25dPVwicm93U2VsZWN0aW9uXCJcclxuICAgICAgW2FuaW1hdGVSb3dzXT1cInRydWVcIlxyXG4gICAgICAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudClcIlxyXG4gICAgICBbcGFnaW5hdGlvbl09XCJ0cnVlXCJcclxuICAgICAgW3BhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJdPVwicGFnaW5hdGlvbk51bWJlckZvcm1hdHRlclwiXHJcbiAgICAgIFtwYWdpbmF0aW9uQXV0b1BhZ2VTaXplXT1cInBhZ2luYXRpb25BdXRvUGFnZVNpemVcIlxyXG4gICAgICBbdG9vbHRpcFNob3dEZWxheV09XCJ0b29sdGlwU2hvd0RlbGF5XCJcclxuICAgICAgW3Rvb2x0aXBIaWRlRGVsYXldPVwidG9vbHRpcEhpZGVEZWxheVwiXHJcbiAgICAgIFtyb3dNb2RlbFR5cGVdPVwicm93TW9kZWxUeXBlXCJcclxuICAgICAgW2NhY2hlQmxvY2tTaXplXT1cImNhY2hlQmxvY2tTaXplXCJcclxuICAgICAgW21heENvbmN1cnJlbnREYXRhc291cmNlUmVxdWVzdHNdPVwiMVwiXHJcbiAgICAgIFtibG9ja0xvYWREZWJvdW5jZU1pbGxpc109XCIxMDBcIlxyXG4gICAgICAoY29sdW1uVmlzaWJsZSk9XCJvblNhdmVHcmlkQ29sdW1uU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgIChjb2x1bW5QaW5uZWQpPVwib25TYXZlR3JpZENvbHVtblN0YXRlKCRldmVudClcIlxyXG4gICAgICAoY29sdW1uUmVzaXplZCk9XCJvblNhdmVHcmlkQ29sdW1uU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgIChjb2x1bW5Nb3ZlZCk9XCJvblNhdmVHcmlkQ29sdW1uU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgIChzb3J0Q2hhbmdlZCk9XCJvblNvcnRDaGFuZ2VkRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgIFtyb3dNdWx0aVNlbGVjdFdpdGhDbGlja109XCJyb3dNdWx0aVNlbGVjdFdpdGhDbGlja1wiXHJcbiAgICAgIFtnZXRDb250ZXh0TWVudUl0ZW1zXT1cImdldENvbnRleHRNZW51SXRlbXNcIlxyXG4gICAgICAoc2VsZWN0aW9uQ2hhbmdlZCk9XCJvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIChmaWx0ZXJDaGFuZ2VkKT1cIm9uRmlsdGVyQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgKGZpcnN0RGF0YVJlbmRlcmVkKT1cIm9uRmlyc3REYXRhUmVuZGVyZWQoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICAgIDxhZy1ncmlkLWFuZ3VsYXJcclxuICAgICAgI2FnR3JpZEhpZGRlblxyXG4gICAgICBzdHlsZT1cImhlaWdodDoxMDB2aDsgd2lkdGg6MTAwJTtkaXNwbGF5Om5vbmVcIlxyXG4gICAgICBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbVwiXHJcbiAgICAgIFtyb3dEYXRhXT1cInJvd0RhdGFIaWRkZW5cIlxyXG4gICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcclxuICAgICAgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiXHJcbiAgICAgIFthbmltYXRlUm93c109XCJmYWxzZVwiXHJcbiAgICAgIFtyb3dTZWxlY3Rpb25dPVwiJ211bHRpcGxlJ1wiXHJcbiAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHlFeGNlbCgkZXZlbnQpXCJcclxuICAgICAgW3N1cHByZXNzU2Nyb2xsT25OZXdEYXRhXT1cInRydWVcIlxyXG4gICAgICBbY2FjaGVRdWlja0ZpbHRlcl09XCJmYWxzZVwiXHJcbiAgICA+XHJcbiAgICA8L2FnLWdyaWQtYW5ndWxhcj5cclxuICBgLFxyXG4gIHN0eWxlczogW10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmlkTGlicmFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIC8vaW5wdXQgcGFyYW1zXHJcbiAgQElucHV0KCkgY29sdW1uRGVmczogYW55O1xyXG4gIEBJbnB1dCgpIHJvd0RhdGE6IGFueTtcclxuICAvL0BJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgPSAyMDtcclxuICBASW5wdXQoKSBwYWdpbmF0aW9uQXV0b1BhZ2VTaXplID0gdHJ1ZTtcclxuICBASW5wdXQoKSByb3dTZWxlY3Rpb246IGFueSA9ICdtdWx0aXBsZSc7XHJcbiAgQElucHV0KCkgZ3JpZElkOiBhbnk7XHJcbiAgQElucHV0KCkgbG9nZ2VkSW5Vc2VyOiBhbnk7XHJcbiAgQElucHV0KCkgZW5hYmxlU2VydmVyU2lkZVBhZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlcnZlckRhdGFVcmwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZW52aXJvbm1lbnQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2FjaGVCbG9ja1NpemU6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KCkgcm93TXVsdGlTZWxlY3RXaXRoQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBmbG9hdGluZ0ZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZXJSb2xlczogYW55W10gPSBbXTtcclxuICAvL2V2ZW50IGVtaXR0ZXJzXHJcbiAgQE91dHB1dCgpIGJ0bkNsaWNrSGFuZGxlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBmaXJzdERhdGFSZW5kZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgLy92aWV3Q2hpbGRzXHJcbiAgLy9AVmlld0NoaWxkKCdhZ0dyaWQnKSBhZ0dyaWQhOiBBZ0dyaWRBbmd1bGFyO1xyXG5cclxuICAvL3BhcmFtdGVyc1xyXG4gIGluaXRpYWxDb2x1bW5EZWY6IGFueSA9IFtdO1xyXG4gIHJvd0RhdGFIaWRkZW46IGFueSA9IFtdO1xyXG4gIGdyaWRDb2x1bW5TdGF0ZTogYW55O1xyXG4gIGV4cG9ydENvbHVtbnNMaXN0OiBhbnkgPSBbXTtcclxuICBwdWJsaWMgdG9vbHRpcFNob3dEZWxheSA9IDA7XHJcbiAgcHVibGljIHRvb2x0aXBIaWRlRGVsYXkgPSAyMDAwO1xyXG4gIHB1YmxpYyByb3dNb2RlbFR5cGU6IFJvd01vZGVsVHlwZSA9ICdjbGllbnRTaWRlJztcclxuICAvL3B1YmxpYyBncmlkUGFnZVNpemU6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBleGNlbEFQSSE6IEdyaWRBcGk7XHJcbiAgcHJpdmF0ZSBncmlkQVBJITpHcmlkQXBpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX0Rlc2lnbl9NYW5hZ2VyID0gJ0Rlc2lnbiBNYW5hZ2VyJztcclxuICBwcml2YXRlIHJlYWRvbmx5IF9JbnRlZ3JhdGlvbl9MZWFkID0gJ0ludGVncmF0aW9uIExlYWQnO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX1Rvb2xfT3duZXIgPSAnVG9vbCBPd25lcic7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfQXJlYV9Db29yZGluYXRvciA9ICdBcmVhIENvb3JkaW5hdG9yJztcclxuICAvL3Vuc3Vic2NyaWJlIHN1YmplY3RcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZExpYnJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmb3JtYXR0ZXJTZXJ2aWNlOiBDb2x1bW5WYWx1ZUZvcm1hdHRlcixcclxuICAgIHByaXZhdGUgX3Rva2VuU2hhcmluZ1NlcnZpY2U6IFRva2VuU2hhcmluZ1NlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG9uU29ydENoYW5nZWRFdmVudChlOmFueSkge1xyXG4gICAgdGhpcy5ncmlkQ29sdW1uU3RhdGUgPSB0aGlzLmdyaWRBUEkuZ2V0U3RhdGUoKTtcclxuICAgIHRoaXMub25TYXZlR3JpZENvbHVtblN0YXRlKGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcclxuICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgZmlsdGVyOiB0cnVlLFxyXG4gICAgdG9vbHRpcENvbXBvbmVudDogQ3VzdG9tVG9vbHRpcCxcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX3Rva2VuU2hhcmluZ1NlcnZpY2UudXBkYXRlVG9rZW4odGhpcy50b2tlbik7XHJcblxyXG4gICAgaWYgKHRoaXMuZW5hYmxlU2VydmVyU2lkZVBhZ2luZyA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMucm93TW9kZWxUeXBlID0gJ3NlcnZlclNpZGUnO1xyXG4gICAgICB0aGlzLnJvd0RhdGEgPSAnJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucm93TW9kZWxUeXBlID0gJ2NsaWVudFNpZGUnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMuZ3JpZFBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMuY2FjaGVCbG9ja1NpemUgPSB0aGlzLmNhY2hlQmxvY2tTaXplID0gMCA/IDEwMCA6IHRoaXMuY2FjaGVCbG9ja1NpemU7XHJcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLnNldEJhc2VVcmwodGhpcy5lbnZpcm9ubWVudCk7XHJcbiAgICAvL3RoaXMuZ2V0R3JpZFN0YXRlKCk7XHJcbiAgICB0aGlzLmdldENvbERlZigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3VzZXJSb2xlcyddPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuaW5pdGlhbENvbHVtbkRlZj8ubGVuZ3RoID4gMCAmJiB0aGlzLnVzZXJSb2xlcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuY29sdW1uRGVmcyA9IHRoaXMuX21hcENvbHVtbkRlZih0aGlzLmluaXRpYWxDb2x1bW5EZWYsIHRoaXMudXNlclJvbGVzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXI6IChcclxuICAgIHBhcmFtczogUGFnaW5hdGlvbk51bWJlckZvcm1hdHRlclBhcmFtc1xyXG4gICkgPT4gc3RyaW5nID0gKHBhcmFtczogUGFnaW5hdGlvbk51bWJlckZvcm1hdHRlclBhcmFtcykgPT4ge1xyXG4gICAgcmV0dXJuICdbJyArIHBhcmFtcy52YWx1ZS50b0xvY2FsZVN0cmluZygpICsgJ10nO1xyXG4gIH07XHJcblxyXG4gIGdldENvbERlZigpIHtcclxuICAgIGlmICh0aGlzLmdyaWRJZCAmJiB0aGlzLmxvZ2dlZEluVXNlcikge1xyXG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlXHJcbiAgICAgICAgLmdldENvbERlZih0aGlzLmdyaWRJZClcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxDb2x1bW5EZWYgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgICAgIGxldCBjb2xkZWY6IENvbERlZltdID0gdGhpcy5fbWFwQ29sdW1uRGVmKHJlc3BvbnNlLnJlc3VsdCwgdGhpcy51c2VyUm9sZXMpLmZpbHRlcigoY29sdW1uOiBhbnkpID0+IGNvbHVtbik7XHJcbiAgICAgICAgICAgIHRoaXMuZXhwb3J0Q29sdW1uc0xpc3QgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcyA9IGNvbGRlZjtcclxuICAgICAgICAgICAvLyB0aGlzLmFnR3JpZC5ncmlkT3B0aW9ucz8uYXBpPy5zZXRDb2x1bW5EZWZzKGNvbGRlZik7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0R3JpZFN0YXRlKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQ29sRGVmIFJlYWQgRXJyb3I9PicsIHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5sb2coJ1BsZWFzZSBwYXNzIHZhbGlkIEdyaWRJZCBhbmQgbG9nZ2VkSW4gdXNlciBJZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0Q29sdW1uVmlzaWJsaXR5U3RhdHVzKGNvbHVtbiA6IGFueSx1c2VyUm9sZXM6YW55KXtcclxuICAgIGxldCBpc0RhY0hpZGRlbiA7XHJcbiAgICBpZiAoY29sdW1uLmlzQnV0dG9uID09PSBmYWxzZSkge1xyXG4gICAgICBpc0RhY0hpZGRlbj0gdGhpcy5jYW5WaWV3RGFjU3RhdHVzKHVzZXJSb2xlcywgY29sdW1uLmZpZWxkKTtcclxuICAgIH1lbHNle1xyXG4gICAgICBpc0RhY0hpZGRlbiA9IHRoaXMuY2FuQ3JlYXRlRGFjKHVzZXJSb2xlcywgY29sdW1uLmZpZWxkKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgY29uc3QgY29sdW1uU3RhdGU6YW55PSB0aGlzLmdyaWRBUEkuZ2V0Q29sdW1uRGVmcygpPy5maW5kKChjb2w6YW55KT0+IGNvbC5maWVsZD09Y29sdW1uLmZpZWxkKTtcclxuICAgIGlmKGNvbHVtblN0YXRlICYmIGNvbHVtblN0YXRlLmhpZGUpe1xyXG4gICAgICByZXR1cm4gIGNvbHVtblN0YXRlLmhpZGUgfHwgaXNEYWNIaWRkZW47XHJcbiAgICB9XHJcbiAgICBlbHNle1xyXG4gICAgIHJldHVybiAgIWNvbHVtbi52aXNpYmxlIHx8IGlzRGFjSGlkZGVuO1xyXG4gICAgfVxyXG4gIH1cclxuICBwcml2YXRlIF9tYXBDb2x1bW5EZWYoY29sdW1uczogYW55LCB1c2VyUm9sZXM6IGFueSkge1xyXG4gICAgcmV0dXJuIGNvbHVtbnM/Lm1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcy5pc0J1dHRvbiA9PT0gZmFsc2UpIHtcclxuICAgICAgICBpZiAocmVzLmNvbHVtblR5cGUgPT09ICdjaGVja2JveCcpIHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgIGhlYWRlck5hbWU6IHJlcy50aXRsZSxcclxuICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICB0b29sdGlwRmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBoZWFkZXJDaGVja2JveFNlbGVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpbHRlcmFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBjaGVja2JveFNlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0Rpc2FibGVkQ2hlY2tib3hlczogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NGaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHN1cHByZXNzU29ydGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICB3aWR0aDogNTUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzLmNvbHVtblR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgIGhlYWRlck5hbWU6IHJlcy50aXRsZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHN1cHByZXNzRmlsdGVyOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc1NvcnRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIHN1cHByZXNzTWVudTogdHJ1ZSxcclxuICAgICAgICAgICAgdG9vbHRpcEZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogRHJvcGRvd25SZW5kZXJlcixcclxuICAgICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgb25DbGljazogdGhpcy5vbkJ0bkNsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgdG9vbHRpcDogcmVzLnRvb2x0aXAsXHJcbiAgICAgICAgICAgICAgZHJvcERvd25EYXRhOiByZXMuZHJvcERvd25EYXRhLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkNlbGxDbGlja2VkOiAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgZS5ub2RlLnNldFNlbGVjdGVkKGZhbHNlKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgd2lkdGg6IDQwLFxyXG4gICAgICAgICAgICBwaW5uZWQ6IHJlcy5waW5Qb3NpdGlvbixcclxuICAgICAgICAgICAgbG9ja1Bpbm5lZDogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIGlmICghaGlkZURhY1N0YXR1cykge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgIGZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgICAgaGVhZGVyTmFtZTogcmVzLnRpdGxlLFxyXG4gICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBoaWRlOnRoaXMuX2dldENvbHVtblZpc2libGl0eVN0YXR1cyhyZXMsdXNlclJvbGVzKSxcclxuICAgICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICB0b29sdGlwRmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgICBmbG9hdGluZ0ZpbHRlcjogdGhpcy5mbG9hdGluZ0ZpbHRlcixcclxuICAgICAgICAgICAgICB2YWx1ZUZvcm1hdHRlcjogKHBhcmFtczogVmFsdWVGb3JtYXR0ZXJQYXJhbXMpID0+XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlclNlcnZpY2UuY29sVmFsdWVGb3JtYXR0ZXIoXHJcbiAgICAgICAgICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgICAgICAgICAgcmVzLmNvbHVtblR5cGVcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgZmlsdGVyYWJsZTogcmVzLmZpbHRlcmFibGUsXHJcbiAgICAgICAgICAgICAgZmlsdGVyOlxyXG4gICAgICAgICAgICAgICAgcmVzLmNvbHVtblR5cGUgPT0gJ3N0cmluZydcclxuICAgICAgICAgICAgICAgICAgPyAnYWdUZXh0Q29sdW1uRmlsdGVyJ1xyXG4gICAgICAgICAgICAgICAgICA6IHJlcy5jb2x1bW5UeXBlID09ICdudW1iZXInXHJcbiAgICAgICAgICAgICAgICAgID8gJ2FnTnVtYmVyQ29sdW1uRmlsdGVyJ1xyXG4gICAgICAgICAgICAgICAgICA6ICdhZ0RhdGVDb2x1bW5GaWx0ZXInLFxyXG4gICAgICAgICAgICAgIGZpbHRlclBhcmFtczoge1xyXG4gICAgICAgICAgICAgICAgY29tcGFyYXRvcjogKFxyXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJMb2NhbERhdGVBdE1pZG5pZ2h0OiBhbnksXHJcbiAgICAgICAgICAgICAgICAgIGNlbGxWYWx1ZTogYW55XHJcbiAgICAgICAgICAgICAgICApID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgZGF0ZUFzU3RyaW5nID0gY2VsbFZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgaWYgKGRhdGVBc1N0cmluZyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgaWYgKHJlcy5jb2x1bW5UeXBlID09ICdkYXRlJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNlbGxEYXRlID0gbmV3IERhdGUoZGF0ZUFzU3RyaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2VsbERhdGUgPCBmaWx0ZXJMb2NhbERhdGVBdE1pZG5pZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjZWxsRGF0ZSA+IGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbJ3Jlc2V0J10sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIC8vIH0gXHJcbiAgICAgICAgICAvLyBlbHNlIHtcclxuICAgICAgICAgIC8vICAgcmV0dXJuO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBpZiAoIWhpZGVCdG4pIHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgIGhlYWRlck5hbWU6IHJlcy50aXRsZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGhpZGU6IHRoaXMuX2dldENvbHVtblZpc2libGl0eVN0YXR1cyhyZXMsdXNlclJvbGVzKSxcclxuICAgICAgICAgICAgc3VwcHJlc3NGaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHN1cHByZXNzU29ydGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICB0b29sdGlwRmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBCdXR0b25SZW5kZXJlckNvbXBvbmVudCxcclxuICAgICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgb25DbGljazogdGhpcy5vbkJ0bkNsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHJlcy5sYWJlbCxcclxuICAgICAgICAgICAgICBpY29uOiByZXMuaWNvbixcclxuICAgICAgICAgICAgICBidXR0b25OYW1lOiByZXMuYnV0dG9uTmFtZSxcclxuICAgICAgICAgICAgICB0b29sdGlwOiByZXMudG9vbHRpcCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdmFsdWVHZXR0ZXI6IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXMudG9vbHRpcCB8fCByZXMudGl0bGU7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG1pbldpZHRoOiAyMCxcclxuICAgICAgICAgICAgY2VsbENsYXNzOiAnYWN0aW9uLWJ1dHRvbicsXHJcbiAgICAgICAgICAgIHBpbm5lZDogcmVzLnBpblBvc2l0aW9uLFxyXG4gICAgICAgICAgICBsb2NrUGlubmVkOiB0cnVlLFxyXG4gICAgICAgICAgICB3aWR0aDogcmVzLmxhYmVsID8gMTAwIDogNDAsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNhbkNyZWF0ZURhYyhyb2xlczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChyb2xlcz8ubGVuZ3RoID4gMCAmJiBmaWVsZCA9PT0gJ2NyZWF0ZURhYycpIHtcclxuICAgICAgY29uc3QgaXNBRUdyb3VwID0gdGhpcy51c2VyUm9sZXMuc29tZSgocm9sZSkgPT4gcm9sZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYWUnKSk7XHJcbiAgICAgIGNvbnN0IGlzRGVzaWduTWFuYWdlciA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX0Rlc2lnbl9NYW5hZ2VyKTtcclxuICAgICAgcmV0dXJuICEoaXNBRUdyb3VwIHx8IGlzRGVzaWduTWFuYWdlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2FuVmlld0RhY1N0YXR1cyhyb2xlczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChyb2xlcz8ubGVuZ3RoID4gMCAmJiBmaWVsZCA9PT0gJ2RhY1N0YXR1cycpIHtcclxuICAgICAgY29uc3QgaXNBRUdyb3VwID0gdGhpcy51c2VyUm9sZXMuc29tZSgocm9sZSkgPT4gcm9sZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYWUnKSk7XHJcbiAgICAgIGNvbnN0IGlzSW50ZWdyYXRpb25UZWFtR3JvdXAgPSB0aGlzLnVzZXJSb2xlcy5zb21lKChyb2xlKSA9PiByb2xlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdpbnRlZ3JhdGlvbiB0ZWFtJykpO1xyXG4gICAgICBjb25zdCBpc0ludGVncmF0aW9uTGVhZCA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX0ludGVncmF0aW9uX0xlYWQpO1xyXG4gICAgICBjb25zdCBpc1Rvb2xPd25lciA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX1Rvb2xfT3duZXIpO1xyXG4gICAgICBjb25zdCBpc0FyZWFDb29yZGluYXRvciA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX0FyZWFfQ29vcmRpbmF0b3IpO1xyXG4gICAgICBjb25zdCBpc0Rlc2lnbk1hbmFnZXIgPSB0aGlzLnVzZXJSb2xlcy5pbmNsdWRlcyh0aGlzLl9EZXNpZ25fTWFuYWdlcik7XHJcbiAgICAgIHJldHVybiAhKGlzQUVHcm91cCB8fCBpc0ludGVncmF0aW9uVGVhbUdyb3VwIHx8IGlzSW50ZWdyYXRpb25MZWFkIHx8IGlzVG9vbE93bmVyIHx8IGlzQXJlYUNvb3JkaW5hdG9yIHx8IGlzRGVzaWduTWFuYWdlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0RXh0ZXJuYWxGaWx0ZXJzKG9wdGlvbnM6IGFueSkge1xyXG4gICAgdmFyIHNlcnZlclVybCA9ICcnO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlcnZlckRhdGFVcmwuaW5kZXhPZignZmlsdGVyJykgPj0gMCAmJlxyXG4gICAgICBvcHRpb25zLmluZGV4T2YoJ2ZpbHRlcicpID49IDBcclxuICAgICkge1xyXG4gICAgICBsZXQgc2x1ZyA9IHRoaXMuc2VydmVyRGF0YVVybC5zcGxpdCgnPyRmaWx0ZXI9Jyk7XHJcbiAgICAgIGlmIChzbHVnICYmIHNsdWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zICsgJyBhbmQgJyArIHNsdWdbMV07XHJcbiAgICAgICAgc2VydmVyVXJsID0gc2x1Z1swXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlcnZlckRhdGFVcmwuaW5kZXhPZignPycpID49IDApIHtcclxuICAgICAgc2VydmVyVXJsID0gdGhpcy5zZXJ2ZXJEYXRhVXJsO1xyXG4gICAgICBvcHRpb25zID0gb3B0aW9ucy5yZXBsYWNlKCc/JywgJyYnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBgJHtzZXJ2ZXJVcmx9JHtvcHRpb25zfWA7XHJcbiAgfVxyXG5cclxuICBvbkdyaWRSZWFkeShwYXJhbXM6IEdyaWRSZWFkeUV2ZW50KSB7XHJcbiAgICAvL3RoaXMuZ3JpZFBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMuZ3JpZEFQST1wYXJhbXMuYXBpO1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlU2VydmVyU2lkZVBhZ2luZyA9PSB0cnVlKSB7XHJcbiAgICAgIC8vY2FsbCBhcGlcclxuICAgICAgbGV0IHJlcUhlYWRlcnMgPSB7XHJcbiAgICAgICAgJ0NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICBBdXRob3JpemF0aW9uOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuLFxyXG4gICAgICB9O1xyXG4gICAgICBwYXJhbXMuYXBpLnNldFNlcnZlclNpZGVEYXRhc291cmNlKFxyXG4gICAgICAgIG5ldyBPZGF0YVNlcnZlclNpZGVQcm92aWRlcih7XHJcbiAgICAgICAgICBpc0Nhc2VTZW5zaXRpdmVTdHJpbmdGaWx0ZXI6IGZhbHNlLFxyXG4gICAgICAgICAgY2FsbEFwaTogKG9wdGlvbnMpID0+XHJcbiAgICAgICAgICAgIGZldGNoKGAke3RoaXMuc2V0RXh0ZXJuYWxGaWx0ZXJzKG9wdGlvbnMpfWAsIHtcclxuICAgICAgICAgICAgICBoZWFkZXJzOiByZXFIZWFkZXJzLFxyXG4gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuanNvbigpKSxcclxuICAgICAgICAgIGFmdGVyTG9hZERhdGE6IChvcHRpb25zLCByb3dEYXRhLCB0b3RhbENvdW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcm93RGF0YSB8fCByb3dEYXRhLmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncmlkQVBJLnNob3dOb1Jvd3NPdmVybGF5KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncmlkQVBJLmhpZGVPdmVybGF5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEdyaWRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmdyaWRDb2x1bW5TdGF0ZSkgeyAgICAgIFxyXG4gICAgICB0aGlzLmdyaWRBUEkuYXBwbHlDb2x1bW5TdGF0ZSh7c3RhdGU6dGhpcy5ncmlkQ29sdW1uU3RhdGUuY29sdW1uU2l6aW5nPy5jb2x1bW5TaXppbmdNb2RlbCxhcHBseU9yZGVyOnRydWV9KTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZENvbHVtblN0YXRlLnNvcnQpIHtcclxuICAgICAgICB0aGlzLmdyaWRBUEkuYXBwbHlDb2x1bW5TdGF0ZSh7c3RhdGU6dGhpcy5ncmlkQ29sdW1uU3RhdGUuc29ydC5zb3J0TW9kZWx9KVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmdyaWRDb2x1bW5TdGF0ZS5maWx0ZXIpIHtcclxuICAgICAgICB2YXIgZmlsdGVyTW9kZWw6YW55PXRoaXMuZ3JpZENvbHVtblN0YXRlLmZpbHRlci5maWx0ZXJNb2RlbDtcclxuICAgICAgICB0aGlzLmdyaWRBUEkuc2V0RmlsdGVyTW9kZWwoZmlsdGVyTW9kZWwpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmdyaWRDb2x1bW5TdGF0ZS5jb2x1bW5WaXNpYmlsaXR5KSB7XHJcbiAgICAgICAgdmFyIGhpZGRlbkNvbHVtbnM6YW55PXRoaXMuZ3JpZENvbHVtblN0YXRlLmNvbHVtblZpc2liaWxpdHkuaGlkZGVuQ29sSWRzO1xyXG4gICAgICAgIHRoaXMuZ3JpZEFQSS5zZXRDb2x1bW5zVmlzaWJsZShoaWRkZW5Db2x1bW5zLGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSAgZWxzZSB7XHJcbiAgICAgIHZhciBjb2x1bW5zID0gdGhpcy5ncmlkQVBJLmdldENvbHVtbnMoKTtcclxuICAgICAgaWYgKGNvbHVtbnMgJiYgY29sdW1ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgaWYgKGNvbHVtbnMubGVuZ3RoID4gMTUpIHtcclxuICAgICAgICAgIGNvbnN0IGFsbENvbHVtbklkczogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICAgIHRoaXMuZ3JpZEFQSSEuZ2V0Q29sdW1ucygpIS5mb3JFYWNoKChjb2x1bW46YW55KSA9PiB7XHJcbiAgICAgICAgICAgIGFsbENvbHVtbklkcy5wdXNoKGNvbHVtbi5nZXRJZCgpKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5ncmlkQVBJIS5hdXRvU2l6ZUNvbHVtbnMoYWxsQ29sdW1uSWRzLCBmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZ3JpZEFQSS5zaXplQ29sdW1uc1RvRml0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRHcmlkU3RhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5ncmlkSWQgJiYgdGhpcy5sb2dnZWRJblVzZXIpIHtcclxuICAgICAgdGhpcy5ncmlkU2VydmljZVxyXG4gICAgICAgIC5nZXRHcmlkU3RhdGUodGhpcy5ncmlkSWQsIHRoaXMubG9nZ2VkSW5Vc2VyKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICByZXNwb25zZS5zdGF0dXMgPT0gMSAmJlxyXG4gICAgICAgICAgICByZXNwb25zZS5yZXN1bHQgJiZcclxuICAgICAgICAgICAgcmVzcG9uc2UucmVzdWx0LmdyaWRDb25maWdcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmdyaWRDb2x1bW5TdGF0ZSA9IEpTT04ucGFyc2UocmVzcG9uc2UucmVzdWx0LmdyaWRDb25maWcpO1xyXG4gICAgICAgICAgICB0aGlzLnNldEdyaWRTdGF0ZSgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRHcmlkU3RhdGUoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIHdoaWxlIGxvYWRpbmcgZ3JpZCBzdGF0ZScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25CdG5DbGljayhlOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdidG4gY2xpY2s9PicsIGUpO1xyXG4gICAgdGhpcy5idG5DbGlja0hhbmRsZXIuZW1pdChlLnJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfX2RlYm91bmNlR3JpZFNhdmVIaXQ6YW55ID0gbnVsbDtcclxuICBvblNhdmVHcmlkQ29sdW1uU3RhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuX19kZWJvdW5jZUdyaWRTYXZlSGl0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9fZGVib3VuY2VHcmlkU2F2ZUhpdCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuX19kZWJvdW5jZUdyaWRTYXZlSGl0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICBsZXQgY29sdW1uU3RhdGUgPSB0aGlzLmdyaWRBUEk/LmdldFN0YXRlKCk7XHJcbiAgICBsZXQgY29sdW1uRGF0YSA9IHtcclxuICAgICAgZ3JpZENvbmZpZzogSlNPTi5zdHJpbmdpZnkoY29sdW1uU3RhdGUpLFxyXG4gICAgICB1aUdyaWRJZDogdGhpcy5ncmlkSWQsXHJcbiAgICAgIHVzZXJJZDogdGhpcy5sb2dnZWRJblVzZXIsXHJcbiAgICB9O1xyXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb2x1bW5QaW5uZWQnIHx8IChldmVudC50eXBlPT09J2ZpbHRlckNoYW5nZWQnIHx8IGV2ZW50LnR5cGU9PT0nc29ydENoYW5nZWQnKSB8fCBldmVudC50eXBlPT09J2NvbHVtblJlc2l6ZWQnIHx8IGV2ZW50LnR5cGU9PT0nY29sdW1uTW92ZWQnIHx8IGV2ZW50LnR5cGU9PT0nY29sdW1uVmlzaWJsZScpIHtcclxuICAgICAgdGhpcy5ncmlkQ29sdW1uU3RhdGUgPSBjb2x1bW5TdGF0ZTtcclxuICAgICAgdGhpcy5ncmlkU2VydmljZS5zYXZlQ29sdW1uQ29uZmlnKGNvbHVtbkRhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgLy90aGlzLnNldEdyaWRTdGF0ZSgpO1xyXG4gICAgICAgIGlmIChyZXMuc3RhdHVzID09IDApIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciB3aGlsZSBzYXZpbmcgY29sdW1uIGNvbmZpZ3VyYXRpb246JywgcmVzLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9fZGVib3VuY2VHcmlkU2F2ZUhpdCA9IG51bGw7XHJcbiAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Um93QnlJZDogR2V0Um93SWRGdW5jID0gKHBhcmFtczogR2V0Um93SWRQYXJhbXMpID0+IHtcclxuICAgIHZhciBkYXRhID0gcGFyYW1zLmRhdGE7XHJcbiAgICByZXR1cm4gZGF0YS5pZCA/PyAwO1xyXG4gIH07XHJcblxyXG4gIC8vIEN1c3RvbSByaWdodCBjbGljayBDb250ZXh0IE1lbnUgdG8gc3VwcG9ydCBjdXN0b20gZXhjZWwgZXhwb3J0c1xyXG4gIHB1YmxpYyBnZXRDb250ZXh0TWVudUl0ZW1zID0gKFxyXG4gICAgcGFyYW1zOiBHZXRDb250ZXh0TWVudUl0ZW1zUGFyYW1zXHJcbiAgKTogKHN0cmluZyB8IE1lbnVJdGVtRGVmKVtdID0+IHtcclxuICAgIGxldCByZXM6IChzdHJpbmcgfCBNZW51SXRlbURlZilbXSA9IFtcclxuICAgICAgJ2N1dCcsXHJcbiAgICAgICdjb3B5JyxcclxuICAgICAgJ2NvcHlXaXRoSGVhZGVycycsXHJcbiAgICAgICdjb3B5V2l0aEdyb3VwSGVhZGVycycsXHJcbiAgICAgICdwYXN0ZScsXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnRXhwb3J0JyxcclxuICAgICAgICBzdWJNZW51OiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdDU1YgRXhwb3J0JyxcclxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leHBvcnRGaWxlKCdjc3YnKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdFeGNlbCBFeHBvcnQnLFxyXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmV4cG9ydEZpbGUoJ3hsc3gnKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIC8vY3VzdG9tIGV4cG9ydCBtZXRob2RcclxuICBwdWJsaWMgZXhwb3J0RmlsZSh0eXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ2V0RGF0YUZvckV4Y2VsRXhwb3J0KHR5cGUpO1xyXG4gIH1cclxuICAvL0dlbmVyYXRlIG9ubHkgdGhvc2UgY29sdW1ucyBmb3IgZXhwb3J0IHdoaWNoIGFyZSB2aXNpYmxlIGFuZCBhcmUgbm90IG9mIG90aGVyIHR5cGVzIHRoYXQgYXJlIG5vdCByZXF1aXJlZCBmb3IgZXhwb3J0XHJcbiAgZ2VuZXJhdGVDb2x1bW5zRm9yRXhjZWwoKTogc3RyaW5nW10ge1xyXG4gICAgbGV0IGNvbHVtbnNUb0JlRGlzcGxheWVkRm9yRXhjZWw6IGFueSA9IFtdO1xyXG4gICAgdGhpcy5leHBvcnRDb2x1bW5zTGlzdC5mb3JFYWNoKChjb2x1bW46IGFueSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgY29sdW1uLnZpc2libGUgPT0gdHJ1ZSAmJlxyXG4gICAgICAgIGNvbHVtbi5jb2x1bW5UeXBlICE9ICdjaGVja2JveCcgJiZcclxuICAgICAgICBjb2x1bW4uY29sdW1uVHlwZSAhPSAnZHJvcGRvd24nICYmXHJcbiAgICAgICAgY29sdW1uLmNvbHVtblR5cGUgIT0gJydcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29sdW1uc1RvQmVEaXNwbGF5ZWRGb3JFeGNlbC5wdXNoKGNvbHVtbi5maWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbHVtbnNUb0JlRGlzcGxheWVkRm9yRXhjZWw7XHJcbiAgfVxyXG5cclxuICAvL0dldCBkYXRhIGZyb20gc2VydmVyIHdpdGhvdXQgcGFnaW5nIHNvIHRoYXQgd2hvbGUgZGF0YSBjYW4gYmUgZXhwb3J0ZWQgdG8gZXhjZWxcclxuICAvLyBhbmQgYWxzbyBjaGVjayBmb3Igc2VydmVyIHNpZGUgYW5kIGNsaWVudCBzaWRlIHJlbmRlcmluZyBvZiBkYXRhIGZvciBleHBvcnQuXHJcbiAgZ2V0RGF0YUZvckV4Y2VsRXhwb3J0KHR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5ncmlkQVBJLnNob3dMb2FkaW5nT3ZlcmxheSgpO1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlU2VydmVyU2lkZVBhZ2luZykge1xyXG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlXHJcbiAgICAgICAgLmdldERhdGFGb3JFeHBvcnQodGhpcy5zZXJ2ZXJEYXRhVXJsKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ncmlkQVBJLmhpZGVPdmVybGF5KCk7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLnNldFJvd0RhdGEocmVzcG9uc2UudmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgICAgICAgICAgaWYgKHR5cGUgPT0gJ2NzdicpIHtcclxuICAgICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLmV4cG9ydERhdGFBc0Nzdih7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5LZXlzOiB0aGlzLmdlbmVyYXRlQ29sdW1uc0ZvckV4Y2VsKCksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leGNlbEFQSS5leHBvcnREYXRhQXNFeGNlbCh7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5LZXlzOiB0aGlzLmdlbmVyYXRlQ29sdW1uc0ZvckV4Y2VsKCksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciB3aGlsZSBmZXRjaGluZyBkYXRhIGZvciBleGNlbC9jc3YgZXhwb3J0Jyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyaWRBUEkuaGlkZU92ZXJsYXkoKTtcclxuICAgICAgaWYgKHR5cGUgPT0gJ2NzdicpIHtcclxuICAgICAgICB0aGlzLmdyaWRBUEkuZXhwb3J0RGF0YUFzQ3N2KHtcclxuICAgICAgICAgIGNvbHVtbktleXM6IHRoaXMuZ2VuZXJhdGVDb2x1bW5zRm9yRXhjZWwoKSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmdyaWRBUEkuZXhwb3J0RGF0YUFzRXhjZWwoe1xyXG4gICAgICAgICAgY29sdW1uS2V5czogdGhpcy5nZW5lcmF0ZUNvbHVtbnNGb3JFeGNlbCgpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZWQoZTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyQ2hhbmdlZChlOiBhbnkpIHtcclxuICAgIHRoaXMub25TYXZlR3JpZENvbHVtblN0YXRlKGUpO1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VkLmVtaXQoZSk7ICAgIFxyXG4gIH1cclxuXHJcbiAgb25GaXJzdERhdGFSZW5kZXJlZChlOiBhbnkpIHtcclxuICAgIHRoaXMuZmlyc3REYXRhUmVuZGVyZWQuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG9uR3JpZFJlYWR5RXhjZWwocGFyYW1zOiBhbnkpIHtcclxuICAgIHRoaXMuZXhjZWxBUEkgPSBwYXJhbXMuYXBpO1xyXG4gIH1cclxuXHJcbiAgLy9kZXN0cm95IGFsbCBhc3NvY2lhdGVkIHN1YnNjcmlwdGlvbnMgb24gY29tcG9uZW50IGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
632
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYi9zcmMvbGliL2dyaWQtbGlicmFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQWdCdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVuRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBc0QzQyxNQUFNLE9BQU8sb0JBQW9CO0lBNkMvQixZQUNVLFdBQStCLEVBQy9CLGdCQUFzQyxFQUN0QyxvQkFBeUM7UUFGekMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQTVDbkQsaUNBQWlDO1FBQ3hCLDJCQUFzQixHQUFHLElBQUksQ0FBQztRQUM5QixpQkFBWSxHQUFRLFVBQVUsQ0FBQztRQUkvQiwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFHeEMsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0IsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBQ3pDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLGNBQVMsR0FBVSxFQUFFLENBQUM7UUFDL0IsZ0JBQWdCO1FBQ04s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WUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XHJcbmltcG9ydCB7XHJcbiAgQ29sRGVmLFxyXG4gIEdldENvbnRleHRNZW51SXRlbXNQYXJhbXMsXHJcbiAgR2V0Um93SWRGdW5jLFxyXG4gIEdldFJvd0lkUGFyYW1zLFxyXG4gIEdyaWRBcGksXHJcbiAgR3JpZFJlYWR5RXZlbnQsXHJcbiAgTWVudUl0ZW1EZWYsXHJcbiAgUGFnaW5hdGlvbk51bWJlckZvcm1hdHRlclBhcmFtcyxcclxuICBSb3dNb2RlbFR5cGUsXHJcbiAgUm93Tm9kZSxcclxuICBWYWx1ZUZvcm1hdHRlclBhcmFtcyxcclxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcbmltcG9ydCB7IEdyaWRMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4vZ3JpZC1saWJyYXJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPZGF0YVNlcnZlclNpZGVQcm92aWRlciB9IGZyb20gJy4vaGVscGVycyc7XHJcbmltcG9ydCB7IEJ1dHRvblJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9yZW5kZXJlci9idXR0b24tcmVuZGVyZXIvYnV0dG9uLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1c3RvbVRvb2x0aXAgfSBmcm9tICcuL3JlbmRlcmVyL3Rvb2x0aXAtcmVuZGVyZXIvY3VzdG9tLXRvb2x0aXAtcmVuZGVyZXInO1xyXG5pbXBvcnQgeyBEcm9wZG93blJlbmRlcmVyIH0gZnJvbSAnLi9yZW5kZXJlci9kcm9wZG93bi1yZW5kZXJlci9kcm9wLWRvd24tcmVuZGVyZXInO1xyXG5pbXBvcnQgeyBDb2x1bW5WYWx1ZUZvcm1hdHRlciB9IGZyb20gJy4vZm9ybWF0dGVycy9jb2x1bW4tdmFsdWUtZm9ybWF0dGVyJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRva2VuU2hhcmluZ1NlcnZpY2UgfSBmcm9tICcuL3Rva2VuLXNoYXJpbmcuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iYXNlc2l0ZS1zaGFyZWQtZ3JpZC1saWInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8YWctZ3JpZC1hbmd1bGFyXHJcbiAgICAgICNhZ0dyaWRcclxuICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTtoZWlnaHQ6OTguMnZoXCJcclxuICAgICAgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW0gc2hhcmVkLWdyaWQtbGliXCJcclxuICAgICAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiXHJcbiAgICAgIFtkZWZhdWx0Q29sRGVmXT1cImRlZmF1bHRDb2xEZWZcIlxyXG4gICAgICBbcm93RGF0YV09XCJyb3dEYXRhXCJcclxuICAgICAgW3Jvd1NlbGVjdGlvbl09XCJyb3dTZWxlY3Rpb25cIlxyXG4gICAgICBbYW5pbWF0ZVJvd3NdPVwidHJ1ZVwiXHJcbiAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiXHJcbiAgICAgIFtwYWdpbmF0aW9uXT1cInRydWVcIlxyXG4gICAgICBbcGFnaW5hdGlvbk51bWJlckZvcm1hdHRlcl09XCJwYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyXCJcclxuICAgICAgW3BhZ2luYXRpb25BdXRvUGFnZVNpemVdPVwicGFnaW5hdGlvbkF1dG9QYWdlU2l6ZVwiXHJcbiAgICAgIFt0b29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIlxyXG4gICAgICBbdG9vbHRpcEhpZGVEZWxheV09XCJ0b29sdGlwSGlkZURlbGF5XCJcclxuICAgICAgW3Jvd01vZGVsVHlwZV09XCJyb3dNb2RlbFR5cGVcIlxyXG4gICAgICBbY2FjaGVCbG9ja1NpemVdPVwiY2FjaGVCbG9ja1NpemVcIlxyXG4gICAgICBbbWF4Q29uY3VycmVudERhdGFzb3VyY2VSZXF1ZXN0c109XCIxXCJcclxuICAgICAgW2Jsb2NrTG9hZERlYm91bmNlTWlsbGlzXT1cIjEwMFwiXHJcbiAgICAgIChjb2x1bW5WaXNpYmxlKT1cIm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgKGNvbHVtblBpbm5lZCk9XCJvblNhdmVHcmlkQ29sdW1uU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgIChjb2x1bW5SZXNpemVkKT1cIm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgKGNvbHVtbk1vdmVkKT1cIm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgKHNvcnRDaGFuZ2VkKT1cIm9uU29ydENoYW5nZWRFdmVudCgkZXZlbnQpXCJcclxuICAgICAgW3Jvd011bHRpU2VsZWN0V2l0aENsaWNrXT1cInJvd011bHRpU2VsZWN0V2l0aENsaWNrXCJcclxuICAgICAgW2dldENvbnRleHRNZW51SXRlbXNdPVwiZ2V0Q29udGV4dE1lbnVJdGVtc1wiXHJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgKGZpbHRlckNoYW5nZWQpPVwib25GaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAoZmlyc3REYXRhUmVuZGVyZWQpPVwib25GaXJzdERhdGFSZW5kZXJlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgPGFnLWdyaWQtYW5ndWxhclxyXG4gICAgICAjYWdHcmlkSGlkZGVuXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OjEwMHZoOyB3aWR0aDoxMDAlO2Rpc3BsYXk6bm9uZVwiXHJcbiAgICAgIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCJcclxuICAgICAgW3Jvd0RhdGFdPVwicm93RGF0YUhpZGRlblwiXHJcbiAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIlxyXG4gICAgICBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcclxuICAgICAgW2FuaW1hdGVSb3dzXT1cImZhbHNlXCJcclxuICAgICAgW3Jvd1NlbGVjdGlvbl09XCInbXVsdGlwbGUnXCJcclxuICAgICAgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeUV4Y2VsKCRldmVudClcIlxyXG4gICAgICBbc3VwcHJlc3NTY3JvbGxPbk5ld0RhdGFdPVwidHJ1ZVwiXHJcbiAgICAgIFtjYWNoZVF1aWNrRmlsdGVyXT1cImZhbHNlXCJcclxuICAgID5cclxuICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyaWRMaWJyYXJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgLy9pbnB1dCBwYXJhbXNcclxuICBASW5wdXQoKSBjb2x1bW5EZWZzOiBhbnk7XHJcbiAgQElucHV0KCkgcm93RGF0YTogYW55O1xyXG4gIC8vQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDIwO1xyXG4gIEBJbnB1dCgpIHBhZ2luYXRpb25BdXRvUGFnZVNpemUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGlvbjogYW55ID0gJ211bHRpcGxlJztcclxuICBASW5wdXQoKSBncmlkSWQ6IGFueTtcclxuICBASW5wdXQoKSBsb2dnZWRJblVzZXI6IGFueTtcclxuICBASW5wdXQoKSBzaXRlSWQ6IGFueTtcclxuICBASW5wdXQoKSBlbmFibGVTZXJ2ZXJTaWRlUGFnaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VydmVyRGF0YVVybCE6IHN0cmluZztcclxuICBASW5wdXQoKSBlbnZpcm9ubWVudCE6IHN0cmluZztcclxuICBASW5wdXQoKSBjYWNoZUJsb2NrU2l6ZTogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKSByb3dNdWx0aVNlbGVjdFdpdGhDbGljazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZsb2F0aW5nRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdG9rZW4hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlclJvbGVzOiBhbnlbXSA9IFtdO1xyXG4gIC8vZXZlbnQgZW1pdHRlcnNcclxuICBAT3V0cHV0KCkgYnRuQ2xpY2tIYW5kbGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGZpcnN0RGF0YVJlbmRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGZpbHRlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvL3ZpZXdDaGlsZHNcclxuICAvL0BWaWV3Q2hpbGQoJ2FnR3JpZCcpIGFnR3JpZCE6IEFnR3JpZEFuZ3VsYXI7XHJcblxyXG4gIC8vcGFyYW10ZXJzXHJcbiAgaW5pdGlhbENvbHVtbkRlZjogYW55ID0gW107XHJcbiAgcm93RGF0YUhpZGRlbjogYW55ID0gW107XHJcbiAgZ3JpZENvbHVtblN0YXRlOiBhbnk7XHJcbiAgZXhwb3J0Q29sdW1uc0xpc3Q6IGFueSA9IFtdO1xyXG4gIHB1YmxpYyB0b29sdGlwU2hvd0RlbGF5ID0gMDtcclxuICBwdWJsaWMgdG9vbHRpcEhpZGVEZWxheSA9IDIwMDA7XHJcbiAgcHVibGljIHJvd01vZGVsVHlwZTogUm93TW9kZWxUeXBlID0gJ2NsaWVudFNpZGUnO1xyXG4gIC8vcHVibGljIGdyaWRQYWdlU2l6ZTogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIGV4Y2VsQVBJITogR3JpZEFwaTtcclxuICBwcml2YXRlIGdyaWRBUEkhOkdyaWRBcGk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfRGVzaWduX01hbmFnZXIgPSAnRGVzaWduIE1hbmFnZXInO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX0ludGVncmF0aW9uX0xlYWQgPSAnSW50ZWdyYXRpb24gTGVhZCc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfVG9vbF9Pd25lciA9ICdUb29sIE93bmVyJztcclxuICBwcml2YXRlIHJlYWRvbmx5IF9BcmVhX0Nvb3JkaW5hdG9yID0gJ0FyZWEgQ29vcmRpbmF0b3InO1xyXG4gIC8vdW5zdWJzY3JpYmUgc3ViamVjdFxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZvcm1hdHRlclNlcnZpY2U6IENvbHVtblZhbHVlRm9ybWF0dGVyLFxyXG4gICAgcHJpdmF0ZSBfdG9rZW5TaGFyaW5nU2VydmljZTogVG9rZW5TaGFyaW5nU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgb25Tb3J0Q2hhbmdlZEV2ZW50KGU6YW55KSB7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5TdGF0ZSA9IHRoaXMuZ3JpZEFQSS5nZXRTdGF0ZSgpO1xyXG4gICAgdGhpcy5vblNhdmVHcmlkQ29sdW1uU3RhdGUoZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVmYXVsdENvbERlZjogQ29sRGVmID0ge1xyXG4gICAgc29ydGFibGU6IHRydWUsXHJcbiAgICBmaWx0ZXI6IHRydWUsXHJcbiAgICB0b29sdGlwQ29tcG9uZW50OiBDdXN0b21Ub29sdGlwLFxyXG4gIH07XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fdG9rZW5TaGFyaW5nU2VydmljZS51cGRhdGVUb2tlbih0aGlzLnRva2VuKTtcclxuXHJcbiAgICBpZiAodGhpcy5lbmFibGVTZXJ2ZXJTaWRlUGFnaW5nID09IHRydWUpIHtcclxuICAgICAgdGhpcy5yb3dNb2RlbFR5cGUgPSAnc2VydmVyU2lkZSc7XHJcbiAgICAgIHRoaXMucm93RGF0YSA9ICcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3dNb2RlbFR5cGUgPSAnY2xpZW50U2lkZSc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5ncmlkUGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5jYWNoZUJsb2NrU2l6ZSA9IHRoaXMuY2FjaGVCbG9ja1NpemUgPSAwID8gMTAwIDogdGhpcy5jYWNoZUJsb2NrU2l6ZTtcclxuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0QmFzZVVybCh0aGlzLmVudmlyb25tZW50KTtcclxuICAgIC8vdGhpcy5nZXRHcmlkU3RhdGUoKTtcclxuICAgIHRoaXMuZ2V0Q29sRGVmKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sndXNlclJvbGVzJ10/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5pbml0aWFsQ29sdW1uRGVmPy5sZW5ndGggPiAwICYmIHRoaXMudXNlclJvbGVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5EZWZzID0gdGhpcy5fbWFwQ29sdW1uRGVmKHRoaXMuaW5pdGlhbENvbHVtbkRlZiwgdGhpcy51c2VyUm9sZXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGFnaW5hdGlvbk51bWJlckZvcm1hdHRlcjogKFxyXG4gICAgcGFyYW1zOiBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zXHJcbiAgKSA9PiBzdHJpbmcgPSAocGFyYW1zOiBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zKSA9PiB7XHJcbiAgICByZXR1cm4gJ1snICsgcGFyYW1zLnZhbHVlLnRvTG9jYWxlU3RyaW5nKCkgKyAnXSc7XHJcbiAgfTtcclxuXHJcbiAgZ2V0Q29sRGVmKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZElkICYmIHRoaXMubG9nZ2VkSW5Vc2VyKSB7XHJcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2VcclxuICAgICAgICAuZ2V0Q29sRGVmKHRoaXMuZ3JpZElkKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbENvbHVtbkRlZiA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgICAgbGV0IGNvbGRlZjogQ29sRGVmW10gPSB0aGlzLl9tYXBDb2x1bW5EZWYocmVzcG9uc2UucmVzdWx0LCB0aGlzLnVzZXJSb2xlcykuZmlsdGVyKChjb2x1bW46IGFueSkgPT4gY29sdW1uKTtcclxuICAgICAgICAgICAgdGhpcy5leHBvcnRDb2x1bW5zTGlzdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzID0gY29sZGVmO1xyXG4gICAgICAgICAgIC8vIHRoaXMuYWdHcmlkLmdyaWRPcHRpb25zPy5hcGk/LnNldENvbHVtbkRlZnMoY29sZGVmKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRHcmlkU3RhdGUoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb2xEZWYgUmVhZCBFcnJvcj0+JywgcmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZygnUGxlYXNlIHBhc3MgdmFsaWQgR3JpZElkIGFuZCBsb2dnZWRJbiB1c2VyIElkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9nZXRDb2x1bW5WaXNpYmxpdHlTdGF0dXMoY29sdW1uIDogYW55LHVzZXJSb2xlczphbnkpe1xyXG4gICAgbGV0IGlzRGFjSGlkZGVuIDtcclxuICAgIGlmIChjb2x1bW4uaXNCdXR0b24gPT09IGZhbHNlKSB7XHJcbiAgICAgIGlzRGFjSGlkZGVuPSB0aGlzLmNhblZpZXdEYWNTdGF0dXModXNlclJvbGVzLCBjb2x1bW4uZmllbGQpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIGlzRGFjSGlkZGVuID0gdGhpcy5jYW5DcmVhdGVEYWModXNlclJvbGVzLCBjb2x1bW4uZmllbGQpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBjb2x1bW5TdGF0ZTphbnk9IHRoaXMuZ3JpZEFQSS5nZXRDb2x1bW5EZWZzKCk/LmZpbmQoKGNvbDphbnkpPT4gY29sLmZpZWxkPT1jb2x1bW4uZmllbGQpO1xyXG4gICAgaWYoY29sdW1uU3RhdGUgJiYgY29sdW1uU3RhdGUuaGlkZSl7XHJcbiAgICAgIHJldHVybiAgY29sdW1uU3RhdGUuaGlkZSB8fCBpc0RhY0hpZGRlbjtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgcmV0dXJuICAhY29sdW1uLnZpc2libGUgfHwgaXNEYWNIaWRkZW47XHJcbiAgICB9XHJcbiAgfVxyXG4gIHByaXZhdGUgX21hcENvbHVtbkRlZihjb2x1bW5zOiBhbnksIHVzZXJSb2xlczogYW55KSB7XHJcbiAgICByZXR1cm4gY29sdW1ucz8ubWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzLmlzQnV0dG9uID09PSBmYWxzZSkge1xyXG4gICAgICAgIGlmIChyZXMuY29sdW1uVHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgaGVhZGVyTmFtZTogcmVzLnRpdGxlLFxyXG4gICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGhlYWRlckNoZWNrYm94U2VsZWN0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgZmlsdGVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGNoZWNrYm94U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93RGlzYWJsZWRDaGVja2JveGVzOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc0ZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NTb3J0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc01lbnU6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiA1NSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXMuY29sdW1uVHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgaGVhZGVyTmFtZTogcmVzLnRpdGxlLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NGaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHN1cHByZXNzU29ydGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICB0b29sdGlwRmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBEcm9wZG93blJlbmRlcmVyLFxyXG4gICAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrOiB0aGlzLm9uQnRuQ2xpY2suYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICB0b29sdGlwOiByZXMudG9vbHRpcCxcclxuICAgICAgICAgICAgICBkcm9wRG93bkRhdGE6IHJlcy5kcm9wRG93bkRhdGEsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uQ2VsbENsaWNrZWQ6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBlLm5vZGUuc2V0U2VsZWN0ZWQoZmFsc2UpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB3aWR0aDogNDAsXHJcbiAgICAgICAgICAgIHBpbm5lZDogcmVzLnBpblBvc2l0aW9uLFxyXG4gICAgICAgICAgICBsb2NrUGlubmVkOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gaWYgKCFoaWRlRGFjU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgICBoZWFkZXJOYW1lOiByZXMudGl0bGUsXHJcbiAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGhpZGU6dGhpcy5fZ2V0Q29sdW1uVmlzaWJsaXR5U3RhdHVzKHJlcyx1c2VyUm9sZXMpLFxyXG4gICAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICAgIGZsb2F0aW5nRmlsdGVyOiB0aGlzLmZsb2F0aW5nRmlsdGVyLFxyXG4gICAgICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiAocGFyYW1zOiBWYWx1ZUZvcm1hdHRlclBhcmFtcykgPT5cclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVyU2VydmljZS5jb2xWYWx1ZUZvcm1hdHRlcihcclxuICAgICAgICAgICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgICByZXMuY29sdW1uVHlwZVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBmaWx0ZXJhYmxlOiByZXMuZmlsdGVyYWJsZSxcclxuICAgICAgICAgICAgICBmaWx0ZXI6XHJcbiAgICAgICAgICAgICAgICByZXMuY29sdW1uVHlwZSA9PSAnc3RyaW5nJ1xyXG4gICAgICAgICAgICAgICAgICA/ICdhZ1RleHRDb2x1bW5GaWx0ZXInXHJcbiAgICAgICAgICAgICAgICAgIDogcmVzLmNvbHVtblR5cGUgPT0gJ251bWJlcidcclxuICAgICAgICAgICAgICAgICAgPyAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInXHJcbiAgICAgICAgICAgICAgICAgIDogJ2FnRGF0ZUNvbHVtbkZpbHRlcicsXHJcbiAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBjb21wYXJhdG9yOiAoXHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQ6IGFueSxcclxuICAgICAgICAgICAgICAgICAgY2VsbFZhbHVlOiBhbnlcclxuICAgICAgICAgICAgICAgICkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBkYXRlQXNTdHJpbmcgPSBjZWxsVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoZGF0ZUFzU3RyaW5nID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzLmNvbHVtblR5cGUgPT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbERhdGUgPSBuZXcgRGF0ZShkYXRlQXNTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjZWxsRGF0ZSA8IGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNlbGxEYXRlID4gZmlsdGVyTG9jYWxEYXRlQXRNaWRuaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFsncmVzZXQnXSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgLy8gfSBcclxuICAgICAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgICAgLy8gICByZXR1cm47XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGlmICghaGlkZUJ0bikge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgaGVhZGVyTmFtZTogcmVzLnRpdGxlLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgaGlkZTogdGhpcy5fZ2V0Q29sdW1uVmlzaWJsaXR5U3RhdHVzKHJlcyx1c2VyUm9sZXMpLFxyXG4gICAgICAgICAgICBzdXBwcmVzc0ZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NTb3J0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc01lbnU6IHRydWUsXHJcbiAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICBjZWxsUmVuZGVyZXI6IEJ1dHRvblJlbmRlcmVyQ29tcG9uZW50LFxyXG4gICAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrOiB0aGlzLm9uQnRuQ2xpY2suYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICBsYWJlbDogcmVzLmxhYmVsLFxyXG4gICAgICAgICAgICAgIGljb246IHJlcy5pY29uLFxyXG4gICAgICAgICAgICAgIGJ1dHRvbk5hbWU6IHJlcy5idXR0b25OYW1lLFxyXG4gICAgICAgICAgICAgIHRvb2x0aXA6IHJlcy50b29sdGlwLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB2YWx1ZUdldHRlcjogKHBhcmFtczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcy50b29sdGlwIHx8IHJlcy50aXRsZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbWluV2lkdGg6IDIwLFxyXG4gICAgICAgICAgICBjZWxsQ2xhc3M6ICdhY3Rpb24tYnV0dG9uJyxcclxuICAgICAgICAgICAgcGlubmVkOiByZXMucGluUG9zaXRpb24sXHJcbiAgICAgICAgICAgIGxvY2tQaW5uZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiByZXMubGFiZWwgPyAxMDAgOiA0MCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FuQ3JlYXRlRGFjKHJvbGVzOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHJvbGVzPy5sZW5ndGggPiAwICYmIGZpZWxkID09PSAnY3JlYXRlRGFjJykge1xyXG4gICAgICBjb25zdCBpc0FFR3JvdXAgPSB0aGlzLnVzZXJSb2xlcy5zb21lKChyb2xlKSA9PiByb2xlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdhZScpKTtcclxuICAgICAgY29uc3QgaXNEZXNpZ25NYW5hZ2VyID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fRGVzaWduX01hbmFnZXIpO1xyXG4gICAgICByZXR1cm4gIShpc0FFR3JvdXAgfHwgaXNEZXNpZ25NYW5hZ2VyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjYW5WaWV3RGFjU3RhdHVzKHJvbGVzOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHJvbGVzPy5sZW5ndGggPiAwICYmIGZpZWxkID09PSAnZGFjU3RhdHVzJykge1xyXG4gICAgICBjb25zdCBpc0FFR3JvdXAgPSB0aGlzLnVzZXJSb2xlcy5zb21lKChyb2xlKSA9PiByb2xlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdhZScpKTtcclxuICAgICAgY29uc3QgaXNJbnRlZ3JhdGlvblRlYW1Hcm91cCA9IHRoaXMudXNlclJvbGVzLnNvbWUoKHJvbGUpID0+IHJvbGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2ludGVncmF0aW9uIHRlYW0nKSk7XHJcbiAgICAgIGNvbnN0IGlzSW50ZWdyYXRpb25MZWFkID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fSW50ZWdyYXRpb25fTGVhZCk7XHJcbiAgICAgIGNvbnN0IGlzVG9vbE93bmVyID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fVG9vbF9Pd25lcik7XHJcbiAgICAgIGNvbnN0IGlzQXJlYUNvb3JkaW5hdG9yID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fQXJlYV9Db29yZGluYXRvcik7XHJcbiAgICAgIGNvbnN0IGlzRGVzaWduTWFuYWdlciA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX0Rlc2lnbl9NYW5hZ2VyKTtcclxuICAgICAgcmV0dXJuICEoaXNBRUdyb3VwIHx8IGlzSW50ZWdyYXRpb25UZWFtR3JvdXAgfHwgaXNJbnRlZ3JhdGlvbkxlYWQgfHwgaXNUb29sT3duZXIgfHwgaXNBcmVhQ29vcmRpbmF0b3IgfHwgaXNEZXNpZ25NYW5hZ2VyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRFeHRlcm5hbEZpbHRlcnMob3B0aW9uczogYW55KSB7XHJcbiAgICB2YXIgc2VydmVyVXJsID0gJyc7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VydmVyRGF0YVVybC5pbmRleE9mKCdmaWx0ZXInKSA+PSAwICYmXHJcbiAgICAgIG9wdGlvbnMuaW5kZXhPZignZmlsdGVyJykgPj0gMFxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBzbHVnID0gdGhpcy5zZXJ2ZXJEYXRhVXJsLnNwbGl0KCc/JGZpbHRlcj0nKTtcclxuICAgICAgaWYgKHNsdWcgJiYgc2x1Zy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgKyAnIGFuZCAnICsgc2x1Z1sxXTtcclxuICAgICAgICBzZXJ2ZXJVcmwgPSBzbHVnWzBdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VydmVyRGF0YVVybC5pbmRleE9mKCc/JykgPj0gMCkge1xyXG4gICAgICBzZXJ2ZXJVcmwgPSB0aGlzLnNlcnZlckRhdGFVcmw7XHJcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLnJlcGxhY2UoJz8nLCAnJicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3NlcnZlclVybH0ke29wdGlvbnN9YDtcclxuICB9XHJcblxyXG4gIG9uR3JpZFJlYWR5KHBhcmFtczogR3JpZFJlYWR5RXZlbnQpIHtcclxuICAgIC8vdGhpcy5ncmlkUGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5ncmlkQVBJPXBhcmFtcy5hcGk7XHJcbiAgICBpZiAodGhpcy5lbmFibGVTZXJ2ZXJTaWRlUGFnaW5nID09IHRydWUpIHtcclxuICAgICAgLy9jYWxsIGFwaVxyXG4gICAgICBsZXQgcmVxSGVhZGVycyA9IHtcclxuICAgICAgICAnQ29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHRoaXMudG9rZW4sXHJcbiAgICAgIH07XHJcbiAgICAgIHBhcmFtcy5hcGkuc2V0U2VydmVyU2lkZURhdGFzb3VyY2UoXHJcbiAgICAgICAgbmV3IE9kYXRhU2VydmVyU2lkZVByb3ZpZGVyKHtcclxuICAgICAgICAgIGlzQ2FzZVNlbnNpdGl2ZVN0cmluZ0ZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgICBjYWxsQXBpOiAob3B0aW9ucykgPT5cclxuICAgICAgICAgICAgZmV0Y2goYCR7dGhpcy5zZXRFeHRlcm5hbEZpbHRlcnMob3B0aW9ucyl9YCwge1xyXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHJlcUhlYWRlcnMsXHJcbiAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpLFxyXG4gICAgICAgICAgYWZ0ZXJMb2FkRGF0YTogKG9wdGlvbnMsIHJvd0RhdGEsIHRvdGFsQ291bnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFyb3dEYXRhIHx8IHJvd0RhdGEubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmdyaWRBUEkuc2hvd05vUm93c092ZXJsYXkoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmdyaWRBUEkuaGlkZU92ZXJsYXkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0R3JpZFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZENvbHVtblN0YXRlKSB7ICAgICAgXHJcbiAgICAgIHRoaXMuZ3JpZEFQSS5hcHBseUNvbHVtblN0YXRlKHtzdGF0ZTp0aGlzLmdyaWRDb2x1bW5TdGF0ZS5jb2x1bW5TaXppbmc/LmNvbHVtblNpemluZ01vZGVsLGFwcGx5T3JkZXI6dHJ1ZX0pO1xyXG4gICAgICBpZiAodGhpcy5ncmlkQ29sdW1uU3RhdGUuc29ydCkge1xyXG4gICAgICAgIHRoaXMuZ3JpZEFQSS5hcHBseUNvbHVtblN0YXRlKHtzdGF0ZTp0aGlzLmdyaWRDb2x1bW5TdGF0ZS5zb3J0LnNvcnRNb2RlbH0pXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZ3JpZENvbHVtblN0YXRlLmZpbHRlcikge1xyXG4gICAgICAgIHZhciBmaWx0ZXJNb2RlbDphbnk9dGhpcy5ncmlkQ29sdW1uU3RhdGUuZmlsdGVyLmZpbHRlck1vZGVsO1xyXG4gICAgICAgIHRoaXMuZ3JpZEFQSS5zZXRGaWx0ZXJNb2RlbChmaWx0ZXJNb2RlbCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZ3JpZENvbHVtblN0YXRlLmNvbHVtblZpc2liaWxpdHkpIHtcclxuICAgICAgICB2YXIgaGlkZGVuQ29sdW1uczphbnk9dGhpcy5ncmlkQ29sdW1uU3RhdGUuY29sdW1uVmlzaWJpbGl0eS5oaWRkZW5Db2xJZHM7XHJcbiAgICAgICAgdGhpcy5ncmlkQVBJLnNldENvbHVtbnNWaXNpYmxlKGhpZGRlbkNvbHVtbnMsZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9ICBlbHNlIHtcclxuICAgICAgdmFyIGNvbHVtbnMgPSB0aGlzLmdyaWRBUEkuZ2V0Q29sdW1ucygpO1xyXG4gICAgICBpZiAoY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAoY29sdW1ucy5sZW5ndGggPiAxNSkge1xyXG4gICAgICAgICAgY29uc3QgYWxsQ29sdW1uSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5ncmlkQVBJIS5nZXRDb2x1bW5zKCkhLmZvckVhY2goKGNvbHVtbjphbnkpID0+IHtcclxuICAgICAgICAgICAgYWxsQ29sdW1uSWRzLnB1c2goY29sdW1uLmdldElkKCkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmdyaWRBUEkhLmF1dG9TaXplQ29sdW1ucyhhbGxDb2x1bW5JZHMsIGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5ncmlkQVBJLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEdyaWRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmdyaWRJZCAmJiB0aGlzLmxvZ2dlZEluVXNlcikge1xyXG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlXHJcbiAgICAgICAgLmdldEdyaWRTdGF0ZSh0aGlzLmdyaWRJZCwgdGhpcy5sb2dnZWRJblVzZXIsIHRoaXMuc2l0ZUlkKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICByZXNwb25zZS5zdGF0dXMgPT0gMSAmJlxyXG4gICAgICAgICAgICByZXNwb25zZS5yZXN1bHQgJiZcclxuICAgICAgICAgICAgcmVzcG9uc2UucmVzdWx0LmdyaWRDb25maWdcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLmdyaWRDb2x1bW5TdGF0ZSA9IEpTT04ucGFyc2UocmVzcG9uc2UucmVzdWx0LmdyaWRDb25maWcpO1xyXG4gICAgICAgICAgICB0aGlzLnNldEdyaWRTdGF0ZSgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRHcmlkU3RhdGUoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIHdoaWxlIGxvYWRpbmcgZ3JpZCBzdGF0ZScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25CdG5DbGljayhlOiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKCdidG4gY2xpY2s9PicsIGUpO1xyXG4gICAgdGhpcy5idG5DbGlja0hhbmRsZXIuZW1pdChlLnJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfX2RlYm91bmNlR3JpZFNhdmVIaXQ6YW55ID0gbnVsbDtcclxuICBvblNhdmVHcmlkQ29sdW1uU3RhdGUoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuX19kZWJvdW5jZUdyaWRTYXZlSGl0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9fZGVib3VuY2VHcmlkU2F2ZUhpdCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuX19kZWJvdW5jZUdyaWRTYXZlSGl0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICBsZXQgY29sdW1uU3RhdGUgPSB0aGlzLmdyaWRBUEk/LmdldFN0YXRlKCk7XHJcbiAgICBsZXQgY29sdW1uRGF0YSA9IHtcclxuICAgICAgZ3JpZENvbmZpZzogSlNPTi5zdHJpbmdpZnkoY29sdW1uU3RhdGUpLFxyXG4gICAgICB1aUdyaWRJZDogdGhpcy5ncmlkSWQsXHJcbiAgICAgIHVzZXJJZDogdGhpcy5sb2dnZWRJblVzZXIsXHJcbiAgICAgIHNpdGVJZDogdGhpcy5zaXRlSWRcclxuICAgIH07XHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbHVtblBpbm5lZCcgfHwgKGV2ZW50LnR5cGU9PT0nZmlsdGVyQ2hhbmdlZCcgfHwgZXZlbnQudHlwZT09PSdzb3J0Q2hhbmdlZCcpIHx8IGV2ZW50LnR5cGU9PT0nY29sdW1uUmVzaXplZCcgfHwgZXZlbnQudHlwZT09PSdjb2x1bW5Nb3ZlZCcgfHwgZXZlbnQudHlwZT09PSdjb2x1bW5WaXNpYmxlJykge1xyXG4gICAgICB0aGlzLmdyaWRDb2x1bW5TdGF0ZSA9IGNvbHVtblN0YXRlO1xyXG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNhdmVDb2x1bW5Db25maWcoY29sdW1uRGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAvL3RoaXMuc2V0R3JpZFN0YXRlKCk7XHJcbiAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT0gMCkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIHdoaWxlIHNhdmluZyBjb2x1bW4gY29uZmlndXJhdGlvbjonLCByZXMubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuX19kZWJvdW5jZUdyaWRTYXZlSGl0ID0gbnVsbDtcclxuICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRSb3dCeUlkOiBHZXRSb3dJZEZ1bmMgPSAocGFyYW1zOiBHZXRSb3dJZFBhcmFtcykgPT4ge1xyXG4gICAgdmFyIGRhdGEgPSBwYXJhbXMuZGF0YTtcclxuICAgIHJldHVybiBkYXRhLmlkID8/IDA7XHJcbiAgfTtcclxuXHJcbiAgLy8gQ3VzdG9tIHJpZ2h0IGNsaWNrIENvbnRleHQgTWVudSB0byBzdXBwb3J0IGN1c3RvbSBleGNlbCBleHBvcnRzXHJcbiAgcHVibGljIGdldENvbnRleHRNZW51SXRlbXMgPSAoXHJcbiAgICBwYXJhbXM6IEdldENvbnRleHRNZW51SXRlbXNQYXJhbXNcclxuICApOiAoc3RyaW5nIHwgTWVudUl0ZW1EZWYpW10gPT4ge1xyXG4gICAgbGV0IHJlczogKHN0cmluZyB8IE1lbnVJdGVtRGVmKVtdID0gW1xyXG4gICAgICAnY3V0JyxcclxuICAgICAgJ2NvcHknLFxyXG4gICAgICAnY29weVdpdGhIZWFkZXJzJyxcclxuICAgICAgJ2NvcHlXaXRoR3JvdXBIZWFkZXJzJyxcclxuICAgICAgJ3Bhc3RlJyxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdFeHBvcnQnLFxyXG4gICAgICAgIHN1Yk1lbnU6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ0NTViBFeHBvcnQnLFxyXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmV4cG9ydEZpbGUoJ2NzdicpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ0V4Y2VsIEV4cG9ydCcsXHJcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZSgneGxzeCcpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIHJldHVybiByZXM7XHJcbiAgfTtcclxuXHJcbiAgLy9jdXN0b20gZXhwb3J0IG1ldGhvZFxyXG4gIHB1YmxpYyBleHBvcnRGaWxlKHR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5nZXREYXRhRm9yRXhjZWxFeHBvcnQodHlwZSk7XHJcbiAgfVxyXG4gIC8vR2VuZXJhdGUgb25seSB0aG9zZSBjb2x1bW5zIGZvciBleHBvcnQgd2hpY2ggYXJlIHZpc2libGUgYW5kIGFyZSBub3Qgb2Ygb3RoZXIgdHlwZXMgdGhhdCBhcmUgbm90IHJlcXVpcmVkIGZvciBleHBvcnRcclxuICBnZW5lcmF0ZUNvbHVtbnNGb3JFeGNlbCgpOiBzdHJpbmdbXSB7XHJcbiAgICBsZXQgY29sdW1uc1RvQmVEaXNwbGF5ZWRGb3JFeGNlbDogYW55ID0gW107XHJcbiAgICB0aGlzLmV4cG9ydENvbHVtbnNMaXN0LmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBjb2x1bW4udmlzaWJsZSA9PSB0cnVlICYmXHJcbiAgICAgICAgY29sdW1uLmNvbHVtblR5cGUgIT0gJ2NoZWNrYm94JyAmJlxyXG4gICAgICAgIGNvbHVtbi5jb2x1bW5UeXBlICE9ICdkcm9wZG93bicgJiZcclxuICAgICAgICBjb2x1bW4uY29sdW1uVHlwZSAhPSAnJ1xyXG4gICAgICApIHtcclxuICAgICAgICBjb2x1bW5zVG9CZURpc3BsYXllZEZvckV4Y2VsLnB1c2goY29sdW1uLmZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY29sdW1uc1RvQmVEaXNwbGF5ZWRGb3JFeGNlbDtcclxuICB9XHJcblxyXG4gIC8vR2V0IGRhdGEgZnJvbSBzZXJ2ZXIgd2l0aG91dCBwYWdpbmcgc28gdGhhdCB3aG9sZSBkYXRhIGNhbiBiZSBleHBvcnRlZCB0byBleGNlbFxyXG4gIC8vIGFuZCBhbHNvIGNoZWNrIGZvciBzZXJ2ZXIgc2lkZSBhbmQgY2xpZW50IHNpZGUgcmVuZGVyaW5nIG9mIGRhdGEgZm9yIGV4cG9ydC5cclxuICBnZXREYXRhRm9yRXhjZWxFeHBvcnQodHlwZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmdyaWRBUEkuc2hvd0xvYWRpbmdPdmVybGF5KCk7XHJcbiAgICBpZiAodGhpcy5lbmFibGVTZXJ2ZXJTaWRlUGFnaW5nKSB7XHJcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2VcclxuICAgICAgICAuZ2V0RGF0YUZvckV4cG9ydCh0aGlzLnNlcnZlckRhdGFVcmwpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdyaWRBUEkuaGlkZU92ZXJsYXkoKTtcclxuICAgICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS52YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXhjZWxBUEkuc2V0Um93RGF0YShyZXNwb25zZS52YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZXhjZWxBUEkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgICAgICAgICBpZiAodHlwZSA9PSAnY3N2Jykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZXhjZWxBUEkuZXhwb3J0RGF0YUFzQ3N2KHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbktleXM6IHRoaXMuZ2VuZXJhdGVDb2x1bW5zRm9yRXhjZWwoKSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLmV4cG9ydERhdGFBc0V4Y2VsKHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbktleXM6IHRoaXMuZ2VuZXJhdGVDb2x1bW5zRm9yRXhjZWwoKSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIHdoaWxlIGZldGNoaW5nIGRhdGEgZm9yIGV4Y2VsL2NzdiBleHBvcnQnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JpZEFQSS5oaWRlT3ZlcmxheSgpO1xyXG4gICAgICBpZiAodHlwZSA9PSAnY3N2Jykge1xyXG4gICAgICAgIHRoaXMuZ3JpZEFQSS5leHBvcnREYXRhQXNDc3Yoe1xyXG4gICAgICAgICAgY29sdW1uS2V5czogdGhpcy5nZW5lcmF0ZUNvbHVtbnNGb3JFeGNlbCgpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ3JpZEFQSS5leHBvcnREYXRhQXNFeGNlbCh7XHJcbiAgICAgICAgICBjb2x1bW5LZXlzOiB0aGlzLmdlbmVyYXRlQ29sdW1uc0ZvckV4Y2VsKCksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZChlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJDaGFuZ2VkKGU6IGFueSkge1xyXG4gICAgdGhpcy5vblNhdmVHcmlkQ29sdW1uU3RhdGUoZSk7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZWQuZW1pdChlKTsgICAgXHJcbiAgfVxyXG5cclxuICBvbkZpcnN0RGF0YVJlbmRlcmVkKGU6IGFueSkge1xyXG4gICAgdGhpcy5maXJzdERhdGFSZW5kZXJlZC5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25HcmlkUmVhZHlFeGNlbChwYXJhbXM6IGFueSkge1xyXG4gICAgdGhpcy5leGNlbEFQSSA9IHBhcmFtcy5hcGk7XHJcbiAgfVxyXG5cclxuICAvL2Rlc3Ryb3kgYWxsIGFzc29jaWF0ZWQgc3Vic2NyaXB0aW9ucyBvbiBjb21wb25lbnQgZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -34,8 +34,8 @@ export class GridLibraryService {
|
|
|
34
34
|
saveColumnConfig(columnConfig) {
|
|
35
35
|
return this.httpClient.post(`${this.baseUrl}/GridConfiguration/saveUIUserGridConfiguration`, columnConfig, { headers: this.getRequestHeader() });
|
|
36
36
|
}
|
|
37
|
-
getGridState(gridId, loggedInUserId) {
|
|
38
|
-
return this.httpClient.get(`${this.baseUrl}/GridConfiguration?gridId=${gridId}&userId=${loggedInUserId}`, { headers: this.getRequestHeader() });
|
|
37
|
+
getGridState(gridId, loggedInUserId, siteId) {
|
|
38
|
+
return this.httpClient.get(`${this.baseUrl}/GridConfiguration?gridId=${gridId}&userId=${loggedInUserId}&siteId=${siteId}`, { headers: this.getRequestHeader() });
|
|
39
39
|
}
|
|
40
40
|
getRequestHeader() {
|
|
41
41
|
let reqHeader;
|
|
@@ -64,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
64
64
|
providedIn: 'root',
|
|
65
65
|
}]
|
|
66
66
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.TokenSharingService }]; } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXNlc2l0ZS1zaGFyZWQtZ3JpZC1saWIvc3JjL2xpYi9ncmlkLWxpYnJhcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU8zQyxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQW9CLFVBQXNCLEVBQVMsb0JBQXdDO1FBQXZFLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBUyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQW9CO1FBRm5GLFlBQU8sR0FBUSw0QkFBNEIsQ0FBQztRQUdsRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMvQyxJQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFDO2dCQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFnQjtRQUN6QixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDO1NBQzFEO2FBQ0ksSUFBRyxXQUFXLElBQUUsS0FBSyxFQUFDO1lBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUUsMENBQTBDLENBQUE7U0FDekQ7YUFDSSxJQUFHLFdBQVcsSUFBRSxZQUFZLEVBQUM7WUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRSx1Q0FBdUMsQ0FBQTtTQUN0RDthQUNJO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRywyQ0FBMkMsQ0FBQTtTQUMzRDtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsTUFBVztRQUNuQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixHQUFHLElBQUksQ0FBQyxPQUFPLHNCQUFzQixNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBQyxDQUNuRixDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLFlBQWdCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLEdBQUcsSUFBSSxDQUFDLE9BQU8sZ0RBQWdELEVBQUUsWUFBWSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFDLENBQ25ILENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWMsRUFBRSxjQUFzQixFQUFFLE1BQWM7UUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDeEIsR0FBRyxJQUFJLENBQUMsT0FBTyw2QkFBNkIsTUFBTSxXQUFXLGNBQWMsV0FBVyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUNySSxDQUFDO0lBQ0osQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksU0FBYyxDQUFDO1FBRW5CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixTQUFTLEdBQUcsSUFBSSxXQUFXLENBQUM7Z0JBQzFCLGNBQWMsRUFBRSxrQkFBa0I7Z0JBQ2xDLGVBQWUsRUFBRSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVc7YUFDOUMsQ0FBQyxDQUFDO1NBQ0o7YUFDSTtZQUNILFNBQVMsR0FBRyxJQUFJLFdBQVcsQ0FBQztnQkFDMUIsY0FBYyxFQUFFLGtCQUFrQjthQUNuQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUFjO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FDckQsQ0FBQztJQUNKLENBQUM7OytHQWxFVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRva2VuU2hhcmluZ1NlcnZpY2UgfSBmcm9tICcuL3Rva2VuLXNoYXJpbmcuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JpZExpYnJhcnlTZXJ2aWNlIHtcclxuICBwcml2YXRlIGJhc2VVcmw6IGFueSA9ICdodHRwczovL2xvY2FsaG9zdDo3MjM3L2FwaSc7XHJcbiAgYWNjZXNzVG9rZW4hOiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LHByaXZhdGUgX3Rva2VuU2hhcmluZ1NlcnZpY2U6VG9rZW5TaGFyaW5nU2VydmljZSkge1xyXG4gICAgdGhpcy5fdG9rZW5TaGFyaW5nU2VydmljZS50b2tlbiQuc3Vic2NyaWJlKHJlcyA9PntcclxuICAgICAgaWYocmVzICYmIHJlcyAhPSBcIlwiKXtcclxuICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuID0gcmVzO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9ICBcclxuXHJcbiAgc2V0QmFzZVVybChlbnZpcm9ubWVudDogYW55KSB7XHJcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLm9yaWdpbi5pbmNsdWRlcygnZmNlbHNweCcpKSB7XHJcbiAgICAgIHRoaXMuYmFzZVVybCA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyAnL2Rlc2lnbmh1Yi9hcGknO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihlbnZpcm9ubWVudD09J3VhdCcpe1xyXG4gICAgICB0aGlzLmJhc2VVcmwgPSdodHRwczovL2ZjZW1zdWF0LmludGVsLmNvbS9kZXNpZ25odWIvYXBpJ1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihlbnZpcm9ubWVudD09J3Byb2R1Y3Rpb24nKXtcclxuICAgICAgdGhpcy5iYXNlVXJsID0naHR0cHM6Ly9mY2Vtcy5pbnRlbC5jb20vZGVzaWduaHViL2FwaSdcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmJhc2VVcmwgPSAnaHR0cHM6Ly9mY2Vtc3Rlc3QuaW50ZWwuY29tL2Rlc2lnbmh1Yi9hcGknXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDb2xEZWYoZ3JpZElkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8YW55PihcclxuICAgICAgYCR7dGhpcy5iYXNlVXJsfS9HcmlkQ29uZmlndXJhdGlvbi8ke2dyaWRJZH1gLCB7IGhlYWRlcnM6IHRoaXMuZ2V0UmVxdWVzdEhlYWRlcigpfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHNhdmVDb2x1bW5Db25maWcoY29sdW1uQ29uZmlnOmFueSl7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8YW55PihcclxuICAgICAgYCR7dGhpcy5iYXNlVXJsfS9HcmlkQ29uZmlndXJhdGlvbi9zYXZlVUlVc2VyR3JpZENvbmZpZ3VyYXRpb25gLCBjb2x1bW5Db25maWcsIHsgaGVhZGVyczogdGhpcy5nZXRSZXF1ZXN0SGVhZGVyKCl9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0R3JpZFN0YXRlKGdyaWRJZDogbnVtYmVyLCBsb2dnZWRJblVzZXJJZDogbnVtYmVyLCBzaXRlSWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8YW55PihcclxuICAgICAgYCR7dGhpcy5iYXNlVXJsfS9HcmlkQ29uZmlndXJhdGlvbj9ncmlkSWQ9JHtncmlkSWR9JnVzZXJJZD0ke2xvZ2dlZEluVXNlcklkfSZzaXRlSWQ9JHtzaXRlSWR9YCwgeyBoZWFkZXJzOiB0aGlzLmdldFJlcXVlc3RIZWFkZXIoKSB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVxdWVzdEhlYWRlcigpIHtcclxuICAgIGxldCByZXFIZWFkZXI6IGFueTtcclxuXHJcbiAgICBpZiAodGhpcy5hY2Nlc3NUb2tlbikge1xyXG4gICAgICByZXFIZWFkZXIgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyB0aGlzLmFjY2Vzc1Rva2VuXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJlcUhlYWRlciA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICByZXR1cm4gcmVxSGVhZGVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0YUZvckV4cG9ydChzZXJ2ZXJVcmw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxhbnk+KFxyXG4gICAgICBgJHtzZXJ2ZXJVcmx9YCwgeyBoZWFkZXJzOiB0aGlzLmdldFJlcXVlc3RIZWFkZXIoKSB9XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|