mis-crystal-design-system 18.2.0 → 18.2.1
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/datepicker_v2/tz-datepicker.directive.d.ts +2 -2
- package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +2 -2
- package/esm2022/table/actions-cell/actions-cell.component.mjs +8 -3
- package/esm2022/table/table.component.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-table.mjs +8 -3
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/package.json +7 -7
- package/specificdatepicker/tz-specificdatepicker.directive.d.ts +2 -2
|
@@ -12,8 +12,8 @@ export declare class TzDatepickerDirective implements OnInit {
|
|
|
12
12
|
selectedDate: import("@angular/core").InputSignal<string>;
|
|
13
13
|
datesDisabled: import("@angular/core").InputSignal<string[]>;
|
|
14
14
|
dateMessages: import("@angular/core").InputSignal<IDatePickerToastText[]>;
|
|
15
|
-
positionX: import("@angular/core").InputSignal<"start" | "
|
|
16
|
-
positionY: import("@angular/core").InputSignal<"
|
|
15
|
+
positionX: import("@angular/core").InputSignal<"start" | "center" | "end">;
|
|
16
|
+
positionY: import("@angular/core").InputSignal<"center" | "top" | "bottom">;
|
|
17
17
|
offsetX: import("@angular/core").InputSignal<number>;
|
|
18
18
|
offsetY: import("@angular/core").InputSignal<number>;
|
|
19
19
|
allowBookingOnDisabledDay: import("@angular/core").InputSignal<boolean>;
|
|
@@ -13,8 +13,8 @@ export declare class TzDaterangepickerDirective {
|
|
|
13
13
|
datesDisabled: import("@angular/core").InputSignal<string[]>;
|
|
14
14
|
selectedRangeLabel: import("@angular/core").InputSignal<string>;
|
|
15
15
|
dateMessages: import("@angular/core").InputSignal<IDatePickerToastText[]>;
|
|
16
|
-
positionX: import("@angular/core").InputSignal<"start" | "
|
|
17
|
-
positionY: import("@angular/core").InputSignal<"
|
|
16
|
+
positionX: import("@angular/core").InputSignal<"start" | "center" | "end">;
|
|
17
|
+
positionY: import("@angular/core").InputSignal<"center" | "top" | "bottom">;
|
|
18
18
|
offsetX: import("@angular/core").InputSignal<number>;
|
|
19
19
|
offsetY: import("@angular/core").InputSignal<number>;
|
|
20
20
|
dateChange: import("@angular/core").OutputEmitterRef<ISelectedDatesConfig>;
|
|
@@ -332,8 +332,13 @@ export class ActionsCellComponent {
|
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
334
|
onClick(event) {
|
|
335
|
-
|
|
336
|
-
|
|
335
|
+
let newValue;
|
|
336
|
+
if (this.actionType() === 'row-collapse') {
|
|
337
|
+
newValue = !this.currentState();
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
newValue = event && typeof event === 'object' ? event.value : event;
|
|
341
|
+
}
|
|
337
342
|
this.currentState.set(newValue);
|
|
338
343
|
this.actionClick.emit({
|
|
339
344
|
actionType: this.actionType(),
|
|
@@ -387,4 +392,4 @@ export class ActionsCellComponent {
|
|
|
387
392
|
args: ["document:click"]
|
|
388
393
|
}] }); })();
|
|
389
394
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActionsCellComponent, { className: "ActionsCellComponent" }); })();
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL2FjdGlvbnMtY2VsbC9hY3Rpb25zLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvYWN0aW9ucy1jZWxsL2FjdGlvbnMtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFlBQVksRUFBYyxTQUFTLEVBQTRDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hKLE9BQU8sRUFBRSxzQkFBc0IsRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7SUNDakQsK0JBS0M7SUFEQyxvTkFBUyxxQ0FBMkIsS0FBQztJQUVyQywwQkFBb0U7SUFDdEUsaUJBQU07Ozs7SUFKSixnRkFBMEM7SUFHckMsY0FBaUI7SUFBQyxBQUFsQixvREFBaUIsc0JBQW1COzs7SUFQN0MsOEJBQThEO0lBQzVELDJFQUtDO0lBR0gsaUJBQU07OztJQVBlLGNBQWtCO0lBQUEsQUFBbEIsOENBQWtCLHNDQUFzQjs7OztJQVczRCxBQURGLCtCQUFrRSxpQkFDcUM7SUFBdEQsbUxBQVMsNkJBQXNCLEtBQUM7O0lBQzdFLCtCQUE0RDtJQUcxRCxBQURBLEFBREEsNkJBQTJDLGlCQUNDLGlCQUNBO0lBR2xELEFBREUsQUFERSxpQkFBTSxFQUNGLEVBQ0Y7Ozs7SUFJSixBQURGLCtCQUFrRSx1QkFDNEQ7SUFBbkYsd01BQWUsc0JBQWUsS0FBQztJQUMxRSxBQUQrSCxpQkFBZSxFQUN4STs7O0lBRFUsY0FBMEI7SUFBaUMsQUFBM0QsK0NBQTBCLHdF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O1lBMkUvQyxlQUFlO2tCQURkLFlBQVk7bUJBQUMsZ0JBQWdCOztrRkFqRm5CLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBIb3N0TGlzdGVuZXIsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIE9uRGVzdHJveSwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcbmltcG9ydCB7IEFjdGlvbkl0ZW0gfSBmcm9tIFwiLi4vdGFibGUuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtYWN0aW9ucy1jZWxsXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vYWN0aW9ucy1jZWxsLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsOiBcIi4vYWN0aW9ucy1jZWxsLmNvbXBvbmVudC5jc3NcIlxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25zQ2VsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY2VsbERhdGEgPSBpbnB1dDxhbnk+KCk7XG4gIGNvbmZpZyA9IGlucHV0PGFueT4oKTtcblxuICBhY3Rpb25DbGljayA9IG91dHB1dDx7IGl0ZW0/OiBBY3Rpb25JdGVtOyBkYXRhPzogYW55LCBhY3Rpb25UeXBlPzogc3RyaW5nLCB2YWx1ZT86IGFueSB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duTWVudScsIHsgc3RhdGljOiBmYWxzZSB9KSBkcm9wZG93bk1lbnU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duVHJpZ2dlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBkcm9wZG93blRyaWdnZXI6IEVsZW1lbnRSZWY7XG5cbiAgaXNEcm9wZG93bk9wZW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBhY3Rpb25JdGVtcyA9IHNpZ25hbDxBY3Rpb25JdGVtW10+KFtdKTtcbiAgYWN0aW9uVHlwZSA9IHNpZ25hbDxcImlubGluZVwiIHwgXCJkcm9wZG93blwiIHwgXCJjaGVja2JveFwiIHwgXCJyb3ctY29sbGFwc2VcIj4oXCJpbmxpbmVcIik7XG4gIGFjdGlvbiA9IHNpZ25hbDwoKGRhdGE6IGFueSkgPT4gdm9pZCkgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGRhdGEgPSBzaWduYWw8YW55Pih1bmRlZmluZWQpO1xuICBkaXNhYmxlID0gc2lnbmFsPCgoZGF0YTogYW55KSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY3VycmVudFN0YXRlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBfc3R5bGUgPSBzaWduYWw8YW55Pih7fSk7XG4gIGNvbnRhaW5lclN0eWxlID0gc2lnbmFsPGFueT4oe30pO1xuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcoKSkge1xuICAgICAgdGhpcy5hY3Rpb25JdGVtcy5zZXQodGhpcy5jb25maWcoKS5hY3Rpb25JdGVtcyk7XG4gICAgICB0aGlzLmFjdGlvblR5cGUuc2V0KHRoaXMuY29uZmlnKCkuYWN0aW9uVHlwZSk7XG4gICAgICB0aGlzLl9zdHlsZS5zZXQodGhpcy5jb25maWcoKS5zdHlsZSk7XG4gICAgICB0aGlzLmFjdGlvbi5zZXQodGhpcy5jb25maWcoKS5hY3Rpb24pO1xuICAgICAgdGhpcy5kaXNhYmxlLnNldCh0aGlzLmNvbmZpZygpLmRpc2FibGUpO1xuICAgICAgdGhpcy5wcm9jZXNzU3R5bGUoKTtcbiAgICB9XG4gIFxuICAgIGlmICh0aGlzLmNlbGxEYXRhKCkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRTdGF0ZXM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge1xuICAgICAgICAnY2hlY2tib3gnOiBmYWxzZSxcbiAgICAgICAgJ3Jvdy1jb2xsYXBzZSc6IHRydWUsXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMuYWN0aW9uVHlwZSgpIGluIGRlZmF1bHRTdGF0ZXMpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U3RhdGUuc2V0KHR5cGVvZiB0aGlzLmNlbGxEYXRhKCkgPT09ICdib29sZWFuJyA/IHRoaXMuY2VsbERhdGEoKSA6IGRlZmF1bHRTdGF0ZXNbdGhpcy5hY3Rpb25UeXBlKCldKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0YS5zZXQodGhpcy5jZWxsRGF0YSgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc1N0eWxlKCk6IHZvaWQge1xuICAgIC8vIFJlbW92ZSB3aWR0aCBmcm9tIHN0eWxlIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRhYmxlIGNvbHVtbiB3aWR0aFxuICAgIGNvbnN0IHsgd2lkdGgsIC4uLnJlc3RTdHlsZSB9ID0gdGhpcy5fc3R5bGUoKTtcbiAgICB0aGlzLmNvbnRhaW5lclN0eWxlLnNldChyZXN0U3R5bGUpO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhpdGVtOiBBY3Rpb25JdGVtLCBldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIC8vIENoZWNrIHBlcm1pc3Npb25zIGJlZm9yZSBleGVjdXRpbmcgYWN0aW9uXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZChpdGVtKSkgcmV0dXJuO1xuXG4gICAgLy8gRXhlY3V0ZSBhY3Rpb24gb25seSBpZiBwZXJtaXR0ZWRcbiAgICBpZiAoaXRlbS5hY3Rpb24pIHtcbiAgICAgIGl0ZW0uYWN0aW9uKHRoaXMuZGF0YSgpKTtcbiAgICB9XG5cbiAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoeyBpdGVtIH0pO1xuICB9XG5cbiAgdHJhY2tCeUFjdGlvbihpbmRleDogbnVtYmVyLCBpdGVtOiBBY3Rpb25JdGVtKTogc3RyaW5nIHtcbiAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgfVxuXG4gIGlzU3ZnRmlsZShpY29uUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpY29uUGF0aCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBpY29uUGF0aC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwiLnN2Z1wiKSB8fCBpY29uUGF0aC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwiYXNzZXRzL2ljb25zL1wiKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoXCJkb2N1bWVudDpjbGlja1wiKVxuICBvbkRvY3VtZW50Q2xpY2soKSB7XG4gICAgaWYgKHRoaXMuaXNEcm9wZG93bk9wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlRHJvcGRvd24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgXG4gICAgaWYgKHRoaXMuaXNEcm9wZG93bk9wZW4oKSkge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRyb3Bkb3duVHJpZ2dlciB8fCAhdGhpcy5kcm9wZG93bk1lbnUpIHJldHVybjtcblxuICAgIC8vIENsb3NlIGFsbCBzdWJtZW51cyB3aGVuIG9wZW5pbmcgbWFpbiBtZW51XG4gICAgdGhpcy5hY3Rpb25JdGVtcygpLmZvckVhY2goKGl0ZW06IGFueSkgPT4gKGl0ZW0uc2hvd1N1Ym1lbnUgPSBmYWxzZSkpO1xuXG4gICAgY29uc3QgcG9zaXRpb25zID0gdGhpcy5nZXREcm9wZG93blBvc2l0aW9ucygpO1xuICAgIFxuICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXlcbiAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5kcm9wZG93blRyaWdnZXIpXG4gICAgICAgIC53aXRoUG9zaXRpb25zKHBvc2l0aW9ucylcbiAgICAgICAgLndpdGhQdXNoKHRydWUpLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKVxuICAgIH0pO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5kcm9wZG93bk1lbnUsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VEcm9wZG93bigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5pc0Ryb3Bkb3duT3Blbi5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREcm9wZG93blBvc2l0aW9ucygpOiBDb25uZWN0aW9uUG9zaXRpb25QYWlyW10ge1xuICAgIC8vIFVzZSBDREsgT3ZlcmxheSdzIGZsZXhpYmxlIHBvc2l0aW9uaW5nIC0gaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGNob29zZSB0aGUgYmVzdCBwb3NpdGlvblxuICAgIHJldHVybiBbXG4gICAgICAvLyBQcmltYXJ5IHBvc2l0aW9uOiBiZWxvdyBhbmQgYWxpZ25lZCB0byBlbmQgKHJpZ2h0KVxuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoXG4gICAgICAgIHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICdib3R0b20nIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgICAgICAgMCwgNFxuICAgICAgKSxcbiAgICAgIC8vIEZhbGxiYWNrIHBvc2l0aW9uOiBhYm92ZSBhbmQgYWxpZ25lZCB0byBlbmQgKHJpZ2h0KVxuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoXG4gICAgICAgIHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICd0b3AnIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ2JvdHRvbScgfSxcbiAgICAgICAgMCwgLTRcbiAgICAgICksXG4gICAgICAvLyBGYWxsYmFjayBwb3NpdGlvbjogYmVsb3cgYW5kIGFsaWduZWQgdG8gc3RhcnQgKGxlZnQpXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnYm90dG9tJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgICAgICAgMCwgNFxuICAgICAgKSxcbiAgICAgIC8vIEZhbGxiYWNrIHBvc2l0aW9uOiBhYm92ZSBhbmQgYWxpZ25lZCB0byBzdGFydCAobGVmdClcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICd0b3AnIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9LFxuICAgICAgICAwLCAtNFxuICAgICAgKVxuICAgIF07XG4gIH1cblxuICBvbkRyb3Bkb3duSXRlbUNsaWNrKGl0ZW06IGFueSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKGl0ZW0pKSByZXR1cm47XG5cbiAgICBpZiAoaXRlbT8uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgLy8gVG9nZ2xlIHN1Ym1lbnVcbiAgICAgIGl0ZW0uc2hvd1N1Ym1lbnUgPSAhaXRlbS5zaG93U3VibWVudTtcbiAgICAgIC8vIE9wdGlvbmFsbHkgY2xvc2Ugb3RoZXIgc3VibWVudXNcbiAgICAgIHRoaXMuYWN0aW9uSXRlbXMoKS5mb3JFYWNoKChpOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGkgIT09IGl0ZW0pIGkuc2hvd1N1Ym1lbnUgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgYWN0aW9uXG4gICAgICBpZiAoaXRlbS5hY3Rpb24pIGl0ZW0uYWN0aW9uKHRoaXMuZGF0YSgpKTtcbiAgICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7IGl0ZW0sIGRhdGE6IHRoaXMuZGF0YSgpIH0pO1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7IC8vIE9ubHkgY2xvc2UgaWYgYWN0aW9uIHdhcyBleGVjdXRlZFxuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2soZXZlbnQ/OiBhbnkpOiB2b2lke1xuICAgIC8vIEhhbmRsZSBjaGVja2JveCB2YWx1ZSAtIGV2ZW50IG1pZ2h0IGJlIHt2YWx1ZTogdHJ1ZX0gb3IganVzdCB0cnVlXG4gICAgY29uc3QgbmV3VmFsdWUgPSBldmVudCAmJiB0eXBlb2YgZXZlbnQgPT09ICdvYmplY3QnID8gZXZlbnQudmFsdWUgOiBldmVudDtcbiAgICB0aGlzLmN1cnJlbnRTdGF0ZS5zZXQobmV3VmFsdWUpO1xuICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7IFxuICAgICAgYWN0aW9uVHlwZTogdGhpcy5hY3Rpb25UeXBlKCksXG4gICAgICB2YWx1ZTogbmV3VmFsdWVcbiAgICB9KTtcbiAgfVxuXG4gIGlzRGlzYWJsZWQoaXRlbTogQWN0aW9uSXRlbSk6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgaXRlbS5kaXNhYmxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBpdGVtLmRpc2FibGUodGhpcy5kYXRhKCkpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgXG59XG4iLCI8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jZWxsLWNvbnRhaW5lclwiIFtuZ1N0eWxlXT1cImNvbnRhaW5lclN0eWxlKClcIj5cbiAgPCEtLSBJbmxpbmUgQWN0aW9ucyAtLT5cbiAgPGRpdiAqbmdJZj1cImFjdGlvblR5cGUoKSA9PT0gJ2lubGluZSdcIiBjbGFzcz1cImlubGluZS1hY3Rpb25zXCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWN0aW9uSXRlbXMoKTsgdHJhY2tCeTogdHJhY2tCeUFjdGlvblwiXG4gICAgICBjbGFzcz1cImFjdGlvbi1pdGVtXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGlzRGlzYWJsZWQoaXRlbSkgfVwiXG4gICAgICAoY2xpY2spPVwib25BY3Rpb25DbGljayhpdGVtLCAkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pY29uXCIgW2FsdF09XCJpdGVtLmxhYmVsXCIgY2xhc3M9XCJhY3Rpb24taWNvbi1zdmdcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIERyb3Bkb3duIEFjdGlvbnMgLS0+XG4gIDxkaXYgKm5nSWY9XCJhY3Rpb25UeXBlKCkgPT09ICdkcm9wZG93bidcIiBjbGFzcz1cImRyb3Bkb3duLWFjdGlvbnNcIj5cbiAgICA8ZGl2ICNkcm9wZG93blRyaWdnZXIgY2xhc3M9XCJkcm9wZG93bi10cmlnZ2VyXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudClcIiB0aXRsZT1cIk1vcmUgYWN0aW9uc1wiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjEwXCIgY3k9XCI0XCIgcj1cIjJcIiBmaWxsPVwiIzMzM1wiIC8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMFwiIGN5PVwiMTBcIiByPVwiMlwiIGZpbGw9XCIjMzMzXCIgLz5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjEwXCIgY3k9XCIxNlwiIHI9XCIyXCIgZmlsbD1cIiMzMzNcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ2hlY2tib3ggQWN0aW9ucyAtLT5cbiAgPGRpdiAqbmdJZj1cImFjdGlvblR5cGUoKSA9PT0gJ2NoZWNrYm94J1wiIGNsYXNzPVwiY2hlY2tib3gtYWN0aW9uc1wiPlxuICAgIDxtaXMtY2hlY2tib3ggW2NoZWNrZWRdPVwiY3VycmVudFN0YXRlKClcIiAodmFsdWVDaGFuZ2UpPVwib25DbGljaygkZXZlbnQpXCIgW2Rpc2FibGVkXT1cImRpc2FibGUoKSA/IGRpc2FibGUoKShkYXRhKCkpIDogZmFsc2VcIj4gPC9taXMtY2hlY2tib3g+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gQ29sbGFwc2UgLyBFeHBhbmQgQWN0aW9ucyAtLT5cbjxkaXYgKm5nSWY9XCJhY3Rpb25UeXBlKCkgPT09ICdyb3ctY29sbGFwc2UnXCIgY2xhc3M9XCJjb2xsYXBzZS10b2dnbGUtYWN0aW9uXCI+XG4gIDxkaXYgY2xhc3M9XCJjb2xsYXBzZS1pY29uXCIgKGNsaWNrKT1cIm9uQ2xpY2soJGV2ZW50KVwiIFt0aXRsZV09XCJjdXJyZW50U3RhdGUoKSA/ICdFeHBhbmQnIDogJ0NvbGxhcHNlJ1wiPlxuICAgIDxzdmcgKm5nSWY9XCJjdXJyZW50U3RhdGUoKVwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgIDxwYXRoIGQ9XCJNNyAxMGw1IDUgNS01XCIgc3Ryb2tlPVwiIzBEMTMyMVwiIHN0cm9rZS13aWR0aD1cIjJcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgPC9zdmc+XG4gICAgPHN2ZyAqbmdJZj1cIiFjdXJyZW50U3RhdGUoKVwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgIDxwYXRoIGQ9XCJNNyAxNGw1LTUgNSA1XCIgc3Ryb2tlPVwiIzBEMTMyMVwiIHN0cm9rZS13aWR0aD1cIjJcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgPC9zdmc+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gQ0RLIE92ZXJsYXkgVGVtcGxhdGUgZm9yIERyb3Bkb3duIE1lbnUgLS0+XG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duTWVudT5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUtb3ZlcmxheVwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudS1pdGVtXCJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFjdGlvbkl0ZW1zKClcIlxuICAgICAgKGNsaWNrKT1cIm9uRHJvcGRvd25JdGVtQ2xpY2soaXRlbSwgJGV2ZW50KVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBpc0Rpc2FibGVkKGl0ZW0pIH1cIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGg7IGVsc2Ugbm9DaGlsZHJlblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWljb25cIiAqbmdJZj1cIml0ZW0uaWNvblwiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLmljb25cIiAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24tbGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ym1lbnUtYXJyb3dcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgPHBhdGggZD1cIk05IDZMMTUgMTJMOSAxOFwiIHN0cm9rZT1cIiMwRDEzMjFcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDwhLS0gRFlOQU1JQyBTVUJNRU5VIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tc3VibWVudVwiICpuZ0lmPVwiaXRlbS5zaG93U3VibWVudVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudS1pdGVtXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGlzRGlzYWJsZWQoY2hpbGQpIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRHJvcGRvd25JdGVtQ2xpY2soY2hpbGQsICRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24taWNvblwiICpuZ0lmPVwiY2hpbGQuaWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY2hpbGQuaWNvblwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsXCI+e3sgY2hpbGQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9DaGlsZHJlbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pY29uXCIgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
395
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL2FjdGlvbnMtY2VsbC9hY3Rpb25zLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvYWN0aW9ucy1jZWxsL2FjdGlvbnMtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFlBQVksRUFBYyxTQUFTLEVBQTRDLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hKLE9BQU8sRUFBRSxzQkFBc0IsRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7SUNDakQsK0JBS0M7SUFEQyxvTkFBUyxxQ0FBMkIsS0FBQztJQUVyQywwQkFBb0U7SUFDdEUsaUJBQU07Ozs7SUFKSixnRkFBMEM7SUFHckMsY0FBaUI7SUFBQyxBQUFsQixvREFBaUIsc0JBQW1COzs7SUFQN0MsOEJBQThEO0lBQzVELDJFQUtDO0lBR0gsaUJBQU07OztJQVBlLGNBQWtCO0lBQUEsQUFBbEIsOENBQWtCLHNDQUFzQjs7OztJQVczRCxBQURGLCtCQUFrRSxpQkFDcUM7SUFBdEQsbUxBQVMsNkJBQXNCLEtBQUM7O0lBQzdFLCtCQUE0RDtJQUcxRCxBQURBLEFBREEsNkJBQTJDLGlCQUNDLGlCQUNBO0lBR2xELEFBREUsQUFERSxpQkFBTSxFQUNGLEVBQ0Y7Ozs7SUFJSixBQURGLCtCQUFrRSx1QkFDNEQ7SUFBbkYsd01BQWUsc0JBQWUsS0FBQztJQUMxRSxBQUQrSCxpQkFBZSxFQUN4STs7O0lBRFUsY0FBMEI7SUFBaUMsQUFBM0QsK0NBQTBCLHdF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Qjt1RUFVa0IsWUFBWTtrQkFBekQsU0FBUzttQkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ0ssZUFBZTtrQkFBL0QsU0FBUzttQkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUEyRS9DLGVBQWU7a0JBRGQsWUFBWTttQkFBQyxnQkFBZ0I7O2tGQWpGbkIsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgT25EZXN0cm95LCBpbnB1dCwgb3V0cHV0LCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ29ubmVjdGlvblBvc2l0aW9uUGFpciwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHsgQWN0aW9uSXRlbSB9IGZyb20gXCIuLi90YWJsZS5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1hY3Rpb25zLWNlbGxcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9hY3Rpb25zLWNlbGwuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmw6IFwiLi9hY3Rpb25zLWNlbGwuY29tcG9uZW50LmNzc1wiXG59KVxuZXhwb3J0IGNsYXNzIEFjdGlvbnNDZWxsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjZWxsRGF0YSA9IGlucHV0PGFueT4oKTtcbiAgY29uZmlnID0gaW5wdXQ8YW55PigpO1xuXG4gIGFjdGlvbkNsaWNrID0gb3V0cHV0PHsgaXRlbT86IEFjdGlvbkl0ZW07IGRhdGE/OiBhbnksIGFjdGlvblR5cGU/OiBzdHJpbmcsIHZhbHVlPzogYW55IH0+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25NZW51JywgeyBzdGF0aWM6IGZhbHNlIH0pIGRyb3Bkb3duTWVudTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25UcmlnZ2VyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRyb3Bkb3duVHJpZ2dlcjogRWxlbWVudFJlZjtcblxuICBpc0Ryb3Bkb3duT3BlbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGFjdGlvbkl0ZW1zID0gc2lnbmFsPEFjdGlvbkl0ZW1bXT4oW10pO1xuICBhY3Rpb25UeXBlID0gc2lnbmFsPFwiaW5saW5lXCIgfCBcImRyb3Bkb3duXCIgfCBcImNoZWNrYm94XCIgfCBcInJvdy1jb2xsYXBzZVwiPihcImlubGluZVwiKTtcbiAgYWN0aW9uID0gc2lnbmFsPCgoZGF0YTogYW55KSA9PiB2b2lkKSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgZGF0YSA9IHNpZ25hbDxhbnk+KHVuZGVmaW5lZCk7XG4gIGRpc2FibGUgPSBzaWduYWw8KChkYXRhOiBhbnkpID0+IGJvb2xlYW4pIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjdXJyZW50U3RhdGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF9zdHlsZSA9IHNpZ25hbDxhbnk+KHt9KTtcbiAgY29udGFpbmVyU3R5bGUgPSBzaWduYWw8YW55Pih7fSk7XG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZygpKSB7XG4gICAgICB0aGlzLmFjdGlvbkl0ZW1zLnNldCh0aGlzLmNvbmZpZygpLmFjdGlvbkl0ZW1zKTtcbiAgICAgIHRoaXMuYWN0aW9uVHlwZS5zZXQodGhpcy5jb25maWcoKS5hY3Rpb25UeXBlKTtcbiAgICAgIHRoaXMuX3N0eWxlLnNldCh0aGlzLmNvbmZpZygpLnN0eWxlKTtcbiAgICAgIHRoaXMuYWN0aW9uLnNldCh0aGlzLmNvbmZpZygpLmFjdGlvbik7XG4gICAgICB0aGlzLmRpc2FibGUuc2V0KHRoaXMuY29uZmlnKCkuZGlzYWJsZSk7XG4gICAgICB0aGlzLnByb2Nlc3NTdHlsZSgpO1xuICAgIH1cbiAgXG4gICAgaWYgKHRoaXMuY2VsbERhdGEoKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZGVmYXVsdFN0YXRlczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7XG4gICAgICAgICdjaGVja2JveCc6IGZhbHNlLFxuICAgICAgICAncm93LWNvbGxhcHNlJzogdHJ1ZSxcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5hY3Rpb25UeXBlKCkgaW4gZGVmYXVsdFN0YXRlcykge1xuICAgICAgICB0aGlzLmN1cnJlbnRTdGF0ZS5zZXQodHlwZW9mIHRoaXMuY2VsbERhdGEoKSA9PT0gJ2Jvb2xlYW4nID8gdGhpcy5jZWxsRGF0YSgpIDogZGVmYXVsdFN0YXRlc1t0aGlzLmFjdGlvblR5cGUoKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYXRhLnNldCh0aGlzLmNlbGxEYXRhKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3R5bGUoKTogdm9pZCB7XG4gICAgLy8gUmVtb3ZlIHdpZHRoIGZyb20gc3R5bGUgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggdGFibGUgY29sdW1uIHdpZHRoXG4gICAgY29uc3QgeyB3aWR0aCwgLi4ucmVzdFN0eWxlIH0gPSB0aGlzLl9zdHlsZSgpO1xuICAgIHRoaXMuY29udGFpbmVyU3R5bGUuc2V0KHJlc3RTdHlsZSk7XG4gIH1cblxuICBvbkFjdGlvbkNsaWNrKGl0ZW06IEFjdGlvbkl0ZW0sIGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgLy8gQ2hlY2sgcGVybWlzc2lvbnMgYmVmb3JlIGV4ZWN1dGluZyBhY3Rpb25cbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKGl0ZW0pKSByZXR1cm47XG5cbiAgICAvLyBFeGVjdXRlIGFjdGlvbiBvbmx5IGlmIHBlcm1pdHRlZFxuICAgIGlmIChpdGVtLmFjdGlvbikge1xuICAgICAgaXRlbS5hY3Rpb24odGhpcy5kYXRhKCkpO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7IGl0ZW0gfSk7XG4gIH1cblxuICB0cmFja0J5QWN0aW9uKGluZGV4OiBudW1iZXIsIGl0ZW06IEFjdGlvbkl0ZW0pOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLnZhbHVlO1xuICB9XG5cbiAgaXNTdmdGaWxlKGljb25QYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWljb25QYXRoKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGljb25QYXRoLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCIuc3ZnXCIpIHx8IGljb25QYXRoLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJhc3NldHMvaWNvbnMvXCIpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihcImRvY3VtZW50OmNsaWNrXCIpXG4gIG9uRG9jdW1lbnRDbGljaygpIHtcbiAgICBpZiAodGhpcy5pc0Ryb3Bkb3duT3BlbigpKSB7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVEcm9wZG93bihldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBcbiAgICBpZiAodGhpcy5pc0Ryb3Bkb3duT3BlbigpKSB7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZHJvcGRvd25UcmlnZ2VyIHx8ICF0aGlzLmRyb3Bkb3duTWVudSkgcmV0dXJuO1xuXG4gICAgLy8gQ2xvc2UgYWxsIHN1Ym1lbnVzIHdoZW4gb3BlbmluZyBtYWluIG1lbnVcbiAgICB0aGlzLmFjdGlvbkl0ZW1zKCkuZm9yRWFjaCgoaXRlbTogYW55KSA9PiAoaXRlbS5zaG93U3VibWVudSA9IGZhbHNlKSk7XG5cbiAgICBjb25zdCBwb3NpdGlvbnMgPSB0aGlzLmdldERyb3Bkb3duUG9zaXRpb25zKCk7XG4gICAgXG4gICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheVxuICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmRyb3Bkb3duVHJpZ2dlcilcbiAgICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKVxuICAgICAgICAud2l0aFB1c2godHJ1ZSksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgfSk7XG5cbiAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpO1xuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmRyb3Bkb3duTWVudSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHBvcnRhbCk7XG5cbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4uc2V0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGdldERyb3Bkb3duUG9zaXRpb25zKCk6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSB7XG4gICAgLy8gVXNlIENESyBPdmVybGF5J3MgZmxleGlibGUgcG9zaXRpb25pbmcgLSBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgY2hvb3NlIHRoZSBiZXN0IHBvc2l0aW9uXG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIFByaW1hcnkgcG9zaXRpb246IGJlbG93IGFuZCBhbGlnbmVkIHRvIGVuZCAocmlnaHQpXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ2JvdHRvbScgfSxcbiAgICAgICAgeyBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgICAgICAwLCA0XG4gICAgICApLFxuICAgICAgLy8gRmFsbGJhY2sgcG9zaXRpb246IGFib3ZlIGFuZCBhbGlnbmVkIHRvIGVuZCAocmlnaHQpXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ3RvcCcgfSxcbiAgICAgICAgeyBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9LFxuICAgICAgICAwLCAtNFxuICAgICAgKSxcbiAgICAgIC8vIEZhbGxiYWNrIHBvc2l0aW9uOiBiZWxvdyBhbmQgYWxpZ25lZCB0byBzdGFydCAobGVmdClcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgICAgICAwLCA0XG4gICAgICApLFxuICAgICAgLy8gRmFsbGJhY2sgcG9zaXRpb246IGFib3ZlIGFuZCBhbGlnbmVkIHRvIHN0YXJ0IChsZWZ0KVxuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoXG4gICAgICAgIHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ3RvcCcgfSxcbiAgICAgICAgeyBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICdib3R0b20nIH0sXG4gICAgICAgIDAsIC00XG4gICAgICApXG4gICAgXTtcbiAgfVxuXG4gIG9uRHJvcGRvd25JdGVtQ2xpY2soaXRlbTogYW55LCBldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICh0aGlzLmlzRGlzYWJsZWQoaXRlbSkpIHJldHVybjtcblxuICAgIGlmIChpdGVtPy5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAvLyBUb2dnbGUgc3VibWVudVxuICAgICAgaXRlbS5zaG93U3VibWVudSA9ICFpdGVtLnNob3dTdWJtZW51O1xuICAgICAgLy8gT3B0aW9uYWxseSBjbG9zZSBvdGhlciBzdWJtZW51c1xuICAgICAgdGhpcy5hY3Rpb25JdGVtcygpLmZvckVhY2goKGk6IGFueSkgPT4ge1xuICAgICAgICBpZiAoaSAhPT0gaXRlbSkgaS5zaG93U3VibWVudSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgIGlmIChpdGVtLmFjdGlvbikgaXRlbS5hY3Rpb24odGhpcy5kYXRhKCkpO1xuICAgICAgdGhpcy5hY3Rpb25DbGljay5lbWl0KHsgaXRlbSwgZGF0YTogdGhpcy5kYXRhKCkgfSk7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTsgLy8gT25seSBjbG9zZSBpZiBhY3Rpb24gd2FzIGV4ZWN1dGVkXG4gICAgfVxuICB9XG5cbiAgb25DbGljayhldmVudD86IGFueSk6IHZvaWR7XG4gICAgbGV0IG5ld1ZhbHVlOiBib29sZWFuO1xuICAgIGlmICh0aGlzLmFjdGlvblR5cGUoKSA9PT0gJ3Jvdy1jb2xsYXBzZScpIHtcbiAgICAgIG5ld1ZhbHVlID0gIXRoaXMuY3VycmVudFN0YXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gZXZlbnQgJiYgdHlwZW9mIGV2ZW50ID09PSAnb2JqZWN0JyA/IGV2ZW50LnZhbHVlIDogZXZlbnQ7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50U3RhdGUuc2V0KG5ld1ZhbHVlKTtcbiAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoeyBcbiAgICAgIGFjdGlvblR5cGU6IHRoaXMuYWN0aW9uVHlwZSgpLFxuICAgICAgdmFsdWU6IG5ld1ZhbHVlXG4gICAgfSk7XG4gIH1cblxuICBpc0Rpc2FibGVkKGl0ZW06IEFjdGlvbkl0ZW0pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0uZGlzYWJsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gaXRlbS5kaXNhYmxlKHRoaXMuZGF0YSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIFxufVxuIiwiPGRpdiBjbGFzcz1cImFjdGlvbnMtY2VsbC1jb250YWluZXJcIiBbbmdTdHlsZV09XCJjb250YWluZXJTdHlsZSgpXCI+XG4gIDwhLS0gSW5saW5lIEFjdGlvbnMgLS0+XG4gIDxkaXYgKm5nSWY9XCJhY3Rpb25UeXBlKCkgPT09ICdpbmxpbmUnXCIgY2xhc3M9XCJpbmxpbmUtYWN0aW9uc1wiPlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFjdGlvbkl0ZW1zKCk7IHRyYWNrQnk6IHRyYWNrQnlBY3Rpb25cIlxuICAgICAgY2xhc3M9XCJhY3Rpb24taXRlbVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBpc0Rpc2FibGVkKGl0ZW0pIH1cIlxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soaXRlbSwgJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGltZyBbc3JjXT1cIml0ZW0uaWNvblwiIFthbHRdPVwiaXRlbS5sYWJlbFwiIGNsYXNzPVwiYWN0aW9uLWljb24tc3ZnXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBEcm9wZG93biBBY3Rpb25zIC0tPlxuICA8ZGl2ICpuZ0lmPVwiYWN0aW9uVHlwZSgpID09PSAnZHJvcGRvd24nXCIgY2xhc3M9XCJkcm9wZG93bi1hY3Rpb25zXCI+XG4gICAgPGRpdiAjZHJvcGRvd25UcmlnZ2VyIGNsYXNzPVwiZHJvcGRvd24tdHJpZ2dlclwiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigkZXZlbnQpXCIgdGl0bGU9XCJNb3JlIGFjdGlvbnNcIj5cbiAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMFwiIGN5PVwiNFwiIHI9XCIyXCIgZmlsbD1cIiMzMzNcIiAvPlxuICAgICAgICA8Y2lyY2xlIGN4PVwiMTBcIiBjeT1cIjEwXCIgcj1cIjJcIiBmaWxsPVwiIzMzM1wiIC8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMFwiIGN5PVwiMTZcIiByPVwiMlwiIGZpbGw9XCIjMzMzXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIENoZWNrYm94IEFjdGlvbnMgLS0+XG4gIDxkaXYgKm5nSWY9XCJhY3Rpb25UeXBlKCkgPT09ICdjaGVja2JveCdcIiBjbGFzcz1cImNoZWNrYm94LWFjdGlvbnNcIj5cbiAgICA8bWlzLWNoZWNrYm94IFtjaGVja2VkXT1cImN1cnJlbnRTdGF0ZSgpXCIgKHZhbHVlQ2hhbmdlKT1cIm9uQ2xpY2soJGV2ZW50KVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlKCkgPyBkaXNhYmxlKCkoZGF0YSgpKSA6IGZhbHNlXCI+IDwvbWlzLWNoZWNrYm94PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIENvbGxhcHNlIC8gRXhwYW5kIEFjdGlvbnMgLS0+XG48ZGl2ICpuZ0lmPVwiYWN0aW9uVHlwZSgpID09PSAncm93LWNvbGxhcHNlJ1wiIGNsYXNzPVwiY29sbGFwc2UtdG9nZ2xlLWFjdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiY29sbGFwc2UtaWNvblwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIiBbdGl0bGVdPVwiY3VycmVudFN0YXRlKCkgPyAnRXhwYW5kJyA6ICdDb2xsYXBzZSdcIj5cbiAgICA8c3ZnICpuZ0lmPVwiY3VycmVudFN0YXRlKClcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICA8cGF0aCBkPVwiTTcgMTBsNSA1IDUtNVwiIHN0cm9rZT1cIiMwRDEzMjFcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgIDwvc3ZnPlxuICAgIDxzdmcgKm5nSWY9XCIhY3VycmVudFN0YXRlKClcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICA8cGF0aCBkPVwiTTcgMTRsNS01IDUgNVwiIHN0cm9rZT1cIiMwRDEzMjFcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgIDwvc3ZnPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIENESyBPdmVybGF5IFRlbXBsYXRlIGZvciBEcm9wZG93biBNZW51IC0tPlxuPG5nLXRlbXBsYXRlICNkcm9wZG93bk1lbnU+XG4gIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51LW92ZXJsYXlcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUtaXRlbVwiXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhY3Rpb25JdGVtcygpXCJcbiAgICAgIChjbGljayk9XCJvbkRyb3Bkb3duSXRlbUNsaWNrKGl0ZW0sICRldmVudClcIlxuICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogaXNEaXNhYmxlZChpdGVtKSB9XCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoOyBlbHNlIG5vQ2hpbGRyZW5cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pY29uXCIgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJtZW51LWFycm93XCI+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSA2TDE1IDEyTDkgMThcIiBzdHJva2U9XCIjMEQxMzIxXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8IS0tIERZTkFNSUMgU1VCTUVOVSAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXN1Ym1lbnVcIiAqbmdJZj1cIml0ZW0uc2hvd1N1Ym1lbnVcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUtaXRlbVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgaXRlbS5jaGlsZHJlblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBpc0Rpc2FibGVkKGNoaWxkKSB9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkRyb3Bkb3duSXRlbUNsaWNrKGNoaWxkLCAkZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWljb25cIiAqbmdJZj1cImNoaWxkLmljb25cIj5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImNoaWxkLmljb25cIiAvPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1sYWJlbFwiPnt7IGNoaWxkLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI25vQ2hpbGRyZW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24taWNvblwiICpuZ0lmPVwiaXRlbS5pY29uXCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cIml0ZW0uaWNvblwiIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1sYWJlbFwiPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -791,7 +791,7 @@ export class TableComponent {
|
|
|
791
791
|
else if (event.actionType === 'row-collapse') {
|
|
792
792
|
const rowCollapse = this.findActionConfig('row-collapse');
|
|
793
793
|
if (rowCollapse && this.tableData()[rowIndex]) {
|
|
794
|
-
|
|
794
|
+
this.tableData()[rowIndex][rowCollapse.index] = event.value;
|
|
795
795
|
rowCollapse.config.action?.(this.tableData());
|
|
796
796
|
this.buildExpandedMap();
|
|
797
797
|
}
|
|
@@ -915,4 +915,4 @@ export class TableComponent {
|
|
|
915
915
|
args: ["table"]
|
|
916
916
|
}] }); })();
|
|
917
917
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TableComponent, { className: "TableComponent" }); })();
|
|
918
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFNVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFJVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDWnJDLCtDQU1DO0lBSkMseU5BQWtCLG1DQUE0QixLQUFDO0lBSWhELGlCQUFtQjs7O0lBRGxCLEFBREEsZ0VBQTJDLG9DQUNmOzs7SUEwQnhCLDZCQUFrRztJQUNoRyxZQUNGO0lBQUEsaUJBQUk7OztJQURGLGNBQ0Y7SUFERSx5RkFDRjs7O0lBTUUsMkJBQXFGOzs7O0lBTHZGLGdDQUlDO0lBSEMsa05BQVMsMkNBQWlDLEVBQUUsc0NBQTRCLHdCQUFFLHdCQUF3QixLQUFDO0lBSW5HLCtFQUE4RTs7SUFDOUUsK0JBQStGO0lBQzdGLDJCQUtFO0lBRU4sQUFERSxpQkFBTSxFQUNEOzs7OztJQVRFLGNBQWtEO0lBQWxELG1IQUFrRDs7OztJQVUzRCxnQ0FJQztJQUhDLGdLQUFTLHVCQUFnQix3QkFBRSx3QkFBd0IsS0FBQztJQUlwRCxtQ0FBNkQ7SUFDL0QsaUJBQU87OztJQURTLGNBQStCO0lBQS9CLG9EQUErQjs7OztJQUUvQyxnQ0FNb0I7SUFEbEIsZ01BQWMsMkJBQW9CLEtBQUM7SUFFckMsaUJBQU87Ozs7SUFITCxBQURBLEFBREEsQUFEQSxxQ0FBb0Isb0NBQ1EseUNBQ0sseURBQ2dCOzs7O0lBSXJELHdGQUFzSTs7O0lBQXhCLEFBQTVDLHlGQUEyQywyQkFBd0I7Ozs7SUFoRHJJLGtDQWNDO0lBWkMsMlJBQTRELElBQUksS0FBQztJQThDbkUsQUFSRSxBQVBBLEFBZkEsQUFIQSxrRUFBa0csMkRBT2pHLDJEQWVBLDJEQVNtQixvREFFZ0g7SUFDdEksaUJBQU07OztJQTVDSixrZEFRRTtJQUVFLGVBQW9FO0lBQXBFLHlKQUFvRTtJQUtyRSxjQUEwRjtJQUExRixzUEFBMEY7SUFlMUYsY0FBb0M7SUFBcEMsdUZBQW9DO0lBS2hDLGNBQWtEO0lBQWxELHVJQUFrRDtJQVE3QyxjQUFrQztJQUFsQyxxRkFBa0M7OztJQStDMUMsNkJBQXlGO0lBQ3ZGLDJCQUErQjs7OztJQUF6QixjQUFpQjtJQUFqQixzREFBaUI7OztJQUt2Qiw0QkFBTTtJQUFBLFlBQVM7SUFBQSxpQkFBTzs7O0lBQWhCLGNBQVM7SUFBVCw2QkFBUzs7O0lBbEJqQiwrQkFVRDtJQU9DLEFBTEEsb0dBQXlGLHFIQUtqRTtJQUcxQixpQkFBTTs7Ozs7Ozs7SUFkSixBQUpBLG9TQUdFLHlIQUdBO0lBSWEsY0FBMEQ7SUFBQSxBQUExRCw0SEFBMEQsMkJBQWM7Ozs7SUFVckYsOEZBS0M7Ozs7OztJQUZDLEFBREEsMkZBQWtFLGlCQUN0RDs7OztJQUdaLDRDQVFDO0lBSkMsZ1JBQWUsMENBQStCLEtBQUM7SUFJaEQsaUJBQW1COzs7Ozs7OztJQUhsQixBQUZBLEFBREEsa0NBQWdCLHdEQUM0QixtVEFJMUM7Ozs7SUF6RFYsK0JBUUM7SUFQQywrUkFBUyxvQkFBYSwySEFBaUMsb0JBQWEsb0hBQXNDLFVBQVUsY0FBRyxvQkFBYSxzSEFBcUMsSUFBSSxLQUFDO0lBUTlLLCtCQVlDO0lBNkJHLEFBTkYsQUF0QkYsNEVBVUQsMERBaUJJLHlGQVNFO0lBR1AsQUFERSxpQkFBTSxFQUNGOzs7Ozs7Ozs7O0lBdERKLEFBSkEsZ2VBRUUsd0VBRThEO0lBSTlELGNBQWtEO0lBQWxELHdHQUFrRDtJQUNsRCw0a0JBUUU7SUFHSCxjQUFtSDtJQUFuSCwwT0FBbUg7SUFzQi9HLGNBQTBEO0lBQTFELDhIQUEwRDtJQU14RCxjQUEyRDtJQUEzRCwrSEFBMkQ7OztJQWFwRSw2QkFBNEM7SUFDMUMsK0JBS0c7SUFDRCw0QkFDRjtJQUFBLGlCQUFNOzs7SUFQRCxjQUtIO0lBTEcscURBS0g7OztJQUtKLDZCQUE0RTtJQUMxRSwrQkFLRztJQUNELHNDQUNGO0lBQUEsaUJBQU07OztJQVBELGNBS0g7SUFMRyxxREFLSDs7O0lBS0osNkJBQTBFO0lBQ3hFLGdDQUFnRjs7OztJQUFyRSxjQUEyQjtJQUFDLEFBQTVCLGdEQUEyQixvQ0FBNkI7OztJQXhCdkUsK0JBQStFO0lBdUI3RSxBQVhBLEFBWEEsOEZBQTRDLGlGQVdnQyxpRkFXRjtJQUc1RSxpQkFBTTs7O0lBekJXLGNBQTJCO0lBQTNCLG1EQUEyQjtJQVczQixjQUEyRDtJQUEzRCwwRkFBMkQ7SUFXM0QsY0FBeUQ7SUFBekQsd0ZBQXlEOzs7O0lBN0YxRSxBQURGLCtCQUE4RixjQU96RjtJQUZELDBMQUFTLHNCQUFZLEtBQUM7SUFHdEIsdUVBUUM7SUFzREgsaUJBQU07SUFDTixzRUFBK0U7SUEyQmpGLGlCQUFNOzs7Ozs7O0lBNUZGLGNBQXlDO0lBQXpDLDZEQUF5QztJQUZ6QyxBQURBLDRIQUFrRyx5TUFDTTtJQU10RixjQUFRO0lBQVIsaUNBQVE7SUE2RHRCLGNBQXVEO0lBQXZELCtIQUF1RDs7OztJQTRDekQsQUFERiwrQkFBZ0MsdUJBVTdCO0lBRkMsb05BQVksK0JBQXdCLEtBQUM7SUFHekMsQUFERyxpQkFBZSxFQUNaOzs7SUFURixjQUEwQjtJQUsxQixBQURBLEFBREEsQUFEQSxBQURBLEFBREEsK0NBQTBCLGlEQUNlLGlCQUN6QixrQkFDQyx3QkFDTSwrQkFDTzs7OztJQW9CNUIsZ0NBS0M7SUFKQyxtUUFBUyx5Q0FBOEIsS0FBQztJQUl6QyxZQUFnQjtJQUFBLGlCQUFPOzs7O0lBRnRCLCtGQUE0RDtJQUU3RCxjQUFnQjtJQUFoQixvQ0FBZ0I7OztJQUVmLEFBREYsZ0NBQXFELGNBQ2Q7SUFHbkMsQUFEQSxBQURBLDJCQUErRCxlQUNBLGVBQ3RDO0lBRTdCLEFBREUsaUJBQU0sRUFDRDs7SUFMQSxjQUErQjtJQUEvQixxREFBK0I7SUFDaEIsY0FBcUM7SUFBckMscURBQXFDO0lBQ3JDLGNBQXFDO0lBQXJDLHFEQUFxQzs7O0lBVjdELDJCQUF3QztJQU90QyxBQU5BLHFHQUtDLHdGQUNvRDtJQU92RCxpQkFBTTs7O0lBWEQsY0FBcUI7SUFBckIsMENBQXFCO0lBSWpCLGNBQXFCO0lBQXJCLDBDQUFxQjs7O0lBUmhDLDZCQUEwRTtJQUN4RSw2RkFBd0M7Ozs7SUFBWixjQUFVO0lBQVYsd0NBQVU7Ozs7SUFsQzVDLEFBSEYsK0JBRUMsWUFDeUI7SUFDdEIsWUFLRjtJQUFBLGlCQUFJO0lBQ0osc0ZBQTZCO0lBZTNCLEFBREYsK0JBQTBCLGVBQ3FIO0lBQXJJLGlMQUFTLHFCQUFjLEdBQUcsQ0FBQyxJQUFJLDBCQUFtQixxQkFBYyxHQUFHLENBQUMsQ0FBQyxLQUFDOztJQUM1RSwrQkFBNkY7SUFDM0YsMkJBS0U7SUFFTixBQURFLGlCQUFNLEVBQ0Q7SUFFTCxnR0FBMEU7O0lBa0I1RSxnQ0FDNEg7SUFBNUgsOExBQVMscUJBQWMsZUFBRyxvQkFBYSwwREFBZ0MsMEJBQW1CLHFCQUFjLEdBQUcsQ0FBQyxDQUFDLEtBQUM7O0lBQzVHLGdDQUE2RjtJQUMzRiw0QkFLRTtJQUlWLEFBREUsQUFERSxBQURFLGlCQUFNLEVBQ0QsRUFDSCxFQUNGOzs7OztJQTlERixlQUtGO0lBTEUsNFNBS0Y7SUFDQSxjQWFDO0lBYkQsd0RBYUM7SUFFNkYsZUFBZ0Q7SUFBaEQsZ0VBQWdEO0lBVzNILGVBQXlEO0lBQXpELHVIQUF5RDtJQWtCcEUsY0FBd0Y7SUFBeEYscUpBQXdGOztBRDlNeEcsTUFBTSxPQUFPLGNBQWM7SUFpRnpCLFlBQW9CLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFoRnZDLG9FQUFvRTtRQUNwRSxtQkFBYyxHQUFHLE1BQU0sQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUN0Qyx1QkFBa0IsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDNUMsc0JBQWlCLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRTNDLDJCQUEyQjtRQUMzQixlQUFVLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLGVBQVUsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEMsZUFBVSxHQUFHLE1BQU0sQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDdkMsMEJBQXFCLEdBQUcsTUFBTSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsTUFBTSxDQUE0RCxFQUFFLENBQUMsQ0FBQztRQUV2RiwwQ0FBMEM7UUFDMUMsbUJBQWMsR0FBRyxNQUFNLEVBRW5CLENBQUM7UUFLTCwrQkFBK0I7UUFDL0IsVUFBSyxHQUFHLE1BQU0sQ0FBZ0IsRUFBRSxDQUFDLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsaUJBQVksR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpRUFBaUU7UUFDM0YseUJBQW9CLEdBQUcsS0FBSyxDQUFDLENBQUMsd0VBQXdFO1FBRTlHOzs7Ozs7Ozs7OztXQVdHO1FBQ0sscUJBQWdCLEdBQWtCLElBQUksQ0FBQztRQUUvQyxpQkFBWSxHQUFHLE1BQU0sRUFBVSxDQUFDO1FBQ2hDLG9CQUFlLEdBQUcsTUFBTSxFQUFVLENBQUM7UUFDbkMsb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQztZQUNwRCxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxNQUFNO2dCQUFFLE9BQU8sRUFBRSxDQUFDO1lBRW5HLE9BQU8sTUFBTSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QyxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQy9CLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTthQUNoQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztRQUVILHlCQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO1FBRUgsMkJBQXNCLEdBQUcsTUFBTSxDQUFlLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV4RSx3Q0FBd0M7UUFDeEMsZ0JBQVcsR0FBRyxLQUFLLEVBQWUsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLEtBQUssRUFBZSxDQUFDO1FBQ3RDLHFCQUFnQixHQUFHLEtBQUssRUFBVyxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDaEMsY0FBUyxHQUFHLEtBQUssQ0FBb0IsRUFBRSxDQUFDLENBQUM7UUFDekMsaUJBQVksR0FBRyxLQUFLLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLHdCQUFtQixHQUFHLEtBQUssRUFBVyxDQUFDO1FBQ3ZDLGdCQUFXLEdBQUcsS0FBSyxFQUEyRCxDQUFDO1FBRS9FLHFCQUFnQixHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLGlCQUFZLEdBQUcsTUFBTSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLDJCQUFzQixHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLGdCQUFXLEdBQUcsTUFBTSxDQUEwQixFQUFFLENBQUMsQ0FBQztRQUdsRCw2QkFBNkI7UUFDN0Isb0JBQWUsR0FBRyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7UUFDMUMsZUFBVSxHQUFHLE1BQU0sRUFBYSxDQUFDO1FBQ2pDLGlCQUFZLEdBQUcsTUFBTSxFQUFtQyxDQUFDO1FBSXZELE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRXBELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVsQyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsY0FBYyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNsRixNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUMvRixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3QixDQUFDO1lBRUQsNEVBQTRFO1lBQzVFLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLENBQUM7WUFDaEQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUM7WUFFeEU7Ozs7Ozs7Ozs7O2VBV0c7WUFDSCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoRCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUM7WUFDbEUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxJQUFJLG1CQUFtQixLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUUzRyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQy9CLDRCQUE0QjtnQkFDNUIscUNBQXFDO2dCQUNyQywyRUFBMkU7Z0JBQzNFLHNEQUFzRDtnQkFDdEQsSUFBSSxrQkFBa0IsS0FBSyxTQUFTLElBQUksa0JBQWtCLEtBQUssSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDM0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsSUFBSSxDQUFDLENBQUM7b0JBQzFELElBQUksbUJBQW1CLEtBQUssa0JBQWtCO3dCQUMxQyxrQkFBa0IsSUFBSSxDQUFDO3dCQUN2QixrQkFBa0IsSUFBSSxRQUFRLEVBQUUsQ0FBQzt3QkFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFDNUMsQ0FBQztnQkFDSCxDQUFDO2dCQUVELHFFQUFxRTtnQkFDckUsaUVBQWlFO2dCQUNqRSxJQUFJLENBQUMsa0JBQWtCLEtBQUssU0FBUyxJQUFJLGtCQUFrQixLQUFLLElBQUksQ0FBQztvQkFDakUsQ0FBQyxrQkFBa0I7b0JBQ25CLENBQUMsbUJBQW1CLEtBQUssQ0FBQyxJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzNELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixDQUFDO2dCQUVELHFFQUFxRTtnQkFDckUscURBQXFEO2dCQUNyRCxJQUFJLGtCQUFrQixLQUFLLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUNqRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2dCQUMvQixDQUFDO1lBQ0gsQ0FBQztZQUVELGtDQUFrQztZQUNsQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1lBRWxDLG1FQUFtRTtZQUNuRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDeEMsZ0ZBQWdGO2dCQUNoRixvRUFBb0U7Z0JBQ3BFLHVEQUF1RDtnQkFDdkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUV2QyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDWCxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7b0JBQ3BCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQzt3QkFDNUIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDckIsQ0FBQztvQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztxQkFBTSxDQUFDO29CQUNKLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3pDLENBQUM7eUJBQU0sSUFBSSxVQUFVLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO3dCQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDL0UsQ0FBQzt5QkFBTSxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7d0JBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUMzRCxDQUFDO2dCQUNMLENBQUM7WUFDTCxDQUFDO1lBQ0QsMENBQTBDO1lBRzFDLElBQUcsTUFBTSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLENBQUM7Z0JBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsQ0FBQztnQkFFdEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzFELE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssS0FBSyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDNUUsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO3FCQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDOUIseUZBQXlGO29CQUN6RixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ25DLGtCQUFrQjtvQkFDbEIsTUFBTSxNQUFNLEdBQUcsT0FBTzt5QkFDbkIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7eUJBQzlDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7eUJBQ3pDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUVqQyxJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDO29CQUNqQyxLQUFLLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQzt3QkFDNUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDOzRCQUM1QixXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQzs0QkFDNUIsTUFBTTt3QkFDUixDQUFDO29CQUNILENBQUM7b0JBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxtS0FBbUssQ0FBQyxDQUFDO29CQUNuTCxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM3QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3JDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7Z0JBQ2xELENBQUM7WUFDSCxDQUFDO1FBQ0wsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUVoQyx1RkFBdUY7UUFDdkYsNEVBQTRFO1FBQzVFLG9GQUFvRjtRQUNwRixpQkFBaUI7UUFDakIsdUNBQXVDO1FBQ3ZDLHlFQUF5RTtRQUV6RSxrQ0FBa0M7UUFDbEMsd0ZBQXdGO1FBQ3hGLHlDQUF5QztRQUN6Qyx1Q0FBdUM7UUFDdkMsNkVBQTZFO1FBQzdFLE1BQU07SUFDUixDQUFDO0lBR0QsK0JBQStCO0lBQy9CLFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQUUsT0FBTztRQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxvREFBb0Q7UUFDdEYsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNoSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxxQkFBcUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzRCwyRkFBMkY7UUFDN0YsQ0FBQztRQUNELFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDekMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDO2dCQUM3QixJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUMsTUFBeUIsQ0FBQztnQkFDcEQsSUFBSSxhQUFhLENBQUMsU0FBUyxLQUFLLFdBQVcsRUFBRSxDQUFDO29CQUM1QyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixDQUFDO2dCQUNELElBQUksb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RGLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7b0JBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxxREFBcUQ7UUFDckQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FDdEUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLGNBQWMsQ0FDbkUsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ25ILElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUM7WUFDeEcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLGNBQWMsR0FBNEIsRUFBRSxDQUFDO1FBQ25ELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBRXBELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDdkMsY0FBYyxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUMsZUFBZTtRQUNiLHdFQUF3RTtRQUN4RSxrRUFBa0U7UUFDbEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLElBQUksTUFBTSxFQUFFLGdCQUFnQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDMUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUM3QixNQUFNLE1BQU0sR0FBSSxNQUFjLEdBQUcsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzFFLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsY0FBYyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xHLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxjQUFjLENBQUM7WUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUE7UUFDNUYsQ0FBQztJQUNILENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsaUJBQWlCO1FBQ2YsTUFBTSxpQkFBaUIsR0FBOEQsRUFBRSxDQUFDO1FBQ3hGLE1BQU0sVUFBVSxHQUFrQixFQUFFLENBQUM7UUFFckMsS0FBSyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsZUFBZSxFQUFFLENBQUM7WUFDMUQsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3RCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDakIsS0FBSyxJQUFJLE1BQU0sSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3JDLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDOzRCQUNYLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTs0QkFDakIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO3lCQUNwQixDQUFDLENBQUM7b0JBQ0wsQ0FBQztvQkFDRCwwQ0FBMEM7b0JBQzFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzFCLENBQUM7Z0JBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQUUsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQztZQUN0RSxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNBLFlBQVksQ0FBQyxVQUFrQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFMUIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRTdELEtBQUssSUFBSSxNQUFNLElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsS0FBSyxVQUFVO29CQUFFLE1BQU07Z0JBQ3pELE1BQU0sSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUM3QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztnQkFDN0IsR0FBRyxFQUFFLE1BQU07Z0JBQ1gsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNO2FBQ2pELENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxjQUFzRDtRQUN6RSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDN0MsSUFBSSxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7YUFBTSxDQUFDO1lBQ04sY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLG9CQUFvQjtRQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hDLDBFQUEwRTtZQUMxRSwrRUFBK0U7WUFDL0Usa0RBQWtEO1lBRWxELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7WUFDeEQsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzlCLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25CLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELGtCQUFrQixDQUFDLFVBQWtCO1FBQ25DLCtDQUErQztRQUMvQyxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUV6Rjs7Ozs7Ozs7O1dBU0c7UUFDSCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUM7UUFFbkMsa0VBQWtFO1FBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxDLDREQUE0RDtRQUM1RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDLDZEQUE2RDtRQUM3RCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDO1FBQ3hELElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1osSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QyxDQUFDO2lCQUFNLElBQUksVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksVUFBVSxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDN0UsQ0FBQztpQkFBTSxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pELENBQUM7UUFDSCxDQUFDO1FBRUQsK0VBQStFO1FBQy9FLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUM7O1lBQzVELE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFDRCxpQkFBaUI7UUFDZixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDOztZQUMxRCxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLHNCQUFzQjtRQUNwQixNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkQsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLEVBQUUsTUFBTSxJQUFJLE1BQU0sQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBSSxtQkFBbUIsRUFBRSxLQUFhLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUN2RSxNQUFNLFlBQVksR0FBSSxtQkFBbUIsRUFBRSxLQUFhLEVBQUUsWUFBWSxJQUFJLG1CQUFtQixDQUFDO1FBQzlGLE1BQU0sZUFBZSxHQUFJLG1CQUFtQixFQUFFLEtBQWEsRUFBRSxlQUFlLElBQUksU0FBUyxDQUFDO1FBQzFGLE1BQU0sUUFBUSxHQUFJLG1CQUFtQixFQUFFLEtBQWEsRUFBRSxRQUFRLElBQUksTUFBTSxDQUFDO1FBQ3pFLE9BQU87WUFDTCxZQUFZLEVBQUUsU0FBUztZQUN2QixZQUFZLEVBQUUsU0FBUztZQUN2QixlQUFlLEVBQUUsWUFBWTtZQUM3QixrQkFBa0IsRUFBRSxlQUFlO1lBQ25DLFdBQVcsRUFBRSxRQUFRO1NBQ3RCLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQW9CO1FBQy9CLCtDQUErQztRQUMvQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVoQyxzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDaEQsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkYsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNqQyxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztvQkFDM0MsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUM7b0JBQzNDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzdELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQVU7UUFDNUIsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN0QixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBVSxFQUFFLFFBQWdCO1FBQ3hDLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNwQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckQsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDO2dCQUNyQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFFaEQsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsS0FBSztvQkFDbkMsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxRQUFRLENBQUM7b0JBQ2xDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUM7Z0JBQzFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUVwRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDakYsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBRUgsQ0FBQzthQUFNLElBQUcsS0FBSyxDQUFDLFVBQVUsS0FBSyxjQUFjLEVBQUMsQ0FBQztZQUM3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDMUQsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLDJGQUEyRjtnQkFDM0YsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsVUFBa0I7UUFDakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDN0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzVELE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUdELGFBQWEsQ0FBQyxHQUFRO1FBQ3BCLE9BQU8sT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDOUgsQ0FBQztJQUVPLG1CQUFtQixDQUFDLGlCQUEyQixFQUFFLGdCQUF3QjtRQUMvRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUUzQyxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRTNDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVELENBQUM7WUFFRCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDO1lBQ3RCLElBQUksRUFBRSxnQkFBZ0I7WUFDdEIsT0FBTyxFQUFFLGdCQUFnQjtTQUMxQixDQUFDLENBQUM7UUFFSCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxpQkFBMkIsRUFBRSxnQkFBeUI7UUFDOUUsT0FBTyxpQkFBaUI7YUFDckIsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2xCLE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzNDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDbEIsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO2FBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBWSxDQUFDO0lBQzVDLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDdEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssVUFBVSxDQUFDLENBQUM7UUFDaEksSUFBSSxnQkFBZ0IsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzdDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUVyQyxNQUFNLGlCQUFpQixHQUFHLFdBQVc7Z0JBQ25DLENBQUMsQ0FBQyxXQUFXO3FCQUNSLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7cUJBQ3pELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDbEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUVQLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0lBR0QsZ0JBQWdCLENBQUMsY0FBNEI7UUFDM0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLGdCQUFnQixDQUFDO1FBQ3BELElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDMUIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUM5RCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLGdCQUFnQixJQUFJLGFBQWEsQ0FBQztJQUM1RSxDQUFDOytHQWxrQlUsY0FBYztvRUFBZCxjQUFjOzs7Ozs7Ozs7O1lDNUIzQiw4QkFPQztZQUNDLHlGQU1DO1lBTUMsQUFMRixpQ0FJQyxhQUlFO1lBQ0MsZ0VBY0M7WUFvQ0gsaUJBQU07WUFFTiw4QkFBeUI7WUFDdkIsaUVBQThGO1lBb0dsRyxBQURFLGlCQUFNLEVBQ0Y7WUFDTiwrQkFBdUM7WUFDckMseUVBQTRCO1lBc0VoQyxBQURFLGlCQUFNLEVBQ0Y7OztZQXhQSixtS0FJRTtZQU1DLGNBQWtCO1lBQWxCLHVDQUFrQjtZQU9uQixjQUFrSjtZQUFsSixtSkFBa0o7WUFHbEosZUFBb0M7WUFBcEMsc0RBQW9DO1lBTVYsY0FBaUM7WUFBakMsZ0dBQWlDO1lBa0RoQixlQUFnQjtZQUFoQix5Q0FBZ0I7WUFzRzNELGVBb0VDO1lBcEVELHFEQW9FQzs7O2lGRDNOUSxjQUFjO2NBTDFCLFNBQVM7MkJBQ0UsV0FBVzswQ0FzQkEsTUFBTTtrQkFBMUIsU0FBUzttQkFBQyxRQUFRO1lBQ1csVUFBVTtrQkFBdkMsWUFBWTttQkFBQyxjQUFjO1lBaURSLEtBQUs7a0JBQXhCLFNBQVM7bUJBQUMsT0FBTzs7a0ZBcEVQLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgdW50cmFja2VkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGaWx0ZXIsIFRhYmxlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSBcIi4vZmlsdGVyL2ZpbHRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IFNvcnRTdGF0ZSB9IGZyb20gXCIuL3NvcnQtaWNvbnMuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBlZmZlY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRHJvcGRvd25JdGVtIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZHJvcGRvd25cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10YWJsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCJ0YWJsZS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcInRhYmxlLmNvbXBvbmVudC5jc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIC8vIEluaXRpYWxpemUgd2l0aCAtMSB0byBpbmRpY2F0ZSBubyByb3cgaXMgY29sb3JlZCBhdCB0aGUgYmVnaW5uaW5nXG4gIGFjdGl2ZVJvd0luZGV4ID0gc2lnbmFsPG51bWJlcltdPihbXSk7XG4gIGhhc0NoZWNrYm94QWN0aW9ucyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHNlbGVjdEFsbENoZWNrYm94ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyBGaWx0ZXIgcmVsYXRlZCB2YXJpYWJsZXNcbiAgc2hvd0ZpbHRlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGZpbHRlck5hbWUgPSBzaWduYWw8c3RyaW5nPihcIlwiKTtcbiAgZmlsdGVyRGF0YSA9IHNpZ25hbDxBcnJheTxGaWx0ZXI+PihbXSk7XG4gIGZpbHRlckNvbnRhaW5lclN0eWxlcyA9IHNpZ25hbDxhbnk+KHt9KTtcbiAgYXBwbGllZEZpbHRlcnMgPSBzaWduYWw8eyBba2V5OiBzdHJpbmddOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiB9Pih7fSk7XG4gIFxuICAvLyBDb252ZXJ0IG91dHB1dHMgdG8gc2lnbmFsLWJhc2VkIG91dHB1dHNcbiAgZmlsdGVyc1VwZGF0ZWQgPSBvdXRwdXQ8e1xuICAgIFtrZXk6IHN0cmluZ106IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+O1xuICB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoXCJmaWx0ZXJcIikgZmlsdGVyOiBUYWJsZUZpbHRlckNvbXBvbmVudCB8IGFueTtcbiAgQFZpZXdDaGlsZHJlbihcImNvbEhlYWRlclJlZlwiKSBjb2xIZWFkZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4gfCBhbnk7XG5cbiAgLy8gUGFnaW5hdGlvbiByZWxhdGVkIHZhcmlhYmxlc1xuICBwYWdlcyA9IHNpZ25hbDxBcnJheTxudW1iZXI+PihbXSk7XG4gIHRhYmxlTGVuZ3RoID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHNlbGVjdGVkUGFnZSA9IHNpZ25hbDxudW1iZXI+KDEpOyAvLyBJbnRlcm5hbCBzdGF0ZSBmb3Igc2VsZWN0ZWQgcGFnZSAtIHRoaXMgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aFxuICBwcml2YXRlIGlzSW50ZXJuYWxQYWdlVXBkYXRlID0gZmFsc2U7IC8vIEZsYWcgdG8gcHJldmVudCBlZmZlY3QgZnJvbSBvdmVyd3JpdGluZyBkdXJpbmcgdXNlci1pbml0aWF0ZWQgdXBkYXRlc1xuICBcbiAgLyoqXG4gICAqIExFR0FDWSBDT0RFIFdPUktBUk9VTkQ6IFRyYWNrIHVzZXItaW5pdGlhdGVkIHBhZ2Ugc2VsZWN0aW9ucyB0byBwcmV2ZW50IGNvbmZpZyBvdmVyd3JpdGVzLlxuICAgKiBcbiAgICogU29tZSBsZWdhY3kgcGFyZW50IGNvbXBvbmVudHMgZG9uJ3QgdXBkYXRlIHRhYmxlQ29uZmlnLnBhZ2luYXRpb25Db25maWcuc2VsZWN0ZWRQYWdlIHdoZW5cbiAgICogdGhlIHBhZ2UgY2hhbmdlcy4gVGhpcyBjYXVzZXMgdGhlIGVmZmVjdCB0byBvdmVyd3JpdGUgdXNlciBzZWxlY3Rpb25zIHdpdGggc3RhbGUgY29uZmlnIHZhbHVlcy5cbiAgICogXG4gICAqIElERUFMIFNPTFVUSU9OOiBQYXJlbnQgY29tcG9uZW50cyBzaG91bGQgYWx3YXlzIHVwZGF0ZSBjb25maWcuc2VsZWN0ZWRQYWdlIGluIHRoZWlyXG4gICAqIHBhZ2VTZWxlY3RlZCBldmVudCBoYW5kbGVyLiBUaGlzIHdvcmthcm91bmQgcHJvdGVjdHMgdXNlciBhY3Rpb25zIHVudGlsIGxlZ2FjeSBjb2RlXG4gICAqIGNhbiBiZSB1cGRhdGVkLlxuICAgKiBcbiAgICogVE9ETzogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIGFsbCBwYXJlbnQgY29tcG9uZW50cyBwcm9wZXJseSB1cGRhdGUgY29uZmlnLnNlbGVjdGVkUGFnZVxuICAgKi9cbiAgcHJpdmF0ZSB1c2VyU2VsZWN0ZWRQYWdlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgXG4gIHBhZ2VTZWxlY3RlZCA9IG91dHB1dDxudW1iZXI+KCk7XG4gIHBhZ2VTaXplQ2hhbmdlZCA9IG91dHB1dDxudW1iZXI+KCk7XG4gIHBhZ2VTaXplT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLnRhYmxlQ29uZmlnKCk/LnBhZ2luYXRpb25Db25maWc7XG4gICAgaWYgKCFjb25maWc/LnBhZ2VTaXplcyB8fCAhQXJyYXkuaXNBcnJheShjb25maWcucGFnZVNpemVzKSB8fCAhY29uZmlnLnBhZ2VTaXplcz8ubGVuZ3RoKSByZXR1cm4gW107XG4gIFxuICAgIHJldHVybiBjb25maWcucGFnZVNpemVzPy5tYXAob3B0aW9uID0+ICh7XG4gICAgICBsYWJlbDogb3B0aW9uPy50b1N0cmluZygpIHx8ICcnLFxuICAgICAgdmFsdWU6IG9wdGlvbj8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICB9KSkgfHwgW107XG4gIH0pO1xuXG4gIHNob3dQYWdlU2l6ZURyb3Bkb3duID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiAhIXRoaXMudGFibGVDb25maWcoKT8ucGFnaW5hdGlvbkNvbmZpZz8uc2hvd1BhZ2VTaXplRHJvcGRvd247XG4gIH0pO1xuXG4gIHNlbGVjdGVkUGFnZVNpemVPcHRpb24gPSBzaWduYWw8RHJvcGRvd25JdGVtPih7IGxhYmVsOiBcIlwiLCB2YWx1ZTogXCJcIiB9KTtcblxuICAvLyBDb252ZXJ0IGlucHV0cyB0byBzaWduYWwtYmFzZWQgaW5wdXRzXG4gIHRhYmxlQ29uZmlnID0gaW5wdXQ8VGFibGVDb25maWc+KCk7XG4gIHN1YlRhYmxlY29uZmlnID0gaW5wdXQ8VGFibGVDb25maWc+KCk7XG4gIHRhYmxlRGF0YUxvYWRpbmcgPSBpbnB1dDxib29sZWFuPigpO1xuICBleHBhbmRlZEluZGV4ID0gaW5wdXQ8bnVtYmVyPigpO1xuICB0YWJsZURhdGEgPSBpbnB1dDxBcnJheTxBcnJheTxhbnk+Pj4oW10pO1xuICBzdWJUYWJsZURhdGEgPSBpbnB1dDxBcnJheTxBcnJheTxhbnk+Pj4oW10pO1xuICBzdWJUYWJsZURhdGFMb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgY3VycmVudFNvcnQgPSBpbnB1dDx7Y29sdW1uOiBzdHJpbmcsIGRpcmVjdGlvbjogJ0FTQycgfCAnREVTQycgfCAnJ30gfCBudWxsPigpO1xuICBAVmlld0NoaWxkKFwidGFibGVcIikgdGFibGU6IEVsZW1lbnRSZWYgfCBhbnk7XG4gIGNvbGxhcHNlQ29sSW5kZXggPSBzaWduYWw8bnVtYmVyPigtMSk7XG4gIHByZXZpZXdMaW5lcyA9IHNpZ25hbDxudW1iZXI+KDApO1xuICByb3dDb2xsYXBzZUNvbmZpZ0luZGV4ID0gc2lnbmFsPG51bWJlcj4oLTEpO1xuICBleHBhbmRlZE1hcCA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pO1xuXG5cbiAgLy8gU29ydGluZyByZWxhdGVkIHByb3BlcnRpZXNcbiAgbXVsdGlDb2x1bW5Tb3J0ID0gc2lnbmFsPFNvcnRTdGF0ZVtdPihbXSk7XG4gIHNvcnRDaGFuZ2UgPSBvdXRwdXQ8U29ydFN0YXRlPigpO1xuICBoZWFkZXJBY3Rpb24gPSBvdXRwdXQ8eyB0eXBlOiBzdHJpbmc7IHBheWxvYWQ/OiBhbnkgfT4oKTtcblxuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgdGhpcy50YWJsZUxlbmd0aC5zZXQodGhpcy50YWJsZURhdGEoKT8ubGVuZ3RoID8/IDApO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy50YWJsZUNvbmZpZygpO1xuICAgICAgICBcbiAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcuYWN0aXZlUm93SW5kZXggIT09IG51bGwgJiYgY29uZmlnLmFjdGl2ZVJvd0luZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVJvd0luZGV4ID0gY29uZmlnLmFjdGl2ZVJvd0luZGV4O1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVSb3dJbmRleC5zZXQoQXJyYXkuaXNBcnJheShhY3RpdmVSb3dJbmRleCkgPyBhY3RpdmVSb3dJbmRleCA6IFthY3RpdmVSb3dJbmRleF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucm93Q29sbGFwc2VDb25maWdJbmRleCgpICE9PSAtMSkge1xuICAgICAgICAgICAgIHRoaXMuYnVpbGRFeHBhbmRlZE1hcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gLS0tIFBBR0lOQVRJT04gUEFHRSBBUlJBWSBMT0dJQyAoTU9WRUQvUkVQTEFDRUQgaW5pdGlhbGl6ZVBhZ2luYXRpb24pIC0tLVxuICAgICAgICBjb25zdCBsZW4gPSBjb25maWc/LnBhZ2luYXRpb25Db25maWc/Lm5vT2ZQYWdlcztcbiAgICAgICAgY29uc3QgZGlzYWJsZVBhZ2VKdW1waW5nID0gY29uZmlnPy5wYWdpbmF0aW9uQ29uZmlnPy5kaXNhYmxlUGFnZUp1bXBpbmc7XG4gICAgICAgIFxuICAgICAgICAvKipcbiAgICAgICAgICogTEVHQUNZIENPREUgV09SS0FST1VORDogUHJvdGVjdCB1c2VyLWluaXRpYXRlZCBwYWdlIHNlbGVjdGlvbnMgZnJvbSBjb25maWcgb3ZlcndyaXRlcy5cbiAgICAgICAgICogXG4gICAgICAgICAqIFdoZW4gdXNlcnMgY2xpY2sgcGFnaW5hdGlvbiBhcnJvd3MsIHdlIHVwZGF0ZSBpbnRlcm5hbCBzdGF0ZSBpbW1lZGlhdGVseS4gSG93ZXZlcixcbiAgICAgICAgICogc29tZSBsZWdhY3kgcGFyZW50IGNvbXBvbmVudHMgZG9uJ3QgdXBkYXRlIGNvbmZpZy5zZWxlY3RlZFBhZ2UsIGNhdXNpbmcgdGhlIGVmZmVjdFxuICAgICAgICAgKiB0byBydW4gd2l0aCBzdGFsZSBjb25maWcgdmFsdWVzIHRoYXQgd291bGQgb3ZlcndyaXRlIHRoZSB1c2VyJ3Mgc2VsZWN0aW9uLlxuICAgICAgICAgKiBcbiAgICAgICAgICogU3RyYXRlZ3k6IFRyZWF0IGludGVybmFsIHN0YXRlIGFzIHNvdXJjZSBvZiB0cnV0aCBmb3IgdXNlci1pbml0aWF0ZWQgY2hhbmdlcy5cbiAgICAgICAgICogT25seSBzeW5jIGZyb20gY29uZmlnIHdoZW4gaXQncyBzYWZlIChub3QgYSB1c2VyLXNlbGVjdGVkIHBhZ2UpLlxuICAgICAgICAgKiBcbiAgICAgICAgICogSURFQUw6IFBhcmVudCBzaG91bGQgYWx3YXlzIHVwZGF0ZSBjb25maWcuc2VsZWN0ZWRQYWdlIGluIHBhZ2VTZWxlY3RlZCBoYW5kbGVyLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGVkUGFnZSA9IHRoaXMuc2VsZWN0ZWRQYWdlKCk7XG4gICAgICAgIGNvbnN0IGNvbmZpZ1NlbGVjdGVkUGFnZSA9IGNvbmZpZz8ucGFnaW5hdGlvbkNvbmZpZz8uc2VsZWN0ZWRQYWdlO1xuICAgICAgICBjb25zdCBpc1VzZXJTZWxlY3RlZFBhZ2UgPSB0aGlzLnVzZXJTZWxlY3RlZFBhZ2UgIT09IG51bGwgJiYgY3VycmVudFNlbGVjdGVkUGFnZSA9PT0gdGhpcy51c2VyU2VsZWN0ZWRQYWdlO1xuICAgICAgICBcbiAgICAgICAgaWYgKCF0aGlzLmlzSW50ZXJuYWxQYWdlVXBkYXRlKSB7XG4gICAgICAgICAgLy8gT25seSBzeW5jIGZyb20gY29uZmlnIGlmOlxuICAgICAgICAgIC8vIDEuIENvbmZpZyBoYXMgYSBzZWxlY3RlZFBhZ2UgdmFsdWVcbiAgICAgICAgICAvLyAyLiBDdXJyZW50IHBhZ2UgaXMgTk9UIGEgdXNlci1pbml0aWF0ZWQgc2VsZWN0aW9uIChwcm90ZWN0IHVzZXIgYWN0aW9ucylcbiAgICAgICAgICAvLyAzLiBDb25maWcgdmFsdWUgaXMgdmFsaWQgYW5kIGRpZmZlcmVudCBmcm9tIGN1cnJlbnRcbiAgICAgICAgICBpZiAoY29uZmlnU2VsZWN0ZWRQYWdlICE9PSB1bmRlZmluZWQgJiYgY29uZmlnU2VsZWN0ZWRQYWdlICE9PSBudWxsICYmICFpc1VzZXJTZWxlY3RlZFBhZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1heFBhZ2VzID0gY29uZmlnPy5wYWdpbmF0aW9uQ29uZmlnPy5ub09mUGFnZXMgfHwgMTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRQYWdlICE9PSBjb25maWdTZWxlY3RlZFBhZ2UgJiYgXG4gICAgICAgICAgICAgICAgY29uZmlnU2VsZWN0ZWRQYWdlID49IDEgJiYgXG4gICAgICAgICAgICAgICAgY29uZmlnU2VsZWN0ZWRQYWdlIDw9IG1heFBhZ2VzKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYWdlLnNldChjb25maWdTZWxlY3RlZFBhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICAvLyBJZiBjb25maWcgZG9lc24ndCBoYXZlIHNlbGVjdGVkUGFnZSwgb25seSBpbml0aWFsaXplIGludmFsaWQgc3RhdGVcbiAgICAgICAgICAvLyBOZXZlciByZXNldCBhIHZhbGlkIHBhZ2UgbnVtYmVyLCBlc3BlY2lhbGx5IHVzZXItc2VsZWN0ZWQgb25lc1xuICAgICAgICAgIGlmICgoY29uZmlnU2VsZWN0ZWRQYWdlID09PSB1bmRlZmluZWQgfHwgY29uZmlnU2VsZWN0ZWRQYWdlID09PSBudWxsKSAmJiBcbiAgICAgICAgICAgICAgIWlzVXNlclNlbGVjdGVkUGFnZSAmJlxuICAgICAgICAgICAgICAoY3VycmVudFNlbGVjdGVkUGFnZSA9PT0gMCB8fCBjdXJyZW50U2VsZWN0ZWRQYWdlIDwgMSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYWdlLnNldCgxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gQ2xlYXIgdXNlciBzZWxlY3Rpb24gdHJhY2tpbmcgd2hlbiBjb25maWcgbWF0Y2hlcyB1c2VyJ3Mgc2VsZWN0aW9uXG4gICAgICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgcGFyZW50IGhhcyB1cGRhdGVkIGNvbmZpZyBjb3JyZWN0bHlcbiAgICAgICAgICBpZiAoY29uZmlnU2VsZWN0ZWRQYWdlID09PSB0aGlzLnVzZXJTZWxlY3RlZFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMudXNlclNlbGVjdGVkUGFnZSA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBSZXNldCB0aGUgZmxhZyBhZnRlciBwcm9jZXNzaW5nXG4gICAgICAgIHRoaXMuaXNJbnRlcm5hbFBhZ2VVcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgXG4gICAgICAgIC8vIE9ubHkgcnVuIGlmIHBhZ2luYXRpb24gaXMgY29uZmlndXJlZCBhbmQgcGFnZSBqdW1waW5nIGlzIGVuYWJsZWRcbiAgICAgICAgaWYgKGxlbiAmJiBsZW4gPiAwICYmICFkaXNhYmxlUGFnZUp1bXBpbmcpIHtcbiAgICAgICAgICAgIC8vIFJlYWQgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBzZWxlY3RlZCBwYWdlIGZvciBjYWxjdWxhdGluZyB0aGUgcGFnZXMgYXJyYXkuXG4gICAgICAgICAgICAvLyBTaW5jZSB0aGlzIHJ1bnMgb24gZXZlcnkgY29uZmlnIGNoYW5nZSwgd2UgcmVseSBvbiB0aGUgdmFsdWUgc2V0IFxuICAgICAgICAgICAgLy8gYnkgdXBkYXRlU2VsZWN0ZWRQYWdlKCkgb3Igc3luY2VkIGZyb20gY29uZmlnIGFib3ZlLlxuICAgICAgICAgICAgY29uc3QgcGFnZU51bWJlciA9IHRoaXMuc2VsZWN0ZWRQYWdlKCk7IFxuXG4gICAgICAgICAgICBpZiAobGVuIDw9IDcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdQYWdlcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1BhZ2VzLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGFnZXMuc2V0KG5ld1BhZ2VzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VOdW1iZXIgLSAyIDw9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlcy5zZXQoWzEsIDIsIDMsIDQsIDAsIGxlbl0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFnZU51bWJlciAtIDIgPiAxICYmIHBhZ2VOdW1iZXIgKyAyIDwgbGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZXMuc2V0KFsxLCAwLCBwYWdlTnVtYmVyIC0gMSwgcGFnZU51bWJlciwgcGFnZU51bWJlciArIDEsIDAsIGxlbl0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFnZU51bWJlciArIDIgPj0gbGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZXMuc2V0KFsxLCAwLCBsZW4gLSAzLCBsZW4gLSAyLCBsZW4gLSAxLCBsZW5dKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gLS0tIEVORCBQQUdJTkFUSU9OIFBBR0UgQVJSQVkgTE9HSUMgLS0tXG5cbiAgICAgICAgXG4gICAgICAgIGlmKGNvbmZpZz8ucGFnaW5hdGlvbkNvbmZpZz8uc2hvd1BhZ2VTaXplRHJvcGRvd24pIHtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wYWdlU2l6ZU9wdGlvbnMoKTtcbiAgICAgICAgICBjb25zdCByb3dzUGVyUGFnZSA9IHRoaXMudGFibGVDb25maWcoKT8ucGFnaW5hdGlvbkNvbmZpZz8ucm93c1BlclBhZ2U7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpIHx8ICFyb3dzUGVyUGFnZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhZ2VTaXplT3B0aW9uLnNldCh7IGxhYmVsOiBcIlwiLCB2YWx1ZTogXCJcIiB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBvcHRpb25zLmZpbmQob3B0ID0+IG9wdD8udmFsdWUgPT09IHJvd3NQZXJQYWdlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhZ2VTaXplT3B0aW9uLnNldChzZWxlY3RlZCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIElmIGNvbmZpZ3VyZWQgcm93c1BlclBhZ2UgaXMgbm90IGFtb25nIG9wdGlvbnMsIHBpY2sgdGhlIGZsb29yIHZhbHVlIGFuZCBub3RpZnkgcGFyZW50XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBOdW1iZXIocm93c1BlclBhZ2UpO1xuICAgICAgICAgICAgLy9Tb3J0IHRoZSBvcHRpb25zXG4gICAgICAgICAgICBjb25zdCBzb3J0ZWQgPSBvcHRpb25zXG4gICAgICAgICAgICAgIC5tYXAob3B0ID0+ICh7IG9wdCwgbnVtOiBOdW1iZXIob3B0Py52YWx1ZSkgfSkpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHsgbnVtIH0pID0+IE51bWJlci5pc0Zpbml0ZShudW0pKVxuICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5udW0gLSBiLm51bSk7XG5cbiAgICAgICAgICAgIGxldCBmbG9vck9wdGlvbiA9IHNvcnRlZFswXT8ub3B0O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNvcnRlZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICBpZiAoc29ydGVkW2ldLm51bSA8PSB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBmbG9vck9wdGlvbiA9IHNvcnRlZFtpXS5vcHQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgY29uZmlndXJlZCByb3dzUGVyUGFnZSB3YXMgbm90IG1hdGNoZWQgdG8gYW55IG9mIHRoZSBwYWdlU2l6ZXMgc2VudCBpbiB0aGUgcGFnaW5hdGlvbkNvbmZpZy4gU2VsZWN0aW5nIHRoZSBuZWFyZXN0IGZsb29yIHZhbHVlIGFtb25nIHRoZSBhdmFpbGFibGUgcGFnZVNpemVzLlwiKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYWdlU2l6ZU9wdGlvbi5zZXQoZmxvb3JPcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5vblBhZ2VTaXplQ2hhbmdlKGZsb29yT3B0aW9uKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIk5vIHBhZ2Ugc2l6ZSBvcHRpb25zIGF2YWlsYWJsZS5cIilcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuXG4gICAgLy8gUmVhY3RpdmUgaGVpZ2h0IGNhbGN1bGF0aW9uOiBtYWludGFpbnMgZXhhY3Qgb2xkIGJlaGF2aW9yIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgLy8gT2xkIGNvZGU6IGhlaWdodCAtIDU2ICsgXCJweFwiIChmbGF3ZWQgZm9yIHBlcmNlbnRhZ2VzLCBidXQgd2UgbWFpbnRhaW4gaXQpXG4gICAgLy8gTm90ZTogRWZmZWN0IG11c3QgYmUgaW4gY29uc3RydWN0b3IsIG5vdCBsaWZlY3ljbGUgaG9va3MgKE5HMDIwMyBlcnJvciBvdGhlcndpc2UpXG4gICAgLy8gZWZmZWN0KCgpID0+IHtcbiAgICAvLyAgIGNvbnN0IGNvbmZpZyA9IHRoaXMudGFibGVDb25maWcoKTtcbiAgICAvLyAgIGlmICghY29uZmlnPy5wYWdpbmF0aW9uQ29uZmlnIHx8ICF0aGlzLnRhYmxlPy5uYXRpdmVFbGVtZW50KSByZXR1cm47XG4gICAgXG4gICAgLy8gICBjb25zdCBoZWlnaHQgPSBjb25maWcuaGVpZ2h0O1xuICAgIC8vICAgLy8gT2xkIGJlaGF2aW9yOiBoZWlnaHQgLSA1NiArIFwicHhcIiAobWFpbnRhaW5zIHRoZSBmbGF3IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxuICAgIC8vICAgY29uc3QgcmVzdWx0ID0gKGhlaWdodCBhcyBhbnkpIC0gNTY7XG4gICAgLy8gICBjb25zdCBmaW5hbEhlaWdodCA9IHJlc3VsdCArIFwicHhcIjtcbiAgICAvLyAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LCBcImhlaWdodFwiLCBmaW5hbEhlaWdodCk7XG4gICAgLy8gfSk7XG4gIH1cblxuXG4gIC8vIEZ1bmN0aW9uIHRvIGhhbmRsZSByb3cgY2xpY2tcbiAgc2VsZWN0Um93KGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5oYXNDaGVja2JveEFjdGlvbnMoKSkgcmV0dXJuO1xuICAgIHRoaXMuYWN0aXZlUm93SW5kZXguc2V0KFtpbmRleF0pOyAvLyBTZXQgdGhlIHNlbGVjdGVkIGluZGV4IHRvIHRoZSBjbGlja2VkIHJvdydzIGluZGV4XG4gICAgISF0aGlzLnRhYmxlQ29uZmlnKCkucm93Q29uZmlnLmFjdGlvbiAmJiB0aGlzLnRhYmxlQ29uZmlnKCkucm93Q29uZmlnLmFjdGlvbihpbmRleCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhc0NoZWNrYm94QWN0aW9ucy5zZXQodGhpcy50YWJsZUNvbmZpZygpLmNvbENvbmZpZz8uc29tZShjb2wgPT4gY29sLnR5cGUgPT09IFwiYWN0aW9uc1wiICYmIGNvbC5hY3Rpb25UeXBlID09PSBcImNoZWNrYm94XCIpKTtcbiAgICB0aGlzLnRhYmxlTGVuZ3RoLnNldCghIXRoaXMudGFibGVEYXRhKCkgPyB0aGlzLnRhYmxlRGF0YSgpLmxlbmd0aCA6IDApO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZpbHRlcnMoKTtcbiAgICBpZiAodGhpcy50YWJsZUNvbmZpZygpLnBhZ2luYXRpb25Db25maWcpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2luYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudGFibGVDb25maWcoKS5jYW5TY3JvbGxIb3Jpem9udGFsbHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gTm90ZTogV2UgY2FuJ3QgZGlyZWN0bHkgbW9kaWZ5IGlucHV0IHNpZ25hbHMsIHRoaXMgc2hvdWxkIGJlIGhhbmRsZWQgYnkgcGFyZW50IGNvbXBvbmVudFxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZXZlbnQgPT4ge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgIGxldCBpc0NoZWNrQm94Q2xpY2tlZCA9IHRydWU7XG4gICAgICAgIGxldCB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQuY2xhc3NOYW1lID09PSBcImNoZWNrbWFya1wiKSB7XG4gICAgICAgICAgaXNDaGVja0JveENsaWNrZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2hvd0ZpbHRlci5zZXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGlzQ2xpY2tJbnNpZGVFbGVtZW50ID0gdGhpcy5maWx0ZXIuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgaWYgKCFpc0NsaWNrSW5zaWRlRWxlbWVudCAmJiAhaXNDaGVja0JveENsaWNrZWQpIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZUZpbHRlcih0aGlzLmZpbHRlck5hbWUoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGZldGNoIGNvbGxhcHNlQ29sSW5kZXggYW5kIHByZXZpZXdMaW5lcyBpZiBwcmVzZW50XG4gICAgdGhpcy5yb3dDb2xsYXBzZUNvbmZpZ0luZGV4LnNldCh0aGlzLnRhYmxlQ29uZmlnKCk/LmNvbENvbmZpZz8uZmluZEluZGV4KFxuICAgICAgY29sID0+IGNvbC50eXBlID09PSAnYWN0aW9ucycgJiYgY29sLmFjdGlvblR5cGUgPT09ICdyb3ctY29sbGFwc2UnXG4gICAgKSk7XG4gICAgaWYgKHRoaXMucm93Q29sbGFwc2VDb25maWdJbmRleCgpICE9PSAtMSkge1xuICAgICAgdGhpcy5jb2xsYXBzZUNvbEluZGV4LnNldCh0aGlzLnRhYmxlQ29uZmlnKCkuY29sQ29uZmlnW3RoaXMucm93Q29sbGFwc2VDb25maWdJbmRleCgpXS5jb2xsYXBzZUNvbHVtbkluZGV4ID8/IG51bGwpO1xuICAgICAgdGhpcy5wcmV2aWV3TGluZXMuc2V0KHRoaXMudGFibGVDb25maWcoKS5jb2xDb25maWdbdGhpcy5yb3dDb2xsYXBzZUNvbmZpZ0luZGV4KCldLnByZXZpZXdMaW5lcyA/PyBudWxsKTtcbiAgICAgIHRoaXMuYnVpbGRFeHBhbmRlZE1hcCgpO1xuICAgIH1cbiAgfVxuXG4gIGJ1aWxkRXhwYW5kZWRNYXAoKTogdm9pZHtcbiAgICBjb25zdCBuZXdFeHBhbmRlZE1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcbiAgICBjb25zdCBjb2xsYXBzZUluZGV4ID0gdGhpcy5yb3dDb2xsYXBzZUNvbmZpZ0luZGV4KCk7XG4gICAgXG4gICAgdGhpcy50YWJsZURhdGEoKS5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICAgIG5ld0V4cGFuZGVkTWFwW2Ake3Jvd0luZGV4fWBdID0gcm93W2NvbGxhcHNlSW5kZXhdO1xuICAgIH0pO1xuICAgIHRoaXMuZXhwYW5kZWRNYXAuc2V0KG5ld0V4cGFuZGVkTWFwKTtcbn1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gVmlld0NoaWxkIGlzIG5vdyBhdmFpbGFibGUgLSBtYW51YWxseSB0cmlnZ2VyIGhlaWdodCBjYWxjdWxhdGlvbiBvbmNlXG4gICAgLy8gVGhlIGVmZmVjdCBpbiBjb25zdHJ1Y3RvciB3aWxsIGhhbmRsZSBzdWJzZXF1ZW50IGNvbmZpZyBjaGFuZ2VzXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy50YWJsZUNvbmZpZygpO1xuICAgIGlmIChjb25maWc/LnBhZ2luYXRpb25Db25maWcgJiYgdGhpcy50YWJsZT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgY29uc3QgaGVpZ2h0ID0gY29uZmlnLmhlaWdodDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IChoZWlnaHQgYXMgYW55KSAtIDU2O1xuICAgICAgY29uc3QgZmluYWxIZWlnaHQgPSByZXN1bHQgKyBcInB4XCI7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFibGUubmF0aXZlRWxlbWVudCwgXCJoZWlnaHRcIiwgZmluYWxIZWlnaHQpO1xuICAgIH1cbiAgfVxuICBcbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy50YWJsZUxlbmd0aC5zZXQodGhpcy50YWJsZURhdGEoKT8ubGVuZ3RoID8/IDApO1xuICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnKCkuYWN0aXZlUm93SW5kZXggIT09IG51bGwgJiYgdGhpcy50YWJsZUNvbmZpZygpLmFjdGl2ZVJvd0luZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVJvd0luZGV4ID0gdGhpcy50YWJsZUNvbmZpZygpLmFjdGl2ZVJvd0luZGV4O1xuICAgICAgdGhpcy5hY3RpdmVSb3dJbmRleC5zZXQoQXJyYXkuaXNBcnJheShhY3RpdmVSb3dJbmRleCkgPyBhY3RpdmVSb3dJbmRleCA6IFthY3RpdmVSb3dJbmRleF0pXG4gICAgfVxuICB9XG5cbiAgLy8gRmlsdGVyIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGluaXRpYWxpemVGaWx0ZXJzKCkge1xuICAgIGNvbnN0IG5ld0FwcGxpZWRGaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+IH0gPSB7fTtcbiAgICBjb25zdCBhbGxGaWx0ZXJzOiBBcnJheTxGaWx0ZXI+ID0gW107XG4gICAgXG4gICAgZm9yIChsZXQgY29sSGVhZGVyIG9mIHRoaXMudGFibGVDb25maWcoKT8uY29sSGVhZGVyQ29uZmlnKSB7XG4gICAgICBpZiAoY29sSGVhZGVyLmZpbHRlcnMpIHtcbiAgICAgICAgbGV0IGZpbHRlcnMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgZmlsdGVyIG9mIGNvbEhlYWRlci5maWx0ZXJzKSB7XG4gICAgICAgICAgaWYgKGZpbHRlci5jaGVja2VkKSB7XG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBmaWx0ZXIubmFtZSxcbiAgICAgICAgICAgICAgdmFsdWU6IGZpbHRlci52YWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFkZCBhbGwgZmlsdGVycyB0byB0aGUgZmlsdGVyRGF0YSBhcnJheVxuICAgICAgICAgIGFsbEZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA+IDApIG5ld0FwcGxpZWRGaWx0ZXJzW2NvbEhlYWRlci5kYXRhXSA9IGZpbHRlcnM7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYXBwbGllZEZpbHRlcnMuc2V0KG5ld0FwcGxpZWRGaWx0ZXJzKTtcbiAgICB0aGlzLmZpbHRlckRhdGEuc2V0KGFsbEZpbHRlcnMpO1xuIH1cbiAgdG9nZ2xlRmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5zaG93RmlsdGVyKCkpIHtcbiAgICAgIHRoaXMuZmlsdGVyTmFtZS5zZXQoZmlsdGVyTmFtZSk7XG4gICAgICB0aGlzLnNob3dGaWx0ZXIuc2V0KHRydWUpO1xuXG4gICAgICBsZXQgb2ZmU2V0ID0gMDtcbiAgICAgIGxldCBjb2xIZWFkZXJzUmV2ZXJzZWQgPSB0aGlzLmNvbEhlYWRlcnMudG9BcnJheSgpLnJldmVyc2UoKTtcblxuICAgICAgZm9yIChsZXQgaGVhZGVyIG9mIGNvbEhlYWRlcnNSZXZlcnNlZCkge1xuICAgICAgICBpZiAoaGVhZGVyLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID09PSBmaWx0ZXJOYW1lKSBicmVhaztcbiAgICAgICAgb2ZmU2V0ICs9IGhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJDb250YWluZXJTdHlsZXMuc2V0KHtcbiAgICAgICAgdG9wOiBcIjQ0cHhcIixcbiAgICAgICAgcmlnaHQ6IG9mZlNldCA+IDAgPyBvZmZTZXQgLSAxMTYgKyBcInB4XCIgOiBcIjEycHhcIlxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyTmFtZS5zZXQoXCJcIik7XG4gICAgICB0aGlzLmZpbHRlckRhdGEuc2V0KFtdKTtcbiAgICAgIHRoaXMuc2hvd0ZpbHRlci5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICB1cGRhdGVBcHBsaWVkRmlsdGVycyhhcHBsaWVkRmlsdGVyczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4pIHtcbiAgICBjb25zdCBjdXJyZW50RmlsdGVycyA9IHRoaXMuYXBwbGllZEZpbHRlcnMoKTtcbiAgICBpZiAoYXBwbGllZEZpbHRlcnMubGVuZ3RoID09IDApIHtcbiAgICAgIGRlbGV0ZSBjdXJyZW50RmlsdGVyc1t0aGlzLmZpbHRlck5hbWUoKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRGaWx0ZXJzW3RoaXMuZmlsdGVyTmFtZSgpXSA9IGFwcGxpZWRGaWx0ZXJzO1xuICAgIH1cbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzLnNldCh7IC4uLmN1cnJlbnRGaWx0ZXJzIH0pO1xuICAgIHRoaXMuZmlsdGVyc1VwZGF0ZWQuZW1pdCh7IC4uLnRoaXMuYXBwbGllZEZpbHRlcnMoKSB9KTtcbiAgICB0aGlzLnRvZ2dsZUZpbHRlcih0aGlzLmZpbHRlck5hbWUoKSk7XG4gIH1cblxuICAvLyBQYWdpbmF0aW9uIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGluaXRpYWxpemVQYWdpbmF0aW9uKCkge1xuICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnKCkucGFnaW5hdGlvbkNvbmZpZykge1xuICAgICAgLy8gSW5pdGlhbGl6ZSBzZWxlY3RlZFBhZ2UgZnJvbSBjb25maWcgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSBkZWZhdWx0IHRvIDFcbiAgICAgIC8vIGNvbnN0IGNvbmZpZ1NlbGVjdGVkUGFnZSA9IHRoaXMudGFibGVDb25maWcoKS5wYWdpbmF0aW9uQ29uZmlnLnNlbGVjdGVkUGFnZTtcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRQYWdlLnNldChjb25maWdTZWxlY3RlZFBhZ2UgPz8gMSk7XG4gICAgICBcbiAgICAgIGxldCBsZW4gPSB0aGlzLnRhYmxlQ29uZmlnKCkucGFnaW5hdGlvbkNvbmZpZy5ub09mUGFnZXM7XG4gICAgICBpZiAobGVuIDw9IDcpIHtcbiAgICAgICAgY29uc3QgbmV3UGFnZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbGVuOyBpKyspIHtcbiAgICAgICAgICBuZXdQYWdlcy5wdXNoKGkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFnZXMuc2V0KG5ld1BhZ2VzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFnZXMuc2V0KFsxLCAyLCAzLCA0LCAwLCBsZW5dKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIC8vIEd1YXJkIGNsYXVzZSB0byBwcmV2ZW50IG91dC1vZi1yYW5nZSB1cGRhdGVzXG4gICAgaWYgKHBhZ2VOdW1iZXIgPCAxIHx8IHBhZ2VOdW1iZXIgPiB0aGlzLnRhYmxlQ29uZmlnKCkucGFnaW5hdGlvbkNvbmZpZy5ub09mUGFnZXMpIHJldHVybjtcblxuICAgIC8qKlxuICAgICAqIExFR0FDWSBDT0RFIFdPUktBUk9VTkQ6IFRyYWNrIHVzZXItaW5pdGlhdGVkIHBhZ2Ugc2VsZWN0aW9uLlxuICAgICAqIFxuICAgICAqIFdlIHRyYWNrIHRoaXMgdG8gcHJldmVudCB0aGUgZWZmZWN0IGZyb20gb3ZlcndyaXRpbmcgdXNlciBzZWxlY3Rpb25zIHdoZW5cbiAgICAgKiBsZWdhY3kgcGFyZW50IGNvbXBvbmVudHMgZG9uJ3QgdXBkYXRlIGNvbmZpZy5zZWxlY3RlZFBhZ2UuIFRoZSBlZmZlY3Qgd2lsbFxuICAgICAqIHNraXAgc3luY2luZyBmcm9tIGNvbmZpZyB3aGlsZSB0aGlzIHBhZ2UgaXMgbWFya2VkIGFzIHVzZXItc2VsZWN0ZWQuXG4gICAgICogXG4gICAgICogSURFQUw6IFBhcmVudCBzaG91bGQgdXBkYXRlIGNvbmZpZy5zZWxlY3RlZFBhZ2UgaW4gcGFnZVNlbGVjdGVkIGhhbmRsZXIuXG4gICAgICogT25jZSBhbGwgcGFyZW50cyBkbyB0aGlzLCB3ZSBjYW4gcmVtb3ZlIHVzZXJTZWxlY3RlZFBhZ2UgdHJhY2tpbmcuXG4gICAgICovXG4gICAgdGhpcy5pc0ludGVybmFsUGFnZVVwZGF0ZSA9IHRydWU7XG4gICAgdGhpcy51c2VyU2VsZWN0ZWRQYWdlID0gcGFnZU51bWJlcjtcblxuICAgIC8vIFVwZGF0ZSBpbnRlcm5hbCBzdGF0ZSBpbW1lZGlhdGVseSAtIHRoaXMgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aFxuICAgIHRoaXMuc2VsZWN0ZWRQYWdlLnNldChwYWdlTnVtYmVyKTtcblxuICAgIC8vIFJlc2V0IGhlYWRlciBjaGVja2JveCB3aGVuIG5hdmlnYXRpbmcgdG8gYSBkaWZmZXJlbnQgcGFnZVxuICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3guc2V0KGZhbHNlKTtcbiAgICBcbiAgICAvLyBVcGRhdGUgcGFnZSBudW1iZXJzIGRpc3BsYXkgZm9yIHBhZ2luYXRpb24gd2l0aCBtYW55IHBhZ2VzXG4gICAgbGV0IGxlbiA9IHRoaXMudGFibGVDb25maWcoKS5wYWdpbmF0aW9uQ29uZmlnLm5vT2ZQYWdlcztcbiAgICBpZiAobGVuID4gNykge1xuICAgICAgaWYgKHBhZ2VOdW1iZXIgLSAyIDw9IDEpIHtcbiAgICAgICAgdGhpcy5wYWdlcy5zZXQoWzEsIDIsIDMsIDQsIDAsIGxlbl0pO1xuICAgICAgfSBlbHNlIGlmIChwYWdlTnVtYmVyIC0gMiA+IDEgJiYgcGFnZU51bWJlciArIDIgPCBsZW4pIHtcbiAgICAgICAgdGhpcy5wYWdlcy5zZXQoWzEsIDAsIHBhZ2VOdW1iZXIgLSAxLCBwYWdlTnVtYmVyLCBwYWdlTnVtYmVyICsgMSwgMCwgbGVuXSk7XG4gICAgICB9IGVsc2UgaWYgKHBhZ2VOdW1iZXIgKyAyID49IGxlbikge1xuICAgICAgICB0aGlzLnBhZ2VzLnNldChbMSwgMCwgbGVuIC0gMywgbGVuIC0gMiwgbGVuIC0gMSwgbGVuXSk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIEVtaXQgdG8gcGFyZW50IC0gdGhleSBtYXkgb3IgbWF5IG5vdCB1cGRhdGUgY29uZmlnLCBidXQgd2UgcHJvdGVjdCBvdXIgc3RhdGVcbiAgICB0aGlzLnBhZ2VTZWxlY3RlZC5lbWl0KHBhZ2VOdW1iZXIpO1xuICB9XG5cbiAgLy8gTWFpbiBjb250YWluZXIgcmVsYXRlZCBmdW5jdGlvbnNcbiAgZ2V0Q29udGFpbmVySGVpZ2h0KCkge1xuICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnKCk/LmhlaWdodCkgcmV0dXJuIHRoaXMudGFibGVDb25maWcoKS5oZWlnaHQ7XG4gICAgZWxzZSByZXR1cm4gXCJcIjtcbiAgfVxuICBnZXRDb250YWluZXJXaWR0aCgpIHtcbiAgICBpZiAodGhpcy50YWJsZUNvbmZpZygpPy53aWR0aCkgcmV0dXJuIHRoaXMudGFibGVDb25maWcoKS53aWR0aDtcbiAgICBlbHNlIHJldHVybiBcIlwiO1xuICB9XG5cbiAgLy8gQ29sdW1uIEhlYWRlcnMgcmVsYXRlZCBmdW5jdGlvbnNcbiAgZ2V0Q29sSGVhZGVyc1Jvd1N0eWxlcygpIHtcbiAgICBjb25zdCB7IGNvbEhlYWRlcnNSb3dDb25maWcgfSA9IHRoaXMudGFibGVDb25maWcoKTtcbiAgICBjb25zdCBtaW5IZWlnaHQgPSBjb2xIZWFkZXJzUm93Q29uZmlnPy5oZWlnaHQgfHwgXCI0NHB4XCI7XG4gICAgY29uc3QgYm9yZGVyVG9wID0gKGNvbEhlYWRlcnNSb3dDb25maWc/LnN0eWxlIGFzIGFueSk/LmJvcmRlclRvcCB8fCBcIlwiO1xuICAgIGNvbnN0IGJvcmRlckJvdHRvbSA9IChjb2xIZWFkZXJzUm93Q29uZmlnPy5zdHlsZSBhcyBhbnkpPy5ib3JkZXJCb3R0b20gfHwgXCIxcHggc29saWQgI0UwRTBFMFwiO1xuICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IChjb2xIZWFkZXJzUm93Q29uZmlnPy5zdHlsZSBhcyBhbnkpPy5iYWNrZ3JvdW5kQ29sb3IgfHwgXCIjRkZGRkZGXCI7XG4gICAgY29uc3QgZm9udFNpemUgPSAoY29sSGVhZGVyc1Jvd0NvbmZpZz8uc3R5bGUgYXMgYW55KT8uZm9udFNpemUgfHwgXCIxNHB4XCI7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibWluLWhlaWdodFwiOiBtaW5IZWlnaHQsXG4gICAgICBcImJvcmRlci10b3BcIjogYm9yZGVyVG9wLFxuICAgICAgXCJib3JkZXItYm90dG9tXCI6IGJvcmRlckJvdHRvbSxcbiAgICAgIFwiYmFja2dyb3VuZC1jb2xvclwiOiBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBcImZvbnQtc2l6ZVwiOiBmb250U2l6ZVxuICAgIH07XG4gIH1cblxuICBvblNvcnRDaGFuZ2Uoc29ydFN0YXRlOiBTb3J0U3RhdGUpIHtcbiAgICAvLyBFbWl0IHRoZSBzb3J0IGNoYW5nZSB0byB0aGUgcGFyZW50IGNvbXBvbmVudFxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnRTdGF0ZSk7XG4gICAgXG4gICAgLy8gSGFuZGxlIG11bHRpLWNvbHVtbiBzb3J0IGlmIGVuYWJsZWRcbiAgICBpZiAodGhpcy50YWJsZUNvbmZpZygpLm11bHRpQ29sdW1uU29ydCkge1xuICAgICAgY29uc3QgY3VycmVudE11bHRpU29ydCA9IHRoaXMubXVsdGlDb2x1bW5Tb3J0KCk7XG4gICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRNdWx0aVNvcnQuZmluZEluZGV4KHNvcnQgPT4gc29ydC5jb2x1bW4gPT09IHNvcnRTdGF0ZS5jb2x1bW4pO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBpZiAoc29ydFN0YXRlLmRpcmVjdGlvbiA9PT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IG5ld011bHRpU29ydCA9IFsuLi5jdXJyZW50TXVsdGlTb3J0XTtcbiAgICAgICAgICBuZXdNdWx0aVNvcnQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB0aGlzLm11bHRpQ29sdW1uU29ydC5zZXQobmV3TXVsdGlTb3J0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXdNdWx0aVNvcnQgPSBbLi4uY3VycmVudE11bHRpU29ydF07XG4gICAgICAgICAgbmV3TXVsdGlTb3J0W2luZGV4XSA9IHNvcnRTdGF0ZTtcbiAgICAgICAgICB0aGlzLm11bHRpQ29sdW1uU29ydC5zZXQobmV3TXVsdGlTb3J0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzb3J0U3RhdGUuZGlyZWN0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMubXVsdGlDb2x1bW5Tb3J0LnNldChbLi4uY3VycmVudE11bHRpU29ydCwgc29ydFN0YXRlXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0QWN0aW9uc0NlbGxTdHlsZShzdHlsZTogYW55KTogYW55IHtcbiAgICBpZiAoIXN0eWxlKSByZXR1cm4ge307XG4gICAgY29uc3QgeyB3aWR0aCwgLi4ucmVzdFN0eWxlIH0gPSBzdHlsZTtcbiAgICByZXR1cm4gcmVzdFN0eWxlO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhldmVudDogYW55LCByb3dJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFjdGlvblR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgIGNvbnN0IGFjdGlvbkluZm8gPSB0aGlzLmZpbmRBY3Rpb25Db25maWcoJ2NoZWNrYm94Jyk7XG4gICAgICBpZiAoYWN0aW9uSW5mbyAmJiB0aGlzLnRhYmxlRGF0YSgpW3Jvd0luZGV4XSkge1xuICAgICAgICBjb25zdCB7IGluZGV4LCBjb25maWcgfSA9IGFjdGlvbkluZm87XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVSb3dzID0gdGhpcy5hY3RpdmVSb3dJbmRleCgpO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgY2hlY2tlZFJvd0luZGljZXMgPSBldmVudC52YWx1ZVxuICAgICAgICAgID8gWy4uLmN1cnJlbnRBY3RpdmVSb3dzLCByb3dJbmRleF1cbiAgICAgICAgICA6IGN1cnJlbnRBY3RpdmVSb3dzLmZpbHRlcihpID0+IGkgIT09IHJvd0luZGV4KTtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkVGFibGVEYXRhID0gdGhpcy51cGRhdGVDaGVja2JveFN0YXRlKGNoZWNrZWRSb3dJbmRpY2VzLCBpbmRleCk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBjaGVja2VkSXRlbXMgPSB0aGlzLmJ1aWxkQ2hlY2tlZEl0ZW1zKGNoZWNrZWRSb3dJbmRpY2VzLCB1cGRhdGVkVGFibGVEYXRhKTtcbiAgICAgICAgY29uZmlnLmFjdGlvbj8uKGNoZWNrZWRJdGVtcywgcm93SW5kZXgpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmKGV2ZW50LmFjdGlvblR5cGUgPT09ICdyb3ctY29sbGFwc2UnKXtcbiAgICAgIGNvbnN0IHJvd0NvbGxhcHNlID0gdGhpcy5maW5kQWN0aW9uQ29uZmlnKCdyb3ctY29sbGFwc2UnKTtcbiAgICAgIGlmIChyb3dDb2xsYXBzZSAmJiB0aGlzLnRhYmxlRGF0YSgpW3Jvd0luZGV4XSkge1xuICAgICAgICAvLyBOb3RlOiBXZSBjYW4ndCBkaXJlY3RseSBtb2RpZnkgaW5wdXQgc2lnbmFscywgdGhpcyBzaG91bGQgYmUgaGFuZGxlZCBieSBwYXJlbnQgY29tcG9uZW50XG4gICAgICAgIHJvd0NvbGxhcHNlLmNvbmZpZy5hY3Rpb24/Lih0aGlzLnRhYmxlRGF0YSgpKTtcbiAgICAgICAgdGhpcy5idWlsZEV4cGFuZGVkTWFwKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZmluZEFjdGlvbkNvbmZpZyhhY3Rpb25UeXBlOiBzdHJpbmcpOiB7IGluZGV4OiBudW1iZXIsIGNvbmZpZzogQ29sQ29uZmlnIH0gfCBudWxsIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGFibGVDb25maWcoKS5jb2xDb25maWcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbCA9IHRoaXMudGFibGVDb25maWcoKS5jb2xDb25maWdbaV07XG4gICAgICBpZiAoY29sLnR5cGUgPT09ICdhY3Rpb25zJyAmJiBjb2wuYWN0aW9uVHlwZSA9PT0gYWN0aW9uVHlwZSkge1xuICAgICAgICByZXR1cm4geyBpbmRleDogaSwgY29uZmlnOiBjb2wgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgXG5cbiAgaXNSb3dEaXNhYmxlZChyb3c6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy50YWJsZUNvbmZpZygpLnJvd0NvbmZpZy5kaXNhYmxlUm93ID09PSBcImZ1bmN0aW9uXCIgPyB0aGlzLnRhYmxlQ29uZmlnKCkucm93Q29uZmlnLmRpc2FibGVSb3cocm93KSA6IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDaGVja2JveFN0YXRlKGNoZWNrZWRSb3dJbmRpY2VzOiBudW1iZXJbXSwgY2hlY2tib3hDb2xJbmRleDogbnVtYmVyKTogYW55W11bXSB7XG4gICAgY29uc3QgY3VycmVudERhdGEgPSB0aGlzLnRhYmxlRGF0YSgpO1xuICAgIFxuICAgIHRoaXMuYWN0aXZlUm93SW5kZXguc2V0KGNoZWNrZWRSb3dJbmRpY2VzKTtcbiAgICBcbiAgICBjb25zdCB1cGRhdGVkVGFibGVEYXRhID0gY3VycmVudERhdGEubWFwKChyb3csIGkpID0+IHtcbiAgICAgIGNvbnN0IHJvd0NvcHkgPSBBcnJheS5mcm9tKHJvdyk7XG4gICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5pc1Jvd0Rpc2FibGVkKHJvdyk7XG4gICAgICBcbiAgICAgIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgICByb3dDb3B5W2NoZWNrYm94Q29sSW5kZXhdID0gY2hlY2tlZFJvd0luZGljZXMuaW5jbHVkZXMoaSk7XG4gICAgICB9XG4gICAgICBcbiAgICAgIHJldHVybiByb3dDb3B5O1xuICAgIH0pO1xuICAgIFxuICAgIHRoaXMuaGVhZGVyQWN0aW9uPy5lbWl0KHtcbiAgICAgIHR5cGU6IFwiY2hlY2tib3hUb2dnbGVcIixcbiAgICAgIHBheWxvYWQ6IHVwZGF0ZWRUYWJsZURhdGFcbiAgICB9KTtcbiAgICBcbiAgICByZXR1cm4gdXBkYXRlZFRhYmxlRGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDaGVja2VkSXRlbXMoY2hlY2tlZFJvd0luZGljZXM6IG51bWJlcltdLCB1cGRhdGVkVGFibGVEYXRhOiBhbnlbXVtdKTogYW55W11bXSB7XG4gICAgcmV0dXJuIGNoZWNrZWRSb3dJbmRpY2VzXG4gICAgICAubWFwKGNoZWNrZWRJbmRleCA9PiB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHVwZGF0ZWRUYWJsZURhdGFbY2hlY2tlZEluZGV4XTtcbiAgICAgICAgaWYgKHJvdykge1xuICAgICAgICAgIHJldHVybiBbLi4ucm93XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKHJvdyA9PiByb3cgIT09IG51bGwpIGFzIGFueVtdW107XG4gIH1cblxuICB0b2dnbGVDaGVja2JveCgpIHtcbiAgICB0aGlzLnNlbGVjdEFsbENoZWNrYm94LnNldCghdGhpcy5zZWxlY3RBbGxDaGVja2JveCgpKTtcbiAgICBjb25zdCBjaGVja2JveENvbEluZGV4ID0gdGhpcy50YWJsZUNvbmZpZygpLmNvbENvbmZpZy5maW5kSW5kZXgoY29sID0+IGNvbC50eXBlID09PSAnYWN0aW9ucycgJiYgY29sLmFjdGlvblR5cGUgPT09ICdjaGVja2JveCcpO1xuICAgIGlmIChjaGVja2JveENvbEluZGV4ICE9PSAtMSkge1xuICAgICAgY29uc3QgaXNTZWxlY3RBbGwgPSB0aGlzLnNlbGVjdEFsbENoZWNrYm94KCk7XG4gICAgICBjb25zdCBjdXJyZW50RGF0YSA9IHRoaXMudGFibGVEYXRhKCk7XG4gICAgICBcbiAgICAgIGNvbnN0IGNoZWNrZWRSb3dJbmRpY2VzID0gaXNTZWxlY3RBbGxcbiAgICAgICAgPyBjdXJyZW50RGF0YVxuICAgICAgICAgICAgLm1hcCgocm93LCBpbmRleCkgPT4gdGhpcy5pc1Jvd0Rpc2FibGVkKHJvdykgPyAtMSA6IGluZGV4KVxuICAgICAgICAgICAgLmZpbHRlcihpbmRleCA9PiBpbmRleCAhPT0gLTEpXG4gICAgICAgIDogW107XG4gICAgICBcbiAgICAgIHRoaXMudXBkYXRlQ2hlY2tib3hTdGF0ZShjaGVja2VkUm93SW5kaWNlcywgY2hlY2tib3hDb2xJbmRleCk7XG4gICAgfVxuICB9XG5cblxuICBvblBhZ2VTaXplQ2hhbmdlKHNlbGVjdGVkT3B0aW9uOiBEcm9wZG93bkl0ZW0pIHtcbiAgICB0aGlzLnBhZ2VTaXplQ2hhbmdlZC5lbWl0KHBhcnNlSW50KHNlbGVjdGVkT3B0aW9uLnZhbHVlKSk7XG4gIH1cblxuICBzaG91bGRTaG93UGFnaW5hdGlvbigpOiBib29sZWFuIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMudGFibGVDb25maWcoKT8ucGFnaW5hdGlvbkNvbmZpZztcbiAgICAgIGlmICghY29uZmlnKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCBoYXNNdWx0aXBsZVBhZ2VzID0gY29uZmlnLm5vT2ZQYWdlcyA+IDE7XG4gICAgICBjb25zdCBoYXNFbm91Z2hEYXRhID0gdGhpcy50YWJsZUxlbmd0aCgpID4gY29uZmlnLnJvd3NQZXJQYWdlO1xuICAgICAgcmV0dXJuIHRoaXMuc2hvd1BhZ2VTaXplRHJvcGRvd24oKSB8fCBoYXNNdWx0aXBsZVBhZ2VzIHx8IGhhc0Vub3VnaERhdGE7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbmZpZyB7XG4gIGhlaWdodDogc3RyaW5nIHwgXCIxMDAlXCI7XG4gIHdpZHRoOiBzdHJpbmcgfCBcIjEwMCVcIjtcbiAgcGFnaW5hdGlvbkNvbmZpZz86IFBhZ2luYXRpb25Db25maWcgfCB1bmRlZmluZWQgfCBudWxsO1xuICBjb2xIZWFkZXJzUm93Q29uZmlnOiBSb3dDb25maWcgfCB1bmRlZmluZWQgfCBudWxsO1xuICByb3dDb25maWc6IFJvd0NvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIGNvbEhlYWRlckNvbmZpZzogQXJyYXk8Q29sSGVhZGVyQ29uZmlnPjtcbiAgY29sQ29uZmlnOiBBcnJheTxDb2xDb25maWc+O1xuICBjYW5FeHBhbmQ/OiBib29sZWFuO1xuICBjYW5TY3JvbGxIb3Jpem9udGFsbHk/OiBib29sZWFuO1xuICBjZWxsSG92ZXI/OiBib29sZWFuO1xuICBhY3RpdmVSb3dJbmRleD86IG51bWJlciB8IG51bWJlcltdO1xuICBtdWx0aUNvbHVtblNvcnQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uQ29uZmlnIHtcbiAgbm9PZlBhZ2VzOiBudW1iZXI7XG4gIHJvd3NQZXJQYWdlOiBudW1iZXI7XG4gIHRvdGFsTm9PZlJvd3M6IG51bWJlcjtcbiAgc2VsZWN0ZWRQYWdlPzogbnVtYmVyO1xuICBkaXNhYmxlUGFnZUp1bXBpbmc/OiBib29sZWFuO1xuICBzaG93UGFnZVNpemVEcm9wZG93bj86IGJvb2xlYW47IC8vIFdoZW4gdHJ1ZSwgcm93c1BlclBhZ2UgdmFsdWUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHBhZ2VTaXplcyBhcnJheVxuICBwYWdlU2l6ZXM/OiBudW1iZXJbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUm93Q29uZmlnIHtcbiAgaGVpZ2h0Pzogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgc3R5bGU/OiB7fTtcbiAgYWN0aW9uPzogYW55O1xuICBkaXNhYmxlUm93PzogKGRhdGE6IGFueSkgPT4gYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sSGVhZGVyQ29uZmlnIHtcbiAgdHlwZTogXCJ0ZXh0XCIgfCBcIm51bWJlclwiIHwgXCJjdXN0b21cIiB8IFwiY2hlY2tib3hcIjtcbiAgZGF0YTogYW55O1xuICBjb21wb25lbnRSZWY/OiBhbnk7XG4gIGZpbHRlcnM/OiBBcnJheTxGaWx0ZXI+IHwgbnVsbDtcbiAgc3R5bGU/OiB7fTtcbiAgYWN0aW9uPzogYW55O1xuICBpc1NvcnRhYmxlPzogYm9vbGVhbjtcbiAgc29ydEFzY0ljb24/OiBzdHJpbmc7XG4gIHNvcnREZXNjSWNvbj86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sQ29uZmlnIHtcbiAgdHlwZTogXCJ0ZXh0XCIgfCBcIm51bWJlclwiIHwgXCJjdXN0b21cIiB8IFwiYWN0aW9uc1wiIHwgXCJodG1sXCI7XG4gIGNvbXBvbmVudFJlZj86IGFueTtcbiAgc3R5bGU/OiB7fTtcbiAgYWN0aW9uPzogYW55O1xuICBhY3Rpb25JdGVtcz86IEFjdGlvbkl0ZW1bXTtcbiAgYWN0aW9uVHlwZT86IFwiaW5saW5lXCIgfCBcImRyb3Bkb3duXCIgfCBcImNoZWNrYm94XCIgfCBcInJvdy1jb2xsYXBzZVwiOyAvLyBpbmxpbmUgZm9yIGluZGl2aWR1YWwgaWNvbnMsIGRyb3Bkb3duIGZvciBtZW51XG4gIGRpc2FibGU/OiAocm93RGF0YTogYW55KSA9PiBib29sZWFuO1xuICBjb2xsYXBzZUNvbHVtbkluZGV4PzogbnVtYmVyO1xuICBwcmV2aWV3TGluZXM/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkl0ZW0ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBkaXNhYmxlPzogKGRhdGE6IGFueSkgPT4gYm9vbGVhbjtcbiAgYWN0aW9uPzogKGRhdGE6IGFueSkgPT4gdm9pZDtcbiAgY2hpbGRyZW4/OiBBY3Rpb25JdGVtW107XG59XG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsQWN0aW9uSXRlbSBleHRlbmRzIEFjdGlvbkl0ZW0ge1xuICBzaG93U3VibWVudT86IGJvb2xlYW47XG59XG4iLCI8ZGl2XG4gIFtuZ1N0eWxlXT1cIntcbiAgICBoZWlnaHQ6IGdldENvbnRhaW5lckhlaWdodCgpLFxuICAgIHdpZHRoOiBnZXRDb250YWluZXJXaWR0aCgpLFxuICAgICdvdmVyZmxvdy14JzogdGFibGVDb25maWcoKS5jYW5TY3JvbGxIb3Jpem9udGFsbHkgPyAnYXV0bycgOiAndW5zZXQnXG4gIH1cIlxuICBpZD1cIm1haW4tY29udGFpbmVyXCJcbj5cbiAgPG1pcy10YWJsZS1maWx0ZXJcbiAgICAjZmlsdGVyXG4gICAgKGZpbHRlcnNBcHBsaWVkKT1cInVwZGF0ZUFwcGxpZWRGaWx0ZXJzKCRldmVudClcIlxuICAgICpuZ0lmPVwic2hvd0ZpbHRlcigpXCJcbiAgICBbY29udGFpbmVyU3R5bGVzXT1cImZpbHRlckNvbnRhaW5lclN0eWxlcygpXCJcbiAgICBbZmlsdGVyc0RhdGFdPVwiZmlsdGVyRGF0YSgpXCJcbiAgPjwvbWlzLXRhYmxlLWZpbHRlcj5cbiAgPGRpdlxuICAgICN0YWJsZVxuICAgIGlkPVwidGFibGUtY29udGFpbmVyXCJcbiAgICBbbmdDbGFzc109XCJ7ICduby1zY3JvbGxiYXInOiBleHBhbmRlZEluZGV4KCkgPCAwLCBzY3JvbGxiYXI6ICEoZXhwYW5kZWRJbmRleCgpIDwgMCksICdzY3JvbGwtaG9yaXpvbnRhbGx5JzogdGFibGVDb25maWcoKS5jYW5TY3JvbGxIb3Jpem9udGFsbHkgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgW25nU3R5bGVdPVwiZ2V0Q29sSGVhZGVyc1Jvd1N0eWxlcygpXCJcbiAgICAgIGlkPVwiY29sLWhlYWRlcnMtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICNjb2xIZWFkZXJSZWZcbiAgICAgICAgKGNsaWNrKT1cImNvbEhlYWRlcj8uYWN0aW9uID8gY29sSGVhZGVyPy5hY3Rpb24oY29sSGVhZGVyKSA6IG51bGxcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgY29sSGVhZGVyIG9mIHRhYmxlQ29uZmlnKCk/LmNvbEhlYWRlckNvbmZpZ1wiXG4gICAgICAgIGNsYXNzPVwiY29sLWhlYWRlclwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICB3aWR0aDogY29sSGVhZGVyPy5zdHlsZT8ud2lkdGggfHwgJycsXG4gICAgICAgICAgY3Vyc29yOiBjb2xIZWFkZXIuYWN0aW9uID8gJ3BvaW50ZXInIDogJ2RlZmF1bHQnLFxuICAgICAgICAgICdqdXN0aWZ5LWNvbnRlbnQnOiBjb2xIZWFkZXI/LnN0eWxlPy5qdXN0aWZ5Q29udGVudFxuICAgICAgICAgICAgPyBjb2xIZWFkZXI/LnN0eWxlPy5qdXN0aWZ5Q29udGVudFxuICAgICAgICAgICAgOiBjb2xIZWFkZXIudHlwZSA9PT0gJ251bWJlcidcbiAgICAgICAgICAgID8gJ2ZsZXgtZW5kJ1xuICAgICAgICAgICAgOiAnc3BhY2UtYmV0d2VlbidcbiAgICAgICAgfVwiXG4gICAgICA+XG4gICAgICAgIDxwICpuZ0lmPVwiY29sSGVhZGVyPy50eXBlICE9PSAnY3VzdG9tJyAmJiBjb2xIZWFkZXI/LnR5cGUgIT09ICdjaGVja2JveCdcIiBjbGFzcz1cImNvbC1oZWFkZXItdGV4dFwiPlxuICAgICAgICAgIHt7IGNvbEhlYWRlcj8uZGF0YSB8fCBcIiBcIiB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKGNsaWNrKT1cImZpbHRlckRhdGEuc2V0KGNvbEhlYWRlci5maWx0ZXJzKTsgdG9nZ2xlRmlsdGVyKGNvbEhlYWRlci5kYXRhKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAqbmdJZj1cImNvbEhlYWRlcj8udHlwZSAhPT0gJ2N1c3RvbScgJiYgY29sSGVhZGVyPy5maWx0ZXJzICYmIGNvbEhlYWRlcj8uZmlsdGVycz8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImFwcGxpZWRGaWx0ZXJzKClbY29sSGVhZGVyLmRhdGFdPy5sZW5ndGggPiAwXCIgaWQ9XCJmaWx0ZXItYWN0aXZlXCI+PC9zcGFuPlxuICAgICAgICAgIDxzdmcgZmlsbD1cIm5vbmVcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTMgMTBcIiB3aWR0aD1cIjEzXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgY2xpcC1ydWxlPVwiZXZlbm9kZFwiXG4gICAgICAgICAgICAgIGQ9XCJNNC45NzU0NiAxMEg3LjY0MjEzVjhINC45NzU0NlYxMFpNMC4zMDg0NzIgMFYySDEyLjMwODVWMEgwLjMwODQ3MlpNMi4zMDg0NyA2SDEwLjMwODVWNEgyLjMwODQ3VjZaXCJcbiAgICAgICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2hlY2tib3goKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAqbmdJZj1cImNvbEhlYWRlcj8udHlwZSA9PT0gJ2NoZWNrYm94J1wiXG4gICAgICAgICAgY2xhc3M9XCJjaGVja2JveC1pY29uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtaXMtY2hlY2tib3ggW2NoZWNrZWRdPVwic2VsZWN0QWxsQ2hlY2tib3goKVwiPjwvbWlzLWNoZWNrYm94PlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY29sSGVhZGVyPy5pc1NvcnRhYmxlICYmICFjb2xIZWFkZXI/LmZpbHRlcnNcIiBhcHBTb3J0SWNvbnNcbiAgICAgICAgICBbY29sdW1uXT1cImNvbEhlYWRlclwiXG4gICAgICAgICAgW2FjdGl2ZVNvcnRdPVwiY3VycmVudFNvcnQoKVwiXG4gICAgICAgICAgW2FjdGl2ZVNvcnRzXT1cIm11bHRpQ29sdW1uU29ydCgpXCJcbiAgICAgICAgICBbbXVsdGlDb2x1bW5Tb3J0XT1cInRhYmxlQ29uZmlnKCkubXVsdGlDb2x1bW5Tb3J0XCJcbiAgICAgICAgICAoc29ydENoYW5nZSk9XCJvblNvcnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJzb3J0LWljb25cIj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY29sSGVhZGVyPy50eXBlID09PSAnY3VzdG9tJ1wiIGN1c3RvbVRhYmxlQ2VsbCBbY3VzdG9tQ29tcG9uZW50XT1cImNvbEhlYWRlcj8uY29tcG9uZW50UmVmXCIgW2RhdGFdPVwiY29sSGVhZGVyLmRhdGFcIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgXG4gICAgPGRpdiBpZD1cImRhdGEtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93LXdyYXBwZXJcIiAqbmdGb3I9XCJsZXQgcm93IG9mIHRhYmxlRGF0YSgpOyBsZXQgaSA9IGluZGV4OyBsZXQgcm93SW5kZXggPSBpbmRleFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ0LXJvd1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAndC1yb3ctaG92ZXInOiB0YWJsZUNvbmZpZygpLmNlbGxIb3ZlciwgJ2FjdGl2ZS1yb3cnOiBhY3RpdmVSb3dJbmRleCgpLmluY2x1ZGVzKGkpIH1cIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ21pbi1oZWlnaHQnOiB0YWJsZUNvbmZpZygpPy5yb3dDb25maWc/LmhlaWdodCA/IHRhYmxlQ29uZmlnKCkucm93Q29uZmlnLmhlaWdodCA6ICc0NHB4JyB9XCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0Um93KGkpXCJcbiAgICAgICAgICBbY2xhc3MuZGlzYWJsZWQtcm93XT1cImlzUm93RGlzYWJsZWQocm93KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCJ0YWJsZUNvbmZpZygpPy5jb2xDb25maWdbY29sSW5kZXhdPy5hY3Rpb24gJiYgdGFibGVDb25maWcoKT8uY29sQ29uZmlnW2NvbEluZGV4XT8uYWN0aW9uVHlwZSAhPT0gJ2NoZWNrYm94JyA/IHRhYmxlQ29uZmlnKCk/LmNvbENvbmZpZ1tjb2xJbmRleF0/LmFjdGlvbihjb2wpIDogbnVsbFwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sIG9mIHJvdzsgbGV0IGNvbEluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICB3aWR0aDogdGFibGVDb25maWcoKT8uY29sQ29uZmlnW2NvbEluZGV4XT8uc3R5bGU/LndpZHRoIHx8IHRhYmxlQ29uZmlnKCk/LmNvbEhlYWRlckNvbmZpZ1tjb2xJbmRleF0/LnN0eWxlPy53aWR0aCB8fCAnJ1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBjbGFzcz1cInQtY29sLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0LWNvbC1jb250YWluZXItaG92ZXInOiB0YWJsZUNvbmZpZygpLmNlbGxIb3ZlciB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidC1jb2xcIlxuICAgICAgICAgICAgICBbc3R5bGVdPVwidGFibGVDb25maWcoKS5jb2xDb25maWdbY29sSW5kZXhdPy5zdHlsZVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIGN1cnNvcjogdGFibGVDb25maWcoKS5jb2xDb25maWdbY29sSW5kZXhdPy5hY3Rpb24gPyAncG9pbnRlcicgOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgJ2p1c3RpZnktY29udGVudCc6IHRhYmxlQ29uZmlnKCkuY29sQ29uZmlnW2NvbEluZGV4XT8uc3R5bGU/Lmp1c3RpZnlDb250ZW50XG4gICAgICAgICAgICAgICAgICA/IHRhYmxlQ29uZmlnKCkuY29sQ29uZmlnW2NvbEluZGV4XT8uc3R5bGU/Lmp1c3RpZnlDb250ZW50XG4gICAgICAgICAgICAgICAgICA6IHRhYmxlQ29uZmlnKCkuY29sQ29uZmlnW2NvbEluZGV4XT8udHlwZSA9PT0gJ251bWJlcidcbiAgICAgICAgICAgICAgICAgID8gJ2ZsZXgtZW5kJ1xuICAgICAgICAgICAgICAgICAgOiAnc3BhY2UtYmV0d2VlbidcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInRhYmxlQ29uZmlnKCkuY29sQ29uZmlnW2NvbEluZGV4XT8udHlwZSAhPT0gJ2N1c3RvbScgJiYgdGFibGVDb25maWcoKS5jb2xDb25maWdbY29sSW5kZXhdPy50eXBlICE9PSAnYWN0aW9ucydcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICBjb2xvcjogdGFibGVDb25maWcoKT8uY29sQ29uZmlnW2NvbEluZGV4XT8uc3R5bGU/LmNvbG9yIHx8ICcnLFxuICAgICAgICAgICAgICAnLS1jb2xsYXBzZWQtbGluZXMnOiBwcmV2aWV3TGluZXMoKSB8fCAzXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2NvbGxhcHNlZC1jZWxsJzogY29sbGFwc2VDb2xJbmRleCgpID09IGNvbEluZGV4ICYmIGV4cGFuZGVkTWFwKClbcm93SW5kZXhdXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1jb2wtdGV4dFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBSZW5kZXIgYXMgSFRNTCAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZUNvbmZpZygpLmNvbENvbmZpZ1tjb2xJbmRleF0/LnR5cGUgPT09ICdodG1sJzsgZWxzZSBwbGFpblRleHRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb2xcIj48L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICBcbiAgICAgICAgICAgIDwhLS0gUmVuZGVyIGFzIHBsYWluIHRleHQgLS0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsYWluVGV4dD5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgY29sIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGVDb25maWcoKS5jb2xDb25maWdbY29sSW5kZXhdPy50eXBlID09PSAnY3VzdG9tJ1wiXG4gICAgICAgICAgICAgICAgW2N1c3RvbUNvbXBvbmVudF09XCJ0YWJsZUNvbmZpZygpLmNvbENvbmZpZ1tjb2xJbmRleF0uY29tcG9uZW50UmVmXCJcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICAgIGN1c3RvbVRhYmxlQ2VsbFxuICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bWlzLWFjdGlvbnMtY2VsbFxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZUNvbmZpZygpLmNvbENvbmZpZ1tjb2xJbmRleF0/LnR5cGUgPT09ICdhY3Rpb25zJ1wiXG4gICAgICAgICAgICAgICAgICBbY2VsbERhdGFdPVwiY29sXCJcbiAgICAgICAgICAgICAgICAgIFtjb25maWddPVwidGFibGVDb25maWcoKS5jb2xDb25maWdbY29sSW5kZXhdXCJcbiAgICAgICAgICAgICAgICAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbkNsaWNrKCRldmVudCwgcm93SW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ2Rpc2FibGUtYWN0aW9ucyc6ICh0YWJsZUNvbmZpZygpLmNvbENvbmZpZ1tjb2xJbmRleF0/LmFjdGlvblR5cGUgPT09ICdjaGVja2JveCcgfHwgdGFibGVDb25maWcoKS5jb2xDb25maWdbY29sSW5kZXhdPy5hY3Rpb25UeXBlID09PSAncm93LWNvbGxhcHNlJykgJiYgaXNSb3dEaXNhYmxlZChyb3cpXG4gICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICA+PC9taXMtYWN0aW9ucy1jZWxsPlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0YWJsZUNvbmZpZygpPy5jYW5FeHBhbmQgJiYgZXhwYW5kZWRJbmRleCgpID09PSBpXCIgY2xhc3M9XCJzdWItcm93XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1YlRhYmxlRGF0YUxvYWRpbmcoKVwiPlxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgcGFkZGluZzogJzE2cHgnXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgIExvYWRpbmcuLi5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIFxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3ViVGFibGVEYXRhTG9hZGluZygpICYmIHN1YlRhYmxlRGF0YSgpLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgcGFkZGluZzogJzE2cHgnXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgICAgIE5vIERhdGEgQXZhaWxhYmxlLi4uXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICBcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXN1YlRhYmxlRGF0YUxvYWRpbmcoKSAmJiBzdWJUYWJsZURhdGEoKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8c3ViLXRhYmxlIFtjb25maWddPVwic3ViVGFibGVjb25maWcoKVwiIFt0YWJsZURhdGFdPVwic3ViVGFibGVEYXRhKClcIj48L3N1Yi10YWJsZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgaWQ9XCJwYWdpbmF0aW9uLWNvbnRlbnQtY29udGFpbmVyXCI+XG4gICAgQGlmKHNob3VsZFNob3dQYWdpbmF0aW9uKCkpe1xuICAgICAgPGRpdiBcbiAgICAgICAgaWQ9XCJwYWdpbmF0aW9uLWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxwIGlkPVwicGFnaW5hdGlvbi10ZXh0XCI+XG4gICAgICAgICAgU2hvd2luZ1xuICAgICAgICAgIHt7IChzZWxlY3RlZFBhZ2UoKSAtIDEpICogdGFibGVDb25maWcoKS5wYWdpbmF0aW9uQ29uZmlnLnJvd3NQZXJQYWdlICsgMSB9fS17e1xuICAgICAgICAgICAgKHNlbGVjdGVkUGFnZSgpIC0gMSkgKiB0YWJsZUNvbmZpZygpLnBhZ2luYXRpb25Db25maWcucm93c1BlclBhZ2UgKyB0YWJsZUxlbmd0aCgpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvZiB7eyB0YWJsZUNvbmZpZygpLnBhZ2luYXRpb25Db25maWcudG90YWxOb09mUm93cyB9fSBpdGVtc1xuICAgICAgICA8L3A+XG4gICAgICAgIEBpZihzaG93UGFnZVNpemVEcm9wZG93bigpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2Utc2l6ZS1zZWxlY3RvclwiPlxuICAgICAgICAgICAgPG1pcy1kcm9wZG93blxuICAgICAgICAgICAgICBbZGF0YV09XCJwYWdlU2l6ZU9wdGlvbnMoKVwiXG4gICAgICAgICAgICAgIFtzZWxlY3RlZEl0ZW1dPVwic2VsZWN0ZWRQYWdlU2l6ZU9wdGlvbigpXCJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cIic5MHB4J1wiXG4gICAgICAgICAgICAgIFtoZWlnaHRdPVwiJzMycHgnXCJcbiAgICAgICAgICAgICAgW3NlYXJjaEVuYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbZHJvcGRvd25MaXN0SGVpZ2h0XT1cIicxMDBweCdcIlxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwYWdlLXNpemUtZHJvcGRvd25cIlxuICAgICAgICAgICAgPjwvbWlzLWRyb3Bkb3duPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgaWQ9XCJwYWdlcy1jb250YWluZXJcIj5cbiAgICAgICAgICA8c3BhbiAgIChjbGljayk9XCJzZWxlY3RlZFBhZ2UoKSA+IDEgJiYgdXBkYXRlU2VsZWN0ZWRQYWdlKHNlbGVjdGVkUGFnZSgpIC0gMSlcIiBjbGFzcz1cInBhZ2VcIiBbY2xhc3MucGFnZS1uYXYtaW5hY3RpdmVdPVwic2VsZWN0ZWRQYWdlKCkgPT09IDFcIj5cbiAgICAgICAgICAgIDxzdmcgZmlsbD1cIm5vbmVcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgNyAxMFwiIHdpZHRoPVwiN1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICBkPVwiTTAuODU3NDA1IDUuNTYyOTVDMC44NTU3OTQgNS41NjEzOSAwLjg1NDE4OCA1LjU1OTgyIDAuODUyNTg4IDUuNTU4MjRDMC42OTU5NTUgNS40MDQwOCAwLjYxNzY0MSA1LjIwMjAzIDAuNjE3NjQ3IDQuOTk5OThDMC42MTc2NDEgNC43OTc5MyAwLjY5NTk1NSA0LjU5NTg4IDAuODUyNTg4IDQuNDQxNzJDMC44NTQxODggNC40NDAxNCAwLjg1NTc5NCA0LjQzODU4IDAuODU3NDA0IDQuNDM3MDJMNS4xMzA2NiAwLjIzMTIzMUM1LjQ0MzkyIC0wLjA3NzA3NzEgNS45NTE4IC0wLjA3NzA3NzEgNi4yNjUwNiAwLjIzMTIzMUM2LjU3ODMxIDAuNTM5NTQgNi41NzgzMSAxLjAzOTQxIDYuMjY1MDYgMS4zNDc3MkwyLjU1NDIgNC45OTk5OEw2LjI2NTA2IDguNjUyMjVDNi41NzgzMSA4Ljk2MDU1IDYuNTc4MzEgOS40NjA0MiA2LjI2NTA2IDkuNzY4NzNDNS45NTE4IDEwLjA3NyA1LjQ0MzkyIDEwLjA3NyA1LjEzMDY2IDkuNzY4NzNMMC44NTc0MDUgNS41NjI5NVpcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwhLS0gUGFnZSBudW1iZXJzIChvbmx5IHNob3cgaWYgZGlzYWJsZVBhZ2VKdW1waW5nIGlzIGZhbHNlKSAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFibGVDb25maWcoKS5wYWdpbmF0aW9uQ29uZmlnPy5kaXNhYmxlUGFnZUp1bXBpbmdcIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcGFnZU51bWJlciBvZiBwYWdlcygpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVTZWxlY3RlZFBhZ2UocGFnZU51bWJlcilcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlTnVtYmVyICE9IDBcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncGFnZS1hY3RpdmUnOiBwYWdlTnVtYmVyID09PSBzZWxlY3RlZFBhZ2UoKSB9XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGFnZSBwYWdlLWp1bXBpbmctZW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgPnt7IHBhZ2VOdW1iZXIgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYWdlTnVtYmVyID09IDBcIiBjbGFzcz1cInBhZ2Utc2VwZXJhdG9yXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgZGlzcGxheTogJ2ZsZXgnIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIiBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAnNHB4JyB9XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiIFtuZ1N0eWxlXT1cInsgJ21hcmdpbi1yaWdodCc6ICc0cHgnIH1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgXG4gICAgICAgICAgPHNwYW4gW2NsYXNzLnBhZ2UtbmF2LWluYWN0aXZlXT1cInNlbGVjdGVkUGFnZSgpID09PSB0YWJsZUNvbmZpZygpLnBhZ2luYXRpb25Db25maWc/Lm5vT2ZQYWdlc1wiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdGVkUGFnZSgpIDwgdGFibGVDb25maWcoKS5wYWdpbmF0aW9uQ29uZmlnPy5ub09mUGFnZXMgJiYgdXBkYXRlU2VsZWN0ZWRQYWdlKHNlbGVjdGVkUGFnZSgpICsgMSlcIiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgICAgICAgIDxzdmcgZmlsbD1cIm5vbmVcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgNyAxMFwiIHdpZHRoPVwiN1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgICBkPVwiTTYuMTQyNiA1LjU2Mjk1QzYuMTQ0MjEgNS41NjEzOSA2LjE0NTgxIDUuNTU5ODIgNi4xNDc0MSA1LjU1ODI0QzYuMzA0MDUgNS40MDQwOCA2LjM4MjM2IDUuMjAyMDMgNi4zODIzNiA0Ljk5OTk4QzYuMzgyMzYgNC43OTc5MyA2LjMwNDA1IDQuNTk1ODggNi4xNDc0MSA0LjQ0MTcyQzYuMTQ1ODEgNC40NDAxNCA2LjE0NDIxIDQuNDM4NTggNi4xNDI2IDQuNDM3MDJMMS44NjkzNCAwLjIzMTIzMUMxLjU1NjA4IC0wLjA3NzA3NzEgMS4wNDgyIC0wLjA3NzA3NzEgMC43MzQ5NDIgMC4yMzEyMzFDMC40MjE2ODggMC41Mzk1NCAwLjQyMTY4OCAxLjAzOTQxIDAuNzM0OTQyIDEuMzQ3NzJMNC40NDU4IDQuOTk5OThMMC43MzQ5NDEgOC42NTIyNUMwLjQyMTY4NiA4Ljk2MDU1IDAuNDIxNjg2IDkuNDYwNDIgMC43MzQ5NDEgOS43Njg3M0MxLjA0ODIgMTAuMDc3IDEuNTU2MDggMTAuMDc3IDEuODY5MzQgOS43Njg3M0w2LjE0MjYgNS41NjI5NVpcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCIjMTgxRjMzXCJcbiAgICAgICAgICAgICAgICBmaWxsLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
918
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFNVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFJVCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDWnJDLCtDQU1DO0lBSkMseU5BQWtCLG1DQUE0QixLQUFDO0lBSWhELGlCQUFtQjs7O0lBRGxCLEFBREEsZ0VBQTJDLG9DQUNmOzs7SUEwQnhCLDZCQUFrRztJQUNoRyxZQUNGO0lBQUEsaUJBQUk7OztJQURGLGNBQ0Y7SUFERSx5RkFDRjs7O0lBTUUsMkJBQXFGOzs7O0lBTHZGLGdDQUlDO0lBSEMsa05BQVMsMkNBQWlDLEVBQUUsc0NBQTRCLHdCQUFFLHdCQUF3QixLQUFDO0lBSW5HLCtFQUE4RTs7SUFDOUUsK0JBQStGO0lBQzdGLDJCQUtFO0lBRU4sQUFERSxpQkFBTSxFQUNEOzs7OztJQVRFLGNBQWtEO0lBQWxELG1IQUFrRDs7OztJQVUzRCxnQ0FJQztJQUhDLGdLQUFTLHVCQUFnQix3QkFBRSx3QkFBd0IsS0FBQztJQUlwRCxtQ0FBNkQ7SUFDL0QsaUJBQU87OztJQURTLGNBQStCO0lBQS9CLG9EQUErQjs7OztJQUUvQyxnQ0FNb0I7SUFEbEIsZ01BQWMsMkJBQW9CLEtBQUM7SUFFckMsaUJBQU87Ozs7SUFITCxBQURBLEFBREEsQUFEQSxxQ0FBb0Isb0NBQ1EseUNBQ0sseURBQ2dCOzs7O0lBSXJELHdGQUFz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QyxBQURFLGlCQUFNLEVBQ0Y7OztZQXhQSixtS0FJRTtZQU1DLGNBQWtCO1lBQWxCLHVDQUFrQjtZQU9uQixjQUFrSjtZQUFsSixtSkFBa0o7WUFHbEosZUFBb0M7WUFBcEMsc0RBQW9DO1lBTVYsY0FBaUM7WUFBakMsZ0dBQWlDO1lBa0RoQixlQUFnQjtZQUFoQix5Q0FBZ0I7WUFzRzNELGVBb0VDO1lBcEVELHFEQW9FQzs7O2lGRDNOUSxjQUFjO2NBTDFCLFNBQVM7MkJBQ0UsV0FBVzswQ0FzQkEsTUFBTTtrQkFBMUIsU0FBUzttQkFBQyxRQUFRO1lBQ1csVUFBVTtrQkFBdkMsWUFBWTttQkFBQyxjQUFjO1lBaURSLEtBQUs7a0JBQXhCLFNBQVM7bUJBQUMsT0FBTzs7a0ZBcEVQLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgdW50cmFja2VkXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGaWx0ZXIsIFRhYmxlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSBcIi4vZmlsdGVyL2ZpbHRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IFNvcnRTdGF0ZSB9IGZyb20gXCIuL3NvcnQtaWNvbnMuZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBlZmZlY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRHJvcGRvd25JdGVtIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZHJvcGRvd25cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy10YWJsZVwiLFxuICB0ZW1wbGF0ZVVybDogXCJ0YWJsZS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcInRhYmxlLmNvbXBvbmVudC5jc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIC8vIEluaXRpYWxpemUgd2l0aCAtMSB0byBpbmRpY2F0ZSBubyByb3cgaXMgY29sb3JlZCBhdCB0aGUgYmVnaW5uaW5nXG4gIGFjdGl2ZVJvd0luZGV4ID0gc2lnbmFsPG51bWJlcltdPihbXSk7XG4gIGhhc0NoZWNrYm94QWN0aW9ucyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHNlbGVjdEFsbENoZWNrYm94ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAvLyBGaWx0ZXIgcmVsYXRlZCB2YXJpYWJsZXNcbiAgc2hvd0ZpbHRlciA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIGZpbHRlck5hbWUgPSBzaWduYWw8c3RyaW5nPihcIlwiKTtcbiAgZmlsdGVyRGF0YSA9IHNpZ25hbDxBcnJheTxGaWx0ZXI+PihbXSk7XG4gIGZpbHRlckNvbnRhaW5lclN0eWxlcyA9IHNpZ25hbDxhbnk+KHt9KTtcbiAgYXBwbGllZEZpbHRlcnMgPSBzaWduYWw8eyBba2V5OiBzdHJpbmddOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiB9Pih7fSk7XG4gIFxuICAvLyBDb252ZXJ0IG91dHB1dHMgdG8gc2lnbmFsLWJhc2VkIG91dHB1dHNcbiAgZmlsdGVyc1VwZGF0ZWQgPSBvdXRwdXQ8e1xuICAgIFtrZXk6IHN0cmluZ106IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+O1xuICB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoXCJmaWx0ZXJcIikgZmlsdGVyOiBUYWJsZUZpbHRlckNvbXBvbmVudCB8IGFueTtcbiAgQFZpZXdDaGlsZHJlbihcImNvbEhlYWRlclJlZlwiKSBjb2xIZWFkZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj4gfCBhbnk7XG5cbiAgLy8gUGFnaW5hdGlvbiByZWxhdGVkIHZhcmlhYmxlc1xuICBwYWdlcyA9IHNpZ25hbDxBcnJheTxudW1iZXI+PihbXSk7XG4gIHRhYmxlTGVuZ3RoID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHNlbGVjdGVkUGFnZSA9IHNpZ25hbDxudW1iZXI+KDEpOyAvLyBJbnRlcm5hbCBzdGF0ZSBmb3Igc2VsZWN0ZWQgcGFnZSAtIHRoaXMgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aFxuICBwcml2YXRlIGlzSW50ZXJuYWxQYWdlVXBkYXRlID0gZmFsc2U7IC8vIEZsYWcgdG8gcHJldmVudCBlZmZlY3QgZnJvbSBvdmVyd3JpdGluZyBkdXJpbmcgdXNlci1pbml0aWF0ZWQgdXBkYXRlc1xuICBcbiAgLyoqXG4gICAqIExFR0FDWSBDT0RFIFdPUktBUk9VTkQ6IFRyYWNrIHVzZXItaW5pdGlhdGVkIHBhZ2Ugc2VsZWN0aW9ucyB0byBwcmV2ZW50IGNvbmZpZyBvdmVyd3JpdGVzLlxuICAgKiBcbiAgICogU29tZSBsZWdhY3kgcGFyZW50IGNvbXBvbmVudHMgZG9uJ3QgdXBkYXRlIHRhYmxlQ29uZmlnLnBhZ2luYXRpb25Db25maWcuc2VsZWN0ZWRQYWdlIHdoZW5cbiAgICogdGhlIHBhZ2UgY2hhbmdlcy4gVGhpcyBjYXVzZXMgdGhlIGVmZmVjdCB0byBvdmVyd3JpdGUgdXNlciBzZWxlY3Rpb25zIHdpdGggc3RhbGUgY29uZmlnIHZhbHVlcy5cbiAgICogXG4gICAqIElERUFMIFNPTFVUSU9OOiBQYXJlbnQgY29tcG9uZW50cyBzaG91bGQgYWx3YXlzIHVwZGF0ZSBjb25maWcuc2VsZWN0ZWRQYWdlIGluIHRoZWlyXG4gICAqIHBhZ2VTZWxlY3RlZCBldmVudCBoYW5kbGVyLiBUaGlzIHdvcmthcm91bmQgcHJvdGVjdHMgdXNlciBhY3Rpb25zIHVudGlsIGxlZ2FjeSBjb2RlXG4gICAqIGNhbiBiZSB1cGRhdGVkLlxuICAgKiBcbiAgICogVE9ETzogUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBvbmNlIGFsbCBwYXJlbnQgY29tcG9uZW50cyBwcm9wZXJseSB1cGRhdGUgY29uZmlnLnNlbGVjdGVkUGFnZVxuICAgKi9cbiAgcHJpdmF0ZSB1c2VyU2VsZWN0ZWRQYWdlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgXG4gIHBhZ2VTZWxlY3RlZCA9IG91dHB1dDxudW1iZXI+KCk7XG4gIHBhZ2VTaXplQ2hhbmdlZCA9IG91dHB1dDxudW1iZXI+KCk7XG4gIHBhZ2VTaXplT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLnRhYmxlQ29uZmlnKCk/LnBhZ2luYXRpb25Db25maWc7XG4gICAgaWYgKCFjb25maWc/LnBhZ2VTaXplcyB8fCAhQXJyYXkuaXNBcnJheShjb25maWcucGFnZVNpemVzKSB8fCAhY29uZmlnLnBhZ2VTaXplcz8ubGVuZ3RoKSByZXR1cm4gW107XG4gIFxuICAgIHJldHVybiBjb25maWcucGFnZVNpemVzPy5tYXAob3B0aW9uID0+ICh7XG4gICAgICBsYWJlbDogb3B0aW9uPy50b1N0cmluZygpIHx8ICcnLFxuICAgICAgdmFsdWU6IG9wdGlvbj8udG9TdHJpbmcoKSB8fCAnJyxcbiAgICB9KSkgfHwgW107XG4gIH0pO1xuXG4gIHNob3dQYWdlU2l6ZURyb3Bkb3duID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiAhIXRoaXMudGFibGVDb25maWcoKT8ucGFnaW5hdGlvbkNvbmZpZz8uc2hvd1BhZ2VTaXplRHJvcGRvd247XG4gIH0pO1xuXG4gIHNlbGVjdGVkUGFnZVNpemVPcHRpb24gPSBzaWduYWw8RHJvcGRvd25JdGVtPih7IGxhYmVsOiBcIlwiLCB2YWx1ZTogXCJcIiB9KTtcblxuICAvLyBDb252ZXJ0IGlucHV0cyB0byBzaWduYWwtYmFzZWQgaW5wdXRzXG4gIHRhYmxlQ29uZmlnID0gaW5wdXQ8VGFibGVDb25maWc+KCk7XG4gIHN1YlRhYmxlY29uZmlnID0gaW5wdXQ8VGFibGVDb25maWc+KCk7XG4gIHRhYmxlRGF0YUxvYWRpbmcgPSBpbnB1dDxib29sZWFuPigpO1xuICBleHBhbmRlZEluZGV4ID0gaW5wdXQ8bnVtYmVyPigpO1xuICB0YWJsZURhdGEgPSBpbnB1dDxBcnJheTxBcnJheTxhbnk+Pj4oW10pO1xuICBzdWJUYWJsZURhdGEgPSBpbnB1dDxBcnJheTxBcnJheTxhbnk+Pj4oW10pO1xuICBzdWJUYWJsZURhdGFMb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgY3VycmVudFNvcnQgPSBpbnB1dDx7Y29sdW1uOiBzdHJpbmcsIGRpcmVjdGlvbjogJ0FTQycgfCAnREVTQycgfCAnJ30gfCBudWxsPigpO1xuICBAVmlld0NoaWxkKFwidGFibGVcIikgdGFibGU6IEVsZW1lbnRSZWYgfCBhbnk7XG4gIGNvbGxhcHNlQ29sSW5kZXggPSBzaWduYWw8bnVtYmVyPigtMSk7XG4gIHByZXZpZXdMaW5lcyA9IHNpZ25hbDxudW1iZXI+KDApO1xuICByb3dDb2xsYXBzZUNvbmZpZ0luZGV4ID0gc2lnbmFsPG51bWJlcj4oLTEpO1xuICBleHBhbmRlZE1hcCA9IHNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oe30pO1xuXG5cbiAgLy8gU29ydGluZyByZWxhdGVkIHByb3BlcnRpZXNcbiAgbXVsdGlDb2x1bW5Tb3J0ID0gc2lnbmFsPFNvcnRTdGF0ZVtdPihbXSk7XG4gIHNvcnRDaGFuZ2UgPSBvdXRwdXQ8U29ydFN0YXRlPigpO1xuICBoZWFkZXJBY3Rpb24gPSBvdXRwdXQ8eyB0eXBlOiBzdHJpbmc7IHBheWxvYWQ/OiBhbnkgfT4oKTtcblxuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgdGhpcy50YWJsZUxlbmd0aC5zZXQodGhpcy50YWJsZURhdGEoKT8ubGVuZ3RoID8/IDApO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy50YWJsZUNvbmZpZygpO1xuICAgICAgICBcbiAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcuYWN0aXZlUm93SW5kZXggIT09IG51bGwgJiYgY29uZmlnLmFjdGl2ZVJvd0luZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVJvd0luZGV4ID0gY29uZmlnLmFjdGl2ZVJvd0luZGV4O1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVSb3dJbmRleC5zZXQoQXJyYXkuaXNBcnJheShhY3RpdmVSb3dJbmRleCkgPyBhY3RpdmVSb3dJbmRleCA6IFthY3RpdmVSb3dJbmRleF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucm93Q29sbGFwc2VDb25maWdJbmRleCgpICE9PSAtMSkge1xuICAgICAgICAgICAgIHRoaXMuYnVpbGRFeHBhbmRlZE1hcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gLS0tIFBBR0lOQVRJT04gUEFHRSBBUlJBWSBMT0dJQyAoTU9WRUQvUkVQTEFDRUQgaW5pdGlhbGl6ZVBhZ2luYXRpb24pIC0tLVxuICAgICAgICBjb25zdCBsZW4gPSBjb25maWc/LnBhZ2luYXRpb25Db25maWc/Lm5vT2ZQYWdlcztcbiAgICAgICAgY29uc3QgZGlzYWJsZVBhZ2VKdW1waW5nID0gY29uZmlnPy5wYWdpbmF0aW9uQ29uZmlnPy5kaXNhYmxlUGFnZUp1bXBpbmc7XG4gICAgICAgIFxuICAgICAgICAvKipcbiAgICAgICAgICogTEVHQUNZIENPREUgV09SS0FST1VORDogUHJvdGVjdCB1c2VyLWluaXRpYXRlZCBwYWdlIHNlbGVjdGlvbnMgZnJvbSBjb25maWcgb3ZlcndyaXRlcy5cbiAgICAgICAgICogXG4gICAgICAgICAqIFdoZW4gdXNlcnMgY2xpY2sgcGFnaW5hdGlvbiBhcnJvd3MsIHdlIHVwZGF0ZSBpbnRlcm5hbCBzdGF0ZSBpbW1lZGlhdGVseS4gSG93ZXZlcixcbiAgICAgICAgICogc29tZSBsZWdhY3kgcGFyZW50IGNvbXBvbmVudHMgZG9uJ3QgdXBkYXRlIGNvbmZpZy5zZWxlY3RlZFBhZ2UsIGNhdXNpbmcgdGhlIGVmZmVjdFxuICAgICAgICAgKiB0byBydW4gd2l0aCBzdGFsZSBjb25maWcgdmFsdWVzIHRoYXQgd291bGQgb3ZlcndyaXRlIHRoZSB1c2VyJ3Mgc2VsZWN0aW9uLlxuICAgICAgICAgKiBcbiAgICAgICAgICogU3RyYXRlZ3k6IFRyZWF0IGludGVybmFsIHN0YXRlIGFzIHNvdXJjZSBvZiB0cnV0aCBmb3IgdXNlci1pbml0aWF0ZWQgY2hhbmdlcy5cbiAgICAgICAgICogT25seSBzeW5jIGZyb20gY29uZmlnIHdoZW4gaXQncyBzYWZlIChub3QgYSB1c2VyLXNlbGVjdGVkIHBhZ2UpLlxuICAgICAgICAgKiBcbiAgICAgICAgICogSURFQUw6IFBhcmVudCBzaG91bGQgYWx3YXlzIHVwZGF0ZSBjb25maWcuc2VsZWN0ZWRQYWdlIGluIHBhZ2VTZWxlY3RlZCBoYW5kbGVyLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGVkUGFnZSA9IHRoaXMuc2VsZWN0ZWRQYWdlKCk7XG4gICAgICAgIGNvbnN0IGNvbmZpZ1NlbGVjdGVkUGFnZSA9IGNvbmZpZz8ucGFnaW5hdGlvbkNvbmZpZz8uc2VsZWN0ZWRQYWdlO1xuICAgICAgICBjb25zdCBpc1VzZXJTZWxlY3RlZFBhZ2UgPSB0aGlzLnVzZXJTZWxlY3RlZFBhZ2UgIT09IG51bGwgJiYgY3VycmVudFNlbGVjdGVkUGFnZSA9PT0gdGhpcy51c2VyU2VsZWN0ZWRQYWdlO1xuICAgICAgICBcbiAgICAgICAgaWYgKCF0aGlzLmlzSW50ZXJuYWxQYWdlVXBkYXRlKSB7XG4gICAgICAgICAgLy8gT25seSBzeW5jIGZyb20gY29uZmlnIGlmOlxuICAgICAgICAgIC8vIDEuIENvbmZpZyBoYXMgYSBzZWxlY3RlZFBhZ2UgdmFsdWVcbiAgICAgICAgICAvLyAyLiBDdXJyZW50IHBhZ2UgaXMgTk9UIGEgdXNlci1pbml0aWF0ZWQgc2VsZWN0aW9uIChwcm90ZWN0IHVzZXIgYWN0aW9ucylcbiAgICAgICAgICAvLyAzLiBDb25maWcgdmFsdWUgaXMgdmFsaWQgYW5kIGRpZmZlcmVudCBmcm9tIGN1cnJlbnRcbiAgICAgICAgICBpZiAoY29uZmlnU2VsZWN0ZWRQYWdlICE9PSB1bmRlZmluZWQgJiYgY29uZmlnU2VsZWN0ZWRQYWdlICE9PSBudWxsICYmICFpc1VzZXJTZWxlY3RlZFBhZ2UpIHtcbiAgICAgICAgICAgIGNvbnN0IG1heFBhZ2VzID0gY29uZmlnPy5wYWdpbmF0aW9uQ29uZmlnPy5ub09mUGFnZXMgfHwgMTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50U2VsZWN0ZWRQYWdlICE9PSBjb25maWdTZWxlY3RlZFBhZ2UgJiYgXG4gICAgICAgICAgICAgICAgY29uZmlnU2VsZWN0ZWRQYWdlID49IDEgJiYgXG4gICAgICAgICAgICAgICAgY29uZmlnU2VsZWN0ZWRQYWdlIDw9IG1heFBhZ2VzKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYWdlLnNldChjb25maWdTZWxlY3RlZFBhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICAvLyBJZiBjb25maWcgZG9lc24ndCBoYXZlIHNlbGVjdGVkUGFnZSwgb25seSBpbml0aWFsaXplIGludmFsaWQgc3RhdGVcbiAgICAgICAgICAvLyBOZXZlciByZXNldCBhIHZhbGlkIHBhZ2UgbnVtYmVyLCBlc3BlY2lhbGx5IHVzZXItc2VsZWN0ZWQgb25lc1xuICAgICAgICAgIGlmICgoY29uZmlnU2VsZWN0ZWRQYWdlID09PSB1bmRlZmluZWQgfHwgY29uZmlnU2VsZWN0ZWRQYWdlID09PSBudWxsKSAmJiBcbiAgICAgICAgICAgICAgIWlzVXNlclNlbGVjdGVkUGFnZSAmJlxuICAgICAgICAgICAgICAoY3VycmVudFNlbGVjdGVkUGFnZSA9PT0gMCB8fCBjdXJyZW50U2VsZWN0ZWRQYWdlIDwgMSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYWdlLnNldCgxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gQ2xlYXIgdXNlciBzZWxlY3Rpb24gdHJhY2tpbmcgd2hlbiBjb25maWcgbWF0Y2hlcyB1c2VyJ3Mgc2VsZWN0aW9uXG4gICAgICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgcGFyZW50IGhhcyB1cGRhdGVkIGNvbmZpZyBjb3JyZWN0bHlcbiAgICAgICAgICBpZiAoY29uZmlnU2VsZWN0ZWRQYWdlID09PSB0aGlzLnVzZXJTZWxlY3RlZFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMudXNlclNlbGVjdGVkUGFnZSA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBSZXNldCB0aGUgZmxhZyBhZnRlciBwcm9jZXNzaW5nXG4gICAgICAgIHRoaXMuaXNJbnRlcm5hbFBhZ2VVcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgXG4gICAgICAgIC8vIE9ubHkgcnVuIGlmIHBhZ2luYXRpb24gaXMgY29uZmlndXJlZCBhbmQgcGFnZSBqdW1waW5nIGlzIGVuYWJsZWRcbiAgICAgICAgaWYgKGxlbiAmJiBsZW4gPiAwICYmICFkaXNhYmxlUGFnZUp1bXBpbmcpIHtcbiAgICAgICAgICAgIC8vIFJlYWQgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBzZWxlY3RlZCBwYWdlIGZvciBjYWxjdWxhdGluZyB0aGUgcGFnZXMgYXJyYXkuXG4gICAgICAgICAgICAvLyBTaW5jZSB0aGlzIHJ1bnMgb24gZXZlcnkgY29uZmlnIGNoYW5nZSwgd2UgcmVseSBvbiB0aGUgdmFsdWUgc2V0IFxuICAgICAgICAgICAgLy8gYnkgdXBkYXRlU2VsZWN0ZWRQYWdlKCkgb3Igc3luY2VkIGZyb20gY29uZmlnIGFib3ZlLlxuICAgICAgICAgICAgY29uc3QgcGFnZU51bWJlciA9IHRoaXMuc2VsZWN0ZWRQYWdlKCk7IFxuXG4gICAgICAgICAgICBpZiAobGVuIDw9IDcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdQYWdlcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1BhZ2VzLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGFnZXMuc2V0KG5ld1BhZ2VzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VOdW1iZXIgLSAyIDw9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlcy5zZXQoWzEsIDIsIDMsIDQsIDAsIGxlbl0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFnZU51bWJlciAtIDIgPiAxICYmIHBhZ2VOdW1iZXIgKyAyIDwgbGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZXMuc2V0KFsxLCAwLCBwYWdlTnVtYmVyIC0gMSwgcGFnZU51bWJlciwgcGFnZU51bWJlciArIDEsIDAsIGxlbl0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFnZU51bWJlciArIDIgPj0gbGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZXMuc2V0KFsxLCAwLCBsZW4gLSAzLCBsZW4gLSAyLCBsZW4gLSAxLCBsZW5dKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gLS0tIEVORCBQQUdJTkFUSU9OIFBBR0UgQVJSQVkgTE9HSUMgLS0tXG5cbiAgICAgICAgXG4gICAgICAgIGlmKGNvbmZpZz8ucGFnaW5hdGlvbkNvbmZpZz8uc2hvd1BhZ2VTaXplRHJvcGRvd24pIHtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wYWdlU2l6ZU9wdGlvbnMoKTtcbiAgICAgICAgICBjb25zdCByb3dzUGVyUGFnZSA9IHRoaXMudGFibGVDb25maWcoKT8ucGFnaW5hdGlvbkNvbmZpZz8ucm93c1BlclBhZ2U7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpIHx8ICFyb3dzUGVyUGFnZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhZ2VTaXplT3B0aW9uLnNldCh7IGxhYmVsOiBcIlwiLCB2YWx1ZTogXCJcIiB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBvcHRpb25zLmZpbmQob3B0ID0+IG9wdD8udmFsdWUgPT09IHJvd3NQZXJQYWdlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhZ2VTaXplT3B0aW9uLnNldChzZWxlY3RlZCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIElmIGNvbmZpZ3VyZWQgcm93c1BlclBhZ2UgaXMgbm90IGFtb25nIG9wdGlvbnMsIHBpY2sgdGhlIGZsb29yIHZhbHVlIGFuZCBub3RpZnkgcGFyZW50XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBOdW1iZXIocm93c1BlclBhZ2UpO1xuICAgICAgICAgICAgLy9Tb3J0IHRoZSBvcHRpb25zXG4gICAgICAgICAgICBjb25zdCBzb3J0ZWQgPSBvcHRpb25zXG4gICAgICAgICAgICAgIC5tYXAob3B0ID0+ICh7IG9wdCwgbnVtOiBOdW1iZXIob3B0Py52YWx1ZSkgfSkpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHsgbnVtIH0pID0+IE51bWJlci5pc0Zpbml0ZShudW0pKVxuICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5udW0gLSBiLm51bSk7XG5cbiAgICAgICAgICAgIGxldCBmbG9vck9wdGlvbiA9IHNvcnRlZFswXT8ub3B0O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNvcnRlZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICBpZiAoc29ydGVkW2ldLm51bSA8PSB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICBmbG9vck9wdGlvbiA9IHNvcnRlZFtpXS5vcHQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgY29uZmlndXJlZCByb3dzUGVyUGFnZSB3YXMgbm90IG1hdGNoZWQgdG8gYW55IG9mIHRoZSBwYWdlU2l6ZXMgc2VudCBpbiB0aGUgcGFnaW5hdGlvbkNvbmZpZy4gU2VsZWN0aW5nIHRoZSBuZWFyZXN0IGZsb29yIHZhbHVlIGFtb25nIHRoZSBhdmFpbGFibGUgcGFnZVNpemVzLlwiKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYWdlU2l6ZU9wdGlvbi5zZXQoZmxvb3JPcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5vblBhZ2VTaXplQ2hhbmdlKGZsb29yT3B0aW9uKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIk5vIHBhZ2Ugc2l6ZSBvcHRpb25zIGF2YWlsYWJsZS5cIilcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuXG4gICAgLy8gUmVhY3RpdmUgaGVpZ2h0IGNhbGN1bGF0aW9uOiBtYWludGFpbnMgZXhhY3Qgb2xkIGJlaGF2aW9yIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgLy8gT2xkIGNvZGU6IGhlaWdodCAtIDU2ICsgXCJweFwiIChmbGF3ZWQgZm9yIHBlcmNlbnRhZ2VzLCBidXQgd2UgbWFpbnRhaW4gaXQpXG4gICAgLy8gTm90ZTogRWZmZWN0IG11c3QgYmUgaW4gY29uc3RydWN0b3IsIG5vdCBsaWZlY3ljbGUgaG9va3MgKE5HMDIwMyBlcnJvciBvdGhlcndpc2UpXG4gICAgLy8gZWZmZWN0KCgpID0+IHtcbiAgICAvLyAgIGNvbnN0IGNvbmZpZyA9IHRoaXMudGFibGVDb25maWcoKTtcbiAgICAvLyAgIGlmICghY29uZmlnPy5wYWdpbmF0aW9uQ29uZmlnIHx8ICF0aGlzLnRhYmxlPy5uYXRpdmVFbGVtZW50KSByZXR1cm47XG4gICAgXG4gICAgLy8gICBjb25zdCBoZWlnaHQgPSBjb25maWcuaGVpZ2h0O1xuICAgIC8vICAgLy8gT2xkIGJlaGF2aW9yOiBoZWlnaHQgLSA1NiArIFwicHhcIiAobWFpbnRhaW5zIHRoZSBmbGF3IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KVxuICAgIC8vICAgY29uc3QgcmVzdWx0ID0gKGhlaWdodCBhcyBhbnkpIC0gNTY7XG4gICAgLy8gICBjb25zdCBmaW5hbEhlaWdodCA9IHJlc3VsdCArIFwicHhcIjtcbiAgICAvLyAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50YWJsZS5uYXRpdmVFbGVtZW50LCBcImhlaWdodFwiLCBmaW5hbEhlaWdodCk7XG4gICAgLy8gfSk7XG4gIH1cblxuXG4gIC8vIEZ1bmN0aW9uIHRvIGhhbmRsZSByb3cgY2xpY2tcbiAgc2VsZWN0Um93KGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5oYXNDaGVja2JveEFjdGlvbnMoKSkgcmV0dXJuO1xuICAgIHRoaXMuYWN0aXZlUm93SW5kZXguc2V0KFtpbmRleF0pOyAvLyBTZXQgdGhlIHNlbGVjdGVkIGluZGV4IHRvIHRoZSBjbGlja2VkIHJvdydzIGluZGV4XG4gICAgISF0aGlzLnRhYmxlQ29uZmlnKCkucm93Q29uZmlnLmFjdGlvbiAmJiB0aGlzLnRhYmxlQ29uZmlnKCkucm93Q29uZmlnLmFjdGlvbihpbmRleCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhc0NoZWNrYm94QWN0aW9ucy5zZXQodGhpcy50YWJsZUNvbmZpZygpLmNvbENvbmZpZz8uc29tZShjb2wgPT4gY29sLnR5cGUgPT09IFwiYWN0aW9uc1wiICYmIGNvbC5hY3Rpb25UeXBlID09PSBcImNoZWNrYm94XCIpKTtcbiAgICB0aGlzLnRhYmxlTGVuZ3RoLnNldCghIXRoaXMudGFibGVEYXRhKCkgPyB0aGlzLnRhYmxlRGF0YSgpLmxlbmd0aCA6IDApO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZpbHRlcnMoKTtcbiAgICBpZiAodGhpcy50YWJsZUNvbmZpZygpLnBhZ2luYXRpb25Db25maWcpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2luYXRpb24oKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudGFibGVDb25maWcoKS5jYW5TY3JvbGxIb3Jpem9udGFsbHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gTm90ZTogV2UgY2FuJ3QgZGlyZWN0bHkgbW9kaWZ5IGlucHV0IHNpZ25hbHMsIHRoaXMgc2hvdWxkIGJlIGhhbmRsZWQgYnkgcGFyZW50IGNvbXBvbmVudFxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZXZlbnQgPT4ge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgIGxldCBpc0NoZWNrQm94Q2xpY2tlZCA9IHRydWU7XG4gICAgICAgIGxldCB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxTcGFuRWxlbWVudDtcbiAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQuY2xhc3NOYW1lID09PSBcImNoZWNrbWFya1wiKSB7XG4gICAgICAgICAgaXNDaGVja0JveENsaWNrZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuc2hvd0ZpbHRlci5zZXQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGlzQ2xpY2tJbnNpZGVFbGVtZW50ID0gdGhpcy5maWx0ZXIuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgaWYgKCFpc0NsaWNrSW5zaWRlRWxlbWVudCAmJiAhaXNDaGVja0JveENsaWNrZWQpIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZUZpbHRlcih0aGlzLmZpbHRlck5hbWUoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIGZldGNoIGNvbGxhcHNlQ29sSW5kZXggYW5kIHByZXZpZXdMaW5lcyBpZiBwcmVzZW50XG4gICAgdGhpcy5yb3dDb2xsYXBzZUNvbmZpZ0luZGV4LnNldCh0aGlzLnRhYmxlQ29uZmlnKCk/LmNvbENvbmZpZz8uZmluZEluZGV4KFxuICAgICAgY29sID0+IGNvbC50eXBlID09PSAnYWN0aW9ucycgJiYgY29sLmFjdGlvblR5cGUgPT09ICdyb3ctY29sbGFwc2UnXG4gICAgKSk7XG4gICAgaWYgKHRoaXMucm93Q29sbGFwc2VDb25maWdJbmRleCgpICE9PSAtMSkge1xuICAgICAgdGhpcy5jb2xsYXBzZUNvbEluZGV4LnNldCh0aGlzLnRhYmxlQ29uZmlnKCkuY29sQ29uZmlnW3RoaXMucm93Q29sbGFwc2VDb25maWdJbmRleCgpXS5jb2xsYXBzZUNvbHVtbkluZGV4ID8/IG51bGwpO1xuICAgICAgdGhpcy5wcmV2aWV3TGluZXMuc2V0KHRoaXMudGFibGVDb25maWcoKS5jb2xDb25maWdbdGhpcy5yb3dDb2xsYXBzZUNvbmZpZ0luZGV4KCldLnByZXZpZXdMaW5lcyA/PyBudWxsKTtcbiAgICAgIHRoaXMuYnVpbGRFeHBhbmRlZE1hcCgpO1xuICAgIH1cbiAgfVxuXG4gIGJ1aWxkRXhwYW5kZWRNYXAoKTogdm9pZHtcbiAgICBjb25zdCBuZXdFeHBhbmRlZE1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcbiAgICBjb25zdCBjb2xsYXBzZUluZGV4ID0gdGhpcy5yb3dDb2xsYXBzZUNvbmZpZ0luZGV4KCk7XG4gICAgXG4gICAgdGhpcy50YWJsZURhdGEoKS5mb3JFYWNoKChyb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICAgIG5ld0V4cGFuZGVkTWFwW2Ake3Jvd0luZGV4fWBdID0gcm93W2NvbGxhcHNlSW5kZXhdO1xuICAgIH0pO1xuICAgIHRoaXMuZXhwYW5kZWRNYXAuc2V0KG5ld0V4cGFuZGVkTWFwKTtcbn1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gVmlld0NoaWxkIGlzIG5vdyBhdmFpbGFibGUgLSBtYW51YWxseSB0cmlnZ2VyIGhlaWdodCBjYWxjdWxhdGlvbiBvbmNlXG4gICAgLy8gVGhlIGVmZmVjdCBpbiBjb25zdHJ1Y3RvciB3aWxsIGhhbmRsZSBzdWJzZXF1ZW50IGNvbmZpZyBjaGFuZ2VzXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy50YWJsZUNvbmZpZygpO1xuICAgIGlmIChjb25maWc/LnBhZ2luYXRpb25Db25maWcgJiYgdGhpcy50YWJsZT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgY29uc3QgaGVpZ2h0ID0gY29uZmlnLmhlaWdodDtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IChoZWlnaHQgYXMgYW55KSAtIDU2O1xuICAgICAgY29uc3QgZmluYWxIZWlnaHQgPSByZXN1bHQgKyBcInB4XCI7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudGFibGUubmF0aXZlRWxlbWVudCwgXCJoZWlnaHRcIiwgZmluYWxIZWlnaHQpO1xuICAgIH1cbiAgfVxuICBcbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy50YWJsZUxlbmd0aC5zZXQodGhpcy50YWJsZURhdGEoKT8ubGVuZ3RoID8/IDApO1xuICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnKCkuYWN0aXZlUm93SW5kZXggIT09IG51bGwgJiYgdGhpcy50YWJsZUNvbmZpZygpLmFjdGl2ZVJvd0luZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVJvd0luZGV4ID0gdGhpcy50YWJsZUNvbmZpZygpLmFjdGl2ZVJvd0luZGV4O1xuICAgICAgdGhpcy5hY3RpdmVSb3dJbmRleC5zZXQoQXJyYXkuaXNBcnJheShhY3RpdmVSb3dJbmRleCkgPyBhY3RpdmVSb3dJbmRleCA6IFthY3RpdmVSb3dJbmRleF0pXG4gICAgfVxuICB9XG5cbiAgLy8gRmlsdGVyIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGluaXRpYWxpemVGaWx0ZXJzKCkge1xuICAgIGNvbnN0IG5ld0FwcGxpZWRGaWx0ZXJzOiB7IFtrZXk6IHN0cmluZ106IEFycmF5PHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+IH0gPSB7fTtcbiAgICBjb25zdCBhbGxGaWx0ZXJzOiBBcnJheTxGaWx0ZXI+ID0gW107XG4gICAgXG4gICAgZm9yIChsZXQgY29sSGVhZGVyIG9mIHRoaXMudGFibGVDb25maWcoKT8uY29sSGVhZGVyQ29uZmlnKSB7XG4gICAgICBpZiAoY29sSGVhZGVyLmZpbHRlcnMpIHtcbiAgICAgICAgbGV0IGZpbHRlcnMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgZmlsdGVyIG9mIGNvbEhlYWRlci5maWx0ZXJzKSB7XG4gICAgICAgICAgaWYgKGZpbHRlci5jaGVja2VkKSB7XG4gICAgICAgICAgICBmaWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBmaWx0ZXIubmFtZSxcbiAgICAgICAgICAgICAgdmFsdWU6IGZpbHRlci52YWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEFkZCBhbGwgZmlsdGVycyB0byB0aGUgZmlsdGVyRGF0YSBhcnJheVxuICAgICAgICAgIGFsbEZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJzLmxlbmd0aCA+IDApIG5ld0FwcGxpZWRGaWx0ZXJzW2NvbEhlYWRlci5kYXRhXSA9IGZpbHRlcnM7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuYXBwbGllZEZpbHRlcnMuc2V0KG5ld0FwcGxpZWRGaWx0ZXJzKTtcbiAgICB0aGlzLmZpbHRlckRhdGEuc2V0KGFsbEZpbHRlcnMpO1xuIH1cbiAgdG9nZ2xlRmlsdGVyKGZpbHRlck5hbWU6IHN0cmluZykge1xuICAgIGlmICghdGhpcy5zaG93RmlsdGVyKCkpIHtcbiAgICAgIHRoaXMuZmlsdGVyTmFtZS5zZXQoZmlsdGVyTmFtZSk7XG4gICAgICB0aGlzLnNob3dGaWx0ZXIuc2V0KHRydWUpO1xuXG4gICAgICBsZXQgb2ZmU2V0ID0gMDtcbiAgICAgIGxldCBjb2xIZWFkZXJzUmV2ZXJzZWQgPSB0aGlzLmNvbEhlYWRlcnMudG9BcnJheSgpLnJldmVyc2UoKTtcblxuICAgICAgZm9yIChsZXQgaGVhZGVyIG9mIGNvbEhlYWRlcnNSZXZlcnNlZCkge1xuICAgICAgICBpZiAoaGVhZGVyLm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID09PSBmaWx0ZXJOYW1lKSBicmVhaztcbiAgICAgICAgb2ZmU2V0ICs9IGhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgICAgdGhpcy5maWx0ZXJDb250YWluZXJTdHlsZXMuc2V0KHtcbiAgICAgICAgdG9wOiBcIjQ0cHhcIixcbiAgICAgICAgcmlnaHQ6IG9mZlNldCA+IDAgPyBvZmZTZXQgLSAxMTYgKyBcInB4XCIgOiBcIjEycHhcIlxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyTmFtZS5zZXQoXCJcIik7XG4gICAgICB0aGlzLmZpbHRlckRhdGEuc2V0KFtdKTtcbiAgICAgIHRoaXMuc2hvd0ZpbHRlci5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICB1cGRhdGVBcHBsaWVkRmlsdGVycyhhcHBsaWVkRmlsdGVyczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4pIHtcbiAgICBjb25zdCBjdXJyZW50RmlsdGVycyA9IHRoaXMuYXBwbGllZEZpbHRlcnMoKTtcbiAgICBpZiAoYXBwbGllZEZpbHRlcnMubGVuZ3RoID09IDApIHtcbiAgICAgIGRlbGV0ZSBjdXJyZW50RmlsdGVyc1t0aGlzLmZpbHRlck5hbWUoKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRGaWx0ZXJzW3RoaXMuZmlsdGVyTmFtZSgpXSA9IGFwcGxpZWRGaWx0ZXJzO1xuICAgIH1cbiAgICB0aGlzLmFwcGxpZWRGaWx0ZXJzLnNldCh7IC4uLmN1cnJlbnRGaWx0ZXJzIH0pO1xuICAgIHRoaXMuZmlsdGVyc1VwZGF0ZWQuZW1pdCh7IC4uLnRoaXMuYXBwbGllZEZpbHRlcnMoKSB9KTtcbiAgICB0aGlzLnRvZ2dsZUZpbHRlcih0aGlzLmZpbHRlck5hbWUoKSk7XG4gIH1cblxuICAvLyBQYWdpbmF0aW9uIHJlbGF0ZWQgZnVuY3Rpb25zXG4gIGluaXRpYWxpemVQYWdpbmF0aW9uKCkge1xuICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnKCkucGFnaW5hdGlvbkNvbmZpZykge1xuICAgICAgLy8gSW5pdGlhbGl6ZSBzZWxlY3RlZFBhZ2UgZnJvbSBjb25maWcgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSBkZWZhdWx0IHRvIDFcbiAgICAgIC8vIGNvbnN0IGNvbmZpZ1NlbGVjdGVkUGFnZSA9IHRoaXMudGFibGVDb25maWcoKS5wYWdpbmF0aW9uQ29uZmlnLnNlbGVjdGVkUGFnZTtcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRQYWdlLnNldChjb25maWdTZWxlY3RlZFBhZ2UgPz8gMSk7XG4gICAgICBcbiAgICAgIGxldCBsZW4gPSB0aGlzLnRhYmxlQ29uZmlnKCkucGFnaW5hdGlvbkNvbmZpZy5ub09mUGFnZXM7XG4gICAgICBpZiAobGVuIDw9IDcpIHtcbiAgICAgICAgY29uc3QgbmV3UGFnZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbGVuOyBpKyspIHtcbiAgICAgICAgICBuZXdQYWdlcy5wdXNoKGkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFnZXMuc2V0KG5ld1BhZ2VzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFnZXMuc2V0KFsxLCAyLCAzLCA0LCAwLCBsZW5dKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgdXBkYXRlU2VsZWN0ZWRQYWdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIC8vIEd1YXJkIGNsYXVzZSB0byBwcmV2ZW50IG91dC1vZi1yYW5nZSB1cGRhdGVzXG4gICAgaWYgKHBhZ2VOdW1iZXIgPCAxIHx8IHBhZ2VOdW1iZXIgPiB0aGlzLnRhYmxlQ29uZmlnKCkucGFnaW5hdGlvbkNvbmZpZy5ub09mUGFnZXMpIHJldHVybjtcblxuICAgIC8qKlxuICAgICAqIExFR0FDWSBDT0RFIFdPUktBUk9VTkQ6IFRyYWNrIHVzZXItaW5pdGlhdGVkIHBhZ2Ugc2VsZWN0aW9uLlxuICAgICAqIFxuICAgICAqIFdlIHRyYWNrIHRoaXMgdG8gcHJldmVudCB0aGUgZWZmZWN0IGZyb20gb3ZlcndyaXRpbmcgdXNlciBzZWxlY3Rpb25zIHdoZW5cbiAgICAgKiBsZWdhY3kgcGFyZW50IGNvbXBvbmVudHMgZG9uJ3QgdXBkYXRlIGNvbmZpZy5zZWxlY3RlZFBhZ2UuIFRoZSBlZmZlY3Qgd2lsbFxuICAgICAqIHNraXAgc3luY2luZyBmcm9tIGNvbmZpZyB3aGlsZSB0aGlzIHBhZ2UgaXMgbWFya2VkIGFzIHVzZXItc2VsZWN0ZWQuXG4gICAgICogXG4gICAgICogSURFQUw6IFBhcmVudCBzaG91bGQgdXBkYXRlIGNvbmZpZy5zZWxlY3RlZFBhZ2UgaW4gcGFnZVNlbGVjdGVkIGhhbmRsZXIuXG4gICAgICogT25jZSBhbGwgcGFyZW50cyBkbyB0aGlzLCB3ZSBjYW4gcmVtb3ZlIHVzZXJTZWxlY3RlZFBhZ2UgdHJhY2tpbmcuXG4gICAgICovXG4gICAgdGhpcy5pc0ludGVybmFsUGFnZVVwZGF0ZSA9IHRydWU7XG4gICAgdGhpcy51c2VyU2VsZWN0ZWRQYWdlID0gcGFnZU51bWJlcjtcblxuICAgIC8vIFVwZGF0ZSBpbnRlcm5hbCBzdGF0ZSBpbW1lZGlhdGVseSAtIHRoaXMgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aFxuICAgIHRoaXMuc2VsZWN0ZWRQYWdlLnNldChwYWdlTnVtYmVyKTtcblxuICAgIC8vIFJlc2V0IGhlYWRlciBjaGVja2JveCB3aGVuIG5hdmlnYXRpbmcgdG8gYSBkaWZmZXJlbnQgcGFnZVxuICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3guc2V0KGZhbHNlKTtcbiAgICBcbiAgICAvLyBVcGRhdGUgcGFnZSBudW1iZXJzIGRpc3BsYXkgZm9yIHBhZ2luYXRpb24gd2l0aCBtYW55IHBhZ2VzXG4gICAgbGV0IGxlbiA9IHRoaXMudGFibGVDb25maWcoKS5wYWdpbmF0aW9uQ29uZmlnLm5vT2ZQYWdlcztcbiAgICBpZiAobGVuID4gNykge1xuICAgICAgaWYgKHBhZ2VOdW1iZXIgLSAyIDw9IDEpIHtcbiAgICAgICAgdGhpcy5wYWdlcy5zZXQoWzEsIDIsIDMsIDQsIDAsIGxlbl0pO1xuICAgICAgfSBlbHNlIGlmIChwYWdlTnVtYmVyIC0gMiA+IDEgJiYgcGFnZU51bWJlciArIDIgPCBsZW4pIHtcbiAgICAgICAgdGhpcy5wYWdlcy5zZXQoWzEsIDAsIHBhZ2VOdW1iZXIgLSAxLCBwYWdlTnVtYmVyLCBwYWdlTnVtYmVyICsgMSwgMCwgbGVuXSk7XG4gICAgICB9IGVsc2UgaWYgKHBhZ2VOdW1iZXIgKyAyID49IGxlbikge1xuICAgICAgICB0aGlzLnBhZ2VzLnNldChbMSwgMCwgbGVuIC0gMywgbGVuIC0gMiwgbGVuIC0gMSwgbGVuXSk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIC8vIEVtaXQgdG8gcGFyZW50IC0gdGhleSBtYXkgb3IgbWF5IG5vdCB1cGRhdGUgY29uZmlnLCBidXQgd2UgcHJvdGVjdCBvdXIgc3RhdGVcbiAgICB0aGlzLnBhZ2VTZWxlY3RlZC5lbWl0KHBhZ2VOdW1iZXIpO1xuICB9XG5cbiAgLy8gTWFpbiBjb250YWluZXIgcmVsYXRlZCBmdW5jdGlvbnNcbiAgZ2V0Q29udGFpbmVySGVpZ2h0KCkge1xuICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnKCk/LmhlaWdodCkgcmV0dXJuIHRoaXMudGFibGVDb25maWcoKS5oZWlnaHQ7XG4gICAgZWxzZSByZXR1cm4gXCJcIjtcbiAgfVxuICBnZXRDb250YWluZXJXaWR0aCgpIHtcbiAgICBpZiAodGhpcy50YWJsZUNvbmZpZygpPy53aWR0aCkgcmV0dXJuIHRoaXMudGFibGVDb25maWcoKS53aWR0aDtcbiAgICBlbHNlIHJldHVybiBcIlwiO1xuICB9XG5cbiAgLy8gQ29sdW1uIEhlYWRlcnMgcmVsYXRlZCBmdW5jdGlvbnNcbiAgZ2V0Q29sSGVhZGVyc1Jvd1N0eWxlcygpIHtcbiAgICBjb25zdCB7IGNvbEhlYWRlcnNSb3dDb25maWcgfSA9IHRoaXMudGFibGVDb25maWcoKTtcbiAgICBjb25zdCBtaW5IZWlnaHQgPSBjb2xIZWFkZXJzUm93Q29uZmlnPy5oZWlnaHQgfHwgXCI0NHB4XCI7XG4gICAgY29uc3QgYm9yZGVyVG9wID0gKGNvbEhlYWRlcnNSb3dDb25maWc/LnN0eWxlIGFzIGFueSk/LmJvcmRlclRvcCB8fCBcIlwiO1xuICAgIGNvbnN0IGJvcmRlckJvdHRvbSA9IChjb2xIZWFkZXJzUm93Q29uZmlnPy5zdHlsZSBhcyBhbnkpPy5ib3JkZXJCb3R0b20gfHwgXCIxcHggc29saWQgI0UwRTBFMFwiO1xuICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IChjb2xIZWFkZXJzUm93Q29uZmlnPy5zdHlsZSBhcyBhbnkpPy5iYWNrZ3JvdW5kQ29sb3IgfHwgXCIjRkZGRkZGXCI7XG4gICAgY29uc3QgZm9udFNpemUgPSAoY29sSGVhZGVyc1Jvd0NvbmZpZz8uc3R5bGUgYXMgYW55KT8uZm9udFNpemUgfHwgXCIxNHB4XCI7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwibWluLWhlaWdodFwiOiBtaW5IZWlnaHQsXG4gICAgICBcImJvcmRlci10b3BcIjogYm9yZGVyVG9wLFxuICAgICAgXCJib3JkZXItYm90dG9tXCI6IGJvcmRlckJvdHRvbSxcbiAgICAgIFwiYmFja2dyb3VuZC1jb2xvclwiOiBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBcImZvbnQtc2l6ZVwiOiBmb250U2l6ZVxuICAgIH07XG4gIH1cblxuICBvblNvcnRDaGFuZ2Uoc29ydFN0YXRlOiBTb3J0U3RhdGUpIHtcbiAgICAvLyBFbWl0IHRoZSBzb3J0IGNoYW5nZSB0byB0aGUgcGFyZW50IGNvbXBvbmVudFxuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnRTdGF0ZSk7XG4gICAgXG4gICAgLy8gSGFuZGxlIG11bHRpLWNvbHVtbiBzb3J0IGlmIGVuYWJsZWRcbiAgICBpZiAodGhpcy50YWJsZUNvbmZpZygpLm11bHRpQ29sdW1uU29ydCkge1xuICAgICAgY29uc3QgY3VycmVudE11bHRpU29ydCA9IHRoaXMubXVsdGlDb2x1bW5Tb3J0KCk7XG4gICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRNdWx0aVNvcnQuZmluZEluZGV4KHNvcnQgPT4gc29ydC5jb2x1bW4gPT09IHNvcnRTdGF0ZS5jb2x1bW4pO1xuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBpZiAoc29ydFN0YXRlLmRpcmVjdGlvbiA9PT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IG5ld011bHRpU29ydCA9IFsuLi5jdXJyZW50TXVsdGlTb3J0XTtcbiAgICAgICAgICBuZXdNdWx0aVNvcnQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB0aGlzLm11bHRpQ29sdW1uU29ydC5zZXQobmV3TXVsdGlTb3J0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXdNdWx0aVNvcnQgPSBbLi4uY3VycmVudE11bHRpU29ydF07XG4gICAgICAgICAgbmV3TXVsdGlTb3J0W2luZGV4XSA9IHNvcnRTdGF0ZTtcbiAgICAgICAgICB0aGlzLm11bHRpQ29sdW1uU29ydC5zZXQobmV3TXVsdGlTb3J0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzb3J0U3RhdGUuZGlyZWN0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMubXVsdGlDb2x1bW5Tb3J0LnNldChbLi4uY3VycmVudE11bHRpU29ydCwgc29ydFN0YXRlXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0QWN0aW9uc0NlbGxTdHlsZShzdHlsZTogYW55KTogYW55IHtcbiAgICBpZiAoIXN0eWxlKSByZXR1cm4ge307XG4gICAgY29uc3QgeyB3aWR0aCwgLi4ucmVzdFN0eWxlIH0gPSBzdHlsZTtcbiAgICByZXR1cm4gcmVzdFN0eWxlO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhldmVudDogYW55LCByb3dJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmFjdGlvblR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgIGNvbnN0IGFjdGlvbkluZm8gPSB0aGlzLmZpbmRBY3Rpb25Db25maWcoJ2NoZWNrYm94Jyk7XG4gICAgICBpZiAoYWN0aW9uSW5mbyAmJiB0aGlzLnRhYmxlRGF0YSgpW3Jvd0luZGV4XSkge1xuICAgICAgICBjb25zdCB7IGluZGV4LCBjb25maWcgfSA9IGFjdGlvbkluZm87XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVSb3dzID0gdGhpcy5hY3RpdmVSb3dJbmRleCgpO1xuICAgICAgICBcbiAgICAgICAgY29uc3QgY2hlY2tlZFJvd0luZGljZXMgPSBldmVudC52YWx1ZVxuICAgICAgICAgID8gWy4uLmN1cnJlbnRBY3RpdmVSb3dzLCByb3dJbmRleF1cbiAgICAgICAgICA6IGN1cnJlbnRBY3RpdmVSb3dzLmZpbHRlcihpID0+IGkgIT09IHJvd0luZGV4KTtcbiAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkVGFibGVEYXRhID0gdGhpcy51cGRhdGVDaGVja2JveFN0YXRlKGNoZWNrZWRSb3dJbmRpY2VzLCBpbmRleCk7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBjaGVja2VkSXRlbXMgPSB0aGlzLmJ1aWxkQ2hlY2tlZEl0ZW1zKGNoZWNrZWRSb3dJbmRpY2VzLCB1cGRhdGVkVGFibGVEYXRhKTtcbiAgICAgICAgY29uZmlnLmFjdGlvbj8uKGNoZWNrZWRJdGVtcywgcm93SW5kZXgpO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmKGV2ZW50LmFjdGlvblR5cGUgPT09ICdyb3ctY29sbGFwc2UnKXtcbiAgICAgIGNvbnN0IHJvd0NvbGxhcHNlID0gdGhpcy5maW5kQWN0aW9uQ29uZmlnKCdyb3ctY29sbGFwc2UnKTtcbiAgICAgIGlmIChyb3dDb2xsYXBzZSAmJiB0aGlzLnRhYmxlRGF0YSgpW3Jvd0luZGV4XSkge1xuICAgICAgICB0aGlzLnRhYmxlRGF0YSgpW3Jvd0luZGV4XVtyb3dDb2xsYXBzZS5pbmRleF0gPSBldmVudC52YWx1ZTtcbiAgICAgICAgcm93Q29sbGFwc2UuY29uZmlnLmFjdGlvbj8uKHRoaXMudGFibGVEYXRhKCkpO1xuICAgICAgICB0aGlzLmJ1aWxkRXhwYW5kZWRNYXAoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmaW5kQWN0aW9uQ29uZmlnKGFjdGlvblR5cGU6IHN0cmluZyk6IHsgaW5kZXg6IG51bWJlciwgY29uZmlnOiBDb2xDb25maWcgfSB8IG51bGwge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50YWJsZUNvbmZpZygpLmNvbENvbmZpZy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY29sID0gdGhpcy50YWJsZUNvbmZpZygpLmNvbENvbmZpZ1tpXTtcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2FjdGlvbnMnICYmIGNvbC5hY3Rpb25UeXBlID09PSBhY3Rpb25UeXBlKSB7XG4gICAgICAgIHJldHVybiB7IGluZGV4OiBpLCBjb25maWc6IGNvbCB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBcblxuICBpc1Jvd0Rpc2FibGVkKHJvdzogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnRhYmxlQ29uZmlnKCkucm93Q29uZmlnLmRpc2FibGVSb3cgPT09IFwiZnVuY3Rpb25cIiA/IHRoaXMudGFibGVDb25maWcoKS5yb3dDb25maWcuZGlzYWJsZVJvdyhyb3cpIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNoZWNrYm94U3RhdGUoY2hlY2tlZFJvd0luZGljZXM6IG51bWJlcltdLCBjaGVja2JveENvbEluZGV4OiBudW1iZXIpOiBhbnlbXVtdIHtcbiAgICBjb25zdCBjdXJyZW50RGF0YSA9IHRoaXMudGFibGVEYXRhKCk7XG4gICAgXG4gICAgdGhpcy5hY3RpdmVSb3dJbmRleC5zZXQoY2hlY2tlZFJvd0luZGljZXMpO1xuICAgIFxuICAgIGNvbnN0IHVwZGF0ZWRUYWJsZURhdGEgPSBjdXJyZW50RGF0YS5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgY29uc3Qgcm93Q29weSA9IEFycmF5LmZyb20ocm93KTtcbiAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmlzUm93RGlzYWJsZWQocm93KTtcbiAgICAgIFxuICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XG4gICAgICAgIHJvd0NvcHlbY2hlY2tib3hDb2xJbmRleF0gPSBjaGVja2VkUm93SW5kaWNlcy5pbmNsdWRlcyhpKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgcmV0dXJuIHJvd0NvcHk7XG4gICAgfSk7XG4gICAgXG4gICAgdGhpcy5oZWFkZXJBY3Rpb24/LmVtaXQoe1xuICAgICAgdHlwZTogXCJjaGVja2JveFRvZ2dsZVwiLFxuICAgICAgcGF5bG9hZDogdXBkYXRlZFRhYmxlRGF0YVxuICAgIH0pO1xuICAgIFxuICAgIHJldHVybiB1cGRhdGVkVGFibGVEYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENoZWNrZWRJdGVtcyhjaGVja2VkUm93SW5kaWNlczogbnVtYmVyW10sIHVwZGF0ZWRUYWJsZURhdGE6IGFueVtdW10pOiBhbnlbXVtdIHtcbiAgICByZXR1cm4gY2hlY2tlZFJvd0luZGljZXNcbiAgICAgIC5tYXAoY2hlY2tlZEluZGV4ID0+IHtcbiAgICAgICAgY29uc3Qgcm93ID0gdXBkYXRlZFRhYmxlRGF0YVtjaGVja2VkSW5kZXhdO1xuICAgICAgICBpZiAocm93KSB7XG4gICAgICAgICAgcmV0dXJuIFsuLi5yb3ddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIocm93ID0+IHJvdyAhPT0gbnVsbCkgYXMgYW55W11bXTtcbiAgfVxuXG4gIHRvZ2dsZUNoZWNrYm94KCkge1xuICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3guc2V0KCF0aGlzLnNlbGVjdEFsbENoZWNrYm94KCkpO1xuICAgIGNvbnN0IGNoZWNrYm94Q29sSW5kZXggPSB0aGlzLnRhYmxlQ29uZmlnKCkuY29sQ29uZmlnLmZpbmRJbmRleChjb2wgPT4gY29sLnR5cGUgPT09ICdhY3Rpb25zJyAmJiBjb2wuYWN0aW9uVHlwZSA9PT0gJ2NoZWNrYm94Jyk7XG4gICAgaWYgKGNoZWNrYm94Q29sSW5kZXggIT09IC0xKSB7XG4gICAgICBjb25zdCBpc1NlbGVjdEFsbCA9IHRoaXMuc2VsZWN0QWxsQ2hlY2tib3goKTtcbiAgICAgIGNvbnN0IGN1cnJlbnREYXRhID0gdGhpcy50YWJsZURhdGEoKTtcbiAgICAgIFxuICAgICAgY29uc3QgY2hlY2tlZFJvd0luZGljZXMgPSBpc1NlbGVjdEFsbFxuICAgICAgICA/IGN1cnJlbnREYXRhXG4gICAgICAgICAgICAubWFwKChyb3csIGluZGV4KSA9PiB0aGlzLmlzUm93RGlzYWJsZWQocm93KSA/IC0xIDogaW5kZXgpXG4gICAgICAgICAgICAuZmlsdGVyKGluZGV4ID0+IGluZGV4ICE9PSAtMSlcbiAgICAgICAgOiBbXTtcbiAgICAgIFxuICAgICAgdGhpcy51cGRhdGVDaGVja2JveFN0YXRlKGNoZWNrZWRSb3dJbmRpY2VzLCBjaGVja2JveENvbEluZGV4KTtcbiAgICB9XG4gIH1cblxuXG4gIG9uUGFnZVNpemVDaGFuZ2Uoc2VsZWN0ZWRPcHRpb246IERyb3Bkb3duSXRlbSkge1xuICAgIHRoaXMucGFnZVNpemVDaGFuZ2VkLmVtaXQocGFyc2VJbnQoc2VsZWN0ZWRPcHRpb24udmFsdWUpKTtcbiAgfVxuXG4gIHNob3VsZFNob3dQYWdpbmF0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgY29uc3QgY29uZmlnID0gdGhpcy50YWJsZUNvbmZpZygpPy5wYWdpbmF0aW9uQ29uZmlnO1xuICAgICAgaWYgKCFjb25maWcpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IGhhc011bHRpcGxlUGFnZXMgPSBjb25maWcubm9PZlBhZ2VzID4gMTtcbiAgICAgIGNvbnN0IGhhc0Vub3VnaERhdGEgPSB0aGlzLnRhYmxlTGVuZ3RoKCkgPiBjb25maWcucm93c1BlclBhZ2U7XG4gICAgICByZXR1cm4gdGhpcy5zaG93UGFnZVNpemVEcm9wZG93bigpIHx8IGhhc011bHRpcGxlUGFnZXMgfHwgaGFzRW5vdWdoRGF0YTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29uZmlnIHtcbiAgaGVpZ2h0OiBzdHJpbmcgfCBcIjEwMCVcIjtcbiAgd2lkdGg6IHN0cmluZyB8IFwiMTAwJVwiO1xuICBwYWdpbmF0aW9uQ29uZmlnPzogUGFnaW5hdGlvbkNvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIGNvbEhlYWRlcnNSb3dDb25maWc6IFJvd0NvbmZpZyB8IHVuZGVmaW5lZCB8IG51bGw7XG4gIHJvd0NvbmZpZzogUm93Q29uZmlnIHwgdW5kZWZpbmVkIHwgbnVsbDtcbiAgY29sSGVhZGVyQ29uZmlnOiBBcnJheTxDb2xIZWFkZXJDb25maWc+O1xuICBjb2xDb25maWc6IEFycmF5PENvbENvbmZpZz47XG4gIGNhbkV4cGFuZD86IGJvb2xlYW47XG4gIGNhblNjcm9sbEhvcml6b250YWxseT86IGJvb2xlYW47XG4gIGNlbGxIb3Zlcj86IGJvb2xlYW47XG4gIGFjdGl2ZVJvd0luZGV4PzogbnVtYmVyIHwgbnVtYmVyW107XG4gIG11bHRpQ29sdW1uU29ydD86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb25Db25maWcge1xuICBub09mUGFnZXM6IG51bWJlcjtcbiAgcm93c1BlclBhZ2U6IG51bWJlcjtcbiAgdG90YWxOb09mUm93czogbnVtYmVyO1xuICBzZWxlY3RlZFBhZ2U/OiBudW1iZXI7XG4gIGRpc2FibGVQYWdlSnVtcGluZz86IGJvb2xlYW47XG4gIHNob3dQYWdlU2l6ZURyb3Bkb3duPzogYm9vbGVhbjsgLy8gV2hlbiB0cnVlLCByb3dzUGVyUGFnZSB2YWx1ZSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gcGFnZVNpemVzIGFycmF5XG4gIHBhZ2VTaXplcz86IG51bWJlcltdO1xufVxuZXhwb3J0IGludGVyZmFjZSBSb3dDb25maWcge1xuICBoZWlnaHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsO1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG4gIGRpc2FibGVSb3c/OiAoZGF0YTogYW55KSA9PiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2xIZWFkZXJDb25maWcge1xuICB0eXBlOiBcInRleHRcIiB8IFwibnVtYmVyXCIgfCBcImN1c3RvbVwiIHwgXCJjaGVja2JveFwiO1xuICBkYXRhOiBhbnk7XG4gIGNvbXBvbmVudFJlZj86IGFueTtcbiAgZmlsdGVycz86IEFycmF5PEZpbHRlcj4gfCBudWxsO1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG4gIGlzU29ydGFibGU/OiBib29sZWFuO1xuICBzb3J0QXNjSWNvbj86IHN0cmluZztcbiAgc29ydERlc2NJY29uPzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2xDb25maWcge1xuICB0eXBlOiBcInRleHRcIiB8IFwibnVtYmVyXCIgfCBcImN1c3RvbVwiIHwgXCJhY3Rpb25zXCIgfCBcImh0bWxcIjtcbiAgY29tcG9uZW50UmVmPzogYW55O1xuICBzdHlsZT86IHt9O1xuICBhY3Rpb24/OiBhbnk7XG4gIGFjdGlvbkl0ZW1zPzogQWN0aW9uSXRlbVtdO1xuICBhY3Rpb25UeXBlPzogXCJpbmxpbmVcIiB8IFwiZHJvcGRvd25cIiB8IFwiY2hlY2tib3hcIiB8IFwicm93LWNvbGxhcHNlXCI7IC8vIGlubGluZSBmb3IgaW5kaXZpZHVhbCBpY29ucywgZHJvcGRvd24gZm9yIG1lbnVcbiAgZGlzYWJsZT86IChyb3dEYXRhOiBhbnkpID0+IGJvb2xlYW47XG4gIGNvbGxhcHNlQ29sdW1uSW5kZXg/OiBudW1iZXI7XG4gIHByZXZpZXdMaW5lcz86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uSXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGRpc2FibGU/OiAoZGF0YTogYW55KSA9PiBib29sZWFuO1xuICBhY3Rpb24/OiAoZGF0YTogYW55KSA9PiB2b2lkO1xuICBjaGlsZHJlbj86IEFjdGlvbkl0ZW1bXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxBY3Rpb25JdGVtIGV4dGVuZHMgQWN0aW9uSXRlbSB7XG4gIHNob3dTdWJtZW51PzogYm9vbGVhbjtcbn1cbiIsIjxkaXZcbiAgW25nU3R5bGVdPVwie1xuICAgIGhlaWdodDogZ2V0Q29udGFpbmVySGVpZ2h0KCksXG4gICAgd2lkdGg6IGdldENvbnRhaW5lcldpZHRoKCksXG4gICAgJ292ZXJmbG93LXgnOiB0YWJsZUNvbmZpZygpLmNhblNjcm9sbEhvcml6b250YWxseSA/ICdhdXRvJyA6ICd1bnNldCdcbiAgfVwiXG4gIGlkPVwibWFpbi1jb250YWluZXJcIlxuPlxuICA8bWlzLXRhYmxlLWZpbHRlclxuICAgICNmaWx0ZXJcbiAgICAoZmlsdGVyc0FwcGxpZWQpPVwidXBkYXRlQXBwbGllZEZpbHRlcnMoJGV2ZW50KVwiXG4gICAgKm5nSWY9XCJzaG93RmlsdGVyKClcIlxuICAgIFtjb250YWluZXJTdHlsZXNdPVwiZmlsdGVyQ29udGFpbmVyU3R5bGVzKClcIlxuICAgIFtmaWx0ZXJzRGF0YV09XCJmaWx0ZXJEYXRhKClcIlxuICA+PC9taXMtdGFibGUtZmlsdGVyPlxuICA8ZGl2XG4gICAgI3RhYmxlXG4gICAgaWQ9XCJ0YWJsZS1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ25vLXNjcm9sbGJhcic6IGV4cGFuZGVkSW5kZXgoKSA8IDAsIHNjcm9sbGJhcjogIShleHBhbmRlZEluZGV4KCkgPCAwKSwgJ3Njcm9sbC1ob3Jpem9udGFsbHknOiB0YWJsZUNvbmZpZygpLmNhblNjcm9sbEhvcml6b250YWxseSB9XCJcbiAgPlxuICAgIDxkaXZcbiAgICBbbmdTdHlsZV09XCJnZXRDb2xIZWFkZXJzUm93U3R5bGVzKClcIlxuICAgICAgaWQ9XCJjb2wtaGVhZGVycy1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgI2NvbEhlYWRlclJlZlxuICAgICAgICAoY2xpY2spPVwiY29sSGVhZGVyPy5hY3Rpb24gPyBjb2xIZWFkZXI/LmFjdGlvbihjb2xIZWFkZXIpIDogbnVsbFwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2xIZWFkZXIgb2YgdGFibGVDb25maWcoKT8uY29sSGVhZGVyQ29uZmlnXCJcbiAgICAgICAgY2xhc3M9XCJjb2wtaGVhZGVyXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIHdpZHRoOiBjb2xIZWFkZXI/LnN0eWxlPy53aWR0aCB8fCAnJyxcbiAgICAgICAgICBjdXJzb3I6IGNvbEhlYWRlci5hY3Rpb24gPyAncG9pbnRlcicgOiAnZGVmYXVsdCcsXG4gICAgICAgICAgJ2p1c3RpZnktY29udGVudCc6IGNvbEhlYWRlcj8uc3R5bGU/Lmp1c3RpZnlDb250ZW50XG4gICAgICAgICAgICA/IGNvbEhlYWRlcj8uc3R5bGU/Lmp1c3RpZnlDb250ZW50XG4gICAgICAgICAgICA6IGNvbEhlYWRlci50eXBlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgPyAnZmxleC1lbmQnXG4gICAgICAgICAgICA6ICdzcGFjZS1iZXR3ZWVuJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPHAgKm5nSWY9XCJjb2xIZWFkZXI/LnR5cGUgIT09ICdjdXN0b20nICYmIGNvbEhlYWRlcj8udHlwZSAhPT0gJ2NoZWNrYm94J1wiIGNsYXNzPVwiY29sLWhlYWRlci10ZXh0XCI+XG4gICAgICAgICAge3sgY29sSGVhZGVyPy5kYXRhIHx8IFwiIFwiIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyRGF0YS5zZXQoY29sSGVhZGVyLmZpbHRlcnMpOyB0b2dnbGVGaWx0ZXIoY29sSGVhZGVyLmRhdGEpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICpuZ0lmPVwiY29sSGVhZGVyPy50eXBlICE9PSAnY3VzdG9tJyAmJiBjb2xIZWFkZXI/LmZpbHRlcnMgJiYgY29sSGVhZGVyPy5maWx0ZXJzPy5sZW5ndGggPiAwXCJcbiAgICAgICAgICBjbGFzcz1cImZpbHRlci1pY29uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYXBwbGllZEZpbHRlcnMoKVtjb2xIZWFkZXIuZGF0YV0/Lmxlbmd0aCA+IDBcIiBpZD1cImZpbHRlci1hY3RpdmVcIj48L3NwYW4+XG4gICAgICAgICAgPHN2ZyBmaWxsPVwibm9uZVwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCAxMyAxMFwiIHdpZHRoPVwiMTNcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgICAgICAgZD1cIk00Ljk3NTQ2IDEwSDcuNjQyMTNWOEg0Ljk3NTQ2VjEwWk0wLjMwODQ3MiAwVjJIMTIuMzA4NVYwSDAuMzA4NDcyWk0yLjMwODQ3IDZIMTAuMzA4NVY0SDIuMzA4NDdWNlpcIlxuICAgICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGVja2JveCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICpuZ0lmPVwiY29sSGVhZGVyPy50eXBlID09PSAnY2hlY2tib3gnXCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrYm94LWljb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPG1pcy1jaGVja2JveCBbY2hlY2tlZF09XCJzZWxlY3RBbGxDaGVja2JveCgpXCI+PC9taXMtY2hlY2tib3g+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjb2xIZWFkZXI/LmlzU29ydGFibGUgJiYgIWNvbEhlYWRlcj8uZmlsdGVyc1wiIGFwcFNvcnRJY29uc1xuICAgICAgICAgIFtjb2x1bW5dPVwiY29sSGVhZGVyXCJcbiAgICAgICAgICBbYWN0aXZlU29ydF09XCJjdXJyZW50U29ydCgpXCJcbiAgICAgICAgICBbYWN0aXZlU29ydHNdPVwibXVsdGlDb2x1bW5Tb3J0KClcIlxuICAgICAgICAgIFttdWx0aUNvbHVtblNvcnRdPVwidGFibGVDb25maWcoKS5tdWx0aUNvbHVtblNvcnRcIlxuICAgICAgICAgIChzb3J0Q2hhbmdlKT1cIm9uU29ydENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBjbGFzcz1cInNvcnQtaWNvblwiPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJjb2xIZWFkZXI/LnR5cGUgPT09ICdjdXN0b20nXCIgY3VzdG9tVGFibGVDZWxsIFtjdXN0b21Db21wb25lbnRdPVwiY29sSGVhZGVyPy5jb21wb25lbnRSZWZcIiBbZGF0YV09XCJjb2xIZWFkZXIuZGF0YVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBcbiAgICA8ZGl2IGlkPVwiZGF0YS1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3ctd3JhcHBlclwiICpuZ0Zvcj1cImxldCByb3cgb2YgdGFibGVEYXRhKCk7IGxldCBpID0gaW5kZXg7IGxldCByb3dJbmRleCA9IGluZGV4XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInQtcm93XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0LXJvdy1ob3Zlcic6IHRhYmxlQ29uZmlnKCkuY2VsbEhvdmVyLCAnYWN0aXZlLXJvdyc6IGFjdGl2ZVJvd0luZGV4KCkuaW5jbHVkZXMoaSkgfVwiXG4gICAgICAgICAgW25nU3R5bGVdPVwieyAnbWluLWhlaWdodCc6IHRhYmxlQ29uZmlnKCk/LnJvd0NvbmZpZz8uaGVpZ2h0ID8gdGFibGVDb25maWcoKS5yb3dDb25maWcuaGVpZ2h0IDogJzQ0cHgnIH1cIlxuICAgICAgICAgIChjbGljayk9XCJzZWxlY3RSb3coaSlcIlxuICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZC1yb3ddPVwiaXNSb3dEaXNhYmxlZChyb3cpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKGNsaWNrKT1cInRhYmxlQ29uZmlnKCk/LmNvbENvbmZpZ1tjb2xJbmRleF0/LmFjdGlvbiAmJiB0YWJsZUNvbmZpZygpPy5jb2xDb25maWdbY29sSW5kZXhdPy5hY3Rpb25UeXBlICE9PSAnY2hlY2tib3gnID8gdGFibGVDb25maWcoKT8uY29sQ29uZmlnW2NvbEluZGV4XT8uYWN0aW9uKGNvbCkgOiBudWxsXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2Ygcm93OyBsZXQgY29sSW5kZXggPSBpbmRleFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgIHdpZHRoOiB0YWJsZUNvbmZpZygpPy5jb2xDb25maWdbY29sSW5kZXhdPy5zdHlsZT8ud2lkdGggfHwgdGFibGVDb25maWcoKT8uY29sSGVhZGVyQ29uZmlnW2NvbEluZGV4XT8uc3R5bGU/LndpZHRoIHx8ICcnXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwidC1jb2wtY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3QtY29sLWNvbnRhaW5lci1ob3Zlcic6IHRhYmxlQ29uZmlnKCkuY2VsbEhvdmVyIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0LWNvbFwiXG4gICAgICAgICAgICAgIFtzdHlsZV09XCJ0YWJsZUNvbmZpZygpLmNvbENvbmZpZ1tjb2xJbmRleF0/LnN0eWxlXCJcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgY3Vyc29yOiB0YWJsZUNvbmZpZygpLmNvbENvbmZpZ1tjb2xJbmRleF0/LmFjdGlvbiA/ICdwb2ludGVyJyA6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAnanVzdGlmeS1jb250ZW50JzogdGFibGVDb25maWcoKS5jb2xDb25maWdbY29sSW5kZXhdPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgICAgICAgID8gdGFibGVDb25maWcoKS5jb2xDb25maWdbY29sSW5kZXhdPy5zdHlsZT8uanVzdGlmeUNvbnRlbnRcbiAgICAgICAgICAgICAgICAgIDogdGFibGVDb25maWcoKS5jb2xDb25maWdbY29sSW5kZXhdPy50eXBlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgICAgPyAnZmxleC1lbmQnXG4gICAgICAgICAgICAgICAgICA6ICdzcGFjZS1iZXR3ZWVuJ1xuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwidGFibGVDb25maWcoKS5jb2xDb25maWdbY29sSW5kZXhdPy50eXBlICE9PSAnY3VzdG9tJyAmJiB0YWJsZUNvbmZpZygpLmNvbENvbmZpZ1tjb2xJbmRleF0/LnR5cGUgIT09ICdhY3Rpb25zJ1wiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgIGNvbG9yOiB0YWJsZUNvbmZpZygpPy5jb2xDb25maWdbY29sSW5kZXhdPy5zdHlsZT8uY29sb3IgfHwgJycsXG4gICAgICAgICAgICAgICctLWNvbGxhcHNlZC1saW5lcyc6IHByZXZpZXdMaW5lcygpIHx8IDNcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnY29sbGFwc2VkLWNlbGwnOiBjb2xsYXBzZUNvbEluZGV4KCkgPT0gY29sSW5kZXggJiYgZXhwYW5kZWRNYXAoKVtyb3dJbmRleF1cbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWNvbC10ZXh0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIFJlbmRlciBhcyBIVE1MIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlQ29uZmlnKCkuY29sQ29uZmlnW2NvbEluZGV4XT8udHlwZSA9PT0gJ2h0bWwnOyBlbHNlIHBsYWluVGV4dFwiPlxuICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIFxuICAgICAgICAgICAgPCEtLSBSZW5kZXIgYXMgcGxhaW4gdGV4dCAtLT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhaW5UZXh0PlxuICAgICAgICAgICAgICA8c3Bhbj57eyBjb2wgfX08L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZUNvbmZpZygpLmNvbENvbmZpZ1tjb2xJbmRleF0/LnR5cGUgPT09ICdjdXN0b20nXCJcbiAgICAgICAgICAgICAgICBbY3VzdG9tQ29tcG9uZW50XT1cInRhYmxlQ29uZmlnKCkuY29sQ29uZmlnW2NvbEluZGV4XS5jb21wb25lbnRSZWZcIlxuICAgICAgICAgICAgICAgIFtkYXRhXT1cImNvbFwiXG4gICAgICAgICAgICAgICAgY3VzdG9tVGFibGVDZWxsXG4gICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxtaXMtYWN0aW9ucy1jZWxsXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYmxlQ29uZmlnKCkuY29sQ29uZmlnW2NvbEluZGV4XT8udHlwZSA9PT0gJ2FjdGlvbnMnXCJcbiAgICAgICAgICAgICAgICAgIFtjZWxsRGF0YV09XCJjb2xcIlxuICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJ0YWJsZUNvbmZpZygpLmNvbENvbmZpZ1tjb2xJbmRleF1cIlxuICAgICAgICAgICAgICAgICAgKGFjdGlvbkNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soJGV2ZW50LCByb3dJbmRleClcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAnZGlzYWJsZS1hY3Rpb25zJzogKHRhYmxlQ29uZmlnKCkuY29sQ29uZmlnW2NvbEluZGV4XT8uYWN0aW9uVHlwZSA9PT0gJ2NoZWNrYm94JyB8fCB0YWJsZUNvbmZpZygpLmNvbENvbmZpZ1tjb2xJbmRleF0/LmFjdGlvblR5cGUgPT09ICdyb3ctY29sbGFwc2UnKSAmJiBpc1Jvd0Rpc2FibGVkKHJvdylcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgID48L21pcy1hY3Rpb25zLWNlbGw+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInRhYmxlQ29uZmlnKCk/LmNhbkV4cGFuZCAmJiBleHBhbmRlZEluZGV4KCkgPT09IGlcIiBjbGFzcz1cInN1Yi1yb3dcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3ViVGFibGVEYXRhTG9hZGluZygpXCI+XG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAnMTZweCdcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgTG9hZGluZy4uLlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdWJUYWJsZURhdGFMb2FkaW5nKCkgJiYgc3ViVGFibGVEYXRhKCkubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBwYWRkaW5nOiAnMTZweCdcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICAgICAgTm8gRGF0YSBBdmFpbGFibGUuLi5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIFxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3ViVGFibGVEYXRhTG9hZGluZygpICYmIHN1YlRhYmxlRGF0YSgpLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxzdWItdGFibGUgW2NvbmZpZ109XCJzdWJUYWJsZWNvbmZpZygpXCIgW3RhYmxlRGF0YV09XCJzdWJUYWJsZURhdGEoKVwiPjwvc3ViLXRhYmxlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBpZD1cInBhZ2luYXRpb24tY29udGVudC1jb250YWluZXJcIj5cbiAgICBAaWYoc2hvdWxkU2hvd1BhZ2luYXRpb24oKSl7XG4gICAgICA8ZGl2IFxuICAgICAgICBpZD1cInBhZ2luYXRpb24tY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPHAgaWQ9XCJwYWdpbmF0aW9uLXRleHRcIj5cbiAgICAgICAgICBTaG93aW5nXG4gICAgICAgICAge3sgKHNlbGVjdGVkUGFnZSgpIC0gMSkgKiB0YWJsZUNvbmZpZygpLnBhZ2luYXRpb25Db25maWcucm93c1BlclBhZ2UgKyAxIH19LXt7XG4gICAgICAgICAgICAoc2VsZWN0ZWRQYWdlKCkgLSAxKSAqIHRhYmxlQ29uZmlnKCkucGFnaW5hdGlvbkNvbmZpZy5yb3dzUGVyUGFnZSArIHRhYmxlTGVuZ3RoKClcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9mIHt7IHRhYmxlQ29uZmlnKCkucGFnaW5hdGlvbkNvbmZpZy50b3RhbE5vT2ZSb3dzIH19IGl0ZW1zXG4gICAgICAgIDwvcD5cbiAgICAgICAgQGlmKHNob3dQYWdlU2l6ZURyb3Bkb3duKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1zaXplLXNlbGVjdG9yXCI+XG4gICAgICAgICAgICA8bWlzLWRyb3Bkb3duXG4gICAgICAgICAgICAgIFtkYXRhXT1cInBhZ2VTaXplT3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgW3NlbGVjdGVkSXRlbV09XCJzZWxlY3RlZFBhZ2VTaXplT3B0aW9uKClcIlxuICAgICAgICAgICAgICBbd2lkdGhdPVwiJzkwcHgnXCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCInMzJweCdcIlxuICAgICAgICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtkcm9wZG93bkxpc3RIZWlnaHRdPVwiJzEwMHB4J1wiXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICBjbGFzcz1cInBhZ2Utc2l6ZS1kcm9wZG93blwiXG4gICAgICAgICAgICA+PC9taXMtZHJvcGRvd24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBpZD1cInBhZ2VzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxzcGFuICAgKGNsaWNrKT1cInNlbGVjdGVkUGFnZSgpID4gMSAmJiB1cGRhdGVTZWxlY3RlZFBhZ2Uoc2VsZWN0ZWRQYWdlKCkgLSAxKVwiIGNsYXNzPVwicGFnZVwiIFtjbGFzcy5wYWdlLW5hdi1pbmFjdGl2ZV09XCJzZWxlY3RlZFBhZ2UoKSA9PT0gMVwiPlxuICAgICAgICAgICAgPHN2ZyBmaWxsPVwibm9uZVwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCA3IDEwXCIgd2lkdGg9XCI3XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgIGQ9XCJNMC44NTc0MDUgNS41NjI5NUMwLjg1NTc5NCA1LjU2MTM5IDAuODU0MTg4IDUuNTU5ODIgMC44NTI1ODggNS41NTgyNEMwLjY5NTk1NSA1LjQwNDA4IDAuNjE3NjQxIDUuMjAyMDMgMC42MTc2NDcgNC45OTk5OEMwLjYxNzY0MSA0Ljc5NzkzIDAuNjk1OTU1IDQuNTk1ODggMC44NTI1ODggNC40NDE3MkMwLjg1NDE4OCA0LjQ0MDE0IDAuODU1Nzk0IDQuNDM4NTggMC44NTc0MDQgNC40MzcwMkw1LjEzMDY2IDAuMjMxMjMxQzUuNDQzOTIgLTAuMDc3MDc3MSA1Ljk1MTggLTAuMDc3MDc3MSA2LjI2NTA2IDAuMjMxMjMxQzYuNTc4MzEgMC41Mzk1NCA2LjU3ODMxIDEuMDM5NDEgNi4yNjUwNiAxLjM0NzcyTDIuNTU0MiA0Ljk5OTk4TDYuMjY1MDYgOC42NTIyNUM2LjU3ODMxIDguOTYwNTUgNi41NzgzMSA5LjQ2MDQyIDYuMjY1MDYgOS43Njg3M0M1Ljk1MTggMTAuMDc3IDUuNDQzOTIgMTAuMDc3IDUuMTMwNjYgOS43Njg3M0wwLjg1NzQwNSA1LjU2Mjk1WlwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPCEtLSBQYWdlIG51bWJlcnMgKG9ubHkgc2hvdyBpZiBkaXNhYmxlUGFnZUp1bXBpbmcgaXMgZmFsc2UpIC0tPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJsZUNvbmZpZygpLnBhZ2luYXRpb25Db25maWc/LmRpc2FibGVQYWdlSnVtcGluZ1wiPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwYWdlTnVtYmVyIG9mIHBhZ2VzKClcIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkUGFnZShwYWdlTnVtYmVyKVwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInBhZ2VOdW1iZXIgIT0gMFwiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdwYWdlLWFjdGl2ZSc6IHBhZ2VOdW1iZXIgPT09IHNlbGVjdGVkUGFnZSgpIH1cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwYWdlIHBhZ2UtanVtcGluZy1lbmFibGVkXCJcbiAgICAgICAgICAgICAgICA+e3sgcGFnZU51bWJlciB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhZ2VOdW1iZXIgPT0gMFwiIGNsYXNzPVwicGFnZS1zZXBlcmF0b3JcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwieyBkaXNwbGF5OiAnZmxleCcgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRvdFwiIFtuZ1N0eWxlXT1cInsgJ21hcmdpbi1yaWdodCc6ICc0cHgnIH1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90XCIgW25nU3R5bGVdPVwieyAnbWFyZ2luLXJpZ2h0JzogJzRweCcgfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3RcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICBcbiAgICAgICAgICA8c3BhbiBbY2xhc3MucGFnZS1uYXYtaW5hY3RpdmVdPVwic2VsZWN0ZWRQYWdlKCkgPT09IHRhYmxlQ29uZmlnKCkucGFnaW5hdGlvbkNvbmZpZz8ubm9PZlBhZ2VzXCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0ZWRQYWdlKCkgPCB0YWJsZUNvbmZpZygpLnBhZ2luYXRpb25Db25maWc/Lm5vT2ZQYWdlcyAmJiB1cGRhdGVTZWxlY3RlZFBhZ2Uoc2VsZWN0ZWRQYWdlKCkgKyAxKVwiIGNsYXNzPVwicGFnZVwiPlxuICAgICAgICAgICAgPHN2ZyBmaWxsPVwibm9uZVwiIGhlaWdodD1cIjEwXCIgdmlld0JveD1cIjAgMCA3IDEwXCIgd2lkdGg9XCI3XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAgIGQ9XCJNNi4xNDI2IDUuNTYyOTVDNi4xNDQyMSA1LjU2MTM5IDYuMTQ1ODEgNS41NTk4MiA2LjE0NzQxIDUuNTU4MjRDNi4zMDQwNSA1LjQwNDA4IDYuMzgyMzYgNS4yMDIwMyA2LjM4MjM2IDQuOTk5OThDNi4zODIzNiA0Ljc5NzkzIDYuMzA0MDUgNC41OTU4OCA2LjE0NzQxIDQuNDQxNzJDNi4xNDU4MSA0LjQ0MDE0IDYuMTQ0MjEgNC40Mzg1OCA2LjE0MjYgNC40MzcwMkwxLjg2OTM0IDAuMjMxMjMxQzEuNTU2MDggLTAuMDc3MDc3MSAxLjA0ODIgLTAuMDc3MDc3MSAwLjczNDk0MiAwLjIzMTIzMUMwLjQyMTY4OCAwLjUzOTU0IDAuNDIxNjg4IDEuMDM5NDEgMC43MzQ5NDIgMS4zNDc3Mkw0LjQ0NTggNC45OTk5OEwwLjczNDk0MSA4LjY1MjI1QzAuNDIxNjg2IDguOTYwNTUgMC40MjE2ODYgOS40NjA0MiAwLjczNDk0MSA5Ljc2ODczQzEuMDQ4MiAxMC4wNzcgMS41NTYwOCAxMC4wNzcgMS44NjkzNCA5Ljc2ODczTDYuMTQyNiA1LjU2Mjk1WlwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIiMxODFGMzNcIlxuICAgICAgICAgICAgICAgIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -802,7 +802,7 @@ class TableComponent {
|
|
|
802
802
|
else if (event.actionType === 'row-collapse') {
|
|
803
803
|
const rowCollapse = this.findActionConfig('row-collapse');
|
|
804
804
|
if (rowCollapse && this.tableData()[rowIndex]) {
|
|
805
|
-
|
|
805
|
+
this.tableData()[rowIndex][rowCollapse.index] = event.value;
|
|
806
806
|
rowCollapse.config.action?.(this.tableData());
|
|
807
807
|
this.buildExpandedMap();
|
|
808
808
|
}
|
|
@@ -1850,8 +1850,13 @@ class ActionsCellComponent {
|
|
|
1850
1850
|
}
|
|
1851
1851
|
}
|
|
1852
1852
|
onClick(event) {
|
|
1853
|
-
|
|
1854
|
-
|
|
1853
|
+
let newValue;
|
|
1854
|
+
if (this.actionType() === 'row-collapse') {
|
|
1855
|
+
newValue = !this.currentState();
|
|
1856
|
+
}
|
|
1857
|
+
else {
|
|
1858
|
+
newValue = event && typeof event === 'object' ? event.value : event;
|
|
1859
|
+
}
|
|
1855
1860
|
this.currentState.set(newValue);
|
|
1856
1861
|
this.actionClick.emit({
|
|
1857
1862
|
actionType: this.actionType(),
|