@taiga-ui/kit 4.37.0 → 4.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/components/calendar-range/day-caps-mapper.d.ts +2 -2
  2. package/components/input-month/input-month.directive.d.ts +3 -2
  3. package/components/input-month-range/input-month-range.directive.d.ts +3 -2
  4. package/components/input-number/input-number.directive.d.ts +3 -2
  5. package/components/input-number/step/input-number-step.component.d.ts +4 -3
  6. package/components/select/native-select/native-select.component.d.ts +2 -0
  7. package/components/select/select.directive.d.ts +2 -1
  8. package/esm2022/components/calendar-range/calendar-range.component.mjs +4 -4
  9. package/esm2022/components/calendar-range/day-caps-mapper.mjs +10 -4
  10. package/esm2022/components/input-month/input-month.directive.mjs +8 -7
  11. package/esm2022/components/input-month-range/input-month-range.directive.mjs +13 -8
  12. package/esm2022/components/input-number/input-number.directive.mjs +15 -19
  13. package/esm2022/components/input-number/step/input-number-step.component.mjs +14 -13
  14. package/esm2022/components/select/native-select/native-select.component.mjs +9 -5
  15. package/esm2022/components/select/select.directive.mjs +10 -5
  16. package/esm2022/components/slider/helpers/slider-key-steps.directive.mjs +3 -3
  17. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs +12 -6
  18. package/fesm2022/taiga-ui-kit-components-calendar-range.mjs.map +1 -1
  19. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs +12 -7
  20. package/fesm2022/taiga-ui-kit-components-input-month-range.mjs.map +1 -1
  21. package/fesm2022/taiga-ui-kit-components-input-month.mjs +7 -6
  22. package/fesm2022/taiga-ui-kit-components-input-month.mjs.map +1 -1
  23. package/fesm2022/taiga-ui-kit-components-input-number.mjs +26 -29
  24. package/fesm2022/taiga-ui-kit-components-input-number.mjs.map +1 -1
  25. package/fesm2022/taiga-ui-kit-components-select.mjs +14 -6
  26. package/fesm2022/taiga-ui-kit-components-select.mjs.map +1 -1
  27. package/fesm2022/taiga-ui-kit-components-slider.mjs +2 -2
  28. package/fesm2022/taiga-ui-kit-components-slider.mjs.map +1 -1
  29. package/package.json +10 -10
@@ -1,5 +1,5 @@
1
- import type { TuiDayLike, TuiDayRange } from '@taiga-ui/cdk/date-time';
2
- import { TuiDay } from '@taiga-ui/cdk/date-time';
1
+ import type { TuiDayLike } from '@taiga-ui/cdk/date-time';
2
+ import { TuiDay, TuiDayRange } from '@taiga-ui/cdk/date-time';
3
3
  import type { TuiMapper } from '@taiga-ui/cdk/types';
