@po-ui/ng-components 18.20.0 → 18.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/esm2022/lib/components/po-field/po-input/po-input-base.component.mjs +38 -4
  2. package/esm2022/lib/components/po-field/validators.mjs +21 -8
  3. package/esm2022/lib/components/po-stepper/po-stepper-base.component.mjs +15 -2
  4. package/esm2022/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.mjs +8 -4
  5. package/esm2022/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.mjs +13 -8
  6. package/esm2022/lib/components/po-stepper/po-stepper.component.mjs +5 -5
  7. package/fesm2022/po-ui-ng-components.mjs +94 -25
  8. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  9. package/lib/components/po-field/po-input/po-input-base.component.d.ts +27 -1
  10. package/lib/components/po-field/validators.d.ts +3 -2
  11. package/lib/components/po-stepper/po-stepper-base.component.d.ts +11 -1
  12. package/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.d.ts +2 -1
  13. package/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.d.ts +2 -1
  14. package/package.json +4 -4
  15. package/po-ui-ng-components-18.21.0.tgz +0 -0
  16. package/schematics/ng-add/index.js +1 -1
  17. package/schematics/ng-update/v14/index.js +1 -1
  18. package/schematics/ng-update/v15/index.js +1 -1
  19. package/schematics/ng-update/v16/index.js +1 -1
  20. package/schematics/ng-update/v17/index.js +1 -1
  21. package/schematics/ng-update/v18/index.js +2 -2
  22. package/schematics/ng-update/v2/index.js +1 -1
  23. package/schematics/ng-update/v3/index.js +1 -1
  24. package/schematics/ng-update/v4/index.js +1 -1
  25. package/schematics/ng-update/v5/index.js +1 -1
  26. package/schematics/ng-update/v6/index.js +1 -1
  27. package/po-ui-ng-components-18.20.0.tgz +0 -0
@@ -10,7 +10,7 @@ function PoStepperStepComponent_po_stepper_label_3_Template(rf, ctx) { if (rf &
10
10
  i0.ɵɵelement(0, "po-stepper-label", 4);
11
11
  } if (rf & 2) {
12
12
  const ctx_r0 = i0.ɵɵnextContext();
13
- i0.ɵɵproperty("p-align-center", ctx_r0.alignCenter)("p-content", ctx_r0.label)("p-status", ctx_r0.status)("p-vertical-orientation", ctx_r0.isVerticalOrientation);
13
+ i0.ɵɵproperty("p-align-center", ctx_r0.alignCenter)("p-content", ctx_r0.label)("p-status", ctx_r0.status)("p-vertical-orientation", ctx_r0.isVerticalOrientation)("p-disable-click", ctx_r0.disabledClick);
14
14
  i0.ɵɵattribute("aria-label", ctx_r0.label);
15
15
  } }
16
16
  const poStepperStepSizeDefault = 24;
