ontimize-web-ngx 15.3.2 → 15.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/app-sidenav/index.mjs +2 -1
- package/esm2020/lib/components/bar-menu/index.mjs +2 -1
- package/esm2020/lib/components/filter-builder/index.mjs +2 -1
- package/esm2020/lib/components/form/index.mjs +3 -1
- package/esm2020/lib/components/index.mjs +3 -1
- package/esm2020/lib/components/input/radio/o-radio.component.mjs +9 -11
- package/esm2020/lib/components/input/search-input/o-search-input.component.mjs +3 -3
- package/esm2020/lib/components/o-service-component.class.mjs +42 -21
- package/esm2020/lib/components/table/column/o-column.class.mjs +2 -2
- package/esm2020/lib/components/table/column/o-table-column.component.mjs +2 -4
- package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +2 -2
- package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +9 -8
- package/esm2020/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.mjs +7 -4
- package/esm2020/lib/components/table/o-table.component.mjs +64 -40
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager-base.class.mjs +1 -1
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +14 -3
- package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +2 -1
- package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +1 -14
- package/esm2020/lib/layouts/index.mjs +3 -1
- package/esm2020/lib/services/navigation.service.mjs +10 -2
- package/esm2020/lib/services/permissions/ontimize-ee-permissions.service.mjs +24 -15
- package/esm2020/lib/shared/index.mjs +3 -1
- package/esm2020/lib/types/form-layout-detail-component-data.type.mjs +1 -1
- package/fesm2015/ontimize-web-ngx.mjs +193 -122
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +175 -113
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/app-sidenav/index.d.ts +1 -0
- package/lib/components/bar-menu/index.d.ts +1 -0
- package/lib/components/filter-builder/index.d.ts +1 -0
- package/lib/components/form/index.d.ts +2 -0
- package/lib/components/index.d.ts +2 -0
- package/lib/components/input/radio/o-radio.component.d.ts +0 -2
- package/lib/components/o-service-component.class.d.ts +2 -2
- package/lib/components/table/column/o-table-column.component.d.ts +0 -1
- package/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.d.ts +4 -4
- package/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.d.ts +4 -3
- package/lib/components/table/o-table.component.d.ts +19 -2
- package/lib/layouts/form-layout/o-form-layout-manager-base.class.d.ts +3 -0
- package/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.d.ts +0 -1
- package/lib/layouts/index.d.ts +2 -0
- package/lib/services/navigation.service.d.ts +8 -4
- package/lib/shared/index.d.ts +2 -0
- package/lib/types/form-layout-detail-component-data.type.d.ts +3 -1
- package/package.json +1 -1
- package/theme.scss +8 -3
|
@@ -6,8 +6,8 @@ import { BehaviorSubject, fromEvent, of } from 'rxjs';
|
|
|
6
6
|
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
7
7
|
import { ColumnValueFilterOperator } from '../../../../../types/table/o-column-value-filter.type';
|
|
8
8
|
import { TableFilterByColumnDialogResult } from '../../../../../types/table/o-table-filter-by-column-data.type';
|
|
9
|
-
import { Util } from '../../../../../util/util';
|
|
10
9
|
import { Codes } from '../../../../../util/codes';
|
|
10
|
+
import { Util } from '../../../../../util/util';
|
|
11
11
|
import * as i0 from "@angular/core";
|
|
12
12
|
import * as i1 from "@angular/material/dialog";
|
|
13
13
|
import * as i2 from "@angular/common";
|
|
@@ -56,7 +56,8 @@ export class OTableFilterByColumnDataDialogComponent {
|
|
|
56
56
|
this.showFilterValuesOption = this.table.paginationControls;
|
|
57
57
|
this.sourceData =
|
|
58
58
|
this.table.oTableColumnsFilterComponent?.getFilterValuesInData(this.column.attr) ||
|
|
59
|
-
this.table.oTableColumnsFilterComponent?.filterValuesInData ||
|
|
59
|
+
this.table.oTableColumnsFilterComponent?.filterValuesInData ||
|
|
60
|
+
(this.table.pageable ? 'current-page' : 'all-data');
|
|
60
61
|
this.mode = this.table.oTableColumnsFilterComponent ? this.table.oTableColumnsFilterComponent.mode : 'default';
|
|
61
62
|
this.isDefaultFilterSubject.next(this.mode === 'default');
|
|
62
63
|
this.isCustomFilterSubject.next(this.mode === 'custom');
|
|
@@ -172,16 +173,16 @@ export class OTableFilterByColumnDataDialogComponent {
|
|
|
172
173
|
else {
|
|
173
174
|
const colRenderedValues = this.getColumnDataUsingRenderer();
|
|
174
175
|
const colValues = this.tableData.map(elem => elem[this.column.attr]);
|
|
175
|
-
if (this.sourceData === '
|
|
176
|
+
if (this.table.pageable && this.sourceData === 'all-data') {
|
|
176
177
|
colRenderedValues.forEach((renderedValue, i) => {
|
|
177
|
-
|
|
178
|
-
this.addIntoColumnData(renderedValue, colValues, i, filter);
|
|
179
|
-
}
|
|
178
|
+
this.addIntoColumnData(renderedValue, colValues, i, filter);
|
|
180
179
|
});
|
|
181
180
|
}
|
|
182
181
|
else {
|
|
183
182
|
colRenderedValues.forEach((renderedValue, i) => {
|
|
184
|
-
this.
|
|
183
|
+
if (!this.columnData.find(item => item.renderedValue === renderedValue)) {
|
|
184
|
+
this.addIntoColumnData(renderedValue, colValues, i, filter);
|
|
185
|
+
}
|
|
185
186
|
});
|
|
186
187
|
}
|
|
187
188
|
}
|
|
@@ -381,4 +382,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
381
382
|
type: ViewChild,
|
|
382
383
|
args: ['filterValueList']
|
|
383
384
|
}] } });
|
|
384
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvZGlhbG9nL2ZpbHRlci1ieS1jb2x1bW4vby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvZGlhbG9nL2ZpbHRlci1ieS1jb2x1bW4vby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQTBCLE1BQU0sd0JBQXdCLENBQUM7QUFFbEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQUUseUJBQXlCLEVBQXNCLE1BQU0sdURBQXVELENBQUM7QUFDdEgsT0FBTyxFQUVMLCtCQUErQixFQUNoQyxNQUFNLCtEQUEr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QUUsQ0FBQztRQUN4QyxJQUFJLE9BQU8sSUFBSSxDQUFDLGVBQWUsSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNoRSxPQUFPLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFBO1NBQ3BEO1FBQ0QsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVTLDBCQUEwQjtRQUNsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDN0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekksQ0FBQzs7cUlBblpVLHVDQUF1Qyw4Q0F1Q3hDLGVBQWU7eUhBdkNkLHVDQUF1Qyx3VkMzQ3BELGcyTkErSEE7NEZEcEZhLHVDQUF1QztrQkFWbkQsU0FBUzsrQkFDRSxzQ0FBc0MsaUJBR2pDLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osbUNBQW1DLEVBQUUsTUFBTTtxQkFDNUM7OzBCQXlDRSxNQUFNOzJCQUFDLGVBQWU7NENBWEosTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNXLGVBQWU7c0JBQTVDLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFNlbGVjdGlvbkxpc3QsIE1hdFNlbGVjdGlvbkxpc3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvciwgT0NvbHVtblZhbHVlRmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvdGFibGUvby1jb2x1bW4tdmFsdWUtZmlsdGVyLnR5cGUnO1xuaW1wb3J0IHtcbiAgVGFibGVGaWx0ZXJCeUNvbHVtbkRhdGEsXG4gIFRhYmxlRmlsdGVyQnlDb2x1bW5EaWFsb2dSZXN1bHRcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdHlwZXMvdGFibGUvby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEudHlwZSc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB0eXBlIHsgT0NvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvbHVtbi9vLWNvbHVtbi5jbGFzcyc7XG5pbXBvcnQgeyBPRmlsdGVyQ29sdW1uIH0gZnJvbSAnLi4vLi4vaGVhZGVyL3RhYmxlLWNvbHVtbnMtZmlsdGVyL2NvbHVtbnMvby10YWJsZS1jb2x1bW5zLWZpbHRlci1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBNYXRSYWRpb0NoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcbmltcG9ydCB7IFNlcnZpY2VSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvc2VydmljZS1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vby10YWJsZS5jb21wb25lbnQnO1xuXG5jb25zdCBDVVNUT01fRklMVEVSU19PUEVSQVRPUlMgPSBbQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5MRVNTX0VRVUFMLCBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLk1PUkVfRVFVQUwsIENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuQkVUV0VFTiwgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5FUVVBTF07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtZmlsdGVyLWJ5LWNvbHVtbi1kYXRhLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ28tdGFibGUtZmlsdGVyLWJ5LWNvbHVtbi1kYXRhLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1maWx0ZXItYnktY29sdW1uLWRpYWxvZ10nOiAndHJ1ZSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBwdWJsaWMgYWNjZXB0QWN0aW9uID0gVGFibGVGaWx0ZXJCeUNvbHVtbkRpYWxvZ1Jlc3VsdC5BQ0NFUFQ7XG4gIHB1YmxpYyBjYW5jZWxBY3Rpb24gPSBUYWJsZUZpbHRlckJ5Q29sdW1uRGlhbG9nUmVzdWx0LkNBTkNFTDtcbiAgcHVibGljIGNsZWFyQWN0aW9uID0gVGFibGVGaWx0ZXJCeUNvbHVtbkRpYWxvZ1Jlc3VsdC5DTEVBUjtcblxuICBjb2x1bW46IE9Db2x1bW47XG4gIHByZWxvYWRWYWx1ZXM6IGJvb2xlYW4gPSB0cnVlO1xuICBtb2RlOiBzdHJpbmc7XG4gIHN0YXJ0VmlldzogJ21vbnRoJyB8ICd5ZWFyJyB8ICdtdWx0aS15ZWFyJyB8ICcnO1xuXG4gIHB1YmxpYyBvblNvcnRGaWx0ZXJWYWx1ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxPRmlsdGVyQ29sdW1uPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc0N1c3RvbUZpbHRlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaXNDdXN0b21GaWx0ZXI6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzQ3VzdG9tRmlsdGVyU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlzRGVmYXVsdEZpbHRlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgaXNEZWZhdWx0RmlsdGVyOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5pc0RlZmF1bHRGaWx0ZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGZjVGV4dCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKTtcbiAgZmNGcm9tID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBmY1RvID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuXG4gIHByb3RlY3RlZCBjb2x1bW5EYXRhOiBUYWJsZUZpbHRlckJ5Q29sdW1uRGF0YVtdID0gW107XG4gIHByb3RlY3RlZCB0YWJsZURhdGE6IGFueVtdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBsaXN0RGF0YVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhYmxlRmlsdGVyQnlDb2x1bW5EYXRhW10+KFtdKTtcbiAgcHJvdGVjdGVkIF9saXN0RGF0YTogT2JzZXJ2YWJsZTxUYWJsZUZpbHRlckJ5Q29sdW1uRGF0YVtdPiA9IHRoaXMubGlzdERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlcicpIGZpbHRlcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZmlsdGVyVmFsdWVMaXN0JykgZmlsdGVyVmFsdWVMaXN0OiBNYXRTZWxlY3Rpb25MaXN0O1xuICBwdWJsaWMgYWN0aXZlU29ydERpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgfCAnJztcbiAgc291cmNlRGF0YTtcbiAgcXVlcnlCeUZpbHRlckNvbHVtblN1YnNjcmlwdGlvbjogYW55O1xuICB0YWJsZTogT1RhYmxlQ29tcG9uZW50O1xuICBzaG93RmlsdGVyVmFsdWVzT3B0aW9uOiBib29sZWFuO1xuICBxdWVyeU1ldGhvZE5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8T1RhYmxlRmlsdGVyQnlDb2x1bW5EYXRhRGlhbG9nQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgZGF0YTogYW55XG4gICkge1xuXG4gICAgaWYgKGRhdGEuY29sdW1uKSB7XG4gICAgICB0aGlzLmNvbHVtbiA9IGRhdGEuY29sdW1uO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlID0gZGF0YS50YWJsZTtcblxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCkge1xuICAgIHRoaXMuc2hvd0ZpbHRlclZhbHVlc09wdGlvbiA9IHRoaXMudGFibGUucGFnaW5hdGlvbkNvbnRyb2xzO1xuICAgIHRoaXMuc291cmNlRGF0YSA9XG4gICAgICB0aGlzLnRhYmxlLm9UYWJsZUNvbHVtbnNGaWx0ZXJDb21wb25lbnQ/LmdldEZpbHRlclZhbHVlc0luRGF0YSh0aGlzLmNvbHVtbi5hdHRyKSB8fFxuICAgICAgdGhpcy50YWJsZS5vVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50Py5maWx0ZXJWYWx1ZXNJbkRhdGEgfHwgJ2N1cnJlbnQtcGFnZSc7XG5cbiAgICB0aGlzLm1vZGUgPSB0aGlzLnRhYmxlLm9UYWJsZUNvbHVtbnNGaWx0ZXJDb21wb25lbnQgPyB0aGlzLnRhYmxlLm9UYWJsZUNvbHVtbnNGaWx0ZXJDb21wb25lbnQubW9kZSA6ICdkZWZhdWx0JztcbiAgICB0aGlzLmlzRGVmYXVsdEZpbHRlclN1YmplY3QubmV4dCh0aGlzLm1vZGUgPT09ICdkZWZhdWx0Jyk7XG4gICAgdGhpcy5pc0N1c3RvbUZpbHRlclN1YmplY3QubmV4dCh0aGlzLm1vZGUgPT09ICdjdXN0b20nKTtcblxuICAgIGxldCBwcmV2aW91c0ZpbHRlcjogT0NvbHVtblZhbHVlRmlsdGVyID0gdGhpcy50YWJsZS5kYXRhU291cmNlLmdldENvbHVtblZhbHVlRmlsdGVyQnlBdHRyKHRoaXMuY29sdW1uLmF0dHIpIHx8IHtcbiAgICAgIGF0dHI6IHVuZGVmaW5lZCxcbiAgICAgIG9wZXJhdG9yOiB1bmRlZmluZWQsXG4gICAgICB2YWx1ZXM6IHVuZGVmaW5lZCxcbiAgICAgIGF2YWlsYWJsZVZhbHVlczogdW5kZWZpbmVkXG4gICAgfTtcblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChwcmV2aW91c0ZpbHRlci5vcGVyYXRvcikpIHtcbiAgICAgIHRoaXMuaXNDdXN0b21GaWx0ZXJTdWJqZWN0Lm5leHQoQ1VTVE9NX0ZJTFRFUlNfT1BFUkFUT1JTLmluZGV4T2YocHJldmlvdXNGaWx0ZXIub3BlcmF0b3IpICE9PSAtMSk7XG4gICAgfVxuXG4gICAgdGhpcy5wcmVsb2FkVmFsdWVzID0gdGhpcy50YWJsZS5vVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50ID8gdGhpcy50YWJsZS5vVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50LnByZWxvYWRWYWx1ZXMgOiB0cnVlO1xuICAgIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9IHRoaXMudGFibGUuZ2V0U29ydEZpbHRlckNvbHVtbih0aGlzLmNvbHVtbikgfHwgJyc7XG4gICAgdGhpcy5zdGFydFZpZXcgPSB0aGlzLnRhYmxlLmdldFN0YXJ0Vmlld0ZpbHRlckNvbHVtbih0aGlzLmNvbHVtbikgfHwgJ21vbnRoJ1xuXG4gICAgY29uc3QgcXVlcnlNZXRob2QgPSB0aGlzLnRhYmxlLm9UYWJsZUNvbHVtbnNGaWx0ZXJDb21wb25lbnQ/LmdldFF1ZXJ5TWV0aG9kT2ZGaWx0ZXJDb2x1bW4odGhpcy5jb2x1bW4uYXR0cik7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHF1ZXJ5TWV0aG9kKSkge1xuICAgICAgdGhpcy5xdWVyeU1ldGhvZE5hbWUgPSBxdWVyeU1ldGhvZDtcbiAgICAgIHRoaXMuc291cmNlRGF0YSA9ICdhbGwtZGF0YSc7XG4gICAgfVxuICAgIHRoaXMuZ2V0RGF0YSh0aGlzLnNvdXJjZURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZURhdGFBbmRJbml0aWFsaXplRGF0YUxpc3QocHJldmlvdXNGaWx0ZXI6IE9Db2x1bW5WYWx1ZUZpbHRlcikge1xuXG4gICAgdGhpcy5wYXJzZUxpc3REYXRhKHByZXZpb3VzRmlsdGVyKTtcblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChwcmV2aW91c0ZpbHRlcikpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUN1c3RvbUZpbHRlclZhbHVlcyhwcmV2aW91c0ZpbHRlcik7XG4gICAgfVxuICAgIHRoaXMuaW5pdGlhbGl6ZURhdGFMaXN0KHByZXZpb3VzRmlsdGVyKTtcblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZpbHRlckV2ZW50KCk7XG4gIH1cblxuICBnZXQgbGlzdERhdGEoKTogT2JzZXJ2YWJsZTxUYWJsZUZpbHRlckJ5Q29sdW1uRGF0YVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3REYXRhO1xuICB9XG5cbiAgc2V0IGxpc3REYXRhKGFyZzogT2JzZXJ2YWJsZTxUYWJsZUZpbHRlckJ5Q29sdW1uRGF0YVtdPikge1xuICAgIHRoaXMuX2xpc3REYXRhID0gYXJnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVEYXRhTGlzdChmaWx0ZXI/OiBPQ29sdW1uVmFsdWVGaWx0ZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmVsb2FkVmFsdWVzIHx8IChmaWx0ZXIgJiYgZmlsdGVyLm9wZXJhdG9yID09PSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLklOKSkge1xuICAgICAgaWYgKHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9PT0gQ29kZXMuQVNDX1NPUlQgfHwgdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uID09PSBDb2Rlcy5ERVNDX1NPUlQpIHtcbiAgICAgICAgdGhpcy5zb3J0RGF0YSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5saXN0RGF0YVN1YmplY3QubmV4dCh0aGlzLmNvbHVtbkRhdGEuc2xpY2UoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVGaWx0ZXJFdmVudCgpIHtcbiAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgIGZyb21FdmVudCh0aGlzLmZpbHRlci5uYXRpdmVFbGVtZW50LCAna2V5dXAnKVxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTUwKSlcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgbGV0IGZpbHRlclZhbHVlOiBzdHJpbmcgPSB0aGlzLmZpbHRlci5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgIGZpbHRlclZhbHVlID0gVXRpbC5ub3JtYWxpemVTdHJpbmcoZmlsdGVyVmFsdWUpO1xuICAgICAgICAgIGlmIChmaWx0ZXJWYWx1ZS5pbmRleE9mKCcqJykgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhU3ViamVjdC5uZXh0KHRoaXMuY29sdW1uRGF0YS5maWx0ZXIoaXRlbSA9PiBuZXcgUmVnRXhwKCdeJyArIFV0aWwubm9ybWFsaXplU3RyaW5nKGZpbHRlclZhbHVlKS5zcGxpdCgnKicpLmpvaW4oJy4qJykgKyAnJCcpLnRlc3QoVXRpbC5ub3JtYWxpemVTdHJpbmcoaXRlbS5yZW5kZXJlZFZhbHVlKSkpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5saXN0RGF0YVN1YmplY3QubmV4dCh0aGlzLmNvbHVtbkRhdGEuZmlsdGVyKGl0ZW0gPT4gKFV0aWwubm9ybWFsaXplU3RyaW5nKGl0ZW0ucmVuZGVyZWRWYWx1ZSkuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgIT09IC0xKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVDdXN0b21GaWx0ZXJWYWx1ZXMoZmlsdGVyOiBPQ29sdW1uVmFsdWVGaWx0ZXIpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgZmlsdGVyLm9wZXJhdG9yID09PSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkVRVUFMOlxuICAgICAgICBpZiAodGhpcy5pc1RleHRUeXBlKCkpIHtcbiAgICAgICAgICB0aGlzLmZjVGV4dC5zZXRWYWx1ZShmaWx0ZXIudmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZmlsdGVyLm9wZXJhdG9yID09PSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkJFVFdFRU46XG4gICAgICAgIHRoaXMuZmNGcm9tLnNldFZhbHVlKHRoaXMuaXNEYXRlVHlwZSgpID8gbmV3IERhdGUoZmlsdGVyLnZhbHVlc1swXSkgOiBmaWx0ZXIudmFsdWVzWzBdKTtcbiAgICAgICAgdGhpcy5mY1RvLnNldFZhbHVlKHRoaXMuaXNEYXRlVHlwZSgpID8gbmV3IERhdGUoZmlsdGVyLnZhbHVlc1sxXSkgOiBmaWx0ZXIudmFsdWVzWzFdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGZpbHRlci5vcGVyYXRvciA9PT0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5NT1JFX0VRVUFMOlxuICAgICAgICB0aGlzLmZjRnJvbS5zZXRWYWx1ZSh0aGlzLmlzRGF0ZVR5cGUoKSA/IG5ldyBEYXRlKGZpbHRlci52YWx1ZXMpIDogZmlsdGVyLnZhbHVlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBmaWx0ZXIub3BlcmF0b3IgPT09IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuTEVTU19FUVVBTDpcbiAgICAgICAgdGhpcy5mY1RvLnNldFZhbHVlKHRoaXMuaXNEYXRlVHlwZSgpID8gbmV3IERhdGUoZmlsdGVyLnZhbHVlcykgOiBmaWx0ZXIudmFsdWVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRWYWx1ZXMoKTogVGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFbXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyVmFsdWVMaXN0ID8gdGhpcy5maWx0ZXJWYWx1ZUxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLm1hcChzZWxlY3RlZCA9PiBzZWxlY3RlZC52YWx1ZSkgOiBbXTtcbiAgfVxuXG4gIGFyZUFsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gdGhpcy5jb2x1bW5EYXRhLmxlbmd0aDtcbiAgfVxuXG4gIGlzSW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXM7XG4gICAgcmV0dXJuIHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoICE9PSB0aGlzLmNvbHVtbkRhdGEubGVuZ3RoO1xuICB9XG5cbiAgb25TZWxlY3QoZXZlbnQ6IE1hdFNlbGVjdGlvbkxpc3RDaGFuZ2UpIHtcbiAgICBldmVudC5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IG9wdGlvbi52YWx1ZS5zZWxlY3RlZCA9IG9wdGlvbi5zZWxlY3RlZCk7XG4gIH1cblxuICBvblNlbGVjdEFsbENoYW5nZShldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICBpZiAoZXZlbnQuY2hlY2tlZCkge1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZUxpc3Quc2VsZWN0QWxsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWVMaXN0LmRlc2VsZWN0QWxsKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlTGlzdERhdGEoZmlsdGVyOiBPQ29sdW1uVmFsdWVGaWx0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtbkRhdGEgPSBbXTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoZmlsdGVyPy5hdmFpbGFibGVWYWx1ZXMpKSB7XG4gICAgICB0aGlzLmNvbHVtbkRhdGEgPSBmaWx0ZXIuYXZhaWxhYmxlVmFsdWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb2xSZW5kZXJlZFZhbHVlcyA9IHRoaXMuZ2V0Q29sdW1uRGF0YVVzaW5nUmVuZGVyZXIoKTtcbiAgICAgIGNvbnN0IGNvbFZhbHVlczogYW55W10gPSB0aGlzLnRhYmxlRGF0YS5tYXAoZWxlbSA9PiBlbGVtW3RoaXMuY29sdW1uLmF0dHJdKTtcblxuICAgICAgaWYgKHRoaXMuc291cmNlRGF0YSA9PT0gJ2N1cnJlbnQtcGFnZScpIHtcbiAgICAgICAgY29sUmVuZGVyZWRWYWx1ZXMuZm9yRWFjaCgocmVuZGVyZWRWYWx1ZSwgaSkgPT4ge1xuICAgICAgICAgIC8qU2VsZWN0aW9uIGRpc3RpbnQgdmFsdWVzICovXG4gICAgICAgICAgaWYgKCF0aGlzLmNvbHVtbkRhdGEuZmluZChpdGVtID0+IGl0ZW0ucmVuZGVyZWRWYWx1ZSA9PT0gcmVuZGVyZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkSW50b0NvbHVtbkRhdGEocmVuZGVyZWRWYWx1ZSwgY29sVmFsdWVzLCBpLCBmaWx0ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2xSZW5kZXJlZFZhbHVlcy5mb3JFYWNoKChyZW5kZXJlZFZhbHVlLCBpKSA9PiB7XG4gICAgICAgICAgdGhpcy5hZGRJbnRvQ29sdW1uRGF0YShyZW5kZXJlZFZhbHVlLCBjb2xWYWx1ZXMsIGksIGZpbHRlcik7XG5cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRJbnRvQ29sdW1uRGF0YShyZW5kZXJlZFZhbHVlOiBhbnksIGNvbFZhbHVlczogYW55W10sIGk6IG51bWJlciwgZmlsdGVyOiBPQ29sdW1uVmFsdWVGaWx0ZXIpIHtcbiAgICB0aGlzLmNvbHVtbkRhdGEucHVzaCh7XG4gICAgICByZW5kZXJlZFZhbHVlOiByZW5kZXJlZFZhbHVlLFxuICAgICAgdmFsdWU6IGNvbFZhbHVlc1tpXSxcbiAgICAgIHJvd1ZhbHVlOiB0aGlzLnRhYmxlRGF0YVtpXSxcbiAgICAgIHNlbGVjdGVkOiBmaWx0ZXI/Lm9wZXJhdG9yID09PSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLklOICYmIChmaWx0ZXI/LnZhbHVlcyB8fCBbXSkuaW5kZXhPZihjb2xWYWx1ZXNbaV0pICE9PSAtMSxcbiAgICAgIC8vIHN0b3JpbmcgdGhlIGZpcnN0IGluZGV4IHdoZXJlIHRoaXMgcmVuZGVyZWRWYWx1ZSBpcyBvYnRhaW5lZC4gSW4gdGhlIHRlbXBsYXRlIG9mIHRoaXMgY29tcG9uZW50IHRoZSBjb2x1bW4gcmVuZGVyZXIgd2lsbCBvYnRhaW4gdGhlXG4gICAgICAvLyByb3cgdmFsdWUgb2YgdGhpcyBpbmRleFxuICAgICAgdGFibGVJbmRleDogaVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29sdW1uVmFsdWVzRmlsdGVyKCk6IE9Db2x1bW5WYWx1ZUZpbHRlciB7XG4gICAgY29uc3QgZmlsdGVyOiBPQ29sdW1uVmFsdWVGaWx0ZXIgPSB7XG4gICAgICBhdHRyOiB0aGlzLmNvbHVtbi5hdHRyLFxuICAgICAgb3BlcmF0b3I6IHVuZGVmaW5lZCxcbiAgICAgIHZhbHVlczogdW5kZWZpbmVkLFxuICAgICAgYXZhaWxhYmxlVmFsdWVzOiB1bmRlZmluZWRcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLmlzQ3VzdG9tRmlsdGVyU3ViamVjdC5nZXRWYWx1ZSgpKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXM7XG4gICAgICBpZiAoc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGZpbHRlci5vcGVyYXRvciA9IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuSU47XG4gICAgICAgIGZpbHRlci52YWx1ZXMgPSBzZWxlY3RlZFZhbHVlcy5tYXAoKGl0ZW0pID0+IGl0ZW0udmFsdWUpO1xuICAgICAgICBmaWx0ZXIuYXZhaWxhYmxlVmFsdWVzID0gdGhpcy5jb2x1bW5EYXRhO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5mY1RleHQudmFsdWUpIHtcbiAgICAgICAgZmlsdGVyLm9wZXJhdG9yID0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5FUVVBTDtcbiAgICAgICAgZmlsdGVyLnZhbHVlcyA9IHRoaXMuZ2V0VHlwZWRWYWx1ZSh0aGlzLmZjVGV4dCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mY0Zyb20udmFsdWUgJiYgdGhpcy5mY1RvLnZhbHVlKSB7XG4gICAgICAgIGZpbHRlci5vcGVyYXRvciA9IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuQkVUV0VFTjtcbiAgICAgICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5nZXRUeXBlZFZhbHVlKHRoaXMuZmNGcm9tKTtcbiAgICAgICAgY29uc3QgdG9WYWx1ZSA9IHRoaXMuZ2V0VHlwZWRWYWx1ZSh0aGlzLmZjVG8pO1xuICAgICAgICBmaWx0ZXIudmFsdWVzID0gZnJvbVZhbHVlIDw9IHRvVmFsdWUgPyBbZnJvbVZhbHVlLCB0b1ZhbHVlXSA6IFt0b1ZhbHVlLCBmcm9tVmFsdWVdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuZmNGcm9tLnZhbHVlKSB7XG4gICAgICAgICAgZmlsdGVyLm9wZXJhdG9yID0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5NT1JFX0VRVUFMO1xuICAgICAgICAgIGZpbHRlci52YWx1ZXMgPSB0aGlzLmdldFR5cGVkVmFsdWUodGhpcy5mY0Zyb20pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZjVG8udmFsdWUpIHtcbiAgICAgICAgICBmaWx0ZXIub3BlcmF0b3IgPSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkxFU1NfRVFVQUw7XG4gICAgICAgICAgZmlsdGVyLnZhbHVlcyA9IHRoaXMuZ2V0VHlwZWRWYWx1ZSh0aGlzLmZjVG8pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXI7XG4gIH1cblxuICBjbGVhclZhbHVlcygpIHtcbiAgICBpZiAodGhpcy5pc1RleHRUeXBlKCkpIHtcbiAgICAgIHRoaXMuZmNUZXh0LnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRGF0ZVR5cGUoKSB8fCB0aGlzLmlzTnVtZXJpY1R5cGUoKSkge1xuICAgICAgdGhpcy5mY0Zyb20uc2V0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuZmNUby5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2tTb3J0VmFsdWVzKCkge1xuICAgIHN3aXRjaCAodGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uKSB7XG4gICAgICBjYXNlICdhc2MnOlxuICAgICAgICB0aGlzLmFjdGl2ZVNvcnREaXJlY3Rpb24gPSAnZGVzYyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVzYyc6XG4gICAgICAgIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9ICcnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9ICdhc2MnO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5vblNvcnRGaWx0ZXJWYWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLmdldEZpbHRlckNvbHVtbigpKTtcbiAgICB0aGlzLnNvcnREYXRhKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc29ydERhdGEoKSB7XG4gICAgY29uc3Qgc29ydGVkRGF0YSA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuY29sdW1uRGF0YSk7XG4gICAgaWYgKHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiAhPT0gJycpIHtcbiAgICAgIHRoaXMubGlzdERhdGFTdWJqZWN0Lm5leHQoc29ydGVkRGF0YS5zb3J0KHRoaXMuc29ydEZ1bmN0aW9uLmJpbmQodGhpcykpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saXN0RGF0YVN1YmplY3QubmV4dChzb3J0ZWREYXRhKTtcbiAgICB9XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBzb3J0RnVuY3Rpb24oYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xuICAgIGxldCBwcm9wZXJ0eUE6IG51bWJlciB8IHN0cmluZyA9ICcnO1xuICAgIGxldCBwcm9wZXJ0eUI6IG51bWJlciB8IHN0cmluZyA9ICcnO1xuICAgIFtwcm9wZXJ0eUEsIHByb3BlcnR5Ql0gPSBbYVsndmFsdWUnXSwgYlsndmFsdWUnXV07XG5cbiAgICByZXR1cm4gVXRpbC5zb3J0RnVuY3Rpb24ocHJvcGVydHlBLCBwcm9wZXJ0eUIsIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbik7XG4gIH1cblxuICBvblNsaWRlQ2hhbmdlKGU6IE1hdFNsaWRlVG9nZ2xlQ2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5pc0N1c3RvbUZpbHRlclN1YmplY3QubmV4dChlLmNoZWNrZWQpO1xuXG4gICAgaWYgKCFlLmNoZWNrZWQpIHtcbiAgICAgIC8vIFNlbGVjdGlvbiBtb2RlXG4gICAgICB0aGlzLmluaXRpYWxpemVEYXRhTGlzdCgpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZpbHRlckV2ZW50KCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBpc1RleHRUeXBlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc051bWVyaWNUeXBlKCkgJiYgIXRoaXMuaXNEYXRlVHlwZSgpO1xuICB9XG5cbiAgaXNOdW1lcmljVHlwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gWydpbnRlZ2VyJywgJ3JlYWwnLCAnY3VycmVuY3knXS5pbmRleE9mKHRoaXMuY29sdW1uLnR5cGUpICE9PSAtMTtcbiAgfVxuXG4gIGlzRGF0ZVR5cGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICdkYXRlJyA9PT0gdGhpcy5jb2x1bW4udHlwZTtcbiAgfVxuXG4gIGdldEZpeGVkRGltZW5zaW9uQ2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gJ3NlbGVjdGlvbicgfHwgdGhpcy5tb2RlID09PSAnZGVmYXVsdCc7XG4gIH1cblxuICBnZXRTb3J0QnlBbHBoYUljb24oKSB7XG4gICAgbGV0IGljb24gPSAnb250aW1pemU6c29ydF9ieV9hbHBoYSc7XG4gICAgaWYgKHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiAhPT0gJycpIHtcbiAgICAgIGljb24gKz0gJ18nICsgdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uO1xuICAgIH1cbiAgICByZXR1cm4gaWNvbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWx0ZXJDb2x1bW4oKTogT0ZpbHRlckNvbHVtbiB7XG4gICAgbGV0IG9iajogT0ZpbHRlckNvbHVtbiA9IHsgYXR0cjogJycsIHNvcnQ6ICcnLCBzdGFydFZpZXc6ICcnIH07XG4gICAgb2JqLmF0dHIgPSB0aGlzLmNvbHVtbi5hdHRyO1xuICAgIG9iai5zb3J0ID0gdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uO1xuICAgIG9iai5zdGFydFZpZXcgPSB0aGlzLnN0YXJ0VmlldztcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgcHVibGljIGdldFN0YXJ0ZWRWaWV3RGF0ZXBpY2tlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0VmlldztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUeXBlZFZhbHVlKGNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCk6IGFueSB7XG4gICAgbGV0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICBpZiAodGhpcy5pc051bWVyaWNUeXBlKCkpIHtcbiAgICAgIHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNEYXRlVHlwZSgpKSB7XG4gICAgICB2YWx1ZSA9IGNvbnRyb2wudmFsdWUudmFsdWVPZigpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgb25DaGFuZ2VEYXRhU291cmNlKGV2ZW50OiBNYXRSYWRpb0NoYW5nZSkge1xuICAgIHRoaXMuZ2V0RGF0YShldmVudC52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGEoc291cmNlRGF0YTogc3RyaW5nKSB7XG4gICAgaWYgKHNvdXJjZURhdGEgPT09ICdjdXJyZW50LXBhZ2UnKSB7XG4gICAgICAvKkdldCBmaWx0ZXIgdmFsdWVzIG9uIHRoZSBjdXJyZW50IHBhZ2UqL1xuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLnRhYmxlLmRhdGFTb3VyY2UuZ2V0Q3VycmVudERhdGEoKTtcbiAgICAgIHRoaXMucGFyc2VEYXRhQW5kSW5pdGlhbGl6ZURhdGFMaXN0KG51bGwpO1xuXG4gICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlLnBhZ2VhYmxlKSB7XG4gICAgICAvKkdldCBmaWx0ZXIgdmFsdWVzIG9uIHRoZSBhbGwgcGFnZXMqL1xuICAgICAgdGhpcy5xdWVyeUJ5RmlsdGVyQ29sdW1uU3Vic2NyaXB0aW9uID0gdGhpcy5xdWVyeUJ5RmlsdGVyQ29sdW1uKHRoaXMuY29sdW1uLmF0dHIpLnN1YnNjcmliZSgocmVzOiBTZXJ2aWNlUmVzcG9uc2UpID0+IHtcbiAgICAgICAgbGV0IGRhdGEgPSBbXTtcbiAgICAgICAgaWYgKHJlcy5pc1N1Y2Nlc3NmdWwoKSkge1xuICAgICAgICAgIGRhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IGRhdGE7XG4gICAgICAgIHRoaXMucGFyc2VEYXRhQW5kSW5pdGlhbGl6ZURhdGFMaXN0KG51bGwpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGFibGVEYXRhID0gdGhpcy50YWJsZS5nZXRBbGxWYWx1ZXMoKTtcbiAgICAgIHRoaXMucGFyc2VEYXRhQW5kSW5pdGlhbGl6ZURhdGFMaXN0KG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIHF1ZXJ5QnlGaWx0ZXJDb2x1bW4oYXR0cjogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZXJ2aWNlUmVzcG9uc2U+IHwgT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIGNvbnN0IGt2ID0gdGhpcy50YWJsZS5nZXRDb21wb25lbnRGaWx0ZXIoKTtcbiAgICBjb25zdCBhdiA9IFthdHRyXTtcbiAgICBsZXQgc3FsVHlwZXMgPSB7fTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoa3YpICYmICFVdGlsLmlzT2JqZWN0RW1wdHkoa3YpKSB7XG4gICAgICBzcWxUeXBlcyA9IHRoaXMudGFibGUuZ2V0U3FsVHlwZXMoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb2x1bW5RdWVyeUFyZ3MgPSBba3YsIGF2LCB0aGlzLnRhYmxlLmVudGl0eSwgc3FsVHlwZXMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWRdO1xuICAgIGNvbnN0IHF1ZXJ5TWV0aG9kTmFtZSA9IHRoaXMucXVlcnlNZXRob2ROYW1lIHx8IENvZGVzLlFVRVJZX01FVEhPRDtcbiAgICBjb25zdCBzZXJ2aWNlID0gdGhpcy50YWJsZS5nZXRTZXJ2aWNlKCk7XG4gICAgaWYgKHNlcnZpY2UgJiYgKHF1ZXJ5TWV0aG9kTmFtZSBpbiBzZXJ2aWNlKSAmJiB0aGlzLnRhYmxlLmVudGl0eSkge1xuICAgICAgcmV0dXJuIHNlcnZpY2VbcXVlcnlNZXRob2ROYW1lXSguLi5jb2x1bW5RdWVyeUFyZ3MpXG4gICAgfVxuICAgIHJldHVybiBvZih7fSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q29sdW1uRGF0YVVzaW5nUmVuZGVyZXIoKSB7XG4gICAgY29uc3QgdXNlUmVuZGVyZXIgPSB0aGlzLmNvbHVtbi5yZW5kZXJlciAmJiB0aGlzLmNvbHVtbi5yZW5kZXJlci5nZXRDZWxsRGF0YTtcbiAgICByZXR1cm4gdGhpcy50YWJsZURhdGEubWFwKChyb3cpID0+IHVzZVJlbmRlcmVyID8gdGhpcy5jb2x1bW4ucmVuZGVyZXIuZ2V0Q2VsbERhdGEocm93W3RoaXMuY29sdW1uLmF0dHJdLCByb3cpIDogcm93W3RoaXMuY29sdW1uLmF0dHJdKTtcbiAgfVxufVxuIiwiPHNwYW4gbWF0LWRpYWxvZy10aXRsZT57eyAnVEFCTEUuQlVUVE9OUy5GSUxURVJfQllfQ09MVU1OJyB8IG9UcmFuc2xhdGUgfX06IHt7IGNvbHVtbi50aXRsZSB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cImRpYWxvZy1saXN0LWNvbnRhaW5lclwiPlxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJjb250ZW50LXdyYXBwZXJcIiBbY2xhc3MuY29udGVudC13cmFwcGVyLWZpeGVkLWRpbWVuc2lvbl09XCJnZXRGaXhlZERpbWVuc2lvbkNsYXNzKClcIj5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjY3VzdG9tRmlsdGVyU2xpZGUgKGNoYW5nZSk9XCJvblNsaWRlQ2hhbmdlKCRldmVudClcIiBbY2hlY2tlZF09XCIoaXNDdXN0b21GaWx0ZXIgfCBhc3luYylcIiAqbmdJZj1cImlzRGVmYXVsdEZpbHRlciB8IGFzeW5jXCI+XG4gICAgICB7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5DVVNUT01fRklMVEVSJyB8IG9UcmFuc2xhdGUgfX1cbiAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPGRpdiBmeEZsZXg9XCIxIDEgMTAwJVwiICpuZ0lmPVwiIShpc0N1c3RvbUZpbHRlciB8IGFzeW5jKTtlbHNlIGN1c3RvbUZpbHRlclRlbXBsYXRlXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImhpbnRlZFwiPlxuICAgICAgICA8bWF0LWljb24gbWF0UHJlZml4IHN2Z0ljb249XCJvbnRpbWl6ZTpzZWFyY2hcIj48L21hdC1pY29uPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgI2ZpbHRlciBwbGFjZWhvbGRlcj1cInt7ICdUQUJMRS5GSUxURVInIHwgb1RyYW5zbGF0ZSB9fVwiPlxuICAgICAgICA8bWF0LWhpbnQ+e3sgJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uSElOVF9TVEFSJyB8IG9UcmFuc2xhdGUgfX08L21hdC1oaW50PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxkaXYgKm5nSWY9XCIobGlzdERhdGEgfCBhc3luYykubGVuZ3RoID4gMDsgZWxzZSBlbXB0eUxpc3REYXRhXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBzdGFydFwiPlxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0YXJ0XCI+XG4gICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIm9uU2VsZWN0QWxsQ2hhbmdlKCRldmVudClcIiBbY2hlY2tlZF09XCJhcmVBbGxTZWxlY3RlZCgpXCIgW2luZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlKClcIiBbZGlzYWJsZWRdPVwiIWxpc3REYXRhXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveFwiPlxuICAgICAgICAgICAge3sgJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uQ0hFQ0tfQUxMJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFsaXN0RGF0YVwiIGNsYXNzPVwiY29sdW1uLWZpbHRlci1lbXB0eS1saXN0XCI+XG4gICAgICAgICAgICB7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5MSVNUX0VNUFRZX0ZJTFRFUicgfCBvVHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBzdGFydFwiPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25DbGlja1NvcnRWYWx1ZXMoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIFtzdmdJY29uXT1cImdldFNvcnRCeUFscGhhSWNvbigpXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiAqbmdJZj1cInNob3dGaWx0ZXJWYWx1ZXNPcHRpb25cIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBjbGFzcz1cImZpbHRlcnZhbHVlcy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBtYXQtc3ViaGVhZGVyPlxuICAgICAgICAgICAgICAgIHt7J1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uTEFCRUxfREFUQScgfCBvVHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIGFyaWEtbGFiZWw9XCJEYXRhXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEdhcD1cIjEycHhcIiBbKG5nTW9kZWwpXT1cInNvdXJjZURhdGFcIiAoY2hhbmdlKT1cIm9uQ2hhbmdlRGF0YVNvdXJjZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gdmFsdWU9XCJjdXJyZW50LXBhZ2VcIj57eydUQUJMRS5GSUxURVJfQllfQ09MVU1OLkNVUlJFTlRfUEFHRScgfCBvVHJhbnNsYXRlfX08L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gdmFsdWU9XCJhbGwtZGF0YVwiPnt7J1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uQUxMX1BBR0UnIHwgb1RyYW5zbGF0ZX19PC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlMaXN0RGF0YT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2x1bW4tZmlsdGVyLWVtcHR5LWxpc3RcIj5cbiAgICAgICAgICB7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5MSVNUX0VNUFRZJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBpdGVtU2l6ZT1cIjI1XCIgZnhGbGV4PlxuICAgICAgICA8bWF0LXNlbGVjdGlvbi1saXN0ICpuZ0lmPVwicHJlbG9hZFZhbHVlcyB8fCBsaXN0RGF0YVwiICNmaWx0ZXJWYWx1ZUxpc3QgY2xhc3M9XCJzZWxlY3QtdmFsdWVzLWxpc3RcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0KCRldmVudClcIj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKmNka1ZpcnR1YWxGb3I9XCJsZXQgcmVjb3JkIG9mIChsaXN0RGF0YSB8IGFzeW5jKTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiBjaGVja2JveFBvc2l0aW9uPVwiYmVmb3JlXCIgW3NlbGVjdGVkXT1cInJlY29yZC5zZWxlY3RlZFwiIFt2YWx1ZV09XCJyZWNvcmRcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4ucmVuZGVyZXJcIj5cbiAgICAgICAgICAgICAgICB7eyByZWNvcmQudmFsdWUgfHwgKCdUQUJMRS5GSUxURVJfQllfQ09MVU1OLkVNUFRZX1ZBTFVFJyB8IG9UcmFuc2xhdGUpIH19XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJjb2x1bW4ucmVuZGVyZXJcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4ucmVuZGVyZXIudGVtcGxhdGVyZWZcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGNlbGx2YWx1ZTogcmVjb3JkLnZhbHVlLCByb3d2YWx1ZTogcmVjb3JkLnJvd1ZhbHVlIH1cIj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbiAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cImNsZWFyQWN0aW9uXCIgY2xhc3M9XCJvLWJ1dHRvbi1pbmZvXCI+XG4gICAge3sgJ1RBQkxFLkJVVFRPTlMuRklMVEVSX0NMRUFSJyB8IG9UcmFuc2xhdGUgfX0gPC9idXR0b24+XG4gIDxzcGFuIGFsaWduPVwiZW5kXCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cImNhbmNlbEFjdGlvblwiIGNsYXNzPVwiby1idXR0b24tZGVmYXVsdCBjYW5jZWxcIj5cbiAgICAgIHt7ICdDQU5DRUwnIHwgb1RyYW5zbGF0ZSB9fSA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiYWNjZXB0QWN0aW9uXCIgY2xhc3M9XCJvLWJ1dHRvbi1wcmltYXJ5XCI+XG4gICAgICB7eyAnQUNDRVBUJyB8IG9UcmFuc2xhdGUgfX0gPC9idXR0b24+XG4gIDwvc3Bhbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuXG48IS0tIFRFTVBMQVRFIENVU1RPTSBGSUxURVItLT5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tRmlsdGVyVGVtcGxhdGU+XG4gIDxkaXYgKm5nSWY9XCJpc1RleHRUeXBlKClcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4IGNsYXNzPVwiaGludGVkXCI+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgI2ZpbHRlclRleHQgW2Zvcm1Db250cm9sXT1cImZjVGV4dFwiIHBsYWNlaG9sZGVyPVwie3sgJ1RBQkxFLkZJTFRFUicgfCBvVHJhbnNsYXRlIH19XCI+XG4gICAgICA8bWF0LWhpbnQ+e3sgJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uSElOVF9TVEFSJyB8IG9UcmFuc2xhdGUgfX08L21hdC1oaW50PlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJWYWx1ZXMoKVwiPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmNsb3NlXCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaXNOdW1lcmljVHlwZSgpXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIiBmeExheW91dEdhcD1cIjEycHhcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImZjRnJvbVwiIHBsYWNlaG9sZGVyPVwie3sgJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uRlJPTScgfCBvVHJhbnNsYXRlIH19XCI+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImZjVG9cIiBwbGFjZWhvbGRlcj1cInt7ICdUQUJMRS5GSUxURVJfQllfQ09MVU1OLlRPJyB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJWYWx1ZXMoKVwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpjbG9zZVwiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaXNEYXRlVHlwZSgpXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYmV0d2VlbiBjZW50ZXJcIiBmeExheW91dEdhcD1cIjEycHhcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwiZGF0ZXBpY2tlckZyb21cIiBbbWF4XT1cImZjVG8udmFsdWVcIiBbZm9ybUNvbnRyb2xdPVwiZmNGcm9tXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5GUk9NJyB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZXBpY2tlckZyb21cIj5cbiAgICAgICAgPG1hdC1pY29uIG1hdERhdGVwaWNrZXJUb2dnbGVJY29uPnRvZGF5PC9tYXQtaWNvbj5cbiAgICAgIDwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgPG1hdC1kYXRlcGlja2VyICNkYXRlcGlja2VyRnJvbSBbc3RhcnRWaWV3XT1cImdldFN0YXJ0ZWRWaWV3RGF0ZXBpY2tlcigpXCI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJkYXRlcGlja2VyVG9cIiBbbWluXT1cImZjRnJvbS52YWx1ZVwiIFtmb3JtQ29udHJvbF09XCJmY1RvXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5UTycgfCBvVHJhbnNsYXRlIH19XCI+XG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cImRhdGVwaWNrZXJUb1wiPlxuICAgICAgICA8bWF0LWljb24gbWF0RGF0ZXBpY2tlclRvZ2dsZUljb24+dG9kYXk8L21hdC1pY29uPlxuICAgICAgPC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVwaWNrZXJUbyBbc3RhcnRWaWV3XT1cImdldFN0YXJ0ZWRWaWV3RGF0ZXBpY2tlcigpXCI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNsZWFyVmFsdWVzKClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6Y2xvc2VcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
385
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvZGlhbG9nL2ZpbHRlci1ieS1jb2x1bW4vby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvZGlhbG9nL2ZpbHRlci1ieS1jb2x1bW4vby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSx3QkFBd0IsQ0FBQztBQUdsRixPQUFPLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3BFLE9BQU8sRUFBRSx5QkFBeUIsRUFBc0IsTUFBTSx1REFBdUQsQ0FBQztBQUN0SCxPQUFPLEVBQTJCLCtCQUErQixFQUFFLE1BQU0sK0RBQStE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Q1csZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTZWxlY3Rpb25MaXN0LCBNYXRTZWxlY3Rpb25MaXN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRSYWRpb0NoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLCBPQ29sdW1uVmFsdWVGaWx0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi90eXBlcy90YWJsZS9vLWNvbHVtbi12YWx1ZS1maWx0ZXIudHlwZSc7XG5pbXBvcnQgeyBUYWJsZUZpbHRlckJ5Q29sdW1uRGF0YSwgVGFibGVGaWx0ZXJCeUNvbHVtbkRpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3R5cGVzL3RhYmxlL28tdGFibGUtZmlsdGVyLWJ5LWNvbHVtbi1kYXRhLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vby10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0ZpbHRlckNvbHVtbiB9IGZyb20gJy4uLy4uL2hlYWRlci90YWJsZS1jb2x1bW5zLWZpbHRlci9jb2x1bW5zL28tdGFibGUtY29sdW1ucy1maWx0ZXItY29sdW1uLmNvbXBvbmVudCc7XG5cbmltcG9ydCB0eXBlIHsgT0NvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvbHVtbi9vLWNvbHVtbi5jbGFzcyc7XG5cbmNvbnN0IENVU1RPTV9GSUxURVJTX09QRVJBVE9SUyA9IFtDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkxFU1NfRVFVQUwsIENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuTU9SRV9FUVVBTCwgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5CRVRXRUVOLCBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkVRVUFMXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICdvLXRhYmxlLWZpbHRlci1ieS1jb2x1bW4tZGF0YS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnby10YWJsZS1maWx0ZXItYnktY29sdW1uLWRhdGEtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWZpbHRlci1ieS1jb2x1bW4tZGlhbG9nXSc6ICd0cnVlJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9UYWJsZUZpbHRlckJ5Q29sdW1uRGF0YURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gIHB1YmxpYyBhY2NlcHRBY3Rpb24gPSBUYWJsZUZpbHRlckJ5Q29sdW1uRGlhbG9nUmVzdWx0LkFDQ0VQVDtcbiAgcHVibGljIGNhbmNlbEFjdGlvbiA9IFRhYmxlRmlsdGVyQnlDb2x1bW5EaWFsb2dSZXN1bHQuQ0FOQ0VMO1xuICBwdWJsaWMgY2xlYXJBY3Rpb24gPSBUYWJsZUZpbHRlckJ5Q29sdW1uRGlhbG9nUmVzdWx0LkNMRUFSO1xuXG4gIGNvbHVtbjogT0NvbHVtbjtcbiAgcHJlbG9hZFZhbHVlczogYm9vbGVhbiA9IHRydWU7XG4gIG1vZGU6IHN0cmluZztcbiAgc3RhcnRWaWV3OiAnbW9udGgnIHwgJ3llYXInIHwgJ211bHRpLXllYXInIHwgJyc7XG5cbiAgcHVibGljIG9uU29ydEZpbHRlclZhbHVlc0NoYW5nZTogRXZlbnRFbWl0dGVyPE9GaWx0ZXJDb2x1bW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzQ3VzdG9tRmlsdGVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0N1c3RvbUZpbHRlcjogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuaXNDdXN0b21GaWx0ZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgaXNEZWZhdWx0RmlsdGVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0RlZmF1bHRGaWx0ZXI6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmlzRGVmYXVsdEZpbHRlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZmNUZXh0ID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBmY0Zyb20gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIGZjVG8gPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG5cbiAgcHJvdGVjdGVkIGNvbHVtbkRhdGE6IFRhYmxlRmlsdGVyQnlDb2x1bW5EYXRhW10gPSBbXTtcbiAgcHJvdGVjdGVkIHRhYmxlRGF0YTogYW55W10gPSBbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGxpc3REYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFbXT4oW10pO1xuICBwcm90ZWN0ZWQgX2xpc3REYXRhOiBPYnNlcnZhYmxlPFRhYmxlRmlsdGVyQnlDb2x1bW5EYXRhW10+ID0gdGhpcy5saXN0RGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgQFZpZXdDaGlsZCgnZmlsdGVyJykgZmlsdGVyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdmaWx0ZXJWYWx1ZUxpc3QnKSBmaWx0ZXJWYWx1ZUxpc3Q6IE1hdFNlbGVjdGlvbkxpc3Q7XG4gIHB1YmxpYyBhY3RpdmVTb3J0RGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJyB8ICcnO1xuICBzb3VyY2VEYXRhO1xuICBxdWVyeUJ5RmlsdGVyQ29sdW1uU3Vic2NyaXB0aW9uOiBhbnk7XG4gIHRhYmxlOiBPVGFibGVDb21wb25lbnQ7XG4gIHNob3dGaWx0ZXJWYWx1ZXNPcHRpb246IGJvb2xlYW47XG4gIHF1ZXJ5TWV0aG9kTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxPVGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFEaWFsb2dDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBkYXRhOiBhbnlcbiAgKSB7XG5cbiAgICBpZiAoZGF0YS5jb2x1bW4pIHtcbiAgICAgIHRoaXMuY29sdW1uID0gZGF0YS5jb2x1bW47XG4gICAgfVxuICAgIHRoaXMudGFibGUgPSBkYXRhLnRhYmxlO1xuXG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKSB7XG4gICAgdGhpcy5zaG93RmlsdGVyVmFsdWVzT3B0aW9uID0gdGhpcy50YWJsZS5wYWdpbmF0aW9uQ29udHJvbHM7XG4gICAgdGhpcy5zb3VyY2VEYXRhID1cbiAgICAgIHRoaXMudGFibGUub1RhYmxlQ29sdW1uc0ZpbHRlckNvbXBvbmVudD8uZ2V0RmlsdGVyVmFsdWVzSW5EYXRhKHRoaXMuY29sdW1uLmF0dHIpIHx8XG4gICAgICB0aGlzLnRhYmxlLm9UYWJsZUNvbHVtbnNGaWx0ZXJDb21wb25lbnQ/LmZpbHRlclZhbHVlc0luRGF0YSB8fFxuICAgICAgKHRoaXMudGFibGUucGFnZWFibGUgPyAnY3VycmVudC1wYWdlJyA6ICdhbGwtZGF0YScpO1xuXG4gICAgdGhpcy5tb2RlID0gdGhpcy50YWJsZS5vVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50ID8gdGhpcy50YWJsZS5vVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50Lm1vZGUgOiAnZGVmYXVsdCc7XG4gICAgdGhpcy5pc0RlZmF1bHRGaWx0ZXJTdWJqZWN0Lm5leHQodGhpcy5tb2RlID09PSAnZGVmYXVsdCcpO1xuICAgIHRoaXMuaXNDdXN0b21GaWx0ZXJTdWJqZWN0Lm5leHQodGhpcy5tb2RlID09PSAnY3VzdG9tJyk7XG5cbiAgICBsZXQgcHJldmlvdXNGaWx0ZXI6IE9Db2x1bW5WYWx1ZUZpbHRlciA9IHRoaXMudGFibGUuZGF0YVNvdXJjZS5nZXRDb2x1bW5WYWx1ZUZpbHRlckJ5QXR0cih0aGlzLmNvbHVtbi5hdHRyKSB8fCB7XG4gICAgICBhdHRyOiB1bmRlZmluZWQsXG4gICAgICBvcGVyYXRvcjogdW5kZWZpbmVkLFxuICAgICAgdmFsdWVzOiB1bmRlZmluZWQsXG4gICAgICBhdmFpbGFibGVWYWx1ZXM6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocHJldmlvdXNGaWx0ZXIub3BlcmF0b3IpKSB7XG4gICAgICB0aGlzLmlzQ3VzdG9tRmlsdGVyU3ViamVjdC5uZXh0KENVU1RPTV9GSUxURVJTX09QRVJBVE9SUy5pbmRleE9mKHByZXZpb3VzRmlsdGVyLm9wZXJhdG9yKSAhPT0gLTEpO1xuICAgIH1cblxuICAgIHRoaXMucHJlbG9hZFZhbHVlcyA9IHRoaXMudGFibGUub1RhYmxlQ29sdW1uc0ZpbHRlckNvbXBvbmVudCA/IHRoaXMudGFibGUub1RhYmxlQ29sdW1uc0ZpbHRlckNvbXBvbmVudC5wcmVsb2FkVmFsdWVzIDogdHJ1ZTtcbiAgICB0aGlzLmFjdGl2ZVNvcnREaXJlY3Rpb24gPSB0aGlzLnRhYmxlLmdldFNvcnRGaWx0ZXJDb2x1bW4odGhpcy5jb2x1bW4pIHx8ICcnO1xuICAgIHRoaXMuc3RhcnRWaWV3ID0gdGhpcy50YWJsZS5nZXRTdGFydFZpZXdGaWx0ZXJDb2x1bW4odGhpcy5jb2x1bW4pIHx8ICdtb250aCdcblxuICAgIGNvbnN0IHF1ZXJ5TWV0aG9kID0gdGhpcy50YWJsZS5vVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50Py5nZXRRdWVyeU1ldGhvZE9mRmlsdGVyQ29sdW1uKHRoaXMuY29sdW1uLmF0dHIpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChxdWVyeU1ldGhvZCkpIHtcbiAgICAgIHRoaXMucXVlcnlNZXRob2ROYW1lID0gcXVlcnlNZXRob2Q7XG4gICAgICB0aGlzLnNvdXJjZURhdGEgPSAnYWxsLWRhdGEnO1xuICAgIH1cbiAgICB0aGlzLmdldERhdGEodGhpcy5zb3VyY2VEYXRhKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBwYXJzZURhdGFBbmRJbml0aWFsaXplRGF0YUxpc3QocHJldmlvdXNGaWx0ZXI6IE9Db2x1bW5WYWx1ZUZpbHRlcikge1xuXG4gICAgdGhpcy5wYXJzZUxpc3REYXRhKHByZXZpb3VzRmlsdGVyKTtcblxuICAgIGlmIChVdGlsLmlzRGVmaW5lZChwcmV2aW91c0ZpbHRlcikpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUN1c3RvbUZpbHRlclZhbHVlcyhwcmV2aW91c0ZpbHRlcik7XG4gICAgfVxuICAgIHRoaXMuaW5pdGlhbGl6ZURhdGFMaXN0KHByZXZpb3VzRmlsdGVyKTtcblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZpbHRlckV2ZW50KCk7XG4gIH1cblxuICBnZXQgbGlzdERhdGEoKTogT2JzZXJ2YWJsZTxUYWJsZUZpbHRlckJ5Q29sdW1uRGF0YVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xpc3REYXRhO1xuICB9XG5cbiAgc2V0IGxpc3REYXRhKGFyZzogT2JzZXJ2YWJsZTxUYWJsZUZpbHRlckJ5Q29sdW1uRGF0YVtdPikge1xuICAgIHRoaXMuX2xpc3REYXRhID0gYXJnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVEYXRhTGlzdChmaWx0ZXI/OiBPQ29sdW1uVmFsdWVGaWx0ZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmVsb2FkVmFsdWVzIHx8IChmaWx0ZXIgJiYgZmlsdGVyLm9wZXJhdG9yID09PSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLklOKSkge1xuICAgICAgaWYgKHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9PT0gQ29kZXMuQVNDX1NPUlQgfHwgdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uID09PSBDb2Rlcy5ERVNDX1NPUlQpIHtcbiAgICAgICAgdGhpcy5zb3J0RGF0YSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5saXN0RGF0YVN1YmplY3QubmV4dCh0aGlzLmNvbHVtbkRhdGEuc2xpY2UoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVGaWx0ZXJFdmVudCgpIHtcbiAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgIGZyb21FdmVudCh0aGlzLmZpbHRlci5uYXRpdmVFbGVtZW50LCAna2V5dXAnKVxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTUwKSlcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgbGV0IGZpbHRlclZhbHVlOiBzdHJpbmcgPSB0aGlzLmZpbHRlci5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICAgIGZpbHRlclZhbHVlID0gVXRpbC5ub3JtYWxpemVTdHJpbmcoZmlsdGVyVmFsdWUpO1xuICAgICAgICAgIGlmIChmaWx0ZXJWYWx1ZS5pbmRleE9mKCcqJykgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhU3ViamVjdC5uZXh0KHRoaXMuY29sdW1uRGF0YS5maWx0ZXIoaXRlbSA9PiBuZXcgUmVnRXhwKCdeJyArIFV0aWwubm9ybWFsaXplU3RyaW5nKGZpbHRlclZhbHVlKS5zcGxpdCgnKicpLmpvaW4oJy4qJykgKyAnJCcpLnRlc3QoVXRpbC5ub3JtYWxpemVTdHJpbmcoaXRlbS5yZW5kZXJlZFZhbHVlKSkpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5saXN0RGF0YVN1YmplY3QubmV4dCh0aGlzLmNvbHVtbkRhdGEuZmlsdGVyKGl0ZW0gPT4gKFV0aWwubm9ybWFsaXplU3RyaW5nKGl0ZW0ucmVuZGVyZWRWYWx1ZSkuaW5kZXhPZihmaWx0ZXJWYWx1ZSkgIT09IC0xKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGluaXRpYWxpemVDdXN0b21GaWx0ZXJWYWx1ZXMoZmlsdGVyOiBPQ29sdW1uVmFsdWVGaWx0ZXIpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgIGNhc2UgZmlsdGVyLm9wZXJhdG9yID09PSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkVRVUFMOlxuICAgICAgICBpZiAodGhpcy5pc1RleHRUeXBlKCkpIHtcbiAgICAgICAgICB0aGlzLmZjVGV4dC5zZXRWYWx1ZShmaWx0ZXIudmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgZmlsdGVyLm9wZXJhdG9yID09PSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkJFVFdFRU46XG4gICAgICAgIHRoaXMuZmNGcm9tLnNldFZhbHVlKHRoaXMuaXNEYXRlVHlwZSgpID8gbmV3IERhdGUoZmlsdGVyLnZhbHVlc1swXSkgOiBmaWx0ZXIudmFsdWVzWzBdKTtcbiAgICAgICAgdGhpcy5mY1RvLnNldFZhbHVlKHRoaXMuaXNEYXRlVHlwZSgpID8gbmV3IERhdGUoZmlsdGVyLnZhbHVlc1sxXSkgOiBmaWx0ZXIudmFsdWVzWzFdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGZpbHRlci5vcGVyYXRvciA9PT0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5NT1JFX0VRVUFMOlxuICAgICAgICB0aGlzLmZjRnJvbS5zZXRWYWx1ZSh0aGlzLmlzRGF0ZVR5cGUoKSA/IG5ldyBEYXRlKGZpbHRlci52YWx1ZXMpIDogZmlsdGVyLnZhbHVlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBmaWx0ZXIub3BlcmF0b3IgPT09IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuTEVTU19FUVVBTDpcbiAgICAgICAgdGhpcy5mY1RvLnNldFZhbHVlKHRoaXMuaXNEYXRlVHlwZSgpID8gbmV3IERhdGUoZmlsdGVyLnZhbHVlcykgOiBmaWx0ZXIudmFsdWVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRWYWx1ZXMoKTogVGFibGVGaWx0ZXJCeUNvbHVtbkRhdGFbXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyVmFsdWVMaXN0ID8gdGhpcy5maWx0ZXJWYWx1ZUxpc3Quc2VsZWN0ZWRPcHRpb25zLnNlbGVjdGVkLm1hcChzZWxlY3RlZCA9PiBzZWxlY3RlZC52YWx1ZSkgOiBbXTtcbiAgfVxuXG4gIGFyZUFsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gdGhpcy5jb2x1bW5EYXRhLmxlbmd0aDtcbiAgfVxuXG4gIGlzSW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXM7XG4gICAgcmV0dXJuIHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA+IDAgJiYgc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoICE9PSB0aGlzLmNvbHVtbkRhdGEubGVuZ3RoO1xuICB9XG5cbiAgb25TZWxlY3QoZXZlbnQ6IE1hdFNlbGVjdGlvbkxpc3RDaGFuZ2UpIHtcbiAgICBldmVudC5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IG9wdGlvbi52YWx1ZS5zZWxlY3RlZCA9IG9wdGlvbi5zZWxlY3RlZCk7XG4gIH1cblxuICBvblNlbGVjdEFsbENoYW5nZShldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICBpZiAoZXZlbnQuY2hlY2tlZCkge1xuICAgICAgdGhpcy5maWx0ZXJWYWx1ZUxpc3Quc2VsZWN0QWxsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWVMaXN0LmRlc2VsZWN0QWxsKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlTGlzdERhdGEoZmlsdGVyOiBPQ29sdW1uVmFsdWVGaWx0ZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNvbHVtbkRhdGEgPSBbXTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoZmlsdGVyPy5hdmFpbGFibGVWYWx1ZXMpKSB7XG4gICAgICB0aGlzLmNvbHVtbkRhdGEgPSBmaWx0ZXIuYXZhaWxhYmxlVmFsdWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb2xSZW5kZXJlZFZhbHVlcyA9IHRoaXMuZ2V0Q29sdW1uRGF0YVVzaW5nUmVuZGVyZXIoKTtcbiAgICAgIGNvbnN0IGNvbFZhbHVlczogYW55W10gPSB0aGlzLnRhYmxlRGF0YS5tYXAoZWxlbSA9PiBlbGVtW3RoaXMuY29sdW1uLmF0dHJdKTtcblxuICAgICAgaWYgKHRoaXMudGFibGUucGFnZWFibGUgJiYgdGhpcy5zb3VyY2VEYXRhID09PSAnYWxsLWRhdGEnKSB7XG4gICAgICAgIGNvbFJlbmRlcmVkVmFsdWVzLmZvckVhY2goKHJlbmRlcmVkVmFsdWUsIGkpID0+IHtcbiAgICAgICAgICB0aGlzLmFkZEludG9Db2x1bW5EYXRhKHJlbmRlcmVkVmFsdWUsIGNvbFZhbHVlcywgaSwgZmlsdGVyKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2xSZW5kZXJlZFZhbHVlcy5mb3JFYWNoKChyZW5kZXJlZFZhbHVlLCBpKSA9PiB7XG4gICAgICAgICAgLypTZWxlY3Rpb24gZGlzdGludCB2YWx1ZXMgKi9cbiAgICAgICAgICBpZiAoIXRoaXMuY29sdW1uRGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5yZW5kZXJlZFZhbHVlID09PSByZW5kZXJlZFZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5hZGRJbnRvQ29sdW1uRGF0YShyZW5kZXJlZFZhbHVlLCBjb2xWYWx1ZXMsIGksIGZpbHRlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEludG9Db2x1bW5EYXRhKHJlbmRlcmVkVmFsdWU6IGFueSwgY29sVmFsdWVzOiBhbnlbXSwgaTogbnVtYmVyLCBmaWx0ZXI6IE9Db2x1bW5WYWx1ZUZpbHRlcikge1xuICAgIHRoaXMuY29sdW1uRGF0YS5wdXNoKHtcbiAgICAgIHJlbmRlcmVkVmFsdWU6IHJlbmRlcmVkVmFsdWUsXG4gICAgICB2YWx1ZTogY29sVmFsdWVzW2ldLFxuICAgICAgcm93VmFsdWU6IHRoaXMudGFibGVEYXRhW2ldLFxuICAgICAgc2VsZWN0ZWQ6IGZpbHRlcj8ub3BlcmF0b3IgPT09IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuSU4gJiYgKGZpbHRlcj8udmFsdWVzIHx8IFtdKS5pbmRleE9mKGNvbFZhbHVlc1tpXSkgIT09IC0xLFxuICAgICAgLy8gc3RvcmluZyB0aGUgZmlyc3QgaW5kZXggd2hlcmUgdGhpcyByZW5kZXJlZFZhbHVlIGlzIG9idGFpbmVkLiBJbiB0aGUgdGVtcGxhdGUgb2YgdGhpcyBjb21wb25lbnQgdGhlIGNvbHVtbiByZW5kZXJlciB3aWxsIG9idGFpbiB0aGVcbiAgICAgIC8vIHJvdyB2YWx1ZSBvZiB0aGlzIGluZGV4XG4gICAgICB0YWJsZUluZGV4OiBpXG4gICAgfSk7XG4gIH1cblxuICBnZXRDb2x1bW5WYWx1ZXNGaWx0ZXIoKTogT0NvbHVtblZhbHVlRmlsdGVyIHtcbiAgICBjb25zdCBmaWx0ZXI6IE9Db2x1bW5WYWx1ZUZpbHRlciA9IHtcbiAgICAgIGF0dHI6IHRoaXMuY29sdW1uLmF0dHIsXG4gICAgICBvcGVyYXRvcjogdW5kZWZpbmVkLFxuICAgICAgdmFsdWVzOiB1bmRlZmluZWQsXG4gICAgICBhdmFpbGFibGVWYWx1ZXM6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICBpZiAoIXRoaXMuaXNDdXN0b21GaWx0ZXJTdWJqZWN0LmdldFZhbHVlKCkpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZFZhbHVlcztcbiAgICAgIGlmIChzZWxlY3RlZFZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgZmlsdGVyLm9wZXJhdG9yID0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5JTjtcbiAgICAgICAgZmlsdGVyLnZhbHVlcyA9IHNlbGVjdGVkVmFsdWVzLm1hcCgoaXRlbSkgPT4gaXRlbS52YWx1ZSk7XG4gICAgICAgIGZpbHRlci5hdmFpbGFibGVWYWx1ZXMgPSB0aGlzLmNvbHVtbkRhdGE7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmZjVGV4dC52YWx1ZSkge1xuICAgICAgICBmaWx0ZXIub3BlcmF0b3IgPSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkVRVUFMO1xuICAgICAgICBmaWx0ZXIudmFsdWVzID0gdGhpcy5nZXRUeXBlZFZhbHVlKHRoaXMuZmNUZXh0KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZjRnJvbS52YWx1ZSAmJiB0aGlzLmZjVG8udmFsdWUpIHtcbiAgICAgICAgZmlsdGVyLm9wZXJhdG9yID0gQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5CRVRXRUVOO1xuICAgICAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLmdldFR5cGVkVmFsdWUodGhpcy5mY0Zyb20pO1xuICAgICAgICBjb25zdCB0b1ZhbHVlID0gdGhpcy5nZXRUeXBlZFZhbHVlKHRoaXMuZmNUbyk7XG4gICAgICAgIGZpbHRlci52YWx1ZXMgPSBmcm9tVmFsdWUgPD0gdG9WYWx1ZSA/IFtmcm9tVmFsdWUsIHRvVmFsdWVdIDogW3RvVmFsdWUsIGZyb21WYWx1ZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5mY0Zyb20udmFsdWUpIHtcbiAgICAgICAgICBmaWx0ZXIub3BlcmF0b3IgPSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLk1PUkVfRVFVQUw7XG4gICAgICAgICAgZmlsdGVyLnZhbHVlcyA9IHRoaXMuZ2V0VHlwZWRWYWx1ZSh0aGlzLmZjRnJvbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmNUby52YWx1ZSkge1xuICAgICAgICAgIGZpbHRlci5vcGVyYXRvciA9IENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuTEVTU19FUVVBTDtcbiAgICAgICAgICBmaWx0ZXIudmFsdWVzID0gdGhpcy5nZXRUeXBlZFZhbHVlKHRoaXMuZmNUbyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcjtcbiAgfVxuXG4gIGNsZWFyVmFsdWVzKCkge1xuICAgIGlmICh0aGlzLmlzVGV4dFR5cGUoKSkge1xuICAgICAgdGhpcy5mY1RleHQuc2V0VmFsdWUodW5kZWZpbmVkKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNEYXRlVHlwZSgpIHx8IHRoaXMuaXNOdW1lcmljVHlwZSgpKSB7XG4gICAgICB0aGlzLmZjRnJvbS5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5mY1RvLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja1NvcnRWYWx1ZXMoKSB7XG4gICAgc3dpdGNoICh0aGlzLmFjdGl2ZVNvcnREaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2FzYyc6XG4gICAgICAgIHRoaXMuYWN0aXZlU29ydERpcmVjdGlvbiA9ICdkZXNjJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkZXNjJzpcbiAgICAgICAgdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uID0gJyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uID0gJ2FzYyc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLm9uU29ydEZpbHRlclZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuZ2V0RmlsdGVyQ29sdW1uKCkpO1xuICAgIHRoaXMuc29ydERhdGEoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzb3J0RGF0YSgpIHtcbiAgICBjb25zdCBzb3J0ZWREYXRhID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5jb2x1bW5EYXRhKTtcbiAgICBpZiAodGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uICE9PSAnJykge1xuICAgICAgdGhpcy5saXN0RGF0YVN1YmplY3QubmV4dChzb3J0ZWREYXRhLnNvcnQodGhpcy5zb3J0RnVuY3Rpb24uYmluZCh0aGlzKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpc3REYXRhU3ViamVjdC5uZXh0KHNvcnRlZERhdGEpO1xuICAgIH1cblxuICB9XG5cbiAgcHJvdGVjdGVkIHNvcnRGdW5jdGlvbihhOiBhbnksIGI6IGFueSk6IG51bWJlciB7XG4gICAgbGV0IHByb3BlcnR5QTogbnVtYmVyIHwgc3RyaW5nID0gJyc7XG4gICAgbGV0IHByb3BlcnR5QjogbnVtYmVyIHwgc3RyaW5nID0gJyc7XG4gICAgW3Byb3BlcnR5QSwgcHJvcGVydHlCXSA9IFthWyd2YWx1ZSddLCBiWyd2YWx1ZSddXTtcblxuICAgIHJldHVybiBVdGlsLnNvcnRGdW5jdGlvbihwcm9wZXJ0eUEsIHByb3BlcnR5QiwgdGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uKTtcbiAgfVxuXG4gIG9uU2xpZGVDaGFuZ2UoZTogTWF0U2xpZGVUb2dnbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ3VzdG9tRmlsdGVyU3ViamVjdC5uZXh0KGUuY2hlY2tlZCk7XG5cbiAgICBpZiAoIWUuY2hlY2tlZCkge1xuICAgICAgLy8gU2VsZWN0aW9uIG1vZGVcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZURhdGFMaXN0KCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplRmlsdGVyRXZlbnQoKTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIGlzVGV4dFR5cGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzTnVtZXJpY1R5cGUoKSAmJiAhdGhpcy5pc0RhdGVUeXBlKCk7XG4gIH1cblxuICBpc051bWVyaWNUeXBlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbJ2ludGVnZXInLCAncmVhbCcsICdjdXJyZW5jeSddLmluZGV4T2YodGhpcy5jb2x1bW4udHlwZSkgIT09IC0xO1xuICB9XG5cbiAgaXNEYXRlVHlwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gJ2RhdGUnID09PSB0aGlzLmNvbHVtbi50eXBlO1xuICB9XG5cbiAgZ2V0Rml4ZWREaW1lbnNpb25DbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnc2VsZWN0aW9uJyB8fCB0aGlzLm1vZGUgPT09ICdkZWZhdWx0JztcbiAgfVxuXG4gIGdldFNvcnRCeUFscGhhSWNvbigpIHtcbiAgICBsZXQgaWNvbiA9ICdvbnRpbWl6ZTpzb3J0X2J5X2FscGhhJztcbiAgICBpZiAodGhpcy5hY3RpdmVTb3J0RGlyZWN0aW9uICE9PSAnJykge1xuICAgICAgaWNvbiArPSAnXycgKyB0aGlzLmFjdGl2ZVNvcnREaXJlY3Rpb247XG4gICAgfVxuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpbHRlckNvbHVtbigpOiBPRmlsdGVyQ29sdW1uIHtcbiAgICBsZXQgb2JqOiBPRmlsdGVyQ29sdW1uID0geyBhdHRyOiAnJywgc29ydDogJycsIHN0YXJ0VmlldzogJycgfTtcbiAgICBvYmouYXR0ciA9IHRoaXMuY29sdW1uLmF0dHI7XG4gICAgb2JqLnNvcnQgPSB0aGlzLmFjdGl2ZVNvcnREaXJlY3Rpb247XG4gICAgb2JqLnN0YXJ0VmlldyA9IHRoaXMuc3RhcnRWaWV3O1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhcnRlZFZpZXdEYXRlcGlja2VyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnRWaWV3O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFR5cGVkVmFsdWUoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKTogYW55IHtcbiAgICBsZXQgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICh0aGlzLmlzTnVtZXJpY1R5cGUoKSkge1xuICAgICAgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0RhdGVUeXBlKCkpIHtcbiAgICAgIHZhbHVlID0gY29udHJvbC52YWx1ZS52YWx1ZU9mKCk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBvbkNoYW5nZURhdGFTb3VyY2UoZXZlbnQ6IE1hdFJhZGlvQ2hhbmdlKSB7XG4gICAgdGhpcy5nZXREYXRhKGV2ZW50LnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGF0YShzb3VyY2VEYXRhOiBzdHJpbmcpIHtcbiAgICBpZiAoc291cmNlRGF0YSA9PT0gJ2N1cnJlbnQtcGFnZScpIHtcbiAgICAgIC8qR2V0IGZpbHRlciB2YWx1ZXMgb24gdGhlIGN1cnJlbnQgcGFnZSovXG4gICAgICB0aGlzLnRhYmxlRGF0YSA9IHRoaXMudGFibGUuZGF0YVNvdXJjZS5nZXRDdXJyZW50RGF0YSgpO1xuICAgICAgdGhpcy5wYXJzZURhdGFBbmRJbml0aWFsaXplRGF0YUxpc3QobnVsbCk7XG5cbiAgICB9IGVsc2UgaWYgKHRoaXMudGFibGUucGFnZWFibGUpIHtcbiAgICAgIC8qR2V0IGZpbHRlciB2YWx1ZXMgb24gdGhlIGFsbCBwYWdlcyovXG4gICAgICB0aGlzLnF1ZXJ5QnlGaWx0ZXJDb2x1bW5TdWJzY3JpcHRpb24gPSB0aGlzLnF1ZXJ5QnlGaWx0ZXJDb2x1bW4odGhpcy5jb2x1bW4uYXR0cikuc3Vic2NyaWJlKChyZXM6IFNlcnZpY2VSZXNwb25zZSkgPT4ge1xuICAgICAgICBsZXQgZGF0YSA9IFtdO1xuICAgICAgICBpZiAocmVzLmlzU3VjY2Vzc2Z1bCgpKSB7XG4gICAgICAgICAgZGF0YSA9IHJlcy5kYXRhO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGFibGVEYXRhID0gZGF0YTtcbiAgICAgICAgdGhpcy5wYXJzZURhdGFBbmRJbml0aWFsaXplRGF0YUxpc3QobnVsbCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50YWJsZURhdGEgPSB0aGlzLnRhYmxlLmdldEFsbFZhbHVlcygpO1xuICAgICAgdGhpcy5wYXJzZURhdGFBbmRJbml0aWFsaXplRGF0YUxpc3QobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcXVlcnlCeUZpbHRlckNvbHVtbihhdHRyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlcnZpY2VSZXNwb25zZT4gfCBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgY29uc3Qga3YgPSB0aGlzLnRhYmxlLmdldENvbXBvbmVudEZpbHRlcigpO1xuICAgIGNvbnN0IGF2ID0gW2F0dHJdO1xuICAgIGxldCBzcWxUeXBlcyA9IHt9O1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChrdikgJiYgIVV0aWwuaXNPYmplY3RFbXB0eShrdikpIHtcbiAgICAgIHNxbFR5cGVzID0gdGhpcy50YWJsZS5nZXRTcWxUeXBlcygpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtblF1ZXJ5QXJncyA9IFtrdiwgYXYsIHRoaXMudGFibGUuZW50aXR5LCBzcWxUeXBlcywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZF07XG4gICAgY29uc3QgcXVlcnlNZXRob2ROYW1lID0gdGhpcy5xdWVyeU1ldGhvZE5hbWUgfHwgQ29kZXMuUVVFUllfTUVUSE9EO1xuICAgIGNvbnN0IHNlcnZpY2UgPSB0aGlzLnRhYmxlLmdldFNlcnZpY2UoKTtcbiAgICBpZiAoc2VydmljZSAmJiAocXVlcnlNZXRob2ROYW1lIGluIHNlcnZpY2UpICYmIHRoaXMudGFibGUuZW50aXR5KSB7XG4gICAgICByZXR1cm4gc2VydmljZVtxdWVyeU1ldGhvZE5hbWVdKC4uLmNvbHVtblF1ZXJ5QXJncylcbiAgICB9XG4gICAgcmV0dXJuIG9mKHt9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5EYXRhVXNpbmdSZW5kZXJlcigpIHtcbiAgICBjb25zdCB1c2VSZW5kZXJlciA9IHRoaXMuY29sdW1uLnJlbmRlcmVyICYmIHRoaXMuY29sdW1uLnJlbmRlcmVyLmdldENlbGxEYXRhO1xuICAgIHJldHVybiB0aGlzLnRhYmxlRGF0YS5tYXAoKHJvdykgPT4gdXNlUmVuZGVyZXIgPyB0aGlzLmNvbHVtbi5yZW5kZXJlci5nZXRDZWxsRGF0YShyb3dbdGhpcy5jb2x1bW4uYXR0cl0sIHJvdykgOiByb3dbdGhpcy5jb2x1bW4uYXR0cl0pO1xuICB9XG59XG4iLCI8c3BhbiBtYXQtZGlhbG9nLXRpdGxlPnt7ICdUQUJMRS5CVVRUT05TLkZJTFRFUl9CWV9DT0xVTU4nIHwgb1RyYW5zbGF0ZSB9fToge3sgY29sdW1uLnRpdGxlIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiZGlhbG9nLWxpc3QtY29udGFpbmVyXCI+XG4gIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBjbGFzcz1cImNvbnRlbnQtd3JhcHBlclwiIFtjbGFzcy5jb250ZW50LXdyYXBwZXItZml4ZWQtZGltZW5zaW9uXT1cImdldEZpeGVkRGltZW5zaW9uQ2xhc3MoKVwiPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICNjdXN0b21GaWx0ZXJTbGlkZSAoY2hhbmdlKT1cIm9uU2xpZGVDaGFuZ2UoJGV2ZW50KVwiIFtjaGVja2VkXT1cIihpc0N1c3RvbUZpbHRlciB8IGFzeW5jKVwiICpuZ0lmPVwiaXNEZWZhdWx0RmlsdGVyIHwgYXN5bmNcIj5cbiAgICAgIHt7ICdUQUJMRS5GSUxURVJfQllfQ09MVU1OLkNVU1RPTV9GSUxURVInIHwgb1RyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8ZGl2IGZ4RmxleD1cIjEgMSAxMDAlXCIgKm5nSWY9XCIhKGlzQ3VzdG9tRmlsdGVyIHwgYXN5bmMpO2Vsc2UgY3VzdG9tRmlsdGVyVGVtcGxhdGVcIiBmeExheW91dD1cImNvbHVtblwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaGludGVkXCI+XG4gICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXggc3ZnSWNvbj1cIm9udGltaXplOnNlYXJjaFwiPjwvbWF0LWljb24+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCAjZmlsdGVyIHBsYWNlaG9sZGVyPVwie3sgJ1RBQkxFLkZJTFRFUicgfCBvVHJhbnNsYXRlIH19XCI+XG4gICAgICAgIDxtYXQtaGludD57eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5ISU5UX1NUQVInIHwgb1RyYW5zbGF0ZSB9fTwvbWF0LWhpbnQ+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPGRpdiAqbmdJZj1cIihsaXN0RGF0YSB8IGFzeW5jKS5sZW5ndGggPiAwOyBlbHNlIGVtcHR5TGlzdERhdGFcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIHN0YXJ0XCI+XG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgc3RhcnRcIj5cbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGV2ZW50KVwiIFtjaGVja2VkXT1cImFyZUFsbFNlbGVjdGVkKClcIiBbaW5kZXRlcm1pbmF0ZV09XCJpc0luZGV0ZXJtaW5hdGUoKVwiIFtkaXNhYmxlZF09XCIhbGlzdERhdGFcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCI+XG4gICAgICAgICAgICB7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5DSEVDS19BTEwnIHwgb1RyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWxpc3REYXRhXCIgY2xhc3M9XCJjb2x1bW4tZmlsdGVyLWVtcHR5LWxpc3RcIj5cbiAgICAgICAgICAgIHt7ICdUQUJMRS5GSUxURVJfQllfQ09MVU1OLkxJU1RfRU1QVFlfRklMVEVSJyB8IG9UcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0YXJ0XCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkNsaWNrU29ydFZhbHVlcygpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gW3N2Z0ljb25dPVwiZ2V0U29ydEJ5QWxwaGFJY29uKClcIj48L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiICpuZ0lmPVwic2hvd0ZpbHRlclZhbHVlc09wdGlvblwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPm1vcmVfdmVydDwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwiZmlsdGVydmFsdWVzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8ZGl2IG1hdC1zdWJoZWFkZXI+XG4gICAgICAgICAgICAgICAge3snVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5MQUJFTF9EQVRBJyB8IG9UcmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICAgICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgYXJpYS1sYWJlbD1cIkRhdGFcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiMTJweFwiIFsobmdNb2RlbCldPVwic291cmNlRGF0YVwiIChjaGFuZ2UpPVwib25DaGFuZ2VEYXRhU291cmNlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiB2YWx1ZT1cImN1cnJlbnQtcGFnZVwiPnt7J1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uQ1VSUkVOVF9QQUdFJyB8IG9UcmFuc2xhdGV9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiB2YWx1ZT1cImFsbC1kYXRhXCI+e3snVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5BTExfUEFHRScgfCBvVHJhbnNsYXRlfX08L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNlbXB0eUxpc3REYXRhPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvbHVtbi1maWx0ZXItZW1wdHktbGlzdFwiPlxuICAgICAgICAgIHt7ICdUQUJMRS5GSUxURVJfQllfQ09MVU1OLkxJU1RfRU1QVFknIHwgb1RyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IGl0ZW1TaXplPVwiMjVcIiBmeEZsZXg+XG4gICAgICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgKm5nSWY9XCJwcmVsb2FkVmFsdWVzIHx8IGxpc3REYXRhXCIgI2ZpbHRlclZhbHVlTGlzdCBjbGFzcz1cInNlbGVjdC12YWx1ZXMtbGlzdFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3QoJGV2ZW50KVwiPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqY2RrVmlydHVhbEZvcj1cImxldCByZWNvcmQgb2YgKGxpc3REYXRhIHwgYXN5bmMpOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8bWF0LWxpc3Qtb3B0aW9uIGNoZWNrYm94UG9zaXRpb249XCJiZWZvcmVcIiBbc2VsZWN0ZWRdPVwicmVjb3JkLnNlbGVjdGVkXCIgW3ZhbHVlXT1cInJlY29yZFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbHVtbi5yZW5kZXJlclwiPlxuICAgICAgICAgICAgICAgIHt7IHJlY29yZC52YWx1ZSB8fCAoJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uRU1QVFlfVkFMVUUnIHwgb1RyYW5zbGF0ZSkgfX1cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImNvbHVtbi5yZW5kZXJlclwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5yZW5kZXJlci50ZW1wbGF0ZXJlZlwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY2VsbHZhbHVlOiByZWNvcmQudmFsdWUsIHJvd3ZhbHVlOiByZWNvcmQucm93VmFsdWUgfVwiPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LXNlbGVjdGlvbi1saXN0PlxuICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuXG48bWF0LWRpYWxvZy1hY3Rpb25zIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiY2xlYXJBY3Rpb25cIiBjbGFzcz1cIm8tYnV0dG9uLWluZm9cIj5cbiAgICB7eyAnVEFCTEUuQlVUVE9OUy5GSUxURVJfQ0xFQVInIHwgb1RyYW5zbGF0ZSB9fSA8L2J1dHRvbj5cbiAgPHNwYW4gYWxpZ249XCJlbmRcIj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiY2FuY2VsQWN0aW9uXCIgY2xhc3M9XCJvLWJ1dHRvbi1kZWZhdWx0IGNhbmNlbFwiPlxuICAgICAge3sgJ0NBTkNFTCcgfCBvVHJhbnNsYXRlIH19IDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJhY2NlcHRBY3Rpb25cIiBjbGFzcz1cIm8tYnV0dG9uLXByaW1hcnlcIj5cbiAgICAgIHt7ICdBQ0NFUFQnIHwgb1RyYW5zbGF0ZSB9fSA8L2J1dHRvbj5cbiAgPC9zcGFuPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG5cbjwhLS0gVEVNUExBVEUgQ1VTVE9NIEZJTFRFUi0tPlxuPG5nLXRlbXBsYXRlICNjdXN0b21GaWx0ZXJUZW1wbGF0ZT5cbiAgPGRpdiAqbmdJZj1cImlzVGV4dFR5cGUoKVwiPlxuICAgIDxtYXQtZm9ybS1maWVsZCBmeEZsZXggY2xhc3M9XCJoaW50ZWRcIj5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCAjZmlsdGVyVGV4dCBbZm9ybUNvbnRyb2xdPVwiZmNUZXh0XCIgcGxhY2Vob2xkZXI9XCJ7eyAnVEFCTEUuRklMVEVSJyB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICAgIDxtYXQtaGludD57eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5ISU5UX1NUQVInIHwgb1RyYW5zbGF0ZSB9fTwvbWF0LWhpbnQ+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGVhclZhbHVlcygpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6Y2xvc2VcIj48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpc051bWVyaWNUeXBlKClcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTJweFwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZmNGcm9tXCIgcGxhY2Vob2xkZXI9XCJ7eyAnVEFCTEUuRklMVEVSX0JZX0NPTFVNTi5GUk9NJyB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZmNUb1wiIHBsYWNlaG9sZGVyPVwie3sgJ1RBQkxFLkZJTFRFUl9CWV9DT0xVTU4uVE8nIHwgb1RyYW5zbGF0ZSB9fVwiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJjbGVhclZhbHVlcygpXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmNsb3NlXCI+PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJpc0RhdGVUeXBlKClcIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiMTJweFwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBbbWF0RGF0ZXBpY2tlcl09XCJkYXRlcGlja2VyRnJvbVwiIFttYXhdPVwiZmNUby52YWx1ZVwiIFtmb3JtQ29udHJvbF09XCJmY0Zyb21cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdUQUJMRS5GSUxURVJfQllfQ09MVU1OLkZST00nIHwgb1RyYW5zbGF0ZSB9fVwiPlxuICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJkYXRlcGlja2VyRnJvbVwiPlxuICAgICAgICA8bWF0LWljb24gbWF0RGF0ZXBpY2tlclRvZ2dsZUljb24+dG9kYXk8L21hdC1pY29uPlxuICAgICAgPC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVwaWNrZXJGcm9tIFtzdGFydFZpZXddPVwiZ2V0U3RhcnRlZFZpZXdEYXRlcGlja2VyKClcIj48L21hdC1kYXRlcGlja2VyPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cImRhdGVwaWNrZXJUb1wiIFttaW5dPVwiZmNGcm9tLnZhbHVlXCIgW2Zvcm1Db250cm9sXT1cImZjVG9cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdUQUJMRS5GSUxURVJfQllfQ09MVU1OLlRPJyB8IG9UcmFuc2xhdGUgfX1cIj5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZXBpY2tlclRvXCI+XG4gICAgICAgIDxtYXQtaWNvbiBtYXREYXRlcGlja2VyVG9nZ2xlSWNvbj50b2RheTwvbWF0LWljb24+XG4gICAgICA8L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlciAjZGF0ZXBpY2tlclRvIFtzdGFydFZpZXddPVwiZ2V0U3RhcnRlZFZpZXdEYXRlcGlja2VyKClcIj48L21hdC1kYXRlcGlja2VyPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJWYWx1ZXMoKVwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpjbG9zZVwiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -32,7 +32,6 @@ export class OTableColumnsFilterComponent {
|
|
|
32
32
|
this.table = table;
|
|
33
33
|
this._mode = 'default';
|
|
34
34
|
this.preloadValues = true;
|
|
35
|
-
this.filterValuesInData = 'current-page';
|
|
36
35
|
this._columnsArray = [];
|
|
37
36
|
this.columnsComparisonProperty = {};
|
|
38
37
|
}
|
|
@@ -53,6 +52,10 @@ export class OTableColumnsFilterComponent {
|
|
|
53
52
|
self.columnsComparisonProperty[colName] = compType;
|
|
54
53
|
});
|
|
55
54
|
this.table.setOTableColumnsFilter(this);
|
|
55
|
+
this.filterValuesInData = this.filterValuesInData ?? this.getFilterValuesInDataByDefault();
|
|
56
|
+
}
|
|
57
|
+
getFilterValuesInDataByDefault() {
|
|
58
|
+
return this.table.pageable ? 'current-page' : 'all-data';
|
|
56
59
|
}
|
|
57
60
|
ngAfterContentInit() {
|
|
58
61
|
if (Util.isDefined(this.filterColumns)) {
|
|
@@ -137,12 +140,12 @@ export class OTableColumnsFilterComponent {
|
|
|
137
140
|
parseFilterColumns(columns) {
|
|
138
141
|
return columns
|
|
139
142
|
.map(x => {
|
|
140
|
-
let obj = { attr: '', sort: '', startView: '', queryMethod: void 0
|
|
143
|
+
let obj = { attr: '', sort: '', startView: '', queryMethod: void 0 };
|
|
141
144
|
obj.attr = x.attr;
|
|
142
145
|
obj.sort = x.sort;
|
|
143
146
|
obj.startView = x.startView;
|
|
144
147
|
obj.queryMethod = x.queryMethod;
|
|
145
|
-
obj.filterValuesInData = x.filterValuesInData;
|
|
148
|
+
obj.filterValuesInData = (x.filterValuesInData || this.filterValuesInData) ?? this.getFilterValuesInDataByDefault();
|
|
146
149
|
return obj;
|
|
147
150
|
});
|
|
148
151
|
}
|
|
@@ -174,4 +177,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
174
177
|
type: ContentChildren,
|
|
175
178
|
args: [OTableColumnsFilterColumnComponent, { descendants: true }]
|
|
176
179
|
}] } });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW5zLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2hlYWRlci90YWJsZS1jb2x1bW5zLWZpbHRlci9vLXRhYmxlLWNvbHVtbnMtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1SSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQWlCLGtDQUFrQyxFQUFFLE1BQU0sbURBQW1ELENBQUM7OztBQUV0SCxNQUFNLENBQUMsTUFBTSxvQ0FBb0MsR0FBRztJQUVsRCxTQUFTO0lBRVQsK0JBQStCO0lBRS9CLE1BQU07SUFFTiwyQ0FBMkM7Q0FDNUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUFHLEVBQ3BELENBQUM7QUFVRixNQUFNLE9BQU8sNEJBQTRCO0lBWXZDLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFDSSxJQUFJLENBQUMsR0FBVztRQUNsQixNQUFNLENBQUMsR0FBRyw0QkFBNEIsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVB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QUFFLHdCQUF3QjtvQkFDbEMsUUFBUSxFQUFFLEdBQUc7b0JBQ2IsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE1BQU0sRUFBRSxvQ0FBb0M7b0JBQzVDLE9BQU8sRUFBRSxxQ0FBcUM7aUJBQy9DOzswQkFtQ0ksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDOzRDQXhCM0MsYUFBYSxNQVFULElBQUk7c0JBRFAsS0FBSztnQkFhc0UsYUFBYTtzQkFBeEYsZUFBZTt1QkFBQyxrQ0FBa0MsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIGZvcndhcmRSZWYsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgdHlwZSB7IE9Db2x1bW4gfSBmcm9tICcuLi8uLi8uLi9jb2x1bW4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vby10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0ZpbHRlckNvbHVtbiwgT1RhYmxlQ29sdW1uc0ZpbHRlckNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4vY29sdW1ucy9vLXRhYmxlLWNvbHVtbnMtZmlsdGVyLWNvbHVtbi5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19UQUJMRV9DT0xVTU5fRklMVEVSID0gW1xuICAvLyBjb2x1bW5zIFtzdHJpbmddOiBjb2x1bW5zIHRoYXQgbWlnaHQgYmUgZmlsdGVyZWQsIHNlcGFyYXRlZCBieSAnOycuIERlZmF1bHQ6IGFsbCB2aXNpYmxlIGNvbHVtbnMuXG4gICdjb2x1bW5zJyxcbiAgLy8gcHJlbG9hZFZhbHVlcyBbdHJ1ZXxmYWxzZXx5ZXN8bm9dOiBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdG8gc2hvdyB0aGUgbGlzdCB2YWx1ZXMgd2hlbiB0aGUgZmlsdGVyIGRpYWxvZyBpcyBvcGVuZWQuIERlZmF1bHQ6IHRydWUuXG4gICdwcmVsb2FkVmFsdWVzOiBwcmVsb2FkLXZhbHVlcycsXG4gIC8vIG1vZGUgW2RlZmF1bHQgfCBzZWxlY3Rpb24gfCAgY3VzdG9tXVxuICAnbW9kZScsXG4gIC8vZmlsdGVyLXZhbHVlcy1pbi1kYXRhOiAnY3VycmVudC1wYWdlJyB8ICdhbGwtZGF0YSc6IHNldCBtb2RlIHRvIGZpbHRlciBieS4gRGVmYXVsdCAnY3VycmVudC1wYWdlJ1xuICAnZmlsdGVyVmFsdWVzSW5EYXRhOiBmaWx0ZXItdmFsdWVzLWluLWRhdGEnXG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OX0ZJTFRFUiA9IFtcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtY29sdW1ucy1maWx0ZXInLFxuICB0ZW1wbGF0ZTogJyAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTl9GSUxURVIsXG4gIG91dHB1dHM6IERFRkFVTFRfT1VUUFVUU19PX1RBQkxFX0NPTFVNTl9GSUxURVJcbn0pXG5cbmV4cG9ydCBjbGFzcyBPVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgc3RhdGljIERFRkFVTFRfQ09NUEFSSVNPTl9UWVBFID0gJ1ZJRVcnO1xuICBwdWJsaWMgc3RhdGljIE1PREVMX0NPTVBBUklTT05fVFlQRSA9ICdNT0RFTCc7XG4gIHB1YmxpYyBzdGF0aWMgT1RhYmxlQ29sdW1uc0ZpbHRlck1vZGVzID0gWydkZWZhdWx0JywgJ3NlbGVjdGlvbicsICdjdXN0b20nXTtcblxuICBwcm90ZWN0ZWQgX2NvbHVtbnM6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9tb2RlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwcmVsb2FkVmFsdWVzOiBib29sZWFuID0gdHJ1ZTtcbiAgZmlsdGVyVmFsdWVzSW5EYXRhID0gJ2N1cnJlbnQtcGFnZSc7XG5cbiAgZ2V0IG1vZGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBtb2RlKHZhbDogc3RyaW5nKSB7XG4gICAgY29uc3QgbSA9IE9UYWJsZUNvbHVtbnNGaWx0ZXJDb21wb25lbnQuT1RhYmxlQ29sdW1uc0ZpbHRlck1vZGVzLmZpbmQoZSA9PiBlID09PSB2YWwpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChtKSkge1xuICAgICAgdGhpcy5fbW9kZSA9IG07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgYG8tdGFibGUtY29sdW1ucy1maWx0ZXJgIG1vZGUgKCcgKyB2YWwgKyAnKScpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfY29sdW1uc0FycmF5OiBBcnJheTxPRmlsdGVyQ29sdW1uPiA9IFtdO1xuICBwcm90ZWN0ZWQgY29sdW1uc0NvbXBhcmlzb25Qcm9wZXJ0eTogb2JqZWN0ID0ge307XG5cbiAgQENvbnRlbnRDaGlsZHJlbihPVGFibGVDb2x1bW5zRmlsdGVyQ29sdW1uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIGZpbHRlckNvbHVtbnM6IFF1ZXJ5TGlzdDxPVGFibGVDb2x1bW5zRmlsdGVyQ29sdW1uQ29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBPVGFibGVDb21wb25lbnQpKSBwcm90ZWN0ZWQgdGFibGU6IE9UYWJsZUNvbXBvbmVudFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmNvbHVtbnNBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY29sdW1uc0FycmF5ID0gdGhpcy50YWJsZS5vVGFibGVPcHRpb25zLnZpc2libGVDb2x1bW5zO1xuICAgIH1cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBsZXQgY29sdW1ucyA9IFV0aWwucGFyc2VBcnJheSh0aGlzLl9jb2x1bW5zLCB0cnVlKTtcblxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sRGF0YSwgaSwgYXJyKSA9PiB7XG4gICAgICBjb25zdCBjb2xEZWYgPSBjb2xEYXRhLnNwbGl0KENvZGVzLlRZUEVfU0VQQVJBVE9SKTtcbiAgICAgIGNvbnN0IGNvbE5hbWUgPSBjb2xEZWZbMF07XG4gICAgICBsZXQgY29tcFR5cGUgPSAoY29sRGVmWzFdIHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgaWYgKFtPVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50LkRFRkFVTFRfQ09NUEFSSVNPTl9UWVBFLCBPVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50Lk1PREVMX0NPTVBBUklTT05fVFlQRV0uaW5kZXhPZihjb21wVHlwZSkgPT09IC0xKSB7XG4gICAgICAgIGNvbXBUeXBlID0gT1RhYmxlQ29sdW1uc0ZpbHRlckNvbXBvbmVudC5ERUZBVUxUX0NPTVBBUklTT05fVFlQRTtcbiAgICAgIH1cbiAgICAgIGFycltpXSA9IGNvbE5hbWU7XG4gICAgICBzZWxmLmNvbHVtbnNDb21wYXJpc29uUHJvcGVydHlbY29sTmFtZV0gPSBjb21wVHlwZTtcbiAgICB9KTtcblxuICAgIHRoaXMudGFibGUuc2V0T1RhYmxlQ29sdW1uc0ZpbHRlcih0aGlzKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5maWx0ZXJDb2x1bW5zKSkge1xuICAgICAgdGhpcy5jb2x1bW5zQXJyYXkgPSB0aGlzLmNvbHVtbnNBcnJheS5jb25jYXQodGhpcy5wYXJzZUZpbHRlckNvbHVtbnModGhpcy5maWx0ZXJDb2x1bW5zKSk7XG4gICAgfVxuICB9XG5cbiAgaXNDb2x1bW5GaWx0ZXJhYmxlKGF0dHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLmNvbHVtbnNBcnJheS5maW5kKHggPT4geC5hdHRyID09PSBhdHRyKSk7XG4gIH1cblxuICBnZXRTb3J0VmFsdWVPZkZpbHRlckNvbHVtbihhdHRyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBzb3J0VmFsdWUgPSAnJztcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5jb2x1bW5zQXJyYXkpKSB7XG4gICAgICB0aGlzLmNvbHVtbnNBcnJheS5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uYXR0ciA9PSBhdHRyKSB7XG4gICAgICAgICAgc29ydFZhbHVlID0gY29sdW1uLnNvcnQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc29ydFZhbHVlO1xuICB9XG5cbiAgZ2V0U3RhcnRWaWV3VmFsdWVPZkZpbHRlckNvbHVtbihhdHRyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBzdGFydFZpZXcgPSAnJztcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5jb2x1bW5zQXJyYXkpKSB7XG4gICAgICB0aGlzLmNvbHVtbnNBcnJheS5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uYXR0ciA9PSBhdHRyKSB7XG4gICAgICAgICAgc3RhcnRWaWV3ID0gY29sdW1uLnN0YXJ0VmlldztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBzdGFydFZpZXc7XG4gIH1cblxuICBnZXRRdWVyeU1ldGhvZE9mRmlsdGVyQ29sdW1uKGF0dHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IHF1ZXJ5TWV0aG9kID0gJyc7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuY29sdW1uc0FycmF5KSkge1xuICAgICAgdGhpcy5jb2x1bW5zQXJyYXkuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgICBpZiAoY29sdW1uLmF0dHIgPT0gYXR0cikge1xuICAgICAgICAgIHF1ZXJ5TWV0aG9kID0gY29sdW1uLnF1ZXJ5TWV0aG9kO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHF1ZXJ5TWV0aG9kO1xuICB9XG5cbiAgZ2V0RmlsdGVyVmFsdWVzSW5EYXRhKGF0dHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGZpbHRlclZhbHVlc0luRGF0YSA9ICcnO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmNvbHVtbnNBcnJheSkpIHtcbiAgICAgIHRoaXMuY29sdW1uc0FycmF5LmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi5hdHRyID09IGF0dHIpIHtcbiAgICAgICAgICBmaWx0ZXJWYWx1ZXNJbkRhdGEgPSBjb2x1bW4uZmlsdGVyVmFsdWVzSW5EYXRhO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlclZhbHVlc0luRGF0YTtcbiAgfVxuXG4gIGdldENvbHVtbkNvbXBhcmlzb25WYWx1ZShjb2x1bW46IE9Db2x1bW4sIHZhbDogYW55KTogYW55IHtcbiAgICBpZiAoIWNvbHVtbiB8fCB0aGlzLmNvbHVtbnNDb21wYXJpc29uUHJvcGVydHlbY29sdW1uLmF0dHJdID09PSBPVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50Lk1PREVMX0NPTVBBUklTT05fVFlQRSkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNvbHVtbi5yZW5kZXJlciA/IGNvbHVtbi5yZW5kZXJlci5nZXRDZWxsRGF0YSh2YWwpIDogdmFsO1xuICAgIH1cbiAgfVxuXG4gIHNldCBjb2x1bW5zKGFyZzogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29sdW1ucyA9IGFyZztcbiAgICB0aGlzLl9jb2x1bW5zQXJyYXkgPSB0aGlzLnBhcnNlQ29sdW1ucyh0aGlzLl9jb2x1bW5zKTtcbiAgfVxuXG4gIHNldCBjb2x1bW5zQXJyYXkoYXJnOiBPRmlsdGVyQ29sdW1uW10pIHtcbiAgICB0aGlzLl9jb2x1bW5zQXJyYXkgPSBhcmc7XG4gIH1cblxuICBnZXQgY29sdW1uc0FycmF5KCk6IE9GaWx0ZXJDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnNBcnJheTtcbiAgfVxuXG4gIHBhcnNlQ29sdW1ucyhjb2x1bW5zOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY29sdW1ucy5zcGxpdCgnOycpXG4gICAgICAubWFwKHggPT4ge1xuICAgICAgICBsZXQgb2JqOiBPRmlsdGVyQ29sdW1uID0geyBhdHRyOiAnJywgc29ydDogJycsIHN0YXJ0VmlldzogJycgfTtcbiAgICAgICAgb2JqLmF0dHIgPSB4O1xuICAgICAgICBvYmouc29ydCA9ICcnO1xuICAgICAgICBvYmouc3RhcnRWaWV3ID0gJyc7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9KTtcbiAgfVxuXG4gIHBhcnNlRmlsdGVyQ29sdW1ucyhjb2x1bW5zOiBRdWVyeUxpc3Q8T1RhYmxlQ29sdW1uc0ZpbHRlckNvbHVtbkNvbXBvbmVudD4pIHtcbiAgICByZXR1cm4gY29sdW1uc1xuICAgICAgLm1hcCh4ID0+IHtcbiAgICAgICAgbGV0IG9iajogT0ZpbHRlckNvbHVtbiA9IHsgYXR0cjogJycsIHNvcnQ6ICcnLCBzdGFydFZpZXc6ICcnLCBxdWVyeU1ldGhvZDogdm9pZCAwLCBmaWx0ZXJWYWx1ZXNJbkRhdGE6ICdjdXJyZW50LXBhZ2UnIH07XG4gICAgICAgIG9iai5hdHRyID0geC5hdHRyO1xuICAgICAgICBvYmouc29ydCA9IHguc29ydDtcbiAgICAgICAgb2JqLnN0YXJ0VmlldyA9IHguc3RhcnRWaWV3O1xuICAgICAgICBvYmoucXVlcnlNZXRob2QgPSB4LnF1ZXJ5TWV0aG9kO1xuICAgICAgICBvYmouZmlsdGVyVmFsdWVzSW5EYXRhID0geC5maWx0ZXJWYWx1ZXNJbkRhdGE7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9KTtcbiAgfVxuXG59XG4iXX0=
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW5zLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2hlYWRlci90YWJsZS1jb2x1bW5zLWZpbHRlci9vLXRhYmxlLWNvbHVtbnMtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFvQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUosT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFpQixrQ0FBa0MsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7QUFFdEgsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUc7SUFFbEQsU0FBUztJQUVULCtCQUErQjtJQUUvQixNQUFNO0lBRU4sMkNBQTJDO0NBQzVDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxFQUNwRCxDQUFDO0FBVUYsTUFBTSxPQUFPLDRCQUE0QjtJQVl2QyxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQ0ksSUFBSSxDQUFDLEdBQVc7UUFDbEIsTUFBTSxDQUFDLEdBQUcsNEJBQTRCLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxF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QUUsUUFBUSxDQUFDLENBQUM7MEhBSmpFLDRCQUE0QiwwQ0FpQzdCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7OEdBakNoQyw0QkFBNEIsbVFBNkJ0QixrQ0FBa0MsZ0RBbkN6QyxHQUFHO0FBY2I7SUFBQyxxQkFBcUIsRUFBRTs7bUVBQ007NEZBVG5CLDRCQUE0QjtrQkFSeEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUUsR0FBRztvQkFDYixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsTUFBTSxFQUFFLG9DQUFvQztvQkFDNUMsT0FBTyxFQUFFLHFDQUFxQztpQkFDL0M7OzBCQW1DSSxNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUM7NENBeEIzQyxhQUFhLE1BUVQsSUFBSTtzQkFEUCxLQUFLO2dCQWFzRSxhQUFhO3NCQUF4RixlQUFlO3VCQUFDLGtDQUFrQyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB0eXBlIHsgT0NvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvbHVtbi9vLWNvbHVtbi5jbGFzcyc7XG5pbXBvcnQgeyBPVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9vLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPRmlsdGVyQ29sdW1uLCBPVGFibGVDb2x1bW5zRmlsdGVyQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW5zL28tdGFibGUtY29sdW1ucy1maWx0ZXItY29sdW1uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTl9GSUxURVIgPSBbXG4gIC8vIGNvbHVtbnMgW3N0cmluZ106IGNvbHVtbnMgdGhhdCBtaWdodCBiZSBmaWx0ZXJlZCwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogYWxsIHZpc2libGUgY29sdW1ucy5cbiAgJ2NvbHVtbnMnLFxuICAvLyBwcmVsb2FkVmFsdWVzIFt0cnVlfGZhbHNlfHllc3xub106IGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBsaXN0IHZhbHVlcyB3aGVuIHRoZSBmaWx0ZXIgZGlhbG9nIGlzIG9wZW5lZC4gRGVmYXVsdDogdHJ1ZS5cbiAgJ3ByZWxvYWRWYWx1ZXM6IHByZWxvYWQtdmFsdWVzJyxcbiAgLy8gbW9kZSBbZGVmYXVsdCB8IHNlbGVjdGlvbiB8ICBjdXN0b21dXG4gICdtb2RlJyxcbiAgLy9maWx0ZXItdmFsdWVzLWluLWRhdGE6ICdjdXJyZW50LXBhZ2UnIHwgJ2FsbC1kYXRhJzogc2V0IG1vZGUgdG8gZmlsdGVyIGJ5LiBEZWZhdWx0ICdjdXJyZW50LXBhZ2UnXG4gICdmaWx0ZXJWYWx1ZXNJbkRhdGE6IGZpbHRlci12YWx1ZXMtaW4tZGF0YSdcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19UQUJMRV9DT0xVTU5fRklMVEVSID0gW1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1jb2x1bW5zLWZpbHRlcicsXG4gIHRlbXBsYXRlOiAnICcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fVEFCTEVfQ09MVU1OX0ZJTFRFUixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OX0ZJTFRFUlxufSlcblxuZXhwb3J0IGNsYXNzIE9UYWJsZUNvbHVtbnNGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xuXG4gIHB1YmxpYyBzdGF0aWMgREVGQVVMVF9DT01QQVJJU09OX1RZUEUgPSAnVklFVyc7XG4gIHB1YmxpYyBzdGF0aWMgTU9ERUxfQ09NUEFSSVNPTl9UWVBFID0gJ01PREVMJztcbiAgcHVibGljIHN0YXRpYyBPVGFibGVDb2x1bW5zRmlsdGVyTW9kZXMgPSBbJ2RlZmF1bHQnLCAnc2VsZWN0aW9uJywgJ2N1c3RvbSddO1xuXG4gIHByb3RlY3RlZCBfY29sdW1uczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX21vZGU6IHN0cmluZyA9ICdkZWZhdWx0JztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHByZWxvYWRWYWx1ZXM6IGJvb2xlYW4gPSB0cnVlO1xuICBmaWx0ZXJWYWx1ZXNJbkRhdGE6ICdjdXJyZW50LXBhZ2UnIHwgJ2FsbC1kYXRhJztcblxuICBnZXQgbW9kZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9tb2RlO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IG1vZGUodmFsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtID0gT1RhYmxlQ29sdW1uc0ZpbHRlckNvbXBvbmVudC5PVGFibGVDb2x1bW5zRmlsdGVyTW9kZXMuZmluZChlID0+IGUgPT09IHZhbCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKG0pKSB7XG4gICAgICB0aGlzLl9tb2RlID0gbTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBgby10YWJsZS1jb2x1bW5zLWZpbHRlcmAgbW9kZSAoJyArIHZhbCArICcpJyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9jb2x1bW5zQXJyYXk6IEFycmF5PE9GaWx0ZXJDb2x1bW4+ID0gW107XG4gIHByb3RlY3RlZCBjb2x1bW5zQ29tcGFyaXNvblByb3BlcnR5OiBvYmplY3QgPSB7fTtcblxuICBAQ29udGVudENoaWxkcmVuKE9UYWJsZUNvbHVtbnNGaWx0ZXJDb2x1bW5Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgZmlsdGVyQ29sdW1uczogUXVlcnlMaXN0PE9UYWJsZUNvbHVtbnNGaWx0ZXJDb2x1bW5Db21wb25lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9UYWJsZUNvbXBvbmVudCkpIHByb3RlY3RlZCB0YWJsZTogT1RhYmxlQ29tcG9uZW50XG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuY29sdW1uc0FycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jb2x1bW5zQXJyYXkgPSB0aGlzLnRhYmxlLm9UYWJsZU9wdGlvbnMudmlzaWJsZUNvbHVtbnM7XG4gICAgfVxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGxldCBjb2x1bW5zID0gVXRpbC5wYXJzZUFycmF5KHRoaXMuX2NvbHVtbnMsIHRydWUpO1xuXG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2xEYXRhLCBpLCBhcnIpID0+IHtcbiAgICAgIGNvbnN0IGNvbERlZiA9IGNvbERhdGEuc3BsaXQoQ29kZXMuVFlQRV9TRVBBUkFUT1IpO1xuICAgICAgY29uc3QgY29sTmFtZSA9IGNvbERlZlswXTtcbiAgICAgIGxldCBjb21wVHlwZSA9IChjb2xEZWZbMV0gfHwgJycpLnRvVXBwZXJDYXNlKCk7XG4gICAgICBpZiAoW09UYWJsZUNvbHVtbnNGaWx0ZXJDb21wb25lbnQuREVGQVVMVF9DT01QQVJJU09OX1RZUEUsIE9UYWJsZUNvbHVtbnNGaWx0ZXJDb21wb25lbnQuTU9ERUxfQ09NUEFSSVNPTl9UWVBFXS5pbmRleE9mKGNvbXBUeXBlKSA9PT0gLTEpIHtcbiAgICAgICAgY29tcFR5cGUgPSBPVGFibGVDb2x1bW5zRmlsdGVyQ29tcG9uZW50LkRFRkFVTFRfQ09NUEFSSVNPTl9UWVBFO1xuICAgICAgfVxuICAgICAgYXJyW2ldID0gY29sTmFtZTtcbiAgICAgIHNlbGYuY29sdW1uc0NvbXBhcmlzb25Qcm9wZXJ0eVtjb2xOYW1lXSA9IGNvbXBUeXBlO1xuICAgIH0pO1xuXG4gICAgdGhpcy50YWJsZS5zZXRPVGFibGVDb2x1bW5zRmlsdGVyKHRoaXMpO1xuXG4gICAgdGhpcy5maWx0ZXJWYWx1ZXNJbkRhdGEgPSB0aGlzLmZpbHRlclZhbHVlc0luRGF0YSA/PyB0aGlzLmdldEZpbHRlclZhbHVlc0luRGF0YUJ5RGVmYXVsdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJWYWx1ZXNJbkRhdGFCeURlZmF1bHQoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUucGFnZWFibGUgPyAnY3VycmVudC1wYWdlJyA6ICdhbGwtZGF0YSc7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuZmlsdGVyQ29sdW1ucykpIHtcbiAgICAgIHRoaXMuY29sdW1uc0FycmF5ID0gdGhpcy5jb2x1bW5zQXJyYXkuY29uY2F0KHRoaXMucGFyc2VGaWx0ZXJDb2x1bW5zKHRoaXMuZmlsdGVyQ29sdW1ucykpO1xuICAgIH1cbiAgfVxuXG4gIGlzQ29sdW1uRmlsdGVyYWJsZShhdHRyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQodGhpcy5jb2x1bW5zQXJyYXkuZmluZCh4ID0+IHguYXR0ciA9PT0gYXR0cikpO1xuICB9XG5cbiAgZ2V0U29ydFZhbHVlT2ZGaWx0ZXJDb2x1bW4oYXR0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgc29ydFZhbHVlID0gJyc7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuY29sdW1uc0FycmF5KSkge1xuICAgICAgdGhpcy5jb2x1bW5zQXJyYXkuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgICBpZiAoY29sdW1uLmF0dHIgPT0gYXR0cikge1xuICAgICAgICAgIHNvcnRWYWx1ZSA9IGNvbHVtbi5zb3J0O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHNvcnRWYWx1ZTtcbiAgfVxuXG4gIGdldFN0YXJ0Vmlld1ZhbHVlT2ZGaWx0ZXJDb2x1bW4oYXR0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgc3RhcnRWaWV3ID0gJyc7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuY29sdW1uc0FycmF5KSkge1xuICAgICAgdGhpcy5jb2x1bW5zQXJyYXkuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgICBpZiAoY29sdW1uLmF0dHIgPT0gYXR0cikge1xuICAgICAgICAgIHN0YXJ0VmlldyA9IGNvbHVtbi5zdGFydFZpZXc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RhcnRWaWV3O1xuICB9XG5cbiAgZ2V0UXVlcnlNZXRob2RPZkZpbHRlckNvbHVtbihhdHRyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBxdWVyeU1ldGhvZCA9ICcnO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLmNvbHVtbnNBcnJheSkpIHtcbiAgICAgIHRoaXMuY29sdW1uc0FycmF5LmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi5hdHRyID09IGF0dHIpIHtcbiAgICAgICAgICBxdWVyeU1ldGhvZCA9IGNvbHVtbi5xdWVyeU1ldGhvZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBxdWVyeU1ldGhvZDtcbiAgfVxuXG4gIGdldEZpbHRlclZhbHVlc0luRGF0YShhdHRyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBmaWx0ZXJWYWx1ZXNJbkRhdGEgPSAnJztcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5jb2x1bW5zQXJyYXkpKSB7XG4gICAgICB0aGlzLmNvbHVtbnNBcnJheS5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uYXR0ciA9PSBhdHRyKSB7XG4gICAgICAgICAgZmlsdGVyVmFsdWVzSW5EYXRhID0gY29sdW1uLmZpbHRlclZhbHVlc0luRGF0YTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJWYWx1ZXNJbkRhdGE7XG4gIH1cblxuICBnZXRDb2x1bW5Db21wYXJpc29uVmFsdWUoY29sdW1uOiBPQ29sdW1uLCB2YWw6IGFueSk6IGFueSB7XG4gICAgaWYgKCFjb2x1bW4gfHwgdGhpcy5jb2x1bW5zQ29tcGFyaXNvblByb3BlcnR5W2NvbHVtbi5hdHRyXSA9PT0gT1RhYmxlQ29sdW1uc0ZpbHRlckNvbXBvbmVudC5NT0RFTF9DT01QQVJJU09OX1RZUEUpIHtcbiAgICAgIHJldHVybiB2YWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjb2x1bW4ucmVuZGVyZXIgPyBjb2x1bW4ucmVuZGVyZXIuZ2V0Q2VsbERhdGEodmFsKSA6IHZhbDtcbiAgICB9XG4gIH1cblxuICBzZXQgY29sdW1ucyhhcmc6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbHVtbnMgPSBhcmc7XG4gICAgdGhpcy5fY29sdW1uc0FycmF5ID0gdGhpcy5wYXJzZUNvbHVtbnModGhpcy5fY29sdW1ucyk7XG4gIH1cblxuICBzZXQgY29sdW1uc0FycmF5KGFyZzogT0ZpbHRlckNvbHVtbltdKSB7XG4gICAgdGhpcy5fY29sdW1uc0FycmF5ID0gYXJnO1xuICB9XG5cbiAgZ2V0IGNvbHVtbnNBcnJheSgpOiBPRmlsdGVyQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5zQXJyYXk7XG4gIH1cblxuICBwYXJzZUNvbHVtbnMoY29sdW1uczogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNvbHVtbnMuc3BsaXQoJzsnKVxuICAgICAgLm1hcCh4ID0+IHtcbiAgICAgICAgbGV0IG9iajogT0ZpbHRlckNvbHVtbiA9IHsgYXR0cjogJycsIHNvcnQ6ICcnLCBzdGFydFZpZXc6ICcnIH07XG4gICAgICAgIG9iai5hdHRyID0geDtcbiAgICAgICAgb2JqLnNvcnQgPSAnJztcbiAgICAgICAgb2JqLnN0YXJ0VmlldyA9ICcnO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfSk7XG4gIH1cblxuICBwYXJzZUZpbHRlckNvbHVtbnMoY29sdW1uczogUXVlcnlMaXN0PE9UYWJsZUNvbHVtbnNGaWx0ZXJDb2x1bW5Db21wb25lbnQ+KSB7XG4gICAgcmV0dXJuIGNvbHVtbnNcbiAgICAgIC5tYXAoeCA9PiB7XG4gICAgICAgIGxldCBvYmo6IE9GaWx0ZXJDb2x1bW4gPSB7IGF0dHI6ICcnLCBzb3J0OiAnJywgc3RhcnRWaWV3OiAnJywgcXVlcnlNZXRob2Q6IHZvaWQgMCB9O1xuICAgICAgICBvYmouYXR0ciA9IHguYXR0cjtcbiAgICAgICAgb2JqLnNvcnQgPSB4LnNvcnQ7XG4gICAgICAgIG9iai5zdGFydFZpZXcgPSB4LnN0YXJ0VmlldztcbiAgICAgICAgb2JqLnF1ZXJ5TWV0aG9kID0geC5xdWVyeU1ldGhvZDtcbiAgICAgICAgb2JqLmZpbHRlclZhbHVlc0luRGF0YSA9ICh4LmZpbHRlclZhbHVlc0luRGF0YSB8fCB0aGlzLmZpbHRlclZhbHVlc0luRGF0YSkgPz8gdGhpcy5nZXRGaWx0ZXJWYWx1ZXNJbkRhdGFCeURlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
|