4
4
  export declare const TUI_DAY_CAPS_MAPPER: TuiMapper<[
5
5
  TuiDay | null,
@@ -5,11 +5,12 @@ import * as i0 from "@angular/core";
5
5
  import * as i1 from "@taiga-ui/core/components/textfield";
6
6
  import * as i2 from "@taiga-ui/core/directives/dropdown";
7
7
  export declare class TuiInputMonthDirective extends TuiControl<TuiMonth | null> {
8
- private readonly open;
8
+ private readonly textfield;
9
9
  private readonly formatter;
10
+ private readonly open;
10
11
  protected readonly icon: import("@angular/core").Signal<string>;
11
12
  protected readonly dropdownEnabled: import("@angular/core").Signal<boolean>;
12
- protected readonly textfieldValue: import("@angular/core").Signal<string>;
13
+ protected readonly valueEffect: import("@angular/core").EffectRef;
13
14
  protected readonly calendarSync: import("@angular/core").EffectRef;
14
15
  protected onMonthClickEffect: import("@angular/core").EffectRef;
15
16
  readonly calendar: import("@angular/core").Signal<TuiCalendarMonth | null>;
@@ -4,13 +4,14 @@ import * as i0 from "@angular/core";
4
4
  import * as i1 from "@taiga-ui/core/components/textfield";
5
5
  import * as i2 from "@taiga-ui/core/directives/dropdown";
6
6
  export declare class TuiInputMonthRangeDirective extends TuiControl<TuiMonthRange | null> {
7
+ private readonly textfield;
8
+ private readonly formatter;
7
9
  private readonly open;
8
10
  private readonly intermediateValue;
9
11
  private readonly calendar;
10
- private readonly formatter;
11
12
  protected readonly icon: import("@angular/core").Signal<string>;
12
13
  protected readonly dropdownEnabled: import("@angular/core").Signal<boolean>;
13
- protected readonly textfieldValue: import("@angular/core").Signal<string>;
14
+ protected readonly valueEffect: import("@angular/core").EffectRef;
14
15
  protected readonly calendarInit: import("@angular/core").EffectRef;
15
16
  protected readonly calendarSync: import("@angular/core").EffectRef;
16
17
  protected readonly resetIntermediateValue: import("@angular/core").EffectRef;
@@ -4,14 +4,15 @@ import * as i0 from "@angular/core";
4
4
  import * as i1 from "@taiga-ui/core/components/textfield";
5
5
  import * as i2 from "@maskito/angular";
6
6
  export declare class TuiInputNumberDirective extends TuiControl<number | null> {
7
+ private readonly textfield;
7
8
  private readonly isIOS;
8
9
  private readonly numberFormat;
10
+ private readonly formatted;
9
11
  private readonly precision;
10
- private readonly isIntermediateState;
12
+ private readonly unfinished;
11
13
  protected readonly onChangeEffect: import("@angular/core").EffectRef;
12
14
  protected readonly options: import("./input-number.options").TuiInputNumberOptions;
13
15
  protected readonly element: HTMLInputElement;
14
- protected readonly textfieldValue: import("@angular/core").WritableSignal<string>;
15
16
  protected readonly inputMode: import("@angular/core").Signal<"text" | "decimal" | "numeric">;
16
17
  protected readonly defaultMaxLength: import("@angular/core").Signal<number>;
17
18
  protected readonly mask: import("@angular/core").Signal<MaskitoOptions | null>;
@@ -4,11 +4,12 @@ import * as i0 from "@angular/core";
4
4
  export declare class TuiInputNumberStep {
5
5
  private readonly destroyRef;
6
6
  private readonly zone;
7
- protected readonly element: HTMLInputElement;
8
- protected readonly textfieldOptions: import("@taiga-ui/core/components/textfield").TuiTextfieldOptions;
7
+ protected readonly el: HTMLInputElement;
8
+ protected readonly appearance: import("@angular/core").WritableSignal<string>;
9
9
  protected readonly options: TuiInputNumberOptions;
10
- protected readonly inputNumber: TuiInputNumberDirective;
10
+ protected readonly input: TuiInputNumberDirective;
11
11
  protected readonly step: import("@angular/core").WritableSignal<number>;
12
+ protected readonly value: import("@angular/core").Signal<number>;
12
13
  set stepSetter(x: number);
13
14
  protected onStep(step: number): void;
14
15
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiInputNumberStep, never>;
@@ -5,12 +5,14 @@ import { tuiIsFlat } from '@taiga-ui/kit/utils';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@taiga-ui/core/components/textfield";
7
7
  export declare class TuiNativeSelect<T> extends TuiControl<T | null> implements TuiTextfieldAccessor<T> {
8
+ private readonly textfield;
8
9
  protected readonly isFlat: typeof tuiIsFlat;
9
10
  protected readonly placeholder: import("@angular/core").WritableSignal<string>;
10
11
  protected readonly itemsHandlers: TuiItemsHandlers<T>;
11
12
  protected readonly stringified: import("@angular/core").Signal<string>;
12
13
  protected readonly showPlaceholder: import("@angular/core").Signal<boolean | "">;
13
14
  protected readonly isSelected: import("@angular/core").Signal<(x: T) => boolean>;
15
+ protected readonly valueEffect: import("@angular/core").EffectRef;
14
16
  items: ReadonlyArray<readonly T[]> | readonly T[] | null;
15
17
  labels: readonly string[];
16
18
  set placeholderSetter(x: string);
@@ -3,10 +3,11 @@ import type { TuiTextfieldAccessor } from '@taiga-ui/core/components/textfield';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@taiga-ui/core/components/textfield";
5
5
  export declare class TuiSelectDirective<T> extends TuiControl<T | null> implements TuiTextfieldAccessor<T> {
6
+ private readonly textfield;
6
7
  private readonly open;
7
8
  private readonly itemsHandlers;
8
9
  protected readonly dropdownEnabled: import("@angular/core").Signal<boolean>;
9
- protected readonly stringified: import("@angular/core").Signal<string>;
10
+ protected readonly valueEffect: import("@angular/core").EffectRef;
10
11
  setValue(value: T): void;
11
12
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiSelectDirective<any>, never>;
12
13
  static ɵdir: i0.ɵɵDirectiveDeclaration<TuiSelectDirective<any>, "input[tuiSelect]", never, {}, {}, never, never, true, [{ directive: typeof i1.TuiWithTextfield; inputs: {}; outputs: {}; }, { directive: typeof i1.TuiSelectLike; inputs: {}; outputs: {}; }]>;
@@ -107,13 +107,13 @@ class TuiCalendarRange {
107
107
  onItemSelect(item) {
108
108
  if (!tuiIsString(item)) {
109
109
  this.selectedActivePeriod = item;
110
- this.updateValue(item.range.dayLimit(this.min, this.max));
111
110
  this.itemChange.emit(item);
111
+ this.updateValue(item.range.dayLimit(this.min, this.max));
112
112
  }
113
113
  else if (this.activePeriod !== null) {
114
114
  this.selectedActivePeriod = null;
115
- this.updateValue(null);
116
115
  this.itemChange.emit(null);
116
+ this.updateValue(null);
117
117
  }
118
118
  this.initDefaultViewedMonth();
119
119
  }
@@ -126,8 +126,8 @@ class TuiCalendarRange {
126
126
  if (this.value instanceof TuiDay) {
127
127
  const range = TuiDayRange.sort(this.value, day);
128
128
  this.value = range;
129
- this.updateValue(range);
130
129
  this.itemChange.emit(this.findItemByDayRange(range));
130
+ this.updateValue(range);
131
131
  }
132
132
  else {
133
133
  this.value = day;
@@ -204,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
204
204
  }], defaultViewedMonth: [{
205
205
  type: Input
206
206
  }], calculateDisabledItemHandler: [] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItcmFuZ2UvY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItcmFuZ2UvY2FsZW5kYXItcmFuZ2UudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFDSCxhQUFhLEVBQ2IsWUFBWSxFQUNaLE1BQU0sRUFDTixXQUFXLEVBQ1gsUUFBUSxHQUNYLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUV4RixPQUFPLEVBQ0gsV0FBVyxFQUNYLCtCQUErQixHQUNsQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FB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S0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDM0UsQ0FBQzsrR0FyT1EsZ0JBQWdCO21HQUFoQixnQkFBZ0IseWRBTGQsQ0FBQywrQkFBK0IsQ0FBQyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLCtDQzlDbkUsaXZFQXlEQSxpS0RmYyxTQUFTLDhDQUFFLE9BQU8sbUhBQUUsSUFBSSw2RkFBRSxXQUFXLHFqQkFBZSxPQUFPLGdGQUFFLGFBQWE7O0FBd041RTtJQURQLE9BQU87b0VBT1A7U0FyTlEsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBWjVCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLG9CQUFvQixXQUNyQixDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxtQkFHcEUsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLCtCQUErQixDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsUUFDekQ7d0JBQ0YsNEJBQTRCLEVBQUUsZUFBZTtxQkFDaEQ7MEVBa0JNLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxHQUFHO3NCQURULEtBQUs7Z0JBSUMsR0FBRztzQkFEVCxLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlVLFdBQVc7c0JBRDFCLE1BQU07Z0JBSVMsVUFBVTtzQkFEekIsTUFBTTtnQkFhSSxXQUFXO3NCQURyQixLQUFLO3VCQUFDLE9BQU87Z0JBTUgsa0JBQWtCO3NCQUQ1QixLQUFLO2dCQW9KRSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB0eXBlIHtPbkNoYW5nZXMsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1R1aURheUxpa2V9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7XG4gICAgVFVJX0ZJUlNUX0RBWSxcbiAgICBUVUlfTEFTVF9EQVksXG4gICAgVHVpRGF5LFxuICAgIFR1aURheVJhbmdlLFxuICAgIFR1aU1vbnRoLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge3R1aVdhdGNofSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7VHVpTWFwcGVyUGlwZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9waXBlcy9tYXBwZXInO1xuaW1wb3J0IHR5cGUge1R1aUJvb2xlYW5IYW5kbGVyLCBUdWlNYXBwZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHt0dWlJc1N0cmluZywgdHVpTnVsbGFibGVTYW1lLCB0dWlQdXJlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHR5cGUge1R1aU1hcmtlckhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvY2FsZW5kYXInO1xuaW1wb3J0IHtcbiAgICBUdWlDYWxlbmRhcixcbiAgICB0dWlDYWxlbmRhclNoZWV0T3B0aW9uc1Byb3ZpZGVyLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2NhbGVuZGFyJztcbmltcG9ydCB7VHVpRGF0YUxpc3R9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZGF0YS1saXN0JztcbmltcG9ydCB7VHVpSWNvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7VFVJX0NPTU1PTl9JQ09OU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7VFVJX0NBTEVOREFSX0RBVEVfU1RSRUFNLCBUVUlfT1RIRVJfREFURV9URVhUfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Y2FsY3VsYXRlRGlzYWJsZWRJdGVtSGFuZGxlcn0gZnJvbSAnLi9jYWxjdWxhdGUtZGlzYWJsZWQtaXRlbS1oYW5kbGVyJztcbmltcG9ydCB7VFVJX0RBWV9DQVBTX01BUFBFUn0gZnJvbSAnLi9kYXktY2Fwcy1tYXBwZXInO1xuaW1wb3J0IHR5cGUge1R1aURheVJhbmdlUGVyaW9kfSBmcm9tICcuL2RheS1yYW5nZS1wZXJpb2QnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWNhbGVuZGFyLXJhbmdlJyxcbiAgICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmLCBUdWlDYWxlbmRhciwgVHVpRGF0YUxpc3QsIFR1aUljb24sIFR1aU1hcHBlclBpcGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1yYW5nZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci1yYW5nZS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbdHVpQ2FsZW5kYXJTaGVldE9wdGlvbnNQcm92aWRlcih7cmFuZ2VNb2RlOiB0cnVlfSldLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhkb2N1bWVudDprZXlkb3duLmNhcHR1cmUpJzogJ29uRXNjKCRldmVudCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUNhbGVuZGFyUmFuZ2UgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGBpdGVtYFxuICAgICAqL1xuICAgIHByaXZhdGUgc2VsZWN0ZWRQZXJpb2Q6IFR1aURheVJhbmdlUGVyaW9kIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgdmFsdWU6IFR1aURheSB8IFR1aURheVJhbmdlIHwgbnVsbCA9IG51bGw7XG4gICAgcHJvdGVjdGVkIHByZXZpb3VzVmFsdWU6IFR1aURheSB8IFR1aURheVJhbmdlIHwgbnVsbCA9IG51bGw7XG4gICAgcHJvdGVjdGVkIGhvdmVyZWRJdGVtOiBUdWlEYXkgfCBudWxsID0gbnVsbDtcbiAgICBwcm90ZWN0ZWQgbW9udGg6IFR1aU1vbnRoID0gVHVpTW9udGguY3VycmVudExvY2FsKCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3RoZXJEYXRlVGV4dCQgPSBpbmplY3QoVFVJX09USEVSX0RBVEVfVEVYVCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25zID0gaW5qZWN0KFRVSV9DT01NT05fSUNPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjYXBzTWFwcGVyID0gVFVJX0RBWV9DQVBTX01BUFBFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBUVUlfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1hcmtlckhhbmRsZXI6IFR1aU1hcmtlckhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW1zOiByZWFkb25seSBUdWlEYXlSYW5nZVBlcmlvZFtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW46IFR1aURheSB8IG51bGwgPSBUVUlfRklSU1RfREFZO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4OiBUdWlEYXkgfCBudWxsID0gVFVJX0xBU1RfREFZO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhMZW5ndGg6IFR1aURheUxpa2UgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW06IFR1aURheVJhbmdlUGVyaW9kIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aURheVJhbmdlIHwgbnVsbD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBpdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGw+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5qZWN0PE9ic2VydmFibGU8VHVpRGF5UmFuZ2UgfCBudWxsPj4oVFVJX0NBTEVOREFSX0RBVEVfU1RSRUFNLCB7b3B0aW9uYWw6IHRydWV9KVxuICAgICAgICAgICAgPy5waXBlKHR1aVdhdGNoKCksIHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RGVmYXVsdFZpZXdlZE1vbnRoKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ3ZhbHVlJylcbiAgICBwdWJsaWMgc2V0IHZhbHVlU2V0dGVyKHZhbHVlOiBUdWlEYXlSYW5nZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBkZWZhdWx0Vmlld2VkTW9udGgobW9udGg6IFR1aU1vbnRoKSB7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5tb250aCA9IG1vbnRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0Vmlld2VkTW9udGgoKTogVHVpTW9udGgge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYGl0ZW1gXG4gICAgICovXG4gICAgcHVibGljIGdldCBzZWxlY3RlZEFjdGl2ZVBlcmlvZCgpOiBUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFBlcmlvZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYGl0ZW1gXG4gICAgICovXG4gICAgcHVibGljIHNldCBzZWxlY3RlZEFjdGl2ZVBlcmlvZChwZXJpb2Q6IFR1aURheVJhbmdlUGVyaW9kIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUGVyaW9kID0gcGVyaW9kO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXREZWZhdWx0Vmlld2VkTW9udGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0RGVmYXVsdFZpZXdlZE1vbnRoKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjYWxjdWxhdGVkRGlzYWJsZWRJdGVtSGFuZGxlcigpOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRJdGVtSGFuZGxlcihcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcixcbiAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICB0aGlzLm1pbkxlbmd0aCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Fc2MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VzY2FwZScgfHwgISh0aGlzLnZhbHVlIGluc3RhbmNlb2YgVHVpRGF5KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnByZXZpb3VzVmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vbnRoT2Zmc2V0OiBUdWlNYXBwZXI8W1R1aU1vbnRoLCBudW1iZXJdLCBUdWlNb250aD4gPSAoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBtb250aCxcbiAgICApID0+IHZhbHVlLmFwcGVuZCh7bW9udGh9KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXBwZXI6IFR1aU1hcHBlcjxcbiAgICAgICAgW1xuICAgICAgICAgICAgcmVhZG9ubHkgVHVpRGF5UmFuZ2VQZXJpb2RbXSxcbiAgICAgICAgICAgIFR1aURheSB8IG51bGwsXG4gICAgICAgICAgICBUdWlEYXkgfCBudWxsLFxuICAgICAgICAgICAgVHVpRGF5TGlrZSB8IG51bGwsXG4gICAgICAgICAgICBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgICAgICBdLFxuICAgICAgICBSZWFkb25seUFycmF5PFR1aURheVJhbmdlUGVyaW9kIHwgc3RyaW5nPlxuICAgID4gPSAoaXRlbXMsIG1pbiwgbWF4LCBtaW5MZW5ndGgsIG90aGVyRGF0ZVRleHQpID0+IFtcbiAgICAgICAgLi4uaXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgKG1pbkxlbmd0aCA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJhbmdlLmZyb21cbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQobWluTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCh7ZGF5OiAtMX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuZGF5U2FtZU9yQmVmb3JlKGl0ZW0ucmFuZ2UudG8pKSAmJlxuICAgICAgICAgICAgICAgIChtaW4gPT09IG51bGwgfHwgaXRlbS5yYW5nZS50by5kYXlTYW1lT3JBZnRlcihtaW4pKSAmJlxuICAgICAgICAgICAgICAgIChtYXggPT09IG51bGwgfHwgaXRlbS5yYW5nZS5mcm9tLmRheVNhbWVPckJlZm9yZShtYXgpKSxcbiAgICAgICAgKSxcbiAgICAgICAgb3RoZXJEYXRlVGV4dCB8fCAnJyxcbiAgICBdO1xuXG4gICAgcHJvdGVjdGVkIGlzSXRlbUFjdGl2ZShpdGVtOiBUdWlEYXlSYW5nZVBlcmlvZCB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7YWN0aXZlUGVyaW9kfSA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0dWlJc1N0cmluZyhpdGVtKSAmJiBhY3RpdmVQZXJpb2QgPT09IG51bGwpIHx8XG4gICAgICAgICAgICBhY3RpdmVQZXJpb2QgPT09IGl0ZW0gfHxcbiAgICAgICAgICAgIGFjdGl2ZVBlcmlvZD8udG9TdHJpbmcoKSA9PT0gaXRlbS50b1N0cmluZygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uSXRlbVNlbGVjdChpdGVtOiBUdWlEYXlSYW5nZVBlcmlvZCB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXR1aUlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQWN0aXZlUGVyaW9kID0gaXRlbTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoaXRlbS5yYW5nZS5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpKTtcbiAgICAgICAgICAgIHRoaXMuaXRlbUNoYW5nZS5lbWl0KGl0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlUGVyaW9kICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQWN0aXZlUGVyaW9kID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbCk7XG4gICAgICAgICAgICB0aGlzLml0ZW1DaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdERlZmF1bHRWaWV3ZWRNb250aCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbk1vbnRoQ2hhbmdlKG1vbnRoOiBUdWlNb250aCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vbnRoID0gbW9udGg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRGF5Q2xpY2soZGF5OiBUdWlEYXkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFjdGl2ZVBlcmlvZCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gVHVpRGF5UmFuZ2Uuc29ydCh0aGlzLnZhbHVlLCBkYXkpO1xuXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gcmFuZ2U7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHJhbmdlKTtcbiAgICAgICAgICAgIHRoaXMuaXRlbUNoYW5nZS5lbWl0KHRoaXMuZmluZEl0ZW1CeURheVJhbmdlKHJhbmdlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gZGF5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVZhbHVlKHZhbHVlOiBUdWlEYXlSYW5nZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGFjdGl2ZVBlcmlvZCgpOiBUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pdGVtID8/XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQWN0aXZlUGVyaW9kID8/XG4gICAgICAgICAgICAodGhpcy5pdGVtcy5maW5kKChpdGVtKSA9PlxuICAgICAgICAgICAgICAgIHR1aU51bGxhYmxlU2FtZTxUdWlEYXlSYW5nZT4oXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3IFR1aURheVJhbmdlKHRoaXMudmFsdWUsIHRoaXMudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgYS5mcm9tLmRheVNhbWUoYi5mcm9tLmRheUxpbWl0KHRoaXMubWluLCB0aGlzLm1heCkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhLnRvLmRheVNhbWUoYi50by5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgIG51bGwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZURpc2FibGVkSXRlbUhhbmRsZXIoXG4gICAgICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4sXG4gICAgICAgIHZhbHVlOiBUdWlEYXkgfCBUdWlEYXlSYW5nZSB8IG51bGwsXG4gICAgICAgIG1pbkxlbmd0aDogVHVpRGF5TGlrZSB8IG51bGwsXG4gICAgKTogVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PiB7XG4gICAgICAgIHJldHVybiBjYWxjdWxhdGVEaXNhYmxlZEl0ZW1IYW5kbGVyKGRpc2FibGVkSXRlbUhhbmRsZXIsIHZhbHVlLCBtaW5MZW5ndGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdERlZmF1bHRWaWV3ZWRNb250aCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXkpIHtcbiAgICAgICAgICAgIHRoaXMubW9udGggPSB0aGlzLnZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubW9udGggPSB0aGlzLml0ZW1zLmxlbmd0aCA/IHRoaXMudmFsdWUudG8gOiB0aGlzLnZhbHVlLmZyb207XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXggJiYgdGhpcy5tb250aC5tb250aFNhbWVPckFmdGVyKHRoaXMubWF4KSkge1xuICAgICAgICAgICAgdGhpcy5tb250aCA9IHRoaXMuaXRlbXMubGVuZ3RoID8gdGhpcy5tYXggOiB0aGlzLm1heC5hcHBlbmQoe21vbnRoOiAtMX0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWluICYmIHRoaXMubW9udGgubW9udGhTYW1lT3JCZWZvcmUodGhpcy5taW4pKSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoID0gdGhpcy5taW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRJdGVtQnlEYXlSYW5nZShkYXlSYW5nZTogVHVpRGF5UmFuZ2UpOiBUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kKChpdGVtKSA9PiBkYXlSYW5nZS5kYXlTYW1lKGl0ZW0ucmFuZ2UpKSA/PyBudWxsO1xuICAgIH1cbn1cbiIsIjx0dWktY2FsZW5kYXJcbiAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXJhbmdlX19jYWxlbmRhclwiXG4gICAgY2xhc3M9XCJ0LWNhbGVuZGFyXCJcbiAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJjYWxjdWxhdGVkRGlzYWJsZWRJdGVtSGFuZGxlclwiXG4gICAgW21hcmtlckhhbmRsZXJdPVwibWFya2VySGFuZGxlclwiXG4gICAgW21heF09XCJtYXggfCB0dWlNYXBwZXI6IGNhcHNNYXBwZXIgOiB2YWx1ZSA6IG1heExlbmd0aCA6IGZhbHNlXCJcbiAgICBbbWF4Vmlld2VkTW9udGhdPVwiaXRlbXMubGVuZ3RoID8gbnVsbCA6IChkZWZhdWx0Vmlld2VkTW9udGggfCB0dWlNYXBwZXI6IG1vbnRoT2Zmc2V0IDogLTEpXCJcbiAgICBbbWluXT1cIm1pbiB8IHR1aU1hcHBlcjogY2Fwc01hcHBlciA6IHZhbHVlIDogbWF4TGVuZ3RoIDogdHJ1ZVwiXG4gICAgW21vbnRoXT1cImRlZmF1bHRWaWV3ZWRNb250aFwiXG4gICAgW3Nob3dBZGphY2VudF09XCIhIWl0ZW1zLmxlbmd0aFwiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbKGhvdmVyZWRJdGVtKV09XCJob3ZlcmVkSXRlbVwiXG4gICAgKGRheUNsaWNrKT1cIm9uRGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgKG1vbnRoQ2hhbmdlKT1cIm9uTW9udGhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKG1vdXNlZG93bi5wcmV2ZW50LnpvbmVsZXNzKT1cIigwKVwiXG4vPlxuPHR1aS1jYWxlbmRhclxuICAgICpuZ0lmPVwiIWl0ZW1zLmxlbmd0aDsgZWxzZSBwcmVzZXRzXCJcbiAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJjYWxjdWxhdGVkRGlzYWJsZWRJdGVtSGFuZGxlclwiXG4gICAgW21hcmtlckhhbmRsZXJdPVwibWFya2VySGFuZGxlclwiXG4gICAgW21heF09XCJtYXggfCB0dWlNYXBwZXI6IGNhcHNNYXBwZXIgOiB2YWx1ZSA6IG1heExlbmd0aCA6IGZhbHNlXCJcbiAgICBbbWluXT1cIm1pbiB8IHR1aU1hcHBlcjogY2Fwc01hcHBlciA6IHZhbHVlIDogbWF4TGVuZ3RoIDogdHJ1ZVwiXG4gICAgW21pblZpZXdlZE1vbnRoXT1cImRlZmF1bHRWaWV3ZWRNb250aCB8IHR1aU1hcHBlcjogbW9udGhPZmZzZXQgOiAxXCJcbiAgICBbbW9udGhdPVwiZGVmYXVsdFZpZXdlZE1vbnRoIHwgdHVpTWFwcGVyOiBtb250aE9mZnNldCA6IDFcIlxuICAgIFtzaG93QWRqYWNlbnRdPVwiZmFsc2VcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgWyhob3ZlcmVkSXRlbSldPVwiaG92ZXJlZEl0ZW1cIlxuICAgIChkYXlDbGljayk9XCJvbkRheUNsaWNrKCRldmVudClcIlxuICAgIChtb250aENoYW5nZSk9XCJvbk1vbnRoQ2hhbmdlKCRldmVudC5hcHBlbmQoe21vbnRoOiAtMX0pKVwiXG4gICAgKG1vdXNlZG93bi5wcmV2ZW50LnpvbmVsZXNzKT1cIigwKVwiXG4vPlxuPG5nLXRlbXBsYXRlICNwcmVzZXRzPlxuICAgIDx0dWktZGF0YS1saXN0XG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktY2FsZW5kYXItcmFuZ2VfX21lbnVcIlxuICAgICAgICByb2xlPVwibWVudVwiXG4gICAgICAgIFtzdHlsZS5mbGV4XT1cIjFcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMgfCB0dWlNYXBwZXI6IG1hcHBlciA6IG1pbiA6IG1heCA6IG1pbkxlbmd0aCA6IChvdGhlckRhdGVUZXh0JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXJhbmdlX19tZW51X19pdGVtXCJcbiAgICAgICAgICAgIHJvbGU9XCJtZW51aXRlbXJhZGlvXCJcbiAgICAgICAgICAgIHR1aU9wdGlvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiaXNJdGVtQWN0aXZlKGl0ZW0pXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1TZWxlY3QoaXRlbSlcIlxuICAgICAgICAgICAgKG1vdXNlZG93bi5wcmV2ZW50LnpvbmVsZXNzKT1cIigwKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNJdGVtQWN0aXZlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXJhbmdlX19jaGVja21hcmtcIlxuICAgICAgICAgICAgICAgIFtpY29uXT1cImljb25zLmNoZWNrXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnJlbV09XCIxXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvdHVpLWRhdGEtbGlzdD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItcmFuZ2UvY2FsZW5kYXItcmFuZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItcmFuZ2UvY2FsZW5kYXItcmFuZ2UudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFDSCxhQUFhLEVBQ2IsWUFBWSxFQUNaLE1BQU0sRUFDTixXQUFXLEVBQ1gsUUFBUSxHQUNYLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUMsV0FBVyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUV4RixPQUFPLEVBQ0gsV0FBVyxFQUNYLCtCQUErQixHQUNsQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkQsT0FB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S0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDM0UsQ0FBQzsrR0FyT1EsZ0JBQWdCO21HQUFoQixnQkFBZ0IseWRBTGQsQ0FBQywrQkFBK0IsQ0FBQyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLCtDQzlDbkUsaXZFQXlEQSxpS0RmYyxTQUFTLDhDQUFFLE9BQU8sbUhBQUUsSUFBSSw2RkFBRSxXQUFXLHFqQkFBZSxPQUFPLGdGQUFFLGFBQWE7O0FBd041RTtJQURQLE9BQU87b0VBT1A7U0FyTlEsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBWjVCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLG9CQUFvQixXQUNyQixDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxtQkFHcEUsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLCtCQUErQixDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUMsUUFDekQ7d0JBQ0YsNEJBQTRCLEVBQUUsZUFBZTtxQkFDaEQ7MEVBa0JNLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxHQUFHO3NCQURULEtBQUs7Z0JBSUMsR0FBRztzQkFEVCxLQUFLO2dCQUlDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxTQUFTO3NCQURmLEtBQUs7Z0JBSUMsSUFBSTtzQkFEVixLQUFLO2dCQUlVLFdBQVc7c0JBRDFCLE1BQU07Z0JBSVMsVUFBVTtzQkFEekIsTUFBTTtnQkFhSSxXQUFXO3NCQURyQixLQUFLO3VCQUFDLE9BQU87Z0JBTUgsa0JBQWtCO3NCQUQ1QixLQUFLO2dCQW9KRSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB0eXBlIHtPbkNoYW5nZXMsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1R1aURheUxpa2V9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7XG4gICAgVFVJX0ZJUlNUX0RBWSxcbiAgICBUVUlfTEFTVF9EQVksXG4gICAgVHVpRGF5LFxuICAgIFR1aURheVJhbmdlLFxuICAgIFR1aU1vbnRoLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge3R1aVdhdGNofSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7VHVpTWFwcGVyUGlwZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9waXBlcy9tYXBwZXInO1xuaW1wb3J0IHR5cGUge1R1aUJvb2xlYW5IYW5kbGVyLCBUdWlNYXBwZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHt0dWlJc1N0cmluZywgdHVpTnVsbGFibGVTYW1lLCB0dWlQdXJlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHR5cGUge1R1aU1hcmtlckhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvY2FsZW5kYXInO1xuaW1wb3J0IHtcbiAgICBUdWlDYWxlbmRhcixcbiAgICB0dWlDYWxlbmRhclNoZWV0T3B0aW9uc1Byb3ZpZGVyLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2NhbGVuZGFyJztcbmltcG9ydCB7VHVpRGF0YUxpc3R9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvZGF0YS1saXN0JztcbmltcG9ydCB7VHVpSWNvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7VFVJX0NPTU1PTl9JQ09OU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7VFVJX0NBTEVOREFSX0RBVEVfU1RSRUFNLCBUVUlfT1RIRVJfREFURV9URVhUfSBmcm9tICdAdGFpZ2EtdWkva2l0L3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Y2FsY3VsYXRlRGlzYWJsZWRJdGVtSGFuZGxlcn0gZnJvbSAnLi9jYWxjdWxhdGUtZGlzYWJsZWQtaXRlbS1oYW5kbGVyJztcbmltcG9ydCB7VFVJX0RBWV9DQVBTX01BUFBFUn0gZnJvbSAnLi9kYXktY2Fwcy1tYXBwZXInO1xuaW1wb3J0IHR5cGUge1R1aURheVJhbmdlUGVyaW9kfSBmcm9tICcuL2RheS1yYW5nZS1wZXJpb2QnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWNhbGVuZGFyLXJhbmdlJyxcbiAgICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmLCBUdWlDYWxlbmRhciwgVHVpRGF0YUxpc3QsIFR1aUljb24sIFR1aU1hcHBlclBpcGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1yYW5nZS50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci1yYW5nZS5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbdHVpQ2FsZW5kYXJTaGVldE9wdGlvbnNQcm92aWRlcih7cmFuZ2VNb2RlOiB0cnVlfSldLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJyhkb2N1bWVudDprZXlkb3duLmNhcHR1cmUpJzogJ29uRXNjKCRldmVudCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUNhbGVuZGFyUmFuZ2UgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGBpdGVtYFxuICAgICAqL1xuICAgIHByaXZhdGUgc2VsZWN0ZWRQZXJpb2Q6IFR1aURheVJhbmdlUGVyaW9kIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgdmFsdWU6IFR1aURheSB8IFR1aURheVJhbmdlIHwgbnVsbCA9IG51bGw7XG4gICAgcHJvdGVjdGVkIHByZXZpb3VzVmFsdWU6IFR1aURheSB8IFR1aURheVJhbmdlIHwgbnVsbCA9IG51bGw7XG4gICAgcHJvdGVjdGVkIGhvdmVyZWRJdGVtOiBUdWlEYXkgfCBudWxsID0gbnVsbDtcbiAgICBwcm90ZWN0ZWQgbW9udGg6IFR1aU1vbnRoID0gVHVpTW9udGguY3VycmVudExvY2FsKCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3RoZXJEYXRlVGV4dCQgPSBpbmplY3QoVFVJX09USEVSX0RBVEVfVEVYVCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb25zID0gaW5qZWN0KFRVSV9DT01NT05fSUNPTlMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjYXBzTWFwcGVyID0gVFVJX0RBWV9DQVBTX01BUFBFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBUVUlfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1hcmtlckhhbmRsZXI6IFR1aU1hcmtlckhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW1zOiByZWFkb25seSBUdWlEYXlSYW5nZVBlcmlvZFtdID0gW107XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW46IFR1aURheSB8IG51bGwgPSBUVUlfRklSU1RfREFZO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4OiBUdWlEYXkgfCBudWxsID0gVFVJX0xBU1RfREFZO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluTGVuZ3RoOiBUdWlEYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhMZW5ndGg6IFR1aURheUxpa2UgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW06IFR1aURheVJhbmdlUGVyaW9kIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aURheVJhbmdlIHwgbnVsbD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBpdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGw+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5qZWN0PE9ic2VydmFibGU8VHVpRGF5UmFuZ2UgfCBudWxsPj4oVFVJX0NBTEVOREFSX0RBVEVfU1RSRUFNLCB7b3B0aW9uYWw6IHRydWV9KVxuICAgICAgICAgICAgPy5waXBlKHR1aVdhdGNoKCksIHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RGVmYXVsdFZpZXdlZE1vbnRoKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ3ZhbHVlJylcbiAgICBwdWJsaWMgc2V0IHZhbHVlU2V0dGVyKHZhbHVlOiBUdWlEYXlSYW5nZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBkZWZhdWx0Vmlld2VkTW9udGgobW9udGg6IFR1aU1vbnRoKSB7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5tb250aCA9IG1vbnRoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0Vmlld2VkTW9udGgoKTogVHVpTW9udGgge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYGl0ZW1gXG4gICAgICovXG4gICAgcHVibGljIGdldCBzZWxlY3RlZEFjdGl2ZVBlcmlvZCgpOiBUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFBlcmlvZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgYGl0ZW1gXG4gICAgICovXG4gICAgcHVibGljIHNldCBzZWxlY3RlZEFjdGl2ZVBlcmlvZChwZXJpb2Q6IFR1aURheVJhbmdlUGVyaW9kIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUGVyaW9kID0gcGVyaW9kO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXREZWZhdWx0Vmlld2VkTW9udGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0RGVmYXVsdFZpZXdlZE1vbnRoKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjYWxjdWxhdGVkRGlzYWJsZWRJdGVtSGFuZGxlcigpOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlRGlzYWJsZWRJdGVtSGFuZGxlcihcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcixcbiAgICAgICAgICAgIHRoaXMudmFsdWUsXG4gICAgICAgICAgICB0aGlzLm1pbkxlbmd0aCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Fc2MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VzY2FwZScgfHwgISh0aGlzLnZhbHVlIGluc3RhbmNlb2YgVHVpRGF5KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnByZXZpb3VzVmFsdWU7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vbnRoT2Zmc2V0OiBUdWlNYXBwZXI8W1R1aU1vbnRoLCBudW1iZXJdLCBUdWlNb250aD4gPSAoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBtb250aCxcbiAgICApID0+IHZhbHVlLmFwcGVuZCh7bW9udGh9KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXBwZXI6IFR1aU1hcHBlcjxcbiAgICAgICAgW1xuICAgICAgICAgICAgcmVhZG9ubHkgVHVpRGF5UmFuZ2VQZXJpb2RbXSxcbiAgICAgICAgICAgIFR1aURheSB8IG51bGwsXG4gICAgICAgICAgICBUdWlEYXkgfCBudWxsLFxuICAgICAgICAgICAgVHVpRGF5TGlrZSB8IG51bGwsXG4gICAgICAgICAgICBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgICAgICBdLFxuICAgICAgICBSZWFkb25seUFycmF5PFR1aURheVJhbmdlUGVyaW9kIHwgc3RyaW5nPlxuICAgID4gPSAoaXRlbXMsIG1pbiwgbWF4LCBtaW5MZW5ndGgsIG90aGVyRGF0ZVRleHQpID0+IFtcbiAgICAgICAgLi4uaXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgICAgICAgKG1pbkxlbmd0aCA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJhbmdlLmZyb21cbiAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQobWluTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZCh7ZGF5OiAtMX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAuZGF5U2FtZU9yQmVmb3JlKGl0ZW0ucmFuZ2UudG8pKSAmJlxuICAgICAgICAgICAgICAgIChtaW4gPT09IG51bGwgfHwgaXRlbS5yYW5nZS50by5kYXlTYW1lT3JBZnRlcihtaW4pKSAmJlxuICAgICAgICAgICAgICAgIChtYXggPT09IG51bGwgfHwgaXRlbS5yYW5nZS5mcm9tLmRheVNhbWVPckJlZm9yZShtYXgpKSxcbiAgICAgICAgKSxcbiAgICAgICAgb3RoZXJEYXRlVGV4dCB8fCAnJyxcbiAgICBdO1xuXG4gICAgcHJvdGVjdGVkIGlzSXRlbUFjdGl2ZShpdGVtOiBUdWlEYXlSYW5nZVBlcmlvZCB8IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7YWN0aXZlUGVyaW9kfSA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0dWlJc1N0cmluZyhpdGVtKSAmJiBhY3RpdmVQZXJpb2QgPT09IG51bGwpIHx8XG4gICAgICAgICAgICBhY3RpdmVQZXJpb2QgPT09IGl0ZW0gfHxcbiAgICAgICAgICAgIGFjdGl2ZVBlcmlvZD8udG9TdHJpbmcoKSA9PT0gaXRlbS50b1N0cmluZygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uSXRlbVNlbGVjdChpdGVtOiBUdWlEYXlSYW5nZVBlcmlvZCB8IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXR1aUlzU3RyaW5nKGl0ZW0pKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQWN0aXZlUGVyaW9kID0gaXRlbTtcbiAgICAgICAgICAgIHRoaXMuaXRlbUNoYW5nZS5lbWl0KGl0ZW0pO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShpdGVtLnJhbmdlLmRheUxpbWl0KHRoaXMubWluLCB0aGlzLm1heCkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlUGVyaW9kICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQWN0aXZlUGVyaW9kID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuaXRlbUNoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5pdERlZmF1bHRWaWV3ZWRNb250aCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbk1vbnRoQ2hhbmdlKG1vbnRoOiBUdWlNb250aCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vbnRoID0gbW9udGg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRGF5Q2xpY2soZGF5OiBUdWlEYXkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1ZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFjdGl2ZVBlcmlvZCA9IG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gVHVpRGF5UmFuZ2Uuc29ydCh0aGlzLnZhbHVlLCBkYXkpO1xuXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gcmFuZ2U7XG4gICAgICAgICAgICB0aGlzLml0ZW1DaGFuZ2UuZW1pdCh0aGlzLmZpbmRJdGVtQnlEYXlSYW5nZShyYW5nZSkpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZShyYW5nZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gZGF5O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVZhbHVlKHZhbHVlOiBUdWlEYXlSYW5nZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGFjdGl2ZVBlcmlvZCgpOiBUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5pdGVtID8/XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQWN0aXZlUGVyaW9kID8/XG4gICAgICAgICAgICAodGhpcy5pdGVtcy5maW5kKChpdGVtKSA9PlxuICAgICAgICAgICAgICAgIHR1aU51bGxhYmxlU2FtZTxUdWlEYXlSYW5nZT4oXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3IFR1aURheVJhbmdlKHRoaXMudmFsdWUsIHRoaXMudmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgYS5mcm9tLmRheVNhbWUoYi5mcm9tLmRheUxpbWl0KHRoaXMubWluLCB0aGlzLm1heCkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICBhLnRvLmRheVNhbWUoYi50by5kYXlMaW1pdCh0aGlzLm1pbiwgdGhpcy5tYXgpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgIG51bGwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGNhbGN1bGF0ZURpc2FibGVkSXRlbUhhbmRsZXIoXG4gICAgICAgIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4sXG4gICAgICAgIHZhbHVlOiBUdWlEYXkgfCBUdWlEYXlSYW5nZSB8IG51bGwsXG4gICAgICAgIG1pbkxlbmd0aDogVHVpRGF5TGlrZSB8IG51bGwsXG4gICAgKTogVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PiB7XG4gICAgICAgIHJldHVybiBjYWxjdWxhdGVEaXNhYmxlZEl0ZW1IYW5kbGVyKGRpc2FibGVkSXRlbUhhbmRsZXIsIHZhbHVlLCBtaW5MZW5ndGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdERlZmF1bHRWaWV3ZWRNb250aCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXkpIHtcbiAgICAgICAgICAgIHRoaXMubW9udGggPSB0aGlzLnZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubW9udGggPSB0aGlzLml0ZW1zLmxlbmd0aCA/IHRoaXMudmFsdWUudG8gOiB0aGlzLnZhbHVlLmZyb207XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXggJiYgdGhpcy5tb250aC5tb250aFNhbWVPckFmdGVyKHRoaXMubWF4KSkge1xuICAgICAgICAgICAgdGhpcy5tb250aCA9IHRoaXMuaXRlbXMubGVuZ3RoID8gdGhpcy5tYXggOiB0aGlzLm1heC5hcHBlbmQoe21vbnRoOiAtMX0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubWluICYmIHRoaXMubW9udGgubW9udGhTYW1lT3JCZWZvcmUodGhpcy5taW4pKSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoID0gdGhpcy5taW47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRJdGVtQnlEYXlSYW5nZShkYXlSYW5nZTogVHVpRGF5UmFuZ2UpOiBUdWlEYXlSYW5nZVBlcmlvZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maW5kKChpdGVtKSA9PiBkYXlSYW5nZS5kYXlTYW1lKGl0ZW0ucmFuZ2UpKSA/PyBudWxsO1xuICAgIH1cbn1cbiIsIjx0dWktY2FsZW5kYXJcbiAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXJhbmdlX19jYWxlbmRhclwiXG4gICAgY2xhc3M9XCJ0LWNhbGVuZGFyXCJcbiAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJjYWxjdWxhdGVkRGlzYWJsZWRJdGVtSGFuZGxlclwiXG4gICAgW21hcmtlckhhbmRsZXJdPVwibWFya2VySGFuZGxlclwiXG4gICAgW21heF09XCJtYXggfCB0dWlNYXBwZXI6IGNhcHNNYXBwZXIgOiB2YWx1ZSA6IG1heExlbmd0aCA6IGZhbHNlXCJcbiAgICBbbWF4Vmlld2VkTW9udGhdPVwiaXRlbXMubGVuZ3RoID8gbnVsbCA6IChkZWZhdWx0Vmlld2VkTW9udGggfCB0dWlNYXBwZXI6IG1vbnRoT2Zmc2V0IDogLTEpXCJcbiAgICBbbWluXT1cIm1pbiB8IHR1aU1hcHBlcjogY2Fwc01hcHBlciA6IHZhbHVlIDogbWF4TGVuZ3RoIDogdHJ1ZVwiXG4gICAgW21vbnRoXT1cImRlZmF1bHRWaWV3ZWRNb250aFwiXG4gICAgW3Nob3dBZGphY2VudF09XCIhIWl0ZW1zLmxlbmd0aFwiXG4gICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICBbKGhvdmVyZWRJdGVtKV09XCJob3ZlcmVkSXRlbVwiXG4gICAgKGRheUNsaWNrKT1cIm9uRGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgKG1vbnRoQ2hhbmdlKT1cIm9uTW9udGhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKG1vdXNlZG93bi5wcmV2ZW50LnpvbmVsZXNzKT1cIigwKVwiXG4vPlxuPHR1aS1jYWxlbmRhclxuICAgICpuZ0lmPVwiIWl0ZW1zLmxlbmd0aDsgZWxzZSBwcmVzZXRzXCJcbiAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJjYWxjdWxhdGVkRGlzYWJsZWRJdGVtSGFuZGxlclwiXG4gICAgW21hcmtlckhhbmRsZXJdPVwibWFya2VySGFuZGxlclwiXG4gICAgW21heF09XCJtYXggfCB0dWlNYXBwZXI6IGNhcHNNYXBwZXIgOiB2YWx1ZSA6IG1heExlbmd0aCA6IGZhbHNlXCJcbiAgICBbbWluXT1cIm1pbiB8IHR1aU1hcHBlcjogY2Fwc01hcHBlciA6IHZhbHVlIDogbWF4TGVuZ3RoIDogdHJ1ZVwiXG4gICAgW21pblZpZXdlZE1vbnRoXT1cImRlZmF1bHRWaWV3ZWRNb250aCB8IHR1aU1hcHBlcjogbW9udGhPZmZzZXQgOiAxXCJcbiAgICBbbW9udGhdPVwiZGVmYXVsdFZpZXdlZE1vbnRoIHwgdHVpTWFwcGVyOiBtb250aE9mZnNldCA6IDFcIlxuICAgIFtzaG93QWRqYWNlbnRdPVwiZmFsc2VcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgWyhob3ZlcmVkSXRlbSldPVwiaG92ZXJlZEl0ZW1cIlxuICAgIChkYXlDbGljayk9XCJvbkRheUNsaWNrKCRldmVudClcIlxuICAgIChtb250aENoYW5nZSk9XCJvbk1vbnRoQ2hhbmdlKCRldmVudC5hcHBlbmQoe21vbnRoOiAtMX0pKVwiXG4gICAgKG1vdXNlZG93bi5wcmV2ZW50LnpvbmVsZXNzKT1cIigwKVwiXG4vPlxuPG5nLXRlbXBsYXRlICNwcmVzZXRzPlxuICAgIDx0dWktZGF0YS1saXN0XG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktY2FsZW5kYXItcmFuZ2VfX21lbnVcIlxuICAgICAgICByb2xlPVwibWVudVwiXG4gICAgICAgIFtzdHlsZS5mbGV4XT1cIjFcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXMgfCB0dWlNYXBwZXI6IG1hcHBlciA6IG1pbiA6IG1heCA6IG1pbkxlbmd0aCA6IChvdGhlckRhdGVUZXh0JCB8IGFzeW5jKVwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXJhbmdlX19tZW51X19pdGVtXCJcbiAgICAgICAgICAgIHJvbGU9XCJtZW51aXRlbXJhZGlvXCJcbiAgICAgICAgICAgIHR1aU9wdGlvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiaXNJdGVtQWN0aXZlKGl0ZW0pXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1TZWxlY3QoaXRlbSlcIlxuICAgICAgICAgICAgKG1vdXNlZG93bi5wcmV2ZW50LnpvbmVsZXNzKT1cIigwKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNJdGVtQWN0aXZlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXJhbmdlX19jaGVja21hcmtcIlxuICAgICAgICAgICAgICAgIFtpY29uXT1cImljb25zLmNoZWNrXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnJlbV09XCIxXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvdHVpLWRhdGEtbGlzdD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,10 +1,16 @@
1
- import { TUI_FIRST_DAY, TUI_LAST_DAY, TuiDay } from '@taiga-ui/cdk/date-time';
1
+ import { TUI_FIRST_DAY, TUI_LAST_DAY, TuiDay, TuiDayRange } from '@taiga-ui/cdk/date-time';
2
2
  export const TUI_DAY_CAPS_MAPPER = (current, value, maxLength, backwards) => {
3
- if (value instanceof TuiDay || !value?.isSingleDay || !maxLength) {
3
+ if (
4
+ // TODO(v5): replace with `if (!(value instanceof TuiDay) || !maxLength)` (backward compatibility)
5
+ (value instanceof TuiDayRange && !value.isSingleDay) ||
6
+ !value ||
7
+ !maxLength) {
4
8
  return backwards ? current || TUI_FIRST_DAY : current || TUI_LAST_DAY;
5
9
  }
6
10
  const negativeMaxLength = Object.fromEntries(Object.entries(maxLength).map(([key, value]) => [key, -value]));
7
- const dateShift = value.from
11
+ // TODO(v5): `value instanceof TuiDay` always `true`
12
+ const from = value instanceof TuiDay ? value : value.from;
13
+ const dateShift = from
8
14
  .append(backwards ? negativeMaxLength : maxLength)
9
15
  .append({ day: !backwards ? -1 : 1 });
10
16
  if (backwards) {
@@ -17,4 +23,4 @@ export const TUI_DAY_CAPS_MAPPER = (current, value, maxLength, backwards) => {
17
23
  }
18
24
  return dateShift.dayAfter(current) ? current : dateShift;
19
25
  };
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWNhcHMtbWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItcmFuZ2UvZGF5LWNhcHMtbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRzVFLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUc1QixDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUFFO0lBQ3pDLElBQUksS0FBSyxZQUFZLE1BQU0sSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDOUQsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxZQUFZLENBQUM7S0FDekU7SUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ3hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDakUsQ0FBQztJQUVGLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJO1NBQ3ZCLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDakQsTUFBTSxDQUFDLEVBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUV4QyxJQUFJLFNBQVMsRUFBRTtRQUNYLE9BQU8sU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksYUFBYSxDQUFDO1lBQ2hELENBQUMsQ0FBQyxPQUFPLElBQUksYUFBYTtZQUMxQixDQUFDLENBQUMsU0FBUyxDQUFDO0tBQ25CO0lBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNWLE9BQU8sU0FBUyxDQUFDO0tBQ3BCO0lBRUQsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUM3RCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7VHVpRGF5TGlrZSwgVHVpRGF5UmFuZ2V9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7VFVJX0ZJUlNUX0RBWSwgVFVJX0xBU1RfREFZLCBUdWlEYXl9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB0eXBlIHtUdWlNYXBwZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgVFVJX0RBWV9DQVBTX01BUFBFUjogVHVpTWFwcGVyPFxuICAgIFtUdWlEYXkgfCBudWxsLCBUdWlEYXkgfCBUdWlEYXlSYW5nZSB8IG51bGwsIFR1aURheUxpa2UgfCBudWxsLCBib29sZWFuXSxcbiAgICBUdWlEYXlcbj4gPSAoY3VycmVudCwgdmFsdWUsIG1heExlbmd0aCwgYmFja3dhcmRzKSA9PiB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVHVpRGF5IHx8ICF2YWx1ZT8uaXNTaW5nbGVEYXkgfHwgIW1heExlbmd0aCkge1xuICAgICAgICByZXR1cm4gYmFja3dhcmRzID8gY3VycmVudCB8fCBUVUlfRklSU1RfREFZIDogY3VycmVudCB8fCBUVUlfTEFTVF9EQVk7XG4gICAgfVxuXG4gICAgY29uc3QgbmVnYXRpdmVNYXhMZW5ndGggPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKG1heExlbmd0aCkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtrZXksIC12YWx1ZV0pLFxuICAgICk7XG5cbiAgICBjb25zdCBkYXRlU2hpZnQgPSB2YWx1ZS5mcm9tXG4gICAgICAgIC5hcHBlbmQoYmFja3dhcmRzID8gbmVnYXRpdmVNYXhMZW5ndGggOiBtYXhMZW5ndGgpXG4gICAgICAgIC5hcHBlbmQoe2RheTogIWJhY2t3YXJkcyA/IC0xIDogMX0pO1xuXG4gICAgaWYgKGJhY2t3YXJkcykge1xuICAgICAgICByZXR1cm4gZGF0ZVNoaWZ0LmRheUJlZm9yZShjdXJyZW50IHx8IFRVSV9GSVJTVF9EQVkpXG4gICAgICAgICAgICA/IGN1cnJlbnQgfHwgVFVJX0ZJUlNUX0RBWVxuICAgICAgICAgICAgOiBkYXRlU2hpZnQ7XG4gICAgfVxuXG4gICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICAgIHJldHVybiBkYXRlU2hpZnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGVTaGlmdC5kYXlBZnRlcihjdXJyZW50KSA/IGN1cnJlbnQgOiBkYXRlU2hpZnQ7XG59O1xuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5LWNhcHMtbWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2FsZW5kYXItcmFuZ2UvZGF5LWNhcHMtbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUd6RixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FHNUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFBRTtJQUN6QztJQUNJLGtHQUFrRztJQUNsRyxDQUFDLEtBQUssWUFBWSxXQUFXLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3BELENBQUMsS0FBSztRQUNOLENBQUMsU0FBUyxFQUNaO1FBQ0UsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxZQUFZLENBQUM7S0FDekU7SUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ3hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDakUsQ0FBQztJQUVGLG9EQUFvRDtJQUNwRCxNQUFNLElBQUksR0FBRyxLQUFLLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDMUQsTUFBTSxTQUFTLEdBQUcsSUFBSTtTQUNqQixNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ2pELE1BQU0sQ0FBQyxFQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUM7SUFFeEMsSUFBSSxTQUFTLEVBQUU7UUFDWCxPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLGFBQWEsQ0FBQztZQUNoRCxDQUFDLENBQUMsT0FBTyxJQUFJLGFBQWE7WUFDMUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztLQUNuQjtJQUVELElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDVixPQUFPLFNBQVMsQ0FBQztLQUNwQjtJQUVELE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDN0QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1R1aURheUxpa2V9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7VFVJX0ZJUlNUX0RBWSwgVFVJX0xBU1RfREFZLCBUdWlEYXksIFR1aURheVJhbmdlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQgdHlwZSB7VHVpTWFwcGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IFRVSV9EQVlfQ0FQU19NQVBQRVI6IFR1aU1hcHBlcjxcbiAgICBbVHVpRGF5IHwgbnVsbCwgVHVpRGF5IHwgVHVpRGF5UmFuZ2UgfCBudWxsLCBUdWlEYXlMaWtlIHwgbnVsbCwgYm9vbGVhbl0sXG4gICAgVHVpRGF5XG4+ID0gKGN1cnJlbnQsIHZhbHVlLCBtYXhMZW5ndGgsIGJhY2t3YXJkcykgPT4ge1xuICAgIGlmIChcbiAgICAgICAgLy8gVE9ETyh2NSk6IHJlcGxhY2Ugd2l0aCBgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBUdWlEYXkpIHx8ICFtYXhMZW5ndGgpYCAoYmFja3dhcmQgY29tcGF0aWJpbGl0eSlcbiAgICAgICAgKHZhbHVlIGluc3RhbmNlb2YgVHVpRGF5UmFuZ2UgJiYgIXZhbHVlLmlzU2luZ2xlRGF5KSB8fFxuICAgICAgICAhdmFsdWUgfHxcbiAgICAgICAgIW1heExlbmd0aFxuICAgICkge1xuICAgICAgICByZXR1cm4gYmFja3dhcmRzID8gY3VycmVudCB8fCBUVUlfRklSU1RfREFZIDogY3VycmVudCB8fCBUVUlfTEFTVF9EQVk7XG4gICAgfVxuXG4gICAgY29uc3QgbmVnYXRpdmVNYXhMZW5ndGggPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKG1heExlbmd0aCkubWFwKChba2V5LCB2YWx1ZV0pID0+IFtrZXksIC12YWx1ZV0pLFxuICAgICk7XG5cbiAgICAvLyBUT0RPKHY1KTogYHZhbHVlIGluc3RhbmNlb2YgVHVpRGF5YCBhbHdheXMgYHRydWVgXG4gICAgY29uc3QgZnJvbSA9IHZhbHVlIGluc3RhbmNlb2YgVHVpRGF5ID8gdmFsdWUgOiB2YWx1ZS5mcm9tO1xuICAgIGNvbnN0IGRhdGVTaGlmdCA9IGZyb21cbiAgICAgICAgLmFwcGVuZChiYWNrd2FyZHMgPyBuZWdhdGl2ZU1heExlbmd0aCA6IG1heExlbmd0aClcbiAgICAgICAgLmFwcGVuZCh7ZGF5OiAhYmFja3dhcmRzID8gLTEgOiAxfSk7XG5cbiAgICBpZiAoYmFja3dhcmRzKSB7XG4gICAgICAgIHJldHVybiBkYXRlU2hpZnQuZGF5QmVmb3JlKGN1cnJlbnQgfHwgVFVJX0ZJUlNUX0RBWSlcbiAgICAgICAgICAgID8gY3VycmVudCB8fCBUVUlfRklSU1RfREFZXG4gICAgICAgICAgICA6IGRhdGVTaGlmdDtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIGRhdGVTaGlmdDtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0ZVNoaWZ0LmRheUFmdGVyKGN1cnJlbnQpID8gY3VycmVudCA6IGRhdGVTaGlmdDtcbn07XG4iXX0=
@@ -3,8 +3,8 @@ import { toSignal } from '@angular/core/rxjs-interop';
3
3
  import { tuiAsControl, TuiControl } from '@taiga-ui/cdk/classes';
4
4
  import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
5
5
  import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
6
- import { tuiInjectElement, tuiValueBinding } from '@taiga-ui/cdk/utils/dom';
7
- import { tuiInjectAuxiliary, TuiSelectLike, tuiTextfieldIconBinding, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
6
+ import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
7
+ import { tuiInjectAuxiliary, TuiSelectLike, TuiTextfieldDirective, tuiTextfieldIconBinding, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
8
8
  import { TuiDropdownAuto, tuiDropdownEnabled, tuiDropdownOpen, } from '@taiga-ui/core/directives/dropdown';
9
9
  import { TuiCalendarMonth } from '@taiga-ui/kit/components/calendar-month';
10
10
  import { TUI_INPUT_DATE_OPTIONS, TUI_MONTH_FORMATTER } from '@taiga-ui/kit/tokens';
@@ -14,13 +14,14 @@ import * as i2 from "@taiga-ui/core/directives/dropdown";
14
14
  class TuiInputMonthDirective extends TuiControl {
15
15
  constructor() {
16
16
  super(...arguments);
17
+ this.textfield = inject(TuiTextfieldDirective);
18
+ this.formatter = toSignal(inject(TUI_MONTH_FORMATTER));
17
19
  this.open = tuiDropdownOpen();
18
- this.formatter = toSignal(inject(TUI_MONTH_FORMATTER), {
19
- initialValue: () => '',
20
- });
21
20
  this.icon = tuiTextfieldIconBinding(TUI_INPUT_DATE_OPTIONS);
22
21
  this.dropdownEnabled = tuiDropdownEnabled(computed(() => !this.nativePickerEnabled && this.interactive()));
23
- this.textfieldValue = tuiValueBinding(computed(() => this.formatter()(this.value())));
22
+ this.valueEffect = effect(() => {
23
+ this.textfield.value.set(this.formatter()?.(this.value()) || '');
24
+ }, TUI_ALLOW_SIGNAL_WRITES);
24
25
  this.calendarSync = effect(() => {
25
26
  this.calendar()?.value.set(this.value());
26
27
  }, TUI_ALLOW_SIGNAL_WRITES);
@@ -56,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
56
57
  },
57
58
  }]
58
59
  }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbW9udGguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbW9udGgvaW5wdXQtbW9udGguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxlQUFlLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRSxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIsZ0JBQWdCLEdBQ25CLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUNILGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7O0FBRWpGLE1BV2Esc0JBQXVCLFNBQVEsVUFBMkI7SUFYdkU7O1FBWXFCLFNBQUksR0FBRyxlQUFlLEVBQUUsQ0FBQztRQUN6QixjQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFO1lBQy9ELFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO1NBQ3pCLENBQUMsQ0FBQztRQUVnQixTQUFJLEdBQUcsdUJBQXVCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN2RCxvQkFBZSxHQUFHLGtCQUFrQixDQUNuRCxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQ2xFLENBQUM7UUFFaUIsbUJBQWMsR0FBRyxlQUFlLENBQy9DLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FDakQsQ0FBQztRQUVpQixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFbEIsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDaEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDakUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7WUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7UUFFYSxhQUFRLEdBQUcsa0JBQWtCLENBQ3pDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksZ0JBQWdCLENBQ3ZDLENBQUM7UUFFYyx3QkFBbUIsR0FDL0IsZ0JBQWdCLEVBQW9CLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7S0FNdEY7SUFKYSxLQUFLO1FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQXRDUSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwyTkFScEIsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQzs7U0FReEMsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBWGxDLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFNBQVMsRUFBRSxDQUFDLFlBQVksd0JBQXdCLENBQUM7b0JBQ2pELGNBQWMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7b0JBQ2xFLElBQUksRUFBRTt3QkFDRixZQUFZLEVBQUUsWUFBWTt3QkFDMUIsUUFBUSxFQUFFLGFBQWE7d0JBQ3ZCLFNBQVMsRUFBRSxpREFBaUQ7cUJBQy9EO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb21wdXRlZCwgRGlyZWN0aXZlLCBlZmZlY3QsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge3R1aUFzQ29udHJvbCwgVHVpQ29udHJvbH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7VFVJX0FMTE9XX1NJR05BTF9XUklURVN9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtUdWlNb250aH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHtUVUlfSVNfTU9CSUxFfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnQsIHR1aVZhbHVlQmluZGluZ30gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHtcbiAgICB0dWlJbmplY3RBdXhpbGlhcnksXG4gICAgVHVpU2VsZWN0TGlrZSxcbiAgICB0dWlUZXh0ZmllbGRJY29uQmluZGluZyxcbiAgICBUdWlXaXRoVGV4dGZpZWxkLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIFR1aURyb3Bkb3duQXV0byxcbiAgICB0dWlEcm9wZG93bkVuYWJsZWQsXG4gICAgdHVpRHJvcGRvd25PcGVuLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duJztcbmltcG9ydCB7VHVpQ2FsZW5kYXJNb250aH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2NhbGVuZGFyLW1vbnRoJztcbmltcG9ydCB7VFVJX0lOUFVUX0RBVEVfT1BUSU9OUywgVFVJX01PTlRIX0ZPUk1BVFRFUn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXRNb250aF0nLFxuICAgIHByb3ZpZGVyczogW3R1aUFzQ29udHJvbChUdWlJbnB1dE1vbnRoRGlyZWN0aXZlKV0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtUdWlXaXRoVGV4dGZpZWxkLCBUdWlTZWxlY3RMaWtlLCBUdWlEcm9wZG93bkF1dG9dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgICAgICcoYmx1ciknOiAnb25Ub3VjaGVkKCknLFxuICAgICAgICAnKGlucHV0KSc6ICckZXZlbnQuaW5wdXRUeXBlPy5pbmNsdWRlcyhcImRlbGV0ZVwiKSAmJiBjbGVhcigpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dE1vbnRoRGlyZWN0aXZlIGV4dGVuZHMgVHVpQ29udHJvbDxUdWlNb250aCB8IG51bGw+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wZW4gPSB0dWlEcm9wZG93bk9wZW4oKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1hdHRlciA9IHRvU2lnbmFsKGluamVjdChUVUlfTU9OVEhfRk9STUFUVEVSKSwge1xuICAgICAgICBpbml0aWFsVmFsdWU6ICgpID0+ICcnLFxuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb24gPSB0dWlUZXh0ZmllbGRJY29uQmluZGluZyhUVUlfSU5QVVRfREFURV9PUFRJT05TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJvcGRvd25FbmFibGVkID0gdHVpRHJvcGRvd25FbmFibGVkKFxuICAgICAgICBjb21wdXRlZCgoKSA9PiAhdGhpcy5uYXRpdmVQaWNrZXJFbmFibGVkICYmIHRoaXMuaW50ZXJhY3RpdmUoKSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSB0ZXh0ZmllbGRWYWx1ZSA9IHR1aVZhbHVlQmluZGluZyhcbiAgICAgICAgY29tcHV0ZWQoKCkgPT4gdGhpcy5mb3JtYXR0ZXIoKSh0aGlzLnZhbHVlKCkpKSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGVuZGFyU3luYyA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIoKT8udmFsdWUuc2V0KHRoaXMudmFsdWUoKSk7XG4gICAgfSwgVFVJX0FMTE9XX1NJR05BTF9XUklURVMpO1xuXG4gICAgcHJvdGVjdGVkIG9uTW9udGhDbGlja0VmZmVjdCA9IGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuY2FsZW5kYXIoKT8ubW9udGhDbGljay5zdWJzY3JpYmUoKG1vbnRoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG1vbnRoKTtcbiAgICAgICAgICAgIHRoaXMub3Blbi5zZXQoZmFsc2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICBvbkNsZWFudXAoKCkgPT4gc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpKTtcbiAgICB9KTtcblxuICAgIHB1YmxpYyByZWFkb25seSBjYWxlbmRhciA9IHR1aUluamVjdEF1eGlsaWFyeTxUdWlDYWxlbmRhck1vbnRoPihcbiAgICAgICAgKHgpID0+IHggaW5zdGFuY2VvZiBUdWlDYWxlbmRhck1vbnRoLFxuICAgICk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgbmF0aXZlUGlja2VyRW5hYmxlZCA9XG4gICAgICAgIHR1aUluamVjdEVsZW1lbnQ8SFRNTElucHV0RWxlbWVudD4oKS50eXBlID09PSAnbW9udGgnICYmIGluamVjdChUVUlfSVNfTU9CSUxFKTtcblxuICAgIHByb3RlY3RlZCBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICAgICAgdGhpcy5vcGVuLnNldCh0aGlzLmRyb3Bkb3duRW5hYmxlZCgpKTtcbiAgICB9XG59XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbW9udGguZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbW9udGgvaW5wdXQtbW9udGguZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQix1QkFBdUIsRUFDdkIsZ0JBQWdCLEdBQ25CLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUNILGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7O0FBRWpGLE1BV2Esc0JBQXVCLFNBQVEsVUFBMkI7SUFYdkU7O1FBWXFCLGNBQVMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFDbEQsU0FBSSxHQUFHLGVBQWUsRUFBRSxDQUFDO1FBRXZCLFNBQUksR0FBRyx1QkFBdUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3ZELG9CQUFlLEdBQUcsa0JBQWtCLENBQ25ELFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDbEUsQ0FBQztRQUVpQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBRVQsaUJBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQzFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBRWxCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1lBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRWEsYUFBUSxHQUFHLGtCQUFrQixDQUN6QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLGdCQUFnQixDQUN2QyxDQUFDO1FBRWMsd0JBQW1CLEdBQy9CLGdCQUFnQixFQUFvQixDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBTXRGO0lBSmEsS0FBSztRQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQzsrR0FyQ1Esc0JBQXNCO21HQUF0QixzQkFBc0IsMk5BUnBCLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUM7O1NBUXhDLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQVhsQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLHdCQUF3QixDQUFDO29CQUNqRCxjQUFjLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDO29CQUNsRSxJQUFJLEVBQUU7d0JBQ0YsWUFBWSxFQUFFLFlBQVk7d0JBQzFCLFFBQVEsRUFBRSxhQUFhO3dCQUN2QixTQUFTLEVBQUUsaURBQWlEO3FCQUMvRDtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y29tcHV0ZWQsIERpcmVjdGl2ZSwgZWZmZWN0LCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b1NpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHt0dWlBc0NvbnRyb2wsIFR1aUNvbnRyb2x9IGZyb20gJ0B0YWlnYS11aS9jZGsvY2xhc3Nlcyc7XG5pbXBvcnQge1RVSV9BTExPV19TSUdOQUxfV1JJVEVTfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7VHVpTW9udGh9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7VFVJX0lTX01PQklMRX0gZnJvbSAnQHRhaWdhLXVpL2Nkay90b2tlbnMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge1xuICAgIHR1aUluamVjdEF1eGlsaWFyeSxcbiAgICBUdWlTZWxlY3RMaWtlLFxuICAgIFR1aVRleHRmaWVsZERpcmVjdGl2ZSxcbiAgICB0dWlUZXh0ZmllbGRJY29uQmluZGluZyxcbiAgICBUdWlXaXRoVGV4dGZpZWxkLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIFR1aURyb3Bkb3duQXV0byxcbiAgICB0dWlEcm9wZG93bkVuYWJsZWQsXG4gICAgdHVpRHJvcGRvd25PcGVuLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duJztcbmltcG9ydCB7VHVpQ2FsZW5kYXJNb250aH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2NhbGVuZGFyLW1vbnRoJztcbmltcG9ydCB7VFVJX0lOUFVUX0RBVEVfT1BUSU9OUywgVFVJX01PTlRIX0ZPUk1BVFRFUn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXRNb250aF0nLFxuICAgIHByb3ZpZGVyczogW3R1aUFzQ29udHJvbChUdWlJbnB1dE1vbnRoRGlyZWN0aXZlKV0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtUdWlXaXRoVGV4dGZpZWxkLCBUdWlTZWxlY3RMaWtlLCBUdWlEcm9wZG93bkF1dG9dLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQoKScsXG4gICAgICAgICcoYmx1ciknOiAnb25Ub3VjaGVkKCknLFxuICAgICAgICAnKGlucHV0KSc6ICckZXZlbnQuaW5wdXRUeXBlPy5pbmNsdWRlcyhcImRlbGV0ZVwiKSAmJiBjbGVhcigpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlJbnB1dE1vbnRoRGlyZWN0aXZlIGV4dGVuZHMgVHVpQ29udHJvbDxUdWlNb250aCB8IG51bGw+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRleHRmaWVsZCA9IGluamVjdChUdWlUZXh0ZmllbGREaXJlY3RpdmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybWF0dGVyID0gdG9TaWduYWwoaW5qZWN0KFRVSV9NT05USF9GT1JNQVRURVIpKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wZW4gPSB0dWlEcm9wZG93bk9wZW4oKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBpY29uID0gdHVpVGV4dGZpZWxkSWNvbkJpbmRpbmcoVFVJX0lOUFVUX0RBVEVfT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyb3Bkb3duRW5hYmxlZCA9IHR1aURyb3Bkb3duRW5hYmxlZChcbiAgICAgICAgY29tcHV0ZWQoKCkgPT4gIXRoaXMubmF0aXZlUGlja2VyRW5hYmxlZCAmJiB0aGlzLmludGVyYWN0aXZlKCkpLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmFsdWVFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICB0aGlzLnRleHRmaWVsZC52YWx1ZS5zZXQodGhpcy5mb3JtYXR0ZXIoKT8uKHRoaXMudmFsdWUoKSkgfHwgJycpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBjYWxlbmRhclN5bmMgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICB0aGlzLmNhbGVuZGFyKCk/LnZhbHVlLnNldCh0aGlzLnZhbHVlKCkpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHByb3RlY3RlZCBvbk1vbnRoQ2xpY2tFZmZlY3QgPSBlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLmNhbGVuZGFyKCk/Lm1vbnRoQ2xpY2suc3Vic2NyaWJlKChtb250aCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShtb250aCk7XG4gICAgICAgICAgICB0aGlzLm9wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgb25DbGVhbnVwKCgpID0+IHN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKSk7XG4gICAgfSk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2FsZW5kYXIgPSB0dWlJbmplY3RBdXhpbGlhcnk8VHVpQ2FsZW5kYXJNb250aD4oXG4gICAgICAgICh4KSA9PiB4IGluc3RhbmNlb2YgVHVpQ2FsZW5kYXJNb250aCxcbiAgICApO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IG5hdGl2ZVBpY2tlckVuYWJsZWQgPVxuICAgICAgICB0dWlJbmplY3RFbGVtZW50PEhUTUxJbnB1dEVsZW1lbnQ+KCkudHlwZSA9PT0gJ21vbnRoJyAmJiBpbmplY3QoVFVJX0lTX01PQklMRSk7XG5cbiAgICBwcm90ZWN0ZWQgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgICAgIHRoaXMub3Blbi5zZXQodGhpcy5kcm9wZG93bkVuYWJsZWQoKSk7XG4gICAgfVxufVxuIl19
@@ -1,10 +1,9 @@
1
- import { computed, Directive, effect, inject, signal } from '@angular/core';
1
+ import { Directive, effect, inject, signal } from '@angular/core';
2
2
  import { toSignal } from '@angular/core/rxjs-interop';
3
3
  import { tuiAsControl, TuiControl } from '@taiga-ui/cdk/classes';
4
4
  import { TUI_ALLOW_SIGNAL_WRITES } from '@taiga-ui/cdk/constants';
5
5
  import { RANGE_SEPARATOR_CHAR, TuiMonthRange } from '@taiga-ui/cdk/date-time';
6
- import { tuiValueBinding } from '@taiga-ui/cdk/utils/dom';
7
- import { tuiInjectAuxiliary, TuiSelectLike, tuiTextfieldIconBinding, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
6
+ import { tuiInjectAuxiliary, TuiSelectLike, TuiTextfieldDirective, tuiTextfieldIconBinding, TuiWithTextfield, } from '@taiga-ui/core/components/textfield';
8
7
  import { TuiDropdownAuto, tuiDropdownEnabled, tuiDropdownOpen, } from '@taiga-ui/core/directives/dropdown';
9
8
  import { TuiCalendarMonth } from '@taiga-ui/kit/components/calendar-month';
10
9
  import { TUI_INPUT_DATE_OPTIONS, TUI_MONTH_FORMATTER } from '@taiga-ui/kit/tokens';
@@ -14,15 +13,21 @@ import * as i2 from "@taiga-ui/core/directives/dropdown";
14
13
  class TuiInputMonthRangeDirective extends TuiControl {
15
14
  constructor() {
16
15
  super(...arguments);
16
+ this.textfield = inject(TuiTextfieldDirective);
17
+ this.formatter = toSignal(inject(TUI_MONTH_FORMATTER));
17
18
  this.open = tuiDropdownOpen();
18
19
  this.intermediateValue = signal(null);
19
20
  this.calendar = tuiInjectAuxiliary((x) => x instanceof TuiCalendarMonth);
20
- this.formatter = toSignal(inject(TUI_MONTH_FORMATTER), {
21
- initialValue: () => '',
22
- });
23
21
  this.icon = tuiTextfieldIconBinding(TUI_INPUT_DATE_OPTIONS);
24
22
  this.dropdownEnabled = tuiDropdownEnabled(this.interactive);
25
- this.textfieldValue = tuiValueBinding(computed((value = this.value(), format = this.formatter()) => value ? format(value.from) + RANGE_SEPARATOR_CHAR + format(value.to) : ''));
23
+ this.valueEffect = effect(() => {
24
+ const value = this.value();
25
+ const format = this.formatter() || (() => '');
26
+ const string = value
27
+ ? format(value.from) + RANGE_SEPARATOR_CHAR + format(value.to)
28
+ : '';
29
+ this.textfield.value.set(string);
30
+ }, TUI_ALLOW_SIGNAL_WRITES);
26
31
  this.calendarInit = effect(() => {
27
32
  const calendar = this.calendar();
28
33
  if (calendar) {
@@ -72,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
72
77
  },
73
78
  }]
74
79
  }] });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbW9udGgtcmFuZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbW9udGgtcmFuZ2UvaW5wdXQtbW9udGgtcmFuZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLGdCQUFnQixHQUNuQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGVBQWUsR0FDbEIsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQUVqRixNQVdhLDJCQUE0QixTQUFRLFVBQWdDO0lBWGpGOztRQVlxQixTQUFJLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDekIsc0JBQWlCLEdBQUcsTUFBTSxDQUFrQixJQUFJLENBQUMsQ0FBQztRQUVsRCxhQUFRLEdBQUcsa0JBQWtC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LElBQUk7b0JBQ2hCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFNBQVMsRUFBRSxDQUFDLFlBQVksNkJBQTZCLENBQUM7b0JBQ3RELGNBQWMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7b0JBQ2xFLElBQUksRUFBRTt3QkFDRixZQUFZLEVBQUUsWUFBWTt3QkFDMUIsUUFBUSxFQUFFLGFBQWE7d0JBQ3ZCLFNBQVMsRUFBRSxpREFBaUQ7cUJBQy9EO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb21wdXRlZCwgRGlyZWN0aXZlLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUVUlfQUxMT1dfU0lHTkFMX1dSSVRFU30gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1R1aU1vbnRofSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge1JBTkdFX1NFUEFSQVRPUl9DSEFSLCBUdWlNb250aFJhbmdlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge3R1aVZhbHVlQmluZGluZ30gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHtcbiAgICB0dWlJbmplY3RBdXhpbGlhcnksXG4gICAgVHVpU2VsZWN0TGlrZSxcbiAgICB0dWlUZXh0ZmllbGRJY29uQmluZGluZyxcbiAgICBUdWlXaXRoVGV4dGZpZWxkLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIFR1aURyb3Bkb3duQXV0byxcbiAgICB0dWlEcm9wZG93bkVuYWJsZWQsXG4gICAgdHVpRHJvcGRvd25PcGVuLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duJztcbmltcG9ydCB7VHVpQ2FsZW5kYXJNb250aH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2NhbGVuZGFyLW1vbnRoJztcbmltcG9ydCB7VFVJX0lOUFVUX0RBVEVfT1BUSU9OUywgVFVJX01PTlRIX0ZPUk1BVFRFUn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXRNb250aFJhbmdlXScsXG4gICAgcHJvdmlkZXJzOiBbdHVpQXNDb250cm9sKFR1aUlucHV0TW9udGhSYW5nZURpcmVjdGl2ZSldLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpV2l0aFRleHRmaWVsZCwgVHVpU2VsZWN0TGlrZSwgVHVpRHJvcGRvd25BdXRvXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbZGlzYWJsZWRdJzogJ2Rpc2FibGVkKCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnJGV2ZW50LmlucHV0VHlwZT8uaW5jbHVkZXMoXCJkZWxldGVcIikgJiYgY2xlYXIoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRNb250aFJhbmdlRGlyZWN0aXZlIGV4dGVuZHMgVHVpQ29udHJvbDxUdWlNb250aFJhbmdlIHwgbnVsbD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3BlbiA9IHR1aURyb3Bkb3duT3BlbigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJtZWRpYXRlVmFsdWUgPSBzaWduYWw8VHVpTW9udGggfCBudWxsPihudWxsKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FsZW5kYXIgPSB0dWlJbmplY3RBdXhpbGlhcnk8VHVpQ2FsZW5kYXJNb250aD4oXG4gICAgICAgICh4KSA9PiB4IGluc3RhbmNlb2YgVHVpQ2FsZW5kYXJNb250aCxcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtYXR0ZXIgPSB0b1NpZ25hbChpbmplY3QoVFVJX01PTlRIX0ZPUk1BVFRFUiksIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlOiAoKSA9PiAnJyxcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBpY29uID0gdHVpVGV4dGZpZWxkSWNvbkJpbmRpbmcoVFVJX0lOUFVUX0RBVEVfT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRyb3Bkb3duRW5hYmxlZCA9IHR1aURyb3Bkb3duRW5hYmxlZCh0aGlzLmludGVyYWN0aXZlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSB0ZXh0ZmllbGRWYWx1ZSA9IHR1aVZhbHVlQmluZGluZyhcbiAgICAgICAgY29tcHV0ZWQoKHZhbHVlID0gdGhpcy52YWx1ZSgpLCBmb3JtYXQgPSB0aGlzLmZvcm1hdHRlcigpKSA9PlxuICAgICAgICAgICAgdmFsdWUgPyBmb3JtYXQodmFsdWUuZnJvbSkgKyBSQU5HRV9TRVBBUkFUT1JfQ0hBUiArIGZvcm1hdCh2YWx1ZS50bykgOiAnJyxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGVuZGFySW5pdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbGVuZGFyID0gdGhpcy5jYWxlbmRhcigpO1xuXG4gICAgICAgIGlmIChjYWxlbmRhcikge1xuICAgICAgICAgICAgY2FsZW5kYXIub3B0aW9ucy5yYW5nZU1vZGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJTeW5jID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxlbmRhcigpPy52YWx1ZS5zZXQodGhpcy5pbnRlcm1lZGlhdGVWYWx1ZSgpID8/IHRoaXMudmFsdWUoKSk7XG4gICAgfSwgVFVJX0FMTE9XX1NJR05BTF9XUklURVMpO1xuXG4gICAgLy8gVE9ETzogdXNlIGxpbmtlZCBzaWduYWwgKEFuZ3VsYXIgMTkrKVxuICAgIHByb3RlY3RlZCByZWFkb25seSByZXNldEludGVybWVkaWF0ZVZhbHVlID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pbnRlcm1lZGlhdGVWYWx1ZS5zZXQodGhpcy52YWx1ZSgpICYmIG51bGwpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHByb3RlY3RlZCBvbk1vbnRoQ2xpY2tFZmZlY3QgPSBlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aGlzLmNhbGVuZGFyKCk/Lm1vbnRoQ2xpY2suc3Vic2NyaWJlKChtb250aCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW50ZXJtZWRpYXRlVmFsdWUgPSB0aGlzLmludGVybWVkaWF0ZVZhbHVlKCk7XG5cbiAgICAgICAgICAgIGlmICghaW50ZXJtZWRpYXRlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybWVkaWF0ZVZhbHVlLnNldChtb250aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UoVHVpTW9udGhSYW5nZS5zb3J0KGludGVybWVkaWF0ZVZhbHVlLCBtb250aCkpO1xuICAgICAgICAgICAgICAgIHRoaXMub3Blbi5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBvbkNsZWFudXAoKCkgPT4gc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpKTtcbiAgICB9KTtcblxuICAgIHByb3RlY3RlZCBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICAgICAgdGhpcy5vcGVuLnNldCh0cnVlKTtcbiAgICB9XG59XG4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbW9udGgtcmFuZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaW5wdXQtbW9udGgtcmFuZ2UvaW5wdXQtbW9udGgtcmFuZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGFBQWEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQix1QkFBdUIsRUFDdkIsZ0JBQWdCLEdBQ25CLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUNILGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7O0FBRWpGLE1BV2EsMkJBQTRCLFNBQVEsVUFBZ0M7SUFYakY7O1FBWXFCLGNBQVMsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMxQyxjQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFDbEQsU0FBSSxHQUFHLGVBQWUsRUFBRSxDQUFDO1FBQ3pC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MkIsZ09BUnpCLENBQUMsWUFBWSxDQUFDLDJCQUEyQixDQUFDLENBQUM7O1NBUTdDLDJCQUEyQjs0RkFBM0IsMkJBQTJCO2tCQVh2QyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxTQUFTLEVBQUUsQ0FBQyxZQUFZLDZCQUE2QixDQUFDO29CQUN0RCxjQUFjLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDO29CQUNsRSxJQUFJLEVBQUU7d0JBQ0YsWUFBWSxFQUFFLFlBQVk7d0JBQzFCLFFBQVEsRUFBRSxhQUFhO3dCQUN2QixTQUFTLEVBQUUsaURBQWlEO3FCQUMvRDtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dG9TaWduYWx9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7dHVpQXNDb250cm9sLCBUdWlDb250cm9sfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUVUlfQUxMT1dfU0lHTkFMX1dSSVRFU30gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1R1aU1vbnRofSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge1JBTkdFX1NFUEFSQVRPUl9DSEFSLCBUdWlNb250aFJhbmdlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge1xuICAgIHR1aUluamVjdEF1eGlsaWFyeSxcbiAgICBUdWlTZWxlY3RMaWtlLFxuICAgIFR1aVRleHRmaWVsZERpcmVjdGl2ZSxcbiAgICB0dWlUZXh0ZmllbGRJY29uQmluZGluZyxcbiAgICBUdWlXaXRoVGV4dGZpZWxkLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1xuICAgIFR1aURyb3Bkb3duQXV0byxcbiAgICB0dWlEcm9wZG93bkVuYWJsZWQsXG4gICAgdHVpRHJvcGRvd25PcGVuLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duJztcbmltcG9ydCB7VHVpQ2FsZW5kYXJNb250aH0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2NhbGVuZGFyLW1vbnRoJztcbmltcG9ydCB7VFVJX0lOUFVUX0RBVEVfT1BUSU9OUywgVFVJX01PTlRIX0ZPUk1BVFRFUn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnaW5wdXRbdHVpSW5wdXRNb250aFJhbmdlXScsXG4gICAgcHJvdmlkZXJzOiBbdHVpQXNDb250cm9sKFR1aUlucHV0TW9udGhSYW5nZURpcmVjdGl2ZSldLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpV2l0aFRleHRmaWVsZCwgVHVpU2VsZWN0TGlrZSwgVHVpRHJvcGRvd25BdXRvXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbZGlzYWJsZWRdJzogJ2Rpc2FibGVkKCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnJGV2ZW50LmlucHV0VHlwZT8uaW5jbHVkZXMoXCJkZWxldGVcIikgJiYgY2xlYXIoKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSW5wdXRNb250aFJhbmdlRGlyZWN0aXZlIGV4dGVuZHMgVHVpQ29udHJvbDxUdWlNb250aFJhbmdlIHwgbnVsbD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGV4dGZpZWxkID0gaW5qZWN0KFR1aVRleHRmaWVsZERpcmVjdGl2ZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtYXR0ZXIgPSB0b1NpZ25hbChpbmplY3QoVFVJX01PTlRIX0ZPUk1BVFRFUikpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3BlbiA9IHR1aURyb3Bkb3duT3BlbigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJtZWRpYXRlVmFsdWUgPSBzaWduYWw8VHVpTW9udGggfCBudWxsPihudWxsKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FsZW5kYXIgPSB0dWlJbmplY3RBdXhpbGlhcnk8VHVpQ2FsZW5kYXJNb250aD4oXG4gICAgICAgICh4KSA9PiB4IGluc3RhbmNlb2YgVHVpQ2FsZW5kYXJNb250aCxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGljb24gPSB0dWlUZXh0ZmllbGRJY29uQmluZGluZyhUVUlfSU5QVVRfREFURV9PUFRJT05TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJvcGRvd25FbmFibGVkID0gdHVpRHJvcGRvd25FbmFibGVkKHRoaXMuaW50ZXJhY3RpdmUpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZhbHVlRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMuZm9ybWF0dGVyKCkgfHwgKCgpID0+ICcnKTtcbiAgICAgICAgY29uc3Qgc3RyaW5nID0gdmFsdWVcbiAgICAgICAgICAgID8gZm9ybWF0KHZhbHVlLmZyb20pICsgUkFOR0VfU0VQQVJBVE9SX0NIQVIgKyBmb3JtYXQodmFsdWUudG8pXG4gICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIHRoaXMudGV4dGZpZWxkLnZhbHVlLnNldChzdHJpbmcpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBjYWxlbmRhckluaXQgPSBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBjb25zdCBjYWxlbmRhciA9IHRoaXMuY2FsZW5kYXIoKTtcblxuICAgICAgICBpZiAoY2FsZW5kYXIpIHtcbiAgICAgICAgICAgIGNhbGVuZGFyLm9wdGlvbnMucmFuZ2VNb2RlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbGVuZGFyU3luYyA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIoKT8udmFsdWUuc2V0KHRoaXMuaW50ZXJtZWRpYXRlVmFsdWUoKSA/PyB0aGlzLnZhbHVlKCkpO1xuICAgIH0sIFRVSV9BTExPV19TSUdOQUxfV1JJVEVTKTtcblxuICAgIC8vIFRPRE86IHVzZSBsaW5rZWQgc2lnbmFsIChBbmd1bGFyIDE5KylcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVzZXRJbnRlcm1lZGlhdGVWYWx1ZSA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW50ZXJtZWRpYXRlVmFsdWUuc2V0KHRoaXMudmFsdWUoKSAmJiBudWxsKTtcbiAgICB9LCBUVUlfQUxMT1dfU0lHTkFMX1dSSVRFUyk7XG5cbiAgICBwcm90ZWN0ZWQgb25Nb250aENsaWNrRWZmZWN0ID0gZWZmZWN0KChvbkNsZWFudXApID0+IHtcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5jYWxlbmRhcigpPy5tb250aENsaWNrLnN1YnNjcmliZSgobW9udGgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGludGVybWVkaWF0ZVZhbHVlID0gdGhpcy5pbnRlcm1lZGlhdGVWYWx1ZSgpO1xuXG4gICAgICAgICAgICBpZiAoIWludGVybWVkaWF0ZVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm1lZGlhdGVWYWx1ZS5zZXQobW9udGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKFR1aU1vbnRoUmFuZ2Uuc29ydChpbnRlcm1lZGlhdGVWYWx1ZSwgbW9udGgpKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW4uc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgb25DbGVhbnVwKCgpID0+IHN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKSk7XG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgY2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgICAgIHRoaXMub3Blbi5zZXQodHJ1ZSk7XG4gICAgfVxufVxuIl19