@taiga-ui/kit 3.18.0-dev.main-b65667d → 3.18.0-dev.main-a12f1fc

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 (40) hide show
  1. package/bundles/taiga-ui-kit-components-checkbox.umd.js +1 -1
  2. package/bundles/taiga-ui-kit-components-checkbox.umd.js.map +1 -1
  3. package/bundles/taiga-ui-kit-components-input-count.umd.js +9 -11
  4. package/bundles/taiga-ui-kit-components-input-count.umd.js.map +1 -1
  5. package/bundles/taiga-ui-kit-components-input-range.umd.js +16 -43
  6. package/bundles/taiga-ui-kit-components-input-range.umd.js.map +1 -1
  7. package/bundles/taiga-ui-kit-components-input-tag.umd.js +9 -6
  8. package/bundles/taiga-ui-kit-components-input-tag.umd.js.map +1 -1
  9. package/bundles/taiga-ui-kit-components-text-area.umd.js +9 -6
  10. package/bundles/taiga-ui-kit-components-text-area.umd.js.map +1 -1
  11. package/bundles/taiga-ui-kit-components-tree.umd.js +8 -2
  12. package/bundles/taiga-ui-kit-components-tree.umd.js.map +1 -1
  13. package/components/input-count/input-count.component.d.ts +4 -5
  14. package/components/input-range/input-range.component.d.ts +3 -7
  15. package/components/input-range/input-range.module.d.ts +1 -1
  16. package/components/input-tag/input-tag.component.d.ts +3 -3
  17. package/components/text-area/text-area.component.d.ts +3 -3
  18. package/components/tree/components/tree/tree.component.d.ts +1 -0
  19. package/components/tree/components/tree-item/tree-item.component.d.ts +1 -0
  20. package/esm2015/components/checkbox/checkbox.component.js +1 -1
  21. package/esm2015/components/input-count/input-count.component.js +11 -13
  22. package/esm2015/components/input-range/input-range.component.js +9 -33
  23. package/esm2015/components/input-range/input-range.module.js +9 -6
  24. package/esm2015/components/input-tag/input-tag.component.js +7 -8
  25. package/esm2015/components/text-area/text-area.component.js +7 -8
  26. package/esm2015/components/tree/components/tree/tree.component.js +6 -3
  27. package/esm2015/components/tree/components/tree-item/tree-item.component.js +4 -1
  28. package/fesm2015/taiga-ui-kit-components-checkbox.js +1 -1
  29. package/fesm2015/taiga-ui-kit-components-checkbox.js.map +1 -1
  30. package/fesm2015/taiga-ui-kit-components-input-count.js +10 -12
  31. package/fesm2015/taiga-ui-kit-components-input-count.js.map +1 -1
  32. package/fesm2015/taiga-ui-kit-components-input-range.js +15 -36
  33. package/fesm2015/taiga-ui-kit-components-input-range.js.map +1 -1
  34. package/fesm2015/taiga-ui-kit-components-input-tag.js +6 -7
  35. package/fesm2015/taiga-ui-kit-components-input-tag.js.map +1 -1
  36. package/fesm2015/taiga-ui-kit-components-text-area.js +6 -7
  37. package/fesm2015/taiga-ui-kit-components-text-area.js.map +1 -1
  38. package/fesm2015/taiga-ui-kit-components-tree.js +8 -2
  39. package/fesm2015/taiga-ui-kit-components-tree.js.map +1 -1
  40. package/package.json +1 -1
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
4
  import { AbstractTuiNullableControl, TUI_IS_MOBILE, tuiAsControl, tuiAsFocusableItemAccessor, tuiClamp, tuiDefaultProp, tuiIsNativeFocused, tuiIsPresent, tuiPure, } from '@taiga-ui/cdk';
5
- import { TUI_NUMBER_FORMAT, TUI_TEXTFIELD_APPEARANCE, TUI_TEXTFIELD_SIZE, tuiCreateNumberMask, tuiFormatNumber, TuiPrimitiveTextfieldComponent, } from '@taiga-ui/core';
5
+ import { TEXTFIELD_CONTROLLER_PROVIDER, TUI_NUMBER_FORMAT, TUI_TEXTFIELD_WATCHED_CONTROLLER, tuiCreateNumberMask, tuiFormatNumber, TuiPrimitiveTextfieldComponent, } from '@taiga-ui/core';
6
6
  import { TUI_PLUS_MINUS_TEXTS } from '@taiga-ui/kit/tokens';
7
7
  import { TUI_INPUT_COUNT_OPTIONS } from './input-count-options';
8
8
  import * as i0 from "@angular/core";
@@ -12,10 +12,9 @@ import * as i3 from "@angular/common";
12
12
  import * as i4 from "@angular/forms";
13
13
  import * as i5 from "rxjs";
