basesite-shared-grid-lib 15.10.46 → 15.10.47
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.47.tgz +0 -0
- package/esm2020/lib/grid-library.component.mjs +6 -2
- package/fesm2015/basesite-shared-grid-lib.mjs +5 -1
- package/fesm2015/basesite-shared-grid-lib.mjs.map +1 -1
- package/fesm2020/basesite-shared-grid-lib.mjs +5 -1
- package/fesm2020/basesite-shared-grid-lib.mjs.map +1 -1
- package/package.json +1 -1
- package/basesite-shared-grid-lib-15.10.46.tgz +0 -0
|
Binary file
|
|
@@ -330,6 +330,10 @@ export class GridLibraryComponent {
|
|
|
330
330
|
var filterModel = this.gridColumnState.filter.filterModel;
|
|
331
331
|
this.gridAPI.setFilterModel(filterModel);
|
|
332
332
|
}
|
|
333
|
+
if (this.gridColumnState.columnVisibility) {
|
|
334
|
+
var hiddenColumns = this.gridColumnState.columnVisibility.hiddenColIds;
|
|
335
|
+
this.gridAPI.setColumnsVisible(hiddenColumns, false);
|
|
336
|
+
}
|
|
333
337
|
}
|
|
334
338
|
else {
|
|
335
339
|
var columns = this.gridAPI.getColumns();
|
|
@@ -381,7 +385,7 @@ export class GridLibraryComponent {
|
|
|
381
385
|
uiGridId: this.gridId,
|
|
382
386
|
userId: this.loggedInUser,
|
|
383
387
|
};
|
|
384
|
-
if (event.type === 'columnPinned' || (event.type === 'filterChanged' || event.type === 'sortChanged') || event.type === 'columnResized' || event.type === 'columnMoved') {
|
|
388
|
+
if (event.type === 'columnPinned' || (event.type === 'filterChanged' || event.type === 'sortChanged') || event.type === 'columnResized' || event.type === 'columnMoved' || event.type === 'columnVisible') {
|
|
385
389
|
this.gridColumnState = columnState;
|
|
386
390
|
this.gridService.saveColumnConfig(columnData)
|
|
387
391
|
.pipe(takeUntil(this.unsubscribe$))
|
|
@@ -608,4 +612,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImpor
|
|
|
608
612
|
}], selectionChanged: [{
|
|
609
613
|
type: Output
|
|
610
614
|
}] } });
|
|
611
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYi9zcmMvbGliL2dyaWQtbGlicmFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQWdCdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVuRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBc0QzQyxNQUFNLE9BQU8sb0JBQW9CO0lBNEMvQixZQUNVLFdBQStCLEVBQy9CLGdCQUFzQyxFQUN0QyxvQkFBeUM7UUFGekMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQTNDbkQsaUNBQWlDO1FBQ3hCLDJCQUFzQixHQUFHLElBQUksQ0FBQztRQUM5QixpQkFBWSxHQUFRLFVBQVUsQ0FBQztRQUcvQiwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFHeEMsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0IsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBQ3pDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLGNBQVMsR0FBVSxFQUFFLENBQUM7UUFDL0IsZ0JBQWdCO1FBQ04s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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Q1Q7MkZBR1Usb0JBQW9CO2tCQW5EaEMsU0FBUzsrQkFDRSw4QkFBOEIsWUFDOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Q1Q7OEtBS1EsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWdHcmlkQW5ndWxhciB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XHJcbmltcG9ydCB7XHJcbiAgQ29sRGVmLFxyXG4gIEdldENvbnRleHRNZW51SXRlbXNQYXJhbXMsXHJcbiAgR2V0Um93SWRGdW5jLFxyXG4gIEdldFJvd0lkUGFyYW1zLFxyXG4gIEdyaWRBcGksXHJcbiAgR3JpZFJlYWR5RXZlbnQsXHJcbiAgTWVudUl0ZW1EZWYsXHJcbiAgUGFnaW5hdGlvbk51bWJlckZvcm1hdHRlclBhcmFtcyxcclxuICBSb3dNb2RlbFR5cGUsXHJcbiAgUm93Tm9kZSxcclxuICBWYWx1ZUZvcm1hdHRlclBhcmFtcyxcclxufSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcbmltcG9ydCB7IEdyaWRMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4vZ3JpZC1saWJyYXJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPZGF0YVNlcnZlclNpZGVQcm92aWRlciB9IGZyb20gJy4vaGVscGVycyc7XHJcbmltcG9ydCB7IEJ1dHRvblJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi9yZW5kZXJlci9idXR0b24tcmVuZGVyZXIvYnV0dG9uLXJlbmRlcmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1c3RvbVRvb2x0aXAgfSBmcm9tICcuL3JlbmRlcmVyL3Rvb2x0aXAtcmVuZGVyZXIvY3VzdG9tLXRvb2x0aXAtcmVuZGVyZXInO1xyXG5pbXBvcnQgeyBEcm9wZG93blJlbmRlcmVyIH0gZnJvbSAnLi9yZW5kZXJlci9kcm9wZG93bi1yZW5kZXJlci9kcm9wLWRvd24tcmVuZGVyZXInO1xyXG5pbXBvcnQgeyBDb2x1bW5WYWx1ZUZvcm1hdHRlciB9IGZyb20gJy4vZm9ybWF0dGVycy9jb2x1bW4tdmFsdWUtZm9ybWF0dGVyJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRva2VuU2hhcmluZ1NlcnZpY2UgfSBmcm9tICcuL3Rva2VuLXNoYXJpbmcuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iYXNlc2l0ZS1zaGFyZWQtZ3JpZC1saWInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8YWctZ3JpZC1hbmd1bGFyXHJcbiAgICAgICNhZ0dyaWRcclxuICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJTtoZWlnaHQ6OTguMnZoXCJcclxuICAgICAgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW0gc2hhcmVkLWdyaWQtbGliXCJcclxuICAgICAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiXHJcbiAgICAgIFtkZWZhdWx0Q29sRGVmXT1cImRlZmF1bHRDb2xEZWZcIlxyXG4gICAgICBbcm93RGF0YV09XCJyb3dEYXRhXCJcclxuICAgICAgW3Jvd1NlbGVjdGlvbl09XCJyb3dTZWxlY3Rpb25cIlxyXG4gICAgICBbYW5pbWF0ZVJvd3NdPVwidHJ1ZVwiXHJcbiAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiXHJcbiAgICAgIFtwYWdpbmF0aW9uXT1cInRydWVcIlxyXG4gICAgICBbcGFnaW5hdGlvbk51bWJlckZvcm1hdHRlcl09XCJwYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyXCJcclxuICAgICAgW3BhZ2luYXRpb25BdXRvUGFnZVNpemVdPVwicGFnaW5hdGlvbkF1dG9QYWdlU2l6ZVwiXHJcbiAgICAgIFt0b29sdGlwU2hvd0RlbGF5XT1cInRvb2x0aXBTaG93RGVsYXlcIlxyXG4gICAgICBbdG9vbHRpcEhpZGVEZWxheV09XCJ0b29sdGlwSGlkZURlbGF5XCJcclxuICAgICAgW3Jvd01vZGVsVHlwZV09XCJyb3dNb2RlbFR5cGVcIlxyXG4gICAgICBbY2FjaGVCbG9ja1NpemVdPVwiY2FjaGVCbG9ja1NpemVcIlxyXG4gICAgICBbbWF4Q29uY3VycmVudERhdGFzb3VyY2VSZXF1ZXN0c109XCIxXCJcclxuICAgICAgW2Jsb2NrTG9hZERlYm91bmNlTWlsbGlzXT1cIjEwMFwiXHJcbiAgICAgIChjb2x1bW5WaXNpYmxlKT1cIm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgKGNvbHVtblBpbm5lZCk9XCJvblNhdmVHcmlkQ29sdW1uU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgIChjb2x1bW5SZXNpemVkKT1cIm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgKGNvbHVtbk1vdmVkKT1cIm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgKHNvcnRDaGFuZ2VkKT1cIm9uU29ydENoYW5nZWRFdmVudCgkZXZlbnQpXCJcclxuICAgICAgW3Jvd011bHRpU2VsZWN0V2l0aENsaWNrXT1cInJvd011bHRpU2VsZWN0V2l0aENsaWNrXCJcclxuICAgICAgW2dldENvbnRleHRNZW51SXRlbXNdPVwiZ2V0Q29udGV4dE1lbnVJdGVtc1wiXHJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2VkKT1cIm9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgKGZpbHRlckNoYW5nZWQpPVwib25GaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAoZmlyc3REYXRhUmVuZGVyZWQpPVwib25GaXJzdERhdGFSZW5kZXJlZCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgPGFnLWdyaWQtYW5ndWxhclxyXG4gICAgICAjYWdHcmlkSGlkZGVuXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OjEwMHZoOyB3aWR0aDoxMDAlO2Rpc3BsYXk6bm9uZVwiXHJcbiAgICAgIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCJcclxuICAgICAgW3Jvd0RhdGFdPVwicm93RGF0YUhpZGRlblwiXHJcbiAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIlxyXG4gICAgICBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcclxuICAgICAgW2FuaW1hdGVSb3dzXT1cImZhbHNlXCJcclxuICAgICAgW3Jvd1NlbGVjdGlvbl09XCInbXVsdGlwbGUnXCJcclxuICAgICAgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeUV4Y2VsKCRldmVudClcIlxyXG4gICAgICBbc3VwcHJlc3NTY3JvbGxPbk5ld0RhdGFdPVwidHJ1ZVwiXHJcbiAgICAgIFtjYWNoZVF1aWNrRmlsdGVyXT1cImZhbHNlXCJcclxuICAgID5cclxuICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyaWRMaWJyYXJ5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgLy9pbnB1dCBwYXJhbXNcclxuICBASW5wdXQoKSBjb2x1bW5EZWZzOiBhbnk7XHJcbiAgQElucHV0KCkgcm93RGF0YTogYW55O1xyXG4gIC8vQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IDIwO1xyXG4gIEBJbnB1dCgpIHBhZ2luYXRpb25BdXRvUGFnZVNpemUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGlvbjogYW55ID0gJ211bHRpcGxlJztcclxuICBASW5wdXQoKSBncmlkSWQ6IGFueTtcclxuICBASW5wdXQoKSBsb2dnZWRJblVzZXI6IGFueTtcclxuICBASW5wdXQoKSBlbmFibGVTZXJ2ZXJTaWRlUGFnaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VydmVyRGF0YVVybCE6IHN0cmluZztcclxuICBASW5wdXQoKSBlbnZpcm9ubWVudCE6IHN0cmluZztcclxuICBASW5wdXQoKSBjYWNoZUJsb2NrU2l6ZTogbnVtYmVyID0gMDtcclxuICBASW5wdXQoKSByb3dNdWx0aVNlbGVjdFdpdGhDbGljazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZsb2F0aW5nRmlsdGVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdG9rZW4hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlclJvbGVzOiBhbnlbXSA9IFtdO1xyXG4gIC8vZXZlbnQgZW1pdHRlcnNcclxuICBAT3V0cHV0KCkgYnRuQ2xpY2tIYW5kbGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGZpcnN0RGF0YVJlbmRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGZpbHRlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvL3ZpZXdDaGlsZHNcclxuICAvL0BWaWV3Q2hpbGQoJ2FnR3JpZCcpIGFnR3JpZCE6IEFnR3JpZEFuZ3VsYXI7XHJcblxyXG4gIC8vcGFyYW10ZXJzXHJcbiAgaW5pdGlhbENvbHVtbkRlZjogYW55ID0gW107XHJcbiAgcm93RGF0YUhpZGRlbjogYW55ID0gW107XHJcbiAgZ3JpZENvbHVtblN0YXRlOiBhbnk7XHJcbiAgZXhwb3J0Q29sdW1uc0xpc3Q6IGFueSA9IFtdO1xyXG4gIHB1YmxpYyB0b29sdGlwU2hvd0RlbGF5ID0gMDtcclxuICBwdWJsaWMgdG9vbHRpcEhpZGVEZWxheSA9IDIwMDA7XHJcbiAgcHVibGljIHJvd01vZGVsVHlwZTogUm93TW9kZWxUeXBlID0gJ2NsaWVudFNpZGUnO1xyXG4gIC8vcHVibGljIGdyaWRQYWdlU2l6ZTogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIGV4Y2VsQVBJITogR3JpZEFwaTtcclxuICBwcml2YXRlIGdyaWRBUEkhOkdyaWRBcGk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfRGVzaWduX01hbmFnZXIgPSAnRGVzaWduIE1hbmFnZXInO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX0ludGVncmF0aW9uX0xlYWQgPSAnSW50ZWdyYXRpb24gTGVhZCc7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfVG9vbF9Pd25lciA9ICdUb29sIE93bmVyJztcclxuICBwcml2YXRlIHJlYWRvbmx5IF9BcmVhX0Nvb3JkaW5hdG9yID0gJ0FyZWEgQ29vcmRpbmF0b3InO1xyXG4gIC8vdW5zdWJzY3JpYmUgc3ViamVjdFxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZvcm1hdHRlclNlcnZpY2U6IENvbHVtblZhbHVlRm9ybWF0dGVyLFxyXG4gICAgcHJpdmF0ZSBfdG9rZW5TaGFyaW5nU2VydmljZTogVG9rZW5TaGFyaW5nU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgb25Tb3J0Q2hhbmdlZEV2ZW50KGU6YW55KSB7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5TdGF0ZSA9IHRoaXMuZ3JpZEFQSS5nZXRTdGF0ZSgpO1xyXG4gICAgdGhpcy5vblNhdmVHcmlkQ29sdW1uU3RhdGUoZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVmYXVsdENvbERlZjogQ29sRGVmID0ge1xyXG4gICAgc29ydGFibGU6IHRydWUsXHJcbiAgICBmaWx0ZXI6IHRydWUsXHJcbiAgICB0b29sdGlwQ29tcG9uZW50OiBDdXN0b21Ub29sdGlwLFxyXG4gIH07XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fdG9rZW5TaGFyaW5nU2VydmljZS51cGRhdGVUb2tlbih0aGlzLnRva2VuKTtcclxuXHJcbiAgICBpZiAodGhpcy5lbmFibGVTZXJ2ZXJTaWRlUGFnaW5nID09IHRydWUpIHtcclxuICAgICAgdGhpcy5yb3dNb2RlbFR5cGUgPSAnc2VydmVyU2lkZSc7XHJcbiAgICAgIHRoaXMucm93RGF0YSA9ICcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3dNb2RlbFR5cGUgPSAnY2xpZW50U2lkZSc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhpcy5ncmlkUGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5jYWNoZUJsb2NrU2l6ZSA9IHRoaXMuY2FjaGVCbG9ja1NpemUgPSAwID8gMTAwIDogdGhpcy5jYWNoZUJsb2NrU2l6ZTtcclxuICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0QmFzZVVybCh0aGlzLmVudmlyb25tZW50KTtcclxuICAgIC8vdGhpcy5nZXRHcmlkU3RhdGUoKTtcclxuICAgIHRoaXMuZ2V0Q29sRGVmKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1sndXNlclJvbGVzJ10/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5pbml0aWFsQ29sdW1uRGVmPy5sZW5ndGggPiAwICYmIHRoaXMudXNlclJvbGVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5EZWZzID0gdGhpcy5fbWFwQ29sdW1uRGVmKHRoaXMuaW5pdGlhbENvbHVtbkRlZiwgdGhpcy51c2VyUm9sZXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGFnaW5hdGlvbk51bWJlckZvcm1hdHRlcjogKFxyXG4gICAgcGFyYW1zOiBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zXHJcbiAgKSA9PiBzdHJpbmcgPSAocGFyYW1zOiBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zKSA9PiB7XHJcbiAgICByZXR1cm4gJ1snICsgcGFyYW1zLnZhbHVlLnRvTG9jYWxlU3RyaW5nKCkgKyAnXSc7XHJcbiAgfTtcclxuXHJcbiAgZ2V0Q29sRGVmKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZElkICYmIHRoaXMubG9nZ2VkSW5Vc2VyKSB7XHJcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2VcclxuICAgICAgICAuZ2V0Q29sRGVmKHRoaXMuZ3JpZElkKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbENvbHVtbkRlZiA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgICAgbGV0IGNvbGRlZjogQ29sRGVmW10gPSB0aGlzLl9tYXBDb2x1bW5EZWYocmVzcG9uc2UucmVzdWx0LCB0aGlzLnVzZXJSb2xlcykuZmlsdGVyKChjb2x1bW46IGFueSkgPT4gY29sdW1uKTtcclxuICAgICAgICAgICAgdGhpcy5leHBvcnRDb2x1bW5zTGlzdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzID0gY29sZGVmO1xyXG4gICAgICAgICAgIC8vIHRoaXMuYWdHcmlkLmdyaWRPcHRpb25zPy5hcGk/LnNldENvbHVtbkRlZnMoY29sZGVmKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRHcmlkU3RhdGUoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb2xEZWYgUmVhZCBFcnJvcj0+JywgcmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZygnUGxlYXNlIHBhc3MgdmFsaWQgR3JpZElkIGFuZCBsb2dnZWRJbiB1c2VyIElkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9tYXBDb2x1bW5EZWYoY29sdW1uczogYW55LCB1c2VyUm9sZXM6IGFueSkge1xyXG4gICAgcmV0dXJuIGNvbHVtbnM/Lm1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlcy5pc0J1dHRvbiA9PT0gZmFsc2UpIHtcclxuICAgICAgICBpZiAocmVzLmNvbHVtblR5cGUgPT09ICdjaGVja2JveCcpIHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgIGhlYWRlck5hbWU6IHJlcy50aXRsZSxcclxuICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICB0b29sdGlwRmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBoZWFkZXJDaGVja2JveFNlbGVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGZpbHRlcmFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBjaGVja2JveFNlbGVjdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgc2hvd0Rpc2FibGVkQ2hlY2tib3hlczogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NGaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHN1cHByZXNzU29ydGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICB3aWR0aDogNTUsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0gZWxzZSBpZiAocmVzLmNvbHVtblR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgIGhlYWRlck5hbWU6IHJlcy50aXRsZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHN1cHByZXNzRmlsdGVyOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc1NvcnRpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIHN1cHByZXNzTWVudTogdHJ1ZSxcclxuICAgICAgICAgICAgdG9vbHRpcEZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogRHJvcGRvd25SZW5kZXJlcixcclxuICAgICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgb25DbGljazogdGhpcy5vbkJ0bkNsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgdG9vbHRpcDogcmVzLnRvb2x0aXAsXHJcbiAgICAgICAgICAgICAgZHJvcERvd25EYXRhOiByZXMuZHJvcERvd25EYXRhLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBvbkNlbGxDbGlja2VkOiAoZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgZS5ub2RlLnNldFNlbGVjdGVkKGZhbHNlKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgd2lkdGg6IDQwLFxyXG4gICAgICAgICAgICBwaW5uZWQ6IHJlcy5waW5Qb3NpdGlvbixcclxuICAgICAgICAgICAgbG9ja1Bpbm5lZDogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGhpZGVEYWNTdGF0dXMgPSB0aGlzLmNhblZpZXdEYWNTdGF0dXModXNlclJvbGVzLCByZXMuZmllbGQpO1xyXG4gICAgICAgICAgLy8gaWYgKCFoaWRlRGFjU3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgICBoZWFkZXJOYW1lOiByZXMudGl0bGUsXHJcbiAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGhpZGU6ICFyZXMudmlzaWJsZSB8fCBoaWRlRGFjU3RhdHVzLFxyXG4gICAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICAgIGZsb2F0aW5nRmlsdGVyOiB0aGlzLmZsb2F0aW5nRmlsdGVyLFxyXG4gICAgICAgICAgICAgIHZhbHVlRm9ybWF0dGVyOiAocGFyYW1zOiBWYWx1ZUZvcm1hdHRlclBhcmFtcykgPT5cclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVyU2VydmljZS5jb2xWYWx1ZUZvcm1hdHRlcihcclxuICAgICAgICAgICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgICByZXMuY29sdW1uVHlwZVxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICBmaWx0ZXJhYmxlOiByZXMuZmlsdGVyYWJsZSxcclxuICAgICAgICAgICAgICBmaWx0ZXI6XHJcbiAgICAgICAgICAgICAgICByZXMuY29sdW1uVHlwZSA9PSAnc3RyaW5nJ1xyXG4gICAgICAgICAgICAgICAgICA/ICdhZ1RleHRDb2x1bW5GaWx0ZXInXHJcbiAgICAgICAgICAgICAgICAgIDogcmVzLmNvbHVtblR5cGUgPT0gJ251bWJlcidcclxuICAgICAgICAgICAgICAgICAgPyAnYWdOdW1iZXJDb2x1bW5GaWx0ZXInXHJcbiAgICAgICAgICAgICAgICAgIDogJ2FnRGF0ZUNvbHVtbkZpbHRlcicsXHJcbiAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgICBjb21wYXJhdG9yOiAoXHJcbiAgICAgICAgICAgICAgICAgIGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQ6IGFueSxcclxuICAgICAgICAgICAgICAgICAgY2VsbFZhbHVlOiBhbnlcclxuICAgICAgICAgICAgICAgICkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBkYXRlQXNTdHJpbmcgPSBjZWxsVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAoZGF0ZUFzU3RyaW5nID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBpZiAocmVzLmNvbHVtblR5cGUgPT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2VsbERhdGUgPSBuZXcgRGF0ZShkYXRlQXNTdHJpbmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjZWxsRGF0ZSA8IGZpbHRlckxvY2FsRGF0ZUF0TWlkbmlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNlbGxEYXRlID4gZmlsdGVyTG9jYWxEYXRlQXRNaWRuaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFsncmVzZXQnXSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgLy8gfSBcclxuICAgICAgICAgIC8vIGVsc2Uge1xyXG4gICAgICAgICAgLy8gICByZXR1cm47XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBoaWRlQnRuID0gdGhpcy5jYW5DcmVhdGVEYWModGhpcy51c2VyUm9sZXMsIHJlcy5maWVsZCk7XHJcbiAgICAgICAgLy8gaWYgKCFoaWRlQnRuKSB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBmaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICBoZWFkZXJOYW1lOiByZXMudGl0bGUsXHJcbiAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBoaWRlOiAhcmVzLnZpc2libGUgfHwgaGlkZUJ0bixcclxuICAgICAgICAgICAgc3VwcHJlc3NGaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHN1cHByZXNzU29ydGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICB0b29sdGlwRmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBCdXR0b25SZW5kZXJlckNvbXBvbmVudCxcclxuICAgICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XHJcbiAgICAgICAgICAgICAgb25DbGljazogdGhpcy5vbkJ0bkNsaWNrLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHJlcy5sYWJlbCxcclxuICAgICAgICAgICAgICBpY29uOiByZXMuaWNvbixcclxuICAgICAgICAgICAgICBidXR0b25OYW1lOiByZXMuYnV0dG9uTmFtZSxcclxuICAgICAgICAgICAgICB0b29sdGlwOiByZXMudG9vbHRpcCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdmFsdWVHZXR0ZXI6IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXMudG9vbHRpcCB8fCByZXMudGl0bGU7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG1pbldpZHRoOiAyMCxcclxuICAgICAgICAgICAgY2VsbENsYXNzOiAnYWN0aW9uLWJ1dHRvbicsXHJcbiAgICAgICAgICAgIHBpbm5lZDogcmVzLnBpblBvc2l0aW9uLFxyXG4gICAgICAgICAgICBsb2NrUGlubmVkOiB0cnVlLFxyXG4gICAgICAgICAgICB3aWR0aDogcmVzLmxhYmVsID8gMTAwIDogNDAsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gICByZXR1cm47XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNhbkNyZWF0ZURhYyhyb2xlczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChyb2xlcz8ubGVuZ3RoID4gMCAmJiBmaWVsZCA9PT0gJ2NyZWF0ZURhYycpIHtcclxuICAgICAgY29uc3QgaXNBRUdyb3VwID0gdGhpcy51c2VyUm9sZXMuc29tZSgocm9sZSkgPT4gcm9sZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYWUnKSk7XHJcbiAgICAgIGNvbnN0IGlzRGVzaWduTWFuYWdlciA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX0Rlc2lnbl9NYW5hZ2VyKTtcclxuICAgICAgcmV0dXJuICEoaXNBRUdyb3VwIHx8IGlzRGVzaWduTWFuYWdlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2FuVmlld0RhY1N0YXR1cyhyb2xlczogYW55W10sIGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChyb2xlcz8ubGVuZ3RoID4gMCAmJiBmaWVsZCA9PT0gJ2RhY1N0YXR1cycpIHtcclxuICAgICAgY29uc3QgaXNBRUdyb3VwID0gdGhpcy51c2VyUm9sZXMuc29tZSgocm9sZSkgPT4gcm9sZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnYWUnKSk7XHJcbiAgICAgIGNvbnN0IGlzSW50ZWdyYXRpb25UZWFtR3JvdXAgPSB0aGlzLnVzZXJSb2xlcy5zb21lKChyb2xlKSA9PiByb2xlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdpbnRlZ3JhdGlvbiB0ZWFtJykpO1xyXG4gICAgICBjb25zdCBpc0ludGVncmF0aW9uTGVhZCA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX0ludGVncmF0aW9uX0xlYWQpO1xyXG4gICAgICBjb25zdCBpc1Rvb2xPd25lciA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX1Rvb2xfT3duZXIpO1xyXG4gICAgICBjb25zdCBpc0FyZWFDb29yZGluYXRvciA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX0FyZWFfQ29vcmRpbmF0b3IpO1xyXG4gICAgICBjb25zdCBpc0Rlc2lnbk1hbmFnZXIgPSB0aGlzLnVzZXJSb2xlcy5pbmNsdWRlcyh0aGlzLl9EZXNpZ25fTWFuYWdlcik7XHJcbiAgICAgIHJldHVybiAhKGlzQUVHcm91cCB8fCBpc0ludGVncmF0aW9uVGVhbUdyb3VwIHx8IGlzSW50ZWdyYXRpb25MZWFkIHx8IGlzVG9vbE93bmVyIHx8IGlzQXJlYUNvb3JkaW5hdG9yIHx8IGlzRGVzaWduTWFuYWdlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0RXh0ZXJuYWxGaWx0ZXJzKG9wdGlvbnM6IGFueSkge1xyXG4gICAgdmFyIHNlcnZlclVybCA9ICcnO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlcnZlckRhdGFVcmwuaW5kZXhPZignZmlsdGVyJykgPj0gMCAmJlxyXG4gICAgICBvcHRpb25zLmluZGV4T2YoJ2ZpbHRlcicpID49IDBcclxuICAgICkge1xyXG4gICAgICBsZXQgc2x1ZyA9IHRoaXMuc2VydmVyRGF0YVVybC5zcGxpdCgnPyRmaWx0ZXI9Jyk7XHJcbiAgICAgIGlmIChzbHVnICYmIHNsdWcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zICsgJyBhbmQgJyArIHNsdWdbMV07XHJcbiAgICAgICAgc2VydmVyVXJsID0gc2x1Z1swXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlcnZlckRhdGFVcmwuaW5kZXhPZignPycpID49IDApIHtcclxuICAgICAgc2VydmVyVXJsID0gdGhpcy5zZXJ2ZXJEYXRhVXJsO1xyXG4gICAgICBvcHRpb25zID0gb3B0aW9ucy5yZXBsYWNlKCc/JywgJyYnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBgJHtzZXJ2ZXJVcmx9JHtvcHRpb25zfWA7XHJcbiAgfVxyXG5cclxuICBvbkdyaWRSZWFkeShwYXJhbXM6IEdyaWRSZWFkeUV2ZW50KSB7XHJcbiAgICAvL3RoaXMuZ3JpZFBhZ2VTaXplID0gdGhpcy5wYWdlU2l6ZTtcclxuICAgIHRoaXMuZ3JpZEFQST1wYXJhbXMuYXBpO1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlU2VydmVyU2lkZVBhZ2luZyA9PSB0cnVlKSB7XHJcbiAgICAgIC8vY2FsbCBhcGlcclxuICAgICAgbGV0IHJlcUhlYWRlcnMgPSB7XHJcbiAgICAgICAgJ0NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICBBdXRob3JpemF0aW9uOiAnQmVhcmVyICcgKyB0aGlzLnRva2VuLFxyXG4gICAgICB9O1xyXG4gICAgICBwYXJhbXMuYXBpLnNldFNlcnZlclNpZGVEYXRhc291cmNlKFxyXG4gICAgICAgIG5ldyBPZGF0YVNlcnZlclNpZGVQcm92aWRlcih7XHJcbiAgICAgICAgICBpc0Nhc2VTZW5zaXRpdmVTdHJpbmdGaWx0ZXI6IGZhbHNlLFxyXG4gICAgICAgICAgY2FsbEFwaTogKG9wdGlvbnMpID0+XHJcbiAgICAgICAgICAgIGZldGNoKGAke3RoaXMuc2V0RXh0ZXJuYWxGaWx0ZXJzKG9wdGlvbnMpfWAsIHtcclxuICAgICAgICAgICAgICBoZWFkZXJzOiByZXFIZWFkZXJzLFxyXG4gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuanNvbigpKSxcclxuICAgICAgICAgIGFmdGVyTG9hZERhdGE6IChvcHRpb25zLCByb3dEYXRhLCB0b3RhbENvdW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcm93RGF0YSB8fCByb3dEYXRhLmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncmlkQVBJLnNob3dOb1Jvd3NPdmVybGF5KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncmlkQVBJLmhpZGVPdmVybGF5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEdyaWRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmdyaWRDb2x1bW5TdGF0ZSkgeyAgICAgIFxyXG4gICAgICB0aGlzLmdyaWRBUEkuYXBwbHlDb2x1bW5TdGF0ZSh7c3RhdGU6dGhpcy5ncmlkQ29sdW1uU3RhdGUuY29sdW1uU2l6aW5nPy5jb2x1bW5TaXppbmdNb2RlbCxhcHBseU9yZGVyOnRydWV9KTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZENvbHVtblN0YXRlLnNvcnQpIHtcclxuICAgICAgICB0aGlzLmdyaWRBUEkuYXBwbHlDb2x1bW5TdGF0ZSh7c3RhdGU6dGhpcy5ncmlkQ29sdW1uU3RhdGUuc29ydC5zb3J0TW9kZWx9KVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmdyaWRDb2x1bW5TdGF0ZS5maWx0ZXIpIHtcclxuICAgICAgICB2YXIgZmlsdGVyTW9kZWw6YW55PXRoaXMuZ3JpZENvbHVtblN0YXRlLmZpbHRlci5maWx0ZXJNb2RlbDtcclxuICAgICAgICB0aGlzLmdyaWRBUEkuc2V0RmlsdGVyTW9kZWwoZmlsdGVyTW9kZWwpO1xyXG4gICAgICB9XHJcbiAgICAgXHJcbiAgICB9ICBlbHNlIHtcclxuICAgICAgdmFyIGNvbHVtbnMgPSB0aGlzLmdyaWRBUEkuZ2V0Q29sdW1ucygpO1xyXG4gICAgICBpZiAoY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAoY29sdW1ucy5sZW5ndGggPiAxNSkge1xyXG4gICAgICAgICAgY29uc3QgYWxsQ29sdW1uSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5ncmlkQVBJIS5nZXRDb2x1bW5zKCkhLmZvckVhY2goKGNvbHVtbjphbnkpID0+IHtcclxuICAgICAgICAgICAgYWxsQ29sdW1uSWRzLnB1c2goY29sdW1uLmdldElkKCkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmdyaWRBUEkhLmF1dG9TaXplQ29sdW1ucyhhbGxDb2x1bW5JZHMsIGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5ncmlkQVBJLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEdyaWRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmdyaWRJZCAmJiB0aGlzLmxvZ2dlZEluVXNlcikge1xyXG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlXHJcbiAgICAgICAgLmdldEdyaWRTdGF0ZSh0aGlzLmdyaWRJZCwgdGhpcy5sb2dnZWRJblVzZXIpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHJlc3BvbnNlLnN0YXR1cyA9PSAxICYmXHJcbiAgICAgICAgICAgIHJlc3BvbnNlLnJlc3VsdCAmJlxyXG4gICAgICAgICAgICByZXNwb25zZS5yZXN1bHQuZ3JpZENvbmZpZ1xyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZENvbHVtblN0YXRlID0gSlNPTi5wYXJzZShyZXNwb25zZS5yZXN1bHQuZ3JpZENvbmZpZyk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0R3JpZFN0YXRlKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldEdyaWRTdGF0ZSgpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgbG9hZGluZyBncmlkIHN0YXRlJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJ0bkNsaWNrKGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ2J0biBjbGljaz0+JywgZSk7XHJcbiAgICB0aGlzLmJ0bkNsaWNrSGFuZGxlci5lbWl0KGUucm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9fZGVib3VuY2VHcmlkU2F2ZUhpdDphbnkgPSBudWxsO1xyXG4gIG9uU2F2ZUdyaWRDb2x1bW5TdGF0ZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5fX2RlYm91bmNlR3JpZFNhdmVIaXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX19kZWJvdW5jZUdyaWRTYXZlSGl0KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5fX2RlYm91bmNlR3JpZFNhdmVIaXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIGxldCBjb2x1bW5TdGF0ZSA9IHRoaXMuZ3JpZEFQST8uZ2V0U3RhdGUoKTtcclxuICAgIGxldCBjb2x1bW5EYXRhID0ge1xyXG4gICAgICBncmlkQ29uZmlnOiBKU09OLnN0cmluZ2lmeShjb2x1bW5TdGF0ZSksXHJcbiAgICAgIHVpR3JpZElkOiB0aGlzLmdyaWRJZCxcclxuICAgICAgdXNlcklkOiB0aGlzLmxvZ2dlZEluVXNlcixcclxuICAgIH07XHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbHVtblBpbm5lZCcgfHwgKGV2ZW50LnR5cGU9PT0nZmlsdGVyQ2hhbmdlZCcgfHwgZXZlbnQudHlwZT09PSdzb3J0Q2hhbmdlZCcpIHx8IGV2ZW50LnR5cGU9PT0nY29sdW1uUmVzaXplZCcgfHwgZXZlbnQudHlwZT09PSdjb2x1bW5Nb3ZlZCcpIHtcclxuICAgICAgdGhpcy5ncmlkQ29sdW1uU3RhdGUgPSBjb2x1bW5TdGF0ZTtcclxuICAgICAgdGhpcy5ncmlkU2VydmljZS5zYXZlQ29sdW1uQ29uZmlnKGNvbHVtbkRhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgLy90aGlzLnNldEdyaWRTdGF0ZSgpO1xyXG4gICAgICAgIGlmIChyZXMuc3RhdHVzID09IDApIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciB3aGlsZSBzYXZpbmcgY29sdW1uIGNvbmZpZ3VyYXRpb246JywgcmVzLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9fZGVib3VuY2VHcmlkU2F2ZUhpdCA9IG51bGw7XHJcbiAgfSwgMTAwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Um93QnlJZDogR2V0Um93SWRGdW5jID0gKHBhcmFtczogR2V0Um93SWRQYXJhbXMpID0+IHtcclxuICAgIHZhciBkYXRhID0gcGFyYW1zLmRhdGE7XHJcbiAgICByZXR1cm4gZGF0YS5pZCA/PyAwO1xyXG4gIH07XHJcblxyXG4gIC8vIEN1c3RvbSByaWdodCBjbGljayBDb250ZXh0IE1lbnUgdG8gc3VwcG9ydCBjdXN0b20gZXhjZWwgZXhwb3J0c1xyXG4gIHB1YmxpYyBnZXRDb250ZXh0TWVudUl0ZW1zID0gKFxyXG4gICAgcGFyYW1zOiBHZXRDb250ZXh0TWVudUl0ZW1zUGFyYW1zXHJcbiAgKTogKHN0cmluZyB8IE1lbnVJdGVtRGVmKVtdID0+IHtcclxuICAgIGxldCByZXM6IChzdHJpbmcgfCBNZW51SXRlbURlZilbXSA9IFtcclxuICAgICAgJ2N1dCcsXHJcbiAgICAgICdjb3B5JyxcclxuICAgICAgJ2NvcHlXaXRoSGVhZGVycycsXHJcbiAgICAgICdjb3B5V2l0aEdyb3VwSGVhZGVycycsXHJcbiAgICAgICdwYXN0ZScsXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnRXhwb3J0JyxcclxuICAgICAgICBzdWJNZW51OiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdDU1YgRXhwb3J0JyxcclxuICAgICAgICAgICAgYWN0aW9uOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leHBvcnRGaWxlKCdjc3YnKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIG5hbWU6ICdFeGNlbCBFeHBvcnQnLFxyXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmV4cG9ydEZpbGUoJ3hsc3gnKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgfSxcclxuICAgIF07XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIC8vY3VzdG9tIGV4cG9ydCBtZXRob2RcclxuICBwdWJsaWMgZXhwb3J0RmlsZSh0eXBlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ2V0RGF0YUZvckV4Y2VsRXhwb3J0KHR5cGUpO1xyXG4gIH1cclxuICAvL0dlbmVyYXRlIG9ubHkgdGhvc2UgY29sdW1ucyBmb3IgZXhwb3J0IHdoaWNoIGFyZSB2aXNpYmxlIGFuZCBhcmUgbm90IG9mIG90aGVyIHR5cGVzIHRoYXQgYXJlIG5vdCByZXF1aXJlZCBmb3IgZXhwb3J0XHJcbiAgZ2VuZXJhdGVDb2x1bW5zRm9yRXhjZWwoKTogc3RyaW5nW10ge1xyXG4gICAgbGV0IGNvbHVtbnNUb0JlRGlzcGxheWVkRm9yRXhjZWw6IGFueSA9IFtdO1xyXG4gICAgdGhpcy5leHBvcnRDb2x1bW5zTGlzdC5mb3JFYWNoKChjb2x1bW46IGFueSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgY29sdW1uLnZpc2libGUgPT0gdHJ1ZSAmJlxyXG4gICAgICAgIGNvbHVtbi5jb2x1bW5UeXBlICE9ICdjaGVja2JveCcgJiZcclxuICAgICAgICBjb2x1bW4uY29sdW1uVHlwZSAhPSAnZHJvcGRvd24nICYmXHJcbiAgICAgICAgY29sdW1uLmNvbHVtblR5cGUgIT0gJydcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29sdW1uc1RvQmVEaXNwbGF5ZWRGb3JFeGNlbC5wdXNoKGNvbHVtbi5maWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNvbHVtbnNUb0JlRGlzcGxheWVkRm9yRXhjZWw7XHJcbiAgfVxyXG5cclxuICAvL0dldCBkYXRhIGZyb20gc2VydmVyIHdpdGhvdXQgcGFnaW5nIHNvIHRoYXQgd2hvbGUgZGF0YSBjYW4gYmUgZXhwb3J0ZWQgdG8gZXhjZWxcclxuICAvLyBhbmQgYWxzbyBjaGVjayBmb3Igc2VydmVyIHNpZGUgYW5kIGNsaWVudCBzaWRlIHJlbmRlcmluZyBvZiBkYXRhIGZvciBleHBvcnQuXHJcbiAgZ2V0RGF0YUZvckV4Y2VsRXhwb3J0KHR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5ncmlkQVBJLnNob3dMb2FkaW5nT3ZlcmxheSgpO1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlU2VydmVyU2lkZVBhZ2luZykge1xyXG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlXHJcbiAgICAgICAgLmdldERhdGFGb3JFeHBvcnQodGhpcy5zZXJ2ZXJEYXRhVXJsKVxyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ncmlkQVBJLmhpZGVPdmVybGF5KCk7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLnNldFJvd0RhdGEocmVzcG9uc2UudmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgICAgICAgICAgaWYgKHR5cGUgPT0gJ2NzdicpIHtcclxuICAgICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLmV4cG9ydERhdGFBc0Nzdih7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5LZXlzOiB0aGlzLmdlbmVyYXRlQ29sdW1uc0ZvckV4Y2VsKCksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5leGNlbEFQSS5leHBvcnREYXRhQXNFeGNlbCh7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5LZXlzOiB0aGlzLmdlbmVyYXRlQ29sdW1uc0ZvckV4Y2VsKCksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciB3aGlsZSBmZXRjaGluZyBkYXRhIGZvciBleGNlbC9jc3YgZXhwb3J0Jyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyaWRBUEkuaGlkZU92ZXJsYXkoKTtcclxuICAgICAgaWYgKHR5cGUgPT0gJ2NzdicpIHtcclxuICAgICAgICB0aGlzLmdyaWRBUEkuZXhwb3J0RGF0YUFzQ3N2KHtcclxuICAgICAgICAgIGNvbHVtbktleXM6IHRoaXMuZ2VuZXJhdGVDb2x1bW5zRm9yRXhjZWwoKSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmdyaWRBUEkuZXhwb3J0RGF0YUFzRXhjZWwoe1xyXG4gICAgICAgICAgY29sdW1uS2V5czogdGhpcy5nZW5lcmF0ZUNvbHVtbnNGb3JFeGNlbCgpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZWQoZTogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyQ2hhbmdlZChlOiBhbnkpIHtcclxuICAgIHRoaXMub25TYXZlR3JpZENvbHVtblN0YXRlKGUpO1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VkLmVtaXQoZSk7ICAgIFxyXG4gIH1cclxuXHJcbiAgb25GaXJzdERhdGFSZW5kZXJlZChlOiBhbnkpIHtcclxuICAgIHRoaXMuZmlyc3REYXRhUmVuZGVyZWQuZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG9uR3JpZFJlYWR5RXhjZWwocGFyYW1zOiBhbnkpIHtcclxuICAgIHRoaXMuZXhjZWxBUEkgPSBwYXJhbXMuYXBpO1xyXG4gIH1cclxuXHJcbiAgLy9kZXN0cm95IGFsbCBhc3NvY2lhdGVkIHN1YnNjcmlwdGlvbnMgb24gY29tcG9uZW50IGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
615
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1saWJyYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Jhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYi9zcmMvbGliL2dyaWQtbGlicmFyeS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQWdCdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVuRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBc0QzQyxNQUFNLE9BQU8sb0JBQW9CO0lBNEMvQixZQUNVLFdBQStCLEVBQy9CLGdCQUFzQyxFQUN0QyxvQkFBeUM7UUFGekMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFDdEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFxQjtRQTNDbkQsaUNBQWlDO1FBQ3hCLDJCQUFzQixHQUFHLElBQUksQ0FBQztRQUM5QixpQkFBWSxHQUFRLFVBQVUsQ0FBQztRQUcvQiwyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFHeEMsbUJBQWMsR0FBVyxDQUFDLENBQUM7UUFDM0IsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBQ3pDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLGNBQVMsR0FBVSxFQUFFLENBQUM7UUFDL0IsZ0JBQWdCO1FBQ04s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QUFDLEdBQUcsQ0FBQztJQUM3QixDQUFDO0lBRUQsMkRBQTJEO0lBQzNELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQzs7aUhBcmdCVSxvQkFBb0I7cUdBQXBCLG9CQUFvQixnc0JBakRyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDVDsyRkFHVSxvQkFBb0I7a0JBbkRoQyxTQUFTOytCQUNFLDhCQUE4QixZQUM5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDVDs4S0FLUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBZ0dyaWRBbmd1bGFyIH0gZnJvbSAnYWctZ3JpZC1hbmd1bGFyJztcclxuaW1wb3J0IHtcclxuICBDb2xEZWYsXHJcbiAgR2V0Q29udGV4dE1lbnVJdGVtc1BhcmFtcyxcclxuICBHZXRSb3dJZEZ1bmMsXHJcbiAgR2V0Um93SWRQYXJhbXMsXHJcbiAgR3JpZEFwaSxcclxuICBHcmlkUmVhZHlFdmVudCxcclxuICBNZW51SXRlbURlZixcclxuICBQYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyUGFyYW1zLFxyXG4gIFJvd01vZGVsVHlwZSxcclxuICBSb3dOb2RlLFxyXG4gIFZhbHVlRm9ybWF0dGVyUGFyYW1zLFxyXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcclxuaW1wb3J0IHsgR3JpZExpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi9ncmlkLWxpYnJhcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IE9kYXRhU2VydmVyU2lkZVByb3ZpZGVyIH0gZnJvbSAnLi9oZWxwZXJzJztcclxuaW1wb3J0IHsgQnV0dG9uUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL3JlbmRlcmVyL2J1dHRvbi1yZW5kZXJlci9idXR0b24tcmVuZGVyZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tVG9vbHRpcCB9IGZyb20gJy4vcmVuZGVyZXIvdG9vbHRpcC1yZW5kZXJlci9jdXN0b20tdG9vbHRpcC1yZW5kZXJlcic7XHJcbmltcG9ydCB7IERyb3Bkb3duUmVuZGVyZXIgfSBmcm9tICcuL3JlbmRlcmVyL2Ryb3Bkb3duLXJlbmRlcmVyL2Ryb3AtZG93bi1yZW5kZXJlcic7XHJcbmltcG9ydCB7IENvbHVtblZhbHVlRm9ybWF0dGVyIH0gZnJvbSAnLi9mb3JtYXR0ZXJzL2NvbHVtbi12YWx1ZS1mb3JtYXR0ZXInO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9rZW5TaGFyaW5nU2VydmljZSB9IGZyb20gJy4vdG9rZW4tc2hhcmluZy5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJhc2VzaXRlLXNoYXJlZC1ncmlkLWxpYicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxhZy1ncmlkLWFuZ3VsYXJcclxuICAgICAgI2FnR3JpZFxyXG4gICAgICBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDo5OC4ydmhcIlxyXG4gICAgICBjbGFzcz1cImFnLXRoZW1lLWJhbGhhbSBzaGFyZWQtZ3JpZC1saWJcIlxyXG4gICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcclxuICAgICAgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiXHJcbiAgICAgIFtyb3dEYXRhXT1cInJvd0RhdGFcIlxyXG4gICAgICBbcm93U2VsZWN0aW9uXT1cInJvd1NlbGVjdGlvblwiXHJcbiAgICAgIFthbmltYXRlUm93c109XCJ0cnVlXCJcclxuICAgICAgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeSgkZXZlbnQpXCJcclxuICAgICAgW3BhZ2luYXRpb25dPVwidHJ1ZVwiXHJcbiAgICAgIFtwYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyXT1cInBhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJcIlxyXG4gICAgICBbcGFnaW5hdGlvbkF1dG9QYWdlU2l6ZV09XCJwYWdpbmF0aW9uQXV0b1BhZ2VTaXplXCJcclxuICAgICAgW3Rvb2x0aXBTaG93RGVsYXldPVwidG9vbHRpcFNob3dEZWxheVwiXHJcbiAgICAgIFt0b29sdGlwSGlkZURlbGF5XT1cInRvb2x0aXBIaWRlRGVsYXlcIlxyXG4gICAgICBbcm93TW9kZWxUeXBlXT1cInJvd01vZGVsVHlwZVwiXHJcbiAgICAgIFtjYWNoZUJsb2NrU2l6ZV09XCJjYWNoZUJsb2NrU2l6ZVwiXHJcbiAgICAgIFttYXhDb25jdXJyZW50RGF0YXNvdXJjZVJlcXVlc3RzXT1cIjFcIlxyXG4gICAgICBbYmxvY2tMb2FkRGVib3VuY2VNaWxsaXNdPVwiMTAwXCJcclxuICAgICAgKGNvbHVtblZpc2libGUpPVwib25TYXZlR3JpZENvbHVtblN0YXRlKCRldmVudClcIlxyXG4gICAgICAoY29sdW1uUGlubmVkKT1cIm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgKGNvbHVtblJlc2l6ZWQpPVwib25TYXZlR3JpZENvbHVtblN0YXRlKCRldmVudClcIlxyXG4gICAgICAoY29sdW1uTW92ZWQpPVwib25TYXZlR3JpZENvbHVtblN0YXRlKCRldmVudClcIlxyXG4gICAgICAoc29ydENoYW5nZWQpPVwib25Tb3J0Q2hhbmdlZEV2ZW50KCRldmVudClcIlxyXG4gICAgICBbcm93TXVsdGlTZWxlY3RXaXRoQ2xpY2tdPVwicm93TXVsdGlTZWxlY3RXaXRoQ2xpY2tcIlxyXG4gICAgICBbZ2V0Q29udGV4dE1lbnVJdGVtc109XCJnZXRDb250ZXh0TWVudUl0ZW1zXCJcclxuICAgICAgKHNlbGVjdGlvbkNoYW5nZWQpPVwib25TZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAoZmlsdGVyQ2hhbmdlZCk9XCJvbkZpbHRlckNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgIChmaXJzdERhdGFSZW5kZXJlZCk9XCJvbkZpcnN0RGF0YVJlbmRlcmVkKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgICA8YWctZ3JpZC1hbmd1bGFyXHJcbiAgICAgICNhZ0dyaWRIaWRkZW5cclxuICAgICAgc3R5bGU9XCJoZWlnaHQ6MTAwdmg7IHdpZHRoOjEwMCU7ZGlzcGxheTpub25lXCJcclxuICAgICAgY2xhc3M9XCJhZy10aGVtZS1iYWxoYW1cIlxyXG4gICAgICBbcm93RGF0YV09XCJyb3dEYXRhSGlkZGVuXCJcclxuICAgICAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiXHJcbiAgICAgIFtkZWZhdWx0Q29sRGVmXT1cImRlZmF1bHRDb2xEZWZcIlxyXG4gICAgICBbYW5pbWF0ZVJvd3NdPVwiZmFsc2VcIlxyXG4gICAgICBbcm93U2VsZWN0aW9uXT1cIidtdWx0aXBsZSdcIlxyXG4gICAgICAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5RXhjZWwoJGV2ZW50KVwiXHJcbiAgICAgIFtzdXBwcmVzc1Njcm9sbE9uTmV3RGF0YV09XCJ0cnVlXCJcclxuICAgICAgW2NhY2hlUXVpY2tGaWx0ZXJdPVwiZmFsc2VcIlxyXG4gICAgPlxyXG4gICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgYCxcclxuICBzdHlsZXM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JpZExpYnJhcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICAvL2lucHV0IHBhcmFtc1xyXG4gIEBJbnB1dCgpIGNvbHVtbkRlZnM6IGFueTtcclxuICBASW5wdXQoKSByb3dEYXRhOiBhbnk7XHJcbiAgLy9ASW5wdXQoKSBwYWdlU2l6ZTogbnVtYmVyID0gMjA7XHJcbiAgQElucHV0KCkgcGFnaW5hdGlvbkF1dG9QYWdlU2l6ZSA9IHRydWU7XHJcbiAgQElucHV0KCkgcm93U2VsZWN0aW9uOiBhbnkgPSAnbXVsdGlwbGUnO1xyXG4gIEBJbnB1dCgpIGdyaWRJZDogYW55O1xyXG4gIEBJbnB1dCgpIGxvZ2dlZEluVXNlcjogYW55O1xyXG4gIEBJbnB1dCgpIGVuYWJsZVNlcnZlclNpZGVQYWdpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZXJ2ZXJEYXRhVXJsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGVudmlyb25tZW50ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNhY2hlQmxvY2tTaXplOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIHJvd011bHRpU2VsZWN0V2l0aENsaWNrOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZmxvYXRpbmdGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoKSB1c2VyUm9sZXM6IGFueVtdID0gW107XHJcbiAgLy9ldmVudCBlbWl0dGVyc1xyXG4gIEBPdXRwdXQoKSBidG5DbGlja0hhbmRsZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZmlyc3REYXRhUmVuZGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8vdmlld0NoaWxkc1xyXG4gIC8vQFZpZXdDaGlsZCgnYWdHcmlkJykgYWdHcmlkITogQWdHcmlkQW5ndWxhcjtcclxuXHJcbiAgLy9wYXJhbXRlcnNcclxuICBpbml0aWFsQ29sdW1uRGVmOiBhbnkgPSBbXTtcclxuICByb3dEYXRhSGlkZGVuOiBhbnkgPSBbXTtcclxuICBncmlkQ29sdW1uU3RhdGU6IGFueTtcclxuICBleHBvcnRDb2x1bW5zTGlzdDogYW55ID0gW107XHJcbiAgcHVibGljIHRvb2x0aXBTaG93RGVsYXkgPSAwO1xyXG4gIHB1YmxpYyB0b29sdGlwSGlkZURlbGF5ID0gMjAwMDtcclxuICBwdWJsaWMgcm93TW9kZWxUeXBlOiBSb3dNb2RlbFR5cGUgPSAnY2xpZW50U2lkZSc7XHJcbiAgLy9wdWJsaWMgZ3JpZFBhZ2VTaXplOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgZXhjZWxBUEkhOiBHcmlkQXBpO1xyXG4gIHByaXZhdGUgZ3JpZEFQSSE6R3JpZEFwaTtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9EZXNpZ25fTWFuYWdlciA9ICdEZXNpZ24gTWFuYWdlcic7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBfSW50ZWdyYXRpb25fTGVhZCA9ICdJbnRlZ3JhdGlvbiBMZWFkJztcclxuICBwcml2YXRlIHJlYWRvbmx5IF9Ub29sX093bmVyID0gJ1Rvb2wgT3duZXInO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX0FyZWFfQ29vcmRpbmF0b3IgPSAnQXJlYSBDb29yZGluYXRvcic7XHJcbiAgLy91bnN1YnNjcmliZSBzdWJqZWN0XHJcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZ3JpZFNlcnZpY2U6IEdyaWRMaWJyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgZm9ybWF0dGVyU2VydmljZTogQ29sdW1uVmFsdWVGb3JtYXR0ZXIsXHJcbiAgICBwcml2YXRlIF90b2tlblNoYXJpbmdTZXJ2aWNlOiBUb2tlblNoYXJpbmdTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBvblNvcnRDaGFuZ2VkRXZlbnQoZTphbnkpIHtcclxuICAgIHRoaXMuZ3JpZENvbHVtblN0YXRlID0gdGhpcy5ncmlkQVBJLmdldFN0YXRlKCk7XHJcbiAgICB0aGlzLm9uU2F2ZUdyaWRDb2x1bW5TdGF0ZShlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWZhdWx0Q29sRGVmOiBDb2xEZWYgPSB7XHJcbiAgICBzb3J0YWJsZTogdHJ1ZSxcclxuICAgIGZpbHRlcjogdHJ1ZSxcclxuICAgIHRvb2x0aXBDb21wb25lbnQ6IEN1c3RvbVRvb2x0aXAsXHJcbiAgfTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLl90b2tlblNoYXJpbmdTZXJ2aWNlLnVwZGF0ZVRva2VuKHRoaXMudG9rZW4pO1xyXG5cclxuICAgIGlmICh0aGlzLmVuYWJsZVNlcnZlclNpZGVQYWdpbmcgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnJvd01vZGVsVHlwZSA9ICdzZXJ2ZXJTaWRlJztcclxuICAgICAgdGhpcy5yb3dEYXRhID0gJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvd01vZGVsVHlwZSA9ICdjbGllbnRTaWRlJztcclxuICAgIH1cclxuXHJcbiAgICAvLyB0aGlzLmdyaWRQYWdlU2l6ZSA9IHRoaXMucGFnZVNpemU7XHJcbiAgICB0aGlzLmNhY2hlQmxvY2tTaXplID0gdGhpcy5jYWNoZUJsb2NrU2l6ZSA9IDAgPyAxMDAgOiB0aGlzLmNhY2hlQmxvY2tTaXplO1xyXG4gICAgdGhpcy5ncmlkU2VydmljZS5zZXRCYXNlVXJsKHRoaXMuZW52aXJvbm1lbnQpO1xyXG4gICAgLy90aGlzLmdldEdyaWRTdGF0ZSgpO1xyXG4gICAgdGhpcy5nZXRDb2xEZWYoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWyd1c2VyUm9sZXMnXT8uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIGlmICh0aGlzLmluaXRpYWxDb2x1bW5EZWY/Lmxlbmd0aCA+IDAgJiYgdGhpcy51c2VyUm9sZXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmNvbHVtbkRlZnMgPSB0aGlzLl9tYXBDb2x1bW5EZWYodGhpcy5pbml0aWFsQ29sdW1uRGVmLCB0aGlzLnVzZXJSb2xlcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYWdpbmF0aW9uTnVtYmVyRm9ybWF0dGVyOiAoXHJcbiAgICBwYXJhbXM6IFBhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJQYXJhbXNcclxuICApID0+IHN0cmluZyA9IChwYXJhbXM6IFBhZ2luYXRpb25OdW1iZXJGb3JtYXR0ZXJQYXJhbXMpID0+IHtcclxuICAgIHJldHVybiAnWycgKyBwYXJhbXMudmFsdWUudG9Mb2NhbGVTdHJpbmcoKSArICddJztcclxuICB9O1xyXG5cclxuICBnZXRDb2xEZWYoKSB7XHJcbiAgICBpZiAodGhpcy5ncmlkSWQgJiYgdGhpcy5sb2dnZWRJblVzZXIpIHtcclxuICAgICAgdGhpcy5ncmlkU2VydmljZVxyXG4gICAgICAgIC5nZXRDb2xEZWYodGhpcy5ncmlkSWQpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsQ29sdW1uRGVmID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgICAgICBsZXQgY29sZGVmOiBDb2xEZWZbXSA9IHRoaXMuX21hcENvbHVtbkRlZihyZXNwb25zZS5yZXN1bHQsIHRoaXMudXNlclJvbGVzKS5maWx0ZXIoKGNvbHVtbjogYW55KSA9PiBjb2x1bW4pO1xyXG4gICAgICAgICAgICB0aGlzLmV4cG9ydENvbHVtbnNMaXN0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMgPSBjb2xkZWY7XHJcbiAgICAgICAgICAgLy8gdGhpcy5hZ0dyaWQuZ3JpZE9wdGlvbnM/LmFwaT8uc2V0Q29sdW1uRGVmcyhjb2xkZWYpO1xyXG4gICAgICAgICAgICB0aGlzLmdldEdyaWRTdGF0ZSgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0NvbERlZiBSZWFkIEVycm9yPT4nLCByZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdQbGVhc2UgcGFzcyB2YWxpZCBHcmlkSWQgYW5kIGxvZ2dlZEluIHVzZXIgSWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX21hcENvbHVtbkRlZihjb2x1bW5zOiBhbnksIHVzZXJSb2xlczogYW55KSB7XHJcbiAgICByZXR1cm4gY29sdW1ucz8ubWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzLmlzQnV0dG9uID09PSBmYWxzZSkge1xyXG4gICAgICAgIGlmIChyZXMuY29sdW1uVHlwZSA9PT0gJ2NoZWNrYm94Jykge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgaGVhZGVyTmFtZTogcmVzLnRpdGxlLFxyXG4gICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGhlYWRlckNoZWNrYm94U2VsZWN0aW9uOiBmYWxzZSxcclxuICAgICAgICAgICAgZmlsdGVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGNoZWNrYm94U2VsZWN0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgICBzaG93RGlzYWJsZWRDaGVja2JveGVzOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc0ZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NTb3J0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc01lbnU6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiA1NSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBlbHNlIGlmIChyZXMuY29sdW1uVHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgaGVhZGVyTmFtZTogcmVzLnRpdGxlLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NGaWx0ZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHN1cHByZXNzU29ydGluZzogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NNZW51OiB0cnVlLFxyXG4gICAgICAgICAgICB0b29sdGlwRmllbGQ6IHJlcy5maWVsZCxcclxuICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBEcm9wZG93blJlbmRlcmVyLFxyXG4gICAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrOiB0aGlzLm9uQnRuQ2xpY2suYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICB0b29sdGlwOiByZXMudG9vbHRpcCxcclxuICAgICAgICAgICAgICBkcm9wRG93bkRhdGE6IHJlcy5kcm9wRG93bkRhdGEsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uQ2VsbENsaWNrZWQ6IChlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBlLm5vZGUuc2V0U2VsZWN0ZWQoZmFsc2UpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB3aWR0aDogNDAsXHJcbiAgICAgICAgICAgIHBpbm5lZDogcmVzLnBpblBvc2l0aW9uLFxyXG4gICAgICAgICAgICBsb2NrUGlubmVkOiB0cnVlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgaGlkZURhY1N0YXR1cyA9IHRoaXMuY2FuVmlld0RhY1N0YXR1cyh1c2VyUm9sZXMsIHJlcy5maWVsZCk7XHJcbiAgICAgICAgICAvLyBpZiAoIWhpZGVEYWNTdGF0dXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBmaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICAgIGhlYWRlck5hbWU6IHJlcy50aXRsZSxcclxuICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgaGlkZTogIXJlcy52aXNpYmxlIHx8IGhpZGVEYWNTdGF0dXMsXHJcbiAgICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgdG9vbHRpcEZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgICAgZmxvYXRpbmdGaWx0ZXI6IHRoaXMuZmxvYXRpbmdGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IChwYXJhbXM6IFZhbHVlRm9ybWF0dGVyUGFyYW1zKSA9PlxyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZXJTZXJ2aWNlLmNvbFZhbHVlRm9ybWF0dGVyKFxyXG4gICAgICAgICAgICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgICAgICAgICAgIHJlcy5jb2x1bW5UeXBlXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIGZpbHRlcmFibGU6IHJlcy5maWx0ZXJhYmxlLFxyXG4gICAgICAgICAgICAgIGZpbHRlcjpcclxuICAgICAgICAgICAgICAgIHJlcy5jb2x1bW5UeXBlID09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgICAgICAgID8gJ2FnVGV4dENvbHVtbkZpbHRlcidcclxuICAgICAgICAgICAgICAgICAgOiByZXMuY29sdW1uVHlwZSA9PSAnbnVtYmVyJ1xyXG4gICAgICAgICAgICAgICAgICA/ICdhZ051bWJlckNvbHVtbkZpbHRlcidcclxuICAgICAgICAgICAgICAgICAgOiAnYWdEYXRlQ29sdW1uRmlsdGVyJyxcclxuICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXM6IHtcclxuICAgICAgICAgICAgICAgIGNvbXBhcmF0b3I6IChcclxuICAgICAgICAgICAgICAgICAgZmlsdGVyTG9jYWxEYXRlQXRNaWRuaWdodDogYW55LFxyXG4gICAgICAgICAgICAgICAgICBjZWxsVmFsdWU6IGFueVxyXG4gICAgICAgICAgICAgICAgKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVBc1N0cmluZyA9IGNlbGxWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIGlmIChkYXRlQXNTdHJpbmcgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29sdW1uVHlwZSA9PSAnZGF0ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZWxsRGF0ZSA9IG5ldyBEYXRlKGRhdGVBc1N0cmluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxEYXRlIDwgZmlsdGVyTG9jYWxEYXRlQXRNaWRuaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2VsbERhdGUgPiBmaWx0ZXJMb2NhbERhdGVBdE1pZG5pZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uczogWydyZXNldCddLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAvLyB9IFxyXG4gICAgICAgICAgLy8gZWxzZSB7XHJcbiAgICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IGhpZGVCdG4gPSB0aGlzLmNhbkNyZWF0ZURhYyh0aGlzLnVzZXJSb2xlcywgcmVzLmZpZWxkKTtcclxuICAgICAgICAvLyBpZiAoIWhpZGVCdG4pIHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZpZWxkOiByZXMuZmllbGQsXHJcbiAgICAgICAgICAgIGhlYWRlck5hbWU6IHJlcy50aXRsZSxcclxuICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGhpZGU6ICFyZXMudmlzaWJsZSB8fCBoaWRlQnRuLFxyXG4gICAgICAgICAgICBzdXBwcmVzc0ZpbHRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgc3VwcHJlc3NTb3J0aW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBzdXBwcmVzc01lbnU6IHRydWUsXHJcbiAgICAgICAgICAgIHRvb2x0aXBGaWVsZDogcmVzLmZpZWxkLFxyXG4gICAgICAgICAgICBjZWxsUmVuZGVyZXI6IEJ1dHRvblJlbmRlcmVyQ29tcG9uZW50LFxyXG4gICAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrOiB0aGlzLm9uQnRuQ2xpY2suYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgICBsYWJlbDogcmVzLmxhYmVsLFxyXG4gICAgICAgICAgICAgIGljb246IHJlcy5pY29uLFxyXG4gICAgICAgICAgICAgIGJ1dHRvbk5hbWU6IHJlcy5idXR0b25OYW1lLFxyXG4gICAgICAgICAgICAgIHRvb2x0aXA6IHJlcy50b29sdGlwLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB2YWx1ZUdldHRlcjogKHBhcmFtczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcy50b29sdGlwIHx8IHJlcy50aXRsZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbWluV2lkdGg6IDIwLFxyXG4gICAgICAgICAgICBjZWxsQ2xhc3M6ICdhY3Rpb24tYnV0dG9uJyxcclxuICAgICAgICAgICAgcGlubmVkOiByZXMucGluUG9zaXRpb24sXHJcbiAgICAgICAgICAgIGxvY2tQaW5uZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiByZXMubGFiZWwgPyAxMDAgOiA0MCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FuQ3JlYXRlRGFjKHJvbGVzOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHJvbGVzPy5sZW5ndGggPiAwICYmIGZpZWxkID09PSAnY3JlYXRlRGFjJykge1xyXG4gICAgICBjb25zdCBpc0FFR3JvdXAgPSB0aGlzLnVzZXJSb2xlcy5zb21lKChyb2xlKSA9PiByb2xlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdhZScpKTtcclxuICAgICAgY29uc3QgaXNEZXNpZ25NYW5hZ2VyID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fRGVzaWduX01hbmFnZXIpO1xyXG4gICAgICByZXR1cm4gIShpc0FFR3JvdXAgfHwgaXNEZXNpZ25NYW5hZ2VyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjYW5WaWV3RGFjU3RhdHVzKHJvbGVzOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHJvbGVzPy5sZW5ndGggPiAwICYmIGZpZWxkID09PSAnZGFjU3RhdHVzJykge1xyXG4gICAgICBjb25zdCBpc0FFR3JvdXAgPSB0aGlzLnVzZXJSb2xlcy5zb21lKChyb2xlKSA9PiByb2xlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdhZScpKTtcclxuICAgICAgY29uc3QgaXNJbnRlZ3JhdGlvblRlYW1Hcm91cCA9IHRoaXMudXNlclJvbGVzLnNvbWUoKHJvbGUpID0+IHJvbGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2ludGVncmF0aW9uIHRlYW0nKSk7XHJcbiAgICAgIGNvbnN0IGlzSW50ZWdyYXRpb25MZWFkID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fSW50ZWdyYXRpb25fTGVhZCk7XHJcbiAgICAgIGNvbnN0IGlzVG9vbE93bmVyID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fVG9vbF9Pd25lcik7XHJcbiAgICAgIGNvbnN0IGlzQXJlYUNvb3JkaW5hdG9yID0gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXModGhpcy5fQXJlYV9Db29yZGluYXRvcik7XHJcbiAgICAgIGNvbnN0IGlzRGVzaWduTWFuYWdlciA9IHRoaXMudXNlclJvbGVzLmluY2x1ZGVzKHRoaXMuX0Rlc2lnbl9NYW5hZ2VyKTtcclxuICAgICAgcmV0dXJuICEoaXNBRUdyb3VwIHx8IGlzSW50ZWdyYXRpb25UZWFtR3JvdXAgfHwgaXNJbnRlZ3JhdGlvbkxlYWQgfHwgaXNUb29sT3duZXIgfHwgaXNBcmVhQ29vcmRpbmF0b3IgfHwgaXNEZXNpZ25NYW5hZ2VyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRFeHRlcm5hbEZpbHRlcnMob3B0aW9uczogYW55KSB7XHJcbiAgICB2YXIgc2VydmVyVXJsID0gJyc7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VydmVyRGF0YVVybC5pbmRleE9mKCdmaWx0ZXInKSA+PSAwICYmXHJcbiAgICAgIG9wdGlvbnMuaW5kZXhPZignZmlsdGVyJykgPj0gMFxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBzbHVnID0gdGhpcy5zZXJ2ZXJEYXRhVXJsLnNwbGl0KCc/JGZpbHRlcj0nKTtcclxuICAgICAgaWYgKHNsdWcgJiYgc2x1Zy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgKyAnIGFuZCAnICsgc2x1Z1sxXTtcclxuICAgICAgICBzZXJ2ZXJVcmwgPSBzbHVnWzBdO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VydmVyRGF0YVVybC5pbmRleE9mKCc/JykgPj0gMCkge1xyXG4gICAgICBzZXJ2ZXJVcmwgPSB0aGlzLnNlcnZlckRhdGFVcmw7XHJcbiAgICAgIG9wdGlvbnMgPSBvcHRpb25zLnJlcGxhY2UoJz8nLCAnJicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGAke3NlcnZlclVybH0ke29wdGlvbnN9YDtcclxuICB9XHJcblxyXG4gIG9uR3JpZFJlYWR5KHBhcmFtczogR3JpZFJlYWR5RXZlbnQpIHtcclxuICAgIC8vdGhpcy5ncmlkUGFnZVNpemUgPSB0aGlzLnBhZ2VTaXplO1xyXG4gICAgdGhpcy5ncmlkQVBJPXBhcmFtcy5hcGk7XHJcbiAgICBpZiAodGhpcy5lbmFibGVTZXJ2ZXJTaWRlUGFnaW5nID09IHRydWUpIHtcclxuICAgICAgLy9jYWxsIGFwaVxyXG4gICAgICBsZXQgcmVxSGVhZGVycyA9IHtcclxuICAgICAgICAnQ29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHRoaXMudG9rZW4sXHJcbiAgICAgIH07XHJcbiAgICAgIHBhcmFtcy5hcGkuc2V0U2VydmVyU2lkZURhdGFzb3VyY2UoXHJcbiAgICAgICAgbmV3IE9kYXRhU2VydmVyU2lkZVByb3ZpZGVyKHtcclxuICAgICAgICAgIGlzQ2FzZVNlbnNpdGl2ZVN0cmluZ0ZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgICBjYWxsQXBpOiAob3B0aW9ucykgPT5cclxuICAgICAgICAgICAgZmV0Y2goYCR7dGhpcy5zZXRFeHRlcm5hbEZpbHRlcnMob3B0aW9ucyl9YCwge1xyXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHJlcUhlYWRlcnMsXHJcbiAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5qc29uKCkpLFxyXG4gICAgICAgICAgYWZ0ZXJMb2FkRGF0YTogKG9wdGlvbnMsIHJvd0RhdGEsIHRvdGFsQ291bnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFyb3dEYXRhIHx8IHJvd0RhdGEubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmdyaWRBUEkuc2hvd05vUm93c092ZXJsYXkoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmdyaWRBUEkuaGlkZU92ZXJsYXkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0R3JpZFN0YXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZ3JpZENvbHVtblN0YXRlKSB7ICAgICAgXHJcbiAgICAgIHRoaXMuZ3JpZEFQSS5hcHBseUNvbHVtblN0YXRlKHtzdGF0ZTp0aGlzLmdyaWRDb2x1bW5TdGF0ZS5jb2x1bW5TaXppbmc/LmNvbHVtblNpemluZ01vZGVsLGFwcGx5T3JkZXI6dHJ1ZX0pO1xyXG4gICAgICBpZiAodGhpcy5ncmlkQ29sdW1uU3RhdGUuc29ydCkge1xyXG4gICAgICAgIHRoaXMuZ3JpZEFQSS5hcHBseUNvbHVtblN0YXRlKHtzdGF0ZTp0aGlzLmdyaWRDb2x1bW5TdGF0ZS5zb3J0LnNvcnRNb2RlbH0pXHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZ3JpZENvbHVtblN0YXRlLmZpbHRlcikge1xyXG4gICAgICAgIHZhciBmaWx0ZXJNb2RlbDphbnk9dGhpcy5ncmlkQ29sdW1uU3RhdGUuZmlsdGVyLmZpbHRlck1vZGVsO1xyXG4gICAgICAgIHRoaXMuZ3JpZEFQSS5zZXRGaWx0ZXJNb2RlbChmaWx0ZXJNb2RlbCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZ3JpZENvbHVtblN0YXRlLmNvbHVtblZpc2liaWxpdHkpIHtcclxuICAgICAgICB2YXIgaGlkZGVuQ29sdW1uczphbnk9dGhpcy5ncmlkQ29sdW1uU3RhdGUuY29sdW1uVmlzaWJpbGl0eS5oaWRkZW5Db2xJZHM7XHJcbiAgICAgICAgdGhpcy5ncmlkQVBJLnNldENvbHVtbnNWaXNpYmxlKGhpZGRlbkNvbHVtbnMsZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9ICBlbHNlIHtcclxuICAgICAgdmFyIGNvbHVtbnMgPSB0aGlzLmdyaWRBUEkuZ2V0Q29sdW1ucygpO1xyXG4gICAgICBpZiAoY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAoY29sdW1ucy5sZW5ndGggPiAxNSkge1xyXG4gICAgICAgICAgY29uc3QgYWxsQ29sdW1uSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5ncmlkQVBJIS5nZXRDb2x1bW5zKCkhLmZvckVhY2goKGNvbHVtbjphbnkpID0+IHtcclxuICAgICAgICAgICAgYWxsQ29sdW1uSWRzLnB1c2goY29sdW1uLmdldElkKCkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmdyaWRBUEkhLmF1dG9TaXplQ29sdW1ucyhhbGxDb2x1bW5JZHMsIGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5ncmlkQVBJLnNpemVDb2x1bW5zVG9GaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEdyaWRTdGF0ZSgpIHtcclxuICAgIGlmICh0aGlzLmdyaWRJZCAmJiB0aGlzLmxvZ2dlZEluVXNlcikge1xyXG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlXHJcbiAgICAgICAgLmdldEdyaWRTdGF0ZSh0aGlzLmdyaWRJZCwgdGhpcy5sb2dnZWRJblVzZXIpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHJlc3BvbnNlLnN0YXR1cyA9PSAxICYmXHJcbiAgICAgICAgICAgIHJlc3BvbnNlLnJlc3VsdCAmJlxyXG4gICAgICAgICAgICByZXNwb25zZS5yZXN1bHQuZ3JpZENvbmZpZ1xyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JpZENvbHVtblN0YXRlID0gSlNPTi5wYXJzZShyZXNwb25zZS5yZXN1bHQuZ3JpZENvbmZpZyk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0R3JpZFN0YXRlKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldEdyaWRTdGF0ZSgpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3Igd2hpbGUgbG9hZGluZyBncmlkIHN0YXRlJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJ0bkNsaWNrKGU6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ2J0biBjbGljaz0+JywgZSk7XHJcbiAgICB0aGlzLmJ0bkNsaWNrSGFuZGxlci5lbWl0KGUucm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9fZGVib3VuY2VHcmlkU2F2ZUhpdDphbnkgPSBudWxsO1xyXG4gIG9uU2F2ZUdyaWRDb2x1bW5TdGF0ZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5fX2RlYm91bmNlR3JpZFNhdmVIaXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX19kZWJvdW5jZUdyaWRTYXZlSGl0KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5fX2RlYm91bmNlR3JpZFNhdmVIaXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIGxldCBjb2x1bW5TdGF0ZSA9IHRoaXMuZ3JpZEFQST8uZ2V0U3RhdGUoKTtcclxuICAgIGxldCBjb2x1bW5EYXRhID0ge1xyXG4gICAgICBncmlkQ29uZmlnOiBKU09OLnN0cmluZ2lmeShjb2x1bW5TdGF0ZSksXHJcbiAgICAgIHVpR3JpZElkOiB0aGlzLmdyaWRJZCxcclxuICAgICAgdXNlcklkOiB0aGlzLmxvZ2dlZEluVXNlcixcclxuICAgIH07XHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbHVtblBpbm5lZCcgfHwgKGV2ZW50LnR5cGU9PT0nZmlsdGVyQ2hhbmdlZCcgfHwgZXZlbnQudHlwZT09PSdzb3J0Q2hhbmdlZCcpIHx8IGV2ZW50LnR5cGU9PT0nY29sdW1uUmVzaXplZCcgfHwgZXZlbnQudHlwZT09PSdjb2x1bW5Nb3ZlZCcgfHwgZXZlbnQudHlwZT09PSdjb2x1bW5WaXNpYmxlJykge1xyXG4gICAgICB0aGlzLmdyaWRDb2x1bW5TdGF0ZSA9IGNvbHVtblN0YXRlO1xyXG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLnNhdmVDb2x1bW5Db25maWcoY29sdW1uRGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAvL3RoaXMuc2V0R3JpZFN0YXRlKCk7XHJcbiAgICAgICAgaWYgKHJlcy5zdGF0dXMgPT0gMCkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIHdoaWxlIHNhdmluZyBjb2x1bW4gY29uZmlndXJhdGlvbjonLCByZXMubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuX19kZWJvdW5jZUdyaWRTYXZlSGl0ID0gbnVsbDtcclxuICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRSb3dCeUlkOiBHZXRSb3dJZEZ1bmMgPSAocGFyYW1zOiBHZXRSb3dJZFBhcmFtcykgPT4ge1xyXG4gICAgdmFyIGRhdGEgPSBwYXJhbXMuZGF0YTtcclxuICAgIHJldHVybiBkYXRhLmlkID8/IDA7XHJcbiAgfTtcclxuXHJcbiAgLy8gQ3VzdG9tIHJpZ2h0IGNsaWNrIENvbnRleHQgTWVudSB0byBzdXBwb3J0IGN1c3RvbSBleGNlbCBleHBvcnRzXHJcbiAgcHVibGljIGdldENvbnRleHRNZW51SXRlbXMgPSAoXHJcbiAgICBwYXJhbXM6IEdldENvbnRleHRNZW51SXRlbXNQYXJhbXNcclxuICApOiAoc3RyaW5nIHwgTWVudUl0ZW1EZWYpW10gPT4ge1xyXG4gICAgbGV0IHJlczogKHN0cmluZyB8IE1lbnVJdGVtRGVmKVtdID0gW1xyXG4gICAgICAnY3V0JyxcclxuICAgICAgJ2NvcHknLFxyXG4gICAgICAnY29weVdpdGhIZWFkZXJzJyxcclxuICAgICAgJ2NvcHlXaXRoR3JvdXBIZWFkZXJzJyxcclxuICAgICAgJ3Bhc3RlJyxcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdFeHBvcnQnLFxyXG4gICAgICAgIHN1Yk1lbnU6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ0NTViBFeHBvcnQnLFxyXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmV4cG9ydEZpbGUoJ2NzdicpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbmFtZTogJ0V4Y2VsIEV4cG9ydCcsXHJcbiAgICAgICAgICAgIGFjdGlvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZSgneGxzeCcpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICAgIHJldHVybiByZXM7XHJcbiAgfTtcclxuXHJcbiAgLy9jdXN0b20gZXhwb3J0IG1ldGhvZFxyXG4gIHB1YmxpYyBleHBvcnRGaWxlKHR5cGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5nZXREYXRhRm9yRXhjZWxFeHBvcnQodHlwZSk7XHJcbiAgfVxyXG4gIC8vR2VuZXJhdGUgb25seSB0aG9zZSBjb2x1bW5zIGZvciBleHBvcnQgd2hpY2ggYXJlIHZpc2libGUgYW5kIGFyZSBub3Qgb2Ygb3RoZXIgdHlwZXMgdGhhdCBhcmUgbm90IHJlcXVpcmVkIGZvciBleHBvcnRcclxuICBnZW5lcmF0ZUNvbHVtbnNGb3JFeGNlbCgpOiBzdHJpbmdbXSB7XHJcbiAgICBsZXQgY29sdW1uc1RvQmVEaXNwbGF5ZWRGb3JFeGNlbDogYW55ID0gW107XHJcbiAgICB0aGlzLmV4cG9ydENvbHVtbnNMaXN0LmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBjb2x1bW4udmlzaWJsZSA9PSB0cnVlICYmXHJcbiAgICAgICAgY29sdW1uLmNvbHVtblR5cGUgIT0gJ2NoZWNrYm94JyAmJlxyXG4gICAgICAgIGNvbHVtbi5jb2x1bW5UeXBlICE9ICdkcm9wZG93bicgJiZcclxuICAgICAgICBjb2x1bW4uY29sdW1uVHlwZSAhPSAnJ1xyXG4gICAgICApIHtcclxuICAgICAgICBjb2x1bW5zVG9CZURpc3BsYXllZEZvckV4Y2VsLnB1c2goY29sdW1uLmZpZWxkKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY29sdW1uc1RvQmVEaXNwbGF5ZWRGb3JFeGNlbDtcclxuICB9XHJcblxyXG4gIC8vR2V0IGRhdGEgZnJvbSBzZXJ2ZXIgd2l0aG91dCBwYWdpbmcgc28gdGhhdCB3aG9sZSBkYXRhIGNhbiBiZSBleHBvcnRlZCB0byBleGNlbFxyXG4gIC8vIGFuZCBhbHNvIGNoZWNrIGZvciBzZXJ2ZXIgc2lkZSBhbmQgY2xpZW50IHNpZGUgcmVuZGVyaW5nIG9mIGRhdGEgZm9yIGV4cG9ydC5cclxuICBnZXREYXRhRm9yRXhjZWxFeHBvcnQodHlwZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmdyaWRBUEkuc2hvd0xvYWRpbmdPdmVybGF5KCk7XHJcbiAgICBpZiAodGhpcy5lbmFibGVTZXJ2ZXJTaWRlUGFnaW5nKSB7XHJcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2VcclxuICAgICAgICAuZ2V0RGF0YUZvckV4cG9ydCh0aGlzLnNlcnZlckRhdGFVcmwpXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdyaWRBUEkuaGlkZU92ZXJsYXkoKTtcclxuICAgICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS52YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXhjZWxBUEkuc2V0Um93RGF0YShyZXNwb25zZS52YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZXhjZWxBUEkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgICAgICAgICBpZiAodHlwZSA9PSAnY3N2Jykge1xyXG4gICAgICAgICAgICAgIHRoaXMuZXhjZWxBUEkuZXhwb3J0RGF0YUFzQ3N2KHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbktleXM6IHRoaXMuZ2VuZXJhdGVDb2x1bW5zRm9yRXhjZWwoKSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLmV4Y2VsQVBJLmV4cG9ydERhdGFBc0V4Y2VsKHtcclxuICAgICAgICAgICAgICAgIGNvbHVtbktleXM6IHRoaXMuZ2VuZXJhdGVDb2x1bW5zRm9yRXhjZWwoKSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIHdoaWxlIGZldGNoaW5nIGRhdGEgZm9yIGV4Y2VsL2NzdiBleHBvcnQnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JpZEFQSS5oaWRlT3ZlcmxheSgpO1xyXG4gICAgICBpZiAodHlwZSA9PSAnY3N2Jykge1xyXG4gICAgICAgIHRoaXMuZ3JpZEFQSS5leHBvcnREYXRhQXNDc3Yoe1xyXG4gICAgICAgICAgY29sdW1uS2V5czogdGhpcy5nZW5lcmF0ZUNvbHVtbnNGb3JFeGNlbCgpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ3JpZEFQSS5leHBvcnREYXRhQXNFeGNlbCh7XHJcbiAgICAgICAgICBjb2x1bW5LZXlzOiB0aGlzLmdlbmVyYXRlQ29sdW1uc0ZvckV4Y2VsKCksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZChlOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJDaGFuZ2VkKGU6IGFueSkge1xyXG4gICAgdGhpcy5vblNhdmVHcmlkQ29sdW1uU3RhdGUoZSk7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZWQuZW1pdChlKTsgICAgXHJcbiAgfVxyXG5cclxuICBvbkZpcnN0RGF0YVJlbmRlcmVkKGU6IGFueSkge1xyXG4gICAgdGhpcy5maXJzdERhdGFSZW5kZXJlZC5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25HcmlkUmVhZHlFeGNlbChwYXJhbXM6IGFueSkge1xyXG4gICAgdGhpcy5leGNlbEFQSSA9IHBhcmFtcy5hcGk7XHJcbiAgfVxyXG5cclxuICAvL2Rlc3Ryb3kgYWxsIGFzc29jaWF0ZWQgc3Vic2NyaXB0aW9ucyBvbiBjb21wb25lbnQgZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1359,6 +1359,10 @@ class GridLibraryComponent {
|
|
|
1359
1359
|
var filterModel = this.gridColumnState.filter.filterModel;
|
|
1360
1360
|
this.gridAPI.setFilterModel(filterModel);
|
|
1361
1361
|
}
|
|
1362
|
+
if (this.gridColumnState.columnVisibility) {
|
|
1363
|
+
var hiddenColumns = this.gridColumnState.columnVisibility.hiddenColIds;
|
|
1364
|
+
this.gridAPI.setColumnsVisible(hiddenColumns, false);
|
|
1365
|
+
}
|
|
1362
1366
|
}
|
|
1363
1367
|
else {
|
|
1364
1368
|
var columns = this.gridAPI.getColumns();
|
|
@@ -1411,7 +1415,7 @@ class GridLibraryComponent {
|
|
|
1411
1415
|
uiGridId: this.gridId,
|
|
1412
1416
|
userId: this.loggedInUser,
|
|
1413
1417
|
};
|
|
1414
|
-
if (event.type === 'columnPinned' || (event.type === 'filterChanged' || event.type === 'sortChanged') || event.type === 'columnResized' || event.type === 'columnMoved') {
|
|
1418
|
+
if (event.type === 'columnPinned' || (event.type === 'filterChanged' || event.type === 'sortChanged') || event.type === 'columnResized' || event.type === 'columnMoved' || event.type === 'columnVisible') {
|
|
1415
1419
|
this.gridColumnState = columnState;
|
|
1416
1420
|
this.gridService.saveColumnConfig(columnData)
|
|
1417
1421
|
.pipe(takeUntil(this.unsubscribe$))
|