@@ -94,6 +94,7 @@ export class PoStepperStepComponent {
94
94
  click = new EventEmitter();
95
95
  // Evento que será emitido ao focar no *step* e pressionar a tecla *enter*.
96
96
  enter = new EventEmitter();
97
+ disabledClick = false;
97
98
  literals = {
98
99
  ...poStepLiteralsDefault[poLocaleDefault],
99
100
  ...poStepLiteralsDefault[getShortBrowserLanguage()]
@@ -141,12 +142,12 @@ export class PoStepperStepComponent {
141
142
  }
142
143
  }
143
144
  onClick() {
144
- if (this.status !== PoStepperStatus.Disabled) {
145
+ if (this.status !== PoStepperStatus.Disabled && !this.disabledClick) {
145
146
  this.click.emit();
146
147
  }
147
148
  }
148
149
  onEnter() {
149
- if (this.status !== PoStepperStatus.Disabled) {
150
+ if (this.status !== PoStepperStatus.Disabled && !this.disabledClick) {
150
151
  this.enter.emit();
151
152
  }
152
153
  }
@@ -163,15 +164,16 @@ export class PoStepperStepComponent {
163
164
  }
164
165
  }
165
166
  static ɵfac = function PoStepperStepComponent_Factory(t) { return new (t || PoStepperStepComponent)(); };
166
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoStepperStepComponent, selectors: [["po-stepper-step"]], inputs: { alignCenter: [0, "p-align-center", "alignCenter"], circleContent: [0, "p-circle-content", "circleContent"], nextStatus: [0, "p-next-status", "nextStatus"], orientation: [0, "p-orientation", "orientation"], label: [0, "p-label", "label"], status: [0, "p-status", "status"], stepIcons: [0, "p-step-icons", "stepIcons"], stepSize: [0, "p-step-size", "stepSize"], iconDefault: [0, "p-icon-default", "iconDefault"], iconDone: [0, "p-step-icon-done", "iconDone"], iconActive: [0, "p-step-icon-active", "iconActive"], isVerticalOrientation: [0, "p-vertical-orientation", "isVerticalOrientation"] }, outputs: { activated: "p-activated", click: "p-click", enter: "p-enter" }, features: [i0.ɵɵNgOnChangesFeature], decls: 4, vars: 24, consts: [["role", "tab", 1, "po-stepper-step", 3, "click", "keydown.enter", "ngClass", "tabindex"], [1, "po-stepper-step-container"], [3, "p-align-center", "p-content", "p-icons", "p-size", "p-status", "p-icon-default", "p-step-icon-done", "p-step-icon-active"], ["class", "po-stepper-step-label-position", 3, "p-align-center", "p-content", "p-status", "p-vertical-orientation", 4, "ngIf"], [1, "po-stepper-step-label-position", 3, "p-align-center", "p-content", "p-status", "p-vertical-orientation"]], template: function PoStepperStepComponent_Template(rf, ctx) { if (rf & 1) {
167
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PoStepperStepComponent, selectors: [["po-stepper-step"]], inputs: { alignCenter: [0, "p-align-center", "alignCenter"], circleContent: [0, "p-circle-content", "circleContent"], nextStatus: [0, "p-next-status", "nextStatus"], orientation: [0, "p-orientation", "orientation"], label: [0, "p-label", "label"], status: [0, "p-status", "status"], stepIcons: [0, "p-step-icons", "stepIcons"], stepSize: [0, "p-step-size", "stepSize"], iconDefault: [0, "p-icon-default", "iconDefault"], iconDone: [0, "p-step-icon-done", "iconDone"], iconActive: [0, "p-step-icon-active", "iconActive"], isVerticalOrientation: [0, "p-vertical-orientation", "isVerticalOrientation"], disabledClick: [0, "p-disable-click", "disabledClick"] }, outputs: { activated: "p-activated", click: "p-click", enter: "p-enter" }, features: [i0.ɵɵNgOnChangesFeature], decls: 4, vars: 26, consts: [["role", "tab", 1, "po-stepper-step", 3, "click", "keydown.enter", "ngClass", "tabindex"], [1, "po-stepper-step-container"], [3, "p-align-center", "p-content", "p-icons", "p-size", "p-status", "p-icon-default", "p-step-icon-done", "p-step-icon-active"], ["class", "po-stepper-step-label-position", 3, "p-align-center", "p-content", "p-status", "p-vertical-orientation", "p-disable-click", 4, "ngIf"], [1, "po-stepper-step-label-position", 3, "p-align-center", "p-content", "p-status", "p-vertical-orientation", "p-disable-click"]], template: function PoStepperStepComponent_Template(rf, ctx) { if (rf & 1) {
167
168
  i0.ɵɵelementStart(0, "div", 0);
168
169
  i0.ɵɵlistener("click", function PoStepperStepComponent_Template_div_click_0_listener() { return ctx.onClick(); })("keydown.enter", function PoStepperStepComponent_Template_div_keydown_enter_0_listener() { return ctx.onEnter(); });
169
170
  i0.ɵɵelementStart(1, "div", 1);
170
171
  i0.ɵɵelement(2, "po-stepper-circle", 2);
171
- i0.ɵɵtemplate(3, PoStepperStepComponent_po_stepper_label_3_Template, 1, 5, "po-stepper-label", 3);
172
+ i0.ɵɵtemplate(3, PoStepperStepComponent_po_stepper_label_3_Template, 1, 6, "po-stepper-label", 3);
172
173
  i0.ɵɵelementEnd()();
173
174
  } if (rf & 2) {
174
- i0.ɵɵproperty("ngClass", ctx.getStatusClass(ctx.status))("tabindex", ctx.status === "disabled" ? -1 : 0);
175
+ i0.ɵɵclassProp("po-stepper-disabled-click", ctx.disabledClick);
176
+ i0.ɵɵproperty("ngClass", ctx.getStatusClass(ctx.status))("tabindex", ctx.status === "disabled" || ctx.disabledClick ? -1 : 0);
175
177
  i0.ɵɵattribute("aria-selected", ctx.status === "active")("aria-disabled", ctx.status === "disabled")("aria-required", ctx.status === "error");
176
178
  i0.ɵɵadvance(2);
177
179
  i0.ɵɵstyleProp("min-width", ctx.minWidthCircle, "px")("min-height", ctx.minHeightCircle, "px");
@@ -183,7 +185,7 @@ export class PoStepperStepComponent {
183
185
  }
184
186
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoStepperStepComponent, [{
185
187
  type: Component,
186
- args: [{ selector: 'po-stepper-step', template: "<div\n class=\"po-stepper-step\"\n [ngClass]=\"getStatusClass(status)\"\n role=\"tab\"\n [tabindex]=\"status === 'disabled' ? -1 : 0\"\n [attr.aria-selected]=\"status === 'active'\"\n [attr.aria-disabled]=\"status === 'disabled'\"\n [attr.aria-required]=\"status === 'error'\"\n (click)=\"onClick()\"\n (keydown.enter)=\"onEnter()\"\n>\n <div class=\"po-stepper-step-container\">\n <po-stepper-circle\n [p-align-center]=\"alignCenter\"\n [p-content]=\"circleContent\"\n [p-icons]=\"stepIcons\"\n [p-size]=\"stepSize\"\n [p-status]=\"status\"\n [p-icon-default]=\"iconDefault\"\n [p-step-icon-done]=\"iconDone\"\n [p-step-icon-active]=\"iconActive\"\n [class.po-stepper-circle-vertical]=\"isVerticalOrientation\"\n [class.po-stepper-circle-vertical-center]=\"alignCenter\"\n [class.po-stepper-circle-horizontal]=\"!isVerticalOrientation\"\n [style.minWidth.px]=\"minWidthCircle\"\n [style.minHeight.px]=\"minHeightCircle\"\n >\n </po-stepper-circle>\n\n <po-stepper-label\n *ngIf=\"label\"\n class=\"po-stepper-step-label-position\"\n [p-align-center]=\"alignCenter\"\n [p-content]=\"label\"\n [p-status]=\"status\"\n [p-vertical-orientation]=\"isVerticalOrientation\"\n [attr.aria-label]=\"label\"\n >\n </po-stepper-label>\n </div>\n</div>\n" }]
188
+ args: [{ selector: 'po-stepper-step', template: "<div\n class=\"po-stepper-step\"\n [ngClass]=\"getStatusClass(status)\"\n role=\"tab\"\n [tabindex]=\"status === 'disabled' || disabledClick ? -1 : 0\"\n [attr.aria-selected]=\"status === 'active'\"\n [attr.aria-disabled]=\"status === 'disabled'\"\n [attr.aria-required]=\"status === 'error'\"\n [class.po-stepper-disabled-click]=\"disabledClick\"\n (click)=\"onClick()\"\n (keydown.enter)=\"onEnter()\"\n>\n <div class=\"po-stepper-step-container\">\n <po-stepper-circle\n [p-align-center]=\"alignCenter\"\n [p-content]=\"circleContent\"\n [p-icons]=\"stepIcons\"\n [p-size]=\"stepSize\"\n [p-status]=\"status\"\n [p-icon-default]=\"iconDefault\"\n [p-step-icon-done]=\"iconDone\"\n [p-step-icon-active]=\"iconActive\"\n [class.po-stepper-circle-vertical]=\"isVerticalOrientation\"\n [class.po-stepper-circle-vertical-center]=\"alignCenter\"\n [class.po-stepper-circle-horizontal]=\"!isVerticalOrientation\"\n [style.minWidth.px]=\"minWidthCircle\"\n [style.minHeight.px]=\"minHeightCircle\"\n >\n </po-stepper-circle>\n\n <po-stepper-label\n *ngIf=\"label\"\n class=\"po-stepper-step-label-position\"\n [p-align-center]=\"alignCenter\"\n [p-content]=\"label\"\n [p-status]=\"status\"\n [p-vertical-orientation]=\"isVerticalOrientation\"\n [attr.aria-label]=\"label\"\n [p-disable-click]=\"disabledClick\"\n >\n </po-stepper-label>\n </div>\n</div>\n" }]
187
189
  }], null, { alignCenter: [{
188
190
  type: Input,
189
191
  args: ['p-align-center']
@@ -229,6 +231,9 @@ export class PoStepperStepComponent {
229
231
  }], enter: [{
230
232
  type: Output,
231
233
  args: ['p-enter']
234
+ }], disabledClick: [{
235
+ type: Input,
236
+ args: ['p-disable-click']
232
237
  }] }); })();
233
238
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoStepperStepComponent, { className: "PoStepperStepComponent", filePath: "lib/components/po-stepper/po-stepper-step/po-stepper-step.component.ts", lineNumber: 27 }); })();
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3RlcHBlci1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1zdGVwcGVyL3BvLXN0ZXBwZXItc3RlcC9wby1zdGVwcGVyLXN0ZXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXN0ZXBwZXIvcG8tc3RlcHBlci1zdGVwL3BvLXN0ZXBwZXItc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUE4QixNQUFNLGVBQWUsQ0FBQztBQUU5RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRXZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0lDd0I5RCxzQ0FTbUI7OztJQUhqQixBQURBLEFBREEsQUFEQSxtREFBOEIsMkJBQ1gsMkJBQ0Esd0RBQzZCOzs7QUQ1QnRELE1BQU0sd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0FBQ3BDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLE1BQU0scUJBQXFCLEdBQUc7SUFDNUIsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUNyQixFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ3JCLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7Q0FDdkIsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUtILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsb0NBQW9DO0lBQ1gsV0FBVyxDQUFVO0lBRTlDLHVHQUF1RztJQUM1RSxhQUFhLENBQU07SUFFOUMscUNBQXFDO0lBQ2IsVUFBVSxDQUFDO0lBRW5DLG1DQUFtQztJQUNYLFdBQVcsQ0FBdUI7SUFFMUQsbUJBQW1CO0lBQ25CLElBQXNCLEtBQUssQ0FBQyxLQUFhO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuRyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsSUFBdUIsTUFBTSxDQUFDLEtBQXNCO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUksS0FBZ0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFckQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUEyQixTQUFTLENBQUMsU0FBa0I7UUFDckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsZ0RBQWdEO0lBQ2hELElBQTBCLFFBQVEsQ0FBQyxLQUFhO1FBQzlDLElBQUksQ0FBQyxTQUFTO1lBQ1osS0FBSyxJQUFJLHdCQUF3QixJQUFJLEtBQUssSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztJQUMxRyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUE2QixXQUFXLENBQUMsS0FBaUM7UUFDeEUsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBK0IsUUFBUSxDQUFDLEtBQWlDO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQWlDLFVBQVUsQ0FBQyxLQUFpQztRQUMzRSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxpREFBaUQ7SUFDaEIscUJBQXFCLENBQVU7SUFFaEUsOEZBQThGO0lBQ3ZFLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRTNELCtDQUErQztJQUM1QixLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVuRCwyRUFBMkU7SUFDeEQsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFMUMsUUFBUSxHQUFHO1FBQ2xCLEdBQUcscUJBQXFCLENBQUMsZUFBZSxDQUFDO1FBQ3pDLEdBQUcscUJBQXFCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztLQUNwRCxDQUFDO0lBRUYsZ0JBQWdCLENBQVM7SUFDakIsTUFBTSxDQUFTO0lBQ2YsT0FBTyxDQUFrQjtJQUN6QixVQUFVLEdBQWEsS0FBSyxDQUFDO0lBQzdCLFNBQVMsR0FBVyx3QkFBd0IsQ0FBQztJQUM3QyxZQUFZLENBQThCO0lBQzFDLFNBQVMsQ0FBOEI7SUFDdkMsV0FBVyxDQUE4QjtJQUVqRCxJQUFJLGVBQWU7UUFDakIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDN0UsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDL0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDekMsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWM7UUFDM0IsUUFBUSxNQUFNLEVBQUUsQ0FBQztZQUNmLEtBQUssZUFBZSxDQUFDLE1BQU07Z0JBQ3pCLE9BQU8seUJBQXlCLENBQUM7WUFDbkMsS0FBSyxlQUFlLENBQUMsUUFBUTtnQkFDM0IsT0FBTywwQkFBMEIsQ0FBQztZQUNwQyxLQUFLLGVBQWUsQ0FBQyxJQUFJO2dCQUN2QixPQUFPLHlCQUF5QixDQUFDO1lBQ25DLEtBQUssZUFBZSxDQUFDLEtBQUs7Z0JBQ3hCLE9BQU8sdUJBQXVCLENBQUM7WUFDakM7Z0JBQ0UsT0FBTyx5QkFBeUIsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyx3QkFBd0IsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzRixJQUFJLENBQUMsU0FBUyxHQUFHLHdCQUF3QixHQUFHLENBQUMsQ0FBQztRQUNoRCxDQUFDO2FBQU0sSUFDTCxJQUFJLENBQUMsZ0JBQWdCLEtBQUssd0JBQXdCO1lBQ2xELENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxlQUFlLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUNuRixDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyx3QkFBd0IsR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztnRkF2S1Usc0JBQXNCOzZEQUF0QixzQkFBc0I7WUMxQm5DLDhCQVVDO1lBREMsQUFEQSxnR0FBUyxhQUFTLElBQUMsbUdBQ0YsYUFBUyxJQUFDO1lBRTNCLDhCQUF1QztZQUNyQyx1Q0Flb0I7WUFFcEIsaUdBUUM7WUFHTCxBQURFLGlCQUFNLEVBQ0Y7O1lBcENKLEFBRkEsd0RBQWtDLGdEQUVTOztZQW9CdkMsZUFBb0M7WUFDcEMsQUFEQSxxREFBb0MseUNBQ0U7WUFGdEMsQUFEQSxBQURBLHVFQUEwRCxzREFDSCw0REFDTTtZQUg3RCxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLGdEQUE4QixnQ0FDSCwwQkFDTix3QkFDRix3QkFDQSxtQ0FDVyxrQ0FDRCxzQ0FDSTtZQVVoQyxjQUFXO1lBQVgsZ0NBQVc7OztpRkRKTCxzQkFBc0I7Y0FKbEMsU0FBUzsyQkFDRSxpQkFBaUI7Z0JBS0YsV0FBVztrQkFBbkMsS0FBSzttQkFBQyxnQkFBZ0I7WUFHSSxhQUFhO2tCQUF2QyxLQUFLO21CQUFDLGtCQUFrQjtZQUdELFVBQVU7a0JBQWpDLEtBQUs7bUJBQUMsZUFBZTtZQUdFLFdBQVc7a0JBQWxDLEtBQUs7bUJBQUMsZUFBZTtZQUdBLEtBQUs7a0JBQTFCLEtBQUs7bUJBQUMsU0FBUztZQVNPLE1BQU07a0JBQTVCLEtBQUs7bUJBQUMsVUFBVTtZQVlVLFNBQVM7a0JBQW5DLEtBQUs7bUJBQUMsY0FBYztZQVVLLFFBQVE7a0JBQWpDLEtBQUs7bUJBQUMsYUFBYTtZQVNTLFdBQVc7a0JBQXZDLEtBQUs7bUJBQUMsZ0JBQWdCO1lBUVEsUUFBUTtrQkFBdEMsS0FBSzttQkFBQyxrQkFBa0I7WUFRUSxVQUFVO2tCQUExQyxLQUFLO21CQUFDLG9CQUFvQjtZQVNNLHFCQUFxQjtrQkFBckQsS0FBSzttQkFBQyx3QkFBd0I7WUFHUixTQUFTO2tCQUEvQixNQUFNO21CQUFDLGFBQWE7WUFHRixLQUFLO2tCQUF2QixNQUFNO21CQUFDLFNBQVM7WUFHRSxLQUFLO2tCQUF2QixNQUFNO21CQUFDLFNBQVM7O2tGQXhGTixzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBnZXRTaG9ydEJyb3dzZXJMYW5ndWFnZSwgY29udmVydFRvQm9vbGVhbiwgaXNUeXBlb2YgfSBmcm9tICcuLy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgcG9Mb2NhbGVEZWZhdWx0IH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5jb25zdGFudCc7XG5pbXBvcnQgeyBQb1N0ZXBwZXJPcmllbnRhdGlvbiB9IGZyb20gJy4uL2VudW1zL3BvLXN0ZXBwZXItb3JpZW50YXRpb24uZW51bSc7XG5pbXBvcnQgeyBQb1N0ZXBwZXJTdGF0dXMgfSBmcm9tICcuLi9lbnVtcy9wby1zdGVwcGVyLXN0YXR1cy5lbnVtJztcblxuY29uc3QgcG9TdGVwcGVyU3RlcFNpemVEZWZhdWx0ID0gMjQ7XG5jb25zdCBwb1N0ZXBwZXJTdGVwU2l6ZU1heCA9IDY0O1xuY29uc3QgcG9TdGVwTGl0ZXJhbHNEZWZhdWx0ID0ge1xuICBlbjogeyBsYWJlbDogJ1N0ZXAnIH0sXG4gIGVzOiB7IGxhYmVsOiAnUGFzbycgfSxcbiAgcHQ6IHsgbGFiZWw6ICdQYXNzbycgfVxufTtcblxuLyoqXG4gKiBAZG9jc1ByaXZhdGVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBDb21wb25lbnRlIHF1ZSByZXByZXNlbnRhIHVtICpzdGVwKiBjb250ZW5kbyBhcyBsaWdhw6fDtWVzIGRhcyBsYXRlcmFpcyAoYHBvLXN0ZXBwZXItc3RlcC1iYXJgKSBlIGEgbGFiZWwuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLXN0ZXBwZXItc3RlcCcsXG4gIHRlbXBsYXRlVXJsOiAncG8tc3RlcHBlci1zdGVwLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQb1N0ZXBwZXJTdGVwQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLy8gQWxpbmhhbWVudG8gZG8gKnN0ZXAqIGUgZGEgbGFiZWwuXG4gIEBJbnB1dCgncC1hbGlnbi1jZW50ZXInKSBhbGlnbkNlbnRlcjogYm9vbGVhbjtcblxuICAvLyBDb250ZcO6ZG8gcXVlIHNlcsOhIHJlcGFzc2FkbyBwYXJhIG8gY29tcG9uZW50ZSBgcC1jaXJjbGUtY29udGVudGAgYXRyYXbDqXMgZGEgcHJvcHJpZWRhZGUgYHAtY29udGVudGAuXG4gIEBJbnB1dCgncC1jaXJjbGUtY29udGVudCcpIGNpcmNsZUNvbnRlbnQ6IGFueTtcblxuICAvLyBJbmZvcm1hIG8gc3RhdHVzIGRhIHByw7N4aW1hIGV0YXBhLlxuICBASW5wdXQoJ3AtbmV4dC1zdGF0dXMnKSBuZXh0U3RhdHVzO1xuXG4gIC8vIERlZmluZSBhIG9yaWVudGHDp8OjbyBkZSBleGliacOnw6NvLlxuICBASW5wdXQoJ3Atb3JpZW50YXRpb24nKSBvcmllbnRhdGlvbjogUG9TdGVwcGVyT3JpZW50YXRpb247XG5cbiAgLy8gTGFiZWwgZG8gKnN0ZXAqLlxuICBASW5wdXQoJ3AtbGFiZWwnKSBzZXQgbGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xhYmVsID0gaXNUeXBlb2YodmFsdWUsICdzdHJpbmcnKSA/IHZhbHVlIDogYCR7dGhpcy5saXRlcmFscy5sYWJlbH0gJHt0aGlzLmNpcmNsZUNvbnRlbnR9YDtcbiAgfVxuXG4gIGdldCBsYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbDtcbiAgfVxuXG4gIC8vIERlZmluZSBvIGVzdGFkbyBkZSBleGliacOnw6NvLlxuICBASW5wdXQoJ3Atc3RhdHVzJykgc2V0IHN0YXR1cyh2YWx1ZTogUG9TdGVwcGVyU3RhdHVzKSB7XG4gICAgdGhpcy5fc3RhdHVzID0gKHZhbHVlIGFzIHN0cmluZykgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gUG9TdGVwcGVyU3RhdHVzLkFjdGl2ZSkge1xuICAgICAgdGhpcy5hY3RpdmF0ZWQuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzdGF0dXMoKTogUG9TdGVwcGVyU3RhdHVzIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzO1xuICB9XG5cbiAgQElucHV0KCdwLXN0ZXAtaWNvbnMnKSBzZXQgc3RlcEljb25zKHN0ZXBJY29uczogYm9vbGVhbikge1xuICAgIHRoaXMuX3N0ZXBJY29ucyA9IGNvbnZlcnRUb0Jvb2xlYW4oc3RlcEljb25zKTtcbiAgfVxuXG4gIGdldCBzdGVwSWNvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXBJY29ucztcbiAgfVxuXG4gIC8vIFRhbWFuaG8gZG8gYHN0ZXBgIGVtICpwaXhlbHMqLCBwb3NzaWJpbGl0YW5kbyB1bSBtYWlvciBkZXN0YXF1ZS5cbiAgLy8gTyB2YWxvciBpbmZvcm1hZG8gZGV2ZSBzZXIgZW50cmUgYDI0YCBlIGA2NGAuXG4gIEBJbnB1dCgncC1zdGVwLXNpemUnKSBzZXQgc3RlcFNpemUodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N0ZXBTaXplID1cbiAgICAgIHZhbHVlID49IHBvU3RlcHBlclN0ZXBTaXplRGVmYXVsdCAmJiB2YWx1ZSA8PSBwb1N0ZXBwZXJTdGVwU2l6ZU1heCA/IHZhbHVlIDogcG9TdGVwcGVyU3RlcFNpemVEZWZhdWx0O1xuICB9XG5cbiAgZ2V0IHN0ZXBTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXBTaXplO1xuICB9XG5cbiAgQElucHV0KCdwLWljb24tZGVmYXVsdCcpIHNldCBpY29uRGVmYXVsdCh2YWx1ZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD4pIHtcbiAgICB0aGlzLl9pY29uRGVmYXVsdCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGljb25EZWZhdWx0KCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5faWNvbkRlZmF1bHQ7XG4gIH1cblxuICBASW5wdXQoJ3Atc3RlcC1pY29uLWRvbmUnKSBzZXQgaWNvbkRvbmUodmFsdWU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+KSB7XG4gICAgdGhpcy5faWNvbkRvbmUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBpY29uRG9uZSgpOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ljb25Eb25lO1xuICB9XG5cbiAgQElucHV0KCdwLXN0ZXAtaWNvbi1hY3RpdmUnKSBzZXQgaWNvbkFjdGl2ZSh2YWx1ZTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD4pIHtcbiAgICB0aGlzLl9pY29uQWN0aXZlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaWNvbkFjdGl2ZSgpOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ljb25BY3RpdmU7XG4gIH1cblxuICAvLyBJbmZvcm1hIHNlIGEgb3JpZW50YcOnw6NvIGRvIHN0ZXBwZXIgw6kgdmVydGljYWwuXG4gIEBJbnB1dCgncC12ZXJ0aWNhbC1vcmllbnRhdGlvbicpIGlzVmVydGljYWxPcmllbnRhdGlvbjogYm9vbGVhbjtcblxuICAvLyBFdmVudG8gcXVlIHNlcsOhIGVtaXRpZG8gcXVhbmRvIG8gc3RhdHVzIGRvICpzdGVwKiBlc3RpdmVyIGF0aXZvIChgUG9TdGVwcGVyU3RhdHVzLkFjdGl2ZWApLlxuICBAT3V0cHV0KCdwLWFjdGl2YXRlZCcpIGFjdGl2YXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8vIEV2ZW50byBxdWUgc2Vyw6EgZW1pdGlkbyBhbyBjbGljYXIgbm8gKnN0ZXAqLlxuICBAT3V0cHV0KCdwLWNsaWNrJykgY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvLyBFdmVudG8gcXVlIHNlcsOhIGVtaXRpZG8gYW8gZm9jYXIgbm8gKnN0ZXAqIGUgcHJlc3Npb25hciBhIHRlY2xhICplbnRlciouXG4gIEBPdXRwdXQoJ3AtZW50ZXInKSBlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHJlYWRvbmx5IGxpdGVyYWxzID0ge1xuICAgIC4uLnBvU3RlcExpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgIC4uLnBvU3RlcExpdGVyYWxzRGVmYXVsdFtnZXRTaG9ydEJyb3dzZXJMYW5ndWFnZSgpXVxuICB9O1xuXG4gIHN0ZXBTaXplT3JpZ2luYWw6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbGFiZWw6IHN0cmluZztcbiAgcHJpdmF0ZSBfc3RhdHVzOiBQb1N0ZXBwZXJTdGF0dXM7XG4gIHByaXZhdGUgX3N0ZXBJY29ucz86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3RlcFNpemU6IG51bWJlciA9IHBvU3RlcHBlclN0ZXBTaXplRGVmYXVsdDtcbiAgcHJpdmF0ZSBfaWNvbkRlZmF1bHQ/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgcHJpdmF0ZSBfaWNvbkRvbmU/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgcHJpdmF0ZSBfaWNvbkFjdGl2ZT86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIGdldCBtaW5IZWlnaHRDaXJjbGUoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuc3RlcFNpemUgPT09IDI0KSB7XG4gICAgICByZXR1cm4gMzI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaXNWZXJ0aWNhbE9yaWVudGF0aW9uID8gTWF0aC5tYXgodGhpcy5zdGVwU2l6ZSwgMjQpICsgOCA6IG51bGw7XG4gIH1cblxuICBnZXQgbWluV2lkdGhDaXJjbGUoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuaXNWZXJ0aWNhbE9yaWVudGF0aW9uICYmIHRoaXMuc3RlcFNpemUgPT09IDI0KSB7XG4gICAgICByZXR1cm4gMzI7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0ZXBTaXplT3JpZ2luYWwgPT09IHVuZGVmaW5lZCB8fCBjaGFuZ2VzWydzdGVwU2l6ZSddKSB7XG4gICAgICB0aGlzLnN0ZXBTaXplT3JpZ2luYWwgPSB0aGlzLl9zdGVwU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snc3RhdHVzJ10gfHwgY2hhbmdlc1snc3RlcFNpemUnXSkge1xuICAgICAgdGhpcy5zZXREZWZhdWx0U3RlcFNpemUoKTtcbiAgICB9XG4gIH1cblxuICBnZXRTdGF0dXNDbGFzcyhzdGF0dXM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgUG9TdGVwcGVyU3RhdHVzLkFjdGl2ZTpcbiAgICAgICAgcmV0dXJuICdwby1zdGVwcGVyLXN0ZXAtZGVmYXVsdCc7XG4gICAgICBjYXNlIFBvU3RlcHBlclN0YXR1cy5EaXNhYmxlZDpcbiAgICAgICAgcmV0dXJuICdwby1zdGVwcGVyLXN0ZXAtZGlzYWJsZWQnO1xuICAgICAgY2FzZSBQb1N0ZXBwZXJTdGF0dXMuRG9uZTpcbiAgICAgICAgcmV0dXJuICdwby1zdGVwcGVyLXN0ZXAtZGVmYXVsdCc7XG4gICAgICBjYXNlIFBvU3RlcHBlclN0YXR1cy5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdwby1zdGVwcGVyLXN0ZXAtZXJyb3InO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdwby1zdGVwcGVyLXN0ZXAtZGVmYXVsdCc7XG4gICAgfVxuICB9XG5cbiAgb25DbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0dXMgIT09IFBvU3RlcHBlclN0YXR1cy5EaXNhYmxlZCkge1xuICAgICAgdGhpcy5jbGljay5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgb25FbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0dXMgIT09IFBvU3RlcHBlclN0YXR1cy5EaXNhYmxlZCkge1xuICAgICAgdGhpcy5lbnRlci5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RGVmYXVsdFN0ZXBTaXplKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGVwU2l6ZSA9PT0gcG9TdGVwcGVyU3RlcFNpemVEZWZhdWx0ICYmIHRoaXMuX3N0YXR1cyA9PT0gUG9TdGVwcGVyU3RhdHVzLkFjdGl2ZSkge1xuICAgICAgdGhpcy5fc3RlcFNpemUgPSBwb1N0ZXBwZXJTdGVwU2l6ZURlZmF1bHQgKyA4O1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLnN0ZXBTaXplT3JpZ2luYWwgPT09IHBvU3RlcHBlclN0ZXBTaXplRGVmYXVsdCAmJlxuICAgICAgKHRoaXMuX3N0YXR1cyA9PT0gUG9TdGVwcGVyU3RhdHVzLkVycm9yIHx8IHRoaXMuX3N0YXR1cyA9PT0gUG9TdGVwcGVyU3RhdHVzLkFjdGl2ZSlcbiAgICApIHtcbiAgICAgIHRoaXMuX3N0ZXBTaXplID0gcG9TdGVwcGVyU3RlcFNpemVEZWZhdWx0ICsgODtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc3RlcFNpemUgPSB0aGlzLnN0ZXBTaXplT3JpZ2luYWw7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwicG8tc3RlcHBlci1zdGVwXCJcbiAgW25nQ2xhc3NdPVwiZ2V0U3RhdHVzQ2xhc3Moc3RhdHVzKVwiXG4gIHJvbGU9XCJ0YWJcIlxuICBbdGFiaW5kZXhdPVwic3RhdHVzID09PSAnZGlzYWJsZWQnID8gLTEgOiAwXCJcbiAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJzdGF0dXMgPT09ICdhY3RpdmUnXCJcbiAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJzdGF0dXMgPT09ICdkaXNhYmxlZCdcIlxuICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cInN0YXR1cyA9PT0gJ2Vycm9yJ1wiXG4gIChjbGljayk9XCJvbkNsaWNrKClcIlxuICAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyKClcIlxuPlxuICA8ZGl2IGNsYXNzPVwicG8tc3RlcHBlci1zdGVwLWNvbnRhaW5lclwiPlxuICAgIDxwby1zdGVwcGVyLWNpcmNsZVxuICAgICAgW3AtYWxpZ24tY2VudGVyXT1cImFsaWduQ2VudGVyXCJcbiAgICAgIFtwLWNvbnRlbnRdPVwiY2lyY2xlQ29udGVudFwiXG4gICAgICBbcC1pY29uc109XCJzdGVwSWNvbnNcIlxuICAgICAgW3Atc2l6ZV09XCJzdGVwU2l6ZVwiXG4gICAgICBbcC1zdGF0dXNdPVwic3RhdHVzXCJcbiAgICAgIFtwLWljb24tZGVmYXVsdF09XCJpY29uRGVmYXVsdFwiXG4gICAgICBbcC1zdGVwLWljb24tZG9uZV09XCJpY29uRG9uZVwiXG4gICAgICBbcC1zdGVwLWljb24tYWN0aXZlXT1cImljb25BY3RpdmVcIlxuICAgICAgW2NsYXNzLnBvLXN0ZXBwZXItY2lyY2xlLXZlcnRpY2FsXT1cImlzVmVydGljYWxPcmllbnRhdGlvblwiXG4gICAgICBbY2xhc3MucG8tc3RlcHBlci1jaXJjbGUtdmVydGljYWwtY2VudGVyXT1cImFsaWduQ2VudGVyXCJcbiAgICAgIFtjbGFzcy5wby1zdGVwcGVyLWNpcmNsZS1ob3Jpem9udGFsXT1cIiFpc1ZlcnRpY2FsT3JpZW50YXRpb25cIlxuICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm1pbldpZHRoQ2lyY2xlXCJcbiAgICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwibWluSGVpZ2h0Q2lyY2xlXCJcbiAgICA+XG4gICAgPC9wby1zdGVwcGVyLWNpcmNsZT5cblxuICAgIDxwby1zdGVwcGVyLWxhYmVsXG4gICAgICAqbmdJZj1cImxhYmVsXCJcbiAgICAgIGNsYXNzPVwicG8tc3RlcHBlci1zdGVwLWxhYmVsLXBvc2l0aW9uXCJcbiAgICAgIFtwLWFsaWduLWNlbnRlcl09XCJhbGlnbkNlbnRlclwiXG4gICAgICBbcC1jb250ZW50XT1cImxhYmVsXCJcbiAgICAgIFtwLXN0YXR1c109XCJzdGF0dXNcIlxuICAgICAgW3AtdmVydGljYWwtb3JpZW50YXRpb25dPVwiaXNWZXJ0aWNhbE9yaWVudGF0aW9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIlxuICAgID5cbiAgICA8L3BvLXN0ZXBwZXItbGFiZWw+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3RlcHBlci1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1zdGVwcGVyL3BvLXN0ZXBwZXItc3RlcC9wby1zdGVwcGVyLXN0ZXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLXN0ZXBwZXIvcG8tc3RlcHBlci1zdGVwL3BvLXN0ZXBwZXItc3RlcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUE4QixNQUFNLGVBQWUsQ0FBQztBQUU5RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRXZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7O0lDeUI5RCxzQ0FVbUI7OztJQUZqQixBQUZBLEFBREEsQUFEQSxBQURBLG1EQUE4QiwyQkFDWCwyQkFDQSx3REFDNkIseUNBRWY7OztBRC9CdkMsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFDcEMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFLENBQUM7QUFDaEMsTUFBTSxxQkFBcUIsR0FBRztJQUM1QixFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ3JCLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDckIsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtDQUN2QixDQUFDO0FBRUY7Ozs7OztHQU1HO0FBS0gsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxvQ0FB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QUMsaUJBQWlCOztrRkExRmIsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgZ2V0U2hvcnRCcm93c2VyTGFuZ3VhZ2UsIGNvbnZlcnRUb0Jvb2xlYW4sIGlzVHlwZW9mIH0gZnJvbSAnLi8uLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4vLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UuY29uc3RhbnQnO1xuaW1wb3J0IHsgUG9TdGVwcGVyT3JpZW50YXRpb24gfSBmcm9tICcuLi9lbnVtcy9wby1zdGVwcGVyLW9yaWVudGF0aW9uLmVudW0nO1xuaW1wb3J0IHsgUG9TdGVwcGVyU3RhdHVzIH0gZnJvbSAnLi4vZW51bXMvcG8tc3RlcHBlci1zdGF0dXMuZW51bSc7XG5cbmNvbnN0IHBvU3RlcHBlclN0ZXBTaXplRGVmYXVsdCA9IDI0O1xuY29uc3QgcG9TdGVwcGVyU3RlcFNpemVNYXggPSA2NDtcbmNvbnN0IHBvU3RlcExpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IHsgbGFiZWw6ICdTdGVwJyB9LFxuICBlczogeyBsYWJlbDogJ1Bhc28nIH0sXG4gIHB0OiB7IGxhYmVsOiAnUGFzc28nIH1cbn07XG5cbi8qKlxuICogQGRvY3NQcml2YXRlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogQ29tcG9uZW50ZSBxdWUgcmVwcmVzZW50YSB1bSAqc3RlcCogY29udGVuZG8gYXMgbGlnYcOnw7VlcyBkYXMgbGF0ZXJhaXMgKGBwby1zdGVwcGVyLXN0ZXAtYmFyYCkgZSBhIGxhYmVsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1zdGVwcGVyLXN0ZXAnLFxuICB0ZW1wbGF0ZVVybDogJ3BvLXN0ZXBwZXItc3RlcC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUG9TdGVwcGVyU3RlcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8vIEFsaW5oYW1lbnRvIGRvICpzdGVwKiBlIGRhIGxhYmVsLlxuICBASW5wdXQoJ3AtYWxpZ24tY2VudGVyJykgYWxpZ25DZW50ZXI6IGJvb2xlYW47XG5cbiAgLy8gQ29udGXDumRvIHF1ZSBzZXLDoSByZXBhc3NhZG8gcGFyYSBvIGNvbXBvbmVudGUgYHAtY2lyY2xlLWNvbnRlbnRgIGF0cmF2w6lzIGRhIHByb3ByaWVkYWRlIGBwLWNvbnRlbnRgLlxuICBASW5wdXQoJ3AtY2lyY2xlLWNvbnRlbnQnKSBjaXJjbGVDb250ZW50OiBhbnk7XG5cbiAgLy8gSW5mb3JtYSBvIHN0YXR1cyBkYSBwcsOzeGltYSBldGFwYS5cbiAgQElucHV0KCdwLW5leHQtc3RhdHVzJykgbmV4dFN0YXR1cztcblxuICAvLyBEZWZpbmUgYSBvcmllbnRhw6fDo28gZGUgZXhpYmnDp8Ojby5cbiAgQElucHV0KCdwLW9yaWVudGF0aW9uJykgb3JpZW50YXRpb246IFBvU3RlcHBlck9yaWVudGF0aW9uO1xuXG4gIC8vIExhYmVsIGRvICpzdGVwKi5cbiAgQElucHV0KCdwLWxhYmVsJykgc2V0IGxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sYWJlbCA9IGlzVHlwZW9mKHZhbHVlLCAnc3RyaW5nJykgPyB2YWx1ZSA6IGAke3RoaXMubGl0ZXJhbHMubGFiZWx9ICR7dGhpcy5jaXJjbGVDb250ZW50fWA7XG4gIH1cblxuICBnZXQgbGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWw7XG4gIH1cblxuICAvLyBEZWZpbmUgbyBlc3RhZG8gZGUgZXhpYmnDp8Ojby5cbiAgQElucHV0KCdwLXN0YXR1cycpIHNldCBzdGF0dXModmFsdWU6IFBvU3RlcHBlclN0YXR1cykge1xuICAgIHRoaXMuX3N0YXR1cyA9ICh2YWx1ZSBhcyBzdHJpbmcpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5zdGF0dXMgPT09IFBvU3RlcHBlclN0YXR1cy5BY3RpdmUpIHtcbiAgICAgIHRoaXMuYWN0aXZhdGVkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc3RhdHVzKCk6IFBvU3RlcHBlclN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXR1cztcbiAgfVxuXG4gIEBJbnB1dCgncC1zdGVwLWljb25zJykgc2V0IHN0ZXBJY29ucyhzdGVwSWNvbnM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zdGVwSWNvbnMgPSBjb252ZXJ0VG9Cb29sZWFuKHN0ZXBJY29ucyk7XG4gIH1cblxuICBnZXQgc3RlcEljb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGVwSWNvbnM7XG4gIH1cblxuICAvLyBUYW1hbmhvIGRvIGBzdGVwYCBlbSAqcGl4ZWxzKiwgcG9zc2liaWxpdGFuZG8gdW0gbWFpb3IgZGVzdGFxdWUuXG4gIC8vIE8gdmFsb3IgaW5mb3JtYWRvIGRldmUgc2VyIGVudHJlIGAyNGAgZSBgNjRgLlxuICBASW5wdXQoJ3Atc3RlcC1zaXplJykgc2V0IHN0ZXBTaXplKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGVwU2l6ZSA9XG4gICAgICB2YWx1ZSA+PSBwb1N0ZXBwZXJTdGVwU2l6ZURlZmF1bHQgJiYgdmFsdWUgPD0gcG9TdGVwcGVyU3RlcFNpemVNYXggPyB2YWx1ZSA6IHBvU3RlcHBlclN0ZXBTaXplRGVmYXVsdDtcbiAgfVxuXG4gIGdldCBzdGVwU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zdGVwU2l6ZTtcbiAgfVxuXG4gIEBJbnB1dCgncC1pY29uLWRlZmF1bHQnKSBzZXQgaWNvbkRlZmF1bHQodmFsdWU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+KSB7XG4gICAgdGhpcy5faWNvbkRlZmF1bHQgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBpY29uRGVmYXVsdCgpOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2ljb25EZWZhdWx0O1xuICB9XG5cbiAgQElucHV0KCdwLXN0ZXAtaWNvbi1kb25lJykgc2V0IGljb25Eb25lKHZhbHVlOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPikge1xuICAgIHRoaXMuX2ljb25Eb25lID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaWNvbkRvbmUoKTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9pY29uRG9uZTtcbiAgfVxuXG4gIEBJbnB1dCgncC1zdGVwLWljb24tYWN0aXZlJykgc2V0IGljb25BY3RpdmUodmFsdWU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPHZvaWQ+KSB7XG4gICAgdGhpcy5faWNvbkFjdGl2ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGljb25BY3RpdmUoKTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9pY29uQWN0aXZlO1xuICB9XG5cbiAgLy8gSW5mb3JtYSBzZSBhIG9yaWVudGHDp8OjbyBkbyBzdGVwcGVyIMOpIHZlcnRpY2FsLlxuICBASW5wdXQoJ3AtdmVydGljYWwtb3JpZW50YXRpb24nKSBpc1ZlcnRpY2FsT3JpZW50YXRpb246IGJvb2xlYW47XG5cbiAgLy8gRXZlbnRvIHF1ZSBzZXLDoSBlbWl0aWRvIHF1YW5kbyBvIHN0YXR1cyBkbyAqc3RlcCogZXN0aXZlciBhdGl2byAoYFBvU3RlcHBlclN0YXR1cy5BY3RpdmVgKS5cbiAgQE91dHB1dCgncC1hY3RpdmF0ZWQnKSBhY3RpdmF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvLyBFdmVudG8gcXVlIHNlcsOhIGVtaXRpZG8gYW8gY2xpY2FyIG5vICpzdGVwKi5cbiAgQE91dHB1dCgncC1jbGljaycpIGNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLy8gRXZlbnRvIHF1ZSBzZXLDoSBlbWl0aWRvIGFvIGZvY2FyIG5vICpzdGVwKiBlIHByZXNzaW9uYXIgYSB0ZWNsYSAqZW50ZXIqLlxuICBAT3V0cHV0KCdwLWVudGVyJykgZW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBASW5wdXQoJ3AtZGlzYWJsZS1jbGljaycpIGRpc2FibGVkQ2xpY2s6IGJvb2xlYW4gPSBmYWxzZTtcblxuICByZWFkb25seSBsaXRlcmFscyA9IHtcbiAgICAuLi5wb1N0ZXBMaXRlcmFsc0RlZmF1bHRbcG9Mb2NhbGVEZWZhdWx0XSxcbiAgICAuLi5wb1N0ZXBMaXRlcmFsc0RlZmF1bHRbZ2V0U2hvcnRCcm93c2VyTGFuZ3VhZ2UoKV1cbiAgfTtcblxuICBzdGVwU2l6ZU9yaWdpbmFsOiBudW1iZXI7XG4gIHByaXZhdGUgX2xhYmVsOiBzdHJpbmc7XG4gIHByaXZhdGUgX3N0YXR1czogUG9TdGVwcGVyU3RhdHVzO1xuICBwcml2YXRlIF9zdGVwSWNvbnM/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX3N0ZXBTaXplOiBudW1iZXIgPSBwb1N0ZXBwZXJTdGVwU2l6ZURlZmF1bHQ7XG4gIHByaXZhdGUgX2ljb25EZWZhdWx0Pzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XG4gIHByaXZhdGUgX2ljb25Eb25lPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XG4gIHByaXZhdGUgX2ljb25BY3RpdmU/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICBnZXQgbWluSGVpZ2h0Q2lyY2xlKCk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLnN0ZXBTaXplID09PSAyNCkge1xuICAgICAgcmV0dXJuIDMyO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmlzVmVydGljYWxPcmllbnRhdGlvbiA/IE1hdGgubWF4KHRoaXMuc3RlcFNpemUsIDI0KSArIDggOiBudWxsO1xuICB9XG5cbiAgZ2V0IG1pbldpZHRoQ2lyY2xlKCk6IG51bWJlciB8IG51bGwge1xuICAgIGlmICh0aGlzLmlzVmVydGljYWxPcmllbnRhdGlvbiAmJiB0aGlzLnN0ZXBTaXplID09PSAyNCkge1xuICAgICAgcmV0dXJuIDMyO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGVwU2l6ZU9yaWdpbmFsID09PSB1bmRlZmluZWQgfHwgY2hhbmdlc1snc3RlcFNpemUnXSkge1xuICAgICAgdGhpcy5zdGVwU2l6ZU9yaWdpbmFsID0gdGhpcy5fc3RlcFNpemU7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3N0YXR1cyddIHx8IGNoYW5nZXNbJ3N0ZXBTaXplJ10pIHtcbiAgICAgIHRoaXMuc2V0RGVmYXVsdFN0ZXBTaXplKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RhdHVzQ2xhc3Moc3RhdHVzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlIFBvU3RlcHBlclN0YXR1cy5BY3RpdmU6XG4gICAgICAgIHJldHVybiAncG8tc3RlcHBlci1zdGVwLWRlZmF1bHQnO1xuICAgICAgY2FzZSBQb1N0ZXBwZXJTdGF0dXMuRGlzYWJsZWQ6XG4gICAgICAgIHJldHVybiAncG8tc3RlcHBlci1zdGVwLWRpc2FibGVkJztcbiAgICAgIGNhc2UgUG9TdGVwcGVyU3RhdHVzLkRvbmU6XG4gICAgICAgIHJldHVybiAncG8tc3RlcHBlci1zdGVwLWRlZmF1bHQnO1xuICAgICAgY2FzZSBQb1N0ZXBwZXJTdGF0dXMuRXJyb3I6XG4gICAgICAgIHJldHVybiAncG8tc3RlcHBlci1zdGVwLWVycm9yJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAncG8tc3RlcHBlci1zdGVwLWRlZmF1bHQnO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2soKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdHVzICE9PSBQb1N0ZXBwZXJTdGF0dXMuRGlzYWJsZWQgJiYgIXRoaXMuZGlzYWJsZWRDbGljaykge1xuICAgICAgdGhpcy5jbGljay5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgb25FbnRlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0dXMgIT09IFBvU3RlcHBlclN0YXR1cy5EaXNhYmxlZCAmJiAhdGhpcy5kaXNhYmxlZENsaWNrKSB7XG4gICAgICB0aGlzLmVudGVyLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBzZXREZWZhdWx0U3RlcFNpemUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0ZXBTaXplID09PSBwb1N0ZXBwZXJTdGVwU2l6ZURlZmF1bHQgJiYgdGhpcy5fc3RhdHVzID09PSBQb1N0ZXBwZXJTdGF0dXMuQWN0aXZlKSB7XG4gICAgICB0aGlzLl9zdGVwU2l6ZSA9IHBvU3RlcHBlclN0ZXBTaXplRGVmYXVsdCArIDg7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuc3RlcFNpemVPcmlnaW5hbCA9PT0gcG9TdGVwcGVyU3RlcFNpemVEZWZhdWx0ICYmXG4gICAgICAodGhpcy5fc3RhdHVzID09PSBQb1N0ZXBwZXJTdGF0dXMuRXJyb3IgfHwgdGhpcy5fc3RhdHVzID09PSBQb1N0ZXBwZXJTdGF0dXMuQWN0aXZlKVxuICAgICkge1xuICAgICAgdGhpcy5fc3RlcFNpemUgPSBwb1N0ZXBwZXJTdGVwU2l6ZURlZmF1bHQgKyA4O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zdGVwU2l6ZSA9IHRoaXMuc3RlcFNpemVPcmlnaW5hbDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJwby1zdGVwcGVyLXN0ZXBcIlxuICBbbmdDbGFzc109XCJnZXRTdGF0dXNDbGFzcyhzdGF0dXMpXCJcbiAgcm9sZT1cInRhYlwiXG4gIFt0YWJpbmRleF09XCJzdGF0dXMgPT09ICdkaXNhYmxlZCcgfHwgZGlzYWJsZWRDbGljayA/IC0xIDogMFwiXG4gIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwic3RhdHVzID09PSAnYWN0aXZlJ1wiXG4gIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwic3RhdHVzID09PSAnZGlzYWJsZWQnXCJcbiAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJzdGF0dXMgPT09ICdlcnJvcidcIlxuICBbY2xhc3MucG8tc3RlcHBlci1kaXNhYmxlZC1jbGlja109XCJkaXNhYmxlZENsaWNrXCJcbiAgKGNsaWNrKT1cIm9uQ2xpY2soKVwiXG4gIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXIoKVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJwby1zdGVwcGVyLXN0ZXAtY29udGFpbmVyXCI+XG4gICAgPHBvLXN0ZXBwZXItY2lyY2xlXG4gICAgICBbcC1hbGlnbi1jZW50ZXJdPVwiYWxpZ25DZW50ZXJcIlxuICAgICAgW3AtY29udGVudF09XCJjaXJjbGVDb250ZW50XCJcbiAgICAgIFtwLWljb25zXT1cInN0ZXBJY29uc1wiXG4gICAgICBbcC1zaXplXT1cInN0ZXBTaXplXCJcbiAgICAgIFtwLXN0YXR1c109XCJzdGF0dXNcIlxuICAgICAgW3AtaWNvbi1kZWZhdWx0XT1cImljb25EZWZhdWx0XCJcbiAgICAgIFtwLXN0ZXAtaWNvbi1kb25lXT1cImljb25Eb25lXCJcbiAgICAgIFtwLXN0ZXAtaWNvbi1hY3RpdmVdPVwiaWNvbkFjdGl2ZVwiXG4gICAgICBbY2xhc3MucG8tc3RlcHBlci1jaXJjbGUtdmVydGljYWxdPVwiaXNWZXJ0aWNhbE9yaWVudGF0aW9uXCJcbiAgICAgIFtjbGFzcy5wby1zdGVwcGVyLWNpcmNsZS12ZXJ0aWNhbC1jZW50ZXJdPVwiYWxpZ25DZW50ZXJcIlxuICAgICAgW2NsYXNzLnBvLXN0ZXBwZXItY2lyY2xlLWhvcml6b250YWxdPVwiIWlzVmVydGljYWxPcmllbnRhdGlvblwiXG4gICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwibWluV2lkdGhDaXJjbGVcIlxuICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJtaW5IZWlnaHRDaXJjbGVcIlxuICAgID5cbiAgICA8L3BvLXN0ZXBwZXItY2lyY2xlPlxuXG4gICAgPHBvLXN0ZXBwZXItbGFiZWxcbiAgICAgICpuZ0lmPVwibGFiZWxcIlxuICAgICAgY2xhc3M9XCJwby1zdGVwcGVyLXN0ZXAtbGFiZWwtcG9zaXRpb25cIlxuICAgICAgW3AtYWxpZ24tY2VudGVyXT1cImFsaWduQ2VudGVyXCJcbiAgICAgIFtwLWNvbnRlbnRdPVwibGFiZWxcIlxuICAgICAgW3Atc3RhdHVzXT1cInN0YXR1c1wiXG4gICAgICBbcC12ZXJ0aWNhbC1vcmllbnRhdGlvbl09XCJpc1ZlcnRpY2FsT3JpZW50YXRpb25cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gICAgICBbcC1kaXNhYmxlLWNsaWNrXT1cImRpc2FibGVkQ2xpY2tcIlxuICAgID5cbiAgICA8L3BvLXN0ZXBwZXItbGFiZWw+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -48,7 +48,7 @@ function PoStepperComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
48
48
  i0.ɵɵproperty("ngIf", index_r4 > 0);
49
49
  i0.ɵɵadvance();
50
50
  i0.ɵɵclassProp("po-stepper-step-position-center", ctx_r4.alignCenter);
51
- i0.ɵɵproperty("p-align-center", ctx_r4.alignCenter)("p-circle-content", index_r4 + 1)("p-label", step_r3.label)("p-orientation", ctx_r4.orientation)("p-status", step_r3.status)("p-step-icons", ctx_r4.stepIcons)("p-step-size", ctx_r4.stepSize)("p-next-status", (tmp_12_0 = ctx_r4.poSteps.get(index_r4 + 1)) == null ? null : tmp_12_0.status)("p-icon-default", step_r3.iconDefault)("p-step-icon-active", ctx_r4.iconActive)("p-step-icon-done", ctx_r4.iconDone)("p-vertical-orientation", ctx_r4.isVerticalOrientation);
51
+ i0.ɵɵproperty("p-align-center", ctx_r4.alignCenter)("p-circle-content", index_r4 + 1)("p-label", step_r3.label)("p-orientation", ctx_r4.orientation)("p-status", step_r3.status)("p-step-icons", ctx_r4.stepIcons)("p-step-size", ctx_r4.stepSize)("p-next-status", (tmp_12_0 = ctx_r4.poSteps.get(index_r4 + 1)) == null ? null : tmp_12_0.status)("p-icon-default", step_r3.iconDefault)("p-step-icon-active", ctx_r4.iconActive)("p-step-icon-done", ctx_r4.iconDone)("p-vertical-orientation", ctx_r4.isVerticalOrientation)("p-disable-click", ctx_r4.disabledClick);
52
52
  i0.ɵɵadvance();
53
53
  i0.ɵɵproperty("ngIf", index_r4 < ctx_r4.stepList.length - 1);
54
54
  } }