14
14
  export class TuiInputCountComponent extends AbstractTuiNullableControl {
15
- constructor(control, changeDetectorRef, appearance, textfieldSize, minusTexts$, isMobile, options, numberFormat) {
15
+ constructor(control, changeDetectorRef, textfieldController, minusTexts$, isMobile, options, numberFormat) {
16
16
  super(control, changeDetectorRef);
17
- this.appearance = appearance;
18
- this.textfieldSize = textfieldSize;
17
+ this.textfieldController = textfieldController;
19
18
  this.minusTexts$ = minusTexts$;
20
19
  this.isMobile = isMobile;
21
20
  this.options = options;
@@ -40,7 +39,7 @@ export class TuiInputCountComponent extends AbstractTuiNullableControl {
40
39
  };
41
40
  }
42
41
  get buttonsHidden() {
43
- return this.hideButtons || this.appearance === 'table';
42
+ return this.hideButtons || this.textfieldController.appearance === 'table';
44
43
  }
45
44
  get iconUp() {
46
45
  return this.options.icons.up;
@@ -54,7 +53,7 @@ export class TuiInputCountComponent extends AbstractTuiNullableControl {
54
53
  : this.primitiveTextfield.nativeFocusableElement;
55
54
  }
56
55
  get size() {
57
- return this.textfieldSize.size;
56
+ return this.textfieldController.size;
58
57
  }
59
58
  get focused() {
60
59
  return tuiIsNativeFocused(this.nativeFocusableElement);
@@ -167,10 +166,11 @@ export class TuiInputCountComponent extends AbstractTuiNullableControl {
167
166
  return Number.isNaN(value) || !tuiIsPresent(value);
168
167
  }
169
168
  }
170
- TuiInputCountComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputCountComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_TEXTFIELD_APPEARANCE }, { token: TUI_TEXTFIELD_SIZE }, { token: TUI_PLUS_MINUS_TEXTS }, { token: TUI_IS_MOBILE }, { token: TUI_INPUT_COUNT_OPTIONS }, { token: TUI_NUMBER_FORMAT }], target: i0.ɵɵFactoryTarget.Component });
169
+ TuiInputCountComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputCountComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_TEXTFIELD_WATCHED_CONTROLLER }, { token: TUI_PLUS_MINUS_TEXTS }, { token: TUI_IS_MOBILE }, { token: TUI_INPUT_COUNT_OPTIONS }, { token: TUI_NUMBER_FORMAT }], target: i0.ɵɵFactoryTarget.Component });
171
170
  TuiInputCountComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputCountComponent, selector: "tui-input-count", inputs: { step: "step", min: "min", max: "max", hideButtons: "hideButtons", prefix: "prefix", postfix: "postfix" }, host: { properties: { "class._hide-buttons": "this.buttonsHidden", "attr.data-size": "this.size" } }, providers: [
172
171
  tuiAsFocusableItemAccessor(TuiInputCountComponent),
173
172
  tuiAsControl(TuiInputCountComponent),
173
+ TEXTFIELD_CONTROLLER_PROVIDER,
174
174
  ], viewQueries: [{ propertyName: "primitiveTextfield", first: true, predicate: TuiPrimitiveTextfieldComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<tui-primitive-textfield\n tuiValueAccessor\n class=\"t-textfield\"\n [pseudoFocus]=\"pseudoFocus\"\n [pseudoHover]=\"pseudoHover\"\n [pseudoActive]=\"pseudoActive\"\n [focusable]=\"focusable\"\n [nativeId]=\"nativeId\"\n [prefix]=\"prefix\"\n [postfix]=\"postfix\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [textMask]=\"getMask(min < 0)\"\n [invalid]=\"computedInvalid\"\n [value]=\"computedValue\"\n (valueChange)=\"onValueChange()\"\n (keydown)=\"onKeydown($event)\"\n (focusedChange)=\"onFocused($event)\"\n>\n <ng-content></ng-content>\n <ng-content\n select=\"input\"\n ngProjectAs=\"input\"\n ></ng-content>\n</tui-primitive-textfield>\n<ng-container *ngIf=\"!buttonsHidden\">\n <ng-container *ngIf=\"minusTexts$ | async as texts\">\n <section class=\"t-buttons\">\n <button\n tuiIconButton\n type=\"button\"\n automation-id=\"tui-input-count__plus-button\"\n size=\"s\"\n class=\"t-button t-button_plus\"\n [icon]=\"iconUp\"\n [appearance]=\"options.appearance\"\n [title]=\"texts[0]\"\n [disabled]=\"plusButtonDisabled\"\n [focusable]=\"false\"\n (mousedown)=\"onButtonMouseDown($event, plusButtonDisabled)\"\n (click)=\"increaseValue()\"\n ></button>\n <button\n tuiIconButton\n type=\"button\"\n automation-id=\"tui-input-count__minus-button\"\n size=\"s\"\n class=\"t-button t-button_minus\"\n [icon]=\"iconDown\"\n [appearance]=\"options.appearance\"\n [disabled]=\"minusButtonDisabled\"\n [focusable]=\"false\"\n [title]=\"texts[1]\"\n (mousedown)=\"onButtonMouseDown($event, minusButtonDisabled)\"\n (click)=\"decreaseValue()\"\n ></button>\n </section>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;font:var(--tui-font-text-s);border-radius:var(--tui-radius-m);height:var(--tui-height-m);color:var(--tui-text-01);text-align:left}:host._disabled{pointer-events:none}:host[data-size=l]{font:var(--tui-font-text-m);height:var(--tui-height-l)}.t-textfield{position:relative;border-radius:inherit;text-align:inherit;flex-grow:1;min-width:0}:host:not(._hide-buttons) .t-textfield{border-top-right-radius:0;border-bottom-right-radius:0}.t-buttons{display:flex;flex-direction:column;margin-left:.125rem;height:100%}.t-buttons .t-button{display:flex;width:calc(var(--tui-height-m) * .75);height:calc(50% - .0625rem)}.t-buttons .t-button_plus{margin-bottom:.125rem;border-radius:0 var(--tui-radius-m) 0 0}.t-buttons .t-button_minus{border-radius:0 0 var(--tui-radius-m)}:host[data-size=l] .t-buttons .t-button{width:calc(var(--tui-height-l) * .75)}\n"], components: [{ type: i1.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "filler", "iconCleaner", "readOnly", "invalid", "disabled", "prefix", "postfix", "value"], outputs: ["valueChange"] }, { type: i1.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }], directives: [{ type: i1.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { type: i2.TuiValueAccessorDirective, selector: "[tuiValueAccessor]" }, { type: i2.MaskedInputDirective, selector: "[textMask]", inputs: ["textMask"], exportAs: ["textMask"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
175
175
  __decorate([
176
176
  tuiDefaultProp()
@@ -203,6 +203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
203
203
  providers: [
204
204
  tuiAsFocusableItemAccessor(TuiInputCountComponent),
205
205
  tuiAsControl(TuiInputCountComponent),
206
+ TEXTFIELD_CONTROLLER_PROVIDER,
206
207
  ],
207
208
  }]
208
209
  }], ctorParameters: function () { return [{ type: i4.NgControl, decorators: [{
@@ -215,12 +216,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
215
216
  }] }, { type: i0.ChangeDetectorRef, decorators: [{
216
217
  type: Inject,
217
218
  args: [ChangeDetectorRef]
218
- }] }, { type: undefined, decorators: [{
219
- type: Inject,
220
- args: [TUI_TEXTFIELD_APPEARANCE]
221
- }] }, { type: i1.TuiTextfieldSizeDirective, decorators: [{
219
+ }] }, { type: i1.TuiTextfieldController, decorators: [{
222
220
  type: Inject,
223
- args: [TUI_TEXTFIELD_SIZE]
221
+ args: [TUI_TEXTFIELD_WATCHED_CONTROLLER]
224
222
  }] }, { type: i5.Observable, decorators: [{
225
223
  type: Inject,
226
224
  args: [TUI_PLUS_MINUS_TEXTS]
@@ -255,4 +253,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
255
253
  type: HostBinding,
256
254
  args: ['attr.data-size']
257
255
  }] } });
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtY291bnQvaW5wdXQtY291bnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtY291bnQvaW5wdXQtY291bnQudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLGFBQWEsRUFDYixZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLFFBQVEsRUFDUixjQUFjLEVBRWQsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixPQUFPLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixlQUFlLEVBRWYsOEJBQThCLEdBTWpDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFJMUQsT0FBTyxFQUFDLHVCQUF1QixFQUF1QixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBWXBGLE1BQU0sT0FBTyxzQkFDVCxTQUFRLDBCQUFrQztJQWdDMUMsWUFJSSxPQUF5QixFQUNFLGlCQUFvQyxFQUU5QyxVQUFrQixFQUVsQixhQUF3QyxFQUVoRCxXQUF5QyxFQUNWLFFBQWlCLEVBRWhELE9BQTZCLEVBRXJCLFlBQXFDO1FBRXRE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QUFpQjs7MEJBQ3hCLE1BQU07MkJBQUMsd0JBQXdCOzswQkFFL0IsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUV6QixNQUFNOzJCQUFDLG9CQUFvQjs7MEJBRTNCLE1BQU07MkJBQUMsYUFBYTs7MEJBQ3BCLE1BQU07MkJBQUMsdUJBQXVCOzswQkFFOUIsTUFBTTsyQkFBQyxpQkFBaUI7NENBM0NaLGtCQUFrQjtzQkFEbEMsU0FBUzt1QkFBQyw4QkFBOEI7Z0JBS3pDLElBQUk7c0JBRkgsS0FBSztnQkFNTixHQUFHO3NCQUZGLEtBQUs7Z0JBTU4sR0FBRztzQkFGRixLQUFLO2dCQU1OLFdBQVc7c0JBRlYsS0FBSztnQkFPTixNQUFNO3NCQUZMLEtBQUs7Z0JBT04sT0FBTztzQkFGTixLQUFLO2dCQTBCTixPQUFPLE1BWUgsYUFBYTtzQkFEaEIsV0FBVzt1QkFBQyxxQkFBcUI7Z0JBb0I5QixJQUFJO3NCQURQLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9wdGlvbmFsLFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpTnVsbGFibGVDb250cm9sLFxuICAgIFRVSV9JU19NT0JJTEUsXG4gICAgdHVpQXNDb250cm9sLFxuICAgIHR1aUFzRm9jdXNhYmxlSXRlbUFjY2Vzc29yLFxuICAgIHR1aUNsYW1wLFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICB0dWlJc05hdGl2ZUZvY3VzZWQsXG4gICAgdHVpSXNQcmVzZW50LFxuICAgIHR1aVB1cmUsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtcbiAgICBUVUlfTlVNQkVSX0ZPUk1BVCxcbiAgICBUVUlfVEVYVEZJRUxEX0FQUEVBUkFOQ0UsXG4gICAgVFVJX1RFWFRGSUVMRF9TSVpFLFxuICAgIHR1aUNyZWF0ZU51bWJlck1hc2ssXG4gICAgdHVpRm9ybWF0TnVtYmVyLFxuICAgIFR1aU51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgIFR1aVRleHRNYXNrT3B0aW9ucyxcbiAgICBUdWlXaXRoT3B0aW9uYWxNaW5NYXgsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7VFVJX1BMVVNfTUlOVVNfVEVYVFN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX0NPVU5UX09QVElPTlMsIFR1aUlucHV0Q291bnRPcHRpb25zfSBmcm9tICcuL2lucHV0LWNvdW50LW9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1jb3VudCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWNvdW50LnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWNvdW50LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXRDb3VudENvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dENvdW50Q29tcG9uZW50KSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dENvdW50Q29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aU51bGxhYmxlQ29udHJvbDxudW1iZXI+XG4gICAgaW1wbGVtZW50cyBUdWlXaXRoT3B0aW9uYWxNaW5NYXg8bnVtYmVyPiwgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZChUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQpXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmltaXRpdmVUZXh0ZmllbGQ/OiBUdWlQcmltaXRpdmVUZXh0ZmllbGRDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgc3RlcCA9IHRoaXMub3B0aW9ucy5zdGVwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1pbiA9IHRoaXMub3B0aW9ucy5taW47XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWF4ID0gdGhpcy5vcHRpb25zLm1heDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBoaWRlQnV0dG9ucyA9IHRoaXMub3B0aW9ucy5oaWRlQnV0dG9ucztcblxuICAgIC8qKiBAZGVwcmVjYXRlZCB1c2UgYHR1aVRleHRmaWVsZFByZWZpeGAgZnJvbSB7QGxpbmsgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZX0gaW5zdGVhZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBwcmVmaXggPSAnJztcblxuICAgIC8qKiBAZGVwcmVjYXRlZCB1c2UgYHR1aVRleHRmaWVsZFBvc3RmaXhgIGZyb20ge0BsaW5rIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGV9IGluc3RlYWQgKi9cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcG9zdGZpeCA9IHRoaXMub3B0aW9ucy5wb3N0Zml4O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX0FQUEVBUkFOQ0UpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwZWFyYW5jZTogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfU0laRSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0ZXh0ZmllbGRTaXplOiBUdWlUZXh0ZmllbGRTaXplRGlyZWN0aXZlLFxuICAgICAgICBASW5qZWN0KFRVSV9QTFVTX01JTlVTX1RFWFRTKVxuICAgICAgICByZWFkb25seSBtaW51c1RleHRzJDogT2JzZXJ2YWJsZTxbc3RyaW5nLCBzdHJpbmddPixcbiAgICAgICAgQEluamVjdChUVUlfSVNfTU9CSUxFKSBwcml2YXRlIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9JTlBVVF9DT1VOVF9PUFRJT05TKVxuICAgICAgICByZWFkb25seSBvcHRpb25zOiBUdWlJbnB1dENvdW50T3B0aW9ucyxcbiAgICAgICAgQEluamVjdChUVUlfTlVNQkVSX0ZPUk1BVClcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJGb3JtYXQ6IFR1aU51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBnZXRNYXNrKGFsbG93TmVnYXRpdmU6IGJvb2xlYW4pOiBUdWlUZXh0TWFza09wdGlvbnMge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWFzazogdHVpQ3JlYXRlTnVtYmVyTWFzayh7XG4gICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZSxcbiAgICAgICAgICAgICAgICBkZWNpbWFsU3ltYm9sOiB0aGlzLm51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgICAgICAgICAgIHRob3VzYW5kU3ltYm9sOiB0aGlzLm51bWJlckZvcm1hdC50aG91c2FuZFNlcGFyYXRvcixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZ3VpZGU6IGZhbHNlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX2hpZGUtYnV0dG9ucycpXG4gICAgZ2V0IGJ1dHRvbnNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhpZGVCdXR0b25zIHx8IHRoaXMuYXBwZWFyYW5jZSA9PT0gJ3RhYmxlJztcbiAgICB9XG5cbiAgICBnZXQgaWNvblVwKCk6IFBvbHltb3JwaGV1c0NvbnRlbnQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29ucy51cDtcbiAgICB9XG5cbiAgICBnZXQgaWNvbkRvd24oKTogUG9seW1vcnBoZXVzQ29udGVudDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb25zLmRvd247XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMucHJpbWl0aXZlVGV4dGZpZWxkIHx8IHRoaXMuY29tcHV0ZWREaXNhYmxlZFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZFNpemUuc2l6ZTtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aUlzTmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBleGFtcGxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMubWluKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkID8gdGhpcy5uYXRpdmVWYWx1ZSA6IHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIGdldCBtaW51c0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgfHwgKHR1aUlzUHJlc2VudCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlIDw9IHRoaXMubWluKTtcbiAgICB9XG5cbiAgICBnZXQgcGx1c0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgfHwgKHR1aUlzUHJlc2VudCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlID49IHRoaXMubWF4KTtcbiAgICB9XG5cbiAgICBvbkJ1dHRvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8fCB0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzZWQoZm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIWZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25CbHVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoZm9jdXNlZCk7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5jYXBWYWx1ZSh0aGlzLm5hdGl2ZU51bWJlclZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5pc05vdE51bWJlcihjYXBwZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKGNhcHBlZCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlVmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGNhcHBlZCk7XG4gICAgfVxuXG4gICAgZGVjcmVhc2VWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gKHRoaXMudmFsdWUgfHwgMCkgLSB0aGlzLnN0ZXA7XG5cbiAgICAgICAgdGhpcy5zYWZlVXBkYXRlVmFsdWUobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIGluY3JlYXNlVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9ICh0aGlzLnZhbHVlIHx8IDApICsgdGhpcy5zdGVwO1xuXG4gICAgICAgIHRoaXMuc2FmZVVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnVXAnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVhc2VWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnRG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5kZWNyZWFzZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBuYXRpdmVOdW1iZXJWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLnNwbGl0KHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yKS5qb2luKCcnKSxcbiAgICAgICAgICAgIDEwLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldCBuYXRpdmVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhZmVVcGRhdGVWYWx1ZShuZXdWYWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdHVpQ2xhbXAobmV3VmFsdWUsIHRoaXMubWluLCB0aGlzLm1heCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXBWYWx1ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNhcHBlZCA9IE1hdGgubWluKHZhbHVlLCB0aGlzLm1heCk7XG5cbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihjYXBwZWQpIHx8IGNhcHBlZCA8IHRoaXMubWluID8gbnVsbCA6IGNhcHBlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNOb3ROdW1iZXIodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gTWF0aC5tYXgodGhpcy5uYXRpdmVOdW1iZXJWYWx1ZSB8fCAwLCB0aGlzLm1pbik7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIodmFsdWUpO1xuXG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkKSB7XG4gICAgICAgICAgICB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC52YWx1ZSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc05vdE51bWJlcih2YWx1ZSkgPyAnJyA6IHR1aUZvcm1hdE51bWJlcih2YWx1ZSwgdGhpcy5udW1iZXJGb3JtYXQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNOb3ROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiB2YWx1ZSBpcyBudWxsIHtcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTih2YWx1ZSkgfHwgIXR1aUlzUHJlc2VudCh2YWx1ZSk7XG4gICAgfVxufVxuIiwiPHR1aS1wcmltaXRpdmUtdGV4dGZpZWxkXG4gICAgdHVpVmFsdWVBY2Nlc3NvclxuICAgIGNsYXNzPVwidC10ZXh0ZmllbGRcIlxuICAgIFtwc2V1ZG9Gb2N1c109XCJwc2V1ZG9Gb2N1c1wiXG4gICAgW3BzZXVkb0hvdmVyXT1cInBzZXVkb0hvdmVyXCJcbiAgICBbcHNldWRvQWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgW2ZvY3VzYWJsZV09XCJmb2N1c2FibGVcIlxuICAgIFtuYXRpdmVJZF09XCJuYXRpdmVJZFwiXG4gICAgW3ByZWZpeF09XCJwcmVmaXhcIlxuICAgIFtwb3N0Zml4XT1cInBvc3RmaXhcIlxuICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgIFt0ZXh0TWFza109XCJnZXRNYXNrKG1pbiA8IDApXCJcbiAgICBbaW52YWxpZF09XCJjb21wdXRlZEludmFsaWRcIlxuICAgIFt2YWx1ZV09XCJjb21wdXRlZFZhbHVlXCJcbiAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgpXCJcbiAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgKGZvY3VzZWRDaGFuZ2UpPVwib25Gb2N1c2VkKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudFxuICAgICAgICBzZWxlY3Q9XCJpbnB1dFwiXG4gICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgID48L25nLWNvbnRlbnQ+XG48L3R1aS1wcmltaXRpdmUtdGV4dGZpZWxkPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFidXR0b25zSGlkZGVuXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1pbnVzVGV4dHMkIHwgYXN5bmMgYXMgdGV4dHNcIj5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJ0LWJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1jb3VudF9fcGx1cy1idXR0b25cIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtYnV0dG9uIHQtYnV0dG9uX3BsdXNcIlxuICAgICAgICAgICAgICAgIFtpY29uXT1cImljb25VcFwiXG4gICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwib3B0aW9ucy5hcHBlYXJhbmNlXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwidGV4dHNbMF1cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwbHVzQnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25CdXR0b25Nb3VzZURvd24oJGV2ZW50LCBwbHVzQnV0dG9uRGlzYWJsZWQpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW5jcmVhc2VWYWx1ZSgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1jb3VudF9fbWludXMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWJ1dHRvbiB0LWJ1dHRvbl9taW51c1wiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiaWNvbkRvd25cIlxuICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIm9wdGlvbnMuYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1pbnVzQnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ0ZXh0c1sxXVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbkJ1dHRvbk1vdXNlRG93bigkZXZlbnQsIG1pbnVzQnV0dG9uRGlzYWJsZWQpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVjcmVhc2VWYWx1ZSgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtY291bnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtY291bnQvaW5wdXQtY291bnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtY291bnQvaW5wdXQtY291bnQudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsMEJBQTBCLEVBQzFCLGFBQWEsRUFDYixZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLFFBQVEsRUFDUixjQUFjLEVBRWQsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixPQUFPLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILDZCQUE2QixFQUM3QixpQkFBaUIsRUFDakIsZ0NBQWdDLEVBQ2hDLG1CQUFtQixFQUNuQixlQUFlLEVBRWYsOEJBQThCLEdBTWpDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFJMUQsT0FBTyxFQUFDLHVCQUF1QixFQUF1QixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBYXBGLE1BQU0sT0FBTyxzQkFDVCxTQUFRLDBCQUFrQztJQWdDMUMsWUFJSSxPQUF5QixFQUNFLGlCQUFvQyxFQUU5QyxtQkFBMkMsRUFFbkQsV0FBeUMsRUFDVixRQUFpQixFQUVoRCxPQUE2QixFQUVyQixZQUFxQztRQUV0RCxLQUFLLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFUakIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQUVuRCxnQkFBVyxHQUFYLFdBQVcsQ0FBOEI7UUFDVixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBRWhELFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBRXJCLGlCQUFZLEdBQVosWUFBWSxDQUF5QjtRQXRDMUQsU0FBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBSXpCLFFBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUl2QixRQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFJdkIsZ0JBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUV2Qyw2RkFBNkY7UUFHN0YsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUVaLDhGQUE4RjtRQUc5RixZQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFtQi9CLENBQUM7SUFHRCxPQUFPLENBQUMsYUFBc0I7UUFDMUIsT0FBTztZQUNILElBQUksRUFBRSxtQkFBbUIsQ0FBQztnQkFDdEIsYUFBYTtnQkFDYixhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0I7Z0JBQ2pELGNBQWMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQjthQUN0RCxDQUFDO1lBQ0YsS0FBSyxFQUFFLEtBQUs7U0FDZixDQUFDO0lBQ04sQ0FBQztJQUVELElBQ0ksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxLQUFLLE9BQU8sQ0FBQztJQUMvRSxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxnQkFBZ0I7WUFDcEQsQ0FBQyxDQUFDLElBQUk7WUFDTixDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUNJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWlCLEVBQUUsV0FBb0IsS0FBSztRQUMxRCxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzNELE9BQU87U0FDVjtRQUVELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFnQjtRQUN0QixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYTtRQUNULE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFckQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdkIsT0FBTztTQUNWO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzQyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFO1lBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO1NBQy9CO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE9BQU87U0FDVjtRQUVELE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRS9DLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFFRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUUvQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBb0I7UUFDMUIsUUFBUSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2YsS0FBSyxTQUFTLENBQUM7WUFDZixLQUFLLElBQUk7Z0JBQ0wsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU07WUFDVixLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLE1BQU07Z0JBQ1AsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU07WUFDVjtnQkFDSSxNQUFNO1NBQ2I7SUFDTCxDQUFDO0lBRUQsSUFBWSxpQkFBaUI7UUFDekIsT0FBTyxRQUFRLENBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFDcEUsRUFBRSxDQUNMLENBQUM7SUFDTixDQUFDO0lBRUQsSUFBWSxXQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEYsQ0FBQztJQUVELElBQVksV0FBVyxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUM5QixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRU8sZUFBZSxDQUFDLFFBQWdCO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFhO1FBQzFCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV6QyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3JFLENBQUM7SUFFTyxNQUFNO1FBQ1YsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXZCLE9BQU87U0FDVjtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDO1NBQ2xEO0lBQ0wsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFvQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFvQjtRQUNwQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQzs7b0hBNU9RLHNCQUFzQixrQkFvQ25CLFNBQVMseUNBRVQsaUJBQWlCLGFBQ2pCLGdDQUFnQyxhQUVoQyxvQkFBb0IsYUFFcEIsYUFBYSxhQUNiLHVCQUF1QixhQUV2QixpQkFBaUI7d0dBOUNwQixzQkFBc0Isb1FBTnBCO1FBQ1AsMEJBQTBCLENBQUMsc0JBQXNCLENBQUM7UUFDbEQsWUFBWSxDQUFDLHNCQUFzQixDQUFDO1FBQ3BDLDZCQUE2QjtLQUNoQyw4RUFNVSw4QkFBOEIsdUVDM0Q3Qyw2a0VBMkRBO0FES0k7SUFEQyxjQUFjLEVBQUU7b0RBQ1E7QUFJekI7SUFEQyxjQUFjLEVBQUU7bURBQ007QUFJdkI7SUFEQyxjQUFjLEVBQUU7bURBQ007QUFJdkI7SUFEQyxjQUFjLEVBQUU7MkRBQ3NCO0FBS3ZDO0lBREMsY0FBYyxFQUFFO3NEQUNMO0FBS1o7SUFEQyxjQUFjLEVBQUU7dURBQ2M7QUFzQi9CO0lBREMsT0FBTztxREFVUDs0RkE5RFEsc0JBQXNCO2tCQVhsQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFdBQVcsRUFBRSw2QkFBNkI7b0JBQzFDLFNBQVMsRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUN2QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNQLDBCQUEwQix3QkFBd0I7d0JBQ2xELFlBQVksd0JBQXdCO3dCQUNwQyw2QkFBNkI7cUJBQ2hDO2lCQUNKOzswQkFtQ1EsUUFBUTs7MEJBQ1IsSUFBSTs7MEJBQ0osTUFBTTsyQkFBQyxTQUFTOzswQkFFaEIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLGdDQUFnQzs7MEJBRXZDLE1BQU07MkJBQUMsb0JBQW9COzswQkFFM0IsTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUU5QixNQUFNOzJCQUFDLGlCQUFpQjs0Q0F6Q1osa0JBQWtCO3NCQURsQyxTQUFTO3VCQUFDLDhCQUE4QjtnQkFLekMsSUFBSTtzQkFGSCxLQUFLO2dCQU1OLEdBQUc7c0JBRkYsS0FBSztnQkFNTixHQUFHO3NCQUZGLEtBQUs7Z0JBTU4sV0FBVztzQkFGVixLQUFLO2dCQU9OLE1BQU07c0JBRkwsS0FBSztnQkFPTixPQUFPO3NCQUZOLEtBQUs7Z0JBd0JOLE9BQU8sTUFZSCxhQUFhO3NCQURoQixXQUFXO3VCQUFDLHFCQUFxQjtnQkFvQjlCLElBQUk7c0JBRFAsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2wsXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgdHVpQ2xhbXAsXG4gICAgdHVpRGVmYXVsdFByb3AsXG4gICAgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yLFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZCxcbiAgICB0dWlJc1ByZXNlbnQsXG4gICAgdHVpUHVyZSxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRFWFRGSUVMRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIFRVSV9OVU1CRVJfRk9STUFULFxuICAgIFRVSV9URVhURklFTERfV0FUQ0hFRF9DT05UUk9MTEVSLFxuICAgIHR1aUNyZWF0ZU51bWJlck1hc2ssXG4gICAgdHVpRm9ybWF0TnVtYmVyLFxuICAgIFR1aU51bWJlckZvcm1hdFNldHRpbmdzLFxuICAgIFR1aVByaW1pdGl2ZVRleHRmaWVsZENvbXBvbmVudCxcbiAgICBUdWlTaXplTCxcbiAgICBUdWlTaXplUyxcbiAgICBUdWlUZXh0ZmllbGRDb250cm9sbGVyLFxuICAgIFR1aVRleHRNYXNrT3B0aW9ucyxcbiAgICBUdWlXaXRoT3B0aW9uYWxNaW5NYXgsXG59IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7VFVJX1BMVVNfTUlOVVNfVEVYVFN9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7VFVJX0lOUFVUX0NPVU5UX09QVElPTlMsIFR1aUlucHV0Q291bnRPcHRpb25zfSBmcm9tICcuL2lucHV0LWNvdW50LW9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1jb3VudCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWNvdW50LnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LWNvdW50LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXRDb3VudENvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dENvdW50Q29tcG9uZW50KSxcbiAgICAgICAgVEVYVEZJRUxEX0NPTlRST0xMRVJfUFJPVklERVIsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRDb3VudENvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlOdWxsYWJsZUNvbnRyb2w8bnVtYmVyPlxuICAgIGltcGxlbWVudHMgVHVpV2l0aE9wdGlvbmFsTWluTWF4PG51bWJlcj4sIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3Nvclxue1xuICAgIEBWaWV3Q2hpbGQoVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJpbWl0aXZlVGV4dGZpZWxkPzogVHVpUHJpbWl0aXZlVGV4dGZpZWxkQ29tcG9uZW50O1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHN0ZXAgPSB0aGlzLm9wdGlvbnMuc3RlcDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtaW4gPSB0aGlzLm9wdGlvbnMubWluO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1heCA9IHRoaXMub3B0aW9ucy5tYXg7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgaGlkZUJ1dHRvbnMgPSB0aGlzLm9wdGlvbnMuaGlkZUJ1dHRvbnM7XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgdXNlIGB0dWlUZXh0ZmllbGRQcmVmaXhgIGZyb20ge0BsaW5rIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGV9IGluc3RlYWQgKi9cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcHJlZml4ID0gJyc7XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgdXNlIGB0dWlUZXh0ZmllbGRQb3N0Zml4YCBmcm9tIHtAbGluayBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlfSBpbnN0ZWFkICovXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHBvc3RmaXggPSB0aGlzLm9wdGlvbnMucG9zdGZpeDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoVFVJX1RFWFRGSUVMRF9XQVRDSEVEX0NPTlRST0xMRVIpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkQ29udHJvbGxlcjogVHVpVGV4dGZpZWxkQ29udHJvbGxlcixcbiAgICAgICAgQEluamVjdChUVUlfUExVU19NSU5VU19URVhUUylcbiAgICAgICAgcmVhZG9ubHkgbWludXNUZXh0cyQ6IE9ic2VydmFibGU8W3N0cmluZywgc3RyaW5nXT4sXG4gICAgICAgIEBJbmplY3QoVFVJX0lTX01PQklMRSkgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZTogYm9vbGVhbixcbiAgICAgICAgQEluamVjdChUVUlfSU5QVVRfQ09VTlRfT1BUSU9OUylcbiAgICAgICAgcmVhZG9ubHkgb3B0aW9uczogVHVpSW5wdXRDb3VudE9wdGlvbnMsXG4gICAgICAgIEBJbmplY3QoVFVJX05VTUJFUl9GT1JNQVQpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbnVtYmVyRm9ybWF0OiBUdWlOdW1iZXJGb3JtYXRTZXR0aW5ncyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgZ2V0TWFzayhhbGxvd05lZ2F0aXZlOiBib29sZWFuKTogVHVpVGV4dE1hc2tPcHRpb25zIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1hc2s6IHR1aUNyZWF0ZU51bWJlck1hc2soe1xuICAgICAgICAgICAgICAgIGFsbG93TmVnYXRpdmUsXG4gICAgICAgICAgICAgICAgZGVjaW1hbFN5bWJvbDogdGhpcy5udW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgICAgICAgICB0aG91c2FuZFN5bWJvbDogdGhpcy5udW1iZXJGb3JtYXQudGhvdXNhbmRTZXBhcmF0b3IsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGd1aWRlOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9oaWRlLWJ1dHRvbnMnKVxuICAgIGdldCBidXR0b25zSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oaWRlQnV0dG9ucyB8fCB0aGlzLnRleHRmaWVsZENvbnRyb2xsZXIuYXBwZWFyYW5jZSA9PT0gJ3RhYmxlJztcbiAgICB9XG5cbiAgICBnZXQgaWNvblVwKCk6IFBvbHltb3JwaGV1c0NvbnRlbnQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pY29ucy51cDtcbiAgICB9XG5cbiAgICBnZXQgaWNvbkRvd24oKTogUG9seW1vcnBoZXVzQ29udGVudDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmljb25zLmRvd247XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gIXRoaXMucHJpbWl0aXZlVGV4dGZpZWxkIHx8IHRoaXMuY29tcHV0ZWREaXNhYmxlZFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZScpXG4gICAgZ2V0IHNpemUoKTogVHVpU2l6ZUwgfCBUdWlTaXplUyB7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHRmaWVsZENvbnRyb2xsZXIuc2l6ZTtcbiAgICB9XG5cbiAgICBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aUlzTmF0aXZlRm9jdXNlZCh0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBleGFtcGxlVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gU3RyaW5nKHRoaXMubWluKTtcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb2N1c2VkID8gdGhpcy5uYXRpdmVWYWx1ZSA6IHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIGdldCBtaW51c0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgfHwgKHR1aUlzUHJlc2VudCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlIDw9IHRoaXMubWluKTtcbiAgICB9XG5cbiAgICBnZXQgcGx1c0J1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaW50ZXJhY3RpdmUgfHwgKHR1aUlzUHJlc2VudCh0aGlzLnZhbHVlKSAmJiB0aGlzLnZhbHVlID49IHRoaXMubWF4KTtcbiAgICB9XG5cbiAgICBvbkJ1dHRvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgIXRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8fCB0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvbkZvY3VzZWQoZm9jdXNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIWZvY3VzZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25CbHVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUZvY3VzZWQoZm9jdXNlZCk7XG4gICAgfVxuXG4gICAgb25WYWx1ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2FwcGVkID0gdGhpcy5jYXBWYWx1ZSh0aGlzLm5hdGl2ZU51bWJlclZhbHVlKTtcblxuICAgICAgICBpZiAodGhpcy5pc05vdE51bWJlcihjYXBwZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9ybWF0TnVtYmVyKGNhcHBlZCk7XG5cbiAgICAgICAgaWYgKHRoaXMubmF0aXZlVmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlID0gbmV3VmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGNhcHBlZCk7XG4gICAgfVxuXG4gICAgZGVjcmVhc2VWYWx1ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gKHRoaXMudmFsdWUgfHwgMCkgLSB0aGlzLnN0ZXA7XG5cbiAgICAgICAgdGhpcy5zYWZlVXBkYXRlVmFsdWUobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIGluY3JlYXNlVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9ICh0aGlzLnZhbHVlIHx8IDApICsgdGhpcy5zdGVwO1xuXG4gICAgICAgIHRoaXMuc2FmZVVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnVXAnOlxuICAgICAgICAgICAgICAgIHRoaXMuaW5jcmVhc2VWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnRG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5kZWNyZWFzZVZhbHVlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBuYXRpdmVOdW1iZXJWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gcGFyc2VJbnQoXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZVZhbHVlLnNwbGl0KHRoaXMubnVtYmVyRm9ybWF0LnRob3VzYW5kU2VwYXJhdG9yKS5qb2luKCcnKSxcbiAgICAgICAgICAgIDEwLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IG5hdGl2ZVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgPyB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgOiAnJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldCBuYXRpdmVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVGb2N1c2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhZmVVcGRhdGVWYWx1ZShuZXdWYWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdHVpQ2xhbXAobmV3VmFsdWUsIHRoaXMubWluLCB0aGlzLm1heCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYXBWYWx1ZSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGNhcHBlZCA9IE1hdGgubWluKHZhbHVlLCB0aGlzLm1heCk7XG5cbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihjYXBwZWQpIHx8IGNhcHBlZCA8IHRoaXMubWluID8gbnVsbCA6IGNhcHBlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQmx1cigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNOb3ROdW1iZXIodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gTWF0aC5tYXgodGhpcy5uYXRpdmVOdW1iZXJWYWx1ZSB8fCAwLCB0aGlzLm1pbik7XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdGhpcy5mb3JtYXROdW1iZXIodmFsdWUpO1xuXG4gICAgICAgIHRoaXMubmF0aXZlVmFsdWUgPSBmb3JtYXR0ZWRWYWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMucHJpbWl0aXZlVGV4dGZpZWxkKSB7XG4gICAgICAgICAgICB0aGlzLnByaW1pdGl2ZVRleHRmaWVsZC52YWx1ZSA9IGZvcm1hdHRlZFZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc05vdE51bWJlcih2YWx1ZSkgPyAnJyA6IHR1aUZvcm1hdE51bWJlcih2YWx1ZSwgdGhpcy5udW1iZXJGb3JtYXQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNOb3ROdW1iZXIodmFsdWU6IG51bWJlciB8IG51bGwpOiB2YWx1ZSBpcyBudWxsIHtcbiAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTih2YWx1ZSkgfHwgIXR1aUlzUHJlc2VudCh2YWx1ZSk7XG4gICAgfVxufVxuIiwiPHR1aS1wcmltaXRpdmUtdGV4dGZpZWxkXG4gICAgdHVpVmFsdWVBY2Nlc3NvclxuICAgIGNsYXNzPVwidC10ZXh0ZmllbGRcIlxuICAgIFtwc2V1ZG9Gb2N1c109XCJwc2V1ZG9Gb2N1c1wiXG4gICAgW3BzZXVkb0hvdmVyXT1cInBzZXVkb0hvdmVyXCJcbiAgICBbcHNldWRvQWN0aXZlXT1cInBzZXVkb0FjdGl2ZVwiXG4gICAgW2ZvY3VzYWJsZV09XCJmb2N1c2FibGVcIlxuICAgIFtuYXRpdmVJZF09XCJuYXRpdmVJZFwiXG4gICAgW3ByZWZpeF09XCJwcmVmaXhcIlxuICAgIFtwb3N0Zml4XT1cInBvc3RmaXhcIlxuICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgIFt0ZXh0TWFza109XCJnZXRNYXNrKG1pbiA8IDApXCJcbiAgICBbaW52YWxpZF09XCJjb21wdXRlZEludmFsaWRcIlxuICAgIFt2YWx1ZV09XCJjb21wdXRlZFZhbHVlXCJcbiAgICAodmFsdWVDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgpXCJcbiAgICAoa2V5ZG93bik9XCJvbktleWRvd24oJGV2ZW50KVwiXG4gICAgKGZvY3VzZWRDaGFuZ2UpPVwib25Gb2N1c2VkKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudFxuICAgICAgICBzZWxlY3Q9XCJpbnB1dFwiXG4gICAgICAgIG5nUHJvamVjdEFzPVwiaW5wdXRcIlxuICAgID48L25nLWNvbnRlbnQ+XG48L3R1aS1wcmltaXRpdmUtdGV4dGZpZWxkPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFidXR0b25zSGlkZGVuXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1pbnVzVGV4dHMkIHwgYXN5bmMgYXMgdGV4dHNcIj5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJ0LWJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1jb3VudF9fcGx1cy1idXR0b25cIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtYnV0dG9uIHQtYnV0dG9uX3BsdXNcIlxuICAgICAgICAgICAgICAgIFtpY29uXT1cImljb25VcFwiXG4gICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwib3B0aW9ucy5hcHBlYXJhbmNlXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwidGV4dHNbMF1cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwbHVzQnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25CdXR0b25Nb3VzZURvd24oJGV2ZW50LCBwbHVzQnV0dG9uRGlzYWJsZWQpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW5jcmVhc2VWYWx1ZSgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1jb3VudF9fbWludXMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWJ1dHRvbiB0LWJ1dHRvbl9taW51c1wiXG4gICAgICAgICAgICAgICAgW2ljb25dPVwiaWNvbkRvd25cIlxuICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIm9wdGlvbnMuYXBwZWFyYW5jZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1pbnVzQnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtmb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ0ZXh0c1sxXVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbkJ1dHRvbk1vdXNlRG93bigkZXZlbnQsIG1pbnVzQnV0dG9uRGlzYWJsZWQpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVjcmVhc2VWYWx1ZSgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -1,8 +1,8 @@
1
1
  import { __decorate } from "tslib";
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, Inject, Input, Optional, Self, ViewChild, ViewChildren, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Input, Optional, Self, ViewChild, ViewChildren, } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
4
  import { AbstractTuiControl, EMPTY_QUERY, TUI_IS_MOBILE, tuiAsControl, tuiAsFocusableItemAccessor, tuiClamp, tuiDefaultProp, tuiIsNativeFocused, tuiIsNativeFocusedIn, tuiPure, tuiRound, } from '@taiga-ui/cdk';
5
- import { TEXTFIELD_CONTROLLER_PROVIDER, TUI_TEXTFIELD_APPEARANCE, TUI_TEXTFIELD_WATCHED_CONTROLLER, tuiGetFractionPartPadded, } from '@taiga-ui/core';
5
+ import { TEXTFIELD_CONTROLLER_PROVIDER, TUI_TEXTFIELD_WATCHED_CONTROLLER, tuiGetFractionPartPadded, } from '@taiga-ui/core';
6
6
  import { TuiInputNumberComponent } from '@taiga-ui/kit/components/input-number';
7
7
  import { TuiRangeComponent } from '@taiga-ui/kit/components/range';
8
8
  import { TUI_FLOATING_PRECISION } from '@taiga-ui/kit/constants';
@@ -15,10 +15,9 @@ import * as i5 from "@angular/forms";
15
15
  import * as i6 from "@angular/common";
16
16
  import * as i7 from "@tinkoff/ng-polymorpheus";
17
17
  export class TuiInputRangeComponent extends AbstractTuiControl {
18
- constructor(control, changeDetectorRef, isMobile, appearance, elementRef, controller) {
18
+ constructor(control, changeDetectorRef, isMobile, elementRef, controller) {
19
19
  super(control, changeDetectorRef);
20
20
  this.isMobile = isMobile;
21
- this.appearance = appearance;
22
21
  this.elementRef = elementRef;
23
22
  this.controller = controller;
24
23
  this.inputNumberRefs = EMPTY_QUERY;
@@ -50,6 +49,9 @@ export class TuiInputRangeComponent extends AbstractTuiControl {
50
49
  get focused() {
51
50
  return tuiIsNativeFocusedIn(this.elementRef.nativeElement);
52
51
  }
52
+ get appearance() {
53
+ return this.controller.appearance;
54
+ }
53
55
  get showLeftValueContent() {
54
56
  var _a;
55
57
  return Boolean(this.leftValueContent &&
@@ -158,12 +160,12 @@ export class TuiInputRangeComponent extends AbstractTuiControl {
158
160
  }
159
161
  }
160
162
  }
161
- TuiInputRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputRangeComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_IS_MOBILE }, { token: TUI_TEXTFIELD_APPEARANCE }, { token: ElementRef }, { token: TUI_TEXTFIELD_WATCHED_CONTROLLER }], target: i0.ɵɵFactoryTarget.Component });
163
+ TuiInputRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputRangeComponent, deps: [{ token: NgControl, optional: true, self: true }, { token: ChangeDetectorRef }, { token: TUI_IS_MOBILE }, { token: ElementRef }, { token: TUI_TEXTFIELD_WATCHED_CONTROLLER }], target: i0.ɵɵFactoryTarget.Component });
162
164
  TuiInputRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TuiInputRangeComponent, selector: "tui-input-range", inputs: { min: "min", max: "max", quantum: "quantum", steps: "steps", segments: "segments", keySteps: "keySteps", leftValueContent: "leftValueContent", rightValueContent: "rightValueContent", pluralize: "pluralize" }, host: { properties: { "attr.data-size": "controller.size", "class._label-outside": "controller.labelOutside" } }, providers: [
163
165
  tuiAsFocusableItemAccessor(TuiInputRangeComponent),
164
166
  tuiAsControl(TuiInputRangeComponent),
165
167
  TEXTFIELD_CONTROLLER_PROVIDER,
166
- ], viewQueries: [{ propertyName: "rangeRef", first: true, predicate: TuiRangeComponent, descendants: true }, { propertyName: "inputNumberRefs", predicate: TuiInputNumberComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n tuiWrapper\n class=\"t-wrapper\"\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [focus]=\"computedFocused\"\n [hover]=\"pseudoHover\"\n [invalid]=\"computedInvalid\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-input-number\n tuiTextfieldAppearance=\"none\"\n automation-id=\"tui-input-range__left-input\"\n class=\"t-left t-text-input\"\n [min]=\"min\"\n [max]=\"value[1]\"\n [precision]=\"precision\"\n [decimal]=\"decimal\"\n [postfix]=\"pluralize && !showLeftValueContent ? (value[0] | i18nPlural : pluralize) : ''\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [ngModel]=\"value[0]\"\n (ngModelChange)=\"onInputLeft($event)\"\n (focusedChange)=\"onTextInputFocused($event, false)\"\n (keydown.arrowUp)=\"changeByStep($event, [1, 0])\"\n (keydown.arrowDown)=\"changeByStep($event, [-1, 0])\"\n >\n <ng-content></ng-content>\n <div\n *ngIf=\"showLeftValueContent\"\n ngProjectAs=\"tuiContent\"\n >\n <ng-container *polymorpheusOutlet=\"leftValueContent as text; context: {$implicit: value[0]}\">\n {{ text }}\n </ng-container>\n </div>\n </tui-input-number>\n\n <div class=\"t-right\">\n <tui-input-number\n tuiTextfieldAppearance=\"none\"\n automation-id=\"tui-input-range__right-input\"\n class=\"t-text-input\"\n [min]=\"value[0]\"\n [max]=\"max\"\n [precision]=\"precision\"\n [decimal]=\"decimal\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [ngModel]=\"value[1]\"\n (ngModelChange)=\"onInputRight($event)\"\n (focusedChange)=\"onTextInputFocused($event, true)\"\n (keydown.arrowUp)=\"changeByStep($event, [0, 1])\"\n (keydown.arrowDown)=\"changeByStep($event, [0, -1])\"\n >\n <div\n *ngIf=\"showRightValueContent\"\n ngProjectAs=\"tuiContent\"\n >\n <ng-container *polymorpheusOutlet=\"rightValueContent as text; context: {$implicit: value[1]}\">\n {{ text }}\n </ng-container>\n </div>\n </tui-input-number>\n\n <!-- TODO replace by postfix of the right InputNumber (after fix https://github.com/Tinkoff/taiga-ui/issues/1193) -->\n <span\n *ngIf=\"!showRightValueContent && pluralize\"\n automation-id=\"tui-input-range__pluralize-right\"\n class=\"t-pluralize-right\"\n >\n &nbsp;{{ value[1] | i18nPlural : pluralize }}\n </span>\n </div>\n\n <tui-range\n class=\"t-range\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [segments]=\"segments\"\n [keySteps]=\"computeKeySteps(keySteps, min, max)\"\n [focusable]=\"false\"\n [disabled]=\"readOnly || disabled\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onRangeValue($event)\"\n (tuiPressedChange)=\"focusToTextInput()\"\n (activeThumbChange)=\"onActiveThumbChange($event)\"\n ></tui-range>\n</div>\n", styles: [".t-wrapper{position:relative}.t-left{width:100%}.t-right{position:absolute;right:0;top:0;display:flex;width:50%;height:100%;text-align:right}.t-right .t-text-input{flex:1}.t-text-input{text-align:inherit}.t-pluralize-right{display:flex;align-items:center;padding:1.125rem var(--tui-padding-m) 0 0;margin-left:-.75rem;font:var(--tui-font-text-s)}:host[data-size=l] .t-pluralize-right{font:var(--tui-font-text-m);padding-top:1.25rem;margin-left:-1rem;padding-right:var(--tui-padding-l)}:host._label-outside .t-pluralize-right{padding-top:0}:host._disabled .t-pluralize-right{color:var(--tui-text-03)}:host{display:block;border-radius:var(--tui-radius-m)}.t-range{position:absolute;top:100%;left:0;right:0;z-index:1;margin:-.125rem 0 0;background:transparent}\n"], components: [{ type: i0.forwardRef(function () { return i1.TuiInputNumberComponent; }), selector: "tui-input-number", inputs: ["min", "max", "decimal", "precision", "prefix", "postfix"] }, { type: i0.forwardRef(function () { return i2.TuiRangeComponent; }), selector: "tui-range", inputs: ["min", "max", "step", "size", "segments", "keySteps"] }], directives: [{ type: i0.forwardRef(function () { return i3.TuiWrapperDirective; }), selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i0.forwardRef(function () { return i4.TuiActiveZoneDirective; }), selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i0.forwardRef(function () { return i1.TuiInputNumberDirective; }), selector: "tui-input-number" }, { type: i0.forwardRef(function () { return TuiTextfieldAppearanceDirective; }), selector: "[tuiTextfieldAppearance]" }, { type: i0.forwardRef(function () { return i5.NgControlStatus; }), selector: "[formControlName],[ngModel],[formControl]" }, { type: i0.forwardRef(function () { return i5.NgModel; }), selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i0.forwardRef(function () { return i6.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i0.forwardRef(function () { return i7.PolymorpheusOutletDirective; }), selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i0.forwardRef(function () { return i2.TuiRangeChangeDirective; }), selector: "tui-range", outputs: ["activeThumbChange"] }, { type: i0.forwardRef(function () { return i4.TuiPressedDirective; }), selector: "[tuiPressedChange]", outputs: ["tuiPressedChange"] }], pipes: { "i18nPlural": i0.forwardRef(function () { return i6.I18nPluralPipe; }) }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
168
+ ], viewQueries: [{ propertyName: "rangeRef", first: true, predicate: TuiRangeComponent, descendants: true }, { propertyName: "inputNumberRefs", predicate: TuiInputNumberComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n tuiWrapper\n class=\"t-wrapper\"\n [appearance]=\"appearance\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\"\n [focus]=\"computedFocused\"\n [hover]=\"pseudoHover\"\n [invalid]=\"computedInvalid\"\n (tuiActiveZoneChange)=\"onActiveZone($event)\"\n>\n <tui-input-number\n tuiTextfieldAppearance=\"none\"\n automation-id=\"tui-input-range__left-input\"\n class=\"t-left t-text-input\"\n [min]=\"min\"\n [max]=\"value[1]\"\n [precision]=\"precision\"\n [decimal]=\"decimal\"\n [postfix]=\"pluralize && !showLeftValueContent ? (value[0] | i18nPlural : pluralize) : ''\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [ngModel]=\"value[0]\"\n (ngModelChange)=\"onInputLeft($event)\"\n (focusedChange)=\"onTextInputFocused($event, false)\"\n (keydown.arrowUp)=\"changeByStep($event, [1, 0])\"\n (keydown.arrowDown)=\"changeByStep($event, [-1, 0])\"\n >\n <ng-content></ng-content>\n <div\n *ngIf=\"showLeftValueContent\"\n ngProjectAs=\"tuiContent\"\n >\n <ng-container *polymorpheusOutlet=\"leftValueContent as text; context: {$implicit: value[0]}\">\n {{ text }}\n </ng-container>\n </div>\n </tui-input-number>\n\n <div class=\"t-right\">\n <tui-input-number\n tuiTextfieldAppearance=\"none\"\n automation-id=\"tui-input-range__right-input\"\n class=\"t-text-input\"\n [min]=\"value[0]\"\n [max]=\"max\"\n [precision]=\"precision\"\n [decimal]=\"decimal\"\n [disabled]=\"computedDisabled\"\n [readOnly]=\"readOnly\"\n [ngModel]=\"value[1]\"\n (ngModelChange)=\"onInputRight($event)\"\n (focusedChange)=\"onTextInputFocused($event, true)\"\n (keydown.arrowUp)=\"changeByStep($event, [0, 1])\"\n (keydown.arrowDown)=\"changeByStep($event, [0, -1])\"\n >\n <div\n *ngIf=\"showRightValueContent\"\n ngProjectAs=\"tuiContent\"\n >\n <ng-container *polymorpheusOutlet=\"rightValueContent as text; context: {$implicit: value[1]}\">\n {{ text }}\n </ng-container>\n </div>\n </tui-input-number>\n\n <!-- TODO replace by postfix of the right InputNumber (after fix https://github.com/Tinkoff/taiga-ui/issues/1193) -->\n <span\n *ngIf=\"!showRightValueContent && pluralize\"\n automation-id=\"tui-input-range__pluralize-right\"\n class=\"t-pluralize-right\"\n >\n &nbsp;{{ value[1] | i18nPlural : pluralize }}\n </span>\n </div>\n\n <tui-range\n class=\"t-range\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [segments]=\"segments\"\n [keySteps]=\"computeKeySteps(keySteps, min, max)\"\n [focusable]=\"false\"\n [disabled]=\"readOnly || disabled\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onRangeValue($event)\"\n (tuiPressedChange)=\"focusToTextInput()\"\n (activeThumbChange)=\"onActiveThumbChange($event)\"\n ></tui-range>\n</div>\n", styles: [".t-wrapper{position:relative}.t-left{width:100%}.t-right{position:absolute;right:0;top:0;display:flex;width:50%;height:100%;text-align:right}.t-right .t-text-input{flex:1}.t-text-input{text-align:inherit}.t-pluralize-right{display:flex;align-items:center;padding:1.125rem var(--tui-padding-m) 0 0;margin-left:-.75rem;font:var(--tui-font-text-s)}:host[data-size=l] .t-pluralize-right{font:var(--tui-font-text-m);padding-top:1.25rem;margin-left:-1rem;padding-right:var(--tui-padding-l)}:host._label-outside .t-pluralize-right{padding-top:0}:host._disabled .t-pluralize-right{color:var(--tui-text-03)}:host{display:block;border-radius:var(--tui-radius-m)}.t-range{position:absolute;top:100%;left:0;right:0;z-index:1;margin:-.125rem 0 0;background:transparent}\n"], components: [{ type: i1.TuiInputNumberComponent, selector: "tui-input-number", inputs: ["min", "max", "decimal", "precision", "prefix", "postfix"] }, { type: i2.TuiRangeComponent, selector: "tui-range", inputs: ["min", "max", "step", "size", "segments", "keySteps"] }], directives: [{ type: i3.TuiWrapperDirective, selector: "[tuiWrapper]", inputs: ["disabled", "readOnly", "hover", "active", "focus", "invalid", "appearance"] }, { type: i4.TuiActiveZoneDirective, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: ["tuiActiveZoneParent"], outputs: ["tuiActiveZoneChange"], exportAs: ["tuiActiveZone"] }, { type: i1.TuiInputNumberDirective, selector: "tui-input-number" }, { type: i3.TuiTextfieldAppearanceDirective, selector: "[tuiTextfieldAppearance]", inputs: ["tuiTextfieldAppearance"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.PolymorpheusOutletDirective, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { type: i2.TuiRangeChangeDirective, selector: "tui-range", outputs: ["activeThumbChange"] }, { type: i4.TuiPressedDirective, selector: "[tuiPressedChange]", outputs: ["tuiPressedChange"] }], pipes: { "i18nPlural": i6.I18nPluralPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
167
169
  __decorate([
168
170
  tuiDefaultProp()
169
171
  ], TuiInputRangeComponent.prototype, "min", void 0);
@@ -224,9 +226,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
224
226
  }] }, { type: undefined, decorators: [{
225
227
  type: Inject,
226
228
  args: [TUI_IS_MOBILE]
227
- }] }, { type: undefined, decorators: [{
228
- type: Inject,
229
- args: [TUI_TEXTFIELD_APPEARANCE]
230
229
  }] }, { type: i0.ElementRef, decorators: [{
231
230
  type: Inject,
232
231
  args: [ElementRef]
@@ -258,27 +257,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
258
257
  }], pluralize: [{
259
258
  type: Input
260
259
  }], computeKeySteps: [] } });
261
- export class TuiTextfieldAppearanceDirective {
262
- }
263
- TuiTextfieldAppearanceDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiTextfieldAppearanceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
264
- TuiTextfieldAppearanceDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: TuiTextfieldAppearanceDirective, selector: "[tuiTextfieldAppearance]", providers: [
265
- {
266
- provide: TUI_TEXTFIELD_APPEARANCE,
267
- deps: [ElementRef],
268
- useFactory: ({ nativeElement }) => nativeElement.getAttribute('tuiTextfieldAppearance'),
269
- },
270
- ], ngImport: i0 });
271
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiTextfieldAppearanceDirective, decorators: [{
272
- type: Directive,
273
- args: [{
274
- selector: '[tuiTextfieldAppearance]',
275
- providers: [
276
- {
277
- provide: TUI_TEXTFIELD_APPEARANCE,
278
- deps: [ElementRef],
279
- useFactory: ({ nativeElement }) => nativeElement.getAttribute('tuiTextfieldAppearance'),
280
- },
281
- ],
282
- }]
283
- }] });
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcmFuZ2UvaW5wdXQtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcmFuZ2UvaW5wdXQtcmFuZ2UudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBRVIsSUFBSSxFQUNKLFNBQVMsRUFDVCxZQUFZLEdBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLGFBQWEsRUFDYixZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLFFBQVEsRUFFUixjQUFjLEVBRWQsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUVwQixPQUFPLEVBQ1AsUUFBUSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDSCw2QkFBNkIsRUFDN0Isd0JBQXdCLEVBQ3hCLGdDQUFnQyxFQUVoQyx3QkFBd0IsR0FHM0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7O0FBbUIvRCxNQUFNLE9BQU8sc0JBQ1QsU0FBUSxrQkFBb0M7SUFxRDVDLFlBSUksT0FBeUIsRUFDRSxpQkFBb0MsRUFFOUMsUUFB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Z0JBSXBCLFFBQVE7c0JBRHhCLFNBQVM7dUJBQUMsaUJBQWlCO2dCQUs1QixHQUFHO3NCQUZGLEtBQUs7Z0JBTU4sR0FBRztzQkFGRixLQUFLO2dCQU1OLE9BQU87c0JBRk4sS0FBSztnQkFTTixLQUFLO3NCQUxKLEtBQUs7Z0JBWU4sUUFBUTtzQkFMUCxLQUFLO2dCQVNOLFFBQVE7c0JBRlAsS0FBSztnQkFNTixnQkFBZ0I7c0JBRmYsS0FBSztnQkFNTixpQkFBaUI7c0JBRmhCLEtBQUs7Z0JBTU4sU0FBUztzQkFGUixLQUFLO2dCQTBFTixlQUFlO0FBdUluQixNQUFNLE9BQU8sK0JBQStCOzs2SEFBL0IsK0JBQStCO2lIQUEvQiwrQkFBK0IsbURBVDdCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQztZQUNsQixVQUFVLEVBQUUsQ0FBQyxFQUFDLGFBQWEsRUFBYSxFQUFFLEVBQUUsQ0FDeEMsYUFBYSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQztTQUMzRDtLQUNKOzRGQUVRLCtCQUErQjtrQkFYM0MsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLHdCQUF3Qjs0QkFDakMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDOzRCQUNsQixVQUFVLEVBQUUsQ0FBQyxFQUFDLGFBQWEsRUFBYSxFQUFFLEVBQUUsQ0FDeEMsYUFBYSxDQUFDLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQzt5QkFDM0Q7cUJBQ0o7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgRU1QVFlfUVVFUlksXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgdHVpQ2xhbXAsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgdHVpSXNOYXRpdmVGb2N1c2VkLFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZEluLFxuICAgIFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQsXG4gICAgdHVpUHVyZSxcbiAgICB0dWlSb3VuZCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRFWFRGSUVMRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIFRVSV9URVhURklFTERfQVBQRUFSQU5DRSxcbiAgICBUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUixcbiAgICBUdWlEZWNpbWFsLFxuICAgIHR1aUdldEZyYWN0aW9uUGFydFBhZGRlZCxcbiAgICBUdWlUZXh0ZmllbGRDb250cm9sbGVyLFxuICAgIFR1aVdpdGhPcHRpb25hbE1pbk1heCxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHtUdWlJbnB1dE51bWJlckNvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2lucHV0LW51bWJlcic7XG5pbXBvcnQge1R1aVJhbmdlQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvcmFuZ2UnO1xuaW1wb3J0IHtUVUlfRkxPQVRJTkdfUFJFQ0lTSU9OfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aUtleVN0ZXBzfSBmcm9tICdAdGFpZ2EtdWkva2l0L3R5cGVzJztcbmltcG9ydCB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0dWktaW5wdXQtcmFuZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1yYW5nZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbnB1dC1yYW5nZS5zdHlsZS5sZXNzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuZGF0YS1zaXplXSc6ICdjb250cm9sbGVyLnNpemUnLFxuICAgICAgICAnW2NsYXNzLl9sYWJlbC1vdXRzaWRlXSc6ICdjb250cm9sbGVyLmxhYmVsT3V0c2lkZScsXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IoVHVpSW5wdXRSYW5nZUNvbXBvbmVudCksXG4gICAgICAgIHR1aUFzQ29udHJvbChUdWlJbnB1dFJhbmdlQ29tcG9uZW50KSxcbiAgICAgICAgVEVYVEZJRUxEX0NPTlRST0xMRVJfUFJPVklERVIsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRSYW5nZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQWJzdHJhY3RUdWlDb250cm9sPFtudW1iZXIsIG51bWJlcl0+XG4gICAgaW1wbGVtZW50cyBUdWlXaXRoT3B0aW9uYWxNaW5NYXg8bnVtYmVyPiwgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQFZpZXdDaGlsZHJlbihUdWlJbnB1dE51bWJlckNvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0TnVtYmVyUmVmczogUXVlcnlMaXN0PFR1aUlucHV0TnVtYmVyQ29tcG9uZW50PiA9IEVNUFRZX1FVRVJZO1xuXG4gICAgQFZpZXdDaGlsZChUdWlSYW5nZUNvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhbmdlUmVmOiBUdWlSYW5nZUNvbXBvbmVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIG1pbiA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWF4ID0gMTAwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AocSA9PiBxID4gMCwgJ1txdWFudHVtXSBtdXN0IGJlIHBvc2l0aXZlJylcbiAgICBxdWFudHVtID0gMTtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKFxuICAgICAgICBzID0+IHMgPj0gMCAmJiBOdW1iZXIuaXNJbnRlZ2VyKHMpLFxuICAgICAgICAnW3N0ZXBzXSBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyJyxcbiAgICApXG4gICAgc3RlcHMgPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoXG4gICAgICAgIHMgPT4gcyA+IDAgJiYgTnVtYmVyLmlzSW50ZWdlcihzKSxcbiAgICAgICAgJ1tzZWdtZW50c10gbXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyJyxcbiAgICApXG4gICAgc2VnbWVudHMgPSAxO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGtleVN0ZXBzOiBUdWlLZXlTdGVwcyB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIGxlZnRWYWx1ZUNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8VHVpQ29udGV4dFdpdGhJbXBsaWNpdDxudW1iZXI+PiA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHJpZ2h0VmFsdWVDb250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50PFR1aUNvbnRleHRXaXRoSW1wbGljaXQ8bnVtYmVyPj4gPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBwbHVyYWxpemU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsID0gbnVsbDtcblxuICAgIGxhc3RBY3RpdmVTaWRlOiAnbGVmdCcgfCAncmlnaHQnID0gJ2xlZnQnO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBTZWxmKClcbiAgICAgICAgQEluamVjdChOZ0NvbnRyb2wpXG4gICAgICAgIGNvbnRyb2w6IE5nQ29udHJvbCB8IG51bGwsXG4gICAgICAgIEBJbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQEluamVjdChUVUlfSVNfTU9CSUxFKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfQVBQRUFSQU5DRSlcbiAgICAgICAgcmVhZG9ubHkgYXBwZWFyYW5jZTogc3RyaW5nLFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQEluamVjdChUVUlfVEVYVEZJRUxEX1dBVENIRURfQ09OVFJPTExFUilcbiAgICAgICAgcmVhZG9ubHkgY29udHJvbGxlcjogVHVpVGV4dGZpZWxkQ29udHJvbGxlcixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIGdldCBsZWZ0Rm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0TnVtYmVyUmVmcy5maXJzdD8ubmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8fCBudWxsO1xuICAgIH1cblxuICAgIGdldCByaWdodEZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dE51bWJlclJlZnMubGFzdD8ubmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8fCBudWxsO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVGb2N1c2FibGVFbGVtZW50KCk6IFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWRcbiAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgOiB0aGlzLmxlZnRGb2N1c2FibGVFbGVtZW50IHx8IHRoaXMucmlnaHRGb2N1c2FibGVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHVpSXNOYXRpdmVGb2N1c2VkSW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGdldCBzaG93TGVmdFZhbHVlQ29udGVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICB0aGlzLmxlZnRWYWx1ZUNvbnRlbnQgJiZcbiAgICAgICAgICAgICAgICAhdHVpSXNOYXRpdmVGb2N1c2VkKHRoaXMubGVmdEZvY3VzYWJsZUVsZW1lbnQpICYmXG4gICAgICAgICAgICAgICAgISh0aGlzLnJhbmdlUmVmPy5mb2N1c2VkICYmIHRoaXMubGFzdEFjdGl2ZVNpZGUgPT09ICdsZWZ0JyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dSaWdodFZhbHVlQ29udGVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICB0aGlzLnJpZ2h0VmFsdWVDb250ZW50ICYmXG4gICAgICAgICAgICAgICAgIXR1aUlzTmF0aXZlRm9jdXNlZCh0aGlzLnJpZ2h0Rm9jdXNhYmxlRWxlbWVudCkgJiZcbiAgICAgICAgICAgICAgICAhKHRoaXMucmFuZ2VSZWY/LmZvY3VzZWQgJiYgdGhpcy5sYXN0QWN0aXZlU2lkZSA9PT0gJ3JpZ2h0JyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHByZWNpc2lvbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdHVpR2V0RnJhY3Rpb25QYXJ0UGFkZGVkKHRoaXMucXVhbnR1bSkubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldCBkZWNpbWFsKCk6IFR1aURlY2ltYWwge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVjaXNpb24gPyAnbm90LXplcm8nIDogJ25ldmVyJztcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRTdGVwcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcyB8fCAodGhpcy5tYXggLSB0aGlzLm1pbikgLyB0aGlzLnF1YW50dW07XG4gICAgfVxuXG4gICAgZ2V0IHN0ZXAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1heCAtIHRoaXMubWluKSAvIHRoaXMuY29tcHV0ZWRTdGVwcztcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIGNvbXB1dGVLZXlTdGVwcyhrZXlTdGVwczogVHVpS2V5U3RlcHMgfCBudWxsLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBUdWlLZXlTdGVwcyB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBrZXlTdGVwcyB8fCBbXG4gICAgICAgICAgICAgICAgWzAsIG1pbl0sXG4gICAgICAgICAgICAgICAgWzEwMCwgbWF4XSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkFjdGl2ZVpvbmUoYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChhY3RpdmUpO1xuICAgIH1cblxuICAgIG9uVGV4dElucHV0Rm9jdXNlZChmb2N1c2VkOiBib29sZWFuLCByaWdodDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoZm9jdXNlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2xlZnRUZXh0SW5wdXRSZWYsIHJpZ2h0VGV4dElucHV0UmVmXSA9IHRoaXMuaW5wdXROdW1iZXJSZWZzO1xuICAgICAgICBjb25zdCBpbnB1dFJlZiA9IHJpZ2h0ID8gcmlnaHRUZXh0SW5wdXRSZWYgOiBsZWZ0VGV4dElucHV0UmVmO1xuICAgICAgICBjb25zdCB2YWx1ZUluZGV4ID0gcmlnaHQgPyAxIDogMDtcblxuICAgICAgICBpZiAoIWlucHV0UmVmLm5hdGl2ZVZhbHVlIHx8IGlucHV0UmVmLnZhbHVlICE9PSB0aGlzLnZhbHVlW3ZhbHVlSW5kZXhdKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRleHRJbnB1dFZhbHVlKHRoaXMuc2FmZUN1cnJlbnRWYWx1ZVt2YWx1ZUluZGV4XSwgcmlnaHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlQnlTdGVwKFxuICAgICAgICBldmVudDogRXZlbnQgfCBLZXlib2FyZEV2ZW50LFxuICAgICAgICBbbGVmdENvZWZmaWNpZW50LCByaWdodENvZWZmaWNpZW50XTogW251bWJlciwgbnVtYmVyXSxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnZhbHVlR3VhcmQoW1xuICAgICAgICAgICAgdGhpcy52YWx1ZVswXSArIGxlZnRDb2VmZmljaWVudCAqIHRoaXMuc3RlcCxcbiAgICAgICAgICAgIHRoaXMudmFsdWVbMV0gKyByaWdodENvZWZmaWNpZW50ICogdGhpcy5zdGVwLFxuICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgbGVmdFZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlWzBdICE9PSB0aGlzLnZhbHVlWzBdO1xuICAgICAgICBjb25zdCByaWdodFZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlWzFdICE9PSB0aGlzLnZhbHVlWzFdO1xuXG4gICAgICAgIGlmIChsZWZ0VmFsdWVDaGFuZ2VkIHx8IHJpZ2h0VmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNhZmVseVVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVGV4dElucHV0VmFsdWUoXG4gICAgICAgICAgICAgICAgbmV3VmFsdWVbcmlnaHRWYWx1ZUNoYW5nZWQgPyAxIDogMF0sXG4gICAgICAgICAgICAgICAgcmlnaHRWYWx1ZUNoYW5nZWQsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbnB1dExlZnQodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYWZlbHlVcGRhdGVWYWx1ZShbdmFsdWUgPz8gdGhpcy5zYWZlQ3VycmVudFZhbHVlWzBdLCB0aGlzLnZhbHVlWzFdXSk7XG4gICAgfVxuXG4gICAgb25JbnB1dFJpZ2h0KHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2FmZWx5VXBkYXRlVmFsdWUoW3RoaXMudmFsdWVbMF0sIHZhbHVlID8/IHRoaXMuc2FmZUN1cnJlbnRWYWx1ZVsxXV0pO1xuICAgIH1cblxuICAgIG9uUmFuZ2VWYWx1ZSh2YWx1ZTogW251bWJlciwgbnVtYmVyXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhZmVseVVwZGF0ZVZhbHVlKHZhbHVlKTtcblxuICAgICAgICBjb25zdCByaWdodFZhbHVlQ2hhbmdlZCA9IHRoaXMubGFzdEFjdGl2ZVNpZGUgPT09ICdyaWdodCc7XG5cbiAgICAgICAgdGhpcy51cGRhdGVUZXh0SW5wdXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMudmFsdWVbcmlnaHRWYWx1ZUNoYW5nZWQgPyAxIDogMF0sXG4gICAgICAgICAgICByaWdodFZhbHVlQ2hhbmdlZCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmb2N1c1RvVGV4dElucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID1cbiAgICAgICAgICAgIHRoaXMubGFzdEFjdGl2ZVNpZGUgPT09ICdsZWZ0J1xuICAgICAgICAgICAgICAgID8gdGhpcy5sZWZ0Rm9jdXNhYmxlRWxlbWVudFxuICAgICAgICAgICAgICAgIDogdGhpcy5yaWdodEZvY3VzYWJsZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlICYmIGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQWN0aXZlVGh1bWJDaGFuZ2UoYWN0aXZlVGh1bWI6ICdsZWZ0JyB8ICdyaWdodCcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sYXN0QWN0aXZlU2lkZSA9IGFjdGl2ZVRodW1iO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGYWxsYmFja1ZhbHVlKCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgICAgICByZXR1cm4gWzAsIDBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2FmZWx5VXBkYXRlVmFsdWUodmFsdWU6IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnZhbHVlR3VhcmQodmFsdWUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbHVlR3VhcmQoW2xlZnRWYWx1ZSwgcmlnaHRWYWx1ZV06IFtudW1iZXIsIG51bWJlcl0pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICAgICAgY29uc3QgbGVmdENhbGlicmF0ZWRWYWx1ZSA9IHRoaXMuY2FsaWJyYXRlKGxlZnRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHJpZ2h0Q2FsaWJyYXRlZFZhbHVlID0gdGhpcy5jYWxpYnJhdGUocmlnaHRWYWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIE1hdGgubWluKGxlZnRDYWxpYnJhdGVkVmFsdWUsIHRoaXMudmFsdWVbMV0pLFxuICAgICAgICAgICAgTWF0aC5tYXgocmlnaHRDYWxpYnJhdGVkVmFsdWUsIHRoaXMudmFsdWVbMF0pLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsaWJyYXRlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCByb3VuZGVkVmFsdWUgPSB0dWlSb3VuZChcbiAgICAgICAgICAgIE1hdGgucm91bmQodmFsdWUgLyB0aGlzLnF1YW50dW0pICogdGhpcy5xdWFudHVtLFxuICAgICAgICAgICAgVFVJX0ZMT0FUSU5HX1BSRUNJU0lPTixcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdHVpQ2xhbXAocm91bmRlZFZhbHVlLCB0aGlzLm1pbiwgdGhpcy5tYXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVGV4dElucHV0VmFsdWUodmFsdWU6IG51bWJlciwgcmlnaHQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgW2xlZnRJbnB1dFJlZiwgcmlnaHRJbnB1dFJlZl0gPSB0aGlzLmlucHV0TnVtYmVyUmVmcztcbiAgICAgICAgY29uc3QgdGV4dElucHV0UmVmID0gcmlnaHQgPyByaWdodElucHV0UmVmIDogbGVmdElucHV0UmVmO1xuXG4gICAgICAgIGlmICh0ZXh0SW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRleHRJbnB1dFJlZi5uYXRpdmVWYWx1ZSA9IHRleHRJbnB1dFJlZi5nZXRGb3JtYXR0ZWRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3R1aVRleHRmaWVsZEFwcGVhcmFuY2VdJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX1RFWFRGSUVMRF9BUFBFQVJBTkNFLFxuICAgICAgICAgICAgZGVwczogW0VsZW1lbnRSZWZdLFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKHtuYXRpdmVFbGVtZW50fTogRWxlbWVudFJlZikgPT5cbiAgICAgICAgICAgICAgICBuYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgndHVpVGV4dGZpZWxkQXBwZWFyYW5jZScpLFxuICAgICAgICB9LFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aVRleHRmaWVsZEFwcGVhcmFuY2VEaXJlY3RpdmUge31cbiIsIjxkaXZcbiAgICB0dWlXcmFwcGVyXG4gICAgY2xhc3M9XCJ0LXdyYXBwZXJcIlxuICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbZm9jdXNdPVwiY29tcHV0ZWRGb2N1c2VkXCJcbiAgICBbaG92ZXJdPVwicHNldWRvSG92ZXJcIlxuICAgIFtpbnZhbGlkXT1cImNvbXB1dGVkSW52YWxpZFwiXG4gICAgKHR1aUFjdGl2ZVpvbmVDaGFuZ2UpPVwib25BY3RpdmVab25lKCRldmVudClcIlxuPlxuICAgIDx0dWktaW5wdXQtbnVtYmVyXG4gICAgICAgIHR1aVRleHRmaWVsZEFwcGVhcmFuY2U9XCJub25lXCJcbiAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1yYW5nZV9fbGVmdC1pbnB1dFwiXG4gICAgICAgIGNsYXNzPVwidC1sZWZ0IHQtdGV4dC1pbnB1dFwiXG4gICAgICAgIFttaW5dPVwibWluXCJcbiAgICAgICAgW21heF09XCJ2YWx1ZVsxXVwiXG4gICAgICAgIFtwcmVjaXNpb25dPVwicHJlY2lzaW9uXCJcbiAgICAgICAgW2RlY2ltYWxdPVwiZGVjaW1hbFwiXG4gICAgICAgIFtwb3N0Zml4XT1cInBsdXJhbGl6ZSAmJiAhc2hvd0xlZnRWYWx1ZUNvbnRlbnQgPyAodmFsdWVbMF0gfCBpMThuUGx1cmFsIDogcGx1cmFsaXplKSA6ICcnXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVswXVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW5wdXRMZWZ0KCRldmVudClcIlxuICAgICAgICAoZm9jdXNlZENoYW5nZSk9XCJvblRleHRJbnB1dEZvY3VzZWQoJGV2ZW50LCBmYWxzZSlcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cImNoYW5nZUJ5U3RlcCgkZXZlbnQsIFsxLCAwXSlcIlxuICAgICAgICAoa2V5ZG93bi5hcnJvd0Rvd24pPVwiY2hhbmdlQnlTdGVwKCRldmVudCwgWy0xLCAwXSlcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cInNob3dMZWZ0VmFsdWVDb250ZW50XCJcbiAgICAgICAgICAgIG5nUHJvamVjdEFzPVwidHVpQ29udGVudFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cImxlZnRWYWx1ZUNvbnRlbnQgYXMgdGV4dDsgY29udGV4dDogeyRpbXBsaWNpdDogdmFsdWVbMF19XCI+XG4gICAgICAgICAgICAgICAge3sgdGV4dCB9fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvdHVpLWlucHV0LW51bWJlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0LXJpZ2h0XCI+XG4gICAgICAgIDx0dWktaW5wdXQtbnVtYmVyXG4gICAgICAgICAgICB0dWlUZXh0ZmllbGRBcHBlYXJhbmNlPVwibm9uZVwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LXJhbmdlX19yaWdodC1pbnB1dFwiXG4gICAgICAgICAgICBjbGFzcz1cInQtdGV4dC1pbnB1dFwiXG4gICAgICAgICAgICBbbWluXT1cInZhbHVlWzBdXCJcbiAgICAgICAgICAgIFttYXhdPVwibWF4XCJcbiAgICAgICAgICAgIFtwcmVjaXNpb25dPVwicHJlY2lzaW9uXCJcbiAgICAgICAgICAgIFtkZWNpbWFsXT1cImRlY2ltYWxcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbXB1dGVkRGlzYWJsZWRcIlxuICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlWzFdXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uSW5wdXRSaWdodCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChmb2N1c2VkQ2hhbmdlKT1cIm9uVGV4dElucHV0Rm9jdXNlZCgkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmFycm93VXApPVwiY2hhbmdlQnlTdGVwKCRldmVudCwgWzAsIDFdKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd0Rvd24pPVwiY2hhbmdlQnlTdGVwKCRldmVudCwgWzAsIC0xXSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93UmlnaHRWYWx1ZUNvbnRlbnRcIlxuICAgICAgICAgICAgICAgIG5nUHJvamVjdEFzPVwidHVpQ29udGVudFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqcG9seW1vcnBoZXVzT3V0bGV0PVwicmlnaHRWYWx1ZUNvbnRlbnQgYXMgdGV4dDsgY29udGV4dDogeyRpbXBsaWNpdDogdmFsdWVbMV19XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRleHQgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3R1aS1pbnB1dC1udW1iZXI+XG5cbiAgICAgICAgPCEtLSBUT0RPIHJlcGxhY2UgYnkgcG9zdGZpeCBvZiB0aGUgcmlnaHQgSW5wdXROdW1iZXIgKGFmdGVyIGZpeCBodHRwczovL2dpdGh1Yi5jb20vVGlua29mZi90YWlnYS11aS9pc3N1ZXMvMTE5MykgLS0+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAqbmdJZj1cIiFzaG93UmlnaHRWYWx1ZUNvbnRlbnQgJiYgcGx1cmFsaXplXCJcbiAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtcmFuZ2VfX3BsdXJhbGl6ZS1yaWdodFwiXG4gICAgICAgICAgICBjbGFzcz1cInQtcGx1cmFsaXplLXJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgJm5ic3A7e3sgdmFsdWVbMV0gfCBpMThuUGx1cmFsIDogcGx1cmFsaXplIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDx0dWktcmFuZ2VcbiAgICAgICAgY2xhc3M9XCJ0LXJhbmdlXCJcbiAgICAgICAgW21pbl09XCJtaW5cIlxuICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgIFtzdGVwXT1cInN0ZXBcIlxuICAgICAgICBbc2VnbWVudHNdPVwic2VnbWVudHNcIlxuICAgICAgICBba2V5U3RlcHNdPVwiY29tcHV0ZUtleVN0ZXBzKGtleVN0ZXBzLCBtaW4sIG1heClcIlxuICAgICAgICBbZm9jdXNhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInJlYWRPbmx5IHx8IGRpc2FibGVkXCJcbiAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblJhbmdlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICh0dWlQcmVzc2VkQ2hhbmdlKT1cImZvY3VzVG9UZXh0SW5wdXQoKVwiXG4gICAgICAgIChhY3RpdmVUaHVtYkNoYW5nZSk9XCJvbkFjdGl2ZVRodW1iQ2hhbmdlKCRldmVudClcIlxuICAgID48L3R1aS1yYW5nZT5cbjwvZGl2PlxuIl19
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcmFuZ2UvaW5wdXQtcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcmFuZ2UvaW5wdXQtcmFuZ2UudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFFUixJQUFJLEVBQ0osU0FBUyxFQUNULFlBQVksR0FDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUNILGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsYUFBYSxFQUNiLFlBQVksRUFDWiwwQkFBMEIsRUFDMUIsUUFBUSxFQUVSLGNBQWMsRUFFZCxrQkFBa0IsRUFDbEIsb0JBQW9CLEVBRXBCLE9BQU8sRUFDUCxRQUFRLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILDZCQUE2QixFQUM3QixnQ0FBZ0MsRUFFaEMsd0JBQXdCLEdBRzNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQW1CL0QsTUFBTSxPQUFPLHNCQUNULFNBQVEsa0JBQW9DO0lBcUQ1QyxZQUlJLE9BQXlCLEVBQ0UsaUJBQW9DLEVBRTlDLFFBQWlCLEVBQ0csVUFBc0IsRUFFbEQsVUFB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QUZGLEtBQUs7Z0JBTU4sR0FBRztzQkFGRixLQUFLO2dCQU1OLE9BQU87c0JBRk4sS0FBSztnQkFTTixLQUFLO3NCQUxKLEtBQUs7Z0JBWU4sUUFBUTtzQkFMUCxLQUFLO2dCQVNOLFFBQVE7c0JBRlAsS0FBSztnQkFNTixnQkFBZ0I7c0JBRmYsS0FBSztnQkFNTixpQkFBaUI7c0JBRmhCLEtBQUs7Z0JBTU4sU0FBUztzQkFGUixLQUFLO2dCQTRFTixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdFR1aUNvbnRyb2wsXG4gICAgRU1QVFlfUVVFUlksXG4gICAgVFVJX0lTX01PQklMRSxcbiAgICB0dWlBc0NvbnRyb2wsXG4gICAgdHVpQXNGb2N1c2FibGVJdGVtQWNjZXNzb3IsXG4gICAgdHVpQ2xhbXAsXG4gICAgVHVpQ29udGV4dFdpdGhJbXBsaWNpdCxcbiAgICB0dWlEZWZhdWx0UHJvcCxcbiAgICBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3IsXG4gICAgdHVpSXNOYXRpdmVGb2N1c2VkLFxuICAgIHR1aUlzTmF0aXZlRm9jdXNlZEluLFxuICAgIFR1aU5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQsXG4gICAgdHVpUHVyZSxcbiAgICB0dWlSb3VuZCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1xuICAgIFRFWFRGSUVMRF9DT05UUk9MTEVSX1BST1ZJREVSLFxuICAgIFRVSV9URVhURklFTERfV0FUQ0hFRF9DT05UUk9MTEVSLFxuICAgIFR1aURlY2ltYWwsXG4gICAgdHVpR2V0RnJhY3Rpb25QYXJ0UGFkZGVkLFxuICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXIsXG4gICAgVHVpV2l0aE9wdGlvbmFsTWluTWF4LFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aUlucHV0TnVtYmVyQ29tcG9uZW50fSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyJztcbmltcG9ydCB7VHVpUmFuZ2VDb21wb25lbnR9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9yYW5nZSc7XG5pbXBvcnQge1RVSV9GTE9BVElOR19QUkVDSVNJT059IGZyb20gJ0B0YWlnYS11aS9raXQvY29uc3RhbnRzJztcbmltcG9ydCB7VHVpS2V5U3RlcHN9IGZyb20gJ0B0YWlnYS11aS9raXQvdHlwZXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNDb250ZW50fSBmcm9tICdAdGlua29mZi9uZy1wb2x5bW9ycGhldXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1pbnB1dC1yYW5nZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LXJhbmdlLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2lucHV0LXJhbmdlLnN0eWxlLmxlc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5kYXRhLXNpemVdJzogJ2NvbnRyb2xsZXIuc2l6ZScsXG4gICAgICAgICdbY2xhc3MuX2xhYmVsLW91dHNpZGVdJzogJ2NvbnRyb2xsZXIubGFiZWxPdXRzaWRlJyxcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0ZvY3VzYWJsZUl0ZW1BY2Nlc3NvcihUdWlJbnB1dFJhbmdlQ29tcG9uZW50KSxcbiAgICAgICAgdHVpQXNDb250cm9sKFR1aUlucHV0UmFuZ2VDb21wb25lbnQpLFxuICAgICAgICBURVhURklFTERfQ09OVFJPTExFUl9QUk9WSURFUixcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dFJhbmdlQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUNvbnRyb2w8W251bWJlciwgbnVtYmVyXT5cbiAgICBpbXBsZW1lbnRzIFR1aVdpdGhPcHRpb25hbE1pbk1heDxudW1iZXI+LCBUdWlGb2N1c2FibGVFbGVtZW50QWNjZXNzb3JcbntcbiAgICBAVmlld0NoaWxkcmVuKFR1aUlucHV0TnVtYmVyQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXROdW1iZXJSZWZzOiBRdWVyeUxpc3Q8VHVpSW5wdXROdW1iZXJDb21wb25lbnQ+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBAVmlld0NoaWxkKFR1aVJhbmdlQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmFuZ2VSZWY6IFR1aVJhbmdlQ29tcG9uZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbWluID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgQHR1aURlZmF1bHRQcm9wKClcbiAgICBtYXggPSAxMDA7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcChxID0+IHEgPiAwLCAnW3F1YW50dW1dIG11c3QgYmUgcG9zaXRpdmUnKVxuICAgIHF1YW50dW0gPSAxO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoXG4gICAgICAgIHMgPT4gcyA+PSAwICYmIE51bWJlci5pc0ludGVnZXIocyksXG4gICAgICAgICdbc3RlcHNdIG11c3QgYmUgbm9uLW5lZ2F0aXZlIGludGVnZXInLFxuICAgIClcbiAgICBzdGVwcyA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcChcbiAgICAgICAgcyA9PiBzID4gMCAmJiBOdW1iZXIuaXNJbnRlZ2VyKHMpLFxuICAgICAgICAnW3NlZ21lbnRzXSBtdXN0IGJlIHBvc2l0aXZlIGludGVnZXInLFxuICAgIClcbiAgICBzZWdtZW50cyA9IDE7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAga2V5U3RlcHM6IFR1aUtleVN0ZXBzIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgbGVmdFZhbHVlQ29udGVudDogUG9seW1vcnBoZXVzQ29udGVudDxUdWlDb250ZXh0V2l0aEltcGxpY2l0PG51bWJlcj4+ID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIEB0dWlEZWZhdWx0UHJvcCgpXG4gICAgcmlnaHRWYWx1ZUNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ8VHVpQ29udGV4dFdpdGhJbXBsaWNpdDxudW1iZXI+PiA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHBsdXJhbGl6ZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG4gICAgbGFzdEFjdGl2ZVNpZGU6ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQFNlbGYoKVxuICAgICAgICBASW5qZWN0KE5nQ29udHJvbClcbiAgICAgICAgY29udHJvbDogTmdDb250cm9sIHwgbnVsbCxcbiAgICAgICAgQEluamVjdChDaGFuZ2VEZXRlY3RvclJlZikgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9JU19NT0JJTEUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4sXG4gICAgICAgIEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBASW5qZWN0KFRVSV9URVhURklFTERfV0FUQ0hFRF9DT05UUk9MTEVSKVxuICAgICAgICByZWFkb25seSBjb250cm9sbGVyOiBUdWlUZXh0ZmllbGRDb250cm9sbGVyLFxuICAgICkge1xuICAgICAgICBzdXBlcihjb250cm9sLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgfVxuXG4gICAgZ2V0IGxlZnRGb2N1c2FibGVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXROdW1iZXJSZWZzLmZpcnN0Py5uYXRpdmVGb2N1c2FibGVFbGVtZW50IHx8IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IHJpZ2h0Rm9jdXNhYmxlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0TnVtYmVyUmVmcy5sYXN0Py5uYXRpdmVGb2N1c2FibGVFbGVtZW50IHx8IG51bGw7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogVHVpTmF0aXZlRm9jdXNhYmxlRWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZFxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IHRoaXMubGVmdEZvY3VzYWJsZUVsZW1lbnQgfHwgdGhpcy5yaWdodEZvY3VzYWJsZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0dWlJc05hdGl2ZUZvY3VzZWRJbih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IGFwcGVhcmFuY2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5hcHBlYXJhbmNlO1xuICAgIH1cblxuICAgIGdldCBzaG93TGVmdFZhbHVlQ29udGVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICB0aGlzLmxlZnRWYWx1ZUNvbnRlbnQgJiZcbiAgICAgICAgICAgICAgICAhdHVpSXNOYXRpdmVGb2N1c2VkKHRoaXMubGVmdEZvY3VzYWJsZUVsZW1lbnQpICYmXG4gICAgICAgICAgICAgICAgISh0aGlzLnJhbmdlUmVmPy5mb2N1c2VkICYmIHRoaXMubGFzdEFjdGl2ZVNpZGUgPT09ICdsZWZ0JyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dSaWdodFZhbHVlQ29udGVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICB0aGlzLnJpZ2h0VmFsdWVDb250ZW50ICYmXG4gICAgICAgICAgICAgICAgIXR1aUlzTmF0aXZlRm9jdXNlZCh0aGlzLnJpZ2h0Rm9jdXNhYmxlRWxlbWVudCkgJiZcbiAgICAgICAgICAgICAgICAhKHRoaXMucmFuZ2VSZWY/LmZvY3VzZWQgJiYgdGhpcy5sYXN0QWN0aXZlU2lkZSA9PT0gJ3JpZ2h0JyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IHByZWNpc2lvbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdHVpR2V0RnJhY3Rpb25QYXJ0UGFkZGVkKHRoaXMucXVhbnR1bSkubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldCBkZWNpbWFsKCk6IFR1aURlY2ltYWwge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVjaXNpb24gPyAnbm90LXplcm8nIDogJ25ldmVyJztcbiAgICB9XG5cbiAgICBnZXQgY29tcHV0ZWRTdGVwcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcyB8fCAodGhpcy5tYXggLSB0aGlzLm1pbikgLyB0aGlzLnF1YW50dW07XG4gICAgfVxuXG4gICAgZ2V0IHN0ZXAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm1heCAtIHRoaXMubWluKSAvIHRoaXMuY29tcHV0ZWRTdGVwcztcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIGNvbXB1dGVLZXlTdGVwcyhrZXlTdGVwczogVHVpS2V5U3RlcHMgfCBudWxsLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBUdWlLZXlTdGVwcyB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBrZXlTdGVwcyB8fCBbXG4gICAgICAgICAgICAgICAgWzAsIG1pbl0sXG4gICAgICAgICAgICAgICAgWzEwMCwgbWF4XSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBvbkFjdGl2ZVpvbmUoYWN0aXZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9jdXNlZChhY3RpdmUpO1xuICAgIH1cblxuICAgIG9uVGV4dElucHV0Rm9jdXNlZChmb2N1c2VkOiBib29sZWFuLCByaWdodDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoZm9jdXNlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2xlZnRUZXh0SW5wdXRSZWYsIHJpZ2h0VGV4dElucHV0UmVmXSA9IHRoaXMuaW5wdXROdW1iZXJSZWZzO1xuICAgICAgICBjb25zdCBpbnB1dFJlZiA9IHJpZ2h0ID8gcmlnaHRUZXh0SW5wdXRSZWYgOiBsZWZ0VGV4dElucHV0UmVmO1xuICAgICAgICBjb25zdCB2YWx1ZUluZGV4ID0gcmlnaHQgPyAxIDogMDtcblxuICAgICAgICBpZiAoIWlucHV0UmVmLm5hdGl2ZVZhbHVlIHx8IGlucHV0UmVmLnZhbHVlICE9PSB0aGlzLnZhbHVlW3ZhbHVlSW5kZXhdKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRleHRJbnB1dFZhbHVlKHRoaXMuc2FmZUN1cnJlbnRWYWx1ZVt2YWx1ZUluZGV4XSwgcmlnaHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlQnlTdGVwKFxuICAgICAgICBldmVudDogRXZlbnQgfCBLZXlib2FyZEV2ZW50LFxuICAgICAgICBbbGVmdENvZWZmaWNpZW50LCByaWdodENvZWZmaWNpZW50XTogW251bWJlciwgbnVtYmVyXSxcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnZhbHVlR3VhcmQoW1xuICAgICAgICAgICAgdGhpcy52YWx1ZVswXSArIGxlZnRDb2VmZmljaWVudCAqIHRoaXMuc3RlcCxcbiAgICAgICAgICAgIHRoaXMudmFsdWVbMV0gKyByaWdodENvZWZmaWNpZW50ICogdGhpcy5zdGVwLFxuICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgbGVmdFZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlWzBdICE9PSB0aGlzLnZhbHVlWzBdO1xuICAgICAgICBjb25zdCByaWdodFZhbHVlQ2hhbmdlZCA9IG5ld1ZhbHVlWzFdICE9PSB0aGlzLnZhbHVlWzFdO1xuXG4gICAgICAgIGlmIChsZWZ0VmFsdWVDaGFuZ2VkIHx8IHJpZ2h0VmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNhZmVseVVwZGF0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVGV4dElucHV0VmFsdWUoXG4gICAgICAgICAgICAgICAgbmV3VmFsdWVbcmlnaHRWYWx1ZUNoYW5nZWQgPyAxIDogMF0sXG4gICAgICAgICAgICAgICAgcmlnaHRWYWx1ZUNoYW5nZWQsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbnB1dExlZnQodmFsdWU6IG51bWJlciB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYWZlbHlVcGRhdGVWYWx1ZShbdmFsdWUgPz8gdGhpcy5zYWZlQ3VycmVudFZhbHVlWzBdLCB0aGlzLnZhbHVlWzFdXSk7XG4gICAgfVxuXG4gICAgb25JbnB1dFJpZ2h0KHZhbHVlOiBudW1iZXIgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2FmZWx5VXBkYXRlVmFsdWUoW3RoaXMudmFsdWVbMF0sIHZhbHVlID8/IHRoaXMuc2FmZUN1cnJlbnRWYWx1ZVsxXV0pO1xuICAgIH1cblxuICAgIG9uUmFuZ2VWYWx1ZSh2YWx1ZTogW251bWJlciwgbnVtYmVyXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNhZmVseVVwZGF0ZVZhbHVlKHZhbHVlKTtcblxuICAgICAgICBjb25zdCByaWdodFZhbHVlQ2hhbmdlZCA9IHRoaXMubGFzdEFjdGl2ZVNpZGUgPT09ICdyaWdodCc7XG5cbiAgICAgICAgdGhpcy51cGRhdGVUZXh0SW5wdXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMudmFsdWVbcmlnaHRWYWx1ZUNoYW5nZWQgPyAxIDogMF0sXG4gICAgICAgICAgICByaWdodFZhbHVlQ2hhbmdlZCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmb2N1c1RvVGV4dElucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID1cbiAgICAgICAgICAgIHRoaXMubGFzdEFjdGl2ZVNpZGUgPT09ICdsZWZ0J1xuICAgICAgICAgICAgICAgID8gdGhpcy5sZWZ0Rm9jdXNhYmxlRWxlbWVudFxuICAgICAgICAgICAgICAgIDogdGhpcy5yaWdodEZvY3VzYWJsZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlICYmIGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQWN0aXZlVGh1bWJDaGFuZ2UoYWN0aXZlVGh1bWI6ICdsZWZ0JyB8ICdyaWdodCcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sYXN0QWN0aXZlU2lkZSA9IGFjdGl2ZVRodW1iO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGYWxsYmFja1ZhbHVlKCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgICAgICByZXR1cm4gWzAsIDBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2FmZWx5VXBkYXRlVmFsdWUodmFsdWU6IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnZhbHVlR3VhcmQodmFsdWUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbHVlR3VhcmQoW2xlZnRWYWx1ZSwgcmlnaHRWYWx1ZV06IFtudW1iZXIsIG51bWJlcl0pOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICAgICAgY29uc3QgbGVmdENhbGlicmF0ZWRWYWx1ZSA9IHRoaXMuY2FsaWJyYXRlKGxlZnRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHJpZ2h0Q2FsaWJyYXRlZFZhbHVlID0gdGhpcy5jYWxpYnJhdGUocmlnaHRWYWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIE1hdGgubWluKGxlZnRDYWxpYnJhdGVkVmFsdWUsIHRoaXMudmFsdWVbMV0pLFxuICAgICAgICAgICAgTWF0aC5tYXgocmlnaHRDYWxpYnJhdGVkVmFsdWUsIHRoaXMudmFsdWVbMF0pLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsaWJyYXRlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCByb3VuZGVkVmFsdWUgPSB0dWlSb3VuZChcbiAgICAgICAgICAgIE1hdGgucm91bmQodmFsdWUgLyB0aGlzLnF1YW50dW0pICogdGhpcy5xdWFudHVtLFxuICAgICAgICAgICAgVFVJX0ZMT0FUSU5HX1BSRUNJU0lPTixcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdHVpQ2xhbXAocm91bmRlZFZhbHVlLCB0aGlzLm1pbiwgdGhpcy5tYXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVGV4dElucHV0VmFsdWUodmFsdWU6IG51bWJlciwgcmlnaHQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgW2xlZnRJbnB1dFJlZiwgcmlnaHRJbnB1dFJlZl0gPSB0aGlzLmlucHV0TnVtYmVyUmVmcztcbiAgICAgICAgY29uc3QgdGV4dElucHV0UmVmID0gcmlnaHQgPyByaWdodElucHV0UmVmIDogbGVmdElucHV0UmVmO1xuXG4gICAgICAgIGlmICh0ZXh0SW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRleHRJbnB1dFJlZi5uYXRpdmVWYWx1ZSA9IHRleHRJbnB1dFJlZi5nZXRGb3JtYXR0ZWRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgdHVpV3JhcHBlclxuICAgIGNsYXNzPVwidC13cmFwcGVyXCJcbiAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2ZvY3VzXT1cImNvbXB1dGVkRm9jdXNlZFwiXG4gICAgW2hvdmVyXT1cInBzZXVkb0hvdmVyXCJcbiAgICBbaW52YWxpZF09XCJjb21wdXRlZEludmFsaWRcIlxuICAgICh0dWlBY3RpdmVab25lQ2hhbmdlKT1cIm9uQWN0aXZlWm9uZSgkZXZlbnQpXCJcbj5cbiAgICA8dHVpLWlucHV0LW51bWJlclxuICAgICAgICB0dWlUZXh0ZmllbGRBcHBlYXJhbmNlPVwibm9uZVwiXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktaW5wdXQtcmFuZ2VfX2xlZnQtaW5wdXRcIlxuICAgICAgICBjbGFzcz1cInQtbGVmdCB0LXRleHQtaW5wdXRcIlxuICAgICAgICBbbWluXT1cIm1pblwiXG4gICAgICAgIFttYXhdPVwidmFsdWVbMV1cIlxuICAgICAgICBbcHJlY2lzaW9uXT1cInByZWNpc2lvblwiXG4gICAgICAgIFtkZWNpbWFsXT1cImRlY2ltYWxcIlxuICAgICAgICBbcG9zdGZpeF09XCJwbHVyYWxpemUgJiYgIXNob3dMZWZ0VmFsdWVDb250ZW50ID8gKHZhbHVlWzBdIHwgaTE4blBsdXJhbCA6IHBsdXJhbGl6ZSkgOiAnJ1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgW25nTW9kZWxdPVwidmFsdWVbMF1cIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0TGVmdCgkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzZWRDaGFuZ2UpPVwib25UZXh0SW5wdXRGb2N1c2VkKCRldmVudCwgZmFsc2UpXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dVcCk9XCJjaGFuZ2VCeVN0ZXAoJGV2ZW50LCBbMSwgMF0pXCJcbiAgICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cImNoYW5nZUJ5U3RlcCgkZXZlbnQsIFstMSwgMF0pXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJzaG93TGVmdFZhbHVlQ29udGVudFwiXG4gICAgICAgICAgICBuZ1Byb2plY3RBcz1cInR1aUNvbnRlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJsZWZ0VmFsdWVDb250ZW50IGFzIHRleHQ7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHZhbHVlWzBdfVwiPlxuICAgICAgICAgICAgICAgIHt7IHRleHQgfX1cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3R1aS1pbnB1dC1udW1iZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwidC1yaWdodFwiPlxuICAgICAgICA8dHVpLWlucHV0LW51bWJlclxuICAgICAgICAgICAgdHVpVGV4dGZpZWxkQXBwZWFyYW5jZT1cIm5vbmVcIlxuICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1pbnB1dC1yYW5nZV9fcmlnaHQtaW5wdXRcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LXRleHQtaW5wdXRcIlxuICAgICAgICAgICAgW21pbl09XCJ2YWx1ZVswXVwiXG4gICAgICAgICAgICBbbWF4XT1cIm1heFwiXG4gICAgICAgICAgICBbcHJlY2lzaW9uXT1cInByZWNpc2lvblwiXG4gICAgICAgICAgICBbZGVjaW1hbF09XCJkZWNpbWFsXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb21wdXRlZERpc2FibGVkXCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVsxXVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0UmlnaHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoZm9jdXNlZENoYW5nZSk9XCJvblRleHRJbnB1dEZvY3VzZWQoJGV2ZW50LCB0cnVlKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5hcnJvd1VwKT1cImNoYW5nZUJ5U3RlcCgkZXZlbnQsIFswLCAxXSlcIlxuICAgICAgICAgICAgKGtleWRvd24uYXJyb3dEb3duKT1cImNoYW5nZUJ5U3RlcCgkZXZlbnQsIFswLCAtMV0pXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1JpZ2h0VmFsdWVDb250ZW50XCJcbiAgICAgICAgICAgICAgICBuZ1Byb2plY3RBcz1cInR1aUNvbnRlbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnBvbHltb3JwaGV1c091dGxldD1cInJpZ2h0VmFsdWVDb250ZW50IGFzIHRleHQ7IGNvbnRleHQ6IHskaW1wbGljaXQ6IHZhbHVlWzFdfVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90dWktaW5wdXQtbnVtYmVyPlxuXG4gICAgICAgIDwhLS0gVE9ETyByZXBsYWNlIGJ5IHBvc3RmaXggb2YgdGhlIHJpZ2h0IElucHV0TnVtYmVyIChhZnRlciBmaXggaHR0cHM6Ly9naXRodWIuY29tL1RpbmtvZmYvdGFpZ2EtdWkvaXNzdWVzLzExOTMpIC0tPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCIhc2hvd1JpZ2h0VmFsdWVDb250ZW50ICYmIHBsdXJhbGl6ZVwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWlucHV0LXJhbmdlX19wbHVyYWxpemUtcmlnaHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LXBsdXJhbGl6ZS1yaWdodFwiXG4gICAgICAgID5cbiAgICAgICAgICAgICZuYnNwO3t7IHZhbHVlWzFdIHwgaTE4blBsdXJhbCA6IHBsdXJhbGl6ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8dHVpLXJhbmdlXG4gICAgICAgIGNsYXNzPVwidC1yYW5nZVwiXG4gICAgICAgIFttaW5dPVwibWluXCJcbiAgICAgICAgW21heF09XCJtYXhcIlxuICAgICAgICBbc3RlcF09XCJzdGVwXCJcbiAgICAgICAgW3NlZ21lbnRzXT1cInNlZ21lbnRzXCJcbiAgICAgICAgW2tleVN0ZXBzXT1cImNvbXB1dGVLZXlTdGVwcyhrZXlTdGVwcywgbWluLCBtYXgpXCJcbiAgICAgICAgW2ZvY3VzYWJsZV09XCJmYWxzZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJyZWFkT25seSB8fCBkaXNhYmxlZFwiXG4gICAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25SYW5nZVZhbHVlKCRldmVudClcIlxuICAgICAgICAodHVpUHJlc3NlZENoYW5nZSk9XCJmb2N1c1RvVGV4dElucHV0KClcIlxuICAgICAgICAoYWN0aXZlVGh1bWJDaGFuZ2UpPVwib25BY3RpdmVUaHVtYkNoYW5nZSgkZXZlbnQpXCJcbiAgICA+PC90dWktcmFuZ2U+XG48L2Rpdj5cbiJdfQ==
@@ -2,23 +2,24 @@ import { CommonModule } from '@angular/common';
2
2
  import { NgModule } from '@angular/core';
