@taiga-ui/core 4.39.2 → 4.40.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 (33) hide show
  1. package/components/calendar/calendar.component.d.ts +3 -0
  2. package/components/data-list/data-list.component.d.ts +8 -5
  3. package/components/data-list/data-list.tokens.d.ts +5 -1
  4. package/components/textfield/select.directive.d.ts +1 -1
  5. package/components/textfield/textfield.component.d.ts +6 -2
  6. package/directives/items-handlers/index.d.ts +1 -0
  7. package/directives/items-handlers/items-handlers.validator.d.ts +10 -0
  8. package/esm2022/components/calendar/calendar-year.component.mjs +3 -3
  9. package/esm2022/components/calendar/calendar.component.mjs +9 -3
  10. package/esm2022/components/data-list/data-list.component.mjs +24 -10
  11. package/esm2022/components/data-list/data-list.tokens.mjs +1 -1
  12. package/esm2022/components/root/root.component.mjs +1 -1
  13. package/esm2022/components/textfield/select.directive.mjs +2 -2
  14. package/esm2022/components/textfield/textfield.component.mjs +23 -7
  15. package/esm2022/components/textfield/textfield.directive.mjs +2 -1
  16. package/esm2022/directives/dropdown/dropdown.component.mjs +2 -2
  17. package/esm2022/directives/items-handlers/index.mjs +2 -1
  18. package/esm2022/directives/items-handlers/items-handlers.validator.mjs +33 -0
  19. package/fesm2022/taiga-ui-core-components-calendar.mjs +10 -4
  20. package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
  21. package/fesm2022/taiga-ui-core-components-data-list.mjs +23 -9
  22. package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
  23. package/fesm2022/taiga-ui-core-components-root.mjs +1 -1
  24. package/fesm2022/taiga-ui-core-components-textfield.mjs +25 -8
  25. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  26. package/fesm2022/taiga-ui-core-directives-dropdown.mjs +1 -1
  27. package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +1 -1
  28. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs +30 -3
  29. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs.map +1 -1
  30. package/package.json +69 -69
  31. package/styles/components/textfield.less +2 -2
  32. package/styles/theme/palette.less +2 -0
  33. package/styles/theme/variables.less +2 -1
@@ -2,6 +2,7 @@ import { EventEmitter } from '@angular/core';
2
2
  import type { TuiDayRange } from '@taiga-ui/cdk/date-time';
3
3
  import { TuiDay, TuiMonth } from '@taiga-ui/cdk/date-time';
4
4
  import type { TuiBooleanHandler, TuiMapper } from '@taiga-ui/cdk/types';