@@ -384,10 +384,10 @@ export class PoStepperComponent extends PoStepperBaseComponent {
384
384
  } if (rf & 2) {
385
385
  let _t;
386
386
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.poSteps = _t);
387
- } }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 4, vars: 9, consts: [["role", "tablist"], [4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "po-stepper-content", 4, "ngIf"], [1, "po-stepper-step-wrapper"], [3, "po-stepper-step-bar-top", "po-stepper-step-dashed-border-vertical", "left", 4, "ngIf"], [3, "p-activated", "p-click", "p-enter", "p-align-center", "p-circle-content", "p-label", "p-orientation", "p-status", "p-step-icons", "p-step-size", "p-next-status", "p-icon-default", "p-step-icon-active", "p-step-icon-done", "p-vertical-orientation"], [3, "po-stepper-step-bar-bottom", "po-stepper-step-bar-bottom-center", "po-stepper-step-bar-right", "po-stepper-step-bar-center", "po-stepper-step-dashed-border", "po-stepper-step-dashed-border-vertical", "top", "left", 4, "ngIf"], [1, "po-stepper-content"]], template: function PoStepperComponent_Template(rf, ctx) { if (rf & 1) {
387
+ } }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c0, decls: 4, vars: 9, consts: [["role", "tablist"], [4, "ngFor", "ngForOf", "ngForTrackBy"], ["class", "po-stepper-content", 4, "ngIf"], [1, "po-stepper-step-wrapper"], [3, "po-stepper-step-bar-top", "po-stepper-step-dashed-border-vertical", "left", 4, "ngIf"], [3, "p-activated", "p-click", "p-enter", "p-align-center", "p-circle-content", "p-label", "p-orientation", "p-status", "p-step-icons", "p-step-size", "p-next-status", "p-icon-default", "p-step-icon-active", "p-step-icon-done", "p-vertical-orientation", "p-disable-click"], [3, "po-stepper-step-bar-bottom", "po-stepper-step-bar-bottom-center", "po-stepper-step-bar-right", "po-stepper-step-bar-center", "po-stepper-step-dashed-border", "po-stepper-step-dashed-border-vertical", "top", "left", 4, "ngIf"], [1, "po-stepper-content"]], template: function PoStepperComponent_Template(rf, ctx) { if (rf & 1) {
388
388
  i0.ɵɵprojectionDef();
389
389
  i0.ɵɵelementStart(0, "div")(1, "div", 0);
390
- i0.ɵɵtemplate(2, PoStepperComponent_ng_container_2_Template, 5, 16, "ng-container", 1);
390
+ i0.ɵɵtemplate(2, PoStepperComponent_ng_container_2_Template, 5, 17, "ng-container", 1);
391
391
  i0.ɵɵelementEnd();
392
392
  i0.ɵɵtemplate(3, PoStepperComponent_div_3_Template, 2, 0, "div", 2);
393
393
  i0.ɵɵelementEnd();
@@ -403,10 +403,10 @@ export class PoStepperComponent extends PoStepperBaseComponent {
403
403
  }
404
404
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoStepperComponent, [{
405
405
  type: Component,
406
- args: [{ selector: 'po-stepper', template: "<div class=\"po-stepper-{{ orientation }}\">\n <div role=\"tablist\" class=\"po-stepper-container-{{ orientation }}\">\n <ng-container *ngFor=\"let step of stepList; let index = index; trackBy: trackByFn\">\n <div class=\"po-stepper-step-wrapper\">\n <div\n *ngIf=\"index > 0\"\n [class.po-stepper-step-bar-top]=\"alignCenter && isVerticalOrientation\"\n [class.po-stepper-step-dashed-border-vertical]=\"\n alignCenter && isVerticalOrientation && isDashedBorderTop(step, index)\n \"\n [style.left.px]=\"\n isVerticalOrientation ? (!stepSizeCircle || stepSizeCircle === 24 ? 16 : stepSizeCircle / 2) : null\n \"\n ></div>\n\n <po-stepper-step\n [class.po-stepper-step-position-center]=\"alignCenter\"\n [p-align-center]=\"alignCenter\"\n [p-circle-content]=\"index + 1\"\n [p-label]=\"step.label\"\n [p-orientation]=\"orientation\"\n [p-status]=\"step.status\"\n [p-step-icons]=\"stepIcons\"\n [p-step-size]=\"stepSize\"\n [p-next-status]=\"poSteps.get(index + 1)?.status\"\n [p-icon-default]=\"step.iconDefault\"\n [p-step-icon-active]=\"iconActive\"\n [p-step-icon-done]=\"iconDone\"\n [p-vertical-orientation]=\"isVerticalOrientation\"\n (p-activated)=\"onStepActive(step)\"\n (p-click)=\"changeStep(index, step)\"\n (p-enter)=\"changeStep(index, step)\"\n >\n </po-stepper-step>\n\n <div\n *ngIf=\"index < stepList.length - 1\"\n [class.po-stepper-step-bar-bottom]=\"isVerticalOrientation\"\n [class.po-stepper-step-bar-bottom-center]=\"alignCenter && isVerticalOrientation\"\n [class.po-stepper-step-bar-right]=\"!isVerticalOrientation\"\n [class.po-stepper-step-bar-center]=\"alignCenter && !isVerticalOrientation\"\n [class.po-stepper-step-dashed-border]=\"!isVerticalOrientation && isDashedBorder(step, index)\"\n [class.po-stepper-step-dashed-border-vertical]=\"isVerticalOrientation && isDashedBorder(step, index)\"\n [style.top.px]=\"!isVerticalOrientation ? (stepSizeCircle === 24 ? 16 : stepSizeCircle / 2) : null\"\n [style.left.px]=\"\n isVerticalOrientation ? (!stepSizeCircle || stepSizeCircle === 24 ? 16 : stepSizeCircle / 2) : null\n \"\n ></div>\n </div>\n </ng-container>\n </div>\n\n <div *ngIf=\"usePoSteps\" class=\"po-stepper-content\">\n <ng-content></ng-content>\n </div>\n</div>\n" }]
406
+ args: [{ selector: 'po-stepper', template: "<div class=\"po-stepper-{{ orientation }}\">\n <div role=\"tablist\" class=\"po-stepper-container-{{ orientation }}\">\n <ng-container *ngFor=\"let step of stepList; let index = index; trackBy: trackByFn\">\n <div class=\"po-stepper-step-wrapper\">\n <div\n *ngIf=\"index > 0\"\n [class.po-stepper-step-bar-top]=\"alignCenter && isVerticalOrientation\"\n [class.po-stepper-step-dashed-border-vertical]=\"\n alignCenter && isVerticalOrientation && isDashedBorderTop(step, index)\n \"\n [style.left.px]=\"\n isVerticalOrientation ? (!stepSizeCircle || stepSizeCircle === 24 ? 16 : stepSizeCircle / 2) : null\n \"\n ></div>\n\n <po-stepper-step\n [class.po-stepper-step-position-center]=\"alignCenter\"\n [p-align-center]=\"alignCenter\"\n [p-circle-content]=\"index + 1\"\n [p-label]=\"step.label\"\n [p-orientation]=\"orientation\"\n [p-status]=\"step.status\"\n [p-step-icons]=\"stepIcons\"\n [p-step-size]=\"stepSize\"\n [p-next-status]=\"poSteps.get(index + 1)?.status\"\n [p-icon-default]=\"step.iconDefault\"\n [p-step-icon-active]=\"iconActive\"\n [p-step-icon-done]=\"iconDone\"\n [p-vertical-orientation]=\"isVerticalOrientation\"\n [p-disable-click]=\"disabledClick\"\n (p-activated)=\"onStepActive(step)\"\n (p-click)=\"changeStep(index, step)\"\n (p-enter)=\"changeStep(index, step)\"\n >\n </po-stepper-step>\n\n <div\n *ngIf=\"index < stepList.length - 1\"\n [class.po-stepper-step-bar-bottom]=\"isVerticalOrientation\"\n [class.po-stepper-step-bar-bottom-center]=\"alignCenter && isVerticalOrientation\"\n [class.po-stepper-step-bar-right]=\"!isVerticalOrientation\"\n [class.po-stepper-step-bar-center]=\"alignCenter && !isVerticalOrientation\"\n [class.po-stepper-step-dashed-border]=\"!isVerticalOrientation && isDashedBorder(step, index)\"\n [class.po-stepper-step-dashed-border-vertical]=\"isVerticalOrientation && isDashedBorder(step, index)\"\n [style.top.px]=\"!isVerticalOrientation ? (stepSizeCircle === 24 ? 16 : stepSizeCircle / 2) : null\"\n [style.left.px]=\"\n isVerticalOrientation ? (!stepSizeCircle || stepSizeCircle === 24 ? 16 : stepSizeCircle / 2) : null\n \"\n ></div>\n </div>\n </ng-container>\n </div>\n\n <div *ngIf=\"usePoSteps\" class=\"po-stepper-content\">\n <ng-content></ng-content>\n </div>\n</div>\n" }]
407
407
  }], () => [{ type: i0.ChangeDetectorRef }], { poSteps: [{
408
408
  type: ContentChildren,
409
409
  args: [PoStepComponent]
410
410
  }] }); })();