3
3
  import { FormsModule } from '@angular/forms';
4
4
  import { TuiActiveZoneModule, TuiPressedModule } from '@taiga-ui/cdk';
5
- import { TuiWrapperModule } from '@taiga-ui/core';
5
+ import { TuiTextfieldControllerModule, TuiWrapperModule } from '@taiga-ui/core';
6
6
  import { TuiInputNumberModule } from '@taiga-ui/kit/components/input-number';
7
7
  import { TuiRangeModule } from '@taiga-ui/kit/components/range';
8
8
  import { PolymorpheusModule } from '@tinkoff/ng-polymorpheus';
9
- import { TuiInputRangeComponent, TuiTextfieldAppearanceDirective, } from './input-range.component';
9
+ import { TuiInputRangeComponent } from './input-range.component';
10
10
  import * as i0 from "@angular/core";
11
11
  export class TuiInputRangeModule {
12
12
  }
13
13
  TuiInputRangeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputRangeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
- TuiInputRangeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputRangeModule, declarations: [TuiInputRangeComponent, TuiTextfieldAppearanceDirective], imports: [CommonModule,
14
+ TuiInputRangeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputRangeModule, declarations: [TuiInputRangeComponent], imports: [CommonModule,
15
15
  FormsModule,
16
16
  PolymorpheusModule,
17
17
  TuiActiveZoneModule,
18
18
  TuiInputNumberModule,
19
19
  TuiPressedModule,
20
20
  TuiRangeModule,
21
- TuiWrapperModule], exports: [TuiInputRangeComponent] });
21
+ TuiWrapperModule,
22
+ TuiTextfieldControllerModule], exports: [TuiInputRangeComponent] });
22
23
  TuiInputRangeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputRangeModule, imports: [[
23
24
  CommonModule,
24
25
  FormsModule,
@@ -28,6 +29,7 @@ TuiInputRangeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", ver
28
29
  TuiPressedModule,
29
30
  TuiRangeModule,
30
31
  TuiWrapperModule,
32
+ TuiTextfieldControllerModule,
31
33
  ]] });
