@hmcts/ccd-case-ui-toolkit 7.1.80-welsh-translation → 7.1.80
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/shared/components/palette/collection/write-collection-field.component.mjs +13 -17
- package/esm2022/lib/shared/components/palette/document/write-document-field.component.mjs +2 -2
- package/esm2022/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.mjs +25 -2
- package/esm2022/lib/shared/components/palette/palette.module.mjs +2 -2
- package/esm2022/lib/shared/components/search-filters/search-filters.component.mjs +41 -24
- package/esm2022/lib/shared/components/workbasket-filters/workbasket-filters.component.mjs +29 -3
- package/esm2022/lib/shared/services/jurisdiction/jurisdiction.service.mjs +6 -3
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +112 -47
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.d.ts +1 -0
- package/lib/shared/components/palette/judicial-user/write-judicial-user-field.component.d.ts.map +1 -1
- package/lib/shared/components/search-filters/search-filters.component.d.ts +1 -0
- package/lib/shared/components/search-filters/search-filters.component.d.ts.map +1 -1
- package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts +2 -0
- package/lib/shared/components/workbasket-filters/workbasket-filters.component.d.ts.map +1 -1
- package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts +2 -1
- package/lib/shared/services/jurisdiction/jurisdiction.service.d.ts.map +1 -1
- package/package.json +1 -1
package/esm2022/lib/shared/components/palette/collection/write-collection-field.component.mjs
CHANGED
|
@@ -20,18 +20,14 @@ function WriteCollectionFieldComponent_h2_8_span_1_Template(rf, ctx) { if (rf &
|
|
|
20
20
|
i0.ɵɵelementStart(0, "span", 10)(1, "markdown");
|
|
21
21
|
i0.ɵɵtext(2);
|
|
22
22
|
i0.ɵɵpipe(3, "rpxTranslate");
|
|
23
|
-
i0.ɵɵelementEnd();
|
|
24
|
-
i0.ɵɵelement(4, "ccd-markdown", 11);
|
|
25
|
-
i0.ɵɵelementEnd();
|
|
23
|
+
i0.ɵɵelementEnd()();
|
|
26
24
|
} if (rf & 2) {
|
|
27
25
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
28
26
|
i0.ɵɵadvance(2);
|
|
29
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3,
|
|
30
|
-
i0.ɵɵadvance(2);
|
|
31
|
-
i0.ɵɵproperty("content", ctx_r0.caseField.hint_text);
|
|
27
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 1, ctx_r0.caseField.hint_text));
|
|
32
28
|
} }
|
|
33
29
|
function WriteCollectionFieldComponent_h2_8_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
-
i0.ɵɵelementStart(0, "span",
|
|
30
|
+
i0.ɵɵelementStart(0, "span", 11);
|
|
35
31
|
i0.ɵɵtext(1);
|
|
36
32
|
i0.ɵɵpipe(2, "ccdFirstError");
|
|
37
33
|
i0.ɵɵelementEnd();
|
|
@@ -42,7 +38,7 @@ function WriteCollectionFieldComponent_h2_8_span_2_Template(rf, ctx) { if (rf &
|
|
|
42
38
|
} }
|
|
43
39
|
function WriteCollectionFieldComponent_h2_8_Template(rf, ctx) { if (rf & 1) {
|
|
44
40
|
i0.ɵɵelementStart(0, "h2", 3);
|
|
45
|
-
i0.ɵɵtemplate(1, WriteCollectionFieldComponent_h2_8_span_1_Template,
|
|
41
|
+
i0.ɵɵtemplate(1, WriteCollectionFieldComponent_h2_8_span_1_Template, 4, 3, "span", 8)(2, WriteCollectionFieldComponent_h2_8_span_2_Template, 3, 4, "span", 9);
|
|
46
42
|
i0.ɵɵelementEnd();
|
|
47
43
|
} if (rf & 2) {
|
|
48
44
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -53,16 +49,16 @@ function WriteCollectionFieldComponent_h2_8_Template(rf, ctx) { if (rf & 1) {
|
|
|
53
49
|
} }
|
|
54
50
|
function WriteCollectionFieldComponent_div_9_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
55
51
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
56
|
-
i0.ɵɵelementStart(0, "div", 1, 0)(2, "div",
|
|
52
|
+
i0.ɵɵelementStart(0, "div", 1, 0)(2, "div", 15)(3, "div", 16)(4, "legend", 17)(5, "label", 18)(6, "h3", 19);
|
|
57
53
|
i0.ɵɵtext(7);
|
|
58
54
|
i0.ɵɵpipe(8, "rpxTranslate");
|
|
59
55
|
i0.ɵɵelementEnd()()()();
|
|
60
|
-
i0.ɵɵelementStart(9, "div",
|
|
56
|
+
i0.ɵɵelementStart(9, "div", 20)(10, "button", 21);
|
|
61
57
|
i0.ɵɵlistener("click", function WriteCollectionFieldComponent_div_9_div_2_Template_button_click_10_listener() { const i_r3 = i0.ɵɵrestoreView(_r2).index; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.openModal(i_r3)); });
|
|
62
58
|
i0.ɵɵtext(11);
|
|
63
59
|
i0.ɵɵpipe(12, "rpxTranslate");
|
|
64
60
|
i0.ɵɵelementEnd()()();
|
|
65
|
-
i0.ɵɵelement(13, "ccd-field-write",
|
|
61
|
+
i0.ɵɵelement(13, "ccd-field-write", 22);
|
|
66
62
|
i0.ɵɵelementEnd();
|
|
67
63
|
} if (rf & 2) {
|
|
68
64
|
const item_r4 = ctx.$implicit;
|
|
@@ -82,8 +78,8 @@ function WriteCollectionFieldComponent_div_9_div_2_Template(rf, ctx) { if (rf &
|
|
|
82
78
|
i0.ɵɵproperty("caseField", item_r4.caseField)("caseFields", ctx_r0.caseFields)("formGroup", ctx_r0.formGroup)("parent", item_r4.container)("idPrefix", item_r4.prefix)("hidden", item_r4.caseField.hidden)("isExpanded", ctx_r0.isExpanded)("isInSearchBlock", ctx_r0.isInSearchBlock);
|
|
83
79
|
} }
|
|
84
80
|
function WriteCollectionFieldComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
85
|
-
i0.ɵɵelementStart(0, "div",
|
|
86
|
-
i0.ɵɵtemplate(2, WriteCollectionFieldComponent_div_9_div_2_Template, 14, 19, "div",
|
|
81
|
+
i0.ɵɵelementStart(0, "div", 12)(1, "fieldset", 13);
|
|
82
|
+
i0.ɵɵtemplate(2, WriteCollectionFieldComponent_div_9_div_2_Template, 14, 19, "div", 14);
|
|
87
83
|
i0.ɵɵelementEnd()();
|
|
88
84
|
} if (rf & 2) {
|
|
89
85
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
@@ -93,7 +89,7 @@ function WriteCollectionFieldComponent_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
|
93
89
|
} }
|
|
94
90
|
function WriteCollectionFieldComponent_button_10_Template(rf, ctx) { if (rf & 1) {
|
|
95
91
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
96
|
-
i0.ɵɵelementStart(0, "button",
|
|
92
|
+
i0.ɵɵelementStart(0, "button", 23);
|
|
97
93
|
i0.ɵɵlistener("click", function WriteCollectionFieldComponent_button_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.addItem(false)); });
|
|
98
94
|
i0.ɵɵtext(1);
|
|
99
95
|
i0.ɵɵpipe(2, "rpxTranslate");
|
|
@@ -411,7 +407,7 @@ export class WriteCollectionFieldComponent extends AbstractFieldWriteComponent {
|
|
|
411
407
|
} if (rf & 2) {
|
|
412
408
|
let _t;
|
|
413
409
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.items = _t);
|
|
414
|
-
} }, inputs: { caseFields: "caseFields" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 11, consts: [["collectionItem", ""], [1, "form-group", 3, "id"], [1, "panel", "collection-indicator"], [1, "heading-h2", "error-spacing"], ["type", "button", 1, "button", "write-collection-add-item__top", 3, "click", "disabled"], ["class", "heading-h2 error-spacing", 4, "ngIf"], ["class", "form-group", 3, "hidden", 4, "ngIf"], ["class", "button write-collection-add-item__bottom", "type", "button", 3, "disabled", "click", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], [1, "form-hint"], [
|
|
410
|
+
} }, inputs: { caseFields: "caseFields" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 11, consts: [["collectionItem", ""], [1, "form-group", 3, "id"], [1, "panel", "collection-indicator"], [1, "heading-h2", "error-spacing"], ["type", "button", 1, "button", "write-collection-add-item__top", 3, "click", "disabled"], ["class", "heading-h2 error-spacing", 4, "ngIf"], ["class", "form-group", 3, "hidden", 4, "ngIf"], ["class", "button write-collection-add-item__bottom", "type", "button", 3, "disabled", "click", 4, "ngIf"], ["class", "form-hint", 4, "ngIf"], ["class", "error-message", 4, "ngIf"], [1, "form-hint"], [1, "error-message"], [1, "form-group", 3, "hidden"], [1, "govuk-fieldset"], ["class", "form-group", 3, "id", 4, "ngFor", "ngForOf"], [1, "collection-title"], [1, "float-left"], [1, "govuk-fieldset__legend"], [3, "for"], [1, "heading-h3"], [1, "float-right"], ["type", "button", 1, "button", "button-secondary", 3, "click", "disabled"], [3, "caseField", "caseFields", "formGroup", "parent", "idPrefix", "hidden", "isExpanded", "isInSearchBlock"], ["type", "button", 1, "button", "write-collection-add-item__bottom", 3, "click", "disabled"]], template: function WriteCollectionFieldComponent_Template(rf, ctx) { if (rf & 1) {
|
|
415
411
|
i0.ɵɵelementStart(0, "div", 1)(1, "div", 2)(2, "h2", 3);
|
|
416
412
|
i0.ɵɵtext(3);
|
|
417
413
|
i0.ɵɵpipe(4, "ccdFieldLabel");
|
|
@@ -441,7 +437,7 @@ export class WriteCollectionFieldComponent extends AbstractFieldWriteComponent {
|
|
|
441
437
|
}
|
|
442
438
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WriteCollectionFieldComponent, [{
|
|
443
439
|
type: Component,
|
|
444
|
-
args: [{ selector: 'ccd-write-collection-field', template: "<div class=\"form-group\" [id]=\"id()\">\n\n <div class=\"panel collection-indicator\">\n\n <h2 class=\"heading-h2 error-spacing\">\n {{(caseField | ccdFieldLabel)}}\n </h2>\n <button class=\"button write-collection-add-item__top\" type=\"button\" (click)=\"addItem(true)\" [disabled]=\"isNotAuthorisedToCreate() || isSearchFilter()\">{{'Add new' | rpxTranslate}}</button>\n <h2 class=\"heading-h2 error-spacing\" *ngIf=\"caseField.hint_text || formArray.errors\">\n <span *ngIf=\"caseField.hint_text\" class=\"form-hint\">\n <markdown>{{caseField.hint_text | rpxTranslate }}</markdown>\n
|
|
440
|
+
args: [{ selector: 'ccd-write-collection-field', template: "<div class=\"form-group\" [id]=\"id()\">\n\n <div class=\"panel collection-indicator\">\n\n <h2 class=\"heading-h2 error-spacing\">\n {{(caseField | ccdFieldLabel)}}\n </h2>\n <button class=\"button write-collection-add-item__top\" type=\"button\" (click)=\"addItem(true)\" [disabled]=\"isNotAuthorisedToCreate() || isSearchFilter()\">{{'Add new' | rpxTranslate}}</button>\n <h2 class=\"heading-h2 error-spacing\" *ngIf=\"caseField.hint_text || formArray.errors\">\n <span *ngIf=\"caseField.hint_text\" class=\"form-hint\">\n <markdown>{{caseField.hint_text | rpxTranslate }}</markdown>\n </span>\n <span *ngIf=\"formArray.errors\" class=\"error-message\">\n {{(formArray.errors | ccdFirstError:caseField.label)}}\n </span>\n </h2>\n\n <div class=\"form-group\" [hidden]=\"caseField.hidden\" *ngIf=\"caseField.value && caseField.value.length\">\n <fieldset class=\"govuk-fieldset\">\n <div *ngFor=\"let item of collItems; let i = index\" #collectionItem\n [id]=\"this.buildIdPrefix(i) + i\" class=\"form-group\">\n <div class=\"collection-title\">\n <div class=\"float-left\">\n <legend class=\"govuk-fieldset__legend\">\n <label [for]=\"item.prefix + i\"><h3 class=\"heading-h3\">{{itemLabel(i) | rpxTranslate}}</h3></label>\n </legend>\n </div>\n <div class=\"float-right\">\n <button class=\"button button-secondary\" type=\"button\" (click)=\"openModal(i)\"\n [disabled]=\"isNotAuthorisedToDelete(i)\"\n attr.aria-label=\"Remove {{ itemLabel(i) }}\">{{'Remove' | rpxTranslate}}</button>\n </div>\n </div>\n <ccd-field-write [caseField]=\"item.caseField\"\n [caseFields]=\"caseFields\"\n [formGroup]=\"formGroup\"\n [parent]=\"item.container\"\n [idPrefix]=\"item.prefix\"\n [hidden]=\"item.caseField.hidden\"\n [isExpanded]=\"isExpanded\"\n [isInSearchBlock]=\"isInSearchBlock\">\n </ccd-field-write>\n </div>\n </fieldset>\n </div>\n\n <button class=\"button write-collection-add-item__bottom\" type=\"button\" (click)=\"addItem(false)\" [disabled]=\"isNotAuthorisedToCreate() || isSearchFilter()\" *ngIf=\"caseField.value && caseField.value.length\">{{'Add new' | rpxTranslate }}</button>\n\n </div>\n\n</div>\n", styles: [".collection-field-table tr:first-child>td{padding-top:0}.collection-field-table tr:last-child>td{border-bottom:none}.collection-field-table td.collection-actions{width:1px;white-space:nowrap}.error-spacing{margin-top:10px}.collection-title{height:51px}.float-left{float:left;padding-top:8px}.float-right{float:right}.complex-panel{margin:13px 0;border:1px solid #bfc1c3}.complex-panel .complex-panel-title{background-color:#dee0e2;padding:5px 5px 2px;border-bottom:1px solid #bfc1c3;display:block;color:#0b0c0c;font-family:nta,Arial,sans-serif;font-weight:700;text-transform:none;font-size:16px;line-height:1.25}@media (min-width: 641px){.complex-panel .complex-panel-title{font-size:19px;line-height:1.3157894737}}.complex-panel .complex-panel-table>tbody>tr>th{vertical-align:top}.complex-panel .complex-panel-table>tbody>tr:last-child>th,.complex-panel .complex-panel-table>tbody>tr:last-child>td{border-bottom:none}.complex-panel .complex-panel-simple-field th{padding-left:5px;width:295px}.complex-panel .complex-panel-compound-field td{padding:5px}.collection-indicator{border-left:solid 5px #b1b4b6}\n"] }]
|
|
445
441
|
}], () => [{ type: i1.MatLegacyDialog }, { type: i2.ScrollToService }, { type: i3.ProfileNotifier }, { type: i0.ChangeDetectorRef }], { caseFields: [{
|
|
446
442
|
type: Input
|
|
447
443
|
}], items: [{
|
|
@@ -449,4 +445,4 @@ export class WriteCollectionFieldComponent extends AbstractFieldWriteComponent {
|
|
|
449
445
|
args: ['collectionItem']
|
|
450
446
|
}] }); })();
|
|
451
447
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WriteCollectionFieldComponent, { className: "WriteCollectionFieldComponent", filePath: "lib/shared/components/palette/collection/write-collection-field.component.ts", lineNumber: 31 }); })();
|
|
452
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY29sbGVjdGlvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jb2xsZWN0aW9uL3dyaXRlLWNvbGxlY3Rpb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY29sbGVjdGlvbi93cml0ZS1jb2xsZWN0aW9uLWZpZWxkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsSUFBSSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQzs7Ozs7OztJQ0xyRixBQURBLGdDQUFvRCxlQUMxQztJQUFBLFlBQXVDOztJQUFBLGlCQUFXO0lBQzVELG1DQUE2RDtJQUM3RCxpQkFBTzs7O0lBRkcsZUFBdUM7SUFBdkMsc0VBQXVDO0lBQ25DLGVBQStCO0lBQS9CLG9EQUErQjs7O0lBRTdDLGdDQUFxRDtJQUNuRCxZQUNGOztJQUFBLGlCQUFPOzs7SUFETCxjQUNGO0lBREUsc0dBQ0Y7OztJQVBGLDZCQUFxRjtJQUtuRixBQUpBLHFGQUFvRCx3RUFJQztJQUd2RCxpQkFBSzs7O0lBUEksY0FBeUI7SUFBekIsaURBQXlCO0lBSXpCLGNBQXNCO0lBQXRCLDhDQUFzQjs7OztJQVlZLEFBQS9CLEFBREYsQUFERixBQURGLEFBRkYsaUNBQ3dELGNBQ3hCLGNBQ0osaUJBQ2lCLGdCQUNOLGFBQXVCO0lBQUEsWUFBK0I7O0lBRXpGLEFBREUsQUFENEYsQUFBTCxpQkFBSyxFQUFRLEVBQzNGLEVBQ0w7SUFFSixBQURGLCtCQUF5QixrQkFHNkI7SUFGRSxvTkFBUyxzQkFBWSxLQUFDO0lBRXhCLGFBQTJCOztJQUVuRixBQURFLEFBRGlGLGlCQUFTLEVBQ3BGLEVBQ0Y7SUFDTix1Q0FRa0I7SUFDcEIsaUJBQU07Ozs7O0lBdEJGLHNEQUFnQztJQUlyQixlQUF1QjtJQUF2QiwyQ0FBdUI7SUFBd0IsZUFBK0I7SUFBL0IsbUVBQStCO0lBTS9FLGVBQTJDO0lBQTNDLCtFQUEyQztJQUQzQywrREFBdUM7SUFDSyxjQUEyQjtJQUEzQixzREFBMkI7SUFHbEUsZUFBNEI7SUFPN0IsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQyw2Q0FBNEIsaUNBQ0osK0JBQ0YsNkJBQ0UsNEJBQ0Qsb0NBQ1EsaUNBQ1AsMkNBQ1U7OztJQXRCdkQsQUFERiwrQkFBc0csbUJBQ25FO0lBQy9CLHVGQUN3RDtJQXdCNUQsQUFERSxpQkFBVyxFQUNQOzs7SUEzQmtCLGdEQUEyQjtJQUV6QixlQUFjO0lBQWQsMENBQWM7Ozs7SUEyQnhDLGtDQUE2TTtJQUF0SSw2TEFBUyxlQUFRLEtBQUssQ0FBQyxLQUFDO0lBQThHLFlBQTZCOztJQUFBLGlCQUFTOzs7SUFBbkosc0ZBQTBEO0lBQW1ELGNBQTZCO0lBQTdCLHFEQUE2Qjs7QURqQjlPLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSwyQkFBMkI7SUFhL0M7SUFDVjtJQUNBO0lBQ0E7SUFkWixVQUFVLEdBQWdCLEVBQUUsQ0FBQztJQUU3QixTQUFTLENBQVk7SUFFckIsT0FBTyxDQUFVO0lBQ2pCLG1CQUFtQixDQUFlO0lBR3hCLEtBQUssQ0FBd0I7SUFDOUIsU0FBUyxHQUFxQixFQUFFLENBQUM7SUFFakQsWUFBNkIsTUFBaUIsRUFDM0IsZUFBZ0MsRUFDaEMsZUFBZ0MsRUFDaEMsS0FBd0I7UUFFekMsS0FBSyxFQUFFLENBQUM7UUFMbUIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUMzQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLFVBQUssR0FBTCxLQUFLLENBQW1CO0lBRzNDLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLGtFQUFrRTtZQUN4RixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRixDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQWMsQ0FBQztRQUM1RSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ3hELE1BQU0sTUFBTSxHQUFXLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkQsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFBO1lBQ2pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0MsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRU0sY0FBYyxDQUFDLElBQUksRUFBRSxLQUFhLEVBQUUsS0FBSyxHQUFHLEtBQUs7UUFDdEQ7Ozs7Ozs7Ozs7OztXQVlHO1FBQ0gsSUFBSSxLQUFnQixDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdEQsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBYyxDQUFDO1FBQ2hELENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQztRQUNWLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ2xELEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBZ0IsQ0FBQztZQUMxQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEMsb0RBQW9EO2dCQUNwRCxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQWMsQ0FBQztZQUN4QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsS0FBSyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQzlDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDdEMsbUVBQW1FO29CQUNuRSxnREFBZ0Q7b0JBQ2hELDRCQUE0QjtnQkFDOUIsQ0FBQztnQkFDRCxrREFBa0Q7Z0JBQ2xELEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQWdCLENBQUM7UUFDeEMsdUVBQXVFO1FBQ3ZFLHdDQUF3QztRQUN4QyxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsRUFBRSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5QixLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBRUQ7OztXQUdHO1FBRUgseURBQXlEO1FBQ3pELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUVELDJDQUEyQztRQUMzQyxJQUFJLElBQVksQ0FBQztRQUNqQixJQUFJLEtBQUssWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUNqQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ2pCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBRUQsU0FBUztRQUNULE1BQU0sRUFBRSxHQUFjLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEUscUJBQXFCLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxXQUFXLENBQUMsa0NBQWtDLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRSxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBYTtRQUNoQyxNQUFNLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLHFCQUFxQixFQUFFLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4RSxPQUFPLEdBQUcsTUFBTSxHQUFHLEtBQUssR0FBRyxDQUFDO1FBQzlCLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSxPQUFPLENBQUMsUUFBaUI7UUFDOUIsaUdBQWlHO1FBQ2pHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1FBRTNCLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztZQUMvQixJQUFJLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BFLE1BQU0sR0FBRyxHQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqRSxJQUFZLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM5QyxNQUFNLFNBQVMsR0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFbkUsa0dBQWtHO1FBQ2xHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFM0IsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDO2dCQUM1QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssRUFBRTtnQkFDOUMsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsTUFBTSxFQUFFLENBQUMsR0FBRzthQUNiLENBQUM7aUJBQ0MsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDbkYsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEtBQUssa0JBQWtCLENBQUM7SUFDbkYsQ0FBQztJQUVPLFlBQVksQ0FBQyxFQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUcsS0FBSztRQUN6RCxNQUFNLHVCQUF1QixHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5RSxNQUFNLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDMUcsSUFBSSxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDN0IsU0FBUyxDQUFDLGNBQWM7aUJBQ3JCLE1BQU0sQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzlDLEdBQUcsQ0FBQyxDQUFDLEVBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsK0VBQStFO1FBQy9FLDhFQUE4RTtRQUM5RSxPQUFPLHFCQUFxQixDQUFDLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDNUMsRUFBRTtZQUNGLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWU7WUFDdEYsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEtBQUssRUFBRSxJQUFJO1lBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQWE7UUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELElBQUksS0FBSyxZQUFZLFNBQVMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBYyxDQUFDO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRU8sYUFBYTtRQUNuQixNQUFNLElBQUksR0FBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9FLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFhO1FBQzVCLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ25ELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUU7bUJBQzVELElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoRCxDQUFDO1lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pJLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUV6RixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLGdCQUFnQixFQUFFLENBQUM7Z0JBQzlFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztZQUN2QyxDQUFDO1lBRUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLENBQUM7WUFFakYsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9HLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUV6RixJQUFJLGlCQUFpQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNoRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1lBQ2hFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFhO1FBQzVCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFTSx1QkFBdUI7UUFDNUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxLQUFnQixFQUFFLElBQVk7UUFDM0QsT0FBTyxLQUFLLENBQUMseUJBQXlCO1lBQ3BDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2lCQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqRCxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVNLHVCQUF1QixDQUFDLEtBQUs7UUFDbEMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0Qsa0hBQWtIO1FBQ2xILE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3pGLE9BQU8sQ0FBQyxVQUFVLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxlQUFlLENBQUMsSUFBUztRQUM5QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxLQUFhO1FBQzFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELDRFQUE0RTtRQUM1RSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFTSxTQUFTLENBQUMsQ0FBUztRQUN4QixNQUFNLFlBQVksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzNDLFlBQVksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzlCLFlBQVksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ2pDLFlBQVksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQzlCLFlBQVksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1FBQzdCLFlBQVksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBRW5DLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDdkMsWUFBWSxDQUFDLFFBQVEsR0FBRztZQUN0QixHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUk7U0FDbkYsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRXhFLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekMsSUFBSSxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssY0FBYyxDQUFDLEtBQWE7UUFFbEMsbUZBQW1GO1FBQ25GLHdEQUF3RDtRQUN4RCxNQUFNLEtBQUssR0FBYyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQWMsQ0FBQztRQUMvRCxNQUFNLE9BQU8sR0FBZ0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQWdCLENBQUM7UUFDNUQsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sd0JBQXdCLENBQUMsU0FBb0I7UUFDbkQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDNUMsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7dUZBcFZVLDZCQUE2Qjs2REFBN0IsNkJBQTZCOzs7Ozs7WUMxQnRDLEFBRkYsQUFGRiw4QkFBb0MsYUFFTSxZQUVEO1lBQ25DLFlBQ0Y7O1lBQUEsaUJBQUs7WUFDTCxpQ0FBdUo7WUFBbkYsMEdBQVMsWUFBUSxJQUFJLENBQUMsSUFBQztZQUE0RCxZQUE0Qjs7WUFBQSxpQkFBUztZQXdDNUwsQUE3QkEsQUFWQSw0RUFBcUYsaUVBVWlCLHlFQTZCdUc7WUFJak4sQUFGRSxpQkFBTSxFQUVGOztZQW5Ea0IsNkJBQVc7WUFLN0IsZUFDRjtZQURFLG9FQUNGO1lBQzRGLGVBQTBEO1lBQTFELGdGQUEwRDtZQUFDLGNBQTRCO1lBQTVCLHFEQUE0QjtZQUM3SSxlQUE2QztZQUE3QyxzRUFBNkM7WUFVOUIsY0FBK0M7WUFBL0Msd0VBQStDO1lBNkJ3RCxjQUErQztZQUEvQyx3RUFBK0M7OztpRkRqQmxNLDZCQUE2QjtjQUx6QyxTQUFTOzJCQUNFLDRCQUE0Qjs0SUFNL0IsVUFBVTtrQkFEaEIsS0FBSztZQVNXLEtBQUs7a0JBRHJCLFlBQVk7bUJBQUMsZ0JBQWdCOztrRkFUbkIsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nIGFzIE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnO1xuaW1wb3J0IHsgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFNjcm9sbFRvU2VydmljZSB9IGZyb20gJ0BuaWNreS1sZW5hZXJzL25neC1zY3JvbGwtdG8nO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzRnJvbUV4aXN0IH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vZGVmaW5pdGlvbi9maWVsZC10eXBlLm1vZGVsJztcblxuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBQcm9maWxlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL3Byb2ZpbGUvcHJvZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMudXRpbHMnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS9mb3JtLXZhbGlkYXRvcnMuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9maWxlTm90aWZpZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcm9maWxlL3Byb2ZpbGUubm90aWZpZXInO1xuaW1wb3J0IHsgUmVtb3ZlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9ncy9yZW1vdmUtZGlhbG9nL3JlbW92ZS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtd3JpdGUuY29tcG9uZW50JztcblxudHlwZSBDb2xsZWN0aW9uSXRlbSA9IHtcbiAgY2FzZUZpZWxkOiBDYXNlRmllbGQ7XG4gIGl0ZW06IGFueTtcbiAgcHJlZml4OiBzdHJpbmc7XG4gIGluZGV4OiBudW1iZXI7XG4gIGNvbnRhaW5lcjogRm9ybUdyb3VwO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLWNvbGxlY3Rpb24tZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd3JpdGUtY29sbGVjdGlvbi1maWVsZC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sbGVjdGlvbi1maWVsZC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgV3JpdGVDb2xsZWN0aW9uRmllbGRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXSA9IFtdO1xuXG4gIHB1YmxpYyBmb3JtQXJyYXk6IEZvcm1BcnJheTtcblxuICBwdWJsaWMgcHJvZmlsZTogUHJvZmlsZTtcbiAgcHVibGljIHByb2ZpbGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBAVmlld0NoaWxkcmVuKCdjb2xsZWN0aW9uSXRlbScpXG4gIHByaXZhdGUgcmVhZG9ubHkgaXRlbXM6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcbiAgcHVibGljIHJlYWRvbmx5IGNvbGxJdGVtczogQ29sbGVjdGlvbkl0ZW1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSByZWFkb25seSBzY3JvbGxUb1NlcnZpY2U6IFNjcm9sbFRvU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2ZpbGVOb3RpZmllcjogUHJvZmlsZU5vdGlmaWVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHsgLy8gbWVhbmluZyBJIGFtIG5vdCByZW5kZXJlZCBvbiB0aGUgc2VhcmNoL3dvcmtiYXNrZXQgaW5wdXQgZmlsdGVyXG4gICAgICB0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24gPSB0aGlzLnByb2ZpbGVOb3RpZmllci5wcm9maWxlLnN1YnNjcmliZShfID0+IHRoaXMucHJvZmlsZSA9IF8pO1xuICAgIH1cbiAgICB0aGlzLmNhc2VGaWVsZC52YWx1ZSA9IHRoaXMuY2FzZUZpZWxkLnZhbHVlIHx8IFtdO1xuICAgIHRoaXMuZm9ybUFycmF5ID0gdGhpcy5yZWdpc3RlckNvbnRyb2wobmV3IEZvcm1BcnJheShbXSksIHRydWUpIGFzIEZvcm1BcnJheTtcbiAgICB0aGlzLmZvcm1BcnJheVsnY2FzZUZpZWxkJ10gPSB0aGlzLmNhc2VGaWVsZDtcbiAgICB0aGlzLmNhc2VGaWVsZC52YWx1ZS5mb3JFYWNoKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHByZWZpeDogc3RyaW5nID0gdGhpcy5idWlsZElkUHJlZml4KGluZGV4KTtcbiAgICAgIGNvbnN0IGNhc2VGaWVsZCA9IHRoaXMuYnVpbGRDYXNlRmllbGQoaXRlbSwgaW5kZXgpO1xuICAgICAgY2FzZUZpZWxkLnBhcmVudCA9IHRoaXMuY2FzZUZpZWxkXG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmdldENvbnRhaW5lcihpbmRleCk7XG4gICAgICBpZiAodGhpcy5jb2xsSXRlbXMubGVuZ3RoIDw9IGluZGV4KSB7XG4gICAgICAgIHRoaXMuY29sbEl0ZW1zLmxlbmd0aCA9IGluZGV4ICsgMTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29sbEl0ZW1zW2luZGV4XSA9IHsgY2FzZUZpZWxkLCBpdGVtLCBwcmVmaXgsIGluZGV4LCBjb250YWluZXIgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYnVpbGRDYXNlRmllbGQoaXRlbSwgaW5kZXg6IG51bWJlciwgaXNOZXcgPSBmYWxzZSk6IENhc2VGaWVsZCB7XG4gICAgLyoqXG4gICAgICogV2hhdCBmb2xsb3cgaXMgY29kZSB0aGF0IG1ha2VzIG1lIHdhbnQgdG8gZ28ganVtcCBpbiB0aGUgc2hvd2VyIVxuICAgICAqIEJhc2ljYWxseSwgd2UgbGFuZCBpbiBoZXJlIHJlcGVhdGVkbHkgYmVjYXVzZSBvZiB0aGUgYmluZGluZywgYW5kXG4gICAgICogdGhpcyBpcyB3aGF0IGFwcGVhcnMgdG8gYmUgaGFwcGVuaW5nOlxuICAgICAqICAgMS4gdGhpcy5mb3JtQXJyYXkgY29udGFpbnMgbm8gY29udHJvbHMgYXQgYWxsLlxuICAgICAqICAgICAgdGhpcy5mb3JtQXJyYXkudmFsdWUgPSBbXTtcbiAgICAgKiAgIDIuIHRoaXMuZm9ybUFycmF5IGNvbnRhaW5zIGEgRm9ybUdyb3VwLCB3aGljaCBjb250YWlucyBhIHNpbmdsZVxuICAgICAqICAgICAgRm9ybUNvbnRyb2wgd2l0aCB0aGUgaWQgJ2NvZGUnLlxuICAgICAqICAgICAgdGhpcy5mb3JtQXJyYXkudmFsdWUgPSBbeyBjb2RlOiBudWxsIH1dXG4gICAgICogICAzLiB0aGlzLmZvcm1BcnJheSBjb250YWlucyB3aGF0IGlzIGJlaW5nIHNldCB1cCBiZWxvdy5cbiAgICAgKiAgICAgIHRoaXMuZm9ybUFycmF5LnZhbHVlID0gW3sgY29kZTogbnVsbCwgaWQ6IG51bGwsIHZhbHVlOiB7IGNvZGU6IG51bGwgfSB9XVxuICAgICAqICAgNCwgNSwgNiwgZXRjIC0gdGhlIHNhbWUgYXMgMy5cbiAgICAgKi9cbiAgICBsZXQgZ3JvdXA6IEZvcm1Hcm91cDtcbiAgICBpZiAodGhpcy5mb3JtQXJyYXkgJiYgKGluZGV4IDwgdGhpcy5mb3JtQXJyYXkubGVuZ3RoKSkge1xuICAgICAgZ3JvdXAgPSB0aGlzLmZvcm1BcnJheS5hdChpbmRleCkgYXMgRm9ybUdyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgIH1cblxuICAgIGxldCB2YWx1ZTtcbiAgICBpZiAodGhpcy5pc0NvbGxlY3Rpb25PZlNpbXBsZVR5cGUodGhpcy5jYXNlRmllbGQpKSB7XG4gICAgICB2YWx1ZSA9IGdyb3VwLmdldCgndmFsdWUnKSBhcyBGb3JtQ29udHJvbDtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSBuZXcgRm9ybUNvbnRyb2woaXRlbS52YWx1ZSk7XG4gICAgICAgIC8vIE5vdyBhZGQgdGhlIHZhbHVlIEZvcm1Db250cm9sIHRvIHRoZSBvdXRlciBncm91cC5cbiAgICAgICAgZ3JvdXAuYWRkQ29udHJvbCgndmFsdWUnLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gZ3JvdXAuZ2V0KCd2YWx1ZScpIGFzIEZvcm1Hcm91cDtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgdmFsdWUgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZ3JvdXAuY29udHJvbHMpKSB7XG4gICAgICAgICAgdmFsdWUuYWRkQ29udHJvbChrZXksIGdyb3VwLmdldChrZXkpKTtcbiAgICAgICAgICAvLyBET04nVCByZW1vdmUgdGhlIGNvbnRyb2wgZm9yIHRoaXMga2V5IGZyb20gdGhlIG91dGVyIGdyb3VwIG9yIGl0XG4gICAgICAgICAgLy8gZ29lcyBhd3J5LiBTbyBET04nVCB1bmNvbW1lbnQgdGhlIGJlbG93IGxpbmUhXG4gICAgICAgICAgLy8gZ3JvdXAucmVtb3ZlQ29udHJvbChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vdyBhZGQgdGhlIHZhbHVlIEZvcm1Hcm91cCB0byB0aGUgb3V0ZXIgZ3JvdXAuXG4gICAgICAgIGdyb3VwLmFkZENvbnRyb2woJ3ZhbHVlJywgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgaWQgPSBncm91cC5nZXQoJ2lkJykgYXMgRm9ybUNvbnRyb2w7XG4gICAgLy8gSWYgd2UncmUgbm90IGluIHNjZW5hcmlvIDMsIGFib3ZlLCB3ZSBuZWVkIHRvIGRvIHNvbWUgamlnZ2VyeSBwb2tlcnlcbiAgICAvLyBhbmQgc2V0IHVwIHRoZSBpZCBhbmQgdmFsdWUgY29udHJvbHMuXG4gICAgLy8gQWxzbyBzZXQgdXAgYW4gaWQgY29udHJvbCBpZiBpdCBkb2Vzbid0IHlldCBleGlzdC5cbiAgICBpZiAoIWlkKSB7XG4gICAgICBpZCA9IG5ldyBGb3JtQ29udHJvbChpdGVtLmlkKTtcbiAgICAgIGdyb3VwLmFkZENvbnRyb2woJ2lkJywgaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFnYWluLCB2ZXJ5IHNvcnJ5LiBJJ3ZlIG5vdCBmb3VuZCBhIGJldHRlciB3YXkgdG8gcHJvZHVjZSB0aGVcbiAgICAgKiBvdXRwdXQgbmVlZGVkIGZvciB3aGF0IG5lZWRzIHRvIGJlIHNlbnQgdG8gdGhlIHNlcnZlciB5ZXQuXG4gICAgICovXG5cbiAgICAvLyBOb3csIGFkZCB0aGUgb3V0ZXIgZ3JvdXAgdG8gdGhlIGFycmF5IChvciByZXBsYWNlIGl0KS5cbiAgICBpZiAoaW5kZXggPCB0aGlzLmZvcm1BcnJheS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZm9ybUFycmF5LnNldENvbnRyb2woaW5kZXgsIGdyb3VwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtQXJyYXkucHVzaChncm91cCk7XG4gICAgfVxuXG4gICAgLy8gTm93IHNldCB1cCB0aGUgQ2FzZUZpZWxkIGFuZCB2YWxpZGF0aW9uLlxuICAgIGxldCBjZmlkOiBzdHJpbmc7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgICAgIGNmaWQgPSAndmFsdWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjZmlkID0gaW5kZXgudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICAvLyBpc05ldzpcbiAgICBjb25zdCBjZjogQ2FzZUZpZWxkID0gdGhpcy5uZXdDYXNlRmllbGQoY2ZpZCwgaXRlbSwgaW5kZXgsIGlzTmV3KTtcbiAgICBGb3JtVmFsaWRhdG9yc1NlcnZpY2UuYWRkVmFsaWRhdG9ycyhjZiwgdmFsdWUpO1xuICAgIEZpZWxkc1V0aWxzLmFkZENhc2VGaWVsZEFuZENvbXBvbmVudFJlZmVyZW5jZXModmFsdWUsIGNmLCB0aGlzKTtcbiAgICByZXR1cm4gY2Y7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRJZFByZWZpeChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcmVmaXggPSBgJHt0aGlzLmlkUHJlZml4fSR7dGhpcy5jYXNlRmllbGQuaWR9X2A7XG4gICAgaWYgKHRoaXMuY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlPy50eXBlID09PSAnQ29tcGxleCcpIHtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtpbmRleH1fYDtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJlZml4O1xuICB9XG5cbiAgcHVibGljIGlzU2VhcmNoRmlsdGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5TZWFyY2hCbG9jayAmJiB0aGlzLmNvbGxJdGVtcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIGFkZEl0ZW0oZG9TY3JvbGw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAvLyBNYW51YWxseSByZXNldHRpbmcgZXJyb3JzIGlzIHJlcXVpcmVkIHRvIHByZXZlbnQgYEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JgXG4gICAgdGhpcy5mb3JtQXJyYXkuc2V0RXJyb3JzKG51bGwpO1xuICAgIGxldCBpdGVtID0geyB2YWx1ZTogbnVsbCB9O1xuXG4gICAgaWYgKHRoaXMuaXNDb2xsZWN0aW9uRHluYW1pYygpKSB7XG4gICAgICBpdGVtID0geyAuLi50aGlzLmNhc2VGaWVsZC52YWx1ZVt0aGlzLmNhc2VGaWVsZC52YWx1ZS5sZW5ndGggLSAxXSB9O1xuICAgICAgY29uc3Qga2V5OiBudW1iZXIgPSBOdW1iZXIoaXRlbVsnaWQnXVtpdGVtWydpZCddLmxlbmd0aCAtIDFdKSArIDE7XG4gICAgICAoaXRlbSBhcyBhbnkpLmlkID0gaXRlbVsnaWQnXS5yZXBsYWNlKC8uJC8sIGtleS50b1N0cmluZygpKTtcbiAgICB9XG4gICAgdGhpcy5jYXNlRmllbGQudmFsdWUucHVzaChpdGVtKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuY2FzZUZpZWxkLnZhbHVlLmxlbmd0aCAtIDE7XG4gICAgY29uc3QgY2FzZUZpZWxkOiBDYXNlRmllbGQgPSB0aGlzLmJ1aWxkQ2FzZUZpZWxkKGl0ZW0sIGluZGV4LCB0cnVlKTtcbiAgICBjb25zdCBwcmVmaXggPSB0aGlzLmJ1aWxkSWRQcmVmaXgoaW5kZXgpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0Q29udGFpbmVyKGluZGV4KTtcbiAgICB0aGlzLmNvbGxJdGVtcy5wdXNoKHsgY2FzZUZpZWxkLCBpdGVtLCBpbmRleCwgcHJlZml4LCBjb250YWluZXIgfSk7XG5cbiAgICAvLyBVcGRhdGUgRE9NIHJlcXVpcmVkIGFmdGVyIHB1c2hpbmcgYSBuZXcgaXRlbSB0byBkbyB0aGUgbmV4dCBzdGVwcyAoaS5lLiBzY3JvbGxpbmcgYW5kIGZvY3VzaW5nKVxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgaWYgKGRvU2Nyb2xsKSB7XG4gICAgICB0aGlzLnNjcm9sbFRvU2VydmljZS5zY3JvbGxUbyh7XG4gICAgICAgIHRhcmdldDogYCR7dGhpcy5idWlsZElkUHJlZml4KGluZGV4KX0ke2luZGV4fWAsXG4gICAgICAgIGR1cmF0aW9uOiAxMDAwLFxuICAgICAgICBvZmZzZXQ6IC0xNTAsXG4gICAgICB9KVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHsgfSwgY29uc29sZS5lcnJvcik7XG4gICAgfVxuXG4gICAgdGhpcy5mb2N1c0xhc3RJdGVtKCk7XG4gIH1cblxuICBwcml2YXRlIGlzQ29sbGVjdGlvbkR5bmFtaWMoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlIHx8ICF0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuaWQgPT09ICdEeW5hbWljUmFkaW9MaXN0JztcbiAgfVxuXG4gIHByaXZhdGUgbmV3Q2FzZUZpZWxkKGlkOiBzdHJpbmcsIGl0ZW0sIGluZGV4LCBpc05ldyA9IGZhbHNlKSB7XG4gICAgY29uc3QgaXNOb3RBdXRob3Jpc2VkVG9VcGRhdGUgPSAhaXNOZXcgJiYgdGhpcy5pc05vdEF1dGhvcmlzZWRUb1VwZGF0ZShpbmRleCk7XG5cbiAgICBjb25zdCBmaWVsZFR5cGUgPSBwbGFpblRvQ2xhc3NGcm9tRXhpc3QobmV3IEZpZWxkVHlwZSgpLCB0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZSk7XG4gICAgaWYgKGZpZWxkVHlwZS5jb21wbGV4X2ZpZWxkcykge1xuICAgICAgZmllbGRUeXBlLmNvbXBsZXhfZmllbGRzXG4gICAgICAgIC5maWx0ZXIoKGNmOiBDYXNlRmllbGQpID0+ICEhY2Yuc2hvd19jb25kaXRpb24pXG4gICAgICAgIC5tYXAoKGNmOiBDYXNlRmllbGQpID0+IGNmLmhpZGRlbiA9IHRydWUpO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB0aGUgYml0IHNldHRpbmcgdGhlIGhpZGRlbiBmbGFnIGhlcmUgYXMgaXQncyBhbiBpdGVtIGluIHRoZSBhcnJheSBhbmRcbiAgICAvLyBpdHMgaGlkZGVuIHN0YXRlIGlzbid0IGluZGVwZW5kZW50bHkgcmUtZXZhbHVhdGVkIHdoZW4gdGhlIGZvcm0gaXMgY2hhbmdlZC5cbiAgICByZXR1cm4gcGxhaW5Ub0NsYXNzRnJvbUV4aXN0KG5ldyBDYXNlRmllbGQoKSwge1xuICAgICAgaWQsXG4gICAgICBmaWVsZF90eXBlOiBmaWVsZFR5cGUsXG4gICAgICBkaXNwbGF5X2NvbnRleHQ6IGlzTm90QXV0aG9yaXNlZFRvVXBkYXRlID8gJ1JFQURPTkxZJyA6IHRoaXMuY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dCxcbiAgICAgIHZhbHVlOiBpdGVtLnZhbHVlLFxuICAgICAgbGFiZWw6IG51bGwsXG4gICAgICBhY2xzOiB0aGlzLmNhc2VGaWVsZC5hY2xzXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRhaW5lcihpbmRleDogbnVtYmVyKTogRm9ybUdyb3VwIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZm9ybUFycmF5LmF0KGluZGV4KS5nZXQoJ3ZhbHVlJyk7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1BcnJheS5hdChpbmRleCkgYXMgRm9ybUdyb3VwO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNMYXN0SXRlbSgpIHtcbiAgICBjb25zdCBpdGVtOiBhbnkgPSB0aGlzLml0ZW1zLmxhc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZm9ybS1jb250cm9sJyk7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGl0ZW0uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUl0ZW0oaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY29sbEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5yZXNldElkcyhpbmRleCk7XG4gICAgdGhpcy5jYXNlRmllbGQudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLmZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0SWRzKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPCB0aGlzLmNvbGxJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY291bnRlciA9IGkgKyAxO1xuICAgICAgaWYgKHRoaXMuY29sbEl0ZW1zW2ldLmluZGV4ICYmIHRoaXMuY29sbEl0ZW1zW2ldLmluZGV4ID09PSBjb3VudGVyKSB7XG4gICAgICAgIHRoaXMuY29sbEl0ZW1zW2ldLmluZGV4ID0gaTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29sbEl0ZW1zW2ldLmNhc2VGaWVsZCAmJiB0aGlzLmNvbGxJdGVtc1tpXS5jYXNlRmllbGQuaWRcbiAgICAgICAgJiYgdGhpcy5jb2xsSXRlbXNbaV0uY2FzZUZpZWxkLmlkID09PSBjb3VudGVyLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgdGhpcy5jb2xsSXRlbXNbaV0uY2FzZUZpZWxkLmlkID0gaS50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpZFByZWZpeDEgPSB0aGlzLmNvbGxJdGVtc1tpXS5wcmVmaXggPyB0aGlzLmNvbGxJdGVtc1tpXS5wcmVmaXgucmVwbGFjZShgXyR7Y291bnRlci50b1N0cmluZygpfWAsIGBfJHtpLnRvU3RyaW5nKCl9YCkgOiAnJztcbiAgICAgIGNvbnN0IGlkUHJlZml4MUN1cnJlbnQgPSBpZFByZWZpeDEucmVwbGFjZShgXyR7aS50b1N0cmluZygpfWAsIGBfJHtjb3VudGVyLnRvU3RyaW5nKCl9YCk7XG5cbiAgICAgIGlmICh0aGlzLmNvbGxJdGVtc1tpXS5wcmVmaXggJiYgdGhpcy5jb2xsSXRlbXNbaV0ucHJlZml4ID09PSBpZFByZWZpeDFDdXJyZW50KSB7XG4gICAgICAgIHRoaXMuY29sbEl0ZW1zW2ldLnByZWZpeCA9IGlkUHJlZml4MTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaWRQcmVmaXhBdmFpbGFibGUgPSAhIXRoaXMuY29sbEl0ZW1zW2ldLmNvbnRhaW5lcj8uWydjb21wb25lbnQnXT8uaWRQcmVmaXg7XG5cbiAgICAgIGNvbnN0IGlkUHJlZml4MiA9IGlkUHJlZml4QXZhaWxhYmxlID9cbiAgICAgICAgdGhpcy5jb2xsSXRlbXNbaV0uY29udGFpbmVyWydjb21wb25lbnQnXS5pZFByZWZpeC5yZXBsYWNlKGBfJHtjb3VudGVyLnRvU3RyaW5nKCl9YCwgYF8ke2kudG9TdHJpbmcoKX1gKSA6ICcnO1xuICAgICAgY29uc3QgaWRQcmVmaXgyY3VycmVudCA9IGlkUHJlZml4Mi5yZXBsYWNlKGBfJHtpLnRvU3RyaW5nKCl9YCwgYF8ke2NvdW50ZXIudG9TdHJpbmcoKX1gKTtcblxuICAgICAgaWYgKGlkUHJlZml4QXZhaWxhYmxlICYmIHRoaXMuY29sbEl0ZW1zW2ldLmNvbnRhaW5lclsnY29tcG9uZW50J10uaWRQcmVmaXggPT09IGlkUHJlZml4MmN1cnJlbnQpIHtcbiAgICAgICAgdGhpcy5jb2xsSXRlbXNbaV0uY29udGFpbmVyWydjb21wb25lbnQnXS5pZFByZWZpeCA9IGlkUHJlZml4MjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXRlbUxhYmVsKGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoaW5kZXgpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmNhc2VGaWVsZC5sYWJlbH0gJHtpbmRleCArIDF9YDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2FzZUZpZWxkLmxhYmVsO1xuICB9XG5cbiAgcHVibGljIGlzTm90QXV0aG9yaXNlZFRvQ3JlYXRlKCkge1xuICAgIGlmICh0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLmdldENvbGxlY3Rpb25QZXJtaXNzaW9uKHRoaXMuY2FzZUZpZWxkLCAnYWxsb3dJbnNlcnQnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2xsZWN0aW9uUGVybWlzc2lvbihmaWVsZDogQ2FzZUZpZWxkLCB0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciAmJlxuICAgICAgZmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlci5zcGxpdCgnIycpXG4gICAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtLnN0YXJ0c1dpdGgoJ0NPTExFQ1RJT04oJykpWzBdXG4gICAgICAgIC5pbmNsdWRlcyh0eXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBpc05vdEF1dGhvcmlzZWRUb1VwZGF0ZShpbmRleCkge1xuICAgIGlmICh0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gV2FzIHJlYXNzZXNlZCBhcyBwYXJ0IG9mIEVVSS0zNTA1LiBUaGVyZSBpcyBzdGlsbCBhIGNhdmVhdCBhcm91bmQgQ1JELCBidXQgdGhhdCB3YXMgZGVlbWVkIGFuIHVubGlrZWx5IHNjZW5hcmlvXG4gICAgY29uc3QgaWQgPSB0aGlzLmdldENvbnRyb2xJZEF0KGluZGV4KTtcbiAgICBpZiAoaWQpIHtcbiAgICAgIGlmICghIXRoaXMucHJvZmlsZS51c2VyICYmICEhdGhpcy5wcm9maWxlLnVzZXIuaWRhbSkge1xuICAgICAgICBjb25zdCB1cGRhdGVSb2xlID0gdGhpcy5wcm9maWxlLnVzZXIuaWRhbS5yb2xlcy5maW5kKHJvbGUgPT4gdGhpcy5oYXNVcGRhdGVBY2Nlc3Mocm9sZSkpO1xuICAgICAgICByZXR1cm4gIXVwZGF0ZVJvbGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNVcGRhdGVBY2Nlc3Mocm9sZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5jYXNlRmllbGQuYWNscy5maW5kKGFjbCA9PiBhY2wucm9sZSA9PT0gcm9sZSAmJiBhY2wudXBkYXRlID09PSB0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBpc05vdEF1dGhvcmlzZWRUb0RlbGV0ZShpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBTaG91bGQgYmUgYWJsZSB0byBkZWxldGUgaWYgY3JlYXRpbmcgYSBjYXNlIGV2ZW4gaWYgXCJEXCIgaXMgYWJzZW50LCBoZW5jZTpcbiAgICBjb25zdCBpZCA9IHRoaXMuZ2V0Q29udHJvbElkQXQoaW5kZXgpO1xuICAgIHJldHVybiAhIWlkICYmICF0aGlzLmdldENvbGxlY3Rpb25QZXJtaXNzaW9uKHRoaXMuY2FzZUZpZWxkLCAnYWxsb3dEZWxldGUnKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuTW9kYWwoaTogbnVtYmVyKSB7XG4gICAgY29uc3QgZGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xuICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xuICAgIGRpYWxvZ0NvbmZpZy5hdXRvRm9jdXMgPSB0cnVlO1xuICAgIGRpYWxvZ0NvbmZpZy5hcmlhTGFiZWwgPSAnTGFiZWwnO1xuICAgIGRpYWxvZ0NvbmZpZy5oZWlnaHQgPSAnMjIwcHgnO1xuICAgIGRpYWxvZ0NvbmZpZy53aWR0aCA9ICc1NTBweCc7XG4gICAgZGlhbG9nQ29uZmlnLnBhbmVsQ2xhc3MgPSAnZGlhbG9nJztcblxuICAgIGRpYWxvZ0NvbmZpZy5jbG9zZU9uTmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgIGRpYWxvZ0NvbmZpZy5wb3NpdGlvbiA9IHtcbiAgICAgIHRvcDogYCR7d2luZG93LmlubmVySGVpZ2h0IC8gMiAtIDExMH1weGAsIGxlZnQ6IGAke3dpbmRvdy5pbm5lcldpZHRoIC8gMiAtIDI3NX1weGBcbiAgICB9O1xuXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihSZW1vdmVEaWFsb2dDb21wb25lbnQsIGRpYWxvZ0NvbmZpZyk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIGlmIChyZXN1bHQgPT09ICdSZW1vdmUnKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlSXRlbShpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVkIGZ1bGwgc29sdXRpb24gYXMgcGFydCBvZiBFVUktMzUwNVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDb250cm9sSWRBdChpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcblxuICAgIC8vIHRoaXMuZm9ybUFycmF5IGNvbnRhaW5zIFsgRm9ybUdyb3VwKCBpZDogRm9ybUNvbnRyb2wsIHZhbHVlOiBGb3JtR3JvdXAgKSwgLi4uIF0uXG4gICAgLy8gSGVyZSwgd2UgbmVlZCB0byBnZXQgdGhlIHZhbHVlIG9mIHRoZSBpZCBGb3JtQ29udHJvbC5cbiAgICBjb25zdCBncm91cDogRm9ybUdyb3VwID0gdGhpcy5mb3JtQXJyYXkuYXQoaW5kZXgpIGFzIEZvcm1Hcm91cDtcbiAgICBjb25zdCBjb250cm9sOiBGb3JtQ29udHJvbCA9IGdyb3VwLmdldCgnaWQnKSBhcyBGb3JtQ29udHJvbDtcbiAgICByZXR1cm4gY29udHJvbCA/IGNvbnRyb2wudmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGlzQ29sbGVjdGlvbk9mU2ltcGxlVHlwZShjYXNlRmllbGQ6IENhc2VGaWVsZCkge1xuICAgIGNvbnN0IG5vdFNpbXBsZSA9IFsnQ29sbGVjdGlvbicsICdDb21wbGV4J107XG4gICAgcmV0dXJuIG5vdFNpbXBsZS5pbmRleE9mKGNhc2VGaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS50eXBlKSA8IDA7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2lkXT1cImlkKClcIj5cblxuICA8ZGl2IGNsYXNzPVwicGFuZWwgY29sbGVjdGlvbi1pbmRpY2F0b3JcIj5cblxuICAgIDxoMiBjbGFzcz1cImhlYWRpbmctaDIgZXJyb3Itc3BhY2luZ1wiPlxuICAgICAge3soY2FzZUZpZWxkIHwgY2NkRmllbGRMYWJlbCl9fVxuICAgIDwvaDI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiB3cml0ZS1jb2xsZWN0aW9uLWFkZC1pdGVtX190b3BcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZEl0ZW0odHJ1ZSlcIiBbZGlzYWJsZWRdPVwiaXNOb3RBdXRob3Jpc2VkVG9DcmVhdGUoKSB8fCBpc1NlYXJjaEZpbHRlcigpXCI+e3snQWRkIG5ldycgfCBycHhUcmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgIDxoMiBjbGFzcz1cImhlYWRpbmctaDIgZXJyb3Itc3BhY2luZ1wiICpuZ0lmPVwiY2FzZUZpZWxkLmhpbnRfdGV4dCB8fCBmb3JtQXJyYXkuZXJyb3JzXCI+XG4gICAgICA8c3BhbiAqbmdJZj1cImNhc2VGaWVsZC5oaW50X3RleHRcIiBjbGFzcz1cImZvcm0taGludFwiPlxuICAgICAgPG1hcmtkb3duPnt7Y2FzZUZpZWxkLmhpbnRfdGV4dCB8IHJweFRyYW5zbGF0ZSB9fTwvbWFya2Rvd24+XG4gICAgICA8Y2NkLW1hcmtkb3duIFtjb250ZW50XT1cImNhc2VGaWVsZC5oaW50X3RleHRcIj48L2NjZC1tYXJrZG93bj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZm9ybUFycmF5LmVycm9yc1wiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICB7eyhmb3JtQXJyYXkuZXJyb3JzIHwgY2NkRmlyc3RFcnJvcjpjYXNlRmllbGQubGFiZWwpfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2gyPlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbaGlkZGVuXT1cImNhc2VGaWVsZC5oaWRkZW5cIiAqbmdJZj1cImNhc2VGaWVsZC52YWx1ZSAmJiBjYXNlRmllbGQudmFsdWUubGVuZ3RoXCI+XG4gICAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbGxJdGVtczsgbGV0IGkgPSBpbmRleFwiICNjb2xsZWN0aW9uSXRlbVxuICAgICAgICAgICAgW2lkXT1cInRoaXMuYnVpbGRJZFByZWZpeChpKSArIGlcIiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sbGVjdGlvbi10aXRsZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsb2F0LWxlZnRcIj5cbiAgICAgICAgICAgICAgPGxlZ2VuZCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19sZWdlbmRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpdGVtLnByZWZpeCArIGlcIj48aDMgY2xhc3M9XCJoZWFkaW5nLWgzXCI+e3tpdGVtTGFiZWwoaSkgfCBycHhUcmFuc2xhdGV9fTwvaDM+PC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG9hdC1yaWdodFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5Nb2RhbChpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTm90QXV0aG9yaXNlZFRvRGVsZXRlKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJSZW1vdmUge3sgaXRlbUxhYmVsKGkpIH19XCI+e3snUmVtb3ZlJyB8IHJweFRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Y2NkLWZpZWxkLXdyaXRlIFtjYXNlRmllbGRdPVwiaXRlbS5jYXNlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyZW50XT1cIml0ZW0uY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkUHJlZml4XT1cIml0ZW0ucHJlZml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJpdGVtLmNhc2VGaWVsZC5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNFeHBhbmRlZF09XCJpc0V4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5TZWFyY2hCbG9ja109XCJpc0luU2VhcmNoQmxvY2tcIj5cbiAgICAgICAgICA8L2NjZC1maWVsZC13cml0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2ZpZWxkc2V0PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiB3cml0ZS1jb2xsZWN0aW9uLWFkZC1pdGVtX19ib3R0b21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZEl0ZW0oZmFsc2UpXCIgW2Rpc2FibGVkXT1cImlzTm90QXV0aG9yaXNlZFRvQ3JlYXRlKCkgfHwgaXNTZWFyY2hGaWx0ZXIoKVwiICpuZ0lmPVwiY2FzZUZpZWxkLnZhbHVlICYmIGNhc2VGaWVsZC52YWx1ZS5sZW5ndGhcIj57eydBZGQgbmV3JyB8IHJweFRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuXG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==
|
|
448
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY29sbGVjdGlvbi1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jb2xsZWN0aW9uL3dyaXRlLWNvbGxlY3Rpb24tZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY29sbGVjdGlvbi93cml0ZS1jb2xsZWN0aW9uLWZpZWxkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsSUFBSSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVB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NEI7WUFBNUIscURBQTRCO1lBQzdJLGVBQTZDO1lBQTdDLHNFQUE2QztZQVM5QixjQUErQztZQUEvQyx3RUFBK0M7WUE2QndELGNBQStDO1lBQS9DLHdFQUErQzs7O2lGRGhCbE0sNkJBQTZCO2NBTHpDLFNBQVM7MkJBQ0UsNEJBQTRCOzRJQU0vQixVQUFVO2tCQURoQixLQUFLO1lBU1csS0FBSztrQkFEckIsWUFBWTttQkFBQyxnQkFBZ0I7O2tGQVRuQiw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgU2Nyb2xsVG9TZXJ2aWNlIH0gZnJvbSAnQG5pY2t5LWxlbmFlcnMvbmd4LXNjcm9sbC10byc7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3NGcm9tRXhpc3QgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2ZpZWxkLXR5cGUubW9kZWwnO1xuXG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IFByb2ZpbGUgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vcHJvZmlsZS9wcm9maWxlLm1vZGVsJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmllbGRzL2ZpZWxkcy51dGlscyc7XG5pbXBvcnQgeyBGb3JtVmFsaWRhdG9yc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtL2Zvcm0tdmFsaWRhdG9ycy5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2ZpbGVOb3RpZmllciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Byb2ZpbGUvcHJvZmlsZS5ub3RpZmllcic7XG5pbXBvcnQgeyBSZW1vdmVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2dzL3JlbW92ZS1kaWFsb2cvcmVtb3ZlLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1maWVsZC9hYnN0cmFjdC1maWVsZC13cml0ZS5jb21wb25lbnQnO1xuXG50eXBlIENvbGxlY3Rpb25JdGVtID0ge1xuICBjYXNlRmllbGQ6IENhc2VGaWVsZDtcbiAgaXRlbTogYW55O1xuICBwcmVmaXg6IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbiAgY29udGFpbmVyOiBGb3JtR3JvdXA7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtd3JpdGUtY29sbGVjdGlvbi1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93cml0ZS1jb2xsZWN0aW9uLWZpZWxkLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2xsZWN0aW9uLWZpZWxkLnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBXcml0ZUNvbGxlY3Rpb25GaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgcHVibGljIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdID0gW107XG5cbiAgcHVibGljIGZvcm1BcnJheTogRm9ybUFycmF5O1xuXG4gIHB1YmxpYyBwcm9maWxlOiBQcm9maWxlO1xuICBwdWJsaWMgcHJvZmlsZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIEBWaWV3Q2hpbGRyZW4oJ2NvbGxlY3Rpb25JdGVtJylcbiAgcHJpdmF0ZSByZWFkb25seSBpdGVtczogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuICBwdWJsaWMgcmVhZG9ubHkgY29sbEl0ZW1zOiBDb2xsZWN0aW9uSXRlbVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbFRvU2VydmljZTogU2Nyb2xsVG9TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZmlsZU5vdGlmaWVyOiBQcm9maWxlTm90aWZpZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkgeyAvLyBtZWFuaW5nIEkgYW0gbm90IHJlbmRlcmVkIG9uIHRoZSBzZWFyY2gvd29ya2Jhc2tldCBpbnB1dCBmaWx0ZXJcbiAgICAgIHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvZmlsZU5vdGlmaWVyLnByb2ZpbGUuc3Vic2NyaWJlKF8gPT4gdGhpcy5wcm9maWxlID0gXyk7XG4gICAgfVxuICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlID0gdGhpcy5jYXNlRmllbGQudmFsdWUgfHwgW107XG4gICAgdGhpcy5mb3JtQXJyYXkgPSB0aGlzLnJlZ2lzdGVyQ29udHJvbChuZXcgRm9ybUFycmF5KFtdKSwgdHJ1ZSkgYXMgRm9ybUFycmF5O1xuICAgIHRoaXMuZm9ybUFycmF5WydjYXNlRmllbGQnXSA9IHRoaXMuY2FzZUZpZWxkO1xuICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlLmZvckVhY2goKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgcHJlZml4OiBzdHJpbmcgPSB0aGlzLmJ1aWxkSWRQcmVmaXgoaW5kZXgpO1xuICAgICAgY29uc3QgY2FzZUZpZWxkID0gdGhpcy5idWlsZENhc2VGaWVsZChpdGVtLCBpbmRleCk7XG4gICAgICBjYXNlRmllbGQucGFyZW50ID0gdGhpcy5jYXNlRmllbGRcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMuZ2V0Q29udGFpbmVyKGluZGV4KTtcbiAgICAgIGlmICh0aGlzLmNvbGxJdGVtcy5sZW5ndGggPD0gaW5kZXgpIHtcbiAgICAgICAgdGhpcy5jb2xsSXRlbXMubGVuZ3RoID0gaW5kZXggKyAxO1xuICAgICAgfVxuICAgICAgdGhpcy5jb2xsSXRlbXNbaW5kZXhdID0geyBjYXNlRmllbGQsIGl0ZW0sIHByZWZpeCwgaW5kZXgsIGNvbnRhaW5lciB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBidWlsZENhc2VGaWVsZChpdGVtLCBpbmRleDogbnVtYmVyLCBpc05ldyA9IGZhbHNlKTogQ2FzZUZpZWxkIHtcbiAgICAvKipcbiAgICAgKiBXaGF0IGZvbGxvdyBpcyBjb2RlIHRoYXQgbWFrZXMgbWUgd2FudCB0byBnbyBqdW1wIGluIHRoZSBzaG93ZXIhXG4gICAgICogQmFzaWNhbGx5LCB3ZSBsYW5kIGluIGhlcmUgcmVwZWF0ZWRseSBiZWNhdXNlIG9mIHRoZSBiaW5kaW5nLCBhbmRcbiAgICAgKiB0aGlzIGlzIHdoYXQgYXBwZWFycyB0byBiZSBoYXBwZW5pbmc6XG4gICAgICogICAxLiB0aGlzLmZvcm1BcnJheSBjb250YWlucyBubyBjb250cm9scyBhdCBhbGwuXG4gICAgICogICAgICB0aGlzLmZvcm1BcnJheS52YWx1ZSA9IFtdO1xuICAgICAqICAgMi4gdGhpcy5mb3JtQXJyYXkgY29udGFpbnMgYSBGb3JtR3JvdXAsIHdoaWNoIGNvbnRhaW5zIGEgc2luZ2xlXG4gICAgICogICAgICBGb3JtQ29udHJvbCB3aXRoIHRoZSBpZCAnY29kZScuXG4gICAgICogICAgICB0aGlzLmZvcm1BcnJheS52YWx1ZSA9IFt7IGNvZGU6IG51bGwgfV1cbiAgICAgKiAgIDMuIHRoaXMuZm9ybUFycmF5IGNvbnRhaW5zIHdoYXQgaXMgYmVpbmcgc2V0IHVwIGJlbG93LlxuICAgICAqICAgICAgdGhpcy5mb3JtQXJyYXkudmFsdWUgPSBbeyBjb2RlOiBudWxsLCBpZDogbnVsbCwgdmFsdWU6IHsgY29kZTogbnVsbCB9IH1dXG4gICAgICogICA0LCA1LCA2LCBldGMgLSB0aGUgc2FtZSBhcyAzLlxuICAgICAqL1xuICAgIGxldCBncm91cDogRm9ybUdyb3VwO1xuICAgIGlmICh0aGlzLmZvcm1BcnJheSAmJiAoaW5kZXggPCB0aGlzLmZvcm1BcnJheS5sZW5ndGgpKSB7XG4gICAgICBncm91cCA9IHRoaXMuZm9ybUFycmF5LmF0KGluZGV4KSBhcyBGb3JtR3JvdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gICAgfVxuXG4gICAgbGV0IHZhbHVlO1xuICAgIGlmICh0aGlzLmlzQ29sbGVjdGlvbk9mU2ltcGxlVHlwZSh0aGlzLmNhc2VGaWVsZCkpIHtcbiAgICAgIHZhbHVlID0gZ3JvdXAuZ2V0KCd2YWx1ZScpIGFzIEZvcm1Db250cm9sO1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICB2YWx1ZSA9IG5ldyBGb3JtQ29udHJvbChpdGVtLnZhbHVlKTtcbiAgICAgICAgLy8gTm93IGFkZCB0aGUgdmFsdWUgRm9ybUNvbnRyb2wgdG8gdGhlIG91dGVyIGdyb3VwLlxuICAgICAgICBncm91cC5hZGRDb250cm9sKCd2YWx1ZScsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBncm91cC5nZXQoJ3ZhbHVlJykgYXMgRm9ybUdyb3VwO1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICB2YWx1ZSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhncm91cC5jb250cm9scykpIHtcbiAgICAgICAgICB2YWx1ZS5hZGRDb250cm9sKGtleSwgZ3JvdXAuZ2V0KGtleSkpO1xuICAgICAgICAgIC8vIERPTidUIHJlbW92ZSB0aGUgY29udHJvbCBmb3IgdGhpcyBrZXkgZnJvbSB0aGUgb3V0ZXIgZ3JvdXAgb3IgaXRcbiAgICAgICAgICAvLyBnb2VzIGF3cnkuIFNvIERPTidUIHVuY29tbWVudCB0aGUgYmVsb3cgbGluZSFcbiAgICAgICAgICAvLyBncm91cC5yZW1vdmVDb250cm9sKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTm93IGFkZCB0aGUgdmFsdWUgRm9ybUdyb3VwIHRvIHRoZSBvdXRlciBncm91cC5cbiAgICAgICAgZ3JvdXAuYWRkQ29udHJvbCgndmFsdWUnLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBpZCA9IGdyb3VwLmdldCgnaWQnKSBhcyBGb3JtQ29udHJvbDtcbiAgICAvLyBJZiB3ZSdyZSBub3QgaW4gc2NlbmFyaW8gMywgYWJvdmUsIHdlIG5lZWQgdG8gZG8gc29tZSBqaWdnZXJ5IHBva2VyeVxuICAgIC8vIGFuZCBzZXQgdXAgdGhlIGlkIGFuZCB2YWx1ZSBjb250cm9scy5cbiAgICAvLyBBbHNvIHNldCB1cCBhbiBpZCBjb250cm9sIGlmIGl0IGRvZXNuJ3QgeWV0IGV4aXN0LlxuICAgIGlmICghaWQpIHtcbiAgICAgIGlkID0gbmV3IEZvcm1Db250cm9sKGl0ZW0uaWQpO1xuICAgICAgZ3JvdXAuYWRkQ29udHJvbCgnaWQnLCBpZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWdhaW4sIHZlcnkgc29ycnkuIEkndmUgbm90IGZvdW5kIGEgYmV0dGVyIHdheSB0byBwcm9kdWNlIHRoZVxuICAgICAqIG91dHB1dCBuZWVkZWQgZm9yIHdoYXQgbmVlZHMgdG8gYmUgc2VudCB0byB0aGUgc2VydmVyIHlldC5cbiAgICAgKi9cblxuICAgIC8vIE5vdywgYWRkIHRoZSBvdXRlciBncm91cCB0byB0aGUgYXJyYXkgKG9yIHJlcGxhY2UgaXQpLlxuICAgIGlmIChpbmRleCA8IHRoaXMuZm9ybUFycmF5Lmxlbmd0aCkge1xuICAgICAgdGhpcy5mb3JtQXJyYXkuc2V0Q29udHJvbChpbmRleCwgZ3JvdXApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1BcnJheS5wdXNoKGdyb3VwKTtcbiAgICB9XG5cbiAgICAvLyBOb3cgc2V0IHVwIHRoZSBDYXNlRmllbGQgYW5kIHZhbGlkYXRpb24uXG4gICAgbGV0IGNmaWQ6IHN0cmluZztcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xuICAgICAgY2ZpZCA9ICd2YWx1ZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNmaWQgPSBpbmRleC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIC8vIGlzTmV3OlxuICAgIGNvbnN0IGNmOiBDYXNlRmllbGQgPSB0aGlzLm5ld0Nhc2VGaWVsZChjZmlkLCBpdGVtLCBpbmRleCwgaXNOZXcpO1xuICAgIEZvcm1WYWxpZGF0b3JzU2VydmljZS5hZGRWYWxpZGF0b3JzKGNmLCB2YWx1ZSk7XG4gICAgRmllbGRzVXRpbHMuYWRkQ2FzZUZpZWxkQW5kQ29tcG9uZW50UmVmZXJlbmNlcyh2YWx1ZSwgY2YsIHRoaXMpO1xuICAgIHJldHVybiBjZjtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZElkUHJlZml4KGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByZWZpeCA9IGAke3RoaXMuaWRQcmVmaXh9JHt0aGlzLmNhc2VGaWVsZC5pZH1fYDtcbiAgICBpZiAodGhpcy5jYXNlRmllbGQuZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGU/LnR5cGUgPT09ICdDb21wbGV4Jykge1xuICAgICAgcmV0dXJuIGAke3ByZWZpeH0ke2luZGV4fV9gO1xuICAgIH1cblxuICAgIHJldHVybiBwcmVmaXg7XG4gIH1cblxuICBwdWJsaWMgaXNTZWFyY2hGaWx0ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJblNlYXJjaEJsb2NrICYmIHRoaXMuY29sbEl0ZW1zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgYWRkSXRlbShkb1Njcm9sbDogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vIE1hbnVhbGx5IHJlc2V0dGluZyBlcnJvcnMgaXMgcmVxdWlyZWQgdG8gcHJldmVudCBgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcmBcbiAgICB0aGlzLmZvcm1BcnJheS5zZXRFcnJvcnMobnVsbCk7XG4gICAgbGV0IGl0ZW0gPSB7IHZhbHVlOiBudWxsIH07XG5cbiAgICBpZiAodGhpcy5pc0NvbGxlY3Rpb25EeW5hbWljKCkpIHtcbiAgICAgIGl0ZW0gPSB7IC4uLnRoaXMuY2FzZUZpZWxkLnZhbHVlW3RoaXMuY2FzZUZpZWxkLnZhbHVlLmxlbmd0aCAtIDFdIH07XG4gICAgICBjb25zdCBrZXk6IG51bWJlciA9IE51bWJlcihpdGVtWydpZCddW2l0ZW1bJ2lkJ10ubGVuZ3RoIC0gMV0pICsgMTtcbiAgICAgIChpdGVtIGFzIGFueSkuaWQgPSBpdGVtWydpZCddLnJlcGxhY2UoLy4kLywga2V5LnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICB0aGlzLmNhc2VGaWVsZC52YWx1ZS5wdXNoKGl0ZW0pO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jYXNlRmllbGQudmFsdWUubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBjYXNlRmllbGQ6IENhc2VGaWVsZCA9IHRoaXMuYnVpbGRDYXNlRmllbGQoaXRlbSwgaW5kZXgsIHRydWUpO1xuICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuYnVpbGRJZFByZWZpeChpbmRleCk7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXRDb250YWluZXIoaW5kZXgpO1xuICAgIHRoaXMuY29sbEl0ZW1zLnB1c2goeyBjYXNlRmllbGQsIGl0ZW0sIGluZGV4LCBwcmVmaXgsIGNvbnRhaW5lciB9KTtcblxuICAgIC8vIFVwZGF0ZSBET00gcmVxdWlyZWQgYWZ0ZXIgcHVzaGluZyBhIG5ldyBpdGVtIHRvIGRvIHRoZSBuZXh0IHN0ZXBzIChpLmUuIHNjcm9sbGluZyBhbmQgZm9jdXNpbmcpXG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBpZiAoZG9TY3JvbGwpIHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9TZXJ2aWNlLnNjcm9sbFRvKHtcbiAgICAgICAgdGFyZ2V0OiBgJHt0aGlzLmJ1aWxkSWRQcmVmaXgoaW5kZXgpfSR7aW5kZXh9YCxcbiAgICAgICAgZHVyYXRpb246IDEwMDAsXG4gICAgICAgIG9mZnNldDogLTE1MCxcbiAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4geyB9LCBjb25zb2xlLmVycm9yKTtcbiAgICB9XG5cbiAgICB0aGlzLmZvY3VzTGFzdEl0ZW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNDb2xsZWN0aW9uRHluYW1pYygpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuY2FzZUZpZWxkLmZpZWxkX3R5cGUgfHwgIXRoaXMuY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNhc2VGaWVsZC5maWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5pZCA9PT0gJ0R5bmFtaWNSYWRpb0xpc3QnO1xuICB9XG5cbiAgcHJpdmF0ZSBuZXdDYXNlRmllbGQoaWQ6IHN0cmluZywgaXRlbSwgaW5kZXgsIGlzTmV3ID0gZmFsc2UpIHtcbiAgICBjb25zdCBpc05vdEF1dGhvcmlzZWRUb1VwZGF0ZSA9ICFpc05ldyAmJiB0aGlzLmlzTm90QXV0aG9yaXNlZFRvVXBkYXRlKGluZGV4KTtcblxuICAgIGNvbnN0IGZpZWxkVHlwZSA9IHBsYWluVG9DbGFzc0Zyb21FeGlzdChuZXcgRmllbGRUeXBlKCksIHRoaXMuY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlKTtcbiAgICBpZiAoZmllbGRUeXBlLmNvbXBsZXhfZmllbGRzKSB7XG4gICAgICBmaWVsZFR5cGUuY29tcGxleF9maWVsZHNcbiAgICAgICAgLmZpbHRlcigoY2Y6IENhc2VGaWVsZCkgPT4gISFjZi5zaG93X2NvbmRpdGlvbilcbiAgICAgICAgLm1hcCgoY2Y6IENhc2VGaWVsZCkgPT4gY2YuaGlkZGVuID0gdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHRoZSBiaXQgc2V0dGluZyB0aGUgaGlkZGVuIGZsYWcgaGVyZSBhcyBpdCdzIGFuIGl0ZW0gaW4gdGhlIGFycmF5IGFuZFxuICAgIC8vIGl0cyBoaWRkZW4gc3RhdGUgaXNuJ3QgaW5kZXBlbmRlbnRseSByZS1ldmFsdWF0ZWQgd2hlbiB0aGUgZm9ybSBpcyBjaGFuZ2VkLlxuICAgIHJldHVybiBwbGFpblRvQ2xhc3NGcm9tRXhpc3QobmV3IENhc2VGaWVsZCgpLCB7XG4gICAgICBpZCxcbiAgICAgIGZpZWxkX3R5cGU6IGZpZWxkVHlwZSxcbiAgICAgIGRpc3BsYXlfY29udGV4dDogaXNOb3RBdXRob3Jpc2VkVG9VcGRhdGUgPyAnUkVBRE9OTFknIDogdGhpcy5jYXNlRmllbGQuZGlzcGxheV9jb250ZXh0LFxuICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgICBsYWJlbDogbnVsbCxcbiAgICAgIGFjbHM6IHRoaXMuY2FzZUZpZWxkLmFjbHNcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGFpbmVyKGluZGV4OiBudW1iZXIpOiBGb3JtR3JvdXAge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5mb3JtQXJyYXkuYXQoaW5kZXgpLmdldCgndmFsdWUnKTtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZm9ybUFycmF5LmF0KGluZGV4KSBhcyBGb3JtR3JvdXA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0xhc3RJdGVtKCkge1xuICAgIGNvbnN0IGl0ZW06IGFueSA9IHRoaXMuaXRlbXMubGFzdC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mb3JtLWNvbnRyb2wnKTtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgaXRlbS5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlSXRlbShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5jb2xsSXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnJlc2V0SWRzKGluZGV4KTtcbiAgICB0aGlzLmNhc2VGaWVsZC52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuZm9ybUFycmF5LnJlbW92ZUF0KGluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRJZHMoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IHRoaXMuY29sbEl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjb3VudGVyID0gaSArIDE7XG4gICAgICBpZiAodGhpcy5jb2xsSXRlbXNbaV0uaW5kZXggJiYgdGhpcy5jb2xsSXRlbXNbaV0uaW5kZXggPT09IGNvdW50ZXIpIHtcbiAgICAgICAgdGhpcy5jb2xsSXRlbXNbaV0uaW5kZXggPSBpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb2xsSXRlbXNbaV0uY2FzZUZpZWxkICYmIHRoaXMuY29sbEl0ZW1zW2ldLmNhc2VGaWVsZC5pZFxuICAgICAgICAmJiB0aGlzLmNvbGxJdGVtc1tpXS5jYXNlRmllbGQuaWQgPT09IGNvdW50ZXIudG9TdHJpbmcoKSkge1xuICAgICAgICB0aGlzLmNvbGxJdGVtc1tpXS5jYXNlRmllbGQuaWQgPSBpLnRvU3RyaW5nKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlkUHJlZml4MSA9IHRoaXMuY29sbEl0ZW1zW2ldLnByZWZpeCA/IHRoaXMuY29sbEl0ZW1zW2ldLnByZWZpeC5yZXBsYWNlKGBfJHtjb3VudGVyLnRvU3RyaW5nKCl9YCwgYF8ke2kudG9TdHJpbmcoKX1gKSA6ICcnO1xuICAgICAgY29uc3QgaWRQcmVmaXgxQ3VycmVudCA9IGlkUHJlZml4MS5yZXBsYWNlKGBfJHtpLnRvU3RyaW5nKCl9YCwgYF8ke2NvdW50ZXIudG9TdHJpbmcoKX1gKTtcblxuICAgICAgaWYgKHRoaXMuY29sbEl0ZW1zW2ldLnByZWZpeCAmJiB0aGlzLmNvbGxJdGVtc1tpXS5wcmVmaXggPT09IGlkUHJlZml4MUN1cnJlbnQpIHtcbiAgICAgICAgdGhpcy5jb2xsSXRlbXNbaV0ucHJlZml4ID0gaWRQcmVmaXgxO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpZFByZWZpeEF2YWlsYWJsZSA9ICEhdGhpcy5jb2xsSXRlbXNbaV0uY29udGFpbmVyPy5bJ2NvbXBvbmVudCddPy5pZFByZWZpeDtcblxuICAgICAgY29uc3QgaWRQcmVmaXgyID0gaWRQcmVmaXhBdmFpbGFibGUgP1xuICAgICAgICB0aGlzLmNvbGxJdGVtc1tpXS5jb250YWluZXJbJ2NvbXBvbmVudCddLmlkUHJlZml4LnJlcGxhY2UoYF8ke2NvdW50ZXIudG9TdHJpbmcoKX1gLCBgXyR7aS50b1N0cmluZygpfWApIDogJyc7XG4gICAgICBjb25zdCBpZFByZWZpeDJjdXJyZW50ID0gaWRQcmVmaXgyLnJlcGxhY2UoYF8ke2kudG9TdHJpbmcoKX1gLCBgXyR7Y291bnRlci50b1N0cmluZygpfWApO1xuXG4gICAgICBpZiAoaWRQcmVmaXhBdmFpbGFibGUgJiYgdGhpcy5jb2xsSXRlbXNbaV0uY29udGFpbmVyWydjb21wb25lbnQnXS5pZFByZWZpeCA9PT0gaWRQcmVmaXgyY3VycmVudCkge1xuICAgICAgICB0aGlzLmNvbGxJdGVtc1tpXS5jb250YWluZXJbJ2NvbXBvbmVudCddLmlkUHJlZml4ID0gaWRQcmVmaXgyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpdGVtTGFiZWwoaW5kZXg6IG51bWJlcikge1xuICAgIGlmIChpbmRleCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuY2FzZUZpZWxkLmxhYmVsfSAke2luZGV4ICsgMX1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jYXNlRmllbGQubGFiZWw7XG4gIH1cblxuICBwdWJsaWMgaXNOb3RBdXRob3Jpc2VkVG9DcmVhdGUoKSB7XG4gICAgaWYgKHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIXRoaXMuZ2V0Q29sbGVjdGlvblBlcm1pc3Npb24odGhpcy5jYXNlRmllbGQsICdhbGxvd0luc2VydCcpO1xuICB9XG5cbiAgcHVibGljIGdldENvbGxlY3Rpb25QZXJtaXNzaW9uKGZpZWxkOiBDYXNlRmllbGQsIHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBmaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyICYmXG4gICAgICBmaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyLnNwbGl0KCcjJylcbiAgICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW0uc3RhcnRzV2l0aCgnQ09MTEVDVElPTignKSlbMF1cbiAgICAgICAgLmluY2x1ZGVzKHR5cGUpO1xuICB9XG5cbiAgcHVibGljIGlzTm90QXV0aG9yaXNlZFRvVXBkYXRlKGluZGV4KSB7XG4gICAgaWYgKHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBXYXMgcmVhc3Nlc2VkIGFzIHBhcnQgb2YgRVVJLTM1MDUuIFRoZXJlIGlzIHN0aWxsIGEgY2F2ZWF0IGFyb3VuZCBDUkQsIGJ1dCB0aGF0IHdhcyBkZWVtZWQgYW4gdW5saWtlbHkgc2NlbmFyaW9cbiAgICBjb25zdCBpZCA9IHRoaXMuZ2V0Q29udHJvbElkQXQoaW5kZXgpO1xuICAgIGlmIChpZCkge1xuICAgICAgaWYgKCEhdGhpcy5wcm9maWxlLnVzZXIgJiYgISF0aGlzLnByb2ZpbGUudXNlci5pZGFtKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZVJvbGUgPSB0aGlzLnByb2ZpbGUudXNlci5pZGFtLnJvbGVzLmZpbmQocm9sZSA9PiB0aGlzLmhhc1VwZGF0ZUFjY2Vzcyhyb2xlKSk7XG4gICAgICAgIHJldHVybiAhdXBkYXRlUm9sZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGhhc1VwZGF0ZUFjY2Vzcyhyb2xlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmNhc2VGaWVsZC5hY2xzLmZpbmQoYWNsID0+IGFjbC5yb2xlID09PSByb2xlICYmIGFjbC51cGRhdGUgPT09IHRydWUpO1xuICB9XG5cbiAgcHVibGljIGlzTm90QXV0aG9yaXNlZFRvRGVsZXRlKGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5pc0V4cGFuZGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFNob3VsZCBiZSBhYmxlIHRvIGRlbGV0ZSBpZiBjcmVhdGluZyBhIGNhc2UgZXZlbiBpZiBcIkRcIiBpcyBhYnNlbnQsIGhlbmNlOlxuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRDb250cm9sSWRBdChpbmRleCk7XG4gICAgcmV0dXJuICEhaWQgJiYgIXRoaXMuZ2V0Q29sbGVjdGlvblBlcm1pc3Npb24odGhpcy5jYXNlRmllbGQsICdhbGxvd0RlbGV0ZScpO1xuICB9XG5cbiAgcHVibGljIG9wZW5Nb2RhbChpOiBudW1iZXIpIHtcbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XG4gICAgZGlhbG9nQ29uZmlnLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IHRydWU7XG4gICAgZGlhbG9nQ29uZmlnLmFyaWFMYWJlbCA9ICdMYWJlbCc7XG4gICAgZGlhbG9nQ29uZmlnLmhlaWdodCA9ICcyMjBweCc7XG4gICAgZGlhbG9nQ29uZmlnLndpZHRoID0gJzU1MHB4JztcbiAgICBkaWFsb2dDb25maWcucGFuZWxDbGFzcyA9ICdkaWFsb2cnO1xuXG4gICAgZGlhbG9nQ29uZmlnLmNsb3NlT25OYXZpZ2F0aW9uID0gZmFsc2U7XG4gICAgZGlhbG9nQ29uZmlnLnBvc2l0aW9uID0ge1xuICAgICAgdG9wOiBgJHt3aW5kb3cuaW5uZXJIZWlnaHQgLyAyIC0gMTEwfXB4YCwgbGVmdDogYCR7d2luZG93LmlubmVyV2lkdGggLyAyIC0gMjc1fXB4YFxuICAgIH07XG5cbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFJlbW92ZURpYWxvZ0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcblxuICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgaWYgKHJlc3VsdCA9PT0gJ1JlbW92ZScpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtKGkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZWQgZnVsbCBzb2x1dGlvbiBhcyBwYXJ0IG9mIEVVSS0zNTA1XG4gICAqL1xuICBwcml2YXRlIGdldENvbnRyb2xJZEF0KGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuXG4gICAgLy8gdGhpcy5mb3JtQXJyYXkgY29udGFpbnMgWyBGb3JtR3JvdXAoIGlkOiBGb3JtQ29udHJvbCwgdmFsdWU6IEZvcm1Hcm91cCApLCAuLi4gXS5cbiAgICAvLyBIZXJlLCB3ZSBuZWVkIHRvIGdldCB0aGUgdmFsdWUgb2YgdGhlIGlkIEZvcm1Db250cm9sLlxuICAgIGNvbnN0IGdyb3VwOiBGb3JtR3JvdXAgPSB0aGlzLmZvcm1BcnJheS5hdChpbmRleCkgYXMgRm9ybUdyb3VwO1xuICAgIGNvbnN0IGNvbnRyb2w6IEZvcm1Db250cm9sID0gZ3JvdXAuZ2V0KCdpZCcpIGFzIEZvcm1Db250cm9sO1xuICAgIHJldHVybiBjb250cm9sID8gY29udHJvbC52YWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNDb2xsZWN0aW9uT2ZTaW1wbGVUeXBlKGNhc2VGaWVsZDogQ2FzZUZpZWxkKSB7XG4gICAgY29uc3Qgbm90U2ltcGxlID0gWydDb2xsZWN0aW9uJywgJ0NvbXBsZXgnXTtcbiAgICByZXR1cm4gbm90U2ltcGxlLmluZGV4T2YoY2FzZUZpZWxkLmZpZWxkX3R5cGUuY29sbGVjdGlvbl9maWVsZF90eXBlLnR5cGUpIDwgMDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbaWRdPVwiaWQoKVwiPlxuXG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBjb2xsZWN0aW9uLWluZGljYXRvclwiPlxuXG4gICAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMiBlcnJvci1zcGFjaW5nXCI+XG4gICAgICB7eyhjYXNlRmllbGQgfCBjY2RGaWVsZExhYmVsKX19XG4gICAgPC9oMj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIHdyaXRlLWNvbGxlY3Rpb24tYWRkLWl0ZW1fX3RvcFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWRkSXRlbSh0cnVlKVwiIFtkaXNhYmxlZF09XCJpc05vdEF1dGhvcmlzZWRUb0NyZWF0ZSgpIHx8IGlzU2VhcmNoRmlsdGVyKClcIj57eydBZGQgbmV3JyB8IHJweFRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgPGgyIGNsYXNzPVwiaGVhZGluZy1oMiBlcnJvci1zcGFjaW5nXCIgKm5nSWY9XCJjYXNlRmllbGQuaGludF90ZXh0IHx8IGZvcm1BcnJheS5lcnJvcnNcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiY2FzZUZpZWxkLmhpbnRfdGV4dFwiIGNsYXNzPVwiZm9ybS1oaW50XCI+XG4gICAgICA8bWFya2Rvd24+e3tjYXNlRmllbGQuaGludF90ZXh0IHwgcnB4VHJhbnNsYXRlIH19PC9tYXJrZG93bj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZm9ybUFycmF5LmVycm9yc1wiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgICAgICB7eyhmb3JtQXJyYXkuZXJyb3JzIHwgY2NkRmlyc3RFcnJvcjpjYXNlRmllbGQubGFiZWwpfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2gyPlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbaGlkZGVuXT1cImNhc2VGaWVsZC5oaWRkZW5cIiAqbmdJZj1cImNhc2VGaWVsZC52YWx1ZSAmJiBjYXNlRmllbGQudmFsdWUubGVuZ3RoXCI+XG4gICAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbGxJdGVtczsgbGV0IGkgPSBpbmRleFwiICNjb2xsZWN0aW9uSXRlbVxuICAgICAgICAgICAgW2lkXT1cInRoaXMuYnVpbGRJZFByZWZpeChpKSArIGlcIiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sbGVjdGlvbi10aXRsZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsb2F0LWxlZnRcIj5cbiAgICAgICAgICAgICAgPGxlZ2VuZCBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19sZWdlbmRcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpdGVtLnByZWZpeCArIGlcIj48aDMgY2xhc3M9XCJoZWFkaW5nLWgzXCI+e3tpdGVtTGFiZWwoaSkgfCBycHhUcmFuc2xhdGV9fTwvaDM+PC9sYWJlbD5cbiAgICAgICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG9hdC1yaWdodFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5Nb2RhbChpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTm90QXV0aG9yaXNlZFRvRGVsZXRlKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJSZW1vdmUge3sgaXRlbUxhYmVsKGkpIH19XCI+e3snUmVtb3ZlJyB8IHJweFRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8Y2NkLWZpZWxkLXdyaXRlIFtjYXNlRmllbGRdPVwiaXRlbS5jYXNlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2FzZUZpZWxkc109XCJjYXNlRmllbGRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyZW50XT1cIml0ZW0uY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkUHJlZml4XT1cIml0ZW0ucHJlZml4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJpdGVtLmNhc2VGaWVsZC5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNFeHBhbmRlZF09XCJpc0V4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5TZWFyY2hCbG9ja109XCJpc0luU2VhcmNoQmxvY2tcIj5cbiAgICAgICAgICA8L2NjZC1maWVsZC13cml0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2ZpZWxkc2V0PlxuICAgIDwvZGl2PlxuXG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiB3cml0ZS1jb2xsZWN0aW9uLWFkZC1pdGVtX19ib3R0b21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFkZEl0ZW0oZmFsc2UpXCIgW2Rpc2FibGVkXT1cImlzTm90QXV0aG9yaXNlZFRvQ3JlYXRlKCkgfHwgaXNTZWFyY2hGaWx0ZXIoKVwiICpuZ0lmPVwiY2FzZUZpZWxkLnZhbHVlICYmIGNhc2VGaWVsZC52YWx1ZS5sZW5ndGhcIj57eydBZGQgbmV3JyB8IHJweFRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuXG4gIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==
|
|
@@ -218,7 +218,7 @@ export class WriteDocumentFieldComponent extends AbstractFieldWriteComponent {
|
|
|
218
218
|
this.jurisdictionId = caseDetails?.case_type?.jurisdiction?.id;
|
|
219
219
|
}
|
|
220
220
|
});
|
|
221
|
-
this.jurisdictionSubs = this.jurisdictionService.
|
|
221
|
+
this.jurisdictionSubs = this.jurisdictionService.getSelectedJurisdiction().subscribe({
|
|
222
222
|
next: (jurisdiction) => {
|
|
223
223
|
if (jurisdiction) {
|
|
224
224
|
this.jurisdictionId = jurisdiction.id;
|
|
@@ -438,4 +438,4 @@ export class WriteDocumentFieldComponent extends AbstractFieldWriteComponent {
|
|
|
438
438
|
args: ['fileInput', { static: false }]
|
|
439
439
|
}] }); })();
|
|
440
440
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WriteDocumentFieldComponent, { className: "WriteDocumentFieldComponent", filePath: "lib/shared/components/palette/document/write-document-field.component.ts", lineNumber: 23 }); })();
|
|
441
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtZG9jdW1lbnQtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvZG9jdW1lbnQvd3JpdGUtZG9jdW1lbnQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvZG9jdW1lbnQvd3JpdGUtZG9jdW1lbnQtZmllbGQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLElBQUksU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXZELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1FQUFtRSxDQUFBO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0Ys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eUI7WUFBekIsOENBQXlCO1lBTTVDLGNBQTBDO1lBQTFDLGdFQUEwQztZQUM5QyxjQUNGO1lBREUsOEVBQ0Y7WUFHNEIsZUFBZTtZQUFmLG9DQUFlO1lBSXBDLGVBQTBDO1lBQTFDLDREQUEwQztZQUV4QyxjQUFvRDtZQUFwRCwrRUFBb0Q7WUFEckIsNkJBQVc7WUFLdUQsZUFBa0M7WUFBbEMsb0RBQWtDO1lBQUMsY0FBa0M7WUFBbEMsNkRBQWtDOzs7aUZESHBLLDJCQUEyQjtjQUp2QyxTQUFTOzJCQUNFLDBCQUEwQjswTkFlYyxTQUFTO2tCQUExRCxTQUFTO21CQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O2tGQVo5QiwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEFwcENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2FwcC5jb25maWcnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9ucy9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ2FzZVZpZXcgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY2FzZS12aWV3L2Nhc2Utdmlldy5tb2RlbCc7XG5pbXBvcnQgeyBEb2N1bWVudERhdGEsIEZvcm1Eb2N1bWVudCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9kb2N1bWVudC9kb2N1bWVudC1kYXRhLm1vZGVsJ1xuaW1wb3J0IHsgSHR0cEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2h0dHAvaHR0cC1lcnJvci5tb2RlbCc7XG5pbXBvcnQgeyBEb2N1bWVudE1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZG9jdW1lbnQtbWFuYWdlbWVudC9kb2N1bWVudC1tYW5hZ2VtZW50LnNlcnZpY2UnXG5pbXBvcnQgeyBKdXJpc2RpY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvanVyaXNkaWN0aW9uL2p1cmlzZGljdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENhc2VOb3RpZmllciB9IGZyb20gJy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL2Nhc2Uubm90aWZpZXInO1xuaW1wb3J0IHsgRG9jdW1lbnREaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kaWFsb2dzL2RvY3VtZW50LWRpYWxvZy9kb2N1bWVudC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IGluaXREaWFsb2cgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2luaXQtZGlhbG9nLWhlbHBlcic7XG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWZpZWxkL2Fic3RyYWN0LWZpZWxkLXdyaXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9maWxlLXVwbG9hZC1zdGF0ZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLWRvY3VtZW50LWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dyaXRlLWRvY3VtZW50LWZpZWxkLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBET0NVTUVOVF9VUkwgPSAnZG9jdW1lbnRfdXJsJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBET0NVTUVOVF9CSU5BUllfVVJMID0gJ2RvY3VtZW50X2JpbmFyeV91cmwnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERPQ1VNRU5UX0ZJTEVOQU1FID0gJ2RvY3VtZW50X2ZpbGVuYW1lJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBET0NVTUVOVF9IQVNIID0gJ2RvY3VtZW50X2hhc2gnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVQTE9BRF9USU1FU1RBTVAgPSAndXBsb2FkX3RpbWVzdGFtcCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVVBMT0FEX0VSUk9SX0ZJTEVfUkVRVUlSRUQgPSAnRmlsZSByZXF1aXJlZCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVVBMT0FEX0VSUk9SX05PVF9BVkFJTEFCTEUgPSAnRG9jdW1lbnQgdXBsb2FkIGZhY2lsaXR5IGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIG1vbWVudCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVVBMT0FEX0VSUk9SX0lOVkFMSURfRk9STUFUID0gJ0RvY3VtZW50IGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVkJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBVUExPQURfV0FJVElOR19GSUxFX1NUQVRVUyA9ICdVcGxvYWRpbmcuLi4nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVSUk9SX1VQTE9BRElOR19GSUxFID0gJ0Vycm9yIFVwbG9hZGluZyBGaWxlJztcblxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHVibGljIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcblxuICBwdWJsaWMgc2VsZWN0ZWRGaWxlOiBGaWxlO1xuICBwdWJsaWMgdmFsaWQgPSB0cnVlO1xuICBwdWJsaWMgZmlsZVVwbG9hZE1lc3NhZ2VzOiBzdHJpbmc7XG4gIHB1YmxpYyBjb25maXJtUmVwbGFjZVJlc3VsdDogc3RyaW5nO1xuICBwdWJsaWMgY2xpY2tJbnNpZGVUaGVEb2N1bWVudDogYm9vbGVhbjtcblxuICAvLyB0aGVzZSBhcmUgcHVibGljIHNvIHRoYXQgdGhleSBjYW4gYmUgbW9ja2VkIGZvciB0ZXN0c1xuICBwdWJsaWMgZmlsZVVwbG9hZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgZGlhbG9nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBjYXNlTm90aWZpZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGp1cmlzZGljdGlvblN1YnM6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHVwbG9hZGVkRG9jdW1lbnQ6IEZvcm1Hcm91cDtcbiAgcHJpdmF0ZSBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZztcbiAgcHJpdmF0ZSBzZWN1cmVNb2RlT246IGJvb2xlYW47XG5cbiAgcHVibGljIGp1cmlzZGljdGlvbklkOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlVHlwZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWc6IEFic3RyYWN0QXBwQ29uZmlnLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZU5vdGlmaWVyOiBDYXNlTm90aWZpZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudE1hbmFnZW1lbnQ6IERvY3VtZW50TWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsZVVwbG9hZFN0YXRlU2VydmljZTogRmlsZVVwbG9hZFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGp1cmlzZGljdGlvblNlcnZpY2U6IEp1cmlzZGljdGlvblNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWN1cmVNb2RlT24gPSB0aGlzLmFwcENvbmZpZy5nZXREb2N1bWVudFNlY3VyZU1vZGUoKTtcbiAgICBpZiAodGhpcy5zZWN1cmVNb2RlT24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlVG9DYXNlRGV0YWlscygpO1xuICAgIH1cbiAgICB0aGlzLmRpYWxvZ0NvbmZpZyA9IGluaXREaWFsb2coKTtcbiAgICAvLyBFVUktMzQwMy4gVGhlIGZpZWxkIHdhcyBub3QgYmVpbmcgcmVnaXN0ZXJlZCB3aGVuIHRoZXJlIHdhcyBubyB2YWx1ZSBhbmQgdGhlIGZpZWxkXG4gICAgLy8gaXRzZWxmIHdhcyBub3QgbWFuZGF0b3J5LCB3aGljaCBtZWFudCB0aGF0IHNob3dfY29uZGl0aW9ucyB3b3VsZCBub3QgYmUgZXZhbHVhdGVkLlxuICAgIC8vIEkndmUgY2xlYW5lZCB1cCB0aGUgbG9naWMgYW5kIGl0J3Mgbm93IGFsd2F5cyByZWdpc3RlcmVkLlxuICAgIGxldCBkb2N1bWVudCA9IHRoaXMuY2FzZUZpZWxkLnZhbHVlIHx8IHsgZG9jdW1lbnRfdXJsOiBudWxsLCBkb2N1bWVudF9iaW5hcnlfdXJsOiBudWxsLCBkb2N1bWVudF9maWxlbmFtZTogbnVsbCB9O1xuICAgIGRvY3VtZW50ID0gdGhpcy5zZWN1cmVNb2RlT24gJiYgIWRvY3VtZW50LmRvY3VtZW50X2hhc2ggPyB7IC4uLmRvY3VtZW50LCBkb2N1bWVudF9oYXNoOiBudWxsIH0gOiBkb2N1bWVudDtcbiAgICBpZiAodGhpcy5pc0FNYW5kYXRvcnlDb21wb25lbnQoKSkge1xuICAgICAgdGhpcy5jcmVhdGVEb2N1bWVudEZvcm1XaXRoVmFsaWRhdG9yKGRvY3VtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcmVhdGVEb2N1bWVudEZvcm0oZG9jdW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWxlVXBsb2FkU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmZpbGVVcGxvYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlhbG9nU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmRpYWxvZ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jYXNlTm90aWZpZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuY2FzZU5vdGlmaWVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmp1cmlzZGljdGlvblN1YnMpIHtcbiAgICAgIHRoaXMuanVyaXNkaWN0aW9uU3Vicy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc1VwbG9hZEluUHJvZ3Jlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZVVwbG9hZFN0YXRlU2VydmljZS5pc1VwbG9hZEluUHJvZ3Jlc3MoKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWxVcGxvYWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsZVVwbG9hZFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5maWxlVXBsb2FkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5maWxlVXBsb2FkU3RhdGVTZXJ2aWNlLnNldFVwbG9hZEluUHJvZ3Jlc3MoZmFsc2UpO1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLnJlc2V0VXBsb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZmlsZVZhbGlkYXRpb25zT25UYWIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNBTWFuZGF0b3J5Q29tcG9uZW50KCkpIHtcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRlRm9ybVVwbG9hZGVkRG9jdW1lbnQoKSkge1xuICAgICAgICB0aGlzLmRpc3BsYXlGaWxlVXBsb2FkTWVzc2FnZXMoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LlVQTE9BRF9FUlJPUl9GSUxFX1JFUVVJUkVEKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmlsZUNoYW5nZUV2ZW50KGZpbGVJbnB1dDogYW55LCBhbGxvd2VkUmVnZXg/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgZmlsZVR5cGVSZWdleDtcbiAgICBpZiAoYWxsb3dlZFJlZ2V4KSB7XG4gICAgICBmaWxlVHlwZVJlZ2V4ID0gbmV3IFJlZ0V4cChgKCR7YWxsb3dlZFJlZ2V4LnJlcGxhY2UoLywvZywgJ3wnKX0pYCwgJ2knKTtcbiAgICB9XG4gICAgaWYgKGZpbGVJbnB1dC50YXJnZXQ/LmZpbGVzWzBdICYmICFmaWxlSW5wdXQudGFyZ2V0Py5maWxlc1swXT8ubmFtZT8ubWF0Y2goZmlsZVR5cGVSZWdleCkpe1xuICAgICAgdGhpcy5pbnZhbGlkRmlsZUZvcm1hdCgpO1xuICAgIH0gZWxzZSBpZiAoZmlsZUlucHV0LnRhcmdldC5maWxlc1swXSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbGUgPSBmaWxlSW5wdXQudGFyZ2V0LmZpbGVzWzBdO1xuICAgICAgdGhpcy5kaXNwbGF5RmlsZVVwbG9hZE1lc3NhZ2VzKFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudC5VUExPQURfV0FJVElOR19GSUxFX1NUQVRVUyk7XG4gICAgICBjb25zdCBkb2N1bWVudFVwbG9hZDogRm9ybURhdGEgPSB0aGlzLmJ1aWxkRG9jdW1lbnRVcGxvYWREYXRhKHRoaXMuc2VsZWN0ZWRGaWxlKTtcbiAgICAgIHRoaXMuZmlsZVVwbG9hZFN0YXRlU2VydmljZS5zZXRVcGxvYWRJblByb2dyZXNzKHRydWUpO1xuXG4gICAgICB0aGlzLmZpbGVVcGxvYWRTdWJzY3JpcHRpb24gPSB0aGlzLmRvY3VtZW50TWFuYWdlbWVudC51cGxvYWRGaWxlKGRvY3VtZW50VXBsb2FkKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzdWx0RG9jdW1lbnQ6IERvY3VtZW50RGF0YSkgPT4gdGhpcy5oYW5kbGVEb2N1bWVudFVwbG9hZFJlc3VsdChyZXN1bHREb2N1bWVudCksXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IEh0dHBFcnJvcikgPT4gdGhpcy5oYW5kbGVEb2N1bWVudFVwbG9hZEVycm9yKGVycm9yKVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXRVcGxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbkZpbGVEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgcHVibGljIGZpbGVTZWxlY3RFdmVudCgpOiB2b2lkIHtcbiAgICBpZiAoKHRoaXMuY2FzZUZpZWxkLnZhbHVlICYmIHRoaXMuY2FzZUZpZWxkLnZhbHVlLmRvY3VtZW50X2ZpbGVuYW1lKSB8fFxuICAgICAgKHRoaXMuc2VsZWN0ZWRGaWxlICYmIHRoaXMuc2VsZWN0ZWRGaWxlLm5hbWUpKSB7XG4gICAgICB0aGlzLm9wZW5EaWFsb2codGhpcy5kaWFsb2dDb25maWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5GaWxlRGlhbG9nKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRyaWdnZXJSZXBsYWNlKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNvbmZpcm1SZXBsYWNlUmVzdWx0ID09PSAnUmVwbGFjZScpIHtcbiAgICAgIHRoaXMub3BlbkZpbGVEaWFsb2coKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgaW52YWxpZEZpbGVGb3JtYXQoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVEb2N1bWVudEZvcm0obnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgdGhpcy5kaXNwbGF5RmlsZVVwbG9hZE1lc3NhZ2VzKFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudC5VUExPQURfRVJST1JfSU5WQUxJRF9GT1JNQVQpO1xuXG4gICAgLy8gZml4IGFjdGl2ZSBmb3JtIGdyb3VwIHNvIHRoYXQgYWRkaXRpb25hbCBhdHRhY2htZW50cyBpbiBpbnZhbGlkIGZvcm1hdCBhcmUgbm90IGFjY2VwdGVkXG4gICAgdGhpcy5mb3JtR3JvdXAuc2V0RXJyb3JzKHsgaW52YWxpZEZpbGVGb3JtYXQ6IHRydWUgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VXBsb2FkZWRGaWxlTmFtZSgpOiBhbnkge1xuICAgIGlmICh0aGlzLnVwbG9hZGVkRG9jdW1lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnVwbG9hZGVkRG9jdW1lbnQuZ2V0KFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudC5ET0NVTUVOVF9GSUxFTkFNRSkudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldFVwbG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IG51bGw7XG4gICAgaWYgKHRoaXMuaXNBTWFuZGF0b3J5Q29tcG9uZW50KCkpIHtcbiAgICAgIHRoaXMudXBkYXRlRG9jdW1lbnRGb3JtKG51bGwsIG51bGwsIG51bGwpO1xuICAgICAgdGhpcy5kaXNwbGF5RmlsZVVwbG9hZE1lc3NhZ2VzKFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudC5VUExPQURfRVJST1JfRklMRV9SRVFVSVJFRCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsaWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmlsZVZhbGlkYXRpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQU1hbmRhdG9yeUNvbXBvbmVudCgpKSB7XG4gICAgICBpZiAodGhpcy5jbGlja0luc2lkZVRoZURvY3VtZW50ICYmIHRoaXMudmFsaWRhdGVGb3JtVXBsb2FkZWREb2N1bWVudCgpICYmICF0aGlzLmlzVXBMb2FkaW5nQUZpbGUoKSkge1xuICAgICAgICB0aGlzLmRpc3BsYXlGaWxlVXBsb2FkTWVzc2FnZXMoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LlVQTE9BRF9FUlJPUl9GSUxFX1JFUVVJUkVEKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5EaWFsb2coZGlhbG9nQ29uZmlnKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEb2N1bWVudERpYWxvZ0NvbXBvbmVudCwgZGlhbG9nQ29uZmlnKTtcbiAgICB0aGlzLmRpYWxvZ1N1YnNjcmlwdGlvbiA9IGRpYWxvZ1JlZi5iZWZvcmVDbG9zZWQoKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIHRoaXMuY29uZmlybVJlcGxhY2VSZXN1bHQgPSByZXN1bHQ7XG4gICAgICB0aGlzLnRyaWdnZXJSZXBsYWNlKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBEZXBlbmRpbmcgb24gdGhlIGNvbnRleHQsIHdlIGNhbiBnZXQgdGhlIGNhc2UgdHlwZSBhbmQganVyaXNkaWN0aW9uIGZyb20gZGlmZmVyZW50IHNvdXJjZXNcbiAgLy8gSWYgd2UgYXJlIHJ1bm5pbmcgYW4gZXZlbnQsIHRoZSBjYXNlTm90aWZpZXIgd2lsbCBoYXZlIHRoZSBjdXJyZW50IGNhc2VcbiAgLy8gSWYgd2UgYXJlIGNyZWF0aW5nIGEgY2FzZSwgdGhlIGNhc2UgZG9lc24ndCBleGlzdCB5ZXQsIHNvIHRoZSBjYXNlTm90aWZpZXIgY2FuJ3QgaGVscFxuICAvLyBJbnN0ZWFkIHdlIGNhbiB1c2UgdGhlIGV2ZW50VHJpZ2dlciB0byBnZXQgdGhlIGNhc2UgdHlwZSwgYW5kIHRoZSBqdXJpc2RpY3Rpb24gc2VydmljZSB0b1xuICAvLyBnZXQgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBqdXJpc2RpY3Rpb25cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb0Nhc2VEZXRhaWxzKCk6IHZvaWQge1xuICAgIHRoaXMuY2FzZU5vdGlmaWVyU3Vic2NyaXB0aW9uID0gdGhpcy5jYXNlTm90aWZpZXIuY2FzZVZpZXcuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChjYXNlRGV0YWlsczogQ2FzZVZpZXcpID0+IHtcbiAgICAgICAgdGhpcy5jYXNlVHlwZUlkID0gY2FzZURldGFpbHM/LmNhc2VfdHlwZS5pZDtcbiAgICAgICAgdGhpcy5qdXJpc2RpY3Rpb25JZCA9IGNhc2VEZXRhaWxzPy5jYXNlX3R5cGU/Lmp1cmlzZGljdGlvbj8uaWQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5qdXJpc2RpY3Rpb25TdWJzID0gdGhpcy5qdXJpc2RpY3Rpb25TZXJ2aWNlLnNlbGVjdGVkSnVyaXNkaWN0aW9uQlMuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChqdXJpc2RpY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKGp1cmlzZGljdGlvbikge1xuICAgICAgICAgIHRoaXMuanVyaXNkaWN0aW9uSWQgPSBqdXJpc2RpY3Rpb24uaWQ7XG4gICAgICAgICAgaWYgKGp1cmlzZGljdGlvbi5jdXJyZW50Q2FzZVR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuY2FzZVR5cGVJZCA9IGp1cmlzZGljdGlvbi5jdXJyZW50Q2FzZVR5cGUuaWRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBTWFuZGF0b3J5Q29tcG9uZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHQgJiYgdGhpcy5jYXNlRmllbGQuZGlzcGxheV9jb250ZXh0ID09PSBDb25zdGFudHMuTUFOREFUT1JZO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5RmlsZVVwbG9hZE1lc3NhZ2VzKGZpbGVVcGxvYWRNZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkID0gZmFsc2U7XG4gICAgdGhpcy5maWxlVXBsb2FkTWVzc2FnZXMgPSBmaWxlVXBsb2FkTWVzc2FnZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNVcExvYWRpbmdBRmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWxlVXBsb2FkTWVzc2FnZXMgPT09IFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudC5VUExPQURfV0FJVElOR19GSUxFX1NUQVRVUztcbiAgfVxuICBwcml2YXRlIHZhbGlkYXRlRm9ybVVwbG9hZGVkRG9jdW1lbnQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnVwbG9hZGVkRG9jdW1lbnQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGxldCB2YWxpZGF0aW9uID0gIXRoaXMudXBsb2FkZWREb2N1bWVudC5nZXQoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LkRPQ1VNRU5UX1VSTCkudmFsaWQgJiZcbiAgICAgICF0aGlzLnVwbG9hZGVkRG9jdW1lbnQuZ2V0KFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudC5ET0NVTUVOVF9CSU5BUllfVVJMKS52YWxpZCAmJlxuICAgICAgIXRoaXMudXBsb2FkZWREb2N1bWVudC5nZXQoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LkRPQ1VNRU5UX0ZJTEVOQU1FKS52YWxpZDtcblxuICAgIGlmICh0aGlzLnNlY3VyZU1vZGVPbikge1xuICAgICAgdmFsaWRhdGlvbiA9IHZhbGlkYXRpb24gJiYgIXRoaXMudXBsb2FkZWREb2N1bWVudC5nZXQoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LkRPQ1VNRU5UX0hBU0gpLnZhbGlkO1xuICAgIH1cblxuICAgIHJldHVybiB2YWxpZGF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEb2N1bWVudEZvcm0odXJsOiBzdHJpbmcsIGJpbmFyeVVybDogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nLCBkb2N1bWVudEhhc2g/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnVwbG9hZGVkRG9jdW1lbnQuZ2V0KFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudC5ET0NVTUVOVF9VUkwpLnNldFZhbHVlKHVybCk7XG4gICAgdGhpcy51cGxvYWRlZERvY3VtZW50LmdldChXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQuRE9DVU1FTlRfQklOQVJZX1VSTCkuc2V0VmFsdWUoYmluYXJ5VXJsKTtcbiAgICB0aGlzLnVwbG9hZGVkRG9jdW1lbnQuZ2V0KFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudC5ET0NVTUVOVF9GSUxFTkFNRSkuc2V0VmFsdWUoZmlsZW5hbWUpO1xuICAgIGlmIChkb2N1bWVudEhhc2gpIHtcbiAgICAgIHRoaXMudXBsb2FkZWREb2N1bWVudC5nZXQoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LkRPQ1VNRU5UX0hBU0gpLnNldFZhbHVlKGRvY3VtZW50SGFzaCk7XG4gICAgfVxuICAgIGlmKHRoaXMudXBsb2FkZWREb2N1bWVudC5nZXQoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LlVQTE9BRF9USU1FU1RBTVApKXtcbiAgICAgIHRoaXMudXBsb2FkZWREb2N1bWVudC5yZW1vdmVDb250cm9sKFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudC5VUExPQURfVElNRVNUQU1QKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURvY3VtZW50Rm9ybVdpdGhWYWxpZGF0b3IoZG9jdW1lbnQ6IEZvcm1Eb2N1bWVudCk6IHZvaWQge1xuICAgIGxldCBkb2N1bWVudEZvcm1Hcm91cCA9IHtcbiAgICAgIGRvY3VtZW50X3VybDogbmV3IEZvcm1Db250cm9sKGRvY3VtZW50LmRvY3VtZW50X3VybCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBkb2N1bWVudF9iaW5hcnlfdXJsOiBuZXcgRm9ybUNvbnRyb2woZG9jdW1lbnQuZG9jdW1lbnRfYmluYXJ5X3VybCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBkb2N1bWVudF9maWxlbmFtZTogbmV3IEZvcm1Db250cm9sKGRvY3VtZW50LmRvY3VtZW50X2ZpbGVuYW1lLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgIH07XG5cbiAgICBpZihkb2N1bWVudC51cGxvYWRfdGltZXN0YW1wICYmICh0eXBlb2YgZG9jdW1lbnQudXBsb2FkX3RpbWVzdGFtcCA9PT0gJ3N0cmluZycgKSl7XG4gICAgICBkb2N1bWVudEZvcm1Hcm91cCA9IHtcbiAgICAgICAgLi4uZG9jdW1lbnRGb3JtR3JvdXAsXG4gICAgICAgIC4uLnsgdXBsb2FkX3RpbWVzdGFtcDogbmV3IEZvcm1Db250cm9sKGRvY3VtZW50LnVwbG9hZF90aW1lc3RhbXApIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudEZvcm1Hcm91cCA9IHRoaXMuc2VjdXJlTW9kZU9uID8ge1xuICAgICAgLi4uZG9jdW1lbnRGb3JtR3JvdXAsXG4gICAgICAuLi57IGRvY3VtZW50X2hhc2g6IG5ldyBGb3JtQ29udHJvbChkb2N1bWVudC5kb2N1bWVudF9oYXNoKSB9XG4gICAgfSA6IGRvY3VtZW50Rm9ybUdyb3VwO1xuXG4gICAgdGhpcy51cGxvYWRlZERvY3VtZW50ID0gdGhpcy5yZWdpc3RlckNvbnRyb2wobmV3IEZvcm1Hcm91cChkb2N1bWVudEZvcm1Hcm91cCksIHRydWUpIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRG9jdW1lbnRGb3JtKGRvY3VtZW50OiBGb3JtRG9jdW1lbnQpOiB2b2lkIHtcbiAgICBsZXQgZG9jdW1lbnRGb3JtR3JvdXAgPSB7XG4gICAgICBkb2N1bWVudF91cmw6IG5ldyBGb3JtQ29udHJvbChkb2N1bWVudC5kb2N1bWVudF91cmwpLFxuICAgICAgZG9jdW1lbnRfYmluYXJ5X3VybDogbmV3IEZvcm1Db250cm9sKGRvY3VtZW50LmRvY3VtZW50X2JpbmFyeV91cmwpLFxuICAgICAgZG9jdW1lbnRfZmlsZW5hbWU6IG5ldyBGb3JtQ29udHJvbChkb2N1bWVudC5kb2N1bWVudF9maWxlbmFtZSlcbiAgICB9O1xuXG4gICAgaWYoZG9jdW1lbnQudXBsb2FkX3RpbWVzdGFtcCAmJiAodHlwZW9mIGRvY3VtZW50LnVwbG9hZF90aW1lc3RhbXAgPT09ICdzdHJpbmcnICkpe1xuICAgICAgZG9jdW1lbnRGb3JtR3JvdXAgPSB7XG4gICAgICAgIC4uLmRvY3VtZW50Rm9ybUdyb3VwLFxuICAgICAgICAuLi57IHVwbG9hZF90aW1lc3RhbXA6IG5ldyBGb3JtQ29udHJvbChkb2N1bWVudC51cGxvYWRfdGltZXN0YW1wKSB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZG9jdW1lbnRGb3JtR3JvdXAgPSB0aGlzLnNlY3VyZU1vZGVPbiA/IHtcbiAgICAgIC4uLmRvY3VtZW50Rm9ybUdyb3VwLFxuICAgICAgLi4ueyBkb2N1bWVudF9oYXNoOiBuZXcgRm9ybUNvbnRyb2woZG9jdW1lbnQuZG9jdW1lbnRfaGFzaCkgfVxuICAgIH0gOiBkb2N1bWVudEZvcm1Hcm91cDtcblxuICAgIHRoaXMudXBsb2FkZWREb2N1bWVudCA9IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtR3JvdXAoZG9jdW1lbnRGb3JtR3JvdXApLCB0cnVlKSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBwcml2YXRlIGdldEVycm9yTWVzc2FnZShlcnJvcjogSHR0cEVycm9yKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKGVycm9yLnN0YXR1cykge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSA1MDI6XG4gICAgICAgIHJldHVybiBXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQuVVBMT0FEX0VSUk9SX05PVF9BVkFJTEFCTEU7XG4gICAgICBjYXNlIDQyMjpcbiAgICAgIGNhc2UgNTAwOlxuICAgICAgICB7XG4gICAgICAgICAgbGV0IGVycm9yTXNnID0gV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LkVSUk9SX1VQTE9BRElOR19GSUxFO1xuICAgICAgICAgIGlmIChlcnJvcj8uZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnN0IGZ1bGxFcnJvciA9IGVycm9yLmVycm9yO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBmdWxsRXJyb3IuaW5kZXhPZigneycpO1xuICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHtcbiAgICAgICAgICAgICAgY29uc3QganNvbiA9IGZ1bGxFcnJvci5zdWJzdHJpbmcoc3RhcnQsIGZ1bGxFcnJvci5sZW5ndGggLSAxKS5zcGxpdCgnPEVPTD4nKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgY29uc3Qgb2JqID0gSlNPTi5wYXJzZShqc29uKTtcbiAgICAgICAgICAgICAgaWYgKG9iaj8uZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBlcnJvck1zZyA9IG9iai5lcnJvcjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXJyb3JNc2c7XG4gICAgICAgIH1cbiAgICAgIGNhc2UgNDI5OlxuICAgICAgICByZXR1cm4gZXJyb3I/LmVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudC5FUlJPUl9VUExPQURJTkdfRklMRTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRG9jdW1lbnRVcGxvYWREYXRhKHNlbGVjdGVkRmlsZTogRmlsZSk6IEZvcm1EYXRhIHtcbiAgICBjb25zdCBkb2N1bWVudFVwbG9hZDogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBkb2N1bWVudFVwbG9hZC5hcHBlbmQoJ2ZpbGVzJywgc2VsZWN0ZWRGaWxlLCBzZWxlY3RlZEZpbGUubmFtZSk7XG4gICAgZG9jdW1lbnRVcGxvYWQuYXBwZW5kKCdjbGFzc2lmaWNhdGlvbicsICdQVUJMSUMnKTtcblxuICAgIGlmICh0aGlzLmFwcENvbmZpZy5nZXREb2N1bWVudFNlY3VyZU1vZGUoKSkge1xuICAgICAgY29uc3QgY2FzZVR5cGVJZCA9IHRoaXMuY2FzZVR5cGVJZCA/IHRoaXMuY2FzZVR5cGVJZCA6IG51bGw7XG4gICAgICBjb25zdCBjYXNlVHlwZUp1cmlzZGljdGlvbklkID0gdGhpcy5qdXJpc2RpY3Rpb25JZCA/IHRoaXMuanVyaXNkaWN0aW9uSWQgOiBudWxsO1xuICAgICAgZG9jdW1lbnRVcGxvYWQuYXBwZW5kKCdjYXNlVHlwZUlkJywgY2FzZVR5cGVJZCk7XG4gICAgICBkb2N1bWVudFVwbG9hZC5hcHBlbmQoJ2p1cmlzZGljdGlvbklkJywgY2FzZVR5cGVKdXJpc2RpY3Rpb25JZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRvY3VtZW50VXBsb2FkO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVEb2N1bWVudFVwbG9hZFJlc3VsdChyZXN1bHQ6IERvY3VtZW50RGF0YSk6IHZvaWQge1xuICAgIGlmICghdGhpcy51cGxvYWRlZERvY3VtZW50KSB7XG4gICAgICBpZiAodGhpcy5zZWN1cmVNb2RlT24pIHtcbiAgICAgICAgdGhpcy5jcmVhdGVEb2N1bWVudEZvcm0oeyBkb2N1bWVudF91cmw6IG51bGwsIGRvY3VtZW50X2JpbmFyeV91cmw6IG51bGwsIGRvY3VtZW50X2ZpbGVuYW1lOiBudWxsLCBkb2N1bWVudF9oYXNoOiBudWxsIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jcmVhdGVEb2N1bWVudEZvcm0oeyBkb2N1bWVudF91cmw6IG51bGwsIGRvY3VtZW50X2JpbmFyeV91cmw6IG51bGwsIGRvY3VtZW50X2ZpbGVuYW1lOiBudWxsIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGRvY3VtZW50ID0gdGhpcy5zZWN1cmVNb2RlT24gPyByZXN1bHQuZG9jdW1lbnRzWzBdIDogcmVzdWx0Ll9lbWJlZGRlZC5kb2N1bWVudHNbMF07XG5cbiAgICBpZiAodGhpcy5zZWN1cmVNb2RlT24pIHtcbiAgICAgIHRoaXMudXBkYXRlRG9jdW1lbnRGb3JtKFxuICAgICAgICBkb2N1bWVudC5fbGlua3Muc2VsZi5ocmVmLFxuICAgICAgICBkb2N1bWVudC5fbGlua3MuYmluYXJ5LmhyZWYsXG4gICAgICAgIGRvY3VtZW50Lm9yaWdpbmFsRG9jdW1lbnROYW1lLFxuICAgICAgICBkb2N1bWVudC5oYXNoVG9rZW5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlRG9jdW1lbnRGb3JtKFxuICAgICAgICBkb2N1bWVudC5fbGlua3Muc2VsZi5ocmVmLFxuICAgICAgICBkb2N1bWVudC5fbGlua3MuYmluYXJ5LmhyZWYsXG4gICAgICAgIGRvY3VtZW50Lm9yaWdpbmFsRG9jdW1lbnROYW1lLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbGlkID0gdHJ1ZTtcbiAgICB0aGlzLmZpbGVVcGxvYWRTdGF0ZVNlcnZpY2Uuc2V0VXBsb2FkSW5Qcm9ncmVzcyhmYWxzZSk7XG5cbiAgICAvLyByZWZyZXNoIHJlcGxhY2VkIGRvY3VtZW50IGluZm9cbiAgICBpZiAodGhpcy5jYXNlRmllbGQudmFsdWUpIHtcbiAgICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlLmRvY3VtZW50X2JpbmFyeV91cmwgPSBkb2N1bWVudC5fbGlua3MuYmluYXJ5LmhyZWY7XG4gICAgICB0aGlzLmNhc2VGaWVsZC52YWx1ZS5kb2N1bWVudF9maWxlbmFtZSA9IGRvY3VtZW50Lm9yaWdpbmFsRG9jdW1lbnROYW1lO1xuICAgICAgdGhpcy5jYXNlRmllbGQudmFsdWUuZG9jdW1lbnRfdXJsID0gZG9jdW1lbnQuX2xpbmtzLnNlbGYuaHJlZjtcblxuICAgICAgaWYgKHRoaXMuc2VjdXJlTW9kZU9uKSB7XG4gICAgICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlLmRvY3VtZW50X2hhc2ggPSBkb2N1bWVudC5oYXNoVG9rZW47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVEb2N1bWVudFVwbG9hZEVycm9yKGVycm9yOiBIdHRwRXJyb3IpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVVcGxvYWRNZXNzYWdlcyA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKTtcbiAgICB0aGlzLnZhbGlkID0gZmFsc2U7XG4gICAgdGhpcy5maWxlVXBsb2FkU3RhdGVTZXJ2aWNlLnNldFVwbG9hZEluUHJvZ3Jlc3MoZmFsc2UpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvciBib3R0b20tMzAnOiAhdmFsaWR9XCI+XG4gIDxsYWJlbCBbZm9yXT1cImlkKClcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZvcm0tbGFiZWxcIiBhdHRyLmFyaWEtbGFiZWw9XCJ7e2Nhc2VGaWVsZCB8IGNjZEZpZWxkTGFiZWx9fVwiPnt7KGNhc2VGaWVsZCB8IGNjZEZpZWxkTGFiZWwpfX08L3NwYW4+XG4gIDwvbGFiZWw+XG4gIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCIgKm5nSWY9XCJjYXNlRmllbGQuaGludF90ZXh0XCI+XG4gICAgPG1hcmtkb3duPnt7IGNhc2VGaWVsZC5oaW50X3RleHQgfCBycHhUcmFuc2xhdGUgfX08L21hcmtkb3duPlxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgIHJvbGU9XCJhbGVydFwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIFtoaWRkZW5dPVwiIShmaWxlVXBsb2FkTWVzc2FnZXMgJiYgIXZhbGlkKVwiPlxuICAgIHt7IGZpbGVVcGxvYWRNZXNzYWdlcyB8IHJweFRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG4gIDxkaXY+XG4gICAgPCEtLTxzcGFuICpuZ0lmPVwiZ2V0VXBsb2FkZWRGaWxlTmFtZSgpXCIgY2xhc3M9XCJ0ZXh0LTE2XCI+RmlsZSBuYW1lOiB7e2dldFVwbG9hZGVkRmlsZU5hbWUoKX19PC9zcGFuPi0tPlxuICAgIDxjY2QtcmVhZC1kb2N1bWVudC1maWVsZCAqbmdJZj1cImNhc2VGaWVsZFwiIFtjYXNlRmllbGRdPVwiY2FzZUZpZWxkXCI+PC9jY2QtcmVhZC1kb2N1bWVudC1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmUnPlxuICAgIDxkaXYgW2lkXT1cImNyZWF0ZUVsZW1lbnRJZCgnZmlsZUlucHV0V3JhcHBlcicpXCIgKGNsaWNrKT1cImZpbGVTZWxlY3RFdmVudCgpXCIgKGtleXVwKT1cImZpbGVTZWxlY3RFdmVudCgpXCI+PC9kaXY+XG4gICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGJvdHRvbS0zMFwiIFtpZF09XCJpZCgpXCIgdHlwZT1cImZpbGVcIiAoa2V5ZG93bi5UYWIpPVwiZmlsZVZhbGlkYXRpb25zT25UYWIoKVwiIChjaGFuZ2UpPVwiZmlsZUNoYW5nZUV2ZW50KCRldmVudCwgY2FzZUZpZWxkLmZpZWxkX3R5cGUucmVndWxhcl9leHByZXNzaW9uKVwiXG4gICAgICAgICAgIGFjY2VwdD1cInt7Y2FzZUZpZWxkLmZpZWxkX3R5cGUucmVndWxhcl9leHByZXNzaW9ufX1cIiAjZmlsZUlucHV0Lz5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGJvdHRvbS0zMFwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkNhbmNlbCB1cGxvYWRcIiAoY2xpY2spPVwiY2FuY2VsVXBsb2FkKClcIiBbZGlzYWJsZWRdPVwiIWlzVXBsb2FkSW5Qcm9ncmVzcygpXCI+e3snQ2FuY2VsIHVwbG9hZCcgfCBycHhUcmFuc2xhdGV9fTwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
441
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtZG9jdW1lbnQtZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvZG9jdW1lbnQvd3JpdGUtZG9jdW1lbnQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvZG9jdW1lbnQvd3JpdGUtZG9jdW1lbnQtZmllbGQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLElBQUksU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXZELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1FQUFtRSxDQUFBO0FBQzdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0Ys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RixlQUF5QjtZQUF6Qiw4Q0FBeUI7WUFNNUMsY0FBMEM7WUFBMUMsZ0VBQTBDO1lBQzlDLGNBQ0Y7WUFERSw4RUFDRjtZQUc0QixlQUFlO1lBQWYsb0NBQWU7WUFJcEMsZUFBMEM7WUFBMUMsNERBQTBDO1lBRXhDLGNBQW9EO1lBQXBELCtFQUFvRDtZQURyQiw2QkFBVztZQUt1RCxlQUFrQztZQUFsQyxvREFBa0M7WUFBQyxjQUFrQztZQUFsQyw2REFBa0M7OztpRkRIcEssMkJBQTJCO2NBSnZDLFNBQVM7MkJBQ0UsMEJBQTBCOzBOQWVjLFNBQVM7a0JBQTFELFNBQVM7bUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7a0ZBWjlCLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZyBhcyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7IE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFic3RyYWN0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBwLmNvbmZpZyc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi8uLi9jb21tb25zL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDYXNlVmlldyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jYXNlLXZpZXcvY2FzZS12aWV3Lm1vZGVsJztcbmltcG9ydCB7IERvY3VtZW50RGF0YSwgRm9ybURvY3VtZW50IH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2RvY3VtZW50L2RvY3VtZW50LWRhdGEubW9kZWwnXG5pbXBvcnQgeyBIdHRwRXJyb3IgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vaHR0cC9odHRwLWVycm9yLm1vZGVsJztcbmltcG9ydCB7IERvY3VtZW50TWFuYWdlbWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kb2N1bWVudC1tYW5hZ2VtZW50L2RvY3VtZW50LW1hbmFnZW1lbnQuc2VydmljZSdcbmltcG9ydCB7IEp1cmlzZGljdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9qdXJpc2RpY3Rpb24vanVyaXNkaWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FzZU5vdGlmaWVyIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMvY2FzZS5ub3RpZmllcic7XG5pbXBvcnQgeyBEb2N1bWVudERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2RpYWxvZ3MvZG9jdW1lbnQtZGlhbG9nL2RvY3VtZW50LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgaW5pdERpYWxvZyB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW5pdC1kaWFsb2ctaGVscGVyJztcbmltcG9ydCB7IEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtd3JpdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVVcGxvYWRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2ZpbGUtdXBsb2FkLXN0YXRlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtd3JpdGUtZG9jdW1lbnQtZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd3JpdGUtZG9jdW1lbnQtZmllbGQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERPQ1VNRU5UX1VSTCA9ICdkb2N1bWVudF91cmwnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERPQ1VNRU5UX0JJTkFSWV9VUkwgPSAnZG9jdW1lbnRfYmluYXJ5X3VybCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRE9DVU1FTlRfRklMRU5BTUUgPSAnZG9jdW1lbnRfZmlsZW5hbWUnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERPQ1VNRU5UX0hBU0ggPSAnZG9jdW1lbnRfaGFzaCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVVBMT0FEX1RJTUVTVEFNUCA9ICd1cGxvYWRfdGltZXN0YW1wJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBVUExPQURfRVJST1JfRklMRV9SRVFVSVJFRCA9ICdGaWxlIHJlcXVpcmVkJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBVUExPQURfRVJST1JfTk9UX0FWQUlMQUJMRSA9ICdEb2N1bWVudCB1cGxvYWQgZmFjaWxpdHkgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgbW9tZW50JztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBVUExPQURfRVJST1JfSU5WQUxJRF9GT1JNQVQgPSAnRG9jdW1lbnQgZm9ybWF0IGlzIG5vdCBzdXBwb3J0ZWQnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVQTE9BRF9XQUlUSU5HX0ZJTEVfU1RBVFVTID0gJ1VwbG9hZGluZy4uLic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRVJST1JfVVBMT0FESU5HX0ZJTEUgPSAnRXJyb3IgVXBsb2FkaW5nIEZpbGUnO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgZmlsZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEZpbGU6IEZpbGU7XG4gIHB1YmxpYyB2YWxpZCA9IHRydWU7XG4gIHB1YmxpYyBmaWxlVXBsb2FkTWVzc2FnZXM6IHN0cmluZztcbiAgcHVibGljIGNvbmZpcm1SZXBsYWNlUmVzdWx0OiBzdHJpbmc7XG4gIHB1YmxpYyBjbGlja0luc2lkZVRoZURvY3VtZW50OiBib29sZWFuO1xuXG4gIC8vIHRoZXNlIGFyZSBwdWJsaWMgc28gdGhhdCB0aGV5IGNhbiBiZSBtb2NrZWQgZm9yIHRlc3RzXG4gIHB1YmxpYyBmaWxlVXBsb2FkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkaWFsb2dTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNhc2VOb3RpZmllclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMganVyaXNkaWN0aW9uU3ViczogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgdXBsb2FkZWREb2N1bWVudDogRm9ybUdyb3VwO1xuICBwcml2YXRlIGRpYWxvZ0NvbmZpZzogTWF0RGlhbG9nQ29uZmlnO1xuICBwcml2YXRlIHNlY3VyZU1vZGVPbjogYm9vbGVhbjtcblxuICBwdWJsaWMganVyaXNkaWN0aW9uSWQ6IHN0cmluZztcbiAgcHVibGljIGNhc2VUeXBlSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50TWFuYWdlbWVudDogRG9jdW1lbnRNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWxlVXBsb2FkU3RhdGVTZXJ2aWNlOiBGaWxlVXBsb2FkU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkganVyaXNkaWN0aW9uU2VydmljZTogSnVyaXNkaWN0aW9uU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlY3VyZU1vZGVPbiA9IHRoaXMuYXBwQ29uZmlnLmdldERvY3VtZW50U2VjdXJlTW9kZSgpO1xuICAgIGlmICh0aGlzLnNlY3VyZU1vZGVPbikge1xuICAgICAgdGhpcy5zdWJzY3JpYmVUb0Nhc2VEZXRhaWxzKCk7XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nQ29uZmlnID0gaW5pdERpYWxvZygpO1xuICAgIC8vIEVVSS0zNDAzLiBUaGUgZmllbGQgd2FzIG5vdCBiZWluZyByZWdpc3RlcmVkIHdoZW4gdGhlcmUgd2FzIG5vIHZhbHVlIGFuZCB0aGUgZmllbGRcbiAgICAvLyBpdHNlbGYgd2FzIG5vdCBtYW5kYXRvcnksIHdoaWNoIG1lYW50IHRoYXQgc2hvd19jb25kaXRpb25zIHdvdWxkIG5vdCBiZSBldmFsdWF0ZWQuXG4gICAgLy8gSSd2ZSBjbGVhbmVkIHVwIHRoZSBsb2dpYyBhbmQgaXQncyBub3cgYWx3YXlzIHJlZ2lzdGVyZWQuXG4gICAgbGV0IGRvY3VtZW50ID0gdGhpcy5jYXNlRmllbGQudmFsdWUgfHwgeyBkb2N1bWVudF91cmw6IG51bGwsIGRvY3VtZW50X2JpbmFyeV91cmw6IG51bGwsIGRvY3VtZW50X2ZpbGVuYW1lOiBudWxsIH07XG4gICAgZG9jdW1lbnQgPSB0aGlzLnNlY3VyZU1vZGVPbiAmJiAhZG9jdW1lbnQuZG9jdW1lbnRfaGFzaCA/IHsgLi4uZG9jdW1lbnQsIGRvY3VtZW50X2hhc2g6IG51bGwgfSA6IGRvY3VtZW50O1xuICAgIGlmICh0aGlzLmlzQU1hbmRhdG9yeUNvbXBvbmVudCgpKSB7XG4gICAgICB0aGlzLmNyZWF0ZURvY3VtZW50Rm9ybVdpdGhWYWxpZGF0b3IoZG9jdW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNyZWF0ZURvY3VtZW50Rm9ybShkb2N1bWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpbGVVcGxvYWRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZmlsZVVwbG9hZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaWFsb2dTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZGlhbG9nU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNhc2VOb3RpZmllclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5jYXNlTm90aWZpZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuanVyaXNkaWN0aW9uU3Vicykge1xuICAgICAgdGhpcy5qdXJpc2RpY3Rpb25TdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzVXBsb2FkSW5Qcm9ncmVzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWxlVXBsb2FkU3RhdGVTZXJ2aWNlLmlzVXBsb2FkSW5Qcm9ncmVzcygpO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbFVwbG9hZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWxlVXBsb2FkU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmZpbGVVcGxvYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGVVcGxvYWRTdGF0ZVNlcnZpY2Uuc2V0VXBsb2FkSW5Qcm9ncmVzcyhmYWxzZSk7XG4gICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIHRoaXMucmVzZXRVcGxvYWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBmaWxlVmFsaWRhdGlvbnNPblRhYigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0FNYW5kYXRvcnlDb21wb25lbnQoKSkge1xuICAgICAgaWYgKHRoaXMudmFsaWRhdGVGb3JtVXBsb2FkZWREb2N1bWVudCgpKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheUZpbGVVcGxvYWRNZXNzYWdlcyhXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQuVVBMT0FEX0VSUk9SX0ZJTEVfUkVRVUlSRUQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWxlQ2hhbmdlRXZlbnQoZmlsZUlucHV0OiBhbnksIGFsbG93ZWRSZWdleD86IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBmaWxlVHlwZVJlZ2V4O1xuICAgIGlmIChhbGxvd2VkUmVnZXgpIHtcbiAgICAgIGZpbGVUeXBlUmVnZXggPSBuZXcgUmVnRXhwKGAoJHthbGxvd2VkUmVnZXgucmVwbGFjZSgvLC9nLCAnfCcpfSlgLCAnaScpO1xuICAgIH1cbiAgICBpZiAoZmlsZUlucHV0LnRhcmdldD8uZmlsZXNbMF0gJiYgIWZpbGVJbnB1dC50YXJnZXQ/LmZpbGVzWzBdPy5uYW1lPy5tYXRjaChmaWxlVHlwZVJlZ2V4KSl7XG4gICAgICB0aGlzLmludmFsaWRGaWxlRm9ybWF0KCk7XG4gICAgfSBlbHNlIGlmIChmaWxlSW5wdXQudGFyZ2V0LmZpbGVzWzBdKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZSA9IGZpbGVJbnB1dC50YXJnZXQuZmlsZXNbMF07XG4gICAgICB0aGlzLmRpc3BsYXlGaWxlVXBsb2FkTWVzc2FnZXMoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LlVQTE9BRF9XQUlUSU5HX0ZJTEVfU1RBVFVTKTtcbiAgICAgIGNvbnN0IGRvY3VtZW50VXBsb2FkOiBGb3JtRGF0YSA9IHRoaXMuYnVpbGREb2N1bWVudFVwbG9hZERhdGEodGhpcy5zZWxlY3RlZEZpbGUpO1xuICAgICAgdGhpcy5maWxlVXBsb2FkU3RhdGVTZXJ2aWNlLnNldFVwbG9hZEluUHJvZ3Jlc3ModHJ1ZSk7XG5cbiAgICAgIHRoaXMuZmlsZVVwbG9hZFN1YnNjcmlwdGlvbiA9IHRoaXMuZG9jdW1lbnRNYW5hZ2VtZW50LnVwbG9hZEZpbGUoZG9jdW1lbnRVcGxvYWQpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXN1bHREb2N1bWVudDogRG9jdW1lbnREYXRhKSA9PiB0aGlzLmhhbmRsZURvY3VtZW50VXBsb2FkUmVzdWx0KHJlc3VsdERvY3VtZW50KSxcbiAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yKSA9PiB0aGlzLmhhbmRsZURvY3VtZW50VXBsb2FkRXJyb3IoZXJyb3IpXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldFVwbG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuRmlsZURpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZmlsZVNlbGVjdEV2ZW50KCk6IHZvaWQge1xuICAgIGlmICgodGhpcy5jYXNlRmllbGQudmFsdWUgJiYgdGhpcy5jYXNlRmllbGQudmFsdWUuZG9jdW1lbnRfZmlsZW5hbWUpIHx8XG4gICAgICAodGhpcy5zZWxlY3RlZEZpbGUgJiYgdGhpcy5zZWxlY3RlZEZpbGUubmFtZSkpIHtcbiAgICAgIHRoaXMub3BlbkRpYWxvZyh0aGlzLmRpYWxvZ0NvbmZpZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbkZpbGVEaWFsb2coKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlclJlcGxhY2UoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuY29uZmlybVJlcGxhY2VSZXN1bHQgPT09ICdSZXBsYWNlJykge1xuICAgICAgdGhpcy5vcGVuRmlsZURpYWxvZygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpbnZhbGlkRmlsZUZvcm1hdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZURvY3VtZW50Rm9ybShudWxsLCBudWxsLCBudWxsKTtcbiAgICB0aGlzLmRpc3BsYXlGaWxlVXBsb2FkTWVzc2FnZXMoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LlVQTE9BRF9FUlJPUl9JTlZBTElEX0ZPUk1BVCk7XG5cbiAgICAvLyBmaXggYWN0aXZlIGZvcm0gZ3JvdXAgc28gdGhhdCBhZGRpdGlvbmFsIGF0dGFjaG1lbnRzIGluIGludmFsaWQgZm9ybWF0IGFyZSBub3QgYWNjZXB0ZWRcbiAgICB0aGlzLmZvcm1Hcm91cC5zZXRFcnJvcnMoeyBpbnZhbGlkRmlsZUZvcm1hdDogdHJ1ZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVcGxvYWRlZEZpbGVOYW1lKCk6IGFueSB7XG4gICAgaWYgKHRoaXMudXBsb2FkZWREb2N1bWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMudXBsb2FkZWREb2N1bWVudC5nZXQoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LkRPQ1VNRU5UX0ZJTEVOQU1FKS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0VXBsb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlID0gbnVsbDtcbiAgICBpZiAodGhpcy5pc0FNYW5kYXRvcnlDb21wb25lbnQoKSkge1xuICAgICAgdGhpcy51cGRhdGVEb2N1bWVudEZvcm0obnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgICB0aGlzLmRpc3BsYXlGaWxlVXBsb2FkTWVzc2FnZXMoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LlVQTE9BRF9FUlJPUl9GSUxFX1JFUVVJUkVEKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWxpZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaWxlVmFsaWRhdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNBTWFuZGF0b3J5Q29tcG9uZW50KCkpIHtcbiAgICAgIGlmICh0aGlzLmNsaWNrSW5zaWRlVGhlRG9jdW1lbnQgJiYgdGhpcy52YWxpZGF0ZUZvcm1VcGxvYWRlZERvY3VtZW50KCkgJiYgIXRoaXMuaXNVcExvYWRpbmdBRmlsZSgpKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheUZpbGVVcGxvYWRNZXNzYWdlcyhXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQuVVBMT0FEX0VSUk9SX0ZJTEVfUkVRVUlSRUQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3BlbkRpYWxvZyhkaWFsb2dDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERvY3VtZW50RGlhbG9nQ29tcG9uZW50LCBkaWFsb2dDb25maWcpO1xuICAgIHRoaXMuZGlhbG9nU3Vic2NyaXB0aW9uID0gZGlhbG9nUmVmLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5jb25maXJtUmVwbGFjZVJlc3VsdCA9IHJlc3VsdDtcbiAgICAgIHRoaXMudHJpZ2dlclJlcGxhY2UoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIERlcGVuZGluZyBvbiB0aGUgY29udGV4dCwgd2UgY2FuIGdldCB0aGUgY2FzZSB0eXBlIGFuZCBqdXJpc2RpY3Rpb24gZnJvbSBkaWZmZXJlbnQgc291cmNlc1xuICAvLyBJZiB3ZSBhcmUgcnVubmluZyBhbiBldmVudCwgdGhlIGNhc2VOb3RpZmllciB3aWxsIGhhdmUgdGhlIGN1cnJlbnQgY2FzZVxuICAvLyBJZiB3ZSBhcmUgY3JlYXRpbmcgYSBjYXNlLCB0aGUgY2FzZSBkb2Vzbid0IGV4aXN0IHlldCwgc28gdGhlIGNhc2VOb3RpZmllciBjYW4ndCBoZWxwXG4gIC8vIEluc3RlYWQgd2UgY2FuIHVzZSB0aGUgZXZlbnRUcmlnZ2VyIHRvIGdldCB0aGUgY2FzZSB0eXBlLCBhbmQgdGhlIGp1cmlzZGljdGlvbiBzZXJ2aWNlIHRvXG4gIC8vIGdldCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGp1cmlzZGljdGlvblxuICBwcml2YXRlIHN1YnNjcmliZVRvQ2FzZURldGFpbHMoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlTm90aWZpZXJTdWJzY3JpcHRpb24gPSB0aGlzLmNhc2VOb3RpZmllci5jYXNlVmlldy5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGNhc2VEZXRhaWxzOiBDYXNlVmlldykgPT4ge1xuICAgICAgICB0aGlzLmNhc2VUeXBlSWQgPSBjYXNlRGV0YWlscz8uY2FzZV90eXBlLmlkO1xuICAgICAgICB0aGlzLmp1cmlzZGljdGlvbklkID0gY2FzZURldGFpbHM/LmNhc2VfdHlwZT8uanVyaXNkaWN0aW9uPy5pZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmp1cmlzZGljdGlvblN1YnMgPSB0aGlzLmp1cmlzZGljdGlvblNlcnZpY2UuZ2V0U2VsZWN0ZWRKdXJpc2RpY3Rpb24oKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGp1cmlzZGljdGlvbikgPT4ge1xuICAgICAgICBpZiAoanVyaXNkaWN0aW9uKSB7XG4gICAgICAgICAgdGhpcy5qdXJpc2RpY3Rpb25JZCA9IGp1cmlzZGljdGlvbi5pZDtcbiAgICAgICAgICBpZiAoanVyaXNkaWN0aW9uLmN1cnJlbnRDYXNlVHlwZSkge1xuICAgICAgICAgICAgdGhpcy5jYXNlVHlwZUlkID0ganVyaXNkaWN0aW9uLmN1cnJlbnRDYXNlVHlwZS5pZFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FNYW5kYXRvcnlDb21wb25lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dCAmJiB0aGlzLmNhc2VGaWVsZC5kaXNwbGF5X2NvbnRleHQgPT09IENvbnN0YW50cy5NQU5EQVRPUlk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlGaWxlVXBsb2FkTWVzc2FnZXMoZmlsZVVwbG9hZE1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsaWQgPSBmYWxzZTtcbiAgICB0aGlzLmZpbGVVcGxvYWRNZXNzYWdlcyA9IGZpbGVVcGxvYWRNZXNzYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1VwTG9hZGluZ0FGaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbGVVcGxvYWRNZXNzYWdlcyA9PT0gV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LlVQTE9BRF9XQUlUSU5HX0ZJTEVfU1RBVFVTO1xuICB9XG4gIHByaXZhdGUgdmFsaWRhdGVGb3JtVXBsb2FkZWREb2N1bWVudCgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMudXBsb2FkZWREb2N1bWVudCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgbGV0IHZhbGlkYXRpb24gPSAhdGhpcy51cGxvYWRlZERvY3VtZW50LmdldChXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQuRE9DVU1FTlRfVVJMKS52YWxpZCAmJlxuICAgICAgIXRoaXMudXBsb2FkZWREb2N1bWVudC5nZXQoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LkRPQ1VNRU5UX0JJTkFSWV9VUkwpLnZhbGlkICYmXG4gICAgICAhdGhpcy51cGxvYWRlZERvY3VtZW50LmdldChXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQuRE9DVU1FTlRfRklMRU5BTUUpLnZhbGlkO1xuXG4gICAgaWYgKHRoaXMuc2VjdXJlTW9kZU9uKSB7XG4gICAgICB2YWxpZGF0aW9uID0gdmFsaWRhdGlvbiAmJiAhdGhpcy51cGxvYWRlZERvY3VtZW50LmdldChXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQuRE9DVU1FTlRfSEFTSCkudmFsaWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbGlkYXRpb247XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURvY3VtZW50Rm9ybSh1cmw6IHN0cmluZywgYmluYXJ5VXJsOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcsIGRvY3VtZW50SGFzaD86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkZWREb2N1bWVudC5nZXQoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LkRPQ1VNRU5UX1VSTCkuc2V0VmFsdWUodXJsKTtcbiAgICB0aGlzLnVwbG9hZGVkRG9jdW1lbnQuZ2V0KFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudC5ET0NVTUVOVF9CSU5BUllfVVJMKS5zZXRWYWx1ZShiaW5hcnlVcmwpO1xuICAgIHRoaXMudXBsb2FkZWREb2N1bWVudC5nZXQoV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LkRPQ1VNRU5UX0ZJTEVOQU1FKS5zZXRWYWx1ZShmaWxlbmFtZSk7XG4gICAgaWYgKGRvY3VtZW50SGFzaCkge1xuICAgICAgdGhpcy51cGxvYWRlZERvY3VtZW50LmdldChXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQuRE9DVU1FTlRfSEFTSCkuc2V0VmFsdWUoZG9jdW1lbnRIYXNoKTtcbiAgICB9XG4gICAgaWYodGhpcy51cGxvYWRlZERvY3VtZW50LmdldChXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQuVVBMT0FEX1RJTUVTVEFNUCkpe1xuICAgICAgdGhpcy51cGxvYWRlZERvY3VtZW50LnJlbW92ZUNvbnRyb2woV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LlVQTE9BRF9USU1FU1RBTVApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRG9jdW1lbnRGb3JtV2l0aFZhbGlkYXRvcihkb2N1bWVudDogRm9ybURvY3VtZW50KTogdm9pZCB7XG4gICAgbGV0IGRvY3VtZW50Rm9ybUdyb3VwID0ge1xuICAgICAgZG9jdW1lbnRfdXJsOiBuZXcgRm9ybUNvbnRyb2woZG9jdW1lbnQuZG9jdW1lbnRfdXJsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGRvY3VtZW50X2JpbmFyeV91cmw6IG5ldyBGb3JtQ29udHJvbChkb2N1bWVudC5kb2N1bWVudF9iaW5hcnlfdXJsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGRvY3VtZW50X2ZpbGVuYW1lOiBuZXcgRm9ybUNvbnRyb2woZG9jdW1lbnQuZG9jdW1lbnRfZmlsZW5hbWUsIFZhbGlkYXRvcnMucmVxdWlyZWQpXG4gICAgfTtcblxuICAgIGlmKGRvY3VtZW50LnVwbG9hZF90aW1lc3RhbXAgJiYgKHR5cGVvZiBkb2N1bWVudC51cGxvYWRfdGltZXN0YW1wID09PSAnc3RyaW5nJyApKXtcbiAgICAgIGRvY3VtZW50Rm9ybUdyb3VwID0ge1xuICAgICAgICAuLi5kb2N1bWVudEZvcm1Hcm91cCxcbiAgICAgICAgLi4ueyB1cGxvYWRfdGltZXN0YW1wOiBuZXcgRm9ybUNvbnRyb2woZG9jdW1lbnQudXBsb2FkX3RpbWVzdGFtcCkgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50Rm9ybUdyb3VwID0gdGhpcy5zZWN1cmVNb2RlT24gPyB7XG4gICAgICAuLi5kb2N1bWVudEZvcm1Hcm91cCxcbiAgICAgIC4uLnsgZG9jdW1lbnRfaGFzaDogbmV3IEZvcm1Db250cm9sKGRvY3VtZW50LmRvY3VtZW50X2hhc2gpIH1cbiAgICB9IDogZG9jdW1lbnRGb3JtR3JvdXA7XG5cbiAgICB0aGlzLnVwbG9hZGVkRG9jdW1lbnQgPSB0aGlzLnJlZ2lzdGVyQ29udHJvbChuZXcgRm9ybUdyb3VwKGRvY3VtZW50Rm9ybUdyb3VwKSwgdHJ1ZSkgYXMgRm9ybUdyb3VwO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEb2N1bWVudEZvcm0oZG9jdW1lbnQ6IEZvcm1Eb2N1bWVudCk6IHZvaWQge1xuICAgIGxldCBkb2N1bWVudEZvcm1Hcm91cCA9IHtcbiAgICAgIGRvY3VtZW50X3VybDogbmV3IEZvcm1Db250cm9sKGRvY3VtZW50LmRvY3VtZW50X3VybCksXG4gICAgICBkb2N1bWVudF9iaW5hcnlfdXJsOiBuZXcgRm9ybUNvbnRyb2woZG9jdW1lbnQuZG9jdW1lbnRfYmluYXJ5X3VybCksXG4gICAgICBkb2N1bWVudF9maWxlbmFtZTogbmV3IEZvcm1Db250cm9sKGRvY3VtZW50LmRvY3VtZW50X2ZpbGVuYW1lKVxuICAgIH07XG5cbiAgICBpZihkb2N1bWVudC51cGxvYWRfdGltZXN0YW1wICYmICh0eXBlb2YgZG9jdW1lbnQudXBsb2FkX3RpbWVzdGFtcCA9PT0gJ3N0cmluZycgKSl7XG4gICAgICBkb2N1bWVudEZvcm1Hcm91cCA9IHtcbiAgICAgICAgLi4uZG9jdW1lbnRGb3JtR3JvdXAsXG4gICAgICAgIC4uLnsgdXBsb2FkX3RpbWVzdGFtcDogbmV3IEZvcm1Db250cm9sKGRvY3VtZW50LnVwbG9hZF90aW1lc3RhbXApIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudEZvcm1Hcm91cCA9IHRoaXMuc2VjdXJlTW9kZU9uID8ge1xuICAgICAgLi4uZG9jdW1lbnRGb3JtR3JvdXAsXG4gICAgICAuLi57IGRvY3VtZW50X2hhc2g6IG5ldyBGb3JtQ29udHJvbChkb2N1bWVudC5kb2N1bWVudF9oYXNoKSB9XG4gICAgfSA6IGRvY3VtZW50Rm9ybUdyb3VwO1xuXG4gICAgdGhpcy51cGxvYWRlZERvY3VtZW50ID0gdGhpcy5yZWdpc3RlckNvbnRyb2wobmV3IEZvcm1Hcm91cChkb2N1bWVudEZvcm1Hcm91cCksIHRydWUpIGFzIEZvcm1Hcm91cDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JNZXNzYWdlKGVycm9yOiBIdHRwRXJyb3IpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICBjYXNlIDUwMjpcbiAgICAgICAgcmV0dXJuIFdyaXRlRG9jdW1lbnRGaWVsZENvbXBvbmVudC5VUExPQURfRVJST1JfTk9UX0FWQUlMQUJMRTtcbiAgICAgIGNhc2UgNDIyOlxuICAgICAgY2FzZSA1MDA6XG4gICAgICAgIHtcbiAgICAgICAgICBsZXQgZXJyb3JNc2cgPSBXcml0ZURvY3VtZW50RmllbGRDb21wb25lbnQuRVJST1JfVVBMT0FESU5HX0ZJTEU7XG4gICAgICAgICAgaWYgKGVycm9yPy5lcnJvcikge1xuICAgICAgICAgICAgY29uc3QgZnVsbEVycm9yID0gZXJyb3IuZXJyb3I7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IGZ1bGxFcnJvci5pbmRleE9mKCd7Jyk7XG4gICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkge1xuICAgICAgICAgICAgICBjb25zdCBqc29uID0gZnVsbEVycm9yLnN1YnN0cmluZyhzdGFydCwgZnVsbEVycm9yLmxlbmd0aCAtIDEpLnNwbGl0KCc8RU9MPicpLmpvaW4oJycpO1xuICAgICAgICAgICAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKGpzb24pO1xuICAgICAgICAgICAgICBpZiAob2JqPy5lcnJvcikge1xuICAgICAgICAgICAgICAgIGVycm9yTXNnID0gb2JqLmVycm9yO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBlcnJvck1zZztcbiAgICAgICAgfVxuICAgICAgY2FzZSA0Mjk6XG4gICAgICAgIHJldHVybiBlcnJvcj8uZXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gV3JpdGVEb2N1bWVudEZpZWxkQ29tcG9uZW50LkVSUk9SX1VQTE9BRElOR19GSUxFO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGREb2N1bWVudFVwbG9hZERhdGEoc2VsZWN0ZWRGaWxlOiBGaWxlKTogRm9ybURhdGEge1xuICAgIGNvbnN0IGRvY3VtZW50VXBsb2FkOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGRvY3VtZW50VXBsb2FkLmFwcGVuZCgnZmlsZXMnLCBzZWxlY3RlZEZpbGUsIHNlbGVjdGVkRmlsZS5uYW1lKTtcbiAgICBkb2N1bWVudFVwbG9hZC5hcHBlbmQoJ2NsYXNzaWZpY2F0aW9uJywgJ1BVQkxJQycpO1xuXG4gICAgaWYgKHRoaXMuYXBwQ29uZmlnLmdldERvY3VtZW50U2VjdXJlTW9kZSgpKSB7XG4gICAgICBjb25zdCBjYXNlVHlwZUlkID0gdGhpcy5jYXNlVHlwZUlkID8gdGhpcy5jYXNlVHlwZUlkIDogbnVsbDtcbiAgICAgIGNvbnN0IGNhc2VUeXBlSnVyaXNkaWN0aW9uSWQgPSB0aGlzLmp1cmlzZGljdGlvbklkID8gdGhpcy5qdXJpc2RpY3Rpb25JZCA6IG51bGw7XG4gICAgICBkb2N1bWVudFVwbG9hZC5hcHBlbmQoJ2Nhc2VUeXBlSWQnLCBjYXNlVHlwZUlkKTtcbiAgICAgIGRvY3VtZW50VXBsb2FkLmFwcGVuZCgnanVyaXNkaWN0aW9uSWQnLCBjYXNlVHlwZUp1cmlzZGljdGlvbklkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZG9jdW1lbnRVcGxvYWQ7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURvY3VtZW50VXBsb2FkUmVzdWx0KHJlc3VsdDogRG9jdW1lbnREYXRhKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnVwbG9hZGVkRG9jdW1lbnQpIHtcbiAgICAgIGlmICh0aGlzLnNlY3VyZU1vZGVPbikge1xuICAgICAgICB0aGlzLmNyZWF0ZURvY3VtZW50Rm9ybSh7IGRvY3VtZW50X3VybDogbnVsbCwgZG9jdW1lbnRfYmluYXJ5X3VybDogbnVsbCwgZG9jdW1lbnRfZmlsZW5hbWU6IG51bGwsIGRvY3VtZW50X2hhc2g6IG51bGwgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNyZWF0ZURvY3VtZW50Rm9ybSh7IGRvY3VtZW50X3VybDogbnVsbCwgZG9jdW1lbnRfYmluYXJ5X3VybDogbnVsbCwgZG9jdW1lbnRfZmlsZW5hbWU6IG51bGwgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZG9jdW1lbnQgPSB0aGlzLnNlY3VyZU1vZGVPbiA/IHJlc3VsdC5kb2N1bWVudHNbMF0gOiByZXN1bHQuX2VtYmVkZGVkLmRvY3VtZW50c1swXTtcblxuICAgIGlmICh0aGlzLnNlY3VyZU1vZGVPbikge1xuICAgICAgdGhpcy51cGRhdGVEb2N1bWVudEZvcm0oXG4gICAgICAgIGRvY3VtZW50Ll9saW5rcy5zZWxmLmhyZWYsXG4gICAgICAgIGRvY3VtZW50Ll9saW5rcy5iaW5hcnkuaHJlZixcbiAgICAgICAgZG9jdW1lbnQub3JpZ2luYWxEb2N1bWVudE5hbWUsXG4gICAgICAgIGRvY3VtZW50Lmhhc2hUb2tlblxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVEb2N1bWVudEZvcm0oXG4gICAgICAgIGRvY3VtZW50Ll9saW5rcy5zZWxmLmhyZWYsXG4gICAgICAgIGRvY3VtZW50Ll9saW5rcy5iaW5hcnkuaHJlZixcbiAgICAgICAgZG9jdW1lbnQub3JpZ2luYWxEb2N1bWVudE5hbWUsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMudmFsaWQgPSB0cnVlO1xuICAgIHRoaXMuZmlsZVVwbG9hZFN0YXRlU2VydmljZS5zZXRVcGxvYWRJblByb2dyZXNzKGZhbHNlKTtcblxuICAgIC8vIHJlZnJlc2ggcmVwbGFjZWQgZG9jdW1lbnQgaW5mb1xuICAgIGlmICh0aGlzLmNhc2VGaWVsZC52YWx1ZSkge1xuICAgICAgdGhpcy5jYXNlRmllbGQudmFsdWUuZG9jdW1lbnRfYmluYXJ5X3VybCA9IGRvY3VtZW50Ll9saW5rcy5iaW5hcnkuaHJlZjtcbiAgICAgIHRoaXMuY2FzZUZpZWxkLnZhbHVlLmRvY3VtZW50X2ZpbGVuYW1lID0gZG9jdW1lbnQub3JpZ2luYWxEb2N1bWVudE5hbWU7XG4gICAgICB0aGlzLmNhc2VGaWVsZC52YWx1ZS5kb2N1bWVudF91cmwgPSBkb2N1bWVudC5fbGlua3Muc2VsZi5ocmVmO1xuXG4gICAgICBpZiAodGhpcy5zZWN1cmVNb2RlT24pIHtcbiAgICAgICAgdGhpcy5jYXNlRmllbGQudmFsdWUuZG9jdW1lbnRfaGFzaCA9IGRvY3VtZW50Lmhhc2hUb2tlbjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURvY3VtZW50VXBsb2FkRXJyb3IoZXJyb3I6IEh0dHBFcnJvcik6IHZvaWQge1xuICAgIHRoaXMuZmlsZVVwbG9hZE1lc3NhZ2VzID0gdGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpO1xuICAgIHRoaXMudmFsaWQgPSBmYWxzZTtcbiAgICB0aGlzLmZpbGVVcGxvYWRTdGF0ZVNlcnZpY2Uuc2V0VXBsb2FkSW5Qcm9ncmVzcyhmYWxzZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yIGJvdHRvbS0zMCc6ICF2YWxpZH1cIj5cbiAgPGxhYmVsIFtmb3JdPVwiaWQoKVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGF0dHIuYXJpYS1sYWJlbD1cInt7Y2FzZUZpZWxkIHwgY2NkRmllbGRMYWJlbH19XCI+e3soY2FzZUZpZWxkIHwgY2NkRmllbGRMYWJlbCl9fTwvc3Bhbj5cbiAgPC9sYWJlbD5cbiAgPHNwYW4gY2xhc3M9XCJmb3JtLWhpbnRcIiAqbmdJZj1cImNhc2VGaWVsZC5oaW50X3RleHRcIj5cbiAgICA8bWFya2Rvd24+e3sgY2FzZUZpZWxkLmhpbnRfdGV4dCB8IHJweFRyYW5zbGF0ZSB9fTwvbWFya2Rvd24+XG4gIDwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgcm9sZT1cImFsZXJ0XCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2hpZGRlbl09XCIhKGZpbGVVcGxvYWRNZXNzYWdlcyAmJiAhdmFsaWQpXCI+XG4gICAge3sgZmlsZVVwbG9hZE1lc3NhZ2VzIHwgcnB4VHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cbiAgPGRpdj5cbiAgICA8IS0tPHNwYW4gKm5nSWY9XCJnZXRVcGxvYWRlZEZpbGVOYW1lKClcIiBjbGFzcz1cInRleHQtMTZcIj5GaWxlIG5hbWU6IHt7Z2V0VXBsb2FkZWRGaWxlTmFtZSgpfX08L3NwYW4+LS0+XG4gICAgPGNjZC1yZWFkLWRvY3VtZW50LWZpZWxkICpuZ0lmPVwiY2FzZUZpZWxkXCIgW2Nhc2VGaWVsZF09XCJjYXNlRmllbGRcIj48L2NjZC1yZWFkLWRvY3VtZW50LWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2IHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZSc+XG4gICAgPGRpdiBbaWRdPVwiY3JlYXRlRWxlbWVudElkKCdmaWxlSW5wdXRXcmFwcGVyJylcIiAoY2xpY2spPVwiZmlsZVNlbGVjdEV2ZW50KClcIiAoa2V5dXApPVwiZmlsZVNlbGVjdEV2ZW50KClcIj48L2Rpdj5cbiAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm90dG9tLTMwXCIgW2lkXT1cImlkKClcIiB0eXBlPVwiZmlsZVwiIChrZXlkb3duLlRhYik9XCJmaWxlVmFsaWRhdGlvbnNPblRhYigpXCIgKGNoYW5nZSk9XCJmaWxlQ2hhbmdlRXZlbnQoJGV2ZW50LCBjYXNlRmllbGQuZmllbGRfdHlwZS5yZWd1bGFyX2V4cHJlc3Npb24pXCJcbiAgICAgICAgICAgYWNjZXB0PVwie3tjYXNlRmllbGQuZmllbGRfdHlwZS5yZWd1bGFyX2V4cHJlc3Npb259fVwiICNmaWxlSW5wdXQvPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgYm90dG9tLTMwXCI+XG4gIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiQ2FuY2VsIHVwbG9hZFwiIChjbGljayk9XCJjYW5jZWxVcGxvYWQoKVwiIFtkaXNhYmxlZF09XCIhaXNVcGxvYWRJblByb2dyZXNzKClcIj57eydDYW5jZWwgdXBsb2FkJyB8IHJweFRyYW5zbGF0ZX19PC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|