411
411
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoStepperComponent, { className: "PoStepperComponent", filePath: "lib/components/po-stepper/po-stepper.component.ts", lineNumber: 46 }); })();
412
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tc3RlcHBlci9wby1zdGVwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1zdGVwcGVyL3BvLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QyxTQUFTLEVBQUUsZUFBZSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRTNHLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7OztJQ0g3RCxzQkFTTzs7Ozs7O0lBSEwsMkpBRUM7SUFMRCxBQURBLDZGQUFzRSw2SUFHckU7OztJQTBCSCxzQkFZTzs7Ozs7O0lBSEwsQUFEQSxpSUFBa0csNklBR2pHO0lBSkQsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLDBFQUEwRCx5RkFDc0IsNERBQ3RCLG1GQUNnQiw0R0FDbUIsb0hBQ1E7Ozs7SUF4QzNHLDZCQUFtRjtJQUNqRiw4QkFBcUM7SUFDbkMsa0ZBU0M7SUFFRCwwQ0FpQkM7SUFEQyxBQURBLEFBREEsc09BQWUsNEJBQWtCLEtBQUMsdVFBQ3ZCLG9DQUF1QixLQUFDLHVRQUN4QixvQ0FBdUIsS0FBQztJQUVyQyxpQkFBa0I7SUFFbEIsbUZBWUM7SUFDSCxpQkFBTTs7Ozs7OztJQTNDRCxlQUFlO0lBQWYsbUNBQWU7SUFXaEIsY0FBcUQ7SUFBckQscUVBQXFEO0lBWXJELEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLEFBREEsQUFEQSxtREFBOEIsa0NBQ0EsMEJBQ1IscUNBQ08sNEJBQ0wsa0NBQ0UsZ0NBQ0YsaUdBQ3dCLHVDQUNiLHlDQUNGLHFDQUNKLHdEQUNtQjtJQVEvQyxjQUFpQztJQUFqQyw0REFBaUM7OztJQWdCMUMsOEJBQW1EO0lBQ2pELGtCQUF5QjtJQUMzQixpQkFBTTs7QUQ1Q1I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUtILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxzQkFBc0I7SUEwQnhDO0lBekJjLE9BQU8sQ0FBNkI7SUFFOUQsaUJBQWlCLENBQWtCO0lBQ25DLHVCQUF1QixHQUFrQixJQUFJLENBQUM7SUFFdEQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFVBQVUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUMvQixDQUFDO0lBRUQsWUFBb0IsY0FBaUM7UUFDbkQsS0FBSyxFQUFFLENBQUM7UUFEVSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7SUFFckQsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXJDLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzVDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNyQyxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUM7UUFFekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFJO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sU0FBUyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFFaEMsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzRSxNQUFNLGFBQWEsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRXBDLElBQUksYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxVQUFVLENBQUMsU0FBaUIsRUFBRSxJQUFzQjtRQUNsRCxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQzthQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQzNCLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztnQkFFekYsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUN2QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixDQUFDO3FCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDbkUsb0RBQW9EO29CQUNwRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQWlCO1FBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxPQUFPLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFpQjtRQUM1QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxTQUFpQjtRQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEMsT0FBTyxPQUFPLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUFpQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBcUIsRUFBRSxLQUFhO1FBQ2pELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxPQUFPLENBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sS0FBSyxNQUFNLElBQUksYUFBYSxFQUFFLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQztZQUN2RyxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU07WUFDdEIsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxJQUFxQixFQUFFLEtBQWE7UUFDcEQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdEQsT0FBTyxDQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxtQkFBbUIsRUFBRSxNQUFNLEtBQUssTUFBTSxJQUFJLG1CQUFtQixFQUFFLE1BQU0sS0FBSyxRQUFRLENBQUM7WUFDN0csSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUM7WUFDekIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sS0FBSyxNQUFNLElBQUksZ0JBQWdCLEVBQUUsTUFBTSxLQUFLLFFBQVEsQ0FBQztnQkFDdkcsSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUM7WUFDekIsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLGdCQUFnQixFQUFFLE1BQU0sS0FBSyxPQUFPLENBQUMsQ0FBQztZQUNoRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksZ0JBQWdCLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQztnQkFDakUsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVO2dCQUMxQixnQkFBZ0IsRUFBRSxNQUFNLEtBQUssTUFBTSxDQUFDO1lBQ3RDLG1CQUFtQixFQUFFLE1BQU0sS0FBSyxNQUFNO1lBQ3RDLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ3JDLENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQXFCO1FBQ2hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFFOUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVwRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQztnQkFDbEIsU0FBUyxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBcUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUYsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxhQUFxQjtRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3BGLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVoRSxPQUFPLE9BQU8sZ0JBQWdCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7SUFDekYsQ0FBQztJQUVPLGlCQUFpQixDQUFDLG9CQUFxQyxFQUFFLEVBQUUsYUFBc0I7UUFDdkYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ25CLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQ2xELENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBRUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUVsRixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM5QyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxRQUFRLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQzVCLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO29CQUN4QixpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUM7Z0JBQ2xHLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FDaEIsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLGtCQUFrQixDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsbUJBQW1CLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztZQUNoRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2YsaUJBQWlCLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUM7WUFDakQsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxhQUFxQjtRQUM5QyxPQUFPLElBQUksQ0FBQyxVQUFVO1lBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLGFBQWEsQ0FBQztZQUMvRCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RyxDQUFDO0lBRU8sOEJBQThCLENBQUMsaUJBQWtDO1FBQ3ZFLE1BQU0saUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRixPQUFPLGlCQUFpQixZQUFZLFVBQVUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxhQUFxQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUU7YUFDckIsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDO2FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTyxhQUFhLENBQUMsU0FBaUI7UUFDckMsT0FBTyxDQUNMLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLEtBQUssU0FBUyxDQUNuSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQXFCO1FBQzlDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTNFLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFDekQsQ0FBQztZQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUU3QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsZ0JBQWdCLENBQUM7WUFDaEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUVPLDJCQUEyQixDQUFDLGlCQUEwQjtRQUM1RCxPQUFPLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDO0lBQzFFLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUE2QixFQUFFO1FBQ3RELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8sVUFBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUE2QixFQUFFLGdCQUF3QjtRQUM1RSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsUUFBUSxDQUFDO1FBRXBGLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQzlELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVPLDRCQUE0QjtRQUNsQyxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVPLFlBQVksQ0FBQyxTQUFpQjtRQUNwQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVoSCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksc0JBQXNCLEVBQUUsSUFBSSxTQUFTLENBQUM7SUFDM0UsQ0FBQztJQUVPLDBCQUEwQixDQUFDLFNBQWlCO1FBQ2xELElBQUksQ0FBQyxVQUFVLEVBQUU7YUFDZCxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksS0FBSyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7YUFDdkQsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxlQUFlLENBQUMsSUFBcUI7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxXQUE0QjtRQUN2RCxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRSxNQUFNLFNBQVMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRWhDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsS0FBNkIsRUFBRSxnQkFBd0I7UUFDdEYsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO1lBQy9GLEtBQUssQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQztRQUNwRSxDQUFDO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLGlCQUFrQyxFQUFFLG1CQUE0QjtRQUN2RixpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDbkYsQ0FBQzs0RUFuWFUsa0JBQWtCOzZEQUFsQixrQkFBa0I7d0NBQ1osZUFBZTs7Ozs7O1lDN0NoQyxBQURGLDJCQUEwQyxhQUMyQjtZQUNqRSxzRkFBbUY7WUFnRHJGLGlCQUFNO1lBRU4sbUVBQW1EO1lBR3JELGlCQUFNOztZQXZERCw2REFBb0M7WUFDbkIsY0FBOEM7WUFBOUMsdUVBQThDO1lBQ2pDLGNBQWE7WUFBbUIsQUFBaEMsc0NBQWEsK0JBQXFDO1lBa0Q3RSxjQUFnQjtZQUFoQixxQ0FBZ0I7OztpRkRQWCxrQkFBa0I7Y0FKOUIsU0FBUzsyQkFDRSxZQUFZO2tEQUlZLE9BQU87a0JBQXhDLGVBQWU7bUJBQUMsZUFBZTs7a0ZBRHJCLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YXAsIGNhdGNoRXJyb3IsIG1hcCwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBvU3RlcHBlclN0YXR1cyB9IGZyb20gJy4vZW51bXMvcG8tc3RlcHBlci1zdGF0dXMuZW51bSc7XG5pbXBvcnQgeyBQb1N0ZXBDb21wb25lbnQgfSBmcm9tICcuL3BvLXN0ZXAvcG8tc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9TdGVwcGVyQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcG8tc3RlcHBlci1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1N0ZXBwZXJJdGVtIH0gZnJvbSAnLi9wby1zdGVwcGVyLWl0ZW0uaW50ZXJmYWNlJztcblxuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9TdGVwcGVyQmFzZUNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXN0ZXBwZXItYmFzaWNcIiB0aXRsZT1cIlBPIFN0ZXBwZXIgQmFzaWNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN0ZXBwZXItYmFzaWMvc2FtcGxlLXBvLXN0ZXBwZXItYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3RlcHBlci1iYXNpYy9zYW1wbGUtcG8tc3RlcHBlci1iYXNpYy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zdGVwcGVyLWxhYnNcIiB0aXRsZT1cIlBPIFN0ZXBwZXIgTGFic1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3RlcHBlci1sYWJzL3NhbXBsZS1wby1zdGVwcGVyLWxhYnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3RlcHBlci1sYWJzL3NhbXBsZS1wby1zdGVwcGVyLWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tc3RlcHBlci1zYWxlc1wiIHRpdGxlPVwiUE8gU3RlcHBlciAtIFNhbGVzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zdGVwcGVyLXNhbGVzL3NhbXBsZS1wby1zdGVwcGVyLXNhbGVzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN0ZXBwZXItc2FsZXMvc2FtcGxlLXBvLXN0ZXBwZXItc2FsZXMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tc3RlcHBlci1hY3RpdmVcIiB0aXRsZT1cIlBPIFN0ZXBwZXIgLSBBY3RpdmVcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN0ZXBwZXItYWN0aXZlL3NhbXBsZS1wby1zdGVwcGVyLWFjdGl2ZS5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zdGVwcGVyLWFjdGl2ZS9zYW1wbGUtcG8tc3RlcHBlci1hY3RpdmUuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN0ZXBwZXItYWN0aXZlL3NhbXBsZS1wby1zdGVwcGVyLWFjdGl2ZS5zZXJ2aWNlLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tc3RlcHBlci1zdGVwc1wiIHRpdGxlPVwiUE8gU3RlcHBlciAtIFN0ZXBzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zdGVwcGVyLXN0ZXBzL3NhbXBsZS1wby1zdGVwcGVyLXN0ZXBzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN0ZXBwZXItc3RlcHMvc2FtcGxlLXBvLXN0ZXBwZXItc3RlcHMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tc3RlcHBlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1zdGVwcGVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQb1N0ZXBwZXJDb21wb25lbnQgZXh0ZW5kcyBQb1N0ZXBwZXJCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBDb250ZW50Q2hpbGRyZW4oUG9TdGVwQ29tcG9uZW50KSBwb1N0ZXBzOiBRdWVyeUxpc3Q8UG9TdGVwQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGN1cnJlbnRBY3RpdmVTdGVwOiBQb1N0ZXBDb21wb25lbnQ7XG4gIHByaXZhdGUgcHJldmlvdXNBY3RpdmVTdGVwSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIGdldCBjdXJyZW50U3RlcEluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcCAtIDE7XG4gIH1cblxuICBnZXQgaXNWZXJ0aWNhbE9yaWVudGF0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnO1xuICB9XG5cbiAgZ2V0IHN0ZXBMaXN0KCk6IFF1ZXJ5TGlzdDxQb1N0ZXBDb21wb25lbnQ+IHwgQXJyYXk8UG9TdGVwcGVySXRlbT4ge1xuICAgIHJldHVybiAodGhpcy51c2VQb1N0ZXBzICYmIHRoaXMucG9TdGVwcykgfHwgdGhpcy5zdGVwcztcbiAgfVxuXG4gIGdldCBzdGVwU2l6ZUNpcmNsZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZURpdmlkZXJQb3NpdGlvbigpO1xuICB9XG5cbiAgZ2V0IHVzZVBvU3RlcHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5wb1N0ZXBzLmxlbmd0aDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmFjdGl2ZUZpcnN0U3RlcCgpO1xuXG4gICAgdGhpcy5wb1N0ZXBzLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY29udHJvbFN0ZXBzU3RhdHVzKHRoaXMucG9TdGVwcy5maXJzdCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWx0ZXJhIG8gc3RhdHVzIGRvICpzdGVwKiBwYXJhIGF0aXZvLlxuICAgKlxuICAgKiA+IEVzdGUgbcOpdG9kbyDDqSB2YWxpZG8gYXBlbmFzIHBhcmEgYXMgaW1wbGVtZW50YcOnw7VlcyBxdWUgdXRpbGl6YW0gbyBjb21wb25lbnRlIFsqKnBvLXN0ZXAqKl0oL2RvY3VtZW50YXRpb24vcG8tc3RlcCkuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCDDjW5kaWNlIGRvIGBwby1zdGVwYCBxdWUgc2UgZGVzZWphIGF0aXZhci5cbiAgICovXG4gIGFjdGl2ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnVzZVBvU3RlcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGVwc0FycmF5ID0gdGhpcy5nZXRQb1N0ZXBzKCk7XG5cbiAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHN0ZXBzQXJyYXkubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RlcCA9IHN0ZXBzQXJyYXlbaW5kZXhdO1xuICAgIHRoaXMuY2hhbmdlU3RlcChpbmRleCwgc3RlcCk7XG4gIH1cblxuICAvKipcbiAgICogQXRpdmEgbyBwcmltZWlybyAqc3RlcCouXG4gICAqXG4gICAqID4gRXN0ZSBtw6l0b2RvIMOpIHZhbGlkbyBhcGVuYXMgcGFyYSBhcyBpbXBsZW1lbnRhw6fDtWVzIHF1ZSB1dGlsaXphbSBvIGNvbXBvbmVudGUgWyoqcG8tc3RlcCoqXSgvZG9jdW1lbnRhdGlvbi9wby1zdGVwKS5cbiAgICovXG4gIGZpcnN0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy51c2VQb1N0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmlyc3RTdGVwID0gdGhpcy5wb1N0ZXBzLmZpcnN0O1xuICAgIGNvbnN0IGZpcnN0U3RlcEluZGV4ID0gMDtcblxuICAgIHRoaXMuY2hhbmdlU3RlcChmaXJzdFN0ZXBJbmRleCwgZmlyc3RTdGVwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdGl2YSBvIHByw7N4aW1vICpzdGVwKi5cbiAgICpcbiAgICogPiBFc3RlIG3DqXRvZG8gw6kgdmFsaWRvIGFwZW5hcyBwYXJhIGFzIGltcGxlbWVudGHDp8O1ZXMgcXVlIHV0aWxpemFtIG8gY29tcG9uZW50ZSBbKipwby1zdGVwKipdKC9kb2N1bWVudGF0aW9uL3BvLXN0ZXApLlxuICAgKi9cbiAgbmV4dCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudXNlUG9TdGVwcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc3RlcHMsIHN0ZXBJbmRleCB9ID0gdGhpcy5nZXRTdGVwc0FuZEluZGV4KHRoaXMuY3VycmVudEFjdGl2ZVN0ZXApO1xuICAgIGNvbnN0IG5leHRJbmRleCA9IHN0ZXBJbmRleCArIDE7XG5cbiAgICBpZiAobmV4dEluZGV4ID49IHN0ZXBzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRTdGVwID0gc3RlcHNbbmV4dEluZGV4XTtcblxuICAgIHRoaXMuY2hhbmdlU3RlcChuZXh0SW5kZXgsIG5leHRTdGVwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdGl2YSBvICpzdGVwKiBhbnRlcmlvci5cbiAgICpcbiAgICogPiBFc3RlIG3DqXRvZG8gw6kgdmFsaWRvIGFwZW5hcyBwYXJhIGFzIGltcGxlbWVudGHDp8O1ZXMgcXVlIHV0aWxpemFtIG8gY29tcG9uZW50ZSBbKipwby1zdGVwKipdKC9kb2N1bWVudGF0aW9uL3BvLXN0ZXApLlxuICAgKi9cbiAgcHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnVzZVBvU3RlcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IHN0ZXBzLCBzdGVwSW5kZXggfSA9IHRoaXMuZ2V0U3RlcHNBbmRJbmRleCh0aGlzLmN1cnJlbnRBY3RpdmVTdGVwKTtcbiAgICBjb25zdCBwcmV2aW91c0luZGV4ID0gc3RlcEluZGV4IC0gMTtcblxuICAgIGlmIChwcmV2aW91c0luZGV4IDwgMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzU3RlcCA9IHN0ZXBzW3ByZXZpb3VzSW5kZXhdO1xuXG4gICAgdGhpcy5jaGFuZ2VTdGVwKHByZXZpb3VzSW5kZXgsIHByZXZpb3VzU3RlcCk7XG4gIH1cblxuICBjaGFuZ2VTdGVwKHN0ZXBJbmRleDogbnVtYmVyLCBzdGVwPzogUG9TdGVwQ29tcG9uZW50KTogdm9pZCB7XG4gICAgdGhpcy5hbGxvd05leHRTdGVwKHN0ZXBJbmRleClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKG5leHRTdGVwQWxsb3dlZCA9PiB7XG4gICAgICAgIGlmIChuZXh0U3RlcEFsbG93ZWQpIHtcbiAgICAgICAgICBjb25zdCBpc0RpZmZlcmVudFN0ZXAgPSAhdGhpcy5jdXJyZW50QWN0aXZlU3RlcCB8fCBzdGVwLmlkICE9PSB0aGlzLmN1cnJlbnRBY3RpdmVTdGVwLmlkO1xuXG4gICAgICAgICAgaWYgKHRoaXMudXNlUG9TdGVwcyAmJiBpc0RpZmZlcmVudFN0ZXApIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbFN0ZXBzU3RhdHVzKHN0ZXApO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZVN0ZXAuZW1pdChzdGVwKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLnVzZVBvU3RlcHMgJiYgc3RlcEluZGV4ICE9PSB0aGlzLmN1cnJlbnRTdGVwSW5kZXgpIHtcbiAgICAgICAgICAgIC8vIGlmIHBhcmEgdHJhdGFtZW50byBkbyBtb2RlbG8gYW50aWdvIGRvIHBvLXN0ZXBwZXJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VTdGVwLmVtaXQoc3RlcEluZGV4ICsgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGdldE5leHRQb1N0ZXBzKHN0ZXBJbmRleDogbnVtYmVyKTogUG9TdGVwQ29tcG9uZW50IHtcbiAgICBjb25zdCBwb1N0ZXBzID0gdGhpcy5nZXRQb1N0ZXBzKCk7XG4gICAgcmV0dXJuIHBvU3RlcHNbc3RlcEluZGV4ICsgMV07XG4gIH1cblxuICBnZXROZXh0U3RlcHMoc3RlcEluZGV4OiBudW1iZXIpOiBQb1N0ZXBwZXJJdGVtIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwc1tzdGVwSW5kZXggKyAxXTtcbiAgfVxuXG4gIGdldFByZXZpb3VzUG9TdGVwcyhzdGVwSW5kZXg6IG51bWJlcik6IFBvU3RlcENvbXBvbmVudCB7XG4gICAgY29uc3QgcG9TdGVwcyA9IHRoaXMuZ2V0UG9TdGVwcygpO1xuICAgIHJldHVybiBwb1N0ZXBzW3N0ZXBJbmRleCAtIDFdO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNTdGVwcyhzdGVwSW5kZXg6IG51bWJlcik6IFBvU3RlcHBlckl0ZW0ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzW3N0ZXBJbmRleCAtIDFdO1xuICB9XG5cbiAgaXNEYXNoZWRCb3JkZXIoc3RlcDogUG9TdGVwQ29tcG9uZW50LCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmV4dFN0ZXBQb1N0ZXBzID0gdGhpcy5nZXROZXh0UG9TdGVwcyhpbmRleCk7XG4gICAgY29uc3QgbmV4dFN0ZXBTdGVwcyA9IHRoaXMuZ2V0TmV4dFN0ZXBzKGluZGV4KTtcbiAgICByZXR1cm4gKFxuICAgICAgIShzdGVwLnN0YXR1cyA9PT0gJ2FjdGl2ZScgJiYgKG5leHRTdGVwUG9TdGVwcz8uc3RhdHVzID09PSAnZG9uZScgfHwgbmV4dFN0ZXBTdGVwcz8uc3RhdHVzID09PSAnZG9uZScpKSAmJlxuICAgICAgc3RlcC5zdGF0dXMgIT09ICdkb25lJyAmJlxuICAgICAgKHRoaXMudXNlUG9TdGVwcyB8fCB0aGlzLnNlcXVlbnRpYWwpXG4gICAgKTtcbiAgfVxuXG4gIGlzRGFzaGVkQm9yZGVyVG9wKHN0ZXA6IFBvU3RlcENvbXBvbmVudCwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHByZXZpb3VzU3RlcFBvU3RlcHMgPSB0aGlzLmdldFByZXZpb3VzUG9TdGVwcyhpbmRleCk7XG4gICAgY29uc3QgZ2V0UHJldmlvdXNTdGVwcyA9IHRoaXMuZ2V0UHJldmlvdXNTdGVwcyhpbmRleCk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgKChzdGVwLnN0YXR1cyA9PT0gJ2RvbmUnICYmIHByZXZpb3VzU3RlcFBvU3RlcHM/LnN0YXR1cyAhPT0gJ2RvbmUnICYmIHByZXZpb3VzU3RlcFBvU3RlcHM/LnN0YXR1cyAhPT0gJ2FjdGl2ZScpIHx8XG4gICAgICAgIHN0ZXAuc3RhdHVzICE9PSAnZG9uZScpICYmXG4gICAgICAoKHN0ZXAuc3RhdHVzID09PSAnZG9uZScgJiYgZ2V0UHJldmlvdXNTdGVwcz8uc3RhdHVzICE9PSAnZG9uZScgJiYgZ2V0UHJldmlvdXNTdGVwcz8uc3RhdHVzICE9PSAnYWN0aXZlJykgfHxcbiAgICAgICAgc3RlcC5zdGF0dXMgIT09ICdkb25lJykgJiZcbiAgICAgIChzdGVwLnN0YXR1cyAhPT0gJ2FjdGl2ZScgfHwgKHN0ZXAuc3RhdHVzID09PSAnYWN0aXZlJyAmJiBnZXRQcmV2aW91c1N0ZXBzPy5zdGF0dXMgPT09ICdlcnJvcicpKSAmJlxuICAgICAgKChzdGVwLnN0YXR1cyA9PT0gJ2RlZmF1bHQnICYmIGdldFByZXZpb3VzU3RlcHM/LnN0YXR1cyAhPT0gJ2RvbmUnKSB8fFxuICAgICAgICBzdGVwLnN0YXR1cyA9PT0gJ2Rpc2FibGVkJyB8fFxuICAgICAgICBnZXRQcmV2aW91c1N0ZXBzPy5zdGF0dXMgIT09ICdkb25lJykgJiZcbiAgICAgIHByZXZpb3VzU3RlcFBvU3RlcHM/LnN0YXR1cyAhPT0gJ2RvbmUnICYmXG4gICAgICAodGhpcy51c2VQb1N0ZXBzIHx8IHRoaXMuc2VxdWVudGlhbClcbiAgICApO1xuICB9XG5cbiAgb25TdGVwQWN0aXZlKHN0ZXA6IFBvU3RlcENvbXBvbmVudCkge1xuICAgIHRoaXMuY3VycmVudEFjdGl2ZVN0ZXAgPSBzdGVwO1xuXG4gICAgY29uc3QgeyBzdGVwSW5kZXggfSA9IHRoaXMuZ2V0U3RlcHNBbmRJbmRleCh0aGlzLmN1cnJlbnRBY3RpdmVTdGVwKTtcblxuICAgIHRoaXMucG9TdGVwcy5mb3JFYWNoKChzdGVwQ2hpbGQsIGkpID0+IHtcbiAgICAgIGlmIChpIDwgc3RlcEluZGV4KSB7XG4gICAgICAgIHN0ZXBDaGlsZC5zdGF0dXMgPSBQb1N0ZXBwZXJTdGF0dXMuRG9uZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHRyYWNrQnlGbihzdGVwOiBQb1N0ZXBDb21wb25lbnQpIHtcbiAgICByZXR1cm4gc3RlcC5pZDtcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZlRmlyc3RTdGVwKCkge1xuICAgIGNvbnN0IGhhc1N0ZXBBY3RpdmUgPSB0aGlzLnBvU3RlcHMuc29tZShwb1N0ZXAgPT4gcG9TdGVwLnN0YXR1cyA9PT0gUG9TdGVwcGVyU3RhdHVzLkFjdGl2ZSk7XG5cbiAgICBpZiAodGhpcy51c2VQb1N0ZXBzICYmICFoYXNTdGVwQWN0aXZlKSB7XG4gICAgICB0aGlzLmNoYW5nZVN0ZXAoMCwgdGhpcy5wb1N0ZXBzLmZpcnN0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFsbG93TmV4dFN0ZXAobmV4dFN0ZXBJbmRleDogbnVtYmVyKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLnNlcXVlbnRpYWwpIHtcbiAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNTdGVwV2l0aENhbkFjdGl2ZU5leHRTdGVwKCkgJiYgdGhpcy5oYXNEZWZhdWx0QmVmb3JlRG9uZShuZXh0U3RlcEluZGV4KSkge1xuICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc0FsbG93TmV4dFN0ZXAkID0gdGhpcy5jaGVja0FsbG93TmV4dFN0ZXAobmV4dFN0ZXBJbmRleCk7XG5cbiAgICByZXR1cm4gdHlwZW9mIGlzQWxsb3dOZXh0U3RlcCQgPT09ICdib29sZWFuJyA/IG9mKGlzQWxsb3dOZXh0U3RlcCQpIDogaXNBbGxvd05leHRTdGVwJDtcbiAgfVxuXG4gIHByaXZhdGUgY2FuQWN0aXZlTmV4dFN0ZXAoY3VycmVudEFjdGl2ZVN0ZXAgPSA8UG9TdGVwQ29tcG9uZW50Pnt9LCBuZXh0U3RlcEluZGV4PzogbnVtYmVyKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgaXNDdXJyZW50U3RlcCA9IHRoaXMuaXNDdXJyZW50U3RlcChuZXh0U3RlcEluZGV4KTtcblxuICAgIGlmICghY3VycmVudEFjdGl2ZVN0ZXAuY2FuQWN0aXZlTmV4dFN0ZXApIHtcbiAgICAgIGlmICghaXNDdXJyZW50U3RlcCkge1xuICAgICAgICBjdXJyZW50QWN0aXZlU3RlcC5zdGF0dXMgPSBQb1N0ZXBwZXJTdGF0dXMuRG9uZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICB9XG5cbiAgICBjb25zdCBjYW5BY3RpdmVOZXh0U3RlcCQgPSB0aGlzLmdldENhbkFjdGl2ZU5leHRTdGVwT2JzZXJ2YWJsZShjdXJyZW50QWN0aXZlU3RlcCk7XG5cbiAgICByZXR1cm4gb2YodGhpcy5pc0JlZm9yZVN0ZXAobmV4dFN0ZXBJbmRleCkpLnBpcGUoXG4gICAgICBtZXJnZU1hcChpc0JlZm9yZSA9PiB7XG4gICAgICAgIGlmIChpc0JlZm9yZSAmJiAhaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgIHJldHVybiBjYW5BY3RpdmVOZXh0U3RlcCQucGlwZShcbiAgICAgICAgICAgIHRhcChpc0NhbkFjdGl2ZU5leHRTdGVwID0+IHtcbiAgICAgICAgICAgICAgY3VycmVudEFjdGl2ZVN0ZXAuc3RhdHVzID0gaXNDYW5BY3RpdmVOZXh0U3RlcCA/IFBvU3RlcHBlclN0YXR1cy5Eb25lIDogUG9TdGVwcGVyU3RhdHVzLkRlZmF1bHQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB0cnVlKVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGNhbkFjdGl2ZU5leHRTdGVwJDtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YXAoaXNDYW5BY3RpdmVOZXh0U3RlcCA9PiB7XG4gICAgICAgIGlmICghdGhpcy5pc0JlZm9yZVN0ZXAobmV4dFN0ZXBJbmRleCkgJiYgIWlzQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVN0ZXBTdGF0dXMoY3VycmVudEFjdGl2ZVN0ZXAsIGlzQ2FuQWN0aXZlTmV4dFN0ZXApO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgY3VycmVudEFjdGl2ZVN0ZXAuc3RhdHVzID0gUG9TdGVwcGVyU3RhdHVzLkVycm9yO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0FsbG93TmV4dFN0ZXAobmV4dFN0ZXBJbmRleDogbnVtYmVyKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlUG9TdGVwc1xuICAgICAgPyB0aGlzLmNhbkFjdGl2ZU5leHRTdGVwKHRoaXMuY3VycmVudEFjdGl2ZVN0ZXAsIG5leHRTdGVwSW5kZXgpXG4gICAgICA6IG9mKHRoaXMuc3RlcHMuc2xpY2UodGhpcy5zdGVwLCBuZXh0U3RlcEluZGV4KS5ldmVyeShzdGVwID0+IHN0ZXAuc3RhdHVzID09PSBQb1N0ZXBwZXJTdGF0dXMuRG9uZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYW5BY3RpdmVOZXh0U3RlcE9ic2VydmFibGUoY3VycmVudEFjdGl2ZVN0ZXA6IFBvU3RlcENvbXBvbmVudCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNhbkFjdGl2ZU5leHRTdGVwID0gY3VycmVudEFjdGl2ZVN0ZXAuY2FuQWN0aXZlTmV4dFN0ZXAoY3VycmVudEFjdGl2ZVN0ZXApO1xuICAgIHJldHVybiBjYW5BY3RpdmVOZXh0U3RlcCBpbnN0YW5jZW9mIE9ic2VydmFibGUgPyBjYW5BY3RpdmVOZXh0U3RlcCA6IG9mKGNhbkFjdGl2ZU5leHRTdGVwKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzRGVmYXVsdEJlZm9yZURvbmUobmV4dFN0ZXBJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UG9TdGVwcygpXG4gICAgICAuc2xpY2UodGhpcy5zdGVwLCBuZXh0U3RlcEluZGV4KVxuICAgICAgLnNvbWUoc3RlcCA9PiBzdGVwLnN0YXR1cyA9PT0gUG9TdGVwcGVyU3RhdHVzLkRlZmF1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0N1cnJlbnRTdGVwKHN0ZXBJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY3VycmVudEFjdGl2ZVN0ZXAgJiYgdGhpcy5nZXRQb1N0ZXBzKCkuZmluZEluZGV4KHN0ZXAgPT4gc3RlcC5pZCA9PT0gdGhpcy5jdXJyZW50QWN0aXZlU3RlcC5pZCkgPT09IHN0ZXBJbmRleFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNvbnRyb2xTdGVwc1N0YXR1cyhzdGVwOiBQb1N0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy51c2VQb1N0ZXBzKSB7XG4gICAgICBjb25zdCB7IHN0ZXBzLCBzdGVwSW5kZXg6IGN1cnJlbnRTdGVwSW5kZXggfSA9IHRoaXMuZ2V0U3RlcHNBbmRJbmRleChzdGVwKTtcblxuICAgICAgaWYgKCF0aGlzLmhhc1N0ZXBXaXRoQ2FuQWN0aXZlTmV4dFN0ZXAoKSkge1xuICAgICAgICB0aGlzLnVwZGF0ZVByZXZpb3VzU3RlcFN0YXR1cyhzdGVwcywgY3VycmVudFN0ZXBJbmRleCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0ZXBBc0FjdGl2ZShzdGVwKTtcblxuICAgICAgdGhpcy5oYW5kbGVOZXh0U3RlcChzdGVwcywgY3VycmVudFN0ZXBJbmRleCk7XG5cbiAgICAgIHRoaXMucHJldmlvdXNBY3RpdmVTdGVwSW5kZXggPSBjdXJyZW50U3RlcEluZGV4O1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVEaXZpZGVyUG9zaXRpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwU2l6ZSA+PSAyNCAmJiB0aGlzLnN0ZXBTaXplIDw9IDY0ID8gdGhpcy5zdGVwU2l6ZSA6IDI0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdGVwcGVyU3RhdHVzQnlDYW5BY3RpdmUoY2FuQWN0aXZlTmV4dFN0ZXA6IGJvb2xlYW4pOiBQb1N0ZXBwZXJTdGF0dXMge1xuICAgIHJldHVybiBjYW5BY3RpdmVOZXh0U3RlcCA/IFBvU3RlcHBlclN0YXR1cy5Eb25lIDogUG9TdGVwcGVyU3RhdHVzLkVycm9yO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdGVwc0FuZEluZGV4KHN0ZXA6IFBvU3RlcENvbXBvbmVudCA9IDxhbnk+e30pOiB7IHN0ZXBzOiBBcnJheTxQb1N0ZXBDb21wb25lbnQ+OyBzdGVwSW5kZXg6IG51bWJlciB9IHtcbiAgICBjb25zdCBzdGVwcyA9IHRoaXMuZ2V0UG9TdGVwcygpO1xuICAgIGNvbnN0IHN0ZXBJbmRleCA9IHN0ZXBzLmZpbmRJbmRleChwb1N0ZXAgPT4gcG9TdGVwLmlkID09PSBzdGVwLmlkKTtcblxuICAgIHJldHVybiB7IHN0ZXBzLCBzdGVwSW5kZXggfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UG9TdGVwcygpOiBBcnJheTxQb1N0ZXBDb21wb25lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5wb1N0ZXBzLnRvQXJyYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTmV4dFN0ZXAoc3RlcHM6IEFycmF5PFBvU3RlcENvbXBvbmVudD4sIGN1cnJlbnRTdGVwSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5leHRTdGVwID0gc3RlcHNbY3VycmVudFN0ZXBJbmRleCArIDFdO1xuICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gc3RlcHNbY3VycmVudFN0ZXBJbmRleF07XG4gICAgY29uc3QgaXNOZXh0U3RlcERpc2FibGVkID0gbmV4dFN0ZXAgJiYgbmV4dFN0ZXAuc3RhdHVzID09PSBQb1N0ZXBwZXJTdGF0dXMuRGlzYWJsZWQ7XG5cbiAgICBpZiAoIXRoaXMuaGFzU3RlcFdpdGhDYW5BY3RpdmVOZXh0U3RlcCgpICYmIGlzTmV4dFN0ZXBEaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZXROZXh0U3RlcEFzRGVmYXVsdChzdGVwc1tjdXJyZW50U3RlcEluZGV4XSk7XG4gICAgICBpZiAodGhpcy5pc0JlZm9yZVN0ZXAoY3VycmVudFN0ZXBJbmRleCkpIHtcbiAgICAgICAgdGhpcy5zZXRGaW5hbFN0ZXBwZXJzQXNEaXNhYmxlZChjdXJyZW50U3RlcEluZGV4KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzU3RlcFdpdGhDYW5BY3RpdmVOZXh0U3RlcCgpICYmIGlzTmV4dFN0ZXBEaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZXROZXh0U3RlcEFzRGVmYXVsdChjdXJyZW50U3RlcCk7XG4gICAgICB0aGlzLnNldEZpbmFsU3RlcHBlcnNBc0Rpc2FibGVkKGN1cnJlbnRTdGVwSW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzU3RlcFdpdGhDYW5BY3RpdmVOZXh0U3RlcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRQb1N0ZXBzKCkuc29tZShzdGVwID0+IHN0ZXAuY2FuQWN0aXZlTmV4dFN0ZXAgJiYgc3RlcC5jYW5BY3RpdmVOZXh0U3RlcChzdGVwKSk7XG4gIH1cblxuICBwcml2YXRlIGlzQmVmb3JlU3RlcChzdGVwSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnRBY3RpdmVTdGVwSW5kZXggPSAoKSA9PiB0aGlzLmdldFBvU3RlcHMoKS5maW5kSW5kZXgoc3RlcCA9PiBzdGVwLmlkID09PSB0aGlzLmN1cnJlbnRBY3RpdmVTdGVwLmlkKTtcblxuICAgIHJldHVybiAhIXRoaXMuY3VycmVudEFjdGl2ZVN0ZXAgJiYgY3VycmVudEFjdGl2ZVN0ZXBJbmRleCgpID49IHN0ZXBJbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RmluYWxTdGVwcGVyc0FzRGlzYWJsZWQoc3RlcEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmdldFBvU3RlcHMoKVxuICAgICAgLmZpbHRlcigoc3RlcCwgaW5kZXgpID0+IHN0ZXAgJiYgaW5kZXggPj0gc3RlcEluZGV4ICsgMilcbiAgICAgIC5mb3JFYWNoKHN0ZXAgPT4gKHN0ZXAuc3RhdHVzID0gUG9TdGVwcGVyU3RhdHVzLkRpc2FibGVkKSk7XG4gIH1cblxuICBwcml2YXRlIHNldFN0ZXBBc0FjdGl2ZShzdGVwOiBQb1N0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICBzdGVwLnN0YXR1cyA9IFBvU3RlcHBlclN0YXR1cy5BY3RpdmU7XG4gIH1cblxuICBwcml2YXRlIHNldE5leHRTdGVwQXNEZWZhdWx0KGN1cnJlbnRTdGVwOiBQb1N0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB7IHN0ZXBzLCBzdGVwSW5kZXggfSA9IHRoaXMuZ2V0U3RlcHNBbmRJbmRleChjdXJyZW50U3RlcCk7XG4gICAgY29uc3QgbmV4dEluZGV4ID0gc3RlcEluZGV4ICsgMTtcblxuICAgIGlmIChuZXh0SW5kZXggPCB0aGlzLnBvU3RlcHMubGVuZ3RoKSB7XG4gICAgICBzdGVwc1tuZXh0SW5kZXhdLnN0YXR1cyA9IFBvU3RlcHBlclN0YXR1cy5EZWZhdWx0O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUHJldmlvdXNTdGVwU3RhdHVzKHN0ZXBzOiBBcnJheTxQb1N0ZXBDb21wb25lbnQ+LCBjdXJyZW50U3RlcEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmV2aW91c0FjdGl2ZVN0ZXBJbmRleCAhPT0gbnVsbCAmJiB0aGlzLnByZXZpb3VzQWN0aXZlU3RlcEluZGV4ICE9PSBjdXJyZW50U3RlcEluZGV4KSB7XG4gICAgICBzdGVwc1t0aGlzLnByZXZpb3VzQWN0aXZlU3RlcEluZGV4XS5zdGF0dXMgPSBQb1N0ZXBwZXJTdGF0dXMuRG9uZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0ZXBTdGF0dXMoY3VycmVudEFjdGl2ZVN0ZXA6IFBvU3RlcENvbXBvbmVudCwgaXNDYW5BY3RpdmVOZXh0U3RlcDogYm9vbGVhbik6IHZvaWQge1xuICAgIGN1cnJlbnRBY3RpdmVTdGVwLnN0YXR1cyA9IHRoaXMuZ2V0U3RlcHBlclN0YXR1c0J5Q2FuQWN0aXZlKGlzQ2FuQWN0aXZlTmV4dFN0ZXApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicG8tc3RlcHBlci17eyBvcmllbnRhdGlvbiB9fVwiPlxuICA8ZGl2IHJvbGU9XCJ0YWJsaXN0XCIgY2xhc3M9XCJwby1zdGVwcGVyLWNvbnRhaW5lci17eyBvcmllbnRhdGlvbiB9fVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcExpc3Q7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwby1zdGVwcGVyLXN0ZXAtd3JhcHBlclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJpbmRleCA+IDBcIlxuICAgICAgICAgIFtjbGFzcy5wby1zdGVwcGVyLXN0ZXAtYmFyLXRvcF09XCJhbGlnbkNlbnRlciAmJiBpc1ZlcnRpY2FsT3JpZW50YXRpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby1zdGVwcGVyLXN0ZXAtZGFzaGVkLWJvcmRlci12ZXJ0aWNhbF09XCJcbiAgICAgICAgICAgIGFsaWduQ2VudGVyICYmIGlzVmVydGljYWxPcmllbnRhdGlvbiAmJiBpc0Rhc2hlZEJvcmRlclRvcChzdGVwLCBpbmRleClcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cIlxuICAgICAgICAgICAgaXNWZXJ0aWNhbE9yaWVudGF0aW9uID8gKCFzdGVwU2l6ZUNpcmNsZSB8fCBzdGVwU2l6ZUNpcmNsZSA9PT0gMjQgPyAxNiA6IHN0ZXBTaXplQ2lyY2xlIC8gMikgOiBudWxsXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvZGl2PlxuXG4gICAgICAgIDxwby1zdGVwcGVyLXN0ZXBcbiAgICAgICAgICBbY2xhc3MucG8tc3RlcHBlci1zdGVwLXBvc2l0aW9uLWNlbnRlcl09XCJhbGlnbkNlbnRlclwiXG4gICAgICAgICAgW3AtYWxpZ24tY2VudGVyXT1cImFsaWduQ2VudGVyXCJcbiAgICAgICAgICBbcC1jaXJjbGUtY29udGVudF09XCJpbmRleCArIDFcIlxuICAgICAgICAgIFtwLWxhYmVsXT1cInN0ZXAubGFiZWxcIlxuICAgICAgICAgIFtwLW9yaWVudGF0aW9uXT1cIm9yaWVudGF0aW9uXCJcbiAgICAgICAgICBbcC1zdGF0dXNdPVwic3RlcC5zdGF0dXNcIlxuICAgICAgICAgIFtwLXN0ZXAtaWNvbnNdPVwic3RlcEljb25zXCJcbiAgICAgICAgICBbcC1zdGVwLXNpemVdPVwic3RlcFNpemVcIlxuICAgICAgICAgIFtwLW5leHQtc3RhdHVzXT1cInBvU3RlcHMuZ2V0KGluZGV4ICsgMSk/LnN0YXR1c1wiXG4gICAgICAgICAgW3AtaWNvbi1kZWZhdWx0XT1cInN0ZXAuaWNvbkRlZmF1bHRcIlxuICAgICAgICAgIFtwLXN0ZXAtaWNvbi1hY3RpdmVdPVwiaWNvbkFjdGl2ZVwiXG4gICAgICAgICAgW3Atc3RlcC1pY29uLWRvbmVdPVwiaWNvbkRvbmVcIlxuICAgICAgICAgIFtwLXZlcnRpY2FsLW9yaWVudGF0aW9uXT1cImlzVmVydGljYWxPcmllbnRhdGlvblwiXG4gICAgICAgICAgKHAtYWN0aXZhdGVkKT1cIm9uU3RlcEFjdGl2ZShzdGVwKVwiXG4gICAgICAgICAgKHAtY2xpY2spPVwiY2hhbmdlU3RlcChpbmRleCwgc3RlcClcIlxuICAgICAgICAgIChwLWVudGVyKT1cImNoYW5nZVN0ZXAoaW5kZXgsIHN0ZXApXCJcbiAgICAgICAgPlxuICAgICAgICA8L3BvLXN0ZXBwZXItc3RlcD5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJpbmRleCA8IHN0ZXBMaXN0Lmxlbmd0aCAtIDFcIlxuICAgICAgICAgIFtjbGFzcy5wby1zdGVwcGVyLXN0ZXAtYmFyLWJvdHRvbV09XCJpc1ZlcnRpY2FsT3JpZW50YXRpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby1zdGVwcGVyLXN0ZXAtYmFyLWJvdHRvbS1jZW50ZXJdPVwiYWxpZ25DZW50ZXIgJiYgaXNWZXJ0aWNhbE9yaWVudGF0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tc3RlcHBlci1zdGVwLWJhci1yaWdodF09XCIhaXNWZXJ0aWNhbE9yaWVudGF0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tc3RlcHBlci1zdGVwLWJhci1jZW50ZXJdPVwiYWxpZ25DZW50ZXIgJiYgIWlzVmVydGljYWxPcmllbnRhdGlvblwiXG4gICAgICAgICAgW2NsYXNzLnBvLXN0ZXBwZXItc3RlcC1kYXNoZWQtYm9yZGVyXT1cIiFpc1ZlcnRpY2FsT3JpZW50YXRpb24gJiYgaXNEYXNoZWRCb3JkZXIoc3RlcCwgaW5kZXgpXCJcbiAgICAgICAgICBbY2xhc3MucG8tc3RlcHBlci1zdGVwLWRhc2hlZC1ib3JkZXItdmVydGljYWxdPVwiaXNWZXJ0aWNhbE9yaWVudGF0aW9uICYmIGlzRGFzaGVkQm9yZGVyKHN0ZXAsIGluZGV4KVwiXG4gICAgICAgICAgW3N0eWxlLnRvcC5weF09XCIhaXNWZXJ0aWNhbE9yaWVudGF0aW9uID8gKHN0ZXBTaXplQ2lyY2xlID09PSAyNCA/IDE2IDogc3RlcFNpemVDaXJjbGUgLyAyKSA6IG51bGxcIlxuICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cIlxuICAgICAgICAgICAgaXNWZXJ0aWNhbE9yaWVudGF0aW9uID8gKCFzdGVwU2l6ZUNpcmNsZSB8fCBzdGVwU2l6ZUNpcmNsZSA9PT0gMjQgPyAxNiA6IHN0ZXBTaXplQ2lyY2xlIC8gMikgOiBudWxsXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJ1c2VQb1N0ZXBzXCIgY2xhc3M9XCJwby1zdGVwcGVyLWNvbnRlbnRcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3RlcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tc3RlcHBlci9wby1zdGVwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1zdGVwcGVyL3BvLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QyxTQUFTLEVBQUUsZUFBZSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRTNHLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7OztJQ0g3RCxzQkFTTzs7Ozs7O0lBSEwsMkpBRUM7SUFMRCxBQURBLDZGQUFzRSw2SUFHckU7OztJQTJCSCxzQkFZTzs7Ozs7O0lBSEwsQUFEQSxpSUFBa0csNklBR2pHO0lBSkQsQUFEQSxBQURBLEFBREEsQUFEQSxBQURBLDBFQUEwRCx5RkFDc0IsNERBQ3RCLG1GQUNnQiw0R0FDbUIsb0hBQ1E7Ozs7SUF6QzNHLDZCQUFtRjtJQUNqRiw4QkFBcUM7SUFDbkMsa0ZBU0M7SUFFRCwwQ0FrQkM7SUFEQyxBQURBLEFBREEsc09BQWUsNEJBQWtCLEtBQUMsdVFBQ3ZCLG9DQUF1QixLQUFDLHVRQUN4QixvQ0FBdUIsS0FBQztJQUVyQyxp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WUFHckQsaUJBQU07O1lBeERELDZEQUFvQztZQUNuQixjQUE4QztZQUE5Qyx1RUFBOEM7WUFDakMsY0FBYTtZQUFtQixBQUFoQyxzQ0FBYSwrQkFBcUM7WUFtRDdFLGNBQWdCO1lBQWhCLHFDQUFnQjs7O2lGRFJYLGtCQUFrQjtjQUo5QixTQUFTOzJCQUNFLFlBQVk7a0RBSVksT0FBTztrQkFBeEMsZUFBZTttQkFBQyxlQUFlOztrRkFEckIsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRhcCwgY2F0Y2hFcnJvciwgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUG9TdGVwcGVyU3RhdHVzIH0gZnJvbSAnLi9lbnVtcy9wby1zdGVwcGVyLXN0YXR1cy5lbnVtJztcbmltcG9ydCB7IFBvU3RlcENvbXBvbmVudCB9IGZyb20gJy4vcG8tc3RlcC9wby1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb1N0ZXBwZXJCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1zdGVwcGVyLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvU3RlcHBlckl0ZW0gfSBmcm9tICcuL3BvLXN0ZXBwZXItaXRlbS5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb1N0ZXBwZXJCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tc3RlcHBlci1iYXNpY1wiIHRpdGxlPVwiUE8gU3RlcHBlciBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3RlcHBlci1iYXNpYy9zYW1wbGUtcG8tc3RlcHBlci1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zdGVwcGVyLWJhc2ljL3NhbXBsZS1wby1zdGVwcGVyLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXN0ZXBwZXItbGFic1wiIHRpdGxlPVwiUE8gU3RlcHBlciBMYWJzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zdGVwcGVyLWxhYnMvc2FtcGxlLXBvLXN0ZXBwZXItbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zdGVwcGVyLWxhYnMvc2FtcGxlLXBvLXN0ZXBwZXItbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zdGVwcGVyLXNhbGVzXCIgdGl0bGU9XCJQTyBTdGVwcGVyIC0gU2FsZXNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN0ZXBwZXItc2FsZXMvc2FtcGxlLXBvLXN0ZXBwZXItc2FsZXMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3RlcHBlci1zYWxlcy9zYW1wbGUtcG8tc3RlcHBlci1zYWxlcy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zdGVwcGVyLWFjdGl2ZVwiIHRpdGxlPVwiUE8gU3RlcHBlciAtIEFjdGl2ZVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3RlcHBlci1hY3RpdmUvc2FtcGxlLXBvLXN0ZXBwZXItYWN0aXZlLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN0ZXBwZXItYWN0aXZlL3NhbXBsZS1wby1zdGVwcGVyLWFjdGl2ZS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3RlcHBlci1hY3RpdmUvc2FtcGxlLXBvLXN0ZXBwZXItYWN0aXZlLnNlcnZpY2UudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zdGVwcGVyLXN0ZXBzXCIgdGl0bGU9XCJQTyBTdGVwcGVyIC0gU3RlcHNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN0ZXBwZXItc3RlcHMvc2FtcGxlLXBvLXN0ZXBwZXItc3RlcHMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3RlcHBlci1zdGVwcy9zYW1wbGUtcG8tc3RlcHBlci1zdGVwcy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1zdGVwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFBvU3RlcHBlckNvbXBvbmVudCBleHRlbmRzIFBvU3RlcHBlckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgQENvbnRlbnRDaGlsZHJlbihQb1N0ZXBDb21wb25lbnQpIHBvU3RlcHM6IFF1ZXJ5TGlzdDxQb1N0ZXBDb21wb25lbnQ+O1xuXG4gIHByaXZhdGUgY3VycmVudEFjdGl2ZVN0ZXA6IFBvU3RlcENvbXBvbmVudDtcbiAgcHJpdmF0ZSBwcmV2aW91c0FjdGl2ZVN0ZXBJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgZ2V0IGN1cnJlbnRTdGVwSW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwIC0gMTtcbiAgfVxuXG4gIGdldCBpc1ZlcnRpY2FsT3JpZW50YXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCc7XG4gIH1cblxuICBnZXQgc3RlcExpc3QoKTogUXVlcnlMaXN0PFBvU3RlcENvbXBvbmVudD4gfCBBcnJheTxQb1N0ZXBwZXJJdGVtPiB7XG4gICAgcmV0dXJuICh0aGlzLnVzZVBvU3RlcHMgJiYgdGhpcy5wb1N0ZXBzKSB8fCB0aGlzLnN0ZXBzO1xuICB9XG5cbiAgZ2V0IHN0ZXBTaXplQ2lyY2xlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlRGl2aWRlclBvc2l0aW9uKCk7XG4gIH1cblxuICBnZXQgdXNlUG9TdGVwcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnBvU3RlcHMubGVuZ3RoO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuYWN0aXZlRmlyc3RTdGVwKCk7XG5cbiAgICB0aGlzLnBvU3RlcHMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5jb250cm9sU3RlcHNTdGF0dXModGhpcy5wb1N0ZXBzLmZpcnN0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbHRlcmEgbyBzdGF0dXMgZG8gKnN0ZXAqIHBhcmEgYXRpdm8uXG4gICAqXG4gICAqID4gRXN0ZSBtw6l0b2RvIMOpIHZhbGlkbyBhcGVuYXMgcGFyYSBhcyBpbXBsZW1lbnRhw6fDtWVzIHF1ZSB1dGlsaXphbSBvIGNvbXBvbmVudGUgWyoqcG8tc3RlcCoqXSgvZG9jdW1lbnRhdGlvbi9wby1zdGVwKS5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IMONbmRpY2UgZG8gYHBvLXN0ZXBgIHF1ZSBzZSBkZXNlamEgYXRpdmFyLlxuICAgKi9cbiAgYWN0aXZlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudXNlUG9TdGVwcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0ZXBzQXJyYXkgPSB0aGlzLmdldFBvU3RlcHMoKTtcblxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gc3RlcHNBcnJheS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGVwID0gc3RlcHNBcnJheVtpbmRleF07XG4gICAgdGhpcy5jaGFuZ2VTdGVwKGluZGV4LCBzdGVwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdGl2YSBvIHByaW1laXJvICpzdGVwKi5cbiAgICpcbiAgICogPiBFc3RlIG3DqXRvZG8gw6kgdmFsaWRvIGFwZW5hcyBwYXJhIGFzIGltcGxlbWVudGHDp8O1ZXMgcXVlIHV0aWxpemFtIG8gY29tcG9uZW50ZSBbKipwby1zdGVwKipdKC9kb2N1bWVudGF0aW9uL3BvLXN0ZXApLlxuICAgKi9cbiAgZmlyc3QoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnVzZVBvU3RlcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdFN0ZXAgPSB0aGlzLnBvU3RlcHMuZmlyc3Q7XG4gICAgY29uc3QgZmlyc3RTdGVwSW5kZXggPSAwO1xuXG4gICAgdGhpcy5jaGFuZ2VTdGVwKGZpcnN0U3RlcEluZGV4LCBmaXJzdFN0ZXApO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0aXZhIG8gcHLDs3hpbW8gKnN0ZXAqLlxuICAgKlxuICAgKiA+IEVzdGUgbcOpdG9kbyDDqSB2YWxpZG8gYXBlbmFzIHBhcmEgYXMgaW1wbGVtZW50YcOnw7VlcyBxdWUgdXRpbGl6YW0gbyBjb21wb25lbnRlIFsqKnBvLXN0ZXAqKl0oL2RvY3VtZW50YXRpb24vcG8tc3RlcCkuXG4gICAqL1xuICBuZXh0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy51c2VQb1N0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBzdGVwcywgc3RlcEluZGV4IH0gPSB0aGlzLmdldFN0ZXBzQW5kSW5kZXgodGhpcy5jdXJyZW50QWN0aXZlU3RlcCk7XG4gICAgY29uc3QgbmV4dEluZGV4ID0gc3RlcEluZGV4ICsgMTtcblxuICAgIGlmIChuZXh0SW5kZXggPj0gc3RlcHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV4dFN0ZXAgPSBzdGVwc1tuZXh0SW5kZXhdO1xuXG4gICAgdGhpcy5jaGFuZ2VTdGVwKG5leHRJbmRleCwgbmV4dFN0ZXApO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0aXZhIG8gKnN0ZXAqIGFudGVyaW9yLlxuICAgKlxuICAgKiA+IEVzdGUgbcOpdG9kbyDDqSB2YWxpZG8gYXBlbmFzIHBhcmEgYXMgaW1wbGVtZW50YcOnw7VlcyBxdWUgdXRpbGl6YW0gbyBjb21wb25lbnRlIFsqKnBvLXN0ZXAqKl0oL2RvY3VtZW50YXRpb24vcG8tc3RlcCkuXG4gICAqL1xuICBwcmV2aW91cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudXNlUG9TdGVwcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc3RlcHMsIHN0ZXBJbmRleCB9ID0gdGhpcy5nZXRTdGVwc0FuZEluZGV4KHRoaXMuY3VycmVudEFjdGl2ZVN0ZXApO1xuICAgIGNvbnN0IHByZXZpb3VzSW5kZXggPSBzdGVwSW5kZXggLSAxO1xuXG4gICAgaWYgKHByZXZpb3VzSW5kZXggPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNTdGVwID0gc3RlcHNbcHJldmlvdXNJbmRleF07XG5cbiAgICB0aGlzLmNoYW5nZVN0ZXAocHJldmlvdXNJbmRleCwgcHJldmlvdXNTdGVwKTtcbiAgfVxuXG4gIGNoYW5nZVN0ZXAoc3RlcEluZGV4OiBudW1iZXIsIHN0ZXA/OiBQb1N0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmFsbG93TmV4dFN0ZXAoc3RlcEluZGV4KVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUobmV4dFN0ZXBBbGxvd2VkID0+IHtcbiAgICAgICAgaWYgKG5leHRTdGVwQWxsb3dlZCkge1xuICAgICAgICAgIGNvbnN0IGlzRGlmZmVyZW50U3RlcCA9ICF0aGlzLmN1cnJlbnRBY3RpdmVTdGVwIHx8IHN0ZXAuaWQgIT09IHRoaXMuY3VycmVudEFjdGl2ZVN0ZXAuaWQ7XG5cbiAgICAgICAgICBpZiAodGhpcy51c2VQb1N0ZXBzICYmIGlzRGlmZmVyZW50U3RlcCkge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sU3RlcHNTdGF0dXMoc3RlcCk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlU3RlcC5lbWl0KHN0ZXApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudXNlUG9TdGVwcyAmJiBzdGVwSW5kZXggIT09IHRoaXMuY3VycmVudFN0ZXBJbmRleCkge1xuICAgICAgICAgICAgLy8gaWYgcGFyYSB0cmF0YW1lbnRvIGRvIG1vZGVsbyBhbnRpZ28gZG8gcG8tc3RlcHBlclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZVN0ZXAuZW1pdChzdGVwSW5kZXggKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgZ2V0TmV4dFBvU3RlcHMoc3RlcEluZGV4OiBudW1iZXIpOiBQb1N0ZXBDb21wb25lbnQge1xuICAgIGNvbnN0IHBvU3RlcHMgPSB0aGlzLmdldFBvU3RlcHMoKTtcbiAgICByZXR1cm4gcG9TdGVwc1tzdGVwSW5kZXggKyAxXTtcbiAgfVxuXG4gIGdldE5leHRTdGVwcyhzdGVwSW5kZXg6IG51bWJlcik6IFBvU3RlcHBlckl0ZW0ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzW3N0ZXBJbmRleCArIDFdO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNQb1N0ZXBzKHN0ZXBJbmRleDogbnVtYmVyKTogUG9TdGVwQ29tcG9uZW50IHtcbiAgICBjb25zdCBwb1N0ZXBzID0gdGhpcy5nZXRQb1N0ZXBzKCk7XG4gICAgcmV0dXJuIHBvU3RlcHNbc3RlcEluZGV4IC0gMV07XG4gIH1cblxuICBnZXRQcmV2aW91c1N0ZXBzKHN0ZXBJbmRleDogbnVtYmVyKTogUG9TdGVwcGVySXRlbSB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHNbc3RlcEluZGV4IC0gMV07XG4gIH1cblxuICBpc0Rhc2hlZEJvcmRlcihzdGVwOiBQb1N0ZXBDb21wb25lbnQsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBuZXh0U3RlcFBvU3RlcHMgPSB0aGlzLmdldE5leHRQb1N0ZXBzKGluZGV4KTtcbiAgICBjb25zdCBuZXh0U3RlcFN0ZXBzID0gdGhpcy5nZXROZXh0U3RlcHMoaW5kZXgpO1xuICAgIHJldHVybiAoXG4gICAgICAhKHN0ZXAuc3RhdHVzID09PSAnYWN0aXZlJyAmJiAobmV4dFN0ZXBQb1N0ZXBzPy5zdGF0dXMgPT09ICdkb25lJyB8fCBuZXh0U3RlcFN0ZXBzPy5zdGF0dXMgPT09ICdkb25lJykpICYmXG4gICAgICBzdGVwLnN0YXR1cyAhPT0gJ2RvbmUnICYmXG4gICAgICAodGhpcy51c2VQb1N0ZXBzIHx8IHRoaXMuc2VxdWVudGlhbClcbiAgICApO1xuICB9XG5cbiAgaXNEYXNoZWRCb3JkZXJUb3Aoc3RlcDogUG9TdGVwQ29tcG9uZW50LCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcHJldmlvdXNTdGVwUG9TdGVwcyA9IHRoaXMuZ2V0UHJldmlvdXNQb1N0ZXBzKGluZGV4KTtcbiAgICBjb25zdCBnZXRQcmV2aW91c1N0ZXBzID0gdGhpcy5nZXRQcmV2aW91c1N0ZXBzKGluZGV4KTtcblxuICAgIHJldHVybiAoXG4gICAgICAoKHN0ZXAuc3RhdHVzID09PSAnZG9uZScgJiYgcHJldmlvdXNTdGVwUG9TdGVwcz8uc3RhdHVzICE9PSAnZG9uZScgJiYgcHJldmlvdXNTdGVwUG9TdGVwcz8uc3RhdHVzICE9PSAnYWN0aXZlJykgfHxcbiAgICAgICAgc3RlcC5zdGF0dXMgIT09ICdkb25lJykgJiZcbiAgICAgICgoc3RlcC5zdGF0dXMgPT09ICdkb25lJyAmJiBnZXRQcmV2aW91c1N0ZXBzPy5zdGF0dXMgIT09ICdkb25lJyAmJiBnZXRQcmV2aW91c1N0ZXBzPy5zdGF0dXMgIT09ICdhY3RpdmUnKSB8fFxuICAgICAgICBzdGVwLnN0YXR1cyAhPT0gJ2RvbmUnKSAmJlxuICAgICAgKHN0ZXAuc3RhdHVzICE9PSAnYWN0aXZlJyB8fCAoc3RlcC5zdGF0dXMgPT09ICdhY3RpdmUnICYmIGdldFByZXZpb3VzU3RlcHM/LnN0YXR1cyA9PT0gJ2Vycm9yJykpICYmXG4gICAgICAoKHN0ZXAuc3RhdHVzID09PSAnZGVmYXVsdCcgJiYgZ2V0UHJldmlvdXNTdGVwcz8uc3RhdHVzICE9PSAnZG9uZScpIHx8XG4gICAgICAgIHN0ZXAuc3RhdHVzID09PSAnZGlzYWJsZWQnIHx8XG4gICAgICAgIGdldFByZXZpb3VzU3RlcHM/LnN0YXR1cyAhPT0gJ2RvbmUnKSAmJlxuICAgICAgcHJldmlvdXNTdGVwUG9TdGVwcz8uc3RhdHVzICE9PSAnZG9uZScgJiZcbiAgICAgICh0aGlzLnVzZVBvU3RlcHMgfHwgdGhpcy5zZXF1ZW50aWFsKVxuICAgICk7XG4gIH1cblxuICBvblN0ZXBBY3RpdmUoc3RlcDogUG9TdGVwQ29tcG9uZW50KSB7XG4gICAgdGhpcy5jdXJyZW50QWN0aXZlU3RlcCA9IHN0ZXA7XG5cbiAgICBjb25zdCB7IHN0ZXBJbmRleCB9ID0gdGhpcy5nZXRTdGVwc0FuZEluZGV4KHRoaXMuY3VycmVudEFjdGl2ZVN0ZXApO1xuXG4gICAgdGhpcy5wb1N0ZXBzLmZvckVhY2goKHN0ZXBDaGlsZCwgaSkgPT4ge1xuICAgICAgaWYgKGkgPCBzdGVwSW5kZXgpIHtcbiAgICAgICAgc3RlcENoaWxkLnN0YXR1cyA9IFBvU3RlcHBlclN0YXR1cy5Eb25lO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdHJhY2tCeUZuKHN0ZXA6IFBvU3RlcENvbXBvbmVudCkge1xuICAgIHJldHVybiBzdGVwLmlkO1xuICB9XG5cbiAgcHJpdmF0ZSBhY3RpdmVGaXJzdFN0ZXAoKSB7XG4gICAgY29uc3QgaGFzU3RlcEFjdGl2ZSA9IHRoaXMucG9TdGVwcy5zb21lKHBvU3RlcCA9PiBwb1N0ZXAuc3RhdHVzID09PSBQb1N0ZXBwZXJTdGF0dXMuQWN0aXZlKTtcblxuICAgIGlmICh0aGlzLnVzZVBvU3RlcHMgJiYgIWhhc1N0ZXBBY3RpdmUpIHtcbiAgICAgIHRoaXMuY2hhbmdlU3RlcCgwLCB0aGlzLnBvU3RlcHMuZmlyc3QpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWxsb3dOZXh0U3RlcChuZXh0U3RlcEluZGV4OiBudW1iZXIpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuc2VxdWVudGlhbCkge1xuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc1N0ZXBXaXRoQ2FuQWN0aXZlTmV4dFN0ZXAoKSAmJiB0aGlzLmhhc0RlZmF1bHRCZWZvcmVEb25lKG5leHRTdGVwSW5kZXgpKSB7XG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgIH1cblxuICAgIGNvbnN0IGlzQWxsb3dOZXh0U3RlcCQgPSB0aGlzLmNoZWNrQWxsb3dOZXh0U3RlcChuZXh0U3RlcEluZGV4KTtcblxuICAgIHJldHVybiB0eXBlb2YgaXNBbGxvd05leHRTdGVwJCA9PT0gJ2Jvb2xlYW4nID8gb2YoaXNBbGxvd05leHRTdGVwJCkgOiBpc0FsbG93TmV4dFN0ZXAkO1xuICB9XG5cbiAgcHJpdmF0ZSBjYW5BY3RpdmVOZXh0U3RlcChjdXJyZW50QWN0aXZlU3RlcCA9IDxQb1N0ZXBDb21wb25lbnQ+e30sIG5leHRTdGVwSW5kZXg/OiBudW1iZXIpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBpc0N1cnJlbnRTdGVwID0gdGhpcy5pc0N1cnJlbnRTdGVwKG5leHRTdGVwSW5kZXgpO1xuXG4gICAgaWYgKCFjdXJyZW50QWN0aXZlU3RlcC5jYW5BY3RpdmVOZXh0U3RlcCkge1xuICAgICAgaWYgKCFpc0N1cnJlbnRTdGVwKSB7XG4gICAgICAgIGN1cnJlbnRBY3RpdmVTdGVwLnN0YXR1cyA9IFBvU3RlcHBlclN0YXR1cy5Eb25lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbkFjdGl2ZU5leHRTdGVwJCA9IHRoaXMuZ2V0Q2FuQWN0aXZlTmV4dFN0ZXBPYnNlcnZhYmxlKGN1cnJlbnRBY3RpdmVTdGVwKTtcblxuICAgIHJldHVybiBvZih0aGlzLmlzQmVmb3JlU3RlcChuZXh0U3RlcEluZGV4KSkucGlwZShcbiAgICAgIG1lcmdlTWFwKGlzQmVmb3JlID0+IHtcbiAgICAgICAgaWYgKGlzQmVmb3JlICYmICFpc0N1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbkFjdGl2ZU5leHRTdGVwJC5waXBlKFxuICAgICAgICAgICAgdGFwKGlzQ2FuQWN0aXZlTmV4dFN0ZXAgPT4ge1xuICAgICAgICAgICAgICBjdXJyZW50QWN0aXZlU3RlcC5zdGF0dXMgPSBpc0NhbkFjdGl2ZU5leHRTdGVwID8gUG9TdGVwcGVyU3RhdHVzLkRvbmUgOiBQb1N0ZXBwZXJTdGF0dXMuRGVmYXVsdDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+IHRydWUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gY2FuQWN0aXZlTmV4dFN0ZXAkO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRhcChpc0NhbkFjdGl2ZU5leHRTdGVwID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQmVmb3JlU3RlcChuZXh0U3RlcEluZGV4KSAmJiAhaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlU3RlcFN0YXR1cyhjdXJyZW50QWN0aXZlU3RlcCwgaXNDYW5BY3RpdmVOZXh0U3RlcCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICBjdXJyZW50QWN0aXZlU3RlcC5zdGF0dXMgPSBQb1N0ZXBwZXJTdGF0dXMuRXJyb3I7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQWxsb3dOZXh0U3RlcChuZXh0U3RlcEluZGV4OiBudW1iZXIpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy51c2VQb1N0ZXBzXG4gICAgICA/IHRoaXMuY2FuQWN0aXZlTmV4dFN0ZXAodGhpcy5jdXJyZW50QWN0aXZlU3RlcCwgbmV4dFN0ZXBJbmRleClcbiAgICAgIDogb2YodGhpcy5zdGVwcy5zbGljZSh0aGlzLnN0ZXAsIG5leHRTdGVwSW5kZXgpLmV2ZXJ5KHN0ZXAgPT4gc3RlcC5zdGF0dXMgPT09IFBvU3RlcHBlclN0YXR1cy5Eb25lKSk7XG4gIH1cblxuICBwcml2YXRlIGdldENhbkFjdGl2ZU5leHRTdGVwT2JzZXJ2YWJsZShjdXJyZW50QWN0aXZlU3RlcDogUG9TdGVwQ29tcG9uZW50KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgY2FuQWN0aXZlTmV4dFN0ZXAgPSBjdXJyZW50QWN0aXZlU3RlcC5jYW5BY3RpdmVOZXh0U3RlcChjdXJyZW50QWN0aXZlU3RlcCk7XG4gICAgcmV0dXJuIGNhbkFjdGl2ZU5leHRTdGVwIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSA/IGNhbkFjdGl2ZU5leHRTdGVwIDogb2YoY2FuQWN0aXZlTmV4dFN0ZXApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNEZWZhdWx0QmVmb3JlRG9uZShuZXh0U3RlcEluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRQb1N0ZXBzKClcbiAgICAgIC5zbGljZSh0aGlzLnN0ZXAsIG5leHRTdGVwSW5kZXgpXG4gICAgICAuc29tZShzdGVwID0+IHN0ZXAuc3RhdHVzID09PSBQb1N0ZXBwZXJTdGF0dXMuRGVmYXVsdCk7XG4gIH1cblxuICBwcml2YXRlIGlzQ3VycmVudFN0ZXAoc3RlcEluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jdXJyZW50QWN0aXZlU3RlcCAmJiB0aGlzLmdldFBvU3RlcHMoKS5maW5kSW5kZXgoc3RlcCA9PiBzdGVwLmlkID09PSB0aGlzLmN1cnJlbnRBY3RpdmVTdGVwLmlkKSA9PT0gc3RlcEluZGV4XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY29udHJvbFN0ZXBzU3RhdHVzKHN0ZXA6IFBvU3RlcENvbXBvbmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVzZVBvU3RlcHMpIHtcbiAgICAgIGNvbnN0IHsgc3RlcHMsIHN0ZXBJbmRleDogY3VycmVudFN0ZXBJbmRleCB9ID0gdGhpcy5nZXRTdGVwc0FuZEluZGV4KHN0ZXApO1xuXG4gICAgICBpZiAoIXRoaXMuaGFzU3RlcFdpdGhDYW5BY3RpdmVOZXh0U3RlcCgpKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUHJldmlvdXNTdGVwU3RhdHVzKHN0ZXBzLCBjdXJyZW50U3RlcEluZGV4KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3RlcEFzQWN0aXZlKHN0ZXApO1xuXG4gICAgICB0aGlzLmhhbmRsZU5leHRTdGVwKHN0ZXBzLCBjdXJyZW50U3RlcEluZGV4KTtcblxuICAgICAgdGhpcy5wcmV2aW91c0FjdGl2ZVN0ZXBJbmRleCA9IGN1cnJlbnRTdGVwSW5kZXg7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZURpdmlkZXJQb3NpdGlvbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0ZXBTaXplID49IDI0ICYmIHRoaXMuc3RlcFNpemUgPD0gNjQgPyB0aGlzLnN0ZXBTaXplIDogMjQ7XG4gIH1cblxuICBwcml2YXRlIGdldFN0ZXBwZXJTdGF0dXNCeUNhbkFjdGl2ZShjYW5BY3RpdmVOZXh0U3RlcDogYm9vbGVhbik6IFBvU3RlcHBlclN0YXR1cyB7XG4gICAgcmV0dXJuIGNhbkFjdGl2ZU5leHRTdGVwID8gUG9TdGVwcGVyU3RhdHVzLkRvbmUgOiBQb1N0ZXBwZXJTdGF0dXMuRXJyb3I7XG4gIH1cblxuICBwcml2YXRlIGdldFN0ZXBzQW5kSW5kZXgoc3RlcDogUG9TdGVwQ29tcG9uZW50ID0gPGFueT57fSk6IHsgc3RlcHM6IEFycmF5PFBvU3RlcENvbXBvbmVudD47IHN0ZXBJbmRleDogbnVtYmVyIH0ge1xuICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5nZXRQb1N0ZXBzKCk7XG4gICAgY29uc3Qgc3RlcEluZGV4ID0gc3RlcHMuZmluZEluZGV4KHBvU3RlcCA9PiBwb1N0ZXAuaWQgPT09IHN0ZXAuaWQpO1xuXG4gICAgcmV0dXJuIHsgc3RlcHMsIHN0ZXBJbmRleCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQb1N0ZXBzKCk6IEFycmF5PFBvU3RlcENvbXBvbmVudD4ge1xuICAgIHJldHVybiB0aGlzLnBvU3RlcHMudG9BcnJheSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOZXh0U3RlcChzdGVwczogQXJyYXk8UG9TdGVwQ29tcG9uZW50PiwgY3VycmVudFN0ZXBJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dFN0ZXAgPSBzdGVwc1tjdXJyZW50U3RlcEluZGV4ICsgMV07XG4gICAgY29uc3QgY3VycmVudFN0ZXAgPSBzdGVwc1tjdXJyZW50U3RlcEluZGV4XTtcbiAgICBjb25zdCBpc05leHRTdGVwRGlzYWJsZWQgPSBuZXh0U3RlcCAmJiBuZXh0U3RlcC5zdGF0dXMgPT09IFBvU3RlcHBlclN0YXR1cy5EaXNhYmxlZDtcblxuICAgIGlmICghdGhpcy5oYXNTdGVwV2l0aENhbkFjdGl2ZU5leHRTdGVwKCkgJiYgaXNOZXh0U3RlcERpc2FibGVkKSB7XG4gICAgICB0aGlzLnNldE5leHRTdGVwQXNEZWZhdWx0KHN0ZXBzW2N1cnJlbnRTdGVwSW5kZXhdKTtcbiAgICAgIGlmICh0aGlzLmlzQmVmb3JlU3RlcChjdXJyZW50U3RlcEluZGV4KSkge1xuICAgICAgICB0aGlzLnNldEZpbmFsU3RlcHBlcnNBc0Rpc2FibGVkKGN1cnJlbnRTdGVwSW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5oYXNTdGVwV2l0aENhbkFjdGl2ZU5leHRTdGVwKCkgJiYgaXNOZXh0U3RlcERpc2FibGVkKSB7XG4gICAgICB0aGlzLnNldE5leHRTdGVwQXNEZWZhdWx0KGN1cnJlbnRTdGVwKTtcbiAgICAgIHRoaXMuc2V0RmluYWxTdGVwcGVyc0FzRGlzYWJsZWQoY3VycmVudFN0ZXBJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYXNTdGVwV2l0aENhbkFjdGl2ZU5leHRTdGVwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldFBvU3RlcHMoKS5zb21lKHN0ZXAgPT4gc3RlcC5jYW5BY3RpdmVOZXh0U3RlcCAmJiBzdGVwLmNhbkFjdGl2ZU5leHRTdGVwKHN0ZXApKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNCZWZvcmVTdGVwKHN0ZXBJbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY3VycmVudEFjdGl2ZVN0ZXBJbmRleCA9ICgpID0+IHRoaXMuZ2V0UG9TdGVwcygpLmZpbmRJbmRleChzdGVwID0+IHN0ZXAuaWQgPT09IHRoaXMuY3VycmVudEFjdGl2ZVN0ZXAuaWQpO1xuXG4gICAgcmV0dXJuICEhdGhpcy5jdXJyZW50QWN0aXZlU3RlcCAmJiBjdXJyZW50QWN0aXZlU3RlcEluZGV4KCkgPj0gc3RlcEluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGaW5hbFN0ZXBwZXJzQXNEaXNhYmxlZChzdGVwSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZ2V0UG9TdGVwcygpXG4gICAgICAuZmlsdGVyKChzdGVwLCBpbmRleCkgPT4gc3RlcCAmJiBpbmRleCA+PSBzdGVwSW5kZXggKyAyKVxuICAgICAgLmZvckVhY2goc3RlcCA9PiAoc3RlcC5zdGF0dXMgPSBQb1N0ZXBwZXJTdGF0dXMuRGlzYWJsZWQpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U3RlcEFzQWN0aXZlKHN0ZXA6IFBvU3RlcENvbXBvbmVudCk6IHZvaWQge1xuICAgIHN0ZXAuc3RhdHVzID0gUG9TdGVwcGVyU3RhdHVzLkFjdGl2ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TmV4dFN0ZXBBc0RlZmF1bHQoY3VycmVudFN0ZXA6IFBvU3RlcENvbXBvbmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHsgc3RlcHMsIHN0ZXBJbmRleCB9ID0gdGhpcy5nZXRTdGVwc0FuZEluZGV4KGN1cnJlbnRTdGVwKTtcbiAgICBjb25zdCBuZXh0SW5kZXggPSBzdGVwSW5kZXggKyAxO1xuXG4gICAgaWYgKG5leHRJbmRleCA8IHRoaXMucG9TdGVwcy5sZW5ndGgpIHtcbiAgICAgIHN0ZXBzW25leHRJbmRleF0uc3RhdHVzID0gUG9TdGVwcGVyU3RhdHVzLkRlZmF1bHQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQcmV2aW91c1N0ZXBTdGF0dXMoc3RlcHM6IEFycmF5PFBvU3RlcENvbXBvbmVudD4sIGN1cnJlbnRTdGVwSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZXZpb3VzQWN0aXZlU3RlcEluZGV4ICE9PSBudWxsICYmIHRoaXMucHJldmlvdXNBY3RpdmVTdGVwSW5kZXggIT09IGN1cnJlbnRTdGVwSW5kZXgpIHtcbiAgICAgIHN0ZXBzW3RoaXMucHJldmlvdXNBY3RpdmVTdGVwSW5kZXhdLnN0YXR1cyA9IFBvU3RlcHBlclN0YXR1cy5Eb25lO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RlcFN0YXR1cyhjdXJyZW50QWN0aXZlU3RlcDogUG9TdGVwQ29tcG9uZW50LCBpc0NhbkFjdGl2ZU5leHRTdGVwOiBib29sZWFuKTogdm9pZCB7XG4gICAgY3VycmVudEFjdGl2ZVN0ZXAuc3RhdHVzID0gdGhpcy5nZXRTdGVwcGVyU3RhdHVzQnlDYW5BY3RpdmUoaXNDYW5BY3RpdmVOZXh0U3RlcCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwby1zdGVwcGVyLXt7IG9yaWVudGF0aW9uIH19XCI+XG4gIDxkaXYgcm9sZT1cInRhYmxpc3RcIiBjbGFzcz1cInBvLXN0ZXBwZXItY29udGFpbmVyLXt7IG9yaWVudGF0aW9uIH19XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwTGlzdDsgbGV0IGluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvLXN0ZXBwZXItc3RlcC13cmFwcGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cImluZGV4ID4gMFwiXG4gICAgICAgICAgW2NsYXNzLnBvLXN0ZXBwZXItc3RlcC1iYXItdG9wXT1cImFsaWduQ2VudGVyICYmIGlzVmVydGljYWxPcmllbnRhdGlvblwiXG4gICAgICAgICAgW2NsYXNzLnBvLXN0ZXBwZXItc3RlcC1kYXNoZWQtYm9yZGVyLXZlcnRpY2FsXT1cIlxuICAgICAgICAgICAgYWxpZ25DZW50ZXIgJiYgaXNWZXJ0aWNhbE9yaWVudGF0aW9uICYmIGlzRGFzaGVkQm9yZGVyVG9wKHN0ZXAsIGluZGV4KVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiXG4gICAgICAgICAgICBpc1ZlcnRpY2FsT3JpZW50YXRpb24gPyAoIXN0ZXBTaXplQ2lyY2xlIHx8IHN0ZXBTaXplQ2lyY2xlID09PSAyNCA/IDE2IDogc3RlcFNpemVDaXJjbGUgLyAyKSA6IG51bGxcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgPHBvLXN0ZXBwZXItc3RlcFxuICAgICAgICAgIFtjbGFzcy5wby1zdGVwcGVyLXN0ZXAtcG9zaXRpb24tY2VudGVyXT1cImFsaWduQ2VudGVyXCJcbiAgICAgICAgICBbcC1hbGlnbi1jZW50ZXJdPVwiYWxpZ25DZW50ZXJcIlxuICAgICAgICAgIFtwLWNpcmNsZS1jb250ZW50XT1cImluZGV4ICsgMVwiXG4gICAgICAgICAgW3AtbGFiZWxdPVwic3RlcC5sYWJlbFwiXG4gICAgICAgICAgW3Atb3JpZW50YXRpb25dPVwib3JpZW50YXRpb25cIlxuICAgICAgICAgIFtwLXN0YXR1c109XCJzdGVwLnN0YXR1c1wiXG4gICAgICAgICAgW3Atc3RlcC1pY29uc109XCJzdGVwSWNvbnNcIlxuICAgICAgICAgIFtwLXN0ZXAtc2l6ZV09XCJzdGVwU2l6ZVwiXG4gICAgICAgICAgW3AtbmV4dC1zdGF0dXNdPVwicG9TdGVwcy5nZXQoaW5kZXggKyAxKT8uc3RhdHVzXCJcbiAgICAgICAgICBbcC1pY29uLWRlZmF1bHRdPVwic3RlcC5pY29uRGVmYXVsdFwiXG4gICAgICAgICAgW3Atc3RlcC1pY29uLWFjdGl2ZV09XCJpY29uQWN0aXZlXCJcbiAgICAgICAgICBbcC1zdGVwLWljb24tZG9uZV09XCJpY29uRG9uZVwiXG4gICAgICAgICAgW3AtdmVydGljYWwtb3JpZW50YXRpb25dPVwiaXNWZXJ0aWNhbE9yaWVudGF0aW9uXCJcbiAgICAgICAgICBbcC1kaXNhYmxlLWNsaWNrXT1cImRpc2FibGVkQ2xpY2tcIlxuICAgICAgICAgIChwLWFjdGl2YXRlZCk9XCJvblN0ZXBBY3RpdmUoc3RlcClcIlxuICAgICAgICAgIChwLWNsaWNrKT1cImNoYW5nZVN0ZXAoaW5kZXgsIHN0ZXApXCJcbiAgICAgICAgICAocC1lbnRlcik9XCJjaGFuZ2VTdGVwKGluZGV4LCBzdGVwKVwiXG4gICAgICAgID5cbiAgICAgICAgPC9wby1zdGVwcGVyLXN0ZXA+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiaW5kZXggPCBzdGVwTGlzdC5sZW5ndGggLSAxXCJcbiAgICAgICAgICBbY2xhc3MucG8tc3RlcHBlci1zdGVwLWJhci1ib3R0b21dPVwiaXNWZXJ0aWNhbE9yaWVudGF0aW9uXCJcbiAgICAgICAgICBbY2xhc3MucG8tc3RlcHBlci1zdGVwLWJhci1ib3R0b20tY2VudGVyXT1cImFsaWduQ2VudGVyICYmIGlzVmVydGljYWxPcmllbnRhdGlvblwiXG4gICAgICAgICAgW2NsYXNzLnBvLXN0ZXBwZXItc3RlcC1iYXItcmlnaHRdPVwiIWlzVmVydGljYWxPcmllbnRhdGlvblwiXG4gICAgICAgICAgW2NsYXNzLnBvLXN0ZXBwZXItc3RlcC1iYXItY2VudGVyXT1cImFsaWduQ2VudGVyICYmICFpc1ZlcnRpY2FsT3JpZW50YXRpb25cIlxuICAgICAgICAgIFtjbGFzcy5wby1zdGVwcGVyLXN0ZXAtZGFzaGVkLWJvcmRlcl09XCIhaXNWZXJ0aWNhbE9yaWVudGF0aW9uICYmIGlzRGFzaGVkQm9yZGVyKHN0ZXAsIGluZGV4KVwiXG4gICAgICAgICAgW2NsYXNzLnBvLXN0ZXBwZXItc3RlcC1kYXNoZWQtYm9yZGVyLXZlcnRpY2FsXT1cImlzVmVydGljYWxPcmllbnRhdGlvbiAmJiBpc0Rhc2hlZEJvcmRlcihzdGVwLCBpbmRleClcIlxuICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiIWlzVmVydGljYWxPcmllbnRhdGlvbiA/IChzdGVwU2l6ZUNpcmNsZSA9PT0gMjQgPyAxNiA6IHN0ZXBTaXplQ2lyY2xlIC8gMikgOiBudWxsXCJcbiAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcbiAgICAgICAgICAgIGlzVmVydGljYWxPcmllbnRhdGlvbiA/ICghc3RlcFNpemVDaXJjbGUgfHwgc3RlcFNpemVDaXJjbGUgPT09IDI0ID8gMTYgOiBzdGVwU2l6ZUNpcmNsZSAvIDIpIDogbnVsbFxuICAgICAgICAgIFwiXG4gICAgICAgID48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwidXNlUG9TdGVwc1wiIGNsYXNzPVwicG8tc3RlcHBlci1jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19