@netgrif/components-core 6.4.0-beta.3 → 6.4.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/actions/front-action.module.mjs +28 -0
- package/esm2020/lib/actions/model/front-action-definition.mjs +2 -0
- package/esm2020/lib/actions/model/router-action-definitions.mjs +8 -0
- package/esm2020/lib/actions/model/task-action-definitions.mjs +16 -0
- package/esm2020/lib/actions/public-api.mjs +6 -0
- package/esm2020/lib/actions/services/front-action.service.mjs +27 -0
- package/esm2020/lib/data-fields/data-fields.module.mjs +1 -1
- package/esm2020/lib/data-fields/models/changed-fields.mjs +1 -1
- package/esm2020/lib/event/model/event-constants.mjs +5 -1
- package/esm2020/lib/event/services/event.service.mjs +23 -1
- package/esm2020/lib/filter/user-filters.service.mjs +1 -1
- package/esm2020/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.mjs +45 -1
- package/esm2020/lib/panel/task-panel/abstract-task-panel.component.mjs +5 -2
- package/esm2020/lib/panel/task-panel-single/abstract-single-task.component.mjs +11 -5
- package/esm2020/lib/public/factories/public-search-factory.mjs +15 -4
- package/esm2020/lib/registry/front-action-registry.service.mjs +34 -0
- package/esm2020/lib/registry/public-api.mjs +2 -1
- package/esm2020/lib/resources/interface/event-outcome.mjs +1 -1
- package/esm2020/lib/side-menu/content-components/injection-tokens.mjs +2 -1
- package/esm2020/lib/side-menu/content-components/public-api.mjs +2 -1
- package/esm2020/lib/side-menu/content-components/task-view/model/task-view-injection-data.mjs +2 -0
- package/esm2020/lib/task/services/task-data.service.mjs +11 -9
- package/esm2020/lib/task-content/services/single-task-content.service.mjs +4 -4
- package/esm2020/lib/task-content/services/task-content.service.mjs +6 -21
- package/esm2020/lib/task-content/services/unlimited-task-content.service.mjs +4 -4
- package/esm2020/lib/view/task-view/abstract-single-task-view.component.mjs +18 -34
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/netgrif-components-core.mjs +623 -469
- package/fesm2015/netgrif-components-core.mjs.map +1 -1
- package/fesm2020/netgrif-components-core.mjs +623 -465
- package/fesm2020/netgrif-components-core.mjs.map +1 -1
- package/lib/actions/front-action.module.d.ts +9 -0
- package/lib/actions/model/front-action-definition.d.ts +5 -0
- package/lib/actions/model/router-action-definitions.d.ts +2 -0
- package/lib/actions/model/task-action-definitions.d.ts +3 -0
- package/lib/actions/public-api.d.ts +5 -0
- package/lib/actions/services/front-action.service.d.ts +15 -0
- package/lib/data-fields/models/changed-fields.d.ts +7 -6
- package/lib/event/model/event-constants.d.ts +5 -1
- package/lib/event/services/event.service.d.ts +3 -0
- package/lib/navigation/navigation-double-drawer/abstract-navigation-double-drawer.d.ts +12 -0
- package/lib/panel/task-panel/abstract-task-panel.component.d.ts +2 -1
- package/lib/panel/task-panel-single/abstract-single-task.component.d.ts +5 -3
- package/lib/public/factories/public-search-factory.d.ts +3 -0
- package/lib/registry/front-action-registry.service.d.ts +13 -0
- package/lib/registry/public-api.d.ts +1 -0
- package/lib/resources/interface/event-outcome.d.ts +5 -0
- package/lib/side-menu/content-components/injection-tokens.d.ts +1 -0
- package/lib/side-menu/content-components/public-api.d.ts +1 -0
- package/lib/side-menu/content-components/task-view/model/task-view-injection-data.d.ts +4 -0
- package/lib/task/services/task-data.service.d.ts +4 -2
- package/lib/task-content/services/single-task-content.service.d.ts +2 -2
- package/lib/task-content/services/task-content.service.d.ts +6 -16
- package/lib/task-content/services/unlimited-task-content.service.d.ts +2 -2
- package/lib/view/task-view/abstract-single-task-view.component.d.ts +6 -5
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { redirectAction } from "./model/router-action-definitions";
|
|
4
|
+
import { reloadTaskAction, validateTaskAction } from "./model/task-action-definitions";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../registry/front-action-registry.service";
|
|
7
|
+
export class FrontActionModule {
|
|
8
|
+
constructor(frontActionsRegistry) {
|
|
9
|
+
frontActionsRegistry.register('redirect', redirectAction);
|
|
10
|
+
frontActionsRegistry.register('validate', validateTaskAction);
|
|
11
|
+
frontActionsRegistry.register('reloadTask', reloadTaskAction);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
FrontActionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionModule, deps: [{ token: i1.FrontActionRegistryService }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
FrontActionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionModule, imports: [CommonModule] });
|
|
16
|
+
FrontActionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionModule, imports: [[
|
|
17
|
+
CommonModule
|
|
18
|
+
]] });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionModule, decorators: [{
|
|
20
|
+
type: NgModule,
|
|
21
|
+
args: [{
|
|
22
|
+
declarations: [],
|
|
23
|
+
imports: [
|
|
24
|
+
CommonModule
|
|
25
|
+
]
|
|
26
|
+
}]
|
|
27
|
+
}], ctorParameters: function () { return [{ type: i1.FrontActionRegistryService }]; } });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnQtYWN0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvYWN0aW9ucy9mcm9udC1hY3Rpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQzs7O0FBUXJGLE1BQU0sT0FBTyxpQkFBaUI7SUFFMUIsWUFBWSxvQkFBZ0Q7UUFDeEQsb0JBQW9CLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUMxRCxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDOUQsb0JBQW9CLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7OytHQU5RLGlCQUFpQjtnSEFBakIsaUJBQWlCLFlBSDFCLFlBQVk7Z0hBR0gsaUJBQWlCLFlBSm5CO1lBQ1AsWUFBWTtTQUNiOzRGQUVVLGlCQUFpQjtrQkFON0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RnJvbnRBY3Rpb25SZWdpc3RyeVNlcnZpY2V9IGZyb20gXCIuLi9yZWdpc3RyeS9mcm9udC1hY3Rpb24tcmVnaXN0cnkuc2VydmljZVwiO1xuaW1wb3J0IHtyZWRpcmVjdEFjdGlvbn0gZnJvbSBcIi4vbW9kZWwvcm91dGVyLWFjdGlvbi1kZWZpbml0aW9uc1wiO1xuaW1wb3J0IHtyZWxvYWRUYXNrQWN0aW9uLCB2YWxpZGF0ZVRhc2tBY3Rpb259IGZyb20gXCIuL21vZGVsL3Rhc2stYWN0aW9uLWRlZmluaXRpb25zXCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBGcm9udEFjdGlvbk1vZHVsZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihmcm9udEFjdGlvbnNSZWdpc3RyeTogRnJvbnRBY3Rpb25SZWdpc3RyeVNlcnZpY2UpIHtcbiAgICAgICAgZnJvbnRBY3Rpb25zUmVnaXN0cnkucmVnaXN0ZXIoJ3JlZGlyZWN0JywgcmVkaXJlY3RBY3Rpb24pO1xuICAgICAgICBmcm9udEFjdGlvbnNSZWdpc3RyeS5yZWdpc3RlcigndmFsaWRhdGUnLCB2YWxpZGF0ZVRhc2tBY3Rpb24pO1xuICAgICAgICBmcm9udEFjdGlvbnNSZWdpc3RyeS5yZWdpc3RlcigncmVsb2FkVGFzaycsIHJlbG9hZFRhc2tBY3Rpb24pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnQtYWN0aW9uLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2FjdGlvbnMvbW9kZWwvZnJvbnQtYWN0aW9uLWRlZmluaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0b3J9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0Zyb250QWN0aW9ufSBmcm9tIFwiLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2NoYW5nZWQtZmllbGRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnJvbnRBY3Rpb25EZWZpbml0aW9uIHtcbiAgICBjYWxsOiAoaW5qZWN0b3I6IEluamVjdG9yLCBmcm9udEFjdGlvbjogRnJvbnRBY3Rpb24pID0+IHZvaWQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Router } from "@angular/router";
|
|
2
|
+
export const redirectAction = {
|
|
3
|
+
call: (injector, frontAction) => {
|
|
4
|
+
const router = injector.get(Router);
|
|
5
|
+
router.navigate([frontAction.args[0]]);
|
|
6
|
+
}
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLWFjdGlvbi1kZWZpbml0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvYWN0aW9ucy9tb2RlbC9yb3V0ZXItYWN0aW9uLWRlZmluaXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQTBCO0lBQ2pELElBQUksRUFBRSxDQUFDLFFBQWtCLEVBQUUsV0FBd0IsRUFBRSxFQUFFO1FBQ25ELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFDLENBQUM7Q0FDSixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGcm9udEFjdGlvbkRlZmluaXRpb259IGZyb20gXCIuL2Zyb250LWFjdGlvbi1kZWZpbml0aW9uXCI7XG5pbXBvcnQge0luamVjdG9yfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtGcm9udEFjdGlvbn0gZnJvbSBcIi4uLy4uL2RhdGEtZmllbGRzL21vZGVscy9jaGFuZ2VkLWZpZWxkc1wiO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcblxuZXhwb3J0IGNvbnN0IHJlZGlyZWN0QWN0aW9uOiBGcm9udEFjdGlvbkRlZmluaXRpb24gPSB7XG4gICAgY2FsbDogKGluamVjdG9yOiBJbmplY3RvciwgZnJvbnRBY3Rpb246IEZyb250QWN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHJvdXRlciA9IGluamVjdG9yLmdldChSb3V0ZXIpO1xuICAgICAgICByb3V0ZXIubmF2aWdhdGUoW2Zyb250QWN0aW9uLmFyZ3NbMF1dKVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TaskContentService } from "../../task-content/services/task-content.service";
|
|
2
|
+
import { TaskDataService } from "../../task/services/task-data.service";
|
|
3
|
+
import { AfterAction } from "../../utility/call-chain/after-action";
|
|
4
|
+
export const validateTaskAction = {
|
|
5
|
+
call: (injector, frontAction) => {
|
|
6
|
+
const taskContentService = injector.get(TaskContentService);
|
|
7
|
+
taskContentService.validateTaskData(frontAction.args[0]);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
export const reloadTaskAction = {
|
|
11
|
+
call: (injector, frontAction) => {
|
|
12
|
+
const taskDataService = injector.get(TaskDataService);
|
|
13
|
+
taskDataService.initializeTaskDataFields(new AfterAction(), true);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1hY3Rpb24tZGVmaW5pdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2FjdGlvbnMvbW9kZWwvdGFzay1hY3Rpb24tZGVmaW5pdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDcEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUVsRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBMEI7SUFDckQsSUFBSSxFQUFFLENBQUMsUUFBa0IsRUFBRSxXQUF3QixFQUFFLEVBQUU7UUFDbkQsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDNUQsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7Q0FDSixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQTBCO0lBQ25ELElBQUksRUFBRSxDQUFDLFFBQWtCLEVBQUUsV0FBd0IsRUFBRSxFQUFFO1FBQ25ELE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEQsZUFBZSxDQUFDLHdCQUF3QixDQUFDLElBQUksV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQztDQUNKLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Zyb250QWN0aW9uRGVmaW5pdGlvbn0gZnJvbSBcIi4vZnJvbnQtYWN0aW9uLWRlZmluaXRpb25cIjtcbmltcG9ydCB7SW5qZWN0b3J9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0Zyb250QWN0aW9ufSBmcm9tIFwiLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2NoYW5nZWQtZmllbGRzXCI7XG5pbXBvcnQge1Rhc2tDb250ZW50U2VydmljZX0gZnJvbSBcIi4uLy4uL3Rhc2stY29udGVudC9zZXJ2aWNlcy90YXNrLWNvbnRlbnQuc2VydmljZVwiO1xuaW1wb3J0IHtUYXNrRGF0YVNlcnZpY2V9IGZyb20gXCIuLi8uLi90YXNrL3NlcnZpY2VzL3Rhc2stZGF0YS5zZXJ2aWNlXCI7XG5pbXBvcnQge0FmdGVyQWN0aW9ufSBmcm9tIFwiLi4vLi4vdXRpbGl0eS9jYWxsLWNoYWluL2FmdGVyLWFjdGlvblwiO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVUYXNrQWN0aW9uOiBGcm9udEFjdGlvbkRlZmluaXRpb24gPSB7XG4gICAgY2FsbDogKGluamVjdG9yOiBJbmplY3RvciwgZnJvbnRBY3Rpb246IEZyb250QWN0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHRhc2tDb250ZW50U2VydmljZSA9IGluamVjdG9yLmdldChUYXNrQ29udGVudFNlcnZpY2UpO1xuICAgICAgICB0YXNrQ29udGVudFNlcnZpY2UudmFsaWRhdGVUYXNrRGF0YShmcm9udEFjdGlvbi5hcmdzWzBdIGFzIHN0cmluZyk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgcmVsb2FkVGFza0FjdGlvbjogRnJvbnRBY3Rpb25EZWZpbml0aW9uID0ge1xuICAgIGNhbGw6IChpbmplY3RvcjogSW5qZWN0b3IsIGZyb250QWN0aW9uOiBGcm9udEFjdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB0YXNrRGF0YVNlcnZpY2UgPSBpbmplY3Rvci5nZXQoVGFza0RhdGFTZXJ2aWNlKTtcbiAgICAgICAgdGFza0RhdGFTZXJ2aWNlLmluaXRpYWxpemVUYXNrRGF0YUZpZWxkcyhuZXcgQWZ0ZXJBY3Rpb24oKSwgdHJ1ZSk7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './front-action.module';
|
|
2
|
+
export * from './model/front-action-definition';
|
|
3
|
+
export * from './model/router-action-definitions';
|
|
4
|
+
export * from './model/task-action-definitions';
|
|
5
|
+
export * from './services/front-action.service';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvYWN0aW9ucy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUE7QUFDckMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZnJvbnQtYWN0aW9uLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwvZnJvbnQtYWN0aW9uLWRlZmluaXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbC9yb3V0ZXItYWN0aW9uLWRlZmluaXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWwvdGFzay1hY3Rpb24tZGVmaW5pdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9mcm9udC1hY3Rpb24uc2VydmljZSc7XG4iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../registry/front-action-registry.service";
|
|
4
|
+
import * as i2 from "../../logger/services/logger.service";
|
|
5
|
+
export class FrontActionService {
|
|
6
|
+
constructor(_injector, _frontActionRegistry, _log) {
|
|
7
|
+
this._injector = _injector;
|
|
8
|
+
this._frontActionRegistry = _frontActionRegistry;
|
|
9
|
+
this._log = _log;
|
|
10
|
+
}
|
|
11
|
+
run(frontAction) {
|
|
12
|
+
const fn = this._frontActionRegistry.get(frontAction.id);
|
|
13
|
+
if (!fn) {
|
|
14
|
+
this._log.error("Frontend action is not defined for ID [" + frontAction.id + "]");
|
|
15
|
+
}
|
|
16
|
+
fn.call(this._injector, frontAction);
|
|
17
|
+
}
|
|
18
|
+
runAll(frontAction) {
|
|
19
|
+
frontAction.forEach(a => this.run(a));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
FrontActionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionService, deps: [{ token: i0.Injector }, { token: i1.FrontActionRegistryService }, { token: i2.LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
FrontActionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionService });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: FrontActionService, decorators: [{
|
|
25
|
+
type: Injectable
|
|
26
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.FrontActionRegistryService }, { type: i2.LoggerService }]; } });
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnQtYWN0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2FjdGlvbnMvc2VydmljZXMvZnJvbnQtYWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBVyxNQUFNLGVBQWUsQ0FBQzs7OztBQU1uRCxNQUFNLE9BQU8sa0JBQWtCO0lBRTNCLFlBQXNCLFNBQW1CLEVBQ25CLG9CQUFnRCxFQUNoRCxJQUFtQjtRQUZuQixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBNEI7UUFDaEQsU0FBSSxHQUFKLElBQUksQ0FBZTtJQUV6QyxDQUFDO0lBRU0sR0FBRyxDQUFDLFdBQXdCO1FBQy9CLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3hELElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsR0FBRyxXQUFXLENBQUMsRUFBRSxHQUFFLEdBQUcsQ0FBQyxDQUFBO1NBQ25GO1FBQ0QsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBMEI7UUFDcEMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN6QyxDQUFDOztnSEFsQlEsa0JBQWtCO29IQUFsQixrQkFBa0I7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgSW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGcm9udEFjdGlvblJlZ2lzdHJ5U2VydmljZX0gZnJvbSBcIi4uLy4uL3JlZ2lzdHJ5L2Zyb250LWFjdGlvbi1yZWdpc3RyeS5zZXJ2aWNlXCI7XG5pbXBvcnQge0Zyb250QWN0aW9ufSBmcm9tIFwiLi4vLi4vZGF0YS1maWVsZHMvbW9kZWxzL2NoYW5nZWQtZmllbGRzXCI7XG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9sb2dnZXIvc2VydmljZXMvbG9nZ2VyLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZyb250QWN0aW9uU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2Zyb250QWN0aW9uUmVnaXN0cnk6IEZyb250QWN0aW9uUmVnaXN0cnlTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlKSB7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgcnVuKGZyb250QWN0aW9uOiBGcm9udEFjdGlvbik6IHZvaWQge1xuICAgICAgICBjb25zdCBmbiA9IHRoaXMuX2Zyb250QWN0aW9uUmVnaXN0cnkuZ2V0KGZyb250QWN0aW9uLmlkKVxuICAgICAgICBpZiAoIWZuKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoXCJGcm9udGVuZCBhY3Rpb24gaXMgbm90IGRlZmluZWQgZm9yIElEIFtcIiArIGZyb250QWN0aW9uLmlkICtcIl1cIilcbiAgICAgICAgfVxuICAgICAgICBmbi5jYWxsKHRoaXMuX2luamVjdG9yLCBmcm9udEFjdGlvbilcbiAgICB9XG5cbiAgICBwdWJsaWMgcnVuQWxsKGZyb250QWN0aW9uOiBGcm9udEFjdGlvbltdKTogdm9pZCB7XG4gICAgICAgIGZyb250QWN0aW9uLmZvckVhY2goYSA9PiB0aGlzLnJ1bihhKSlcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -59,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
59
59
|
]
|
|
60
60
|
}]
|
|
61
61
|
}] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1maWVsZHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9kYXRhLWZpZWxkcy9kYXRhLWZpZWxkcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUN4RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7O0FBbUJuRCxNQUFNLE9BQU8sZ0JBQWdCOzs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsWUFmckIsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsY0FBYztRQUNkLHdCQUF3QjtRQUN4QixnQkFBZ0I7UUFDaEIsbUJBQW1CO1FBQ25CLDBCQUEwQjtRQUMxQixrQkFBa0I7UUFDbEIsa0JBQWtCOytHQU1iLGdCQUFnQixhQUpkO1FBQ1AsRUFBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBQztLQUN0RCxZQWRRO1lBQ0wsWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsY0FBYztZQUNkLHdCQUF3QjtZQUN4QixnQkFBZ0I7WUFDaEIsbUJBQW1CO1lBQ25CLDBCQUEwQjtZQUMxQixrQkFBa0I7WUFDbEIsa0JBQWtCO1NBQ3JCOzRGQUtRLGdCQUFnQjtrQkFqQjVCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2Qsd0JBQXdCO3dCQUN4QixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQixrQkFBa0I7d0JBQ2xCLGtCQUFrQjtxQkFDckI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNQLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUM7cUJBQ3REO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RmxleExheW91dE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZmxleC1sYXlvdXQnO1xuaW1wb3J0IHtNYXRlcmlhbE1vZHVsZX0gZnJvbSAnLi4vbWF0ZXJpYWwvbWF0ZXJpYWwubW9kdWxlJztcbmltcG9ydCB7SHR0cENsaWVudE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtBbmd1bGFyUmVzaXplRXZlbnRNb2R1bGV9IGZyb20gJ2FuZ3VsYXItcmVzaXplLWV2ZW50JztcbmltcG9ydCB7Q292YWxlbnRNb2R1bGV9IGZyb20gJy4uL2NvdmFsZW50L2NvdmFsZW50Lm1vZHVsZSc7XG5pbXBvcnQge1JlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Q3VzdG9tRGF0ZUFkYXB0ZXJ9IGZyb20gJy4vZGF0ZS1maWVsZC9tb2RlbHMvY3VzdG9tLWRhdGUtYWRhcHRlcic7XG5pbXBvcnQge05neE1hdERhdGV0aW1lUGlja2VyTW9kdWxlfSBmcm9tICdAYW5ndWxhci1tYXRlcmlhbC1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlcic7XG5pbXBvcnQge05neE1hdE1vbWVudE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXItbWF0ZXJpYWwtY29tcG9uZW50cy9tb21lbnQtYWRhcHRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZUxpYk1vZHVsZX0gZnJvbSAnLi4vdHJhbnNsYXRlL3RyYW5zbGF0ZS1saWIubW9kdWxlJztcbmltcG9ydCB7RGF0ZUFkYXB0ZXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGbGV4TGF5b3V0TW9kdWxlLFxuICAgICAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICAgICAgQ292YWxlbnRNb2R1bGUsXG4gICAgICAgIEFuZ3VsYXJSZXNpemVFdmVudE1vZHVsZSxcbiAgICAgICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTmd4TWF0RGF0ZXRpbWVQaWNrZXJNb2R1bGUsXG4gICAgICAgIE5neE1hdE1vbWVudE1vZHVsZSxcbiAgICAgICAgVHJhbnNsYXRlTGliTW9kdWxlXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge3Byb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogQ3VzdG9tRGF0ZUFkYXB0ZXJ9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhRmllbGRzTW9kdWxlIHtcblxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlZC1maWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RhdGEtZmllbGRzL21vZGVscy9jaGFuZ2VkLWZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvcn0gZnJvbSAnLi9iZWhhdmlvcic7XG5cbi8qKlxuICogcmVzcG9uc2UgZXhhbXBsZTpcbiAqICB7XCJjaGFuZ2VkRmllbGRzXCI6IHtcbiAqICAgICAgXCJ0ZXh0XzFcIjp7XCJiZWhhdmlvclwiOntcIjFcIjp7XCJlZGl0YWJsZVwiOnRydWV9fX0sXG4gKiAgICAgXCJ0ZXh0XzBcIjp7XCJiZWhhdmlvclwiOntcIjFcIjp7XCJ2aXNpYmxlXCI6dHJ1ZX19fSxcbiAqICAgICAgXCJ0ZXh0XzNcIjp7XCJiZWhhdmlvclwiOntcIjFcIjp7XCJlZGl0YWJsZVwiOnRydWUsXCJvcHRpb25hbFwiOnRydWV9fX0sXG4gKiAgICAgIFwidGV4dF8yXCI6e1wiYmVoYXZpb3JcIjp7XCIxXCI6e1wiZWRpdGFibGVcIjp0cnVlLFwicmVxdWlyZWRcIjp0cnVlfX19LFxuICogICAgICBcInRleHRfNVwiOntcImJlaGF2aW9yXCI6e1wiMVwiOntcImZvcmJpZGRlblwiOnRydWV9fX0sXG4gKiAgICAgIFwidGV4dF80XCI6e1wiYmVoYXZpb3JcIjp7XCIxXCI6e1wiaGlkZGVuXCI6dHJ1ZX19fVxuICogIH19XG4gKlxuICogIDEgPT0+IHRyYW5zaXRpb24gSURcbiAqXG4gKiAgaXQgbWlnaHQgYmUgYmV0dGVyIGlmIHNvbWUgcGFyZW50IGVsZW1lbnQgZ2F2ZSBvbmx5IHRoZSByZWxldmFudCBjaGFuZ2VzIHRvIGVhY2ggdGFza1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZWRGaWVsZHMge1xuICAgIC8qKlxuICAgICAqIGBTdHJpbmdJZGAgb2YgdGhlIGBUYXNrYCB0aGF0IFwib3duc1wiIHRoZSByZXF1ZXN0ZWQgZnJvbnRlbmQgYWN0aW9uc1xuICAgICAqL1xuICAgIGZyb250ZW5kQWN0aW9uc093bmVyPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSGFzIHR5cGUgYENoYW5nZWAgdW5sZXNzIGl0IGlzIGBmcm9udGVuZEFjdGlvbnNPd25lcmAgaW4gd2hpY2ggY2FzZSB0aGUgdHlwZSBpcyBgc3RyaW5nYFxuICAgICAqL1xuICAgIFtrZXk6IHN0cmluZ106IENoYW5nZSB8IGFueTtcblxuICAgIC8qKlxuICAgICAqIElkIG9mIHRhc2sgb24gd2hpY2ggdGhlIGNoYW5nZXMgb2NjdXJlZFxuICAgICAqL1xuICAgIHRhc2tJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2Uge1xuICAgIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IGFueTtcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIC8vIGJlaGF2aW9yICBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0cmFuc2l0aW9uIGlkXG4gICAgYmVoYXZpb3I/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlZC1maWVsZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2RhdGEtZmllbGRzL21vZGVscy9jaGFuZ2VkLWZpZWxkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvcn0gZnJvbSAnLi9iZWhhdmlvcic7XG5cbi8qKlxuICogcmVzcG9uc2UgZXhhbXBsZTpcbiAqICB7XCJjaGFuZ2VkRmllbGRzXCI6IHtcbiAqICAgICAgXCJ0ZXh0XzFcIjp7XCJiZWhhdmlvclwiOntcIjFcIjp7XCJlZGl0YWJsZVwiOnRydWV9fX0sXG4gKiAgICAgXCJ0ZXh0XzBcIjp7XCJiZWhhdmlvclwiOntcIjFcIjp7XCJ2aXNpYmxlXCI6dHJ1ZX19fSxcbiAqICAgICAgXCJ0ZXh0XzNcIjp7XCJiZWhhdmlvclwiOntcIjFcIjp7XCJlZGl0YWJsZVwiOnRydWUsXCJvcHRpb25hbFwiOnRydWV9fX0sXG4gKiAgICAgIFwidGV4dF8yXCI6e1wiYmVoYXZpb3JcIjp7XCIxXCI6e1wiZWRpdGFibGVcIjp0cnVlLFwicmVxdWlyZWRcIjp0cnVlfX19LFxuICogICAgICBcInRleHRfNVwiOntcImJlaGF2aW9yXCI6e1wiMVwiOntcImZvcmJpZGRlblwiOnRydWV9fX0sXG4gKiAgICAgIFwidGV4dF80XCI6e1wiYmVoYXZpb3JcIjp7XCIxXCI6e1wiaGlkZGVuXCI6dHJ1ZX19fVxuICogIH19XG4gKlxuICogIDEgPT0+IHRyYW5zaXRpb24gSURcbiAqXG4gKiAgaXQgbWlnaHQgYmUgYmV0dGVyIGlmIHNvbWUgcGFyZW50IGVsZW1lbnQgZ2F2ZSBvbmx5IHRoZSByZWxldmFudCBjaGFuZ2VzIHRvIGVhY2ggdGFza1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZWRGaWVsZHMge1xuICAgIC8qKlxuICAgICAqIGBTdHJpbmdJZGAgb2YgdGhlIGBUYXNrYCB0aGF0IFwib3duc1wiIHRoZSByZXF1ZXN0ZWQgZnJvbnRlbmQgYWN0aW9uc1xuICAgICAqL1xuICAgIGZyb250ZW5kQWN0aW9uc093bmVyPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSGFzIHR5cGUgYENoYW5nZWAgdW5sZXNzIGl0IGlzIGBmcm9udGVuZEFjdGlvbnNPd25lcmAgaW4gd2hpY2ggY2FzZSB0aGUgdHlwZSBpcyBgc3RyaW5nYFxuICAgICAqL1xuICAgIFtrZXk6IHN0cmluZ106IENoYW5nZSB8IGFueTtcblxuICAgIC8qKlxuICAgICAqIElkIG9mIHRhc2sgb24gd2hpY2ggdGhlIGNoYW5nZXMgb2NjdXJlZFxuICAgICAqL1xuICAgIHRhc2tJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2Uge1xuICAgIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IGFueTtcbiAgICB0eXBlPzogc3RyaW5nO1xuICAgIC8vIGJlaGF2aW9yICBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0cmFuc2l0aW9uIGlkXG4gICAgYmVoYXZpb3I/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IEJlaGF2aW9yXG4gICAgfTtcblxuICAgIFtrZXk6IHN0cmluZ106IGFueTtcblxuICAgIGFjdGlvbj86IEZyb250QWN0aW9uW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGcm9udEFjdGlvbiB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBhcmdzOiB7XG4gICAgICAgIFtrOiBzdHJpbmddOiBhbnk7XG4gICAgfVxufVxuIl19
|
|
@@ -4,5 +4,9 @@ export var EventConstants;
|
|
|
4
4
|
* Changed fields parameter of {@link SetDataEventOutcome}
|
|
5
5
|
*/
|
|
6
6
|
EventConstants["CHANGED_FIELDS"] = "changedFields";
|
|
7
|
+
/**
|
|
8
|
+
* Front actions parameter of {@link EventOutcome}
|
|
9
|
+
*/
|
|
10
|
+
EventConstants["FRONT_ACTIONS"] = "frontActions";
|
|
7
11
|
})(EventConstants || (EventConstants = {}));
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9ldmVudC9tb2RlbC9ldmVudC1jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksY0FVWDtBQVZELFdBQVksY0FBYztJQUV0Qjs7T0FFRztJQUNILGtEQUFnQyxDQUFBO0lBQ2hDOztPQUVHO0lBQ0gsZ0RBQThCLENBQUE7QUFDbEMsQ0FBQyxFQVZXLGNBQWMsS0FBZCxjQUFjLFFBVXpCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRXZlbnRDb25zdGFudHMge1xuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlZCBmaWVsZHMgcGFyYW1ldGVyIG9mIHtAbGluayBTZXREYXRhRXZlbnRPdXRjb21lfVxuICAgICAqL1xuICAgIENIQU5HRURfRklFTERTID0gJ2NoYW5nZWRGaWVsZHMnLFxuICAgIC8qKlxuICAgICAqIEZyb250IGFjdGlvbnMgcGFyYW1ldGVyIG9mIHtAbGluayBFdmVudE91dGNvbWV9XG4gICAgICovXG4gICAgRlJPTlRfQUNUSU9OUyA9ICdmcm9udEFjdGlvbnMnXG59XG4iXX0=
|
|
@@ -46,6 +46,28 @@ export class EventService {
|
|
|
46
46
|
});
|
|
47
47
|
return changedFieldsMap;
|
|
48
48
|
}
|
|
49
|
+
parseFrontActionsFromOutcomeTree(outcome) {
|
|
50
|
+
const frontActions = [];
|
|
51
|
+
if (!!outcome.outcomes && outcome.outcomes.length > 0) {
|
|
52
|
+
return this.parseFrontActionsFromOutcomeTreeRecursive(outcome.outcomes, frontActions);
|
|
53
|
+
}
|
|
54
|
+
else
|
|
55
|
+
return frontActions;
|
|
56
|
+
}
|
|
57
|
+
parseFrontActionsFromOutcomeTreeRecursive(outcomes, frontActions) {
|
|
58
|
+
outcomes.forEach(childOutcome => {
|
|
59
|
+
if (EventConstants.FRONT_ACTIONS in childOutcome) {
|
|
60
|
+
const childFrontActions = childOutcome.frontActions;
|
|
61
|
+
if (!!childFrontActions) {
|
|
62
|
+
frontActions.push(...childFrontActions);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (!!childOutcome.outcomes && childOutcome.outcomes.length > 0) {
|
|
66
|
+
this.parseFrontActionsFromOutcomeTreeRecursive(childOutcome.outcomes, frontActions);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return frontActions;
|
|
70
|
+
}
|
|
49
71
|
}
|
|
50
72
|
EventService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: EventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
51
73
|
EventService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: EventService, providedIn: 'root' });
|
|
@@ -55,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
55
77
|
providedIn: 'root'
|
|
56
78
|
}]
|
|
57
79
|
}], ctorParameters: function () { return []; } });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvZXZlbnQvc2VydmljZXMvZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBS3pDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7QUFLeEQsTUFBTSxPQUFPLFlBQVk7SUFFckI7SUFDQSxDQUFDO0lBRU0saUNBQWlDLENBQUMsT0FBcUI7UUFDMUQsTUFBTSxnQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25ELE9BQU8sSUFBSSxDQUFDLDBDQUEwQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztTQUM5Rjs7WUFBTSxPQUFPLGdCQUFnQixDQUFDO0lBQ25DLENBQUM7SUFFTywwQ0FBMEMsQ0FBQyxRQUE2QixFQUM3QixnQkFBa0M7UUFDakYsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUM1QixJQUFJLGNBQWMsQ0FBQyxjQUFjLElBQUksWUFBWTttQkFDMUMsQ0FBQyxDQUFFLFlBQW9DLENBQUMsS0FBSzttQkFDN0MsQ0FBQyxDQUFFLFlBQW9DLENBQUMsSUFBSSxFQUFFO2dCQUNqRCxNQUFNLGNBQWMsR0FBd0IsWUFBbUMsQ0FBQztnQkFDaEYsTUFBTSxvQkFBb0IsR0FBbUIsWUFBb0MsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO2dCQUM5RyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLE1BQU0s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WTs4R0FBWixZQUFZLGNBRlQsTUFBTTs0RkFFVCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0V2ZW50T3V0Y29tZX0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL2ludGVyZmFjZS9ldmVudC1vdXRjb21lJztcbmltcG9ydCB7Q2hhbmdlZEZpZWxkcywgRnJvbnRBY3Rpb259IGZyb20gJy4uLy4uL2RhdGEtZmllbGRzL21vZGVscy9jaGFuZ2VkLWZpZWxkcyc7XG5pbXBvcnQge1NldERhdGFFdmVudE91dGNvbWV9IGZyb20gJy4uL21vZGVsL2V2ZW50LW91dGNvbWVzL2RhdGEtb3V0Y29tZXMvc2V0LWRhdGEtZXZlbnQtb3V0Y29tZSc7XG5pbXBvcnQge0NoYW5nZWRGaWVsZHNNYXB9IGZyb20gJy4vaW50ZXJmYWNlcy9jaGFuZ2VkLWZpZWxkcy1tYXAnO1xuaW1wb3J0IHtFdmVudENvbnN0YW50c30gZnJvbSAnLi4vbW9kZWwvZXZlbnQtY29uc3RhbnRzJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFdmVudFNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgfVxuXG4gICAgcHVibGljIHBhcnNlQ2hhbmdlZEZpZWxkc0Zyb21PdXRjb21lVHJlZShvdXRjb21lOiBFdmVudE91dGNvbWUpOiBDaGFuZ2VkRmllbGRzTWFwIHtcbiAgICAgICAgY29uc3QgY2hhbmdlZEZpZWxkc01hcDogQ2hhbmdlZEZpZWxkc01hcCA9IHt9O1xuICAgICAgICBpZiAoISFvdXRjb21lLm91dGNvbWVzICYmIG91dGNvbWUub3V0Y29tZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDaGFuZ2VkRmllbGRzRnJvbU91dGNvbWVUcmVlUmVjdXJzaXZlKG91dGNvbWUub3V0Y29tZXMsIGNoYW5nZWRGaWVsZHNNYXApO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIGNoYW5nZWRGaWVsZHNNYXA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZUNoYW5nZWRGaWVsZHNGcm9tT3V0Y29tZVRyZWVSZWN1cnNpdmUob3V0Y29tZXM6IEFycmF5PEV2ZW50T3V0Y29tZT4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZEZpZWxkc01hcDogQ2hhbmdlZEZpZWxkc01hcCk6IENoYW5nZWRGaWVsZHNNYXAge1xuICAgICAgICBvdXRjb21lcy5mb3JFYWNoKGNoaWxkT3V0Y29tZSA9PiB7XG4gICAgICAgICAgICBpZiAoRXZlbnRDb25zdGFudHMuQ0hBTkdFRF9GSUVMRFMgaW4gY2hpbGRPdXRjb21lXG4gICAgICAgICAgICAgICAgJiYgISEoY2hpbGRPdXRjb21lIGFzIFNldERhdGFFdmVudE91dGNvbWUpLmFDYXNlXG4gICAgICAgICAgICAgICAgJiYgISEoY2hpbGRPdXRjb21lIGFzIFNldERhdGFFdmVudE91dGNvbWUpLnRhc2spIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZXREYXRhT3V0Y29tZTogU2V0RGF0YUV2ZW50T3V0Y29tZSA9IGNoaWxkT3V0Y29tZSBhcyBTZXREYXRhRXZlbnRPdXRjb21lO1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dGNvbWVDaGFuZ2VkRmllbGRzOiBDaGFuZ2VkRmllbGRzID0gKGNoaWxkT3V0Y29tZSBhcyBTZXREYXRhRXZlbnRPdXRjb21lKS5jaGFuZ2VkRmllbGRzLmNoYW5nZWRGaWVsZHM7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FzZUlkID0gc2V0RGF0YU91dGNvbWUuYUNhc2Uuc3RyaW5nSWQ7XG4gICAgICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhjaGFuZ2VkRmllbGRzTWFwKS5pbmNsdWRlcyhjYXNlSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRGaWVsZHNNYXBbY2FzZUlkXSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB0YXNrSWQgPSBzZXREYXRhT3V0Y29tZS50YXNrLnN0cmluZ0lkO1xuICAgICAgICAgICAgICAgIGlmICghT2JqZWN0LmtleXMoY2hhbmdlZEZpZWxkc01hcFtjYXNlSWRdKS5pbmNsdWRlcyh0YXNrSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWRGaWVsZHNNYXBbY2FzZUlkXVt0YXNrSWRdID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFza0lkXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG91dGNvbWVDaGFuZ2VkRmllbGRzKS5mb3JFYWNoKGZpZWxkSWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoY2hhbmdlZEZpZWxkc01hcFtjYXNlSWRdW3Rhc2tJZF0pLmluY2x1ZGVzKGZpZWxkSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvdXRjb21lQ2hhbmdlZEZpZWxkc1tmaWVsZElkXSkuZm9yRWFjaChhdHRyaWJ1dGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWRGaWVsZHNNYXBbY2FzZUlkXVt0YXNrSWRdW2ZpZWxkSWRdW2F0dHJpYnV0ZV0gPSBvdXRjb21lQ2hhbmdlZEZpZWxkc1tmaWVsZElkXVthdHRyaWJ1dGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkRmllbGRzTWFwW2Nhc2VJZF1bdGFza0lkXVtmaWVsZElkXSA9IHNldERhdGFPdXRjb21lLmNoYW5nZWRGaWVsZHMuY2hhbmdlZEZpZWxkc1tmaWVsZElkXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEhY2hpbGRPdXRjb21lLm91dGNvbWVzICYmIGNoaWxkT3V0Y29tZS5vdXRjb21lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJzZUNoYW5nZWRGaWVsZHNGcm9tT3V0Y29tZVRyZWVSZWN1cnNpdmUoY2hpbGRPdXRjb21lLm91dGNvbWVzLCBjaGFuZ2VkRmllbGRzTWFwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjaGFuZ2VkRmllbGRzTWFwO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYXJzZUZyb250QWN0aW9uc0Zyb21PdXRjb21lVHJlZShvdXRjb21lOiBFdmVudE91dGNvbWUpOiBBcnJheTxGcm9udEFjdGlvbj4ge1xuICAgICAgICBjb25zdCBmcm9udEFjdGlvbnM6IEFycmF5PEZyb250QWN0aW9uPiA9IFtdO1xuICAgICAgICBpZiAoISFvdXRjb21lLm91dGNvbWVzICYmIG91dGNvbWUub3V0Y29tZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VGcm9udEFjdGlvbnNGcm9tT3V0Y29tZVRyZWVSZWN1cnNpdmUob3V0Y29tZS5vdXRjb21lcywgZnJvbnRBY3Rpb25zKTtcbiAgICAgICAgfSBlbHNlIHJldHVybiBmcm9udEFjdGlvbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZUZyb250QWN0aW9uc0Zyb21PdXRjb21lVHJlZVJlY3Vyc2l2ZShvdXRjb21lczogQXJyYXk8RXZlbnRPdXRjb21lPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb250QWN0aW9uczogQXJyYXk8RnJvbnRBY3Rpb24+KTogQXJyYXk8RnJvbnRBY3Rpb24+IHtcbiAgICAgICAgb3V0Y29tZXMuZm9yRWFjaChjaGlsZE91dGNvbWUgPT4ge1xuICAgICAgICAgICAgaWYgKEV2ZW50Q29uc3RhbnRzLkZST05UX0FDVElPTlMgaW4gY2hpbGRPdXRjb21lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRGcm9udEFjdGlvbnM6IEFycmF5PEZyb250QWN0aW9uPiA9IChjaGlsZE91dGNvbWUgYXMgRXZlbnRPdXRjb21lKS5mcm9udEFjdGlvbnM7XG5cbiAgICAgICAgICAgICAgICBpZiAoISFjaGlsZEZyb250QWN0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBmcm9udEFjdGlvbnMucHVzaCguLi5jaGlsZEZyb250QWN0aW9ucylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoISFjaGlsZE91dGNvbWUub3V0Y29tZXMgJiYgY2hpbGRPdXRjb21lLm91dGNvbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcnNlRnJvbnRBY3Rpb25zRnJvbU91dGNvbWVUcmVlUmVjdXJzaXZlKGNoaWxkT3V0Y29tZS5vdXRjb21lcywgZnJvbnRBY3Rpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmcm9udEFjdGlvbnM7XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -328,4 +328,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
328
328
|
type: Inject,
|
|
329
329
|
args: [NAE_LOAD_FILTER_DIALOG_COMPONENT]
|
|
330
330
|
}] }]; } });
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1maWx0ZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2ZpbHRlci91c2VyLWZpbHRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQU8sTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFhLEVBQUUsRUFBRSxhQUFhLEVBQVUsTUFBTSxNQUFNLENBQUM7QUFNNUQsT0FBTyxFQUFTLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFJbEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFHNUUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFPbkUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQU10RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUc1RCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7OztBQUU5Rzs7R0FFRztBQUlILE1BQU0sT0FBTyxrQkFBa0I7SUFLM0IsWUFBc0IsWUFBaUMsRUFDakMsWUFBaUMsRUFDakMsZUFBK0IsRUFDL0IsaUJBQW1DLEVBQ25DLGdCQUFpQyxFQUNqQyxJQUFtQixFQUNuQix3QkFBaUQsRUFDakQsT0FBa0IsRUFDb0Msb0JBQTRDLEVBQzVDLG9CQUE0QztRQVRsRyxpQkFBWSxHQUFaLFlBQVks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QixrUkFhSyxnQ0FBZ0MsNkJBQ2hDLGdDQUFnQztvSEFkdkQsa0JBQWtCLGNBRmYsTUFBTTs0RkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFjZ0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQ0FBZ0M7OzBCQUNuRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDYXNlUmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L2Nhc2UtcmVzb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQge1Rhc2tSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvdGFzay1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7U2VhcmNoU2VydmljZX0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC1zZXJ2aWNlL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7UHJvY2Vzc1NlcnZpY2V9IGZyb20gJy4uL3Byb2Nlc3MvcHJvY2Vzcy5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7ZmlsdGVyLCB0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1NpbXBsZUZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvc2ltcGxlLWZpbHRlcic7XG5pbXBvcnQge2hhc0NvbnRlbnR9IGZyb20gJy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdlLWhhcy1jb250ZW50JztcbmltcG9ydCB7VGFza30gZnJvbSAnLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrJztcbmltcG9ydCB7Q2FsbENoYWluU2VydmljZX0gZnJvbSAnLi4vdXRpbGl0eS9jYWxsLWNoYWluL2NhbGwtY2hhaW4uc2VydmljZSc7XG5pbXBvcnQge1Rhc2tTZXREYXRhUmVxdWVzdEJvZHksIFRhc2tTZXREYXRhUmVxdWVzdEZpZWxkc30gZnJvbSAnLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrLXNldC1kYXRhLXJlcXVlc3QtYm9keSc7XG5pbXBvcnQge0ZpZWxkVHlwZVJlc291cmNlfSBmcm9tICcuLi90YXNrLWNvbnRlbnQvbW9kZWwvZmllbGQtdHlwZS1yZXNvdXJjZSc7XG5pbXBvcnQge0NhdGVnb3J5fSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2NhdGVnb3J5JztcbmltcG9ydCB7TmV0fSBmcm9tICcuLi9wcm9jZXNzL25ldCc7XG5pbXBvcnQge1VzZXJGaWx0ZXJDb25zdGFudHN9IGZyb20gJy4vbW9kZWxzL3VzZXItZmlsdGVyLWNvbnN0YW50cyc7XG5pbXBvcnQge1NpZGVNZW51U2l6ZX0gZnJvbSAnLi4vc2lkZS1tZW51L21vZGVscy9zaWRlLW1lbnUtc2l6ZSc7XG5pbXBvcnQge1NhdmVGaWx0ZXJJbmplY3Rpb25EYXRhfSBmcm9tICcuLi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL3NhdmUtZmlsdGVyL21vZGVsL3NhdmUtZmlsdGVyLWluamVjdGlvbi1kYXRhJztcbmltcG9ydCB7U2lkZU1lbnVTZXJ2aWNlfSBmcm9tICcuLi9zaWRlLW1lbnUvc2VydmljZXMvc2lkZS1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHtOQUVfTE9BRF9GSUxURVJfQ09NUE9ORU5ULCBOQUVfU0FWRV9GSUxURVJfQ09NUE9ORU5UfSBmcm9tICcuLi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL2luamVjdGlvbi10b2tlbnMnO1xuaW1wb3J0IHtDb21wb25lbnRUeXBlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7TG9hZEZpbHRlckluamVjdGlvbkRhdGF9IGZyb20gJy4uL3NpZGUtbWVudS9jb250ZW50LWNvbXBvbmVudHMvbG9hZC1maWx0ZXIvbW9kZWwvbG9hZC1maWx0ZXItaW5qZWN0aW9uLWRhdGEnO1xuaW1wb3J0IHtGaWx0ZXJUeXBlfSBmcm9tICcuL21vZGVscy9maWx0ZXItdHlwZSc7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvZmlsdGVyJztcbmltcG9ydCB7TWVyZ2VPcGVyYXRvcn0gZnJvbSAnLi9tb2RlbHMvbWVyZ2Utb3BlcmF0b3InO1xuaW1wb3J0IHtTYXZlZEZpbHRlck1ldGFkYXRhfSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL3BlcnNpc3RhbmNlL3NhdmVkLWZpbHRlci1tZXRhZGF0YSc7XG5pbXBvcnQge0ZpbHRlck1ldGFkYXRhfSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL3BlcnNpc3RhbmNlL2ZpbHRlci1tZXRhZGF0YSc7XG5pbXBvcnQge0NyZWF0ZUNhc2VFdmVudE91dGNvbWV9IGZyb20gJy4uL2V2ZW50L21vZGVsL2V2ZW50LW91dGNvbWVzL2Nhc2Utb3V0Y29tZXMvY3JlYXRlLWNhc2UtZXZlbnQtb3V0Y29tZSc7XG5pbXBvcnQge0NhdGVnb3J5UmVzb2x2ZXJTZXJ2aWNlfSBmcm9tICcuLi9zZWFyY2gvY2F0ZWdvcnktZmFjdG9yeS9jYXRlZ29yeS1yZXNvbHZlci5zZXJ2aWNlJztcbmltcG9ydCB7RGF0YUdyb3VwfSBmcm9tICcuLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2RhdGEtZ3JvdXBzJztcbmltcG9ydCB7Z2V0RmllbGRGcm9tRGF0YUdyb3Vwc30gZnJvbSAnLi4vdXRpbGl0eS9nZXQtZmllbGQnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TkFFX0xPQURfRklMVEVSX0RJQUxPR19DT01QT05FTlQsIE5BRV9TQVZFX0ZJTFRFUl9ESUFMT0dfQ09NUE9ORU5UfSBmcm9tICcuLi9kaWFsb2cvaW5qZWN0aW9uLXRva2Vucyc7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IG1hbmFnZXMgZmlsdGVycyBjcmVhdGVkIGJ5IHVzZXJzIG9mIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyRmlsdGVyc1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHJvdGVjdGVkIF9pbml0aWFsaXplZCQ6IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF9maWx0ZXJOZXQ6IE5ldDtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfY2FzZVNlcnZpY2U6IENhc2VSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90YXNrU2VydmljZTogVGFza1Jlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NhbGxDaGFpblNlcnZpY2U6IENhbGxDaGFpblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zaWRlTWVudVNlcnZpY2U6IFNpZGVNZW51U2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NhdGVnb3J5UmVzb2x2ZXJTZXJ2aWNlOiBDYXRlZ29yeVJlc29sdmVyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2RpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX1NBVkVfRklMVEVSX0RJQUxPR19DT01QT05FTlQpIHByb3RlY3RlZCBfc2F2ZUZpbHRlckNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPixcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9MT0FEX0ZJTFRFUl9ESUFMT0dfQ09NUE9ORU5UKSBwcm90ZWN0ZWQgX2xvYWRGaWx0ZXJDb21wb25lbnQ6IENvbXBvbmVudFR5cGU8dW5rbm93bj4pIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTZXJ2aWNlLmdldE5ldChVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9ORVRfSURFTlRJRklFUikuc3Vic2NyaWJlKG5ldCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJOZXQgPSBuZXQ7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplZCQubmV4dCh0cnVlKTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBGaWx0ZXIgbmV0IGNvdWxkIG5vdCBiZSBsb2FkZWQgd2l0aCBlcnJvcmAsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgdGhlIHNwZWNpZmllZCBmaWx0ZXIgY2FzZSBieSBpdHMgY2FzZSBpZC5cbiAgICAgKiBAcGFyYW0gZmlsdGVyQ2FzZUlkIFN0cmluZ0lkIG9mIHRoZSBmaWx0ZXIgY2FzZSB0aGF0IHNob3VsZCBiZSBkZWxldGVkXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGB0cnVlYCBpZiB0aGUgY2FzZSB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgYW5kIGBmYWxzZWAgb3RoZXJ3aXNlXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZShmaWx0ZXJDYXNlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgICAgIHRoaXMuX2Nhc2VTZXJ2aWNlLmRlbGV0ZUNhc2UoZmlsdGVyQ2FzZUlkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKCdGaWx0ZXIgY2FzZSBkZWxldGUgc3VjY2VzcycsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICByZXN1bHQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbHRlciBjYXNlIGRlbGV0ZSBmYWlsdXJlJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignRmlsdGVyIGNhc2UgZGVsZXRlIGVycm9yJywgZSk7XG4gICAgICAgICAgICByZXN1bHQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgcmVzdWx0JC5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSBzaWRlIG1lbnUgd2l0aCBmaWx0ZXIgY2FzZXMgYW5kIGFsbG93cyB0aGUgdXNlciB0byBzZWxlY3Qgb25lIG9mIHRoZW0uXG4gICAgICpcbiAgICAgKiBUaGUgZGVmYXVsdCBmaWx0ZXIgY29uc3RyYWlucyB0aGUgY2FzZXMgdG8gYmUgaW5zdGFuY2VzIG9mIHRoZSBmaWx0ZXIgcHJvY2VzcyBhbmQgdG8gYmUgZmlsdGVycyBvZiB0aGUgc3BlY2lmaWVkIHR5cGVcbiAgICAgKiAoYENhc2VgIG9yIGBUYXNrYCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyVHlwZSB3aGV0aGVyIGBDYXNlYCBvciBgVGFza2AgdXNlciBmaWx0ZXJzIHNob3VsZCBiZSBsb2FkZWRcbiAgICAgKiBAcGFyYW0gYWRkaXRpb25hbEZpbHRlciBhZGRpdGlvbmFsIGNvbnN0cmFpbnMgb24gdGhlIGRpc3BsYXllZCB1c2VyIGZpbHRlciBjYXNlcy4gTXVzdCBiZSBvZiB0eXBlIGBDYXNlYFxuICAgICAqIG90aGVyd2lzZSB0aGUgbWV0aG9kIHRocm93cyBhbiBlcnJvci4gSWYgaXQgaXMgYSB7QGxpbmsgTWVyZ2VkRmlsdGVyfSBtdXN0IHVzZSB0aGUgYEFORGAge0BsaW5rIE1lcmdlT3BlcmF0b3J9IG90aGVyd2lzZSBhbiBlcnJvclxuICAgICAqIHdpbGwgYmUgdGhyb3duXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBkYXRhIG5lY2Vzc2FyeSB0byByZWNvbnN0cnVjdCB0aGUgc2VsZWN0ZWQgZmlsdGVyLCBvciBgdW5kZWZpbmVkYCBpZiBubyBmaWx0ZXIgd2FzIHNlbGVjdGVkXG4gICAgICovXG4gICAgcHVibGljIGxvYWQoZmlsdGVyVHlwZTogRmlsdGVyVHlwZSwgYWRkaXRpb25hbEZpbHRlcj86IEZpbHRlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmIChhZGRpdGlvbmFsRmlsdGVyPy50eXBlID09PSBGaWx0ZXJUeXBlLlRBU0spIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignVGhlIGFkZGl0aW9uYWwgZmlsdGVyIGFwcGxpZWQgdG8gVXNlckZpbHRlcnNTZXJ2aWNlLmxvYWQoKSBtdXN0IGJlIG9mIHR5cGUgQ2FzZScsIGFkZGl0aW9uYWxGaWx0ZXIpO1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1RoZSBhZGRpdGlvbmFsIGZpbHRlciBhcHBsaWVkIHRvIFVzZXJGaWx0ZXJzU2VydmljZS5sb2FkKCkgbXVzdCBiZSBvZiB0eXBlIENhc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWx0ZXJDYXNlc0ZpbHRlciA9IFNpbXBsZUZpbHRlci5mcm9tQ2FzZVF1ZXJ5KHtcbiAgICAgICAgICAgIHByb2Nlc3M6IHtcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9ORVRfSURFTlRJRklFUlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHF1ZXJ5OiBgZGF0YVNldC4ke1VzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX1RZUEVfRklFTERfSUR9LmtleVZhbHVlOiR7ZmlsdGVyVHlwZX1gXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoISFhZGRpdGlvbmFsRmlsdGVyKSB7XG4gICAgICAgICAgICBmaWx0ZXJDYXNlc0ZpbHRlciA9IGZpbHRlckNhc2VzRmlsdGVyLm1lcmdlKGFkZGl0aW9uYWxGaWx0ZXIsIE1lcmdlT3BlcmF0b3IuQU5EKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGFueT4oMSk7XG4gICAgICAgIGNvbnN0IHJlZiA9IHRoaXMuX2RpYWxvZy5vcGVuKHRoaXMuX2xvYWRGaWx0ZXJDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFwiZGlhbG9nLXJlc3BvbnNpdmVcIixcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlckNhc2VzRmlsdGVyXG4gICAgICAgICAgICB9IGFzIExvYWRGaWx0ZXJJbmplY3Rpb25EYXRhLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5tZXNzYWdlID09PSAnU2lkZSBtZW51IGNsb3NlZCB1bmV4cGVjdGVkbHknKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgdGhlIHByZWRpY2F0ZSBmaWx0ZXIgY29udGFpbmVkIGluIHRoZSBwcm92aWRlZCB7QGxpbmsgU2VhcmNoU2VydmljZX0gaW5zdGFuY2UuXG4gICAgICpcbiAgICAgKiBUaGUgYmFzZSBmaWx0ZXIgb2YgdGhlIHNlYXJjaCBzZXJ2aWNlIGlzIG5vdCBzYXZlZC5cbiAgICAgKlxuICAgICAqIEEgbmV3IGZpbHRlciBjYXNlIGlzIGNyZWF0ZWQgYW5kIHRoZSBuZWNlc3NhcnkgZmlsdGVyIGluZm9ybWF0aW9uIGlzIHNldCBpbnRvIGl0LlxuICAgICAqXG4gICAgICogVGhlbiBhIHNpZGUgbWVudSB3aXRoIHRoZSBmaWx0ZXIgaXMgb3BlbmVkIGZvciB0aGUgdXNlciB0byBlbnRlciB0aGUgbmFtZSBhbmQgb3RoZXIgcHJvcGVydGllcy5cbiAgICAgKiBUaGUgdXNlciBjYW4gY29uZmlybSBvciBjYW5jZWwgdGhlIHNhdmUgYnkgZmluaXNoaW5nIHRoZSB0YXNrIGluIHRoZSBzaWRlIG1lbnUsIG9yIGJ5IGNhbmNlbGluZy9jbG9zaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNlYXJjaFNlcnZpY2Ugc2VhcmNoIHNlcnZpY2UgY29udGFpbmluZyBhIHByZWRpY2F0ZSBmaWx0ZXIsIHdlIHdhbnQgdG8gc2F2ZVxuICAgICAqIEBwYXJhbSBhbGxvd2VkTmV0cyBhbGxvd2VkIG5ldHMgb2YgdGhlIHZpZXcsIHRoYXQgY29udGFpbnMgdGhlIHNlYXJjaCBzZXJ2aWNlXG4gICAgICogQHBhcmFtIHNlYXJjaENhdGVnb3JpZXMgc2VhcmNoIGNhdGVnb3JpZXMgYXZhaWxhYmxlIGluIHRoZSBzYXZlZCBhZHZhbmNlZCBzZWFyY2ggY29tcG9uZW50XG4gICAgICogQHBhcmFtIHZpZXdJZCB0aGUgdmlld0lkIG9mIHRoZSB2aWV3IHdoaWNoIGNvbnRhaW5lZCB0aGUgZmlsdGVyLlxuICAgICAqIElmIG5laXRoZXIgdGhlIGB2aWV3SWRgIG5vciB0aGUgYG5hdmlnYXRpb25JdGVtVGFza0RhdGFgIGF0dHJpYnV0ZSBpcyBzZXQgdGhlIGZpbHRlciB3aWxsIGJlIGNyZWF0ZWQgYXMgYSBuZXcgcm9vdCBmaWx0ZXJcbiAgICAgKiB3aXRob3V0IGFueSBwYXJlbnQgZmlsdGVyIGxpbmsuIFRoaXMgd2lsbCBtb3N0IGxpa2VseSByZXN1bHQgaW4gdGhlIGZpbHRlciBiZWluZyBsZXNzIHJlc3RyaWN0aXZlIHRoYW4gd2hhdFxuICAgICAqIHRoZSB1c2VyIHNlZXMgaW4gdGhlIGN1cnJlbnQgdmlldywgc2luY2UgdGhlIGJhc2UgZmlsdGVyIG9mIHRoZSB2aWV3IHdpbGwgTk9UIGJlIHNhdmVkIGFsb25nc2lkZSB0aGUgc2F2ZWQgZmlsdGVyLlxuICAgICAqIEBwYXJhbSBhZGRpdGlvbmFsRGF0YSBzZXQgZGF0YSByZXF1ZXN0IGJvZHksIHRoYXQgaXMgc2VudCB0byB0aGUgZmlsdGVyIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGJvZHkuXG4gICAgICogVGhlIGRlZmF1bHQgYm9keSBpcyBhcHBsaWVkIGZpcnN0IGFuZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGlzIGFyZ3VtZW50LlxuICAgICAqIEBwYXJhbSB3aXRoRGVmYXVsdENhdGVnb3JpZXMgV2hldGhlciB0aGUgc2F2ZWQgZmlsdGVyIHNob3VsZCBiZSBzYXZlZCB3aXRoXG4gICAgICogdGhlIFtkZWZhdWx0U2VhcmNoQ2F0ZWdvcmllc117QGxpbmsgRmlsdGVyTWV0YWRhdGEjZGVmYXVsdFNlYXJjaENhdGVnb3JpZXN9IGZsYWcgc2V0IHRvIGB0cnVlYCwgb3IgYGZhbHNlYC5cbiAgICAgKiBAcGFyYW0gaW5oZXJpdEFsbG93ZWROZXRzIFdoZXRoZXIgdGhlIHNhdmVkIGZpbHRlciBzaG91bGQgbWVyZ2UgaXRzIGFsbG93ZWQgbmV0cyB3aXRoIHRoZSBhbGxvd2VkIG5ldHMgcHJvdmlkZWQgYnlcbiAgICAgKiB0aGUge0BsaW5rIEJhc2VBbGxvd2VkTmV0c1NlcnZpY2V9LlxuICAgICAqIEBwYXJhbSBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhIGlmIHByb3ZpZGVkIHRoZW4gaXQgaW1wbGllcyB0aGUgZmlsdGVyIGhhcyBhIHBhcmVudCBmaWx0ZXIgdGhhdCBjcmVhdGVkIGl0cyBob3N0IGR5bmFtaWMgdmlldy5cbiAgICAgKiBJZiB0aGlzIGlzIHRoZSBjYXNlIHRoZSBjYXNlIElEIG9mIHRoZSBwYXJlbnQgZmlsdGVyIHdpbGwgYmUgc2V0IGludG8gdGhlIG5ld2x5IGNyZWF0ZWQgZmlsdGVyIGNhc2UuXG4gICAgICogSWYgbm90IHNldCBpdCBpbXBsaWVzIHRoaXMgaXMgYSBmaWx0ZXIgb3JpZ2luYXRpbmcgaW4gYW4gaW4tYXBwIHZpZXcgYW5kIGl0cyB2aWV3IGlkIHdpbGwgYmUgc2V0IGludG8gdGhlIGNyZWF0ZWQgZmlsdGVyLlxuICAgICAqIEByZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgaWQgb2YgdGhlIGNyZWF0ZWQgRmlsdGVyIGNhc2UgaW5zdGFuY2Ugb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIHNhdmUgcHJvY2VzcyxcbiAgICAgKiBvciB0aGUgZmlsdGVyIGNvdWxkIG5vdCBiZSBzYXZlZFxuICAgICAqL1xuICAgIHB1YmxpYyBzYXZlKHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgYWxsb3dlZE5ldHM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPixcbiAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgIHZpZXdJZD86IHN0cmluZyxcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRGF0YTogVGFza1NldERhdGFSZXF1ZXN0RmllbGRzID0ge30sXG4gICAgICAgICAgICAgICAgd2l0aERlZmF1bHRDYXRlZ29yaWVzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHMgPSB0cnVlLFxuICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JdGVtVGFza0RhdGE6IEFycmF5PERhdGFHcm91cD4gPSBudWxsKTogT2JzZXJ2YWJsZTxTYXZlZEZpbHRlck1ldGFkYXRhPiB7XG4gICAgICAgIGlmICghc2VhcmNoU2VydmljZS5hZGRpdGlvbmFsRmlsdGVyc0FwcGxpZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy53YXJuKCdUaGUgcHJvdmlkZWQgU2VhcmNoU2VydmljZSBjb250YWlucyBubyBmaWx0ZXIgYmVzaWRlcyB0aGUgYmFzZSBmaWx0ZXIuIE5vdGhpbmcgdG8gc2F2ZS4nKTtcbiAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFJlcGxheVN1YmplY3Q8U2F2ZWRGaWx0ZXJNZXRhZGF0YT4oMSk7XG4gICAgICAgIHRoaXMuY3JlYXRlRmlsdGVyQ2FzZUFuZFNldERhdGEoXG4gICAgICAgICAgICBzZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgYWxsb3dlZE5ldHMsXG4gICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgdmlld0lkLFxuICAgICAgICAgICAgYWRkaXRpb25hbERhdGEsXG4gICAgICAgICAgICB3aXRoRGVmYXVsdENhdGVnb3JpZXMsXG4gICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHMsXG4gICAgICAgICAgICBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhXG4gICAgICAgICkuc3Vic2NyaWJlKGZpbHRlckNhc2VJZCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWYgPSB0aGlzLl9kaWFsb2cub3Blbih0aGlzLl9zYXZlRmlsdGVyQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgcGFuZWxDbGFzczogXCJkaWFsb2ctcmVzcG9uc2l2ZVwiLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RmlsdGVyQ2FzZUlkOiBmaWx0ZXJDYXNlSWRcbiAgICAgICAgICAgICAgICB9IGFzIFNhdmVGaWx0ZXJJbmplY3Rpb25EYXRhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5tZXNzYWdlID09PSAnU2lkZSBtZW51IGNsb3NlZCB1bmV4cGVjdGVkbHknKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlKGZpbHRlckNhc2VJZCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyQ2FzZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZE5ldHM6IFsuLi5hbGxvd2VkTmV0c10sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5WaWV3SWQ6IHZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlck1ldGFkYXRhOiB0aGlzLmZpbHRlck1ldGFkYXRhRnJvbVNlYXJjaFNlcnZpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHNcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IFNpbXBsZUZpbHRlci5mcm9tUXVlcnkoe3F1ZXJ5OiBzZWFyY2hTZXJ2aWNlLnJvb3RQcmVkaWNhdGUucXVlcnkudmFsdWV9LCBzZWFyY2hTZXJ2aWNlLmZpbHRlclR5cGUpXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGUgcHJlZGljYXRlIGZpbHRlciBjb250YWluZWQgaW4gdGhlIHByb3ZpZGVkIHtAbGluayBTZWFyY2hTZXJ2aWNlfSBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIFRoZSBiYXNlIGZpbHRlciBvZiB0aGUgc2VhcmNoIHNlcnZpY2UgaXMgbm90IHNhdmVkLlxuICAgICAqXG4gICAgICogQSBuZXcgZmlsdGVyIGNhc2UgaXMgY3JlYXRlZCBhbmQgdGhlIG5lY2Vzc2FyeSBmaWx0ZXIgaW5mb3JtYXRpb24gaXMgc2V0IGludG8gaXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2VhcmNoU2VydmljZSBzZWFyY2ggc2VydmljZSBjb250YWluaW5nIGEgcHJlZGljYXRlIGZpbHRlciwgd2Ugd2FudCB0byBzYXZlXG4gICAgICogQHBhcmFtIGFsbG93ZWROZXRzIGFsbG93ZWQgbmV0cyBvZiB0aGUgdmlldywgdGhhdCBjb250YWlucyB0aGUgc2VhcmNoIHNlcnZpY2VcbiAgICAgKiBAcGFyYW0gc2VhcmNoQ2F0ZWdvcmllcyBzZWFyY2ggY2F0ZWdvcmllcyBhdmFpbGFibGUgaW4gdGhlIHNhdmVkIGFkdmFuY2VkIHNlYXJjaCBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gdmlld0lkIHRoZSB2aWV3SWQgb2YgdGhlIHZpZXcgd2hpY2ggY29udGFpbmVkIHRoZSBmaWx0ZXIuXG4gICAgICogSWYgbmVpdGhlciB0aGUgYHZpZXdJZGAgbm9yIHRoZSBgbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YWAgYXR0cmlidXRlIGlzIHNldCB0aGUgZmlsdGVyIHdpbGwgYmUgY3JlYXRlZCBhcyBhIG5ldyByb290IGZpbHRlclxuICAgICAqIHdpdGhvdXQgYW55IHBhcmVudCBmaWx0ZXIgbGluay4gVGhpcyB3aWxsIG1vc3QgbGlrZWx5IHJlc3VsdCBpbiB0aGUgZmlsdGVyIGJlaW5nIGxlc3MgcmVzdHJpY3RpdmUgdGhhbiB3aGF0XG4gICAgICogdGhlIHVzZXIgc2VlcyBpbiB0aGUgY3VycmVudCB2aWV3LCBzaW5jZSB0aGUgYmFzZSBmaWx0ZXIgb2YgdGhlIHZpZXcgd2lsbCBOT1QgYmUgc2F2ZWQgYWxvbmdzaWRlIHRoZSBzYXZlZCBmaWx0ZXIuXG4gICAgICogQHBhcmFtIGFkZGl0aW9uYWxEYXRhIHNldCBkYXRhIHJlcXVlc3QgYm9keSwgdGhhdCBpcyBzZW50IHRvIHRoZSBmaWx0ZXIgaW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgYm9keS5cbiAgICAgKiBUaGUgZGVmYXVsdCBib2R5IGlzIGFwcGxpZWQgZmlyc3QgYW5kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoaXMgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyBXaGV0aGVyIHRoZSBzYXZlZCBmaWx0ZXIgc2hvdWxkIGJlIHNhdmVkIHdpdGhcbiAgICAgKiB0aGUgW2RlZmF1bHRTZWFyY2hDYXRlZ29yaWVzXXtAbGluayBGaWx0ZXJNZXRhZGF0YSNkZWZhdWx0U2VhcmNoQ2F0ZWdvcmllc30gZmxhZyBzZXQgdG8gYHRydWVgLCBvciBgZmFsc2VgLlxuICAgICAqIEBwYXJhbSBpbmhlcml0QWxsb3dlZE5ldHMgV2hldGhlciB0aGUgc2F2ZWQgZmlsdGVyIHNob3VsZCBtZXJnZSBpdHMgYWxsb3dlZCBuZXRzIHdpdGggdGhlIGFsbG93ZWQgbmV0cyBwcm92aWRlZCBieVxuICAgICAqIHRoZSB7QGxpbmsgQmFzZUFsbG93ZWROZXRzU2VydmljZX0uXG4gICAgICogQHBhcmFtIG5hdmlnYXRpb25JdGVtVGFza0RhdGEgaWYgcHJvdmlkZWQgdGhlbiBpdCBpbXBsaWVzIHRoZSBmaWx0ZXIgaGFzIGEgcGFyZW50IGZpbHRlciB0aGF0IGNyZWF0ZWQgaXRzIGhvc3QgZHluYW1pYyB2aWV3LlxuICAgICAqIElmIHRoaXMgaXMgdGhlIGNhc2UgdGhlIGNhc2UgSUQgb2YgdGhlIHBhcmVudCBmaWx0ZXIgd2lsbCBiZSBzZXQgaW50byB0aGUgbmV3bHkgY3JlYXRlZCBmaWx0ZXIgY2FzZS5cbiAgICAgKiBJZiBub3Qgc2V0IGl0IGltcGxpZXMgdGhpcyBpcyBhIGZpbHRlciBvcmlnaW5hdGluZyBpbiBhbiBpbi1hcHAgdmlldyBhbmQgaXRzIHZpZXcgaWQgd2lsbCBiZSBzZXQgaW50byB0aGUgY3JlYXRlZCBmaWx0ZXIuXG4gICAgICogQHJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBpZCBvZiB0aGUgY3JlYXRlZCBGaWx0ZXIgY2FzZSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVGaWx0ZXJDYXNlQW5kU2V0RGF0YShzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkTmV0czogUmVhZG9ubHlBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ/OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxEYXRhOiBUYXNrU2V0RGF0YVJlcXVlc3RGaWVsZHMgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aERlZmF1bHRDYXRlZ29yaWVzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdEFsbG93ZWROZXRzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YTogQXJyYXk8RGF0YUdyb3VwPiA9IG51bGwpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xuICAgICAgICB0aGlzLndoZW5Jbml0aWFsaXplZCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jYXNlU2VydmljZS5jcmVhdGVDYXNlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5fZmlsdGVyTmV0LmRlZmF1bHRDYXNlTmFtZSxcbiAgICAgICAgICAgICAgICBuZXRJZDogdGhpcy5fZmlsdGVyTmV0LnN0cmluZ0lkXG4gICAgICAgICAgICB9KS5zdWJzY3JpYmUoZmlsdGVyQ2FzZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza1NlcnZpY2UuZ2V0VGFza3MoU2ltcGxlRmlsdGVyLmZyb21UYXNrUXVlcnkoe1xuICAgICAgICAgICAgICAgICAgICBjYXNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogKGZpbHRlckNhc2Uub3V0Y29tZSBhcyBDcmVhdGVDYXNlRXZlbnRPdXRjb21lKS5hQ2FzZS5zdHJpbmdJZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkpLnN1YnNjcmliZShwYWdlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNDb250ZW50KHBhZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGZpbHRlciBwcm9jZXNzIHRvIGNvbnRhaW4gdGFza3MsIGJ1dCBub25lIHdlcmUgZm91bmQhJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbml0VGFzayA9IHBhZ2UuY29udGVudC5maW5kKHRhc2sgPT4gdGFzay50cmFuc2l0aW9uSWQgPT09IFVzZXJGaWx0ZXJDb25zdGFudHMuU0VUX0ZJTFRFUl9NRVRBREFUQV9UUkFOU0lUSU9OX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRUYXNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgZmlsdGVyIHByb2Nlc3MgdG8gY29udGFpbiB0YXNrICcke1VzZXJGaWx0ZXJDb25zdGFudHMuU0VUX0ZJTFRFUl9NRVRBREFUQV9UUkFOU0lUSU9OX0lEXG4gICAgICAgICAgICAgICAgICAgICAgICB9JywgYnV0IG5vbmUgd2FzIGZvdW5kIWApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBbVXNlckZpbHRlckNvbnN0YW50cy5GSUxURVJfVFlQRV9GSUVMRF9JRF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5FTlVNRVJBVElPTl9NQVAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFNlcnZpY2UuZmlsdGVyVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9GSUVMRF9JRF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5GSUxURVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFNlcnZpY2Uucm9vdFByZWRpY2F0ZS5xdWVyeS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkTmV0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJNZXRhZGF0YTogdGhpcy5maWx0ZXJNZXRhZGF0YUZyb21TZWFyY2hTZXJ2aWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoRGVmYXVsdENhdGVnb3JpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRBbGxvd2VkTmV0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudEZpbHRlckNhc2VJZEZpZWxkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmF2aWdhdGlvbkl0ZW1UYXNrRGF0YSAhPT0gbnVsbCAmJiBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEZpbHRlckNhc2VJZEZpZWxkID0gZ2V0RmllbGRGcm9tRGF0YUdyb3VwcyhuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX0NBU0VfSURfRklFTERfSUQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudEZpbHRlckNhc2VJZEZpZWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RCb2R5W1VzZXJGaWx0ZXJDb25zdGFudHMuUEFSRU5UX0ZJTFRFUl9DQVNFX0lEX0ZJRUxEX0lEXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5URVhULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJlbnRGaWx0ZXJDYXNlSWRGaWVsZC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2aWV3SWQgIT09IHVuZGVmaW5lZCB8fCB2aWV3SWQgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVtVc2VyRmlsdGVyQ29uc3RhbnRzLk9SSUdJTl9WSUVXX0lEX0ZJRUxEX0lEXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5URVhULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2aWV3SWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFzc2lnblNldERhdGFGaW5pc2goaW5pdFRhc2ssIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbml0VGFzay5zdHJpbmdJZF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXF1ZXN0Qm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hZGRpdGlvbmFsRGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9jYWxsQ2hhaW5TZXJ2aWNlLmNyZWF0ZShzdWNjZXNzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmlsdGVyIGluc3RhbmNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubmV4dCgoZmlsdGVyQ2FzZS5vdXRjb21lIGFzIENyZWF0ZUNhc2VFdmVudE91dGNvbWUpLmFDYXNlLnN0cmluZ0lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgJ3NhdmVXaXRoU2lkZU1lbnUnKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgd2hlbkluaXRpYWxpemVkKG9uU3VjY2VzczogKCkgPT4gdm9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmFpbHVyZTogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYFVzZXJGaWx0ZXJTZXJ2aWNlIGZhaWxlZCB0byBpbml0aWFsaXplIGFuZCB0aGUgY2FsbGVkIG1ldGhvZCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA/ICcgKCcgKyBtZXRob2QgKyAnKScgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2Fubm90IGJlIHBlcmZvcm1lZGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkge1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCQuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoaW5pdGlhbGl6ZWQgPT4ge1xuICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPyBvblN1Y2Nlc3MoKSA6IG9uRmFpbHVyZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPIDYuNC4yMDIxIElNUFJPVkVNRU5UIC0gZXh0cmFjdCBzaW1pbGFyIG1ldGhvZCBpbnRvIHNvbWUgdXRpbGl0eSBzZXJ2aWNlXG4gICAgcHJvdGVjdGVkIGFzc2lnblNldERhdGFGaW5pc2godGFzazogVGFzaywgZGF0YTogVGFza1NldERhdGFSZXF1ZXN0Qm9keSwgY2FsbENoYWluOiBTdWJqZWN0PGJvb2xlYW4+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Rhc2tTZXJ2aWNlLmFzc2lnblRhc2sodGFzay5zdHJpbmdJZCkuc3Vic2NyaWJlKGFzc2lnbk91dGNvbWUgPT4ge1xuICAgICAgICAgICAgaWYgKGFzc2lnbk91dGNvbWUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYENvdWxkIG5vdCBhc3NpZ24gdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBhc3NpZ25PdXRjb21lLmVycm9yKTtcbiAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl90YXNrU2VydmljZS5zZXREYXRhKHRhc2suc3RyaW5nSWQsIGRhdGEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza1NlcnZpY2UuZmluaXNoVGFzayh0YXNrLnN0cmluZ0lkKS5zdWJzY3JpYmUoZmluaXNoT3V0Y29tZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaW5pc2hPdXRjb21lLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYENvdWxkIG5vdCBmaW5pc2ggdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBmaW5pc2hPdXRjb21lLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBDb3VsZCBub3QgZmluaXNoIHRhc2sgJyR7dGFzay50aXRsZX0nYCwgdGFzaywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBDb3VsZCBub3Qgc2V0IGRhdGEgb2YgdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBkYXRhLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgY2FsbENoYWluLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgQ291bGQgbm90IGFzc2lnbiB0YXNrICcke3Rhc2sudGl0bGV9J2AsIHRhc2ssIGVycm9yKTtcbiAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZpbHRlck1ldGFkYXRhRnJvbVNlYXJjaFNlcnZpY2Uoc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllczogYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHM6IGJvb2xlYW4pOiBGaWx0ZXJNZXRhZGF0YSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiBzZWFyY2hTZXJ2aWNlLmZpbHRlclR5cGUsXG4gICAgICAgICAgICBwcmVkaWNhdGVNZXRhZGF0YTogc2VhcmNoU2VydmljZS5jcmVhdGVQcmVkaWNhdGVNZXRhZGF0YSgpLFxuICAgICAgICAgICAgc2VhcmNoQ2F0ZWdvcmllczogc2VhcmNoQ2F0ZWdvcmllcy5tYXAoYyA9PiB0aGlzLl9jYXRlZ29yeVJlc29sdmVyU2VydmljZS5zZXJpYWxpemUoYykpLFxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaENhdGVnb3JpZXM6IHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyxcbiAgICAgICAgICAgIGluaGVyaXRBbGxvd2VkTmV0c1xuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1maWx0ZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2ZpbHRlci91c2VyLWZpbHRlcnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQU8sTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFhLEVBQUUsRUFBRSxhQUFhLEVBQVUsTUFBTSxNQUFNLENBQUM7QUFNNUQsT0FBTyxFQUFTLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFJbEUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFHNUUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFLbkUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQU10RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUc1RCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7OztBQUU5Rzs7R0FFRztBQUlILE1BQU0sT0FBTyxrQkFBa0I7SUFLM0IsWUFBc0IsWUFBaUMsRUFDakMsWUFBaUMsRUFDakMsZUFBK0IsRUFDL0IsaUJBQW1DLEVBQ25DLGdCQUFpQyxFQUNqQyxJQUFtQixFQUNuQix3QkFBaUQsRUFDakQsT0FBa0IsRUFDb0Msb0JBQTRDLEVBQzVDLG9CQUE0QztRQVRsRyxpQkFBWSxHQUFaLFlBQVks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QixrUkFhSyxnQ0FBZ0MsNkJBQ2hDLGdDQUFnQztvSEFkdkQsa0JBQWtCLGNBRmYsTUFBTTs0RkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCOzswQkFjZ0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQ0FBZ0M7OzBCQUNuRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtDYXNlUmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L2Nhc2UtcmVzb3VyY2Uuc2VydmljZSc7XG5pbXBvcnQge1Rhc2tSZXNvdXJjZVNlcnZpY2V9IGZyb20gJy4uL3Jlc291cmNlcy9lbmdpbmUtZW5kcG9pbnQvdGFzay1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7U2VhcmNoU2VydmljZX0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC1zZXJ2aWNlL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7UHJvY2Vzc1NlcnZpY2V9IGZyb20gJy4uL3Byb2Nlc3MvcHJvY2Vzcy5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7ZmlsdGVyLCB0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1NpbXBsZUZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvc2ltcGxlLWZpbHRlcic7XG5pbXBvcnQge2hhc0NvbnRlbnR9IGZyb20gJy4uL3V0aWxpdHkvcGFnaW5hdGlvbi9wYWdlLWhhcy1jb250ZW50JztcbmltcG9ydCB7VGFza30gZnJvbSAnLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrJztcbmltcG9ydCB7Q2FsbENoYWluU2VydmljZX0gZnJvbSAnLi4vdXRpbGl0eS9jYWxsLWNoYWluL2NhbGwtY2hhaW4uc2VydmljZSc7XG5pbXBvcnQge1Rhc2tTZXREYXRhUmVxdWVzdEJvZHksIFRhc2tTZXREYXRhUmVxdWVzdEZpZWxkc30gZnJvbSAnLi4vcmVzb3VyY2VzL2ludGVyZmFjZS90YXNrLXNldC1kYXRhLXJlcXVlc3QtYm9keSc7XG5pbXBvcnQge0ZpZWxkVHlwZVJlc291cmNlfSBmcm9tICcuLi90YXNrLWNvbnRlbnQvbW9kZWwvZmllbGQtdHlwZS1yZXNvdXJjZSc7XG5pbXBvcnQge0NhdGVnb3J5fSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL2NhdGVnb3J5L2NhdGVnb3J5JztcbmltcG9ydCB7TmV0fSBmcm9tICcuLi9wcm9jZXNzL25ldCc7XG5pbXBvcnQge1VzZXJGaWx0ZXJDb25zdGFudHN9IGZyb20gJy4vbW9kZWxzL3VzZXItZmlsdGVyLWNvbnN0YW50cyc7XG5pbXBvcnQge1NhdmVGaWx0ZXJJbmplY3Rpb25EYXRhfSBmcm9tICcuLi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL3NhdmUtZmlsdGVyL21vZGVsL3NhdmUtZmlsdGVyLWluamVjdGlvbi1kYXRhJztcbmltcG9ydCB7U2lkZU1lbnVTZXJ2aWNlfSBmcm9tICcuLi9zaWRlLW1lbnUvc2VydmljZXMvc2lkZS1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHtDb21wb25lbnRUeXBlfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7TG9hZEZpbHRlckluamVjdGlvbkRhdGF9IGZyb20gJy4uL3NpZGUtbWVudS9jb250ZW50LWNvbXBvbmVudHMvbG9hZC1maWx0ZXIvbW9kZWwvbG9hZC1maWx0ZXItaW5qZWN0aW9uLWRhdGEnO1xuaW1wb3J0IHtGaWx0ZXJUeXBlfSBmcm9tICcuL21vZGVscy9maWx0ZXItdHlwZSc7XG5pbXBvcnQge0ZpbHRlcn0gZnJvbSAnLi9tb2RlbHMvZmlsdGVyJztcbmltcG9ydCB7TWVyZ2VPcGVyYXRvcn0gZnJvbSAnLi9tb2RlbHMvbWVyZ2Utb3BlcmF0b3InO1xuaW1wb3J0IHtTYXZlZEZpbHRlck1ldGFkYXRhfSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL3BlcnNpc3RhbmNlL3NhdmVkLWZpbHRlci1tZXRhZGF0YSc7XG5pbXBvcnQge0ZpbHRlck1ldGFkYXRhfSBmcm9tICcuLi9zZWFyY2gvbW9kZWxzL3BlcnNpc3RhbmNlL2ZpbHRlci1tZXRhZGF0YSc7XG5pbXBvcnQge0NyZWF0ZUNhc2VFdmVudE91dGNvbWV9IGZyb20gJy4uL2V2ZW50L21vZGVsL2V2ZW50LW91dGNvbWVzL2Nhc2Utb3V0Y29tZXMvY3JlYXRlLWNhc2UtZXZlbnQtb3V0Y29tZSc7XG5pbXBvcnQge0NhdGVnb3J5UmVzb2x2ZXJTZXJ2aWNlfSBmcm9tICcuLi9zZWFyY2gvY2F0ZWdvcnktZmFjdG9yeS9jYXRlZ29yeS1yZXNvbHZlci5zZXJ2aWNlJztcbmltcG9ydCB7RGF0YUdyb3VwfSBmcm9tICcuLi9yZXNvdXJjZXMvaW50ZXJmYWNlL2RhdGEtZ3JvdXBzJztcbmltcG9ydCB7Z2V0RmllbGRGcm9tRGF0YUdyb3Vwc30gZnJvbSAnLi4vdXRpbGl0eS9nZXQtZmllbGQnO1xuaW1wb3J0IHtFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2V9IGZyb20gJy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvbWVzc2FnZS1yZXNvdXJjZSc7XG5pbXBvcnQge01hdERpYWxvZ30gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TkFFX0xPQURfRklMVEVSX0RJQUxPR19DT01QT05FTlQsIE5BRV9TQVZFX0ZJTFRFUl9ESUFMT0dfQ09NUE9ORU5UfSBmcm9tICcuLi9kaWFsb2cvaW5qZWN0aW9uLXRva2Vucyc7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IG1hbmFnZXMgZmlsdGVycyBjcmVhdGVkIGJ5IHVzZXJzIG9mIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyRmlsdGVyc1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHJvdGVjdGVkIF9pbml0aWFsaXplZCQ6IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF9maWx0ZXJOZXQ6IE5ldDtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfY2FzZVNlcnZpY2U6IENhc2VSZXNvdXJjZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF90YXNrU2VydmljZTogVGFza1Jlc291cmNlU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3Byb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NhbGxDaGFpblNlcnZpY2U6IENhbGxDaGFpblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9zaWRlTWVudVNlcnZpY2U6IFNpZGVNZW51U2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2xvZzogTG9nZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2NhdGVnb3J5UmVzb2x2ZXJTZXJ2aWNlOiBDYXRlZ29yeVJlc29sdmVyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX2RpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX1NBVkVfRklMVEVSX0RJQUxPR19DT01QT05FTlQpIHByb3RlY3RlZCBfc2F2ZUZpbHRlckNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPixcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE5BRV9MT0FEX0ZJTFRFUl9ESUFMT0dfQ09NUE9ORU5UKSBwcm90ZWN0ZWQgX2xvYWRGaWx0ZXJDb21wb25lbnQ6IENvbXBvbmVudFR5cGU8dW5rbm93bj4pIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTZXJ2aWNlLmdldE5ldChVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9ORVRfSURFTlRJRklFUikuc3Vic2NyaWJlKG5ldCA9PiB7XG4gICAgICAgICAgICB0aGlzLl9maWx0ZXJOZXQgPSBuZXQ7XG4gICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplZCQubmV4dCh0cnVlKTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBGaWx0ZXIgbmV0IGNvdWxkIG5vdCBiZSBsb2FkZWQgd2l0aCBlcnJvcmAsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgdGhlIHNwZWNpZmllZCBmaWx0ZXIgY2FzZSBieSBpdHMgY2FzZSBpZC5cbiAgICAgKiBAcGFyYW0gZmlsdGVyQ2FzZUlkIFN0cmluZ0lkIG9mIHRoZSBmaWx0ZXIgY2FzZSB0aGF0IHNob3VsZCBiZSBkZWxldGVkXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGB0cnVlYCBpZiB0aGUgY2FzZSB3YXMgc3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgYW5kIGBmYWxzZWAgb3RoZXJ3aXNlXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZShmaWx0ZXJDYXNlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgICAgIHRoaXMuX2Nhc2VTZXJ2aWNlLmRlbGV0ZUNhc2UoZmlsdGVyQ2FzZUlkKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmRlYnVnKCdGaWx0ZXIgY2FzZSBkZWxldGUgc3VjY2VzcycsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICByZXN1bHQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoJ0ZpbHRlciBjYXNlIGRlbGV0ZSBmYWlsdXJlJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIHJlc3VsdCQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmVzdWx0JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBlID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignRmlsdGVyIGNhc2UgZGVsZXRlIGVycm9yJywgZSk7XG4gICAgICAgICAgICByZXN1bHQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgcmVzdWx0JC5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgYSBzaWRlIG1lbnUgd2l0aCBmaWx0ZXIgY2FzZXMgYW5kIGFsbG93cyB0aGUgdXNlciB0byBzZWxlY3Qgb25lIG9mIHRoZW0uXG4gICAgICpcbiAgICAgKiBUaGUgZGVmYXVsdCBmaWx0ZXIgY29uc3RyYWlucyB0aGUgY2FzZXMgdG8gYmUgaW5zdGFuY2VzIG9mIHRoZSBmaWx0ZXIgcHJvY2VzcyBhbmQgdG8gYmUgZmlsdGVycyBvZiB0aGUgc3BlY2lmaWVkIHR5cGVcbiAgICAgKiAoYENhc2VgIG9yIGBUYXNrYCkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyVHlwZSB3aGV0aGVyIGBDYXNlYCBvciBgVGFza2AgdXNlciBmaWx0ZXJzIHNob3VsZCBiZSBsb2FkZWRcbiAgICAgKiBAcGFyYW0gYWRkaXRpb25hbEZpbHRlciBhZGRpdGlvbmFsIGNvbnN0cmFpbnMgb24gdGhlIGRpc3BsYXllZCB1c2VyIGZpbHRlciBjYXNlcy4gTXVzdCBiZSBvZiB0eXBlIGBDYXNlYFxuICAgICAqIG90aGVyd2lzZSB0aGUgbWV0aG9kIHRocm93cyBhbiBlcnJvci4gSWYgaXQgaXMgYSB7QGxpbmsgTWVyZ2VkRmlsdGVyfSBtdXN0IHVzZSB0aGUgYEFORGAge0BsaW5rIE1lcmdlT3BlcmF0b3J9IG90aGVyd2lzZSBhbiBlcnJvclxuICAgICAqIHdpbGwgYmUgdGhyb3duXG4gICAgICogQHJldHVybnMgYW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBkYXRhIG5lY2Vzc2FyeSB0byByZWNvbnN0cnVjdCB0aGUgc2VsZWN0ZWQgZmlsdGVyLCBvciBgdW5kZWZpbmVkYCBpZiBubyBmaWx0ZXIgd2FzIHNlbGVjdGVkXG4gICAgICovXG4gICAgcHVibGljIGxvYWQoZmlsdGVyVHlwZTogRmlsdGVyVHlwZSwgYWRkaXRpb25hbEZpbHRlcj86IEZpbHRlcik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgIGlmIChhZGRpdGlvbmFsRmlsdGVyPy50eXBlID09PSBGaWx0ZXJUeXBlLlRBU0spIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcignVGhlIGFkZGl0aW9uYWwgZmlsdGVyIGFwcGxpZWQgdG8gVXNlckZpbHRlcnNTZXJ2aWNlLmxvYWQoKSBtdXN0IGJlIG9mIHR5cGUgQ2FzZScsIGFkZGl0aW9uYWxGaWx0ZXIpO1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1RoZSBhZGRpdGlvbmFsIGZpbHRlciBhcHBsaWVkIHRvIFVzZXJGaWx0ZXJzU2VydmljZS5sb2FkKCkgbXVzdCBiZSBvZiB0eXBlIENhc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaWx0ZXJDYXNlc0ZpbHRlciA9IFNpbXBsZUZpbHRlci5mcm9tQ2FzZVF1ZXJ5KHtcbiAgICAgICAgICAgIHByb2Nlc3M6IHtcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9ORVRfSURFTlRJRklFUlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHF1ZXJ5OiBgZGF0YVNldC4ke1VzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX1RZUEVfRklFTERfSUR9LmtleVZhbHVlOiR7ZmlsdGVyVHlwZX1gXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoISFhZGRpdGlvbmFsRmlsdGVyKSB7XG4gICAgICAgICAgICBmaWx0ZXJDYXNlc0ZpbHRlciA9IGZpbHRlckNhc2VzRmlsdGVyLm1lcmdlKGFkZGl0aW9uYWxGaWx0ZXIsIE1lcmdlT3BlcmF0b3IuQU5EKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGFueT4oMSk7XG4gICAgICAgIGNvbnN0IHJlZiA9IHRoaXMuX2RpYWxvZy5vcGVuKHRoaXMuX2xvYWRGaWx0ZXJDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFwiZGlhbG9nLXJlc3BvbnNpdmVcIixcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlckNhc2VzRmlsdGVyXG4gICAgICAgICAgICB9IGFzIExvYWRGaWx0ZXJJbmplY3Rpb25EYXRhLFxuICAgICAgICB9KTtcbiAgICAgICAgcmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5tZXNzYWdlID09PSAnU2lkZSBtZW51IGNsb3NlZCB1bmV4cGVjdGVkbHknKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2F2ZXMgdGhlIHByZWRpY2F0ZSBmaWx0ZXIgY29udGFpbmVkIGluIHRoZSBwcm92aWRlZCB7QGxpbmsgU2VhcmNoU2VydmljZX0gaW5zdGFuY2UuXG4gICAgICpcbiAgICAgKiBUaGUgYmFzZSBmaWx0ZXIgb2YgdGhlIHNlYXJjaCBzZXJ2aWNlIGlzIG5vdCBzYXZlZC5cbiAgICAgKlxuICAgICAqIEEgbmV3IGZpbHRlciBjYXNlIGlzIGNyZWF0ZWQgYW5kIHRoZSBuZWNlc3NhcnkgZmlsdGVyIGluZm9ybWF0aW9uIGlzIHNldCBpbnRvIGl0LlxuICAgICAqXG4gICAgICogVGhlbiBhIHNpZGUgbWVudSB3aXRoIHRoZSBmaWx0ZXIgaXMgb3BlbmVkIGZvciB0aGUgdXNlciB0byBlbnRlciB0aGUgbmFtZSBhbmQgb3RoZXIgcHJvcGVydGllcy5cbiAgICAgKiBUaGUgdXNlciBjYW4gY29uZmlybSBvciBjYW5jZWwgdGhlIHNhdmUgYnkgZmluaXNoaW5nIHRoZSB0YXNrIGluIHRoZSBzaWRlIG1lbnUsIG9yIGJ5IGNhbmNlbGluZy9jbG9zaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHNlYXJjaFNlcnZpY2Ugc2VhcmNoIHNlcnZpY2UgY29udGFpbmluZyBhIHByZWRpY2F0ZSBmaWx0ZXIsIHdlIHdhbnQgdG8gc2F2ZVxuICAgICAqIEBwYXJhbSBhbGxvd2VkTmV0cyBhbGxvd2VkIG5ldHMgb2YgdGhlIHZpZXcsIHRoYXQgY29udGFpbnMgdGhlIHNlYXJjaCBzZXJ2aWNlXG4gICAgICogQHBhcmFtIHNlYXJjaENhdGVnb3JpZXMgc2VhcmNoIGNhdGVnb3JpZXMgYXZhaWxhYmxlIGluIHRoZSBzYXZlZCBhZHZhbmNlZCBzZWFyY2ggY29tcG9uZW50XG4gICAgICogQHBhcmFtIHZpZXdJZCB0aGUgdmlld0lkIG9mIHRoZSB2aWV3IHdoaWNoIGNvbnRhaW5lZCB0aGUgZmlsdGVyLlxuICAgICAqIElmIG5laXRoZXIgdGhlIGB2aWV3SWRgIG5vciB0aGUgYG5hdmlnYXRpb25JdGVtVGFza0RhdGFgIGF0dHJpYnV0ZSBpcyBzZXQgdGhlIGZpbHRlciB3aWxsIGJlIGNyZWF0ZWQgYXMgYSBuZXcgcm9vdCBmaWx0ZXJcbiAgICAgKiB3aXRob3V0IGFueSBwYXJlbnQgZmlsdGVyIGxpbmsuIFRoaXMgd2lsbCBtb3N0IGxpa2VseSByZXN1bHQgaW4gdGhlIGZpbHRlciBiZWluZyBsZXNzIHJlc3RyaWN0aXZlIHRoYW4gd2hhdFxuICAgICAqIHRoZSB1c2VyIHNlZXMgaW4gdGhlIGN1cnJlbnQgdmlldywgc2luY2UgdGhlIGJhc2UgZmlsdGVyIG9mIHRoZSB2aWV3IHdpbGwgTk9UIGJlIHNhdmVkIGFsb25nc2lkZSB0aGUgc2F2ZWQgZmlsdGVyLlxuICAgICAqIEBwYXJhbSBhZGRpdGlvbmFsRGF0YSBzZXQgZGF0YSByZXF1ZXN0IGJvZHksIHRoYXQgaXMgc2VudCB0byB0aGUgZmlsdGVyIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGJvZHkuXG4gICAgICogVGhlIGRlZmF1bHQgYm9keSBpcyBhcHBsaWVkIGZpcnN0IGFuZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGlzIGFyZ3VtZW50LlxuICAgICAqIEBwYXJhbSB3aXRoRGVmYXVsdENhdGVnb3JpZXMgV2hldGhlciB0aGUgc2F2ZWQgZmlsdGVyIHNob3VsZCBiZSBzYXZlZCB3aXRoXG4gICAgICogdGhlIFtkZWZhdWx0U2VhcmNoQ2F0ZWdvcmllc117QGxpbmsgRmlsdGVyTWV0YWRhdGEjZGVmYXVsdFNlYXJjaENhdGVnb3JpZXN9IGZsYWcgc2V0IHRvIGB0cnVlYCwgb3IgYGZhbHNlYC5cbiAgICAgKiBAcGFyYW0gaW5oZXJpdEFsbG93ZWROZXRzIFdoZXRoZXIgdGhlIHNhdmVkIGZpbHRlciBzaG91bGQgbWVyZ2UgaXRzIGFsbG93ZWQgbmV0cyB3aXRoIHRoZSBhbGxvd2VkIG5ldHMgcHJvdmlkZWQgYnlcbiAgICAgKiB0aGUge0BsaW5rIEJhc2VBbGxvd2VkTmV0c1NlcnZpY2V9LlxuICAgICAqIEBwYXJhbSBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhIGlmIHByb3ZpZGVkIHRoZW4gaXQgaW1wbGllcyB0aGUgZmlsdGVyIGhhcyBhIHBhcmVudCBmaWx0ZXIgdGhhdCBjcmVhdGVkIGl0cyBob3N0IGR5bmFtaWMgdmlldy5cbiAgICAgKiBJZiB0aGlzIGlzIHRoZSBjYXNlIHRoZSBjYXNlIElEIG9mIHRoZSBwYXJlbnQgZmlsdGVyIHdpbGwgYmUgc2V0IGludG8gdGhlIG5ld2x5IGNyZWF0ZWQgZmlsdGVyIGNhc2UuXG4gICAgICogSWYgbm90IHNldCBpdCBpbXBsaWVzIHRoaXMgaXMgYSBmaWx0ZXIgb3JpZ2luYXRpbmcgaW4gYW4gaW4tYXBwIHZpZXcgYW5kIGl0cyB2aWV3IGlkIHdpbGwgYmUgc2V0IGludG8gdGhlIGNyZWF0ZWQgZmlsdGVyLlxuICAgICAqIEByZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgaWQgb2YgdGhlIGNyZWF0ZWQgRmlsdGVyIGNhc2UgaW5zdGFuY2Ugb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHVzZXIgY2FuY2VsZWQgdGhlIHNhdmUgcHJvY2VzcyxcbiAgICAgKiBvciB0aGUgZmlsdGVyIGNvdWxkIG5vdCBiZSBzYXZlZFxuICAgICAqL1xuICAgIHB1YmxpYyBzYXZlKHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgYWxsb3dlZE5ldHM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nPixcbiAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgIHZpZXdJZD86IHN0cmluZyxcbiAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRGF0YTogVGFza1NldERhdGFSZXF1ZXN0RmllbGRzID0ge30sXG4gICAgICAgICAgICAgICAgd2l0aERlZmF1bHRDYXRlZ29yaWVzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHMgPSB0cnVlLFxuICAgICAgICAgICAgICAgIG5hdmlnYXRpb25JdGVtVGFza0RhdGE6IEFycmF5PERhdGFHcm91cD4gPSBudWxsKTogT2JzZXJ2YWJsZTxTYXZlZEZpbHRlck1ldGFkYXRhPiB7XG4gICAgICAgIGlmICghc2VhcmNoU2VydmljZS5hZGRpdGlvbmFsRmlsdGVyc0FwcGxpZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy53YXJuKCdUaGUgcHJvdmlkZWQgU2VhcmNoU2VydmljZSBjb250YWlucyBubyBmaWx0ZXIgYmVzaWRlcyB0aGUgYmFzZSBmaWx0ZXIuIE5vdGhpbmcgdG8gc2F2ZS4nKTtcbiAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IFJlcGxheVN1YmplY3Q8U2F2ZWRGaWx0ZXJNZXRhZGF0YT4oMSk7XG4gICAgICAgIHRoaXMuY3JlYXRlRmlsdGVyQ2FzZUFuZFNldERhdGEoXG4gICAgICAgICAgICBzZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgYWxsb3dlZE5ldHMsXG4gICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgdmlld0lkLFxuICAgICAgICAgICAgYWRkaXRpb25hbERhdGEsXG4gICAgICAgICAgICB3aXRoRGVmYXVsdENhdGVnb3JpZXMsXG4gICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHMsXG4gICAgICAgICAgICBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhXG4gICAgICAgICkuc3Vic2NyaWJlKGZpbHRlckNhc2VJZCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWYgPSB0aGlzLl9kaWFsb2cub3Blbih0aGlzLl9zYXZlRmlsdGVyQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgcGFuZWxDbGFzczogXCJkaWFsb2ctcmVzcG9uc2l2ZVwiLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RmlsdGVyQ2FzZUlkOiBmaWx0ZXJDYXNlSWRcbiAgICAgICAgICAgICAgICB9IGFzIFNhdmVGaWx0ZXJJbmplY3Rpb25EYXRhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5tZXNzYWdlID09PSAnU2lkZSBtZW51IGNsb3NlZCB1bmV4cGVjdGVkbHknKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlKGZpbHRlckNhc2VJZCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm5leHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyQ2FzZUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZE5ldHM6IFsuLi5hbGxvd2VkTmV0c10sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5WaWV3SWQ6IHZpZXdJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlck1ldGFkYXRhOiB0aGlzLmZpbHRlck1ldGFkYXRhRnJvbVNlYXJjaFNlcnZpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHNcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IFNpbXBsZUZpbHRlci5mcm9tUXVlcnkoe3F1ZXJ5OiBzZWFyY2hTZXJ2aWNlLnJvb3RQcmVkaWNhdGUucXVlcnkudmFsdWV9LCBzZWFyY2hTZXJ2aWNlLmZpbHRlclR5cGUpXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGUgcHJlZGljYXRlIGZpbHRlciBjb250YWluZWQgaW4gdGhlIHByb3ZpZGVkIHtAbGluayBTZWFyY2hTZXJ2aWNlfSBpbnN0YW5jZS5cbiAgICAgKlxuICAgICAqIFRoZSBiYXNlIGZpbHRlciBvZiB0aGUgc2VhcmNoIHNlcnZpY2UgaXMgbm90IHNhdmVkLlxuICAgICAqXG4gICAgICogQSBuZXcgZmlsdGVyIGNhc2UgaXMgY3JlYXRlZCBhbmQgdGhlIG5lY2Vzc2FyeSBmaWx0ZXIgaW5mb3JtYXRpb24gaXMgc2V0IGludG8gaXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc2VhcmNoU2VydmljZSBzZWFyY2ggc2VydmljZSBjb250YWluaW5nIGEgcHJlZGljYXRlIGZpbHRlciwgd2Ugd2FudCB0byBzYXZlXG4gICAgICogQHBhcmFtIGFsbG93ZWROZXRzIGFsbG93ZWQgbmV0cyBvZiB0aGUgdmlldywgdGhhdCBjb250YWlucyB0aGUgc2VhcmNoIHNlcnZpY2VcbiAgICAgKiBAcGFyYW0gc2VhcmNoQ2F0ZWdvcmllcyBzZWFyY2ggY2F0ZWdvcmllcyBhdmFpbGFibGUgaW4gdGhlIHNhdmVkIGFkdmFuY2VkIHNlYXJjaCBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gdmlld0lkIHRoZSB2aWV3SWQgb2YgdGhlIHZpZXcgd2hpY2ggY29udGFpbmVkIHRoZSBmaWx0ZXIuXG4gICAgICogSWYgbmVpdGhlciB0aGUgYHZpZXdJZGAgbm9yIHRoZSBgbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YWAgYXR0cmlidXRlIGlzIHNldCB0aGUgZmlsdGVyIHdpbGwgYmUgY3JlYXRlZCBhcyBhIG5ldyByb290IGZpbHRlclxuICAgICAqIHdpdGhvdXQgYW55IHBhcmVudCBmaWx0ZXIgbGluay4gVGhpcyB3aWxsIG1vc3QgbGlrZWx5IHJlc3VsdCBpbiB0aGUgZmlsdGVyIGJlaW5nIGxlc3MgcmVzdHJpY3RpdmUgdGhhbiB3aGF0XG4gICAgICogdGhlIHVzZXIgc2VlcyBpbiB0aGUgY3VycmVudCB2aWV3LCBzaW5jZSB0aGUgYmFzZSBmaWx0ZXIgb2YgdGhlIHZpZXcgd2lsbCBOT1QgYmUgc2F2ZWQgYWxvbmdzaWRlIHRoZSBzYXZlZCBmaWx0ZXIuXG4gICAgICogQHBhcmFtIGFkZGl0aW9uYWxEYXRhIHNldCBkYXRhIHJlcXVlc3QgYm9keSwgdGhhdCBpcyBzZW50IHRvIHRoZSBmaWx0ZXIgaW4gYWRkaXRpb24gdG8gdGhlIGRlZmF1bHQgYm9keS5cbiAgICAgKiBUaGUgZGVmYXVsdCBib2R5IGlzIGFwcGxpZWQgZmlyc3QgYW5kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoaXMgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyBXaGV0aGVyIHRoZSBzYXZlZCBmaWx0ZXIgc2hvdWxkIGJlIHNhdmVkIHdpdGhcbiAgICAgKiB0aGUgW2RlZmF1bHRTZWFyY2hDYXRlZ29yaWVzXXtAbGluayBGaWx0ZXJNZXRhZGF0YSNkZWZhdWx0U2VhcmNoQ2F0ZWdvcmllc30gZmxhZyBzZXQgdG8gYHRydWVgLCBvciBgZmFsc2VgLlxuICAgICAqIEBwYXJhbSBpbmhlcml0QWxsb3dlZE5ldHMgV2hldGhlciB0aGUgc2F2ZWQgZmlsdGVyIHNob3VsZCBtZXJnZSBpdHMgYWxsb3dlZCBuZXRzIHdpdGggdGhlIGFsbG93ZWQgbmV0cyBwcm92aWRlZCBieVxuICAgICAqIHRoZSB7QGxpbmsgQmFzZUFsbG93ZWROZXRzU2VydmljZX0uXG4gICAgICogQHBhcmFtIG5hdmlnYXRpb25JdGVtVGFza0RhdGEgaWYgcHJvdmlkZWQgdGhlbiBpdCBpbXBsaWVzIHRoZSBmaWx0ZXIgaGFzIGEgcGFyZW50IGZpbHRlciB0aGF0IGNyZWF0ZWQgaXRzIGhvc3QgZHluYW1pYyB2aWV3LlxuICAgICAqIElmIHRoaXMgaXMgdGhlIGNhc2UgdGhlIGNhc2UgSUQgb2YgdGhlIHBhcmVudCBmaWx0ZXIgd2lsbCBiZSBzZXQgaW50byB0aGUgbmV3bHkgY3JlYXRlZCBmaWx0ZXIgY2FzZS5cbiAgICAgKiBJZiBub3Qgc2V0IGl0IGltcGxpZXMgdGhpcyBpcyBhIGZpbHRlciBvcmlnaW5hdGluZyBpbiBhbiBpbi1hcHAgdmlldyBhbmQgaXRzIHZpZXcgaWQgd2lsbCBiZSBzZXQgaW50byB0aGUgY3JlYXRlZCBmaWx0ZXIuXG4gICAgICogQHJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBpZCBvZiB0aGUgY3JlYXRlZCBGaWx0ZXIgY2FzZSBpbnN0YW5jZVxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVGaWx0ZXJDYXNlQW5kU2V0RGF0YShzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkTmV0czogUmVhZG9ubHlBcnJheTxzdHJpbmc+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ/OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxEYXRhOiBUYXNrU2V0RGF0YVJlcXVlc3RGaWVsZHMgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aERlZmF1bHRDYXRlZ29yaWVzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdEFsbG93ZWROZXRzID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbkl0ZW1UYXNrRGF0YTogQXJyYXk8RGF0YUdyb3VwPiA9IG51bGwpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xuICAgICAgICB0aGlzLndoZW5Jbml0aWFsaXplZCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jYXNlU2VydmljZS5jcmVhdGVDYXNlKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogdGhpcy5fZmlsdGVyTmV0LmRlZmF1bHRDYXNlTmFtZSxcbiAgICAgICAgICAgICAgICBuZXRJZDogdGhpcy5fZmlsdGVyTmV0LnN0cmluZ0lkXG4gICAgICAgICAgICB9KS5zdWJzY3JpYmUoZmlsdGVyQ2FzZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza1NlcnZpY2UuZ2V0VGFza3MoU2ltcGxlRmlsdGVyLmZyb21UYXNrUXVlcnkoe1xuICAgICAgICAgICAgICAgICAgICBjYXNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogKGZpbHRlckNhc2Uub3V0Y29tZSBhcyBDcmVhdGVDYXNlRXZlbnRPdXRjb21lKS5hQ2FzZS5zdHJpbmdJZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkpLnN1YnNjcmliZShwYWdlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNDb250ZW50KHBhZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGZpbHRlciBwcm9jZXNzIHRvIGNvbnRhaW4gdGFza3MsIGJ1dCBub25lIHdlcmUgZm91bmQhJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbml0VGFzayA9IHBhZ2UuY29udGVudC5maW5kKHRhc2sgPT4gdGFzay50cmFuc2l0aW9uSWQgPT09IFVzZXJGaWx0ZXJDb25zdGFudHMuU0VUX0ZJTFRFUl9NRVRBREFUQV9UUkFOU0lUSU9OX0lEKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRUYXNrID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgZmlsdGVyIHByb2Nlc3MgdG8gY29udGFpbiB0YXNrICcke1VzZXJGaWx0ZXJDb25zdGFudHMuU0VUX0ZJTFRFUl9NRVRBREFUQV9UUkFOU0lUSU9OX0lEXG4gICAgICAgICAgICAgICAgICAgICAgICB9JywgYnV0IG5vbmUgd2FzIGZvdW5kIWApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBbVXNlckZpbHRlckNvbnN0YW50cy5GSUxURVJfVFlQRV9GSUVMRF9JRF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5FTlVNRVJBVElPTl9NQVAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFNlcnZpY2UuZmlsdGVyVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtVc2VyRmlsdGVyQ29uc3RhbnRzLkZJTFRFUl9GSUVMRF9JRF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5GSUxURVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaFNlcnZpY2Uucm9vdFByZWRpY2F0ZS5xdWVyeS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd2VkTmV0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJNZXRhZGF0YTogdGhpcy5maWx0ZXJNZXRhZGF0YUZyb21TZWFyY2hTZXJ2aWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hTZXJ2aWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoRGVmYXVsdENhdGVnb3JpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRBbGxvd2VkTmV0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmVudEZpbHRlckNhc2VJZEZpZWxkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmF2aWdhdGlvbkl0ZW1UYXNrRGF0YSAhPT0gbnVsbCAmJiBuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEZpbHRlckNhc2VJZEZpZWxkID0gZ2V0RmllbGRGcm9tRGF0YUdyb3VwcyhuYXZpZ2F0aW9uSXRlbVRhc2tEYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX0NBU0VfSURfRklFTERfSUQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudEZpbHRlckNhc2VJZEZpZWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RCb2R5W1VzZXJGaWx0ZXJDb25zdGFudHMuUEFSRU5UX0ZJTFRFUl9DQVNFX0lEX0ZJRUxEX0lEXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5URVhULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJlbnRGaWx0ZXJDYXNlSWRGaWVsZC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2aWV3SWQgIT09IHVuZGVmaW5lZCB8fCB2aWV3SWQgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Qm9keVtVc2VyRmlsdGVyQ29uc3RhbnRzLk9SSUdJTl9WSUVXX0lEX0ZJRUxEX0lEXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGVSZXNvdXJjZS5URVhULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2aWV3SWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFzc2lnblNldERhdGFGaW5pc2goaW5pdFRhc2ssIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbml0VGFzay5zdHJpbmdJZF06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZXF1ZXN0Qm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hZGRpdGlvbmFsRGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLl9jYWxsQ2hhaW5TZXJ2aWNlLmNyZWF0ZShzdWNjZXNzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmlsdGVyIGluc3RhbmNlIGNvdWxkIG5vdCBiZSBpbml0aWFsaXplZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQubmV4dCgoZmlsdGVyQ2FzZS5vdXRjb21lIGFzIENyZWF0ZUNhc2VFdmVudE91dGNvbWUpLmFDYXNlLnN0cmluZ0lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgJ3NhdmVXaXRoU2lkZU1lbnUnKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgd2hlbkluaXRpYWxpemVkKG9uU3VjY2VzczogKCkgPT4gdm9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmFpbHVyZTogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYFVzZXJGaWx0ZXJTZXJ2aWNlIGZhaWxlZCB0byBpbml0aWFsaXplIGFuZCB0aGUgY2FsbGVkIG1ldGhvZCR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA/ICcgKCcgKyBtZXRob2QgKyAnKScgOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2Fubm90IGJlIHBlcmZvcm1lZGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkge1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCQuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoaW5pdGlhbGl6ZWQgPT4ge1xuICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPyBvblN1Y2Nlc3MoKSA6IG9uRmFpbHVyZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPIDYuNC4yMDIxIElNUFJPVkVNRU5UIC0gZXh0cmFjdCBzaW1pbGFyIG1ldGhvZCBpbnRvIHNvbWUgdXRpbGl0eSBzZXJ2aWNlXG4gICAgcHJvdGVjdGVkIGFzc2lnblNldERhdGFGaW5pc2godGFzazogVGFzaywgZGF0YTogVGFza1NldERhdGFSZXF1ZXN0Qm9keSwgY2FsbENoYWluOiBTdWJqZWN0PGJvb2xlYW4+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Rhc2tTZXJ2aWNlLmFzc2lnblRhc2sodGFzay5zdHJpbmdJZCkuc3Vic2NyaWJlKGFzc2lnbk91dGNvbWUgPT4ge1xuICAgICAgICAgICAgaWYgKGFzc2lnbk91dGNvbWUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYENvdWxkIG5vdCBhc3NpZ24gdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBhc3NpZ25PdXRjb21lLmVycm9yKTtcbiAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl90YXNrU2VydmljZS5zZXREYXRhKHRhc2suc3RyaW5nSWQsIGRhdGEpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFza1NlcnZpY2UuZmluaXNoVGFzayh0YXNrLnN0cmluZ0lkKS5zdWJzY3JpYmUoZmluaXNoT3V0Y29tZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaW5pc2hPdXRjb21lLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2cuZXJyb3IoYENvdWxkIG5vdCBmaW5pc2ggdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBmaW5pc2hPdXRjb21lLmVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBDb3VsZCBub3QgZmluaXNoIHRhc2sgJyR7dGFzay50aXRsZX0nYCwgdGFzaywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICBjYWxsQ2hhaW4ubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKGBDb3VsZCBub3Qgc2V0IGRhdGEgb2YgdGFzayAnJHt0YXNrLnRpdGxlfSdgLCB0YXNrLCBkYXRhLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgY2FsbENoYWluLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2xvZy5lcnJvcihgQ291bGQgbm90IGFzc2lnbiB0YXNrICcke3Rhc2sudGl0bGV9J2AsIHRhc2ssIGVycm9yKTtcbiAgICAgICAgICAgIGNhbGxDaGFpbi5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZpbHRlck1ldGFkYXRhRnJvbVNlYXJjaFNlcnZpY2Uoc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hDYXRlZ29yaWVzOiBSZWFkb25seUFycmF5PFR5cGU8Q2F0ZWdvcnk8YW55Pj4+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhEZWZhdWx0Q2F0ZWdvcmllczogYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0QWxsb3dlZE5ldHM6IGJvb2xlYW4pOiBGaWx0ZXJNZXRhZGF0YSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmaWx0ZXJUeXBlOiBzZWFyY2hTZXJ2aWNlLmZpbHRlclR5cGUsXG4gICAgICAgICAgICBwcmVkaWNhdGVNZXRhZGF0YTogc2VhcmNoU2VydmljZS5jcmVhdGVQcmVkaWNhdGVNZXRhZGF0YSgpLFxuICAgICAgICAgICAgc2VhcmNoQ2F0ZWdvcmllczogc2VhcmNoQ2F0ZWdvcmllcy5tYXAoYyA9PiB0aGlzLl9jYXRlZ29yeVJlc29sdmVyU2VydmljZS5zZXJpYWxpemUoYykpLFxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaENhdGVnb3JpZXM6IHdpdGhEZWZhdWx0Q2F0ZWdvcmllcyxcbiAgICAgICAgICAgIGluaGVyaXRBbGxvd2VkTmV0c1xuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|