@po-ui/ng-components 16.8.0 → 16.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/po-field/po-select/po-select.component.mjs +72 -48
- package/esm2022/lib/components/po-listbox/po-listbox.component.mjs +58 -73
- package/esm2022/lib/components/po-loading/po-loading-base.component.mjs +24 -2
- package/esm2022/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.mjs +21 -2
- package/esm2022/lib/components/po-loading/po-loading-overlay/po-loading-overlay.component.mjs +4 -4
- package/esm2022/lib/components/po-loading/po-loading.component.mjs +15 -12
- package/esm2022/lib/components/po-search/po-search-base.component.mjs +19 -4
- package/esm2022/lib/components/po-search/po-search.component.mjs +76 -57
- package/esm2022/lib/components/po-search/po-search.module.mjs +5 -4
- package/esm2022/lib/components/po-table/po-table-base.component.mjs +6 -1
- package/esm2022/lib/components/po-table/po-table.component.mjs +200 -182
- package/esm2022/lib/components/po-table/po-table.module.mjs +3 -3
- package/esm2022/lib/utils/util.mjs +6 -1
- package/fesm2022/po-ui-ng-components.mjs +643 -528
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-field/po-select/po-select.component.d.ts +1 -0
- package/lib/components/po-loading/po-loading-base.component.d.ts +15 -1
- package/lib/components/po-loading/po-loading-overlay/po-loading-overlay-base.component.d.ts +13 -1
- package/lib/components/po-search/po-search-base.component.d.ts +16 -3
- package/lib/components/po-search/po-search.component.d.ts +1 -3
- package/lib/components/po-search/po-search.module.d.ts +3 -2
- package/lib/components/po-table/po-table-base.component.d.ts +3 -0
- package/lib/components/po-table/po-table.component.d.ts +4 -1
- package/lib/utils/util.d.ts +1 -0
- package/package.json +4 -4
- package/po-ui-ng-components-16.10.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-16.8.0.tgz +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
|
|
2
2
|
import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import { convertToBoolean, removeDuplicatedOptions, removeUndefinedAndNullOptions, uuid, validValue } from '../../../utils/util';
|
|
3
|
+
import { convertToBoolean, isSafari, removeDuplicatedOptions, removeUndefinedAndNullOptions, uuid, validValue } from '../../../utils/util';
|
|
4
4
|
import { PoFieldValidateModel } from '../po-field-validate.model';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/common";
|
|
@@ -8,77 +8,104 @@ import * as i2 from "@angular/forms";
|
|
|
8
8
|
import * as i3 from "../po-field-container/po-field-container-bottom/po-field-container-bottom.component";
|
|
9
9
|
import * as i4 from "../po-field-container/po-field-container.component";
|
|
10
10
|
const _c0 = ["select"];
|
|
11
|
-
function
|
|
11
|
+
function PoSelectComponent_ng_container_4_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
12
12
|
i0.ɵɵelementStart(0, "option", 8);
|
|
13
13
|
i0.ɵɵtext(1);
|
|
14
14
|
i0.ɵɵelementEnd();
|
|
15
15
|
} if (rf & 2) {
|
|
16
|
-
const
|
|
16
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
17
17
|
let tmp_3_0;
|
|
18
|
-
i0.ɵɵproperty("disabled", !!
|
|
18
|
+
i0.ɵɵproperty("disabled", !!ctx_r5.placeholder)("hidden", !(ctx_r5.selectedValue == null ? null : ctx_r5.selectedValue.toString()) && !ctx_r5.placeholder)("selected", !(ctx_r5.selectedValue == null ? null : ctx_r5.selectedValue.toString()))("value", (tmp_3_0 = ctx_r5.placeholder) !== null && tmp_3_0 !== undefined ? tmp_3_0 : "");
|
|
19
19
|
i0.ɵɵadvance(1);
|
|
20
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
20
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r5.placeholder, " ");
|
|
21
21
|
} }
|
|
22
|
-
function
|
|
22
|
+
function PoSelectComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
23
|
+
i0.ɵɵelementContainerStart(0);
|
|
24
|
+
i0.ɵɵtemplate(1, PoSelectComponent_ng_container_4_option_1_Template, 2, 5, "option", 6);
|
|
25
|
+
i0.ɵɵelementStart(2, "option", 7);
|
|
26
|
+
i0.ɵɵtext(3);
|
|
27
|
+
i0.ɵɵelementEnd();
|
|
28
|
+
i0.ɵɵelementContainerEnd();
|
|
29
|
+
} if (rf & 2) {
|
|
30
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
31
|
+
i0.ɵɵadvance(1);
|
|
32
|
+
i0.ɵɵproperty("ngIf", !(ctx_r1.selectedValue == null ? null : ctx_r1.selectedValue.toString()) || !!ctx_r1.placeholder);
|
|
33
|
+
i0.ɵɵadvance(1);
|
|
34
|
+
i0.ɵɵproperty("hidden", true);
|
|
35
|
+
i0.ɵɵadvance(1);
|
|
36
|
+
i0.ɵɵtextInterpolate(ctx_r1.displayValue);
|
|
37
|
+
} }
|
|
38
|
+
function PoSelectComponent_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
39
|
+
i0.ɵɵelementContainerStart(0);
|
|
40
|
+
i0.ɵɵelementStart(1, "option");
|
|
41
|
+
i0.ɵɵtext(2);
|
|
42
|
+
i0.ɵɵelementEnd();
|
|
43
|
+
i0.ɵɵelementContainerEnd();
|
|
44
|
+
} if (rf & 2) {
|
|
45
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
46
|
+
i0.ɵɵadvance(2);
|
|
47
|
+
i0.ɵɵtextInterpolate(ctx_r2.displayValue || ctx_r2.placeholder);
|
|
48
|
+
} }
|
|
49
|
+
function PoSelectComponent_ng_container_6_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
23
50
|
i0.ɵɵelementStart(0, "option", 10);
|
|
24
51
|
i0.ɵɵtext(1);
|
|
25
52
|
i0.ɵɵelementEnd();
|
|
26
53
|
} if (rf & 2) {
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
i0.ɵɵproperty("disabled",
|
|
54
|
+
const item_r7 = ctx.$implicit;
|
|
55
|
+
const ctx_r6 = i0.ɵɵnextContext(2);
|
|
56
|
+
i0.ɵɵproperty("disabled", ctx_r6.readonly)("value", item_r7 == null ? null : item_r7[ctx_r6.fieldValue]);
|
|
30
57
|
i0.ɵɵadvance(1);
|
|
31
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
58
|
+
i0.ɵɵtextInterpolate1(" ", item_r7 == null ? null : item_r7[ctx_r6.fieldLabel], " ");
|
|
32
59
|
} }
|
|
33
|
-
function
|
|
60
|
+
function PoSelectComponent_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
34
61
|
i0.ɵɵelementContainerStart(0);
|
|
35
|
-
i0.ɵɵtemplate(1,
|
|
62
|
+
i0.ɵɵtemplate(1, PoSelectComponent_ng_container_6_option_1_Template, 2, 3, "option", 9);
|
|
36
63
|
i0.ɵɵelementContainerEnd();
|
|
37
64
|
} if (rf & 2) {
|
|
38
|
-
const
|
|
65
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
39
66
|
i0.ɵɵadvance(1);
|
|
40
|
-
i0.ɵɵproperty("ngForOf",
|
|
67
|
+
i0.ɵɵproperty("ngForOf", ctx_r3.optionWithoutGroup);
|
|
41
68
|
} }
|
|
42
|
-
function
|
|
69
|
+
function PoSelectComponent_ng_container_7_ng_container_1_optgroup_1_option_1_Template(rf, ctx) { if (rf & 1) {
|
|
43
70
|
i0.ɵɵelementStart(0, "option", 15);
|
|
44
71
|
i0.ɵɵtext(1);
|
|
45
72
|
i0.ɵɵelementEnd();
|
|
46
73
|
} if (rf & 2) {
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
i0.ɵɵproperty("value",
|
|
74
|
+
const subItem_r12 = ctx.$implicit;
|
|
75
|
+
const ctx_r11 = i0.ɵɵnextContext(4);
|
|
76
|
+
i0.ɵɵproperty("value", subItem_r12 == null ? null : subItem_r12[ctx_r11.fieldValue])("disabled", ctx_r11.readonly);
|
|
50
77
|
i0.ɵɵadvance(1);
|
|
51
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
78
|
+
i0.ɵɵtextInterpolate1(" ", subItem_r12 == null ? null : subItem_r12[ctx_r11.fieldLabel], " ");
|
|
52
79
|
} }
|
|
53
|
-
function
|
|
80
|
+
function PoSelectComponent_ng_container_7_ng_container_1_optgroup_1_Template(rf, ctx) { if (rf & 1) {
|
|
54
81
|
i0.ɵɵelementStart(0, "optgroup", 13);
|
|
55
|
-
i0.ɵɵtemplate(1,
|
|
82
|
+
i0.ɵɵtemplate(1, PoSelectComponent_ng_container_7_ng_container_1_optgroup_1_option_1_Template, 2, 3, "option", 14);
|
|
56
83
|
i0.ɵɵelementEnd();
|
|
57
84
|
} if (rf & 2) {
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
i0.ɵɵpropertyInterpolate("label",
|
|
61
|
-
i0.ɵɵproperty("disabled",
|
|
85
|
+
const item_r9 = i0.ɵɵnextContext().$implicit;
|
|
86
|
+
const ctx_r10 = i0.ɵɵnextContext(2);
|
|
87
|
+
i0.ɵɵpropertyInterpolate("label", item_r9 == null ? null : item_r9.label);
|
|
88
|
+
i0.ɵɵproperty("disabled", ctx_r10.readonly);
|
|
62
89
|
i0.ɵɵadvance(1);
|
|
63
|
-
i0.ɵɵproperty("ngForOf",
|
|
90
|
+
i0.ɵɵproperty("ngForOf", item_r9.options);
|
|
64
91
|
} }
|
|
65
|
-
function
|
|
92
|
+
function PoSelectComponent_ng_container_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
66
93
|
i0.ɵɵelementContainerStart(0);
|
|
67
|
-
i0.ɵɵtemplate(1,
|
|
94
|
+
i0.ɵɵtemplate(1, PoSelectComponent_ng_container_7_ng_container_1_optgroup_1_Template, 2, 3, "optgroup", 12);
|
|
68
95
|
i0.ɵɵelementContainerEnd();
|
|
69
96
|
} if (rf & 2) {
|
|
70
|
-
const
|
|
97
|
+
const item_r9 = ctx.$implicit;
|
|
71
98
|
i0.ɵɵadvance(1);
|
|
72
|
-
i0.ɵɵproperty("ngIf", (
|
|
99
|
+
i0.ɵɵproperty("ngIf", (item_r9 == null ? null : item_r9.options.length) > 0);
|
|
73
100
|
} }
|
|
74
|
-
function
|
|
101
|
+
function PoSelectComponent_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
75
102
|
i0.ɵɵelementContainerStart(0);
|
|
76
|
-
i0.ɵɵtemplate(1,
|
|
103
|
+
i0.ɵɵtemplate(1, PoSelectComponent_ng_container_7_ng_container_1_Template, 2, 1, "ng-container", 11);
|
|
77
104
|
i0.ɵɵelementContainerEnd();
|
|
78
105
|
} if (rf & 2) {
|
|
79
|
-
const
|
|
106
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
80
107
|
i0.ɵɵadvance(1);
|
|
81
|
-
i0.ɵɵproperty("ngForOf",
|
|
108
|
+
i0.ɵɵproperty("ngForOf", ctx_r4.listGroupOptions);
|
|
82
109
|
} }
|
|
83
110
|
const PO_SELECT_FIELD_LABEL_DEFAULT = 'label';
|
|
84
111
|
const PO_SELECT_FIELD_VALUE_DEFAULT = 'value';
|
|
@@ -162,6 +189,7 @@ export class PoSelectComponent extends PoFieldValidateModel {
|
|
|
162
189
|
optionsDefault = [];
|
|
163
190
|
listGroupOptions = [];
|
|
164
191
|
optionWithoutGroup = [];
|
|
192
|
+
isSafari = isSafari();
|
|
165
193
|
onModelTouched;
|
|
166
194
|
_fieldLabel = PO_SELECT_FIELD_LABEL_DEFAULT;
|
|
167
195
|
_fieldValue = PO_SELECT_FIELD_VALUE_DEFAULT;
|
|
@@ -412,17 +440,15 @@ export class PoSelectComponent extends PoFieldValidateModel {
|
|
|
412
440
|
useExisting: forwardRef(() => PoSelectComponent),
|
|
413
441
|
multi: true
|
|
414
442
|
}
|
|
415
|
-
]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls:
|
|
443
|
+
]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 9, vars: 18, consts: [[3, "p-disabled", "p-id", "p-label", "p-optional", "p-required", "p-show-required"], [1, "po-field-container-content"], [1, "po-select", 3, "disabled", "id", "required", "change"], ["select", ""], [4, "ngIf"], [3, "p-help", "p-disabled"], [3, "disabled", "hidden", "selected", "value", 4, "ngIf"], [3, "hidden"], [3, "disabled", "hidden", "selected", "value"], [3, "disabled", "value", 4, "ngFor", "ngForOf"], [3, "disabled", "value"], [4, "ngFor", "ngForOf"], [3, "label", "disabled", 4, "ngIf"], [3, "label", "disabled"], [3, "value", "disabled", 4, "ngFor", "ngForOf"], [3, "value", "disabled"]], template: function PoSelectComponent_Template(rf, ctx) { if (rf & 1) {
|
|
416
444
|
i0.ɵɵelementStart(0, "po-field-container", 0)(1, "div", 1)(2, "select", 2, 3);
|
|
417
445
|
i0.ɵɵlistener("change", function PoSelectComponent_Template_select_change_2_listener($event) { return ctx.onSelectChange($event.target.value); });
|
|
418
|
-
i0.ɵɵtemplate(4,
|
|
419
|
-
i0.ɵɵ
|
|
420
|
-
i0.ɵɵ
|
|
421
|
-
i0.ɵɵ
|
|
422
|
-
i0.ɵɵtemplate(7, PoSelectComponent_ng_container_7_Template, 2, 1, "ng-container", 6);
|
|
423
|
-
i0.ɵɵtemplate(8, PoSelectComponent_ng_container_8_Template, 2, 1, "ng-container", 6);
|
|
446
|
+
i0.ɵɵtemplate(4, PoSelectComponent_ng_container_4_Template, 4, 3, "ng-container", 4);
|
|
447
|
+
i0.ɵɵtemplate(5, PoSelectComponent_ng_container_5_Template, 3, 1, "ng-container", 4);
|
|
448
|
+
i0.ɵɵtemplate(6, PoSelectComponent_ng_container_6_Template, 2, 1, "ng-container", 4);
|
|
449
|
+
i0.ɵɵtemplate(7, PoSelectComponent_ng_container_7_Template, 2, 1, "ng-container", 4);
|
|
424
450
|
i0.ɵɵelementEnd()();
|
|
425
|
-
i0.ɵɵelement(
|
|
451
|
+
i0.ɵɵelement(8, "po-field-container-bottom", 5);
|
|
426
452
|
i0.ɵɵelementEnd();
|
|
427
453
|
} if (rf & 2) {
|
|
428
454
|
i0.ɵɵproperty("p-disabled", ctx.disabled)("p-id", ctx.id)("p-label", ctx.label)("p-optional", ctx.optional)("p-required", ctx.required)("p-show-required", ctx.showRequired);
|
|
@@ -431,11 +457,9 @@ export class PoSelectComponent extends PoFieldValidateModel {
|
|
|
431
457
|
i0.ɵɵproperty("disabled", ctx.disabled)("id", ctx.id)("required", ctx.required);
|
|
432
458
|
i0.ɵɵattribute("name", ctx.name);
|
|
433
459
|
i0.ɵɵadvance(2);
|
|
434
|
-
i0.ɵɵproperty("ngIf", !
|
|
435
|
-
i0.ɵɵadvance(1);
|
|
436
|
-
i0.ɵɵproperty("hidden", true);
|
|
460
|
+
i0.ɵɵproperty("ngIf", !ctx.isSafari);
|
|
437
461
|
i0.ɵɵadvance(1);
|
|
438
|
-
i0.ɵɵ
|
|
462
|
+
i0.ɵɵproperty("ngIf", ctx.isSafari);
|
|
439
463
|
i0.ɵɵadvance(1);
|
|
440
464
|
i0.ɵɵproperty("ngIf", ctx.optionWithoutGroup.length > 0);
|
|
441
465
|
i0.ɵɵadvance(1);
|
|
@@ -457,7 +481,7 @@ export class PoSelectComponent extends PoFieldValidateModel {
|
|
|
457
481
|
useExisting: forwardRef(() => PoSelectComponent),
|
|
458
482
|
multi: true
|
|
459
483
|
}
|
|
460
|
-
], template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div class=\"po-field-container-content\">\n <select\n #select\n class=\"po-select\"\n [attr.name]=\"name\"\n [class.po-select-placeholder]=\"!selectedValue?.toString() && !!placeholder\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [required]=\"required\"\n (change)=\"onSelectChange($event.target.value)\"\n >\n <option\n
|
|
484
|
+
], template: "<po-field-container\n [p-disabled]=\"disabled\"\n [p-id]=\"id\"\n [p-label]=\"label\"\n [p-optional]=\"optional\"\n [p-required]=\"required\"\n [p-show-required]=\"showRequired\"\n>\n <div class=\"po-field-container-content\">\n <select\n #select\n class=\"po-select\"\n [attr.name]=\"name\"\n [class.po-select-placeholder]=\"!selectedValue?.toString() && !!placeholder\"\n [disabled]=\"disabled\"\n [id]=\"id\"\n [required]=\"required\"\n (change)=\"onSelectChange($event.target.value)\"\n >\n <ng-container *ngIf=\"!isSafari\">\n <option\n *ngIf=\"!selectedValue?.toString() || !!placeholder\"\n [disabled]=\"!!placeholder\"\n [hidden]=\"!selectedValue?.toString() && !placeholder\"\n [selected]=\"!selectedValue?.toString()\"\n [value]=\"placeholder ?? ''\"\n >\n {{ placeholder }}\n </option>\n <option [hidden]=\"true\">{{ displayValue }}</option>\n </ng-container>\n\n <ng-container *ngIf=\"isSafari\">\n <option>{{ displayValue || placeholder }}</option>\n </ng-container>\n\n <ng-container *ngIf=\"optionWithoutGroup.length > 0\">\n <option *ngFor=\"let item of optionWithoutGroup\" [disabled]=\"readonly\" [value]=\"item?.[this.fieldValue]\">\n {{ item?.[this.fieldLabel] }}\n </option>\n </ng-container>\n <ng-container *ngIf=\"listGroupOptions.length > 0\">\n <ng-container *ngFor=\"let item of listGroupOptions\">\n <optgroup *ngIf=\"item?.options.length > 0\" label=\"{{ item?.label }}\" [disabled]=\"readonly\">\n <option *ngFor=\"let subItem of item.options\" [value]=\"subItem?.[this.fieldValue]\" [disabled]=\"readonly\">\n {{ subItem?.[this.fieldLabel] }}\n </option>\n </optgroup>\n </ng-container>\n </ng-container>\n </select>\n </div>\n\n <po-field-container-bottom [p-help]=\"help\" [p-disabled]=\"disabled\"></po-field-container-bottom>\n</po-field-container>\n" }]
|
|
461
485
|
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; }, { selectElement: [{
|
|
462
486
|
type: ViewChild,
|
|
463
487
|
args: ['select', { read: ElementRef, static: true }]
|
|
@@ -480,4 +504,4 @@ export class PoSelectComponent extends PoFieldValidateModel {
|
|
|
480
504
|
type: Input,
|
|
481
505
|
args: ['p-field-value']
|
|
482
506
|
}] }); })();
|
|
483
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1zZWxlY3QvcG8tc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1zZWxlY3QvcG8tc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkYsT0FBTyxFQUNMLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsNkJBQTZCLEVBQzdCLElBQUksRUFDSixVQUFVLEVBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7SUNMNUQsaUNBTUM7SUFDQyxZQUNGO0lBQUEsaUJBQVM7Ozs7SUFOUCwrQ0FBMEIsMkdBQUEsc0ZBQUEsMEZBQUE7SUFLMUIsZUFDRjtJQURFLG1EQUNGOzs7SUFNRSxrQ0FBd0c7SUFDdEcsWUFDRjtJQUFBLGlCQUFTOzs7O0lBRnVDLDBDQUFxQiw4REFBQTtJQUNuRSxlQUNGO0lBREUsb0ZBQ0Y7OztJQUhGLDZCQUFvRDtJQUNsRCx1RkFFUztJQUNYLDBCQUFlOzs7SUFIWSxlQUFxQjtJQUFyQixtREFBcUI7OztJQU8xQyxrQ0FBd0c7SUFDdEcsWUFDRjtJQUFBLGlCQUFTOzs7O0lBRm9DLG1GQUFvQyw2QkFBQTtJQUMvRSxl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QWU7WUFrREUsT0FBTztrQkFBOUIsS0FBSzttQkFBQyxXQUFXO1lBMENVLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQW9CTSxVQUFVO2tCQUFyQyxLQUFLO21CQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgY29udmVydFRvQm9vbGVhbixcbiAgcmVtb3ZlRHVwbGljYXRlZE9wdGlvbnMsXG4gIHJlbW92ZVVuZGVmaW5lZEFuZE51bGxPcHRpb25zLFxuICB1dWlkLFxuICB2YWxpZFZhbHVlXG59IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBQb0ZpZWxkVmFsaWRhdGVNb2RlbCB9IGZyb20gJy4uL3BvLWZpZWxkLXZhbGlkYXRlLm1vZGVsJztcbmltcG9ydCB7IFBvU2VsZWN0T3B0aW9uR3JvdXAgfSBmcm9tICcuL3BvLXNlbGVjdC1vcHRpb24tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9wby1zZWxlY3Qtb3B0aW9uLmludGVyZmFjZSc7XG5cbmNvbnN0IFBPX1NFTEVDVF9GSUVMRF9MQUJFTF9ERUZBVUxUID0gJ2xhYmVsJztcbmNvbnN0IFBPX1NFTEVDVF9GSUVMRF9WQUxVRV9ERUZBVUxUID0gJ3ZhbHVlJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9GaWVsZFZhbGlkYXRlTW9kZWxcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zZWxlY3QtYmFzaWNcIiB0aXRsZT1cIlBPIFNlbGVjdCBCYXNpY1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXNlbGVjdC1iYXNpYy9zYW1wbGUtcG8tc2VsZWN0LWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtYmFzaWMvc2FtcGxlLXBvLXNlbGVjdC1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zZWxlY3QtbGFic1wiIHRpdGxlPVwiUE8gU2VsZWN0IExhYnNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtbGFicy9zYW1wbGUtcG8tc2VsZWN0LWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXNlbGVjdC1sYWJzL3NhbXBsZS1wby1zZWxlY3QtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uXCIgdGl0bGU9XCJQTyBTZWxlY3QgLSBDdXN0b21lciByZWdpc3RyYXRpb25cIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uL3NhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uL3NhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi9zYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT0nc2FtcGxlLXBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb24vc2FtcGxlLXBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb24uY29tcG9uZW50LmUyZS1zcGVjLnRzJz4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPSdzYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi9zYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQucG8udHMnPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXNlbGVjdC1jb21wYW5pZXNcIiB0aXRsZT1cIlBPIFNlbGVjdCBDb21wYW5pZXNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtY29tcGFuaWVzL3NhbXBsZS1wby1zZWxlY3QtY29tcGFuaWVzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtY29tcGFuaWVzL3NhbXBsZS1wby1zZWxlY3QtY29tcGFuaWVzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBjb21wb25lbnRlIHBvLXNlbGVjdCBleGliZSB1bWEgbGlzdGEgZGUgdmFsb3JlcyBlIHBlcm1pdGUgcXVlIG8gdXN1w6FyaW8gc2VsZWNpb25lIHVtIGRlc3NlcyB2YWxvcmVzLlxuICogT3MgdmFsb3JlcyBsaXN0YWRvcyBwb2RlbSBzZXIgZml4b3Mgb3UgZGluw6JtaWNvcyBkZSBhY29yZG8gY29tIGEgbmVjZXNzaWRhZGUgZG8gZGVzZW52b2x2ZWRvciwgZGFuZG8gbWFpcyBmbGV4aWJpbGlkYWRlIGFvIGNvbXBvbmVudGUuXG4gKiBPIHBvLXNlbGVjdCBuw6NvIHBlcm1pdGUgcXVlIG8gdXN1w6FyaW8gaW5mb3JtZSB1bSB2YWxvciBkaWZlcmVudGUgZG9zIHZhbG9yZXMgbGlzdGFkb3MsIGlzc28gZ2FyYW50ZSBhIGNvbnNpc3TDqm5jaWEgZGEgaW5mb3JtYcOnw6NvLlxuICogTyBwby1zZWxlY3QgbsOjbyBwZXJtaXRlIHF1ZSBzZWphbSBwYXNzYWRvcyB2YWxvcmVzIGR1cGxpY2Fkb3MsIHVuZGVmaW5lZCBlIG51bGwgcGFyYSBhcyBvcMOnw7VlcywgZXhjbHVpbmRvLW9zIGRhIGxpc3RhLlxuICpcbiAqID4gQW8gcGFzc2FyIHVtIHZhbG9yIHBhcmEgbyBfbW9kZWxfIHF1ZSBuw6NvIGVzdMOhIG5hIGxpc3RhIGRlIG9ww6fDtWVzLCBvIG1lc21vIHNlcsOhIGRlZmluaWRvIGNvbW8gYHVuZGVmaW5lZGAuXG4gKlxuICogVGFtYsOpbSBleGlzdGUgYSBwb3NzaWJpbGlkYWRlIGRlIHV0aWxpemFyIHVtIF90ZW1wbGF0ZV8gcGFyYSBhIGV4aWJpw6fDo28gZG9zIGl0ZW5zIGRhIGxpc3RhLFxuICogdmVqYSBtYWlzIGVtICoqW3AtY29tYm8tb3B0aW9uLXRlbXBsYXRlXSgvZG9jdW1lbnRhdGlvbi9wby1jb21iby1vcHRpb24tdGVtcGxhdGUpKiouXG4gKlxuICogPiBPYnM6IG8gdGVtcGxhdGUgKipbcC1zZWxlY3Qtb3B0aW9uLXRlbXBsYXRlXSgvZG9jdW1lbnRhdGlvbi9wby1zZWxlY3Qtb3B0aW9uLXRlbXBsYXRlKSoqIHNlcsOhIGRlcHJlY2lhZG8gbmEgdmVyc8OjbyAxNC54LnguXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb1NlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFBvU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgUG9GaWVsZFZhbGlkYXRlTW9kZWw8YW55PiBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHNlbGVjdEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRnVuw6fDo28gcGFyYSBhdHVhbGl6YXIgbyBuZ01vZGVsIGRvIGNvbXBvbmVudGUsIG5lY2Vzc8OhcmlvIHF1YW5kbyBuw6NvIGZvciB1dGlsaXphZG8gZGVudHJvIGRhIHRhZyBmb3JtLlxuICAgKlxuICAgKiBOYSB2ZXJzw6NvIDEyLjIuMCBkbyBBbmd1bGFyIGEgdmVyaWZpY2HDp8OjbyBgc3RyaWN0VGVtcGxhdGVzYCB2ZW0gdHJ1ZSBjb21vIGRlZmF1bHQuIFBvcnRhbnRvLCBwYXJhIHV0aWxpemFyXG4gICAqIHR3by13YXkgYmluZGluZyBubyBjb21wb25lbnRlIGRldmUgc2UgdXRpbGl6YXIgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tc2VsZWN0IC4uLiBbbmdNb2RlbF09XCJzZWxlY3RNb2RlbFwiIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdE1vZGVsID0gJGV2ZW50XCI+IDwvcG8tc2VsZWN0PlxuICAgKiBgYGBcbiAgICovXG4gIEBPdXRwdXQoJ25nTW9kZWxDaGFuZ2UnKSBuZ01vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBzb21lbnRlIHBhcmEgbGVpdHVyYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXJlYWRvbmx5JywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIE1lbnNhZ2VtIHF1ZSBhcGFyZWNlcsOhIGVucXVhbnRvIG5lbmh1bWEgb3DDp8OjbyBlc3RpdmVyIHNlbGVjaW9uYWRhLiAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXInKSBwbGFjZWhvbGRlcj86IHN0cmluZztcblxuICBkaXNwbGF5VmFsdWU7XG4gIGlkID0gYHBvLXNlbGVjdFske3V1aWQoKX1dYDtcbiAgbW9kZWxWYWx1ZTogYW55O1xuICBzZWxlY3RlZFZhbHVlOiBhbnk7XG4gIG9wdGlvbnNEZWZhdWx0ID0gW107XG4gIGxpc3RHcm91cE9wdGlvbnMgPSBbXTtcbiAgb3B0aW9uV2l0aG91dEdyb3VwID0gW107XG5cbiAgcHJvdGVjdGVkIG9uTW9kZWxUb3VjaGVkOiBhbnk7XG5cbiAgcHJpdmF0ZSBfZmllbGRMYWJlbD86IHN0cmluZyA9IFBPX1NFTEVDVF9GSUVMRF9MQUJFTF9ERUZBVUxUO1xuICBwcml2YXRlIF9maWVsZFZhbHVlPzogc3RyaW5nID0gUE9fU0VMRUNUX0ZJRUxEX1ZBTFVFX0RFRkFVTFQ7XG4gIHByaXZhdGUgX29wdGlvbnM6IEFycmF5PFBvU2VsZWN0T3B0aW9uPiB8IEFycmF5PFBvU2VsZWN0T3B0aW9uR3JvdXA+IHwgQXJyYXk8YW55PjtcblxuICAvKipcbiAgICogTmVzdGEgcHJvcHJpZWRhZGUgZGV2ZSBzZXIgZGVmaW5pZG8gdW1hIGNvbGXDp8OjbyBkZSBvYmpldG9zIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBgUG9TZWxlY3RPcHRpb25gLFxuICAgKiBvdSB1bWEgY29sZcOnw6NvIGRlIG9iamV0b3MgZGVudHJvIGRlIGdydXBvcyBkaWZlcmVudGVzLCBxdWUgc2VyaWFtIGRhIGludGVyZmFjZSBgUG9TZWxlY3RPcHRpb25Hcm91cGAuXG4gICAqXG4gICAqIENhc28gZXN0YSBsaXN0YSBlc3RpdmVyIHZhemlhLCBvIG1vZGVsIHNlcsOhIGB1bmRlZmluZWRgLlxuICAgKlxuICAgKiA+IEVzc2EgcHJvcHJpZWRhZGUgw6kgaW11dMOhdmVsLCBvdSBzZWphLCBzZW1wcmUgcXVlIHF1aXNlciBhdHVhbGl6YXIgYSBsaXN0YSBkZSBvcMOnw7VlcyBkaXNwb27DrXZlaXNcbiAgICogYXR1YWxpemUgYSByZWZlcsOqbmNpYSBkbyBvYmpldG86XG4gICAqXG4gICAqIGBgYFxuICAgKiAvLyBhdHVhbGl6YSBhIHJlZmVyw6puY2lhIGRvIG9iamV0byBnYXJhbnRpbmRvIGEgYXR1YWxpemHDp8OjbyBkbyB0ZW1wbGF0ZVxuICAgKiB0aGlzLm9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zLCB7IHZhbHVlOiAneCcsIGxhYmVsOiAnTm92YSBvcMOnw6NvJyB9XTtcbiAgICpcbiAgICogLy8gZXZpdGUsIHBvaXMgbsOjbyBhdHVhbGl6YSBhIHJlZmVyw6puY2lhIGRvIG9iamV0byBwb2RlbmRvIGdlcmFyIGF0cmFzb3MgbmEgYXR1YWxpemHDp8OjbyBkbyB0ZW1wbGF0ZVxuICAgKiB0aGlzLm9wdGlvbnMucHVzaCh7IHZhbHVlOiAneCcsIGxhYmVsOiAnTm92YSBvcMOnw6NvJyB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqID4gUGFyYSBjb2xlw6fDo28gZGUgb2JqZXRvcyBkZW50cm8gZGUgZ3J1cG9zIGRpc3RpbnRvcyBzZXLDoSBleGliaWRvIGEgbGFiZWwgZSBvcMOnw7VlcyBzb21lbnRlIHNlIGEgcHJvcHJpZWRhZGUgYG9wdGlvbnNgIHBvc3N1YSB2YWxvcmVzLlxuICAgKiAgU2VuZG8gYXNzaW0sIGEgZXN0cnV0dXJhIHNlZ3VpcmlhIGRlc3NhIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogdGhpcy5vcHRpb25zID0gW3tcbiAgICogIGxhYmVsOiAnT3DDp8O1ZXMnLFxuICAgKiAgb3B0aW9uczogW1xuICAgKiAgICB7IHZhbHVlOiAxLCBsYWJlbDogJ29ww6fDo28gMScgfSxcbiAgICogICAgeyB2YWx1ZTogMiwgbGFiZWw6ICdvcMOnw6NvIDInIH1cbiAgICogIF0sXG4gICAqIH1dO1xuICAgKiBgYGBcbiAgICpcbiAgICogw4kgcG9zc8OtdmVsIGEgdXRpbGl6YcOnw6NvIGRlIG9ww6fDtWVzIGFncnVwYWRhcyBlIGRlc2FncnVwYWRhcyBlbSBjb25qdW50bywgcG9yw6ltIHNlcsOhIGZlaXRhIGEgb3JkZW5hw6fDo28gZGUgZXhpYmlyIGFzIG9ww6fDtWVzXG4gICAqIGRlc2FncnVwYWRhcyBhY2ltYS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25zJykgc2V0IG9wdGlvbnMob3B0aW9uczogQXJyYXk8UG9TZWxlY3RPcHRpb24gfCBQb1NlbGVjdE9wdGlvbkdyb3VwIHwgYW55Pikge1xuICAgIHRoaXMubGlzdEdyb3VwT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMub3B0aW9uV2l0aG91dEdyb3VwID0gW107XG5cbiAgICBpZiAodGhpcy5maWVsZExhYmVsICYmIHRoaXMuZmllbGRWYWx1ZSAmJiBvcHRpb25zKSB7XG4gICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0l0ZW1Hcm91cChvcHRpb24pKSB7XG4gICAgICAgICAgb3B0aW9uLm9wdGlvbnMubWFwKG9wdCA9PiB7XG4gICAgICAgICAgICBvcHQubGFiZWwgPSBvcHRbdGhpcy5maWVsZExhYmVsXTtcbiAgICAgICAgICAgIG9wdC52YWx1ZSA9IG9wdFt0aGlzLmZpZWxkVmFsdWVdO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9wdGlvbi5sYWJlbCA9IG9wdGlvblt0aGlzLmZpZWxkTGFiZWxdO1xuICAgICAgICAgIG9wdGlvbi52YWx1ZSA9IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdGhpcy5vcHRpb25zRGVmYXVsdCA9IFsuLi5vcHRpb25zXTtcbiAgICAgIHRoaXMuc2VwYXJhdGVPcHRpb25zKCk7XG5cbiAgICAgIHRoaXMub3B0aW9uc0RlZmF1bHQgPSBbXTtcbiAgICAgIHRoaXMub3B0aW9uc0RlZmF1bHQgPSBbLi4udGhpcy5vcHRpb25XaXRob3V0R3JvdXAsIC4uLnRoaXMudHJhbnNmb3JtSW5BcnJheSh0aGlzLmxpc3RHcm91cE9wdGlvbnMpXTtcbiAgICAgIHRoaXMub25VcGRhdGVPcHRpb25zKCk7XG4gICAgICB0aGlzLl9vcHRpb25zID0gWy4uLnRoaXMub3B0aW9uc0RlZmF1bHRdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIG8gbm9tZSBkYSBwcm9wcmllZGFkZSBkbyBvYmpldG8gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIGEgY29udmVyc8OjbyBkb3MgaXRlbnMgYXByZXNlbnRhZG9zIG5hIGxpc3RhIGRvIGNvbXBvbmVudGVcbiAgICogKGBwLW9wdGlvbnNgKSwgZXN0YSBwcm9wcmllZGFkZSBzZXLDoSByZXNwb25zw6F2ZWwgcGVsbyB0ZXh0byBkZSBhcHJlc2VudGHDp8OjbyBkZSBjYWRhIGl0ZW0gZGEgbGlzdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBsYWJlbGBcbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC1sYWJlbCcpIHNldCBmaWVsZExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZExhYmVsID0gdmFsdWUgfHwgUE9fU0VMRUNUX0ZJRUxEX0xBQkVMX0RFRkFVTFQ7XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vcHRpb25zID0gWy4uLnRoaXMub3B0aW9uc107XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZpZWxkTGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gbyBub21lIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgYSBjb252ZXJzw6NvIGRvcyBpdGVucyBhcHJlc2VudGFkb3MgbmEgbGlzdGEgZG8gY29tcG9uZW50ZVxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHZhbG9yIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHZhbHVlYFxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLXZhbHVlJykgc2V0IGZpZWxkVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkVmFsdWUgPSB2YWx1ZSB8fCBQT19TRUxFQ1RfRklFTERfVkFMVUVfREVGQVVMVDtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zXTtcbiAgICB9XG4gIH1cblxuICBnZXQgZmllbGRWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMub3B0aW9ucz8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBjaGFuZ2VzLm9wdGlvbnMuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgYXRyaWJ1aSBmb2NvIGFvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6w6EtbGEgw6kgbmVjZXNzw6FyaW8gdGVyIGEgaW5zdMOibmNpYSBkbyBjb21wb25lbnRlIG5vIERPTSwgcG9kZW5kbyBzZXIgdXRpbGl6YWRvIG8gVmlld0NoaWxkIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogaW1wb3J0IHsgUG9TZWxlY3RDb21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvU2VsZWN0Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWxlY3Q6IFBvU2VsZWN0Q29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c1NlbGVjdCgpIHtcbiAgICogICB0aGlzLnNlbGVjdC5mb2N1cygpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkPy4oKTtcbiAgfVxuXG4gIC8vIEFsdGVyYSBvIHZhbG9yIGFvIHNlbGVjaW9uYXIgdW0gaXRlbS5cbiAgb25TZWxlY3RDaGFuZ2UodmFsdWU6IGFueSkge1xuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQ/LigpO1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3Qgb3B0aW9uRm91bmQ6IGFueSA9IHRoaXMuZmluZE9wdGlvblZhbHVlKHZhbHVlKTtcblxuICAgICAgaWYgKG9wdGlvbkZvdW5kKSB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWVzKG9wdGlvbkZvdW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblVwZGF0ZU9wdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMubW9kZWxWYWx1ZSkge1xuICAgICAgdGhpcy5vblNlbGVjdENoYW5nZSh0aGlzLm1vZGVsVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEF0dWFsaXphIHZhbG9yZXNcbiAgdXBkYXRlVmFsdWVzKG9wdGlvbjogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSAhPT0gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdO1xuICAgICAgdGhpcy5zZWxlY3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBvcHRpb25bdGhpcy5maWVsZFZhbHVlXTtcbiAgICAgIHRoaXMudXBkYXRlTW9kZWwob3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0pO1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBvcHRpb25bdGhpcy5maWVsZExhYmVsXTtcbiAgICAgIHRoaXMuZW1pdENoYW5nZShvcHRpb25bdGhpcy5maWVsZFZhbHVlXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVjZWJlIGFzIGFsdGVyYcOnw7VlcyBkbyBtb2RlbFxuICBvbldyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGNvbnN0IG9wdGlvbkZvdW5kOiBhbnkgPSB0aGlzLmZpbmRPcHRpb25WYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAob3B0aW9uRm91bmQpIHtcbiAgICAgIHRoaXMuc2VsZWN0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gb3B0aW9uRm91bmQudmFsdWU7XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBvcHRpb25Gb3VuZFt0aGlzLmZpZWxkVmFsdWVdO1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBvcHRpb25Gb3VuZFt0aGlzLmZpZWxkTGFiZWxdO1xuICAgIH0gZWxzZSBpZiAodmFsaWRWYWx1ZSh0aGlzLnNlbGVjdGVkVmFsdWUpKSB7XG4gICAgICB0aGlzLnNlbGVjdEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudXBkYXRlTW9kZWwodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRoaXMubW9kZWxWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZXh0cmFWYWxpZGF0aW9uKGM6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaXNJdGVtR3JvdXAoaXRlbTogUG9TZWxlY3RPcHRpb24gfCBQb1NlbGVjdE9wdGlvbkdyb3VwIHwgYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKGl0ZW0ub3B0aW9ucykge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoaXRlbS5vcHRpb25zKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgaXNFcXVhbCh2YWx1ZTogYW55LCBpbnB1dFZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoKHZhbHVlIHx8IHZhbHVlID09PSAwKSAmJiBpbnB1dFZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKSA9PT0gaW5wdXRWYWx1ZS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmICgodmFsdWUgPT09IG51bGwgJiYgaW5wdXRWYWx1ZSAhPT0gbnVsbCkgfHwgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgaW5wdXRWYWx1ZSAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgdmFsdWUgPSBgJHt2YWx1ZX1gOyAvLyBUcmFuc2Zvcm1hbmRvIGVtIHN0cmluZ1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSA9PT0gaW5wdXRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZE9wdGlvblZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbmQob3B0aW9uID0+IHRoaXMuaXNFcXVhbChvcHRpb24udmFsdWUsIHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1JbkFycmF5KG9iamVjdFdpdGhBcnJheTogQXJyYXk8YW55Pik6IEFycmF5PFBvU2VsZWN0T3B0aW9uR3JvdXAgfCBhbnk+IHtcbiAgICByZXR1cm4gb2JqZWN0V2l0aEFycmF5LnJlZHVjZSgob3B0aW9ucywgaXRlbXMpID0+IHtcbiAgICAgIGlmIChpdGVtcy5vcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmNvbmNhdChpdGVtcy5vcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXTtcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwcml2YXRlIHNlcGFyYXRlT3B0aW9ucygpIHtcbiAgICB0aGlzLm9wdGlvbnNEZWZhdWx0LmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgIGlmICh0aGlzLmlzSXRlbUdyb3VwKG9wdGlvbikpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZU9wdGlvbnMob3B0aW9uLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLmxpc3RHcm91cE9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25XaXRob3V0R3JvdXAucHVzaChvcHRpb24pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMub3B0aW9uV2l0aG91dEdyb3VwLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudmFsaWRhdGVPcHRpb25zKHRoaXMub3B0aW9uV2l0aG91dEdyb3VwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlT3B0aW9ucyhvcHRpb25zOiBBcnJheTxhbnk+KSB7XG4gICAgcmVtb3ZlRHVwbGljYXRlZE9wdGlvbnMob3B0aW9ucyk7XG4gICAgcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbE9wdGlvbnMob3B0aW9ucyk7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXJcbiAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbcC1pZF09XCJpZFwiXG4gIFtwLWxhYmVsXT1cImxhYmVsXCJcbiAgW3Atb3B0aW9uYWxdPVwib3B0aW9uYWxcIlxuICBbcC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gIFtwLXNob3ctcmVxdWlyZWRdPVwic2hvd1JlcXVpcmVkXCJcbj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgPHNlbGVjdFxuICAgICAgI3NlbGVjdFxuICAgICAgY2xhc3M9XCJwby1zZWxlY3RcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFtjbGFzcy5wby1zZWxlY3QtcGxhY2Vob2xkZXJdPVwiIXNlbGVjdGVkVmFsdWU/LnRvU3RyaW5nKCkgJiYgISFwbGFjZWhvbGRlclwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0Q2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICA+XG4gICAgICA8b3B0aW9uXG4gICAgICAgICpuZ0lmPVwiIXNlbGVjdGVkVmFsdWU/LnRvU3RyaW5nKCkgfHwgISFwbGFjZWhvbGRlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhIXBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2hpZGRlbl09XCIhc2VsZWN0ZWRWYWx1ZT8udG9TdHJpbmcoKSAmJiAhcGxhY2Vob2xkZXJcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwiIXNlbGVjdGVkVmFsdWU/LnRvU3RyaW5nKClcIlxuICAgICAgICBbdmFsdWVdPVwicGxhY2Vob2xkZXIgPz8gJydcIlxuICAgICAgPlxuICAgICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgICAgPC9vcHRpb24+XG4gICAgICA8IS0tIG5lY2Vzc8OhcmlvIG1hbnRlciBlc3NhIG9wdGlvbiBwYXJhIHVzbyBkbyBzZWxlY3QgY29tIFJlYWN0aXZlRm9ybXMgLS0+XG4gICAgICA8b3B0aW9uIFtoaWRkZW5dPVwidHJ1ZVwiPlxuICAgICAgICB7eyBkaXNwbGF5VmFsdWUgfX1cbiAgICAgIDwvb3B0aW9uPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbldpdGhvdXRHcm91cC5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9uV2l0aG91dEdyb3VwXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgW3ZhbHVlXT1cIml0ZW0/Llt0aGlzLmZpZWxkVmFsdWVdXCI+XG4gICAgICAgICAge3sgaXRlbT8uW3RoaXMuZmllbGRMYWJlbF0gfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaXN0R3JvdXBPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsaXN0R3JvdXBPcHRpb25zXCI+XG4gICAgICAgICAgPG9wdGdyb3VwICpuZ0lmPVwiaXRlbT8ub3B0aW9ucy5sZW5ndGggPiAwXCIgbGFiZWw9XCJ7eyBpdGVtPy5sYWJlbCB9fVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc3ViSXRlbSBvZiBpdGVtLm9wdGlvbnNcIiBbdmFsdWVdPVwic3ViSXRlbT8uW3RoaXMuZmllbGRWYWx1ZV1cIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIj5cbiAgICAgICAgICAgICAge3sgc3ViSXRlbT8uW3RoaXMuZmllbGRMYWJlbF0gIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L29wdGdyb3VwPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvc2VsZWN0PlxuICA8L2Rpdj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbSBbcC1oZWxwXT1cImhlbHBcIiBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPjwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuIl19
|
|
507
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1zZWxlY3QvcG8tc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1zZWxlY3QvcG8tc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkYsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLDZCQUE2QixFQUM3QixJQUFJLEVBQ0osVUFBVSxFQUNYLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0lDTDFELGlDQU1DO0lBQ0MsWUFDRjtJQUFBLGlCQUFTOzs7O0lBTlAsK0NBQTBCLDJHQUFBLHNGQUFBLDBGQUFBO0lBSzFCLGVBQ0Y7SUFERSxtREFDRjs7O0lBVEYsNkJBQWdDO0lBQzlCLHVGQVFTO0lBQ1QsaUNBQXdCO0lBQUEsWUFBa0I7SUFBQSxpQkFBUztJQUNyRCwwQkFBZTs7O0lBVFYsZUFBaUQ7SUFBakQsdUhBQWlEO0lBUTVDLGVBQWU7SUFBZiw2QkFBZTtJQUFDLGVBQWtCO0lBQWxCLHlDQUFrQjs7O0lBRzVDLDZCQUErQjtJQUM3Qiw4QkFBUTtJQUFBLFlBQWlDO0lBQUEsaUJBQVM7SUFDcEQs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QUd3RCxhQUFhO2tCQUFyRSxTQUFTO21CQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQWdCOUIsYUFBYTtrQkFBckMsTUFBTTttQkFBQyxlQUFlO1lBV3NDLFFBQVE7a0JBQXBFLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQUduQyxXQUFXO2tCQUFsQyxLQUFLO21CQUFDLGVBQWU7WUFtREUsT0FBTztrQkFBOUIsS0FBSzttQkFBQyxXQUFXO1lBMENVLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQW9CTSxVQUFVO2tCQUFyQyxLQUFLO21CQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgY29udmVydFRvQm9vbGVhbixcbiAgaXNTYWZhcmksXG4gIHJlbW92ZUR1cGxpY2F0ZWRPcHRpb25zLFxuICByZW1vdmVVbmRlZmluZWRBbmROdWxsT3B0aW9ucyxcbiAgdXVpZCxcbiAgdmFsaWRWYWx1ZVxufSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcblxuaW1wb3J0IHsgUG9GaWVsZFZhbGlkYXRlTW9kZWwgfSBmcm9tICcuLi9wby1maWVsZC12YWxpZGF0ZS5tb2RlbCc7XG5pbXBvcnQgeyBQb1NlbGVjdE9wdGlvbkdyb3VwIH0gZnJvbSAnLi9wby1zZWxlY3Qtb3B0aW9uLWdyb3VwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1NlbGVjdE9wdGlvbiB9IGZyb20gJy4vcG8tc2VsZWN0LW9wdGlvbi5pbnRlcmZhY2UnO1xuXG5jb25zdCBQT19TRUxFQ1RfRklFTERfTEFCRUxfREVGQVVMVCA9ICdsYWJlbCc7XG5jb25zdCBQT19TRUxFQ1RfRklFTERfVkFMVUVfREVGQVVMVCA9ICd2YWx1ZSc7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvRmllbGRWYWxpZGF0ZU1vZGVsXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tc2VsZWN0LWJhc2ljXCIgdGl0bGU9XCJQTyBTZWxlY3QgQmFzaWNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtYmFzaWMvc2FtcGxlLXBvLXNlbGVjdC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VsZWN0LWJhc2ljL3NhbXBsZS1wby1zZWxlY3QtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tc2VsZWN0LWxhYnNcIiB0aXRsZT1cIlBPIFNlbGVjdCBMYWJzXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VsZWN0LWxhYnMvc2FtcGxlLXBvLXNlbGVjdC1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zZWxlY3QtbGFicy9zYW1wbGUtcG8tc2VsZWN0LWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvblwiIHRpdGxlPVwiUE8gU2VsZWN0IC0gQ3VzdG9tZXIgcmVnaXN0cmF0aW9uXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi9zYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi9zYW1wbGUtcG8tc2VsZWN0LWN1c3RvbWVyLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb24vc2FtcGxlLXBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb24uc2VydmljZS50c1wiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9J3NhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uL3NhbXBsZS1wby1zZWxlY3QtY3VzdG9tZXItcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5lMmUtc3BlYy50cyc+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT0nc2FtcGxlLXBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb24vc2FtcGxlLXBvLXNlbGVjdC1jdXN0b21lci1yZWdpc3RyYXRpb24uY29tcG9uZW50LnBvLnRzJz4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zZWxlY3QtY29tcGFuaWVzXCIgdGl0bGU9XCJQTyBTZWxlY3QgQ29tcGFuaWVzXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VsZWN0LWNvbXBhbmllcy9zYW1wbGUtcG8tc2VsZWN0LWNvbXBhbmllcy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc2VsZWN0LWNvbXBhbmllcy9zYW1wbGUtcG8tc2VsZWN0LWNvbXBhbmllcy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gY29tcG9uZW50ZSBwby1zZWxlY3QgZXhpYmUgdW1hIGxpc3RhIGRlIHZhbG9yZXMgZSBwZXJtaXRlIHF1ZSBvIHVzdcOhcmlvIHNlbGVjaW9uZSB1bSBkZXNzZXMgdmFsb3Jlcy5cbiAqIE9zIHZhbG9yZXMgbGlzdGFkb3MgcG9kZW0gc2VyIGZpeG9zIG91IGRpbsOibWljb3MgZGUgYWNvcmRvIGNvbSBhIG5lY2Vzc2lkYWRlIGRvIGRlc2Vudm9sdmVkb3IsIGRhbmRvIG1haXMgZmxleGliaWxpZGFkZSBhbyBjb21wb25lbnRlLlxuICogTyBwby1zZWxlY3QgbsOjbyBwZXJtaXRlIHF1ZSBvIHVzdcOhcmlvIGluZm9ybWUgdW0gdmFsb3IgZGlmZXJlbnRlIGRvcyB2YWxvcmVzIGxpc3RhZG9zLCBpc3NvIGdhcmFudGUgYSBjb25zaXN0w6puY2lhIGRhIGluZm9ybWHDp8Ojby5cbiAqIE8gcG8tc2VsZWN0IG7Do28gcGVybWl0ZSBxdWUgc2VqYW0gcGFzc2Fkb3MgdmFsb3JlcyBkdXBsaWNhZG9zLCB1bmRlZmluZWQgZSBudWxsIHBhcmEgYXMgb3DDp8O1ZXMsIGV4Y2x1aW5kby1vcyBkYSBsaXN0YS5cbiAqXG4gKiA+IEFvIHBhc3NhciB1bSB2YWxvciBwYXJhIG8gX21vZGVsXyBxdWUgbsOjbyBlc3TDoSBuYSBsaXN0YSBkZSBvcMOnw7VlcywgbyBtZXNtbyBzZXLDoSBkZWZpbmlkbyBjb21vIGB1bmRlZmluZWRgLlxuICpcbiAqIFRhbWLDqW0gZXhpc3RlIGEgcG9zc2liaWxpZGFkZSBkZSB1dGlsaXphciB1bSBfdGVtcGxhdGVfIHBhcmEgYSBleGliacOnw6NvIGRvcyBpdGVucyBkYSBsaXN0YSxcbiAqIHZlamEgbWFpcyBlbSAqKltwLWNvbWJvLW9wdGlvbi10ZW1wbGF0ZV0oL2RvY3VtZW50YXRpb24vcG8tY29tYm8tb3B0aW9uLXRlbXBsYXRlKSoqLlxuICpcbiAqID4gT2JzOiBvIHRlbXBsYXRlICoqW3Atc2VsZWN0LW9wdGlvbi10ZW1wbGF0ZV0oL2RvY3VtZW50YXRpb24vcG8tc2VsZWN0LW9wdGlvbi10ZW1wbGF0ZSkqKiBzZXLDoSBkZXByZWNpYWRvIG5hIHZlcnPDo28gMTQueC54LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9TZWxlY3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb1NlbGVjdENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQb1NlbGVjdENvbXBvbmVudCBleHRlbmRzIFBvRmllbGRWYWxpZGF0ZU1vZGVsPGFueT4gaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkKCdzZWxlY3QnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBzZWxlY3RFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEZ1bsOnw6NvIHBhcmEgYXR1YWxpemFyIG8gbmdNb2RlbCBkbyBjb21wb25lbnRlLCBuZWNlc3PDoXJpbyBxdWFuZG8gbsOjbyBmb3IgdXRpbGl6YWRvIGRlbnRybyBkYSB0YWcgZm9ybS5cbiAgICpcbiAgICogTmEgdmVyc8OjbyAxMi4yLjAgZG8gQW5ndWxhciBhIHZlcmlmaWNhw6fDo28gYHN0cmljdFRlbXBsYXRlc2AgdmVtIHRydWUgY29tbyBkZWZhdWx0LiBQb3J0YW50bywgcGFyYSB1dGlsaXphclxuICAgKiB0d28td2F5IGJpbmRpbmcgbm8gY29tcG9uZW50ZSBkZXZlIHNlIHV0aWxpemFyIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLXNlbGVjdCAuLi4gW25nTW9kZWxdPVwic2VsZWN0TW9kZWxcIiAobmdNb2RlbENoYW5nZSk9XCJzZWxlY3RNb2RlbCA9ICRldmVudFwiPiA8L3BvLXNlbGVjdD5cbiAgICogYGBgXG4gICAqL1xuICBAT3V0cHV0KCduZ01vZGVsQ2hhbmdlJykgbmdNb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egc29tZW50ZSBwYXJhIGxlaXR1cmEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1yZWFkb25seScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBNZW5zYWdlbSBxdWUgYXBhcmVjZXLDoSBlbnF1YW50byBuZW5odW1hIG9ww6fDo28gZXN0aXZlciBzZWxlY2lvbmFkYS4gKi9cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyJykgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgZGlzcGxheVZhbHVlO1xuICBpZCA9IGBwby1zZWxlY3RbJHt1dWlkKCl9XWA7XG4gIG1vZGVsVmFsdWU6IGFueTtcbiAgc2VsZWN0ZWRWYWx1ZTogYW55O1xuICBvcHRpb25zRGVmYXVsdCA9IFtdO1xuICBsaXN0R3JvdXBPcHRpb25zID0gW107XG4gIG9wdGlvbldpdGhvdXRHcm91cCA9IFtdO1xuICBpc1NhZmFyaTogYm9vbGVhbiA9IGlzU2FmYXJpKCk7XG5cbiAgcHJvdGVjdGVkIG9uTW9kZWxUb3VjaGVkOiBhbnk7XG5cbiAgcHJpdmF0ZSBfZmllbGRMYWJlbD86IHN0cmluZyA9IFBPX1NFTEVDVF9GSUVMRF9MQUJFTF9ERUZBVUxUO1xuICBwcml2YXRlIF9maWVsZFZhbHVlPzogc3RyaW5nID0gUE9fU0VMRUNUX0ZJRUxEX1ZBTFVFX0RFRkFVTFQ7XG4gIHByaXZhdGUgX29wdGlvbnM6IEFycmF5PFBvU2VsZWN0T3B0aW9uPiB8IEFycmF5PFBvU2VsZWN0T3B0aW9uR3JvdXA+IHwgQXJyYXk8YW55PjtcblxuICAvKipcbiAgICogTmVzdGEgcHJvcHJpZWRhZGUgZGV2ZSBzZXIgZGVmaW5pZG8gdW1hIGNvbGXDp8OjbyBkZSBvYmpldG9zIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBgUG9TZWxlY3RPcHRpb25gLFxuICAgKiBvdSB1bWEgY29sZcOnw6NvIGRlIG9iamV0b3MgZGVudHJvIGRlIGdydXBvcyBkaWZlcmVudGVzLCBxdWUgc2VyaWFtIGRhIGludGVyZmFjZSBgUG9TZWxlY3RPcHRpb25Hcm91cGAuXG4gICAqXG4gICAqIENhc28gZXN0YSBsaXN0YSBlc3RpdmVyIHZhemlhLCBvIG1vZGVsIHNlcsOhIGB1bmRlZmluZWRgLlxuICAgKlxuICAgKiA+IEVzc2EgcHJvcHJpZWRhZGUgw6kgaW11dMOhdmVsLCBvdSBzZWphLCBzZW1wcmUgcXVlIHF1aXNlciBhdHVhbGl6YXIgYSBsaXN0YSBkZSBvcMOnw7VlcyBkaXNwb27DrXZlaXNcbiAgICogYXR1YWxpemUgYSByZWZlcsOqbmNpYSBkbyBvYmpldG86XG4gICAqXG4gICAqIGBgYFxuICAgKiAvLyBhdHVhbGl6YSBhIHJlZmVyw6puY2lhIGRvIG9iamV0byBnYXJhbnRpbmRvIGEgYXR1YWxpemHDp8OjbyBkbyB0ZW1wbGF0ZVxuICAgKiB0aGlzLm9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zLCB7IHZhbHVlOiAneCcsIGxhYmVsOiAnTm92YSBvcMOnw6NvJyB9XTtcbiAgICpcbiAgICogLy8gZXZpdGUsIHBvaXMgbsOjbyBhdHVhbGl6YSBhIHJlZmVyw6puY2lhIGRvIG9iamV0byBwb2RlbmRvIGdlcmFyIGF0cmFzb3MgbmEgYXR1YWxpemHDp8OjbyBkbyB0ZW1wbGF0ZVxuICAgKiB0aGlzLm9wdGlvbnMucHVzaCh7IHZhbHVlOiAneCcsIGxhYmVsOiAnTm92YSBvcMOnw6NvJyB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqID4gUGFyYSBjb2xlw6fDo28gZGUgb2JqZXRvcyBkZW50cm8gZGUgZ3J1cG9zIGRpc3RpbnRvcyBzZXLDoSBleGliaWRvIGEgbGFiZWwgZSBvcMOnw7VlcyBzb21lbnRlIHNlIGEgcHJvcHJpZWRhZGUgYG9wdGlvbnNgIHBvc3N1YSB2YWxvcmVzLlxuICAgKiAgU2VuZG8gYXNzaW0sIGEgZXN0cnV0dXJhIHNlZ3VpcmlhIGRlc3NhIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogdGhpcy5vcHRpb25zID0gW3tcbiAgICogIGxhYmVsOiAnT3DDp8O1ZXMnLFxuICAgKiAgb3B0aW9uczogW1xuICAgKiAgICB7IHZhbHVlOiAxLCBsYWJlbDogJ29ww6fDo28gMScgfSxcbiAgICogICAgeyB2YWx1ZTogMiwgbGFiZWw6ICdvcMOnw6NvIDInIH1cbiAgICogIF0sXG4gICAqIH1dO1xuICAgKiBgYGBcbiAgICpcbiAgICogw4kgcG9zc8OtdmVsIGEgdXRpbGl6YcOnw6NvIGRlIG9ww6fDtWVzIGFncnVwYWRhcyBlIGRlc2FncnVwYWRhcyBlbSBjb25qdW50bywgcG9yw6ltIHNlcsOhIGZlaXRhIGEgb3JkZW5hw6fDo28gZGUgZXhpYmlyIGFzIG9ww6fDtWVzXG4gICAqIGRlc2FncnVwYWRhcyBhY2ltYS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25zJykgc2V0IG9wdGlvbnMob3B0aW9uczogQXJyYXk8UG9TZWxlY3RPcHRpb24gfCBQb1NlbGVjdE9wdGlvbkdyb3VwIHwgYW55Pikge1xuICAgIHRoaXMubGlzdEdyb3VwT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMub3B0aW9uV2l0aG91dEdyb3VwID0gW107XG5cbiAgICBpZiAodGhpcy5maWVsZExhYmVsICYmIHRoaXMuZmllbGRWYWx1ZSAmJiBvcHRpb25zKSB7XG4gICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0l0ZW1Hcm91cChvcHRpb24pKSB7XG4gICAgICAgICAgb3B0aW9uLm9wdGlvbnMubWFwKG9wdCA9PiB7XG4gICAgICAgICAgICBvcHQubGFiZWwgPSBvcHRbdGhpcy5maWVsZExhYmVsXTtcbiAgICAgICAgICAgIG9wdC52YWx1ZSA9IG9wdFt0aGlzLmZpZWxkVmFsdWVdO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9wdGlvbi5sYWJlbCA9IG9wdGlvblt0aGlzLmZpZWxkTGFiZWxdO1xuICAgICAgICAgIG9wdGlvbi52YWx1ZSA9IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdGhpcy5vcHRpb25zRGVmYXVsdCA9IFsuLi5vcHRpb25zXTtcbiAgICAgIHRoaXMuc2VwYXJhdGVPcHRpb25zKCk7XG5cbiAgICAgIHRoaXMub3B0aW9uc0RlZmF1bHQgPSBbXTtcbiAgICAgIHRoaXMub3B0aW9uc0RlZmF1bHQgPSBbLi4udGhpcy5vcHRpb25XaXRob3V0R3JvdXAsIC4uLnRoaXMudHJhbnNmb3JtSW5BcnJheSh0aGlzLmxpc3RHcm91cE9wdGlvbnMpXTtcbiAgICAgIHRoaXMub25VcGRhdGVPcHRpb25zKCk7XG4gICAgICB0aGlzLl9vcHRpb25zID0gWy4uLnRoaXMub3B0aW9uc0RlZmF1bHRdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIG8gbm9tZSBkYSBwcm9wcmllZGFkZSBkbyBvYmpldG8gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIGEgY29udmVyc8OjbyBkb3MgaXRlbnMgYXByZXNlbnRhZG9zIG5hIGxpc3RhIGRvIGNvbXBvbmVudGVcbiAgICogKGBwLW9wdGlvbnNgKSwgZXN0YSBwcm9wcmllZGFkZSBzZXLDoSByZXNwb25zw6F2ZWwgcGVsbyB0ZXh0byBkZSBhcHJlc2VudGHDp8OjbyBkZSBjYWRhIGl0ZW0gZGEgbGlzdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBsYWJlbGBcbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC1sYWJlbCcpIHNldCBmaWVsZExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZExhYmVsID0gdmFsdWUgfHwgUE9fU0VMRUNUX0ZJRUxEX0xBQkVMX0RFRkFVTFQ7XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vcHRpb25zID0gWy4uLnRoaXMub3B0aW9uc107XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZpZWxkTGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTGFiZWw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gbyBub21lIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgYSBjb252ZXJzw6NvIGRvcyBpdGVucyBhcHJlc2VudGFkb3MgbmEgbGlzdGEgZG8gY29tcG9uZW50ZVxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHZhbG9yIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHZhbHVlYFxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLXZhbHVlJykgc2V0IGZpZWxkVmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkVmFsdWUgPSB2YWx1ZSB8fCBQT19TRUxFQ1RfRklFTERfVkFMVUVfREVGQVVMVDtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zXTtcbiAgICB9XG4gIH1cblxuICBnZXQgZmllbGRWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRWYWx1ZTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMub3B0aW9ucz8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBjaGFuZ2VzLm9wdGlvbnMuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgYXRyaWJ1aSBmb2NvIGFvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6w6EtbGEgw6kgbmVjZXNzw6FyaW8gdGVyIGEgaW5zdMOibmNpYSBkbyBjb21wb25lbnRlIG5vIERPTSwgcG9kZW5kbyBzZXIgdXRpbGl6YWRvIG8gVmlld0NoaWxkIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogaW1wb3J0IHsgUG9TZWxlY3RDb21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvU2VsZWN0Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBzZWxlY3Q6IFBvU2VsZWN0Q29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c1NlbGVjdCgpIHtcbiAgICogICB0aGlzLnNlbGVjdC5mb2N1cygpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkPy4oKTtcbiAgfVxuXG4gIC8vIEFsdGVyYSBvIHZhbG9yIGFvIHNlbGVjaW9uYXIgdW0gaXRlbS5cbiAgb25TZWxlY3RDaGFuZ2UodmFsdWU6IGFueSkge1xuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQ/LigpO1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgY29uc3Qgb3B0aW9uRm91bmQ6IGFueSA9IHRoaXMuZmluZE9wdGlvblZhbHVlKHZhbHVlKTtcblxuICAgICAgaWYgKG9wdGlvbkZvdW5kKSB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWVzKG9wdGlvbkZvdW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvblVwZGF0ZU9wdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMubW9kZWxWYWx1ZSkge1xuICAgICAgdGhpcy5vblNlbGVjdENoYW5nZSh0aGlzLm1vZGVsVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEF0dWFsaXphIHZhbG9yZXNcbiAgdXBkYXRlVmFsdWVzKG9wdGlvbjogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRWYWx1ZSAhPT0gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdO1xuICAgICAgdGhpcy5zZWxlY3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBvcHRpb25bdGhpcy5maWVsZFZhbHVlXTtcbiAgICAgIHRoaXMudXBkYXRlTW9kZWwob3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0pO1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBvcHRpb25bdGhpcy5maWVsZExhYmVsXTtcbiAgICAgIHRoaXMuZW1pdENoYW5nZShvcHRpb25bdGhpcy5maWVsZFZhbHVlXSk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVjZWJlIGFzIGFsdGVyYcOnw7VlcyBkbyBtb2RlbFxuICBvbldyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGNvbnN0IG9wdGlvbkZvdW5kOiBhbnkgPSB0aGlzLmZpbmRPcHRpb25WYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAob3B0aW9uRm91bmQpIHtcbiAgICAgIHRoaXMuc2VsZWN0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gb3B0aW9uRm91bmQudmFsdWU7XG4gICAgICB0aGlzLnNlbGVjdGVkVmFsdWUgPSBvcHRpb25Gb3VuZFt0aGlzLmZpZWxkVmFsdWVdO1xuICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBvcHRpb25Gb3VuZFt0aGlzLmZpZWxkTGFiZWxdO1xuICAgIH0gZWxzZSBpZiAodmFsaWRWYWx1ZSh0aGlzLnNlbGVjdGVkVmFsdWUpKSB7XG4gICAgICB0aGlzLnNlbGVjdEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudXBkYXRlTW9kZWwodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRoaXMubW9kZWxWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZXh0cmFWYWxpZGF0aW9uKGM6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaXNJdGVtR3JvdXAoaXRlbTogUG9TZWxlY3RPcHRpb24gfCBQb1NlbGVjdE9wdGlvbkdyb3VwIHwgYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKGl0ZW0ub3B0aW9ucykge1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoaXRlbS5vcHRpb25zKSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgaXNFcXVhbCh2YWx1ZTogYW55LCBpbnB1dFZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoKHZhbHVlIHx8IHZhbHVlID09PSAwKSAmJiBpbnB1dFZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKSA9PT0gaW5wdXRWYWx1ZS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmICgodmFsdWUgPT09IG51bGwgJiYgaW5wdXRWYWx1ZSAhPT0gbnVsbCkgfHwgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgaW5wdXRWYWx1ZSAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgdmFsdWUgPSBgJHt2YWx1ZX1gOyAvLyBUcmFuc2Zvcm1hbmRvIGVtIHN0cmluZ1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZSA9PT0gaW5wdXRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZE9wdGlvblZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbmQob3B0aW9uID0+IHRoaXMuaXNFcXVhbChvcHRpb24udmFsdWUsIHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmFuc2Zvcm1JbkFycmF5KG9iamVjdFdpdGhBcnJheTogQXJyYXk8YW55Pik6IEFycmF5PFBvU2VsZWN0T3B0aW9uR3JvdXAgfCBhbnk+IHtcbiAgICByZXR1cm4gb2JqZWN0V2l0aEFycmF5LnJlZHVjZSgob3B0aW9ucywgaXRlbXMpID0+IHtcbiAgICAgIGlmIChpdGVtcy5vcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmNvbmNhdChpdGVtcy5vcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXTtcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwcml2YXRlIHNlcGFyYXRlT3B0aW9ucygpIHtcbiAgICB0aGlzLm9wdGlvbnNEZWZhdWx0LmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgIGlmICh0aGlzLmlzSXRlbUdyb3VwKG9wdGlvbikpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZU9wdGlvbnMob3B0aW9uLm9wdGlvbnMpO1xuICAgICAgICB0aGlzLmxpc3RHcm91cE9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25XaXRob3V0R3JvdXAucHVzaChvcHRpb24pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMub3B0aW9uV2l0aG91dEdyb3VwLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudmFsaWRhdGVPcHRpb25zKHRoaXMub3B0aW9uV2l0aG91dEdyb3VwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlT3B0aW9ucyhvcHRpb25zOiBBcnJheTxhbnk+KSB7XG4gICAgcmVtb3ZlRHVwbGljYXRlZE9wdGlvbnMob3B0aW9ucyk7XG4gICAgcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbE9wdGlvbnMob3B0aW9ucyk7XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXJcbiAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbcC1pZF09XCJpZFwiXG4gIFtwLWxhYmVsXT1cImxhYmVsXCJcbiAgW3Atb3B0aW9uYWxdPVwib3B0aW9uYWxcIlxuICBbcC1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gIFtwLXNob3ctcmVxdWlyZWRdPVwic2hvd1JlcXVpcmVkXCJcbj5cbiAgPGRpdiBjbGFzcz1cInBvLWZpZWxkLWNvbnRhaW5lci1jb250ZW50XCI+XG4gICAgPHNlbGVjdFxuICAgICAgI3NlbGVjdFxuICAgICAgY2xhc3M9XCJwby1zZWxlY3RcIlxuICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgIFtjbGFzcy5wby1zZWxlY3QtcGxhY2Vob2xkZXJdPVwiIXNlbGVjdGVkVmFsdWU/LnRvU3RyaW5nKCkgJiYgISFwbGFjZWhvbGRlclwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2lkXT1cImlkXCJcbiAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0Q2hhbmdlKCRldmVudC50YXJnZXQudmFsdWUpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU2FmYXJpXCI+XG4gICAgICAgIDxvcHRpb25cbiAgICAgICAgICAqbmdJZj1cIiFzZWxlY3RlZFZhbHVlPy50b1N0cmluZygpIHx8ICEhcGxhY2Vob2xkZXJcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhIXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBbaGlkZGVuXT1cIiFzZWxlY3RlZFZhbHVlPy50b1N0cmluZygpICYmICFwbGFjZWhvbGRlclwiXG4gICAgICAgICAgW3NlbGVjdGVkXT1cIiFzZWxlY3RlZFZhbHVlPy50b1N0cmluZygpXCJcbiAgICAgICAgICBbdmFsdWVdPVwicGxhY2Vob2xkZXIgPz8gJydcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gW2hpZGRlbl09XCJ0cnVlXCI+e3sgZGlzcGxheVZhbHVlIH19PC9vcHRpb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzU2FmYXJpXCI+XG4gICAgICAgIDxvcHRpb24+e3sgZGlzcGxheVZhbHVlIHx8IHBsYWNlaG9sZGVyIH19PC9vcHRpb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbldpdGhvdXRHcm91cC5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9uV2l0aG91dEdyb3VwXCIgW2Rpc2FibGVkXT1cInJlYWRvbmx5XCIgW3ZhbHVlXT1cIml0ZW0/Llt0aGlzLmZpZWxkVmFsdWVdXCI+XG4gICAgICAgICAge3sgaXRlbT8uW3RoaXMuZmllbGRMYWJlbF0gfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsaXN0R3JvdXBPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsaXN0R3JvdXBPcHRpb25zXCI+XG4gICAgICAgICAgPG9wdGdyb3VwICpuZ0lmPVwiaXRlbT8ub3B0aW9ucy5sZW5ndGggPiAwXCIgbGFiZWw9XCJ7eyBpdGVtPy5sYWJlbCB9fVwiIFtkaXNhYmxlZF09XCJyZWFkb25seVwiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc3ViSXRlbSBvZiBpdGVtLm9wdGlvbnNcIiBbdmFsdWVdPVwic3ViSXRlbT8uW3RoaXMuZmllbGRWYWx1ZV1cIiBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIj5cbiAgICAgICAgICAgICAge3sgc3ViSXRlbT8uW3RoaXMuZmllbGRMYWJlbF0gIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L29wdGdyb3VwPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvc2VsZWN0PlxuICA8L2Rpdj5cblxuICA8cG8tZmllbGQtY29udGFpbmVyLWJvdHRvbSBbcC1oZWxwXT1cImhlbHBcIiBbcC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiPjwvcG8tZmllbGQtY29udGFpbmVyLWJvdHRvbT5cbjwvcG8tZmllbGQtY29udGFpbmVyPlxuIl19
|