5
+ import { Subject } from 'rxjs';
5
6
  import type { TuiMarkerHandler } from './calendar-sheet.component';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class TuiCalendar {
@@ -20,6 +21,8 @@ export declare class TuiCalendar {
20
21
  readonly dayClick: EventEmitter<TuiDay>;
21
22
  readonly monthChange: EventEmitter<TuiMonth>;
22
23
  readonly hoveredItemChange: EventEmitter<TuiDay | null>;
24
+ /** @deprecated for private use only until Calendars are refactored */
25
+ readonly valueChange: Subject<TuiDay>;
23
26
  set value(value: TuiDay | TuiDayRange | readonly TuiDay[] | null);
24
27
  set initialView(view: 'month' | 'year');
25
28
  get value(): TuiDay | TuiDayRange | readonly TuiDay[] | null;
@@ -1,27 +1,30 @@
1
- import type { AfterContentChecked } from '@angular/core';
1
+ import type { AfterContentChecked, AfterContentInit } from '@angular/core';
2
2
  import type { TuiSizeL, TuiSizeS } from '@taiga-ui/core/types';
3
3
  import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
4
4
  import type { TuiDataListAccessor } from './data-list.tokens';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare function tuiInjectDataListSize(): TuiSizeL | TuiSizeS;
7
- export declare class TuiDataListComponent<T> implements TuiDataListAccessor<T>, AfterContentChecked {
8
- private readonly legacyOptions;
9
- private readonly options;
7
+ export declare class TuiDataListComponent<T> implements TuiDataListAccessor<T>, AfterContentChecked, AfterContentInit {
8
+ private readonly legacyOptionsQuery;
9
+ private readonly optionsQuery;
10
10
  private origin?;
11
11
  private readonly ngZone;
12
12
  private readonly destroyRef;
13
13
  private readonly el;
14
14
  private readonly cdr;
15
+ private readonly contentReady$;
15
16
  protected readonly fallback: import("@angular/core").Signal<string | undefined>;
16
17
  protected readonly empty: import("@angular/core").WritableSignal<boolean>;
17
18
  emptyContent: PolymorpheusContent;
18
19
  size: "m" | "l" | "s";
20
+ readonly options: import("@angular/core").Signal<readonly T[]>;
19
21
  onKeyDownArrow(current: HTMLElement, step: number): void;
20
22
  handleFocusLossIfNecessary(element?: Element): void;
23
+ ngAfterContentInit(): void;
21
24
  ngAfterContentChecked(): void;
22
25
  getOptions(includeDisabled?: boolean): readonly T[];
23
26
  protected onFocusIn(relatedTarget: HTMLElement, currentTarget: HTMLElement): void;
24
27
  private get elements();
25
28
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiDataListComponent<any>, never>;
26
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiDataListComponent<any>, "tui-data-list", never, { "emptyContent": { "alias": "emptyContent"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, ["legacyOptions", "options"], ["*"], true, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiDataListComponent<any>, "tui-data-list", never, { "emptyContent": { "alias": "emptyContent"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, ["legacyOptionsQuery", "optionsQuery"], ["*"], true, never>;
27
30
  }
@@ -1,8 +1,12 @@
1
- import type { Provider, Type } from '@angular/core';
1
+ import type { Provider, Signal, Type } from '@angular/core';
2
2
  import type { TuiIdentityMatcher, TuiStringHandler } from '@taiga-ui/cdk/types';
3
3
  import type { TuiSizeL, TuiSizeS } from '@taiga-ui/core/types';
4
4
  export interface TuiDataListAccessor<T = unknown> {
5
+ /**
6
+ * @deprecated Use `options` property instead
7
+ */
5
8
  getOptions(includeDisabled?: boolean): readonly T[];
9
+ options?: Signal<readonly T[]>;
6
10
  }
7
11
  export interface TuiDataListHost<T> {
8
12
  checkOption?(option: T): void;
@@ -3,7 +3,7 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "@taiga-ui/cdk/directives/native-validator";
4
4
  import * as i2 from "@taiga-ui/core/directives/appearance";
5
5
  /**
6
- * @deprecated use {@link TuiSelect} from @taiga-ui/kit instead
6
+ * @deprecated use {@link TuiSelect} from @taiga-ui/kit instead, drop in v5
7
7
  */
8
8
  export declare class TuiSelect<T> extends TuiTextfieldBase<T> {
9
9
  private readonly nav;
@@ -1,6 +1,7 @@
1
1
  import type { AfterContentInit, QueryList } from '@angular/core';
2
2
  import { ElementRef, ViewContainerRef } from '@angular/core';
3
3
  import { NgControl } from '@angular/forms';
4
+ import { TuiControl } from '@taiga-ui/cdk/classes';
4
5
  import type { TuiContext } from '@taiga-ui/cdk/types';
5
6
  import type { TuiDataListHost } from '@taiga-ui/core/components/data-list';
6
7
  import type { TuiSizeL, TuiSizeS } from '@taiga-ui/core/types';
@@ -21,8 +22,10 @@ export declare class TuiTextfieldComponent<T> implements TuiDataListHost<T>, Aft
21
22
  private readonly focusedIn;
22
23
  private readonly contentReady$;
23
24
  private readonly inputQuery;
25
+ protected readonly ghost?: ElementRef<HTMLElement>;
24
26
  protected readonly label?: ElementRef<HTMLElement>;
25
- protected readonly control?: NgControl;
27
+ protected readonly ngControl?: NgControl;
28
+ protected readonly control?: TuiControl<unknown>;
26
29
  protected readonly auxiliaryQuery: QueryList<object>;
27
30
  protected readonly icons: import("@taiga-ui/core/tokens").TuiCommonIcons;
28
31
  protected readonly clear: import("@angular/core").Signal<string | undefined>;
@@ -45,6 +48,7 @@ export declare class TuiTextfieldComponent<T> implements TuiDataListHost<T>, Aft
45
48
  protected get hasLabel(): boolean;
46
49
  protected onResize({ contentRect }: ResizeObserverEntry): void;
47
50
  protected onIconClick(): void;
51
+ protected onScroll(element: HTMLElement): void;
48
52
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldComponent<any>, never>;
49
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiTextfieldComponent<any>, "tui-textfield", never, { "content": { "alias": "content"; "required": false; }; "fillerSetter": { "alias": "filler"; "required": false; }; }, {}, ["label", "control", "accessor", "input", "auxiliaryQuery"], ["input", "select", "textarea", "label", "*", "tui-icon"], true, [{ directive: typeof i1.TuiDropdownDirective; inputs: {}; outputs: {}; }, { directive: typeof i1.TuiDropdownFixed; inputs: {}; outputs: {}; }, { directive: typeof i1.TuiWithDropdownOpen; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithIcons; inputs: {}; outputs: {}; }, { directive: typeof i3.TuiWithItemsHandlers; inputs: {}; outputs: {}; }, { directive: typeof i4.TuiWithOptionContent; inputs: {}; outputs: {}; }, { directive: typeof i5.TuiWithTextfieldDropdown; inputs: {}; outputs: {}; }]>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiTextfieldComponent<any>, "tui-textfield", never, { "content": { "alias": "content"; "required": false; }; "fillerSetter": { "alias": "filler"; "required": false; }; }, {}, ["label", "ngControl", "control", "accessor", "input", "auxiliaryQuery"], ["input", "select", "textarea", "label", "*", "tui-icon"], true, [{ directive: typeof i1.TuiDropdownDirective; inputs: {}; outputs: {}; }, { directive: typeof i1.TuiDropdownFixed; inputs: {}; outputs: {}; }, { directive: typeof i1.TuiWithDropdownOpen; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiWithIcons; inputs: {}; outputs: {}; }, { directive: typeof i3.TuiWithItemsHandlers; inputs: {}; outputs: {}; }, { directive: typeof i4.TuiWithOptionContent; inputs: {}; outputs: {}; }, { directive: typeof i5.TuiWithTextfieldDropdown; inputs: {}; outputs: {}; }]>;
50
54
  }
@@ -1,2 +1,3 @@
1
1
  export * from './items-handlers.directive';
2
2
  export * from './items-handlers.tokens';
3
+ export * from './items-handlers.validator';
@@ -0,0 +1,10 @@
1
+ import type { ValidatorFn } from '@angular/forms';
2
+ import { TuiValidator } from '@taiga-ui/cdk/directives/validator';
3
+ import * as i0 from "@angular/core";
4
+ export declare class TuiItemsHandlersValidator extends TuiValidator {
5
+ private readonly handlers;
6
+ protected readonly update: import("@angular/core").EffectRef;
7
+ validate: ValidatorFn;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiItemsHandlersValidator, never>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiItemsHandlersValidator, never, never, {}, {}, never, never, true, never>;
10
+ }
@@ -84,14 +84,14 @@ class TuiCalendarYear {
84
84
  this.hoveredItem = hovered ? item : null;
85
85
  }
86
86
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendarYear, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
87
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCalendarYear, isStandalone: true, selector: "tui-calendar-year", inputs: { value: "value", initialItem: "initialItem", min: "min", max: "max", disabledItemHandler: "disabledItemHandler" }, outputs: { yearClick: "yearClick" }, host: { properties: { "class._picking": "isSingle" } }, ngImport: i0, template: "<div\n *tuiRepeatTimes=\"let rowIndex of rows\"\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n>\n <ng-container *tuiRepeatTimes=\"let colIndex of 4\">\n <div\n *tuiLet=\"getItem(rowIndex, colIndex) as item\"\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n </ng-container>\n</div>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-text-m)}.t-row:first-child{justify-content:flex-end}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;-webkit-mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem));mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{-webkit-mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);-webkit-mask:none;mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover) and (pointer: fine){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}:host{display:block;inline-size:16rem}.t-cell{inline-size:4rem;border-block-start-width:.5rem;border-block-end-width:.5rem}\n"], dependencies: [{ kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }, { kind: "directive", type: TuiScrollIntoView, selector: "[tuiScrollIntoView]", inputs: ["tuiScrollIntoView"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
87
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCalendarYear, isStandalone: true, selector: "tui-calendar-year", inputs: { value: "value", initialItem: "initialItem", min: "min", max: "max", disabledItemHandler: "disabledItemHandler" }, outputs: { yearClick: "yearClick" }, host: { properties: { "class._picking": "isSingle" } }, ngImport: i0, template: "<div\n *tuiRepeatTimes=\"let rowIndex of rows\"\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n>\n <ng-container *tuiRepeatTimes=\"let colIndex of 4\">\n <div\n *tuiLet=\"getItem(rowIndex, colIndex) as item\"\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n </ng-container>\n</div>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-text-m)}.t-row:first-child{justify-content:flex-end}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;-webkit-mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem));mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{-webkit-mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);-webkit-mask:none;mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover) and (pointer: fine){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}:host{display:block;padding-inline-end:1rem}.t-cell{flex:1;border-block-start-width:.5rem;border-block-end-width:.5rem}\n"], dependencies: [{ kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }, { kind: "directive", type: TuiScrollIntoView, selector: "[tuiScrollIntoView]", inputs: ["tuiScrollIntoView"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
88
88
  }
89
89
  export { TuiCalendarYear };
90
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendarYear, decorators: [{
91
91
  type: Component,
92
92
  args: [{ standalone: true, selector: 'tui-calendar-year', imports: [TuiHovered, TuiLet, TuiRepeatTimes, TuiScrollIntoView], changeDetection: ChangeDetectionStrategy.OnPush, host: {
93
93
  '[class._picking]': 'isSingle',
94
- }, template: "<div\n *tuiRepeatTimes=\"let rowIndex of rows\"\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n>\n <ng-container *tuiRepeatTimes=\"let colIndex of 4\">\n <div\n *tuiLet=\"getItem(rowIndex, colIndex) as item\"\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n </ng-container>\n</div>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-text-m)}.t-row:first-child{justify-content:flex-end}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;-webkit-mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem));mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{-webkit-mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);-webkit-mask:none;mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover) and (pointer: fine){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}:host{display:block;inline-size:16rem}.t-cell{inline-size:4rem;border-block-start-width:.5rem;border-block-end-width:.5rem}\n"] }]
94
+ }, template: "<div\n *tuiRepeatTimes=\"let rowIndex of rows\"\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n>\n <ng-container *tuiRepeatTimes=\"let colIndex of 4\">\n <div\n *tuiLet=\"getItem(rowIndex, colIndex) as item\"\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n </ng-container>\n</div>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-text-m)}.t-row:first-child{justify-content:flex-end}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;-webkit-mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem));mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{-webkit-mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-top-left-radius:0;border-bottom-left-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-top-right-radius:0;border-bottom-right-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);-webkit-mask:none;mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover) and (pointer: fine){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}:host{display:block;padding-inline-end:1rem}.t-cell{flex:1;border-block-start-width:.5rem;border-block-end-width:.5rem}\n"] }]
95
95
  }], propDecorators: { value: [{
96
96
  type: Input
97
97
  }], initialItem: [{
@@ -105,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
105
105
  }], yearClick: [{
106
106
  type: Output
107
107
  }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIteWVhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIteWVhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIteWVhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFDSCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFdBQVcsRUFDWCxRQUFRLEVBQ1IsYUFBYSxFQUNiLE9BQU8sR0FDVixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRXJFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFdEUsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQztBQUV2QixNQVdhLGVBQWU7SUFYNUI7UUFZWSxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFDekIsZ0JBQVcsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBR3JELFVBQUssR0FNQyxJQUFJLENBQUM7UUFHWCxnQkFBVyxHQUFX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QUFDLElBQUksQ0FBQztJQUM3QyxDQUFDOytHQWhIUSxlQUFlO21HQUFmLGVBQWUsc1NDdEM1QiwwdkJBcUJBLGl1SERTYyxVQUFVLDhGQUFFLE1BQU0seUVBQUUsY0FBYyw2R0FBRSxpQkFBaUI7O1NBUXRELGVBQWU7NEZBQWYsZUFBZTtrQkFYM0IsU0FBUztpQ0FDTSxJQUFJLFlBQ04sbUJBQW1CLFdBQ3BCLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLENBQUMsbUJBRy9DLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0Ysa0JBQWtCLEVBQUUsVUFBVTtxQkFDakM7OEJBT00sS0FBSztzQkFEWCxLQUFLO2dCQVVDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsR0FBRztzQkFEVCxLQUFLO2dCQUlDLEdBQUc7c0JBRFQsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSVUsU0FBUztzQkFEeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1R1aURheX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHtcbiAgICBNQVhfWUVBUixcbiAgICBNSU5fWUVBUixcbiAgICBUdWlEYXlSYW5nZSxcbiAgICBUdWlNb250aCxcbiAgICBUdWlNb250aFJhbmdlLFxuICAgIFR1aVllYXIsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7VHVpSG92ZXJlZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL2hvdmVyZWQnO1xuaW1wb3J0IHtUdWlMZXR9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9sZXQnO1xuaW1wb3J0IHtUdWlSZXBlYXRUaW1lc30gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL3JlcGVhdC10aW1lcyc7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHt0dWlJc051bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7VHVpU2Nyb2xsSW50b1ZpZXd9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvc2Nyb2xsYmFyJztcblxuY29uc3QgTElNSVQgPSAxMDA7XG5jb25zdCBJVEVNU19JTl9ST1cgPSA0O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWNhbGVuZGFyLXllYXInLFxuICAgIGltcG9ydHM6IFtUdWlIb3ZlcmVkLCBUdWlMZXQsIFR1aVJlcGVhdFRpbWVzLCBUdWlTY3JvbGxJbnRvVmlld10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLXllYXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIteWVhci5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLl9waWNraW5nXSc6ICdpc1NpbmdsZScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQ2FsZW5kYXJZZWFyIHtcbiAgICBwcml2YXRlIGhvdmVyZWRJdGVtOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbnRZZWFyID0gVHVpTW9udGguY3VycmVudExvY2FsKCkueWVhcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlOlxuICAgICAgICB8IFR1aURheVJhbmdlXG4gICAgICAgIHwgVHVpTW9udGhSYW5nZVxuICAgICAgICB8IFR1aVllYXJcbiAgICAgICAgfCBudW1iZXJcbiAgICAgICAgfCByZWFkb25seSBUdWlEYXlbXVxuICAgICAgICB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW5pdGlhbEl0ZW06IG51bWJlciA9IHRoaXMuY3VycmVudFllYXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW46IG51bWJlciB8IG51bGwgPSBNSU5fWUVBUjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heDogbnVtYmVyIHwgbnVsbCA9IE1BWF9ZRUFSO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8bnVtYmVyPiA9IFRVSV9GQUxTRV9IQU5ETEVSO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHllYXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgcHVibGljIGlzRGlzYWJsZWQoaXRlbTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5tYXggJiYgdGhpcy5tYXggPCBpdGVtKSB8fFxuICAgICAgICAgICAgKHRoaXMubWluICYmIHRoaXMubWluID4gaXRlbSkgfHxcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVtUmFuZ2UoaXRlbTogbnVtYmVyKTogJ2FjdGl2ZScgfCAnZW5kJyB8ICdtaWRkbGUnIHwgJ3N0YXJ0JyB8IG51bGwge1xuICAgICAgICBjb25zdCB7dmFsdWUsIGhvdmVyZWRJdGVtfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVHVpWWVhcikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnllYXIgPT09IGl0ZW0gPyAnYWN0aXZlJyA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHVpSXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgPT09IGl0ZW0gPyAnYWN0aXZlJyA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIFR1aU1vbnRoUmFuZ2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU/LmZpbmQoKGRheSkgPT4gZGF5LnllYXIgPT09IGl0ZW0pID8gJ2FjdGl2ZScgOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaG92ZXJlZCA9IHRoaXMuaXNTaW5nbGUgPyBob3ZlcmVkSXRlbSA6IG51bGw7XG4gICAgICAgIGNvbnN0IGZyb20gPSBNYXRoLm1pbih2YWx1ZS5mcm9tLnllYXIsIGhvdmVyZWQgPz8gdmFsdWUudG8ueWVhcik7XG4gICAgICAgIGNvbnN0IHRvID0gTWF0aC5tYXgodmFsdWUuZnJvbS55ZWFyLCBob3ZlcmVkID8/IHZhbHVlLnRvLnllYXIpO1xuXG4gICAgICAgIGlmIChmcm9tID09PSB0byAmJiB2YWx1ZS5mcm9tLnllYXIgPT09IHZhbHVlLnRvLnllYXIgJiYgZnJvbSA9PT0gaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuICdhY3RpdmUnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZyb20gPT09IGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiAnc3RhcnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRvID09PSBpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2VuZCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnJvbSA8IGl0ZW0gJiYgaXRlbSA8IHRvID8gJ21pZGRsZScgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkl0ZW1Ib3ZlcmVkKGhvdmVyZWQ6IGJvb2xlYW4sIGl0ZW06IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUhvdmVyZWRJdGVtKGhvdmVyZWQsIGl0ZW0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaXNTaW5nbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlIGluc3RhbmNlb2YgVHVpTW9udGhSYW5nZVxuICAgICAgICAgICAgPyB0aGlzLnZhbHVlLmZyb20ubW9udGhTYW1lKHRoaXMudmFsdWUudG8pXG4gICAgICAgICAgICA6IHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSAmJiB0aGlzLnZhbHVlLmlzU2luZ2xlRGF5O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgcm93cygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKCh0aGlzLmNhbGN1bGF0ZWRNYXggLSB0aGlzLmNhbGN1bGF0ZWRNaW4pIC8gSVRFTVNfSU5fUk9XKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2Nyb2xsSXRlbUludG9WaWV3KGl0ZW06IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsSXRlbSA9PT0gaXRlbTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SXRlbShyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHJvd0luZGV4ICogSVRFTVNfSU5fUk9XICsgY29sSW5kZXggKyB0aGlzLmNhbGN1bGF0ZWRNaW47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGl0ZW1Jc1RvZGF5KGl0ZW06IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50WWVhciA9PT0gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBjYWxjdWxhdGVkTWluKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGluaXRpYWwgPSB0aGlzLmluaXRpYWxJdGVtIC0gTElNSVQ7XG4gICAgICAgIGNvbnN0IG1pbiA9IHRoaXMubWluID8/IE1JTl9ZRUFSO1xuXG4gICAgICAgIHJldHVybiBtaW4gPiBpbml0aWFsID8gbWluIDogaW5pdGlhbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBjYWxjdWxhdGVkTWF4KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGluaXRpYWwgPSB0aGlzLmluaXRpYWxJdGVtICsgTElNSVQ7XG4gICAgICAgIGNvbnN0IG1heCA9IHRoaXMubWF4ID8/IE1BWF9ZRUFSO1xuXG4gICAgICAgIHJldHVybiBtYXggPCBpbml0aWFsID8gbWF4ICsgMSA6IGluaXRpYWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVIb3ZlcmVkSXRlbShob3ZlcmVkOiBib29sZWFuLCBpdGVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3ZlcmVkSXRlbSA9IGhvdmVyZWQgPyBpdGVtIDogbnVsbDtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgKnR1aVJlcGVhdFRpbWVzPVwibGV0IHJvd0luZGV4IG9mIHJvd3NcIlxuICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktY2FsZW5kYXIteWVhcl9fcm93XCJcbiAgICBjbGFzcz1cInQtcm93XCJcbj5cbiAgICA8bmctY29udGFpbmVyICp0dWlSZXBlYXRUaW1lcz1cImxldCBjb2xJbmRleCBvZiA0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICp0dWlMZXQ9XCJnZXRJdGVtKHJvd0luZGV4LCBjb2xJbmRleCkgYXMgaXRlbVwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXllYXJfX2NlbGxcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWNlbGxcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1yYW5nZV09XCJnZXRJdGVtUmFuZ2UoaXRlbSlcIlxuICAgICAgICAgICAgW2NsYXNzLnQtY2VsbF9kaXNhYmxlZF09XCJpc0Rpc2FibGVkKGl0ZW0pXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWNlbGxfdG9kYXldPVwiaXRlbUlzVG9kYXkoaXRlbSlcIlxuICAgICAgICAgICAgW3R1aVNjcm9sbEludG9WaWV3XT1cInNjcm9sbEl0ZW1JbnRvVmlldyhpdGVtKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwieWVhckNsaWNrLmVtaXQoaXRlbSlcIlxuICAgICAgICAgICAgKHR1aUhvdmVyZWRDaGFuZ2UpPVwib25JdGVtSG92ZXJlZCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIteWVhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIteWVhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvY2FsZW5kYXIvY2FsZW5kYXIteWVhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFDSCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFdBQVcsRUFDWCxRQUFRLEVBQ1IsYUFBYSxFQUNiLE9BQU8sR0FDVixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRXJFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQzs7QUFFdEUsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQztBQUV2QixNQVdhLGVBQWU7SUFYNUI7UUFZWSxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFDekIsZ0JBQVcsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBR3JELFVBQUssR0FNQyxJQUFJLENBQUM7UUFHWCxnQkFBVyxHQUFX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QUFDLElBQUksQ0FBQztJQUM3QyxDQUFDOytHQWhIUSxlQUFlO21HQUFmLGVBQWUsc1NDdEM1QiwwdkJBcUJBLDZ0SERTYyxVQUFVLDhGQUFFLE1BQU0seUVBQUUsY0FBYyw2R0FBRSxpQkFBaUI7O1NBUXRELGVBQWU7NEZBQWYsZUFBZTtrQkFYM0IsU0FBUztpQ0FDTSxJQUFJLFlBQ04sbUJBQW1CLFdBQ3BCLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsaUJBQWlCLENBQUMsbUJBRy9DLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0Ysa0JBQWtCLEVBQUUsVUFBVTtxQkFDakM7OEJBT00sS0FBSztzQkFEWCxLQUFLO2dCQVVDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsR0FBRztzQkFEVCxLQUFLO2dCQUlDLEdBQUc7c0JBRFQsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSVUsU0FBUztzQkFEeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1R1aURheX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHtcbiAgICBNQVhfWUVBUixcbiAgICBNSU5fWUVBUixcbiAgICBUdWlEYXlSYW5nZSxcbiAgICBUdWlNb250aCxcbiAgICBUdWlNb250aFJhbmdlLFxuICAgIFR1aVllYXIsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7VHVpSG92ZXJlZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL2hvdmVyZWQnO1xuaW1wb3J0IHtUdWlMZXR9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9sZXQnO1xuaW1wb3J0IHtUdWlSZXBlYXRUaW1lc30gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL3JlcGVhdC10aW1lcyc7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHt0dWlJc051bWJlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7VHVpU2Nyb2xsSW50b1ZpZXd9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvc2Nyb2xsYmFyJztcblxuY29uc3QgTElNSVQgPSAxMDA7XG5jb25zdCBJVEVNU19JTl9ST1cgPSA0O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWNhbGVuZGFyLXllYXInLFxuICAgIGltcG9ydHM6IFtUdWlIb3ZlcmVkLCBUdWlMZXQsIFR1aVJlcGVhdFRpbWVzLCBUdWlTY3JvbGxJbnRvVmlld10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLXllYXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIteWVhci5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLl9waWNraW5nXSc6ICdpc1NpbmdsZScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQ2FsZW5kYXJZZWFyIHtcbiAgICBwcml2YXRlIGhvdmVyZWRJdGVtOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1cnJlbnRZZWFyID0gVHVpTW9udGguY3VycmVudExvY2FsKCkueWVhcjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlOlxuICAgICAgICB8IFR1aURheVJhbmdlXG4gICAgICAgIHwgVHVpTW9udGhSYW5nZVxuICAgICAgICB8IFR1aVllYXJcbiAgICAgICAgfCBudW1iZXJcbiAgICAgICAgfCByZWFkb25seSBUdWlEYXlbXVxuICAgICAgICB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW5pdGlhbEl0ZW06IG51bWJlciA9IHRoaXMuY3VycmVudFllYXI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW46IG51bWJlciB8IG51bGwgPSBNSU5fWUVBUjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heDogbnVtYmVyIHwgbnVsbCA9IE1BWF9ZRUFSO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8bnVtYmVyPiA9IFRVSV9GQUxTRV9IQU5ETEVSO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHllYXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgcHVibGljIGlzRGlzYWJsZWQoaXRlbTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy5tYXggJiYgdGhpcy5tYXggPCBpdGVtKSB8fFxuICAgICAgICAgICAgKHRoaXMubWluICYmIHRoaXMubWluID4gaXRlbSkgfHxcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVtUmFuZ2UoaXRlbTogbnVtYmVyKTogJ2FjdGl2ZScgfCAnZW5kJyB8ICdtaWRkbGUnIHwgJ3N0YXJ0JyB8IG51bGwge1xuICAgICAgICBjb25zdCB7dmFsdWUsIGhvdmVyZWRJdGVtfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVHVpWWVhcikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnllYXIgPT09IGl0ZW0gPyAnYWN0aXZlJyA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHVpSXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgPT09IGl0ZW0gPyAnYWN0aXZlJyA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIFR1aU1vbnRoUmFuZ2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU/LmZpbmQoKGRheSkgPT4gZGF5LnllYXIgPT09IGl0ZW0pID8gJ2FjdGl2ZScgOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaG92ZXJlZCA9IHRoaXMuaXNTaW5nbGUgPyBob3ZlcmVkSXRlbSA6IG51bGw7XG4gICAgICAgIGNvbnN0IGZyb20gPSBNYXRoLm1pbih2YWx1ZS5mcm9tLnllYXIsIGhvdmVyZWQgPz8gdmFsdWUudG8ueWVhcik7XG4gICAgICAgIGNvbnN0IHRvID0gTWF0aC5tYXgodmFsdWUuZnJvbS55ZWFyLCBob3ZlcmVkID8/IHZhbHVlLnRvLnllYXIpO1xuXG4gICAgICAgIGlmIChmcm9tID09PSB0byAmJiB2YWx1ZS5mcm9tLnllYXIgPT09IHZhbHVlLnRvLnllYXIgJiYgZnJvbSA9PT0gaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuICdhY3RpdmUnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZyb20gPT09IGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiAnc3RhcnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRvID09PSBpdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2VuZCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnJvbSA8IGl0ZW0gJiYgaXRlbSA8IHRvID8gJ21pZGRsZScgOiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkl0ZW1Ib3ZlcmVkKGhvdmVyZWQ6IGJvb2xlYW4sIGl0ZW06IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUhvdmVyZWRJdGVtKGhvdmVyZWQsIGl0ZW0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaXNTaW5nbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlIGluc3RhbmNlb2YgVHVpTW9udGhSYW5nZVxuICAgICAgICAgICAgPyB0aGlzLnZhbHVlLmZyb20ubW9udGhTYW1lKHRoaXMudmFsdWUudG8pXG4gICAgICAgICAgICA6IHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSAmJiB0aGlzLnZhbHVlLmlzU2luZ2xlRGF5O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgcm93cygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKCh0aGlzLmNhbGN1bGF0ZWRNYXggLSB0aGlzLmNhbGN1bGF0ZWRNaW4pIC8gSVRFTVNfSU5fUk9XKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2Nyb2xsSXRlbUludG9WaWV3KGl0ZW06IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsSXRlbSA9PT0gaXRlbTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0SXRlbShyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHJvd0luZGV4ICogSVRFTVNfSU5fUk9XICsgY29sSW5kZXggKyB0aGlzLmNhbGN1bGF0ZWRNaW47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGl0ZW1Jc1RvZGF5KGl0ZW06IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50WWVhciA9PT0gaXRlbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBjYWxjdWxhdGVkTWluKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGluaXRpYWwgPSB0aGlzLmluaXRpYWxJdGVtIC0gTElNSVQ7XG4gICAgICAgIGNvbnN0IG1pbiA9IHRoaXMubWluID8/IE1JTl9ZRUFSO1xuXG4gICAgICAgIHJldHVybiBtaW4gPiBpbml0aWFsID8gbWluIDogaW5pdGlhbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBjYWxjdWxhdGVkTWF4KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGluaXRpYWwgPSB0aGlzLmluaXRpYWxJdGVtICsgTElNSVQ7XG4gICAgICAgIGNvbnN0IG1heCA9IHRoaXMubWF4ID8/IE1BWF9ZRUFSO1xuXG4gICAgICAgIHJldHVybiBtYXggPCBpbml0aWFsID8gbWF4ICsgMSA6IGluaXRpYWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVIb3ZlcmVkSXRlbShob3ZlcmVkOiBib29sZWFuLCBpdGVtOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3ZlcmVkSXRlbSA9IGhvdmVyZWQgPyBpdGVtIDogbnVsbDtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgKnR1aVJlcGVhdFRpbWVzPVwibGV0IHJvd0luZGV4IG9mIHJvd3NcIlxuICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktY2FsZW5kYXIteWVhcl9fcm93XCJcbiAgICBjbGFzcz1cInQtcm93XCJcbj5cbiAgICA8bmctY29udGFpbmVyICp0dWlSZXBlYXRUaW1lcz1cImxldCBjb2xJbmRleCBvZiA0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICp0dWlMZXQ9XCJnZXRJdGVtKHJvd0luZGV4LCBjb2xJbmRleCkgYXMgaXRlbVwiXG4gICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXllYXJfX2NlbGxcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0LWNlbGxcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1yYW5nZV09XCJnZXRJdGVtUmFuZ2UoaXRlbSlcIlxuICAgICAgICAgICAgW2NsYXNzLnQtY2VsbF9kaXNhYmxlZF09XCJpc0Rpc2FibGVkKGl0ZW0pXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWNlbGxfdG9kYXldPVwiaXRlbUlzVG9kYXkoaXRlbSlcIlxuICAgICAgICAgICAgW3R1aVNjcm9sbEludG9WaWV3XT1cInNjcm9sbEl0ZW1JbnRvVmlldyhpdGVtKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwieWVhckNsaWNrLmVtaXQoaXRlbSlcIlxuICAgICAgICAgICAgKHR1aUhvdmVyZWRDaGFuZ2UpPVwib25JdGVtSG92ZXJlZCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
@@ -6,6 +6,7 @@ import { TuiMapperPipe } from '@taiga-ui/cdk/pipes/mapper';
6
6
  import { tuiNullableSame } from '@taiga-ui/cdk/utils/miscellaneous';
7
7
  import { TuiScrollbar } from '@taiga-ui/core/components/scrollbar';
8
8
  import { tuiAsAuxiliary } from '@taiga-ui/core/tokens';
9
+ import { Subject } from 'rxjs';
9
10
  import { TuiCalendarSheet } from './calendar-sheet.component';
10
11
  import { TuiCalendarSpin } from './calendar-spin.component';
11
12
  import { TuiCalendarYear } from './calendar-year.component';
@@ -27,6 +28,8 @@ class TuiCalendar {
27
28
  this.dayClick = new EventEmitter();
28
29
  this.monthChange = new EventEmitter();
29
30
  this.hoveredItemChange = new EventEmitter();
31
+ /** @deprecated for private use only until Calendars are refactored */
32
+ this.valueChange = new Subject();
30
33
  this.disabledItemHandlerMapper = (disabledItemHandler, min, max) => (item) => item.dayBefore(min) || item.dayAfter(max) || disabledItemHandler(item);
31
34
  }
32
35
  set value(value) {
@@ -49,6 +52,7 @@ class TuiCalendar {
49
52
  }
50
53
  onDayClick(day) {
51
54
  this.dayClick.emit(day);
55
+ this.valueChange.next(day);
52
56
  }
53
57
  onHoveredItemChange(day) {
54
58
  this.updateHoveredDay(day);
@@ -94,7 +98,7 @@ class TuiCalendar {
94
98
  this.hoveredItemChange.emit(day);
95
99
  }
96
100
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
97
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCalendar, isStandalone: true, selector: "tui-calendar", inputs: { month: "month", disabledItemHandler: "disabledItemHandler", min: "min", max: "max", minViewedMonth: "minViewedMonth", maxViewedMonth: "maxViewedMonth", hoveredItem: "hoveredItem", showAdjacent: "showAdjacent", markerHandler: "markerHandler", value: "value", initialView: "initialView" }, outputs: { dayClick: "dayClick", monthChange: "monthChange", hoveredItemChange: "hoveredItemChange" }, providers: [tuiAsAuxiliary(TuiCalendar)], ngImport: i0, template: "<tui-scrollbar\n *ngIf=\"isInYearView; else calendar\"\n automation-id=\"tui-calendar__scrollbar\"\n class=\"t-scrollbar\"\n>\n <tui-calendar-year\n automation-id=\"tui-calendar__year\"\n [initialItem]=\"month.year\"\n [max]=\"computedMax.year\"\n [min]=\"computedMin.year\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n</tui-scrollbar>\n<ng-template #calendar>\n <tui-calendar-spin\n automation-id=\"tui-calendar__pagination\"\n class=\"t-pagination\"\n [max]=\"computedMaxViewedMonth\"\n [min]=\"computedMinViewedMonth\"\n [value]=\"month\"\n (valueChange)=\"onPaginationValueChange($event)\"\n (yearClick)=\"onPaginationYearClick()\"\n />\n <tui-calendar-sheet\n automation-id=\"tui-calendar__calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : computedMin : computedMax\"\n [hoveredItem]=\"hoveredItem\"\n [markerHandler]=\"markerHandler\"\n [month]=\"month\"\n [showAdjacent]=\"showAdjacent\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n (hoveredItemChange)=\"onHoveredItemChange($event)\"\n />\n</ng-template>\n", styles: [":host{display:block;min-block-size:20.25rem;inline-size:18rem;padding:1rem 1.125rem;box-sizing:border-box;flex-shrink:0}:host-context(tui-dropdown-mobile){inline-size:100%}.t-scrollbar{block-size:18.25rem;inline-size:calc(100% + 1rem)}.t-pagination{margin-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TuiCalendarSheet, selector: "tui-calendar-sheet", inputs: ["month", "disabledItemHandler", "markerHandler", "value", "hoveredItem", "showAdjacent", "single"], outputs: ["hoveredItemChange", "dayClick"] }, { kind: "component", type: TuiCalendarSpin, selector: "tui-calendar-spin", inputs: ["value", "min", "max"], outputs: ["valueChange", "yearClick"] }, { kind: "component", type: TuiCalendarYear, selector: "tui-calendar-year", inputs: ["value", "initialItem", "min", "max", "disabledItemHandler"], outputs: ["yearClick"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar", inputs: ["hidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCalendar, isStandalone: true, selector: "tui-calendar", inputs: { month: "month", disabledItemHandler: "disabledItemHandler", min: "min", max: "max", minViewedMonth: "minViewedMonth", maxViewedMonth: "maxViewedMonth", hoveredItem: "hoveredItem", showAdjacent: "showAdjacent", markerHandler: "markerHandler", value: "value", initialView: "initialView" }, outputs: { dayClick: "dayClick", monthChange: "monthChange", hoveredItemChange: "hoveredItemChange" }, host: { listeners: { "pointerdown.prevent.zoneless": "0" } }, providers: [tuiAsAuxiliary(TuiCalendar)], ngImport: i0, template: "<tui-scrollbar\n *ngIf=\"isInYearView; else calendar\"\n automation-id=\"tui-calendar__scrollbar\"\n class=\"t-scrollbar\"\n>\n <tui-calendar-year\n automation-id=\"tui-calendar__year\"\n [initialItem]=\"month.year\"\n [max]=\"computedMax.year\"\n [min]=\"computedMin.year\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n</tui-scrollbar>\n<ng-template #calendar>\n <tui-calendar-spin\n automation-id=\"tui-calendar__pagination\"\n class=\"t-pagination\"\n [max]=\"computedMaxViewedMonth\"\n [min]=\"computedMinViewedMonth\"\n [value]=\"month\"\n (valueChange)=\"onPaginationValueChange($event)\"\n (yearClick)=\"onPaginationYearClick()\"\n />\n <tui-calendar-sheet\n automation-id=\"tui-calendar__calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : computedMin : computedMax\"\n [hoveredItem]=\"hoveredItem\"\n [markerHandler]=\"markerHandler\"\n [month]=\"month\"\n [showAdjacent]=\"showAdjacent\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n (hoveredItemChange)=\"onHoveredItemChange($event)\"\n />\n</ng-template>\n", styles: [":host{display:block;min-block-size:20.25rem;inline-size:18rem;padding:1rem 1.125rem;box-sizing:border-box;flex-shrink:0}:host-context(tui-dropdown-mobile){inline-size:100%}.t-scrollbar{block-size:18.25rem;inline-size:calc(100% + 1rem)}.t-pagination{margin-bottom:1rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TuiCalendarSheet, selector: "tui-calendar-sheet", inputs: ["month", "disabledItemHandler", "markerHandler", "value", "hoveredItem", "showAdjacent", "single"], outputs: ["hoveredItemChange", "dayClick"] }, { kind: "component", type: TuiCalendarSpin, selector: "tui-calendar-spin", inputs: ["value", "min", "max"], outputs: ["valueChange", "yearClick"] }, { kind: "component", type: TuiCalendarYear, selector: "tui-calendar-year", inputs: ["value", "initialItem", "min", "max", "disabledItemHandler"], outputs: ["yearClick"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar", inputs: ["hidden"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
98
102
  }
99
103
  export { TuiCalendar };
100
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendar, decorators: [{
@@ -106,7 +110,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
106
110
  TuiCalendarYear,
107
111
  TuiMapperPipe,
108
112
  TuiScrollbar,
109
- ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAsAuxiliary(TuiCalendar)], template: "<tui-scrollbar\n *ngIf=\"isInYearView; else calendar\"\n automation-id=\"tui-calendar__scrollbar\"\n class=\"t-scrollbar\"\n>\n <tui-calendar-year\n automation-id=\"tui-calendar__year\"\n [initialItem]=\"month.year\"\n [max]=\"computedMax.year\"\n [min]=\"computedMin.year\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n</tui-scrollbar>\n<ng-template #calendar>\n <tui-calendar-spin\n automation-id=\"tui-calendar__pagination\"\n class=\"t-pagination\"\n [max]=\"computedMaxViewedMonth\"\n [min]=\"computedMinViewedMonth\"\n [value]=\"month\"\n (valueChange)=\"onPaginationValueChange($event)\"\n (yearClick)=\"onPaginationYearClick()\"\n />\n <tui-calendar-sheet\n automation-id=\"tui-calendar__calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : computedMin : computedMax\"\n [hoveredItem]=\"hoveredItem\"\n [markerHandler]=\"markerHandler\"\n [month]=\"month\"\n [showAdjacent]=\"showAdjacent\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n (hoveredItemChange)=\"onHoveredItemChange($event)\"\n />\n</ng-template>\n", styles: [":host{display:block;min-block-size:20.25rem;inline-size:18rem;padding:1rem 1.125rem;box-sizing:border-box;flex-shrink:0}:host-context(tui-dropdown-mobile){inline-size:100%}.t-scrollbar{block-size:18.25rem;inline-size:calc(100% + 1rem)}.t-pagination{margin-bottom:1rem}\n"] }]
113
+ ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiAsAuxiliary(TuiCalendar)], host: {
114
+ '(pointerdown.prevent.zoneless)': '0',
115
+ }, template: "<tui-scrollbar\n *ngIf=\"isInYearView; else calendar\"\n automation-id=\"tui-calendar__scrollbar\"\n class=\"t-scrollbar\"\n>\n <tui-calendar-year\n automation-id=\"tui-calendar__year\"\n [initialItem]=\"month.year\"\n [max]=\"computedMax.year\"\n [min]=\"computedMin.year\"\n [value]=\"value\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n</tui-scrollbar>\n<ng-template #calendar>\n <tui-calendar-spin\n automation-id=\"tui-calendar__pagination\"\n class=\"t-pagination\"\n [max]=\"computedMaxViewedMonth\"\n [min]=\"computedMinViewedMonth\"\n [value]=\"month\"\n (valueChange)=\"onPaginationValueChange($event)\"\n (yearClick)=\"onPaginationYearClick()\"\n />\n <tui-calendar-sheet\n automation-id=\"tui-calendar__calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : computedMin : computedMax\"\n [hoveredItem]=\"hoveredItem\"\n [markerHandler]=\"markerHandler\"\n [month]=\"month\"\n [showAdjacent]=\"showAdjacent\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n (hoveredItemChange)=\"onHoveredItemChange($event)\"\n />\n</ng-template>\n", styles: [":host{display:block;min-block-size:20.25rem;inline-size:18rem;padding:1rem 1.125rem;box-sizing:border-box;flex-shrink:0}:host-context(tui-dropdown-mobile){inline-size:100%}.t-scrollbar{block-size:18.25rem;inline-size:calc(100% + 1rem)}.t-pagination{margin-bottom:1rem}\n"] }]
110
116
  }], propDecorators: { month: [{
111
117
  type: Input
112
118
  }], disabledItemHandler: [{
@@ -136,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
136
142
  }], initialView: [{
137
143
  type: Input
138
144
  }] } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFDSCxhQUFhLEVBQ2IsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixNQUFNLEVBQ04sUUFBUSxHQUNYLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBR3JELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7O0FBRTFELE1BZ0JhLFdBQVc7SUFoQnhCO1FBaUJxQixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekMsUUFBRyxHQUFvRCxJQUFJLENBQUM7UUFDNUQsU0FBSSxHQUFxQixPQUFPLENBQUM7UUFHbEMsVUFBSyxHQUFhLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUcxQyx3QkFBbUIsR0FBOEIsaUJBQWlCLENBQUM7UUFHbkUsUUFBRyxHQUFrQixhQUFhLENBQUM7UUFHbkMsUUFBRyxHQUFrQixZQUFZLENBQUM7UUFHbEMsbUJBQWMsR0FBb0IsYUFBYSxDQUFDO1FBR2hELG1CQUFjLEdBQW9CLFlBQVksQ0FBQztRQUcvQyxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFHbEMsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFHcEIsa0JBQWEsR0FBNEIsSUFBSSxDQUFDO1FBR3JDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR3RDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUczQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQStEbkQsOEJBQXlCLEdBR3hDLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7S0E0QjlFO0lBN0ZHLElBQ1csS0FBSyxDQUFDLEtBQXNEO1FBQ25FLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFFakIsSUFDSSxJQUFJLENBQUMsWUFBWTtZQUNqQixLQUFLLFlBQVksTUFBTTtZQUN2QixLQUFLLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQy9DO1lBQ0UsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBRUQsSUFDVyxXQUFXLENBQUMsSUFBc0I7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNwQixDQUFDO0lBRU0sdUJBQXVCLENBQUMsS0FBZTtRQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxHQUFXO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxHQUFrQjtRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQWMsV0FBVztRQUNyQixPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksYUFBYSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFjLFdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsR0FBRyxJQUFJLFlBQVksQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBYyxzQkFBc0I7UUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLGFBQWEsQ0FBQztRQUV2RCxPQUFPLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQWMsc0JBQXNCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDN0IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxZQUFZLENBQUM7UUFFdEQsT0FBTyxTQUFTLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFjLFlBQVk7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztJQUNoQyxDQUFDO0lBUVMscUJBQXFCO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxJQUFZO1FBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFlO1FBQ3JDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDN0IsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEdBQWtCO1FBQ3ZDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hFLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQzsrR0FySVEsV0FBVzttR0FBWCxXQUFXLDRjQUZULENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLDBCQzVDNUMsb3dDQW9DQSx3VURGUSxJQUFJLDZGQUNKLGdCQUFnQix3TkFDaEIsZUFBZSxzSUFDZixlQUFlLHdKQUNmLGFBQWEsa0RBQ2IsWUFBWTs7U0FPUCxXQUFXOzRGQUFYLFdBQVc7a0JBaEJ2QixTQUFTO2lDQUNNLElBQUksWUFDTixjQUFjLFdBQ2Y7d0JBQ0wsSUFBSTt3QkFDSixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixhQUFhO3dCQUNiLFlBQVk7cUJBQ2YsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxjQUFjLGFBQWEsQ0FBQzs4QkFRakMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJQyxHQUFHO3NCQURULEtBQUs7Z0JBSUMsR0FBRztzQkFEVCxLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJVSxRQUFRO3NCQUR2QixNQUFNO2dCQUlTLFdBQVc7c0JBRDFCLE1BQU07Z0JBSVMsaUJBQWlCO3NCQURoQyxNQUFNO2dCQUlJLEtBQUs7c0JBRGYsS0FBSztnQkFlSyxXQUFXO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ0lmfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1R1aURheVJhbmdlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge1xuICAgIFRVSV9GSVJTVF9EQVksXG4gICAgVFVJX0xBU1RfREFZLFxuICAgIFRVSV9MQVNUX0RJU1BMQVlFRF9EQVksXG4gICAgVHVpRGF5LFxuICAgIFR1aU1vbnRoLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge1R1aU1hcHBlclBpcGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvcGlwZXMvbWFwcGVyJztcbmltcG9ydCB0eXBlIHtUdWlCb29sZWFuSGFuZGxlciwgVHVpTWFwcGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7dHVpTnVsbGFibGVTYW1lfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtUdWlTY3JvbGxiYXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvc2Nyb2xsYmFyJztcbmltcG9ydCB7dHVpQXNBdXhpbGlhcnl9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5cbmltcG9ydCB0eXBlIHtUdWlNYXJrZXJIYW5kbGVyfSBmcm9tICcuL2NhbGVuZGFyLXNoZWV0LmNvbXBvbmVudCc7XG5pbXBvcnQge1R1aUNhbGVuZGFyU2hlZXR9IGZyb20gJy4vY2FsZW5kYXItc2hlZXQuY29tcG9uZW50JztcbmltcG9ydCB7VHVpQ2FsZW5kYXJTcGlufSBmcm9tICcuL2NhbGVuZGFyLXNwaW4uY29tcG9uZW50JztcbmltcG9ydCB7VHVpQ2FsZW5kYXJZZWFyfSBmcm9tICcuL2NhbGVuZGFyLXllYXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1jYWxlbmRhcicsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBUdWlDYWxlbmRhclNoZWV0LFxuICAgICAgICBUdWlDYWxlbmRhclNwaW4sXG4gICAgICAgIFR1aUNhbGVuZGFyWWVhcixcbiAgICAgICAgVHVpTWFwcGVyUGlwZSxcbiAgICAgICAgVHVpU2Nyb2xsYmFyLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFt0dWlBc0F1eGlsaWFyeShUdWlDYWxlbmRhcildLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlDYWxlbmRhciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgZGF5OiBUdWlEYXkgfCBUdWlEYXlSYW5nZSB8IHJlYWRvbmx5IFR1aURheVtdIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSB2aWV3OiAnbW9udGgnIHwgJ3llYXInID0gJ21vbnRoJztcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1vbnRoOiBUdWlNb250aCA9IFR1aU1vbnRoLmN1cnJlbnRMb2NhbCgpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PiA9IFRVSV9GQUxTRV9IQU5ETEVSO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluOiBUdWlEYXkgfCBudWxsID0gVFVJX0ZJUlNUX0RBWTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heDogVHVpRGF5IHwgbnVsbCA9IFRVSV9MQVNUX0RBWTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pblZpZXdlZE1vbnRoOiBUdWlNb250aCB8IG51bGwgPSBUVUlfRklSU1RfREFZO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4Vmlld2VkTW9udGg6IFR1aU1vbnRoIHwgbnVsbCA9IFRVSV9MQVNUX0RBWTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhvdmVyZWRJdGVtOiBUdWlEYXkgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dBZGphY2VudCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXJrZXJIYW5kbGVyOiBUdWlNYXJrZXJIYW5kbGVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGF5Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aURheT4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBtb250aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VHVpTW9udGg+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgaG92ZXJlZEl0ZW1DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aURheSB8IG51bGw+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W10gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLmRheSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuc2hvd0FkamFjZW50ICYmXG4gICAgICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIFR1aURheSAmJlxuICAgICAgICAgICAgdmFsdWUuZGF5U2FtZU9yQmVmb3JlKFRVSV9MQVNUX0RJU1BMQVlFRF9EQVkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5tb250aCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGluaXRpYWxWaWV3KHZpZXc6ICdtb250aCcgfCAneWVhcicpIHtcbiAgICAgICAgdGhpcy52aWV3ID0gdmlldztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W10gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF5O1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBhZ2luYXRpb25WYWx1ZUNoYW5nZShtb250aDogVHVpTW9udGgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3ZWRNb250aChtb250aCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRGF5Q2xpY2soZGF5OiBUdWlEYXkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXlDbGljay5lbWl0KGRheSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSG92ZXJlZEl0ZW1DaGFuZ2UoZGF5OiBUdWlEYXkgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlSG92ZXJlZERheShkYXkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY29tcHV0ZWRNaW4oKTogVHVpRGF5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluID8/IFRVSV9GSVJTVF9EQVk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZE1heCgpOiBUdWlEYXkge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXggPz8gVFVJX0xBU1RfREFZO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY29tcHV0ZWRNaW5WaWV3ZWRNb250aCgpOiBUdWlNb250aCB7XG4gICAgICAgIGNvbnN0IG1pbiA9IHRoaXMuY29tcHV0ZWRNaW47XG4gICAgICAgIGNvbnN0IG1pblZpZXdlZCA9IHRoaXMubWluVmlld2VkTW9udGggPz8gVFVJX0ZJUlNUX0RBWTtcblxuICAgICAgICByZXR1cm4gbWluVmlld2VkLm1vbnRoU2FtZU9yQWZ0ZXIobWluKSA/IG1pblZpZXdlZCA6IG1pbjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNvbXB1dGVkTWF4Vmlld2VkTW9udGgoKTogVHVpTW9udGgge1xuICAgICAgICBjb25zdCBtYXggPSB0aGlzLmNvbXB1dGVkTWF4O1xuICAgICAgICBjb25zdCBtYXhWaWV3ZWQgPSB0aGlzLm1heFZpZXdlZE1vbnRoID8/IFRVSV9MQVNUX0RBWTtcblxuICAgICAgICByZXR1cm4gbWF4Vmlld2VkLm1vbnRoU2FtZU9yQmVmb3JlKG1heCkgPyBtYXhWaWV3ZWQgOiBtYXg7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBpc0luWWVhclZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXcgPT09ICd5ZWFyJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYWJsZWRJdGVtSGFuZGxlck1hcHBlcjogVHVpTWFwcGVyPFxuICAgICAgICBbVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PiwgVHVpRGF5LCBUdWlEYXldLFxuICAgICAgICBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+XG4gICAgPiA9IChkaXNhYmxlZEl0ZW1IYW5kbGVyLCBtaW4sIG1heCkgPT4gKGl0ZW0pID0+XG4gICAgICAgIGl0ZW0uZGF5QmVmb3JlKG1pbikgfHwgaXRlbS5kYXlBZnRlcihtYXgpIHx8IGRpc2FibGVkSXRlbUhhbmRsZXIoaXRlbSk7XG5cbiAgICBwcm90ZWN0ZWQgb25QYWdpbmF0aW9uWWVhckNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXcgPSAneWVhcic7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uUGlja2VyWWVhckNsaWNrKHllYXI6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXcgPSAnbW9udGgnO1xuICAgICAgICB0aGlzLnVwZGF0ZVZpZXdlZE1vbnRoKG5ldyBUdWlNb250aCh5ZWFyLCB0aGlzLm1vbnRoLm1vbnRoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWaWV3ZWRNb250aChtb250aDogVHVpTW9udGgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubW9udGgubW9udGhTYW1lKG1vbnRoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tb250aCA9IG1vbnRoO1xuICAgICAgICB0aGlzLm1vbnRoQ2hhbmdlLmVtaXQobW9udGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlSG92ZXJlZERheShkYXk6IFR1aURheSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR1aU51bGxhYmxlU2FtZSh0aGlzLmhvdmVyZWRJdGVtLCBkYXksIChhLCBiKSA9PiBhLmRheVNhbWUoYikpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhvdmVyZWRJdGVtID0gZGF5O1xuICAgICAgICB0aGlzLmhvdmVyZWRJdGVtQ2hhbmdlLmVtaXQoZGF5KTtcbiAgICB9XG59XG4iLCI8dHVpLXNjcm9sbGJhclxuICAgICpuZ0lmPVwiaXNJblllYXJWaWV3OyBlbHNlIGNhbGVuZGFyXCJcbiAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyX19zY3JvbGxiYXJcIlxuICAgIGNsYXNzPVwidC1zY3JvbGxiYXJcIlxuPlxuICAgIDx0dWktY2FsZW5kYXIteWVhclxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyX195ZWFyXCJcbiAgICAgICAgW2luaXRpYWxJdGVtXT1cIm1vbnRoLnllYXJcIlxuICAgICAgICBbbWF4XT1cImNvbXB1dGVkTWF4LnllYXJcIlxuICAgICAgICBbbWluXT1cImNvbXB1dGVkTWluLnllYXJcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAoeWVhckNsaWNrKT1cIm9uUGlja2VyWWVhckNsaWNrKCRldmVudClcIlxuICAgIC8+XG48L3R1aS1zY3JvbGxiYXI+XG48bmctdGVtcGxhdGUgI2NhbGVuZGFyPlxuICAgIDx0dWktY2FsZW5kYXItc3BpblxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyX19wYWdpbmF0aW9uXCJcbiAgICAgICAgY2xhc3M9XCJ0LXBhZ2luYXRpb25cIlxuICAgICAgICBbbWF4XT1cImNvbXB1dGVkTWF4Vmlld2VkTW9udGhcIlxuICAgICAgICBbbWluXT1cImNvbXB1dGVkTWluVmlld2VkTW9udGhcIlxuICAgICAgICBbdmFsdWVdPVwibW9udGhcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25QYWdpbmF0aW9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICh5ZWFyQ2xpY2spPVwib25QYWdpbmF0aW9uWWVhckNsaWNrKClcIlxuICAgIC8+XG4gICAgPHR1aS1jYWxlbmRhci1zaGVldFxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyX19jYWxlbmRhclwiXG4gICAgICAgIFtkaXNhYmxlZEl0ZW1IYW5kbGVyXT1cImRpc2FibGVkSXRlbUhhbmRsZXIgfCB0dWlNYXBwZXI6IGRpc2FibGVkSXRlbUhhbmRsZXJNYXBwZXIgOiBjb21wdXRlZE1pbiA6IGNvbXB1dGVkTWF4XCJcbiAgICAgICAgW2hvdmVyZWRJdGVtXT1cImhvdmVyZWRJdGVtXCJcbiAgICAgICAgW21hcmtlckhhbmRsZXJdPVwibWFya2VySGFuZGxlclwiXG4gICAgICAgIFttb250aF09XCJtb250aFwiXG4gICAgICAgIFtzaG93QWRqYWNlbnRdPVwic2hvd0FkamFjZW50XCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgKGRheUNsaWNrKT1cIm9uRGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChob3ZlcmVkSXRlbUNoYW5nZSk9XCJvbkhvdmVyZWRJdGVtQ2hhbmdlKCRldmVudClcIlxuICAgIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTFELE9BQU8sRUFDSCxhQUFhLEVBQ2IsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixNQUFNLEVBQ04sUUFBUSxHQUNYLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHN0IsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFMUQsTUFtQmEsV0FBVztJQW5CeEI7UUFvQnFCLFFB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QyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsMEJDN0M1Qyxvd0NBb0NBLHdVRERRLElBQUksNkZBQ0osZ0JBQWdCLHdOQUNoQixlQUFlLHNJQUNmLGVBQWUsd0pBQ2YsYUFBYSxrREFDYixZQUFZOztTQVVQLFdBQVc7NEZBQVgsV0FBVztrQkFuQnZCLFNBQVM7aUNBQ00sSUFBSSxZQUNOLGNBQWMsV0FDZjt3QkFDTCxJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsWUFBWTtxQkFDZixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMsYUFBYSxDQUFDLFFBQ2xDO3dCQUNGLGdDQUFnQyxFQUFFLEdBQUc7cUJBQ3hDOzhCQVFNLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxtQkFBbUI7c0JBRHpCLEtBQUs7Z0JBSUMsR0FBRztzQkFEVCxLQUFLO2dCQUlDLEdBQUc7c0JBRFQsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSVUsUUFBUTtzQkFEdkIsTUFBTTtnQkFJUyxXQUFXO3NCQUQxQixNQUFNO2dCQUlTLGlCQUFpQjtzQkFEaEMsTUFBTTtnQkFPSSxLQUFLO3NCQURmLEtBQUs7Z0JBZUssV0FBVztzQkFEckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VFVJX0ZBTFNFX0hBTkRMRVJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtUdWlEYXlSYW5nZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHtcbiAgICBUVUlfRklSU1RfREFZLFxuICAgIFRVSV9MQVNUX0RBWSxcbiAgICBUVUlfTEFTVF9ESVNQTEFZRURfREFZLFxuICAgIFR1aURheSxcbiAgICBUdWlNb250aCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHtUdWlNYXBwZXJQaXBlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3BpcGVzL21hcHBlcic7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXIsIFR1aU1hcHBlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge3R1aU51bGxhYmxlU2FtZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7VHVpU2Nyb2xsYmFyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3Njcm9sbGJhcic7XG5pbXBvcnQge3R1aUFzQXV4aWxpYXJ5fSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHR5cGUge1R1aU1hcmtlckhhbmRsZXJ9IGZyb20gJy4vY2FsZW5kYXItc2hlZXQuY29tcG9uZW50JztcbmltcG9ydCB7VHVpQ2FsZW5kYXJTaGVldH0gZnJvbSAnLi9jYWxlbmRhci1zaGVldC5jb21wb25lbnQnO1xuaW1wb3J0IHtUdWlDYWxlbmRhclNwaW59IGZyb20gJy4vY2FsZW5kYXItc3Bpbi5jb21wb25lbnQnO1xuaW1wb3J0IHtUdWlDYWxlbmRhclllYXJ9IGZyb20gJy4vY2FsZW5kYXIteWVhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWNhbGVuZGFyJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFR1aUNhbGVuZGFyU2hlZXQsXG4gICAgICAgIFR1aUNhbGVuZGFyU3BpbixcbiAgICAgICAgVHVpQ2FsZW5kYXJZZWFyLFxuICAgICAgICBUdWlNYXBwZXJQaXBlLFxuICAgICAgICBUdWlTY3JvbGxiYXIsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW3R1aUFzQXV4aWxpYXJ5KFR1aUNhbGVuZGFyKV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnKHBvaW50ZXJkb3duLnByZXZlbnQuem9uZWxlc3MpJzogJzAnLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUNhbGVuZGFyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSBkYXk6IFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W10gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIHZpZXc6ICdtb250aCcgfCAneWVhcicgPSAnbW9udGgnO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbW9udGg6IFR1aU1vbnRoID0gVHVpTW9udGguY3VycmVudExvY2FsKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNhYmxlZEl0ZW1IYW5kbGVyOiBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+ID0gVFVJX0ZBTFNFX0hBTkRMRVI7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW46IFR1aURheSB8IG51bGwgPSBUVUlfRklSU1RfREFZO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWF4OiBUdWlEYXkgfCBudWxsID0gVFVJX0xBU1RfREFZO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluVmlld2VkTW9udGg6IFR1aU1vbnRoIHwgbnVsbCA9IFRVSV9GSVJTVF9EQVk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhWaWV3ZWRNb250aDogVHVpTW9udGggfCBudWxsID0gVFVJX0xBU1RfREFZO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaG92ZXJlZEl0ZW06IFR1aURheSB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0FkamFjZW50ID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1hcmtlckhhbmRsZXI6IFR1aU1hcmtlckhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBkYXlDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VHVpRGF5PigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IG1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlNb250aD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBob3ZlcmVkSXRlbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VHVpRGF5IHwgbnVsbD4oKTtcblxuICAgIC8qKiBAZGVwcmVjYXRlZCBmb3IgcHJpdmF0ZSB1c2Ugb25seSB1bnRpbCBDYWxlbmRhcnMgYXJlIHJlZmFjdG9yZWQgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxUdWlEYXk+KCk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W10gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLmRheSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuc2hvd0FkamFjZW50ICYmXG4gICAgICAgICAgICB2YWx1ZSBpbnN0YW5jZW9mIFR1aURheSAmJlxuICAgICAgICAgICAgdmFsdWUuZGF5U2FtZU9yQmVmb3JlKFRVSV9MQVNUX0RJU1BMQVlFRF9EQVkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5tb250aCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGluaXRpYWxWaWV3KHZpZXc6ICdtb250aCcgfCAneWVhcicpIHtcbiAgICAgICAgdGhpcy52aWV3ID0gdmlldztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W10gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF5O1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBhZ2luYXRpb25WYWx1ZUNoYW5nZShtb250aDogVHVpTW9udGgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3ZWRNb250aChtb250aCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRGF5Q2xpY2soZGF5OiBUdWlEYXkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXlDbGljay5lbWl0KGRheSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UubmV4dChkYXkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkhvdmVyZWRJdGVtQ2hhbmdlKGRheTogVHVpRGF5IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUhvdmVyZWREYXkoZGF5KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNvbXB1dGVkTWluKCk6IFR1aURheSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbiA/PyBUVUlfRklSU1RfREFZO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgY29tcHV0ZWRNYXgoKTogVHVpRGF5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4ID8/IFRVSV9MQVNUX0RBWTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGNvbXB1dGVkTWluVmlld2VkTW9udGgoKTogVHVpTW9udGgge1xuICAgICAgICBjb25zdCBtaW4gPSB0aGlzLmNvbXB1dGVkTWluO1xuICAgICAgICBjb25zdCBtaW5WaWV3ZWQgPSB0aGlzLm1pblZpZXdlZE1vbnRoID8/IFRVSV9GSVJTVF9EQVk7XG5cbiAgICAgICAgcmV0dXJuIG1pblZpZXdlZC5tb250aFNhbWVPckFmdGVyKG1pbikgPyBtaW5WaWV3ZWQgOiBtaW47XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBjb21wdXRlZE1heFZpZXdlZE1vbnRoKCk6IFR1aU1vbnRoIHtcbiAgICAgICAgY29uc3QgbWF4ID0gdGhpcy5jb21wdXRlZE1heDtcbiAgICAgICAgY29uc3QgbWF4Vmlld2VkID0gdGhpcy5tYXhWaWV3ZWRNb250aCA/PyBUVUlfTEFTVF9EQVk7XG5cbiAgICAgICAgcmV0dXJuIG1heFZpZXdlZC5tb250aFNhbWVPckJlZm9yZShtYXgpID8gbWF4Vmlld2VkIDogbWF4O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgaXNJblllYXJWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3ID09PSAneWVhcic7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpc2FibGVkSXRlbUhhbmRsZXJNYXBwZXI6IFR1aU1hcHBlcjxcbiAgICAgICAgW1R1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4sIFR1aURheSwgVHVpRGF5XSxcbiAgICAgICAgVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PlxuICAgID4gPSAoZGlzYWJsZWRJdGVtSGFuZGxlciwgbWluLCBtYXgpID0+IChpdGVtKSA9PlxuICAgICAgICBpdGVtLmRheUJlZm9yZShtaW4pIHx8IGl0ZW0uZGF5QWZ0ZXIobWF4KSB8fCBkaXNhYmxlZEl0ZW1IYW5kbGVyKGl0ZW0pO1xuXG4gICAgcHJvdGVjdGVkIG9uUGFnaW5hdGlvblllYXJDbGljaygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3ID0gJ3llYXInO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblBpY2tlclllYXJDbGljayh5ZWFyOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3ID0gJ21vbnRoJztcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3ZWRNb250aChuZXcgVHVpTW9udGgoeWVhciwgdGhpcy5tb250aC5tb250aCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmlld2VkTW9udGgobW9udGg6IFR1aU1vbnRoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm1vbnRoLm1vbnRoU2FtZShtb250aCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubW9udGggPSBtb250aDtcbiAgICAgICAgdGhpcy5tb250aENoYW5nZS5lbWl0KG1vbnRoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUhvdmVyZWREYXkoZGF5OiBUdWlEYXkgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIGlmICh0dWlOdWxsYWJsZVNhbWUodGhpcy5ob3ZlcmVkSXRlbSwgZGF5LCAoYSwgYikgPT4gYS5kYXlTYW1lKGIpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ob3ZlcmVkSXRlbSA9IGRheTtcbiAgICAgICAgdGhpcy5ob3ZlcmVkSXRlbUNoYW5nZS5lbWl0KGRheSk7XG4gICAgfVxufVxuIiwiPHR1aS1zY3JvbGxiYXJcbiAgICAqbmdJZj1cImlzSW5ZZWFyVmlldzsgZWxzZSBjYWxlbmRhclwiXG4gICAgYXV0b21hdGlvbi1pZD1cInR1aS1jYWxlbmRhcl9fc2Nyb2xsYmFyXCJcbiAgICBjbGFzcz1cInQtc2Nyb2xsYmFyXCJcbj5cbiAgICA8dHVpLWNhbGVuZGFyLXllYXJcbiAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1jYWxlbmRhcl9feWVhclwiXG4gICAgICAgIFtpbml0aWFsSXRlbV09XCJtb250aC55ZWFyXCJcbiAgICAgICAgW21heF09XCJjb21wdXRlZE1heC55ZWFyXCJcbiAgICAgICAgW21pbl09XCJjb21wdXRlZE1pbi55ZWFyXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgKHllYXJDbGljayk9XCJvblBpY2tlclllYXJDbGljaygkZXZlbnQpXCJcbiAgICAvPlxuPC90dWktc2Nyb2xsYmFyPlxuPG5nLXRlbXBsYXRlICNjYWxlbmRhcj5cbiAgICA8dHVpLWNhbGVuZGFyLXNwaW5cbiAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1jYWxlbmRhcl9fcGFnaW5hdGlvblwiXG4gICAgICAgIGNsYXNzPVwidC1wYWdpbmF0aW9uXCJcbiAgICAgICAgW21heF09XCJjb21wdXRlZE1heFZpZXdlZE1vbnRoXCJcbiAgICAgICAgW21pbl09XCJjb21wdXRlZE1pblZpZXdlZE1vbnRoXCJcbiAgICAgICAgW3ZhbHVlXT1cIm1vbnRoXCJcbiAgICAgICAgKHZhbHVlQ2hhbmdlKT1cIm9uUGFnaW5hdGlvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoeWVhckNsaWNrKT1cIm9uUGFnaW5hdGlvblllYXJDbGljaygpXCJcbiAgICAvPlxuICAgIDx0dWktY2FsZW5kYXItc2hlZXRcbiAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1jYWxlbmRhcl9fY2FsZW5kYXJcIlxuICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyIHwgdHVpTWFwcGVyOiBkaXNhYmxlZEl0ZW1IYW5kbGVyTWFwcGVyIDogY29tcHV0ZWRNaW4gOiBjb21wdXRlZE1heFwiXG4gICAgICAgIFtob3ZlcmVkSXRlbV09XCJob3ZlcmVkSXRlbVwiXG4gICAgICAgIFttYXJrZXJIYW5kbGVyXT1cIm1hcmtlckhhbmRsZXJcIlxuICAgICAgICBbbW9udGhdPVwibW9udGhcIlxuICAgICAgICBbc2hvd0FkamFjZW50XT1cInNob3dBZGphY2VudFwiXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgIChkYXlDbGljayk9XCJvbkRheUNsaWNrKCRldmVudClcIlxuICAgICAgICAoaG92ZXJlZEl0ZW1DaGFuZ2UpPVwib25Ib3ZlcmVkSXRlbUNoYW5nZSgkZXZlbnQpXCJcbiAgICAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -2,13 +2,13 @@ import { NgIf } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, DestroyRef, forwardRef, inject, Input, isSignal, NgZone, signal, ViewEncapsulation, } from '@angular/core';
3
3
  import { toSignal } from '@angular/core/rxjs-interop';
4
4
  import { EMPTY_QUERY } from '@taiga-ui/cdk/constants';
5
- import { tuiTakeUntilDestroyed, tuiZonefree } from '@taiga-ui/cdk/observables';
5
+ import { tuiQueryListChanges, tuiTakeUntilDestroyed, tuiZonefree, } from '@taiga-ui/cdk/observables';
6
6
  import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
7
7
  import { tuiIsNativeFocusedIn, tuiMoveFocus } from '@taiga-ui/cdk/utils/focus';
8
8
  import { tuiIsPresent } from '@taiga-ui/cdk/utils/miscellaneous';
9
9
  import { TUI_NOTHING_FOUND_MESSAGE } from '@taiga-ui/core/tokens';
10
10
  import { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
11
- import { timer } from 'rxjs';
11
+ import { combineLatest, map, ReplaySubject, startWith, switchMap, timer } from 'rxjs';
12
12
  import { TUI_DATA_LIST_HOST, tuiAsDataListAccessor } from './data-list.tokens';
13
13
  import { TuiOptionWithValue } from './option/option.directive';
14
14
  import { TUI_OPTION_CONTENT, TuiWithOptionContent } from './option/option-content';
@@ -22,15 +22,25 @@ export function tuiInjectDataListSize() {
22
22
  // TODO: Consider aria-activedescendant for proper accessibility implementation
23
23
  class TuiDataListComponent {
24
24
  constructor() {
25
- this.legacyOptions = EMPTY_QUERY;
26
- this.options = EMPTY_QUERY;
25
+ // TODO(v5): delete
26
+ this.legacyOptionsQuery = EMPTY_QUERY;
27
+ this.optionsQuery = EMPTY_QUERY;
27
28
  this.ngZone = inject(NgZone);
28
29
  this.destroyRef = inject(DestroyRef);
29
30
  this.el = tuiInjectElement();
30
31
  this.cdr = inject(ChangeDetectorRef);
32
+ this.contentReady$ = new ReplaySubject(1);
31
33
  this.fallback = toSignal(inject(TUI_NOTHING_FOUND_MESSAGE));
32
34
  this.empty = signal(false);
33
35
  this.size = tuiInjectDataListSize();
36
+ // TODO(v5): use signal `contentChildren`
37
+ this.options = toSignal(this.contentReady$.pipe(switchMap(() => combineLatest([
38
+ tuiQueryListChanges(this.legacyOptionsQuery),
39
+ tuiQueryListChanges(this.optionsQuery),
40
+ ])), map(([legacyOptions, options]) => [
41
+ ...legacyOptions.map(({ value }) => value),
42
+ ...options.map(({ value }) => value()),
43
+ ].filter(tuiIsPresent)), startWith([])), { requireSync: true });
34
44
  }
35
45
  onKeyDownArrow(current, step) {
36
46
  const { elements } = this;
@@ -41,6 +51,9 @@ class TuiDataListComponent {
41
51
  this.origin?.focus({ preventScroll: true });
42
52
  }
43
53
  }
54
+ ngAfterContentInit() {
55
+ this.contentReady$.next(true);
56
+ }
44
57
  // TODO: Refactor to :has after Safari support bumped to 15
45
58
  ngAfterContentChecked() {
46
59
  timer(0)
@@ -50,10 +63,11 @@ class TuiDataListComponent {
50
63
  this.cdr.detectChanges();
51
64
  });
52
65
  }
66
+ // TODO(v5): delete
53
67
  getOptions(includeDisabled = false) {
54
68
  return [
55
- ...this.legacyOptions,
56
- ...this.options,
69
+ ...this.legacyOptionsQuery,
70
+ ...this.optionsQuery,
57
71
  ]
58
72
  .filter(({ disabled }) => includeDisabled || !disabled)
59
73
  .map(({ value }) => (isSignal(value) ? value() : value))
@@ -75,7 +89,7 @@ class TuiDataListComponent {
75
89
  useFactory: () => inject(TuiWithOptionContent, { optional: true })?.content ??
76
90
  inject(TUI_OPTION_CONTENT, { skipSelf: true, optional: true }),
77
91
  },
78
- ], queries: [{ propertyName: "legacyOptions", predicate: i0.forwardRef(function () { return TuiOption; }), descendants: true }, { propertyName: "options", predicate: i0.forwardRef(function () { return TuiOptionWithValue; }), descendants: true }], ngImport: i0, template: "<ng-content />\n<div\n *ngIf=\"empty()\"\n class=\"t-empty\"\n>\n <ng-container *polymorpheusOutlet=\"emptyContent || fallback() as text\">\n {{ text }}\n </ng-container>\n</div>\n", styles: ["tui-data-list{--tui-data-list-padding: .25rem;--tui-data-list-margin: .0625rem;display:flex;font:var(--tui-font-text-m);flex-direction:column;padding:calc(var(--tui-data-list-padding) - var(--tui-data-list-margin)) var(--tui-data-list-padding);color:var(--tui-text-tertiary)}tui-data-list:focus-within .t-trap{display:none}tui-data-list:focus-within [tuiOption]._with-dropdown:not(:focus){background-color:transparent}tui-data-list[data-size=s]{--tui-data-list-margin: 0rem}tui-data-list[data-size=s] [tuiOption][new]:not([tuiCell]){gap:.5rem}tui-data-list[data-size=s]>.t-empty,tui-data-list[data-size=s] [tuiOption]{--t-option-padding-inline: .5rem;font:var(--tui-font-text-s);min-block-size:2rem;padding-top:.3125rem;padding-bottom:.3125rem}tui-data-list[data-size=s]>.t-empty:before,tui-data-list[data-size=s] [tuiOption]:before{font-size:1rem}tui-data-list[data-size=m] [tuiOption][new]:not([tuiCell]){gap:.75rem}tui-data-list[data-size=m]>.t-empty,tui-data-list[data-size=m] [tuiOption]{--t-option-padding-inline: .5rem;font:var(--tui-font-text-s);min-block-size:2.5rem;padding-top:.375rem;padding-bottom:.375rem}tui-data-list[data-size=l]{--tui-data-list-padding: .375rem;--tui-data-list-margin: .125rem}tui-data-list[data-size=l] [tuiOption][new]:not([tuiCell]){gap:1rem}tui-data-list[data-size=l]>.t-empty,tui-data-list[data-size=l] [tuiOption]{--t-option-padding-inline: .625rem;font:var(--tui-font-text-m);min-block-size:2.75rem;padding-top:.375rem;padding-bottom:.375rem}tui-data-list>.t-empty{display:flex;align-items:center;box-sizing:border-box;margin:var(--tui-data-list-margin) 0}tui-data-list [tuiOption]:not([new]){justify-content:space-between}tui-data-list [tuiOption]{-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;align-items:center;box-sizing:border-box;margin:var(--tui-data-list-margin) 0;text-align:start;color:var(--tui-text-primary);border-radius:var(--tui-radius-s);outline:none;cursor:pointer;background-clip:padding-box}tui-data-list [tuiOption]:disabled{opacity:var(--tui-disabled-opacity);cursor:default}@media (hover: hover) and (pointer: fine){tui-data-list [tuiOption]:hover:not(:disabled){background-color:var(--tui-background-neutral-1)}}tui-data-list [tuiOption]:active:not(:disabled),tui-data-list [tuiOption]:focus-within,tui-data-list [tuiOption]._with-dropdown{background-color:var(--tui-background-neutral-1)}tui-data-list [tuiOption]:not([new]):before{margin-inline-end:.5rem}tui-data-list [tuiOption]:after{font-size:1rem;margin:0 -.75rem 0 auto;border-left:.5rem solid;border-right:.5rem solid}tui-data-list>.t-empty,tui-data-list [tuiOption]{padding-left:var(--t-option-padding-inline);padding-right:var(--t-option-padding-inline)}tui-opt-group{position:relative;display:flex;font:var(--tui-font-text-xs);font-weight:700;color:var(--tui-text-primary);flex-direction:column;line-height:1rem}tui-data-list[data-size=l] tui-opt-group{font:var(--tui-font-text-m);font-weight:700;line-height:1.25rem}tui-data-list[data-size=l] tui-opt-group:before{padding-left:.625rem;padding-right:.625rem}tui-data-list[data-size=l] tui-opt-group:after{left:.625rem;right:.625rem}tui-opt-group:empty:before,tui-opt-group:empty:after{display:none}tui-opt-group:before{content:attr(data-label);padding:var(--tui-data-list-padding) .5rem var(--tui-data-list-padding);margin:var(--tui-data-list-margin) 0;white-space:normal;word-break:break-word}tui-opt-group:after{position:absolute;left:.5rem;right:.5rem;top:var(--tui-data-list-padding);block-size:1px;background:var(--tui-border-normal)}tui-opt-group:not(:empty)~tui-opt-group:before{padding-top:calc(.75rem + var(--tui-data-list-padding))}tui-opt-group:not(:empty)~tui-opt-group[data-label=\"\"]:before,tui-opt-group:not(:empty)~tui-opt-group:not([data-label]):before{padding:var(--tui-data-list-padding) 0}tui-opt-group:not(:empty)~tui-opt-group:after{content:\"\"}tui-opt-group[data-label=\"\"]:before,tui-opt-group:not([data-label]):before{content:\"\";padding:0;margin:0}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
92
+ ], queries: [{ propertyName: "legacyOptionsQuery", predicate: i0.forwardRef(function () { return TuiOption; }), descendants: true }, { propertyName: "optionsQuery", predicate: i0.forwardRef(function () { return TuiOptionWithValue; }), descendants: true }], ngImport: i0, template: "<ng-content />\n<div\n *ngIf=\"empty()\"\n class=\"t-empty\"\n>\n <ng-container *polymorpheusOutlet=\"emptyContent || fallback() as text\">\n {{ text }}\n </ng-container>\n</div>\n", styles: ["tui-data-list{--tui-data-list-padding: .25rem;--tui-data-list-margin: .0625rem;display:flex;font:var(--tui-font-text-m);flex-direction:column;padding:calc(var(--tui-data-list-padding) - var(--tui-data-list-margin)) var(--tui-data-list-padding);color:var(--tui-text-tertiary)}tui-data-list:focus-within .t-trap{display:none}tui-data-list:focus-within [tuiOption]._with-dropdown:not(:focus){background-color:transparent}tui-data-list[data-size=s]{--tui-data-list-margin: 0rem}tui-data-list[data-size=s] [tuiOption][new]:not([tuiCell]){gap:.5rem}tui-data-list[data-size=s]>.t-empty,tui-data-list[data-size=s] [tuiOption]{--t-option-padding-inline: .5rem;font:var(--tui-font-text-s);min-block-size:2rem;padding-top:.3125rem;padding-bottom:.3125rem}tui-data-list[data-size=s]>.t-empty:before,tui-data-list[data-size=s] [tuiOption]:before{font-size:1rem}tui-data-list[data-size=m] [tuiOption][new]:not([tuiCell]){gap:.75rem}tui-data-list[data-size=m]>.t-empty,tui-data-list[data-size=m] [tuiOption]{--t-option-padding-inline: .5rem;font:var(--tui-font-text-s);min-block-size:2.5rem;padding-top:.375rem;padding-bottom:.375rem}tui-data-list[data-size=l]{--tui-data-list-padding: .375rem;--tui-data-list-margin: .125rem}tui-data-list[data-size=l] [tuiOption][new]:not([tuiCell]){gap:1rem}tui-data-list[data-size=l]>.t-empty,tui-data-list[data-size=l] [tuiOption]{--t-option-padding-inline: .625rem;font:var(--tui-font-text-m);min-block-size:2.75rem;padding-top:.375rem;padding-bottom:.375rem}tui-data-list>.t-empty{display:flex;align-items:center;box-sizing:border-box;margin:var(--tui-data-list-margin) 0}tui-data-list [tuiOption]:not([new]){justify-content:space-between}tui-data-list [tuiOption]{-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;align-items:center;box-sizing:border-box;margin:var(--tui-data-list-margin) 0;text-align:start;color:var(--tui-text-primary);border-radius:var(--tui-radius-s);outline:none;cursor:pointer;background-clip:padding-box}tui-data-list [tuiOption]:disabled{opacity:var(--tui-disabled-opacity);cursor:default}@media (hover: hover) and (pointer: fine){tui-data-list [tuiOption]:hover:not(:disabled){background-color:var(--tui-background-neutral-1)}}tui-data-list [tuiOption]:active:not(:disabled),tui-data-list [tuiOption]:focus-within,tui-data-list [tuiOption]._with-dropdown{background-color:var(--tui-background-neutral-1)}tui-data-list [tuiOption]:not([new]):before{margin-inline-end:.5rem}tui-data-list [tuiOption]:after{font-size:1rem;margin:0 -.75rem 0 auto;border-left:.5rem solid;border-right:.5rem solid}tui-data-list>.t-empty,tui-data-list [tuiOption]{padding-left:var(--t-option-padding-inline);padding-right:var(--t-option-padding-inline)}tui-opt-group{position:relative;display:flex;font:var(--tui-font-text-xs);font-weight:700;color:var(--tui-text-primary);flex-direction:column;line-height:1rem}tui-data-list[data-size=l] tui-opt-group{font:var(--tui-font-text-m);font-weight:700;line-height:1.25rem}tui-data-list[data-size=l] tui-opt-group:before{padding-left:.625rem;padding-right:.625rem}tui-data-list[data-size=l] tui-opt-group:after{left:.625rem;right:.625rem}tui-opt-group:empty:before,tui-opt-group:empty:after{display:none}tui-opt-group:before{content:attr(data-label);padding:var(--tui-data-list-padding) .5rem var(--tui-data-list-padding);margin:var(--tui-data-list-margin) 0;white-space:normal;word-break:break-word}tui-opt-group:after{position:absolute;left:.5rem;right:.5rem;top:var(--tui-data-list-padding);block-size:1px;background:var(--tui-border-normal)}tui-opt-group:not(:empty)~tui-opt-group:before{padding-top:calc(.75rem + var(--tui-data-list-padding))}tui-opt-group:not(:empty)~tui-opt-group[data-label=\"\"]:before,tui-opt-group:not(:empty)~tui-opt-group:not([data-label]):before{padding:var(--tui-data-list-padding) 0}tui-opt-group:not(:empty)~tui-opt-group:after{content:\"\"}tui-opt-group[data-label=\"\"]:before,tui-opt-group:not([data-label]):before{content:\"\";padding:0;margin:0}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
79
93
  }
80
94
  export { TuiDataListComponent };
81
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDataListComponent, decorators: [{
@@ -99,10 +113,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
99
113
  '(keydown.arrowDown.prevent)': 'onKeyDownArrow($event.target, 1)',
100
114
  '(keydown.arrowUp.prevent)': 'onKeyDownArrow($event.target, -1)',
101
115
  }, template: "<ng-content />\n<div\n *ngIf=\"empty()\"\n class=\"t-empty\"\n>\n <ng-container *polymorpheusOutlet=\"emptyContent || fallback() as text\">\n {{ text }}\n </ng-container>\n</div>\n", styles: ["tui-data-list{--tui-data-list-padding: .25rem;--tui-data-list-margin: .0625rem;display:flex;font:var(--tui-font-text-m);flex-direction:column;padding:calc(var(--tui-data-list-padding) - var(--tui-data-list-margin)) var(--tui-data-list-padding);color:var(--tui-text-tertiary)}tui-data-list:focus-within .t-trap{display:none}tui-data-list:focus-within [tuiOption]._with-dropdown:not(:focus){background-color:transparent}tui-data-list[data-size=s]{--tui-data-list-margin: 0rem}tui-data-list[data-size=s] [tuiOption][new]:not([tuiCell]){gap:.5rem}tui-data-list[data-size=s]>.t-empty,tui-data-list[data-size=s] [tuiOption]{--t-option-padding-inline: .5rem;font:var(--tui-font-text-s);min-block-size:2rem;padding-top:.3125rem;padding-bottom:.3125rem}tui-data-list[data-size=s]>.t-empty:before,tui-data-list[data-size=s] [tuiOption]:before{font-size:1rem}tui-data-list[data-size=m] [tuiOption][new]:not([tuiCell]){gap:.75rem}tui-data-list[data-size=m]>.t-empty,tui-data-list[data-size=m] [tuiOption]{--t-option-padding-inline: .5rem;font:var(--tui-font-text-s);min-block-size:2.5rem;padding-top:.375rem;padding-bottom:.375rem}tui-data-list[data-size=l]{--tui-data-list-padding: .375rem;--tui-data-list-margin: .125rem}tui-data-list[data-size=l] [tuiOption][new]:not([tuiCell]){gap:1rem}tui-data-list[data-size=l]>.t-empty,tui-data-list[data-size=l] [tuiOption]{--t-option-padding-inline: .625rem;font:var(--tui-font-text-m);min-block-size:2.75rem;padding-top:.375rem;padding-bottom:.375rem}tui-data-list>.t-empty{display:flex;align-items:center;box-sizing:border-box;margin:var(--tui-data-list-margin) 0}tui-data-list [tuiOption]:not([new]){justify-content:space-between}tui-data-list [tuiOption]{-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;align-items:center;box-sizing:border-box;margin:var(--tui-data-list-margin) 0;text-align:start;color:var(--tui-text-primary);border-radius:var(--tui-radius-s);outline:none;cursor:pointer;background-clip:padding-box}tui-data-list [tuiOption]:disabled{opacity:var(--tui-disabled-opacity);cursor:default}@media (hover: hover) and (pointer: fine){tui-data-list [tuiOption]:hover:not(:disabled){background-color:var(--tui-background-neutral-1)}}tui-data-list [tuiOption]:active:not(:disabled),tui-data-list [tuiOption]:focus-within,tui-data-list [tuiOption]._with-dropdown{background-color:var(--tui-background-neutral-1)}tui-data-list [tuiOption]:not([new]):before{margin-inline-end:.5rem}tui-data-list [tuiOption]:after{font-size:1rem;margin:0 -.75rem 0 auto;border-left:.5rem solid;border-right:.5rem solid}tui-data-list>.t-empty,tui-data-list [tuiOption]{padding-left:var(--t-option-padding-inline);padding-right:var(--t-option-padding-inline)}tui-opt-group{position:relative;display:flex;font:var(--tui-font-text-xs);font-weight:700;color:var(--tui-text-primary);flex-direction:column;line-height:1rem}tui-data-list[data-size=l] tui-opt-group{font:var(--tui-font-text-m);font-weight:700;line-height:1.25rem}tui-data-list[data-size=l] tui-opt-group:before{padding-left:.625rem;padding-right:.625rem}tui-data-list[data-size=l] tui-opt-group:after{left:.625rem;right:.625rem}tui-opt-group:empty:before,tui-opt-group:empty:after{display:none}tui-opt-group:before{content:attr(data-label);padding:var(--tui-data-list-padding) .5rem var(--tui-data-list-padding);margin:var(--tui-data-list-margin) 0;white-space:normal;word-break:break-word}tui-opt-group:after{position:absolute;left:.5rem;right:.5rem;top:var(--tui-data-list-padding);block-size:1px;background:var(--tui-border-normal)}tui-opt-group:not(:empty)~tui-opt-group:before{padding-top:calc(.75rem + var(--tui-data-list-padding))}tui-opt-group:not(:empty)~tui-opt-group[data-label=\"\"]:before,tui-opt-group:not(:empty)~tui-opt-group:not([data-label]):before{padding:var(--tui-data-list-padding) 0}tui-opt-group:not(:empty)~tui-opt-group:after{content:\"\"}tui-opt-group[data-label=\"\"]:before,tui-opt-group:not([data-label]):before{content:\"\";padding:0;margin:0}\n"] }]
102
- }], propDecorators: { legacyOptions: [{
116
+ }], propDecorators: { legacyOptionsQuery: [{
103
117
  type: ContentChildren,
104
118
  args: [forwardRef(() => TuiOption), { descendants: true }]
105
- }], options: [{
119
+ }], optionsQuery: [{
106
120
  type: ContentChildren,
107
121
  args: [forwardRef(() => TuiOptionWithValue), { descendants: true }]
108
122
  }], emptyContent: [{
@@ -110,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
110
124
  }], size: [{
111
125
  type: Input
112
126
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9kYXRhLWxpc3QvZGF0YS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9kYXRhLWxpc3QvZGF0YS1saXN0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXJDLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBR2hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHM0IsT0FBTyxFQUFDLGtCQUFrQixFQUFFLHFCQUFxQixF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SUFBSSxFQUFDLENBQUMsRUFBRSxPQUFPO2dDQUN2RCxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQzt5QkFDbkU7cUJBQ0osUUFDSzt3QkFDRixJQUFJLEVBQUUsU0FBUzt3QkFDZixrQkFBa0IsRUFBRSxNQUFNO3dCQUMxQixXQUFXLEVBQUUsdURBQXVEO3dCQUNwRSxxQkFBcUIsRUFBRSxLQUFLO3dCQUM1QiwwQkFBMEIsRUFBRSw4QkFBOEI7d0JBQzFELGNBQWMsRUFBRSwyQ0FBMkM7d0JBQzNELGVBQWUsRUFBRSw4QkFBOEI7d0JBQy9DLHFCQUFxQixFQUFFLDhCQUE4Qjt3QkFDckQsNkJBQTZCLEVBQUUsa0NBQWtDO3dCQUNqRSwyQkFBMkIsRUFBRSxtQ0FBbUM7cUJBQ25FOzhCQU1nQixhQUFhO3NCQUQ3QixlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7Z0JBSWhELE9BQU87c0JBRHZCLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO2dCQVluRSxZQUFZO3NCQURsQixLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB0eXBlIHtBZnRlckNvbnRlbnRDaGVja2VkLCBRdWVyeUxpc3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgaXNTaWduYWwsXG4gICAgTmdab25lLFxuICAgIHNpZ25hbCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge0VNUFRZX1FVRVJZfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge3R1aVRha2VVbnRpbERlc3Ryb3llZCwgdHVpWm9uZWZyZWV9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUlzTmF0aXZlRm9jdXNlZEluLCB0dWlNb3ZlRm9jdXN9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9jdXMnO1xuaW1wb3J0IHt0dWlJc1ByZXNlbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1RVSV9OT1RISU5HX0ZPVU5EX01FU1NBR0V9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7VHVpU2l6ZUwsIFR1aVNpemVTfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5pbXBvcnQgdHlwZSB7UG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c091dGxldH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQge3RpbWVyfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHR5cGUge1R1aURhdGFMaXN0QWNjZXNzb3J9IGZyb20gJy4vZGF0YS1saXN0LnRva2Vucyc7XG5pbXBvcnQge1RVSV9EQVRBX0xJU1RfSE9TVCwgdHVpQXNEYXRhTGlzdEFjY2Vzc29yfSBmcm9tICcuL2RhdGEtbGlzdC50b2tlbnMnO1xuaW1wb3J0IHtUdWlPcHRpb25XaXRoVmFsdWV9IGZyb20gJy4vb3B0aW9uL29wdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHtUVUlfT1BUSU9OX0NPTlRFTlQsIFR1aVdpdGhPcHRpb25Db250ZW50fSBmcm9tICcuL29wdGlvbi9vcHRpb24tY29udGVudCc7XG5pbXBvcnQge1R1aU9wdGlvbn0gZnJvbSAnLi9vcHRpb24vb3B0aW9uLWxlZ2FjeS5jb21wb25lbnQnO1xuXG5leHBvcnQgZnVuY3Rpb24gdHVpSW5qZWN0RGF0YUxpc3RTaXplKCk6IFR1aVNpemVMIHwgVHVpU2l6ZVMge1xuICAgIGNvbnN0IHNpemVzID0gWydzJywgJ20nLCAnbCddIGFzIGNvbnN0O1xuICAgIGNvbnN0IHNpemUgPSBpbmplY3QoVFVJX0RBVEFfTElTVF9IT1NULCB7b3B0aW9uYWw6IHRydWV9KT8uc2l6ZTtcblxuICAgIHJldHVybiBzaXplICYmIHNpemVzLmluY2x1ZGVzKHNpemUpID8gc2l6ZSA6ICdsJztcbn1cblxuLy8gVE9ETzogQ29uc2lkZXIgYXJpYS1hY3RpdmVkZXNjZW5kYW50IGZvciBwcm9wZXIgYWNjZXNzaWJpbGl0eSBpbXBsZW1lbnRhdGlvblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1kYXRhLWxpc3QnLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBQb2x5bW9ycGhldXNPdXRsZXRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWxpc3QudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF0YS1saXN0LnN0eWxlLmxlc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB0dWlBc0RhdGFMaXN0QWNjZXNzb3IoVHVpRGF0YUxpc3RDb21wb25lbnQpLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUVUlfT1BUSU9OX0NPTlRFTlQsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PlxuICAgICAgICAgICAgICAgIGluamVjdChUdWlXaXRoT3B0aW9uQ29udGVudCwge29wdGlvbmFsOiB0cnVlfSk/LmNvbnRlbnQgPz9cbiAgICAgICAgICAgICAgICBpbmplY3QoVFVJX09QVElPTl9DT05URU5ULCB7c2tpcFNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlfSksXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIHJvbGU6ICdsaXN0Ym94JyxcbiAgICAgICAgJ1thdHRyLmRhdGEtc2l6ZV0nOiAnc2l6ZScsXG4gICAgICAgICcoZm9jdXNpbiknOiAnb25Gb2N1c0luKCRldmVudC5yZWxhdGVkVGFyZ2V0LCAkZXZlbnQuY3VycmVudFRhcmdldCknLFxuICAgICAgICAnKG1vdXNlZG93bi5wcmV2ZW50KSc6ICcoMCknLFxuICAgICAgICAnKHdoZWVsLnpvbmVsZXNzLnBhc3NpdmUpJzogJ2hhbmRsZUZvY3VzTG9zc0lmTmVjZXNzYXJ5KCknLFxuICAgICAgICAnKG1vdXNlbGVhdmUpJzogJ2hhbmRsZUZvY3VzTG9zc0lmTmVjZXNzYXJ5KCRldmVudC50YXJnZXQpJyxcbiAgICAgICAgJyhrZXlkb3duLnRhYiknOiAnaGFuZGxlRm9jdXNMb3NzSWZOZWNlc3NhcnkoKScsXG4gICAgICAgICcoa2V5ZG93bi5zaGlmdC50YWIpJzogJ2hhbmRsZUZvY3VzTG9zc0lmTmVjZXNzYXJ5KCknLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dEb3duLnByZXZlbnQpJzogJ29uS2V5RG93bkFycm93KCRldmVudC50YXJnZXQsIDEpJyxcbiAgICAgICAgJyhrZXlkb3duLmFycm93VXAucHJldmVudCknOiAnb25LZXlEb3duQXJyb3coJGV2ZW50LnRhcmdldCwgLTEpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEYXRhTGlzdENvbXBvbmVudDxUPlxuICAgIGltcGxlbWVudHMgVHVpRGF0YUxpc3RBY2Nlc3NvcjxUPiwgQWZ0ZXJDb250ZW50Q2hlY2tlZFxue1xuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBUdWlPcHRpb24pLCB7ZGVzY2VuZGFudHM6IHRydWV9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGVnYWN5T3B0aW9uczogUXVlcnlMaXN0PFR1aU9wdGlvbjxUPj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBUdWlPcHRpb25XaXRoVmFsdWUpLCB7ZGVzY2VuZGFudHM6IHRydWV9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogUXVlcnlMaXN0PFR1aU9wdGlvbldpdGhWYWx1ZTxUPj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIHByaXZhdGUgb3JpZ2luPzogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbCA9IHR1aUluamVjdEVsZW1lbnQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZhbGxiYWNrID0gdG9TaWduYWwoaW5qZWN0KFRVSV9OT1RISU5HX0ZPVU5EX01FU1NBR0UpKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW1wdHkgPSBzaWduYWwoZmFsc2UpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW1wdHlDb250ZW50OiBQb2x5bW9ycGhldXNDb250ZW50O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2l6ZSA9IHR1aUluamVjdERhdGFMaXN0U2l6ZSgpO1xuXG4gICAgcHVibGljIG9uS2V5RG93bkFycm93KGN1cnJlbnQ6IEhUTUxFbGVtZW50LCBzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge2VsZW1lbnRzfSA9IHRoaXM7XG5cbiAgICAgICAgdHVpTW92ZUZvY3VzKGVsZW1lbnRzLmluZGV4T2YoY3VycmVudCksIGVsZW1lbnRzLCBzdGVwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRm9jdXNMb3NzSWZOZWNlc3NhcnkoZWxlbWVudDogRWxlbWVudCA9IHRoaXMuZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR1aUlzTmF0aXZlRm9jdXNlZEluKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbj8uZm9jdXMoe3ByZXZlbnRTY3JvbGw6IHRydWV9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IFJlZmFjdG9yIHRvIDpoYXMgYWZ0ZXIgU2FmYXJpIHN1cHBvcnQgYnVtcGVkIHRvIDE1XG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGltZXIoMClcbiAgICAgICAgICAgIC5waXBlKHR1aVpvbmVmcmVlKHRoaXMubmdab25lKSwgdHVpVGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtcHR5LnNldCghdGhpcy5lbGVtZW50cy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPcHRpb25zKGluY2x1ZGVEaXNhYmxlZCA9IGZhbHNlKTogcmVhZG9ubHkgVFtdIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLnRoaXMubGVnYWN5T3B0aW9ucywgLy8gVE9ETyh2NSk6IGRlbGV0ZVxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICBdXG4gICAgICAgICAgICAuZmlsdGVyKCh7ZGlzYWJsZWR9KSA9PiBpbmNsdWRlRGlzYWJsZWQgfHwgIWRpc2FibGVkKVxuICAgICAgICAgICAgLm1hcCgoe3ZhbHVlfSkgPT4gKGlzU2lnbmFsKHZhbHVlKSA/IHZhbHVlKCkgOiB2YWx1ZSkpXG4gICAgICAgICAgICAuZmlsdGVyKHR1aUlzUHJlc2VudCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9jdXNJbihyZWxhdGVkVGFyZ2V0OiBIVE1MRWxlbWVudCwgY3VycmVudFRhcmdldDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjdXJyZW50VGFyZ2V0LmNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQpICYmICF0aGlzLm9yaWdpbikge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW4gPSByZWxhdGVkVGFyZ2V0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgZWxlbWVudHMoKTogcmVhZG9ubHkgSFRNTEVsZW1lbnRbXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZWwucXVlcnlTZWxlY3RvckFsbCgnW3R1aU9wdGlvbl0nKSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRlbnQgLz5cbjxkaXZcbiAgICAqbmdJZj1cImVtcHR5KClcIlxuICAgIGNsYXNzPVwidC1lbXB0eVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqcG9seW1vcnBoZXVzT3V0bGV0PVwiZW1wdHlDb250ZW50IHx8IGZhbGxiYWNrKCkgYXMgdGV4dFwiPlxuICAgICAgICB7eyB0ZXh0IH19XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9kYXRhLWxpc3QvZGF0YS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9kYXRhLWxpc3QvZGF0YS1saXN0LnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXJDLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLFdBQVcsR0FDZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHaEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVB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TTt3QkFDMUIsV0FBVyxFQUFFLHVEQUF1RDt3QkFDcEUscUJBQXFCLEVBQUUsS0FBSzt3QkFDNUIsMEJBQTBCLEVBQUUsOEJBQThCO3dCQUMxRCxjQUFjLEVBQUUsMkNBQTJDO3dCQUMzRCxlQUFlLEVBQUUsOEJBQThCO3dCQUMvQyxxQkFBcUIsRUFBRSw4QkFBOEI7d0JBQ3JELDZCQUE2QixFQUFFLGtDQUFrQzt3QkFDakUsMkJBQTJCLEVBQUUsbUNBQW1DO3FCQUNuRTs4QkFPZ0Isa0JBQWtCO3NCQURsQyxlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUM7Z0JBSWhELFlBQVk7c0JBRDVCLGVBQWU7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO2dCQWNuRSxZQUFZO3NCQURsQixLQUFLO2dCQUlDLElBQUk7c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB0eXBlIHtBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlckNvbnRlbnRJbml0LCBRdWVyeUxpc3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgaXNTaWduYWwsXG4gICAgTmdab25lLFxuICAgIHNpZ25hbCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge0VNUFRZX1FVRVJZfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICAgIHR1aVF1ZXJ5TGlzdENoYW5nZXMsXG4gICAgdHVpVGFrZVVudGlsRGVzdHJveWVkLFxuICAgIHR1aVpvbmVmcmVlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlJc05hdGl2ZUZvY3VzZWRJbiwgdHVpTW92ZUZvY3VzfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2ZvY3VzJztcbmltcG9ydCB7dHVpSXNQcmVzZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtUVUlfTk9USElOR19GT1VORF9NRVNTQUdFfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHR5cGUge1R1aVNpemVMLCBUdWlTaXplU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHR5cGUge1BvbHltb3JwaGV1c0NvbnRlbnR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtQb2x5bW9ycGhldXNPdXRsZXR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBtYXAsIFJlcGxheVN1YmplY3QsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB0eXBlIHtUdWlEYXRhTGlzdEFjY2Vzc29yfSBmcm9tICcuL2RhdGEtbGlzdC50b2tlbnMnO1xuaW1wb3J0IHtUVUlfREFUQV9MSVNUX0hPU1QsIHR1aUFzRGF0YUxpc3RBY2Nlc3Nvcn0gZnJvbSAnLi9kYXRhLWxpc3QudG9rZW5zJztcbmltcG9ydCB7VHVpT3B0aW9uV2l0aFZhbHVlfSBmcm9tICcuL29wdGlvbi9vcHRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7VFVJX09QVElPTl9DT05URU5ULCBUdWlXaXRoT3B0aW9uQ29udGVudH0gZnJvbSAnLi9vcHRpb24vb3B0aW9uLWNvbnRlbnQnO1xuaW1wb3J0IHtUdWlPcHRpb259IGZyb20gJy4vb3B0aW9uL29wdGlvbi1sZWdhY3kuY29tcG9uZW50JztcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUluamVjdERhdGFMaXN0U2l6ZSgpOiBUdWlTaXplTCB8IFR1aVNpemVTIHtcbiAgICBjb25zdCBzaXplcyA9IFsncycsICdtJywgJ2wnXSBhcyBjb25zdDtcbiAgICBjb25zdCBzaXplID0gaW5qZWN0KFRVSV9EQVRBX0xJU1RfSE9TVCwge29wdGlvbmFsOiB0cnVlfSk/LnNpemU7XG5cbiAgICByZXR1cm4gc2l6ZSAmJiBzaXplcy5pbmNsdWRlcyhzaXplKSA/IHNpemUgOiAnbCc7XG59XG5cbi8vIFRPRE86IENvbnNpZGVyIGFyaWEtYWN0aXZlZGVzY2VuZGFudCBmb3IgcHJvcGVyIGFjY2Vzc2liaWxpdHkgaW1wbGVtZW50YXRpb25cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktZGF0YS1saXN0JyxcbiAgICBpbXBvcnRzOiBbTmdJZiwgUG9seW1vcnBoZXVzT3V0bGV0XSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1saXN0LnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RhdGEtbGlzdC5zdHlsZS5sZXNzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNEYXRhTGlzdEFjY2Vzc29yKFR1aURhdGFMaXN0Q29tcG9uZW50KSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVFVJX09QVElPTl9DT05URU5ULFxuICAgICAgICAgICAgdXNlRmFjdG9yeTogKCkgPT5cbiAgICAgICAgICAgICAgICBpbmplY3QoVHVpV2l0aE9wdGlvbkNvbnRlbnQsIHtvcHRpb25hbDogdHJ1ZX0pPy5jb250ZW50ID8/XG4gICAgICAgICAgICAgICAgaW5qZWN0KFRVSV9PUFRJT05fQ09OVEVOVCwge3NraXBTZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZX0pLFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAnbGlzdGJveCcsXG4gICAgICAgICdbYXR0ci5kYXRhLXNpemVdJzogJ3NpemUnLFxuICAgICAgICAnKGZvY3VzaW4pJzogJ29uRm9jdXNJbigkZXZlbnQucmVsYXRlZFRhcmdldCwgJGV2ZW50LmN1cnJlbnRUYXJnZXQpJyxcbiAgICAgICAgJyhtb3VzZWRvd24ucHJldmVudCknOiAnKDApJyxcbiAgICAgICAgJyh3aGVlbC56b25lbGVzcy5wYXNzaXZlKSc6ICdoYW5kbGVGb2N1c0xvc3NJZk5lY2Vzc2FyeSgpJyxcbiAgICAgICAgJyhtb3VzZWxlYXZlKSc6ICdoYW5kbGVGb2N1c0xvc3NJZk5lY2Vzc2FyeSgkZXZlbnQudGFyZ2V0KScsXG4gICAgICAgICcoa2V5ZG93bi50YWIpJzogJ2hhbmRsZUZvY3VzTG9zc0lmTmVjZXNzYXJ5KCknLFxuICAgICAgICAnKGtleWRvd24uc2hpZnQudGFiKSc6ICdoYW5kbGVGb2N1c0xvc3NJZk5lY2Vzc2FyeSgpJyxcbiAgICAgICAgJyhrZXlkb3duLmFycm93RG93bi5wcmV2ZW50KSc6ICdvbktleURvd25BcnJvdygkZXZlbnQudGFyZ2V0LCAxKScsXG4gICAgICAgICcoa2V5ZG93bi5hcnJvd1VwLnByZXZlbnQpJzogJ29uS2V5RG93bkFycm93KCRldmVudC50YXJnZXQsIC0xKScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpRGF0YUxpc3RDb21wb25lbnQ8VD5cbiAgICBpbXBsZW1lbnRzIFR1aURhdGFMaXN0QWNjZXNzb3I8VD4sIEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyQ29udGVudEluaXRcbntcbiAgICAvLyBUT0RPKHY1KTogZGVsZXRlXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IFR1aU9wdGlvbiksIHtkZXNjZW5kYW50czogdHJ1ZX0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBsZWdhY3lPcHRpb25zUXVlcnk6IFF1ZXJ5TGlzdDxUdWlPcHRpb248VD4+ID0gRU1QVFlfUVVFUlk7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gVHVpT3B0aW9uV2l0aFZhbHVlKSwge2Rlc2NlbmRhbnRzOiB0cnVlfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnNRdWVyeTogUXVlcnlMaXN0PFR1aU9wdGlvbldpdGhWYWx1ZTxUPj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIHByaXZhdGUgb3JpZ2luPzogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbCA9IHR1aUluamVjdEVsZW1lbnQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250ZW50UmVhZHkkID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFsbGJhY2sgPSB0b1NpZ25hbChpbmplY3QoVFVJX05PVEhJTkdfRk9VTkRfTUVTU0FHRSkpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBlbXB0eSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbXB0eUNvbnRlbnQ6IFBvbHltb3JwaGV1c0NvbnRlbnQ7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaXplID0gdHVpSW5qZWN0RGF0YUxpc3RTaXplKCk7XG5cbiAgICAvLyBUT0RPKHY1KTogdXNlIHNpZ25hbCBgY29udGVudENoaWxkcmVuYFxuICAgIHB1YmxpYyByZWFkb25seSBvcHRpb25zID0gdG9TaWduYWw8cmVhZG9ubHkgVFtdPihcbiAgICAgICAgdGhpcy5jb250ZW50UmVhZHkkLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICAgICAgdHVpUXVlcnlMaXN0Q2hhbmdlcyh0aGlzLmxlZ2FjeU9wdGlvbnNRdWVyeSksXG4gICAgICAgICAgICAgICAgICAgIHR1aVF1ZXJ5TGlzdENoYW5nZXModGhpcy5vcHRpb25zUXVlcnkpLFxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcCgoW2xlZ2FjeU9wdGlvbnMsIG9wdGlvbnNdKSA9PlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4ubGVnYWN5T3B0aW9ucy5tYXAoKHt2YWx1ZX0pID0+IHZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgLi4ub3B0aW9ucy5tYXAoKHt2YWx1ZX0pID0+IHZhbHVlKCkpLFxuICAgICAgICAgICAgICAgIF0uZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhcnRXaXRoKFtdKSxcbiAgICAgICAgKSxcbiAgICAgICAge3JlcXVpcmVTeW5jOiB0cnVlfSxcbiAgICApO1xuXG4gICAgcHVibGljIG9uS2V5RG93bkFycm93KGN1cnJlbnQ6IEhUTUxFbGVtZW50LCBzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qge2VsZW1lbnRzfSA9IHRoaXM7XG5cbiAgICAgICAgdHVpTW92ZUZvY3VzKGVsZW1lbnRzLmluZGV4T2YoY3VycmVudCksIGVsZW1lbnRzLCBzdGVwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRm9jdXNMb3NzSWZOZWNlc3NhcnkoZWxlbWVudDogRWxlbWVudCA9IHRoaXMuZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR1aUlzTmF0aXZlRm9jdXNlZEluKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbj8uZm9jdXMoe3ByZXZlbnRTY3JvbGw6IHRydWV9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGVudFJlYWR5JC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IFJlZmFjdG9yIHRvIDpoYXMgYWZ0ZXIgU2FmYXJpIHN1cHBvcnQgYnVtcGVkIHRvIDE1XG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGltZXIoMClcbiAgICAgICAgICAgIC5waXBlKHR1aVpvbmVmcmVlKHRoaXMubmdab25lKSwgdHVpVGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtcHR5LnNldCghdGhpcy5lbGVtZW50cy5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRPRE8odjUpOiBkZWxldGVcbiAgICBwdWJsaWMgZ2V0T3B0aW9ucyhpbmNsdWRlRGlzYWJsZWQgPSBmYWxzZSk6IHJlYWRvbmx5IFRbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi50aGlzLmxlZ2FjeU9wdGlvbnNRdWVyeSwgLy8gVE9ETyh2NSk6IGRlbGV0ZVxuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zUXVlcnksXG4gICAgICAgIF1cbiAgICAgICAgICAgIC5maWx0ZXIoKHtkaXNhYmxlZH0pID0+IGluY2x1ZGVEaXNhYmxlZCB8fCAhZGlzYWJsZWQpXG4gICAgICAgICAgICAubWFwKCh7dmFsdWV9KSA9PiAoaXNTaWduYWwodmFsdWUpID8gdmFsdWUoKSA6IHZhbHVlKSlcbiAgICAgICAgICAgIC5maWx0ZXIodHVpSXNQcmVzZW50KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb2N1c0luKHJlbGF0ZWRUYXJnZXQ6IEhUTUxFbGVtZW50LCBjdXJyZW50VGFyZ2V0OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIWN1cnJlbnRUYXJnZXQuY29udGFpbnMocmVsYXRlZFRhcmdldCkgJiYgIXRoaXMub3JpZ2luKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbiA9IHJlbGF0ZWRUYXJnZXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBlbGVtZW50cygpOiByZWFkb25seSBIVE1MRWxlbWVudFtdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbC5xdWVyeVNlbGVjdG9yQWxsKCdbdHVpT3B0aW9uXScpKTtcbiAgICB9XG59XG4iLCI8bmctY29udGVudCAvPlxuPGRpdlxuICAgICpuZ0lmPVwiZW1wdHkoKVwiXG4gICAgY2xhc3M9XCJ0LWVtcHR5XCJcbj5cbiAgICA8bmctY29udGFpbmVyICpwb2x5bW9ycGhldXNPdXRsZXQ9XCJlbXB0eUNvbnRlbnQgfHwgZmFsbGJhY2soKSBhcyB0ZXh0XCI+XG4gICAgICAgIHt7IHRleHQgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19