@pega/angular-sdk-components 0.24.2 → 0.24.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/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +1 -3
- package/esm2022/lib/_components/field/currency/currency.component.mjs +6 -4
- package/esm2022/lib/_components/field/decimal/decimal.component.mjs +4 -3
- package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +3 -8
- package/esm2022/lib/_components/field/percentage/percentage.component.mjs +6 -4
- package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +3 -8
- package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +3 -2
- package/esm2022/lib/_components/field/text-area/text-area.component.mjs +1 -3
- package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +3 -15
- package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +1 -2
- package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +1 -2
- package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +3 -9
- package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +1 -2
- package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +6 -9
- package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +1 -2
- package/esm2022/lib/_components/template/case-view/case-view.component.mjs +3 -9
- package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +2 -4
- package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +1 -2
- package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +5 -15
- package/esm2022/lib/_components/template/list-view/list-view.component.mjs +12 -6
- package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +1 -2
- package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +1 -2
- package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +1 -3
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +6 -12
- package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +3 -5
- package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +224 -421
- package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +1 -2
- package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +1 -5
- package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +1 -5
- package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +1 -1
- package/esm2022/lib/_components/widget/todo/todo.component.mjs +4 -3
- package/fesm2022/pega-angular-sdk-components.mjs +272 -539
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
- package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
- package/lib/_components/field/currency/currency.component.d.ts +3 -0
- package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -1
- package/lib/_components/field/percentage/percentage.component.d.ts +2 -0
- package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +1 -1
- package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +1 -1
- package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
- package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
- package/lib/_components/template/list-view/list-view.component.d.ts +8 -2
- package/lib/_components/template/simple-table-manual/helpers.d.ts +1 -1
- package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +1 -1
- package/lib/_components/widget/attachment/attachment.component.d.ts +29 -57
- package/lib/_components/widget/file-utility/file-utility.component.d.ts +2 -2
- package/lib/_components/widget/todo/todo.component.d.ts +4 -3
- package/lib/_helpers/common.d.ts +1 -1
- package/lib/_helpers/field-group-utils.d.ts +1 -1
- package/lib/_helpers/filter-utils.d.ts +1 -1
- package/lib/_helpers/formatters/common.d.ts +2 -2
- package/package.json +3 -3
|
@@ -242,7 +242,6 @@ export class FileUtilityComponent {
|
|
|
242
242
|
}
|
|
243
243
|
onAttachFiles(files) {
|
|
244
244
|
const attachmentUtils = PCore.getAttachmentUtils();
|
|
245
|
-
// @ts-ignore - second parameter pageReference for getValue method should be optional
|
|
246
245
|
const caseID = this.pConn$.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID);
|
|
247
246
|
if (files.length > 0) {
|
|
248
247
|
this.lu_bLoading$ = true;
|
|
@@ -275,7 +274,6 @@ export class FileUtilityComponent {
|
|
|
275
274
|
errorHandler() { }
|
|
276
275
|
onAttachLinks(links) {
|
|
277
276
|
const attachmentUtils = PCore.getAttachmentUtils();
|
|
278
|
-
// @ts-ignore - second parameter pageReference for getValue method should be optional
|
|
279
277
|
const caseID = this.pConn$.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID);
|
|
280
278
|
if (links.length > 0) {
|
|
281
279
|
this.lu_bLoading$ = true;
|
|
@@ -583,7 +581,6 @@ export class FileUtilityComponent {
|
|
|
583
581
|
}
|
|
584
582
|
}
|
|
585
583
|
getCaseID() {
|
|
586
|
-
// @ts-ignore - second parameter pageReference for getValue method should be optional
|
|
587
584
|
return this.pConn$.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID) || '';
|
|
588
585
|
}
|
|
589
586
|
fetchCaseAttachments(caseID) {
|
|
@@ -622,7 +619,6 @@ export class FileUtilityComponent {
|
|
|
622
619
|
return att.error ? () => this.removeFile() : null;
|
|
623
620
|
}
|
|
624
621
|
caseHasChanged() {
|
|
625
|
-
// @ts-ignore - second parameter pageReference for getValue method should be optional
|
|
626
622
|
const caseID = this.pConn$.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID);
|
|
627
623
|
if (this.currentCaseID !== caseID) {
|
|
628
624
|
this.currentCaseID = caseID;
|
|
@@ -639,4 +635,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
639
635
|
}], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i2.Utils }, { type: i0.NgZone }], propDecorators: { pConn$: [{
|
|
640
636
|
type: Input
|
|
641
637
|
}] } });
|
|
642
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy93aWRnZXQvZmlsZS11dGlsaXR5L2ZpbGUtdXRpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2ZpbGUtdXRpbGl0eS9maWxlLXV0aWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sUUFBUSxNQUFNLFlBQVksQ0FBQztBQUdsQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7QUFjeEcsTUFBTSxPQUFPLG9CQUFvQjtJQThDL0IsWUFDVSxlQUF1QyxFQUN2QyxLQUFZLEVBQ1osTUFBYztRQUZkLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTlDeEIsdUNBQXVDO1FBQ3ZDLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFFOUMsMEJBQXFCLEdBQVUsRUFBRSxDQUFDO1FBRWxDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFD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QyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzRCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBRztRQUNuQixPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BELENBQUM7SUFFRCxjQUFjO1FBQ1oscUZBQXFGO1FBQ3JGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakYsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzsrR0E1dUJVLG9CQUFvQjttR0FBcEIsb0JBQW9CLDBHQ3RCakMsMjBIQW9HQSw0ekNEaEZZLFlBQVksNEtBQUUsZUFBZSx1WUFBRSxrQkFBa0IseVdBQUUsY0FBYyxxWkFBbUIsd0JBQXdCOzs0RkFFM0csb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGtCQUFrQixjQUdoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztvSUFHL0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBOZ1pvbmUsIGZvcndhcmRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IGRvd25sb2FkIGZyb20gJ2Rvd25sb2FkanMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbmludGVyZmFjZSBGaWxlVXRpbGl0eVByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBsYWJlbD86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpbGUtdXRpbGl0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXV0aWxpdHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXV0aWxpdHkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdElucHV0TW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVVdGlsaXR5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcblxuICAvLyBGb3IgaW50ZXJhY3Rpb24gd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuXG4gIGFyRnVsbExpc3RBdHRhY2htZW50czogYW55W10gPSBbXTtcblxuICBsdV9uYW1lJCA9ICcnO1xuICBsdV9pY29uJCA9ICcnO1xuICBsdV9iTG9hZGluZyQgPSBmYWxzZTtcbiAgbHVfY291bnQkID0gMDtcbiAgbHVfYXJBY3Rpb25zJDogYW55W10gPSBbXTtcbiAgbHVfYXJJdGVtcyQ6IGFueSA9IFtdO1xuXG4gIHZhX2FySXRlbXMkOiBhbnlbXSA9IFtdO1xuXG4gIGx1X29uVmlld0FsbEZ1bmN0aW9uOiBhbnk7XG5cbiAgYlNob3dGaWxlTW9kYWwkID0gZmFsc2U7XG4gIGJTaG93TGlua01vZGFsJCA9IGZhbHNlO1xuICBiU2hvd1ZpZXdBbGxNb2RhbCQgPSBmYWxzZTtcblxuICBhckZpbGVNYWluQnV0dG9ucyQ6IGFueVtdID0gW107XG4gIGFyRmlsZVNlY29uZGFyeUJ1dHRvbnMkOiBhbnlbXSA9IFtdO1xuXG4gIGFyTGlua01haW5CdXR0b25zJDogYW55W10gPSBbXTtcbiAgYXJMaW5rU2Vjb25kYXJ5QnV0dG9ucyQ6IGFueVtdID0gW107XG5cbiAgYXJGaWxlcyQ6IGFueVtdID0gW107XG4gIGFyRmlsZUxpc3QkOiBhbnlbXSA9IFtdO1xuICByZW1vdmVGaWxlRnJvbUxpc3QkOiBhbnk7XG5cbiAgYXJMaW5rcyQ6IGFueVtdID0gW107XG4gIGFyTGlua3NMaXN0JDogYW55W10gPSBbXTtcbiAgcmVtb3ZlTGlua3NGcm9tTGlzdCQ6IGFueTtcblxuICBsaW5rX3RpdGxlJCA9ICcnO1xuICBsaW5rX3VybCQgPSAnJztcblxuICBjbG9zZVN2Z0ljb24kID0gJyc7XG5cbiAgY3VycmVudENhc2VJRCA9ICcnO1xuXG4gIGFkZEF0dGFjaG1lbnRzQWN0aW9uczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgY29uc3QgY29uZmlnUHJvcHM6IEZpbGVVdGlsaXR5UHJvcHMgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSk7XG5cbiAgICB0aGlzLmx1X25hbWUkID0gY29uZmlnUHJvcHMubGFiZWwgPz8gJyc7XG4gICAgdGhpcy5sdV9pY29uJCA9ICdwYXBlci1jbGlwJztcblxuICAgIHRoaXMuY2xvc2VTdmdJY29uJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ3RpbWVzJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICAgIHRoaXMuYWRkQXR0YWNobWVudHNBY3Rpb25zID0gW1xuICAgICAge1xuICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQWRkIGZpbGVzJywgJycsICcnKSxcbiAgICAgICAgaWQ6ICdhZGROZXdGaWxlcycsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHRoaXMuY3JlYXRlTW9kYWwoJ2FkZExvY2FsRmlsZScpXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQWRkIGxpbmtzJywgJycsICcnKSxcbiAgICAgICAgaWQ6ICdhZGROZXdMaW5rcycsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHRoaXMuY3JlYXRlTW9kYWwoJ2FkZExvY2FsTGluaycpXG4gICAgICB9XG4gICAgXTtcbiAgICAvLyBjb25zdCBvblZpZXdBbGxDYWxsYmFjayA9ICgpID0+IHRoaXMub25WaWV3QWxsKHRoaXMuYXJGdWxsTGlzdEF0dGFjaG1lbnRzKTtcblxuICAgIHRoaXMubHVfb25WaWV3QWxsRnVuY3Rpb24gPSB7IG9uQ2xpY2s6IHRoaXMub25WaWV3QWxsLmJpbmQodGhpcykgfTtcblxuICAgIHRoaXMucmVtb3ZlRmlsZUZyb21MaXN0JCA9IHsgb25DbGljazogdGhpcy5yZW1vdmVGaWxlRnJvbUxpc3QuYmluZCh0aGlzKSB9O1xuICAgIHRoaXMucmVtb3ZlTGlua3NGcm9tTGlzdCQgPSB7IG9uQ2xpY2s6IHRoaXMucmVtb3ZlTGlua3NGcm9tTGlzdC5iaW5kKHRoaXMpIH07XG5cbiAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcblxuICAgIHRoaXMuY3JlYXRlTW9kYWxCdXR0b25zKCk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnN1YnNjcmliZShcbiAgICAgIChQQ29yZS5nZXRFdmVudHMoKS5nZXRDYXNlRXZlbnQoKSBhcyBhbnkpLkNBU0VfQVRUQUNITUVOVFNfVVBEQVRFRF9GUk9NX0NBU0VWSUVXLFxuICAgICAgdGhpcy51cGRhdGVTZWxmLmJpbmQodGhpcyksXG4gICAgICAnY2FzZUF0dGFjaG1lbnRzVXBkYXRlRnJvbUNhc2V2aWV3J1xuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShcbiAgICAgIChQQ29yZS5nZXRFdmVudHMoKS5nZXRDYXNlRXZlbnQoKSBhcyBhbnkpLkNBU0VfQVRUQUNITUVOVFNfVVBEQVRFRF9GUk9NX0NBU0VWSUVXLFxuICAgICAgJ2Nhc2VBdHRhY2htZW50c1VwZGF0ZUZyb21DYXNldmlldydcbiAgICApO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgLy8gYWRkaW5nIGEgcHJvcGVydHkgdG8gdHJhY2sgaW4gY29uZmlnUHJvcHMsIHdoZW4gZXZlciB0aGUgYXR0YWNobWVudCBmaWxlIGNoYW5nZXNcbiAgICAvLyBuZWVkIHRvIHRyaWdnZXIgYSByZWRyYXdcbiAgICB0aGlzLnBDb25uJC5yZWdpc3RlckFkZGl0aW9uYWxQcm9wcyh7XG4gICAgICBsYXN0UmVmcmVzaFRpbWU6IGBAUCAke1BDb3JlLmdldENvbnN0YW50cygpLlNVTU1BUllfT0ZfQVRUQUNITUVOVFNfTEFTVF9SRUZSRVNIX1RJTUV9YFxuICAgIH0pO1xuXG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZiB8fCB0aGlzLmNhc2VIYXNDaGFuZ2VkKCkpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIG9uQXR0YWNoRmlsZXMoZmlsZXMpIHtcbiAgICBjb25zdCBhdHRhY2htZW50VXRpbHMgPSBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKTtcbiAgICAvLyBAdHMtaWdub3JlIC0gc2Vjb25kIHBhcmFtZXRlciBwYWdlUmVmZXJlbmNlIGZvciBnZXRWYWx1ZSBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgY29uc3QgY2FzZUlEID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19JRCk7XG5cbiAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sdV9iTG9hZGluZyQgPSB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGFyRmlsZXM6IGFueSA9IEFycmF5LmZyb20oZmlsZXMpO1xuXG4gICAgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgYXJGaWxlcy5tYXAoZmlsZSA9PiBhdHRhY2htZW50VXRpbHMudXBsb2FkQXR0YWNobWVudChmaWxlLCB0aGlzLm9uVXBsb2FkUHJvZ3Jlc3MsIHRoaXMuZXJyb3JIYW5kbGVyLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKSlcbiAgICApXG4gICAgICAudGhlbigoZmlsZVJlc3BvbnNlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHVwbG9hZGVkRmlsZXM6IGFueSA9IFtdO1xuICAgICAgICBmaWxlUmVzcG9uc2VzLmZvckVhY2goZmlsZVJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAoZmlsZVJlc3BvbnNlLnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcpIHtcbiAgICAgICAgICAgIHVwbG9hZGVkRmlsZXMucHVzaChmaWxlUmVzcG9uc2UudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh1cGxvYWRlZEZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAoYXR0YWNobWVudFV0aWxzLmxpbmtBdHRhY2htZW50c1RvQ2FzZShjYXNlSUQsIHVwbG9hZGVkRmlsZXMsICdGaWxlJywgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSkgYXMgUHJvbWlzZTxhbnk+KVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hBdHRhY2htZW50cygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCk7XG5cbiAgICB0aGlzLmFyRmlsZUxpc3QkID0gW107XG4gICAgdGhpcy5sdV9iTG9hZGluZyQgPSBmYWxzZTtcbiAgfVxuXG4gIHJlZnJlc2hBdHRhY2htZW50cygpIHtcbiAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgfVxuXG4gIG9uVXBsb2FkUHJvZ3Jlc3MoKSB7fVxuXG4gIGVycm9ySGFuZGxlcigpIHt9XG5cbiAgb25BdHRhY2hMaW5rcyhsaW5rcykge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRVdGlscyA9IFBDb3JlLmdldEF0dGFjaG1lbnRVdGlscygpO1xuICAgIC8vIEB0cy1pZ25vcmUgLSBzZWNvbmQgcGFyYW1ldGVyIHBhZ2VSZWZlcmVuY2UgZm9yIGdldFZhbHVlIG1ldGhvZCBzaG91bGQgYmUgb3B0aW9uYWxcbiAgICBjb25zdCBjYXNlSUQgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZShQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uQ0FTRV9JTkZPX0lEKTtcblxuICAgIGlmIChsaW5rcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmx1X2JMb2FkaW5nJCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgbGlua3NUb0F0dGFjaCA9IGxpbmtzLm1hcChsaW5rID0+ICh7XG4gICAgICB0eXBlOiAnVVJMJyxcbiAgICAgIGNhdGVnb3J5OiAnVVJMJyxcbiAgICAgIHVybDogbGluay51cmwsXG4gICAgICBuYW1lOiBsaW5rLmxpbmtUaXRsZVxuICAgIH0pKTtcblxuICAgIChhdHRhY2htZW50VXRpbHMubGlua0F0dGFjaG1lbnRzVG9DYXNlKGNhc2VJRCwgbGlua3NUb0F0dGFjaCwgJ1VSTCcsIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpIGFzIFByb21pc2U8YW55PilcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoQXR0YWNobWVudHMoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goY29uc29sZS5sb2cpO1xuICB9XG5cbiAgYWRkQXR0YWNobWVudHMoYXR0c0Zyb21SZXNwOiBhbnlbXSA9IFtdKSB7XG4gICAgdGhpcy5sdV9iTG9hZGluZyQgPSBmYWxzZTtcblxuICAgIGF0dHNGcm9tUmVzcCA9IGF0dHNGcm9tUmVzcC5tYXAocmVzcEF0dCA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkQXR0ID0ge1xuICAgICAgICAuLi5yZXNwQXR0LFxuICAgICAgICBtZXRhOiBgJHtyZXNwQXR0LmNhdGVnb3J5fSAuICR7dGhpcy51dGlscy5nZW5lcmF0ZURhdGVUaW1lKHJlc3BBdHQuY3JlYXRlVGltZSwgJ0RhdGVUaW1lLVNpbmNlJyl9LCAke3Jlc3BBdHQuY3JlYXRlZEJ5fWBcbiAgICAgIH07XG4gICAgICBpZiAodXBkYXRlZEF0dC50eXBlID09PSAnRklMRScpIHtcbiAgICAgICAgdXBkYXRlZEF0dC5uYW1lV2l0aEV4dCA9IHVwZGF0ZWRBdHQuZmlsZU5hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdXBkYXRlZEF0dDtcbiAgICB9KTtcblxuICAgIHJldHVybiBhdHRzRnJvbVJlc3A7XG4gIH1cblxuICBvblZpZXdBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5iU2hvd1ZpZXdBbGxNb2RhbCQgPSB0cnVlO1xuXG4gICAgLy8gYWRkIGNsaWNrQXdheSBsaXN0ZW5lclxuICAgIC8vIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5fY2xpY2tBd2F5LmJpbmQodGhpcykpO1xuICB9XG5cbiAgLy8gQmVsb3cgbWV0aG9kIGlzIG5vdCBuZWVkZWQsIHN0aWxsIGhhdmluZyBpdCBjb21tZW50ZWQgaW4gY2FzZSB3ZSB3YW50IGluIGZ1dHVyZVxuICAvLyBfY2xpY2tBd2F5KGV2ZW50OiBhbnkpIHtcbiAgLy8gICBsZXQgYkluUG9wVXAgPSBmYWxzZTtcblxuICAvLyAgIC8vIHJ1biB0aHJvdWdoIGxpc3Qgb2YgZWxlbWVudHMgaW4gcGF0aCwgaWYgbWVudSBub3QgaW4gdGggcGF0aCwgdGhlbiB3YW50IHRvXG4gIC8vICAgLy8gaGlkZSAodG9nZ2xlKSB0aGUgbWVudVxuICAvLyAgIGZvciAoY29uc3QgaSBpbiBldmVudC5wYXRoKSB7XG4gIC8vICAgICBpZiAoZXZlbnQucGF0aFtpXS5jbGFzc05hbWUgPT0gJ3BzZGstbW9kYWwtZmlsZS10b3AnIHx8IGV2ZW50LnBhdGhbaV0udGFnTmFtZSA9PSAnQlVUVE9OJykge1xuICAvLyAgICAgICBiSW5Qb3BVcCA9IHRydWU7XG4gIC8vICAgICAgIGJyZWFrO1xuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy8gICBpZiAoIWJJblBvcFVwKSB7XG4gIC8vICAgICB0aGlzLmJTaG93Vmlld0FsbE1vZGFsJCA9IGZhbHNlO1xuXG4gIC8vICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2NsaWNrQXdheS5iaW5kKHRoaXMpKTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICBfY2xvc2VWaWV3QWxsKCkge1xuICAgIHRoaXMuYlNob3dWaWV3QWxsTW9kYWwkID0gZmFsc2U7XG5cbiAgICAvLyB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2NsaWNrQXdheS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHJlbW92ZUZpbGVGcm9tTGlzdChpdGVtOiBhbnkpIHtcbiAgICBpZiAoaXRlbSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBhckZpbGVMaXN0ID0gdGhpcy5hckZpbGVMaXN0JDtcbiAgICAgIGNvbnN0IGl0ZW1JZCA9IGl0ZW0uaWQ7XG5cbiAgICAgIGZvciAobGV0IGZpbGVJbmRleCA9IDA7IGZpbGVJbmRleCA8IGFyRmlsZUxpc3QubGVuZ3RoOyBmaWxlSW5kZXgrKykge1xuICAgICAgICBpZiAoYXJGaWxlTGlzdFtmaWxlSW5kZXhdLmlkID09IGl0ZW1JZCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0aGUgZmlsZSBmcm9tIHRoZSBsaXN0IGFuZCByZWRyYXdcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgYXJGaWxlTGlzdC5zcGxpY2UoZmlsZUluZGV4LCAxKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUxpbmtzRnJvbUxpc3QoaXRlbTogYW55KSB7XG4gICAgY29uc3QgbG9jYWxMaW5rc0xpc3QgPSB0aGlzLmFyTGlua3NMaXN0JC5zbGljZSgpO1xuXG4gICAgaWYgKGl0ZW0gIT0gbnVsbCkge1xuICAgICAgY29uc3QgaXRlbUlkID0gaXRlbS5pZDtcblxuICAgICAgZm9yIChsZXQgbGlua0luZGV4ID0gMDsgbGlua0luZGV4IDwgbG9jYWxMaW5rc0xpc3QubGVuZ3RoOyBsaW5rSW5kZXgrKykge1xuICAgICAgICBpZiAobG9jYWxMaW5rc0xpc3RbbGlua0luZGV4XS5pZCA9PSBpdGVtSWQpIHtcbiAgICAgICAgICAvLyByZW1vdmUgdGhlIGZpbGUgZnJvbSB0aGUgbGlzdCBhbmQgcmVkcmF3XG4gICAgICAgICAgbG9jYWxMaW5rc0xpc3Quc3BsaWNlKGxpbmtJbmRleCwgMSk7XG5cbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hckxpbmtzTGlzdCQgPSBsb2NhbExpbmtzTGlzdC5zbGljZSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXROZXdMaXN0VXRpbGl0eUl0ZW1Qcm9wcyA9ICh7IGF0dCwgY2FuY2VsRmlsZSwgZG93bmxvYWRGaWxlLCBkZWxldGVGaWxlLCByZW1vdmVGaWxlIH0pID0+IHtcbiAgICBsZXQgYWN0aW9ucztcbiAgICBsZXQgaXNEb3dubG9hZGFibGUgPSBmYWxzZTtcblxuICAgIGlmIChhdHQucHJvZ3Jlc3MgJiYgYXR0LnByb2dyZXNzICE9PSAxMDApIHtcbiAgICAgIGFjdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogYENhbmNlbC0ke2F0dC5JRH1gLFxuICAgICAgICAgIHRleHQ6ICdDYW5jZWwnLFxuICAgICAgICAgIGljb246ICd0aW1lcycsXG4gICAgICAgICAgb25DbGljazogY2FuY2VsRmlsZVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoYXR0LmxpbmtzKSB7XG4gICAgICBjb25zdCBpc0ZpbGUgPSBhdHQudHlwZSA9PT0gJ0ZJTEUnO1xuICAgICAgY29uc3QgSUQgPSBhdHQuSUQucmVwbGFjZSgvXFxzL2dpLCAnJyk7XG4gICAgICBjb25zdCBhY3Rpb25zTWFwID0gbmV3IE1hcChbXG4gICAgICAgIFtcbiAgICAgICAgICAnZG93bmxvYWQnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBgZG93bmxvYWQtJHtJRH1gLFxuICAgICAgICAgICAgdGV4dDogaXNGaWxlID8gJ0Rvd25sb2FkJyA6ICdPcGVuJyxcbiAgICAgICAgICAgIGljb246IGlzRmlsZSA/ICdkb3dubG9hZCcgOiAnb3BlbicsXG4gICAgICAgICAgICBvbkNsaWNrOiBkb3dubG9hZEZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAnZGVsZXRlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYERlbGV0ZS0ke0lEfWAsXG4gICAgICAgICAgICB0ZXh0OiAnRGVsZXRlJyxcbiAgICAgICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgICAgICBvbkNsaWNrOiBkZWxldGVGaWxlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICBdKTtcbiAgICAgIGFjdGlvbnMgPSBbXTtcbiAgICAgIGFjdGlvbnNNYXAuZm9yRWFjaCgoYWN0aW9uLCBhY3Rpb25LZXkpID0+IHtcbiAgICAgICAgaWYgKGF0dC5saW5rc1thY3Rpb25LZXldKSB7XG4gICAgICAgICAgYWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgaXNEb3dubG9hZGFibGUgPSBhdHQubGlua3MuZG93bmxvYWQ7XG4gICAgfSBlbHNlIGlmIChhdHQuZXJyb3IpIHtcbiAgICAgIGFjdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogYFJlbW92ZS0ke2F0dC5JRH1gLFxuICAgICAgICAgIHRleHQ6ICdSZW1vdmUnLFxuICAgICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgICAgb25DbGljazogcmVtb3ZlRmlsZVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpZDogYXR0LklELFxuICAgICAgdmlzdWFsOiB7XG4gICAgICAgIGljb246IHRoaXMudXRpbHMuZ2V0SWNvbkZvckF0dGFjaG1lbnQoYXR0KSxcbiAgICAgICAgcHJvZ3Jlc3M6IGF0dC5wcm9ncmVzcyA9PSAxMDAgPyB1bmRlZmluZWQgOiBhdHQucHJvZ3Jlc3NcbiAgICAgIH0sXG4gICAgICBwcmltYXJ5OiB7XG4gICAgICAgIHR5cGU6IGF0dC50eXBlLFxuICAgICAgICBuYW1lOiBhdHQubmFtZSxcbiAgICAgICAgaWNvbjogJ3RyYXNoJyxcbiAgICAgICAgY2xpY2s6IHJlbW92ZUZpbGVcbiAgICAgIH0sXG4gICAgICBzZWNvbmRhcnk6IHtcbiAgICAgICAgdGV4dDogYXR0Lm1ldGFcbiAgICAgIH0sXG4gICAgICBhY3Rpb25zXG4gICAgfTtcbiAgfTtcblxuICBnZXRMaXN0VXRpbGl0eUl0ZW1Qcm9wcyA9ICh7IGF0dCwgY2FuY2VsRmlsZSwgZG93bmxvYWRGaWxlLCBkZWxldGVGaWxlLCByZW1vdmVGaWxlIH0pID0+IHtcbiAgICBsZXQgYWN0aW9ucztcbiAgICBsZXQgaXNEb3dubG9hZGFibGUgPSBmYWxzZTtcblxuICAgIGlmIChhdHQucHJvZ3Jlc3MgJiYgYXR0LnByb2dyZXNzICE9PSAxMDApIHtcbiAgICAgIGFjdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogYENhbmNlbC0ke2F0dC5JRH1gLFxuICAgICAgICAgIHRleHQ6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdDYW5jZWwnLCAnJywgJycpLFxuICAgICAgICAgIGljb246ICd0aW1lcycsXG4gICAgICAgICAgb25DbGljazogY2FuY2VsRmlsZVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoYXR0LmxpbmtzKSB7XG4gICAgICBjb25zdCBpc0ZpbGUgPSBhdHQudHlwZSA9PT0gJ0ZJTEUnO1xuICAgICAgY29uc3QgSUQgPSBhdHQuSUQucmVwbGFjZSgvXFxzL2dpLCAnJyk7XG4gICAgICBjb25zdCBhY3Rpb25zTWFwID0gbmV3IE1hcChbXG4gICAgICAgIFtcbiAgICAgICAgICAnZG93bmxvYWQnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBgZG93bmxvYWQtJHtJRH1gLFxuICAgICAgICAgICAgdGV4dDogaXNGaWxlID8gdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0Rvd25sb2FkJywgJycsICcnKSA6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdPcGVuJywgJycsICcnKSxcbiAgICAgICAgICAgIGljb246IGlzRmlsZSA/ICdkb3dubG9hZCcgOiAnb3BlbicsXG4gICAgICAgICAgICBvbkNsaWNrOiBkb3dubG9hZEZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAnZGVsZXRlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYERlbGV0ZS0ke0lEfWAsXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnRGVsZXRlJywgJycsICcnKSxcbiAgICAgICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgICAgICBvbkNsaWNrOiBkZWxldGVGaWxlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICBdKTtcbiAgICAgIGFjdGlvbnMgPSBbXTtcbiAgICAgIGFjdGlvbnNNYXAuZm9yRWFjaCgoYWN0aW9uLCBhY3Rpb25LZXkpID0+IHtcbiAgICAgICAgaWYgKGF0dC5saW5rc1thY3Rpb25LZXldKSB7XG4gICAgICAgICAgYWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgaXNEb3dubG9hZGFibGUgPSBhdHQubGlua3MuZG93bmxvYWQ7XG4gICAgfSBlbHNlIGlmIChhdHQuZXJyb3IpIHtcbiAgICAgIGFjdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogYFJlbW92ZS0ke2F0dC5JRH1gLFxuICAgICAgICAgIHRleHQ6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdSZW1vdmUnLCAnJywgJycpLFxuICAgICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgICAgb25DbGljazogcmVtb3ZlRmlsZVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpZDogYXR0LklELFxuICAgICAgdmlzdWFsOiB7XG4gICAgICAgIGljb246IHRoaXMudXRpbHMuZ2V0SWNvbkZvckF0dGFjaG1lbnQoYXR0KSxcbiAgICAgICAgcHJvZ3Jlc3M6IGF0dC5wcm9ncmVzcyA9PSAxMDAgPyB1bmRlZmluZWQgOiBhdHQucHJvZ3Jlc3NcbiAgICAgIH0sXG4gICAgICBwcmltYXJ5OiB7XG4gICAgICAgIHR5cGU6IGF0dC50eXBlLFxuICAgICAgICBuYW1lOiBhdHQubmFtZSxcbiAgICAgICAgaWNvbjogJ29wZW4nLFxuICAgICAgICBjbGljazogZG93bmxvYWRGaWxlXG4gICAgICB9LFxuICAgICAgc2Vjb25kYXJ5OiB7XG4gICAgICAgIHRleHQ6IGF0dC5tZXRhXG4gICAgICB9LFxuICAgICAgYWN0aW9uc1xuICAgIH07XG4gIH07XG5cbiAgX2FkZExpbmsoKSB7XG4gICAgLy8gY29weSBsaXN0IGxvY2FsbHlcbiAgICBjb25zdCBsb2NhbExpc3QgPSB0aGlzLmFyTGlua3NMaXN0JC5zbGljZSgpO1xuXG4gICAgY29uc3QgdXJsID0gdGhpcy5saW5rX3VybCQ7XG5cbiAgICBpZiAoIS9eKGh0dHB8aHR0cHMpOlxcL1xcLy8udGVzdCh0aGlzLmxpbmtfdXJsJCkpIHtcbiAgICAgIHRoaXMubGlua191cmwkID0gYGh0dHA6Ly8ke3RoaXMubGlua191cmwkfWA7XG4gICAgfVxuXG4gICAgLy8gbGlzdCBmb3IgZGlzcGxheVxuICAgIGxldCBvTGluazogYW55ID0ge307XG4gICAgb0xpbmsuaWNvbiA9ICdjaGFpbic7XG5cbiAgICBvTGluay5JRCA9IGAke25ldyBEYXRlKCkuZ2V0VGltZSgpfWA7XG5cbiAgICBvTGluayA9IHRoaXMuZ2V0TmV3TGlzdFV0aWxpdHlJdGVtUHJvcHMoe1xuICAgICAgYXR0OiBvTGluayxcbiAgICAgIGRvd25sb2FkRmlsZTogbnVsbCxcbiAgICAgIGNhbmNlbEZpbGU6IG51bGwsXG4gICAgICBkZWxldGVGaWxlOiBudWxsLFxuICAgICAgcmVtb3ZlRmlsZTogbnVsbFxuICAgIH0pO1xuXG4gICAgb0xpbmsudHlwZSA9ICdVUkwnO1xuICAgIG9MaW5rLnByaW1hcnkudHlwZSA9IG9MaW5rLnR5cGU7XG4gICAgb0xpbmsudmlzdWFsLmljb24gPSAnY2hhaW4nO1xuICAgIG9MaW5rLnByaW1hcnkubmFtZSA9IHRoaXMubGlua190aXRsZSQ7XG4gICAgb0xpbmsucHJpbWFyeS5pY29uID0gJ29wZW4nO1xuICAgIG9MaW5rLnNlY29uZGFyeS50ZXh0ID0gdXJsO1xuXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIC8vIG5lZWQgdG8gY3JlYXRlIGEgbmV3IGFycmF5IG9yIHN1bW1hcnkgbGlzdCB3b24ndCBkZXRlY3QgY2hhbmdlc1xuICAgICAgdGhpcy5hckxpbmtzTGlzdCQgPSBsb2NhbExpc3Quc2xpY2UoKTtcbiAgICAgIHRoaXMuYXJMaW5rc0xpc3QkLnB1c2gob0xpbmspO1xuXG4gICAgICAvLyBsaXN0IGZvciBhY3R1YWxseSBhdHRhY2htZW50c1xuICAgICAgY29uc3QgbGluazogYW55ID0ge307XG4gICAgICBsaW5rLmlkID0gb0xpbmsuaWQ7XG4gICAgICBsaW5rLmxpbmtUaXRsZSA9IHRoaXMubGlua190aXRsZSQ7XG4gICAgICBsaW5rLnR5cGUgPSBvTGluay50eXBlO1xuICAgICAgbGluay51cmwgPSB1cmw7XG5cbiAgICAgIHRoaXMuYXJMaW5rcyQucHVzaChsaW5rKTtcblxuICAgICAgLy8gY2xlYXIgdmFsdWVzXG4gICAgICB0aGlzLmxpbmtfdGl0bGUkID0gJyc7XG4gICAgICB0aGlzLmxpbmtfdXJsJCA9ICcnO1xuICAgIH0pO1xuICB9XG5cbiAgX2NoYW5nZVRpdGxlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmxpbmtfdGl0bGUkID0gZXZlbnQuc3JjRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIF9jaGFuZ2VVcmwoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubGlua191cmwkID0gZXZlbnQuc3JjRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIGRvd25sb2FkRmlsZShhdHQ6IGFueSkge1xuICAgIGNvbnN0IGF0dGFjaFV0aWxzID0gUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCk7XG4gICAgY29uc3QgeyBJRCwgbmFtZSwgZXh0ZW5zaW9uLCB0eXBlIH0gPSBhdHQ7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG5cbiAgICBhdHRhY2hVdGlsc1xuICAgICAgLy8gQHRzLWlnbm9yZSAtIDNyZCBwYXJhbWV0ZXIgXCJyZXNwb25zZUVuY29kaW5nXCIgaXMgb3B0aW9uYWxcbiAgICAgIC5kb3dubG9hZEF0dGFjaG1lbnQoSUQsIGNvbnRleHQpXG4gICAgICAudGhlbigoY29udGVudDogYW55KSA9PiB7XG4gICAgICAgIGlmICh0eXBlID09PSAnRklMRScpIHtcbiAgICAgICAgICB0aGlzLmZpbGVEb3dubG9hZChjb250ZW50LmRhdGEsIG5hbWUsIGV4dGVuc2lvbik7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1VSTCcpIHtcbiAgICAgICAgICBsZXQgeyBkYXRhIH0gPSBjb250ZW50O1xuICAgICAgICAgIGlmICghL14oaHR0cHxodHRwcyk6XFwvXFwvLy50ZXN0KGRhdGEpKSB7XG4gICAgICAgICAgICBkYXRhID0gYC8vJHtkYXRhfWA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHdpbmRvdy5vcGVuKGNvbnRlbnQuZGF0YSwgJ19ibGFuaycpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICB9XG5cbiAgZmlsZURvd25sb2FkID0gKGRhdGEsIGZpbGVOYW1lLCBleHQpID0+IHtcbiAgICBjb25zdCBmaWxlID0gZXh0ID8gYCR7ZmlsZU5hbWV9LiR7ZXh0fWAgOiBmaWxlTmFtZTtcbiAgICBkb3dubG9hZChhdG9iKGRhdGEpLCBmaWxlKTtcbiAgfTtcblxuICBjYW5jZWxGaWxlKCkge1xuICAgIGFsZXJ0KCdjYW5jZWwnKTtcbiAgfVxuXG4gIGRlbGV0ZUZpbGUoYXR0OiBhbnkpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGF0dGFjaFV0aWxzID0gUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCk7XG4gICAgICBjb25zdCB7IElEIH0gPSBhdHQ7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcblxuICAgICAgYXR0YWNoVXRpbHNcbiAgICAgICAgLmRlbGV0ZUF0dGFjaG1lbnQoSUQsIGNvbnRleHQpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICAgICAgICAvLyBsZXQgbmV3QXR0YWNobWVudHM7XG4gICAgICAgICAgLy8gc2V0QXR0YWNobWVudHMoKGN1cnJlbnQpID0+IHtcbiAgICAgICAgICAvLyAgIG5ld0F0dGFjaG1lbnRzID0gY3VycmVudC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuSUQgIT09IElEKTtcbiAgICAgICAgICAvLyAgIHJldHVybiBuZXdBdHRhY2htZW50cztcbiAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAvLyBpZiAoY2FsbGJhY2tGbikge1xuICAgICAgICAgIC8vICAgY2FsbGJhY2tGbihuZXdBdHRhY2htZW50cyk7XG4gICAgICAgICAgLy8gfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVGaWxlKCkge1xuICAgIGFsZXJ0KCdyZW1vdmUnKTtcbiAgfVxuXG4gIHJlbW92ZU5ld0ZpbGUoKSB7XG4gICAgYWxlcnQoJ3JlbW92ZScpO1xuICB9XG5cbiAgY3JlYXRlTW9kYWwobW9kYWxUeXBlOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKG1vZGFsVHlwZSkge1xuICAgICAgY2FzZSAnYWRkTG9jYWxGaWxlJzpcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmJTaG93RmlsZU1vZGFsJCA9IHRydWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWRkTG9jYWxMaW5rJzpcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmJTaG93TGlua01vZGFsJCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZU1vZGFsQnV0dG9ucygpIHtcbiAgICB0aGlzLmFyRmlsZU1haW5CdXR0b25zJC5wdXNoKHsgYWN0aW9uSUQ6ICdhdHRhY2gnLCBqc0FjdGlvbjogJ2F0dGFjaEZpbGVzJywgbmFtZTogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0F0dGFjaCBmaWxlcycsICcnLCAnJykgfSk7XG4gICAgdGhpcy5hckZpbGVTZWNvbmRhcnlCdXR0b25zJC5wdXNoKHsgYWN0aW9uSUQ6ICdjYW5jZWwnLCBqc0FjdGlvbjogJ2NhbmNlbCcsIG5hbWU6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdDYW5jZWwnLCAnJywgJycpIH0pO1xuXG4gICAgdGhpcy5hckxpbmtNYWluQnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnYXR0YWNoJywganNBY3Rpb246ICdhdHRhY2hMaW5rcycsIG5hbWU6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBdHRhY2ggbGlua3MnLCAnJywgJycpIH0pO1xuICAgIHRoaXMuYXJMaW5rU2Vjb25kYXJ5QnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnY2FuY2VsJywganNBY3Rpb246ICdjYW5jZWwnLCBuYW1lOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQ2FuY2VsJywgJycsICcnKSB9KTtcbiAgfVxuXG4gIHVwbG9hZE15RmlsZXMoJGV2ZW50KSB7XG4gICAgLy8gYWxlcnQoJGV2ZW50LnRhcmdldC5maWxlc1swXSk7IC8vIG91dHB1dHMgdGhlIGZpcnN0IGZpbGVcbiAgICB0aGlzLmFyRmlsZXMkID0gdGhpcy5nZXRGaWxlcygkZXZlbnQudGFyZ2V0LmZpbGVzKTtcblxuICAgIC8vIGNvbnZlcnQgRmlsZUxpc3QgdG8gYW4gYXJyYXlcbiAgICBjb25zdCBteUZpbGVzID0gQXJyYXkuZnJvbSh0aGlzLmFyRmlsZXMkKTtcblxuICAgIHRoaXMuYXJGaWxlTGlzdCQgPSBteUZpbGVzLm1hcChhdHQgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV3TGlzdFV0aWxpdHlJdGVtUHJvcHMoe1xuICAgICAgICBhdHQsXG4gICAgICAgIGRvd25sb2FkRmlsZTogIWF0dC5wcm9ncmVzcyA/ICgpID0+IHRoaXMuZG93bmxvYWRGaWxlKGF0dCkgOiBudWxsLFxuICAgICAgICBjYW5jZWxGaWxlOiBhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmNhbmNlbEZpbGUoKSA6IG51bGwsXG4gICAgICAgIGRlbGV0ZUZpbGU6ICFhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmRlbGV0ZUZpbGUoYXR0KSA6IG51bGwsXG4gICAgICAgIHJlbW92ZUZpbGU6IGF0dC5lcnJvciA/ICgpID0+IHRoaXMucmVtb3ZlTmV3RmlsZSgpIDogbnVsbFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRGaWxlcyhhckZpbGVzOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5zZXROZXdGaWxlcyhhckZpbGVzKTtcbiAgfVxuXG4gIHNldE5ld0ZpbGVzKGFyRmlsZXMpIHtcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBhckZpbGVzKSB7XG4gICAgICBpZiAoIXRoaXMudmFsaWRhdGVNYXhTaXplKGZpbGUsIDUpKSB7XG4gICAgICAgIGZpbGUuZXJyb3IgPSB0cnVlO1xuICAgICAgICBmaWxlLm1ldGEgPSAnRmlsZSBpcyB0b28gYmlnLiBNYXggYWxsb3dlZCBzaXplIGlzIDVNQi4nO1xuICAgICAgfVxuICAgICAgZmlsZS5taW1lVHlwZSA9IGZpbGUudHlwZTtcbiAgICAgIGZpbGUuaWNvbiA9IHRoaXMudXRpbHMuZ2V0SWNvbkZyb21GaWxlVHlwZShmaWxlLnR5cGUpO1xuICAgICAgZmlsZS5JRCA9IGAke25ldyBEYXRlKCkuZ2V0VGltZSgpfUkke2luZGV4fWA7XG4gICAgICBpbmRleCsrO1xuICAgIH1cblxuICAgIHJldHVybiBhckZpbGVzO1xuICB9XG5cbiAgdmFsaWRhdGVNYXhTaXplKGZpbGVPYmosIG1heFNpemVJbk1CKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmlsZVNpemUgPSAoZmlsZU9iai5zaXplIC8gMTA0ODU3NikudG9GaXhlZCgyKTtcbiAgICByZXR1cm4gZmlsZVNpemUgPCBtYXhTaXplSW5NQjtcbiAgfVxuXG4gIG9uRmlsZUFjdGlvbkJ1dHRvbkNsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBtb2RhbCBidXR0b25zXG4gICAgc3dpdGNoIChldmVudC5hY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2NhbmNlbCc6XG4gICAgICAgIHRoaXMuYlNob3dGaWxlTW9kYWwkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhck91dEZpbGVzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXR0YWNoRmlsZXMnOlxuICAgICAgICB0aGlzLmJTaG93RmlsZU1vZGFsJCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uQXR0YWNoRmlsZXModGhpcy5hckZpbGVzJCk7XG5cbiAgICAgICAgdGhpcy5jbGVhck91dEZpbGVzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb25MaW5rQWN0aW9uQnV0dG9uQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIC8vIG1vZGFsIGJ1dHRvbnNcbiAgICBzd2l0Y2ggKGV2ZW50LmFjdGlvbikge1xuICAgICAgY2FzZSAnY2FuY2VsJzpcbiAgICAgICAgdGhpcy5iU2hvd0xpbmtNb2RhbCQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNsZWFyT3V0TGlua3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhdHRhY2hMaW5rcyc6XG4gICAgICAgIHRoaXMuYlNob3dMaW5rTW9kYWwkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25BdHRhY2hMaW5rcyh0aGlzLmFyTGlua3MkKTtcblxuICAgICAgICB0aGlzLmNsZWFyT3V0TGlua3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjbGVhck91dEZpbGVzKCkge1xuICAgIHRoaXMuYXJGaWxlTGlzdCQgPSBbXTtcbiAgICB0aGlzLmFyRmlsZXMkID0gW107XG4gIH1cblxuICBjbGVhck91dExpbmtzKCkge1xuICAgIHRoaXMuYXJMaW5rc0xpc3QkID0gW107XG4gICAgdGhpcy5hckxpbmtzJCA9IFtdO1xuICAgIHRoaXMubGlua190aXRsZSQgPSAnJztcbiAgICB0aGlzLmxpbmtfdXJsJCA9ICcnO1xuICB9XG5cbiAgYWRkQUxpbmsoKSB7fVxuXG4gIF9maWVsZE9uQ2hhbmdlTGluayhldmVudDogYW55KSB7XG4gICAgdGhpcy5saW5rX3RpdGxlJCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIF9maWVsZE9uQ2hhbmdlVVJMKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmxpbmtfdXJsJCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKSB7XG4gICAgY29uc3QgY2FzZUlEID0gdGhpcy5nZXRDYXNlSUQoKTtcblxuICAgIGlmIChjYXNlSUQpIHtcbiAgICAgIHRoaXMubHVfYkxvYWRpbmckID0gdHJ1ZTtcblxuICAgICAgdGhpcy5mZXRjaENhc2VBdHRhY2htZW50cyhjYXNlSUQpXG4gICAgICAgIC50aGVuKHJlc3AgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlQXR0YWNobWVudHNSZXNwb25zZShyZXNwKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubHVfYkxvYWRpbmckID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldENhc2VJRCgpIHtcbiAgICAvLyBAdHMtaWdub3JlIC0gc2Vjb25kIHBhcmFtZXRlciBwYWdlUmVmZXJlbmNlIGZvciBnZXRWYWx1ZSBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgcmV0dXJuIHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fSUQpIHx8ICcnO1xuICB9XG5cbiAgZmV0Y2hDYXNlQXR0YWNobWVudHMoY2FzZUlEKSB7XG4gICAgY29uc3QgYXR0YWNobWVudFV0aWxzID0gUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCk7XG4gICAgcmV0dXJuIGF0dGFjaG1lbnRVdGlscy5nZXRDYXNlQXR0YWNobWVudHMoY2FzZUlELCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKTtcbiAgfVxuXG4gIGhhbmRsZUF0dGFjaG1lbnRzUmVzcG9uc2UocmVzcCkge1xuICAgIHRoaXMuYXJGdWxsTGlzdEF0dGFjaG1lbnRzID0gdGhpcy5hZGRBdHRhY2htZW50cyhyZXNwKTtcbiAgICB0aGlzLmx1X2NvdW50JCA9IHRoaXMuYXJGdWxsTGlzdEF0dGFjaG1lbnRzLmxlbmd0aDtcbiAgICB0aGlzLmx1X2FyQWN0aW9ucyQgPSB0aGlzLmFkZEF0dGFjaG1lbnRzQWN0aW9ucztcblxuICAgIHRoaXMubHVfYXJJdGVtcyQgPSB0aGlzLmdldFV0aWxpdHlJdGVtcyh0aGlzLmFyRnVsbExpc3RBdHRhY2htZW50cy5zbGljZSgwLCAzKSk7XG4gICAgdGhpcy52YV9hckl0ZW1zJCA9IHRoaXMuZ2V0VXRpbGl0eUl0ZW1zKHRoaXMuYXJGdWxsTGlzdEF0dGFjaG1lbnRzKTtcbiAgfVxuXG4gIGdldFV0aWxpdHlJdGVtcyhhdHRhY2htZW50cykge1xuICAgIHJldHVybiBhdHRhY2htZW50cy5tYXAodGhpcy5tYXBBdHRhY2htZW50VG9VdGlsaXR5SXRlbS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIG1hcEF0dGFjaG1lbnRUb1V0aWxpdHlJdGVtKGF0dCkge1xuICAgIHJldHVybiB0aGlzLmdldExpc3RVdGlsaXR5SXRlbVByb3BzKHtcbiAgICAgIGF0dCxcbiAgICAgIGRvd25sb2FkRmlsZTogdGhpcy5nZXREb3dubG9hZEZ1bmN0aW9uKGF0dCksXG4gICAgICBjYW5jZWxGaWxlOiB0aGlzLmdldENhbmNlbEZ1bmN0aW9uKGF0dCksXG4gICAgICBkZWxldGVGaWxlOiB0aGlzLmdldERlbGV0ZUZ1bmN0aW9uKGF0dCksXG4gICAgICByZW1vdmVGaWxlOiB0aGlzLmdldFJlbW92ZUZ1bmN0aW9uKGF0dClcbiAgICB9KTtcbiAgfVxuXG4gIGdldERvd25sb2FkRnVuY3Rpb24oYXR0KSB7XG4gICAgcmV0dXJuICFhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmRvd25sb2FkRmlsZShhdHQpIDogbnVsbDtcbiAgfVxuXG4gIGdldENhbmNlbEZ1bmN0aW9uKGF0dCkge1xuICAgIHJldHVybiBhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmNhbmNlbEZpbGUoKSA6IG51bGw7XG4gIH1cblxuICBnZXREZWxldGVGdW5jdGlvbihhdHQpIHtcbiAgICByZXR1cm4gIWF0dC5wcm9ncmVzcyA/ICgpID0+IHRoaXMuZGVsZXRlRmlsZShhdHQpIDogbnVsbDtcbiAgfVxuXG4gIGdldFJlbW92ZUZ1bmN0aW9uKGF0dCkge1xuICAgIHJldHVybiBhdHQuZXJyb3IgPyAoKSA9PiB0aGlzLnJlbW92ZUZpbGUoKSA6IG51bGw7XG4gIH1cblxuICBjYXNlSGFzQ2hhbmdlZCgpOiBib29sZWFuIHtcbiAgICAvLyBAdHMtaWdub3JlIC0gc2Vjb25kIHBhcmFtZXRlciBwYWdlUmVmZXJlbmNlIGZvciBnZXRWYWx1ZSBtZXRob2Qgc2hvdWxkIGJlIG9wdGlvbmFsXG4gICAgY29uc3QgY2FzZUlEID0gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19JRCk7XG4gICAgaWYgKHRoaXMuY3VycmVudENhc2VJRCAhPT0gY2FzZUlEKSB7XG4gICAgICB0aGlzLmN1cnJlbnRDYXNlSUQgPSBjYXNlSUQ7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXY+XG4gIDxjb21wb25lbnQtbWFwcGVyXG4gICAgbmFtZT1cIkxpc3RVdGlsaXR5XCJcbiAgICBbcHJvcHNdPVwie1xuICAgICAgbmFtZSQ6IGx1X25hbWUkLFxuICAgICAgaWNvbiQ6IGx1X2ljb24kLFxuICAgICAgYkxvYWRpbmckOiBsdV9iTG9hZGluZyQsXG4gICAgICBjb3VudCQ6IGx1X2NvdW50JCxcbiAgICAgIGFyQWN0aW9ucyQ6IGx1X2FyQWN0aW9ucyQsXG4gICAgICBhckl0ZW1zJDogbHVfYXJJdGVtcyQsXG4gICAgICBvblZpZXdBbGwkOiBsdV9vblZpZXdBbGxGdW5jdGlvbixcbiAgICAgIG1lbnVJY29uT3ZlcnJpZGVBY3Rpb24kOiByZW1vdmVGaWxlRnJvbUxpc3QkXG4gICAgfVwiXG4gID48L2NvbXBvbmVudC1tYXBwZXI+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImJTaG93RmlsZU1vZGFsJFwiIGNsYXNzPVwicHNkay1kaWFsb2ctYmFja2dyb3VuZFwiPlxuICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1maWxlLXRvcFwiPlxuICAgIDxoMz57eyBwQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0FkZCBsb2NhbCBmaWxlcycsICcnLCAnJykgfX08L2gzPlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWZpbGUtc2VsZWN0b3JcIj5cbiAgICAgICAgPGlucHV0IGhpZGRlbiB0eXBlPVwiZmlsZVwiIG11bHRpcGxlICN1cGxvYWRlciAoY2hhbmdlKT1cInVwbG9hZE15RmlsZXMoJGV2ZW50KVwiIC8+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInVwbG9hZGVyLmNsaWNrKClcIj57eyBwQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ1VwbG9hZCBmaWxlKHMpJywgJycsICcnKSB9fTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgIG5hbWU9XCJTdW1tYXJ5TGlzdFwiXG4gICAgICAgIFtwcm9wc109XCJ7IGFySXRlbXMkOiBhckZpbGVMaXN0JCwgbWVudUljb25PdmVycmlkZSQ6ICd0cmFzaCcsIG1lbnVJY29uT3ZlcnJpZGVBY3Rpb24kOiByZW1vdmVGaWxlRnJvbUxpc3QkIH1cIlxuICAgICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICA8L2Rpdj5cblxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICBuYW1lPVwiQWN0aW9uQnV0dG9uc1wiXG4gICAgICBbcHJvcHNdPVwieyBhck1haW5CdXR0b25zJDogYXJGaWxlTWFpbkJ1dHRvbnMkLCBhclNlY29uZGFyeUJ1dHRvbnMkOiBhckZpbGVTZWNvbmRhcnlCdXR0b25zJCB9XCJcbiAgICAgIFtwYXJlbnRdPVwidGhpc1wiXG4gICAgICBbb3V0cHV0RXZlbnRzXT1cInsgYWN0aW9uQnV0dG9uQ2xpY2s6IG9uRmlsZUFjdGlvbkJ1dHRvbkNsaWNrIH1cIlxuICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJiU2hvd0xpbmtNb2RhbCRcIiBjbGFzcz1cInBzZGstZGlhbG9nLWJhY2tncm91bmRcIj5cbiAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtbGluay10b3BcIj5cbiAgICA8aDM+e3sgcENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBZGQgbGlua3MnLCAnJywgJycpIH19PC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1saW5rLWVudHJ5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmtzLXJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWxpbmtzLXR3by1jb2x1bW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmstZGF0YVwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxpbmsgdGl0bGU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiByZXF1aXJlZD1cInRydWVcIiAoY2hhbmdlKT1cIl9maWVsZE9uQ2hhbmdlTGluaygkZXZlbnQpXCIgW3ZhbHVlXT1cImxpbmtfdGl0bGUkXCIgLz5cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtbGluay1kYXRhXCI+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInBzZGstZnVsbC13aWR0aFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VVJMPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgcmVxdWlyZWQ9XCJ0cnVlXCIgKGNoYW5nZSk9XCJfZmllbGRPbkNoYW5nZVVSTCgkZXZlbnQpXCIgW3ZhbHVlXT1cImxpbmtfdXJsJFwiIC8+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmstYWRkXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJfYWRkTGluaygpXCI+e3sgcENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBZGQgbGluaycsICcnLCAnJykgfX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICAgICBuYW1lPVwiU3VtbWFyeUxpc3RcIlxuICAgICAgICAgIFtwcm9wc109XCJ7IGFySXRlbXMkOiBhckxpbmtzTGlzdCQsIG1lbnVJY29uT3ZlcnJpZGUkOiAndHJhc2gnLCBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJDogcmVtb3ZlTGlua3NGcm9tTGlzdCQgfVwiXG4gICAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICBuYW1lPVwiQWN0aW9uQnV0dG9uc1wiXG4gICAgICBbcHJvcHNdPVwieyBhck1haW5CdXR0b25zJDogYXJMaW5rTWFpbkJ1dHRvbnMkLCBhclNlY29uZGFyeUJ1dHRvbnMkOiBhckxpbmtTZWNvbmRhcnlCdXR0b25zJCB9XCJcbiAgICAgIFtwYXJlbnRdPVwidGhpc1wiXG4gICAgICBbb3V0cHV0RXZlbnRzXT1cInsgYWN0aW9uQnV0dG9uQ2xpY2s6IG9uTGlua0FjdGlvbkJ1dHRvbkNsaWNrIH1cIlxuICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJiU2hvd1ZpZXdBbGxNb2RhbCRcIiBjbGFzcz1cInBzZGstZGlhbG9nLWJhY2tncm91bmRcIj5cbiAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtZmlsZS10b3BcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay12aWV3LWFsbC1oZWFkZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoMz57eyBwQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0F0dGFjaG1lbnRzJywgJycsICcnKSB9fTwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJfY2xvc2VWaWV3QWxsKClcIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwicHNkay11dGlsaXR5LWNhcmQtYWN0aW9ucy1zdmctaWNvblwiIHNyYz1cInt7IGNsb3NlU3ZnSWNvbiQgfX1cIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLXZpZXctYWxsLWJvZHlcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJTdW1tYXJ5TGlzdFwiIFtwcm9wc109XCJ7IGFySXRlbXMkOiB2YV9hckl0ZW1zJCwgbWVudUljb25PdmVycmlkZUFjdGlvbiQ6IHJlbW92ZUxpbmtzRnJvbUxpc3QkIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
638
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlsaXR5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy93aWRnZXQvZmlsZS11dGlsaXR5L2ZpbGUtdXRpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2ZpbGUtdXRpbGl0eS9maWxlLXV0aWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQVUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sUUFBUSxNQUFNLFlBQVksQ0FBQztBQUdsQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7Ozs7QUFjeEcsTUFBTSxPQUFPLG9CQUFvQjtJQThDL0IsWUFDVSxlQUF1QyxFQUN2QyxLQUFZLEVBQ1osTUFBYztRQUZkLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTlDeEIsdUNBQXVDO1FBQ3ZDLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFFOUMsMEJBQXFCLEdBQVUsRUFBRSxDQUFDO1FBRWxDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFD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QUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzRCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBRztRQUNuQixPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BELENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOytHQXh1QlUsb0JBQW9CO21HQUFwQixvQkFBb0IsMEdDdEJqQywyMEhBb0dBLDR6Q0RoRlksWUFBWSw0S0FBRSxlQUFlLHVZQUFFLGtCQUFrQix5V0FBRSxjQUFjLHFaQUFtQix3QkFBd0I7OzRGQUUzRyxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBR2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO29JQUcvRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE5nWm9uZSwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgZG93bmxvYWQgZnJvbSAnZG93bmxvYWRqcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIEZpbGVVdGlsaXR5UHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIGxhYmVsPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmlsZS11dGlsaXR5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXRpbGl0eS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXRpbGl0eS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVV0aWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuXG4gIC8vIEZvciBpbnRlcmFjdGlvbiB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG5cbiAgYXJGdWxsTGlzdEF0dGFjaG1lbnRzOiBhbnlbXSA9IFtdO1xuXG4gIGx1X25hbWUkID0gJyc7XG4gIGx1X2ljb24kID0gJyc7XG4gIGx1X2JMb2FkaW5nJCA9IGZhbHNlO1xuICBsdV9jb3VudCQgPSAwO1xuICBsdV9hckFjdGlvbnMkOiBhbnlbXSA9IFtdO1xuICBsdV9hckl0ZW1zJDogYW55ID0gW107XG5cbiAgdmFfYXJJdGVtcyQ6IGFueVtdID0gW107XG5cbiAgbHVfb25WaWV3QWxsRnVuY3Rpb246IGFueTtcblxuICBiU2hvd0ZpbGVNb2RhbCQgPSBmYWxzZTtcbiAgYlNob3dMaW5rTW9kYWwkID0gZmFsc2U7XG4gIGJTaG93Vmlld0FsbE1vZGFsJCA9IGZhbHNlO1xuXG4gIGFyRmlsZU1haW5CdXR0b25zJDogYW55W10gPSBbXTtcbiAgYXJGaWxlU2Vjb25kYXJ5QnV0dG9ucyQ6IGFueVtdID0gW107XG5cbiAgYXJMaW5rTWFpbkJ1dHRvbnMkOiBhbnlbXSA9IFtdO1xuICBhckxpbmtTZWNvbmRhcnlCdXR0b25zJDogYW55W10gPSBbXTtcblxuICBhckZpbGVzJDogYW55W10gPSBbXTtcbiAgYXJGaWxlTGlzdCQ6IGFueVtdID0gW107XG4gIHJlbW92ZUZpbGVGcm9tTGlzdCQ6IGFueTtcblxuICBhckxpbmtzJDogYW55W10gPSBbXTtcbiAgYXJMaW5rc0xpc3QkOiBhbnlbXSA9IFtdO1xuICByZW1vdmVMaW5rc0Zyb21MaXN0JDogYW55O1xuXG4gIGxpbmtfdGl0bGUkID0gJyc7XG4gIGxpbmtfdXJsJCA9ICcnO1xuXG4gIGNsb3NlU3ZnSWNvbiQgPSAnJztcblxuICBjdXJyZW50Q2FzZUlEID0gJyc7XG5cbiAgYWRkQXR0YWNobWVudHNBY3Rpb25zOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHMsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICBjb25zdCBjb25maWdQcm9wczogRmlsZVV0aWxpdHlQcm9wcyA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKTtcblxuICAgIHRoaXMubHVfbmFtZSQgPSBjb25maWdQcm9wcy5sYWJlbCA/PyAnJztcbiAgICB0aGlzLmx1X2ljb24kID0gJ3BhcGVyLWNsaXAnO1xuXG4gICAgdGhpcy5jbG9zZVN2Z0ljb24kID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygndGltZXMnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgdGhpcy5hZGRBdHRhY2htZW50c0FjdGlvbnMgPSBbXG4gICAgICB7XG4gICAgICAgIHRleHQ6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBZGQgZmlsZXMnLCAnJywgJycpLFxuICAgICAgICBpZDogJ2FkZE5ld0ZpbGVzJyxcbiAgICAgICAgb25DbGljazogKCkgPT4gdGhpcy5jcmVhdGVNb2RhbCgnYWRkTG9jYWxGaWxlJylcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRleHQ6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBZGQgbGlua3MnLCAnJywgJycpLFxuICAgICAgICBpZDogJ2FkZE5ld0xpbmtzJyxcbiAgICAgICAgb25DbGljazogKCkgPT4gdGhpcy5jcmVhdGVNb2RhbCgnYWRkTG9jYWxMaW5rJylcbiAgICAgIH1cbiAgICBdO1xuICAgIC8vIGNvbnN0IG9uVmlld0FsbENhbGxiYWNrID0gKCkgPT4gdGhpcy5vblZpZXdBbGwodGhpcy5hckZ1bGxMaXN0QXR0YWNobWVudHMpO1xuXG4gICAgdGhpcy5sdV9vblZpZXdBbGxGdW5jdGlvbiA9IHsgb25DbGljazogdGhpcy5vblZpZXdBbGwuYmluZCh0aGlzKSB9O1xuXG4gICAgdGhpcy5yZW1vdmVGaWxlRnJvbUxpc3QkID0geyBvbkNsaWNrOiB0aGlzLnJlbW92ZUZpbGVGcm9tTGlzdC5iaW5kKHRoaXMpIH07XG4gICAgdGhpcy5yZW1vdmVMaW5rc0Zyb21MaXN0JCA9IHsgb25DbGljazogdGhpcy5yZW1vdmVMaW5rc0Zyb21MaXN0LmJpbmQodGhpcykgfTtcblxuICAgIHRoaXMudXBkYXRlU2VsZigpO1xuXG4gICAgdGhpcy5jcmVhdGVNb2RhbEJ1dHRvbnMoKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgKFBDb3JlLmdldEV2ZW50cygpLmdldENhc2VFdmVudCgpIGFzIGFueSkuQ0FTRV9BVFRBQ0hNRU5UU19VUERBVEVEX0ZST01fQ0FTRVZJRVcsXG4gICAgICB0aGlzLnVwZGF0ZVNlbGYuYmluZCh0aGlzKSxcbiAgICAgICdjYXNlQXR0YWNobWVudHNVcGRhdGVGcm9tQ2FzZXZpZXcnXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKFxuICAgICAgKFBDb3JlLmdldEV2ZW50cygpLmdldENhc2VFdmVudCgpIGFzIGFueSkuQ0FTRV9BVFRBQ0hNRU5UU19VUERBVEVEX0ZST01fQ0FTRVZJRVcsXG4gICAgICAnY2FzZUF0dGFjaG1lbnRzVXBkYXRlRnJvbUNhc2V2aWV3J1xuICAgICk7XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICAvLyBhZGRpbmcgYSBwcm9wZXJ0eSB0byB0cmFjayBpbiBjb25maWdQcm9wcywgd2hlbiBldmVyIHRoZSBhdHRhY2htZW50IGZpbGUgY2hhbmdlc1xuICAgIC8vIG5lZWQgdG8gdHJpZ2dlciBhIHJlZHJhd1xuICAgIHRoaXMucENvbm4kLnJlZ2lzdGVyQWRkaXRpb25hbFByb3BzKHtcbiAgICAgIGxhc3RSZWZyZXNoVGltZTogYEBQICR7UENvcmUuZ2V0Q29uc3RhbnRzKCkuU1VNTUFSWV9PRl9BVFRBQ0hNRU5UU19MQVNUX1JFRlJFU0hfVElNRX1gXG4gICAgfSk7XG5cbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmIHx8IHRoaXMuY2FzZUhhc0NoYW5nZWQoKSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgb25BdHRhY2hGaWxlcyhmaWxlcykge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRVdGlscyA9IFBDb3JlLmdldEF0dGFjaG1lbnRVdGlscygpO1xuICAgIGNvbnN0IGNhc2VJRCA9IHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fSUQpO1xuXG4gICAgaWYgKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubHVfYkxvYWRpbmckID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBhckZpbGVzOiBhbnkgPSBBcnJheS5mcm9tKGZpbGVzKTtcblxuICAgIFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIGFyRmlsZXMubWFwKGZpbGUgPT4gYXR0YWNobWVudFV0aWxzLnVwbG9hZEF0dGFjaG1lbnQoZmlsZSwgdGhpcy5vblVwbG9hZFByb2dyZXNzLCB0aGlzLmVycm9ySGFuZGxlciwgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSkpXG4gICAgKVxuICAgICAgLnRoZW4oKGZpbGVSZXNwb25zZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB1cGxvYWRlZEZpbGVzOiBhbnkgPSBbXTtcbiAgICAgICAgZmlsZVJlc3BvbnNlcy5mb3JFYWNoKGZpbGVSZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYgKGZpbGVSZXNwb25zZS5zdGF0dXMgPT09ICdmdWxmaWxsZWQnKSB7XG4gICAgICAgICAgICB1cGxvYWRlZEZpbGVzLnB1c2goZmlsZVJlc3BvbnNlLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodXBsb2FkZWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgKGF0dGFjaG1lbnRVdGlscy5saW5rQXR0YWNobWVudHNUb0Nhc2UoY2FzZUlELCB1cGxvYWRlZEZpbGVzLCAnRmlsZScsIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpIGFzIFByb21pc2U8YW55PilcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoQXR0YWNobWVudHMoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgpO1xuXG4gICAgdGhpcy5hckZpbGVMaXN0JCA9IFtdO1xuICAgIHRoaXMubHVfYkxvYWRpbmckID0gZmFsc2U7XG4gIH1cblxuICByZWZyZXNoQXR0YWNobWVudHMoKSB7XG4gICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gIH1cblxuICBvblVwbG9hZFByb2dyZXNzKCkge31cblxuICBlcnJvckhhbmRsZXIoKSB7fVxuXG4gIG9uQXR0YWNoTGlua3MobGlua3MpIHtcbiAgICBjb25zdCBhdHRhY2htZW50VXRpbHMgPSBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKTtcbiAgICBjb25zdCBjYXNlSUQgPSB0aGlzLnBDb25uJC5nZXRWYWx1ZShQQ29yZS5nZXRDb25zdGFudHMoKS5DQVNFX0lORk8uQ0FTRV9JTkZPX0lEKTtcblxuICAgIGlmIChsaW5rcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmx1X2JMb2FkaW5nJCA9IHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgbGlua3NUb0F0dGFjaCA9IGxpbmtzLm1hcChsaW5rID0+ICh7XG4gICAgICB0eXBlOiAnVVJMJyxcbiAgICAgIGNhdGVnb3J5OiAnVVJMJyxcbiAgICAgIHVybDogbGluay51cmwsXG4gICAgICBuYW1lOiBsaW5rLmxpbmtUaXRsZVxuICAgIH0pKTtcblxuICAgIChhdHRhY2htZW50VXRpbHMubGlua0F0dGFjaG1lbnRzVG9DYXNlKGNhc2VJRCwgbGlua3NUb0F0dGFjaCwgJ1VSTCcsIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpIGFzIFByb21pc2U8YW55PilcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoQXR0YWNobWVudHMoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goY29uc29sZS5sb2cpO1xuICB9XG5cbiAgYWRkQXR0YWNobWVudHMoYXR0c0Zyb21SZXNwOiBhbnlbXSA9IFtdKSB7XG4gICAgdGhpcy5sdV9iTG9hZGluZyQgPSBmYWxzZTtcblxuICAgIGF0dHNGcm9tUmVzcCA9IGF0dHNGcm9tUmVzcC5tYXAocmVzcEF0dCA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkQXR0ID0ge1xuICAgICAgICAuLi5yZXNwQXR0LFxuICAgICAgICBtZXRhOiBgJHtyZXNwQXR0LmNhdGVnb3J5fSAuICR7dGhpcy51dGlscy5nZW5lcmF0ZURhdGVUaW1lKHJlc3BBdHQuY3JlYXRlVGltZSwgJ0RhdGVUaW1lLVNpbmNlJyl9LCAke3Jlc3BBdHQuY3JlYXRlZEJ5fWBcbiAgICAgIH07XG4gICAgICBpZiAodXBkYXRlZEF0dC50eXBlID09PSAnRklMRScpIHtcbiAgICAgICAgdXBkYXRlZEF0dC5uYW1lV2l0aEV4dCA9IHVwZGF0ZWRBdHQuZmlsZU5hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdXBkYXRlZEF0dDtcbiAgICB9KTtcblxuICAgIHJldHVybiBhdHRzRnJvbVJlc3A7XG4gIH1cblxuICBvblZpZXdBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5iU2hvd1ZpZXdBbGxNb2RhbCQgPSB0cnVlO1xuXG4gICAgLy8gYWRkIGNsaWNrQXdheSBsaXN0ZW5lclxuICAgIC8vIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5fY2xpY2tBd2F5LmJpbmQodGhpcykpO1xuICB9XG5cbiAgLy8gQmVsb3cgbWV0aG9kIGlzIG5vdCBuZWVkZWQsIHN0aWxsIGhhdmluZyBpdCBjb21tZW50ZWQgaW4gY2FzZSB3ZSB3YW50IGluIGZ1dHVyZVxuICAvLyBfY2xpY2tBd2F5KGV2ZW50OiBhbnkpIHtcbiAgLy8gICBsZXQgYkluUG9wVXAgPSBmYWxzZTtcblxuICAvLyAgIC8vIHJ1biB0aHJvdWdoIGxpc3Qgb2YgZWxlbWVudHMgaW4gcGF0aCwgaWYgbWVudSBub3QgaW4gdGggcGF0aCwgdGhlbiB3YW50IHRvXG4gIC8vICAgLy8gaGlkZSAodG9nZ2xlKSB0aGUgbWVudVxuICAvLyAgIGZvciAoY29uc3QgaSBpbiBldmVudC5wYXRoKSB7XG4gIC8vICAgICBpZiAoZXZlbnQucGF0aFtpXS5jbGFzc05hbWUgPT0gJ3BzZGstbW9kYWwtZmlsZS10b3AnIHx8IGV2ZW50LnBhdGhbaV0udGFnTmFtZSA9PSAnQlVUVE9OJykge1xuICAvLyAgICAgICBiSW5Qb3BVcCA9IHRydWU7XG4gIC8vICAgICAgIGJyZWFrO1xuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy8gICBpZiAoIWJJblBvcFVwKSB7XG4gIC8vICAgICB0aGlzLmJTaG93Vmlld0FsbE1vZGFsJCA9IGZhbHNlO1xuXG4gIC8vICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2NsaWNrQXdheS5iaW5kKHRoaXMpKTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICBfY2xvc2VWaWV3QWxsKCkge1xuICAgIHRoaXMuYlNob3dWaWV3QWxsTW9kYWwkID0gZmFsc2U7XG5cbiAgICAvLyB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2NsaWNrQXdheS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHJlbW92ZUZpbGVGcm9tTGlzdChpdGVtOiBhbnkpIHtcbiAgICBpZiAoaXRlbSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBhckZpbGVMaXN0ID0gdGhpcy5hckZpbGVMaXN0JDtcbiAgICAgIGNvbnN0IGl0ZW1JZCA9IGl0ZW0uaWQ7XG5cbiAgICAgIGZvciAobGV0IGZpbGVJbmRleCA9IDA7IGZpbGVJbmRleCA8IGFyRmlsZUxpc3QubGVuZ3RoOyBmaWxlSW5kZXgrKykge1xuICAgICAgICBpZiAoYXJGaWxlTGlzdFtmaWxlSW5kZXhdLmlkID09IGl0ZW1JZCkge1xuICAgICAgICAgIC8vIHJlbW92ZSB0aGUgZmlsZSBmcm9tIHRoZSBsaXN0IGFuZCByZWRyYXdcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgYXJGaWxlTGlzdC5zcGxpY2UoZmlsZUluZGV4LCAxKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUxpbmtzRnJvbUxpc3QoaXRlbTogYW55KSB7XG4gICAgY29uc3QgbG9jYWxMaW5rc0xpc3QgPSB0aGlzLmFyTGlua3NMaXN0JC5zbGljZSgpO1xuXG4gICAgaWYgKGl0ZW0gIT0gbnVsbCkge1xuICAgICAgY29uc3QgaXRlbUlkID0gaXRlbS5pZDtcblxuICAgICAgZm9yIChsZXQgbGlua0luZGV4ID0gMDsgbGlua0luZGV4IDwgbG9jYWxMaW5rc0xpc3QubGVuZ3RoOyBsaW5rSW5kZXgrKykge1xuICAgICAgICBpZiAobG9jYWxMaW5rc0xpc3RbbGlua0luZGV4XS5pZCA9PSBpdGVtSWQpIHtcbiAgICAgICAgICAvLyByZW1vdmUgdGhlIGZpbGUgZnJvbSB0aGUgbGlzdCBhbmQgcmVkcmF3XG4gICAgICAgICAgbG9jYWxMaW5rc0xpc3Quc3BsaWNlKGxpbmtJbmRleCwgMSk7XG5cbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hckxpbmtzTGlzdCQgPSBsb2NhbExpbmtzTGlzdC5zbGljZSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXROZXdMaXN0VXRpbGl0eUl0ZW1Qcm9wcyA9ICh7IGF0dCwgY2FuY2VsRmlsZSwgZG93bmxvYWRGaWxlLCBkZWxldGVGaWxlLCByZW1vdmVGaWxlIH0pID0+IHtcbiAgICBsZXQgYWN0aW9ucztcbiAgICBsZXQgaXNEb3dubG9hZGFibGUgPSBmYWxzZTtcblxuICAgIGlmIChhdHQucHJvZ3Jlc3MgJiYgYXR0LnByb2dyZXNzICE9PSAxMDApIHtcbiAgICAgIGFjdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogYENhbmNlbC0ke2F0dC5JRH1gLFxuICAgICAgICAgIHRleHQ6ICdDYW5jZWwnLFxuICAgICAgICAgIGljb246ICd0aW1lcycsXG4gICAgICAgICAgb25DbGljazogY2FuY2VsRmlsZVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoYXR0LmxpbmtzKSB7XG4gICAgICBjb25zdCBpc0ZpbGUgPSBhdHQudHlwZSA9PT0gJ0ZJTEUnO1xuICAgICAgY29uc3QgSUQgPSBhdHQuSUQucmVwbGFjZSgvXFxzL2dpLCAnJyk7XG4gICAgICBjb25zdCBhY3Rpb25zTWFwID0gbmV3IE1hcChbXG4gICAgICAgIFtcbiAgICAgICAgICAnZG93bmxvYWQnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBgZG93bmxvYWQtJHtJRH1gLFxuICAgICAgICAgICAgdGV4dDogaXNGaWxlID8gJ0Rvd25sb2FkJyA6ICdPcGVuJyxcbiAgICAgICAgICAgIGljb246IGlzRmlsZSA/ICdkb3dubG9hZCcgOiAnb3BlbicsXG4gICAgICAgICAgICBvbkNsaWNrOiBkb3dubG9hZEZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAnZGVsZXRlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYERlbGV0ZS0ke0lEfWAsXG4gICAgICAgICAgICB0ZXh0OiAnRGVsZXRlJyxcbiAgICAgICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgICAgICBvbkNsaWNrOiBkZWxldGVGaWxlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICBdKTtcbiAgICAgIGFjdGlvbnMgPSBbXTtcbiAgICAgIGFjdGlvbnNNYXAuZm9yRWFjaCgoYWN0aW9uLCBhY3Rpb25LZXkpID0+IHtcbiAgICAgICAgaWYgKGF0dC5saW5rc1thY3Rpb25LZXldKSB7XG4gICAgICAgICAgYWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgaXNEb3dubG9hZGFibGUgPSBhdHQubGlua3MuZG93bmxvYWQ7XG4gICAgfSBlbHNlIGlmIChhdHQuZXJyb3IpIHtcbiAgICAgIGFjdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogYFJlbW92ZS0ke2F0dC5JRH1gLFxuICAgICAgICAgIHRleHQ6ICdSZW1vdmUnLFxuICAgICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgICAgb25DbGljazogcmVtb3ZlRmlsZVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpZDogYXR0LklELFxuICAgICAgdmlzdWFsOiB7XG4gICAgICAgIGljb246IHRoaXMudXRpbHMuZ2V0SWNvbkZvckF0dGFjaG1lbnQoYXR0KSxcbiAgICAgICAgcHJvZ3Jlc3M6IGF0dC5wcm9ncmVzcyA9PSAxMDAgPyB1bmRlZmluZWQgOiBhdHQucHJvZ3Jlc3NcbiAgICAgIH0sXG4gICAgICBwcmltYXJ5OiB7XG4gICAgICAgIHR5cGU6IGF0dC50eXBlLFxuICAgICAgICBuYW1lOiBhdHQubmFtZSxcbiAgICAgICAgaWNvbjogJ3RyYXNoJyxcbiAgICAgICAgY2xpY2s6IHJlbW92ZUZpbGVcbiAgICAgIH0sXG4gICAgICBzZWNvbmRhcnk6IHtcbiAgICAgICAgdGV4dDogYXR0Lm1ldGFcbiAgICAgIH0sXG4gICAgICBhY3Rpb25zXG4gICAgfTtcbiAgfTtcblxuICBnZXRMaXN0VXRpbGl0eUl0ZW1Qcm9wcyA9ICh7IGF0dCwgY2FuY2VsRmlsZSwgZG93bmxvYWRGaWxlLCBkZWxldGVGaWxlLCByZW1vdmVGaWxlIH0pID0+IHtcbiAgICBsZXQgYWN0aW9ucztcbiAgICBsZXQgaXNEb3dubG9hZGFibGUgPSBmYWxzZTtcblxuICAgIGlmIChhdHQucHJvZ3Jlc3MgJiYgYXR0LnByb2dyZXNzICE9PSAxMDApIHtcbiAgICAgIGFjdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogYENhbmNlbC0ke2F0dC5JRH1gLFxuICAgICAgICAgIHRleHQ6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdDYW5jZWwnLCAnJywgJycpLFxuICAgICAgICAgIGljb246ICd0aW1lcycsXG4gICAgICAgICAgb25DbGljazogY2FuY2VsRmlsZVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoYXR0LmxpbmtzKSB7XG4gICAgICBjb25zdCBpc0ZpbGUgPSBhdHQudHlwZSA9PT0gJ0ZJTEUnO1xuICAgICAgY29uc3QgSUQgPSBhdHQuSUQucmVwbGFjZSgvXFxzL2dpLCAnJyk7XG4gICAgICBjb25zdCBhY3Rpb25zTWFwID0gbmV3IE1hcChbXG4gICAgICAgIFtcbiAgICAgICAgICAnZG93bmxvYWQnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBgZG93bmxvYWQtJHtJRH1gLFxuICAgICAgICAgICAgdGV4dDogaXNGaWxlID8gdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0Rvd25sb2FkJywgJycsICcnKSA6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdPcGVuJywgJycsICcnKSxcbiAgICAgICAgICAgIGljb246IGlzRmlsZSA/ICdkb3dubG9hZCcgOiAnb3BlbicsXG4gICAgICAgICAgICBvbkNsaWNrOiBkb3dubG9hZEZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIFtcbiAgICAgICAgICAnZGVsZXRlJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYERlbGV0ZS0ke0lEfWAsXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnRGVsZXRlJywgJycsICcnKSxcbiAgICAgICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgICAgICBvbkNsaWNrOiBkZWxldGVGaWxlXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICBdKTtcbiAgICAgIGFjdGlvbnMgPSBbXTtcbiAgICAgIGFjdGlvbnNNYXAuZm9yRWFjaCgoYWN0aW9uLCBhY3Rpb25LZXkpID0+IHtcbiAgICAgICAgaWYgKGF0dC5saW5rc1thY3Rpb25LZXldKSB7XG4gICAgICAgICAgYWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgaXNEb3dubG9hZGFibGUgPSBhdHQubGlua3MuZG93bmxvYWQ7XG4gICAgfSBlbHNlIGlmIChhdHQuZXJyb3IpIHtcbiAgICAgIGFjdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogYFJlbW92ZS0ke2F0dC5JRH1gLFxuICAgICAgICAgIHRleHQ6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdSZW1vdmUnLCAnJywgJycpLFxuICAgICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgICAgb25DbGljazogcmVtb3ZlRmlsZVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpZDogYXR0LklELFxuICAgICAgdmlzdWFsOiB7XG4gICAgICAgIGljb246IHRoaXMudXRpbHMuZ2V0SWNvbkZvckF0dGFjaG1lbnQoYXR0KSxcbiAgICAgICAgcHJvZ3Jlc3M6IGF0dC5wcm9ncmVzcyA9PSAxMDAgPyB1bmRlZmluZWQgOiBhdHQucHJvZ3Jlc3NcbiAgICAgIH0sXG4gICAgICBwcmltYXJ5OiB7XG4gICAgICAgIHR5cGU6IGF0dC50eXBlLFxuICAgICAgICBuYW1lOiBhdHQubmFtZSxcbiAgICAgICAgaWNvbjogJ29wZW4nLFxuICAgICAgICBjbGljazogZG93bmxvYWRGaWxlXG4gICAgICB9LFxuICAgICAgc2Vjb25kYXJ5OiB7XG4gICAgICAgIHRleHQ6IGF0dC5tZXRhXG4gICAgICB9LFxuICAgICAgYWN0aW9uc1xuICAgIH07XG4gIH07XG5cbiAgX2FkZExpbmsoKSB7XG4gICAgLy8gY29weSBsaXN0IGxvY2FsbHlcbiAgICBjb25zdCBsb2NhbExpc3QgPSB0aGlzLmFyTGlua3NMaXN0JC5zbGljZSgpO1xuXG4gICAgY29uc3QgdXJsID0gdGhpcy5saW5rX3VybCQ7XG5cbiAgICBpZiAoIS9eKGh0dHB8aHR0cHMpOlxcL1xcLy8udGVzdCh0aGlzLmxpbmtfdXJsJCkpIHtcbiAgICAgIHRoaXMubGlua191cmwkID0gYGh0dHA6Ly8ke3RoaXMubGlua191cmwkfWA7XG4gICAgfVxuXG4gICAgLy8gbGlzdCBmb3IgZGlzcGxheVxuICAgIGxldCBvTGluazogYW55ID0ge307XG4gICAgb0xpbmsuaWNvbiA9ICdjaGFpbic7XG5cbiAgICBvTGluay5JRCA9IGAke25ldyBEYXRlKCkuZ2V0VGltZSgpfWA7XG5cbiAgICBvTGluayA9IHRoaXMuZ2V0TmV3TGlzdFV0aWxpdHlJdGVtUHJvcHMoe1xuICAgICAgYXR0OiBvTGluayxcbiAgICAgIGRvd25sb2FkRmlsZTogbnVsbCxcbiAgICAgIGNhbmNlbEZpbGU6IG51bGwsXG4gICAgICBkZWxldGVGaWxlOiBudWxsLFxuICAgICAgcmVtb3ZlRmlsZTogbnVsbFxuICAgIH0pO1xuXG4gICAgb0xpbmsudHlwZSA9ICdVUkwnO1xuICAgIG9MaW5rLnByaW1hcnkudHlwZSA9IG9MaW5rLnR5cGU7XG4gICAgb0xpbmsudmlzdWFsLmljb24gPSAnY2hhaW4nO1xuICAgIG9MaW5rLnByaW1hcnkubmFtZSA9IHRoaXMubGlua190aXRsZSQ7XG4gICAgb0xpbmsucHJpbWFyeS5pY29uID0gJ29wZW4nO1xuICAgIG9MaW5rLnNlY29uZGFyeS50ZXh0ID0gdXJsO1xuXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIC8vIG5lZWQgdG8gY3JlYXRlIGEgbmV3IGFycmF5IG9yIHN1bW1hcnkgbGlzdCB3b24ndCBkZXRlY3QgY2hhbmdlc1xuICAgICAgdGhpcy5hckxpbmtzTGlzdCQgPSBsb2NhbExpc3Quc2xpY2UoKTtcbiAgICAgIHRoaXMuYXJMaW5rc0xpc3QkLnB1c2gob0xpbmspO1xuXG4gICAgICAvLyBsaXN0IGZvciBhY3R1YWxseSBhdHRhY2htZW50c1xuICAgICAgY29uc3QgbGluazogYW55ID0ge307XG4gICAgICBsaW5rLmlkID0gb0xpbmsuaWQ7XG4gICAgICBsaW5rLmxpbmtUaXRsZSA9IHRoaXMubGlua190aXRsZSQ7XG4gICAgICBsaW5rLnR5cGUgPSBvTGluay50eXBlO1xuICAgICAgbGluay51cmwgPSB1cmw7XG5cbiAgICAgIHRoaXMuYXJMaW5rcyQucHVzaChsaW5rKTtcblxuICAgICAgLy8gY2xlYXIgdmFsdWVzXG4gICAgICB0aGlzLmxpbmtfdGl0bGUkID0gJyc7XG4gICAgICB0aGlzLmxpbmtfdXJsJCA9ICcnO1xuICAgIH0pO1xuICB9XG5cbiAgX2NoYW5nZVRpdGxlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmxpbmtfdGl0bGUkID0gZXZlbnQuc3JjRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIF9jaGFuZ2VVcmwoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMubGlua191cmwkID0gZXZlbnQuc3JjRWxlbWVudC52YWx1ZTtcbiAgfVxuXG4gIGRvd25sb2FkRmlsZShhdHQ6IGFueSkge1xuICAgIGNvbnN0IGF0dGFjaFV0aWxzID0gUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCk7XG4gICAgY29uc3QgeyBJRCwgbmFtZSwgZXh0ZW5zaW9uLCB0eXBlIH0gPSBhdHQ7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCk7XG5cbiAgICBhdHRhY2hVdGlsc1xuICAgICAgLy8gQHRzLWlnbm9yZSAtIDNyZCBwYXJhbWV0ZXIgXCJyZXNwb25zZUVuY29kaW5nXCIgaXMgb3B0aW9uYWxcbiAgICAgIC5kb3dubG9hZEF0dGFjaG1lbnQoSUQsIGNvbnRleHQpXG4gICAgICAudGhlbigoY29udGVudDogYW55KSA9PiB7XG4gICAgICAgIGlmICh0eXBlID09PSAnRklMRScpIHtcbiAgICAgICAgICB0aGlzLmZpbGVEb3dubG9hZChjb250ZW50LmRhdGEsIG5hbWUsIGV4dGVuc2lvbik7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1VSTCcpIHtcbiAgICAgICAgICBsZXQgeyBkYXRhIH0gPSBjb250ZW50O1xuICAgICAgICAgIGlmICghL14oaHR0cHxodHRwcyk6XFwvXFwvLy50ZXN0KGRhdGEpKSB7XG4gICAgICAgICAgICBkYXRhID0gYC8vJHtkYXRhfWA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHdpbmRvdy5vcGVuKGNvbnRlbnQuZGF0YSwgJ19ibGFuaycpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuICB9XG5cbiAgZmlsZURvd25sb2FkID0gKGRhdGEsIGZpbGVOYW1lLCBleHQpID0+IHtcbiAgICBjb25zdCBmaWxlID0gZXh0ID8gYCR7ZmlsZU5hbWV9LiR7ZXh0fWAgOiBmaWxlTmFtZTtcbiAgICBkb3dubG9hZChhdG9iKGRhdGEpLCBmaWxlKTtcbiAgfTtcblxuICBjYW5jZWxGaWxlKCkge1xuICAgIGFsZXJ0KCdjYW5jZWwnKTtcbiAgfVxuXG4gIGRlbGV0ZUZpbGUoYXR0OiBhbnkpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGF0dGFjaFV0aWxzID0gUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKCk7XG4gICAgICBjb25zdCB7IElEIH0gPSBhdHQ7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcblxuICAgICAgYXR0YWNoVXRpbHNcbiAgICAgICAgLmRlbGV0ZUF0dGFjaG1lbnQoSUQsIGNvbnRleHQpXG4gICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICAgICAgICAvLyBsZXQgbmV3QXR0YWNobWVudHM7XG4gICAgICAgICAgLy8gc2V0QXR0YWNobWVudHMoKGN1cnJlbnQpID0+IHtcbiAgICAgICAgICAvLyAgIG5ld0F0dGFjaG1lbnRzID0gY3VycmVudC5maWx0ZXIoKGZpbGUpID0+IGZpbGUuSUQgIT09IElEKTtcbiAgICAgICAgICAvLyAgIHJldHVybiBuZXdBdHRhY2htZW50cztcbiAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICAvLyBpZiAoY2FsbGJhY2tGbikge1xuICAgICAgICAgIC8vICAgY2FsbGJhY2tGbihuZXdBdHRhY2htZW50cyk7XG4gICAgICAgICAgLy8gfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVGaWxlKCkge1xuICAgIGFsZXJ0KCdyZW1vdmUnKTtcbiAgfVxuXG4gIHJlbW92ZU5ld0ZpbGUoKSB7XG4gICAgYWxlcnQoJ3JlbW92ZScpO1xuICB9XG5cbiAgY3JlYXRlTW9kYWwobW9kYWxUeXBlOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKG1vZGFsVHlwZSkge1xuICAgICAgY2FzZSAnYWRkTG9jYWxGaWxlJzpcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmJTaG93RmlsZU1vZGFsJCA9IHRydWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWRkTG9jYWxMaW5rJzpcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmJTaG93TGlua01vZGFsJCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZU1vZGFsQnV0dG9ucygpIHtcbiAgICB0aGlzLmFyRmlsZU1haW5CdXR0b25zJC5wdXNoKHsgYWN0aW9uSUQ6ICdhdHRhY2gnLCBqc0FjdGlvbjogJ2F0dGFjaEZpbGVzJywgbmFtZTogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0F0dGFjaCBmaWxlcycsICcnLCAnJykgfSk7XG4gICAgdGhpcy5hckZpbGVTZWNvbmRhcnlCdXR0b25zJC5wdXNoKHsgYWN0aW9uSUQ6ICdjYW5jZWwnLCBqc0FjdGlvbjogJ2NhbmNlbCcsIG5hbWU6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdDYW5jZWwnLCAnJywgJycpIH0pO1xuXG4gICAgdGhpcy5hckxpbmtNYWluQnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnYXR0YWNoJywganNBY3Rpb246ICdhdHRhY2hMaW5rcycsIG5hbWU6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBdHRhY2ggbGlua3MnLCAnJywgJycpIH0pO1xuICAgIHRoaXMuYXJMaW5rU2Vjb25kYXJ5QnV0dG9ucyQucHVzaCh7IGFjdGlvbklEOiAnY2FuY2VsJywganNBY3Rpb246ICdjYW5jZWwnLCBuYW1lOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQ2FuY2VsJywgJycsICcnKSB9KTtcbiAgfVxuXG4gIHVwbG9hZE15RmlsZXMoJGV2ZW50KSB7XG4gICAgLy8gYWxlcnQoJGV2ZW50LnRhcmdldC5maWxlc1swXSk7IC8vIG91dHB1dHMgdGhlIGZpcnN0IGZpbGVcbiAgICB0aGlzLmFyRmlsZXMkID0gdGhpcy5nZXRGaWxlcygkZXZlbnQudGFyZ2V0LmZpbGVzKTtcblxuICAgIC8vIGNvbnZlcnQgRmlsZUxpc3QgdG8gYW4gYXJyYXlcbiAgICBjb25zdCBteUZpbGVzID0gQXJyYXkuZnJvbSh0aGlzLmFyRmlsZXMkKTtcblxuICAgIHRoaXMuYXJGaWxlTGlzdCQgPSBteUZpbGVzLm1hcChhdHQgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV3TGlzdFV0aWxpdHlJdGVtUHJvcHMoe1xuICAgICAgICBhdHQsXG4gICAgICAgIGRvd25sb2FkRmlsZTogIWF0dC5wcm9ncmVzcyA/ICgpID0+IHRoaXMuZG93bmxvYWRGaWxlKGF0dCkgOiBudWxsLFxuICAgICAgICBjYW5jZWxGaWxlOiBhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmNhbmNlbEZpbGUoKSA6IG51bGwsXG4gICAgICAgIGRlbGV0ZUZpbGU6ICFhdHQucHJvZ3Jlc3MgPyAoKSA9PiB0aGlzLmRlbGV0ZUZpbGUoYXR0KSA6IG51bGwsXG4gICAgICAgIHJlbW92ZUZpbGU6IGF0dC5lcnJvciA/ICgpID0+IHRoaXMucmVtb3ZlTmV3RmlsZSgpIDogbnVsbFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRGaWxlcyhhckZpbGVzOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5zZXROZXdGaWxlcyhhckZpbGVzKTtcbiAgfVxuXG4gIHNldE5ld0ZpbGVzKGFyRmlsZXMpIHtcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBhckZpbGVzKSB7XG4gICAgICBpZiAoIXRoaXMudmFsaWRhdGVNYXhTaXplKGZpbGUsIDUpKSB7XG4gICAgICAgIGZpbGUuZXJyb3IgPSB0cnVlO1xuICAgICAgICBmaWxlLm1ldGEgPSAnRmlsZSBpcyB0b28gYmlnLiBNYXggYWxsb3dlZCBzaXplIGlzIDVNQi4nO1xuICAgICAgfVxuICAgICAgZmlsZS5taW1lVHlwZSA9IGZpbGUudHlwZTtcbiAgICAgIGZpbGUuaWNvbiA9IHRoaXMudXRpbHMuZ2V0SWNvbkZyb21GaWxlVHlwZShmaWxlLnR5cGUpO1xuICAgICAgZmlsZS5JRCA9IGAke25ldyBEYXRlKCkuZ2V0VGltZSgpfUkke2luZGV4fWA7XG4gICAgICBpbmRleCsrO1xuICAgIH1cblxuICAgIHJldHVybiBhckZpbGVzO1xuICB9XG5cbiAgdmFsaWRhdGVNYXhTaXplKGZpbGVPYmosIG1heFNpemVJbk1CKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmlsZVNpemUgPSAoZmlsZU9iai5zaXplIC8gMTA0ODU3NikudG9GaXhlZCgyKTtcbiAgICByZXR1cm4gZmlsZVNpemUgPCBtYXhTaXplSW5NQjtcbiAgfVxuXG4gIG9uRmlsZUFjdGlvbkJ1dHRvbkNsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICAvLyBtb2RhbCBidXR0b25zXG4gICAgc3dpdGNoIChldmVudC5hY3Rpb24pIHtcbiAgICAgIGNhc2UgJ2NhbmNlbCc6XG4gICAgICAgIHRoaXMuYlNob3dGaWxlTW9kYWwkID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhck91dEZpbGVzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYXR0YWNoRmlsZXMnOlxuICAgICAgICB0aGlzLmJTaG93RmlsZU1vZGFsJCA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uQXR0YWNoRmlsZXModGhpcy5hckZpbGVzJCk7XG5cbiAgICAgICAgdGhpcy5jbGVhck91dEZpbGVzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgb25MaW5rQWN0aW9uQnV0dG9uQ2xpY2soZXZlbnQ6IGFueSkge1xuICAgIC8vIG1vZGFsIGJ1dHRvbnNcbiAgICBzd2l0Y2ggKGV2ZW50LmFjdGlvbikge1xuICAgICAgY2FzZSAnY2FuY2VsJzpcbiAgICAgICAgdGhpcy5iU2hvd0xpbmtNb2RhbCQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNsZWFyT3V0TGlua3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhdHRhY2hMaW5rcyc6XG4gICAgICAgIHRoaXMuYlNob3dMaW5rTW9kYWwkID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25BdHRhY2hMaW5rcyh0aGlzLmFyTGlua3MkKTtcblxuICAgICAgICB0aGlzLmNsZWFyT3V0TGlua3MoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjbGVhck91dEZpbGVzKCkge1xuICAgIHRoaXMuYXJGaWxlTGlzdCQgPSBbXTtcbiAgICB0aGlzLmFyRmlsZXMkID0gW107XG4gIH1cblxuICBjbGVhck91dExpbmtzKCkge1xuICAgIHRoaXMuYXJMaW5rc0xpc3QkID0gW107XG4gICAgdGhpcy5hckxpbmtzJCA9IFtdO1xuICAgIHRoaXMubGlua190aXRsZSQgPSAnJztcbiAgICB0aGlzLmxpbmtfdXJsJCA9ICcnO1xuICB9XG5cbiAgYWRkQUxpbmsoKSB7fVxuXG4gIF9maWVsZE9uQ2hhbmdlTGluayhldmVudDogYW55KSB7XG4gICAgdGhpcy5saW5rX3RpdGxlJCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIF9maWVsZE9uQ2hhbmdlVVJMKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmxpbmtfdXJsJCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKSB7XG4gICAgY29uc3QgY2FzZUlEID0gdGhpcy5nZXRDYXNlSUQoKTtcblxuICAgIGlmIChjYXNlSUQpIHtcbiAgICAgIHRoaXMubHVfYkxvYWRpbmckID0gdHJ1ZTtcblxuICAgICAgdGhpcy5mZXRjaENhc2VBdHRhY2htZW50cyhjYXNlSUQpXG4gICAgICAgIC50aGVuKHJlc3AgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlQXR0YWNobWVudHNSZXNwb25zZShyZXNwKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubHVfYkxvYWRpbmckID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldENhc2VJRCgpIHtcbiAgICByZXR1cm4gdGhpcy5wQ29ubiQuZ2V0VmFsdWUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuQ0FTRV9JTkZPLkNBU0VfSU5GT19JRCkgfHwgJyc7XG4gIH1cblxuICBmZXRjaENhc2VBdHRhY2htZW50cyhjYXNlSUQpIHtcbiAgICBjb25zdCBhdHRhY2htZW50VXRpbHMgPSBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKTtcbiAgICByZXR1cm4gYXR0YWNobWVudFV0aWxzLmdldENhc2VBdHRhY2htZW50cyhjYXNlSUQsIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCkpO1xuICB9XG5cbiAgaGFuZGxlQXR0YWNobWVudHNSZXNwb25zZShyZXNwKSB7XG4gICAgdGhpcy5hckZ1bGxMaXN0QXR0YWNobWVudHMgPSB0aGlzLmFkZEF0dGFjaG1lbnRzKHJlc3ApO1xuICAgIHRoaXMubHVfY291bnQkID0gdGhpcy5hckZ1bGxMaXN0QXR0YWNobWVudHMubGVuZ3RoO1xuICAgIHRoaXMubHVfYXJBY3Rpb25zJCA9IHRoaXMuYWRkQXR0YWNobWVudHNBY3Rpb25zO1xuXG4gICAgdGhpcy5sdV9hckl0ZW1zJCA9IHRoaXMuZ2V0VXRpbGl0eUl0ZW1zKHRoaXMuYXJGdWxsTGlzdEF0dGFjaG1lbnRzLnNsaWNlKDAsIDMpKTtcbiAgICB0aGlzLnZhX2FySXRlbXMkID0gdGhpcy5nZXRVdGlsaXR5SXRlbXModGhpcy5hckZ1bGxMaXN0QXR0YWNobWVudHMpO1xuICB9XG5cbiAgZ2V0VXRpbGl0eUl0ZW1zKGF0dGFjaG1lbnRzKSB7XG4gICAgcmV0dXJuIGF0dGFjaG1lbnRzLm1hcCh0aGlzLm1hcEF0dGFjaG1lbnRUb1V0aWxpdHlJdGVtLmJpbmQodGhpcykpO1xuICB9XG5cbiAgbWFwQXR0YWNobWVudFRvVXRpbGl0eUl0ZW0oYXR0KSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TGlzdFV0aWxpdHlJdGVtUHJvcHMoe1xuICAgICAgYXR0LFxuICAgICAgZG93bmxvYWRGaWxlOiB0aGlzLmdldERvd25sb2FkRnVuY3Rpb24oYXR0KSxcbiAgICAgIGNhbmNlbEZpbGU6IHRoaXMuZ2V0Q2FuY2VsRnVuY3Rpb24oYXR0KSxcbiAgICAgIGRlbGV0ZUZpbGU6IHRoaXMuZ2V0RGVsZXRlRnVuY3Rpb24oYXR0KSxcbiAgICAgIHJlbW92ZUZpbGU6IHRoaXMuZ2V0UmVtb3ZlRnVuY3Rpb24oYXR0KVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0RG93bmxvYWRGdW5jdGlvbihhdHQpIHtcbiAgICByZXR1cm4gIWF0dC5wcm9ncmVzcyA/ICgpID0+IHRoaXMuZG93bmxvYWRGaWxlKGF0dCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0Q2FuY2VsRnVuY3Rpb24oYXR0KSB7XG4gICAgcmV0dXJuIGF0dC5wcm9ncmVzcyA/ICgpID0+IHRoaXMuY2FuY2VsRmlsZSgpIDogbnVsbDtcbiAgfVxuXG4gIGdldERlbGV0ZUZ1bmN0aW9uKGF0dCkge1xuICAgIHJldHVybiAhYXR0LnByb2dyZXNzID8gKCkgPT4gdGhpcy5kZWxldGVGaWxlKGF0dCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0UmVtb3ZlRnVuY3Rpb24oYXR0KSB7XG4gICAgcmV0dXJuIGF0dC5lcnJvciA/ICgpID0+IHRoaXMucmVtb3ZlRmlsZSgpIDogbnVsbDtcbiAgfVxuXG4gIGNhc2VIYXNDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNhc2VJRCA9IHRoaXMucENvbm4kLmdldFZhbHVlKFBDb3JlLmdldENvbnN0YW50cygpLkNBU0VfSU5GTy5DQVNFX0lORk9fSUQpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRDYXNlSUQgIT09IGNhc2VJRCkge1xuICAgICAgdGhpcy5jdXJyZW50Q2FzZUlEID0gY2FzZUlEO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2PlxuICA8Y29tcG9uZW50LW1hcHBlclxuICAgIG5hbWU9XCJMaXN0VXRpbGl0eVwiXG4gICAgW3Byb3BzXT1cIntcbiAgICAgIG5hbWUkOiBsdV9uYW1lJCxcbiAgICAgIGljb24kOiBsdV9pY29uJCxcbiAgICAgIGJMb2FkaW5nJDogbHVfYkxvYWRpbmckLFxuICAgICAgY291bnQkOiBsdV9jb3VudCQsXG4gICAgICBhckFjdGlvbnMkOiBsdV9hckFjdGlvbnMkLFxuICAgICAgYXJJdGVtcyQ6IGx1X2FySXRlbXMkLFxuICAgICAgb25WaWV3QWxsJDogbHVfb25WaWV3QWxsRnVuY3Rpb24sXG4gICAgICBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJDogcmVtb3ZlRmlsZUZyb21MaXN0JFxuICAgIH1cIlxuICA+PC9jb21wb25lbnQtbWFwcGVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJiU2hvd0ZpbGVNb2RhbCRcIiBjbGFzcz1cInBzZGstZGlhbG9nLWJhY2tncm91bmRcIj5cbiAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtZmlsZS10b3BcIj5cbiAgICA8aDM+e3sgcENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBZGQgbG9jYWwgZmlsZXMnLCAnJywgJycpIH19PC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1ib2R5XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1maWxlLXNlbGVjdG9yXCI+XG4gICAgICAgIDxpbnB1dCBoaWRkZW4gdHlwZT1cImZpbGVcIiBtdWx0aXBsZSAjdXBsb2FkZXIgKGNoYW5nZSk9XCJ1cGxvYWRNeUZpbGVzKCRldmVudClcIiAvPlxuXG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJ1cGxvYWRlci5jbGljaygpXCI+e3sgcENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdVcGxvYWQgZmlsZShzKScsICcnLCAnJykgfX08L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICBuYW1lPVwiU3VtbWFyeUxpc3RcIlxuICAgICAgICBbcHJvcHNdPVwieyBhckl0ZW1zJDogYXJGaWxlTGlzdCQsIG1lbnVJY29uT3ZlcnJpZGUkOiAndHJhc2gnLCBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJDogcmVtb3ZlRmlsZUZyb21MaXN0JCB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgbmFtZT1cIkFjdGlvbkJ1dHRvbnNcIlxuICAgICAgW3Byb3BzXT1cInsgYXJNYWluQnV0dG9ucyQ6IGFyRmlsZU1haW5CdXR0b25zJCwgYXJTZWNvbmRhcnlCdXR0b25zJDogYXJGaWxlU2Vjb25kYXJ5QnV0dG9ucyQgfVwiXG4gICAgICBbcGFyZW50XT1cInRoaXNcIlxuICAgICAgW291dHB1dEV2ZW50c109XCJ7IGFjdGlvbkJ1dHRvbkNsaWNrOiBvbkZpbGVBY3Rpb25CdXR0b25DbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dMaW5rTW9kYWwkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmstdG9wXCI+XG4gICAgPGgzPnt7IHBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQWRkIGxpbmtzJywgJycsICcnKSB9fTwvaDM+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtbGluay1lbnRyeVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstbW9kYWwtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1saW5rcy1yb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1saW5rcy10d28tY29sdW1uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1saW5rLWRhdGFcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHNkay1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MaW5rIHRpdGxlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgcmVxdWlyZWQ9XCJ0cnVlXCIgKGNoYW5nZSk9XCJfZmllbGRPbkNoYW5nZUxpbmsoJGV2ZW50KVwiIFt2YWx1ZV09XCJsaW5rX3RpdGxlJFwiIC8+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWxpbmstZGF0YVwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlVSTDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIHJlcXVpcmVkPVwidHJ1ZVwiIChjaGFuZ2UpPVwiX2ZpZWxkT25DaGFuZ2VVUkwoJGV2ZW50KVwiIFt2YWx1ZV09XCJsaW5rX3VybCRcIiAvPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1tb2RhbC1saW5rLWFkZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiX2FkZExpbmsoKVwiPnt7IHBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQWRkIGxpbmsnLCAnJywgJycpIH19PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICAgbmFtZT1cIlN1bW1hcnlMaXN0XCJcbiAgICAgICAgICBbcHJvcHNdPVwieyBhckl0ZW1zJDogYXJMaW5rc0xpc3QkLCBtZW51SWNvbk92ZXJyaWRlJDogJ3RyYXNoJywgbWVudUljb25PdmVycmlkZUFjdGlvbiQ6IHJlbW92ZUxpbmtzRnJvbUxpc3QkIH1cIlxuICAgICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgbmFtZT1cIkFjdGlvbkJ1dHRvbnNcIlxuICAgICAgW3Byb3BzXT1cInsgYXJNYWluQnV0dG9ucyQ6IGFyTGlua01haW5CdXR0b25zJCwgYXJTZWNvbmRhcnlCdXR0b25zJDogYXJMaW5rU2Vjb25kYXJ5QnV0dG9ucyQgfVwiXG4gICAgICBbcGFyZW50XT1cInRoaXNcIlxuICAgICAgW291dHB1dEV2ZW50c109XCJ7IGFjdGlvbkJ1dHRvbkNsaWNrOiBvbkxpbmtBY3Rpb25CdXR0b25DbGljayB9XCJcbiAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYlNob3dWaWV3QWxsTW9kYWwkXCIgY2xhc3M9XCJwc2RrLWRpYWxvZy1iYWNrZ3JvdW5kXCI+XG4gIDxkaXYgY2xhc3M9XCJwc2RrLW1vZGFsLWZpbGUtdG9wXCI+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstdmlldy1hbGwtaGVhZGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8aDM+e3sgcENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdBdHRhY2htZW50cycsICcnLCAnJykgfX08L2gzPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiX2Nsb3NlVmlld0FsbCgpXCI+XG4gICAgICAgICAgPGltZyBjbGFzcz1cInBzZGstdXRpbGl0eS1jYXJkLWFjdGlvbnMtc3ZnLWljb25cIiBzcmM9XCJ7eyBjbG9zZVN2Z0ljb24kIH19XCIgLz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay12aWV3LWFsbC1ib2R5XCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiU3VtbWFyeUxpc3RcIiBbcHJvcHNdPVwieyBhckl0ZW1zJDogdmFfYXJJdGVtcyQsIG1lbnVJY29uT3ZlcnJpZGVBY3Rpb24kOiByZW1vdmVMaW5rc0Zyb21MaXN0JCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
72
72
|
}], formGroup$: [{
|
|
73
73
|
type: Input
|
|
74
74
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2stY3JlYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy93aWRnZXQvcXVpY2stY3JlYXRlL3F1aWNrLWNyZWF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L3F1aWNrLWNyZWF0ZS9xdWljay1jcmVhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQW9DLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7OztBQWdCeEcsTUFBTSxPQUFPLG9CQUFvQjtJQVcvQixZQUFvQixLQUFZO1FBQVosVUFBSyxHQUFMLEtBQUssQ0FBTztRQUZoQyxXQUFNLEdBQVEsRUFBRSxDQUFDO0lBRWtCLENBQUM7SUFFcEMsVUFBVSxDQUFDLFNBQVM7UUFDbEIsSUFBSSxDQUFDLE1BQU07YUFDUixhQUFhLEVBQUU7YUFDZixVQUFVLENBQUMsU0FBUyxFQUFFLEVBQVMsQ0FBQzthQUNoQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQXFCLENBQUM7UUFFckcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7UUFFbEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0MsSUFDRSxJQUFJLENBQUMsWUFBWTtZQUNqQixPQUFPLENBQUMscUJBQXFCO1lBQzdCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjO1lBQzVDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDdkQsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMvQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7Z0JBQ3hGLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDZCxPQUFPLENBQUMscUJBQTZCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDdkUsSUFBSSxRQUFRLENBQUMsaUNBQWlDLEtBQUssSUFBSSxFQUFFLENBQUM7d0JBQ3hELElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7d0JBQ3hHLEtBQUssR0FBRyxRQUFRLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztvQkFDeEMsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7d0JBQ2YsS0FBSzt3QkFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFOzRCQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3hCLENBQUM7d0JBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztxQkFDckMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLDhEQUE4RDtRQUM5RCxxQkFBcUI7UUFFckIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUUzQixJQUFJLE1BQU0sQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDLGFBQWEsS0FBSyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDOytHQTNFVSxvQkFBb0I7bUdBQXBCLG9CQUFvQix5SkNuQmpDLDRHQUNBLDZFRGdCWSxZQUFZLG9EQUFtQix3QkFBd0I7OzRGQUV0RCxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBR2hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQzswRUFHMUQsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIFF1aWNrQ3JlYXRlUHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIGhlYWRpbmc/OiBzdHJpbmc7XG4gIHNob3dDYXNlSWNvbnM/OiBib29sZWFuO1xuICBjbGFzc0ZpbHRlcj86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXF1aWNrLWNyZWF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWljay1jcmVhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWljay1jcmVhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBRdWlja0NyZWF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IGFueTtcblxuICBjb25maWdQcm9wcyQ6IFF1aWNrQ3JlYXRlUHJvcHM7XG4gIGFyQ2hpbGRyZW4kOiBhbnlbXTtcbiAgaGVhZGluZyQ/OiBzdHJpbmc7XG4gIHNob3dDYXNlSWNvbnMkPzogYm9vbGVhbjtcbiAgY2xhc3NGaWx0ZXIkOiBhbnk7XG4gIGNhc2VzJDogYW55ID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlsczogVXRpbHMpIHt9XG5cbiAgY3JlYXRlQ2FzZShjbGFzc05hbWUpIHtcbiAgICB0aGlzLnBDb25uJFxuICAgICAgLmdldEFjdGlvbnNBcGkoKVxuICAgICAgLmNyZWF0ZVdvcmsoY2xhc3NOYW1lLCB7fSBhcyBhbnkpXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gY2FzZSBjcmVhdGlvbjogJywgZXJyb3I/Lm1lc3NhZ2UpO1xuICAgICAgfSk7XG4gIH1cblxuICBpbml0Q29tcG9uZW50KCkge1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIFF1aWNrQ3JlYXRlUHJvcHM7XG5cbiAgICB0aGlzLmhlYWRpbmckID0gdGhpcy5jb25maWdQcm9wcyQuaGVhZGluZztcbiAgICB0aGlzLnNob3dDYXNlSWNvbnMkID0gdGhpcy5jb25maWdQcm9wcyQuc2hvd0Nhc2VJY29ucztcbiAgICB0aGlzLmNsYXNzRmlsdGVyJCA9IHRoaXMuY29uZmlnUHJvcHMkLmNsYXNzRmlsdGVyO1xuXG4gICAgY29uc3QgZW52SW5mbyA9IFBDb3JlLmdldEVudmlyb25tZW50SW5mbygpO1xuICAgIGlmIChcbiAgICAgIHRoaXMuY2xhc3NGaWx0ZXIkICYmXG4gICAgICBlbnZJbmZvLmVudmlyb25tZW50SW5mb09iamVjdCAmJlxuICAgICAgZW52SW5mby5lbnZpcm9ubWVudEluZm9PYmplY3QucHlDYXNlVHlwZUxpc3QgJiZcbiAgICAgIGVudkluZm8uZW52aXJvbm1lbnRJbmZvT2JqZWN0LnB5Q2FzZVR5cGVMaXN0Lmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMuY2xhc3NGaWx0ZXIkLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGxldCBpY29uID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygncG9sYXJpcy1zb2xpZCcsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcbiAgICAgICAgbGV0IGxhYmVsID0gJyc7XG4gICAgICAgIChlbnZJbmZvLmVudmlyb25tZW50SW5mb09iamVjdCBhcyBhbnkpLnB5Q2FzZVR5cGVMaXN0LmZvckVhY2goY2FzZXR5cGUgPT4ge1xuICAgICAgICAgIGlmIChjYXNldHlwZS5weVdvcmtUeXBlSW1wbGVtZW50YXRpb25DbGFzc05hbWUgPT09IGl0ZW0pIHtcbiAgICAgICAgICAgIGljb24gPSBjYXNldHlwZS5weEljb24gJiYgdGhpcy51dGlscy5nZXRJbWFnZVNyYyhjYXNldHlwZT8ucHhJY29uLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgICAgICAgICBsYWJlbCA9IGNhc2V0eXBlLnB5V29ya1R5cGVOYW1lID8/ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChsYWJlbCAhPT0gJycpIHtcbiAgICAgICAgICB0aGlzLmNhc2VzJC5wdXNoKHtcbiAgICAgICAgICAgIGxhYmVsLFxuICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUNhc2UoaXRlbSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLi4uKHRoaXMuc2hvd0Nhc2VJY29ucyQgJiYgeyBpY29uIH0pXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBuZ09uSW5pdCAobm8gcmVnaXN0ZXJBbmRTdWJzY3JpYmUhKTogUmVnaW9uYCk7XG4gICAgLy8gdGhpcy51cGRhdGVTZWxmKCk7XG5cbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IHBDb25uJCB9ID0gY2hhbmdlcztcblxuICAgIGlmIChwQ29ubiQucHJldmlvdXNWYWx1ZSAmJiBwQ29ubiQucHJldmlvdXNWYWx1ZSAhPT0gcENvbm4kLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcbiAgfVxufVxuIiwiPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIldzc1F1aWNrQ3JlYXRlXCIgW3Byb3BzXT1cInsgaGVhZGluZyQsIGFjdGlvbnMkOiBjYXNlcyQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiJdfQ==
|
|
@@ -88,6 +88,7 @@ export class TodoComponent {
|
|
|
88
88
|
this.arAssignments$ = this.getCaseInfoAssignment(this.assignmentsSource$, this.caseInfoID$);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
+
this.canPerform = this.arAssignments$?.[0]?.canPerform === 'true' || this.arAssignments$?.[0]?.canPerform === true;
|
|
91
92
|
this.currentUser$ = PCore.getEnvironmentInfo().getOperatorName();
|
|
92
93
|
this.currentUserInitials$ = this.utils.getInitials(this.currentUser$);
|
|
93
94
|
}
|
|
@@ -184,11 +185,11 @@ export class TodoComponent {
|
|
|
184
185
|
});
|
|
185
186
|
}
|
|
186
187
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TodoComponent, deps: [{ token: i1.ProgressSpinnerService }, { token: i2.ErrorMessagesService }, { token: i0.NgZone }, { token: i3.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
187
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TodoComponent, isStandalone: true, selector: "app-todo", inputs: { pConn$: "pConn$", caseInfoID$: "caseInfoID$", datasource$: "datasource$", headerText$: "headerText$", showTodoList$: "showTodoList$", target$: "target$", type$: "type$", context$: "context$", myWorkList$: "myWorkList$", isConfirm: "isConfirm" }, providers: [Utils], usesOnChanges: true, ngImport: i0, template: "<div class=\"psdk-todo\">\n <div class=\"psdk-todo-header\">\n <div *ngIf=\"showTodoList$\" class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div id=\"worklist\" class=\"psdk-todo-text\">{{ headerText$ }}</div>\n <div *ngIf=\"showTodoList$\" class=\"psdk-assignment-count\">{{ assignmentCount$ }}</div>\n </div>\n <br /><br />\n <div *ngIf=\"showTodoList$\" class=\"psdk-display-divider\"></div>\n\n <div class=\"psdk-todo-assignments\">\n <div *ngFor=\"let assignment of arAssignments$\">\n <div class=\"psdk-todo-assignment\">\n <div class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div class=\"psdk-todo-card\">\n <div class=\"psdk-todo-assignment-title\">{{ getAssignmentName(assignment) }}</div>\n <div class=\"psdk-todo-assignment-data\">\n <div class=\"psdk-todo-assignment-task\">\n {{ localizedVal('Task in', localeCategory) }}\n <button class=\"psdk-todo-id\" style=\"cursor: pointer\" (click)=\"clickGo(assignment)\">\n {{ assignment.name }} {{ getID(assignment) }}\n </button>\n <span *ngIf=\"assignment.status != undefined\">\n • <span class=\"psdk-todo-assignment-status\">{{ assignment?.status }}</span>\n </span>\n • {{ localizedVal('Urgency', localeCategory) }} {{ getPriority(assignment) }}\n </div>\n </div>\n </div>\n <div class=\"psdk-todo-assignment-action\">\n <button mat-flat-button color=\"primary\" (click)=\"clickGo(assignment)\">{{ localizedVal('Go', localeCategory) }}</button>\n </div>\n </div>\n <div class=\"psdk-display-divider\"></div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"assignmentCount$ > 3\">\n <div *ngIf=\"bShowMore$; else showLess\" class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showMore()\">{{ showMoreLocalizedValue === 'show_more' ? 'Show more' : showMoreLocalizedValue }}</button>\n </div>\n <ng-template #showLess>\n <div class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showLess()\">{{ showlessLocalizedValue === 'show_less' ? 'Show less' : showlessLocalizedValue }}</button>\n </div>\n </ng-template>\n</div>\n", styles: [".psdk-display-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-todo{padding:1rem;background-color:var(--app-form-color);border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}.psdk-todo-header{display:inline-flex}.psdk-todo-text{padding:.5rem .625rem;font-size:1.1rem;font-weight:700}.psdk-assignment-count{background-color:var(--app-primary-light-color);margin:.5rem;border-radius:45%;padding:.15rem .4rem}.psdk-todo-id{color:var(--app-primary-color);padding:0;cursor:pointer;border:0;background-color:transparent;align-items:center}.psdk-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:flex;background:var(--app-primary-color);color:var(--app-form-color);font-weight:700;font-size:1.25rem}.psdk-todo-assignment{display:inline-flex;width:100%;padding:.625rem 0rem}.psdk-todo-assignment-data{display:inline-flex}.psdk-todo-assignment-status{background-color:var(--app-neutral-light-color);border-radius:.125rem;color:var(--app-assignment-status-color);font-size:.75rem;font-weight:700;line-height:1.25rem;height:1.25rem;padding:0 .5rem;text-transform:uppercase}.psdk-todo-assignment-task{color:var(--app-neutral-color)}.psdk-todo-assignment-action{display:inline-flex}.psdk-todo-card{width:100%;padding-left:.625rem}.psdk-todo-show-more{width:100%;text-align:center;margin-top:.625rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TodoComponent, isStandalone: true, selector: "app-todo", inputs: { pConn$: "pConn$", caseInfoID$: "caseInfoID$", datasource$: "datasource$", headerText$: "headerText$", showTodoList$: "showTodoList$", target$: "target$", type$: "type$", context$: "context$", myWorkList$: "myWorkList$", isConfirm: "isConfirm" }, providers: [Utils], usesOnChanges: true, ngImport: i0, template: "<div class=\"psdk-todo\">\n <div class=\"psdk-todo-header\">\n <div *ngIf=\"showTodoList$\" class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div id=\"worklist\" class=\"psdk-todo-text\">{{ headerText$ }}</div>\n <div *ngIf=\"showTodoList$\" class=\"psdk-assignment-count\">{{ assignmentCount$ }}</div>\n </div>\n <br /><br />\n <div *ngIf=\"showTodoList$\" class=\"psdk-display-divider\"></div>\n\n <div class=\"psdk-todo-assignments\">\n <div *ngFor=\"let assignment of arAssignments$\">\n <div class=\"psdk-todo-assignment\">\n <div class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div class=\"psdk-todo-card\">\n <div class=\"psdk-todo-assignment-title\">{{ getAssignmentName(assignment) }}</div>\n <div class=\"psdk-todo-assignment-data\">\n <div class=\"psdk-todo-assignment-task\">\n {{ localizedVal('Task in', localeCategory) }}\n <button class=\"psdk-todo-id\" style=\"cursor: pointer\" (click)=\"clickGo(assignment)\">\n {{ assignment.name }} {{ getID(assignment) }}\n </button>\n <span *ngIf=\"assignment.status != undefined\">\n • <span class=\"psdk-todo-assignment-status\">{{ assignment?.status }}</span>\n </span>\n • {{ localizedVal('Urgency', localeCategory) }} {{ getPriority(assignment) }}\n </div>\n </div>\n </div>\n <div class=\"psdk-todo-assignment-action\" *ngIf=\"!isConfirm || canPerform\">\n <button mat-flat-button color=\"primary\" (click)=\"clickGo(assignment)\">{{ localizedVal('Go', localeCategory) }}</button>\n </div>\n </div>\n <div class=\"psdk-display-divider\"></div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"assignmentCount$ > 3\">\n <div *ngIf=\"bShowMore$; else showLess\" class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showMore()\">{{ showMoreLocalizedValue === 'show_more' ? 'Show more' : showMoreLocalizedValue }}</button>\n </div>\n <ng-template #showLess>\n <div class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showLess()\">{{ showlessLocalizedValue === 'show_less' ? 'Show less' : showlessLocalizedValue }}</button>\n </div>\n </ng-template>\n</div>\n", styles: [".psdk-display-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-todo{padding:1rem;background-color:var(--app-form-color);border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}.psdk-todo-header{display:inline-flex}.psdk-todo-text{padding:.5rem .625rem;font-size:1.1rem;font-weight:700}.psdk-assignment-count{background-color:var(--app-primary-light-color);margin:.5rem;border-radius:45%;padding:.15rem .4rem}.psdk-todo-id{color:var(--app-primary-color);padding:0;cursor:pointer;border:0;background-color:transparent;align-items:center}.psdk-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:flex;background:var(--app-primary-color);color:var(--app-form-color);font-weight:700;font-size:1.25rem}.psdk-todo-assignment{display:inline-flex;width:100%;padding:.625rem 0rem}.psdk-todo-assignment-data{display:inline-flex}.psdk-todo-assignment-status{background-color:var(--app-neutral-light-color);border-radius:.125rem;color:var(--app-assignment-status-color);font-size:.75rem;font-weight:700;line-height:1.25rem;height:1.25rem;padding:0 .5rem;text-transform:uppercase}.psdk-todo-assignment-task{color:var(--app-neutral-color)}.psdk-todo-assignment-action{display:inline-flex}.psdk-todo-card{width:100%;padding-left:.625rem}.psdk-todo-show-more{width:100%;text-align:center;margin-top:.625rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
188
189
|
}
|
|
189
190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TodoComponent, decorators: [{
|
|
190
191
|
type: Component,
|
|
191
|
-
args: [{ selector: 'app-todo', providers: [Utils], standalone: true, imports: [CommonModule, MatButtonModule], template: "<div class=\"psdk-todo\">\n <div class=\"psdk-todo-header\">\n <div *ngIf=\"showTodoList$\" class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div id=\"worklist\" class=\"psdk-todo-text\">{{ headerText$ }}</div>\n <div *ngIf=\"showTodoList$\" class=\"psdk-assignment-count\">{{ assignmentCount$ }}</div>\n </div>\n <br /><br />\n <div *ngIf=\"showTodoList$\" class=\"psdk-display-divider\"></div>\n\n <div class=\"psdk-todo-assignments\">\n <div *ngFor=\"let assignment of arAssignments$\">\n <div class=\"psdk-todo-assignment\">\n <div class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div class=\"psdk-todo-card\">\n <div class=\"psdk-todo-assignment-title\">{{ getAssignmentName(assignment) }}</div>\n <div class=\"psdk-todo-assignment-data\">\n <div class=\"psdk-todo-assignment-task\">\n {{ localizedVal('Task in', localeCategory) }}\n <button class=\"psdk-todo-id\" style=\"cursor: pointer\" (click)=\"clickGo(assignment)\">\n {{ assignment.name }} {{ getID(assignment) }}\n </button>\n <span *ngIf=\"assignment.status != undefined\">\n • <span class=\"psdk-todo-assignment-status\">{{ assignment?.status }}</span>\n </span>\n • {{ localizedVal('Urgency', localeCategory) }} {{ getPriority(assignment) }}\n </div>\n </div>\n </div>\n <div class=\"psdk-todo-assignment-action\">\n <button mat-flat-button color=\"primary\" (click)=\"clickGo(assignment)\">{{ localizedVal('Go', localeCategory) }}</button>\n </div>\n </div>\n <div class=\"psdk-display-divider\"></div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"assignmentCount$ > 3\">\n <div *ngIf=\"bShowMore$; else showLess\" class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showMore()\">{{ showMoreLocalizedValue === 'show_more' ? 'Show more' : showMoreLocalizedValue }}</button>\n </div>\n <ng-template #showLess>\n <div class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showLess()\">{{ showlessLocalizedValue === 'show_less' ? 'Show less' : showlessLocalizedValue }}</button>\n </div>\n </ng-template>\n</div>\n", styles: [".psdk-display-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-todo{padding:1rem;background-color:var(--app-form-color);border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}.psdk-todo-header{display:inline-flex}.psdk-todo-text{padding:.5rem .625rem;font-size:1.1rem;font-weight:700}.psdk-assignment-count{background-color:var(--app-primary-light-color);margin:.5rem;border-radius:45%;padding:.15rem .4rem}.psdk-todo-id{color:var(--app-primary-color);padding:0;cursor:pointer;border:0;background-color:transparent;align-items:center}.psdk-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:flex;background:var(--app-primary-color);color:var(--app-form-color);font-weight:700;font-size:1.25rem}.psdk-todo-assignment{display:inline-flex;width:100%;padding:.625rem 0rem}.psdk-todo-assignment-data{display:inline-flex}.psdk-todo-assignment-status{background-color:var(--app-neutral-light-color);border-radius:.125rem;color:var(--app-assignment-status-color);font-size:.75rem;font-weight:700;line-height:1.25rem;height:1.25rem;padding:0 .5rem;text-transform:uppercase}.psdk-todo-assignment-task{color:var(--app-neutral-color)}.psdk-todo-assignment-action{display:inline-flex}.psdk-todo-card{width:100%;padding-left:.625rem}.psdk-todo-show-more{width:100%;text-align:center;margin-top:.625rem}\n"] }]
|
|
192
|
+
args: [{ selector: 'app-todo', providers: [Utils], standalone: true, imports: [CommonModule, MatButtonModule], template: "<div class=\"psdk-todo\">\n <div class=\"psdk-todo-header\">\n <div *ngIf=\"showTodoList$\" class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div id=\"worklist\" class=\"psdk-todo-text\">{{ headerText$ }}</div>\n <div *ngIf=\"showTodoList$\" class=\"psdk-assignment-count\">{{ assignmentCount$ }}</div>\n </div>\n <br /><br />\n <div *ngIf=\"showTodoList$\" class=\"psdk-display-divider\"></div>\n\n <div class=\"psdk-todo-assignments\">\n <div *ngFor=\"let assignment of arAssignments$\">\n <div class=\"psdk-todo-assignment\">\n <div class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div class=\"psdk-todo-card\">\n <div class=\"psdk-todo-assignment-title\">{{ getAssignmentName(assignment) }}</div>\n <div class=\"psdk-todo-assignment-data\">\n <div class=\"psdk-todo-assignment-task\">\n {{ localizedVal('Task in', localeCategory) }}\n <button class=\"psdk-todo-id\" style=\"cursor: pointer\" (click)=\"clickGo(assignment)\">\n {{ assignment.name }} {{ getID(assignment) }}\n </button>\n <span *ngIf=\"assignment.status != undefined\">\n • <span class=\"psdk-todo-assignment-status\">{{ assignment?.status }}</span>\n </span>\n • {{ localizedVal('Urgency', localeCategory) }} {{ getPriority(assignment) }}\n </div>\n </div>\n </div>\n <div class=\"psdk-todo-assignment-action\" *ngIf=\"!isConfirm || canPerform\">\n <button mat-flat-button color=\"primary\" (click)=\"clickGo(assignment)\">{{ localizedVal('Go', localeCategory) }}</button>\n </div>\n </div>\n <div class=\"psdk-display-divider\"></div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"assignmentCount$ > 3\">\n <div *ngIf=\"bShowMore$; else showLess\" class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showMore()\">{{ showMoreLocalizedValue === 'show_more' ? 'Show more' : showMoreLocalizedValue }}</button>\n </div>\n <ng-template #showLess>\n <div class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showLess()\">{{ showlessLocalizedValue === 'show_less' ? 'Show less' : showlessLocalizedValue }}</button>\n </div>\n </ng-template>\n</div>\n", styles: [".psdk-display-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-todo{padding:1rem;background-color:var(--app-form-color);border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}.psdk-todo-header{display:inline-flex}.psdk-todo-text{padding:.5rem .625rem;font-size:1.1rem;font-weight:700}.psdk-assignment-count{background-color:var(--app-primary-light-color);margin:.5rem;border-radius:45%;padding:.15rem .4rem}.psdk-todo-id{color:var(--app-primary-color);padding:0;cursor:pointer;border:0;background-color:transparent;align-items:center}.psdk-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:flex;background:var(--app-primary-color);color:var(--app-form-color);font-weight:700;font-size:1.25rem}.psdk-todo-assignment{display:inline-flex;width:100%;padding:.625rem 0rem}.psdk-todo-assignment-data{display:inline-flex}.psdk-todo-assignment-status{background-color:var(--app-neutral-light-color);border-radius:.125rem;color:var(--app-assignment-status-color);font-size:.75rem;font-weight:700;line-height:1.25rem;height:1.25rem;padding:0 .5rem;text-transform:uppercase}.psdk-todo-assignment-task{color:var(--app-neutral-color)}.psdk-todo-assignment-action{display:inline-flex}.psdk-todo-card{width:100%;padding-left:.625rem}.psdk-todo-show-more{width:100%;text-align:center;margin-top:.625rem}\n"] }]
|
|
192
193
|
}], ctorParameters: () => [{ type: i1.ProgressSpinnerService }, { type: i2.ErrorMessagesService }, { type: i0.NgZone }, { type: i3.Utils }], propDecorators: { pConn$: [{
|
|
193
194
|
type: Input
|
|
194
195
|
}], caseInfoID$: [{
|
|
@@ -210,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
210
211
|
}], isConfirm: [{
|
|
211
212
|
type: Input
|
|
212
213
|
}] } });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9kby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L3RvZG8vdG9kby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L3RvZG8vdG9kby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7QUFtQmhELE1BQU0sT0FBTyxhQUFhO0lBMEJ4QixZQUNVLFNBQWlDLEVBQ2pDLFNBQStCLEVBQy9CLE1BQWMsRUFDZCxLQUFZO1FBSFosY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDakMsY0FBUyxHQUFULFNBQVMsQ0FBc0I7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQU87UUF6QmIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsVUFBSyxHQUFHLFVBQVUsQ0FBQztRQU81Qix5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFFNUIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUlsQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUNyRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQUN4QiwyQkFBc0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN4RSwyQkFBc0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztJQU9yRSxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxHQUFRLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUUzRixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUM5QixLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDLFlBQVksRUFDaEQsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUMsRUFDRCxZQUFZLENBQ2IsQ0FBQztRQUVGLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQzlCLGtCQUFrQixFQUNsQixHQUFHLEVBQUU7WUFDSCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxFQUNELGtCQUFrQixDQUNuQixDQUFDO1FBRUYsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FDOUIsb0JBQW9CLEVBQ3BCLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLEVBQ0Qsb0JBQW9CLENBQ3JCLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsR0FBUSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFM0YsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUVuRyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFM0UsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxXQUFXO1FBQ1QsdUNBQXVDO1FBQ3ZDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsR0FBRztRQUVkLEtBQUssQ0FBQyxlQUFlLEVBQUU7WUFDckIsd0dBQXdHO2FBQ3ZHLE9BQU8sQ0FBQyxHQUFHLENBQ2Y7YUFDRSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDbkIsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3RCLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRztnQkFDaEIsU0FBUyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSTthQUNsQyxDQUFDO1lBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBYyxDQUFDO1FBRTlGLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBQ2xELENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNsRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUVsRyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUM7UUFFL0UsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMxRSxDQUFDO2FBQU0sQ0FBQztZQUNOLDZCQUE2QjtZQUM3Qix3Q0FBd0M7WUFDeEMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlGLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBZTtRQUNuQixJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ2hDLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxpQkFBd0I7UUFDMUMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMvRSxDQUFDO0lBRUQsZUFBZSxDQUFDLFVBQVU7UUFDeEIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3pFLENBQUM7SUFFRCxXQUFXLENBQUMsVUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDcEYsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQVU7UUFDMUIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQ2pGLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUN2RCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0Qsb0JBQW9CO1FBQ3BCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELHFCQUFxQixDQUFDLGlCQUF3QixFQUFFLFVBQWtCO1FBQ2hFLE1BQU0sTUFBTSxHQUFVLEVBQUUsQ0FBQztRQUN6QixLQUFLLE1BQU0sTUFBTSxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdkMsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELDJCQUEyQjtnQkFDM0IsT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQztnQkFDaEQscUJBQXFCO2dCQUNyQixPQUFPLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksU0FBUyxDQUFDO2dCQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUV2QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsVUFBVTtRQUNwQixPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxVQUFVO1FBQ2hCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsR0FBRyxVQUFVLENBQUM7UUFDcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQy9DLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDO1FBRXJDLE1BQU0sT0FBTyxHQUFRLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLENBQUM7UUFFN0QsSUFBSSxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMzQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2RCxDQUFDO1FBRUQsSUFBSSxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDM0IsT0FBTyxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUNwQyxPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUN2QixPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyxJQUFJLENBQUMsTUFBTTthQUNSLGFBQWEsRUFBRTthQUNmLGNBQWMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQzthQUN0QyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0E5T1UsYUFBYTttR0FBYixhQUFhLHVUQUpiLENBQUMsS0FBSyxDQUFDLCtDQ3JCcEIsaXdFQStDQSxzZ0REeEJZLFlBQVksK1BBQUUsZUFBZTs7NEZBRTVCLGFBQWE7a0JBUnpCLFNBQVM7K0JBQ0UsVUFBVSxhQUdULENBQUMsS0FBSyxDQUFDLGNBQ04sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQzt1S0FHL0IsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBwdWJsaWNDb25zdGFudHMgfSBmcm9tICdAcGVnYS9wY29yZS1wY29ubmVjdC10eXBlZGVmcy9jb25zdGFudHMnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXNzYWdlcy9wcm9ncmVzcy1zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWVzc2FnZXMvZXJyb3ItbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcblxuaW50ZXJmYWNlIFRvRG9Qcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgZGF0YXNvdXJjZT86IGFueTtcbiAgaGVhZGVyVGV4dD86IHN0cmluZztcbiAgbXlXb3JrTGlzdD86IGFueTtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXRvZG8nLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9kby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RvZG8uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVXRpbHNdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFRvZG9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGNhc2VJbmZvSUQkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhdGFzb3VyY2UkOiBhbnk7XG4gIEBJbnB1dCgpIGhlYWRlclRleHQkPzogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93VG9kb0xpc3QkID0gdHJ1ZTtcbiAgQElucHV0KCkgdGFyZ2V0JDogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlJCA9ICd3b3JrbGlzdCc7XG4gIEBJbnB1dCgpIGNvbnRleHQkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG15V29ya0xpc3QkOiBhbnk7XG4gIEBJbnB1dCgpIGlzQ29uZmlybTtcblxuICBjb25maWdQcm9wcyQ6IFRvRG9Qcm9wcztcbiAgY3VycmVudFVzZXIkOiBzdHJpbmc7XG4gIGN1cnJlbnRVc2VySW5pdGlhbHMkID0gJy0tJztcbiAgYXNzaWdubWVudENvdW50JDogbnVtYmVyO1xuICBiU2hvd01vcmUkID0gdHJ1ZTtcbiAgYXJBc3NpZ25tZW50cyQ6IGFueVtdO1xuICBhc3NpZ25tZW50c1NvdXJjZSQ6IGFueTtcbiAgQ09OU1RTOiB0eXBlb2YgcHVibGljQ29uc3RhbnRzO1xuICBiTG9nZ2luZyA9IHRydWU7XG4gIGxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ1RvZG8nO1xuICBzaG93bGVzc0xvY2FsaXplZFZhbHVlID0gdGhpcy5sb2NhbGl6ZWRWYWwoJ3Nob3dfbGVzcycsICdDb3Ntb3NGaWVsZHMnKTtcbiAgc2hvd01vcmVMb2NhbGl6ZWRWYWx1ZSA9IHRoaXMubG9jYWxpemVkVmFsKCdzaG93X21vcmUnLCAnQ29zbW9zRmllbGRzJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlclNlcnZpY2U6IEVycm9yTWVzc2FnZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuQ09OU1RTID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG4gICAgY29uc3QgeyBDUkVBVEVfU1RBR0VfU0FWRUQsIENSRUFURV9TVEFHRV9ERUxFVEVEIH06IGFueSA9IFBDb3JlLmdldEV2ZW50cygpLmdldENhc2VFdmVudCgpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICBQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlVG9EbygpO1xuICAgICAgfSxcbiAgICAgICd1cGRhdGVUb0RvJ1xuICAgICk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnN1YnNjcmliZShcbiAgICAgIENSRUFURV9TVEFHRV9TQVZFRCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVMaXN0KCk7XG4gICAgICB9LFxuICAgICAgQ1JFQVRFX1NUQUdFX1NBVkVEXG4gICAgKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgQ1JFQVRFX1NUQUdFX0RFTEVURUQsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlTGlzdCgpO1xuICAgICAgfSxcbiAgICAgIENSRUFURV9TVEFHRV9ERUxFVEVEXG4gICAgKTtcblxuICAgIHRoaXMudXBkYXRlVG9EbygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY29uc3QgeyBDUkVBVEVfU1RBR0VfU0FWRUQsIENSRUFURV9TVEFHRV9ERUxFVEVEIH06IGFueSA9IFBDb3JlLmdldEV2ZW50cygpLmdldENhc2VFdmVudCgpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwsICd1cGRhdGVUb0RvJyk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKENSRUFURV9TVEFHRV9TQVZFRCwgQ1JFQVRFX1NUQUdFX1NBVkVEKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoQ1JFQVRFX1NUQUdFX0RFTEVURUQsIENSRUFURV9TVEFHRV9ERUxFVEVEKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIGRvbid0IHVwZGF0ZSB1bnRpbCB3ZSd2YSBoYWQgYW4gaW5pdFxuICAgIGlmIChQQ29yZSkge1xuICAgICAgdGhpcy51cGRhdGVUb0RvKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlV29ya0xpc3Qoa2V5KSB7XG4gICAgKFxuICAgICAgUENvcmUuZ2V0RGF0YUFwaVV0aWxzKClcbiAgICAgICAgLy8gQHRzLWlnbm9yZSAtIDJuZCBwYXJhbWV0ZXIgXCJwYXlsb2FkXCIgYW5kIDNyZCBwYXJhbWV0ZXIgXCJjb250ZXh0XCIgc2hvdWxkIGJlIG9wdGlvbmFsIGluIGdldERhdGEgbWV0aG9kXG4gICAgICAgIC5nZXREYXRhKGtleSkgYXMgUHJvbWlzZTxhbnk+XG4gICAgKVxuICAgICAgLnRoZW4ocmVzcG9uc2VEYXRhID0+IHtcbiAgICAgICAgY29uc3QgZGF0YU9iamVjdCA9IHt9O1xuICAgICAgICBkYXRhT2JqZWN0W2tleV0gPSB7XG4gICAgICAgICAgcHhSZXN1bHRzOiByZXNwb25zZURhdGEuZGF0YS5kYXRhXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5wQ29ubiQudXBkYXRlU3RhdGUoZGF0YU9iamVjdCk7XG4gICAgICAgIHRoaXMudXBkYXRlVG9EbygpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycj8uc3RhY2spO1xuICAgICAgfSk7XG4gIH1cblxuICB1cGRhdGVMaXN0KCkge1xuICAgIHRoaXMudXBkYXRlV29ya0xpc3QoJ0RfcHlNeVdvcmtMaXN0Jyk7XG4gIH1cblxuICB1cGRhdGVUb0RvKCkge1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIFRvRG9Qcm9wcztcblxuICAgIGlmICh0aGlzLmhlYWRlclRleHQkID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5oZWFkZXJUZXh0JCA9IHRoaXMuY29uZmlnUHJvcHMkLmhlYWRlclRleHQ7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhc291cmNlJCA9IHRoaXMuY29uZmlnUHJvcHMkLmRhdGFzb3VyY2UgPyB0aGlzLmNvbmZpZ1Byb3BzJC5kYXRhc291cmNlIDogdGhpcy5kYXRhc291cmNlJDtcbiAgICB0aGlzLm15V29ya0xpc3QkID0gdGhpcy5jb25maWdQcm9wcyQubXlXb3JrTGlzdCA/IHRoaXMuY29uZmlnUHJvcHMkLm15V29ya0xpc3QgOiB0aGlzLm15V29ya0xpc3QkO1xuXG4gICAgdGhpcy5hc3NpZ25tZW50c1NvdXJjZSQgPSB0aGlzLmRhdGFzb3VyY2UkPy5zb3VyY2UgfHwgdGhpcy5teVdvcmtMaXN0JD8uc291cmNlO1xuXG4gICAgaWYgKHRoaXMuc2hvd1RvZG9MaXN0JCkge1xuICAgICAgdGhpcy5hc3NpZ25tZW50Q291bnQkID0gdGhpcy5hc3NpZ25tZW50c1NvdXJjZSQgIT0gbnVsbCA/IHRoaXMuYXNzaWdubWVudHNTb3VyY2UkLmxlbmd0aCA6IDA7XG4gICAgICB0aGlzLmFyQXNzaWdubWVudHMkID0gdGhpcy50b3BUaHJlZUFzc2lnbm1lbnRzKHRoaXMuYXNzaWdubWVudHNTb3VyY2UkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZ2V0IGNhc2VJbmZvSWQgYXNzaWdubWVudC5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sb25lbHktaWZcbiAgICAgIGlmICh0aGlzLmNhc2VJbmZvSUQkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmFyQXNzaWdubWVudHMkID0gdGhpcy5nZXRDYXNlSW5mb0Fzc2lnbm1lbnQodGhpcy5hc3NpZ25tZW50c1NvdXJjZSQsIHRoaXMuY2FzZUluZm9JRCQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFVzZXIkID0gUENvcmUuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0T3BlcmF0b3JOYW1lKCk7XG4gICAgdGhpcy5jdXJyZW50VXNlckluaXRpYWxzJCA9IHRoaXMudXRpbHMuZ2V0SW5pdGlhbHModGhpcy5jdXJyZW50VXNlciQpO1xuICB9XG5cbiAgZ2V0SUQoYXNzaWdubWVudDogYW55KSB7XG4gICAgaWYgKGFzc2lnbm1lbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IHJlZktleSA9IGFzc2lnbm1lbnQudmFsdWU7XG4gICAgICByZXR1cm4gcmVmS2V5LnN1YnN0cmluZyhyZWZLZXkubGFzdEluZGV4T2YoJyAnKSArIDEpO1xuICAgIH1cbiAgICBjb25zdCByZWZLZXkgPSBhc3NpZ25tZW50LklEO1xuICAgIGNvbnN0IGFyS2V5cyA9IHJlZktleS5zcGxpdCgnIScpWzBdLnNwbGl0KCcgJyk7XG4gICAgcmV0dXJuIGFyS2V5c1syXTtcbiAgfVxuXG4gIHRvcFRocmVlQXNzaWdubWVudHMoYXNzaWdubWVudHNTb3VyY2U6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGFzc2lnbm1lbnRzU291cmNlKSA/IGFzc2lnbm1lbnRzU291cmNlLnNsaWNlKDAsIDMpIDogW107XG4gIH1cblxuICBnZXRBc3NpZ25tZW50SWQoYXNzaWdubWVudCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUkID09PSB0aGlzLkNPTlNUUy5UT0RPID8gYXNzaWdubWVudC5JRCA6IGFzc2lnbm1lbnQuaWQ7XG4gIH1cblxuICBnZXRQcmlvcml0eShhc3NpZ25tZW50KSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSQgPT09IHRoaXMuQ09OU1RTLlRPRE8gPyBhc3NpZ25tZW50LnVyZ2VuY3kgOiBhc3NpZ25tZW50LnByaW9yaXR5O1xuICB9XG5cbiAgZ2V0QXNzaWdubWVudE5hbWUoYXNzaWdubWVudCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUkID09PSB0aGlzLkNPTlNUUy5UT0RPID8gYXNzaWdubWVudC5uYW1lIDogYXNzaWdubWVudC5zdGVwTmFtZTtcbiAgfVxuXG4gIGluaXRBc3NpZ25tZW50cygpOiBhbnlbXSB7XG4gICAgaWYgKHRoaXMuYXNzaWdubWVudHNTb3VyY2UkKSB7XG4gICAgICB0aGlzLmFzc2lnbm1lbnRDb3VudCQgPSB0aGlzLmFzc2lnbm1lbnRzU291cmNlJC5sZW5ndGg7XG4gICAgICByZXR1cm4gdGhpcy50b3BUaHJlZUFzc2lnbm1lbnRzKHRoaXMuYXNzaWdubWVudHNTb3VyY2UkKTtcbiAgICB9XG4gICAgLy8gdHVybiBvZmYgdG9kb2xpc3RcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRDYXNlSW5mb0Fzc2lnbm1lbnQoYXNzaWdubWVudHNTb3VyY2U6IGFueVtdLCBjYXNlSW5mb0lEOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2YgYXNzaWdubWVudHNTb3VyY2UpIHtcbiAgICAgIGlmIChzb3VyY2UuSUQuaW5kZXhPZihjYXNlSW5mb0lEKSA+PSAwKSB7XG4gICAgICAgIGNvbnN0IGxpc3RSb3cgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHNvdXJjZSkpO1xuICAgICAgICAvLyB1cmdlbmN5IGJlY29tZXMgcHJpb3JpdHlcbiAgICAgICAgbGlzdFJvdy5wcmlvcml0eSA9IGxpc3RSb3cudXJnZW5jeSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIC8vIG1pbWljIHJlZ3VsYXIgbGlzdFxuICAgICAgICBsaXN0Um93LmlkID0gbGlzdFJvdy5JRCB8fCB1bmRlZmluZWQ7XG4gICAgICAgIHJlc3VsdC5wdXNoKGxpc3RSb3cpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgX3Nob3dNb3JlKCkge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmJTaG93TW9yZSQgPSBmYWxzZTtcbiAgICAgIHRoaXMuYXJBc3NpZ25tZW50cyQgPSB0aGlzLmFzc2lnbm1lbnRzU291cmNlJDtcbiAgICB9KTtcbiAgfVxuXG4gIF9zaG93TGVzcygpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5iU2hvd01vcmUkID0gdHJ1ZTtcblxuICAgICAgdGhpcy5hckFzc2lnbm1lbnRzJCA9IHRoaXMudG9wVGhyZWVBc3NpZ25tZW50cyh0aGlzLmFzc2lnbm1lbnRzU291cmNlJCk7XG4gICAgfSk7XG4gIH1cblxuICBpc0NoaWxkQ2FzZShhc3NpZ25tZW50KSB7XG4gICAgcmV0dXJuIGFzc2lnbm1lbnQuaXNDaGlsZDtcbiAgfVxuXG4gIGNsaWNrR28oYXNzaWdubWVudCkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRBc3NpZ25tZW50SWQoYXNzaWdubWVudCk7XG4gICAgbGV0IHsgY2xhc3NuYW1lID0gJycgfSA9IGFzc2lnbm1lbnQ7XG4gICAgY29uc3Qgc1RhcmdldCA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcbiAgICBjb25zdCBzVGFyZ2V0Q29udGFpbmVyTmFtZSA9IHNUYXJnZXQ7XG5cbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7IGNvbnRhaW5lck5hbWU6IHNUYXJnZXRDb250YWluZXJOYW1lIH07XG5cbiAgICBpZiAoY2xhc3NuYW1lID09PSBudWxsIHx8IGNsYXNzbmFtZSA9PT0gJycpIHtcbiAgICAgIGNsYXNzbmFtZSA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0Q2xhc3NOYW1lKCk7XG4gICAgfVxuXG4gICAgaWYgKHNUYXJnZXQgPT09ICd3b3JrYXJlYScpIHtcbiAgICAgIG9wdGlvbnMuaXNBY3Rpb25Gcm9tVG9Eb0xpc3QgPSB0cnVlO1xuICAgICAgb3B0aW9ucy50YXJnZXQgPSAnJztcbiAgICAgIG9wdGlvbnMuY29udGV4dCA9IG51bGw7XG4gICAgICBvcHRpb25zLmlzQ2hpbGQgPSB0aGlzLmlzQ2hpbGRDYXNlKGFzc2lnbm1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zLmlzQWN0aW9uRnJvbVRvRG9MaXN0ID0gZmFsc2U7XG4gICAgICBvcHRpb25zLnRhcmdldCA9IHNUYXJnZXQ7XG4gICAgfVxuXG4gICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UodHJ1ZSk7XG5cbiAgICB0aGlzLnBDb25uJFxuICAgICAgLmdldEFjdGlvbnNBcGkoKVxuICAgICAgLm9wZW5Bc3NpZ25tZW50KGlkLCBjbGFzc25hbWUsIG9wdGlvbnMpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMuYkxvZ2dpbmcpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgb3BlbkFzc2lnbm1lbnQgY29tcGxldGVkYCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdzaG93JywgJ0ZhaWxlZCB0byBvcGVuJyk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBzZGstdG9kb1wiPlxuICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWhlYWRlclwiPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93VG9kb0xpc3QkXCIgY2xhc3M9XCJwc2RrLWF2YXRhclwiPnt7IHRoaXMuY3VycmVudFVzZXJJbml0aWFscyQgfX08L2Rpdj5cbiAgICA8ZGl2IGlkPVwid29ya2xpc3RcIiBjbGFzcz1cInBzZGstdG9kby10ZXh0XCI+e3sgaGVhZGVyVGV4dCQgfX08L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1RvZG9MaXN0JFwiIGNsYXNzPVwicHNkay1hc3NpZ25tZW50LWNvdW50XCI+e3sgYXNzaWdubWVudENvdW50JCB9fTwvZGl2PlxuICA8L2Rpdj5cbiAgPGJyIC8+PGJyIC8+XG4gIDxkaXYgKm5nSWY9XCJzaG93VG9kb0xpc3QkXCIgY2xhc3M9XCJwc2RrLWRpc3BsYXktZGl2aWRlclwiPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJwc2RrLXRvZG8tYXNzaWdubWVudHNcIj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhc3NpZ25tZW50IG9mIGFyQXNzaWdubWVudHMkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstYXZhdGFyXCI+e3sgdGhpcy5jdXJyZW50VXNlckluaXRpYWxzJCB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWNhcmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnQtdGl0bGVcIj57eyBnZXRBc3NpZ25tZW50TmFtZShhc3NpZ25tZW50KSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLXRvZG8tYXNzaWdubWVudC1kYXRhXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnQtdGFza1wiPlxuICAgICAgICAgICAgICB7eyBsb2NhbGl6ZWRWYWwoJ1Rhc2sgaW4nLCBsb2NhbGVDYXRlZ29yeSkgfX1cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBzZGstdG9kby1pZFwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCIgKGNsaWNrKT1cImNsaWNrR28oYXNzaWdubWVudClcIj5cbiAgICAgICAgICAgICAgICB7eyBhc3NpZ25tZW50Lm5hbWUgfX0ge3sgZ2V0SUQoYXNzaWdubWVudCkgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYXNzaWdubWVudC5zdGF0dXMgIT0gdW5kZWZpbmVkXCI+XG4gICAgICAgICAgICAgICAgJmJ1bGw7IDxzcGFuIGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnQtc3RhdHVzXCI+e3sgYXNzaWdubWVudD8uc3RhdHVzIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICZidWxsOyB7eyBsb2NhbGl6ZWRWYWwoJ1VyZ2VuY3knLCBsb2NhbGVDYXRlZ29yeSkgfX0ge3sgZ2V0UHJpb3JpdHkoYXNzaWdubWVudCkgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1hc3NpZ25tZW50LWFjdGlvblwiPlxuICAgICAgICAgIDxidXR0b24gbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJjbGlja0dvKGFzc2lnbm1lbnQpXCI+e3sgbG9jYWxpemVkVmFsKCdHbycsIGxvY2FsZUNhdGVnb3J5KSB9fTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstZGlzcGxheS1kaXZpZGVyXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJhc3NpZ25tZW50Q291bnQkID4gM1wiPlxuICA8ZGl2ICpuZ0lmPVwiYlNob3dNb3JlJDsgZWxzZSBzaG93TGVzc1wiIGNsYXNzPVwicHNkay10b2RvLXNob3ctbW9yZVwiPlxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJfc2hvd01vcmUoKVwiPnt7IHNob3dNb3JlTG9jYWxpemVkVmFsdWUgPT09ICdzaG93X21vcmUnID8gJ1Nob3cgbW9yZScgOiBzaG93TW9yZUxvY2FsaXplZFZhbHVlIH19PC9idXR0b24+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3Nob3dMZXNzPlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLXRvZG8tc2hvdy1tb3JlXCI+XG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwiX3Nob3dMZXNzKClcIj57eyBzaG93bGVzc0xvY2FsaXplZFZhbHVlID09PSAnc2hvd19sZXNzJyA/ICdTaG93IGxlc3MnIDogc2hvd2xlc3NMb2NhbGl6ZWRWYWx1ZSB9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9kby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L3RvZG8vdG9kby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L3RvZG8vdG9kby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7QUFtQmhELE1BQU0sT0FBTyxhQUFhO0lBMkJ4QixZQUNVLFNBQWlDLEVBQ2pDLFNBQStCLEVBQy9CLE1BQWMsRUFDZCxLQUFZO1FBSFosY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDakMsY0FBUyxHQUFULFNBQVMsQ0FBc0I7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQU87UUExQmIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsVUFBSyxHQUFHLFVBQVUsQ0FBQztRQU81Qix5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFFNUIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUlsQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUNyRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQUN4QiwyQkFBc0IsR0FBRyxJQUFJ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Q0FBQzsrR0EvT1UsYUFBYTttR0FBYixhQUFhLHVUQUpiLENBQUMsS0FBSyxDQUFDLCtDQ3JCcEIsb3lFQStDQSxzZ0REeEJZLFlBQVksK1BBQUUsZUFBZTs7NEZBRTVCLGFBQWE7a0JBUnpCLFNBQVM7K0JBQ0UsVUFBVSxhQUdULENBQUMsS0FBSyxDQUFDLGNBQ04sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQzt1S0FHL0IsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBwdWJsaWNDb25zdGFudHMgfSBmcm9tICdAcGVnYS9wY29yZS1wY29ubmVjdC10eXBlZGVmcy9jb25zdGFudHMnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXNzYWdlcy9wcm9ncmVzcy1zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWVzc2FnZXMvZXJyb3ItbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcblxuaW50ZXJmYWNlIFRvRG9Qcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgZGF0YXNvdXJjZT86IGFueTtcbiAgaGVhZGVyVGV4dD86IHN0cmluZztcbiAgbXlXb3JrTGlzdD86IGFueTtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXRvZG8nLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9kby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RvZG8uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVXRpbHNdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFRvZG9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGNhc2VJbmZvSUQkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhdGFzb3VyY2UkOiBhbnk7XG4gIEBJbnB1dCgpIGhlYWRlclRleHQkPzogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93VG9kb0xpc3QkID0gdHJ1ZTtcbiAgQElucHV0KCkgdGFyZ2V0JDogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlJCA9ICd3b3JrbGlzdCc7XG4gIEBJbnB1dCgpIGNvbnRleHQkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG15V29ya0xpc3QkOiBhbnk7XG4gIEBJbnB1dCgpIGlzQ29uZmlybTtcblxuICBjb25maWdQcm9wcyQ6IFRvRG9Qcm9wcztcbiAgY3VycmVudFVzZXIkOiBzdHJpbmc7XG4gIGN1cnJlbnRVc2VySW5pdGlhbHMkID0gJy0tJztcbiAgYXNzaWdubWVudENvdW50JDogbnVtYmVyO1xuICBiU2hvd01vcmUkID0gdHJ1ZTtcbiAgYXJBc3NpZ25tZW50cyQ6IGFueVtdO1xuICBhc3NpZ25tZW50c1NvdXJjZSQ6IGFueTtcbiAgQ09OU1RTOiB0eXBlb2YgcHVibGljQ29uc3RhbnRzO1xuICBiTG9nZ2luZyA9IHRydWU7XG4gIGxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ1RvZG8nO1xuICBzaG93bGVzc0xvY2FsaXplZFZhbHVlID0gdGhpcy5sb2NhbGl6ZWRWYWwoJ3Nob3dfbGVzcycsICdDb3Ntb3NGaWVsZHMnKTtcbiAgc2hvd01vcmVMb2NhbGl6ZWRWYWx1ZSA9IHRoaXMubG9jYWxpemVkVmFsKCdzaG93X21vcmUnLCAnQ29zbW9zRmllbGRzJyk7XG4gIGNhblBlcmZvcm06IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlclNlcnZpY2U6IEVycm9yTWVzc2FnZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuQ09OU1RTID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG4gICAgY29uc3QgeyBDUkVBVEVfU1RBR0VfU0FWRUQsIENSRUFURV9TVEFHRV9ERUxFVEVEIH06IGFueSA9IFBDb3JlLmdldEV2ZW50cygpLmdldENhc2VFdmVudCgpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICBQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlVG9EbygpO1xuICAgICAgfSxcbiAgICAgICd1cGRhdGVUb0RvJ1xuICAgICk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnN1YnNjcmliZShcbiAgICAgIENSRUFURV9TVEFHRV9TQVZFRCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVMaXN0KCk7XG4gICAgICB9LFxuICAgICAgQ1JFQVRFX1NUQUdFX1NBVkVEXG4gICAgKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgQ1JFQVRFX1NUQUdFX0RFTEVURUQsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlTGlzdCgpO1xuICAgICAgfSxcbiAgICAgIENSRUFURV9TVEFHRV9ERUxFVEVEXG4gICAgKTtcblxuICAgIHRoaXMudXBkYXRlVG9EbygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY29uc3QgeyBDUkVBVEVfU1RBR0VfU0FWRUQsIENSRUFURV9TVEFHRV9ERUxFVEVEIH06IGFueSA9IFBDb3JlLmdldEV2ZW50cygpLmdldENhc2VFdmVudCgpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwsICd1cGRhdGVUb0RvJyk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKENSRUFURV9TVEFHRV9TQVZFRCwgQ1JFQVRFX1NUQUdFX1NBVkVEKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoQ1JFQVRFX1NUQUdFX0RFTEVURUQsIENSRUFURV9TVEFHRV9ERUxFVEVEKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIGRvbid0IHVwZGF0ZSB1bnRpbCB3ZSd2YSBoYWQgYW4gaW5pdFxuICAgIGlmIChQQ29yZSkge1xuICAgICAgdGhpcy51cGRhdGVUb0RvKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlV29ya0xpc3Qoa2V5KSB7XG4gICAgUENvcmUuZ2V0RGF0YUFwaVV0aWxzKClcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSAybmQgcGFyYW1ldGVyIFwicGF5bG9hZFwiIGFuZCAzcmQgcGFyYW1ldGVyIFwiY29udGV4dFwiIHNob3VsZCBiZSBvcHRpb25hbCBpbiBnZXREYXRhIG1ldGhvZFxuICAgICAgLmdldERhdGEoa2V5KVxuICAgICAgLnRoZW4ocmVzcG9uc2VEYXRhID0+IHtcbiAgICAgICAgY29uc3QgZGF0YU9iamVjdCA9IHt9O1xuICAgICAgICBkYXRhT2JqZWN0W2tleV0gPSB7XG4gICAgICAgICAgcHhSZXN1bHRzOiByZXNwb25zZURhdGEuZGF0YS5kYXRhXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5wQ29ubiQudXBkYXRlU3RhdGUoZGF0YU9iamVjdCk7XG4gICAgICAgIHRoaXMudXBkYXRlVG9EbygpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycj8uc3RhY2spO1xuICAgICAgfSk7XG4gIH1cblxuICB1cGRhdGVMaXN0KCkge1xuICAgIHRoaXMudXBkYXRlV29ya0xpc3QoJ0RfcHlNeVdvcmtMaXN0Jyk7XG4gIH1cblxuICB1cGRhdGVUb0RvKCkge1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIFRvRG9Qcm9wcztcblxuICAgIGlmICh0aGlzLmhlYWRlclRleHQkID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5oZWFkZXJUZXh0JCA9IHRoaXMuY29uZmlnUHJvcHMkLmhlYWRlclRleHQ7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhc291cmNlJCA9IHRoaXMuY29uZmlnUHJvcHMkLmRhdGFzb3VyY2UgPyB0aGlzLmNvbmZpZ1Byb3BzJC5kYXRhc291cmNlIDogdGhpcy5kYXRhc291cmNlJDtcbiAgICB0aGlzLm15V29ya0xpc3QkID0gdGhpcy5jb25maWdQcm9wcyQubXlXb3JrTGlzdCA/IHRoaXMuY29uZmlnUHJvcHMkLm15V29ya0xpc3QgOiB0aGlzLm15V29ya0xpc3QkO1xuXG4gICAgdGhpcy5hc3NpZ25tZW50c1NvdXJjZSQgPSB0aGlzLmRhdGFzb3VyY2UkPy5zb3VyY2UgfHwgdGhpcy5teVdvcmtMaXN0JD8uc291cmNlO1xuXG4gICAgaWYgKHRoaXMuc2hvd1RvZG9MaXN0JCkge1xuICAgICAgdGhpcy5hc3NpZ25tZW50Q291bnQkID0gdGhpcy5hc3NpZ25tZW50c1NvdXJjZSQgIT0gbnVsbCA/IHRoaXMuYXNzaWdubWVudHNTb3VyY2UkLmxlbmd0aCA6IDA7XG4gICAgICB0aGlzLmFyQXNzaWdubWVudHMkID0gdGhpcy50b3BUaHJlZUFzc2lnbm1lbnRzKHRoaXMuYXNzaWdubWVudHNTb3VyY2UkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZ2V0IGNhc2VJbmZvSWQgYXNzaWdubWVudC5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sb25lbHktaWZcbiAgICAgIGlmICh0aGlzLmNhc2VJbmZvSUQkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmFyQXNzaWdubWVudHMkID0gdGhpcy5nZXRDYXNlSW5mb0Fzc2lnbm1lbnQodGhpcy5hc3NpZ25tZW50c1NvdXJjZSQsIHRoaXMuY2FzZUluZm9JRCQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2FuUGVyZm9ybSA9IHRoaXMuYXJBc3NpZ25tZW50cyQ/LlswXT8uY2FuUGVyZm9ybSA9PT0gJ3RydWUnIHx8IHRoaXMuYXJBc3NpZ25tZW50cyQ/LlswXT8uY2FuUGVyZm9ybSA9PT0gdHJ1ZTtcblxuICAgIHRoaXMuY3VycmVudFVzZXIkID0gUENvcmUuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0T3BlcmF0b3JOYW1lKCk7XG4gICAgdGhpcy5jdXJyZW50VXNlckluaXRpYWxzJCA9IHRoaXMudXRpbHMuZ2V0SW5pdGlhbHModGhpcy5jdXJyZW50VXNlciQpO1xuICB9XG5cbiAgZ2V0SUQoYXNzaWdubWVudDogYW55KSB7XG4gICAgaWYgKGFzc2lnbm1lbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IHJlZktleSA9IGFzc2lnbm1lbnQudmFsdWU7XG4gICAgICByZXR1cm4gcmVmS2V5LnN1YnN0cmluZyhyZWZLZXkubGFzdEluZGV4T2YoJyAnKSArIDEpO1xuICAgIH1cbiAgICBjb25zdCByZWZLZXkgPSBhc3NpZ25tZW50LklEO1xuICAgIGNvbnN0IGFyS2V5cyA9IHJlZktleS5zcGxpdCgnIScpWzBdLnNwbGl0KCcgJyk7XG4gICAgcmV0dXJuIGFyS2V5c1syXTtcbiAgfVxuXG4gIHRvcFRocmVlQXNzaWdubWVudHMoYXNzaWdubWVudHNTb3VyY2U6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGFzc2lnbm1lbnRzU291cmNlKSA/IGFzc2lnbm1lbnRzU291cmNlLnNsaWNlKDAsIDMpIDogW107XG4gIH1cblxuICBnZXRBc3NpZ25tZW50SWQoYXNzaWdubWVudCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUkID09PSB0aGlzLkNPTlNUUy5UT0RPID8gYXNzaWdubWVudC5JRCA6IGFzc2lnbm1lbnQuaWQ7XG4gIH1cblxuICBnZXRQcmlvcml0eShhc3NpZ25tZW50KSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSQgPT09IHRoaXMuQ09OU1RTLlRPRE8gPyBhc3NpZ25tZW50LnVyZ2VuY3kgOiBhc3NpZ25tZW50LnByaW9yaXR5O1xuICB9XG5cbiAgZ2V0QXNzaWdubWVudE5hbWUoYXNzaWdubWVudCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUkID09PSB0aGlzLkNPTlNUUy5UT0RPID8gYXNzaWdubWVudC5uYW1lIDogYXNzaWdubWVudC5zdGVwTmFtZTtcbiAgfVxuXG4gIGluaXRBc3NpZ25tZW50cygpOiBhbnlbXSB7XG4gICAgaWYgKHRoaXMuYXNzaWdubWVudHNTb3VyY2UkKSB7XG4gICAgICB0aGlzLmFzc2lnbm1lbnRDb3VudCQgPSB0aGlzLmFzc2lnbm1lbnRzU291cmNlJC5sZW5ndGg7XG4gICAgICByZXR1cm4gdGhpcy50b3BUaHJlZUFzc2lnbm1lbnRzKHRoaXMuYXNzaWdubWVudHNTb3VyY2UkKTtcbiAgICB9XG4gICAgLy8gdHVybiBvZmYgdG9kb2xpc3RcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRDYXNlSW5mb0Fzc2lnbm1lbnQoYXNzaWdubWVudHNTb3VyY2U6IGFueVtdLCBjYXNlSW5mb0lEOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2YgYXNzaWdubWVudHNTb3VyY2UpIHtcbiAgICAgIGlmIChzb3VyY2UuSUQuaW5kZXhPZihjYXNlSW5mb0lEKSA+PSAwKSB7XG4gICAgICAgIGNvbnN0IGxpc3RSb3cgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHNvdXJjZSkpO1xuICAgICAgICAvLyB1cmdlbmN5IGJlY29tZXMgcHJpb3JpdHlcbiAgICAgICAgbGlzdFJvdy5wcmlvcml0eSA9IGxpc3RSb3cudXJnZW5jeSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIC8vIG1pbWljIHJlZ3VsYXIgbGlzdFxuICAgICAgICBsaXN0Um93LmlkID0gbGlzdFJvdy5JRCB8fCB1bmRlZmluZWQ7XG4gICAgICAgIHJlc3VsdC5wdXNoKGxpc3RSb3cpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgX3Nob3dNb3JlKCkge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmJTaG93TW9yZSQgPSBmYWxzZTtcbiAgICAgIHRoaXMuYXJBc3NpZ25tZW50cyQgPSB0aGlzLmFzc2lnbm1lbnRzU291cmNlJDtcbiAgICB9KTtcbiAgfVxuXG4gIF9zaG93TGVzcygpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5iU2hvd01vcmUkID0gdHJ1ZTtcblxuICAgICAgdGhpcy5hckFzc2lnbm1lbnRzJCA9IHRoaXMudG9wVGhyZWVBc3NpZ25tZW50cyh0aGlzLmFzc2lnbm1lbnRzU291cmNlJCk7XG4gICAgfSk7XG4gIH1cblxuICBpc0NoaWxkQ2FzZShhc3NpZ25tZW50KSB7XG4gICAgcmV0dXJuIGFzc2lnbm1lbnQuaXNDaGlsZDtcbiAgfVxuXG4gIGNsaWNrR28oYXNzaWdubWVudCkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRBc3NpZ25tZW50SWQoYXNzaWdubWVudCk7XG4gICAgbGV0IHsgY2xhc3NuYW1lID0gJycgfSA9IGFzc2lnbm1lbnQ7XG4gICAgY29uc3Qgc1RhcmdldCA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcbiAgICBjb25zdCBzVGFyZ2V0Q29udGFpbmVyTmFtZSA9IHNUYXJnZXQ7XG5cbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7IGNvbnRhaW5lck5hbWU6IHNUYXJnZXRDb250YWluZXJOYW1lIH07XG5cbiAgICBpZiAoY2xhc3NuYW1lID09PSBudWxsIHx8IGNsYXNzbmFtZSA9PT0gJycpIHtcbiAgICAgIGNsYXNzbmFtZSA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0Q2xhc3NOYW1lKCk7XG4gICAgfVxuXG4gICAgaWYgKHNUYXJnZXQgPT09ICd3b3JrYXJlYScpIHtcbiAgICAgIG9wdGlvbnMuaXNBY3Rpb25Gcm9tVG9Eb0xpc3QgPSB0cnVlO1xuICAgICAgb3B0aW9ucy50YXJnZXQgPSAnJztcbiAgICAgIG9wdGlvbnMuY29udGV4dCA9IG51bGw7XG4gICAgICBvcHRpb25zLmlzQ2hpbGQgPSB0aGlzLmlzQ2hpbGRDYXNlKGFzc2lnbm1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zLmlzQWN0aW9uRnJvbVRvRG9MaXN0ID0gZmFsc2U7XG4gICAgICBvcHRpb25zLnRhcmdldCA9IHNUYXJnZXQ7XG4gICAgfVxuXG4gICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UodHJ1ZSk7XG5cbiAgICB0aGlzLnBDb25uJFxuICAgICAgLmdldEFjdGlvbnNBcGkoKVxuICAgICAgLm9wZW5Bc3NpZ25tZW50KGlkLCBjbGFzc25hbWUsIG9wdGlvbnMpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMuYkxvZ2dpbmcpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgb3BlbkFzc2lnbm1lbnQgY29tcGxldGVkYCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdzaG93JywgJ0ZhaWxlZCB0byBvcGVuJyk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBzZGstdG9kb1wiPlxuICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWhlYWRlclwiPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93VG9kb0xpc3QkXCIgY2xhc3M9XCJwc2RrLWF2YXRhclwiPnt7IHRoaXMuY3VycmVudFVzZXJJbml0aWFscyQgfX08L2Rpdj5cbiAgICA8ZGl2IGlkPVwid29ya2xpc3RcIiBjbGFzcz1cInBzZGstdG9kby10ZXh0XCI+e3sgaGVhZGVyVGV4dCQgfX08L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1RvZG9MaXN0JFwiIGNsYXNzPVwicHNkay1hc3NpZ25tZW50LWNvdW50XCI+e3sgYXNzaWdubWVudENvdW50JCB9fTwvZGl2PlxuICA8L2Rpdj5cbiAgPGJyIC8+PGJyIC8+XG4gIDxkaXYgKm5nSWY9XCJzaG93VG9kb0xpc3QkXCIgY2xhc3M9XCJwc2RrLWRpc3BsYXktZGl2aWRlclwiPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJwc2RrLXRvZG8tYXNzaWdubWVudHNcIj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhc3NpZ25tZW50IG9mIGFyQXNzaWdubWVudHMkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstYXZhdGFyXCI+e3sgdGhpcy5jdXJyZW50VXNlckluaXRpYWxzJCB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWNhcmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnQtdGl0bGVcIj57eyBnZXRBc3NpZ25tZW50TmFtZShhc3NpZ25tZW50KSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLXRvZG8tYXNzaWdubWVudC1kYXRhXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnQtdGFza1wiPlxuICAgICAgICAgICAgICB7eyBsb2NhbGl6ZWRWYWwoJ1Rhc2sgaW4nLCBsb2NhbGVDYXRlZ29yeSkgfX1cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBzZGstdG9kby1pZFwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCIgKGNsaWNrKT1cImNsaWNrR28oYXNzaWdubWVudClcIj5cbiAgICAgICAgICAgICAgICB7eyBhc3NpZ25tZW50Lm5hbWUgfX0ge3sgZ2V0SUQoYXNzaWdubWVudCkgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYXNzaWdubWVudC5zdGF0dXMgIT0gdW5kZWZpbmVkXCI+XG4gICAgICAgICAgICAgICAgJmJ1bGw7IDxzcGFuIGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnQtc3RhdHVzXCI+e3sgYXNzaWdubWVudD8uc3RhdHVzIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICZidWxsOyB7eyBsb2NhbGl6ZWRWYWwoJ1VyZ2VuY3knLCBsb2NhbGVDYXRlZ29yeSkgfX0ge3sgZ2V0UHJpb3JpdHkoYXNzaWdubWVudCkgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1hc3NpZ25tZW50LWFjdGlvblwiICpuZ0lmPVwiIWlzQ29uZmlybSB8fCBjYW5QZXJmb3JtXCI+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsaWNrR28oYXNzaWdubWVudClcIj57eyBsb2NhbGl6ZWRWYWwoJ0dvJywgbG9jYWxlQ2F0ZWdvcnkpIH19PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1kaXNwbGF5LWRpdmlkZXJcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImFzc2lnbm1lbnRDb3VudCQgPiAzXCI+XG4gIDxkaXYgKm5nSWY9XCJiU2hvd01vcmUkOyBlbHNlIHNob3dMZXNzXCIgY2xhc3M9XCJwc2RrLXRvZG8tc2hvdy1tb3JlXCI+XG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIl9zaG93TW9yZSgpXCI+e3sgc2hvd01vcmVMb2NhbGl6ZWRWYWx1ZSA9PT0gJ3Nob3dfbW9yZScgPyAnU2hvdyBtb3JlJyA6IHNob3dNb3JlTG9jYWxpemVkVmFsdWUgfX08L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjc2hvd0xlc3M+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1zaG93LW1vcmVcIj5cbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJfc2hvd0xlc3MoKVwiPnt7IHNob3dsZXNzTG9jYWxpemVkVmFsdWUgPT09ICdzaG93X2xlc3MnID8gJ1Nob3cgbGVzcycgOiBzaG93bGVzc0xvY2FsaXplZFZhbHVlIH19PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|