@lowcodeunit/applications-flow-common 1.39.86-merge → 1.39.88-enterprise-switch-fix
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/controls/devops-source-control-form/devops-source-control-form.component.mjs +2 -2
- package/esm2020/lib/dialogs/dfs-modifiers-dialog/dfs-modifiers-dialog.component.mjs +2 -2
- package/esm2020/lib/elements/feed-header/feed-header.component.mjs +2 -2
- package/esm2020/lib/elements/project-card/project-card.component.mjs +4 -4
- package/esm2020/lib/elements/team-member-card/team-member-card.component.mjs +2 -2
- package/esm2020/lib/services/eac.service.mjs +14 -4
- package/esm2020/lib/services/project.service.mjs +125 -76
- package/fesm2015/lowcodeunit-applications-flow-common.mjs +150 -88
- package/fesm2015/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/fesm2020/lowcodeunit-applications-flow-common.mjs +144 -85
- package/fesm2020/lowcodeunit-applications-flow-common.mjs.map +1 -1
- package/package.json +1 -1
@@ -109,10 +109,10 @@ export class ProjectCardComponent {
|
|
109
109
|
let tempProj = this.Projects[pLookup];
|
110
110
|
this.Project = tempProj;
|
111
111
|
let tempProjNode = {
|
112
|
-
name: tempProj
|
113
|
-
description: tempProj
|
112
|
+
name: tempProj?.Project?.Name,
|
113
|
+
description: tempProj?.Project?.Description,
|
114
114
|
lookup: pLookup,
|
115
|
-
url: 'https://' + tempProj
|
115
|
+
url: 'https://' + tempProj?.PrimaryHost,
|
116
116
|
routerLink: ['/project', pLookup],
|
117
117
|
};
|
118
118
|
let tempRoutes = this.ApplicationRoutes;
|
@@ -227,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
227
227
|
type: Input,
|
228
228
|
args: ['project-lookup']
|
229
229
|
}] } });
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi9zcmMvbGliL2VsZW1lbnRzL3Byb2plY3QtY2FyZC9wcm9qZWN0LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvZWxlbWVudHMvcHJvamVjdC1jYXJkL3Byb2plY3QtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUNILHFCQUFxQixFQUNyQixnQkFBZ0IsR0FDbkIsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7OztBQVNoQyxNQUFNLE9BQU8sb0JBQW9CO0lBbUo3QixrQ0FBa0M7SUFFbEM7UUF4SVEsZ0JBQVcsR0FBRyxDQUFDLElBQWMsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUNwRCxPQUFPO2dCQUNILFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUN2RCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDaEMsQ0FBQztRQUNOLENBQUMsQ0FBQztRQW1HRixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUM3QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFD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QyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBYTtRQUM1QixpQ0FBaUM7SUFDckMsQ0FBQzs7aUhBbFNRLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHVXQ2RqQyxpNUtBc0lBOzJGRHhIYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0ksa0JBQWtCOzBFQU1yQixnQkFBZ0I7c0JBRHRCLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUluQixPQUFPO3NCQURiLEtBQUs7dUJBQUMsU0FBUztnQkFJVCxjQUFjO3NCQURwQixLQUFLO3VCQUFDLGlCQUFpQjtnQkFJakIsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLFVBQVU7Z0JBa0lWLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxTQUFTO2dCQUlULGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIE1hdFRyZWVGbGF0RGF0YVNvdXJjZSxcbiAgICBNYXRUcmVlRmxhdHRlbmVyLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcbmltcG9ydCB7IEVhQ0FwcGxpY2F0aW9uQXNDb2RlLCBFYUNQcm9qZWN0QXNDb2RlIH0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcbmltcG9ydCB7IEZsYXROb2RlLCBUcmVlTm9kZSB9IGZyb20gJy4uLy4uL21vZGVscy90cmVlLW5vZGUubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xjdS1wcm9qZWN0LWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9qZWN0LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2plY3QtY2FyZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9qZWN0Q2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCdhcHBsaWNhdGlvbnMtYmFuaycpXG4gICAgcHVibGljIEFwcGxpY2F0aW9uc0Jhbms6IEFycmF5PEVhQ0FwcGxpY2F0aW9uQXNDb2RlPjtcblxuICAgIEBJbnB1dCgnbG9hZGluZycpXG4gICAgcHVibGljIExvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoJ3Byb2plY3QtbG9va3VwcycpXG4gICAgcHVibGljIFByb2plY3RMb29rdXBzOiBBcnJheTxzdHJpbmc+O1xuXG4gICAgQElucHV0KCdwcm9qZWN0cycpXG4gICAgcHVibGljIFByb2plY3RzOiBBcnJheTxFYUNQcm9qZWN0QXNDb2RlPjtcblxuICAgIHByaXZhdGUgdHJhbnNmb3JtZXIgPSAobm9kZTogVHJlZU5vZGUsIGxldmVsOiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4cGFuZGFibGU6ICEhbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDAsXG4gICAgICAgICAgICBuYW1lOiBub2RlLm5hbWUsXG4gICAgICAgICAgICBsZXZlbDogbGV2ZWwsXG4gICAgICAgICAgICByb3V0ZXJMaW5rOiBub2RlLnJvdXRlckxpbmssXG4gICAgICAgICAgICB1cmw6IG5vZGUudXJsLFxuICAgICAgICAgICAgbG9va3VwOiBub2RlLmxvb2t1cCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBub2RlLmRlc2NyaXB0aW9uLFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IEFwcGxpY2F0aW9ucygpOiB7XG4gICAgICAgIFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlO1xuICAgIH0ge1xuICAgICAgICBjb25zdCBhcHBzOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH0gPSB7fTtcblxuICAgICAgICB0aGlzLlByb2plY3Q/LkFwcGxpY2F0aW9uTG9va3Vwcz8uZm9yRWFjaCgoYXBwTG9va3VwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGFwcHNbYXBwTG9va3VwXSA9IHRoaXMuQXBwbGljYXRpb25zQmFua1thcHBMb29rdXBdO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFwcHM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBBcHBsaWNhdGlvblJvdXRlcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuUm91dGVkQXBwbGljYXRpb25zIHx8IHt9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IEN1cnJlbnRSb3V0ZUFwcGxpY2F0aW9uTG9va3VwcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuUm91dGVkQXBwbGljYXRpb25zW3RoaXMuQXBwUm91dGVdIHx8IHt9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFJvdXRlZEFwcGxpY2F0aW9ucygpOiB7XG4gICAgICAgIFtyb3V0ZTogc3RyaW5nXTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuICAgIH0ge1xuICAgICAgICBjb25zdCBhcHBMb29rdXBzID0gT2JqZWN0LmtleXModGhpcy5BcHBsaWNhdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IGFwcHMgPSBhcHBMb29rdXBzLm1hcChcbiAgICAgICAgICAgIChhcHBMb29rdXApID0+IHRoaXMuQXBwbGljYXRpb25zW2FwcExvb2t1cF1cbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgYXBwUm91dGVzID1cbiAgICAgICAgICAgIGFwcHMubWFwKChhcHApID0+IHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkFwcCBmcm9tIHByb2plY3RzOiBcIiwgYXBwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwPy5Mb29rdXBDb25maWc/LlBhdGhSZWdleC5yZXBsYWNlKCcuKicsICcnKTtcbiAgICAgICAgICAgIH0pIHx8IFtdO1xuXG4gICAgICAgIGFwcFJvdXRlcyA9IGFwcFJvdXRlcy5maWx0ZXIoKGFyKSA9PiBhciAhPSBudWxsKTtcblxuICAgICAgICBsZXQgcm91dGVCYXNlczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBhcHBSb3V0ZXMuZm9yRWFjaCgoYXBwUm91dGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFwcFJvdXRlUGFydHMgPSBhcHBSb3V0ZS5zcGxpdCgnLycpO1xuXG4gICAgICAgICAgICBjb25zdCBhcHBSb3V0ZUJhc2UgPSBgLyR7YXBwUm91dGVQYXJ0c1sxXX1gO1xuXG4gICAgICAgICAgICBpZiAocm91dGVCYXNlcy5pbmRleE9mKGFwcFJvdXRlQmFzZSkgPCAwKSB7XG4gICAgICAgICAgICAgICAgcm91dGVCYXNlcy5wdXNoKGFwcFJvdXRlQmFzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCB3b3JraW5nQXBwTG9va3VwcyA9IFsuLi4oYXBwTG9va3VwcyB8fCBbXSldO1xuXG4gICAgICAgIHJvdXRlQmFzZXMgPSByb3V0ZUJhc2VzLnNvcnQoKGEsIGIpID0+IGIubG9jYWxlQ29tcGFyZShhKSk7XG5cbiAgICAgICAgY29uc3Qgcm91dGVTZXQgPVxuICAgICAgICAgICAgcm91dGVCYXNlcy5yZWR1Y2UoKHByZXZSb3V0ZU1hcCwgY3VycmVudFJvdXRlQmFzZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlTWFwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5wcmV2Um91dGVNYXAsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkQXBwTG9va3VwcyA9IHdvcmtpbmdBcHBMb29rdXBzLmZpbHRlcigod2FsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhID0gdGhpcy5BcHBsaWNhdGlvbnNbd2FsXTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2E/Lkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Um91dGVCYXNlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByb3V0ZU1hcFtjdXJyZW50Um91dGVCYXNlXSA9XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkQXBwTG9va3Vwcy5yZWR1Y2UoKHByZXZBcHBNYXAsIGFwcExvb2t1cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwTWFwOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldkFwcE1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcE1hcFthcHBMb29rdXBdID0gdGhpcy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcE1hcDtcbiAgICAgICAgICAgICAgICAgICAgfSwge30pIHx8IHt9O1xuXG4gICAgICAgICAgICAgICAgd29ya2luZ0FwcExvb2t1cHMgPSB3b3JraW5nQXBwTG9va3Vwcy5maWx0ZXIoKHdhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZEFwcExvb2t1cHMuaW5kZXhPZih3YSkgPCAwO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlTWFwO1xuICAgICAgICAgICAgfSwge30pIHx8IHt9O1xuXG4gICAgICAgIGxldCByb3V0ZVNldEtleXMgPSBPYmplY3Qua2V5cyhyb3V0ZVNldCk7XG5cbiAgICAgICAgcm91dGVTZXRLZXlzID0gcm91dGVTZXRLZXlzLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG5cbiAgICAgICAgY29uc3Qgcm91dGVTZXRSZXN1bHQgPSB7fTtcblxuICAgICAgICByb3V0ZVNldEtleXMuZm9yRWFjaCgocnNrKSA9PiAocm91dGVTZXRSZXN1bHRbcnNrXSA9IHJvdXRlU2V0W3Jza10pKTtcblxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkFwcCBSb3V0ZXM6IFwiLHJvdXRlU2V0UmVzdWx0KVxuXG4gICAgICAgIHJldHVybiByb3V0ZVNldFJlc3VsdDtcbiAgICB9XG5cbiAgICB0cmVlQ29udHJvbCA9IG5ldyBGbGF0VHJlZUNvbnRyb2w8RmxhdE5vZGU+KFxuICAgICAgICAobm9kZTogYW55KSA9PiBub2RlLmxldmVsLFxuICAgICAgICAobm9kZTogYW55KSA9PiBub2RlLmV4cGFuZGFibGVcbiAgICApO1xuXG4gICAgdHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxuICAgICAgICB0aGlzLnRyYW5zZm9ybWVyLFxuICAgICAgICAobm9kZSkgPT4gbm9kZS5sZXZlbCxcbiAgICAgICAgKG5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZSxcbiAgICAgICAgKG5vZGUpID0+IG5vZGUuY2hpbGRyZW5cbiAgICApO1xuXG4gICAgcHVibGljIERhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZUZsYXREYXRhU291cmNlKFxuICAgICAgICB0aGlzLnRyZWVDb250cm9sLFxuICAgICAgICB0aGlzLnRyZWVGbGF0dGVuZXJcbiAgICApO1xuXG4gICAgQElucHV0KCdwcm9qZWN0JylcbiAgICBwdWJsaWMgUHJvamVjdDogRWFDUHJvamVjdEFzQ29kZTtcblxuICAgIEBJbnB1dCgncHJvamVjdC1sb29rdXAnKVxuICAgIHB1YmxpYyBQcm9qZWN0TG9va3VwOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgQXBwUm91dGU6IHN0cmluZztcblxuICAgIC8vIHB1YmxpYyBSb3V0ZWRBcHBsaWNhdGlvbnM6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIHB1YmxpYyBIYXNDaGlsZCA9IChfOiBudW1iZXIsIG5vZGU6IEZsYXROb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAodGhpcy5Qcm9qZWN0cyAmJiB0aGlzLlByb2plY3RMb29rdXBzICYmIHRoaXMuQXBwbGljYXRpb25zKSB7XG4gICAgICAgICAgICBsZXQgdGVtcCA9IHRoaXMuQnVpbGRQcm9qZWN0VHJlZSgpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJ0byBzdHJpbmc6IFwiLCBKU09OLnN0cmluZ2lmeSh0ZW1wKSlcblxuICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHRoaXMuRGF0YVNvdXJjZS5kYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkodGVtcCkpIHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnSXRzIGRpZmZlcmVudCcpXG4gICAgICAgICAgICAgICAgdGhpcy5EYXRhU291cmNlLmRhdGEgPSB0ZW1wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIFJvdXRlVG9QYXRoKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIEJ1aWxkUHJvamVjdFRyZWUoKTogQXJyYXk8VHJlZU5vZGU+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2NhbGxpbmcgYnVpbGQgcHJvamVjdCB0cmVlJyk7XG4gICAgICAgIGxldCB0ZW1wVHJlZURhdGE6IEFycmF5PFRyZWVOb2RlPiA9IFtdO1xuICAgICAgICB0aGlzLlByb2plY3RMb29rdXBzPy5mb3JFYWNoKChwTG9va3VwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGxldCB0ZW1wUHJvaiA9IHRoaXMuUHJvamVjdHNbcExvb2t1cF07XG4gICAgICAgICAgICB0aGlzLlByb2plY3QgPSB0ZW1wUHJvajtcbiAgICAgICAgICAgIGxldCB0ZW1wUHJvak5vZGU6IFRyZWVOb2RlID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRlbXBQcm9qLlByb2plY3QuTmFtZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGVtcFByb2ouUHJvamVjdC5EZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBsb29rdXA6IHBMb29rdXAsXG4gICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly8nICsgdGVtcFByb2ouUHJpbWFyeUhvc3QsXG4gICAgICAgICAgICAgICAgcm91dGVyTGluazogWycvcHJvamVjdCcsIHBMb29rdXBdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbGV0IHRlbXBSb3V0ZXMgPSB0aGlzLkFwcGxpY2F0aW9uUm91dGVzO1xuXG4gICAgICAgICAgICBpZiAodGVtcFJvdXRlcykge1xuICAgICAgICAgICAgICAgIGxldCB0ZW1wUHJvakNoaWxkcmVuOiBBcnJheTxUcmVlTm9kZT4gPSBbXTtcbiAgICAgICAgICAgICAgICB0ZW1wUm91dGVzLmZvckVhY2goKGFwcFJvdXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5BcHBSb3V0ZSA9IGFwcFJvdXRlO1xuICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXJMaW5rOiBbJy9yb3V0ZScsIHRoaXMuQXBwUm91dGUsIHBMb29rdXBdLFxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcFJvdXRlTm9kZTogVHJlZU5vZGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLkFwcFJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly8nICsgdGVtcFByb2ouUHJpbWFyeUhvc3QgKyB0aGlzLkFwcFJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGluazogWycvcm91dGUnLCB0aGlzLkFwcFJvdXRlLCBwTG9va3VwXSxcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEFwcHMgPSB0aGlzLkN1cnJlbnRSb3V0ZUFwcGxpY2F0aW9uTG9va3VwcztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBBcHBzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcFJvdXRlQ2hpbGRyZW46IEFycmF5PFRyZWVOb2RlPiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcEFwcHMuZm9yRWFjaCgoYXBwTG9va3VwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEFwcCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUm91dGVkQXBwbGljYXRpb25zW3RoaXMuQXBwUm91dGVdW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwTG9va3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFwcFBhdGggPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQXBwLkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnN1YnN0cmluZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQXBwLkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4Lmxlbmd0aCAtIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wQXBwTm9kZTogVHJlZU5vZGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cDogYXBwTG9va3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0ZW1wQXBwLkFwcGxpY2F0aW9uLk5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdodHRwczovLycgKyB0ZW1wUHJvai5QcmltYXJ5SG9zdCArIGFwcFBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZW1wQXBwLkFwcGxpY2F0aW9uLkRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL2FwcGxpY2F0aW9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcExvb2t1cCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQXBwUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwTG9va3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFJvdXRlQ2hpbGRyZW4ucHVzaCh0ZW1wQXBwTm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBSb3V0ZU5vZGUuY2hpbGRyZW4gPSB0ZW1wUm91dGVDaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0ZW1wUHJvakNoaWxkcmVuLnB1c2godGVtcFJvdXRlTm9kZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGVtcFByb2pOb2RlLmNoaWxkcmVuID0gdGVtcFByb2pDaGlsZHJlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRlbXBUcmVlRGF0YS5wdXNoKHRlbXBQcm9qTm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnVEhFIFRSRUU6ICcsIHRlbXBUcmVlRGF0YSk7XG4gICAgICAgIHJldHVybiB0ZW1wVHJlZURhdGE7XG5cbiAgICAgICAgLy8gcmV0dXJuIHRlbXBUcmVlRGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgQnVpbGRSb3V0ZVRyZWUoKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdjYWxsZWQgcm91dGUgdHJlZScpO1xuICAgICAgICBsZXQgdGVtcFRyZWVEYXRhOiBBcnJheTxUcmVlTm9kZT4gPSBbXTtcblxuICAgICAgICBsZXQgdGVtcFJvdXRlcyA9IHRoaXMuQXBwbGljYXRpb25Sb3V0ZXM7XG4gICAgICAgIGlmICh0ZW1wUm91dGVzKSB7XG4gICAgICAgICAgICAvLyBsZXQgdGVtcFByb2pDaGlsZHJlbjogQXJyYXk8VHJlZU5vZGU+ID0gW107XG4gICAgICAgICAgICB0ZW1wUm91dGVzLmZvckVhY2goKGFwcFJvdXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLkFwcFJvdXRlID0gYXBwUm91dGU7XG5cbiAgICAgICAgICAgICAgICBsZXQgdGVtcFJvdXRlTm9kZTogVHJlZU5vZGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuQXBwUm91dGUsXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vJyArIHRoaXMuUHJvamVjdD8uUHJpbWFyeUhvc3QgKyB0aGlzLkFwcFJvdXRlLFxuICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rOiBbJy9yb3V0ZScsIHRoaXMuQXBwUm91dGUsIHRoaXMuUHJvamVjdExvb2t1cF0sXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGxldCB0ZW1wQXBwcyA9IHRoaXMuQ3VycmVudFJvdXRlQXBwbGljYXRpb25Mb29rdXBzO1xuICAgICAgICAgICAgICAgIGlmICh0ZW1wQXBwcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcFJvdXRlQ2hpbGRyZW46IEFycmF5PFRyZWVOb2RlPiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0ZW1wQXBwcy5mb3JFYWNoKChhcHBMb29rdXA6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBBcHAgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUm91dGVkQXBwbGljYXRpb25zW3RoaXMuQXBwUm91dGVdW2FwcExvb2t1cF07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEFwcE5vZGU6IFRyZWVOb2RlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cDogYXBwTG9va3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRlbXBBcHAuQXBwbGljYXRpb24uTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdodHRwczovLycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLlByb2plY3Q/LlByaW1hcnlIb3N0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5BcHBSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdGVtcEFwcC5BcHBsaWNhdGlvbi5EZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvYXBwbGljYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBMb29rdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuQXBwUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUHJvamVjdExvb2t1cCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBSb3V0ZUNoaWxkcmVuLnB1c2godGVtcEFwcE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGVtcFJvdXRlTm9kZS5jaGlsZHJlbiA9IHRlbXBSb3V0ZUNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0ZW1wVHJlZURhdGEucHVzaCh0ZW1wUm91dGVOb2RlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZW1wVHJlZURhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIEhhbmRsZVJvdXRlKHJvdXRlOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3JvdXRlOiAnLCByb3V0ZSk7XG4gICAgfVxufVxuIiwiPCEtLSBUUkVFIC0tPlxuPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiUHJvamVjdExvb2t1cHM/QnVpbGRUcmVlKCk6ZmFsc2VcIj48L25nLWNvbnRhaW5lcj4gLS0+XG48bGN1LXNsb3R0ZWQtY2FyZC1sZ1xuICAgICpuZ0lmPVwiUHJvamVjdExvb2t1cHM/Lmxlbmd0aCA+IDBcIlxuICAgIGNsYXNzPVwiZml0LWNvbnRlbnRcIlxuICAgIFtsb2FkaW5nXT1cIkxvYWRpbmdcIlxuICAgIGNhcmQtdGl0bGU9XCJQcm9qZWN0XCJcbiAgICBpY29uPVwid29ya19vdXRsaW5lXCJcbiAgICBbbWFpbi1zbG90LWRlc2NyaXB0aW9uXT1cIlByb2plY3RMb29rdXBzPy5sZW5ndGggKyAnIHByb2plY3QocykgY29uZmlndXJlZCdcIlxuICAgIChtYWluLWFjdGlvbi1jbGlja2VkKT1cIlJvdXRlVG9QYXRoKCcvZGFzaGJvYXJkL2NyZWF0ZS1wcm9qZWN0JylcIlxuPlxuICAgIDwhLS0gPGRpdj4gLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkRhdGFTb3VyY2VcIj5cbiAgICAgICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cIkRhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIj5cbiAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlXCIgbWF0VHJlZU5vZGVQYWRkaW5nPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbG90LWhlYWRlci1hbmNob3JcIlxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUubmFtZVwiIGNsYXNzPVwic2xvdC1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJzbG90LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW5vZGUucm91dGVyTGlua1wiIGNsYXNzPVwidHJlZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUubmFtZVwiIGNsYXNzPVwic2xvdC1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJzbG90LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbG90LWFjdGlvbnMtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXQ9XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICBmeExheW91dEFsaWduPVwic3BhY2UtYXJvdW5kIGNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbG90LWFjdGlvbi1hbmNob3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkVkaXQge3sgbm9kZS5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ZWRpdDwvbWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbG90LWFjdGlvbi1hbmNob3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwibm9kZS51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkxhdW5jaCB7eyBub2RlLm5hbWUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5sYXVuY2g8L21hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gbWF0LWljb24tYnV0dG9uPjwvYnV0dG9uPiAtLT5cbiAgICAgICAgICAgIDwvbWF0LXRyZWUtbm9kZT5cbiAgICAgICAgICAgIDxtYXQtdHJlZS1ub2RlXG4gICAgICAgICAgICAgICAgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IEhhc0NoaWxkXCJcbiAgICAgICAgICAgICAgICBtYXRUcmVlTm9kZVBhZGRpbmdcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBtYXRUcmVlTm9kZVRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidUb2dnbGUgJyArIG5vZGUubmFtZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtaWNvbi1ydGwtbWlycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImV4cGFuZF9tb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcImNoZXZyb25fcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm5vZGUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xvdC1oZWFkZXItYW5jaG9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLm5hbWVcIiBjbGFzcz1cInNsb3QtbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5kZXNjcmlwdGlvblwiIGNsYXNzPVwic2xvdC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFub2RlLnJvdXRlckxpbmtcIiBjbGFzcz1cInRyZWUtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLm5hbWVcIiBjbGFzcz1cInNsb3QtbmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5kZXNjcmlwdGlvblwiIGNsYXNzPVwic2xvdC1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgbm9kZS5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xvdC1hY3Rpb25zLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0PVwicm93XCJcbiAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWFyb3VuZCBjZW50ZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xvdC1hY3Rpb24tYW5jaG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIm5vZGUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJFZGl0IHt7IG5vZGUubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPmVkaXQ8L21hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2xvdC1hY3Rpb24tYW5jaG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cIm5vZGUudXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJMYXVuY2gge3sgbm9kZS5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+bGF1bmNoPC9tYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC10cmVlLW5vZGU+XG4gICAgICAgIDwvbWF0LXRyZWU+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2xjdS1zbG90dGVkLWNhcmQtbGc+XG4iXX0=
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi9zcmMvbGliL2VsZW1lbnRzL3Byb2plY3QtY2FyZC9wcm9qZWN0LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvZWxlbWVudHMvcHJvamVjdC1jYXJkL3Byb2plY3QtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUNILHFCQUFxQixFQUNyQixnQkFBZ0IsR0FDbkIsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7OztBQVNoQyxNQUFNLE9BQU8sb0JBQW9CO0lBbUo3QixrQ0FBa0M7SUFFbEM7UUF4SVEsZ0JBQVcsR0FBRyxDQUFDLElBQWMsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUNwRCxPQUFPO2dCQUNILFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUN2RCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDaEMsQ0FBQztRQUNOLENBQUMsQ0FBQztRQW1HRixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUM3QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFD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QyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBYTtRQUM1QixpQ0FBaUM7SUFDckMsQ0FBQzs7aUhBbFNRLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHVXQ2RqQyxpNUtBc0lBOzJGRHhIYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0ksa0JBQWtCOzBFQU1yQixnQkFBZ0I7c0JBRHRCLEtBQUs7dUJBQUMsbUJBQW1CO2dCQUluQixPQUFPO3NCQURiLEtBQUs7dUJBQUMsU0FBUztnQkFJVCxjQUFjO3NCQURwQixLQUFLO3VCQUFDLGlCQUFpQjtnQkFJakIsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLFVBQVU7Z0JBa0lWLE9BQU87c0JBRGIsS0FBSzt1QkFBQyxTQUFTO2dCQUlULGFBQWE7c0JBRG5CLEtBQUs7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIE1hdFRyZWVGbGF0RGF0YVNvdXJjZSxcbiAgICBNYXRUcmVlRmxhdHRlbmVyLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcbmltcG9ydCB7IEVhQ0FwcGxpY2F0aW9uQXNDb2RlLCBFYUNQcm9qZWN0QXNDb2RlIH0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcbmltcG9ydCB7IEZsYXROb2RlLCBUcmVlTm9kZSB9IGZyb20gJy4uLy4uL21vZGVscy90cmVlLW5vZGUubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xjdS1wcm9qZWN0LWNhcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9qZWN0LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2plY3QtY2FyZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9qZWN0Q2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCdhcHBsaWNhdGlvbnMtYmFuaycpXG4gICAgcHVibGljIEFwcGxpY2F0aW9uc0Jhbms6IEFycmF5PEVhQ0FwcGxpY2F0aW9uQXNDb2RlPjtcblxuICAgIEBJbnB1dCgnbG9hZGluZycpXG4gICAgcHVibGljIExvYWRpbmc6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoJ3Byb2plY3QtbG9va3VwcycpXG4gICAgcHVibGljIFByb2plY3RMb29rdXBzOiBBcnJheTxzdHJpbmc+O1xuXG4gICAgQElucHV0KCdwcm9qZWN0cycpXG4gICAgcHVibGljIFByb2plY3RzOiBBcnJheTxFYUNQcm9qZWN0QXNDb2RlPjtcblxuICAgIHByaXZhdGUgdHJhbnNmb3JtZXIgPSAobm9kZTogVHJlZU5vZGUsIGxldmVsOiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4cGFuZGFibGU6ICEhbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDAsXG4gICAgICAgICAgICBuYW1lOiBub2RlLm5hbWUsXG4gICAgICAgICAgICBsZXZlbDogbGV2ZWwsXG4gICAgICAgICAgICByb3V0ZXJMaW5rOiBub2RlLnJvdXRlckxpbmssXG4gICAgICAgICAgICB1cmw6IG5vZGUudXJsLFxuICAgICAgICAgICAgbG9va3VwOiBub2RlLmxvb2t1cCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBub2RlLmRlc2NyaXB0aW9uLFxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IEFwcGxpY2F0aW9ucygpOiB7XG4gICAgICAgIFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlO1xuICAgIH0ge1xuICAgICAgICBjb25zdCBhcHBzOiB7IFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlIH0gPSB7fTtcblxuICAgICAgICB0aGlzLlByb2plY3Q/LkFwcGxpY2F0aW9uTG9va3Vwcz8uZm9yRWFjaCgoYXBwTG9va3VwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGFwcHNbYXBwTG9va3VwXSA9IHRoaXMuQXBwbGljYXRpb25zQmFua1thcHBMb29rdXBdO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFwcHM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBBcHBsaWNhdGlvblJvdXRlcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuUm91dGVkQXBwbGljYXRpb25zIHx8IHt9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IEN1cnJlbnRSb3V0ZUFwcGxpY2F0aW9uTG9va3VwcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuUm91dGVkQXBwbGljYXRpb25zW3RoaXMuQXBwUm91dGVdIHx8IHt9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IFJvdXRlZEFwcGxpY2F0aW9ucygpOiB7XG4gICAgICAgIFtyb3V0ZTogc3RyaW5nXTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuICAgIH0ge1xuICAgICAgICBjb25zdCBhcHBMb29rdXBzID0gT2JqZWN0LmtleXModGhpcy5BcHBsaWNhdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IGFwcHMgPSBhcHBMb29rdXBzLm1hcChcbiAgICAgICAgICAgIChhcHBMb29rdXApID0+IHRoaXMuQXBwbGljYXRpb25zW2FwcExvb2t1cF1cbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgYXBwUm91dGVzID1cbiAgICAgICAgICAgIGFwcHMubWFwKChhcHApID0+IHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkFwcCBmcm9tIHByb2plY3RzOiBcIiwgYXBwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwPy5Mb29rdXBDb25maWc/LlBhdGhSZWdleC5yZXBsYWNlKCcuKicsICcnKTtcbiAgICAgICAgICAgIH0pIHx8IFtdO1xuXG4gICAgICAgIGFwcFJvdXRlcyA9IGFwcFJvdXRlcy5maWx0ZXIoKGFyKSA9PiBhciAhPSBudWxsKTtcblxuICAgICAgICBsZXQgcm91dGVCYXNlczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgICBhcHBSb3V0ZXMuZm9yRWFjaCgoYXBwUm91dGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFwcFJvdXRlUGFydHMgPSBhcHBSb3V0ZS5zcGxpdCgnLycpO1xuXG4gICAgICAgICAgICBjb25zdCBhcHBSb3V0ZUJhc2UgPSBgLyR7YXBwUm91dGVQYXJ0c1sxXX1gO1xuXG4gICAgICAgICAgICBpZiAocm91dGVCYXNlcy5pbmRleE9mKGFwcFJvdXRlQmFzZSkgPCAwKSB7XG4gICAgICAgICAgICAgICAgcm91dGVCYXNlcy5wdXNoKGFwcFJvdXRlQmFzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCB3b3JraW5nQXBwTG9va3VwcyA9IFsuLi4oYXBwTG9va3VwcyB8fCBbXSldO1xuXG4gICAgICAgIHJvdXRlQmFzZXMgPSByb3V0ZUJhc2VzLnNvcnQoKGEsIGIpID0+IGIubG9jYWxlQ29tcGFyZShhKSk7XG5cbiAgICAgICAgY29uc3Qgcm91dGVTZXQgPVxuICAgICAgICAgICAgcm91dGVCYXNlcy5yZWR1Y2UoKHByZXZSb3V0ZU1hcCwgY3VycmVudFJvdXRlQmFzZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlTWFwID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5wcmV2Um91dGVNYXAsXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkQXBwTG9va3VwcyA9IHdvcmtpbmdBcHBMb29rdXBzLmZpbHRlcigod2FsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhID0gdGhpcy5BcHBsaWNhdGlvbnNbd2FsXTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2E/Lkxvb2t1cENvbmZpZz8uUGF0aFJlZ2V4LnN0YXJ0c1dpdGgoXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Um91dGVCYXNlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByb3V0ZU1hcFtjdXJyZW50Um91dGVCYXNlXSA9XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkQXBwTG9va3Vwcy5yZWR1Y2UoKHByZXZBcHBNYXAsIGFwcExvb2t1cCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBwTWFwOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldkFwcE1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcE1hcFthcHBMb29rdXBdID0gdGhpcy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwcE1hcDtcbiAgICAgICAgICAgICAgICAgICAgfSwge30pIHx8IHt9O1xuXG4gICAgICAgICAgICAgICAgd29ya2luZ0FwcExvb2t1cHMgPSB3b3JraW5nQXBwTG9va3Vwcy5maWx0ZXIoKHdhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZEFwcExvb2t1cHMuaW5kZXhPZih3YSkgPCAwO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlTWFwO1xuICAgICAgICAgICAgfSwge30pIHx8IHt9O1xuXG4gICAgICAgIGxldCByb3V0ZVNldEtleXMgPSBPYmplY3Qua2V5cyhyb3V0ZVNldCk7XG5cbiAgICAgICAgcm91dGVTZXRLZXlzID0gcm91dGVTZXRLZXlzLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG5cbiAgICAgICAgY29uc3Qgcm91dGVTZXRSZXN1bHQgPSB7fTtcblxuICAgICAgICByb3V0ZVNldEtleXMuZm9yRWFjaCgocnNrKSA9PiAocm91dGVTZXRSZXN1bHRbcnNrXSA9IHJvdXRlU2V0W3Jza10pKTtcblxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkFwcCBSb3V0ZXM6IFwiLHJvdXRlU2V0UmVzdWx0KVxuXG4gICAgICAgIHJldHVybiByb3V0ZVNldFJlc3VsdDtcbiAgICB9XG5cbiAgICB0cmVlQ29udHJvbCA9IG5ldyBGbGF0VHJlZUNvbnRyb2w8RmxhdE5vZGU+KFxuICAgICAgICAobm9kZTogYW55KSA9PiBub2RlLmxldmVsLFxuICAgICAgICAobm9kZTogYW55KSA9PiBub2RlLmV4cGFuZGFibGVcbiAgICApO1xuXG4gICAgdHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKFxuICAgICAgICB0aGlzLnRyYW5zZm9ybWVyLFxuICAgICAgICAobm9kZSkgPT4gbm9kZS5sZXZlbCxcbiAgICAgICAgKG5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZSxcbiAgICAgICAgKG5vZGUpID0+IG5vZGUuY2hpbGRyZW5cbiAgICApO1xuXG4gICAgcHVibGljIERhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZUZsYXREYXRhU291cmNlKFxuICAgICAgICB0aGlzLnRyZWVDb250cm9sLFxuICAgICAgICB0aGlzLnRyZWVGbGF0dGVuZXJcbiAgICApO1xuXG4gICAgQElucHV0KCdwcm9qZWN0JylcbiAgICBwdWJsaWMgUHJvamVjdDogRWFDUHJvamVjdEFzQ29kZTtcblxuICAgIEBJbnB1dCgncHJvamVjdC1sb29rdXAnKVxuICAgIHB1YmxpYyBQcm9qZWN0TG9va3VwOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgQXBwUm91dGU6IHN0cmluZztcblxuICAgIC8vIHB1YmxpYyBSb3V0ZWRBcHBsaWNhdGlvbnM6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKCkge31cblxuICAgIHB1YmxpYyBIYXNDaGlsZCA9IChfOiBudW1iZXIsIG5vZGU6IEZsYXROb2RlKSA9PiBub2RlLmV4cGFuZGFibGU7XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAodGhpcy5Qcm9qZWN0cyAmJiB0aGlzLlByb2plY3RMb29rdXBzICYmIHRoaXMuQXBwbGljYXRpb25zKSB7XG4gICAgICAgICAgICBsZXQgdGVtcCA9IHRoaXMuQnVpbGRQcm9qZWN0VHJlZSgpO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJ0byBzdHJpbmc6IFwiLCBKU09OLnN0cmluZ2lmeSh0ZW1wKSlcblxuICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHRoaXMuRGF0YVNvdXJjZS5kYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkodGVtcCkpIHtcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnSXRzIGRpZmZlcmVudCcpXG4gICAgICAgICAgICAgICAgdGhpcy5EYXRhU291cmNlLmRhdGEgPSB0ZW1wO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIFJvdXRlVG9QYXRoKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIEJ1aWxkUHJvamVjdFRyZWUoKTogQXJyYXk8VHJlZU5vZGU+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2NhbGxpbmcgYnVpbGQgcHJvamVjdCB0cmVlJyk7XG4gICAgICAgIGxldCB0ZW1wVHJlZURhdGE6IEFycmF5PFRyZWVOb2RlPiA9IFtdO1xuICAgICAgICB0aGlzLlByb2plY3RMb29rdXBzPy5mb3JFYWNoKChwTG9va3VwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGxldCB0ZW1wUHJvaiA9IHRoaXMuUHJvamVjdHNbcExvb2t1cF07XG4gICAgICAgICAgICB0aGlzLlByb2plY3QgPSB0ZW1wUHJvajtcbiAgICAgICAgICAgIGxldCB0ZW1wUHJvak5vZGU6IFRyZWVOb2RlID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IHRlbXBQcm9qPy5Qcm9qZWN0Py5OYW1lLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZW1wUHJvaj8uUHJvamVjdD8uRGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgbG9va3VwOiBwTG9va3VwLFxuICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vJyArIHRlbXBQcm9qPy5QcmltYXJ5SG9zdCxcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rOiBbJy9wcm9qZWN0JywgcExvb2t1cF0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBsZXQgdGVtcFJvdXRlcyA9IHRoaXMuQXBwbGljYXRpb25Sb3V0ZXM7XG5cbiAgICAgICAgICAgIGlmICh0ZW1wUm91dGVzKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRlbXBQcm9qQ2hpbGRyZW46IEFycmF5PFRyZWVOb2RlPiA9IFtdO1xuICAgICAgICAgICAgICAgIHRlbXBSb3V0ZXMuZm9yRWFjaCgoYXBwUm91dGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkFwcFJvdXRlID0gYXBwUm91dGU7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlckxpbms6IFsnL3JvdXRlJywgdGhpcy5BcHBSb3V0ZSwgcExvb2t1cF0sXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wUm91dGVOb2RlOiBUcmVlTm9kZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuQXBwUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovLycgKyB0ZW1wUHJvai5QcmltYXJ5SG9zdCArIHRoaXMuQXBwUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rOiBbJy9yb3V0ZScsIHRoaXMuQXBwUm91dGUsIHBMb29rdXBdLFxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wQXBwcyA9IHRoaXMuQ3VycmVudFJvdXRlQXBwbGljYXRpb25Mb29rdXBzO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGVtcEFwcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wUm91dGVDaGlsZHJlbjogQXJyYXk8VHJlZU5vZGU+ID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQXBwcy5mb3JFYWNoKChhcHBMb29rdXA6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wQXBwID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Sb3V0ZWRBcHBsaWNhdGlvbnNbdGhpcy5BcHBSb3V0ZV1bXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBMb29rdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXBwUGF0aCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBBcHAuTG9va3VwQ29uZmlnPy5QYXRoUmVnZXguc3Vic3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBBcHAuTG9va3VwQ29uZmlnPy5QYXRoUmVnZXgubGVuZ3RoIC0gMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBBcHBOb2RlOiBUcmVlTm9kZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwOiBhcHBMb29rdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRlbXBBcHAuQXBwbGljYXRpb24uTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vJyArIHRlbXBQcm9qLlByaW1hcnlIb3N0ICsgYXBwUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRlbXBBcHAuQXBwbGljYXRpb24uRGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvYXBwbGljYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwTG9va3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5BcHBSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMb29rdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wUm91dGVDaGlsZHJlbi5wdXNoKHRlbXBBcHBOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFJvdXRlTm9kZS5jaGlsZHJlbiA9IHRlbXBSb3V0ZUNoaWxkcmVuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRlbXBQcm9qQ2hpbGRyZW4ucHVzaCh0ZW1wUm91dGVOb2RlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0ZW1wUHJvak5vZGUuY2hpbGRyZW4gPSB0ZW1wUHJvakNoaWxkcmVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGVtcFRyZWVEYXRhLnB1c2godGVtcFByb2pOb2RlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdUSEUgVFJFRTogJywgdGVtcFRyZWVEYXRhKTtcbiAgICAgICAgcmV0dXJuIHRlbXBUcmVlRGF0YTtcblxuICAgICAgICAvLyByZXR1cm4gdGVtcFRyZWVEYXRhO1xuICAgIH1cblxuICAgIHB1YmxpYyBCdWlsZFJvdXRlVHJlZSgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2NhbGxlZCByb3V0ZSB0cmVlJyk7XG4gICAgICAgIGxldCB0ZW1wVHJlZURhdGE6IEFycmF5PFRyZWVOb2RlPiA9IFtdO1xuXG4gICAgICAgIGxldCB0ZW1wUm91dGVzID0gdGhpcy5BcHBsaWNhdGlvblJvdXRlcztcbiAgICAgICAgaWYgKHRlbXBSb3V0ZXMpIHtcbiAgICAgICAgICAgIC8vIGxldCB0ZW1wUHJvakNoaWxkcmVuOiBBcnJheTxUcmVlTm9kZT4gPSBbXTtcbiAgICAgICAgICAgIHRlbXBSb3V0ZXMuZm9yRWFjaCgoYXBwUm91dGU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuQXBwUm91dGUgPSBhcHBSb3V0ZTtcblxuICAgICAgICAgICAgICAgIGxldCB0ZW1wUm91dGVOb2RlOiBUcmVlTm9kZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5BcHBSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly8nICsgdGhpcy5Qcm9qZWN0Py5QcmltYXJ5SG9zdCArIHRoaXMuQXBwUm91dGUsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms6IFsnL3JvdXRlJywgdGhpcy5BcHBSb3V0ZSwgdGhpcy5Qcm9qZWN0TG9va3VwXSxcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgbGV0IHRlbXBBcHBzID0gdGhpcy5DdXJyZW50Um91dGVBcHBsaWNhdGlvbkxvb2t1cHM7XG4gICAgICAgICAgICAgICAgaWYgKHRlbXBBcHBzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wUm91dGVDaGlsZHJlbjogQXJyYXk8VHJlZU5vZGU+ID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRlbXBBcHBzLmZvckVhY2goKGFwcExvb2t1cDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEFwcCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Sb3V0ZWRBcHBsaWNhdGlvbnNbdGhpcy5BcHBSb3V0ZV1bYXBwTG9va3VwXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZW1wQXBwTm9kZTogVHJlZU5vZGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwOiBhcHBMb29rdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGVtcEFwcC5BcHBsaWNhdGlvbi5OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUHJvamVjdD8uUHJpbWFyeUhvc3QgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkFwcFJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0ZW1wQXBwLkFwcGxpY2F0aW9uLkRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9hcHBsaWNhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcExvb2t1cCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5BcHBSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5Qcm9qZWN0TG9va3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFJvdXRlQ2hpbGRyZW4ucHVzaCh0ZW1wQXBwTm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0ZW1wUm91dGVOb2RlLmNoaWxkcmVuID0gdGVtcFJvdXRlQ2hpbGRyZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRlbXBUcmVlRGF0YS5wdXNoKHRlbXBSb3V0ZU5vZGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRlbXBUcmVlRGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgSGFuZGxlUm91dGUocm91dGU6IHN0cmluZykge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygncm91dGU6ICcsIHJvdXRlKTtcbiAgICB9XG59XG4iLCI8IS0tIFRSRUUgLS0+XG48IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJQcm9qZWN0TG9va3Vwcz9CdWlsZFRyZWUoKTpmYWxzZVwiPjwvbmctY29udGFpbmVyPiAtLT5cbjxsY3Utc2xvdHRlZC1jYXJkLWxnXG4gICAgKm5nSWY9XCJQcm9qZWN0TG9va3Vwcz8ubGVuZ3RoID4gMFwiXG4gICAgY2xhc3M9XCJmaXQtY29udGVudFwiXG4gICAgW2xvYWRpbmddPVwiTG9hZGluZ1wiXG4gICAgY2FyZC10aXRsZT1cIlByb2plY3RcIlxuICAgIGljb249XCJ3b3JrX291dGxpbmVcIlxuICAgIFttYWluLXNsb3QtZGVzY3JpcHRpb25dPVwiUHJvamVjdExvb2t1cHM/Lmxlbmd0aCArICcgcHJvamVjdChzKSBjb25maWd1cmVkJ1wiXG4gICAgKG1haW4tYWN0aW9uLWNsaWNrZWQpPVwiUm91dGVUb1BhdGgoJy9kYXNoYm9hcmQvY3JlYXRlLXByb2plY3QnKVwiXG4+XG4gICAgPCEtLSA8ZGl2PiAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRGF0YVNvdXJjZVwiPlxuICAgICAgICA8bWF0LXRyZWUgW2RhdGFTb3VyY2VdPVwiRGF0YVNvdXJjZVwiIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiPlxuICAgICAgICAgICAgPG1hdC10cmVlLW5vZGUgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGVcIiBtYXRUcmVlTm9kZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNsb3QtaGVhZGVyLWFuY2hvclwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIm5vZGUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5uYW1lXCIgY2xhc3M9XCJzbG90LW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vZGUubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUuZGVzY3JpcHRpb25cIiBjbGFzcz1cInNsb3QtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vZGUuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbm9kZS5yb3V0ZXJMaW5rXCIgY2xhc3M9XCJ0cmVlLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5uYW1lXCIgY2xhc3M9XCJzbG90LW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vZGUubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUuZGVzY3JpcHRpb25cIiBjbGFzcz1cInNsb3QtZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG5vZGUuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNsb3QtYWN0aW9ucy1jb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICBmeExheW91dD1cInJvd1wiXG4gICAgICAgICAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1hcm91bmQgY2VudGVyXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm5vZGUucm91dGVyTGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNsb3QtYWN0aW9uLWFuY2hvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRWRpdCB7eyBub2RlLm5hbWUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5lZGl0PC9tYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNsb3QtYWN0aW9uLWFuY2hvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJub2RlLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiTGF1bmNoIHt7IG5vZGUubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPmxhdW5jaDwvbWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24+PC9idXR0b24+IC0tPlxuICAgICAgICAgICAgPC9tYXQtdHJlZS1ub2RlPlxuICAgICAgICAgICAgPG1hdC10cmVlLW5vZGVcbiAgICAgICAgICAgICAgICAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZTsgd2hlbjogSGFzQ2hpbGRcIlxuICAgICAgICAgICAgICAgIG1hdFRyZWVOb2RlUGFkZGluZ1xuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIG1hdFRyZWVOb2RlVG9nZ2xlXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1RvZ2dsZSAnICsgbm9kZS5uYW1lXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1pY29uLXJ0bC1taXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiZXhwYW5kX21vcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiY2hldnJvbl9yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbG90LWhlYWRlci1hbmNob3JcIlxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUubmFtZVwiIGNsYXNzPVwic2xvdC1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJzbG90LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW5vZGUucm91dGVyTGlua1wiIGNsYXNzPVwidHJlZS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUubmFtZVwiIGNsYXNzPVwic2xvdC1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJzbG90LWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbG90LWFjdGlvbnMtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgZnhMYXlvdXQ9XCJyb3dcIlxuICAgICAgICAgICAgICAgICAgICBmeExheW91dEFsaWduPVwic3BhY2UtYXJvdW5kIGNlbnRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub2RlLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbG90LWFjdGlvbi1hbmNob3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwibm9kZS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkVkaXQge3sgbm9kZS5uYW1lIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ZWRpdDwvbWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzbG90LWFjdGlvbi1hbmNob3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwibm9kZS51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkxhdW5jaCB7eyBub2RlLm5hbWUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5sYXVuY2g8L21hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LXRyZWUtbm9kZT5cbiAgICAgICAgPC9tYXQtdHJlZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbGN1LXNsb3R0ZWQtY2FyZC1sZz5cbiJdfQ==
|
@@ -39,7 +39,7 @@ export class TeamMemberCardComponent {
|
|
39
39
|
memberList.push(this.CurrentUser);
|
40
40
|
}
|
41
41
|
this.ProjectLookups.forEach((proj) => {
|
42
|
-
this.Projects[proj]
|
42
|
+
this.Projects[proj]?.RelyingParty?.AccessConfigurations?.fathym?.Usernames?.forEach((username) => {
|
43
43
|
if (!memberList.includes(username)) {
|
44
44
|
memberList.push(username);
|
45
45
|
// console.log("Added: ", username)
|
@@ -68,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
68
68
|
type: Input,
|
69
69
|
args: ['projects']
|
70
70
|
}] } });
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVhbS1tZW1iZXItY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9lbGVtZW50cy90ZWFtLW1lbWJlci1jYXJkL3RlYW0tbWVtYmVyLWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9uL3NyYy9saWIvZWxlbWVudHMvdGVhbS1tZW1iZXItY2FyZC90ZWFtLW1lbWJlci1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDOzs7Ozs7Ozs7QUFPckgsTUFBTSxPQUFPLHVCQUF1QjtJQWlCaEMsWUFBc0IsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRU0sUUFBUSxLQUFVLENBQUM7SUFDbkIsV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0MscUJBQXFCO1lBQ3JCLDZCQUE2QjtZQUM3QiwrREFBK0Q7WUFDL0QsNENBQTRDO1NBQy9DO0lBQ0wsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRTtZQUM3RCxLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRTtnQkFDRixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDckMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQzFCO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVTLGdCQUFnQjtRQUN0QixJQUFJLFVBQVUsR0FBa0IsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNwRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDckM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxRQUFRLENBQ1QsSUFBSSxDQUNQLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUM3RCxDQUFDLFFBQWdCLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ2hDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzFCLG1DQUFtQztpQkFDdEM7WUFDTCxDQUFDLENBQ0osQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0gsMkNBQTJDO1FBQzNDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7O29IQTlEUSx1QkFBdUI7d0dBQXZCLHVCQUF1QixnUkNWcEMsZ3lEQXdEQTsyRkQ5Q2EsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNJLHNCQUFzQjtnR0FNekIsVUFBVTtzQkFEaEIsS0FBSzt1QkFBQyxZQUFZO2dCQU1aLFdBQVc7c0JBRGpCLEtBQUs7dUJBQUMsY0FBYztnQkFJZCxjQUFjO3NCQURwQixLQUFLO3VCQUFDLGlCQUFpQjtnQkFJakIsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBFYUNQcm9qZWN0QXNDb2RlLCBFbnRlcnByaXNlQXNDb2RlIH0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcbmltcG9ydCB7IEFkZFRlYW1NZW1iZXJEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2dzL2FkZC10ZWFtLW1lbWJlci1kaWFsb2cvYWRkLXRlYW0tbWVtYmVyLWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xjdS10ZWFtLW1lbWJlci1jYXJkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGVhbS1tZW1iZXItY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGVhbS1tZW1iZXItY2FyZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUZWFtTWVtYmVyQ2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCdlbnRlcnByaXNlJylcbiAgICBwdWJsaWMgRW50ZXJwcmlzZTogRW50ZXJwcmlzZUFzQ29kZTtcblxuICAgIHB1YmxpYyBUZWFtTWVtYmVyczogQXJyYXk8YW55PjtcblxuICAgIEBJbnB1dCgnY3VycmVudC11c2VyJylcbiAgICBwdWJsaWMgQ3VycmVudFVzZXI6IHN0cmluZztcblxuICAgIEBJbnB1dCgncHJvamVjdC1sb29rdXBzJylcbiAgICBwdWJsaWMgUHJvamVjdExvb2t1cHM6IEFycmF5PHN0cmluZz47XG5cbiAgICBASW5wdXQoJ3Byb2plY3RzJylcbiAgICBwdWJsaWMgUHJvamVjdHM6IGFueTtcblxuICAgIHB1YmxpYyBTa2VsZXRvbkVmZmVjdDogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGRpYWxvZzogTWF0RGlhbG9nKSB7XG4gICAgICAgIHRoaXMuU2tlbGV0b25FZmZlY3QgPSAnd2F2ZSc7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge31cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLlByb2plY3RzKSB7XG4gICAgICAgICAgICB0aGlzLlRlYW1NZW1iZXJzID0gdGhpcy5CdWlsZFRlYW1NZW1iZXJzKCk7XG4gICAgICAgICAgICAvLyAgICAgdGhpcy5Qcm9qZWN0c1tcbiAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy5Qcm9qZWN0TG9va3VwXG4gICAgICAgICAgICAvLyAgICAgXS5SZWx5aW5nUGFydHk/LkFjY2Vzc0NvbmZpZ3VyYXRpb25zPy5mYXRoeW0/LlVzZXJuYW1lcztcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiUHJvamVjdHM6IFwiLCB0aGlzLlByb2plY3RzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBPcGVuQWRkTWVtYmVyTW9kYWwoKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWRkVGVhbU1lbWJlckRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgd2lkdGg6ICc2MDBweCcsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZW50ZXJwcmlzZTogdGhpcy5FbnRlcnByaXNlLFxuICAgICAgICAgICAgICAgIHByb2plY3RMb29rdXA6IHRoaXMuUHJvamVjdExvb2t1cHNbMF0sXG4gICAgICAgICAgICAgICAgcHJvamVjdHM6IHRoaXMuUHJvamVjdHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgQnVpbGRUZWFtTWVtYmVycygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgbGV0IG1lbWJlckxpc3Q6IEFycmF5PHN0cmluZz4gPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgICAgICBpZiAodGhpcy5DdXJyZW50VXNlcikge1xuICAgICAgICAgICAgbWVtYmVyTGlzdC5wdXNoKHRoaXMuQ3VycmVudFVzZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuUHJvamVjdExvb2t1cHMuZm9yRWFjaCgocHJvajogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICB0aGlzLlByb2plY3RzW1xuICAgICAgICAgICAgICAgIHByb2pcbiAgICAgICAgICAgIF0/LlJlbHlpbmdQYXJ0eT8uQWNjZXNzQ29uZmlndXJhdGlvbnM/LmZhdGh5bT8uVXNlcm5hbWVzPy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICh1c2VybmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbWVtYmVyTGlzdC5pbmNsdWRlcyh1c2VybmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlckxpc3QucHVzaCh1c2VybmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkFkZGVkOiBcIiwgdXNlcm5hbWUpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJNZW1iZXJMaXN0OiBcIiwgbWVtYmVyTGlzdCk7XG4gICAgICAgIHJldHVybiBtZW1iZXJMaXN0O1xuICAgIH1cbn1cbiIsIjxtYXQtY2FyZCBjbGFzcz1cInNvY2lhbC1jYXJkXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRlYW0tbWVtYmVyLWhlYWRlclwiXG4gICAgICAgIGZ4TGF5b3V0PVwicm93XCJcbiAgICAgICAgZnhMYXlvdXRBbGlnbj1cInNwYWNlLWJldHdlZW4gY2VudGVyXCJcbiAgICA+XG4gICAgICAgIDxtYXQtY2FyZC10aXRsZT5NZW1iZXJzPC9tYXQtY2FyZC10aXRsZT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYWRkLW1lbWJlci1idG5cIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJPcGVuQWRkTWVtYmVyTW9kYWwoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIUVudGVycHJpc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgICBBZGQgTWVtYmVyXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJUZWFtTWVtYmVyc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgbWVtYmVyIG9mIFRlYW1NZW1iZXJzXCJcbiAgICAgICAgICAgIGZ4TGF5b3V0PVwicm93XCJcbiAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtZW1iZXItaWNvblwiPnBlcnNvbjwvbWF0LWljb24+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VybmFtZVwiPnt7IG1lbWJlciB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdj5Pd25lcjwvZGl2PiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFUZWFtTWVtYmVyc1wiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiPlxuICAgICAgICAgICAgPHNrZWxldG9uLWF2YXRhclxuICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZWZmZWN0XT1cIlNrZWxldG9uRWZmZWN0XCJcbiAgICAgICAgICAgID48L3NrZWxldG9uLWF2YXRhcj5cbiAgICAgICAgICAgIDwhLS0gPG1hdC1pY29uIHNrZWxldG9uLXRleHQgY2xhc3M9XCJtZW1iZXItaWNvblwiIFtlZmZlY3RdPVwiU2tlbGV0b25FZmZlY3RcIj5wZXJzb248L21hdC1pY29uPiAtLT5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBza2VsZXRvbi10ZXh0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2tlbGV0b24tdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIFtlZmZlY3RdPVwiU2tlbGV0b25FZmZlY3RcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgVXNlck5hbWVcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIHNrZWxldG9uLXRleHRcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJza2VsZXRvbi10ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW2VmZmVjdF09XCJTa2VsZXRvbkVmZmVjdFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBPd25lclxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG4iXX0=
|
@@ -106,6 +106,9 @@ export class EaCService {
|
|
106
106
|
return status;
|
107
107
|
}
|
108
108
|
}
|
109
|
+
// this.appsFlowEventsSvc.EnsureUserEnterpriseEvent.subscribe(async () => {
|
110
|
+
// await this.projectService.EnsureUserEnterprise(this.State);
|
111
|
+
// });
|
109
112
|
async EnsureUserEnterprise() {
|
110
113
|
const state = this.stateSubject.getValue();
|
111
114
|
const status = await this.projectService.EnsureUserEnterprise(state);
|
@@ -173,6 +176,7 @@ export class EaCService {
|
|
173
176
|
return state;
|
174
177
|
}
|
175
178
|
async SaveApplicationAsCode(req) {
|
179
|
+
console.log('Calling Save App as Code: ', req);
|
176
180
|
return await this.handleSaveApplication(req);
|
177
181
|
}
|
178
182
|
async SaveDFSModifier(req) {
|
@@ -225,6 +229,7 @@ export class EaCService {
|
|
225
229
|
// Helpers
|
226
230
|
async handleSaveApplication(req) {
|
227
231
|
const state = this.stateSubject.getValue();
|
232
|
+
console.log('calling handle Save App: ', state);
|
228
233
|
const saveEaC = {
|
229
234
|
EnterpriseLookup: state.EaC.EnterpriseLookup,
|
230
235
|
Applications: {},
|
@@ -241,9 +246,13 @@ export class EaCService {
|
|
241
246
|
if (req.Application) {
|
242
247
|
saveEaC.Applications[req.ApplicationLookup] = req.Application;
|
243
248
|
}
|
244
|
-
|
249
|
+
//await
|
250
|
+
const status = await Promise.all([
|
251
|
+
this.projectService.SaveEnterpriseAsCode(state, saveEaC),
|
252
|
+
]);
|
253
|
+
console.log('State after save app: ', state);
|
245
254
|
this.stateSubject.next(state);
|
246
|
-
return status;
|
255
|
+
return status[0];
|
247
256
|
}
|
248
257
|
async handleSaveDFSModifier(req) {
|
249
258
|
const state = this.stateSubject.getValue();
|
@@ -265,11 +274,12 @@ export class EaCService {
|
|
265
274
|
}
|
266
275
|
if (req.ApplicationLookup) {
|
267
276
|
// console.log('APPLOokup: ', req.ApplicationLookup);
|
277
|
+
// console.log('saveEAC: ', saveEaC);
|
268
278
|
saveEaC.Applications[req.ApplicationLookup] = {
|
269
279
|
ModifierLookups: req.ModifierLookups,
|
270
280
|
};
|
271
281
|
}
|
272
|
-
console.log('Save mod eac: ', saveEaC);
|
282
|
+
// console.log('Save mod eac: ', saveEaC);
|
273
283
|
const status = await this.projectService.SaveEnterpriseAsCode(state, saveEaC);
|
274
284
|
this.stateSubject.next(state);
|
275
285
|
return status;
|
@@ -323,4 +333,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
323
333
|
providedIn: 'root',
|
324
334
|
}]
|
325
335
|
}], ctorParameters: function () { return [{ type: i1.ProjectService }, { type: i2.HttpClient }]; } });
|
326
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9lYWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFDSCxxQkFBcUIsR0FFeEIsTUFBTSxrQ0FBa0MsQ0FBQztBQWExQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7O0FBRW5ELE1BQU0sT0FBTyxpQ0FBaUM7Q0FNN0M7QUFFRCxNQUFNLE9BQU8sMkJBQTJCO0NBUXZDO0FBRUQsTUFBTSxPQUFPLGlDQUFpQztDQU03QztBQUVELE1BQU0sT0FBTyw2QkFBNkI7Q0FJekM7QUFLRCxNQUFNLE9BQU8sVUFBVTtJQWVuQixnQkFBZ0I7SUFDaEIsWUFDYyxjQUE4QixFQUM5QixJQUFnQjtRQURoQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUUxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBbEJELGNBQWM7SUFDZCxJQUFXLG9CQUFvQjtRQUMzQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO0lBQy9DLENBQUM7SUFhRCxlQUFlO0lBQ1IsaUJBQWlCLENBQUMsUUFBa0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7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SyxDQUFDLEdBQUcsQ0FBQyxVQUFVO2dCQUN2QixXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7YUFDbkM7WUFDRCxLQUFLLEVBQUUsU0FBUztZQUNoQixvR0FBb0c7WUFDcEcsUUFBUSxFQUFFLEVBQUU7U0FDZixDQUFDO1FBRUYsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxPQUFPLENBQUM7UUFFMUMsOENBQThDO1FBRTlDLElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FDdkQsS0FBSyxFQUNMLE9BQU8sQ0FDVixDQUFDO1FBRUYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7O3VHQXJoQlEsVUFBVTsyR0FBVixVQUFVLGNBRlAsTUFBTTsyRkFFVCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2plY3RTZXJ2aWNlIH0gZnJvbSAnLi9wcm9qZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvbnNGbG93U3RhdGUsXG4gICAgVW5wYWNrTG93Q29kZVVuaXRSZXF1ZXN0LFxufSBmcm9tICcuLi9zdGF0ZS9hcHBsaWNhdGlvbnMtZmxvdy5zdGF0ZSc7XG5pbXBvcnQge1xuICAgIEVhQ0FwcGxpY2F0aW9uQXNDb2RlLFxuICAgIEVhQ0RhdGFUb2tlbixcbiAgICBFYUNERlNNb2RpZmllcixcbiAgICBFYUNFbnZpcm9ubWVudEFzQ29kZSxcbiAgICBFYUNIb3N0LFxuICAgIEVhQ1Byb2plY3RBc0NvZGUsXG4gICAgRW50ZXJwcmlzZUFzQ29kZSxcbn0gZnJvbSAnQHNlbWFudGljanMvY29tbW9uJztcbmltcG9ydCB7IEZlZWRFbnRyeSwgRmVlZEl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvdXNlci1mZWVkLm1vZGVsJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBCYXNlUmVzcG9uc2UsIFN0YXR1cyB9IGZyb20gJ0BsY3UvY29tbW9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgU2F2ZUFwcGxpY2F0aW9uQXNDb2RlRXZlbnRSZXF1ZXN0IHtcbiAgICBwdWJsaWMgQXBwbGljYXRpb24/OiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcblxuICAgIHB1YmxpYyBBcHBsaWNhdGlvbkxvb2t1cD86IHN0cmluZztcblxuICAgIHB1YmxpYyBQcm9qZWN0TG9va3VwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU2F2ZURGU01vZGlmaWVyRXZlbnRSZXF1ZXN0IHtcbiAgICBwdWJsaWMgQXBwbGljYXRpb25Mb29rdXA/OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgTW9kaWZpZXI/OiBFYUNERlNNb2RpZmllcjtcblxuICAgIHB1YmxpYyBNb2RpZmllckxvb2t1cHM/OiBBcnJheTxzdHJpbmc+O1xuXG4gICAgcHVibGljIFByb2plY3RMb29rdXBzPzogQXJyYXk8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGNsYXNzIFNhdmVFbnZpcm9ubWVudEFzQ29kZUV2ZW50UmVxdWVzdCB7XG4gICAgcHVibGljIEVudGVycHJpc2VEYXRhVG9rZW5zPzogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNEYXRhVG9rZW4gfTtcblxuICAgIHB1YmxpYyBFbnZpcm9ubWVudD86IEVhQ0Vudmlyb25tZW50QXNDb2RlO1xuXG4gICAgcHVibGljIEVudmlyb25tZW50TG9va3VwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU2F2ZVByb2plY3RBc0NvZGVFdmVudFJlcXVlc3Qge1xuICAgIHB1YmxpYyBQcm9qZWN0PzogRWFDUHJvamVjdEFzQ29kZTtcblxuICAgIHB1YmxpYyBQcm9qZWN0TG9va3VwPzogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFYUNTZXJ2aWNlIHtcbiAgICAvL0ZpZWxkc1xuICAgIHByb3RlY3RlZCBzdGF0ZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxBcHBsaWNhdGlvbnNGbG93U3RhdGU+O1xuXG4gICAgLy8gIFByb3BlcnRpZXNcbiAgICBwdWJsaWMgZ2V0IEVkaXRpbmdQcm9qZWN0TG9va3VwKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2plY3RTZXJ2aWNlLkVkaXRpbmdQcm9qZWN0TG9va3VwO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgQ3JlYXRpbmdQcm9qZWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9qZWN0U2VydmljZS5DcmVhdGluZ1Byb2plY3Q7XG4gICAgfVxuXG4gICAgcHVibGljIFN0YXRlOiBPYnNlcnZhYmxlPEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZT47XG5cbiAgICAvLyAgQ29uc3RydWN0b3JzXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBwcm9qZWN0U2VydmljZTogUHJvamVjdFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50XG4gICAgKSB7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdChuZXcgQXBwbGljYXRpb25zRmxvd1N0YXRlKCkpO1xuICAgICAgICB0aGlzLlN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gIEFQSSBNZXRob2RzXG4gICAgcHVibGljIENoZWNrVXNlckZlZWRJdGVtKGZlZWRJdGVtOiBGZWVkSXRlbSk6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGZlZWRJdGVtLlJlZnJlc2hMaW5rKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQXBwbGljYXRpb24oXG4gICAgICAgIGFwcExvb2t1cDogc3RyaW5nLFxuICAgICAgICBhcHBOYW1lOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maXJtKGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGFwcGxpY2F0aW9uICcke2FwcE5hbWV9Jz9gKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGNvbnN0IGVhYzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcbiAgICAgICAgICAgICAgICBFbnRlcnByaXNlTG9va3VwOiBzdGF0ZS5FYUMuRW50ZXJwcmlzZUxvb2t1cCxcbiAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbnM6IHt9LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZWFjLkFwcGxpY2F0aW9uc1thcHBMb29rdXBdID0ge1xuICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuRW50ZXJwcmlzZUFzQ29kZVJlbW92YWxzKFxuICAgICAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgICAgIGVhY1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEZXZPcHNBY3Rpb24oXG4gICAgICAgIGRvYUxvb2t1cDogc3RyaW5nLFxuICAgICAgICBkb2FOYW1lOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maXJtKFxuICAgICAgICAgICAgICAgIGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIEJ1aWxkIFBpcGVsaW5lICcke2RvYU5hbWV9Jz9gXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgICAgICBjb25zdCBlYWM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICAgICAgRW52aXJvbm1lbnRzOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5FbnZpcm9ubWVudHNbc3RhdGUuRWFDLkVudGVycHJpc2UuUHJpbWFyeUVudmlyb25tZW50XSA9IHtcbiAgICAgICAgICAgICAgICBEZXZPcHNBY3Rpb25zOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5FbnZpcm9ubWVudHNbXG4gICAgICAgICAgICAgICAgc3RhdGUuRWFDLkVudGVycHJpc2UuUHJpbWFyeUVudmlyb25tZW50XG4gICAgICAgICAgICBdLkRldk9wc0FjdGlvbnNbZG9hTG9va3VwXSA9IHt9O1xuXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVudGVycHJpc2VBc0NvZGVSZW1vdmFscyhcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBlYWNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlTW9kaWZpZXIoXG4gICAgICAgIG1vZGlmaWVyTG9va3VwOiBzdHJpbmcsXG4gICAgICAgIG1vZGlmaWVyTmFtZTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlybShcbiAgICAgICAgICAgICAgICBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBNb2RpZmllciAnJHttb2RpZmllck5hbWV9Jz9gXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgICAgICBjb25zdCBlYWM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICAgICAgTW9kaWZpZXJzOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5Nb2RpZmllcnNbbW9kaWZpZXJMb29rdXBdID0ge307XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuRW50ZXJwcmlzZUFzQ29kZVJlbW92YWxzKFxuICAgICAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgICAgIGVhY1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVQcm9qZWN0KFxuICAgICAgICBwcm9qZWN0TG9va3VwOiBzdHJpbmcsXG4gICAgICAgIHByb2plY3ROYW1lOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maXJtKGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIFByb2plY3QgJyR7cHJvamVjdE5hbWV9Jz9gKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICAgICAgY29uc3QgZWFjOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgICAgIEVudGVycHJpc2VMb29rdXA6IHN0YXRlLkVhQy5FbnRlcnByaXNlTG9va3VwLFxuICAgICAgICAgICAgICAgIFByb2plY3RzOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5Qcm9qZWN0c1twcm9qZWN0TG9va3VwXSA9IHtcbiAgICAgICAgICAgICAgICBQcm9qZWN0OiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuRW50ZXJwcmlzZUFzQ29kZVJlbW92YWxzKFxuICAgICAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgICAgIGVhY1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVNvdXJjZUNvbnRyb2woXG4gICAgICAgIHNyY0xvb2t1cDogc3RyaW5nLFxuICAgICAgICBzcmNOYW1lOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maXJtKFxuICAgICAgICAgICAgICAgIGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIFNvdXJjZSBDb250cm9sICcke3NyY05hbWV9Jz9gXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgICAgICBjb25zdCBlYWM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICAgICAgRW52aXJvbm1lbnRzOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5FbnZpcm9ubWVudHNbc3RhdGUuRWFDLkVudGVycHJpc2UuUHJpbWFyeUVudmlyb25tZW50XSA9IHtcbiAgICAgICAgICAgICAgICBTb3VyY2VzOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5FbnZpcm9ubWVudHNbc3RhdGUuRWFDLkVudGVycHJpc2UuUHJpbWFyeUVudmlyb25tZW50XS5Tb3VyY2VzW1xuICAgICAgICAgICAgICAgIHNyY0xvb2t1cFxuICAgICAgICAgICAgXSA9IHt9O1xuXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVudGVycHJpc2VBc0NvZGVSZW1vdmFscyhcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBlYWNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVVc2VyRW50ZXJwcmlzZSgpOiBQcm9taXNlPEJhc2VSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5FbnN1cmVVc2VyRW50ZXJwcmlzZShzdGF0ZSk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnRlcnByaXNlQXNDb2RlUmVtb3ZhbHMoXG4gICAgICAgIGVhYzogRW50ZXJwcmlzZUFzQ29kZVxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVudGVycHJpc2VBc0NvZGVSZW1vdmFscyhcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgZWFjXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldEFjdGl2ZUVudGVycHJpc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkdldEFjdGl2ZUVudGVycHJpc2Uoc3RhdGUpO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMb2FkVXNlckZlZWQoXG4gICAgICAgIHBhZ2U6IG51bWJlcixcbiAgICAgICAgcGFnZVNpemU6IG51bWJlcixcbiAgICAgICAgZm9yQ2hlY2s6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgZmlsdGVyU3RyOiBzdHJpbmcgPSAnJ1xuICAgICk6IFByb21pc2U8QXJyYXk8RmVlZEl0ZW0+PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkxvYWRVc2VyRmVlZChcbiAgICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgICBwYWdlU2l6ZSxcbiAgICAgICAgICAgIGZpbHRlclN0cixcbiAgICAgICAgICAgIGZvckNoZWNrLFxuICAgICAgICAgICAgc3RhdGVcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgR2VuZXJhdGVSb3V0ZWRBcHBsaWNhdGlvbnMoYXBwbGljYXRpb25zOiB7XG4gICAgICAgIFtsb29rdXA6IHN0cmluZ106IEVhQ0FwcGxpY2F0aW9uQXNDb2RlO1xuICAgIH0pOiB7XG4gICAgICAgIFtyb3V0ZTogc3RyaW5nXTogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZSB9O1xuICAgIH0ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gdGhpcy5wcm9qZWN0U2VydmljZS5HZW5lcmF0ZVJvdXRlZEFwcGxpY2F0aW9ucyhcbiAgICAgICAgICAgIGFwcGxpY2F0aW9ucyxcbiAgICAgICAgICAgIHN0YXRlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBIYXNWYWxpZENvbm5lY3Rpb24oKTogUHJvbWlzZTxFbnRlcnByaXNlQXNDb2RlPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkhhc1ZhbGlkQ29ubmVjdGlvbihzdGF0ZSk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RFbnRlcnByaXNlcygpOiBQcm9taXNlPEFycmF5PGFueT4+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuTGlzdEVudGVycHJpc2VzKHN0YXRlKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTG9hZEVudGVycHJpc2VBc0NvZGUoKTogUHJvbWlzZTxFbnRlcnByaXNlQXNDb2RlPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkxvYWRFbnRlcnByaXNlQXNDb2RlKHN0YXRlKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTG9hZFVzZXJJbmZvKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5Mb2FkVXNlckxpY2Vuc2VJbmZvKHN0YXRlKTtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIFJlbG9hZEZlZWQoKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBpZiAoc3RhdGUuRmVlZENoZWNrKSB7XG4gICAgICAgICAgICBzdGF0ZS5GZWVkID0gc3RhdGUuRmVlZENoZWNrLkl0ZW1zO1xuXG4gICAgICAgICAgICBzdGF0ZS5GZWVkQWN0aW9ucyA9IHN0YXRlLkZlZWRDaGVjay5BY3Rpb25zO1xuXG4gICAgICAgICAgICBzdGF0ZS5GZWVkU291cmNlQ29udHJvbExvb2t1cHMgPVxuICAgICAgICAgICAgICAgIHN0YXRlLkZlZWRDaGVjay5Tb3VyY2VDb250cm9sTG9va3VwcztcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlLkZlZWRDaGVjayA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZUFwcGxpY2F0aW9uQXNDb2RlKFxuICAgICAgICByZXE6IFNhdmVBcHBsaWNhdGlvbkFzQ29kZUV2ZW50UmVxdWVzdFxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVNhdmVBcHBsaWNhdGlvbihyZXEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTYXZlREZTTW9kaWZpZXIoXG4gICAgICAgIHJlcTogU2F2ZURGU01vZGlmaWVyRXZlbnRSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlU2F2ZURGU01vZGlmaWVyKHJlcSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVFbnRlcnByaXNlQXNDb2RlKGVhYzogRW50ZXJwcmlzZUFzQ29kZSk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBlYWNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVFbnZpcm9ubWVudEFzQ29kZShcbiAgICAgICAgcmVxOiBTYXZlRW52aXJvbm1lbnRBc0NvZGVFdmVudFJlcXVlc3RcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVTYXZlRW52aXJvbm1lbnQocmVxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZVByb2plY3RBc0NvZGUoXG4gICAgICAgIHJlcTogU2F2ZVByb2plY3RBc0NvZGVFdmVudFJlcXVlc3RcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVTYXZlUHJvamVjdChyZXEuUHJvamVjdExvb2t1cCwgcmVxLlByb2plY3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZXRBY3RpdmVFbnRlcnByaXNlKGVudExvb2t1cDogYW55KTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucHJvamVjdFNlcnZpY2UuU2V0QWN0aXZlRW50ZXJwcmlzZShcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgZW50TG9va3VwXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNldENyZWF0aW5nUHJvamVjdChjcmVhdGluZ1Byb2plY3Q6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucHJvamVjdFNlcnZpY2UuU2V0Q3JlYXRpbmdQcm9qZWN0KGNyZWF0aW5nUHJvamVjdCk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZXRFZGl0UHJvamVjdFNldHRpbmdzKHByb2plY3RMb29rdXA6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TZXRFZGl0UHJvamVjdFNldHRpbmdzKFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBwcm9qZWN0TG9va3VwXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFN1Ym1pdEZlZWRFbnRyeShlbnRyeTogRmVlZEVudHJ5KTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuU3VibWl0RmVlZEVudHJ5KHN0YXRlLCBlbnRyeSk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVucGFja0xvd0NvZGVVbml0KFxuICAgICAgICByZXE6IFVucGFja0xvd0NvZGVVbml0UmVxdWVzdFxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbmZpcm0oXG4gICAgICAgICAgICAgICAgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bnBhY2sgYXBwbGljYXRpb24gJyR7cmVxLkFwcGxpY2F0aW9uTmFtZX0nIHdpdGggdmVyc2lvbiAnJHtyZXEuVmVyc2lvbn0nP2BcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuVW5wYWNrTG93Q29kZVVuaXQoXG4gICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgcmVxXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAgSGVscGVyc1xuICAgIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlQXBwbGljYXRpb24oXG4gICAgICAgIHJlcTogU2F2ZUFwcGxpY2F0aW9uQXNDb2RlRXZlbnRSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHNhdmVFYUM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICBFbnRlcnByaXNlTG9va3VwOiBzdGF0ZS5FYUMuRW50ZXJwcmlzZUxvb2t1cCxcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uczoge30sXG4gICAgICAgICAgICBQcm9qZWN0czoge30sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHJlcS5Qcm9qZWN0TG9va3VwKSB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1Byb2ogPSB7XG4gICAgICAgICAgICAgICAgW3JlcS5Qcm9qZWN0TG9va3VwXToge1xuICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkxvb2t1cHM6IFtyZXEuQXBwbGljYXRpb25Mb29rdXBdLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzYXZlRWFDLlByb2plY3RzID0gZXhpc3RpbmdQcm9qO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcS5BcHBsaWNhdGlvbikge1xuICAgICAgICAgICAgc2F2ZUVhQy5BcHBsaWNhdGlvbnNbcmVxLkFwcGxpY2F0aW9uTG9va3VwXSA9IHJlcS5BcHBsaWNhdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuU2F2ZUVudGVycHJpc2VBc0NvZGUoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIHNhdmVFYUNcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlU2F2ZURGU01vZGlmaWVyKFxuICAgICAgICByZXE6IFNhdmVERlNNb2RpZmllckV2ZW50UmVxdWVzdFxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzYXZlRWFDOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICBNb2RpZmllcnM6IHt9LFxuICAgICAgICAgICAgUHJvamVjdHM6IHt9LFxuICAgICAgICAgICAgQXBwbGljYXRpb25zOiB7fSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAocmVxLk1vZGlmaWVyKSB7XG4gICAgICAgICAgICBzYXZlRWFDLk1vZGlmaWVyc1tyZXEuTW9kaWZpZXJMb29rdXBzWzBdXSA9IHJlcS5Nb2RpZmllcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXEuUHJvamVjdExvb2t1cHMpIHtcbiAgICAgICAgICAgIHJlcS5Qcm9qZWN0TG9va3Vwcy5mb3JFYWNoKChsb29rdXApID0+IHtcbiAgICAgICAgICAgICAgICBzYXZlRWFDLlByb2plY3RzW2xvb2t1cF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIE1vZGlmaWVyTG9va3VwczogcmVxLk1vZGlmaWVyTG9va3VwcyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxLkFwcGxpY2F0aW9uTG9va3VwKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQVBQTE9va3VwOiAnLCByZXEuQXBwbGljYXRpb25Mb29rdXApO1xuICAgICAgICAgICAgc2F2ZUVhQy5BcHBsaWNhdGlvbnNbcmVxLkFwcGxpY2F0aW9uTG9va3VwXSA9IHtcbiAgICAgICAgICAgICAgICBNb2RpZmllckxvb2t1cHM6IHJlcS5Nb2RpZmllckxvb2t1cHMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coJ1NhdmUgbW9kIGVhYzogJywgc2F2ZUVhQyk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TYXZlRW50ZXJwcmlzZUFzQ29kZShcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgc2F2ZUVhQ1xuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlRW52aXJvbm1lbnQoXG4gICAgICAgIHJlcTogU2F2ZUVudmlyb25tZW50QXNDb2RlRXZlbnRSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHNhdmVFYUM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICBFbnRlcnByaXNlTG9va3VwOiBzdGF0ZT8uRWFDPy5FbnRlcnByaXNlTG9va3VwLFxuICAgICAgICAgICAgRGF0YVRva2Vuczoge30sXG4gICAgICAgICAgICBFbnZpcm9ubWVudHM6IHt9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChyZXEuRW52aXJvbm1lbnQpIHtcbiAgICAgICAgICAgIHNhdmVFYUMuRW52aXJvbm1lbnRzW3JlcS5FbnZpcm9ubWVudExvb2t1cF0gPSByZXEuRW52aXJvbm1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVxLkVudGVycHJpc2VEYXRhVG9rZW5zKSB7XG4gICAgICAgICAgICBzYXZlRWFDLkRhdGFUb2tlbnMgPSByZXEuRW50ZXJwcmlzZURhdGFUb2tlbnM7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBzYXZlRWFDXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNhdmVQcm9qZWN0KFxuICAgICAgICBwcm9qZWN0TG9va3VwOiBzdHJpbmcsXG4gICAgICAgIHByb2plY3Q6IEVhQ1Byb2plY3RBc0NvZGVcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBjb25zdCBwcm9qSG9zdHM6IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDSG9zdCB9ID0ge307XG5cbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIHByb2plY3Q/Lkhvc3RzPy5mb3JFYWNoKChob3N0OiBhbnkpID0+IHtcbiAgICAgICAgICAgIHByb2pIb3N0c1tob3N0XSA9IHN0YXRlLkVhQy5Ib3N0c1tob3N0XTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc2F2ZUVhQzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcbiAgICAgICAgICAgIEVudGVycHJpc2VMb29rdXA6IHN0YXRlLkVhQy5FbnRlcnByaXNlTG9va3VwLFxuICAgICAgICAgICAgRW50ZXJwcmlzZToge1xuICAgICAgICAgICAgICAgIC4uLnN0YXRlLkVhQy5FbnRlcnByaXNlLFxuICAgICAgICAgICAgICAgIFByaW1hcnlIb3N0OiBwcm9qZWN0LlByaW1hcnlIb3N0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIEhvc3RzOiBwcm9qSG9zdHMsXG4gICAgICAgICAgICAvLyBQcm92aWRlcnM6IHN0YXRlLkVhQy5Qcm92aWRlcnMsICAvLyAgVE9ETzogIFJlbW92ZSBhZnRlciBhbGwgcHJvdmlkZXJzIEFEQjJDJ3MgaGF2ZSBiZWVuIHVwZ3JhZGVkXG4gICAgICAgICAgICBQcm9qZWN0czoge30sXG4gICAgICAgIH07XG5cbiAgICAgICAgc2F2ZUVhQy5Qcm9qZWN0c1twcm9qZWN0TG9va3VwXSA9IHByb2plY3Q7XG5cbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3NhdmUgZWFjIHJlcXVlc3Q6ICcsIHNhdmVFYUMpO1xuXG4gICAgICAgIGxldCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBzYXZlRWFDXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5TZXRFZGl0UHJvamVjdFNldHRpbmdzKHByb2plY3RMb29rdXApO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cbn1cbiJdfQ==
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFjLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9lYWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFDSCxxQkFBcUIsR0FFeEIsTUFBTSxrQ0FBa0MsQ0FBQztBQWExQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7O0FBRW5ELE1BQU0sT0FBTyxpQ0FBaUM7Q0FNN0M7QUFFRCxNQUFNLE9BQU8sMkJBQTJCO0NBUXZDO0FBRUQsTUFBTSxPQUFPLGlDQUFpQztDQU03QztBQUVELE1BQU0sT0FBTyw2QkFBNkI7Q0FJekM7QUFLRCxNQUFNLE9BQU8sVUFBVTtJQWVuQixnQkFBZ0I7SUFDaEIsWUFDYyxjQUE4QixFQUM5QixJQUFnQjtRQURoQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUUxQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBbEJELGNBQWM7SUFDZCxJQUFXLG9CQUFvQjtRQUMzQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO0lBQy9DLENBQUM7SUFhRCxlQUFlO0lBQ1IsaUJBQWlCLENBQUMsUUFBa0I7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FDMUIsU0FBaUIsRUFDakIsT0FBZTtRQUVmLElBQ0ksT0FBTyxDQUFDLGdEQUFnRCxPQUFPLElBQUksQ0FBQyxFQUN0RTtZQUNFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0MsTUFBTSxHQUFHLEdBQXFCO2dCQUMxQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQjtnQkFDNUMsWUFBWSxFQUFFLEVBQUU7YUFDbkIsQ0FBQztZQUVGLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUc7Z0JBQzFCLFdBQVcsRUFBRSxFQUFFO2FBQ2xCLENBQUM7WUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQzdELEtBQUssRUFDTCxHQUFHLENBQ04sQ0FBQztZQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0IsQ0FDM0IsU0FBaUIsRUFDakIsT0FBZTtRQUVmLElBQ0ksT0FBTyxDQUNILG1EQUFtRCxPQUFPLElBQUksQ0FDakUsRUFDSDtZQUNFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFM0MsTUFBTSxHQUFHLEdBQXFCO2dCQUMxQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQjtnQkFDNUMsWUFBWSxFQUFFLEVBQUU7YUFDbkIsQ0FBQztZQUVGLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsR0FBRztnQkFDeEQsYUFBYSxFQUFFLEVBQUU7YUFDcEIsQ0FBQztZQUVGLEdBQUcsQ0FBQyxZQUFZLENBQ1osS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQzFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUVoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQzdELEtBQUssRUFDTCxHQUFHLENBQ04sQ0FBQztZQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQ3ZCLGNBQXNCLEVBQ3RCLFlBQW9CO1FBRXBCLElBQ0ksT0FBTyxDQUNILDZDQUE2QyxZQUFZLElBQUksQ0FDaEUsRUFDSDtZQUNFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFM0MsTUFBTSxHQUFHLEdBQXFCO2dCQUMxQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQjtnQkFDNUMsU0FBUyxFQUFFLEVBQUU7YUFDaEIsQ0FBQztZQUVGLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRW5DLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FDN0QsS0FBSyxFQUNMLEdBQUcsQ0FDTixDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsT0FBTyxNQUFNLENBQUM7U0FDakI7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FDdEIsYUFBcUIsRUFDckIsV0FBbUI7UUFFbkIsSUFDSSxPQUFPLENBQUMsNENBQTRDLFdBQVcsSUFBSSxDQUFDLEVBQ3RFO1lBQ0UsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUUzQyxNQUFNLEdBQUcsR0FBcUI7Z0JBQzFCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO2dCQUM1QyxRQUFRLEVBQUUsRUFBRTthQUNmLENBQUM7WUFFRixHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHO2dCQUMxQixPQUFPLEVBQUUsRUFBRTthQUNkLENBQUM7WUFFRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQzdELEtBQUssRUFDTCxHQUFHLENBQ04sQ0FBQztZQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLE9BQU8sTUFBTSxDQUFDO1NBQ2pCO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxtQkFBbUIsQ0FDNUIsU0FBaUIsRUFDakIsT0FBZTtRQUVmLElBQ0ksT0FBTyxDQUNILG1EQUFtRCxPQUFPLElBQUksQ0FDakUsRUFDSDtZQUNFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFM0MsTUFBTSxHQUFHLEdBQXFCO2dCQUMxQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQjtnQkFDNUMsWUFBWSxFQUFFLEVBQUU7YUFDbkIsQ0FBQztZQUVGLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsR0FBRztnQkFDeEQsT0FBTyxFQUFFLEVBQUU7YUFDZCxDQUFDO1lBRUYsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sQ0FDN0QsU0FBUyxDQUNaLEdBQUcsRUFBRSxDQUFDO1lBRVAsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUM3RCxLQUFLLEVBQ0wsR0FBRyxDQUNOLENBQUM7WUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QixPQUFPLE1BQU0sQ0FBQztTQUNqQjtJQUNMLENBQUM7SUFFRCwyRUFBMkU7SUFDM0UsZ0VBQWdFO0lBQ2hFLE1BQU07SUFFQyxLQUFLLENBQUMsb0JBQW9CO1FBQzdCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTSxLQUFLLENBQUMsd0JBQXdCLENBQ2pDLEdBQXFCO1FBRXJCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLHdCQUF3QixDQUM3RCxLQUFLLEVBQ0wsR0FBRyxDQUNOLENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sS0FBSyxDQUFDLG1CQUFtQjtRQUM1QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FDckIsSUFBWSxFQUNaLFFBQWdCLEVBQ2hCLFdBQW9CLEtBQUssRUFDekIsWUFBb0IsRUFBRTtRQUV0QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQ2pELElBQUksRUFDSixRQUFRLEVBQ1IsU0FBUyxFQUNULFFBQVEsRUFDUixLQUFLLENBQ1IsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTSwwQkFBMEIsQ0FBQyxZQUVqQztRQUdHLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQywwQkFBMEIsQ0FDekQsWUFBWSxFQUNaLEtBQUssQ0FDUixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0I7UUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUzQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sS0FBSyxDQUFDLG9CQUFvQjtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVk7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUzQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLFVBQVU7UUFDYixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTNDLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUNqQixLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBRW5DLEtBQUssQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFFNUMsS0FBSyxDQUFDLHdCQUF3QjtnQkFDMUIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQztTQUM1QztRQUVELEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxLQUFLLENBQUMscUJBQXFCLENBQzlCLEdBQXNDO1FBRXRDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0MsT0FBTyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FDeEIsR0FBZ0M7UUFFaEMsT0FBTyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sS0FBSyxDQUFDLG9CQUFvQixDQUFDLEdBQXFCO1FBQ25ELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUN6RCxLQUFLLEVBQ0wsR0FBRyxDQUNOLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sS0FBSyxDQUFDLHFCQUFxQixDQUM5QixHQUFzQztRQUV0QyxPQUFPLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxLQUFLLENBQUMsaUJBQWlCLENBQzFCLEdBQWtDO1FBRWxDLE9BQU8sTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxTQUFjO1FBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FDbEQsS0FBSyxFQUNMLFNBQVMsQ0FDWixDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxlQUF3QjtRQUNwRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTNDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxhQUFxQjtRQUNyRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FDM0QsS0FBSyxFQUNMLGFBQWEsQ0FDaEIsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQWdCO1FBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFM0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdkUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FDMUIsR0FBNkI7UUFFN0IsSUFDSSxPQUFPLENBQ0gsZ0RBQWdELEdBQUcsQ0FBQyxlQUFlLG1CQUFtQixHQUFHLENBQUMsT0FBTyxJQUFJLENBQ3hHLEVBQ0g7WUFDRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRTNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FDdEQsS0FBSyxFQUNMLEdBQUcsQ0FDTixDQUFDO1lBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsT0FBTyxNQUFNLENBQUM7U0FDakI7SUFDTCxDQUFDO0lBRUQsV0FBVztJQUNELEtBQUssQ0FBQyxxQkFBcUIsQ0FDakMsR0FBc0M7UUFFdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUzQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWhELE1BQU0sT0FBTyxHQUFxQjtZQUM5QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQjtZQUM1QyxZQUFZLEVBQUUsRUFBRTtZQUNoQixRQUFRLEVBQUUsRUFBRTtTQUNmLENBQUM7UUFFRixJQUFJLEdBQUcsQ0FBQyxhQUFhLEVBQUU7WUFDbkIsTUFBTSxZQUFZLEdBQUc7Z0JBQ2pCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFO29CQUNqQixrQkFBa0IsRUFBRSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDOUM7YUFDSixDQUFDO1lBRUYsT0FBTyxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7U0FDbkM7UUFFRCxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUU7WUFDakIsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO1NBQ2pFO1FBQ0QsT0FBTztRQUNQLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7U0FDM0QsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRVMsS0FBSyxDQUFDLHFCQUFxQixDQUNqQyxHQUFnQztRQUVoQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTNDLE1BQU0sT0FBTyxHQUFxQjtZQUM5QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLGdCQUFnQjtZQUM1QyxTQUFTLEVBQUUsRUFBRTtZQUNiLFFBQVEsRUFBRSxFQUFFO1lBQ1osWUFBWSxFQUFFLEVBQUU7U0FDbkIsQ0FBQztRQUVGLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRTtZQUNkLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDNUQ7UUFFRCxJQUFJLEdBQUcsQ0FBQyxjQUFjLEVBQUU7WUFDcEIsR0FBRyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDbEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRztvQkFDdkIsZUFBZSxFQUFFLEdBQUcsQ0FBQyxlQUFlO2lCQUN2QyxDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELElBQUksR0FBRyxDQUFDLGlCQUFpQixFQUFFO1lBQ3ZCLHFEQUFxRDtZQUNyRCxxQ0FBcUM7WUFDckMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRztnQkFDMUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxlQUFlO2FBQ3ZDLENBQUM7U0FDTDtRQUVELDBDQUEwQztRQUUxQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQ3pELEtBQUssRUFDTCxPQUFPLENBQ1YsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFUyxLQUFLLENBQUMscUJBQXFCLENBQ2pDLEdBQXNDO1FBRXRDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFM0MsTUFBTSxPQUFPLEdBQXFCO1lBQzlCLGdCQUFnQixFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsZ0JBQWdCO1lBQzlDLFVBQVUsRUFBRSxFQUFFO1lBQ2QsWUFBWSxFQUFFLEVBQUU7U0FDbkIsQ0FBQztRQUVGLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRTtZQUNqQixPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7U0FDakU7UUFFRCxJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRTtZQUMxQixPQUFPLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQztTQUNqRDtRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FDekQsS0FBSyxFQUNMLE9BQU8sQ0FDVixDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVTLEtBQUssQ0FBQyxpQkFBaUIsQ0FDN0IsYUFBcUIsRUFDckIsT0FBeUI7UUFFekIsTUFBTSxTQUFTLEdBQWtDLEVBQUUsQ0FBQztRQUVwRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDbEMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxPQUFPLEdBQXFCO1lBQzlCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO1lBQzVDLFVBQVUsRUFBRTtnQkFDUixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVTtnQkFDdkIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2FBQ25DO1lBQ0QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsb0dBQW9HO1lBQ3BHLFFBQVEsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUVGLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBRTFDLDhDQUE4QztRQUU5QyxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQ3ZELEtBQUssRUFDTCxPQUFPLENBQ1YsQ0FBQztRQUVGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDOzt1R0E3aEJRLFVBQVU7MkdBQVYsVUFBVSxjQUZQLE1BQU07MkZBRVQsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9qZWN0U2VydmljZSB9IGZyb20gJy4vcHJvamVjdC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgQXBwbGljYXRpb25zRmxvd1N0YXRlLFxuICAgIFVucGFja0xvd0NvZGVVbml0UmVxdWVzdCxcbn0gZnJvbSAnLi4vc3RhdGUvYXBwbGljYXRpb25zLWZsb3cuc3RhdGUnO1xuaW1wb3J0IHtcbiAgICBFYUNBcHBsaWNhdGlvbkFzQ29kZSxcbiAgICBFYUNEYXRhVG9rZW4sXG4gICAgRWFDREZTTW9kaWZpZXIsXG4gICAgRWFDRW52aXJvbm1lbnRBc0NvZGUsXG4gICAgRWFDSG9zdCxcbiAgICBFYUNQcm9qZWN0QXNDb2RlLFxuICAgIEVudGVycHJpc2VBc0NvZGUsXG59IGZyb20gJ0BzZW1hbnRpY2pzL2NvbW1vbic7XG5pbXBvcnQgeyBGZWVkRW50cnksIEZlZWRJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3VzZXItZmVlZC5tb2RlbCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmFzZVJlc3BvbnNlLCBTdGF0dXMgfSBmcm9tICdAbGN1L2NvbW1vbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNsYXNzIFNhdmVBcHBsaWNhdGlvbkFzQ29kZUV2ZW50UmVxdWVzdCB7XG4gICAgcHVibGljIEFwcGxpY2F0aW9uPzogRWFDQXBwbGljYXRpb25Bc0NvZGU7XG5cbiAgICBwdWJsaWMgQXBwbGljYXRpb25Mb29rdXA/OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgUHJvamVjdExvb2t1cD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNhdmVERlNNb2RpZmllckV2ZW50UmVxdWVzdCB7XG4gICAgcHVibGljIEFwcGxpY2F0aW9uTG9va3VwPzogc3RyaW5nO1xuXG4gICAgcHVibGljIE1vZGlmaWVyPzogRWFDREZTTW9kaWZpZXI7XG5cbiAgICBwdWJsaWMgTW9kaWZpZXJMb29rdXBzPzogQXJyYXk8c3RyaW5nPjtcblxuICAgIHB1YmxpYyBQcm9qZWN0TG9va3Vwcz86IEFycmF5PHN0cmluZz47XG59XG5cbmV4cG9ydCBjbGFzcyBTYXZlRW52aXJvbm1lbnRBc0NvZGVFdmVudFJlcXVlc3Qge1xuICAgIHB1YmxpYyBFbnRlcnByaXNlRGF0YVRva2Vucz86IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDRGF0YVRva2VuIH07XG5cbiAgICBwdWJsaWMgRW52aXJvbm1lbnQ/OiBFYUNFbnZpcm9ubWVudEFzQ29kZTtcblxuICAgIHB1YmxpYyBFbnZpcm9ubWVudExvb2t1cD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNhdmVQcm9qZWN0QXNDb2RlRXZlbnRSZXF1ZXN0IHtcbiAgICBwdWJsaWMgUHJvamVjdD86IEVhQ1Byb2plY3RBc0NvZGU7XG5cbiAgICBwdWJsaWMgUHJvamVjdExvb2t1cD86IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRWFDU2VydmljZSB7XG4gICAgLy9GaWVsZHNcbiAgICBwcm90ZWN0ZWQgc3RhdGVTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8QXBwbGljYXRpb25zRmxvd1N0YXRlPjtcblxuICAgIC8vICBQcm9wZXJ0aWVzXG4gICAgcHVibGljIGdldCBFZGl0aW5nUHJvamVjdExvb2t1cCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9qZWN0U2VydmljZS5FZGl0aW5nUHJvamVjdExvb2t1cDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IENyZWF0aW5nUHJvamVjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvamVjdFNlcnZpY2UuQ3JlYXRpbmdQcm9qZWN0O1xuICAgIH1cblxuICAgIHB1YmxpYyBTdGF0ZTogT2JzZXJ2YWJsZTxBcHBsaWNhdGlvbnNGbG93U3RhdGU+O1xuXG4gICAgLy8gIENvbnN0cnVjdG9yc1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgcHJvamVjdFNlcnZpY2U6IFByb2plY3RTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgaHR0cDogSHR0cENsaWVudFxuICAgICkge1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QobmV3IEFwcGxpY2F0aW9uc0Zsb3dTdGF0ZSgpKTtcbiAgICAgICAgdGhpcy5TdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8vICBBUEkgTWV0aG9kc1xuICAgIHB1YmxpYyBDaGVja1VzZXJGZWVkSXRlbShmZWVkSXRlbTogRmVlZEl0ZW0pOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldChmZWVkSXRlbS5SZWZyZXNoTGluayk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFwcGxpY2F0aW9uKFxuICAgICAgICBhcHBMb29rdXA6IHN0cmluZyxcbiAgICAgICAgYXBwTmFtZTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlybShgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBhcHBsaWNhdGlvbiAnJHthcHBOYW1lfSc/YClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCBlYWM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICAgICAgQXBwbGljYXRpb25zOiB7fSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGVhYy5BcHBsaWNhdGlvbnNbYXBwTG9va3VwXSA9IHtcbiAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbjoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVudGVycHJpc2VBc0NvZGVSZW1vdmFscyhcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBlYWNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRGV2T3BzQWN0aW9uKFxuICAgICAgICBkb2FMb29rdXA6IHN0cmluZyxcbiAgICAgICAgZG9hTmFtZTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlybShcbiAgICAgICAgICAgICAgICBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBCdWlsZCBQaXBlbGluZSAnJHtkb2FOYW1lfSc/YFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICAgICAgY29uc3QgZWFjOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgICAgIEVudGVycHJpc2VMb29rdXA6IHN0YXRlLkVhQy5FbnRlcnByaXNlTG9va3VwLFxuICAgICAgICAgICAgICAgIEVudmlyb25tZW50czoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlYWMuRW52aXJvbm1lbnRzW3N0YXRlLkVhQy5FbnRlcnByaXNlLlByaW1hcnlFbnZpcm9ubWVudF0gPSB7XG4gICAgICAgICAgICAgICAgRGV2T3BzQWN0aW9uczoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlYWMuRW52aXJvbm1lbnRzW1xuICAgICAgICAgICAgICAgIHN0YXRlLkVhQy5FbnRlcnByaXNlLlByaW1hcnlFbnZpcm9ubWVudFxuICAgICAgICAgICAgXS5EZXZPcHNBY3Rpb25zW2RvYUxvb2t1cF0gPSB7fTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5FbnRlcnByaXNlQXNDb2RlUmVtb3ZhbHMoXG4gICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgZWFjXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZU1vZGlmaWVyKFxuICAgICAgICBtb2RpZmllckxvb2t1cDogc3RyaW5nLFxuICAgICAgICBtb2RpZmllck5hbWU6IHN0cmluZ1xuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGNvbmZpcm0oXG4gICAgICAgICAgICAgICAgYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgTW9kaWZpZXIgJyR7bW9kaWZpZXJOYW1lfSc/YFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICAgICAgY29uc3QgZWFjOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgICAgIEVudGVycHJpc2VMb29rdXA6IHN0YXRlLkVhQy5FbnRlcnByaXNlTG9va3VwLFxuICAgICAgICAgICAgICAgIE1vZGlmaWVyczoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlYWMuTW9kaWZpZXJzW21vZGlmaWVyTG9va3VwXSA9IHt9O1xuXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVudGVycHJpc2VBc0NvZGVSZW1vdmFscyhcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBlYWNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlUHJvamVjdChcbiAgICAgICAgcHJvamVjdExvb2t1cDogc3RyaW5nLFxuICAgICAgICBwcm9qZWN0TmFtZTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlybShgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBQcm9qZWN0ICcke3Byb2plY3ROYW1lfSc/YClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGVhYzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcbiAgICAgICAgICAgICAgICBFbnRlcnByaXNlTG9va3VwOiBzdGF0ZS5FYUMuRW50ZXJwcmlzZUxvb2t1cCxcbiAgICAgICAgICAgICAgICBQcm9qZWN0czoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlYWMuUHJvamVjdHNbcHJvamVjdExvb2t1cF0gPSB7XG4gICAgICAgICAgICAgICAgUHJvamVjdDoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkVudGVycHJpc2VBc0NvZGVSZW1vdmFscyhcbiAgICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgICBlYWNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVTb3VyY2VDb250cm9sKFxuICAgICAgICBzcmNMb29rdXA6IHN0cmluZyxcbiAgICAgICAgc3JjTmFtZTogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uZmlybShcbiAgICAgICAgICAgICAgICBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBTb3VyY2UgQ29udHJvbCAnJHtzcmNOYW1lfSc/YFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICAgICAgY29uc3QgZWFjOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgICAgIEVudGVycHJpc2VMb29rdXA6IHN0YXRlLkVhQy5FbnRlcnByaXNlTG9va3VwLFxuICAgICAgICAgICAgICAgIEVudmlyb25tZW50czoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlYWMuRW52aXJvbm1lbnRzW3N0YXRlLkVhQy5FbnRlcnByaXNlLlByaW1hcnlFbnZpcm9ubWVudF0gPSB7XG4gICAgICAgICAgICAgICAgU291cmNlczoge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlYWMuRW52aXJvbm1lbnRzW3N0YXRlLkVhQy5FbnRlcnByaXNlLlByaW1hcnlFbnZpcm9ubWVudF0uU291cmNlc1tcbiAgICAgICAgICAgICAgICBzcmNMb29rdXBcbiAgICAgICAgICAgIF0gPSB7fTtcblxuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5FbnRlcnByaXNlQXNDb2RlUmVtb3ZhbHMoXG4gICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgZWFjXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0aGlzLmFwcHNGbG93RXZlbnRzU3ZjLkVuc3VyZVVzZXJFbnRlcnByaXNlRXZlbnQuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAvLyAgIGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuRW5zdXJlVXNlckVudGVycHJpc2UodGhpcy5TdGF0ZSk7XG4gICAgLy8gfSk7XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5zdXJlVXNlckVudGVycHJpc2UoKTogUHJvbWlzZTxCYXNlUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuRW5zdXJlVXNlckVudGVycHJpc2Uoc3RhdGUpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW50ZXJwcmlzZUFzQ29kZVJlbW92YWxzKFxuICAgICAgICBlYWM6IEVudGVycHJpc2VBc0NvZGVcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5FbnRlcnByaXNlQXNDb2RlUmVtb3ZhbHMoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIGVhY1xuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRBY3RpdmVFbnRlcnByaXNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5HZXRBY3RpdmVFbnRlcnByaXNlKHN0YXRlKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTG9hZFVzZXJGZWVkKFxuICAgICAgICBwYWdlOiBudW1iZXIsXG4gICAgICAgIHBhZ2VTaXplOiBudW1iZXIsXG4gICAgICAgIGZvckNoZWNrOiBib29sZWFuID0gZmFsc2UsXG4gICAgICAgIGZpbHRlclN0cjogc3RyaW5nID0gJydcbiAgICApOiBQcm9taXNlPEFycmF5PEZlZWRJdGVtPj4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5Mb2FkVXNlckZlZWQoXG4gICAgICAgICAgICBwYWdlLFxuICAgICAgICAgICAgcGFnZVNpemUsXG4gICAgICAgICAgICBmaWx0ZXJTdHIsXG4gICAgICAgICAgICBmb3JDaGVjayxcbiAgICAgICAgICAgIHN0YXRlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIEdlbmVyYXRlUm91dGVkQXBwbGljYXRpb25zKGFwcGxpY2F0aW9uczoge1xuICAgICAgICBbbG9va3VwOiBzdHJpbmddOiBFYUNBcHBsaWNhdGlvbkFzQ29kZTtcbiAgICB9KToge1xuICAgICAgICBbcm91dGU6IHN0cmluZ106IHsgW2xvb2t1cDogc3RyaW5nXTogRWFDQXBwbGljYXRpb25Bc0NvZGUgfTtcbiAgICB9IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMucHJvamVjdFNlcnZpY2UuR2VuZXJhdGVSb3V0ZWRBcHBsaWNhdGlvbnMoXG4gICAgICAgICAgICBhcHBsaWNhdGlvbnMsXG4gICAgICAgICAgICBzdGF0ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgSGFzVmFsaWRDb25uZWN0aW9uKCk6IFByb21pc2U8RW50ZXJwcmlzZUFzQ29kZT4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5IYXNWYWxpZENvbm5lY3Rpb24oc3RhdGUpO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RW50ZXJwcmlzZXMoKTogUHJvbWlzZTxBcnJheTxhbnk+PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLkxpc3RFbnRlcnByaXNlcyhzdGF0ZSk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExvYWRFbnRlcnByaXNlQXNDb2RlKCk6IFByb21pc2U8RW50ZXJwcmlzZUFzQ29kZT4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5Mb2FkRW50ZXJwcmlzZUFzQ29kZShzdGF0ZSk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExvYWRVc2VySW5mbygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuTG9hZFVzZXJMaWNlbnNlSW5mbyhzdGF0ZSk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBSZWxvYWRGZWVkKCkge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgaWYgKHN0YXRlLkZlZWRDaGVjaykge1xuICAgICAgICAgICAgc3RhdGUuRmVlZCA9IHN0YXRlLkZlZWRDaGVjay5JdGVtcztcblxuICAgICAgICAgICAgc3RhdGUuRmVlZEFjdGlvbnMgPSBzdGF0ZS5GZWVkQ2hlY2suQWN0aW9ucztcblxuICAgICAgICAgICAgc3RhdGUuRmVlZFNvdXJjZUNvbnRyb2xMb29rdXBzID1cbiAgICAgICAgICAgICAgICBzdGF0ZS5GZWVkQ2hlY2suU291cmNlQ29udHJvbExvb2t1cHM7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5GZWVkQ2hlY2sgPSBudWxsO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVBcHBsaWNhdGlvbkFzQ29kZShcbiAgICAgICAgcmVxOiBTYXZlQXBwbGljYXRpb25Bc0NvZGVFdmVudFJlcXVlc3RcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQ2FsbGluZyBTYXZlIEFwcCBhcyBDb2RlOiAnLCByZXEpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5oYW5kbGVTYXZlQXBwbGljYXRpb24ocmVxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZURGU01vZGlmaWVyKFxuICAgICAgICByZXE6IFNhdmVERlNNb2RpZmllckV2ZW50UmVxdWVzdFxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmhhbmRsZVNhdmVERlNNb2RpZmllcihyZXEpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTYXZlRW50ZXJwcmlzZUFzQ29kZShlYWM6IEVudGVycHJpc2VBc0NvZGUpOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdHVzID0gYXdhaXQgdGhpcy5wcm9qZWN0U2VydmljZS5TYXZlRW50ZXJwcmlzZUFzQ29kZShcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgZWFjXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTYXZlRW52aXJvbm1lbnRBc0NvZGUoXG4gICAgICAgIHJlcTogU2F2ZUVudmlyb25tZW50QXNDb2RlRXZlbnRSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlU2F2ZUVudmlyb25tZW50KHJlcSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVQcm9qZWN0QXNDb2RlKFxuICAgICAgICByZXE6IFNhdmVQcm9qZWN0QXNDb2RlRXZlbnRSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaGFuZGxlU2F2ZVByb2plY3QocmVxLlByb2plY3RMb29rdXAsIHJlcS5Qcm9qZWN0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2V0QWN0aXZlRW50ZXJwcmlzZShlbnRMb29rdXA6IGFueSk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnByb2plY3RTZXJ2aWNlLlNldEFjdGl2ZUVudGVycHJpc2UoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIGVudExvb2t1cFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZXRDcmVhdGluZ1Byb2plY3QoY3JlYXRpbmdQcm9qZWN0OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLnByb2plY3RTZXJ2aWNlLlNldENyZWF0aW5nUHJvamVjdChjcmVhdGluZ1Byb2plY3QpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2V0RWRpdFByb2plY3RTZXR0aW5ncyhwcm9qZWN0TG9va3VwOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuU2V0RWRpdFByb2plY3RTZXR0aW5ncyhcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgcHJvamVjdExvb2t1cFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTdWJtaXRGZWVkRW50cnkoZW50cnk6IEZlZWRFbnRyeSk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlN1Ym1pdEZlZWRFbnRyeShzdGF0ZSwgZW50cnkpO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVbnBhY2tMb3dDb2RlVW5pdChcbiAgICAgICAgcmVxOiBVbnBhY2tMb3dDb2RlVW5pdFJlcXVlc3RcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25maXJtKFxuICAgICAgICAgICAgICAgIGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdW5wYWNrIGFwcGxpY2F0aW9uICcke3JlcS5BcHBsaWNhdGlvbk5hbWV9JyB3aXRoIHZlcnNpb24gJyR7cmVxLlZlcnNpb259Jz9gXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlVucGFja0xvd0NvZGVVbml0KFxuICAgICAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgICAgIHJlcVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgICAgICByZXR1cm4gc3RhdHVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gIEhlbHBlcnNcbiAgICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlU2F2ZUFwcGxpY2F0aW9uKFxuICAgICAgICByZXE6IFNhdmVBcHBsaWNhdGlvbkFzQ29kZUV2ZW50UmVxdWVzdFxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcblxuICAgICAgICBjb25zb2xlLmxvZygnY2FsbGluZyBoYW5kbGUgU2F2ZSBBcHA6ICcsIHN0YXRlKTtcblxuICAgICAgICBjb25zdCBzYXZlRWFDOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICBBcHBsaWNhdGlvbnM6IHt9LFxuICAgICAgICAgICAgUHJvamVjdHM6IHt9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChyZXEuUHJvamVjdExvb2t1cCkge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdQcm9qID0ge1xuICAgICAgICAgICAgICAgIFtyZXEuUHJvamVjdExvb2t1cF06IHtcbiAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25Mb29rdXBzOiBbcmVxLkFwcGxpY2F0aW9uTG9va3VwXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgc2F2ZUVhQy5Qcm9qZWN0cyA9IGV4aXN0aW5nUHJvajtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXEuQXBwbGljYXRpb24pIHtcbiAgICAgICAgICAgIHNhdmVFYUMuQXBwbGljYXRpb25zW3JlcS5BcHBsaWNhdGlvbkxvb2t1cF0gPSByZXEuQXBwbGljYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy9hd2FpdFxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKHN0YXRlLCBzYXZlRWFDKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdTdGF0ZSBhZnRlciBzYXZlIGFwcDogJywgc3RhdGUpO1xuXG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RhdGUpO1xuICAgICAgICByZXR1cm4gc3RhdHVzWzBdO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBoYW5kbGVTYXZlREZTTW9kaWZpZXIoXG4gICAgICAgIHJlcTogU2F2ZURGU01vZGlmaWVyRXZlbnRSZXF1ZXN0XG4gICAgKTogUHJvbWlzZTxTdGF0dXM+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgIGNvbnN0IHNhdmVFYUM6IEVudGVycHJpc2VBc0NvZGUgPSB7XG4gICAgICAgICAgICBFbnRlcnByaXNlTG9va3VwOiBzdGF0ZS5FYUMuRW50ZXJwcmlzZUxvb2t1cCxcbiAgICAgICAgICAgIE1vZGlmaWVyczoge30sXG4gICAgICAgICAgICBQcm9qZWN0czoge30sXG4gICAgICAgICAgICBBcHBsaWNhdGlvbnM6IHt9LFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChyZXEuTW9kaWZpZXIpIHtcbiAgICAgICAgICAgIHNhdmVFYUMuTW9kaWZpZXJzW3JlcS5Nb2RpZmllckxvb2t1cHNbMF1dID0gcmVxLk1vZGlmaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcS5Qcm9qZWN0TG9va3Vwcykge1xuICAgICAgICAgICAgcmVxLlByb2plY3RMb29rdXBzLmZvckVhY2goKGxvb2t1cCkgPT4ge1xuICAgICAgICAgICAgICAgIHNhdmVFYUMuUHJvamVjdHNbbG9va3VwXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgTW9kaWZpZXJMb29rdXBzOiByZXEuTW9kaWZpZXJMb29rdXBzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXEuQXBwbGljYXRpb25Mb29rdXApIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdBUFBMT29rdXA6ICcsIHJlcS5BcHBsaWNhdGlvbkxvb2t1cCk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnc2F2ZUVBQzogJywgc2F2ZUVhQyk7XG4gICAgICAgICAgICBzYXZlRWFDLkFwcGxpY2F0aW9uc1tyZXEuQXBwbGljYXRpb25Mb29rdXBdID0ge1xuICAgICAgICAgICAgICAgIE1vZGlmaWVyTG9va3VwczogcmVxLk1vZGlmaWVyTG9va3VwcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25zb2xlLmxvZygnU2F2ZSBtb2QgZWFjOiAnLCBzYXZlRWFDKTtcblxuICAgICAgICBjb25zdCBzdGF0dXMgPSBhd2FpdCB0aGlzLnByb2plY3RTZXJ2aWNlLlNhdmVFbnRlcnByaXNlQXNDb2RlKFxuICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICBzYXZlRWFDXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZVNhdmVFbnZpcm9ubWVudChcbiAgICAgICAgcmVxOiBTYXZlRW52aXJvbm1lbnRBc0NvZGVFdmVudFJlcXVlc3RcbiAgICApOiBQcm9taXNlPFN0YXR1cz4ge1xuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgY29uc3Qgc2F2ZUVhQzogRW50ZXJwcmlzZUFzQ29kZSA9IHtcbiAgICAgICAgICAgIEVudGVycHJpc2VMb29rdXA6IHN0YXRlPy5FYUM/LkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICBEYXRhVG9rZW5zOiB7fSxcbiAgICAgICAgICAgIEVudmlyb25tZW50czoge30sXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHJlcS5FbnZpcm9ubWVudCkge1xuICAgICAgICAgICAgc2F2ZUVhQy5FbnZpcm9ubWVudHNbcmVxLkVudmlyb25tZW50TG9va3VwXSA9IHJlcS5FbnZpcm9ubWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXEuRW50ZXJwcmlzZURhdGFUb2tlbnMpIHtcbiAgICAgICAgICAgIHNhdmVFYUMuRGF0YVRva2VucyA9IHJlcS5FbnRlcnByaXNlRGF0YVRva2VucztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuU2F2ZUVudGVycHJpc2VBc0NvZGUoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIHNhdmVFYUNcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHN0YXR1cztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlU2F2ZVByb2plY3QoXG4gICAgICAgIHByb2plY3RMb29rdXA6IHN0cmluZyxcbiAgICAgICAgcHJvamVjdDogRWFDUHJvamVjdEFzQ29kZVxuICAgICk6IFByb21pc2U8U3RhdHVzPiB7XG4gICAgICAgIGNvbnN0IHByb2pIb3N0czogeyBbbG9va3VwOiBzdHJpbmddOiBFYUNIb3N0IH0gPSB7fTtcblxuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG5cbiAgICAgICAgcHJvamVjdD8uSG9zdHM/LmZvckVhY2goKGhvc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgcHJvakhvc3RzW2hvc3RdID0gc3RhdGUuRWFDLkhvc3RzW2hvc3RdO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzYXZlRWFDOiBFbnRlcnByaXNlQXNDb2RlID0ge1xuICAgICAgICAgICAgRW50ZXJwcmlzZUxvb2t1cDogc3RhdGUuRWFDLkVudGVycHJpc2VMb29rdXAsXG4gICAgICAgICAgICBFbnRlcnByaXNlOiB7XG4gICAgICAgICAgICAgICAgLi4uc3RhdGUuRWFDLkVudGVycHJpc2UsXG4gICAgICAgICAgICAgICAgUHJpbWFyeUhvc3Q6IHByb2plY3QuUHJpbWFyeUhvc3QsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgSG9zdHM6IHByb2pIb3N0cyxcbiAgICAgICAgICAgIC8vIFByb3ZpZGVyczogc3RhdGUuRWFDLlByb3ZpZGVycywgIC8vICBUT0RPOiAgUmVtb3ZlIGFmdGVyIGFsbCBwcm92aWRlcnMgQURCMkMncyBoYXZlIGJlZW4gdXBncmFkZWRcbiAgICAgICAgICAgIFByb2plY3RzOiB7fSxcbiAgICAgICAgfTtcblxuICAgICAgICBzYXZlRWFDLlByb2plY3RzW3Byb2plY3RMb29rdXBdID0gcHJvamVjdDtcblxuICAgICAgICAvLyBjb25zb2xlLmxvZygnc2F2ZSBlYWMgcmVxdWVzdDogJywgc2F2ZUVhQyk7XG5cbiAgICAgICAgbGV0IHN0YXR1cyA9IGF3YWl0IHRoaXMucHJvamVjdFNlcnZpY2UuU2F2ZUVudGVycHJpc2VBc0NvZGUoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIHNhdmVFYUNcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLlNldEVkaXRQcm9qZWN0U2V0dGluZ3MocHJvamVjdExvb2t1cCk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGF0ZSk7XG4gICAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxufVxuIl19
|