32
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TuiInputRangeModule, decorators: [{
33
35
  type: NgModule,
@@ -41,9 +43,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
41
43
  TuiPressedModule,
42
44
  TuiRangeModule,
43
45
  TuiWrapperModule,
46
+ TuiTextfieldControllerModule,
44
47
  ],
45
- declarations: [TuiInputRangeComponent, TuiTextfieldAppearanceDirective],
48
+ declarations: [TuiInputRangeComponent],
46
49
  exports: [TuiInputRangeComponent],
47
50
  }]
48
51
  }] });
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcmFuZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcmFuZ2UvaW5wdXQtcmFuZ2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsK0JBQStCLEdBQ2xDLE1BQU0seUJBQXlCLENBQUM7O0FBZ0JqQyxNQUFNLE9BQU8sbUJBQW1COztpSEFBbkIsbUJBQW1CO2tIQUFuQixtQkFBbUIsaUJBSGIsc0JBQXNCLEVBQUUsK0JBQStCLGFBVGxFLFlBQVk7UUFDWixXQUFXO1FBQ1gsa0JBQWtCO1FBQ2xCLG1CQUFtQjtRQUNuQixvQkFBb0I7UUFDcEIsZ0JBQWdCO1FBQ2hCLGNBQWM7UUFDZCxnQkFBZ0IsYUFHVixzQkFBc0I7a0hBRXZCLG1CQUFtQixZQWJuQjtZQUNMLFlBQVk7WUFDWixXQUFXO1lBQ1gsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxnQkFBZ0I7U0FDbkI7NEZBSVEsbUJBQW1CO2tCQWQvQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGdCQUFnQjtxQkFDbkI7b0JBQ0QsWUFBWSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsK0JBQStCLENBQUM7b0JBQ3ZFLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1R1aUFjdGl2ZVpvbmVNb2R1bGUsIFR1aVByZXNzZWRNb2R1bGV9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtUdWlXcmFwcGVyTW9kdWxlfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aUlucHV0TnVtYmVyTW9kdWxlfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyJztcbmltcG9ydCB7VHVpUmFuZ2VNb2R1bGV9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9yYW5nZSc7XG5pbXBvcnQge1BvbHltb3JwaGV1c01vZHVsZX0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcblxuaW1wb3J0IHtcbiAgICBUdWlJbnB1dFJhbmdlQ29tcG9uZW50LFxuICAgIFR1aVRleHRmaWVsZEFwcGVhcmFuY2VEaXJlY3RpdmUsXG59IGZyb20gJy4vaW5wdXQtcmFuZ2UuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFBvbHltb3JwaGV1c01vZHVsZSxcbiAgICAgICAgVHVpQWN0aXZlWm9uZU1vZHVsZSxcbiAgICAgICAgVHVpSW5wdXROdW1iZXJNb2R1bGUsXG4gICAgICAgIFR1aVByZXNzZWRNb2R1bGUsXG4gICAgICAgIFR1aVJhbmdlTW9kdWxlLFxuICAgICAgICBUdWlXcmFwcGVyTW9kdWxlLFxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbVHVpSW5wdXRSYW5nZUNvbXBvbmVudCwgVHVpVGV4dGZpZWxkQXBwZWFyYW5jZURpcmVjdGl2ZV0sXG4gICAgZXhwb3J0czogW1R1aUlucHV0UmFuZ2VDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dFJhbmdlTW9kdWxlIHt9XG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcmFuZ2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtcmFuZ2UvaW5wdXQtcmFuZ2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFDLDRCQUE0QixFQUFFLGdCQUFnQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDOztBQWlCL0QsTUFBTSxPQUFPLG1CQUFtQjs7aUhBQW5CLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGlCQUhiLHNCQUFzQixhQVZqQyxZQUFZO1FBQ1osV0FBVztRQUNYLGtCQUFrQjtRQUNsQixtQkFBbUI7UUFDbkIsb0JBQW9CO1FBQ3BCLGdCQUFnQjtRQUNoQixjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLDRCQUE0QixhQUd0QixzQkFBc0I7a0hBRXZCLG1CQUFtQixZQWRuQjtZQUNMLFlBQVk7WUFDWixXQUFXO1lBQ1gsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsNEJBQTRCO1NBQy9COzRGQUlRLG1CQUFtQjtrQkFmL0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLDRCQUE0QjtxQkFDL0I7b0JBQ0QsWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1R1aUFjdGl2ZVpvbmVNb2R1bGUsIFR1aVByZXNzZWRNb2R1bGV9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlLCBUdWlXcmFwcGVyTW9kdWxlfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQge1R1aUlucHV0TnVtYmVyTW9kdWxlfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvaW5wdXQtbnVtYmVyJztcbmltcG9ydCB7VHVpUmFuZ2VNb2R1bGV9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9yYW5nZSc7XG5pbXBvcnQge1BvbHltb3JwaGV1c01vZHVsZX0gZnJvbSAnQHRpbmtvZmYvbmctcG9seW1vcnBoZXVzJztcblxuaW1wb3J0IHtUdWlJbnB1dFJhbmdlQ29tcG9uZW50fSBmcm9tICcuL2lucHV0LXJhbmdlLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBQb2x5bW9ycGhldXNNb2R1bGUsXG4gICAgICAgIFR1aUFjdGl2ZVpvbmVNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0TnVtYmVyTW9kdWxlLFxuICAgICAgICBUdWlQcmVzc2VkTW9kdWxlLFxuICAgICAgICBUdWlSYW5nZU1vZHVsZSxcbiAgICAgICAgVHVpV3JhcHBlck1vZHVsZSxcbiAgICAgICAgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSxcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1R1aUlucHV0UmFuZ2VDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtUdWlJbnB1dFJhbmdlQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRSYW5nZU1vZHVsZSB7fVxuIl19