@cqa-lib/cqa-ui 1.1.527 → 1.1.529
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/dialog/dialog.component.mjs +15 -3
- package/esm2020/lib/dialog/dialog.models.mjs +1 -1
- package/esm2020/lib/step-builder/step-builder-group/step-builder-group.component.mjs +22 -7
- package/esm2020/lib/templates/modular-table-template/dialogs/move-to-folder-dialog.component.mjs +38 -13
- package/esm2020/lib/templates/modular-table-template/dialogs/new-folder-dialog.component.mjs +79 -87
- package/esm2020/lib/templates/modular-table-template/folder-sidebar/folder-sidebar.component.mjs +21 -4
- package/esm2020/lib/templates/modular-table-template/modular-table-template.component.mjs +3 -1
- package/esm2020/lib/templates/modular-table-template/modular-table-template.models.mjs +3 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs +169 -106
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +169 -104
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/dialog/dialog.component.d.ts +1 -0
- package/lib/dialog/dialog.models.d.ts +4 -0
- package/lib/step-builder/step-builder-group/step-builder-group.component.d.ts +10 -1
- package/lib/templates/modular-table-template/dialogs/move-to-folder-dialog.component.d.ts +12 -2
- package/lib/templates/modular-table-template/dialogs/new-folder-dialog.component.d.ts +23 -30
- package/lib/templates/modular-table-template/folder-sidebar/folder-sidebar.component.d.ts +4 -0
- package/lib/templates/modular-table-template/modular-table-template.models.d.ts +2 -0
- package/package.json +1 -1
- package/styles.css +1 -1
package/esm2020/lib/templates/modular-table-template/dialogs/move-to-folder-dialog.component.mjs
CHANGED
|
@@ -28,6 +28,14 @@ export class MoveToFolderDialogComponent {
|
|
|
28
28
|
this.currentFolderId = null;
|
|
29
29
|
/** Controls which folder is visually selected. Two-way-bind friendly via `pickedFolderIdChange`. */
|
|
30
30
|
this.pickedFolderId = null;
|
|
31
|
+
/** Disables the top-level "Unorganised / no folder" row. Decoupled from `currentFolderId`
|
|
32
|
+
* so consumers that reuse this picker for non-move flows (e.g. parent-folder selection
|
|
33
|
+
* inside the New Folder dialog) can keep the root option clickable. The move flows wire
|
|
34
|
+
* this to `currentFolderId == null`. */
|
|
35
|
+
this.rootDisabled = false;
|
|
36
|
+
/** CSS height for the scrollable picker container. Lets embedders shrink the picker when
|
|
37
|
+
* it shares space with other fields (e.g. inside the New Folder dialog). */
|
|
38
|
+
this.pickerHeight = '360px';
|
|
31
39
|
/** Fires whenever the user picks a destination. */
|
|
32
40
|
this.folderPicked = new EventEmitter();
|
|
33
41
|
/** Companion output for banana-in-the-box `[(pickedFolderId)]` binding. */
|
|
@@ -39,7 +47,7 @@ export class MoveToFolderDialogComponent {
|
|
|
39
47
|
this.seedExpandedIds();
|
|
40
48
|
}
|
|
41
49
|
ngOnChanges(changes) {
|
|
42
|
-
if (changes['initialExpandedIds'] || changes['currentFolderId'] || changes['folders']) {
|
|
50
|
+
if (changes['initialExpandedIds'] || changes['currentFolderId'] || changes['pickedFolderId'] || changes['folders']) {
|
|
43
51
|
this.seedExpandedIds();
|
|
44
52
|
}
|
|
45
53
|
}
|
|
@@ -49,9 +57,13 @@ export class MoveToFolderDialogComponent {
|
|
|
49
57
|
return;
|
|
50
58
|
}
|
|
51
59
|
this.expandedIds = new Set();
|
|
52
|
-
|
|
60
|
+
// Prefer currentFolderId (the disabled "self" row) so the user lands on it; fall back
|
|
61
|
+
// to pickedFolderId so non-move flows (e.g. parent picker) still open with the
|
|
62
|
+
// pre-selected node visible.
|
|
63
|
+
const seed = this.currentFolderId != null ? this.currentFolderId : this.pickedFolderId;
|
|
64
|
+
if (seed != null) {
|
|
53
65
|
const trail = [];
|
|
54
|
-
this.collectAncestors(this.folders,
|
|
66
|
+
this.collectAncestors(this.folders, seed, trail);
|
|
55
67
|
trail.forEach(id => this.expandedIds.add(id));
|
|
56
68
|
}
|
|
57
69
|
}
|
|
@@ -90,6 +102,9 @@ export class MoveToFolderDialogComponent {
|
|
|
90
102
|
isPicked(id) {
|
|
91
103
|
return this.pickedFolderId === id;
|
|
92
104
|
}
|
|
105
|
+
get isUnorganisedDisabled() {
|
|
106
|
+
return this.rootDisabled;
|
|
107
|
+
}
|
|
93
108
|
pick(id) {
|
|
94
109
|
this.pickedFolderId = id;
|
|
95
110
|
this.folderPicked.emit(id);
|
|
@@ -108,7 +123,7 @@ export class MoveToFolderDialogComponent {
|
|
|
108
123
|
}
|
|
109
124
|
}
|
|
110
125
|
MoveToFolderDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MoveToFolderDialogComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
111
|
-
MoveToFolderDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: MoveToFolderDialogComponent, selector: "cqa-move-to-folder-dialog", inputs: { folders: "folders", labels: "labels", currentFolderId: "currentFolderId", pickedFolderId: "pickedFolderId", initialExpandedIds: "initialExpandedIds" }, outputs: { folderPicked: "folderPicked", pickedFolderIdChange: "pickedFolderIdChange" }, host: { classAttribute: "cqa-ui-root" }, usesOnChanges: true, ngImport: i0, template: `
|
|
126
|
+
MoveToFolderDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: MoveToFolderDialogComponent, selector: "cqa-move-to-folder-dialog", inputs: { folders: "folders", labels: "labels", currentFolderId: "currentFolderId", pickedFolderId: "pickedFolderId", initialExpandedIds: "initialExpandedIds", rootDisabled: "rootDisabled", pickerHeight: "pickerHeight" }, outputs: { folderPicked: "folderPicked", pickedFolderIdChange: "pickedFolderIdChange" }, host: { classAttribute: "cqa-ui-root" }, usesOnChanges: true, ngImport: i0, template: `
|
|
112
127
|
<!-- Reusable outlined folder icon. Stroke uses currentColor so the row's text color drives the icon. -->
|
|
113
128
|
<ng-template #folderIconTpl>
|
|
114
129
|
<svg width="17" height="15" viewBox="0 0 17 15" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" class="cqa-shrink-0">
|
|
@@ -123,16 +138,19 @@ MoveToFolderDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.
|
|
|
123
138
|
</svg>
|
|
124
139
|
</ng-template>
|
|
125
140
|
|
|
126
|
-
<div class="cqa-flex cqa-flex-col cqa-border-solid cqa-border cqa-border-[#E2E2E3] cqa-rounded-[10px] cqa-py-2 cqa-w-full cqa-
|
|
141
|
+
<div class="cqa-flex cqa-flex-col cqa-border-solid cqa-border cqa-border-[#E2E2E3] cqa-rounded-[10px] cqa-py-2 cqa-w-full cqa-overflow-y-auto cqa-bg-white cqa-scrollbar-thin" [style.height]="pickerHeight">
|
|
127
142
|
<!-- Unorganised (root / no folder) -->
|
|
128
143
|
<div
|
|
129
144
|
role="button"
|
|
130
145
|
tabindex="0"
|
|
131
146
|
class="cqa-flex cqa-items-center cqa-gap-2.5 cqa-px-4 cqa-py-2 cqa-cursor-pointer cqa-transition-colors cqa-text-sm"
|
|
132
147
|
[ngClass]="isPicked(null) ? 'cqa-bg-indigo-50 cqa-text-indigo-700' : 'cqa-text-neutral-800 hover:cqa-bg-neutral-50'"
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
148
|
+
[class.cqa-opacity-40]="isUnorganisedDisabled"
|
|
149
|
+
[class.cqa-cursor-not-allowed]="isUnorganisedDisabled"
|
|
150
|
+
[attr.aria-disabled]="isUnorganisedDisabled || null"
|
|
151
|
+
(click)="!isUnorganisedDisabled && pick(null)"
|
|
152
|
+
(keydown.enter)="!isUnorganisedDisabled && pick(null)"
|
|
153
|
+
(keydown.space)="$event.preventDefault(); !isUnorganisedDisabled && pick(null)"
|
|
136
154
|
>
|
|
137
155
|
<!-- chevron-slot placeholder so all rows line up -->
|
|
138
156
|
<span class="cqa-inline-block cqa-w-5 cqa-h-5 cqa-shrink-0"></span>
|
|
@@ -193,16 +211,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
193
211
|
</svg>
|
|
194
212
|
</ng-template>
|
|
195
213
|
|
|
196
|
-
<div class="cqa-flex cqa-flex-col cqa-border-solid cqa-border cqa-border-[#E2E2E3] cqa-rounded-[10px] cqa-py-2 cqa-w-full cqa-
|
|
214
|
+
<div class="cqa-flex cqa-flex-col cqa-border-solid cqa-border cqa-border-[#E2E2E3] cqa-rounded-[10px] cqa-py-2 cqa-w-full cqa-overflow-y-auto cqa-bg-white cqa-scrollbar-thin" [style.height]="pickerHeight">
|
|
197
215
|
<!-- Unorganised (root / no folder) -->
|
|
198
216
|
<div
|
|
199
217
|
role="button"
|
|
200
218
|
tabindex="0"
|
|
201
219
|
class="cqa-flex cqa-items-center cqa-gap-2.5 cqa-px-4 cqa-py-2 cqa-cursor-pointer cqa-transition-colors cqa-text-sm"
|
|
202
220
|
[ngClass]="isPicked(null) ? 'cqa-bg-indigo-50 cqa-text-indigo-700' : 'cqa-text-neutral-800 hover:cqa-bg-neutral-50'"
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
221
|
+
[class.cqa-opacity-40]="isUnorganisedDisabled"
|
|
222
|
+
[class.cqa-cursor-not-allowed]="isUnorganisedDisabled"
|
|
223
|
+
[attr.aria-disabled]="isUnorganisedDisabled || null"
|
|
224
|
+
(click)="!isUnorganisedDisabled && pick(null)"
|
|
225
|
+
(keydown.enter)="!isUnorganisedDisabled && pick(null)"
|
|
226
|
+
(keydown.space)="$event.preventDefault(); !isUnorganisedDisabled && pick(null)"
|
|
206
227
|
>
|
|
207
228
|
<!-- chevron-slot placeholder so all rows line up -->
|
|
208
229
|
<span class="cqa-inline-block cqa-w-5 cqa-h-5 cqa-shrink-0"></span>
|
|
@@ -256,9 +277,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
256
277
|
type: Input
|
|
257
278
|
}], initialExpandedIds: [{
|
|
258
279
|
type: Input
|
|
280
|
+
}], rootDisabled: [{
|
|
281
|
+
type: Input
|
|
282
|
+
}], pickerHeight: [{
|
|
283
|
+
type: Input
|
|
259
284
|
}], folderPicked: [{
|
|
260
285
|
type: Output
|
|
261
286
|
}], pickedFolderIdChange: [{
|
|
262
287
|
type: Output
|
|
263
288
|
}] } });
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS10by1mb2xkZXItZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdGVtcGxhdGVzL21vZHVsYXItdGFibGUtdGVtcGxhdGUvZGlhbG9ncy9tb3ZlLXRvLWZvbGRlci1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBNkIsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBV3JHOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBMkVILE1BQU0sT0FBTywyQkFBMkI7SUFtQnRDLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbEIxQyxnQ0FBZ0M7UUFDdkIsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFDcEMsdUJBQXVCO1FBQ2QsV0FBTSxHQUFrQixFQUFFLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztRQUMvRCw4RkFBOEY7UUFDckYsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBQy9DLG9HQUFvRztRQUMzRixtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFJOUMsbURBQW1EO1FBQ3pDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFDM0QsMkVBQTJFO1FBQ2pFLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRTNELGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQStFeEMsY0FBUyxHQUFHLENBQUMsQ0FBUyxFQUFFLEdBQWtCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUE3RWYsQ0FBQztJQUU5QyxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBERUZBVUxUX01PRFVMQVJfTEFCRUxTLCBGb2xkZXJOb2RlLCBNb2R1bGFyTGFiZWxzIH0gZnJvbSAnLi4vbW9kdWxhci10YWJsZS10ZW1wbGF0ZS5tb2RlbHMnO1xuXG5pbnRlcmZhY2UgRmxhdEZvbGRlclJvdyB7XG4gIGlkOiBudW1iZXIgfCBudWxsO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlcHRoOiBudW1iZXI7XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBoYXNDaGlsZHJlbjogYm9vbGVhbjtcbiAgZXhwYW5kZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogRm9sZGVyLXBpY2tlciBib2R5IHVzZWQgaW5zaWRlIHRoZSBNb3ZlLXRvLUZvbGRlciBkaWFsb2cuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgZGVzaWduZWQgdG8gYmUgdXNhYmxlIHR3byB3YXlzOlxuICpcbiAqICAxLiAqKkZyb20gaW5zaWRlIHRoZSBsaWJyYXJ5KiogdmlhIGBEaWFsb2dTZXJ2aWNlLm9wZW4oeyBjb250ZW50OiB7IHR5cGU6ICdjb21wb25lbnQnLCBjb21wb25lbnQ6IE1vdmVUb0ZvbGRlckRpYWxvZ0NvbXBvbmVudCwgaW5wdXRzOiB7Li4ufSB9IH0pYC5cbiAqICAgICBUaGUgb3V0ZXIgYGNxYS1kaWFsb2dgIHByb3ZpZGVzIHRoZSB0aXRsZSwgZGVzY3JpcHRpb24sIENhbmNlbCBhbmQgXCJNb3ZlIGhlcmVcIlxuICogICAgIGJ1dHRvbnM7IHRoZSBNb3ZlIGJ1dHRvbiByZWFkcyBgcGlja2VkRm9sZGVySWRgIHZpYSBgZGlhbG9nUmVmLmdldENvbXBvbmVudEluc3RhbmNlKClgLlxuICpcbiAqICAyLiAqKkZyb20gdGhlIGhvc3QvVUkgbGF5ZXIgZGlyZWN0bHkqKiBvbmNlIEFQSSBvd25lcnNoaXAgbW92ZXMgdXAuIFRoZSBob3N0XG4gKiAgICAgcmVuZGVycyBgPGNxYS1tb3ZlLXRvLWZvbGRlci1kaWFsb2c+YCBpbnNpZGUgaXRzIG93biBtb2RhbCBzaGVsbCBhbmRcbiAqICAgICBsaXN0ZW5zIHRvIGAoZm9sZGVyUGlja2VkKWAgKGZpcmVzIG9uIGV2ZXJ5IHBpY2spIHRvIGRyaXZlIGl0cyBvd24gXCJNb3ZlIGhlcmVcIlxuICogICAgIGJ1dHRvbi4gQWxsIHZpc3VhbCBzdGF0ZSBsaXZlcyBvbiBgcGlja2VkRm9sZGVySWRgIHNvIGhvc3RzIGNhbiBhbHNvIHR3by13YXlcbiAqICAgICBiaW5kIGlmIHRoZXkgcHJlZmVyLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbW92ZS10by1mb2xkZXItZGlhbG9nJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8IS0tIFJldXNhYmxlIG91dGxpbmVkIGZvbGRlciBpY29uLiBTdHJva2UgdXNlcyBjdXJyZW50Q29sb3Igc28gdGhlIHJvdydzIHRleHQgY29sb3IgZHJpdmVzIHRoZSBpY29uLiAtLT5cbiAgICA8bmctdGVtcGxhdGUgI2ZvbGRlckljb25UcGw+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMTcgMTVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImNxYS1zaHJpbmstMFwiPlxuICAgICAgICA8cGF0aCBkPVwiTTE1LjYzNzUgMTIuNjM3N0MxNS42Mzc1IDEzLjAzNTUgMTUuNDc5NCAxMy40MTcxIDE1LjE5ODEgMTMuNjk4NEMxNC45MTY4IDEzLjk3OTcgMTQuNTM1MyAxNC4xMzc3IDE0LjEzNzUgMTQuMTM3N0gyLjEzNzQ1QzEuNzM5NjMgMTQuMTM3NyAxLjM1ODEgMTMuOTc5NyAxLjA3Njc5IDEzLjY5ODRDMC43OTU0ODYgMTMuNDE3MSAwLjYzNzQ1MSAxMy4wMzU1IDAuNjM3NDUxIDEyLjYzNzdWMi4xMzc3QzAuNjM3NDUxIDEuNzM5ODcgMC43OTU0ODYgMS4zNTgzNCAxLjA3Njc5IDEuMDc3MDRDMS4zNTgxIDAuNzk1NzMxIDEuNzM5NjMgMC42Mzc2OTUgMi4xMzc0NSAwLjYzNzY5NUg1Ljg4NzQ1TDcuMzg3NDUgMi44ODc3SDE0LjEzNzVDMTQuNTM1MyAyLjg4NzcgMTQuOTE2OCAzLjA0NTczIDE1LjE5ODEgMy4zMjcwNEMxNS40Nzk0IDMuNjA4MzQgMTUuNjM3NSAzLjk4OTg3IDE1LjYzNzUgNC4zODc3VjEyLjYzNzdaXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4yNzVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBSZXVzYWJsZSBvdXRsaW5lZCBhcmNoaXZlL2luYm94IGljb24gZm9yIHRoZSBcIlVub3JnYW5pc2VkXCIgZW50cnkuIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjdW5vcmdhbmlzZWRJY29uVHBsPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE3XCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMCAwIDE3IDE1XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJjcWEtc2hyaW5rLTBcIj5cbiAgICAgICAgPHBhdGggZD1cIk0xNC42ODc1IDUuNVYxMi41QzE0LjY4NzUgMTMuMyAxNC4wMzc1IDE0IDEzLjE4NzUgMTRIMy44MTI1QzIuOTYyNSAxNCAyLjMxMjUgMTMuMyAyLjMxMjUgMTIuNVY1LjVNMTQuNjg3NSA1LjVMMTIuNzg3NSAxLjdDMTIuNTM3NSAxLjIgMTIuMDg3NSAxIDExLjU4NzUgMUg1LjQxMjVDNC45MTI1IDEgNC40NjI1IDEuMiA0LjIxMjUgMS43TDIuMzEyNSA1LjVNMTQuNjg3NSA1LjVIMi4zMTI1TTYuMTg3NSA4LjVIMTAuODEyNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMjc1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgPC9zdmc+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyIGNxYS1ib3JkZXItWyNFMkUyRTNdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtcHktMiBjcWEtdy1mdWxsIGNxYS1oLVszNjBweF0gY3FhLW92ZXJmbG93LXktYXV0byBjcWEtYmctd2hpdGUgY3FhLXNjcm9sbGJhci10aGluXCI+XG4gICAgICA8IS0tIFVub3JnYW5pc2VkIChyb290IC8gbm8gZm9sZGVyKSAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIuNSBjcWEtcHgtNCBjcWEtcHktMiBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLXRyYW5zaXRpb24tY29sb3JzIGNxYS10ZXh0LXNtXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiaXNQaWNrZWQobnVsbCkgPyAnY3FhLWJnLWluZGlnby01MCBjcWEtdGV4dC1pbmRpZ28tNzAwJyA6ICdjcWEtdGV4dC1uZXV0cmFsLTgwMCBob3ZlcjpjcWEtYmctbmV1dHJhbC01MCdcIlxuICAgICAgICAoY2xpY2spPVwicGljayhudWxsKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInBpY2sobnVsbClcIlxuICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgcGljayhudWxsKVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gY2hldnJvbi1zbG90IHBsYWNlaG9sZGVyIHNvIGFsbCByb3dzIGxpbmUgdXAgLS0+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWlubGluZS1ibG9jayBjcWEtdy01IGNxYS1oLTUgY3FhLXNocmluay0wXCI+PC9zcGFuPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidW5vcmdhbmlzZWRJY29uVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxzcGFuPnt7IGxhYmVscy5tb3ZlRGlhbG9nUm9vdCB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEZvbGRlciByb3dzIChmbGF0dGVuZWQsIGRlcHRoLWluZGVudGVkLCBjb2xsYXBzaWJsZSkgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0Zvcj1cImxldCByb3cgb2YgZmxhdFJvd3M7IHRyYWNrQnk6IHRyYWNrQnlJZFwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yLjUgY3FhLXB5LTIgY3FhLXByLTQgY3FhLWN1cnNvci1wb2ludGVyIGNxYS10cmFuc2l0aW9uLWNvbG9ycyBjcWEtdGV4dC1zbVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImlzUGlja2VkKHJvdy5pZCkgPyAnY3FhLWJnLWluZGlnby01MCBjcWEtdGV4dC1pbmRpZ28tNzAwJyA6ICdjcWEtdGV4dC1uZXV0cmFsLTgwMCBob3ZlcjpjcWEtYmctbmV1dHJhbC01MCdcIlxuICAgICAgICBbY2xhc3MuY3FhLW9wYWNpdHktNDBdPVwicm93LmRpc2FibGVkXCJcbiAgICAgICAgW2NsYXNzLmNxYS1jdXJzb3Itbm90LWFsbG93ZWRdPVwicm93LmRpc2FibGVkXCJcbiAgICAgICAgW3N0eWxlLnBhZGRpbmdMZWZ0LnB4XT1cIjE2ICsgcm93LmRlcHRoICogMjRcIlxuICAgICAgICAoY2xpY2spPVwiIXJvdy5kaXNhYmxlZCAmJiBwaWNrKHJvdy5pZClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCIhcm93LmRpc2FibGVkICYmIHBpY2socm93LmlkKVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiFyb3cuZGlzYWJsZWQgJiYgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7ICFyb3cuZGlzYWJsZWQgJiYgcGljayhyb3cuaWQpXCJcbiAgICAgID5cbiAgICAgICAgPCEtLSBDaGV2cm9uIHRvZ2dsZSBmb3IgZXhwYW5kYWJsZSBmb2xkZXJzIChwbGFjZWhvbGRlciBvdGhlcndpc2Ugc28gYWxpZ25tZW50IHN0YXlzKSAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwicm93Lmhhc0NoaWxkcmVuOyBlbHNlIGNoZXZyb25QbGFjZWhvbGRlclwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJjcWEtaW5saW5lLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctNSBjcWEtaC01IGNxYS1zaHJpbmstMCBjcWEtcm91bmRlZCBjcWEtdGV4dC1uZXV0cmFsLTYwMCBob3ZlcjpjcWEtYmctbmV1dHJhbC0xMDAgaG92ZXI6Y3FhLXRleHQtbmV1dHJhbC05MDBcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicm93LmV4cGFuZGVkID8gJ0NvbGxhcHNlICcgKyByb3cubmFtZSA6ICdFeHBhbmQgJyArIHJvdy5uYW1lXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlRXhwYW5kZWQocm93LmlkISwgJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgW2NsYXNzLmNxYS1yb3RhdGUtOTBdPVwicm93LmV4cGFuZGVkXCIgc3R5bGU9XCJ0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTIwbXMgZWFzZTtcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSAzTDkgN0w1IDExXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS44XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjaGV2cm9uUGxhY2Vob2xkZXI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtaW5saW5lLWJsb2NrIGNxYS13LTUgY3FhLWgtNSBjcWEtc2hyaW5rLTBcIj48L3NwYW4+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvbGRlckljb25UcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdHJ1bmNhdGVcIj57eyByb3cubmFtZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNb3ZlVG9Gb2xkZXJEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKiBGb2xkZXIgdHJlZSB0byBwaWNrIGZyb20uICovXG4gIEBJbnB1dCgpIGZvbGRlcnM6IEZvbGRlck5vZGVbXSA9IFtdO1xuICAvKiogTGFiZWwgb3ZlcnJpZGVzLiAqL1xuICBASW5wdXQoKSBsYWJlbHM6IE1vZHVsYXJMYWJlbHMgPSB7IC4uLkRFRkFVTFRfTU9EVUxBUl9MQUJFTFMgfTtcbiAgLyoqIFRoZSBmb2xkZXIgdGhlIHRlc3RzIGN1cnJlbnRseSBsaXZlIGluIOKAlCByZW5kZXJlZCBhcyBkaXNhYmxlZCAoY2FuJ3QgbW92ZSBpbnRvIGl0c2VsZikuICovXG4gIEBJbnB1dCgpIGN1cnJlbnRGb2xkZXJJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIC8qKiBDb250cm9scyB3aGljaCBmb2xkZXIgaXMgdmlzdWFsbHkgc2VsZWN0ZWQuIFR3by13YXktYmluZCBmcmllbmRseSB2aWEgYHBpY2tlZEZvbGRlcklkQ2hhbmdlYC4gKi9cbiAgQElucHV0KCkgcGlja2VkRm9sZGVySWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAvKiogRm9sZGVyIGlkcyB0byBleHBhbmQgYnkgZGVmYXVsdC4gSWYgbm90IHByb3ZpZGVkLCBhbmNlc3RvcnMgb2YgYGN1cnJlbnRGb2xkZXJJZGAgYXJlIGV4cGFuZGVkLiAqL1xuICBASW5wdXQoKSBpbml0aWFsRXhwYW5kZWRJZHM/OiBudW1iZXJbXTtcblxuICAvKiogRmlyZXMgd2hlbmV2ZXIgdGhlIHVzZXIgcGlja3MgYSBkZXN0aW5hdGlvbi4gKi9cbiAgQE91dHB1dCgpIGZvbGRlclBpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyIHwgbnVsbD4oKTtcbiAgLyoqIENvbXBhbmlvbiBvdXRwdXQgZm9yIGJhbmFuYS1pbi10aGUtYm94IGBbKHBpY2tlZEZvbGRlcklkKV1gIGJpbmRpbmcuICovXG4gIEBPdXRwdXQoKSBwaWNrZWRGb2xkZXJJZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyIHwgbnVsbD4oKTtcblxuICBwcml2YXRlIGV4cGFuZGVkSWRzID0gbmV3IFNldDxudW1iZXI+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VlZEV4cGFuZGVkSWRzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2luaXRpYWxFeHBhbmRlZElkcyddIHx8IGNoYW5nZXNbJ2N1cnJlbnRGb2xkZXJJZCddIHx8IGNoYW5nZXNbJ2ZvbGRlcnMnXSkge1xuICAgICAgdGhpcy5zZWVkRXhwYW5kZWRJZHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlZWRFeHBhbmRlZElkcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbml0aWFsRXhwYW5kZWRJZHM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5leHBhbmRlZElkcyA9IG5ldyBTZXQodGhpcy5pbml0aWFsRXhwYW5kZWRJZHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmV4cGFuZGVkSWRzID0gbmV3IFNldCgpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRGb2xkZXJJZCAhPSBudWxsKSB7XG4gICAgICBjb25zdCB0cmFpbDogbnVtYmVyW10gPSBbXTtcbiAgICAgIHRoaXMuY29sbGVjdEFuY2VzdG9ycyh0aGlzLmZvbGRlcnMsIHRoaXMuY3VycmVudEZvbGRlcklkLCB0cmFpbCk7XG4gICAgICB0cmFpbC5mb3JFYWNoKGlkID0+IHRoaXMuZXhwYW5kZWRJZHMuYWRkKGlkKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0QW5jZXN0b3JzKG5vZGVzOiBGb2xkZXJOb2RlW10sIHRhcmdldElkOiBudW1iZXIsIGFjYzogbnVtYmVyW10pOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IG4gb2Ygbm9kZXMgfHwgW10pIHtcbiAgICAgIGFjYy5wdXNoKG4uaWQpO1xuICAgICAgaWYgKG4uaWQgPT09IHRhcmdldElkKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmIChuLmNoaWxkcmVuICYmIHRoaXMuY29sbGVjdEFuY2VzdG9ycyhuLmNoaWxkcmVuLCB0YXJnZXRJZCwgYWNjKSkgcmV0dXJuIHRydWU7XG4gICAgICBhY2MucG9wKCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBmbGF0Um93cygpOiBGbGF0Rm9sZGVyUm93W10ge1xuICAgIGNvbnN0IG91dDogRmxhdEZvbGRlclJvd1tdID0gW107XG4gICAgY29uc3Qgd2FsayA9IChub2RlczogRm9sZGVyTm9kZVtdLCBkZXB0aDogbnVtYmVyKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG4gb2Ygbm9kZXMgfHwgW10pIHtcbiAgICAgICAgY29uc3QgaGFzQ2hpbGRyZW4gPSAhIShuLmNoaWxkcmVuICYmIG4uY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkSWRzLmhhcyhuLmlkKTtcbiAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgIGlkOiBuLmlkLFxuICAgICAgICAgIG5hbWU6IG4ubmFtZSxcbiAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICBkaXNhYmxlZDogbi5pZCA9PT0gdGhpcy5jdXJyZW50Rm9sZGVySWQsXG4gICAgICAgICAgaGFzQ2hpbGRyZW4sXG4gICAgICAgICAgZXhwYW5kZWQsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaGFzQ2hpbGRyZW4gJiYgZXhwYW5kZWQpIHdhbGsobi5jaGlsZHJlbiEsIGRlcHRoICsgMSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3YWxrKHRoaXMuZm9sZGVycywgMCk7XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGlzUGlja2VkKGlkOiBudW1iZXIgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2VkRm9sZGVySWQgPT09IGlkO1xuICB9XG5cbiAgcGljayhpZDogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMucGlja2VkRm9sZGVySWQgPSBpZDtcbiAgICB0aGlzLmZvbGRlclBpY2tlZC5lbWl0KGlkKTtcbiAgICB0aGlzLnBpY2tlZEZvbGRlcklkQ2hhbmdlLmVtaXQoaWQpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgdG9nZ2xlRXhwYW5kZWQoaWQ6IG51bWJlciwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWRJZHMuaGFzKGlkKSkge1xuICAgICAgdGhpcy5leHBhbmRlZElkcy5kZWxldGUoaWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV4cGFuZGVkSWRzLmFkZChpZCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgdHJhY2tCeUlkID0gKF86IG51bWJlciwgcm93OiBGbGF0Rm9sZGVyUm93KSA9PiByb3cuaWQgPz8gLTE7XG59XG4iXX0=
|
|
289
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW92ZS10by1mb2xkZXItZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdGVtcGxhdGVzL21vZHVsYXItdGFibGUtdGVtcGxhdGUvZGlhbG9ncy9tb3ZlLXRvLWZvbGRlci1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBNkIsTUFBTSxrQ0FBa0MsQ0FBQzs7O0FBV3JHOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBOEVILE1BQU0sT0FBTywyQkFBMkI7SUE4QnRDLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBN0IxQyxnQ0FBZ0M7UUFDdkIsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFDcEMsdUJBQXVCO1FBQ2QsV0FBTSxHQUFrQixFQUFFLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztRQUMvRCw4RkFBOEY7UUFDckYsb0JBQWUsR0FBa0IsSUFBSSxDQUFDO1FBQy9DLG9HQUFvRztRQUMzRixtQkFBYyxHQUFrQixJQUFJLENBQUM7UUFLOUM7OztpREFHeUM7UUFDaEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFdkM7cUZBQzZFO1FBQ3BFLGlCQUFZLEdBQVcsT0FBTyxDQUFDO1FBRXhDLG1EQUFtRDtRQUN6QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBQzNELDJFQUEyRTtRQUNqRSx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUUzRCxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUF1RnhDLGNBQVMsR0FBRyxDQUFDLENBQVMsRUFBRSxHQUFrQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENB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QkFBMkIsWUFDM0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzRVQsUUFFSyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsbUJBQ2IsdUJBQXVCLENBQUMsTUFBTTt3R0FJdEMsT0FBTztzQkFBZixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csa0JBQWtCO3NCQUExQixLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFHSSxZQUFZO3NCQUFyQixNQUFNO2dCQUVHLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERFRkFVTFRfTU9EVUxBUl9MQUJFTFMsIEZvbGRlck5vZGUsIE1vZHVsYXJMYWJlbHMgfSBmcm9tICcuLi9tb2R1bGFyLXRhYmxlLXRlbXBsYXRlLm1vZGVscyc7XG5cbmludGVyZmFjZSBGbGF0Rm9sZGVyUm93IHtcbiAgaWQ6IG51bWJlciB8IG51bGw7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVwdGg6IG51bWJlcjtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIGhhc0NoaWxkcmVuOiBib29sZWFuO1xuICBleHBhbmRlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBGb2xkZXItcGlja2VyIGJvZHkgdXNlZCBpbnNpZGUgdGhlIE1vdmUtdG8tRm9sZGVyIGRpYWxvZy5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyBkZXNpZ25lZCB0byBiZSB1c2FibGUgdHdvIHdheXM6XG4gKlxuICogIDEuICoqRnJvbSBpbnNpZGUgdGhlIGxpYnJhcnkqKiB2aWEgYERpYWxvZ1NlcnZpY2Uub3Blbih7IGNvbnRlbnQ6IHsgdHlwZTogJ2NvbXBvbmVudCcsIGNvbXBvbmVudDogTW92ZVRvRm9sZGVyRGlhbG9nQ29tcG9uZW50LCBpbnB1dHM6IHsuLi59IH0gfSlgLlxuICogICAgIFRoZSBvdXRlciBgY3FhLWRpYWxvZ2AgcHJvdmlkZXMgdGhlIHRpdGxlLCBkZXNjcmlwdGlvbiwgQ2FuY2VsIGFuZCBcIk1vdmUgaGVyZVwiXG4gKiAgICAgYnV0dG9uczsgdGhlIE1vdmUgYnV0dG9uIHJlYWRzIGBwaWNrZWRGb2xkZXJJZGAgdmlhIGBkaWFsb2dSZWYuZ2V0Q29tcG9uZW50SW5zdGFuY2UoKWAuXG4gKlxuICogIDIuICoqRnJvbSB0aGUgaG9zdC9VSSBsYXllciBkaXJlY3RseSoqIG9uY2UgQVBJIG93bmVyc2hpcCBtb3ZlcyB1cC4gVGhlIGhvc3RcbiAqICAgICByZW5kZXJzIGA8Y3FhLW1vdmUtdG8tZm9sZGVyLWRpYWxvZz5gIGluc2lkZSBpdHMgb3duIG1vZGFsIHNoZWxsIGFuZFxuICogICAgIGxpc3RlbnMgdG8gYChmb2xkZXJQaWNrZWQpYCAoZmlyZXMgb24gZXZlcnkgcGljaykgdG8gZHJpdmUgaXRzIG93biBcIk1vdmUgaGVyZVwiXG4gKiAgICAgYnV0dG9uLiBBbGwgdmlzdWFsIHN0YXRlIGxpdmVzIG9uIGBwaWNrZWRGb2xkZXJJZGAgc28gaG9zdHMgY2FuIGFsc28gdHdvLXdheVxuICogICAgIGJpbmQgaWYgdGhleSBwcmVmZXIuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1tb3ZlLXRvLWZvbGRlci1kaWFsb2cnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDwhLS0gUmV1c2FibGUgb3V0bGluZWQgZm9sZGVyIGljb24uIFN0cm9rZSB1c2VzIGN1cnJlbnRDb2xvciBzbyB0aGUgcm93J3MgdGV4dCBjb2xvciBkcml2ZXMgdGhlIGljb24uIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjZm9sZGVySWNvblRwbD5cbiAgICAgIDxzdmcgd2lkdGg9XCIxN1wiIGhlaWdodD1cIjE1XCIgdmlld0JveD1cIjAgMCAxNyAxNVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwiY3FhLXNocmluay0wXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTUuNjM3NSAxMi42Mzc3QzE1LjYzNzUgMTMuMDM1NSAxNS40Nzk0IDEzLjQxNzEgMTUuMTk4MSAxMy42OTg0QzE0LjkxNjggMTMuOTc5NyAxNC41MzUzIDE0LjEzNzcgMTQuMTM3NSAxNC4xMzc3SDIuMTM3NDVDMS43Mzk2MyAxNC4xMzc3IDEuMzU4MSAxMy45Nzk3IDEuMDc2NzkgMTMuNjk4NEMwLjc5NTQ4NiAxMy40MTcxIDAuNjM3NDUxIDEzLjAzNTUgMC42Mzc0NTEgMTIuNjM3N1YyLjEzNzdDMC42Mzc0NTEgMS43Mzk4NyAwLjc5NTQ4NiAxLjM1ODM0IDEuMDc2NzkgMS4wNzcwNEMxLjM1ODEgMC43OTU3MzEgMS43Mzk2MyAwLjYzNzY5NSAyLjEzNzQ1IDAuNjM3Njk1SDUuODg3NDVMNy4zODc0NSAyLjg4NzdIMTQuMTM3NUMxNC41MzUzIDIuODg3NyAxNC45MTY4IDMuMDQ1NzMgMTUuMTk4MSAzLjMyNzA0QzE1LjQ3OTQgMy42MDgzNCAxNS42Mzc1IDMuOTg5ODcgMTUuNjM3NSA0LjM4NzdWMTIuNjM3N1pcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjI3NVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIFJldXNhYmxlIG91dGxpbmVkIGFyY2hpdmUvaW5ib3ggaWNvbiBmb3IgdGhlIFwiVW5vcmdhbmlzZWRcIiBlbnRyeS4gLS0+XG4gICAgPG5nLXRlbXBsYXRlICN1bm9yZ2FuaXNlZEljb25UcGw+XG4gICAgICA8c3ZnIHdpZHRoPVwiMTdcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMTcgMTVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBjbGFzcz1cImNxYS1zaHJpbmstMFwiPlxuICAgICAgICA8cGF0aCBkPVwiTTE0LjY4NzUgNS41VjEyLjVDMTQuNjg3NSAxMy4zIDE0LjAzNzUgMTQgMTMuMTg3NSAxNEgzLjgxMjVDMi45NjI1IDE0IDIuMzEyNSAxMy4zIDIuMzEyNSAxMi41VjUuNU0xNC42ODc1IDUuNUwxMi43ODc1IDEuN0MxMi41Mzc1IDEuMiAxMi4wODc1IDEgMTEuNTg3NSAxSDUuNDEyNUM0LjkxMjUgMSA0LjQ2MjUgMS4yIDQuMjEyNSAxLjdMMi4zMTI1IDUuNU0xNC42ODc1IDUuNUgyLjMxMjVNNi4xODc1IDguNUgxMC44MTI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4yNzVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1bI0UyRTJFM10gY3FhLXJvdW5kZWQtWzEwcHhdIGNxYS1weS0yIGNxYS13LWZ1bGwgY3FhLW92ZXJmbG93LXktYXV0byBjcWEtYmctd2hpdGUgY3FhLXNjcm9sbGJhci10aGluXCIgW3N0eWxlLmhlaWdodF09XCJwaWNrZXJIZWlnaHRcIj5cbiAgICAgIDwhLS0gVW5vcmdhbmlzZWQgKHJvb3QgLyBubyBmb2xkZXIpIC0tPlxuICAgICAgPGRpdlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMi41IGNxYS1weC00IGNxYS1weS0yIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgY3FhLXRleHQtc21cIlxuICAgICAgICBbbmdDbGFzc109XCJpc1BpY2tlZChudWxsKSA/ICdjcWEtYmctaW5kaWdvLTUwIGNxYS10ZXh0LWluZGlnby03MDAnIDogJ2NxYS10ZXh0LW5ldXRyYWwtODAwIGhvdmVyOmNxYS1iZy1uZXV0cmFsLTUwJ1wiXG4gICAgICAgIFtjbGFzcy5jcWEtb3BhY2l0eS00MF09XCJpc1Vub3JnYW5pc2VkRGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MuY3FhLWN1cnNvci1ub3QtYWxsb3dlZF09XCJpc1Vub3JnYW5pc2VkRGlzYWJsZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzVW5vcmdhbmlzZWREaXNhYmxlZCB8fCBudWxsXCJcbiAgICAgICAgKGNsaWNrKT1cIiFpc1Vub3JnYW5pc2VkRGlzYWJsZWQgJiYgcGljayhudWxsKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIiFpc1Vub3JnYW5pc2VkRGlzYWJsZWQgJiYgcGljayhudWxsKVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAhaXNVbm9yZ2FuaXNlZERpc2FibGVkICYmIHBpY2sobnVsbClcIlxuICAgICAgPlxuICAgICAgICA8IS0tIGNoZXZyb24tc2xvdCBwbGFjZWhvbGRlciBzbyBhbGwgcm93cyBsaW5lIHVwIC0tPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1pbmxpbmUtYmxvY2sgY3FhLXctNSBjcWEtaC01IGNxYS1zaHJpbmstMFwiPjwvc3Bhbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVub3JnYW5pc2VkSWNvblRwbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8c3Bhbj57eyBsYWJlbHMubW92ZURpYWxvZ1Jvb3QgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBGb2xkZXIgcm93cyAoZmxhdHRlbmVkLCBkZXB0aC1pbmRlbnRlZCwgY29sbGFwc2libGUpIC0tPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgcm93IG9mIGZsYXRSb3dzOyB0cmFja0J5OiB0cmFja0J5SWRcIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMi41IGNxYS1weS0yIGNxYS1wci00IGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtdHJhbnNpdGlvbi1jb2xvcnMgY3FhLXRleHQtc21cIlxuICAgICAgICBbbmdDbGFzc109XCJpc1BpY2tlZChyb3cuaWQpID8gJ2NxYS1iZy1pbmRpZ28tNTAgY3FhLXRleHQtaW5kaWdvLTcwMCcgOiAnY3FhLXRleHQtbmV1dHJhbC04MDAgaG92ZXI6Y3FhLWJnLW5ldXRyYWwtNTAnXCJcbiAgICAgICAgW2NsYXNzLmNxYS1vcGFjaXR5LTQwXT1cInJvdy5kaXNhYmxlZFwiXG4gICAgICAgIFtjbGFzcy5jcWEtY3Vyc29yLW5vdC1hbGxvd2VkXT1cInJvdy5kaXNhYmxlZFwiXG4gICAgICAgIFtzdHlsZS5wYWRkaW5nTGVmdC5weF09XCIxNiArIHJvdy5kZXB0aCAqIDI0XCJcbiAgICAgICAgKGNsaWNrKT1cIiFyb3cuZGlzYWJsZWQgJiYgcGljayhyb3cuaWQpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiIXJvdy5kaXNhYmxlZCAmJiBwaWNrKHJvdy5pZClcIlxuICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCIhcm93LmRpc2FibGVkICYmICRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAhcm93LmRpc2FibGVkICYmIHBpY2socm93LmlkKVwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gQ2hldnJvbiB0b2dnbGUgZm9yIGV4cGFuZGFibGUgZm9sZGVycyAocGxhY2Vob2xkZXIgb3RoZXJ3aXNlIHNvIGFsaWdubWVudCBzdGF5cykgLS0+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cInJvdy5oYXNDaGlsZHJlbjsgZWxzZSBjaGV2cm9uUGxhY2Vob2xkZXJcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LTUgY3FhLWgtNSBjcWEtc2hyaW5rLTAgY3FhLXJvdW5kZWQgY3FhLXRleHQtbmV1dHJhbC02MDAgaG92ZXI6Y3FhLWJnLW5ldXRyYWwtMTAwIGhvdmVyOmNxYS10ZXh0LW5ldXRyYWwtOTAwXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInJvdy5leHBhbmRlZCA/ICdDb2xsYXBzZSAnICsgcm93Lm5hbWUgOiAnRXhwYW5kICcgKyByb3cubmFtZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZGVkKHJvdy5pZCEsICRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5jcWEtcm90YXRlLTkwXT1cInJvdy5leHBhbmRlZFwiIHN0eWxlPVwidHJhbnNpdGlvbjogdHJhbnNmb3JtIDEyMG1zIGVhc2U7XCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTUgM0w5IDdMNSAxMVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuOFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjY2hldnJvblBsYWNlaG9sZGVyPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWlubGluZS1ibG9jayBjcWEtdy01IGNxYS1oLTUgY3FhLXNocmluay0wXCI+PC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb2xkZXJJY29uVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRydW5jYXRlXCI+e3sgcm93Lm5hbWUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTW92ZVRvRm9sZGVyRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvKiogRm9sZGVyIHRyZWUgdG8gcGljayBmcm9tLiAqL1xuICBASW5wdXQoKSBmb2xkZXJzOiBGb2xkZXJOb2RlW10gPSBbXTtcbiAgLyoqIExhYmVsIG92ZXJyaWRlcy4gKi9cbiAgQElucHV0KCkgbGFiZWxzOiBNb2R1bGFyTGFiZWxzID0geyAuLi5ERUZBVUxUX01PRFVMQVJfTEFCRUxTIH07XG4gIC8qKiBUaGUgZm9sZGVyIHRoZSB0ZXN0cyBjdXJyZW50bHkgbGl2ZSBpbiDigJQgcmVuZGVyZWQgYXMgZGlzYWJsZWQgKGNhbid0IG1vdmUgaW50byBpdHNlbGYpLiAqL1xuICBASW5wdXQoKSBjdXJyZW50Rm9sZGVySWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAvKiogQ29udHJvbHMgd2hpY2ggZm9sZGVyIGlzIHZpc3VhbGx5IHNlbGVjdGVkLiBUd28td2F5LWJpbmQgZnJpZW5kbHkgdmlhIGBwaWNrZWRGb2xkZXJJZENoYW5nZWAuICovXG4gIEBJbnB1dCgpIHBpY2tlZEZvbGRlcklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgLyoqIEZvbGRlciBpZHMgdG8gZXhwYW5kIGJ5IGRlZmF1bHQuIElmIG5vdCBwcm92aWRlZCwgYW5jZXN0b3JzIG9mIGBjdXJyZW50Rm9sZGVySWRgIChvclxuICAgKiAgYHBpY2tlZEZvbGRlcklkYCwgd2hlbiBubyBjdXJyZW50IGNvbnRleHQgZXhpc3RzKSBhcmUgZXhwYW5kZWQuICovXG4gIEBJbnB1dCgpIGluaXRpYWxFeHBhbmRlZElkcz86IG51bWJlcltdO1xuXG4gIC8qKiBEaXNhYmxlcyB0aGUgdG9wLWxldmVsIFwiVW5vcmdhbmlzZWQgLyBubyBmb2xkZXJcIiByb3cuIERlY291cGxlZCBmcm9tIGBjdXJyZW50Rm9sZGVySWRgXG4gICAqICBzbyBjb25zdW1lcnMgdGhhdCByZXVzZSB0aGlzIHBpY2tlciBmb3Igbm9uLW1vdmUgZmxvd3MgKGUuZy4gcGFyZW50LWZvbGRlciBzZWxlY3Rpb25cbiAgICogIGluc2lkZSB0aGUgTmV3IEZvbGRlciBkaWFsb2cpIGNhbiBrZWVwIHRoZSByb290IG9wdGlvbiBjbGlja2FibGUuIFRoZSBtb3ZlIGZsb3dzIHdpcmVcbiAgICogIHRoaXMgdG8gYGN1cnJlbnRGb2xkZXJJZCA9PSBudWxsYC4gKi9cbiAgQElucHV0KCkgcm9vdERpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIENTUyBoZWlnaHQgZm9yIHRoZSBzY3JvbGxhYmxlIHBpY2tlciBjb250YWluZXIuIExldHMgZW1iZWRkZXJzIHNocmluayB0aGUgcGlja2VyIHdoZW5cbiAgICogIGl0IHNoYXJlcyBzcGFjZSB3aXRoIG90aGVyIGZpZWxkcyAoZS5nLiBpbnNpZGUgdGhlIE5ldyBGb2xkZXIgZGlhbG9nKS4gKi9cbiAgQElucHV0KCkgcGlja2VySGVpZ2h0OiBzdHJpbmcgPSAnMzYwcHgnO1xuXG4gIC8qKiBGaXJlcyB3aGVuZXZlciB0aGUgdXNlciBwaWNrcyBhIGRlc3RpbmF0aW9uLiAqL1xuICBAT3V0cHV0KCkgZm9sZGVyUGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuICAvKiogQ29tcGFuaW9uIG91dHB1dCBmb3IgYmFuYW5hLWluLXRoZS1ib3ggYFsocGlja2VkRm9sZGVySWQpXWAgYmluZGluZy4gKi9cbiAgQE91dHB1dCgpIHBpY2tlZEZvbGRlcklkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuXG4gIHByaXZhdGUgZXhwYW5kZWRJZHMgPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWVkRXhwYW5kZWRJZHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snaW5pdGlhbEV4cGFuZGVkSWRzJ10gfHwgY2hhbmdlc1snY3VycmVudEZvbGRlcklkJ10gfHwgY2hhbmdlc1sncGlja2VkRm9sZGVySWQnXSB8fCBjaGFuZ2VzWydmb2xkZXJzJ10pIHtcbiAgICAgIHRoaXMuc2VlZEV4cGFuZGVkSWRzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZWVkRXhwYW5kZWRJZHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5pdGlhbEV4cGFuZGVkSWRzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZXhwYW5kZWRJZHMgPSBuZXcgU2V0KHRoaXMuaW5pdGlhbEV4cGFuZGVkSWRzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5leHBhbmRlZElkcyA9IG5ldyBTZXQoKTtcbiAgICAvLyBQcmVmZXIgY3VycmVudEZvbGRlcklkICh0aGUgZGlzYWJsZWQgXCJzZWxmXCIgcm93KSBzbyB0aGUgdXNlciBsYW5kcyBvbiBpdDsgZmFsbCBiYWNrXG4gICAgLy8gdG8gcGlja2VkRm9sZGVySWQgc28gbm9uLW1vdmUgZmxvd3MgKGUuZy4gcGFyZW50IHBpY2tlcikgc3RpbGwgb3BlbiB3aXRoIHRoZVxuICAgIC8vIHByZS1zZWxlY3RlZCBub2RlIHZpc2libGUuXG4gICAgY29uc3Qgc2VlZCA9IHRoaXMuY3VycmVudEZvbGRlcklkICE9IG51bGwgPyB0aGlzLmN1cnJlbnRGb2xkZXJJZCA6IHRoaXMucGlja2VkRm9sZGVySWQ7XG4gICAgaWYgKHNlZWQgIT0gbnVsbCkge1xuICAgICAgY29uc3QgdHJhaWw6IG51bWJlcltdID0gW107XG4gICAgICB0aGlzLmNvbGxlY3RBbmNlc3RvcnModGhpcy5mb2xkZXJzLCBzZWVkLCB0cmFpbCk7XG4gICAgICB0cmFpbC5mb3JFYWNoKGlkID0+IHRoaXMuZXhwYW5kZWRJZHMuYWRkKGlkKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0QW5jZXN0b3JzKG5vZGVzOiBGb2xkZXJOb2RlW10sIHRhcmdldElkOiBudW1iZXIsIGFjYzogbnVtYmVyW10pOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IG4gb2Ygbm9kZXMgfHwgW10pIHtcbiAgICAgIGFjYy5wdXNoKG4uaWQpO1xuICAgICAgaWYgKG4uaWQgPT09IHRhcmdldElkKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmIChuLmNoaWxkcmVuICYmIHRoaXMuY29sbGVjdEFuY2VzdG9ycyhuLmNoaWxkcmVuLCB0YXJnZXRJZCwgYWNjKSkgcmV0dXJuIHRydWU7XG4gICAgICBhY2MucG9wKCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBmbGF0Um93cygpOiBGbGF0Rm9sZGVyUm93W10ge1xuICAgIGNvbnN0IG91dDogRmxhdEZvbGRlclJvd1tdID0gW107XG4gICAgY29uc3Qgd2FsayA9IChub2RlczogRm9sZGVyTm9kZVtdLCBkZXB0aDogbnVtYmVyKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG4gb2Ygbm9kZXMgfHwgW10pIHtcbiAgICAgICAgY29uc3QgaGFzQ2hpbGRyZW4gPSAhIShuLmNoaWxkcmVuICYmIG4uY2hpbGRyZW4ubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkSWRzLmhhcyhuLmlkKTtcbiAgICAgICAgb3V0LnB1c2goe1xuICAgICAgICAgIGlkOiBuLmlkLFxuICAgICAgICAgIG5hbWU6IG4ubmFtZSxcbiAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICBkaXNhYmxlZDogbi5pZCA9PT0gdGhpcy5jdXJyZW50Rm9sZGVySWQsXG4gICAgICAgICAgaGFzQ2hpbGRyZW4sXG4gICAgICAgICAgZXhwYW5kZWQsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaGFzQ2hpbGRyZW4gJiYgZXhwYW5kZWQpIHdhbGsobi5jaGlsZHJlbiEsIGRlcHRoICsgMSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3YWxrKHRoaXMuZm9sZGVycywgMCk7XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIGlzUGlja2VkKGlkOiBudW1iZXIgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGlja2VkRm9sZGVySWQgPT09IGlkO1xuICB9XG5cbiAgZ2V0IGlzVW5vcmdhbmlzZWREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb290RGlzYWJsZWQ7XG4gIH1cblxuICBwaWNrKGlkOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5waWNrZWRGb2xkZXJJZCA9IGlkO1xuICAgIHRoaXMuZm9sZGVyUGlja2VkLmVtaXQoaWQpO1xuICAgIHRoaXMucGlja2VkRm9sZGVySWRDaGFuZ2UuZW1pdChpZCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB0b2dnbGVFeHBhbmRlZChpZDogbnVtYmVyLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5leHBhbmRlZElkcy5oYXMoaWQpKSB7XG4gICAgICB0aGlzLmV4cGFuZGVkSWRzLmRlbGV0ZShpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXhwYW5kZWRJZHMuYWRkKGlkKTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB0cmFja0J5SWQgPSAoXzogbnVtYmVyLCByb3c6IEZsYXRGb2xkZXJSb3cpID0+IHJvdy5pZCA/PyAtMTtcbn1cbiJdfQ==
|
package/esm2020/lib/templates/modular-table-template/dialogs/new-folder-dialog.component.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
-
import { FormControl, FormGroup } from '@angular/forms';
|
|
3
2
|
import { DEFAULT_MODULAR_LABELS } from '../modular-table-template.models';
|
|
4
3
|
import * as i0 from "@angular/core";
|
|
5
4
|
import * as i1 from "../../../custom-input/custom-input.component";
|
|
6
|
-
import * as i2 from "
|
|
5
|
+
import * as i2 from "./move-to-folder-dialog.component";
|
|
7
6
|
import * as i3 from "@angular/common";
|
|
8
7
|
export const DEFAULT_FOLDER_COLOR = '#99999E';
|
|
8
|
+
export const FOLDER_NAME_MAX_LENGTH = 20;
|
|
9
9
|
const PRESET_FOLDER_COLORS = [
|
|
10
10
|
DEFAULT_FOLDER_COLOR,
|
|
11
11
|
'#4F46E5',
|
|
@@ -20,8 +20,10 @@ const PRESET_FOLDER_COLORS = [
|
|
|
20
20
|
* Body of the "New Folder" dialog.
|
|
21
21
|
*
|
|
22
22
|
* Uses reusable library components (`cqa-custom-input` for the name field,
|
|
23
|
-
* `cqa-
|
|
24
|
-
* into their own modal shell without worrying
|
|
23
|
+
* `cqa-move-to-folder-dialog` as an embedded tree picker for the parent folder)
|
|
24
|
+
* so hosts can drop this dialog into their own modal shell without worrying
|
|
25
|
+
* about styling drift. The tree picker handles arbitrarily deep nesting via
|
|
26
|
+
* expand/collapse rather than a flat dropdown of "A › B › C ›…" paths.
|
|
25
27
|
*
|
|
26
28
|
* Two integration paths:
|
|
27
29
|
*
|
|
@@ -36,16 +38,19 @@ const PRESET_FOLDER_COLORS = [
|
|
|
36
38
|
export class NewFolderDialogComponent {
|
|
37
39
|
constructor(cdr) {
|
|
38
40
|
this.cdr = cdr;
|
|
39
|
-
// NOTE:
|
|
40
|
-
// because `DialogService.open(...)` assigns the `inputs` map via direct
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
//
|
|
44
|
-
// array and the parent-folder dropdown would render empty / appear broken.
|
|
41
|
+
// NOTE: `folders` and `labels` are declared as setters (instead of plain @Input fields)
|
|
42
|
+
// because `DialogService.open(...)` assigns the `inputs` map via direct property
|
|
43
|
+
// assignment *after* `attachComponent` has already run the component's lifecycle
|
|
44
|
+
// hooks — direct assignment bypasses `ngOnChanges`, so setters keep derived state
|
|
45
|
+
// (e.g. `parentPickerLabels`) in sync no matter the assignment order.
|
|
45
46
|
this._folders = [];
|
|
46
47
|
this._labels = { ...DEFAULT_MODULAR_LABELS };
|
|
47
48
|
this.name = '';
|
|
48
|
-
|
|
49
|
+
/** Tracks whether the user has interacted with the name field, so we don't surface
|
|
50
|
+
* the "required" error on first paint when the dialog opens with an empty name. */
|
|
51
|
+
this.nameTouched = false;
|
|
52
|
+
this.maxNameLength = FOLDER_NAME_MAX_LENGTH;
|
|
53
|
+
this.parentId = null;
|
|
49
54
|
this.color = DEFAULT_FOLDER_COLOR;
|
|
50
55
|
this.presetColors = PRESET_FOLDER_COLORS;
|
|
51
56
|
this.rainbowBorder = 'conic-gradient(from 0deg, #ef4444, #f59e0b, #eab308, #10b981, #06b6d4, #4f46e5, #8b5cf6, #ec4899, #ef4444)';
|
|
@@ -54,79 +59,35 @@ export class NewFolderDialogComponent {
|
|
|
54
59
|
this.colorChange = new EventEmitter();
|
|
55
60
|
this.submitted = new EventEmitter();
|
|
56
61
|
this.cancelled = new EventEmitter();
|
|
57
|
-
/**
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
this.
|
|
62
|
+
/** Labels passed to the embedded tree picker. Re-uses the move-dialog surface but
|
|
63
|
+
* rewrites the root row's label so it reads "(no parent)" instead of "Unorganised"
|
|
64
|
+
* for the create-folder context. */
|
|
65
|
+
this.parentPickerLabels = this.buildParentPickerLabels();
|
|
61
66
|
}
|
|
62
67
|
set folders(value) {
|
|
63
68
|
this._folders = value || [];
|
|
64
|
-
this.
|
|
65
|
-
this.rebuildSelectConfig();
|
|
69
|
+
this.cdr.markForCheck();
|
|
66
70
|
}
|
|
67
71
|
get folders() { return this._folders; }
|
|
68
72
|
set labels(value) {
|
|
69
73
|
this._labels = value || { ...DEFAULT_MODULAR_LABELS };
|
|
70
|
-
this.
|
|
71
|
-
}
|
|
72
|
-
get labels() { return this._labels; }
|
|
73
|
-
set parentId(value) {
|
|
74
|
-
this._parentId = value ?? null;
|
|
75
|
-
this.syncParentControl();
|
|
76
|
-
}
|
|
77
|
-
get parentId() { return this._parentId; }
|
|
78
|
-
ngOnInit() {
|
|
79
|
-
// Setters above already rebuilt config once folders/labels were assigned. This
|
|
80
|
-
// just ensures the form control matches the current parentId value in case
|
|
81
|
-
// ordering of input assignment differs.
|
|
82
|
-
this.syncParentControl();
|
|
83
|
-
}
|
|
84
|
-
rebuildSelectConfig() {
|
|
85
|
-
this.parentSelectConfig = {
|
|
86
|
-
key: 'parentId',
|
|
87
|
-
label: this.labels.newFolderDialogParentLabel,
|
|
88
|
-
placeholder: this.labels.newFolderDialogParentNone,
|
|
89
|
-
searchable: false,
|
|
90
|
-
multiple: false,
|
|
91
|
-
closeOnSelect: true,
|
|
92
|
-
options: [
|
|
93
|
-
// `getOptionValue` in cqa-dynamic-select returns `id ?? value`, so using
|
|
94
|
-
// `value: null` (with no id) yields a stable `null` resolved value that
|
|
95
|
-
// matches the FormControl's null state.
|
|
96
|
-
{ value: null, name: this.labels.newFolderDialogParentNone },
|
|
97
|
-
...this.parentOptions.map(o => ({ id: o.id, name: o.label })),
|
|
98
|
-
],
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
rebuildOptions() {
|
|
102
|
-
const opts = [];
|
|
103
|
-
const walk = (nodes, trail) => {
|
|
104
|
-
for (const n of nodes || []) {
|
|
105
|
-
const label = [...trail, n.name].join(' › ');
|
|
106
|
-
opts.push({ id: n.id, label });
|
|
107
|
-
if (n.children?.length)
|
|
108
|
-
walk(n.children, [...trail, n.name]);
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
walk(this.folders, []);
|
|
112
|
-
this.parentOptions = opts;
|
|
74
|
+
this.parentPickerLabels = this.buildParentPickerLabels();
|
|
113
75
|
this.cdr.markForCheck();
|
|
114
76
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
this.
|
|
77
|
+
get labels() { return this._labels; }
|
|
78
|
+
buildParentPickerLabels() {
|
|
79
|
+
return { ...this._labels, moveDialogRoot: this._labels.newFolderDialogParentNone };
|
|
118
80
|
}
|
|
119
81
|
onNameChange(value) {
|
|
120
82
|
this.name = value;
|
|
83
|
+
this.nameTouched = true;
|
|
121
84
|
this.nameChange.emit(value);
|
|
122
85
|
}
|
|
123
|
-
|
|
124
|
-
//
|
|
125
|
-
// parent tree are numeric so we coerce defensively.
|
|
126
|
-
const raw = event?.value;
|
|
86
|
+
onParentPicked(id) {
|
|
87
|
+
// The tree picker emits `null` for the "(no parent)" sentinel; numeric otherwise.
|
|
127
88
|
let next = null;
|
|
128
|
-
if (
|
|
129
|
-
const coerced = typeof
|
|
89
|
+
if (id != null) {
|
|
90
|
+
const coerced = typeof id === 'number' ? id : Number(id);
|
|
130
91
|
if (Number.isFinite(coerced))
|
|
131
92
|
next = coerced;
|
|
132
93
|
}
|
|
@@ -153,9 +114,26 @@ export class NewFolderDialogComponent {
|
|
|
153
114
|
if (target)
|
|
154
115
|
this.onColorChange(target.value);
|
|
155
116
|
}
|
|
156
|
-
/**
|
|
117
|
+
/** Errors surfaced under the name field. Only computed once the user has touched
|
|
118
|
+
* the input so the dialog doesn't open with a "required" error already showing. */
|
|
119
|
+
get nameErrors() {
|
|
120
|
+
if (!this.nameTouched)
|
|
121
|
+
return [];
|
|
122
|
+
const trimmed = (this.name || '').trim();
|
|
123
|
+
const errors = [];
|
|
124
|
+
if (!trimmed) {
|
|
125
|
+
errors.push(this.labels.newFolderDialogNameRequiredError);
|
|
126
|
+
}
|
|
127
|
+
else if (trimmed.length > this.maxNameLength) {
|
|
128
|
+
errors.push(this.labels.newFolderDialogNameMaxLengthError);
|
|
129
|
+
}
|
|
130
|
+
return errors;
|
|
131
|
+
}
|
|
132
|
+
/** Returns true when the current state is a valid submission (non-empty trimmed name
|
|
133
|
+
* within the max length). Used by the host to gate the dialog's Create button. */
|
|
157
134
|
get isValid() {
|
|
158
|
-
|
|
135
|
+
const trimmed = (this.name || '').trim();
|
|
136
|
+
return trimmed.length > 0 && trimmed.length <= this.maxNameLength;
|
|
159
137
|
}
|
|
160
138
|
submit() {
|
|
161
139
|
if (!this.isValid)
|
|
@@ -176,18 +154,25 @@ NewFolderDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
176
154
|
[required]="true"
|
|
177
155
|
[placeholder]="labels.newFolderDialogNamePlaceholder"
|
|
178
156
|
[value]="name"
|
|
157
|
+
[errors]="nameErrors"
|
|
179
158
|
[fullWidth]="true"
|
|
180
159
|
(valueChange)="onNameChange($event)"
|
|
181
160
|
(enterPressed)="submit()"
|
|
182
161
|
></cqa-custom-input>
|
|
183
162
|
|
|
184
|
-
<!-- Parent folder -->
|
|
185
|
-
<cqa-
|
|
186
|
-
class="cqa-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
163
|
+
<!-- Parent folder — tree picker (handles arbitrarily deep nesting via expand/collapse) -->
|
|
164
|
+
<div class="cqa-flex cqa-flex-col cqa-gap-2">
|
|
165
|
+
<label class="cqa-text-sm cqa-font-medium cqa-text-neutral-700">
|
|
166
|
+
{{ labels.newFolderDialogParentLabel }}
|
|
167
|
+
</label>
|
|
168
|
+
<cqa-move-to-folder-dialog
|
|
169
|
+
[folders]="folders"
|
|
170
|
+
[labels]="parentPickerLabels"
|
|
171
|
+
[pickedFolderId]="parentId"
|
|
172
|
+
[pickerHeight]="'240px'"
|
|
173
|
+
(pickedFolderIdChange)="onParentPicked($event)"
|
|
174
|
+
></cqa-move-to-folder-dialog>
|
|
175
|
+
</div>
|
|
191
176
|
|
|
192
177
|
<!-- Folder color (optional) -->
|
|
193
178
|
<div class="cqa-flex cqa-flex-col cqa-gap-2">
|
|
@@ -246,7 +231,7 @@ NewFolderDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
|
|
|
246
231
|
</div>
|
|
247
232
|
</div>
|
|
248
233
|
</div>
|
|
249
|
-
`, isInline: true, components: [{ type: i1.CustomInputComponent, selector: "cqa-custom-input", inputs: ["inputId", "label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: i2.
|
|
234
|
+
`, isInline: true, components: [{ type: i1.CustomInputComponent, selector: "cqa-custom-input", inputs: ["inputId", "label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: i2.MoveToFolderDialogComponent, selector: "cqa-move-to-folder-dialog", inputs: ["folders", "labels", "currentFolderId", "pickedFolderId", "initialExpandedIds", "rootDisabled", "pickerHeight"], outputs: ["folderPicked", "pickedFolderIdChange"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
250
235
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewFolderDialogComponent, decorators: [{
|
|
251
236
|
type: Component,
|
|
252
237
|
args: [{ selector: 'cqa-new-folder-dialog', template: `
|
|
@@ -257,18 +242,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
257
242
|
[required]="true"
|
|
258
243
|
[placeholder]="labels.newFolderDialogNamePlaceholder"
|
|
259
244
|
[value]="name"
|
|
245
|
+
[errors]="nameErrors"
|
|
260
246
|
[fullWidth]="true"
|
|
261
247
|
(valueChange)="onNameChange($event)"
|
|
262
248
|
(enterPressed)="submit()"
|
|
263
249
|
></cqa-custom-input>
|
|
264
250
|
|
|
265
|
-
<!-- Parent folder -->
|
|
266
|
-
<cqa-
|
|
267
|
-
class="cqa-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
251
|
+
<!-- Parent folder — tree picker (handles arbitrarily deep nesting via expand/collapse) -->
|
|
252
|
+
<div class="cqa-flex cqa-flex-col cqa-gap-2">
|
|
253
|
+
<label class="cqa-text-sm cqa-font-medium cqa-text-neutral-700">
|
|
254
|
+
{{ labels.newFolderDialogParentLabel }}
|
|
255
|
+
</label>
|
|
256
|
+
<cqa-move-to-folder-dialog
|
|
257
|
+
[folders]="folders"
|
|
258
|
+
[labels]="parentPickerLabels"
|
|
259
|
+
[pickedFolderId]="parentId"
|
|
260
|
+
[pickerHeight]="'240px'"
|
|
261
|
+
(pickedFolderIdChange)="onParentPicked($event)"
|
|
262
|
+
></cqa-move-to-folder-dialog>
|
|
263
|
+
</div>
|
|
272
264
|
|
|
273
265
|
<!-- Folder color (optional) -->
|
|
274
266
|
<div class="cqa-flex cqa-flex-col cqa-gap-2">
|
|
@@ -349,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
349
341
|
}], cancelled: [{
|
|
350
342
|
type: Output
|
|
351
343
|
}] } });
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWZvbGRlci1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZW1wbGF0ZXMvbW9kdWxhci10YWJsZS10ZW1wbGF0ZS9kaWFsb2dzL25ldy1mb2xkZXItZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE9BQU8sRUFBRSxzQkFBc0IsRUFBNkIsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7QUFPckcsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDO0FBRTlDLE1BQU0sb0JBQW9CLEdBQWE7SUFDckMsb0JBQW9CO0lBQ3BCLFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7Q0FDVixDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFzRkgsTUFBTSxPQUFPLHdCQUF3QjtJQTJEbkMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUExRDFDLDhFQUE4RTtRQUM5RSx3RUFBd0U7UUFDeEUsb0VBQW9FO1FBQ3BFLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsMkVBQTJFO1FBRW5FLGFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBUTVCLFlBQU8sR0FBa0IsRUFBRSxHQUFHLHNCQUFzQixFQUFFLENBQUM7UUFPdEQsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUVuQixjQUFTLEdBQWtCLElBQUksQ0FBQztRQU8vQixVQUFLLEdBQVcsb0JBQW9CLENBQUM7UUFFckMsaUJBQVksR0FBYSxvQkFB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TTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEeW5hbWljU2VsZWN0RmllbGRDb25maWcgfSBmcm9tICcuLi8uLi8uLi9keW5hbWljLXNlbGVjdC9keW5hbWljLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgREVGQVVMVF9NT0RVTEFSX0xBQkVMUywgRm9sZGVyTm9kZSwgTW9kdWxhckxhYmVscyB9IGZyb20gJy4uL21vZHVsYXItdGFibGUtdGVtcGxhdGUubW9kZWxzJztcblxuaW50ZXJmYWNlIFBhcmVudE9wdGlvbiB7XG4gIGlkOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZPTERFUl9DT0xPUiA9ICcjOTk5OTlFJztcblxuY29uc3QgUFJFU0VUX0ZPTERFUl9DT0xPUlM6IHN0cmluZ1tdID0gW1xuICBERUZBVUxUX0ZPTERFUl9DT0xPUixcbiAgJyM0RjQ2RTUnLFxuICAnIzA2QjZENCcsXG4gICcjMTBCOTgxJyxcbiAgJyNGNTlFMEInLFxuICAnI0VGNDQ0NCcsXG4gICcjRUM0ODk5JyxcbiAgJyM4QjVDRjYnLFxuXTtcblxuLyoqXG4gKiBCb2R5IG9mIHRoZSBcIk5ldyBGb2xkZXJcIiBkaWFsb2cuXG4gKlxuICogVXNlcyByZXVzYWJsZSBsaWJyYXJ5IGNvbXBvbmVudHMgKGBjcWEtY3VzdG9tLWlucHV0YCBmb3IgdGhlIG5hbWUgZmllbGQsXG4gKiBgY3FhLWR5bmFtaWMtc2VsZWN0YCBmb3IgdGhlIHBhcmVudCBkcm9wZG93bikgc28gaG9zdHMgY2FuIGRyb3AgdGhpcyBkaWFsb2dcbiAqIGludG8gdGhlaXIgb3duIG1vZGFsIHNoZWxsIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgc3R5bGluZyBkcmlmdC5cbiAqXG4gKiBUd28gaW50ZWdyYXRpb24gcGF0aHM6XG4gKlxuICogIDEuICoqRnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5KiogdmlhIGBEaWFsb2dTZXJ2aWNlLm9wZW4oLi4uKWAuIFRoZSBvdXRlclxuICogICAgIGBjcWEtZGlhbG9nYCBzdXBwbGllcyB0aXRsZS9kZXNjcmlwdGlvbi9DYW5jZWwvQ3JlYXRlLWZvbGRlciBidXR0b25zOyB0aGVcbiAqICAgICBDcmVhdGUgYnV0dG9uIHJlYWRzIGBuYW1lYCArIGBwYXJlbnRJZGAgdmlhIGBnZXRDb21wb25lbnRJbnN0YW5jZSgpYC5cbiAqXG4gKiAgMi4gKipIb3N0LWRyaXZlbioqIOKAlCBob3N0IHJlbmRlcnMgYDxjcWEtbmV3LWZvbGRlci1kaWFsb2c+YCBpbnNpZGUgaXRzIG93blxuICogICAgIG1vZGFsIGFuZCBsaXN0ZW5zIHRvIGAoc3VibWl0dGVkKWAgLyBgKGNhbmNlbGxlZClgIC8gYChuYW1lQ2hhbmdlKWAgL1xuICogICAgIGAocGFyZW50SWRDaGFuZ2UpYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLW5ldy1mb2xkZXItZGlhbG9nJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNSBjcWEtdy1mdWxsXCI+XG4gICAgICA8IS0tIEZvbGRlciBuYW1lIC0tPlxuICAgICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgICAgW2xhYmVsXT1cImxhYmVscy5uZXdGb2xkZXJEaWFsb2dOYW1lTGFiZWxcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbHMubmV3Rm9sZGVyRGlhbG9nTmFtZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3ZhbHVlXT1cIm5hbWVcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25OYW1lQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoZW50ZXJQcmVzc2VkKT1cInN1Ym1pdCgpXCJcbiAgICAgID48L2NxYS1jdXN0b20taW5wdXQ+XG5cbiAgICAgIDwhLS0gUGFyZW50IGZvbGRlciAtLT5cbiAgICAgIDxjcWEtZHluYW1pYy1zZWxlY3RcbiAgICAgICAgY2xhc3M9XCJjcWEtYmxvY2sgY3FhLXctZnVsbFwiXG4gICAgICAgIFtmb3JtXT1cInBhcmVudEZvcm1cIlxuICAgICAgICBbY29uZmlnXT1cInBhcmVudFNlbGVjdENvbmZpZ1wiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25QYXJlbnRTZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9jcWEtZHluYW1pYy1zZWxlY3Q+XG5cbiAgICAgIDwhLS0gRm9sZGVyIGNvbG9yIChvcHRpb25hbCkgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtbmV1dHJhbC03MDBcIj5cbiAgICAgICAgICB7eyBsYWJlbHMubmV3Rm9sZGVyRGlhbG9nQ29sb3JMYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIuNSBjcWEtZmxleC13cmFwXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGMgb2YgcHJlc2V0Q29sb3JzXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLXctNyBjcWEtaC03IGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWN1cnNvci1wb2ludGVyIGNxYS1ib3JkZXItMCBjcWEtcC0wIGNxYS10cmFuc2l0aW9uLXRyYW5zZm9ybVwiXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNcIlxuICAgICAgICAgICAgW3N0eWxlLmJveFNoYWRvd109XCJpc0NvbG9yKGMpID8gKCcwIDAgMCAycHggI2ZmZmZmZiwgMCAwIDAgNHB4ICcgKyBjKSA6ICcwIDAgMCAxcHggcmdiYSgxNSwgMjMsIDQyLCAwLjA4KSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ29sb3JDaGFuZ2UoYylcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU2V0IGZvbGRlciBjb2xvciAnICsgY1wiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwiaXNDb2xvcihjKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiY1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAqbmdJZj1cImlzQ29sb3IoYylcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtaW5zZXQtMCBjcWEtbS1hdXRvXCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDEybDQuNSA0LjVMMTkgN1wiIHN0cm9rZT1cIiNmZmZmZmZcIiBzdHJva2Utd2lkdGg9XCIzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLXJlbGF0aXZlIGNxYS1pbmxpbmUtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy03IGNxYS1oLTcgY3FhLXJvdW5kZWQtZnVsbCBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLXRyYW5zaXRpb24tdHJhbnNmb3JtXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInJhaW5ib3dCb3JkZXJcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImlzQ3VzdG9tQ29sb3IgPyAoJ0N1c3RvbSBjb2xvciAoJyArIGNvbG9yICsgJyknKSA6ICdQaWNrIGEgY3VzdG9tIGNvbG9yJ1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjcWEtYWJzb2x1dGUgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXJvdW5kZWQtZnVsbFwiXG4gICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiMlwiXG4gICAgICAgICAgICAgIFtzdHlsZS5yaWdodC5weF09XCIyXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvdHRvbS5weF09XCIyXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiMlwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaXNDdXN0b21Db2xvciA/IGNvbG9yIDogJyNmZmZmZmYnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFpc0N1c3RvbUNvbG9yXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMiA1djE0TTUgMTJoMTRcIiBzdHJva2U9XCIjNTI1MjU4XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXNDdXN0b21Db2xvclwiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSAxMmw0LjUgNC41TDE5IDdcIiBzdHJva2U9XCIjZmZmZmZmXCIgc3Ryb2tlLXdpZHRoPVwiM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvbG9yXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cIm9uQ29sb3JJbnB1dEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtaW5zZXQtMCBjcWEtdy1mdWxsIGNxYS1oLWZ1bGwgY3FhLW9wYWNpdHktMCBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLWJvcmRlci0wIGNxYS1wLTBcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiUGljayBjdXN0b20gZm9sZGVyIGNvbG9yXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmV3Rm9sZGVyRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gTk9URTogVGhlc2UgaW5wdXRzIGFyZSBkZWNsYXJlZCBhcyBzZXR0ZXJzIChpbnN0ZWFkIG9mIHBsYWluIEBJbnB1dCBmaWVsZHMpXG4gIC8vIGJlY2F1c2UgYERpYWxvZ1NlcnZpY2Uub3BlbiguLi4pYCBhc3NpZ25zIHRoZSBgaW5wdXRzYCBtYXAgdmlhIGRpcmVjdFxuICAvLyBwcm9wZXJ0eSBhc3NpZ25tZW50ICphZnRlciogYGF0dGFjaENvbXBvbmVudGAgaGFzIGFscmVhZHkgcnVuIHRoZVxuICAvLyBjb21wb25lbnQncyBgbmdPbkluaXRgLiBEaXJlY3QgYXNzaWdubWVudCBieXBhc3NlcyBgbmdPbkNoYW5nZXNgLCBzbyB3aXRob3V0XG4gIC8vIHNldHRlcnMgdGhlIGBwYXJlbnRTZWxlY3RDb25maWdgIHdvdWxkIGJlIGJ1aWx0IGZyb20gYSBkZWZhdWx0IGVtcHR5IGZvbGRlcnNcbiAgLy8gYXJyYXkgYW5kIHRoZSBwYXJlbnQtZm9sZGVyIGRyb3Bkb3duIHdvdWxkIHJlbmRlciBlbXB0eSAvIGFwcGVhciBicm9rZW4uXG5cbiAgcHJpdmF0ZSBfZm9sZGVyczogRm9sZGVyTm9kZVtdID0gW107XG4gIEBJbnB1dCgpIHNldCBmb2xkZXJzKHZhbHVlOiBGb2xkZXJOb2RlW10pIHtcbiAgICB0aGlzLl9mb2xkZXJzID0gdmFsdWUgfHwgW107XG4gICAgdGhpcy5yZWJ1aWxkT3B0aW9ucygpO1xuICAgIHRoaXMucmVidWlsZFNlbGVjdENvbmZpZygpO1xuICB9XG4gIGdldCBmb2xkZXJzKCk6IEZvbGRlck5vZGVbXSB7IHJldHVybiB0aGlzLl9mb2xkZXJzOyB9XG5cbiAgcHJpdmF0ZSBfbGFiZWxzOiBNb2R1bGFyTGFiZWxzID0geyAuLi5ERUZBVUxUX01PRFVMQVJfTEFCRUxTIH07XG4gIEBJbnB1dCgpIHNldCBsYWJlbHModmFsdWU6IE1vZHVsYXJMYWJlbHMpIHtcbiAgICB0aGlzLl9sYWJlbHMgPSB2YWx1ZSB8fCB7IC4uLkRFRkFVTFRfTU9EVUxBUl9MQUJFTFMgfTtcbiAgICB0aGlzLnJlYnVpbGRTZWxlY3RDb25maWcoKTtcbiAgfVxuICBnZXQgbGFiZWxzKCk6IE1vZHVsYXJMYWJlbHMgeyByZXR1cm4gdGhpcy5fbGFiZWxzOyB9XG5cbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gJyc7XG5cbiAgcHJpdmF0ZSBfcGFyZW50SWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzZXQgcGFyZW50SWQodmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICB0aGlzLl9wYXJlbnRJZCA9IHZhbHVlID8/IG51bGw7XG4gICAgdGhpcy5zeW5jUGFyZW50Q29udHJvbCgpO1xuICB9XG4gIGdldCBwYXJlbnRJZCgpOiBudW1iZXIgfCBudWxsIHsgcmV0dXJuIHRoaXMuX3BhcmVudElkOyB9XG5cbiAgQElucHV0KCkgY29sb3I6IHN0cmluZyA9IERFRkFVTFRfRk9MREVSX0NPTE9SO1xuXG4gIHJlYWRvbmx5IHByZXNldENvbG9yczogc3RyaW5nW10gPSBQUkVTRVRfRk9MREVSX0NPTE9SUztcbiAgcmVhZG9ubHkgcmFpbmJvd0JvcmRlcjogc3RyaW5nID1cbiAgICAnY29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnLCAjZWY0NDQ0LCAjZjU5ZTBiLCAjZWFiMzA4LCAjMTBiOTgxLCAjMDZiNmQ0LCAjNGY0NmU1LCAjOGI1Y2Y2LCAjZWM0ODk5LCAjZWY0NDQ0KSc7XG5cbiAgQE91dHB1dCgpIG5hbWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHBhcmVudElkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgY29sb3JDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuYW1lOiBzdHJpbmc7IHBhcmVudElkOiBudW1iZXIgfCBudWxsOyBjb2xvcjogc3RyaW5nIH0+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWxsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIFJlYWN0aXZlIGZvcm0gdXNlZCBieSBjcWEtZHluYW1pYy1zZWxlY3QuIFVudHlwZWQgdG8gbWF0Y2ggdGhlIHByb2plY3QncyBBbmd1bGFyIDEzLjQgZm9ybXMgQVBJLiAqL1xuICBwYXJlbnRGb3JtID0gbmV3IEZvcm1Hcm91cCh7IHBhcmVudElkOiBuZXcgRm9ybUNvbnRyb2wobnVsbCkgfSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZyBwYXNzZWQgdG8gYGNxYS1keW5hbWljLXNlbGVjdGAuIFN0b3JlZCBhcyBhIGZpZWxkIChub3QgYSBnZXR0ZXIpIHNvXG4gICAqIHRoZSBvYmplY3QgcmVmZXJlbmNlIGlzIHN0YWJsZSBhY3Jvc3MgY2hhbmdlLWRldGVjdGlvbiBwYXNzZXMg4oCUIGEgZ2V0dGVyXG4gICAqIHJldHVybnMgYSBmcmVzaCBvYmplY3QgZXZlcnkgQ0QgdGljayBhbmQgY2F1c2VzXG4gICAqIGBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yYCArIHJlcGVhdGVkIGBuZ09uQ2hhbmdlc2Agb25cbiAgICogdGhlIGNoaWxkIHNlbGVjdC4gT3RoZXIgY29uc3VtZXJzIGluIHRoaXMgbGliIChlLmcuIGBsb29wLXN0ZXBgKSBmb2xsb3dcbiAgICogdGhlIHNhbWUgcGF0dGVybi5cbiAgICovXG4gIHBhcmVudFNlbGVjdENvbmZpZyE6IER5bmFtaWNTZWxlY3RGaWVsZENvbmZpZztcblxuICBwcml2YXRlIHBhcmVudE9wdGlvbnM6IFBhcmVudE9wdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5yZWJ1aWxkU2VsZWN0Q29uZmlnKCk7IC8vIGVuc3VyZSBjb25maWcgZXhpc3RzIGV2ZW4gYmVmb3JlIGZpcnN0IGlucHV0IHNldFxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gU2V0dGVycyBhYm92ZSBhbHJlYWR5IHJlYnVpbHQgY29uZmlnIG9uY2UgZm9sZGVycy9sYWJlbHMgd2VyZSBhc3NpZ25lZC4gVGhpc1xuICAgIC8vIGp1c3QgZW5zdXJlcyB0aGUgZm9ybSBjb250cm9sIG1hdGNoZXMgdGhlIGN1cnJlbnQgcGFyZW50SWQgdmFsdWUgaW4gY2FzZVxuICAgIC8vIG9yZGVyaW5nIG9mIGlucHV0IGFzc2lnbm1lbnQgZGlmZmVycy5cbiAgICB0aGlzLnN5bmNQYXJlbnRDb250cm9sKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYnVpbGRTZWxlY3RDb25maWcoKTogdm9pZCB7XG4gICAgdGhpcy5wYXJlbnRTZWxlY3RDb25maWcgPSB7XG4gICAgICBrZXk6ICdwYXJlbnRJZCcsXG4gICAgICBsYWJlbDogdGhpcy5sYWJlbHMubmV3Rm9sZGVyRGlhbG9nUGFyZW50TGFiZWwsXG4gICAgICBwbGFjZWhvbGRlcjogdGhpcy5sYWJlbHMubmV3Rm9sZGVyRGlhbG9nUGFyZW50Tm9uZSxcbiAgICAgIHNlYXJjaGFibGU6IGZhbHNlLFxuICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgY2xvc2VPblNlbGVjdDogdHJ1ZSxcbiAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgLy8gYGdldE9wdGlvblZhbHVlYCBpbiBjcWEtZHluYW1pYy1zZWxlY3QgcmV0dXJucyBgaWQgPz8gdmFsdWVgLCBzbyB1c2luZ1xuICAgICAgICAvLyBgdmFsdWU6IG51bGxgICh3aXRoIG5vIGlkKSB5aWVsZHMgYSBzdGFibGUgYG51bGxgIHJlc29sdmVkIHZhbHVlIHRoYXRcbiAgICAgICAgLy8gbWF0Y2hlcyB0aGUgRm9ybUNvbnRyb2wncyBudWxsIHN0YXRlLlxuICAgICAgICB7IHZhbHVlOiBudWxsLCBuYW1lOiB0aGlzLmxhYmVscy5uZXdGb2xkZXJEaWFsb2dQYXJlbnROb25lIH0sXG4gICAgICAgIC4uLnRoaXMucGFyZW50T3B0aW9ucy5tYXAobyA9PiAoeyBpZDogby5pZCwgbmFtZTogby5sYWJlbCB9KSksXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlYnVpbGRPcHRpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdHM6IFBhcmVudE9wdGlvbltdID0gW107XG4gICAgY29uc3Qgd2FsayA9IChub2RlczogRm9sZGVyTm9kZVtdLCB0cmFpbDogc3RyaW5nW10pOiB2b2lkID0+IHtcbiAgICAgIGZvciAoY29uc3QgbiBvZiBub2RlcyB8fCBbXSkge1xuICAgICAgICBjb25zdCBsYWJlbCA9IFsuLi50cmFpbCwgbi5uYW1lXS5qb2luKCcg4oC6ICcpO1xuICAgICAgICBvcHRzLnB1c2goeyBpZDogbi5pZCwgbGFiZWwgfSk7XG4gICAgICAgIGlmIChuLmNoaWxkcmVuPy5sZW5ndGgpIHdhbGsobi5jaGlsZHJlbiwgWy4uLnRyYWlsLCBuLm5hbWVdKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdhbGsodGhpcy5mb2xkZXJzLCBbXSk7XG4gICAgdGhpcy5wYXJlbnRPcHRpb25zID0gb3B0cztcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgc3luY1BhcmVudENvbnRyb2woKTogdm9pZCB7XG4gICAgLy8gS2VlcCB0aGUgcmVhY3RpdmUgZm9ybSBpbiBzeW5jIHdpdGggdGhlIGBwYXJlbnRJZGAgaW5wdXQgd2l0aG91dCBib3VuY2luZyBldmVudHMuXG4gICAgdGhpcy5wYXJlbnRGb3JtLmdldCgncGFyZW50SWQnKT8uc2V0VmFsdWUodGhpcy5wYXJlbnRJZCA/PyBudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cblxuICBvbk5hbWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubmFtZSA9IHZhbHVlO1xuICAgIHRoaXMubmFtZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uUGFyZW50U2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogYW55IH0pOiB2b2lkIHtcbiAgICAvLyBjcWEtZHluYW1pYy1zZWxlY3QgcmVzb2x2ZXMgb3B0aW9ucyB0byBgaWQgPz8gdmFsdWVgOyBvcHRpb24gaWRzIGluIHRoZVxuICAgIC8vIHBhcmVudCB0cmVlIGFyZSBudW1lcmljIHNvIHdlIGNvZXJjZSBkZWZlbnNpdmVseS5cbiAgICBjb25zdCByYXcgPSBldmVudD8udmFsdWU7XG4gICAgbGV0IG5leHQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGlmIChyYXcgIT0gbnVsbCkge1xuICAgICAgY29uc3QgY29lcmNlZCA9IHR5cGVvZiByYXcgPT09ICdudW1iZXInID8gcmF3IDogTnVtYmVyKHJhdyk7XG4gICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKGNvZXJjZWQpKSBuZXh0ID0gY29lcmNlZDtcbiAgICB9XG4gICAgdGhpcy5wYXJlbnRJZCA9IG5leHQ7XG4gICAgdGhpcy5wYXJlbnRJZENoYW5nZS5lbWl0KG5leHQpO1xuICB9XG5cbiAgaXNDb2xvcihjOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuY29sb3IgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09IChjIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgZ2V0IGlzQ3VzdG9tQ29sb3IoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYyA9ICh0aGlzLmNvbG9yIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAhIWMgJiYgIXRoaXMucHJlc2V0Q29sb3JzLnNvbWUocCA9PiBwLnRvTG93ZXJDYXNlKCkgPT09IGMpO1xuICB9XG5cbiAgb25Db2xvckNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dCA9IHZhbHVlIHx8IERFRkFVTFRfRk9MREVSX0NPTE9SO1xuICAgIGlmICh0aGlzLmNvbG9yID09PSBuZXh0KSByZXR1cm47XG4gICAgdGhpcy5jb2xvciA9IG5leHQ7XG4gICAgdGhpcy5jb2xvckNoYW5nZS5lbWl0KG5leHQpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25Db2xvcklucHV0RXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsO1xuICAgIGlmICh0YXJnZXQpIHRoaXMub25Db2xvckNoYW5nZSh0YXJnZXQudmFsdWUpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSBjdXJyZW50IHN0YXRlIGlzIGEgdmFsaWQgc3VibWlzc2lvbiAobm9uLWVtcHR5LCB0cmltbWVkIG5hbWUpLiAqL1xuICBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5uYW1lIHx8ICcnKS50cmltKCk7XG4gIH1cblxuICBzdWJtaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybjtcbiAgICB0aGlzLnN1Ym1pdHRlZC5lbWl0KHtcbiAgICAgIG5hbWU6ICh0aGlzLm5hbWUgfHwgJycpLnRyaW0oKSxcbiAgICAgIHBhcmVudElkOiB0aGlzLnBhcmVudElkLFxuICAgICAgY29sb3I6IHRoaXMuY29sb3IgfHwgREVGQVVMVF9GT0xERVJfQ09MT1IsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWZvbGRlci1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZW1wbGF0ZXMvbW9kdWxhci10YWJsZS10ZW1wbGF0ZS9kaWFsb2dzL25ldy1mb2xkZXItZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsc0JBQXNCLEVBQTZCLE1BQU0sa0NBQWtDLENBQUM7Ozs7O0FBRXJHLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLFNBQVMsQ0FBQztBQUU5QyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFFekMsTUFBTSxvQkFBb0IsR0FBYTtJQUNyQyxvQkFBb0I7SUFDcEIsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztDQUNWLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBNkZILE1BQU0sT0FBTyx3QkFBd0I7SUFpRG5DLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBaEQxQyx3RkFBd0Y7UUFDeEYsaUZBQWlGO1FBQ2pGLGlGQUFpRjtRQUNqRixrRkFBa0Y7UUFDbEYsc0VBQXNFO1FBRTlELGFBQVEsR0FBaUIsRUFBRSxDQUFDO1FBTzVCLFlBQU8sR0FBa0IsRUFBRSxHQUFHLHNCQUFzQixFQUFFLENBQUM7UUFRdEQsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUUzQjs0RkFDb0Y7UUFDNUUsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFbkIsa0JBQWEsR0FBRyxzQkFBc0IsQ0FBQztRQUV2QyxhQUFRLEdBQWtCLElBQUksQ0FBQztR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ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgREVGQVVMVF9NT0RVTEFSX0xBQkVMUywgRm9sZGVyTm9kZSwgTW9kdWxhckxhYmVscyB9IGZyb20gJy4uL21vZHVsYXItdGFibGUtdGVtcGxhdGUubW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfRk9MREVSX0NPTE9SID0gJyM5OTk5OUUnO1xuXG5leHBvcnQgY29uc3QgRk9MREVSX05BTUVfTUFYX0xFTkdUSCA9IDIwO1xuXG5jb25zdCBQUkVTRVRfRk9MREVSX0NPTE9SUzogc3RyaW5nW10gPSBbXG4gIERFRkFVTFRfRk9MREVSX0NPTE9SLFxuICAnIzRGNDZFNScsXG4gICcjMDZCNkQ0JyxcbiAgJyMxMEI5ODEnLFxuICAnI0Y1OUUwQicsXG4gICcjRUY0NDQ0JyxcbiAgJyNFQzQ4OTknLFxuICAnIzhCNUNGNicsXG5dO1xuXG4vKipcbiAqIEJvZHkgb2YgdGhlIFwiTmV3IEZvbGRlclwiIGRpYWxvZy5cbiAqXG4gKiBVc2VzIHJldXNhYmxlIGxpYnJhcnkgY29tcG9uZW50cyAoYGNxYS1jdXN0b20taW5wdXRgIGZvciB0aGUgbmFtZSBmaWVsZCxcbiAqIGBjcWEtbW92ZS10by1mb2xkZXItZGlhbG9nYCBhcyBhbiBlbWJlZGRlZCB0cmVlIHBpY2tlciBmb3IgdGhlIHBhcmVudCBmb2xkZXIpXG4gKiBzbyBob3N0cyBjYW4gZHJvcCB0aGlzIGRpYWxvZyBpbnRvIHRoZWlyIG93biBtb2RhbCBzaGVsbCB3aXRob3V0IHdvcnJ5aW5nXG4gKiBhYm91dCBzdHlsaW5nIGRyaWZ0LiBUaGUgdHJlZSBwaWNrZXIgaGFuZGxlcyBhcmJpdHJhcmlseSBkZWVwIG5lc3RpbmcgdmlhXG4gKiBleHBhbmQvY29sbGFwc2UgcmF0aGVyIHRoYW4gYSBmbGF0IGRyb3Bkb3duIG9mIFwiQSDigLogQiDigLogQyDigLrigKZcIiBwYXRocy5cbiAqXG4gKiBUd28gaW50ZWdyYXRpb24gcGF0aHM6XG4gKlxuICogIDEuICoqRnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5KiogdmlhIGBEaWFsb2dTZXJ2aWNlLm9wZW4oLi4uKWAuIFRoZSBvdXRlclxuICogICAgIGBjcWEtZGlhbG9nYCBzdXBwbGllcyB0aXRsZS9kZXNjcmlwdGlvbi9DYW5jZWwvQ3JlYXRlLWZvbGRlciBidXR0b25zOyB0aGVcbiAqICAgICBDcmVhdGUgYnV0dG9uIHJlYWRzIGBuYW1lYCArIGBwYXJlbnRJZGAgdmlhIGBnZXRDb21wb25lbnRJbnN0YW5jZSgpYC5cbiAqXG4gKiAgMi4gKipIb3N0LWRyaXZlbioqIOKAlCBob3N0IHJlbmRlcnMgYDxjcWEtbmV3LWZvbGRlci1kaWFsb2c+YCBpbnNpZGUgaXRzIG93blxuICogICAgIG1vZGFsIGFuZCBsaXN0ZW5zIHRvIGAoc3VibWl0dGVkKWAgLyBgKGNhbmNlbGxlZClgIC8gYChuYW1lQ2hhbmdlKWAgL1xuICogICAgIGAocGFyZW50SWRDaGFuZ2UpYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLW5ldy1mb2xkZXItZGlhbG9nJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNSBjcWEtdy1mdWxsXCI+XG4gICAgICA8IS0tIEZvbGRlciBuYW1lIC0tPlxuICAgICAgPGNxYS1jdXN0b20taW5wdXRcbiAgICAgICAgW2xhYmVsXT1cImxhYmVscy5uZXdGb2xkZXJEaWFsb2dOYW1lTGFiZWxcIlxuICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJsYWJlbHMubmV3Rm9sZGVyRGlhbG9nTmFtZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3ZhbHVlXT1cIm5hbWVcIlxuICAgICAgICBbZXJyb3JzXT1cIm5hbWVFcnJvcnNcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25OYW1lQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoZW50ZXJQcmVzc2VkKT1cInN1Ym1pdCgpXCJcbiAgICAgID48L2NxYS1jdXN0b20taW5wdXQ+XG5cbiAgICAgIDwhLS0gUGFyZW50IGZvbGRlciDigJQgdHJlZSBwaWNrZXIgKGhhbmRsZXMgYXJiaXRyYXJpbHkgZGVlcCBuZXN0aW5nIHZpYSBleHBhbmQvY29sbGFwc2UpIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LW5ldXRyYWwtNzAwXCI+XG4gICAgICAgICAge3sgbGFiZWxzLm5ld0ZvbGRlckRpYWxvZ1BhcmVudExhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxjcWEtbW92ZS10by1mb2xkZXItZGlhbG9nXG4gICAgICAgICAgW2ZvbGRlcnNdPVwiZm9sZGVyc1wiXG4gICAgICAgICAgW2xhYmVsc109XCJwYXJlbnRQaWNrZXJMYWJlbHNcIlxuICAgICAgICAgIFtwaWNrZWRGb2xkZXJJZF09XCJwYXJlbnRJZFwiXG4gICAgICAgICAgW3BpY2tlckhlaWdodF09XCInMjQwcHgnXCJcbiAgICAgICAgICAocGlja2VkRm9sZGVySWRDaGFuZ2UpPVwib25QYXJlbnRQaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgID48L2NxYS1tb3ZlLXRvLWZvbGRlci1kaWFsb2c+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBGb2xkZXIgY29sb3IgKG9wdGlvbmFsKSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1uZXV0cmFsLTcwMFwiPlxuICAgICAgICAgIHt7IGxhYmVscy5uZXdGb2xkZXJEaWFsb2dDb2xvckxhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMi41IGNxYS1mbGV4LXdyYXBcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYyBvZiBwcmVzZXRDb2xvcnNcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cImNxYS1yZWxhdGl2ZSBjcWEtdy03IGNxYS1oLTcgY3FhLXJvdW5kZWQtZnVsbCBjcWEtY3Vyc29yLXBvaW50ZXIgY3FhLWJvcmRlci0wIGNxYS1wLTAgY3FhLXRyYW5zaXRpb24tdHJhbnNmb3JtXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY1wiXG4gICAgICAgICAgICBbc3R5bGUuYm94U2hhZG93XT1cImlzQ29sb3IoYykgPyAoJzAgMCAwIDJweCAjZmZmZmZmLCAwIDAgMCA0cHggJyArIGMpIDogJzAgMCAwIDFweCByZ2JhKDE1LCAyMywgNDIsIDAuMDgpJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib25Db2xvckNoYW5nZShjKVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidTZXQgZm9sZGVyIGNvbG9yICcgKyBjXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJpc0NvbG9yKGMpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJjXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNDb2xvcihjKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1pbnNldC0wIGNxYS1tLWF1dG9cIlxuICAgICAgICAgICAgICB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgMTJsNC41IDQuNUwxOSA3XCIgc3Ryb2tlPVwiI2ZmZmZmZlwiIHN0cm9rZS13aWR0aD1cIjNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtcmVsYXRpdmUgY3FhLWlubGluZS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS13LTcgY3FhLWgtNyBjcWEtcm91bmRlZC1mdWxsIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtdHJhbnNpdGlvbi10cmFuc2Zvcm1cIlxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwicmFpbmJvd0JvcmRlclwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiaXNDdXN0b21Db2xvciA/ICgnQ3VzdG9tIGNvbG9yICgnICsgY29sb3IgKyAnKScpIDogJ1BpY2sgYSBjdXN0b20gY29sb3InXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNxYS1hYnNvbHV0ZSBjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtcm91bmRlZC1mdWxsXCJcbiAgICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCIyXCJcbiAgICAgICAgICAgICAgW3N0eWxlLnJpZ2h0LnB4XT1cIjJcIlxuICAgICAgICAgICAgICBbc3R5bGUuYm90dG9tLnB4XT1cIjJcIlxuICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCIyXCJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpc0N1c3RvbUNvbG9yID8gY29sb3IgOiAnI2ZmZmZmZidcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWlzQ3VzdG9tQ29sb3JcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEyIDV2MTRNNSAxMmgxNFwiIHN0cm9rZT1cIiM1MjUyNThcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJpc0N1c3RvbUNvbG9yXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDEybDQuNSA0LjVMMTkgN1wiIHN0cm9rZT1cIiNmZmZmZmZcIiBzdHJva2Utd2lkdGg9XCIzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY29sb3JcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiY29sb3JcIlxuICAgICAgICAgICAgICAoaW5wdXQpPVwib25Db2xvcklucHV0RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWFic29sdXRlIGNxYS1pbnNldC0wIGNxYS13LWZ1bGwgY3FhLWgtZnVsbCBjcWEtb3BhY2l0eS0wIGNxYS1jdXJzb3ItcG9pbnRlciBjcWEtYm9yZGVyLTAgY3FhLXAtMFwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJQaWNrIGN1c3RvbSBmb2xkZXIgY29sb3JcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFtdLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZXdGb2xkZXJEaWFsb2dDb21wb25lbnQge1xuICAvLyBOT1RFOiBgZm9sZGVyc2AgYW5kIGBsYWJlbHNgIGFyZSBkZWNsYXJlZCBhcyBzZXR0ZXJzIChpbnN0ZWFkIG9mIHBsYWluIEBJbnB1dCBmaWVsZHMpXG4gIC8vIGJlY2F1c2UgYERpYWxvZ1NlcnZpY2Uub3BlbiguLi4pYCBhc3NpZ25zIHRoZSBgaW5wdXRzYCBtYXAgdmlhIGRpcmVjdCBwcm9wZXJ0eVxuICAvLyBhc3NpZ25tZW50ICphZnRlciogYGF0dGFjaENvbXBvbmVudGAgaGFzIGFscmVhZHkgcnVuIHRoZSBjb21wb25lbnQncyBsaWZlY3ljbGVcbiAgLy8gaG9va3Mg4oCUIGRpcmVjdCBhc3NpZ25tZW50IGJ5cGFzc2VzIGBuZ09uQ2hhbmdlc2AsIHNvIHNldHRlcnMga2VlcCBkZXJpdmVkIHN0YXRlXG4gIC8vIChlLmcuIGBwYXJlbnRQaWNrZXJMYWJlbHNgKSBpbiBzeW5jIG5vIG1hdHRlciB0aGUgYXNzaWdubWVudCBvcmRlci5cblxuICBwcml2YXRlIF9mb2xkZXJzOiBGb2xkZXJOb2RlW10gPSBbXTtcbiAgQElucHV0KCkgc2V0IGZvbGRlcnModmFsdWU6IEZvbGRlck5vZGVbXSkge1xuICAgIHRoaXMuX2ZvbGRlcnMgPSB2YWx1ZSB8fCBbXTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuICBnZXQgZm9sZGVycygpOiBGb2xkZXJOb2RlW10geyByZXR1cm4gdGhpcy5fZm9sZGVyczsgfVxuXG4gIHByaXZhdGUgX2xhYmVsczogTW9kdWxhckxhYmVscyA9IHsgLi4uREVGQVVMVF9NT0RVTEFSX0xBQkVMUyB9O1xuICBASW5wdXQoKSBzZXQgbGFiZWxzKHZhbHVlOiBNb2R1bGFyTGFiZWxzKSB7XG4gICAgdGhpcy5fbGFiZWxzID0gdmFsdWUgfHwgeyAuLi5ERUZBVUxUX01PRFVMQVJfTEFCRUxTIH07XG4gICAgdGhpcy5wYXJlbnRQaWNrZXJMYWJlbHMgPSB0aGlzLmJ1aWxkUGFyZW50UGlja2VyTGFiZWxzKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgZ2V0IGxhYmVscygpOiBNb2R1bGFyTGFiZWxzIHsgcmV0dXJuIHRoaXMuX2xhYmVsczsgfVxuXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBUcmFja3Mgd2hldGhlciB0aGUgdXNlciBoYXMgaW50ZXJhY3RlZCB3aXRoIHRoZSBuYW1lIGZpZWxkLCBzbyB3ZSBkb24ndCBzdXJmYWNlXG4gICAqICB0aGUgXCJyZXF1aXJlZFwiIGVycm9yIG9uIGZpcnN0IHBhaW50IHdoZW4gdGhlIGRpYWxvZyBvcGVucyB3aXRoIGFuIGVtcHR5IG5hbWUuICovXG4gIHByaXZhdGUgbmFtZVRvdWNoZWQgPSBmYWxzZTtcblxuICByZWFkb25seSBtYXhOYW1lTGVuZ3RoID0gRk9MREVSX05BTUVfTUFYX0xFTkdUSDtcblxuICBASW5wdXQoKSBwYXJlbnRJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KCkgY29sb3I6IHN0cmluZyA9IERFRkFVTFRfRk9MREVSX0NPTE9SO1xuXG4gIHJlYWRvbmx5IHByZXNldENvbG9yczogc3RyaW5nW10gPSBQUkVTRVRfRk9MREVSX0NPTE9SUztcbiAgcmVhZG9ubHkgcmFpbmJvd0JvcmRlcjogc3RyaW5nID1cbiAgICAnY29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnLCAjZWY0NDQ0LCAjZjU5ZTBiLCAjZWFiMzA4LCAjMTBiOTgxLCAjMDZiNmQ0LCAjNGY0NmU1LCAjOGI1Y2Y2LCAjZWM0ODk5LCAjZWY0NDQ0KSc7XG5cbiAgQE91dHB1dCgpIG5hbWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHBhcmVudElkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXIgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgY29sb3JDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHN1Ym1pdHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBuYW1lOiBzdHJpbmc7IHBhcmVudElkOiBudW1iZXIgfCBudWxsOyBjb2xvcjogc3RyaW5nIH0+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWxsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIExhYmVscyBwYXNzZWQgdG8gdGhlIGVtYmVkZGVkIHRyZWUgcGlja2VyLiBSZS11c2VzIHRoZSBtb3ZlLWRpYWxvZyBzdXJmYWNlIGJ1dFxuICAgKiAgcmV3cml0ZXMgdGhlIHJvb3Qgcm93J3MgbGFiZWwgc28gaXQgcmVhZHMgXCIobm8gcGFyZW50KVwiIGluc3RlYWQgb2YgXCJVbm9yZ2FuaXNlZFwiXG4gICAqICBmb3IgdGhlIGNyZWF0ZS1mb2xkZXIgY29udGV4dC4gKi9cbiAgcGFyZW50UGlja2VyTGFiZWxzOiBNb2R1bGFyTGFiZWxzID0gdGhpcy5idWlsZFBhcmVudFBpY2tlckxhYmVscygpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBwcml2YXRlIGJ1aWxkUGFyZW50UGlja2VyTGFiZWxzKCk6IE1vZHVsYXJMYWJlbHMge1xuICAgIHJldHVybiB7IC4uLnRoaXMuX2xhYmVscywgbW92ZURpYWxvZ1Jvb3Q6IHRoaXMuX2xhYmVscy5uZXdGb2xkZXJEaWFsb2dQYXJlbnROb25lIH07XG4gIH1cblxuICBvbk5hbWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubmFtZSA9IHZhbHVlO1xuICAgIHRoaXMubmFtZVRvdWNoZWQgPSB0cnVlO1xuICAgIHRoaXMubmFtZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uUGFyZW50UGlja2VkKGlkOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgLy8gVGhlIHRyZWUgcGlja2VyIGVtaXRzIGBudWxsYCBmb3IgdGhlIFwiKG5vIHBhcmVudClcIiBzZW50aW5lbDsgbnVtZXJpYyBvdGhlcndpc2UuXG4gICAgbGV0IG5leHQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICBjb25zdCBjb2VyY2VkID0gdHlwZW9mIGlkID09PSAnbnVtYmVyJyA/IGlkIDogTnVtYmVyKGlkKTtcbiAgICAgIGlmIChOdW1iZXIuaXNGaW5pdGUoY29lcmNlZCkpIG5leHQgPSBjb2VyY2VkO1xuICAgIH1cbiAgICB0aGlzLnBhcmVudElkID0gbmV4dDtcbiAgICB0aGlzLnBhcmVudElkQ2hhbmdlLmVtaXQobmV4dCk7XG4gIH1cblxuICBpc0NvbG9yKGM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5jb2xvciB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gKGMgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBnZXQgaXNDdXN0b21Db2xvcigpOiBib29sZWFuIHtcbiAgICBjb25zdCBjID0gKHRoaXMuY29sb3IgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuICEhYyAmJiAhdGhpcy5wcmVzZXRDb2xvcnMuc29tZShwID0+IHAudG9Mb3dlckNhc2UoKSA9PT0gYyk7XG4gIH1cblxuICBvbkNvbG9yQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0ID0gdmFsdWUgfHwgREVGQVVMVF9GT0xERVJfQ09MT1I7XG4gICAgaWYgKHRoaXMuY29sb3IgPT09IG5leHQpIHJldHVybjtcbiAgICB0aGlzLmNvbG9yID0gbmV4dDtcbiAgICB0aGlzLmNvbG9yQ2hhbmdlLmVtaXQobmV4dCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbkNvbG9ySW5wdXRFdmVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCB8IG51bGw7XG4gICAgaWYgKHRhcmdldCkgdGhpcy5vbkNvbG9yQ2hhbmdlKHRhcmdldC52YWx1ZSk7XG4gIH1cblxuICAvKiogRXJyb3JzIHN1cmZhY2VkIHVuZGVyIHRoZSBuYW1lIGZpZWxkLiBPbmx5IGNvbXB1dGVkIG9uY2UgdGhlIHVzZXIgaGFzIHRvdWNoZWRcbiAgICogIHRoZSBpbnB1dCBzbyB0aGUgZGlhbG9nIGRvZXNuJ3Qgb3BlbiB3aXRoIGEgXCJyZXF1aXJlZFwiIGVycm9yIGFscmVhZHkgc2hvd2luZy4gKi9cbiAgZ2V0IG5hbWVFcnJvcnMoKTogc3RyaW5nW10ge1xuICAgIGlmICghdGhpcy5uYW1lVG91Y2hlZCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHRyaW1tZWQgPSAodGhpcy5uYW1lIHx8ICcnKS50cmltKCk7XG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICghdHJpbW1lZCkge1xuICAgICAgZXJyb3JzLnB1c2godGhpcy5sYWJlbHMubmV3Rm9sZGVyRGlhbG9nTmFtZVJlcXVpcmVkRXJyb3IpO1xuICAgIH0gZWxzZSBpZiAodHJpbW1lZC5sZW5ndGggPiB0aGlzLm1heE5hbWVMZW5ndGgpIHtcbiAgICAgIGVycm9ycy5wdXNoKHRoaXMubGFiZWxzLm5ld0ZvbGRlckRpYWxvZ05hbWVNYXhMZW5ndGhFcnJvcik7XG4gICAgfVxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICAvKiogUmV0dXJucyB0cnVlIHdoZW4gdGhlIGN1cnJlbnQgc3RhdGUgaXMgYSB2YWxpZCBzdWJtaXNzaW9uIChub24tZW1wdHkgdHJpbW1lZCBuYW1lXG4gICAqICB3aXRoaW4gdGhlIG1heCBsZW5ndGgpLiBVc2VkIGJ5IHRoZSBob3N0IHRvIGdhdGUgdGhlIGRpYWxvZydzIENyZWF0ZSBidXR0b24uICovXG4gIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRyaW1tZWQgPSAodGhpcy5uYW1lIHx8ICcnKS50cmltKCk7XG4gICAgcmV0dXJuIHRyaW1tZWQubGVuZ3RoID4gMCAmJiB0cmltbWVkLmxlbmd0aCA8PSB0aGlzLm1heE5hbWVMZW5ndGg7XG4gIH1cblxuICBzdWJtaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQpIHJldHVybjtcbiAgICB0aGlzLnN1Ym1pdHRlZC5lbWl0KHtcbiAgICAgIG5hbWU6ICh0aGlzLm5hbWUgfHwgJycpLnRyaW0oKSxcbiAgICAgIHBhcmVudElkOiB0aGlzLnBhcmVudElkLFxuICAgICAgY29sb3I6IHRoaXMuY29sb3IgfHwgREVGQVVMVF9GT0xERVJfQ09MT1IsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|