vc-create-dashboard 3.0.81 → 3.0.83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.mjs +76 -80
- package/esm2022/lib/create-dashboard-container/create-dashboard.component.mjs +652 -105
- package/esm2022/lib/create-dashboard-container/pipes/search-program.pipe.mjs +37 -0
- package/esm2022/lib/create-dashboard-container/program-list/pipes/check-selected-items.pipes.mjs +2 -2
- package/esm2022/lib/create-dashboard-container/program-list/program-list/program-list.component.mjs +17 -3
- package/esm2022/lib/create-dashboard-container/program-list/program-list.module.mjs +2 -2
- package/esm2022/lib/create-dashboard-container/services/create-dashboard.service.mjs +62 -4
- package/esm2022/lib/create-dashboard-container/utils/dashboard-edit.utils.mjs +181 -0
- package/esm2022/lib/ui-kit/dialog/dialog.component.mjs +8 -11
- package/fesm2022/vc-create-dashboard.mjs +1187 -396
- package/fesm2022/vc-create-dashboard.mjs.map +1 -1
- package/lib/create-dashboard-container/configure-widgets/configure-widgets/configure-widgets.component.d.ts +5 -0
- package/lib/create-dashboard-container/create-dashboard.component.d.ts +40 -17
- package/lib/create-dashboard-container/program-list/program-list/program-list.component.d.ts +1 -0
- package/lib/create-dashboard-container/program-list/program-list.module.d.ts +1 -1
- package/lib/create-dashboard-container/services/create-dashboard.service.d.ts +20 -1
- package/lib/create-dashboard-container/utils/dashboard-edit.utils.d.ts +16 -0
- package/package.json +1 -1
- package/esm2022/lib/create-dashboard-container/pipes/search-progra.pipe.mjs +0 -37
- /package/lib/create-dashboard-container/pipes/{search-progra.pipe.d.ts → search-program.pipe.d.ts} +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class SearchProgramPipe {
|
|
4
|
+
transform(items, ...args) {
|
|
5
|
+
let searchText = args[0];
|
|
6
|
+
const searchKey = args[1];
|
|
7
|
+
if (!items) {
|
|
8
|
+
return [];
|
|
9
|
+
}
|
|
10
|
+
if (!searchText) {
|
|
11
|
+
return items;
|
|
12
|
+
}
|
|
13
|
+
searchText = searchText?.toLowerCase();
|
|
14
|
+
if (items?.length) {
|
|
15
|
+
return items.filter((it) => {
|
|
16
|
+
if (!searchKey) {
|
|
17
|
+
return JSON.stringify(it)?.toLowerCase()?.includes(searchText);
|
|
18
|
+
}
|
|
19
|
+
else if (searchKey) {
|
|
20
|
+
return (it[searchKey]?.toString()?.toLowerCase()?.indexOf(searchText) > -1);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchProgramPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
29
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: SearchProgramPipe, name: "searchProgram" });
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchProgramPipe, decorators: [{
|
|
32
|
+
type: Pipe,
|
|
33
|
+
args: [{
|
|
34
|
+
name: 'searchProgram',
|
|
35
|
+
}]
|
|
36
|
+
}] });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXByb2dyYW0ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9waXBlcy9zZWFyY2gtcHJvZ3JhbS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUtwRCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFNBQVMsQ0FBQyxLQUFZLEVBQUUsR0FBRyxJQUFXO1FBQ3BDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELFVBQVUsR0FBRyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDdkMsSUFBSSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQ2pCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQU8sRUFBRSxFQUFFO2dCQUM5QixJQUFJLENBQUMsU0FBUyxFQUFFO29CQUNkLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ2hFO3FCQUFNLElBQUksU0FBUyxFQUFFO29CQUNwQixPQUFPLENBQ0wsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDbkUsQ0FBQztpQkFDSDtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDO3dHQXhCVSxpQkFBaUI7c0dBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFIN0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZUFBZTtpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3NlYXJjaFByb2dyYW0nLFxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hQcm9ncmFtUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oaXRlbXM6IGFueVtdLCAuLi5hcmdzOiBhbnlbXSk6IGFueVtdIHtcbiAgICBsZXQgc2VhcmNoVGV4dCA9IGFyZ3NbMF07XG4gICAgY29uc3Qgc2VhcmNoS2V5ID0gYXJnc1sxXTtcbiAgICBpZiAoIWl0ZW1zKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGlmICghc2VhcmNoVGV4dCkge1xuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICBzZWFyY2hUZXh0ID0gc2VhcmNoVGV4dD8udG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIXNlYXJjaEtleSkge1xuICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShpdCk/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKHNlYXJjaFRleHQpO1xuICAgICAgICB9IGVsc2UgaWYgKHNlYXJjaEtleSkge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBpdFtzZWFyY2hLZXldPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpPy5pbmRleE9mKHNlYXJjaFRleHQpID4gLTFcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufVxuIl19
|
package/esm2022/lib/create-dashboard-container/program-list/pipes/check-selected-items.pipes.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export class CheckSelectedItemsPipe {
|
|
4
4
|
transform(id, selectedItems) {
|
|
5
5
|
if (selectedItems) {
|
|
6
|
-
const selectedItem = selectedItems?.find((item) => item?.id === id);
|
|
6
|
+
const selectedItem = selectedItems?.find((item) => String(item?.id) === String(id));
|
|
7
7
|
if (selectedItem) {
|
|
8
8
|
return true;
|
|
9
9
|
}
|
|
@@ -20,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
20
20
|
name: 'checkSelectedItems'
|
|
21
21
|
}]
|
|
22
22
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stc2VsZWN0ZWQtaXRlbXMucGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcmVhdGUtZGFzaGJvYXJkL3NyYy9saWIvY3JlYXRlLWRhc2hib2FyZC1jb250YWluZXIvcHJvZ3JhbS1saXN0L3BpcGVzL2NoZWNrLXNlbGVjdGVkLWl0ZW1zLnBpcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUtwRCxNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLFNBQVMsQ0FBQyxFQUFVLEVBQUUsYUFBa0I7UUFDcEMsSUFBRyxhQUFhLEVBQUU7WUFDZCxNQUFNLFlBQVksR0FBRyxhQUFhLEVBQUUsSUFBSSxDQUN0QyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQy9DLENBQUM7WUFDRixJQUFHLFlBQVksRUFBRTtnQkFDYixPQUFPLElBQUksQ0FBQzthQUNmO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO3dHQVpRLHNCQUFzQjtzR0FBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQUhsQyxJQUFJO21CQUFDO29CQUNGLElBQUksRUFBRSxvQkFBb0I7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnY2hlY2tTZWxlY3RlZEl0ZW1zJ1xufSlcbmV4cG9ydCBjbGFzcyBDaGVja1NlbGVjdGVkSXRlbXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGlkOiBzdHJpbmcsIHNlbGVjdGVkSXRlbXM6IGFueSkge1xuICAgICAgICBpZihzZWxlY3RlZEl0ZW1zKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RlZEl0ZW1zPy5maW5kKFxuICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBTdHJpbmcoaXRlbT8uaWQpID09PSBTdHJpbmcoaWQpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn0iXX0=
|
package/esm2022/lib/create-dashboard-container/program-list/program-list/program-list.component.mjs
CHANGED
|
@@ -14,7 +14,7 @@ import * as i7 from "../../../ui-kit/popover/popover.component";
|
|
|
14
14
|
import * as i8 from "../../../ui-kit/popover/popover.directive";
|
|
15
15
|
import * as i9 from "../../../ui-kit/loaders/table-loader/table-loader.component";
|
|
16
16
|
import * as i10 from "../pipes/check-selected-items.pipes";
|
|
17
|
-
import * as i11 from "../../pipes/search-
|
|
17
|
+
import * as i11 from "../../pipes/search-program.pipe";
|
|
18
18
|
export class ProgramListComponent {
|
|
19
19
|
listUtils;
|
|
20
20
|
programListApiService;
|
|
@@ -68,6 +68,20 @@ export class ProgramListComponent {
|
|
|
68
68
|
ngOnChanges(changes) {
|
|
69
69
|
if (changes['items'] || changes['selectedItems']) {
|
|
70
70
|
this.paginateItems(this.items);
|
|
71
|
+
this.focusFirstProgramWithSelections();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
focusFirstProgramWithSelections() {
|
|
75
|
+
if (!this.items?.length || !this.selectedItems) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const programId = Object.keys(this.selectedItems).find((key) => (this.selectedItems[key] ?? []).length > 0);
|
|
79
|
+
if (!programId) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const program = this.items.find((item) => String(item?.id) === String(programId));
|
|
83
|
+
if (program && String(this.activeProgram?.id) !== String(program?.id)) {
|
|
84
|
+
this.viewCategory(program);
|
|
71
85
|
}
|
|
72
86
|
}
|
|
73
87
|
/** Fetch program list from API */
|
|
@@ -100,7 +114,7 @@ export class ProgramListComponent {
|
|
|
100
114
|
this.selectedItems[selectedObject].push(item);
|
|
101
115
|
}
|
|
102
116
|
else {
|
|
103
|
-
this.selectedItems[selectedObject] = this.selectedItems[this.activeProgram.id].filter((selected) => selected
|
|
117
|
+
this.selectedItems[selectedObject] = this.selectedItems[this.activeProgram.id].filter((selected) => String(selected?.id) !== String(item?.id));
|
|
104
118
|
}
|
|
105
119
|
this.itemsSelectedChange.emit(this.selectedItems);
|
|
106
120
|
}
|
|
@@ -277,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
277
291
|
}], itemsSelectedChange: [{
|
|
278
292
|
type: Output
|
|
279
293
|
}] } });
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9wcm9ncmFtLWxpc3QvcHJvZ3JhbS1saXN0L3Byb2dyYW0tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcmVhdGUtZGFzaGJvYXJkL3NyYy9saWIvY3JlYXRlLWRhc2hib2FyZC1jb250YWluZXIvcHJvZ3JhbS1saXN0L3Byb2dyYW0tbGlzdC9wcm9ncmFtLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEQsTUFBTSxlQUFlLENBQUM7QUFFakksT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUc1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBMEJ6RCxNQUFNLE9BQU8sb0JBQW9CO0lBOENyQjtJQUNBO0lBOUNWLGlEQUFpRDtJQUN4QyxLQUFLLEdBQVEsRUFBRSxDQUFDO0lBRXpCLDREQUE0RDtJQUNuRCxhQUFhLEdBQWUsRUFBRSxDQUFDO0lBRXhDLGlEQUFpRDtJQUN4QyxHQUFHLEdBQVEsRUFBRSxDQUFDO0lBRXZCLDZDQUE2QztJQUNuQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztJQUUvQywrQ0FBK0M7SUFDckMsY0FBYyxHQUFH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Q0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FDbkUsQ0FBQztRQUNGLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELHFEQUFxRDtJQUNyRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVTtRQUNyQixJQUFHLEtBQUssRUFBRTtZQUNSLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDakY7SUFDSCxDQUFDO3dHQTVSVSxvQkFBb0I7NEZBQXBCLG9CQUFvQiw4UUNqQ2pDLHF1T0E2SmM7OzRGRDVIRCxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCOzJJQU1uQixLQUFLO3NCQUFiLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxHQUFHO3NCQUFYLEtBQUs7Z0JBR0ksWUFBWTtzQkFBckIsTUFBTTtnQkFHRyxjQUFjO3NCQUF2QixNQUFNO2dCQUdHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBUZW1wbGF0ZVJlZiwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlzdEl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2xpc3QtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUFJPR1JBTV9UQUJMRV9IRUFERVJTLCBQQUdJTkFUSU9OX09QVElPTlMsIFBST0dSQU1fVFlQRV9MSVNULCBQUk9HUkFNX05PX0RBVEEgfSBmcm9tICcuLi9jb25zdGFudCc7XG5pbXBvcnQgeyBMaXN0VXRpbHNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbGlzdC11dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2dyYW1MaXN0QXBpU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Byb2dyYW0tbGlzdC1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFTU0VUUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hc3NldHMuY29uc3RhbnQnO1xuLyoqXG4gKiBBIHJldXNhYmxlIGNvbXBvbmVudCBmb3IgZGlzcGxheWluZyBhbmQgbWFuYWdpbmcgYSBsaXN0IG9mIHByb2dyYW1zIHdpdGggZmlsdGVyaW5nLCBwYWdpbmF0aW9uLCBhbmQgY2F0ZWdvcnkgdmlld2luZyBjYXBhYmlsaXRpZXMuXG4gKiBcbiAqIEZlYXR1cmVzOlxuICogLSBQcm9ncmFtIGxpc3Rpbmcgd2l0aCBwYWdpbmF0aW9uXG4gKiAtIFNlYXJjaCBmdW5jdGlvbmFsaXR5IHdpdGggZGVib3VuY2VcbiAqIC0gUHJvZ3JhbSB0eXBlIGZpbHRlcmluZ1xuICogLSBDYXRlZ29yeSB2aWV3aW5nIGZvciBzZWxlY3RlZCBwcm9ncmFtc1xuICogLSBNdWx0aS1zZWxlY3QgY2FwYWJpbGl0eVxuICogXG4gKiBAdGVtcGxhdGUgVCBFeHRlbmRzIExpc3RJdGVtIGludGVyZmFjZSBmb3IgdHlwZSBzYWZldHkgb2YgbGlzdCBpdGVtc1xuICovXG5cbmludGVyZmFjZSBDYXRlZ29yeSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcGFyZW50Pzogc3RyaW5nO1xuICBwYXJlbnRUcmVlPzogc3RyaW5nW107XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9ncmFtLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3JhbS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZ3JhbS1saXN0LmNvbXBvbmVudC5sZXNzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJvZ3JhbUxpc3RDb21wb25lbnQ8VCBleHRlbmRzIExpc3RJdGVtPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvKiogQXJyYXkgb2YgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBsaXN0ICovXG4gIEBJbnB1dCgpIGl0ZW1zOiBUW10gPSBbXTtcbiAgXG4gIC8qKiBPYmplY3QgY29udGFpbmluZyBzZWxlY3RlZCBpdGVtcywga2V5ZWQgYnkgcHJvZ3JhbSBJRCAqL1xuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnkgfCBudWxsID0ge307XG4gIFxuICAvKiogVVJMIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBBUEkgZW5kcG9pbnRzICovXG4gIEBJbnB1dCgpIHVybDogYW55ID0ge307XG5cbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBpdGVtIGlzIHNlbGVjdGVkICovXG4gIEBPdXRwdXQoKSBpdGVtU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIFxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgZGVzZWxlY3RlZCAqL1xuICBAT3V0cHV0KCkgaXRlbURlc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIFxuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzZWxlY3Rpb24gY2hhbmdlcyAqL1xuICBAT3V0cHV0KCkgaXRlbXNTZWxlY3RlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xuXG4gIHRhYmxlSGVhZGVycyA9IFBST0dSQU1fVEFCTEVfSEVBREVSUztcbiAgY3VycmVudFBhZ2UgPSBQQUdJTkFUSU9OX09QVElPTlMuREVGQVVMVF9DVVJSRU5UX1BBR0U7XG4gIHBhZ2VTaXplID0gUEFHSU5BVElPTl9PUFRJT05TLlBBR0VfU0laRTtcbiAgdG90YWxQYWdlcyA9IDA7XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgcGFnaW5hdGVkSXRlbXM6IFRbXSA9IFtdO1xuICBhY3RpdmVQcm9ncmFtOiBhbnkgfCBudWxsID0gbnVsbDtcbiAgY2F0ZWdvcnlMaXN0OiBhbnkgPSB7fTtcbiAgcHJvZ3JhbVR5cGVMaXN0OiBhbnlbXSA9IFBST0dSQU1fVFlQRV9MSVNUO1xuICBzZWxlY3RlZFByb2dyYW1UeXBlOiBhbnlbXSA9IFtdO1xuICBsb2FkZXJTdGF0ZTogYW55ID0ge1xuICAgIHByb2dyYW1MaXN0OiBmYWxzZSxcbiAgICBjYXRlZ29yeUxpc3Q6IGZhbHNlLFxuICB9O1xuICBhcHBsaWVkUHJvZ3JhbVR5cGU6IGFueVtdID0gW107XG4gIFBST0dSQU1fTk9fREFUQTogYW55ID0gUFJPR1JBTV9OT19EQVRBO1xuICBBU1NFVFM6IGFueSA9IEFTU0VUUztcbiAgcHJvZ3JhbUNhdGVnb3J5TGlzdDogYW55ID0ge307XG5cblxuICAvKiogU3ViamVjdCBmb3IgaGFuZGxpbmcgZGVib3VuY2VkIHNlYXJjaCAqL1xuICBwcml2YXRlIHNlYXJjaFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIFxuICAvKiogU3ViamVjdCBmb3IgY2xlYW51cCBzdWJzY3JpcHRpb25zICovXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbGlzdFV0aWxzOiBMaXN0VXRpbHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvZ3JhbUxpc3RBcGlTZXJ2aWNlOiBQcm9ncmFtTGlzdEFwaVNlcnZpY2VcbiAgKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBkZWJvdW5jZWQgc2VhcmNoXG4gICAgdGhpcy5zZWFyY2hTdWJqZWN0LnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucGVyZm9ybVNlYXJjaCgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEluaXRpYWxpemUgY29tcG9uZW50IGJ5IGZldGNoaW5nIHByb2dyYW0gbGlzdCAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdldFByb2dyYW1MaXN0KCk7XG4gIH1cblxuICAvKiogSGFuZGxlIGNoYW5nZXMgdG8gaW5wdXRzICovXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSB8fCBjaGFuZ2VzWydzZWxlY3RlZEl0ZW1zJ10pIHtcbiAgICAgIHRoaXMucGFnaW5hdGVJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICB9XG4gIH1cblxuICAvKiogRmV0Y2ggcHJvZ3JhbSBsaXN0IGZyb20gQVBJICovXG4gIGdldFByb2dyYW1MaXN0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGVyU3RhdGUucHJvZ3JhbUxpc3QgPSB0cnVlO1xuICAgIHRoaXMucHJvZ3JhbUxpc3RBcGlTZXJ2aWNlLmdldFByb2dyYW1MaXN0KHRoaXMudXJsLnByb2dyYW1MaXN0KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLml0ZW1zID0gQXJyYXkuaXNBcnJheShyZXM/LmRhdGE/LnByb2dyYW1zKSA/IHJlcy5kYXRhLnByb2dyYW1zIDogW107XG4gICAgICB0aGlzLmxvYWREYXRhKHRoaXMuaXRlbXMpO1xuICAgICAgdGhpcy5sb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgZGF0YSBhbmQgaW5pdGlhbGl6ZSBwYWdpbmF0aW9uXG4gICAqIEBwYXJhbSBkYXRhIEFycmF5IG9mIGl0ZW1zIHRvIGxvYWRcbiAgICovXG4gIGxvYWREYXRhKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZ29Ub1BhZ2UoMSwgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGl0ZW0gc2VsZWN0aW9uL2Rlc2VsZWN0aW9uXG4gICAqIEBwYXJhbSBldmVudCBTZWxlY3Rpb24gZXZlbnRcbiAgICogQHBhcmFtIGl0ZW0gSXRlbSBiZWluZyBzZWxlY3RlZC9kZXNlbGVjdGVkXG4gICAqL1xuICBzZWxlY3RJdGVtKGV2ZW50OiBhbnksIGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkT2JqZWN0ID0gIHRoaXMuYWN0aXZlUHJvZ3JhbS5pZC50b1N0cmluZygpO1xuICAgIGlmIChldmVudCkge1xuICAgICAgaWYoIXRoaXMuc2VsZWN0ZWRJdGVtc1tzZWxlY3RlZE9iamVjdF0pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zW3NlbGVjdGVkT2JqZWN0XSA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zW3NlbGVjdGVkT2JqZWN0XS5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNbc2VsZWN0ZWRPYmplY3RdID0gdGhpcy5zZWxlY3RlZEl0ZW1zW3RoaXMuYWN0aXZlUHJvZ3JhbS5pZF0uZmlsdGVyKChzZWxlY3RlZDogYW55KSA9PiBzZWxlY3RlZC5pZCAhPT0gaXRlbS5pZCk7XG4gICAgfVxuICAgIHRoaXMuaXRlbXNTZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gIH1cblxuICAvKipcbiAgICogRGVzZWxlY3QgYSBzcGVjaWZpYyBpdGVtXG4gICAqIEBwYXJhbSBpdGVtIEl0ZW0gdG8gZGVzZWxlY3RcbiAgICovXG4gIGRlc2VsZWN0SXRlbShpdGVtOiBUKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtc1NlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB0aGlzLml0ZW1EZXNlbGVjdGVkLmVtaXQoaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gaXRlbSBpcyBzZWxlY3RlZFxuICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIEJvb2xlYW4gaW5kaWNhdGluZyBpZiBpdGVtIGlzIHNlbGVjdGVkXG4gICAqL1xuICBpc1NlbGVjdGVkKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgdG8gc3BlY2lmaWMgcGFnZVxuICAgKiBAcGFyYW0gcGFnZSBQYWdlIG51bWJlciB0byBuYXZpZ2F0ZSB0b1xuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIHBhZ2luYXRlXG4gICAqL1xuICBnb1RvUGFnZShwYWdlOiBudW1iZXIsIGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMucGFnaW5hdGVJdGVtcyhkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYXJyYXkgb2YgcGFnZSBudW1iZXJzIGZvciBwYWdpbmF0aW9uXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHBhZ2UgbnVtYmVyc1xuICAgKi9cbiAgZ2V0UGFnZU51bWJlcnMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLmxpc3RVdGlscy5nZXRQYWdlTnVtYmVycyh0aGlzLml0ZW1zPy5sZW5ndGggPz8gMCwgdGhpcy5wYWdlU2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogUGFnaW5hdGUgaXRlbXMgYW5kIHVwZGF0ZSB2aWV3XG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gcGFnaW5hdGVcbiAgICovXG4gIHBhZ2luYXRlSXRlbXMoZGF0YTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YSA6IFtdO1xuICAgIHRoaXMudG90YWxQYWdlcyA9IE1hdGguY2VpbChpdGVtcy5sZW5ndGggLyB0aGlzLnBhZ2VTaXplKSB8fCAwO1xuICAgIHRoaXMucGFnaW5hdGVkSXRlbXMgPSBpdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBWaWV3IGNhdGVnb3JpZXMgZm9yIGEgc2VsZWN0ZWQgcHJvZ3JhbVxuICAgKiBAcGFyYW0gaXRlbSBQcm9ncmFtIHRvIHZpZXcgY2F0ZWdvcmllcyBmb3JcbiAgICovXG4gIHZpZXdDYXRlZ29yeShpdGVtPzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVQcm9ncmFtID0gaXRlbTtcbiAgICBpZighaXRlbSB8fCB0aGlzLmNhdGVnb3J5TGlzdFtpdGVtLmlkXSkgcmV0dXJuO1xuICAgIHRoaXMubG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0ID0gdHJ1ZTtcbiAgICB0aGlzLmNoZWNrUHJvZ3JhbUNhdGVnb3J5RXhpc3RzKGl0ZW0/LmlkKTtcbiAgfVxuXG4gIGNoZWNrUHJvZ3JhbUNhdGVnb3J5RXhpc3RzKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZih0aGlzLnByb2dyYW1DYXRlZ29yeUxpc3RbaWRdKSB7XG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdFtpZF0gPSB0aGlzLmFkZFBhcmVudFRyZWVUb0NhdGVnb3JpZXModGhpcy5wcm9ncmFtQ2F0ZWdvcnlMaXN0W2lkXSk7XG4gICAgICB0aGlzLmxvYWRlclN0YXRlLmNhdGVnb3J5TGlzdCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZldGNoUHJvZ3JhbUNhdGVnb3J5TGlzdChpZCk7XG4gIH1cblxuICBmZXRjaFByb2dyYW1DYXRlZ29yeUxpc3QoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IFVSTCA9IGAke3RoaXMudXJsLmNhdGVnb3J5TGlzdH0maWQ9JHtpZH1gO1xuICAgIHRoaXMucHJvZ3JhbUxpc3RBcGlTZXJ2aWNlLmdldFByb2dyYW1MaXN0KFVSTCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5wcm9ncmFtQ2F0ZWdvcnlMaXN0W2lkXSA9IHJlcz8uZGF0YT8uY2F0ZWdvcmllcyA/PyBbXTtcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0W2lkXSA9IHRoaXMuYWRkUGFyZW50VHJlZVRvQ2F0ZWdvcmllcyh0aGlzLnByb2dyYW1DYXRlZ29yeUxpc3RbaWRdKTtcbiAgICAgIHRoaXMubG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0ID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBBZGQgcGFyZW50IHRyZWUgaW5mb3JtYXRpb24gdG8gY2F0ZWdvcmllc1xuICAgKiBAcGFyYW0gY2F0ZWdvcmllcyBBcnJheSBvZiBjYXRlZ29yaWVzXG4gICAqIEByZXR1cm5zIENhdGVnb3JpZXMgd2l0aCBwYXJlbnQgdHJlZSBpbmZvcm1hdGlvblxuICAgKi9cbiAgYWRkUGFyZW50VHJlZVRvQ2F0ZWdvcmllcyhjYXRlZ29yaWVzOiBhbnlbXSk6IGFueVtdIHtcbiAgICBpZiAoIWNhdGVnb3JpZXM/Lmxlbmd0aCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgY2F0ZWdvcnlNYXAgPSBuZXcgTWFwKGNhdGVnb3JpZXMubWFwKGNhdGVnb3J5ID0+IFtjYXRlZ29yeS5pZCwgY2F0ZWdvcnldKSk7XG5cbiAgICBjb25zdCBnZXRQYXJlbnRUcmVlID0gKGNhdGVnb3J5OiBDYXRlZ29yeSk6IHN0cmluZ1tdID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudFRyZWU6IHN0cmluZ1tdID0gW107XG4gICAgICBsZXQgY3VycmVudFBhcmVudCA9IGNhdGVnb3J5LnBhcmVudDtcblxuICAgICAgd2hpbGUgKGN1cnJlbnRQYXJlbnQpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Q2F0ZWdvcnkgPSBjYXRlZ29yeU1hcC5nZXQoY3VycmVudFBhcmVudCk7XG4gICAgICAgIGlmICghcGFyZW50Q2F0ZWdvcnkpIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgcGFyZW50VHJlZS5wdXNoKHBhcmVudENhdGVnb3J5Lm5hbWUpO1xuICAgICAgICBjdXJyZW50UGFyZW50ID0gcGFyZW50Q2F0ZWdvcnkucGFyZW50O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyZW50VHJlZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNhdGVnb3JpZXMubWFwKGNhdGVnb3J5ID0+ICh7XG4gICAgICAuLi5jYXRlZ29yeSxcbiAgICAgIHBhcmVudFRyZWU6IGdldFBhcmVudFRyZWUoY2F0ZWdvcnkpXG4gICAgfSkpO1xuXG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHByb2dyYW0gdHlwZSBmaWx0ZXIgc2VsZWN0aW9uXG4gICAqIEBwYXJhbSBldmVudCBTZWxlY3Rpb24gZXZlbnRcbiAgICogQHBhcmFtIGl0ZW0gUHJvZ3JhbSB0eXBlIGJlaW5nIHNlbGVjdGVkL2Rlc2VsZWN0ZWRcbiAgICovXG4gIHNlbGVjdEZpbHRlcihldmVudDogYW55LCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZihldmVudCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlLnB1c2goaXRlbS5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtVHlwZSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtVHlwZS5maWx0ZXIoKHNlbGVjdGVkOiBhbnkpID0+IHNlbGVjdGVkICE9PSBpdGVtLmlkKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVzZXQgYWxsIGFwcGxpZWQgZmlsdGVycyAqL1xuICByZXNldEZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbVR5cGUgPSBbXTtcbiAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKCk7XG4gIH1cblxuICAvKiogQXBwbHkgc2VsZWN0ZWQgZmlsdGVycyB0byB0aGUgcHJvZ3JhbSBsaXN0ICovXG4gIG9uRmlsdGVyQ2hhbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKSA/IHRoaXMuaXRlbXMgOiBbXTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBpdGVtcy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlLmluY2x1ZGVzKGl0ZW0udHlwZSlcbiAgICAgICk7XG4gICAgICB0aGlzLnBhZ2luYXRlSXRlbXMoZmlsdGVyZWRJdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFnaW5hdGVJdGVtcyhpdGVtcyk7XG4gICAgfVxuXG4gICAgdGhpcy5hcHBsaWVkUHJvZ3JhbVR5cGUgPSB0aGlzLnByb2dyYW1UeXBlTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gdGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlLmluY2x1ZGVzKGl0ZW0uaWQpKTtcbiAgIHRoaXMuY2hlY2tDYXRlZ29yeUF2YWlsYmlsaXR5KCk7XG4gICAgXG4gIH1cbiBcbiAgY2hlY2tDYXRlZ29yeUF2YWlsYmlsaXR5KCk6IHZvaWQge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWRQcm9ncmFtQXZhaWxhYmxlID0gdGhpcy5wYWdpbmF0ZWRJdGVtcy5zb21lKChpdGVtOiBhbnkpID0+IGl0ZW0/LmlkID09PSB0aGlzLmFjdGl2ZVByb2dyYW0/LmlkKTtcbiAgICBpZighaXNTZWxlY3RlZFByb2dyYW1BdmFpbGFibGUpIHtcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0ID0gW107XG4gICAgICB0aGlzLmFjdGl2ZVByb2dyYW0gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUcmlnZ2VyIGRlYm91bmNlZCBzZWFyY2ggKi9cbiAgc2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHRoaXMuc2VhcmNoVGVybSk7XG4gIH1cblxuICAvKiogUGVyZm9ybSBzZWFyY2ggb24gaXRlbXMgKi9cbiAgcHJpdmF0ZSBwZXJmb3JtU2VhcmNoKCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKSA/IHRoaXMuaXRlbXMgOiBbXTtcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gaXRlbXMuZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICBpdGVtPy5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGVybT8udG9Mb3dlckNhc2UoKSlcbiAgICApO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMucGFnaW5hdGVJdGVtcyhmaWx0ZXJlZEl0ZW1zKTtcbiAgICB0aGlzLmNoZWNrQ2F0ZWdvcnlBdmFpbGJpbGl0eSgpO1xuICB9XG5cbiAgLyoqIENsZWFudXAgc3Vic2NyaXB0aW9ucyBvbiBjb21wb25lbnQgZGVzdHJ1Y3Rpb24gKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgY2xvc2VQb3BvdmVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZihldmVudCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlID0gdGhpcy5hcHBsaWVkUHJvZ3JhbVR5cGUubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0/LmlkKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkeW5hbWljLWxpc3QtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJsb2NrIHZ4LXctMTAwXCI+XG4gICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYjs8L2k+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIChrZXl1cCk9XCJzZWFyY2goKVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtbGlzdC1maWx0ZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJwcm9ncmFtVHlwZVBvcG92ZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhcHBsaWVkUHJvZ3JhbVR5cGUubGVuZ3RoID09PSAwOyBlbHNlIHNlbGVjdGVkVHlwZUZpbHRlclwiIGNsYXNzPVwiZmlsdGVyLXRleHRcIj5cbiAgICAgICAgU2VsZWN0IFByb2dyYW0gVHlwZVxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NlbGVjdGVkVHlwZUZpbHRlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cImFwcGxpZWRQcm9ncmFtVHlwZS5sZW5ndGhcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImFwcGxpZWRQcm9ncmFtVHlwZVswXT8ubmFtZVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3sgYXBwbGllZFByb2dyYW1UeXBlWzBdPy5uYW1lXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICBhcHBQb3BvdmVyIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJhcHBsaWVkUHJvZ3JhbVR5cGUubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgK3t7IGFwcGxpZWRQcm9ncmFtVHlwZS5sZW5ndGggLSAxIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbnMgZmlsdGVyLWljb25cIj4gJiN4ZTllODsgPC9pPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtbGlzdC10YWJsZVwiICpuZ0lmPVwiXG4gICAgICBwYWdpbmF0ZWRJdGVtcz8ubGVuZ3RoID4gMCB8fFxuICAgICAgICBsb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdCB8fCBsb2FkZXJTdGF0ZS5jYXRlZ29yeUxpc3Q7XG4gICAgICBlbHNlIGRlZmF1bHRUZW1wbGF0ZVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWxpc3QtaGVhZGVyIHZ4LWQtZmxleFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHRhYmxlSGVhZGVyc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LXctNTAgdngtcGwtMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXJpYWxObyB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICNcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyVGV4dCB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIHt7IGhlYWRlciB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWxpc3QtYm9keSB2eC1kLWZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LWNvbHVtblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRlclN0YXRlLnByb2dyYW1MaXN0OyBlbHNlIHByb2dyYW1MaXN0TG9hZGVyXCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgcGFnaW5hdGVkSXRlbXMgfCBzZWFyY2hQcm9ncmFtIDogc2VhcmNoVGVybSA6ICduYW1lJztcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgXCIgY2xhc3M9XCJsaXN0LXJvd1wiIFtjbGFzcy5zZWxlY3RlZF09XCJhY3RpdmVQcm9ncmFtPy5pZCA9PT0gaXRlbS5pZFwiIChjbGljayk9XCJ2aWV3Q2F0ZWdvcnkoaXRlbSlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWNvbHVtbiBzZXJpYWxcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNyTm9cIj57eyBpICsgMSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1jb2x1bW4gbmFtZVwiIFtjbGFzcy53aXRoLWNvdW50XT1cInNlbGVjdGVkSXRlbXNbaXRlbS5pZF0/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtaW5uZXIgdngtZnMtMTMgdngtcHItMlwiPnt7IGl0ZW0ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1jb2x1bW4gY291bnRcIiAqbmdJZj1cInNlbGVjdGVkSXRlbXNbaXRlbS5pZF0/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50LWJveCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC1saC00IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZEl0ZW1zW2l0ZW0uaWRdLmxlbmd0aCB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50LXRleHQgdngtZnMtMTEgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1saC00IHZ4LW1sLTJcIj5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXNbaXRlbS5pZF0ubGVuZ3RoID4gMSA/IFwiQ0FURUdPUklFU1wiIDogXCJDQVRFR09SWVwiXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBTRUxFQ1RFRFxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtY29sdW1uIGFjdGlvblwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYXJyb3cgdngtZnMtMTIgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiAmI3hlOTcwOyA8L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3Byb2dyYW1MaXN0TG9hZGVyPlxuICAgICAgICAgIDxhcHAtdGFibGUtbG9hZGVyPjwvYXBwLXRhYmxlLWxvYWRlcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LWNvbHVtblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAgICAgICAhbG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0ICYmICFsb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdDtcbiAgICAgICAgICAgIGVsc2UgY2F0ZWdvcnlMaXN0TG9hZGVyXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlxuICAgICAgICAgICAgICBjYXRlZ29yeUxpc3RbYWN0aXZlUHJvZ3JhbT8uaWRdPy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICBlbHNlIGRlZmF1bHRTdWJDYXRlZ29yeVRlbXBsYXRlXG4gICAgICAgICAgICBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LXJvdyB2eC1wbC0yIHZ4LXByLTJcIiAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBjYXRlZ29yeUxpc3RbYWN0aXZlUHJvZ3JhbT8uaWRdO1xuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggW3ZhbHVlXT1cIml0ZW0/LmlkXCIgW25nVmFsdWVdPVwiXG4gICAgICAgICAgICAgICAgICBpdGVtLmlkXG4gICAgICAgICAgICAgICAgICAgIHwgY2hlY2tTZWxlY3RlZEl0ZW1zIDogc2VsZWN0ZWRJdGVtc1thY3RpdmVQcm9ncmFtPy5pZF1cbiAgICAgICAgICAgICAgICBcIiAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RJdGVtKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1uYW1lIHZ4LWZzLTEzXCI+e3sgaXRlbT8ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndpdGhpbi1wYXJ0IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcHItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8ucGFyZW50VHJlZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndpdGhpbi1ib3ggdngtZnMtOSB2eC1mdy02MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1tci0yIHZ4LWxoLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICBXaXRoaW5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aXRoaW4tdmFsdWUgdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dFwiIFthcHBUb29sdGlwXT1cIml0ZW0/LnBhcmVudFRyZWU/LmpvaW4oJyA+ICcpXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtPy5wYXJlbnRUcmVlPy5qb2luKFwiID4gXCIpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFN1YkNhdGVnb3J5VGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLW5vLWRhdGFcIj5cbiAgICAgICAgICAgICAgPGFwcC1uby1kYXRhIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIiBbbm9EYXRhVGV4dF09XCJQUk9HUkFNX05PX0RBVEEuY2F0ZWdvcnlMaXN0XCI+PC9hcHAtbm8tZGF0YT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2NhdGVnb3J5TGlzdExvYWRlcj5cbiAgICAgICAgICA8YXBwLXRhYmxlLWxvYWRlcj48L2FwcC10YWJsZS1sb2FkZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LW5vLWRhdGEtY29udGFpbmVyXCI+XG4gICAgICA8YXBwLW5vLWRhdGEgW25vRGF0YUltYWdlXT1cIkFTU0VUUy5zZWFyY2hfZGF0YVwiIFtub0RhdGFUZXh0XT1cIlxuICAgICAgICAgIHNlYXJjaFRlcm0gPyBQUk9HUkFNX05PX0RBVEEuc2VhcmNoIDogUFJPR1JBTV9OT19EQVRBLnByb2dyYW1MaXN0XG4gICAgICAgIFwiPjwvYXBwLW5vLWRhdGE+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPGFwcC1wb3BvdmVyICNwcm9ncmFtVHlwZVBvcG92ZXIgKGNsb3NlUG9wb3ZlckV2ZW50KT1cImNsb3NlUG9wb3ZlcigkZXZlbnQpXCIgZG9udENsb3Nlb25DbGljaz1cInRydWVcIj5cbiAgPGRpdiBjbGFzcz1cIm5ldy1hY3Rpb24tbGlzdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwcm9ncmFtLXR5cGUtdGV4dCB2eC1mcy0xMSB2eC1mdy01MDAgdngtZ3JheS02MCB2eC1saC0xNiB2eC1wLTIgdngtdHQtdXBwZXJjYXNlXCI+XG4gICAgICBQcm9ncmFtIFR5cGU6XG4gICAgPC9kaXY+XG4gICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9ncmFtVHlwZUxpc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaXRlbVwiPlxuICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggW3ZhbHVlXT1cIml0ZW0uaWRcIiBbbmdWYWx1ZV09XCJzZWxlY3RlZFByb2dyYW1UeXBlLmluY2x1ZGVzKGl0ZW0uaWQpXCJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdEZpbHRlcigkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICB7eyBpdGVtPy5uYW1lIH19XG4gICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxkaXYgY2xhc3M9XCJwcm9ncmFtLXR5cGUtYm90dG9tIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtcHQtMyB2eC1wYi0zXCI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJyZXNldEZpbHRlcigpOyBwcm9ncmFtVHlwZVBvcG92ZXIuY2xvc2VQb3BvdmVyKCd0b3AnKVwiXG4gICAgICAgIGNsYXNzPVwicmVzZXQtYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LXBsLTIgdngtcHItMiB2eC1saC02XCI+XG4gICAgICAgIFJFU0VUXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uRmlsdGVyQ2hhbmdlKCk7IHByb2dyYW1UeXBlUG9wb3Zlci5jbG9zZVBvcG92ZXIoJ3RvcCcpXCJcbiAgICAgICAgY2xhc3M9XCJhcHBseS1idG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtcGwtMiB2eC1wci0yIHZ4LWxoLTZcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwic2VsZWN0ZWRQcm9ncmFtVHlwZT8ubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIEFQUExZXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2FwcC1wb3BvdmVyPiJdfQ==
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9wcm9ncmFtLWxpc3QvcHJvZ3JhbS1saXN0L3Byb2dyYW0tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcmVhdGUtZGFzaGJvYXJkL3NyYy9saWIvY3JlYXRlLWRhc2hib2FyZC1jb250YWluZXIvcHJvZ3JhbS1saXN0L3Byb2dyYW0tbGlzdC9wcm9ncmFtLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNEQsTUFBTSxlQUFlLENBQUM7QUFFakksT0FBTyxFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUc1RyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBMEJ6RCxNQUFNLE9BQU8sb0JBQW9CO0lBOENyQjtJQUNBO0lBOUNWLGlEQUFpRDtJQUN4QyxLQUFLLEdBQVEsRUFBRSxDQUFDO0lBRXpCLDREQUE0RDtJQUNuRCxhQUFhLEdBQWUsRUFBRSxDQUFDO0lBRXhDLGlEQUFpRDtJQUN4QyxHQUFHLEdBQVEsRUFBRSxDQUFDO0lBRXZCLDZDQUE2QztJQUNuQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztJQUUvQywrQ0FBK0M7SUFDckMsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7SUFFakQsK0NBQStDO0lBQ3JDLG1CQUFtQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFeEQsWUFBWSxHQUFHLHFCQUFxQixDQUFDO0lBQ3JDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztJQUN0RCxRQUFRLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDO0lBQ3hDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDZixVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLGNBQWMsR0FBUSxFQUFFLENBQUM7SUFDekIsYUFBYSxHQUFlLElBQUksQ0FBQztJQUNqQyxZQUFZLEdBQVEsRUFBRSxDQUFDO0lBQ3ZCLGVBQWUsR0FBVSxpQkFBaUIsQ0FBQztJQUMzQyxtQkFBbUIsR0FBVSxFQUFFLENBQUM7SUFDaEMsV0FBVyxHQUFRO1FBQ2pCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLFlBQVksRUFBRSxLQUFLO0tBQ3BCLENBQUM7SUFDRixrQkFBa0IsR0FBVSxFQUFFLENBQUM7SUFDL0IsZUFBZSxHQUFRLGVBQWUsQ0FBQztJQUN2QyxNQUFNLEdBQVEsTUFBTSxDQUFDO0lBQ3JCLG1CQUFtQixHQUFRLEVBQUUsQ0FBQztJQUc5Qiw0Q0FBNEM7SUFDcEMsYUFBYSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7SUFFOUMsd0NBQXdDO0lBQ2hDLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXZDLFlBQ1UsU0FBMkIsRUFDM0IscUJBQTRDO1FBRDVDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFFcEQsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixZQUFZLENBQUMsR0FBRyxDQUFDLEVBQ2pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3pCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsK0JBQStCO0lBQy9CLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRU8sK0JBQStCO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDOUMsT0FBTztTQUNSO1FBQ0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUNwRCxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQ3BELENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsT0FBTztTQUNSO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQzdCLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FDdEQsQ0FBQztRQUNGLElBQUksT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDckUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsY0FBYztRQUNaLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUNwQyxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDckYsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxJQUFTO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEtBQVUsRUFBRSxJQUFTO1FBQzlCLE1BQU0sY0FBYyxHQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pELElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDO2FBQ3pDO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekM7YUFBTTtZQUNYLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDckQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQ3RCLENBQUMsTUFBTSxDQUNOLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQzdELENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsSUFBTztRQUNsQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxJQUFPO1FBQ2hCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsSUFBWSxFQUFFLElBQVM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLElBQVM7UUFDckIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLElBQVU7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFBRSxPQUFPO1FBQy9DLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxFQUFVO1FBQ25DLElBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztZQUN0QyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELHdCQUF3QixDQUFDLEVBQVU7UUFDakMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdEOzs7O09BSUc7SUFDSCx5QkFBeUIsQ0FBQyxVQUFpQjtRQUN6QyxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU07WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVuQyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRixNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQWtCLEVBQVksRUFBRTtZQUNyRCxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7WUFDaEMsSUFBSSxhQUFhLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUVwQyxPQUFPLGFBQWEsRUFBRTtnQkFDcEIsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGNBQWM7b0JBQUUsTUFBTTtnQkFFM0IsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JDLGFBQWEsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO2FBQ3ZDO1lBRUQsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBRUYsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqQyxHQUFHLFFBQVE7WUFDWCxVQUFVLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQztTQUNwQyxDQUFDLENBQUMsQ0FBQztJQUVOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLEtBQVUsRUFBRSxJQUFTO1FBQ2hDLElBQUcsS0FBSyxFQUFFO1lBQ1IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEM7YUFBTTtZQUNMLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3JHO0lBQ0gsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxXQUFXO1FBQ1QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxjQUFjO1FBQ1osTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUMvQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDN0MsQ0FBQztZQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFFakMsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEgsSUFBRyxDQUFDLDBCQUEwQixFQUFFO1lBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELCtCQUErQjtJQUMvQixNQUFNO1FBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCw4QkFBOEI7SUFDdEIsYUFBYTtRQUNuQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUMvQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQ25FLENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxxREFBcUQ7SUFDckQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBRyxLQUFLLEVBQUU7WUFDUixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ2pGO0lBQ0gsQ0FBQzt3R0FuVFUsb0JBQW9COzRGQUFwQixvQkFBb0IsOFFDakNqQyxxdU9BNkpjOzs0RkQ1SEQsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjsySUFNbkIsS0FBSztzQkFBYixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csR0FBRztzQkFBWCxLQUFLO2dCQUdJLFlBQVk7c0JBQXJCLE1BQU07Z0JBR0csY0FBYztzQkFBdkIsTUFBTTtnQkFHRyxtQkFBbUI7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVGVtcGxhdGVSZWYsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9saXN0LWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBST0dSQU1fVEFCTEVfSEVBREVSUywgUEFHSU5BVElPTl9PUFRJT05TLCBQUk9HUkFNX1RZUEVfTElTVCwgUFJPR1JBTV9OT19EQVRBIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuaW1wb3J0IHsgTGlzdFV0aWxzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xpc3QtdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9ncmFtTGlzdEFwaVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9wcm9ncmFtLWxpc3QtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50Jztcbi8qKlxuICogQSByZXVzYWJsZSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgYW5kIG1hbmFnaW5nIGEgbGlzdCBvZiBwcm9ncmFtcyB3aXRoIGZpbHRlcmluZywgcGFnaW5hdGlvbiwgYW5kIGNhdGVnb3J5IHZpZXdpbmcgY2FwYWJpbGl0aWVzLlxuICogXG4gKiBGZWF0dXJlczpcbiAqIC0gUHJvZ3JhbSBsaXN0aW5nIHdpdGggcGFnaW5hdGlvblxuICogLSBTZWFyY2ggZnVuY3Rpb25hbGl0eSB3aXRoIGRlYm91bmNlXG4gKiAtIFByb2dyYW0gdHlwZSBmaWx0ZXJpbmdcbiAqIC0gQ2F0ZWdvcnkgdmlld2luZyBmb3Igc2VsZWN0ZWQgcHJvZ3JhbXNcbiAqIC0gTXVsdGktc2VsZWN0IGNhcGFiaWxpdHlcbiAqIFxuICogQHRlbXBsYXRlIFQgRXh0ZW5kcyBMaXN0SXRlbSBpbnRlcmZhY2UgZm9yIHR5cGUgc2FmZXR5IG9mIGxpc3QgaXRlbXNcbiAqL1xuXG5pbnRlcmZhY2UgQ2F0ZWdvcnkge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHBhcmVudD86IHN0cmluZztcbiAgcGFyZW50VHJlZT86IHN0cmluZ1tdO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZ3JhbS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2dyYW0tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2dyYW0tbGlzdC5jb21wb25lbnQubGVzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByb2dyYW1MaXN0Q29tcG9uZW50PFQgZXh0ZW5kcyBMaXN0SXRlbT4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgLyoqIEFycmF5IG9mIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgbGlzdCAqL1xuICBASW5wdXQoKSBpdGVtczogVFtdID0gW107XG4gIFxuICAvKiogT2JqZWN0IGNvbnRhaW5pbmcgc2VsZWN0ZWQgaXRlbXMsIGtleWVkIGJ5IHByb2dyYW0gSUQgKi9cbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtczogYW55IHwgbnVsbCA9IHt9O1xuICBcbiAgLyoqIFVSTCBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgQVBJIGVuZHBvaW50cyAqL1xuICBASW5wdXQoKSB1cmw6IGFueSA9IHt9O1xuXG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBzZWxlY3RlZCAqL1xuICBAT3V0cHV0KCkgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuICBcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhbiBpdGVtIGlzIGRlc2VsZWN0ZWQgKi9cbiAgQE91dHB1dCgpIGl0ZW1EZXNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuICBcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMgKi9cbiAgQE91dHB1dCgpIGl0ZW1zU2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcblxuICB0YWJsZUhlYWRlcnMgPSBQUk9HUkFNX1RBQkxFX0hFQURFUlM7XG4gIGN1cnJlbnRQYWdlID0gUEFHSU5BVElPTl9PUFRJT05TLkRFRkFVTFRfQ1VSUkVOVF9QQUdFO1xuICBwYWdlU2l6ZSA9IFBBR0lOQVRJT05fT1BUSU9OUy5QQUdFX1NJWkU7XG4gIHRvdGFsUGFnZXMgPSAwO1xuICBzZWFyY2hUZXJtID0gJyc7XG4gIHBhZ2luYXRlZEl0ZW1zOiBUW10gPSBbXTtcbiAgYWN0aXZlUHJvZ3JhbTogYW55IHwgbnVsbCA9IG51bGw7XG4gIGNhdGVnb3J5TGlzdDogYW55ID0ge307XG4gIHByb2dyYW1UeXBlTGlzdDogYW55W10gPSBQUk9HUkFNX1RZUEVfTElTVDtcbiAgc2VsZWN0ZWRQcm9ncmFtVHlwZTogYW55W10gPSBbXTtcbiAgbG9hZGVyU3RhdGU6IGFueSA9IHtcbiAgICBwcm9ncmFtTGlzdDogZmFsc2UsXG4gICAgY2F0ZWdvcnlMaXN0OiBmYWxzZSxcbiAgfTtcbiAgYXBwbGllZFByb2dyYW1UeXBlOiBhbnlbXSA9IFtdO1xuICBQUk9HUkFNX05PX0RBVEE6IGFueSA9IFBST0dSQU1fTk9fREFUQTtcbiAgQVNTRVRTOiBhbnkgPSBBU1NFVFM7XG4gIHByb2dyYW1DYXRlZ29yeUxpc3Q6IGFueSA9IHt9O1xuXG5cbiAgLyoqIFN1YmplY3QgZm9yIGhhbmRsaW5nIGRlYm91bmNlZCBzZWFyY2ggKi9cbiAgcHJpdmF0ZSBzZWFyY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBcbiAgLyoqIFN1YmplY3QgZm9yIGNsZWFudXAgc3Vic2NyaXB0aW9ucyAqL1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxpc3RVdGlsczogTGlzdFV0aWxzU2VydmljZSxcbiAgICBwcml2YXRlIHByb2dyYW1MaXN0QXBpU2VydmljZTogUHJvZ3JhbUxpc3RBcGlTZXJ2aWNlXG4gICkge1xuICAgIC8vIEluaXRpYWxpemUgZGVib3VuY2VkIHNlYXJjaFxuICAgIHRoaXMuc2VhcmNoU3ViamVjdC5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnBlcmZvcm1TZWFyY2goKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBJbml0aWFsaXplIGNvbXBvbmVudCBieSBmZXRjaGluZyBwcm9ncmFtIGxpc3QgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRQcm9ncmFtTGlzdCgpO1xuICB9XG5cbiAgLyoqIEhhbmRsZSBjaGFuZ2VzIHRvIGlucHV0cyAqL1xuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW1zJ10gfHwgY2hhbmdlc1snc2VsZWN0ZWRJdGVtcyddKSB7XG4gICAgICB0aGlzLnBhZ2luYXRlSXRlbXModGhpcy5pdGVtcyk7XG4gICAgICB0aGlzLmZvY3VzRmlyc3RQcm9ncmFtV2l0aFNlbGVjdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZvY3VzRmlyc3RQcm9ncmFtV2l0aFNlbGVjdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLml0ZW1zPy5sZW5ndGggfHwgIXRoaXMuc2VsZWN0ZWRJdGVtcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwcm9ncmFtSWQgPSBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkSXRlbXMpLmZpbmQoXG4gICAgICAoa2V5KSA9PiAodGhpcy5zZWxlY3RlZEl0ZW1zW2tleV0gPz8gW10pLmxlbmd0aCA+IDBcbiAgICApO1xuICAgIGlmICghcHJvZ3JhbUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHByb2dyYW0gPSB0aGlzLml0ZW1zLmZpbmQoXG4gICAgICAoaXRlbTogYW55KSA9PiBTdHJpbmcoaXRlbT8uaWQpID09PSBTdHJpbmcocHJvZ3JhbUlkKVxuICAgICk7XG4gICAgaWYgKHByb2dyYW0gJiYgU3RyaW5nKHRoaXMuYWN0aXZlUHJvZ3JhbT8uaWQpICE9PSBTdHJpbmcocHJvZ3JhbT8uaWQpKSB7XG4gICAgICB0aGlzLnZpZXdDYXRlZ29yeShwcm9ncmFtKTtcbiAgICB9XG4gIH1cblxuICAvKiogRmV0Y2ggcHJvZ3JhbSBsaXN0IGZyb20gQVBJICovXG4gIGdldFByb2dyYW1MaXN0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGVyU3RhdGUucHJvZ3JhbUxpc3QgPSB0cnVlO1xuICAgIHRoaXMucHJvZ3JhbUxpc3RBcGlTZXJ2aWNlLmdldFByb2dyYW1MaXN0KHRoaXMudXJsLnByb2dyYW1MaXN0KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLml0ZW1zID0gQXJyYXkuaXNBcnJheShyZXM/LmRhdGE/LnByb2dyYW1zKSA/IHJlcy5kYXRhLnByb2dyYW1zIDogW107XG4gICAgICB0aGlzLmxvYWREYXRhKHRoaXMuaXRlbXMpO1xuICAgICAgdGhpcy5sb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgZGF0YSBhbmQgaW5pdGlhbGl6ZSBwYWdpbmF0aW9uXG4gICAqIEBwYXJhbSBkYXRhIEFycmF5IG9mIGl0ZW1zIHRvIGxvYWRcbiAgICovXG4gIGxvYWREYXRhKGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZ29Ub1BhZ2UoMSwgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGl0ZW0gc2VsZWN0aW9uL2Rlc2VsZWN0aW9uXG4gICAqIEBwYXJhbSBldmVudCBTZWxlY3Rpb24gZXZlbnRcbiAgICogQHBhcmFtIGl0ZW0gSXRlbSBiZWluZyBzZWxlY3RlZC9kZXNlbGVjdGVkXG4gICAqL1xuICBzZWxlY3RJdGVtKGV2ZW50OiBhbnksIGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkT2JqZWN0ID0gIHRoaXMuYWN0aXZlUHJvZ3JhbS5pZC50b1N0cmluZygpO1xuICAgIGlmIChldmVudCkge1xuICAgICAgaWYoIXRoaXMuc2VsZWN0ZWRJdGVtc1tzZWxlY3RlZE9iamVjdF0pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zW3NlbGVjdGVkT2JqZWN0XSA9IFtdO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zW3NlbGVjdGVkT2JqZWN0XS5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXNbc2VsZWN0ZWRPYmplY3RdID0gdGhpcy5zZWxlY3RlZEl0ZW1zW1xuICAgICAgICB0aGlzLmFjdGl2ZVByb2dyYW0uaWRcbiAgICAgIF0uZmlsdGVyKFxuICAgICAgICAoc2VsZWN0ZWQ6IGFueSkgPT4gU3RyaW5nKHNlbGVjdGVkPy5pZCkgIT09IFN0cmluZyhpdGVtPy5pZClcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuaXRlbXNTZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gIH1cblxuICAvKipcbiAgICogRGVzZWxlY3QgYSBzcGVjaWZpYyBpdGVtXG4gICAqIEBwYXJhbSBpdGVtIEl0ZW0gdG8gZGVzZWxlY3RcbiAgICovXG4gIGRlc2VsZWN0SXRlbShpdGVtOiBUKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtc1NlbGVjdGVkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICB0aGlzLml0ZW1EZXNlbGVjdGVkLmVtaXQoaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gaXRlbSBpcyBzZWxlY3RlZFxuICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIEJvb2xlYW4gaW5kaWNhdGluZyBpZiBpdGVtIGlzIHNlbGVjdGVkXG4gICAqL1xuICBpc1NlbGVjdGVkKGl0ZW06IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgdG8gc3BlY2lmaWMgcGFnZVxuICAgKiBAcGFyYW0gcGFnZSBQYWdlIG51bWJlciB0byBuYXZpZ2F0ZSB0b1xuICAgKiBAcGFyYW0gZGF0YSBEYXRhIHRvIHBhZ2luYXRlXG4gICAqL1xuICBnb1RvUGFnZShwYWdlOiBudW1iZXIsIGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMucGFnaW5hdGVJdGVtcyhkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYXJyYXkgb2YgcGFnZSBudW1iZXJzIGZvciBwYWdpbmF0aW9uXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHBhZ2UgbnVtYmVyc1xuICAgKi9cbiAgZ2V0UGFnZU51bWJlcnMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLmxpc3RVdGlscy5nZXRQYWdlTnVtYmVycyh0aGlzLml0ZW1zPy5sZW5ndGggPz8gMCwgdGhpcy5wYWdlU2l6ZSk7XG4gIH1cblxuICAvKipcbiAgICogUGFnaW5hdGUgaXRlbXMgYW5kIHVwZGF0ZSB2aWV3XG4gICAqIEBwYXJhbSBkYXRhIERhdGEgdG8gcGFnaW5hdGVcbiAgICovXG4gIHBhZ2luYXRlSXRlbXMoZGF0YTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YSA6IFtdO1xuICAgIHRoaXMudG90YWxQYWdlcyA9IE1hdGguY2VpbChpdGVtcy5sZW5ndGggLyB0aGlzLnBhZ2VTaXplKSB8fCAwO1xuICAgIHRoaXMucGFnaW5hdGVkSXRlbXMgPSBpdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBWaWV3IGNhdGVnb3JpZXMgZm9yIGEgc2VsZWN0ZWQgcHJvZ3JhbVxuICAgKiBAcGFyYW0gaXRlbSBQcm9ncmFtIHRvIHZpZXcgY2F0ZWdvcmllcyBmb3JcbiAgICovXG4gIHZpZXdDYXRlZ29yeShpdGVtPzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVQcm9ncmFtID0gaXRlbTtcbiAgICBpZighaXRlbSB8fCB0aGlzLmNhdGVnb3J5TGlzdFtpdGVtLmlkXSkgcmV0dXJuO1xuICAgIHRoaXMubG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0ID0gdHJ1ZTtcbiAgICB0aGlzLmNoZWNrUHJvZ3JhbUNhdGVnb3J5RXhpc3RzKGl0ZW0/LmlkKTtcbiAgfVxuXG4gIGNoZWNrUHJvZ3JhbUNhdGVnb3J5RXhpc3RzKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZih0aGlzLnByb2dyYW1DYXRlZ29yeUxpc3RbaWRdKSB7XG4gICAgICB0aGlzLmNhdGVnb3J5TGlzdFtpZF0gPSB0aGlzLmFkZFBhcmVudFRyZWVUb0NhdGVnb3JpZXModGhpcy5wcm9ncmFtQ2F0ZWdvcnlMaXN0W2lkXSk7XG4gICAgICB0aGlzLmxvYWRlclN0YXRlLmNhdGVnb3J5TGlzdCA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZldGNoUHJvZ3JhbUNhdGVnb3J5TGlzdChpZCk7XG4gIH1cblxuICBmZXRjaFByb2dyYW1DYXRlZ29yeUxpc3QoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IFVSTCA9IGAke3RoaXMudXJsLmNhdGVnb3J5TGlzdH0maWQ9JHtpZH1gO1xuICAgIHRoaXMucHJvZ3JhbUxpc3RBcGlTZXJ2aWNlLmdldFByb2dyYW1MaXN0KFVSTCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5wcm9ncmFtQ2F0ZWdvcnlMaXN0W2lkXSA9IHJlcz8uZGF0YT8uY2F0ZWdvcmllcyA/PyBbXTtcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0W2lkXSA9IHRoaXMuYWRkUGFyZW50VHJlZVRvQ2F0ZWdvcmllcyh0aGlzLnByb2dyYW1DYXRlZ29yeUxpc3RbaWRdKTtcbiAgICAgIHRoaXMubG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0ID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBBZGQgcGFyZW50IHRyZWUgaW5mb3JtYXRpb24gdG8gY2F0ZWdvcmllc1xuICAgKiBAcGFyYW0gY2F0ZWdvcmllcyBBcnJheSBvZiBjYXRlZ29yaWVzXG4gICAqIEByZXR1cm5zIENhdGVnb3JpZXMgd2l0aCBwYXJlbnQgdHJlZSBpbmZvcm1hdGlvblxuICAgKi9cbiAgYWRkUGFyZW50VHJlZVRvQ2F0ZWdvcmllcyhjYXRlZ29yaWVzOiBhbnlbXSk6IGFueVtdIHtcbiAgICBpZiAoIWNhdGVnb3JpZXM/Lmxlbmd0aCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgY2F0ZWdvcnlNYXAgPSBuZXcgTWFwKGNhdGVnb3JpZXMubWFwKGNhdGVnb3J5ID0+IFtjYXRlZ29yeS5pZCwgY2F0ZWdvcnldKSk7XG5cbiAgICBjb25zdCBnZXRQYXJlbnRUcmVlID0gKGNhdGVnb3J5OiBDYXRlZ29yeSk6IHN0cmluZ1tdID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudFRyZWU6IHN0cmluZ1tdID0gW107XG4gICAgICBsZXQgY3VycmVudFBhcmVudCA9IGNhdGVnb3J5LnBhcmVudDtcblxuICAgICAgd2hpbGUgKGN1cnJlbnRQYXJlbnQpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Q2F0ZWdvcnkgPSBjYXRlZ29yeU1hcC5nZXQoY3VycmVudFBhcmVudCk7XG4gICAgICAgIGlmICghcGFyZW50Q2F0ZWdvcnkpIGJyZWFrO1xuICAgICAgICBcbiAgICAgICAgcGFyZW50VHJlZS5wdXNoKHBhcmVudENhdGVnb3J5Lm5hbWUpO1xuICAgICAgICBjdXJyZW50UGFyZW50ID0gcGFyZW50Q2F0ZWdvcnkucGFyZW50O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGFyZW50VHJlZTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNhdGVnb3JpZXMubWFwKGNhdGVnb3J5ID0+ICh7XG4gICAgICAuLi5jYXRlZ29yeSxcbiAgICAgIHBhcmVudFRyZWU6IGdldFBhcmVudFRyZWUoY2F0ZWdvcnkpXG4gICAgfSkpO1xuXG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHByb2dyYW0gdHlwZSBmaWx0ZXIgc2VsZWN0aW9uXG4gICAqIEBwYXJhbSBldmVudCBTZWxlY3Rpb24gZXZlbnRcbiAgICogQHBhcmFtIGl0ZW0gUHJvZ3JhbSB0eXBlIGJlaW5nIHNlbGVjdGVkL2Rlc2VsZWN0ZWRcbiAgICovXG4gIHNlbGVjdEZpbHRlcihldmVudDogYW55LCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICBpZihldmVudCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlLnB1c2goaXRlbS5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm9ncmFtVHlwZSA9IHRoaXMuc2VsZWN0ZWRQcm9ncmFtVHlwZS5maWx0ZXIoKHNlbGVjdGVkOiBhbnkpID0+IHNlbGVjdGVkICE9PSBpdGVtLmlkKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmVzZXQgYWxsIGFwcGxpZWQgZmlsdGVycyAqL1xuICByZXNldEZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkUHJvZ3JhbVR5cGUgPSBbXTtcbiAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKCk7XG4gIH1cblxuICAvKiogQXBwbHkgc2VsZWN0ZWQgZmlsdGVycyB0byB0aGUgcHJvZ3JhbSBsaXN0ICovXG4gIG9uRmlsdGVyQ2hhbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKSA/IHRoaXMuaXRlbXMgOiBbXTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBpdGVtcy5maWx0ZXIoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlLmluY2x1ZGVzKGl0ZW0udHlwZSlcbiAgICAgICk7XG4gICAgICB0aGlzLnBhZ2luYXRlSXRlbXMoZmlsdGVyZWRJdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFnaW5hdGVJdGVtcyhpdGVtcyk7XG4gICAgfVxuXG4gICAgdGhpcy5hcHBsaWVkUHJvZ3JhbVR5cGUgPSB0aGlzLnByb2dyYW1UeXBlTGlzdC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gdGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlLmluY2x1ZGVzKGl0ZW0uaWQpKTtcbiAgIHRoaXMuY2hlY2tDYXRlZ29yeUF2YWlsYmlsaXR5KCk7XG4gICAgXG4gIH1cbiBcbiAgY2hlY2tDYXRlZ29yeUF2YWlsYmlsaXR5KCk6IHZvaWQge1xuICAgIGNvbnN0IGlzU2VsZWN0ZWRQcm9ncmFtQXZhaWxhYmxlID0gdGhpcy5wYWdpbmF0ZWRJdGVtcy5zb21lKChpdGVtOiBhbnkpID0+IGl0ZW0/LmlkID09PSB0aGlzLmFjdGl2ZVByb2dyYW0/LmlkKTtcbiAgICBpZighaXNTZWxlY3RlZFByb2dyYW1BdmFpbGFibGUpIHtcbiAgICAgIHRoaXMuY2F0ZWdvcnlMaXN0ID0gW107XG4gICAgICB0aGlzLmFjdGl2ZVByb2dyYW0gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUcmlnZ2VyIGRlYm91bmNlZCBzZWFyY2ggKi9cbiAgc2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHRoaXMuc2VhcmNoVGVybSk7XG4gIH1cblxuICAvKiogUGVyZm9ybSBzZWFyY2ggb24gaXRlbXMgKi9cbiAgcHJpdmF0ZSBwZXJmb3JtU2VhcmNoKCk6IHZvaWQge1xuICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuaXNBcnJheSh0aGlzLml0ZW1zKSA/IHRoaXMuaXRlbXMgOiBbXTtcbiAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gaXRlbXMuZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgICBpdGVtPy5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGVybT8udG9Mb3dlckNhc2UoKSlcbiAgICApO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMucGFnaW5hdGVJdGVtcyhmaWx0ZXJlZEl0ZW1zKTtcbiAgICB0aGlzLmNoZWNrQ2F0ZWdvcnlBdmFpbGJpbGl0eSgpO1xuICB9XG5cbiAgLyoqIENsZWFudXAgc3Vic2NyaXB0aW9ucyBvbiBjb21wb25lbnQgZGVzdHJ1Y3Rpb24gKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgY2xvc2VQb3BvdmVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZihldmVudCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFByb2dyYW1UeXBlID0gdGhpcy5hcHBsaWVkUHJvZ3JhbVR5cGUubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0/LmlkKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkeW5hbWljLWxpc3QtY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJsb2NrIHZ4LXctMTAwXCI+XG4gICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYjs8L2k+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIChrZXl1cCk9XCJzZWFyY2goKVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtbGlzdC1maWx0ZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJwcm9ncmFtVHlwZVBvcG92ZXIucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhcHBsaWVkUHJvZ3JhbVR5cGUubGVuZ3RoID09PSAwOyBlbHNlIHNlbGVjdGVkVHlwZUZpbHRlclwiIGNsYXNzPVwiZmlsdGVyLXRleHRcIj5cbiAgICAgICAgU2VsZWN0IFByb2dyYW0gVHlwZVxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NlbGVjdGVkVHlwZUZpbHRlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIiAqbmdJZj1cImFwcGxpZWRQcm9ncmFtVHlwZS5sZW5ndGhcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiIFthcHBUb29sdGlwXT1cImFwcGxpZWRQcm9ncmFtVHlwZVswXT8ubmFtZVwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+e3sgYXBwbGllZFByb2dyYW1UeXBlWzBdPy5uYW1lXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICBhcHBQb3BvdmVyIHBsYWNlbWVudD1cInJpZ2h0XCIgKm5nSWY9XCJhcHBsaWVkUHJvZ3JhbVR5cGUubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgK3t7IGFwcGxpZWRQcm9ncmFtVHlwZS5sZW5ndGggLSAxIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbnMgZmlsdGVyLWljb25cIj4gJiN4ZTllODsgPC9pPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImR5bmFtaWMtbGlzdC10YWJsZVwiICpuZ0lmPVwiXG4gICAgICBwYWdpbmF0ZWRJdGVtcz8ubGVuZ3RoID4gMCB8fFxuICAgICAgICBsb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdCB8fCBsb2FkZXJTdGF0ZS5jYXRlZ29yeUxpc3Q7XG4gICAgICBlbHNlIGRlZmF1bHRUZW1wbGF0ZVxuICAgIFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWxpc3QtaGVhZGVyIHZ4LWQtZmxleFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHRhYmxlSGVhZGVyc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LXctNTAgdngtcGwtMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZXJpYWxObyB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICNcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyVGV4dCB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIHt7IGhlYWRlciB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWxpc3QtYm9keSB2eC1kLWZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LWNvbHVtblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvYWRlclN0YXRlLnByb2dyYW1MaXN0OyBlbHNlIHByb2dyYW1MaXN0TG9hZGVyXCI+XG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgcGFnaW5hdGVkSXRlbXMgfCBzZWFyY2hQcm9ncmFtIDogc2VhcmNoVGVybSA6ICduYW1lJztcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgXCIgY2xhc3M9XCJsaXN0LXJvd1wiIFtjbGFzcy5zZWxlY3RlZF09XCJhY3RpdmVQcm9ncmFtPy5pZCA9PT0gaXRlbS5pZFwiIChjbGljayk9XCJ2aWV3Q2F0ZWdvcnkoaXRlbSlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWNvbHVtbiBzZXJpYWxcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNyTm9cIj57eyBpICsgMSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1jb2x1bW4gbmFtZVwiIFtjbGFzcy53aXRoLWNvdW50XT1cInNlbGVjdGVkSXRlbXNbaXRlbS5pZF0/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtaW5uZXIgdngtZnMtMTMgdngtcHItMlwiPnt7IGl0ZW0ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1jb2x1bW4gY291bnRcIiAqbmdJZj1cInNlbGVjdGVkSXRlbXNbaXRlbS5pZF0/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50LWJveCB2eC1mcy05IHZ4LWZ3LTYwMCB2eC1saC00IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZEl0ZW1zW2l0ZW0uaWRdLmxlbmd0aCB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50LXRleHQgdngtZnMtMTEgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1saC00IHZ4LW1sLTJcIj5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXNbaXRlbS5pZF0ubGVuZ3RoID4gMSA/IFwiQ0FURUdPUklFU1wiIDogXCJDQVRFR09SWVwiXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBTRUxFQ1RFRFxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtY29sdW1uIGFjdGlvblwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYXJyb3cgdngtZnMtMTIgdngtcC0wIHZ4LW0tMCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiAmI3hlOTcwOyA8L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3Byb2dyYW1MaXN0TG9hZGVyPlxuICAgICAgICAgIDxhcHAtdGFibGUtbG9hZGVyPjwvYXBwLXRhYmxlLWxvYWRlcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LWNvbHVtblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAgICAgICAhbG9hZGVyU3RhdGUuY2F0ZWdvcnlMaXN0ICYmICFsb2FkZXJTdGF0ZS5wcm9ncmFtTGlzdDtcbiAgICAgICAgICAgIGVsc2UgY2F0ZWdvcnlMaXN0TG9hZGVyXG4gICAgICAgICAgXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlxuICAgICAgICAgICAgICBjYXRlZ29yeUxpc3RbYWN0aXZlUHJvZ3JhbT8uaWRdPy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICBlbHNlIGRlZmF1bHRTdWJDYXRlZ29yeVRlbXBsYXRlXG4gICAgICAgICAgICBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LXJvdyB2eC1wbC0yIHZ4LXByLTJcIiAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBjYXRlZ29yeUxpc3RbYWN0aXZlUHJvZ3JhbT8uaWRdO1xuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggW3ZhbHVlXT1cIml0ZW0/LmlkXCIgW25nVmFsdWVdPVwiXG4gICAgICAgICAgICAgICAgICBpdGVtLmlkXG4gICAgICAgICAgICAgICAgICAgIHwgY2hlY2tTZWxlY3RlZEl0ZW1zIDogc2VsZWN0ZWRJdGVtc1thY3RpdmVQcm9ncmFtPy5pZF1cbiAgICAgICAgICAgICAgICBcIiAobmdWYWx1ZUNoYW5nZSk9XCJzZWxlY3RJdGVtKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1uYW1lIHZ4LWZzLTEzXCI+e3sgaXRlbT8ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndpdGhpbi1wYXJ0IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcHItM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8ucGFyZW50VHJlZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndpdGhpbi1ib3ggdngtZnMtOSB2eC1mdy02MDAgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1tci0yIHZ4LWxoLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICBXaXRoaW5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aXRoaW4tdmFsdWUgdngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dFwiIFthcHBUb29sdGlwXT1cIml0ZW0/LnBhcmVudFRyZWU/LmpvaW4oJyA+ICcpXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtPy5wYXJlbnRUcmVlPy5qb2luKFwiID4gXCIpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFN1YkNhdGVnb3J5VGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLW5vLWRhdGFcIj5cbiAgICAgICAgICAgICAgPGFwcC1uby1kYXRhIFtub0RhdGFJbWFnZV09XCJBU1NFVFMuc2VhcmNoX2RhdGFcIiBbbm9EYXRhVGV4dF09XCJQUk9HUkFNX05PX0RBVEEuY2F0ZWdvcnlMaXN0XCI+PC9hcHAtbm8tZGF0YT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2NhdGVnb3J5TGlzdExvYWRlcj5cbiAgICAgICAgICA8YXBwLXRhYmxlLWxvYWRlcj48L2FwcC10YWJsZS1sb2FkZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0LW5vLWRhdGEtY29udGFpbmVyXCI+XG4gICAgICA8YXBwLW5vLWRhdGEgW25vRGF0YUltYWdlXT1cIkFTU0VUUy5zZWFyY2hfZGF0YVwiIFtub0RhdGFUZXh0XT1cIlxuICAgICAgICAgIHNlYXJjaFRlcm0gPyBQUk9HUkFNX05PX0RBVEEuc2VhcmNoIDogUFJPR1JBTV9OT19EQVRBLnByb2dyYW1MaXN0XG4gICAgICAgIFwiPjwvYXBwLW5vLWRhdGE+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPGFwcC1wb3BvdmVyICNwcm9ncmFtVHlwZVBvcG92ZXIgKGNsb3NlUG9wb3ZlckV2ZW50KT1cImNsb3NlUG9wb3ZlcigkZXZlbnQpXCIgZG9udENsb3Nlb25DbGljaz1cInRydWVcIj5cbiAgPGRpdiBjbGFzcz1cIm5ldy1hY3Rpb24tbGlzdFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwcm9ncmFtLXR5cGUtdGV4dCB2eC1mcy0xMSB2eC1mdy01MDAgdngtZ3JheS02MCB2eC1saC0xNiB2eC1wLTIgdngtdHQtdXBwZXJjYXNlXCI+XG4gICAgICBQcm9ncmFtIFR5cGU6XG4gICAgPC9kaXY+XG4gICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9ncmFtVHlwZUxpc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaXRlbVwiPlxuICAgICAgICAgIDxhcHAtY3MtY2hlY2tib3ggW3ZhbHVlXT1cIml0ZW0uaWRcIiBbbmdWYWx1ZV09XCJzZWxlY3RlZFByb2dyYW1UeXBlLmluY2x1ZGVzKGl0ZW0uaWQpXCJcbiAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdEZpbHRlcigkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICB7eyBpdGVtPy5uYW1lIH19XG4gICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICAgIDxkaXYgY2xhc3M9XCJwcm9ncmFtLXR5cGUtYm90dG9tIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtcHQtMyB2eC1wYi0zXCI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJyZXNldEZpbHRlcigpOyBwcm9ncmFtVHlwZVBvcG92ZXIuY2xvc2VQb3BvdmVyKCd0b3AnKVwiXG4gICAgICAgIGNsYXNzPVwicmVzZXQtYnRuIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2UgdngtcC0wIHZ4LXBsLTIgdngtcHItMiB2eC1saC02XCI+XG4gICAgICAgIFJFU0VUXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uRmlsdGVyQ2hhbmdlKCk7IHByb2dyYW1UeXBlUG9wb3Zlci5jbG9zZVBvcG92ZXIoJ3RvcCcpXCJcbiAgICAgICAgY2xhc3M9XCJhcHBseS1idG4gdngtZnMtMTEgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZSB2eC1wLTAgdngtcGwtMiB2eC1wci0yIHZ4LWxoLTZcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwic2VsZWN0ZWRQcm9ncmFtVHlwZT8ubGVuZ3RoID09PSAwXCI+XG4gICAgICAgIEFQUExZXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2FwcC1wb3BvdmVyPiJdfQ==
|
|
@@ -8,7 +8,7 @@ import { CheckSelectedItemsPipe } from './pipes/check-selected-items.pipes';
|
|
|
8
8
|
import { FormgroupModule } from '../../ui-kit/formgroup/formgroup.module';
|
|
9
9
|
import { LoadersModule } from '../../ui-kit/loaders/loaders.module';
|
|
10
10
|
import { ListContainerComponent } from './list-container/list-container.component';
|
|
11
|
-
import { SearchProgramPipe } from '../pipes/search-
|
|
11
|
+
import { SearchProgramPipe } from '../pipes/search-program.pipe';
|
|
12
12
|
import { InformationBlockComponent } from './information-block/information-block.component';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
export class ProgramListModule {
|
|
@@ -57,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
57
57
|
]
|
|
58
58
|
}]
|
|
59
59
|
}] });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3JhbS1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NyZWF0ZS1kYXNoYm9hcmQvc3JjL2xpYi9jcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lci9wcm9ncmFtLWxpc3QvcHJvZ3JhbS1saXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOztBQXVCNUYsTUFBTSxPQUFPLGlCQUFpQjt3R0FBakIsaUJBQWlCO3lHQUFqQixpQkFBaUIsaUJBcEIxQixvQkFBb0I7WUFDcEIsc0JBQXNCO1lBQ3RCLHNCQUFzQjtZQUN0QixpQkFBaUI7WUFDakIseUJBQXlCLGFBR3pCLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZTtZQUNmLFlBQVk7WUFDWixhQUFhO1lBQ2IsYUFBYSxhQUdiLG9CQUFvQjtZQUNwQixzQkFBc0I7WUFDdEIseUJBQXlCO3lHQUdoQixpQkFBaUIsWUFiMUIsWUFBWTtZQUNaLFdBQVc7WUFDWCxlQUFlO1lBQ2YsWUFBWTtZQUNaLGFBQWE7WUFDYixhQUFhOzs0RkFRSixpQkFBaUI7a0JBdEI3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3dCQUN0QixpQkFBaUI7d0JBQ2pCLHlCQUF5QjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxlQUFlO3dCQUNmLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixhQUFhO3FCQUNkO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIseUJBQXlCO3FCQUMxQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFByb2dyYW1MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9wcm9ncmFtLWxpc3QvcHJvZ3JhbS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb0RhdGFNb2R1bGUgfSBmcm9tICcuLi8uLi91aS1raXQvbm8tZGF0YS9uby1kYXRhLm1vZHVsZSc7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vdWkta2l0L3BvcG92ZXIvcG9wb3Zlci5tb2R1bGUnO1xuaW1wb3J0IHsgQ2hlY2tTZWxlY3RlZEl0ZW1zUGlwZSB9IGZyb20gJy4vcGlwZXMvY2hlY2stc2VsZWN0ZWQtaXRlbXMucGlwZXMnO1xuaW1wb3J0IHsgRm9ybWdyb3VwTW9kdWxlIH0gZnJvbSAnLi4vLi4vdWkta2l0L2Zvcm1ncm91cC9mb3JtZ3JvdXAubW9kdWxlJztcbmltcG9ydCB7IExvYWRlcnNNb2R1bGUgfSBmcm9tICcuLi8uLi91aS1raXQvbG9hZGVycy9sb2FkZXJzLm1vZHVsZSc7XG5pbXBvcnQgeyBMaXN0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LWNvbnRhaW5lci9saXN0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoUHJvZ3JhbVBpcGUgfSBmcm9tICcuLi9waXBlcy9zZWFyY2gtcHJvZ3JhbS5waXBlJztcbmltcG9ydCB7IEluZm9ybWF0aW9uQmxvY2tDb21wb25lbnQgfSBmcm9tICcuL2luZm9ybWF0aW9uLWJsb2NrL2luZm9ybWF0aW9uLWJsb2NrLmNvbXBvbmVudCc7XG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBQcm9ncmFtTGlzdENvbXBvbmVudCxcbiAgICBDaGVja1NlbGVjdGVkSXRlbXNQaXBlLFxuICAgIExpc3RDb250YWluZXJDb21wb25lbnQsXG4gICAgU2VhcmNoUHJvZ3JhbVBpcGUsXG4gICAgSW5mb3JtYXRpb25CbG9ja0NvbXBvbmVudFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEZvcm1ncm91cE1vZHVsZSxcbiAgICBOb0RhdGFNb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZSxcbiAgICBMb2FkZXJzTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgUHJvZ3JhbUxpc3RDb21wb25lbnQsXG4gICAgTGlzdENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBJbmZvcm1hdGlvbkJsb2NrQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUHJvZ3JhbUxpc3RNb2R1bGUgeyB9XG4iXX0=
|
|
@@ -116,14 +116,70 @@ export class CreateDashboardService {
|
|
|
116
116
|
* Fetches the Dashboard details for data population to Edit the dashboard
|
|
117
117
|
* @param id
|
|
118
118
|
*/
|
|
119
|
+
/** @deprecated Legacy Global-Dashboard edit fetch; custom dashboards use fetchCustomDashboardById + getWidgets. */
|
|
119
120
|
fetchDashboard(id) {
|
|
120
121
|
return this.http
|
|
121
122
|
.get(this.env.dashboard + id + '?mode=edit', this.httpOptions)
|
|
122
123
|
.pipe(retry(2));
|
|
123
124
|
}
|
|
124
|
-
|
|
125
|
+
/**
|
|
126
|
+
* Edit mode only — GET Global-Dashboard/getWidgets?dashboardId={cdid}
|
|
127
|
+
* @param cdid Custom dashboard id (e.g. 438F8KSK22), not numeric record id
|
|
128
|
+
*/
|
|
129
|
+
fetchCustomDashboardWidgetDetails(cdid) {
|
|
130
|
+
return this.http
|
|
131
|
+
.get(`${this.env.dashboard}getWidgets?dashboardId=${encodeURIComponent(cdid)}`, this.httpOptions)
|
|
132
|
+
.pipe(map((res) => this.normalizeWidgetDetailsResponse(res)), retry(2));
|
|
133
|
+
}
|
|
134
|
+
normalizeWidgetDetailsResponse(res) {
|
|
135
|
+
const payload = res?.data ?? res;
|
|
136
|
+
const widgetArr = payload?.widgetArr ?? res?.widgetArr;
|
|
137
|
+
const allWidgetsArray = payload?.allWidgetsArray ?? res?.allWidgetsArray ?? widgetArr;
|
|
138
|
+
if (widgetArr || allWidgetsArray) {
|
|
139
|
+
const normalizedWidgetArr = Array.isArray(widgetArr) ? widgetArr : [];
|
|
140
|
+
const normalizedAll = Array.isArray(allWidgetsArray)
|
|
141
|
+
? allWidgetsArray
|
|
142
|
+
: normalizedWidgetArr;
|
|
143
|
+
return {
|
|
144
|
+
widgetArr: normalizedWidgetArr,
|
|
145
|
+
allWidgetsArray: normalizedAll,
|
|
146
|
+
activeWidgetArr: payload?.activeWidgetArr ??
|
|
147
|
+
res?.activeWidgetArr ??
|
|
148
|
+
normalizedWidgetArr,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
if (Array.isArray(res)) {
|
|
152
|
+
return { widgetArr: res, allWidgetsArray: res, activeWidgetArr: res };
|
|
153
|
+
}
|
|
154
|
+
if (Array.isArray(res?.data)) {
|
|
155
|
+
return {
|
|
156
|
+
widgetArr: res.data,
|
|
157
|
+
allWidgetsArray: res.data,
|
|
158
|
+
activeWidgetArr: res.data,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
const legacyWidgets = res?.widget_details ?? res?.widgets ?? [];
|
|
162
|
+
const legacyAll = res?.all_widgets ?? legacyWidgets;
|
|
163
|
+
return {
|
|
164
|
+
widgetArr: legacyWidgets,
|
|
165
|
+
allWidgetsArray: legacyAll,
|
|
166
|
+
activeWidgetArr: res?.activeWidgetArr ?? legacyWidgets,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
getSailsProgramList() {
|
|
170
|
+
return this.http
|
|
171
|
+
.get(this.env.complianceGet + 'sailsProgramList', this.httpOptions)
|
|
172
|
+
.pipe(retry(2));
|
|
173
|
+
}
|
|
174
|
+
getProgramCategories(programId) {
|
|
125
175
|
return this.http
|
|
126
|
-
.
|
|
176
|
+
.get(`${this.env.complianceGet}sailsProgramCategories&id=${programId}`, this.httpOptions)
|
|
177
|
+
.pipe(retry(2));
|
|
178
|
+
}
|
|
179
|
+
/** Full custom dashboard payload (includes responsibilityCenterId, programId, etc.). */
|
|
180
|
+
fetchCustomDashboardById(id) {
|
|
181
|
+
return this.http
|
|
182
|
+
.get(`${this.env.dashboard}customDashboard/${id}`, this.httpOptions)
|
|
127
183
|
.pipe(retry(2));
|
|
128
184
|
}
|
|
129
185
|
getUserInformation() {
|
|
@@ -149,11 +205,13 @@ export class CreateDashboardService {
|
|
|
149
205
|
createDashboard(payload) {
|
|
150
206
|
return this.http.post(this.env.dashboard + 'customDashboard', payload, this.httpOptions);
|
|
151
207
|
}
|
|
208
|
+
updateDashboard(payload, id) {
|
|
209
|
+
return this.http.put(this.env.dashboard + 'customDashboard/' + id, payload, this.httpOptions);
|
|
210
|
+
}
|
|
152
211
|
saveWidgetDetails(payload) {
|
|
153
212
|
return this.http.post(this.env.dashboard + 'createWidgets/creator', payload, this.httpOptions);
|
|
154
213
|
}
|
|
155
214
|
buildPayload(payload) {
|
|
156
|
-
console.log(" build payload =>", payload);
|
|
157
215
|
return {
|
|
158
216
|
dashboard: {
|
|
159
217
|
name: payload.dashboard_name,
|
|
@@ -182,4 +240,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
182
240
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
|
|
183
241
|
type: Optional
|
|
184
242
|
}] }]; } });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRhc2hib2FyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JlYXRlLWRhc2hib2FyZC9zcmMvbGliL2NyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyL3NlcnZpY2VzL2NyZWF0ZS1kYXNoYm9hcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFPeEQsTUFBTSxPQUFPLHNCQUFzQjtJQUt2QjtJQUNBO0lBTEgsR0FBRyxDQUFPO0lBRWpCLFdBQVcsQ0FBTTtJQUNqQixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3BCLE1BQXVCO1FBRjNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFHaEMsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDN0I7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDdkIsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUU7YUFDaEQsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxHQUFTO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQ0YsSUFBSSxDQUFDLEdBQUcsRUFBRSxlQUFlO1lBQ3ZCLDRDQUE0QztZQUM1QyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUM5QixJQUFJLENBQUMsV0FBVyxDQUNqQjthQUNBLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNmLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDLEVBQ0YsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNSLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzdCLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHlCQUF5QixDQUFDLEdBQVM7UUFDakMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FDRixJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWU7WUFDdkIsNkNBQTZDO1lBQzdDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FDakI7YUFDQSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDVixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzdCLENBQUM7SUFDTixDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUNuQyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUN6QyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBUSxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBRyxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQzthQUM1RCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQ0YsSUFBSSxDQUFDLEdBQUcsRUFBRSxlQUFlLEdBQUcseUJBQXlCLEVBQ3JELElBQUksQ0FBQyxXQUFXLENBQ2pCO2FBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7U0FFSztJQUNMLFlBQVksQ0FBQyxNQUFtQjtRQUM5QixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FDbkMsT0FBTyxFQUNQLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsQ0FDekMsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQ0YsSUFBSSxDQUFDLEdBQUcsRUFBRSxlQUFlO1lBQ3ZCLDhDQUE4QyxFQUNoRCxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FDcEI7YUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsMkJBQTJCO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUNuQyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUN6QyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBUSxJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWUsR0FBRywwQkFBMEIsRUFBRTtZQUNsRSxPQUFPO1NBQ1IsQ0FBQzthQUNELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUNuQyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUN6QyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FDRixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxxQ0FBcUMsRUFDOUQ7WUFDRSxPQUFPO1NBQ1IsQ0FDRjthQUNBLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQscUNBQXFDO1FBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUNuQyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUN6QyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FDRixJQUFJLENBQUMsR0FBRyxFQUFFLGFBQWE7WUFDckIsZ0VBQWdFLEVBQ2xFO1lBQ0UsT0FBTztTQUNSLENBQ0Y7YUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFZO1FBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUNuQyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxDQUN6QyxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQzthQUNsRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxFQUFPO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQzdELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsZUFBZSxDQUFDLEVBQU8sRUFBRSxPQUFZO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQ0YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsa0JBQWtCLEdBQUcsRUFBRSxFQUM1QyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FDakI7YUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUNGLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZSxHQUFHLFdBQVcsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQ3JELElBQUksQ0FBQyxXQUFXLENBQ2pCO2FBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxHQUFHO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQy9ELE1BQU0sU0FBUyxHQUFHLE1BQU0sRUFBRSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsSUFBSSxTQUFTLEtBQUssS0FBSyxFQUFFO1lBQ3ZCLE1BQU0sU0FBUyxHQUFHLE1BQU0sRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEQsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDO1NBQ3RCO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsMkJBQTJCLENBQUMsT0FBWTtRQUN0QyxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUNILElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLG9CQUFvQixFQUN6QyxPQUFPLEVBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FDakI7YUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUNILGVBQWUsQ0FBQyxPQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUMxRixDQUFDO0lBQ0QsaUJBQWlCLENBQUMsT0FBWTtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDaEcsQ0FBQztJQUNDLFlBQVksQ0FBQyxPQUFZO1FBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsT0FBTztZQUNMLFNBQVMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsT0FBTyxDQUFDLGNBQWM7Z0JBQzVCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU87Z0JBQzNDLE1BQU0sRUFBRTtvQkFDTixNQUFNLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtvQkFDaEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUI7aUJBQ3ZDO2dCQUNELHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxxQkFBcUI7Z0JBQ3JELFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3pFLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVO29CQUNsQyxFQUFFLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRO2lCQUMvQjthQUNGO1NBQ0YsQ0FBQTtJQUNILENBQUM7d0dBeE9VLHNCQUFzQjs0R0FBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVFJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9ucyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENyZWF0ZURhc2hib2FyZFNlcnZpY2Uge1xuICBwdWJsaWMgZW52ITogYW55O1xuXG4gIGh0dHBPcHRpb25zOiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xuICApIHtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XG4gICAgfVxuXG4gICAgdGhpcy5odHRwT3B0aW9ucyA9IHtcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIHRva2VuOiB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qXG4gICAqIEZldGNoZXMgdGhlIE9yZ2FuaXphdGlvbiBVc2VycyBMaXN0IGJ5IG1ha2luZyBhbiBBUEkgY2FsbFxuICAgKi9cbiAgZ2V0T3JnYW5pemF0aW9uVXNlcnModXJsPzogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArXG4gICAgICAgICAgJ29yZ2FuaXNhdGlvblVzZXJzTGlzdCZwYWdpbmF0aW9uVHlwZT1zbWFsbCcgK1xuICAgICAgICAgICh1cmwucCA/ICcmcD0nICsgdXJsLnAgOiAnJykgK1xuICAgICAgICAgICh1cmwudHlwZSA/ICcmdHlwZT0nICsgdXJsLnR5cGUgOiAnJykgK1xuICAgICAgICAgICh1cmwucSA/ICcmcT0nICsgdXJsLnEgOiAnJyksXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnNcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSksXG4gICAgICAgIHJldHJ5KDIpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IG9mKGVycikpXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIE9yZ2FuaXphdGlvblVzZXJzIGRldGFpbHMgb2YgdXNlcnMgTGlzdCB0byBzZXQgcGFnaW5hdGlvbiBkZXRhaWxzIGluY2x1ZGluZyBudW1iZXIgb2ZcbiAgICogcGFnZXMgYW5kIHJlY29yZHMgbGltaXQgcGVyIHBhZ2UsXG4gICAqIEBwYXJhbSB1cmwgIGNvbnRhaW5zIGluZm8gYWJvdXQgdHlwZSAmIHNlYXJjaCBxdWVyeVxuICAgKi9cbiAgZ2V0T3JnYW5pemF0aW9uVXNlcnNDb3VudCh1cmw/OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICtcbiAgICAgICAgICAnb3JnYW5pc2F0aW9uVXNlcnNDb3VudCZwYWdpbmF0aW9uVHlwZT1zbWFsbCcgK1xuICAgICAgICAgICh1cmwudHlwZSA/ICcmdHlwZT0nICsgdXJsLnR5cGUgOiAnJykgK1xuICAgICAgICAgICh1cmwucSA/ICcmcT0nICsgdXJsLnEgOiAnJyksXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnNcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlcykgPT4ge1xuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IG9mKGVycikpXG4gICAgICApO1xuICB9XG5cbiAgZ2V0Q2F0ZWdvcnlMaXN0KCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/LnJpc2tHZXQgKyAnY2F0ZWdvcnkvbGlzdCcsIHsgaGVhZGVycyB9KVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYWxsIHVzZXJzIGJ5IG1ha2luZyBhbiBBUEkgY2FsbFxuICAgKi9cbiAgZ2V0QWxsVXNlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArICdzZWxlY3RBbGxVc2VycyZ0eXBlPWFsbCcsXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnNcbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgRmV0Y2hlcyBhbGwgZ3JvdXBzIGJ5IG1ha2luZyBhbiBBUEkgY2FsbFxuICAgKiAqL1xuICBnZXRBbGxHcm91cHMocGFyYW1zPzogSHR0cFBhcmFtcykge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChcbiAgICAgICAgdGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArXG4gICAgICAgICAgJ2dyb3Vwc0xpc3QmcGVybVR5cGU9ZGFzaGJvYXJkJm1lbWJlckV4aXN0cz0xJyxcbiAgICAgICAgeyBwYXJhbXMsIGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCBieSBtYWtpbmcgYW4gQVBJIGNhbGxcbiAgICovXG4gIGdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdCgpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgKyAncmVzcG9uc2liaWxpdHlDZW50ZXJUcmVlJywge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldENvbXBsaWFuY2VDYXRlZ29yaWVzTGlzdCgpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ2NvbXBsaWFuY2VDYXRlZ29yeS9DYXRlZ29yeUxpc3RUcmVlJyxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldENvbXBsaWFuY2VDYXRlZ29yaWVzTGlzdEZyb21HbG9iYWwoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPihcbiAgICAgICAgdGhpcy5lbnY/LmNvbXBsaWFuY2VHZXQgK1xuICAgICAgICAgICdjb21wbGlhbmNlQ2F0ZWdvcnkvQ2F0ZWdvcnlMaXN0VHJlZSZwcm9ncmFtPTEmaXNEYXNoYm9hcmQ9dHJ1ZScsXG4gICAgICAgIHtcbiAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBzdWJtaXREYXNoYm9hcmQocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh0aGlzLmVudi5kYXNoYm9hcmQgKyAnQ3JlYXRlRGFzaGJvYXJkJywgcGF5bG9hZCwgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgRGFzaGJvYXJkIGRldGFpbHMgZm9yIGRhdGEgcG9wdWxhdGlvbiB0byBFZGl0IHRoZSBkYXNoYm9hcmRcbiAgICogQHBhcmFtIGlkXG4gICAqL1xuICBmZXRjaERhc2hib2FyZChpZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldCh0aGlzLmVudi5kYXNoYm9hcmQgKyBpZCArICc/bW9kZT1lZGl0JywgdGhpcy5odHRwT3B0aW9ucylcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIHVwZGF0ZURhc2hib2FyZChpZDogYW55LCBwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucHV0KFxuICAgICAgICB0aGlzLmVudi5kYXNoYm9hcmQgKyAnVXBkYXRlRGFzaGJvYXJkLycgKyBpZCxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0VXNlckluZm9ybWF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoXG4gICAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgKyAndXNlcnMmaWQ9JyArIHRoaXM/Ll9JRCgpLFxuICAgICAgICB0aGlzLmh0dHBPcHRpb25zXG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbiAgX0lEKCkge1xuICAgIGNvbnN0IGhlbHBlciA9IG5ldyBKd3RIZWxwZXJTZXJ2aWNlKCk7XG4gICAgY29uc3QgbXlSYXdUb2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW50VXNlcicpIHx8ICd7fSc7XG4gICAgY29uc3QgaXNFeHBpcmVkID0gaGVscGVyPy5pc1Rva2VuRXhwaXJlZChteVJhd1Rva2VuKTtcbiAgICBpZiAoaXNFeHBpcmVkID09PSBmYWxzZSkge1xuICAgICAgY29uc3QgdG9rZW5JbmZvID0gaGVscGVyPy5kZWNvZGVUb2tlbihteVJhd1Rva2VuKTtcbiAgICAgIHJldHVybiB0b2tlbkluZm8uX2lkO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjaGVja0R1cGxpY2F0ZURhc2hib2FyZE5hbWUocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoXG4gICAgICAgIHRoaXMuZW52LmRhc2hib2FyZCArICdEdXBsaWNhdGVEYXNoYm9hcmQnLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgICB0aGlzLmh0dHBPcHRpb25zXG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cbmNyZWF0ZURhc2hib2FyZChwYXlsb2FkOiBhbnkpIHtcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuZW52LmRhc2hib2FyZCArICdjdXN0b21EYXNoYm9hcmQnLCBwYXlsb2FkLCB0aGlzLmh0dHBPcHRpb25zKVxufVxuc2F2ZVdpZGdldERldGFpbHMocGF5bG9hZDogYW55KSB7XG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVudi5kYXNoYm9hcmQgKyAnY3JlYXRlV2lkZ2V0cy9jcmVhdG9yJywgcGF5bG9hZCwgdGhpcy5odHRwT3B0aW9ucylcbn1cbiAgYnVpbGRQYXlsb2FkKHBheWxvYWQ6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKFwiIGJ1aWxkIHBheWxvYWQgPT5cIiwgcGF5bG9hZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhc2hib2FyZDoge1xuICAgICAgICBuYW1lOiBwYXlsb2FkLmRhc2hib2FyZF9uYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogcGF5bG9hZC5kZXNjcmlwdGlvblswXS5jb250ZW50LFxuICAgICAgICB2aWV3ZXI6IHtcbiAgICAgICAgICB1c2VySWQ6IHBheWxvYWQudmlzaWJsZV90b191c2VycyxcbiAgICAgICAgICB1c2VyR3JvdXBJZDogcGF5bG9hZC52aXNpYmxlX3RvX2dyb3VwcyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJJZDogcGF5bG9hZC5yZXNwb25zaWJpbGl0eV9jZW50ZXIsXG4gICAgICAgIHByb2dyYW1JZDogcGF5bG9hZC5wcm9ncmFtLmFsbF9wcm9ncmFtcy5tYXAoKHByb2dyYW06IGFueSkgPT4gcHJvZ3JhbS5pZCksXG4gICAgICAgIHRpbWVmcmFtZToge1xuICAgICAgICAgIGZyb206IHBheWxvYWQudGltZWZyYW1lLnN0YXJ0X2RhdGUsXG4gICAgICAgICAgdG86IHBheWxvYWQudGltZWZyYW1lLmVuZF9kYXRlLFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRhc2hib2FyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3JlYXRlLWRhc2hib2FyZC9zcmMvbGliL2NyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyL3NlcnZpY2VzL2NyZWF0ZS1kYXNoYm9hcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFPeEQsTUFBTSxPQUFPLHNCQUFzQjtJQUt2QjtJQUNBO0lBTEgsR0FBRyxDQUFPO0lBRWpCLFdBQVcsQ0FBTTtJQUNqQixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3BCLE1BQXVCO1FBRjNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFHaEMsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDN0I7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2pCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDdkIsY0FBYyxFQUFFLGtCQUFrQjtnQkFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUU7YUFDaEQsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxHQUFTO1FBQzVCLE9BQU8s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SSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2hHLENBQUM7SUFDQyxZQUFZLENBQUMsT0FBWTtRQUN2QixPQUFPO1lBQ0wsU0FBUyxFQUFFO2dCQUNULElBQUksRUFBRSxPQUFPLENBQUMsY0FBYztnQkFDNUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztnQkFDM0MsTUFBTSxFQUFFO29CQUNOLE1BQU0sRUFBRSxPQUFPLENBQUMsZ0JBQWdCO29CQUNoQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGlCQUFpQjtpQkFDdkM7Z0JBQ0Qsc0JBQXNCLEVBQUUsT0FBTyxDQUFDLHFCQUFxQjtnQkFDckQsU0FBUyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDekUsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVU7b0JBQ2xDLEVBQUUsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVE7aUJBQy9CO2FBQ0Y7U0FDRixDQUFBO0lBQ0gsQ0FBQzt3R0FyVFUsc0JBQXNCOzRHQUF0QixzQkFBc0IsY0FGckIsTUFBTTs7NEZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBUUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tICdAYXV0aDAvYW5ndWxhci1qd3QnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb25zJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlRGFzaGJvYXJkU2VydmljZSB7XG4gIHB1YmxpYyBlbnYhOiBhbnk7XG5cbiAgaHR0cE9wdGlvbnM6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG5cbiAgICB0aGlzLmh0dHBPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgdG9rZW46IHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCksXG4gICAgICB9KSxcbiAgICB9O1xuICB9XG5cbiAgLypcbiAgICogRmV0Y2hlcyB0aGUgT3JnYW5pemF0aW9uIFVzZXJzIExpc3QgYnkgbWFraW5nIGFuIEFQSSBjYWxsXG4gICAqL1xuICBnZXRPcmdhbml6YXRpb25Vc2Vycyh1cmw/OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICtcbiAgICAgICAgICAnb3JnYW5pc2F0aW9uVXNlcnNMaXN0JnBhZ2luYXRpb25UeXBlPXNtYWxsJyArXG4gICAgICAgICAgKHVybC5wID8gJyZwPScgKyB1cmwucCA6ICcnKSArXG4gICAgICAgICAgKHVybC50eXBlID8gJyZ0eXBlPScgKyB1cmwudHlwZSA6ICcnKSArXG4gICAgICAgICAgKHVybC5xID8gJyZxPScgKyB1cmwucSA6ICcnKSxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KSxcbiAgICAgICAgcmV0cnkoMiksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gb2YoZXJyKSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgT3JnYW5pemF0aW9uVXNlcnMgZGV0YWlscyBvZiB1c2VycyBMaXN0IHRvIHNldCBwYWdpbmF0aW9uIGRldGFpbHMgaW5jbHVkaW5nIG51bWJlciBvZlxuICAgKiBwYWdlcyBhbmQgcmVjb3JkcyBsaW1pdCBwZXIgcGFnZSxcbiAgICogQHBhcmFtIHVybCAgY29udGFpbnMgaW5mbyBhYm91dCB0eXBlICYgc2VhcmNoIHF1ZXJ5XG4gICAqL1xuICBnZXRPcmdhbml6YXRpb25Vc2Vyc0NvdW50KHVybD86IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoXG4gICAgICAgIHRoaXMuZW52Py5vcmdhbml6YXRpb25HZXQgK1xuICAgICAgICAgICdvcmdhbmlzYXRpb25Vc2Vyc0NvdW50JnBhZ2luYXRpb25UeXBlPXNtYWxsJyArXG4gICAgICAgICAgKHVybC50eXBlID8gJyZ0eXBlPScgKyB1cmwudHlwZSA6ICcnKSArXG4gICAgICAgICAgKHVybC5xID8gJyZxPScgKyB1cmwucSA6ICcnKSxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4gb2YoZXJyKSlcbiAgICAgICk7XG4gIH1cblxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudj8ucmlza0dldCArICdjYXRlZ29yeS9saXN0JywgeyBoZWFkZXJzIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyBhbGwgdXNlcnMgYnkgbWFraW5nIGFuIEFQSSBjYWxsXG4gICAqL1xuICBnZXRBbGxVc2VycygpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICsgJ3NlbGVjdEFsbFVzZXJzJnR5cGU9YWxsJyxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgLyoqXG4gICAqICBGZXRjaGVzIGFsbCBncm91cHMgYnkgbWFraW5nIGFuIEFQSSBjYWxsXG4gICAqICovXG4gIGdldEFsbEdyb3VwcyhwYXJhbXM/OiBIdHRwUGFyYW1zKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICtcbiAgICAgICAgICAnZ3JvdXBzTGlzdCZwZXJtVHlwZT1kYXNoYm9hcmQmbWVtYmVyRXhpc3RzPTEnLFxuICAgICAgICB7IHBhcmFtcywgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2hlcyByZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0IGJ5IG1ha2luZyBhbiBBUEkgY2FsbFxuICAgKi9cbiAgZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnY/Lm9yZ2FuaXphdGlvbkdldCArICdyZXNwb25zaWJpbGl0eUNlbnRlclRyZWUnLCB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0Q29tcGxpYW5jZUNhdGVnb3JpZXNMaXN0KCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4oXG4gICAgICAgIHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgKyAnY29tcGxpYW5jZUNhdGVnb3J5L0NhdGVnb3J5TGlzdFRyZWUnLFxuICAgICAgICB7XG4gICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgZ2V0Q29tcGxpYW5jZUNhdGVnb3JpZXNMaXN0RnJvbUdsb2JhbCgpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KFxuICAgICAgICB0aGlzLmVudj8uY29tcGxpYW5jZUdldCArXG4gICAgICAgICAgJ2NvbXBsaWFuY2VDYXRlZ29yeS9DYXRlZ29yeUxpc3RUcmVlJnByb2dyYW09MSZpc0Rhc2hib2FyZD10cnVlJyxcbiAgICAgICAge1xuICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIHN1Ym1pdERhc2hib2FyZChwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHRoaXMuZW52LmRhc2hib2FyZCArICdDcmVhdGVEYXNoYm9hcmQnLCBwYXlsb2FkLCB7IGhlYWRlcnMgfSlcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBEYXNoYm9hcmQgZGV0YWlscyBmb3IgZGF0YSBwb3B1bGF0aW9uIHRvIEVkaXQgdGhlIGRhc2hib2FyZFxuICAgKiBAcGFyYW0gaWRcbiAgICovXG4gIC8qKiBAZGVwcmVjYXRlZCBMZWdhY3kgR2xvYmFsLURhc2hib2FyZCBlZGl0IGZldGNoOyBjdXN0b20gZGFzaGJvYXJkcyB1c2UgZmV0Y2hDdXN0b21EYXNoYm9hcmRCeUlkICsgZ2V0V2lkZ2V0cy4gKi9cbiAgZmV0Y2hEYXNoYm9hcmQoaWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodGhpcy5lbnYuZGFzaGJvYXJkICsgaWQgKyAnP21vZGU9ZWRpdCcsIHRoaXMuaHR0cE9wdGlvbnMpXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICAvKipcbiAgICogRWRpdCBtb2RlIG9ubHkg4oCUIEdFVCBHbG9iYWwtRGFzaGJvYXJkL2dldFdpZGdldHM/ZGFzaGJvYXJkSWQ9e2NkaWR9XG4gICAqIEBwYXJhbSBjZGlkIEN1c3RvbSBkYXNoYm9hcmQgaWQgKGUuZy4gNDM4RjhLU0syMiksIG5vdCBudW1lcmljIHJlY29yZCBpZFxuICAgKi9cbiAgZmV0Y2hDdXN0b21EYXNoYm9hcmRXaWRnZXREZXRhaWxzKGNkaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQoXG4gICAgICAgIGAke3RoaXMuZW52LmRhc2hib2FyZH1nZXRXaWRnZXRzP2Rhc2hib2FyZElkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGNkaWQpfWAsXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnNcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiB0aGlzLm5vcm1hbGl6ZVdpZGdldERldGFpbHNSZXNwb25zZShyZXMpKSxcbiAgICAgICAgcmV0cnkoMilcbiAgICAgICk7XG4gIH1cblxuICBub3JtYWxpemVXaWRnZXREZXRhaWxzUmVzcG9uc2UocmVzOiBhbnkpOiB7XG4gICAgd2lkZ2V0QXJyOiBhbnlbXTtcbiAgICBhbGxXaWRnZXRzQXJyYXk6IGFueVtdO1xuICAgIGFjdGl2ZVdpZGdldEFycjogYW55W107XG4gIH0ge1xuICAgIGNvbnN0IHBheWxvYWQgPSByZXM/LmRhdGEgPz8gcmVzO1xuICAgIGNvbnN0IHdpZGdldEFyciA9IHBheWxvYWQ/LndpZGdldEFyciA/PyByZXM/LndpZGdldEFycjtcbiAgICBjb25zdCBhbGxXaWRnZXRzQXJyYXkgPVxuICAgICAgcGF5bG9hZD8uYWxsV2lkZ2V0c0FycmF5ID8/IHJlcz8uYWxsV2lkZ2V0c0FycmF5ID8/IHdpZGdldEFycjtcbiAgICBpZiAod2lkZ2V0QXJyIHx8IGFsbFdpZGdldHNBcnJheSkge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFdpZGdldEFyciA9IEFycmF5LmlzQXJyYXkod2lkZ2V0QXJyKSA/IHdpZGdldEFyciA6IFtdO1xuICAgICAgY29uc3Qgbm9ybWFsaXplZEFsbCA9IEFycmF5LmlzQXJyYXkoYWxsV2lkZ2V0c0FycmF5KVxuICAgICAgICA/IGFsbFdpZGdldHNBcnJheVxuICAgICAgICA6IG5vcm1hbGl6ZWRXaWRnZXRBcnI7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB3aWRnZXRBcnI6IG5vcm1hbGl6ZWRXaWRnZXRBcnIsXG4gICAgICAgIGFsbFdpZGdldHNBcnJheTogbm9ybWFsaXplZEFsbCxcbiAgICAgICAgYWN0aXZlV2lkZ2V0QXJyOlxuICAgICAgICAgIHBheWxvYWQ/LmFjdGl2ZVdpZGdldEFyciA/P1xuICAgICAgICAgIHJlcz8uYWN0aXZlV2lkZ2V0QXJyID8/XG4gICAgICAgICAgbm9ybWFsaXplZFdpZGdldEFycixcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcbiAgICAgIHJldHVybiB7IHdpZGdldEFycjogcmVzLCBhbGxXaWRnZXRzQXJyYXk6IHJlcywgYWN0aXZlV2lkZ2V0QXJyOiByZXMgfTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVzPy5kYXRhKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkZ2V0QXJyOiByZXMuZGF0YSxcbiAgICAgICAgYWxsV2lkZ2V0c0FycmF5OiByZXMuZGF0YSxcbiAgICAgICAgYWN0aXZlV2lkZ2V0QXJyOiByZXMuZGF0YSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGxlZ2FjeVdpZGdldHMgPSByZXM/LndpZGdldF9kZXRhaWxzID8/IHJlcz8ud2lkZ2V0cyA/PyBbXTtcbiAgICBjb25zdCBsZWdhY3lBbGwgPSByZXM/LmFsbF93aWRnZXRzID8/IGxlZ2FjeVdpZGdldHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZGdldEFycjogbGVnYWN5V2lkZ2V0cyxcbiAgICAgIGFsbFdpZGdldHNBcnJheTogbGVnYWN5QWxsLFxuICAgICAgYWN0aXZlV2lkZ2V0QXJyOiByZXM/LmFjdGl2ZVdpZGdldEFyciA/PyBsZWdhY3lXaWRnZXRzLFxuICAgIH07XG4gIH1cblxuICBnZXRTYWlsc1Byb2dyYW1MaXN0KCkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQodGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdzYWlsc1Byb2dyYW1MaXN0JywgdGhpcy5odHRwT3B0aW9ucylcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGdldFByb2dyYW1DYXRlZ29yaWVzKHByb2dyYW1JZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChcbiAgICAgICAgYCR7dGhpcy5lbnYuY29tcGxpYW5jZUdldH1zYWlsc1Byb2dyYW1DYXRlZ29yaWVzJmlkPSR7cHJvZ3JhbUlkfWAsXG4gICAgICAgIHRoaXMuaHR0cE9wdGlvbnNcbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIC8qKiBGdWxsIGN1c3RvbSBkYXNoYm9hcmQgcGF5bG9hZCAoaW5jbHVkZXMgcmVzcG9uc2liaWxpdHlDZW50ZXJJZCwgcHJvZ3JhbUlkLCBldGMuKS4gKi9cbiAgZmV0Y2hDdXN0b21EYXNoYm9hcmRCeUlkKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KGAke3RoaXMuZW52LmRhc2hib2FyZH1jdXN0b21EYXNoYm9hcmQvJHtpZH1gLCB0aGlzLmh0dHBPcHRpb25zKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cblxuXG4gIGdldFVzZXJJbmZvcm1hdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0KFxuICAgICAgICB0aGlzLmVudj8ub3JnYW5pemF0aW9uR2V0ICsgJ3VzZXJzJmlkPScgKyB0aGlzPy5fSUQoKSxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG4gIF9JRCgpIHtcbiAgICBjb25zdCBoZWxwZXIgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xuICAgIGNvbnN0IG15UmF3VG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVudFVzZXInKSB8fCAne30nO1xuICAgIGNvbnN0IGlzRXhwaXJlZCA9IGhlbHBlcj8uaXNUb2tlbkV4cGlyZWQobXlSYXdUb2tlbik7XG4gICAgaWYgKGlzRXhwaXJlZCA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHRva2VuSW5mbyA9IGhlbHBlcj8uZGVjb2RlVG9rZW4obXlSYXdUb2tlbik7XG4gICAgICByZXR1cm4gdG9rZW5JbmZvLl9pZDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY2hlY2tEdXBsaWNhdGVEYXNoYm9hcmROYW1lKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KFxuICAgICAgICB0aGlzLmVudi5kYXNoYm9hcmQgKyAnRHVwbGljYXRlRGFzaGJvYXJkJyxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgdGhpcy5odHRwT3B0aW9uc1xuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5jcmVhdGVEYXNoYm9hcmQocGF5bG9hZDogYW55KSB7XG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVudi5kYXNoYm9hcmQgKyAnY3VzdG9tRGFzaGJvYXJkJywgcGF5bG9hZCwgdGhpcy5odHRwT3B0aW9ucylcbn1cblxudXBkYXRlRGFzaGJvYXJkKHBheWxvYWQ6IGFueSwgaWQ6IGFueSkge1xuICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLmVudi5kYXNoYm9hcmQgKyAnY3VzdG9tRGFzaGJvYXJkLycgKyBpZCwgcGF5bG9hZCwgdGhpcy5odHRwT3B0aW9ucylcbn1cblxuc2F2ZVdpZGdldERldGFpbHMocGF5bG9hZDogYW55KSB7XG4gIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLmVudi5kYXNoYm9hcmQgKyAnY3JlYXRlV2lkZ2V0cy9jcmVhdG9yJywgcGF5bG9hZCwgdGhpcy5odHRwT3B0aW9ucylcbn1cbiAgYnVpbGRQYXlsb2FkKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXNoYm9hcmQ6IHtcbiAgICAgICAgbmFtZTogcGF5bG9hZC5kYXNoYm9hcmRfbmFtZSxcbiAgICAgICAgZGVzY3JpcHRpb246IHBheWxvYWQuZGVzY3JpcHRpb25bMF0uY29udGVudCxcbiAgICAgICAgdmlld2VyOiB7XG4gICAgICAgICAgdXNlcklkOiBwYXlsb2FkLnZpc2libGVfdG9fdXNlcnMsXG4gICAgICAgICAgdXNlckdyb3VwSWQ6IHBheWxvYWQudmlzaWJsZV90b19ncm91cHMsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVySWQ6IHBheWxvYWQucmVzcG9uc2liaWxpdHlfY2VudGVyLFxuICAgICAgICBwcm9ncmFtSWQ6IHBheWxvYWQucHJvZ3JhbS5hbGxfcHJvZ3JhbXMubWFwKChwcm9ncmFtOiBhbnkpID0+IHByb2dyYW0uaWQpLFxuICAgICAgICB0aW1lZnJhbWU6IHtcbiAgICAgICAgICBmcm9tOiBwYXlsb2FkLnRpbWVmcmFtZS5zdGFydF9kYXRlLFxuICAgICAgICAgIHRvOiBwYXlsb2FkLnRpbWVmcmFtZS5lbmRfZGF0ZSxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|