@taiga-ui/addon-mobile 4.2.0 → 4.3.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.
- package/components/mobile-calendar/mobile-calendar.component.d.ts +6 -4
- package/components/sheet-dialog/sheet-dialog.component.d.ts +1 -1
- package/directives/sidebar/sidebar.component.d.ts +0 -1
- package/esm2022/components/mobile-calendar/mobile-calendar.component.mjs +25 -12
- package/esm2022/components/mobile-calendar-dropdown/mobile-calendar-dropdown.component.mjs +8 -11
- package/esm2022/components/pull-to-refresh/loader-android/loader-android.component.mjs +9 -14
- package/esm2022/components/pull-to-refresh/pull-to-refresh.service.mjs +4 -2
- package/esm2022/components/sheet-dialog/sheet-dialog.component.mjs +17 -30
- package/esm2022/components/tab-bar/tab-bar.component.mjs +7 -10
- package/esm2022/directives/dropdown-mobile/dropdown-mobile.directive.mjs +3 -5
- package/esm2022/directives/ripple/ripple.directive.mjs +6 -10
- package/esm2022/directives/sidebar/sidebar.component.mjs +8 -14
- package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar-dropdown.mjs +7 -10
- package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar-dropdown.mjs.map +1 -1
- package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar.mjs +24 -11
- package/fesm2022/taiga-ui-addon-mobile-components-mobile-calendar.mjs.map +1 -1
- package/fesm2022/taiga-ui-addon-mobile-components-pull-to-refresh.mjs +11 -14
- package/fesm2022/taiga-ui-addon-mobile-components-pull-to-refresh.mjs.map +1 -1
- package/fesm2022/taiga-ui-addon-mobile-components-sheet-dialog.mjs +16 -29
- package/fesm2022/taiga-ui-addon-mobile-components-sheet-dialog.mjs.map +1 -1
- package/fesm2022/taiga-ui-addon-mobile-components-tab-bar.mjs +6 -9
- package/fesm2022/taiga-ui-addon-mobile-components-tab-bar.mjs.map +1 -1
- package/fesm2022/taiga-ui-addon-mobile-directives-dropdown-mobile.mjs +2 -4
- package/fesm2022/taiga-ui-addon-mobile-directives-dropdown-mobile.mjs.map +1 -1
- package/fesm2022/taiga-ui-addon-mobile-directives-ripple.mjs +5 -9
- package/fesm2022/taiga-ui-addon-mobile-directives-ripple.mjs.map +1 -1
- package/fesm2022/taiga-ui-addon-mobile-directives-sidebar.mjs +7 -13
- package/fesm2022/taiga-ui-addon-mobile-directives-sidebar.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -6,6 +6,7 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
export declare class TuiMobileCalendar implements AfterViewInit {
|
|
7
7
|
private readonly yearsScrollRef?;
|
|
8
8
|
private readonly monthsScrollRef?;
|
|
9
|
+
private readonly value$;
|
|
9
10
|
private readonly today;
|
|
10
11
|
private activeYear;
|
|
11
12
|
private activeMonth;
|
|
@@ -14,7 +15,6 @@ export declare class TuiMobileCalendar implements AfterViewInit {
|
|
|
14
15
|
private readonly speed;
|
|
15
16
|
private readonly ngZone;
|
|
16
17
|
protected initialized: boolean;
|
|
17
|
-
protected value: TuiDay | TuiDayRange | readonly TuiDay[] | null;
|
|
18
18
|
protected readonly isIOS: boolean;
|
|
19
19
|
protected readonly isE2E: boolean;
|
|
20
20
|
protected readonly icons: import("@taiga-ui/core/tokens").TuiCommonIcons;
|
|
@@ -22,7 +22,7 @@ export declare class TuiMobileCalendar implements AfterViewInit {
|
|
|
22
22
|
protected readonly cancelWord$: import("rxjs").Observable<string>;
|
|
23
23
|
protected readonly doneWord$: import("rxjs").Observable<string>;
|
|
24
24
|
protected readonly unorderedWeekDays$: import("rxjs").Observable<[Monday: string, Tuesday: string, Wednesday: string, Thursday: string, Friday: string, Saturday: string, Sunday: string]>;
|
|
25
|
-
protected readonly chooseDayOrRangeTexts$: import("rxjs").Observable<[choose_day: string, choose_range: string, choose_days: string]
|
|
25
|
+
protected readonly chooseDayOrRangeTexts$: import("rxjs").Observable<[choose_day: string, choose_range: string, choose_days: string]> | null;
|
|
26
26
|
protected readonly years: number[];
|
|
27
27
|
protected readonly months: TuiMonth[];
|
|
28
28
|
single: boolean;
|
|
@@ -32,9 +32,12 @@ export declare class TuiMobileCalendar implements AfterViewInit {
|
|
|
32
32
|
disabledItemHandler: TuiBooleanHandler<TuiDay>;
|
|
33
33
|
readonly cancel: EventEmitter<void>;
|
|
34
34
|
readonly confirm: EventEmitter<TuiDayRange | TuiDay | readonly TuiDay[]>;
|
|
35
|
+
readonly valueChange: import("rxjs").Observable<TuiDayRange | TuiDay | readonly TuiDay[] | null>;
|
|
35
36
|
constructor();
|
|
36
37
|
ngAfterViewInit(): void;
|
|
37
38
|
setYear(year: number): void;
|
|
39
|
+
protected set value(value: TuiDay | TuiDayRange | readonly TuiDay[] | null);
|
|
40
|
+
protected get value(): TuiDay | TuiDayRange | readonly TuiDay[] | null;
|
|
38
41
|
protected get yearWidth(): number;
|
|
39
42
|
protected onClose(): void;
|
|
40
43
|
protected onConfirm(): void;
|
|
@@ -49,7 +52,6 @@ export declare class TuiMobileCalendar implements AfterViewInit {
|
|
|
49
52
|
private get initialYear();
|
|
50
53
|
private get initialMonth();
|
|
51
54
|
private isMultiValue;
|
|
52
|
-
private isSingleValue;
|
|
53
55
|
private getYearsViewportSize;
|
|
54
56
|
private updateViewportDimension;
|
|
55
57
|
private lateInit;
|
|
@@ -62,5 +64,5 @@ export declare class TuiMobileCalendar implements AfterViewInit {
|
|
|
62
64
|
private monthToYear;
|
|
63
65
|
private getMonthOffset;
|
|
64
66
|
static ɵfac: i0.ɵɵFactoryDeclaration<TuiMobileCalendar, never>;
|
|
65
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TuiMobileCalendar, "tui-mobile-calendar", never, { "single": { "alias": "single"; "required": false; }; "multi": { "alias": "multi"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabledItemHandler": { "alias": "disabledItemHandler"; "required": false; }; }, { "cancel": "cancel"; "confirm": "confirm"; }, never, never, true, never>;
|
|
67
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TuiMobileCalendar, "tui-mobile-calendar", never, { "single": { "alias": "single"; "required": false; }; "multi": { "alias": "multi"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabledItemHandler": { "alias": "disabledItemHandler"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "cancel": "cancel"; "confirm": "confirm"; "valueChange": "valueChange"; }, never, never, true, never>;
|
|
66
68
|
}
|
|
@@ -25,8 +25,8 @@ export declare class TuiSheetDialogComponent<I> implements AfterViewInit {
|
|
|
25
25
|
protected get offset(): number;
|
|
26
26
|
protected get closeable(): boolean;
|
|
27
27
|
protected get isSmall(): boolean;
|
|
28
|
-
protected onPointerChange(delta: number): void;
|
|
29
28
|
protected close(): void;
|
|
29
|
+
protected onPointerChange(delta: number): void;
|
|
30
30
|
private get sheetTop();
|
|
31
31
|
private getStops;
|
|
32
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<TuiSheetDialogComponent<any>, never>;
|
|
@@ -10,7 +10,6 @@ export declare class TuiSidebarComponent implements DoCheck {
|
|
|
10
10
|
private readonly right;
|
|
11
11
|
ngDoCheck(): void;
|
|
12
12
|
protected get animation(): AnimationOptions;
|
|
13
|
-
protected get directionHostClass(): string;
|
|
14
13
|
protected get direction(): TuiHorizontalDirection;
|
|
15
14
|
protected get content(): PolymorpheusContent;
|
|
16
15
|
protected get autoWidth(): boolean;
|
|
@@ -17,12 +17,13 @@ import { TUI_ANIMATIONS_SPEED, TUI_CLOSE_WORD, TUI_COMMON_ICONS, TUI_SHORT_WEEK_
|
|
|
17
17
|
import { tuiGetDuration } from '@taiga-ui/core/utils/miscellaneous';
|
|
18
18
|
import { TUI_CANCEL_WORD, TUI_CHOOSE_DAY_OR_RANGE_TEXTS, TUI_DONE_WORD, } from '@taiga-ui/kit/tokens';
|
|
19
19
|
import { tuiToggleDay } from '@taiga-ui/kit/utils';
|
|
20
|
-
import { debounceTime, delay, filter, identity, map, mergeMap, race, switchMap, take, takeUntil, timer, windowToggle, } from 'rxjs';
|
|
20
|
+
import { BehaviorSubject, debounceTime, delay, distinctUntilChanged, filter, identity, map, mergeMap, race, skip, switchMap, take, takeUntil, timer, windowToggle, } from 'rxjs';
|
|
21
21
|
import { RANGE, SCROLL_DEBOUNCE_TIME, STARTING_YEAR, YEARS_IN_ROW, } from './mobile-calendar.const';
|
|
22
22
|
import { TUI_MOBILE_CALENDAR_PROVIDERS, TUI_VALUE_STREAM, } from './mobile-calendar.providers';
|
|
23
23
|
import * as i0 from "@angular/core";
|
|
24
24
|
class TuiMobileCalendar {
|
|
25
25
|
constructor() {
|
|
26
|
+
this.value$ = new BehaviorSubject(null);
|
|
26
27
|
this.today = TuiDay.currentLocal();
|
|
27
28
|
this.activeYear = 0;
|
|
28
29
|
this.activeMonth = 0;
|
|
@@ -31,7 +32,6 @@ class TuiMobileCalendar {
|
|
|
31
32
|
this.speed = inject(TUI_ANIMATIONS_SPEED);
|
|
32
33
|
this.ngZone = inject(NgZone);
|
|
33
34
|
this.initialized = false;
|
|
34
|
-
this.value = null;
|
|
35
35
|
this.isIOS = inject(TUI_IS_IOS);
|
|
36
36
|
this.isE2E = inject(TUI_IS_E2E);
|
|
37
37
|
this.icons = inject(TUI_COMMON_ICONS);
|
|
@@ -39,7 +39,9 @@ class TuiMobileCalendar {
|
|
|
39
39
|
this.cancelWord$ = inject(TUI_CANCEL_WORD);
|
|
40
40
|
this.doneWord$ = inject(TUI_DONE_WORD);
|
|
41
41
|
this.unorderedWeekDays$ = inject(TUI_SHORT_WEEK_DAYS);
|
|
42
|
-
this.chooseDayOrRangeTexts$ = inject(TUI_CHOOSE_DAY_OR_RANGE_TEXTS
|
|
42
|
+
this.chooseDayOrRangeTexts$ = inject(TUI_CHOOSE_DAY_OR_RANGE_TEXTS, {
|
|
43
|
+
optional: true,
|
|
44
|
+
});
|
|
43
45
|
this.years = Array.from({ length: RANGE }, (_, i) => i + STARTING_YEAR);
|
|
44
46
|
this.months = Array.from({ length: RANGE * 12 }, (_, i) => new TuiMonth(Math.floor(i / MONTHS_IN_YEAR) + STARTING_YEAR, i % MONTHS_IN_YEAR));
|
|
45
47
|
this.single = true;
|
|
@@ -49,6 +51,7 @@ class TuiMobileCalendar {
|
|
|
49
51
|
this.disabledItemHandler = TUI_FALSE_HANDLER;
|
|
50
52
|
this.cancel = new EventEmitter();
|
|
51
53
|
this.confirm = new EventEmitter();
|
|
54
|
+
this.valueChange = this.value$.pipe(skip(1), distinctUntilChanged((a, b) => a?.toString() === b?.toString()), takeUntilDestroyed());
|
|
52
55
|
this.disabledItemHandlerMapper = (disabledItemHandler, min, max) => (item) => item.dayBefore(min) ||
|
|
53
56
|
(max !== null && item.dayAfter(max)) ||
|
|
54
57
|
disabledItemHandler(item);
|
|
@@ -75,6 +78,12 @@ class TuiMobileCalendar {
|
|
|
75
78
|
.pipe(tuiZonefree(this.ngZone), takeUntilDestroyed(this.destroyRef))
|
|
76
79
|
.subscribe(() => this.scrollToActiveMonth());
|
|
77
80
|
}
|
|
81
|
+
set value(value) {
|
|
82
|
+
this.value$.next(value);
|
|
83
|
+
}
|
|
84
|
+
get value() {
|
|
85
|
+
return this.value$.value;
|
|
86
|
+
}
|
|
78
87
|
get yearWidth() {
|
|
79
88
|
return this.doc.documentElement.clientWidth / YEARS_IN_ROW;
|
|
80
89
|
}
|
|
@@ -96,14 +105,17 @@ class TuiMobileCalendar {
|
|
|
96
105
|
else if (this.isMultiValue(this.value)) {
|
|
97
106
|
this.value = tuiToggleDay(this.value, day);
|
|
98
107
|
}
|
|
99
|
-
else if (this.
|
|
100
|
-
this.value =
|
|
108
|
+
else if (this.value instanceof TuiDay) {
|
|
109
|
+
this.value = TuiDayRange.sort(this.value, day);
|
|
110
|
+
}
|
|
111
|
+
else if (this.value instanceof TuiDayRange && !this.value.isSingleDay) {
|
|
112
|
+
this.value = day;
|
|
101
113
|
}
|
|
102
114
|
else if (this.value instanceof TuiDayRange) {
|
|
103
115
|
this.value = TuiDayRange.sort(this.value.from, day);
|
|
104
116
|
}
|
|
105
117
|
else if (!this.value) {
|
|
106
|
-
this.value =
|
|
118
|
+
this.value = day;
|
|
107
119
|
}
|
|
108
120
|
}
|
|
109
121
|
getState(index) {
|
|
@@ -157,9 +169,6 @@ class TuiMobileCalendar {
|
|
|
157
169
|
isMultiValue(day) {
|
|
158
170
|
return !(day instanceof TuiDay) && !(day instanceof TuiDayRange) && this.multi;
|
|
159
171
|
}
|
|
160
|
-
isSingleValue(day) {
|
|
161
|
-
return day instanceof TuiDay || (day instanceof TuiDayRange && !day.isSingleDay);
|
|
162
|
-
}
|
|
163
172
|
getYearsViewportSize() {
|
|
164
173
|
return this.yearsScrollRef?.getViewportSize() || 0;
|
|
165
174
|
}
|
|
@@ -239,7 +248,7 @@ class TuiMobileCalendar {
|
|
|
239
248
|
return (year - this.activeYear) * MONTHS_IN_YEAR;
|
|
240
249
|
}
|
|
241
250
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMobileCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
242
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiMobileCalendar, isStandalone: true, selector: "tui-mobile-calendar", inputs: { single: "single", multi: "multi", min: "min", max: "max", disabledItemHandler: "disabledItemHandler" }, outputs: { cancel: "cancel", confirm: "confirm" }, host: { properties: { "class._ios": "isIOS", "class._initialized": "initialized" } }, providers: TUI_MOBILE_CALENDAR_PROVIDERS, viewQueries: [{ propertyName: "yearsScrollRef", first: true, predicate: ["yearsScrollRef"], descendants: true }, { propertyName: "monthsScrollRef", first: true, predicate: ["monthsScrollRef"], descendants: true }], ngImport: i0, template: "<header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord$ | async }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord$ | async }}\n </button>\n <h2\n
|
|
251
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiMobileCalendar, isStandalone: true, selector: "tui-mobile-calendar", inputs: { single: "single", multi: "multi", min: "min", max: "max", disabledItemHandler: "disabledItemHandler", value: "value" }, outputs: { cancel: "cancel", confirm: "confirm", valueChange: "valueChange" }, host: { properties: { "class._ios": "isIOS", "class._initialized": "initialized" } }, providers: TUI_MOBILE_CALENDAR_PROVIDERS, viewQueries: [{ propertyName: "yearsScrollRef", first: true, predicate: ["yearsScrollRef"], descendants: true }, { propertyName: "monthsScrollRef", first: true, predicate: ["monthsScrollRef"], descendants: true }], ngImport: i0, template: "<header\n *ngIf=\"chooseDayOrRangeTexts$ | async as texts\"\n class=\"t-header\"\n>\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord$ | async }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord$ | async }}\n </button>\n <h2\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single ? texts[0] : multi ? texts[2] : texts[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord$ | async }}\n </button>\n</header>\n<cdk-virtual-scroll-viewport\n #yearsScrollRef\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n <div\n *ngFor=\"let day of unorderedWeekDays$ | tuiOrderWeekDays | async\"\n class=\"t-day\"\n >\n {{ day }}\n </div>\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScrollRef\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ month | tuiMonth | async }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : min : max\"\n [month]=\"month\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n", styles: [":host{display:block;height:100%;font-family:-apple-system,BlinkMacSystemFont,Roboto,sans-serif;color:var(--tui-text-primary);-webkit-tap-highlight-color:transparent}.t-header{position:relative;display:flex;align-items:center;height:3.5rem;padding:0 1rem;border-bottom:.5px solid var(--tui-border-normal)}:host._ios .t-header{height:2.75rem;border-bottom:none}.t-close{width:1.5rem;height:1.5rem;margin-right:2rem}:host._ios .t-close{display:none}.t-link{margin-left:auto;flex-shrink:0;font-size:.875rem;line-height:1rem;font-weight:500;text-transform:uppercase;color:var(--tui-text-action)}.t-link_close{display:none}:host._ios .t-link{min-width:3.75rem;text-align:right;font-size:.9375rem;line-height:1.125rem;font-weight:400;letter-spacing:.018125rem;text-transform:none}:host._ios .t-link_close{display:block;margin:0 auto 0 0;text-align:left}.t-label{flex-grow:1;margin:0;font-size:1.25rem;line-height:3.5rem;font-weight:500;letter-spacing:-.0125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-label+.t-link{padding-left:1rem}:host._ios .t-label{font-size:1.0625rem;font-weight:600;letter-spacing:-.025625rem;text-align:center}.t-years{scrollbar-width:none;-ms-overflow-style:none;height:4.0625rem;background-color:var(--tui-background-base);box-shadow:0 .5px var(--tui-border-normal)}.t-years::-webkit-scrollbar,.t-years::-webkit-scrollbar-thumb{display:none}:host._ios .t-years{background-color:transparent}.t-years-wrapper{display:flex;height:4.0625rem}.t-year{-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;text-decoration:none;outline:none;width:20vw;flex-shrink:0;font-size:.9375rem;font-weight:700;letter-spacing:.015625rem;cursor:pointer;opacity:.1;transform:scale(.73);transition:color,opacity,transform .2s}.t-year[data-state=adjacent]{transform:scale(.86);opacity:.3}.t-year[data-state=active]{color:var(--tui-text-action);opacity:1;transform:scale(1)}.t-week{display:flex;align-items:center;height:1.875rem;width:20.75rem;max-width:100%;margin:0 auto;font-size:.75rem}:host._ios .t-week{width:22.625rem;font-size:.6875rem;font-weight:500;color:var(--tui-text-secondary)}.t-day{flex:1;text-align:center}.t-months{scrollbar-width:none;-ms-overflow-style:none;height:calc(100% - 9.5rem);box-shadow:0 -1px var(--tui-border-normal);overflow-x:hidden}.t-months::-webkit-scrollbar,.t-months::-webkit-scrollbar-thumb{display:none}:host._ios .t-months{height:calc(100% - 8.75rem)}.t-month-wrapper{margin:.625rem 0 -.625rem}.t-month{height:2.75rem;line-height:2.75rem;padding-left:1rem;font-size:.875rem;font-weight:500;text-transform:uppercase;margin:0 0 1.25rem;box-sizing:border-box;border-bottom:.5px solid var(--tui-border-normal)}:host._ios .t-month{height:3.125rem;margin:0;border-bottom:none;text-transform:none;font-size:1.375rem;line-height:3.125rem;letter-spacing:.02rem;font-weight:700}.t-calendar{margin:0 auto;font-family:inherit;font-size:1.125rem;transition:opacity .2s}:host._ios .t-calendar{font-size:1.0625rem}.t-week,.t-years,.t-months{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:0}:host(._initialized) .t-week,:host(._initialized) .t-years,:host(._initialized) .t-months{opacity:1}\n"], dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: TuiRipple, selector: "[tuiRipple]", inputs: ["tuiRipple"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo"] }, { kind: "directive", type: TuiTouchable, selector: "[tuiTouchable]", inputs: ["tuiTouchable"] }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "pipe", type: TuiOrderWeekDaysPipe, name: "tuiOrderWeekDays" }, { kind: "component", type: TuiMobileCalendarSheet, selector: "tui-mobile-calendar-sheet" }, { kind: "pipe", type: TuiMonthPipe, name: "tuiMonth" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
243
252
|
}
|
|
244
253
|
export { TuiMobileCalendar };
|
|
245
254
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMobileCalendar, decorators: [{
|
|
@@ -262,7 +271,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
262
271
|
], changeDetection: ChangeDetectionStrategy.OnPush, providers: TUI_MOBILE_CALENDAR_PROVIDERS, host: {
|
|
263
272
|
'[class._ios]': 'isIOS',
|
|
264
273
|
'[class._initialized]': 'initialized',
|
|
265
|
-
}, template: "<header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord$ | async }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord$ | async }}\n </button>\n <h2\n
|
|
274
|
+
}, template: "<header\n *ngIf=\"chooseDayOrRangeTexts$ | async as texts\"\n class=\"t-header\"\n>\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord$ | async }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord$ | async }}\n </button>\n <h2\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single ? texts[0] : multi ? texts[2] : texts[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord$ | async }}\n </button>\n</header>\n<cdk-virtual-scroll-viewport\n #yearsScrollRef\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n <div\n *ngFor=\"let day of unorderedWeekDays$ | tuiOrderWeekDays | async\"\n class=\"t-day\"\n >\n {{ day }}\n </div>\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScrollRef\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ month | tuiMonth | async }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler | tuiMapper: disabledItemHandlerMapper : min : max\"\n [month]=\"month\"\n [value]=\"value\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n", styles: [":host{display:block;height:100%;font-family:-apple-system,BlinkMacSystemFont,Roboto,sans-serif;color:var(--tui-text-primary);-webkit-tap-highlight-color:transparent}.t-header{position:relative;display:flex;align-items:center;height:3.5rem;padding:0 1rem;border-bottom:.5px solid var(--tui-border-normal)}:host._ios .t-header{height:2.75rem;border-bottom:none}.t-close{width:1.5rem;height:1.5rem;margin-right:2rem}:host._ios .t-close{display:none}.t-link{margin-left:auto;flex-shrink:0;font-size:.875rem;line-height:1rem;font-weight:500;text-transform:uppercase;color:var(--tui-text-action)}.t-link_close{display:none}:host._ios .t-link{min-width:3.75rem;text-align:right;font-size:.9375rem;line-height:1.125rem;font-weight:400;letter-spacing:.018125rem;text-transform:none}:host._ios .t-link_close{display:block;margin:0 auto 0 0;text-align:left}.t-label{flex-grow:1;margin:0;font-size:1.25rem;line-height:3.5rem;font-weight:500;letter-spacing:-.0125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-label+.t-link{padding-left:1rem}:host._ios .t-label{font-size:1.0625rem;font-weight:600;letter-spacing:-.025625rem;text-align:center}.t-years{scrollbar-width:none;-ms-overflow-style:none;height:4.0625rem;background-color:var(--tui-background-base);box-shadow:0 .5px var(--tui-border-normal)}.t-years::-webkit-scrollbar,.t-years::-webkit-scrollbar-thumb{display:none}:host._ios .t-years{background-color:transparent}.t-years-wrapper{display:flex;height:4.0625rem}.t-year{-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font-size:inherit;line-height:inherit;text-decoration:none;outline:none;width:20vw;flex-shrink:0;font-size:.9375rem;font-weight:700;letter-spacing:.015625rem;cursor:pointer;opacity:.1;transform:scale(.73);transition:color,opacity,transform .2s}.t-year[data-state=adjacent]{transform:scale(.86);opacity:.3}.t-year[data-state=active]{color:var(--tui-text-action);opacity:1;transform:scale(1)}.t-week{display:flex;align-items:center;height:1.875rem;width:20.75rem;max-width:100%;margin:0 auto;font-size:.75rem}:host._ios .t-week{width:22.625rem;font-size:.6875rem;font-weight:500;color:var(--tui-text-secondary)}.t-day{flex:1;text-align:center}.t-months{scrollbar-width:none;-ms-overflow-style:none;height:calc(100% - 9.5rem);box-shadow:0 -1px var(--tui-border-normal);overflow-x:hidden}.t-months::-webkit-scrollbar,.t-months::-webkit-scrollbar-thumb{display:none}:host._ios .t-months{height:calc(100% - 8.75rem)}.t-month-wrapper{margin:.625rem 0 -.625rem}.t-month{height:2.75rem;line-height:2.75rem;padding-left:1rem;font-size:.875rem;font-weight:500;text-transform:uppercase;margin:0 0 1.25rem;box-sizing:border-box;border-bottom:.5px solid var(--tui-border-normal)}:host._ios .t-month{height:3.125rem;margin:0;border-bottom:none;text-transform:none;font-size:1.375rem;line-height:3.125rem;letter-spacing:.02rem;font-weight:700}.t-calendar{margin:0 auto;font-family:inherit;font-size:1.125rem;transition:opacity .2s}:host._ios .t-calendar{font-size:1.0625rem}.t-week,.t-years,.t-months{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:0}:host(._initialized) .t-week,:host(._initialized) .t-years,:host(._initialized) .t-months{opacity:1}\n"] }]
|
|
266
275
|
}], ctorParameters: function () { return []; }, propDecorators: { yearsScrollRef: [{
|
|
267
276
|
type: ViewChild,
|
|
268
277
|
args: ['yearsScrollRef']
|
|
@@ -283,5 +292,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
283
292
|
type: Output
|
|
284
293
|
}], confirm: [{
|
|
285
294
|
type: Output
|
|
295
|
+
}], valueChange: [{
|
|
296
|
+
type: Output
|
|
297
|
+
}], value: [{
|
|
298
|
+
type: Input
|
|
286
299
|
}] } });
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL21vYmlsZS1jYWxlbmRhci9tb2JpbGUtY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2NvbXBvbmVudHMvbW9iaWxlLWNhbGVuZGFyL21vYmlsZS1jYWxlbmRhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsZUFBZSxFQUNmLHdCQUF3QixHQUMzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDL0YsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQ0gsY0FBYyxFQUNkLGFBQWEsRUFDYixZQUFZLEVBQ1osTUFBTSxFQUNOLFdBQVcsRUFDWCxRQUFRLEdBQ1gsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDekUs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d0JBQ3RCLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxJQUFJO3dCQUNKLGFBQWE7cUJBQ2hCLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLDZCQUE2QixRQUNsQzt3QkFDRixjQUFjLEVBQUUsT0FBTzt3QkFDdkIsc0JBQXNCLEVBQUUsYUFBYTtxQkFDeEM7MEVBSWdCLGNBQWM7c0JBRDlCLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUlWLGVBQWU7c0JBRC9CLFNBQVM7dUJBQUMsaUJBQWlCO2dCQWdDckIsTUFBTTtzQkFEWixLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxHQUFHO3NCQURULEtBQUs7Z0JBSUMsR0FBRztzQkFEVCxLQUFLO2dCQUlDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFJVSxNQUFNO3NCQURyQixNQUFNO2dCQUlTLE9BQU87c0JBRHRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENka0ZpeGVkU2l6ZVZpcnR1YWxTY3JvbGwsXG4gICAgQ2RrVmlydHVhbEZvck9mLFxuICAgIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQge0FzeW5jUGlwZSwgRE9DVU1FTlQsIE5nRm9yT2YsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7QWZ0ZXJWaWV3SW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7VHVpTW9iaWxlQ2FsZW5kYXJTaGVldH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL21vYmlsZS1jYWxlbmRhci1zaGVldCc7XG5pbXBvcnQge1R1aVJpcHBsZSwgVHVpVG91Y2hhYmxlfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tbW9iaWxlL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBNT05USFNfSU5fWUVBUixcbiAgICBUVUlfRklSU1RfREFZLFxuICAgIFRVSV9MQVNUX0RBWSxcbiAgICBUdWlEYXksXG4gICAgVHVpRGF5UmFuZ2UsXG4gICAgVHVpTW9udGgsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7dHVpVHlwZWRGcm9tRXZlbnQsIHR1aVpvbmVmcmVlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7VHVpTWFwcGVyUGlwZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9waXBlcy9tYXBwZXInO1xuaW1wb3J0IHtUVUlfSVNfRTJFLCBUVUlfSVNfSU9TfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXIsIFR1aU1hcHBlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge1R1aUJ1dHRvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHtUdWlMaW5rfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2xpbmsnO1xuaW1wb3J0IHtUdWlNb250aFBpcGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3BpcGVzL21vbnRoJztcbmltcG9ydCB7VHVpT3JkZXJXZWVrRGF5c1BpcGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3BpcGVzL29yZGVyLXdlZWstZGF5cyc7XG5pbXBvcnQge1xuICAgIFRVSV9BTklNQVRJT05TX1NQRUVELFxuICAgIFRVSV9DTE9TRV9XT1JELFxuICAgIFRVSV9DT01NT05fSUNPTlMsXG4gICAgVFVJX1NIT1JUX1dFRUtfREFZUyxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7dHVpR2V0RHVyYXRpb259IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtcbiAgICBUVUlfQ0FOQ0VMX1dPUkQsXG4gICAgVFVJX0NIT09TRV9EQVlfT1JfUkFOR0VfVEVYVFMsXG4gICAgVFVJX0RPTkVfV09SRCxcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHt0dWlUb2dnbGVEYXl9IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuaW1wb3J0IHR5cGUge01vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIGRlYm91bmNlVGltZSxcbiAgICBkZWxheSxcbiAgICBmaWx0ZXIsXG4gICAgaWRlbnRpdHksXG4gICAgbWFwLFxuICAgIG1lcmdlTWFwLFxuICAgIHJhY2UsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2UsXG4gICAgdGFrZVVudGlsLFxuICAgIHRpbWVyLFxuICAgIHdpbmRvd1RvZ2dsZSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgUkFOR0UsXG4gICAgU0NST0xMX0RFQk9VTkNFX1RJTUUsXG4gICAgU1RBUlRJTkdfWUVBUixcbiAgICBZRUFSU19JTl9ST1csXG59IGZyb20gJy4vbW9iaWxlLWNhbGVuZGFyLmNvbnN0JztcbmltcG9ydCB7XG4gICAgVFVJX01PQklMRV9DQUxFTkRBUl9QUk9WSURFUlMsXG4gICAgVFVJX1ZBTFVFX1NUUkVBTSxcbn0gZnJvbSAnLi9tb2JpbGUtY2FsZW5kYXIucHJvdmlkZXJzJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1tb2JpbGUtY2FsZW5kYXInLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVHVpQnV0dG9uLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIFR1aVJpcHBsZSxcbiAgICAgICAgVHVpTGluayxcbiAgICAgICAgVHVpVG91Y2hhYmxlLFxuICAgICAgICBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLFxuICAgICAgICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXG4gICAgICAgIENka1ZpcnR1YWxGb3JPZixcbiAgICAgICAgVHVpT3JkZXJXZWVrRGF5c1BpcGUsXG4gICAgICAgIFR1aU1vYmlsZUNhbGVuZGFyU2hlZXQsXG4gICAgICAgIFR1aU1vbnRoUGlwZSxcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgTmdJZixcbiAgICAgICAgVHVpTWFwcGVyUGlwZSxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tb2JpbGUtY2FsZW5kYXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbW9iaWxlLWNhbGVuZGFyLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFRVSV9NT0JJTEVfQ0FMRU5EQVJfUFJPVklERVJTLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5faW9zXSc6ICdpc0lPUycsXG4gICAgICAgICdbY2xhc3MuX2luaXRpYWxpemVkXSc6ICdpbml0aWFsaXplZCcsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTW9iaWxlQ2FsZW5kYXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKCd5ZWFyc1Njcm9sbFJlZicpXG4gICAgcHJpdmF0ZSByZWFkb25seSB5ZWFyc1Njcm9sbFJlZj86IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICAgIEBWaWV3Q2hpbGQoJ21vbnRoc1Njcm9sbFJlZicpXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb250aHNTY3JvbGxSZWY/OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvZGF5ID0gVHVpRGF5LmN1cnJlbnRMb2NhbCgpO1xuICAgIHByaXZhdGUgYWN0aXZlWWVhciA9IDA7XG4gICAgcHJpdmF0ZSBhY3RpdmVNb250aCA9IDA7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNwZWVkID0gaW5qZWN0KFRVSV9BTklNQVRJT05TX1NQRUVEKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgcHJvdGVjdGVkIGluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHZhbHVlOiBUdWlEYXkgfCBUdWlEYXlSYW5nZSB8IHJlYWRvbmx5IFR1aURheVtdIHwgbnVsbCA9IG51bGw7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzSU9TID0gaW5qZWN0KFRVSV9JU19JT1MpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpc0UyRSA9IGluamVjdChUVUlfSVNfRTJFKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbnMgPSBpbmplY3QoVFVJX0NPTU1PTl9JQ09OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsb3NlV29yZCQgPSBpbmplY3QoVFVJX0NMT1NFX1dPUkQpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjYW5jZWxXb3JkJCA9IGluamVjdChUVUlfQ0FOQ0VMX1dPUkQpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkb25lV29yZCQgPSBpbmplY3QoVFVJX0RPTkVfV09SRCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHVub3JkZXJlZFdlZWtEYXlzJCA9IGluamVjdChUVUlfU0hPUlRfV0VFS19EQVlTKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2hvb3NlRGF5T3JSYW5nZVRleHRzJCA9IGluamVjdChUVUlfQ0hPT1NFX0RBWV9PUl9SQU5HRV9URVhUUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHllYXJzID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiBSQU5HRX0sIChfLCBpKSA9PiBpICsgU1RBUlRJTkdfWUVBUik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vbnRocyA9IEFycmF5LmZyb20oXG4gICAgICAgIHtsZW5ndGg6IFJBTkdFICogMTJ9LFxuICAgICAgICAoXywgaSkgPT5cbiAgICAgICAgICAgIG5ldyBUdWlNb250aChcbiAgICAgICAgICAgICAgICBNYXRoLmZsb29yKGkgLyBNT05USFNfSU5fWUVBUikgKyBTVEFSVElOR19ZRUFSLFxuICAgICAgICAgICAgICAgIGkgJSBNT05USFNfSU5fWUVBUixcbiAgICAgICAgICAgICksXG4gICAgKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNpbmdsZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtdWx0aSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluID0gVFVJX0ZJUlNUX0RBWTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heCA9IFRVSV9MQVNUX0RBWTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBUVUlfRkFMU0VfSEFORExFUjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgICAgIFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W11cbiAgICA+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5qZWN0KFRVSV9WQUxVRV9TVFJFQU0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVZZWFyID0gdGhpcy5pbml0aWFsWWVhcjtcbiAgICAgICAgdGhpcy5hY3RpdmVNb250aCA9IHRoaXMuaW5pdGlhbE1vbnRoO1xuXG4gICAgICAgIC8vIFZpcnR1YWwgc2Nyb2xsIGhhcyBub3QgeWV0IHJlbmRlcmVkIGl0ZW1zIGV2ZW4gaW4gbmdBZnRlclZpZXdJbml0XG4gICAgICAgIHRoaXMud2FpdFNjcm9sbGVkQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFllYXIoeWVhcjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVllYXIgPT09IHllYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlTW9udGggKz0gdGhpcy5nZXRNb250aE9mZnNldCh5ZWFyKTtcbiAgICAgICAgdGhpcy5hY3RpdmVZZWFyID0geWVhcjtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZVllYXIoJ3Ntb290aCcpO1xuXG4gICAgICAgIHRpbWVyKDApXG4gICAgICAgICAgICAucGlwZSh0dWlab25lZnJlZSh0aGlzLm5nWm9uZSksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNjcm9sbFRvQWN0aXZlTW9udGgoKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCB5ZWFyV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jLmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAvIFlFQVJTX0lOX1JPVztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25DbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNvbmZpcm0oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm0uZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkRheUNsaWNrKGRheTogVHVpRGF5KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNpbmdsZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGRheTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTXVsdGlWYWx1ZSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHR1aVRvZ2dsZURheSh0aGlzLnZhbHVlLCBkYXkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTaW5nbGVWYWx1ZSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBUdWlEYXlSYW5nZShkYXksIGRheSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheVJhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gVHVpRGF5UmFuZ2Uuc29ydCh0aGlzLnZhbHVlLmZyb20sIGRheSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgVHVpRGF5UmFuZ2UoZGF5LCBkYXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFN0YXRlKGluZGV4OiBudW1iZXIpOiAnYWN0aXZlJyB8ICdhZGphY2VudCcgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuaXNZZWFyQWN0aXZlKGluZGV4KSkge1xuICAgICAgICAgICAgcmV0dXJuICdhY3RpdmUnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNZZWFyQWN0aXZlKGluZGV4IC0gMSkgfHwgdGhpcy5pc1llYXJBY3RpdmUoaW5kZXggKyAxKSkge1xuICAgICAgICAgICAgcmV0dXJuICdhZGphY2VudCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Nb250aENoYW5nZShtb250aDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIFNraXBwaW5nIGluaXRpYWwgY2FsbGJhY2sgd2hlcmUgaW5kZXggPT09IDBcbiAgICAgICAgaWYgKCFtb250aCB8fCB0aGlzLmFjdGl2ZU1vbnRoID09PSBtb250aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVNb250aCA9IG1vbnRoO1xuXG4gICAgICAgIGNvbnN0IGFjdGl2ZVllYXIgPSB0aGlzLm1vbnRoVG9ZZWFyKG1vbnRoKTtcblxuICAgICAgICBpZiAoYWN0aXZlWWVhciA9PT0gdGhpcy5hY3RpdmVZZWFyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZVllYXIgPSBhY3RpdmVZZWFyO1xuICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlWWVhcigpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCByZWFkb25seSBkaXNhYmxlZEl0ZW1IYW5kbGVyTWFwcGVyOiBUdWlNYXBwZXI8XG4gICAgICAgIFtUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+LCBUdWlEYXksIFR1aURheV0sXG4gICAgICAgIFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT5cbiAgICA+ID0gKGRpc2FibGVkSXRlbUhhbmRsZXIsIG1pbiwgbWF4KSA9PiAoaXRlbSkgPT5cbiAgICAgICAgaXRlbS5kYXlCZWZvcmUobWluKSB8fFxuICAgICAgICAobWF4ICE9PSBudWxsICYmIGl0ZW0uZGF5QWZ0ZXIobWF4KSkgfHxcbiAgICAgICAgZGlzYWJsZWRJdGVtSGFuZGxlcihpdGVtKTtcblxuICAgIHByaXZhdGUgZ2V0IGluaXRpYWxZZWFyKCk6IG51bWJlciB7XG4gICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9kYXkueWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlIGluc3RhbmNlb2YgVHVpRGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS55ZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheVJhbmdlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU/LlswXT8ueWVhciA/PyB0aGlzLnRvZGF5LnllYXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS50by55ZWFyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGluaXRpYWxNb250aCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZGF5Lm1vbnRoICsgKHRoaXMudG9kYXkueWVhciAtIFNUQVJUSU5HX1lFQVIpICogTU9OVEhTX0lOX1lFQVI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUubW9udGggKyAodGhpcy52YWx1ZS55ZWFyIC0gU1RBUlRJTkdfWUVBUikgKiBNT05USFNfSU5fWUVBUjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgKHRoaXMudmFsdWU/LlswXT8ubW9udGggPz8gdGhpcy50b2RheS5tb250aCkgK1xuICAgICAgICAgICAgICAgICgodGhpcy52YWx1ZT8uWzBdPy55ZWFyID8/IHRoaXMudG9kYXkueWVhcikgLSBTVEFSVElOR19ZRUFSKSAqXG4gICAgICAgICAgICAgICAgICAgIE1PTlRIU19JTl9ZRUFSXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMudmFsdWUudG8ubW9udGggKyAodGhpcy52YWx1ZS50by55ZWFyIC0gU1RBUlRJTkdfWUVBUikgKiBNT05USFNfSU5fWUVBUlxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNdWx0aVZhbHVlKGRheTogYW55KTogZGF5IGlzIHJlYWRvbmx5IFR1aURheVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuICEoZGF5IGluc3RhbmNlb2YgVHVpRGF5KSAmJiAhKGRheSBpbnN0YW5jZW9mIFR1aURheVJhbmdlKSAmJiB0aGlzLm11bHRpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTaW5nbGVWYWx1ZShkYXk6IGFueSk6IGRheSBpcyBUdWlEYXkge1xuICAgICAgICByZXR1cm4gZGF5IGluc3RhbmNlb2YgVHVpRGF5IHx8IChkYXkgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSAmJiAhZGF5LmlzU2luZ2xlRGF5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFllYXJzVmlld3BvcnRTaXplKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXJzU2Nyb2xsUmVmPy5nZXRWaWV3cG9ydFNpemUoKSB8fCAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmlld3BvcnREaW1lbnNpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMueWVhcnNTY3JvbGxSZWY/LmNoZWNrVmlld3BvcnRTaXplKCk7XG4gICAgICAgIHRoaXMubW9udGhzU2Nyb2xsUmVmPy5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbGF0ZUluaXQoKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRZZWFyc1ZpZXdwb3J0U2l6ZSgpID4gMCA/IGlkZW50aXR5IDogZGVsYXkoMjAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdhaXRTY3JvbGxlZENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydERpbWVuc2lvbigpO1xuXG4gICAgICAgIHRoaXMubW9udGhzU2Nyb2xsUmVmPy5zY3JvbGxlZEluZGV4Q2hhbmdlXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWxheSh0dWlHZXREdXJhdGlvbih0aGlzLnNwZWVkKSksXG4gICAgICAgICAgICAgICAgdGhpcy5sYXRlSW5pdCgpLFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0RGltZW5zaW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0WWVhclNjcm9sbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdE1vbnRoU2Nyb2xsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZVllYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlTW9udGgoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFllYXJTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHt5ZWFyc1Njcm9sbFJlZn0gPSB0aGlzO1xuXG4gICAgICAgIGlmICgheWVhcnNTY3JvbGxSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvdWNoc3RhcnQkID0gdHVpVHlwZWRGcm9tRXZlbnQoXG4gICAgICAgICAgICB5ZWFyc1Njcm9sbFJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndG91Y2hzdGFydCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRvdWNoZW5kJCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgeWVhcnNTY3JvbGxSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ3RvdWNoZW5kJyxcbiAgICAgICAgICAgIHtwYXNzaXZlOiB0cnVlfSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY2xpY2skID0gdHVpVHlwZWRGcm9tRXZlbnQoXG4gICAgICAgICAgICB5ZWFyc1Njcm9sbFJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAnY2xpY2snLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFJlZnJlc2ggYWN0aXZlWWVhclxuICAgICAgICB5ZWFyc1Njcm9sbFJlZlxuICAgICAgICAgICAgLmVsZW1lbnRTY3JvbGxlZCgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgc21vb3RoIHNjcm9sbCByZXN1bHRpbmcgZnJvbSBjbGljayBvbiB0aGUgZXhhY3QgeWVhclxuICAgICAgICAgICAgICAgIHdpbmRvd1RvZ2dsZSh0b3VjaHN0YXJ0JCwgKCkgPT4gY2xpY2skKSxcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoeCkgPT4geCksXG4gICAgICAgICAgICAgICAgLy8gRGVsYXkgaXMgcmVxdWlyZWQgdG8gcnVuIG1vbnRocyBzY3JvbGwgaW4gdGhlIG5leHQgZnJhbWUgdG8gcHJldmVudCBmbGlja2VyXG4gICAgICAgICAgICAgICAgZGVsYXkoMCksXG4gICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyc1Njcm9sbFJlZi5tZWFzdXJlU2Nyb2xsT2Zmc2V0KCkgLyB0aGlzLnllYXJXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihZRUFSU19JTl9ST1cgLyAyKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBTVEFSVElOR19ZRUFSLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChhY3RpdmVZZWFyKSA9PiBhY3RpdmVZZWFyICE9PSB0aGlzLmFjdGl2ZVllYXIpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoYWN0aXZlWWVhcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9udGggKz0gdGhpcy5nZXRNb250aE9mZnNldChhY3RpdmVZZWFyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVllYXIgPSBhY3RpdmVZZWFyO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVNb250aCgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU21vb3RoIHNjcm9sbCB0byBhY3RpdmVZZWFyIGFmdGVyIHNjcm9sbGluZyBpcyBkb25lXG4gICAgICAgIHRvdWNoc3RhcnQkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdG91Y2hlbmQkKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgcmFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHllYXJzU2Nyb2xsUmVmLmVsZW1lbnRTY3JvbGxlZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZXIoU0NST0xMX0RFQk9VTkNFX1RJTUUpLFxuICAgICAgICAgICAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoU0NST0xMX0RFQk9VTkNFX1RJTUUgKiAyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodG91Y2hzdGFydCQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2Nyb2xsVG9BY3RpdmVZZWFyKCdzbW9vdGgnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TW9udGhTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHttb250aHNTY3JvbGxSZWZ9ID0gdGhpcztcblxuICAgICAgICBpZiAoIW1vbnRoc1Njcm9sbFJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG91Y2hzdGFydCQgPSB0dWlUeXBlZEZyb21FdmVudChcbiAgICAgICAgICAgIG1vbnRoc1Njcm9sbFJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndG91Y2hzdGFydCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRvdWNoZW5kJCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgbW9udGhzU2Nyb2xsUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0b3VjaGVuZCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gU21vb3RoIHNjcm9sbCB0byB0aGUgY2xvc2VzdCBtb250aCBhZnRlciBzY3JvbGxpbmcgaXMgZG9uZVxuICAgICAgICB0b3VjaHN0YXJ0JFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRvdWNoZW5kJCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgIHJhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBtb250aHNTY3JvbGxSZWYuZWxlbWVudFNjcm9sbGVkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lcihTQ1JPTExfREVCT1VOQ0VfVElNRSksXG4gICAgICAgICAgICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZShTQ1JPTExfREVCT1VOQ0VfVElNRSAqIDIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0b3VjaHN0YXJ0JCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zY3JvbGxUb0FjdGl2ZU1vbnRoKCdzbW9vdGgnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY3JvbGxUb0FjdGl2ZVllYXIoYmVoYXZpb3I6IFNjcm9sbEJlaGF2aW9yID0gJ2F1dG8nKTogdm9pZCB7XG4gICAgICAgIHRoaXMueWVhcnNTY3JvbGxSZWY/LnNjcm9sbFRvSW5kZXgoXG4gICAgICAgICAgICBNYXRoLm1heCh0aGlzLmFjdGl2ZVllYXIgLSBTVEFSVElOR19ZRUFSIC0gMiwgMCksXG4gICAgICAgICAgICB0aGlzLmlzRTJFID8gJ2F1dG8nIDogYmVoYXZpb3IsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY3JvbGxUb0FjdGl2ZU1vbnRoKGJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvciA9ICdhdXRvJyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vbnRoc1Njcm9sbFJlZj8uc2Nyb2xsVG9JbmRleChcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9udGgsXG4gICAgICAgICAgICB0aGlzLmlzRTJFID8gJ2F1dG8nIDogYmVoYXZpb3IsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1llYXJBY3RpdmUoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaW5kZXggPT09IHRoaXMuYWN0aXZlWWVhcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRoVG9ZZWFyKG1vbnRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKChtb250aCArIDEpIC8gTU9OVEhTX0lOX1lFQVIpICsgU1RBUlRJTkdfWUVBUiAtIDE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNb250aE9mZnNldCh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKHllYXIgLSB0aGlzLmFjdGl2ZVllYXIpICogTU9OVEhTX0lOX1lFQVI7XG4gICAgfVxufVxuIiwiPGhlYWRlciBjbGFzcz1cInQtaGVhZGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgICBhcHBlYXJhbmNlPVwiXCJcbiAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1tb2JpbGUtY2FsZW5kYXJfX2NhbmNlbFwiXG4gICAgICAgIHR1aUljb25CdXR0b25cbiAgICAgICAgdHVpUmlwcGxlXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInQtY2xvc2VcIlxuICAgICAgICBbaWNvblN0YXJ0XT1cImljb25zLmNsb3NlXCJcbiAgICAgICAgW3N0eWxlLmJvcmRlci1yYWRpdXMuJV09XCIxMDBcIlxuICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCJcbiAgICA+XG4gICAgICAgIHt7IGNsb3NlV29yZCQgfCBhc3luYyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgdHVpTGlua1xuICAgICAgICB0dWlUb3VjaGFibGU9XCJvcGFjaXR5XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidC1saW5rIHQtbGlua19jbG9zZVwiXG4gICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIlxuICAgID5cbiAgICAgICAge3sgY2FuY2VsV29yZCQgfCBhc3luYyB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxoMlxuICAgICAgICAqbmdJZj1cImNob29zZURheU9yUmFuZ2VUZXh0cyQgfCBhc3luYyBhcyB0ZXh0c1wiXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktbW9iaWxlLWNhbGVuZGFyX19sYWJlbFwiXG4gICAgICAgIGNsYXNzPVwidC1sYWJlbFwiXG4gICAgPlxuICAgICAgICB7eyBzaW5nbGUgPyB0ZXh0cz8uWzBdIDogbXVsdGkgPyB0ZXh0cz8uWzJdIDogdGV4dHM/LlsxXSB9fVxuICAgIDwvaDI+XG4gICAgPGJ1dHRvblxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLW1vYmlsZS1jYWxlbmRhcl9fY29uZmlybVwiXG4gICAgICAgIHR1aUxpbmtcbiAgICAgICAgdHVpVG91Y2hhYmxlPVwib3BhY2l0eVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInQtbGlua1wiXG4gICAgICAgIChjbGljayk9XCJvbkNvbmZpcm0oKVwiXG4gICAgPlxuICAgICAgICB7eyBkb25lV29yZCQgfCBhc3luYyB9fVxuICAgIDwvYnV0dG9uPlxuPC9oZWFkZXI+XG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI3llYXJzU2Nyb2xsUmVmXG4gICAgb3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICBjbGFzcz1cInQteWVhcnNcIlxuICAgIFtpdGVtU2l6ZV09XCJ5ZWFyV2lkdGhcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJ0LXllYXJzLXdyYXBwZXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaW5kZXggb2YgeWVhcnNcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQteWVhclwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXN0YXRlXT1cImdldFN0YXRlKGluZGV4KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0WWVhcihpbmRleClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBpbmRleCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPGRpdiBjbGFzcz1cInQtd2Vla1wiPlxuICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiB1bm9yZGVyZWRXZWVrRGF5cyQgfCB0dWlPcmRlcldlZWtEYXlzIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cInQtZGF5XCJcbiAgICA+XG4gICAgICAgIHt7IGRheSB9fVxuICAgIDwvZGl2PlxuPC9kaXY+XG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI21vbnRoc1Njcm9sbFJlZlxuICAgIGNsYXNzPVwidC1tb250aHNcIlxuICAgIChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cIm9uTW9udGhDaGFuZ2UoJGV2ZW50KVwiXG4+XG4gICAgPHNlY3Rpb25cbiAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzOyB0ZW1wbGF0ZUNhY2hlU2l6ZTogMTBcIlxuICAgICAgICBjbGFzcz1cInQtbW9udGgtd3JhcHBlclwiXG4gICAgPlxuICAgICAgICA8aDIgY2xhc3M9XCJ0LW1vbnRoXCI+e3sgbW9udGggfCB0dWlNb250aCB8IGFzeW5jIH19PC9oMj5cbiAgICAgICAgPHR1aS1tb2JpbGUtY2FsZW5kYXItc2hlZXRcbiAgICAgICAgICAgIGNsYXNzPVwidC1jYWxlbmRhclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyIHwgdHVpTWFwcGVyOiBkaXNhYmxlZEl0ZW1IYW5kbGVyTWFwcGVyIDogbWluIDogbWF4XCJcbiAgICAgICAgICAgIFttb250aF09XCJtb250aFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgKGRheUNsaWNrKT1cIm9uRGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgPC9zZWN0aW9uPlxuPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4iXX0=
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL21vYmlsZS1jYWxlbmRhci9tb2JpbGUtY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2NvbXBvbmVudHMvbW9iaWxlLWNhbGVuZGFyL21vYmlsZS1jYWxlbmRhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx5QkFBeUIsRUFDekIsZUFBZSxFQUNmLHdCQUF3QixHQUMzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0seURBQXlELENBQUM7QUFDL0YsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQ0gsY0FBYyxFQUNkLGFBQWEsRUFDYixZQUFZLEVBQ1osTUFBTSxFQUNOLFdBQVcsRUFDWCxRQUFRLEdBQ1gsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDekUs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Q2RrVmlydHVhbEZvck9mLFxuICAgIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQge0FzeW5jUGlwZSwgRE9DVU1FTlQsIE5nRm9yT2YsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7QWZ0ZXJWaWV3SW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgTmdab25lLFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7VHVpTW9iaWxlQ2FsZW5kYXJTaGVldH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL21vYmlsZS1jYWxlbmRhci1zaGVldCc7XG5pbXBvcnQge1R1aVJpcHBsZSwgVHVpVG91Y2hhYmxlfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tbW9iaWxlL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgICBNT05USFNfSU5fWUVBUixcbiAgICBUVUlfRklSU1RfREFZLFxuICAgIFRVSV9MQVNUX0RBWSxcbiAgICBUdWlEYXksXG4gICAgVHVpRGF5UmFuZ2UsXG4gICAgVHVpTW9udGgsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7dHVpVHlwZWRGcm9tRXZlbnQsIHR1aVpvbmVmcmVlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7VHVpTWFwcGVyUGlwZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9waXBlcy9tYXBwZXInO1xuaW1wb3J0IHtUVUlfSVNfRTJFLCBUVUlfSVNfSU9TfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXIsIFR1aU1hcHBlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge1R1aUJ1dHRvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHtUdWlMaW5rfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2xpbmsnO1xuaW1wb3J0IHtUdWlNb250aFBpcGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3BpcGVzL21vbnRoJztcbmltcG9ydCB7VHVpT3JkZXJXZWVrRGF5c1BpcGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3BpcGVzL29yZGVyLXdlZWstZGF5cyc7XG5pbXBvcnQge1xuICAgIFRVSV9BTklNQVRJT05TX1NQRUVELFxuICAgIFRVSV9DTE9TRV9XT1JELFxuICAgIFRVSV9DT01NT05fSUNPTlMsXG4gICAgVFVJX1NIT1JUX1dFRUtfREFZUyxcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7dHVpR2V0RHVyYXRpb259IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtcbiAgICBUVUlfQ0FOQ0VMX1dPUkQsXG4gICAgVFVJX0NIT09TRV9EQVlfT1JfUkFOR0VfVEVYVFMsXG4gICAgVFVJX0RPTkVfV09SRCxcbn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHt0dWlUb2dnbGVEYXl9IGZyb20gJ0B0YWlnYS11aS9raXQvdXRpbHMnO1xuaW1wb3J0IHR5cGUge01vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIEJlaGF2aW9yU3ViamVjdCxcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGVsYXksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgZmlsdGVyLFxuICAgIGlkZW50aXR5LFxuICAgIG1hcCxcbiAgICBtZXJnZU1hcCxcbiAgICByYWNlLFxuICAgIHNraXAsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2UsXG4gICAgdGFrZVVudGlsLFxuICAgIHRpbWVyLFxuICAgIHdpbmRvd1RvZ2dsZSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgUkFOR0UsXG4gICAgU0NST0xMX0RFQk9VTkNFX1RJTUUsXG4gICAgU1RBUlRJTkdfWUVBUixcbiAgICBZRUFSU19JTl9ST1csXG59IGZyb20gJy4vbW9iaWxlLWNhbGVuZGFyLmNvbnN0JztcbmltcG9ydCB7XG4gICAgVFVJX01PQklMRV9DQUxFTkRBUl9QUk9WSURFUlMsXG4gICAgVFVJX1ZBTFVFX1NUUkVBTSxcbn0gZnJvbSAnLi9tb2JpbGUtY2FsZW5kYXIucHJvdmlkZXJzJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1tb2JpbGUtY2FsZW5kYXInLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgVHVpQnV0dG9uLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIFR1aVJpcHBsZSxcbiAgICAgICAgVHVpTGluayxcbiAgICAgICAgVHVpVG91Y2hhYmxlLFxuICAgICAgICBDZGtGaXhlZFNpemVWaXJ0dWFsU2Nyb2xsLFxuICAgICAgICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXG4gICAgICAgIENka1ZpcnR1YWxGb3JPZixcbiAgICAgICAgVHVpT3JkZXJXZWVrRGF5c1BpcGUsXG4gICAgICAgIFR1aU1vYmlsZUNhbGVuZGFyU2hlZXQsXG4gICAgICAgIFR1aU1vbnRoUGlwZSxcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgTmdJZixcbiAgICAgICAgVHVpTWFwcGVyUGlwZSxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9tb2JpbGUtY2FsZW5kYXIudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbW9iaWxlLWNhbGVuZGFyLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFRVSV9NT0JJTEVfQ0FMRU5EQVJfUFJPVklERVJTLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5faW9zXSc6ICdpc0lPUycsXG4gICAgICAgICdbY2xhc3MuX2luaXRpYWxpemVkXSc6ICdpbml0aWFsaXplZCcsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTW9iaWxlQ2FsZW5kYXIgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKCd5ZWFyc1Njcm9sbFJlZicpXG4gICAgcHJpdmF0ZSByZWFkb25seSB5ZWFyc1Njcm9sbFJlZj86IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICAgIEBWaWV3Q2hpbGQoJ21vbnRoc1Njcm9sbFJlZicpXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb250aHNTY3JvbGxSZWY/OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgICAgIFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W10gfCBudWxsXG4gICAgPihudWxsKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9kYXkgPSBUdWlEYXkuY3VycmVudExvY2FsKCk7XG4gICAgcHJpdmF0ZSBhY3RpdmVZZWFyID0gMDtcbiAgICBwcml2YXRlIGFjdGl2ZU1vbnRoID0gMDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2MgPSBpbmplY3QoRE9DVU1FTlQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3BlZWQgPSBpbmplY3QoVFVJX0FOSU1BVElPTlNfU1BFRUQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNJT1MgPSBpbmplY3QoVFVJX0lTX0lPUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzRTJFID0gaW5qZWN0KFRVSV9JU19FMkUpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBpY29ucyA9IGluamVjdChUVUlfQ09NTU9OX0lDT05TKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xvc2VXb3JkJCA9IGluamVjdChUVUlfQ0xPU0VfV09SRCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbmNlbFdvcmQkID0gaW5qZWN0KFRVSV9DQU5DRUxfV09SRCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRvbmVXb3JkJCA9IGluamVjdChUVUlfRE9ORV9XT1JEKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdW5vcmRlcmVkV2Vla0RheXMkID0gaW5qZWN0KFRVSV9TSE9SVF9XRUVLX0RBWVMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjaG9vc2VEYXlPclJhbmdlVGV4dHMkID0gaW5qZWN0KFRVSV9DSE9PU0VfREFZX09SX1JBTkdFX1RFWFRTLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHllYXJzID0gQXJyYXkuZnJvbSh7bGVuZ3RoOiBSQU5HRX0sIChfLCBpKSA9PiBpICsgU1RBUlRJTkdfWUVBUik7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vbnRocyA9IEFycmF5LmZyb20oXG4gICAgICAgIHtsZW5ndGg6IFJBTkdFICogMTJ9LFxuICAgICAgICAoXywgaSkgPT5cbiAgICAgICAgICAgIG5ldyBUdWlNb250aChcbiAgICAgICAgICAgICAgICBNYXRoLmZsb29yKGkgLyBNT05USFNfSU5fWUVBUikgKyBTVEFSVElOR19ZRUFSLFxuICAgICAgICAgICAgICAgIGkgJSBNT05USFNfSU5fWUVBUixcbiAgICAgICAgICAgICksXG4gICAgKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNpbmdsZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtdWx0aSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluID0gVFVJX0ZJUlNUX0RBWTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heCA9IFRVSV9MQVNUX0RBWTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBUVUlfRkFMU0VfSEFORExFUjtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgICAgIFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W11cbiAgICA+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSB0aGlzLnZhbHVlJC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4gYT8udG9TdHJpbmcoKSA9PT0gYj8udG9TdHJpbmcoKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5qZWN0KFRVSV9WQUxVRV9TVFJFQU0pXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hY3RpdmVZZWFyID0gdGhpcy5pbml0aWFsWWVhcjtcbiAgICAgICAgdGhpcy5hY3RpdmVNb250aCA9IHRoaXMuaW5pdGlhbE1vbnRoO1xuXG4gICAgICAgIC8vIFZpcnR1YWwgc2Nyb2xsIGhhcyBub3QgeWV0IHJlbmRlcmVkIGl0ZW1zIGV2ZW4gaW4gbmdBZnRlclZpZXdJbml0XG4gICAgICAgIHRoaXMud2FpdFNjcm9sbGVkQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFllYXIoeWVhcjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZVllYXIgPT09IHllYXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlTW9udGggKz0gdGhpcy5nZXRNb250aE9mZnNldCh5ZWFyKTtcbiAgICAgICAgdGhpcy5hY3RpdmVZZWFyID0geWVhcjtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZVllYXIoJ3Ntb290aCcpO1xuXG4gICAgICAgIHRpbWVyKDApXG4gICAgICAgICAgICAucGlwZSh0dWlab25lZnJlZSh0aGlzLm5nWm9uZSksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNjcm9sbFRvQWN0aXZlTW9udGgoKSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwcm90ZWN0ZWQgc2V0IHZhbHVlKHZhbHVlOiBUdWlEYXkgfCBUdWlEYXlSYW5nZSB8IHJlYWRvbmx5IFR1aURheVtdIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnZhbHVlJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHZhbHVlKCk6IFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W10gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUkLnZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgeWVhcldpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvYy5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggLyBZRUFSU19JTl9ST1c7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQ2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Db25maXJtKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25EYXlDbGljayhkYXk6IFR1aURheSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zaW5nbGUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBkYXk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc011bHRpVmFsdWUodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0dWlUb2dnbGVEYXkodGhpcy52YWx1ZSwgZGF5KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlIGluc3RhbmNlb2YgVHVpRGF5KSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gVHVpRGF5UmFuZ2Uuc29ydCh0aGlzLnZhbHVlLCBkYXkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSAmJiAhdGhpcy52YWx1ZS5pc1NpbmdsZURheSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGRheTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZhbHVlIGluc3RhbmNlb2YgVHVpRGF5UmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBUdWlEYXlSYW5nZS5zb3J0KHRoaXMudmFsdWUuZnJvbSwgZGF5KTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGRheTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRTdGF0ZShpbmRleDogbnVtYmVyKTogJ2FjdGl2ZScgfCAnYWRqYWNlbnQnIHwgbnVsbCB7XG4gICAgICAgIGlmICh0aGlzLmlzWWVhckFjdGl2ZShpbmRleCkpIHtcbiAgICAgICAgICAgIHJldHVybiAnYWN0aXZlJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzWWVhckFjdGl2ZShpbmRleCAtIDEpIHx8IHRoaXMuaXNZZWFyQWN0aXZlKGluZGV4ICsgMSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnYWRqYWNlbnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uTW9udGhDaGFuZ2UobW9udGg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvLyBTa2lwcGluZyBpbml0aWFsIGNhbGxiYWNrIHdoZXJlIGluZGV4ID09PSAwXG4gICAgICAgIGlmICghbW9udGggfHwgdGhpcy5hY3RpdmVNb250aCA9PT0gbW9udGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlTW9udGggPSBtb250aDtcblxuICAgICAgICBjb25zdCBhY3RpdmVZZWFyID0gdGhpcy5tb250aFRvWWVhcihtb250aCk7XG5cbiAgICAgICAgaWYgKGFjdGl2ZVllYXIgPT09IHRoaXMuYWN0aXZlWWVhcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVZZWFyID0gYWN0aXZlWWVhcjtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZVllYXIoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYWJsZWRJdGVtSGFuZGxlck1hcHBlcjogVHVpTWFwcGVyPFxuICAgICAgICBbVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PiwgVHVpRGF5LCBUdWlEYXldLFxuICAgICAgICBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+XG4gICAgPiA9IChkaXNhYmxlZEl0ZW1IYW5kbGVyLCBtaW4sIG1heCkgPT4gKGl0ZW0pID0+XG4gICAgICAgIGl0ZW0uZGF5QmVmb3JlKG1pbikgfHxcbiAgICAgICAgKG1heCAhPT0gbnVsbCAmJiBpdGVtLmRheUFmdGVyKG1heCkpIHx8XG4gICAgICAgIGRpc2FibGVkSXRlbUhhbmRsZXIoaXRlbSk7XG5cbiAgICBwcml2YXRlIGdldCBpbml0aWFsWWVhcigpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZGF5LnllYXI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUueWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlPy5bMF0/LnllYXIgPz8gdGhpcy50b2RheS55ZWFyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUudG8ueWVhcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpbml0aWFsTW9udGgoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50b2RheS5tb250aCArICh0aGlzLnRvZGF5LnllYXIgLSBTVEFSVElOR19ZRUFSKSAqIE1PTlRIU19JTl9ZRUFSO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudmFsdWUgaW5zdGFuY2VvZiBUdWlEYXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLm1vbnRoICsgKHRoaXMudmFsdWUueWVhciAtIFNUQVJUSU5HX1lFQVIpICogTU9OVEhTX0lOX1lFQVI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISh0aGlzLnZhbHVlIGluc3RhbmNlb2YgVHVpRGF5UmFuZ2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICh0aGlzLnZhbHVlPy5bMF0/Lm1vbnRoID8/IHRoaXMudG9kYXkubW9udGgpICtcbiAgICAgICAgICAgICAgICAoKHRoaXMudmFsdWU/LlswXT8ueWVhciA/PyB0aGlzLnRvZGF5LnllYXIpIC0gU1RBUlRJTkdfWUVBUikgKlxuICAgICAgICAgICAgICAgICAgICBNT05USFNfSU5fWUVBUlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnZhbHVlLnRvLm1vbnRoICsgKHRoaXMudmFsdWUudG8ueWVhciAtIFNUQVJUSU5HX1lFQVIpICogTU9OVEhTX0lOX1lFQVJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTXVsdGlWYWx1ZShkYXk6IGFueSk6IGRheSBpcyByZWFkb25seSBUdWlEYXlbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiAhKGRheSBpbnN0YW5jZW9mIFR1aURheSkgJiYgIShkYXkgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSkgJiYgdGhpcy5tdWx0aTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFllYXJzVmlld3BvcnRTaXplKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXJzU2Nyb2xsUmVmPy5nZXRWaWV3cG9ydFNpemUoKSB8fCAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVmlld3BvcnREaW1lbnNpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMueWVhcnNTY3JvbGxSZWY/LmNoZWNrVmlld3BvcnRTaXplKCk7XG4gICAgICAgIHRoaXMubW9udGhzU2Nyb2xsUmVmPy5jaGVja1ZpZXdwb3J0U2l6ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbGF0ZUluaXQoKTogTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRZZWFyc1ZpZXdwb3J0U2l6ZSgpID4gMCA/IGlkZW50aXR5IDogZGVsYXkoMjAwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHdhaXRTY3JvbGxlZENoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVWaWV3cG9ydERpbWVuc2lvbigpO1xuXG4gICAgICAgIHRoaXMubW9udGhzU2Nyb2xsUmVmPy5zY3JvbGxlZEluZGV4Q2hhbmdlXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWxheSh0dWlHZXREdXJhdGlvbih0aGlzLnNwZWVkKSksXG4gICAgICAgICAgICAgICAgdGhpcy5sYXRlSW5pdCgpLFxuICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZpZXdwb3J0RGltZW5zaW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0WWVhclNjcm9sbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdE1vbnRoU2Nyb2xsKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZVllYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlTW9udGgoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdFllYXJTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHt5ZWFyc1Njcm9sbFJlZn0gPSB0aGlzO1xuXG4gICAgICAgIGlmICgheWVhcnNTY3JvbGxSZWYpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRvdWNoc3RhcnQkID0gdHVpVHlwZWRGcm9tRXZlbnQoXG4gICAgICAgICAgICB5ZWFyc1Njcm9sbFJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndG91Y2hzdGFydCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRvdWNoZW5kJCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgeWVhcnNTY3JvbGxSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ3RvdWNoZW5kJyxcbiAgICAgICAgICAgIHtwYXNzaXZlOiB0cnVlfSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgY2xpY2skID0gdHVpVHlwZWRGcm9tRXZlbnQoXG4gICAgICAgICAgICB5ZWFyc1Njcm9sbFJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAnY2xpY2snLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFJlZnJlc2ggYWN0aXZlWWVhclxuICAgICAgICB5ZWFyc1Njcm9sbFJlZlxuICAgICAgICAgICAgLmVsZW1lbnRTY3JvbGxlZCgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgc21vb3RoIHNjcm9sbCByZXN1bHRpbmcgZnJvbSBjbGljayBvbiB0aGUgZXhhY3QgeWVhclxuICAgICAgICAgICAgICAgIHdpbmRvd1RvZ2dsZSh0b3VjaHN0YXJ0JCwgKCkgPT4gY2xpY2skKSxcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoeCkgPT4geCksXG4gICAgICAgICAgICAgICAgLy8gRGVsYXkgaXMgcmVxdWlyZWQgdG8gcnVuIG1vbnRocyBzY3JvbGwgaW4gdGhlIG5leHQgZnJhbWUgdG8gcHJldmVudCBmbGlja2VyXG4gICAgICAgICAgICAgICAgZGVsYXkoMCksXG4gICAgICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5yb3VuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZWFyc1Njcm9sbFJlZi5tZWFzdXJlU2Nyb2xsT2Zmc2V0KCkgLyB0aGlzLnllYXJXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihZRUFSU19JTl9ST1cgLyAyKSArXG4gICAgICAgICAgICAgICAgICAgICAgICBTVEFSVElOR19ZRUFSLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChhY3RpdmVZZWFyKSA9PiBhY3RpdmVZZWFyICE9PSB0aGlzLmFjdGl2ZVllYXIpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoYWN0aXZlWWVhcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9udGggKz0gdGhpcy5nZXRNb250aE9mZnNldChhY3RpdmVZZWFyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVllYXIgPSBhY3RpdmVZZWFyO1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVNb250aCgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gU21vb3RoIHNjcm9sbCB0byBhY3RpdmVZZWFyIGFmdGVyIHNjcm9sbGluZyBpcyBkb25lXG4gICAgICAgIHRvdWNoc3RhcnQkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdG91Y2hlbmQkKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgcmFjZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHllYXJzU2Nyb2xsUmVmLmVsZW1lbnRTY3JvbGxlZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZXIoU0NST0xMX0RFQk9VTkNFX1RJTUUpLFxuICAgICAgICAgICAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoU0NST0xMX0RFQk9VTkNFX1RJTUUgKiAyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodG91Y2hzdGFydCQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2Nyb2xsVG9BY3RpdmVZZWFyKCdzbW9vdGgnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0TW9udGhTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHttb250aHNTY3JvbGxSZWZ9ID0gdGhpcztcblxuICAgICAgICBpZiAoIW1vbnRoc1Njcm9sbFJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG91Y2hzdGFydCQgPSB0dWlUeXBlZEZyb21FdmVudChcbiAgICAgICAgICAgIG1vbnRoc1Njcm9sbFJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAndG91Y2hzdGFydCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHRvdWNoZW5kJCA9IHR1aVR5cGVkRnJvbUV2ZW50KFxuICAgICAgICAgICAgbW9udGhzU2Nyb2xsUmVmLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0b3VjaGVuZCcsXG4gICAgICAgICAgICB7cGFzc2l2ZTogdHJ1ZX0sXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gU21vb3RoIHNjcm9sbCB0byB0aGUgY2xvc2VzdCBtb250aCBhZnRlciBzY3JvbGxpbmcgaXMgZG9uZVxuICAgICAgICB0b3VjaHN0YXJ0JFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRvdWNoZW5kJCksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgICAgICAgIHJhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBtb250aHNTY3JvbGxSZWYuZWxlbWVudFNjcm9sbGVkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lcihTQ1JPTExfREVCT1VOQ0VfVElNRSksXG4gICAgICAgICAgICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZShTQ1JPTExfREVCT1VOQ0VfVElNRSAqIDIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0b3VjaHN0YXJ0JCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zY3JvbGxUb0FjdGl2ZU1vbnRoKCdzbW9vdGgnKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY3JvbGxUb0FjdGl2ZVllYXIoYmVoYXZpb3I6IFNjcm9sbEJlaGF2aW9yID0gJ2F1dG8nKTogdm9pZCB7XG4gICAgICAgIHRoaXMueWVhcnNTY3JvbGxSZWY/LnNjcm9sbFRvSW5kZXgoXG4gICAgICAgICAgICBNYXRoLm1heCh0aGlzLmFjdGl2ZVllYXIgLSBTVEFSVElOR19ZRUFSIC0gMiwgMCksXG4gICAgICAgICAgICB0aGlzLmlzRTJFID8gJ2F1dG8nIDogYmVoYXZpb3IsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY3JvbGxUb0FjdGl2ZU1vbnRoKGJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvciA9ICdhdXRvJyk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vbnRoc1Njcm9sbFJlZj8uc2Nyb2xsVG9JbmRleChcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTW9udGgsXG4gICAgICAgICAgICB0aGlzLmlzRTJFID8gJ2F1dG8nIDogYmVoYXZpb3IsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1llYXJBY3RpdmUoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaW5kZXggPT09IHRoaXMuYWN0aXZlWWVhcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vbnRoVG9ZZWFyKG1vbnRoOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKChtb250aCArIDEpIC8gTU9OVEhTX0lOX1lFQVIpICsgU1RBUlRJTkdfWUVBUiAtIDE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNb250aE9mZnNldCh5ZWFyOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKHllYXIgLSB0aGlzLmFjdGl2ZVllYXIpICogTU9OVEhTX0lOX1lFQVI7XG4gICAgfVxufVxuIiwiPGhlYWRlclxuICAgICpuZ0lmPVwiY2hvb3NlRGF5T3JSYW5nZVRleHRzJCB8IGFzeW5jIGFzIHRleHRzXCJcbiAgICBjbGFzcz1cInQtaGVhZGVyXCJcbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIGFwcGVhcmFuY2U9XCJcIlxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLW1vYmlsZS1jYWxlbmRhcl9fY2FuY2VsXCJcbiAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICB0dWlSaXBwbGVcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidC1jbG9zZVwiXG4gICAgICAgIFtpY29uU3RhcnRdPVwiaWNvbnMuY2xvc2VcIlxuICAgICAgICBbc3R5bGUuYm9yZGVyLXJhZGl1cy4lXT1cIjEwMFwiXG4gICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIlxuICAgID5cbiAgICAgICAge3sgY2xvc2VXb3JkJCB8IGFzeW5jIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICB0dWlMaW5rXG4gICAgICAgIHR1aVRvdWNoYWJsZT1cIm9wYWNpdHlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJ0LWxpbmsgdC1saW5rX2Nsb3NlXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiXG4gICAgPlxuICAgICAgICB7eyBjYW5jZWxXb3JkJCB8IGFzeW5jIH19XG4gICAgPC9idXR0b24+XG4gICAgPGgyXG4gICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktbW9iaWxlLWNhbGVuZGFyX19sYWJlbFwiXG4gICAgICAgIGNsYXNzPVwidC1sYWJlbFwiXG4gICAgPlxuICAgICAgICB7eyBzaW5nbGUgPyB0ZXh0c1swXSA6IG11bHRpID8gdGV4dHNbMl0gOiB0ZXh0c1sxXSB9fVxuICAgIDwvaDI+XG4gICAgPGJ1dHRvblxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLW1vYmlsZS1jYWxlbmRhcl9fY29uZmlybVwiXG4gICAgICAgIHR1aUxpbmtcbiAgICAgICAgdHVpVG91Y2hhYmxlPVwib3BhY2l0eVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cInQtbGlua1wiXG4gICAgICAgIChjbGljayk9XCJvbkNvbmZpcm0oKVwiXG4gICAgPlxuICAgICAgICB7eyBkb25lV29yZCQgfCBhc3luYyB9fVxuICAgIDwvYnV0dG9uPlxuPC9oZWFkZXI+XG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI3llYXJzU2Nyb2xsUmVmXG4gICAgb3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICBjbGFzcz1cInQteWVhcnNcIlxuICAgIFtpdGVtU2l6ZV09XCJ5ZWFyV2lkdGhcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJ0LXllYXJzLXdyYXBwZXJcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaW5kZXggb2YgeWVhcnNcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQteWVhclwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXN0YXRlXT1cImdldFN0YXRlKGluZGV4KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2V0WWVhcihpbmRleClcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBpbmRleCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuPGRpdiBjbGFzcz1cInQtd2Vla1wiPlxuICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiB1bm9yZGVyZWRXZWVrRGF5cyQgfCB0dWlPcmRlcldlZWtEYXlzIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cInQtZGF5XCJcbiAgICA+XG4gICAgICAgIHt7IGRheSB9fVxuICAgIDwvZGl2PlxuPC9kaXY+XG48Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgI21vbnRoc1Njcm9sbFJlZlxuICAgIGNsYXNzPVwidC1tb250aHNcIlxuICAgIChzY3JvbGxlZEluZGV4Q2hhbmdlKT1cIm9uTW9udGhDaGFuZ2UoJGV2ZW50KVwiXG4+XG4gICAgPHNlY3Rpb25cbiAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgbW9udGggb2YgbW9udGhzOyB0ZW1wbGF0ZUNhY2hlU2l6ZTogMTBcIlxuICAgICAgICBjbGFzcz1cInQtbW9udGgtd3JhcHBlclwiXG4gICAgPlxuICAgICAgICA8aDIgY2xhc3M9XCJ0LW1vbnRoXCI+e3sgbW9udGggfCB0dWlNb250aCB8IGFzeW5jIH19PC9oMj5cbiAgICAgICAgPHR1aS1tb2JpbGUtY2FsZW5kYXItc2hlZXRcbiAgICAgICAgICAgIGNsYXNzPVwidC1jYWxlbmRhclwiXG4gICAgICAgICAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyIHwgdHVpTWFwcGVyOiBkaXNhYmxlZEl0ZW1IYW5kbGVyTWFwcGVyIDogbWluIDogbWF4XCJcbiAgICAgICAgICAgIFttb250aF09XCJtb250aFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgKGRheUNsaWNrKT1cIm9uRGF5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgPC9zZWN0aW9uPlxuPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component,
|
|
1
|
+
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
|
2
2
|
import { TuiMobileCalendar } from '@taiga-ui/addon-mobile/components/mobile-calendar';
|
|
3
3
|
import { TuiKeyboardService } from '@taiga-ui/addon-mobile/services';
|
|
4
4
|
import { TuiControl } from '@taiga-ui/cdk/classes';
|
|
@@ -65,23 +65,20 @@ class TuiMobileCalendarDropdown {
|
|
|
65
65
|
return !!this.dropdown?.el.closest(selector);
|
|
66
66
|
}
|
|
67
67
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMobileCalendarDropdown, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
68
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiMobileCalendarDropdown, isStandalone: true, selector: "tui-mobile-calendar-dropdown", host: { properties: { "@tuiSlideInTop": "
|
|
68
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiMobileCalendarDropdown, isStandalone: true, selector: "tui-mobile-calendar-dropdown", host: { properties: { "@tuiSlideInTop": "animation", "@tuiFadeIn": "animation" } }, hostDirectives: [{ directive: i1.TuiActiveZone }], ngImport: i0, template: "<tui-mobile-calendar\n [disabledItemHandler]=\"disabledItemHandler\"\n [max]=\"max\"\n [min]=\"min\"\n [multi]=\"multi\"\n [single]=\"single\"\n (cancel)=\"close()\"\n (confirm)=\"confirm($event)\"\n/>\n", styles: [":host{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--tui-background-elevation-1);box-shadow:0 10rem var(--tui-background-elevation-1),0 -90vh 1rem 2rem var(--tui-service-backdrop)}\n"], dependencies: [{ kind: "component", type: TuiMobileCalendar, selector: "tui-mobile-calendar", inputs: ["single", "multi", "min", "max", "disabledItemHandler", "value"], outputs: ["cancel", "confirm", "valueChange"] }], animations: [tuiSlideInTop, tuiFadeIn], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
69
69
|
}
|
|
70
70
|
export { TuiMobileCalendarDropdown };
|
|
71
71
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMobileCalendarDropdown, decorators: [{
|
|
72
72
|
type: Component,
|
|
73
|
-
args: [{ standalone: true, selector: 'tui-mobile-calendar-dropdown', imports: [TuiMobileCalendar], changeDetection: ChangeDetectionStrategy.OnPush, animations: [tuiSlideInTop, tuiFadeIn], hostDirectives: [TuiActiveZone],
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
type: HostBinding,
|
|
79
|
-
args: ['@tuiFadeIn']
|
|
80
|
-
}] } });
|
|
73
|
+
args: [{ standalone: true, selector: 'tui-mobile-calendar-dropdown', imports: [TuiMobileCalendar], changeDetection: ChangeDetectionStrategy.OnPush, animations: [tuiSlideInTop, tuiFadeIn], hostDirectives: [TuiActiveZone], host: {
|
|
74
|
+
'[@tuiSlideInTop]': 'animation',
|
|
75
|
+
'[@tuiFadeIn]': 'animation',
|
|
76
|
+
}, template: "<tui-mobile-calendar\n [disabledItemHandler]=\"disabledItemHandler\"\n [max]=\"max\"\n [min]=\"min\"\n [multi]=\"multi\"\n [single]=\"single\"\n (cancel)=\"close()\"\n (confirm)=\"confirm($event)\"\n/>\n", styles: [":host{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--tui-background-elevation-1);box-shadow:0 10rem var(--tui-background-elevation-1),0 -90vh 1rem 2rem var(--tui-service-backdrop)}\n"] }]
|
|
77
|
+
}], ctorParameters: function () { return []; } });
|
|
81
78
|
export function tuiProvideMobileCalendar() {
|
|
82
79
|
return {
|
|
83
80
|
provide: TUI_MOBILE_CALENDAR,
|
|
84
81
|
useValue: TuiMobileCalendarDropdown,
|
|
85
82
|
};
|
|
86
83
|
}
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWNhbGVuZGFyLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL21vYmlsZS1jYWxlbmRhci1kcm9wZG93bi9tb2JpbGUtY2FsZW5kYXItZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2NvbXBvbmVudHMvbW9iaWxlLWNhbGVuZGFyLWRyb3Bkb3duL21vYmlsZS1jYWxlbmRhci1kcm9wZG93bi50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtREFBbUQsQ0FBQztBQUNwRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDakQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsT0FBTyxFQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFFbkUsT0FBTyxFQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDbEUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1B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QUM5QjtRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sRUFBRSxDQUFDLFFBQWdCO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRCxDQUFDOytHQTNFUSx5QkFBeUI7bUdBQXpCLHlCQUF5Qix5T0NyQ3RDLGtPQVNBLHFRRHFCYyxpQkFBaUIsb0pBSWYsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDOztTQUc3Qix5QkFBeUI7NEZBQXpCLHlCQUF5QjtrQkFWckMsU0FBUztpQ0FDTSxJQUFJLFlBQ04sOEJBQThCLFdBQy9CLENBQUMsaUJBQWlCLENBQUMsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsa0JBQ3RCLENBQUMsYUFBYSxDQUFDOzBFQVlaLFNBQVM7c0JBRjNCLFdBQVc7dUJBQUMsZ0JBQWdCOztzQkFDNUIsV0FBVzt1QkFBQyxZQUFZOztBQXFFN0IsTUFBTSxVQUFVLHdCQUF3QjtJQUNwQyxPQUFPO1FBQ0gsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixRQUFRLEVBQUUseUJBQXlCO0tBQ3RDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1ZhbHVlUHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHVpTW9iaWxlQ2FsZW5kYXJ9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1tb2JpbGUvY29tcG9uZW50cy9tb2JpbGUtY2FsZW5kYXInO1xuaW1wb3J0IHtUdWlLZXlib2FyZFNlcnZpY2V9IGZyb20gJ0B0YWlnYS11aS9hZGRvbi1tb2JpbGUvc2VydmljZXMnO1xuaW1wb3J0IHtUdWlDb250cm9sfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NsYXNzZXMnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUge1R1aURheX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHtUVUlfRklSU1RfREFZLCBUVUlfTEFTVF9EQVl9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7VHVpQWN0aXZlWm9uZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL2FjdGl2ZS16b25lJztcbmltcG9ydCB0eXBlIHtUdWlCb29sZWFuSGFuZGxlcn0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5pbXBvcnQge3R1aUZhZGVJbiwgdHVpU2xpZGVJblRvcH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1R1aURyb3Bkb3duRGlyZWN0aXZlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duJztcbmltcG9ydCB7VFVJX0FOSU1BVElPTlNfU1BFRUR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQge3R1aUdldER1cmF0aW9ufSBmcm9tICdAdGFpZ2EtdWkvY29yZS91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7VFVJX0RBWV9DQVBTX01BUFBFUn0gZnJvbSAnQHRhaWdhLXVpL2tpdC9jb21wb25lbnRzL2NhbGVuZGFyLXJhbmdlJztcbmltcG9ydCB7VFVJX01PQklMRV9DQUxFTkRBUn0gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHtQT0xZTU9SUEhFVVNfQ09OVEVYVH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQgdHlwZSB7T2JzZXJ2ZXJ9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFR1aU1vYmlsZUNhbGVuZGFyRGF0YSB7XG4gICAgZGlzYWJsZWRJdGVtSGFuZGxlcj86IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT47XG4gICAgbWF4PzogVHVpRGF5IHwgbnVsbDtcbiAgICBtaW4/OiBUdWlEYXkgfCBudWxsO1xuICAgIG11bHRpPzogYm9vbGVhbjtcbiAgICBzaW5nbGU/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLW1vYmlsZS1jYWxlbmRhci1kcm9wZG93bicsXG4gICAgaW1wb3J0czogW1R1aU1vYmlsZUNhbGVuZGFyXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbW9iaWxlLWNhbGVuZGFyLWRyb3Bkb3duLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21vYmlsZS1jYWxlbmRhci1kcm9wZG93bi5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgYW5pbWF0aW9uczogW3R1aVNsaWRlSW5Ub3AsIHR1aUZhZGVJbl0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtUdWlBY3RpdmVab25lXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTW9iaWxlQ2FsZW5kYXJEcm9wZG93biB7XG4gICAgLy8gVE9ETzogUmV3b3JrIHRvIHVzZSBUdWlEcm9wZG93bk9wZW5EaXJlY3RpdmUgc28gdGhlIGZvY3VzIHJldHVybnMgdG8gdGhlIGZpZWxkIG9uIGNsb3NpbmdcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRyb3Bkb3duID0gaW5qZWN0KFR1aURyb3Bkb3duRGlyZWN0aXZlLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGtleWJvYXJkID0gaW5qZWN0KFR1aUtleWJvYXJkU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0ID0gaW5qZWN0KFBPTFlNT1JQSEVVU19DT05URVhULCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9ic2VydmVyPzogT2JzZXJ2ZXI8YW55PiA9IHRoaXMuY29udGV4dD8uJGltcGxpY2l0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0YTogVHVpTW9iaWxlQ2FsZW5kYXJEYXRhID0gdGhpcy5jb250ZXh0Py5kYXRhIHx8IHt9O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdAdHVpU2xpZGVJblRvcCcpXG4gICAgQEhvc3RCaW5kaW5nKCdAdHVpRmFkZUluJylcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYW5pbWF0aW9uID0ge1xuICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgc3RhcnQ6ICcxMDB2aCcsXG4gICAgICAgICAgICBkdXJhdGlvbjogdHVpR2V0RHVyYXRpb24oaW5qZWN0KFRVSV9BTklNQVRJT05TX1NQRUVEKSksXG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIFRPRE86IFJlZmFjdG9yIHRvIHByb3BlciBEYXRlLCBEYXRlTXVsdGkgYW5kIERhdGVSYW5nZSBjb21wb25lbnRzIGFmdGVyIHRoZXkgYXJlIGFkZGVkIHRvIGtpdFxuICAgIHByb3RlY3RlZCByZWFkb25seSBjb250cm9sOiBhbnkgPSBpbmplY3QoVHVpQ29udHJvbCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJhbmdlID0gdGhpcy5pcygndHVpLWlucHV0LWRhdGUtcmFuZ2UnKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbXVsdGkgPSB0aGlzLmRhdGEubXVsdGkgfHwgdGhpcy5pcygndHVpLWlucHV0LWRhdGVbbXVsdGlwbGVdJyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNpbmdsZSA9XG4gICAgICAgIHRoaXMuZGF0YS5zaW5nbGUgfHwgdGhpcy5pcygndHVpLWlucHV0LWRhdGU6bm90KFttdWx0aXBsZV0pJyk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWluID1cbiAgICAgICAgdGhpcy5kYXRhLm1pbiB8fFxuICAgICAgICAodGhpcy5yYW5nZVxuICAgICAgICAgICAgPyBUVUlfREFZX0NBUFNfTUFQUEVSKFxuICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9sLm1pbixcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC5tYXhMZW5ndGgsXG4gICAgICAgICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMuY29udHJvbD8ubWluKSB8fFxuICAgICAgICBUVUlfRklSU1RfREFZO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1heCA9XG4gICAgICAgIHRoaXMuZGF0YS5tYXggfHxcbiAgICAgICAgKHRoaXMucmFuZ2VcbiAgICAgICAgICAgID8gVFVJX0RBWV9DQVBTX01BUFBFUihcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC5tYXgsXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wubWF4TGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogdGhpcy5jb250cm9sPy5tYXgpIHx8XG4gICAgICAgIFRVSV9MQVNUX0RBWTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBkaXNhYmxlZEl0ZW1IYW5kbGVyID1cbiAgICAgICAgdGhpcy5kYXRhLmRpc2FibGVkSXRlbUhhbmRsZXIgfHxcbiAgICAgICAgdGhpcy5jb250cm9sPy5kaXNhYmxlZEl0ZW1IYW5kbGVyIHx8XG4gICAgICAgIFRVSV9GQUxTRV9IQU5ETEVSO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmQuaGlkZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcm9wZG93bj8udG9nZ2xlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlcj8uY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5rZXlib2FyZC5zaG93KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbmZpcm0odmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub2JzZXJ2ZXI/Lm5leHQodmFsdWUpO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpcyhzZWxlY3Rvcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuZHJvcGRvd24/LmVsLmNsb3Nlc3Qoc2VsZWN0b3IpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aVByb3ZpZGVNb2JpbGVDYWxlbmRhcigpOiBWYWx1ZVByb3ZpZGVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBUVUlfTU9CSUxFX0NBTEVOREFSLFxuICAgICAgICB1c2VWYWx1ZTogVHVpTW9iaWxlQ2FsZW5kYXJEcm9wZG93bixcbiAgICB9O1xufVxuIiwiPHR1aS1tb2JpbGUtY2FsZW5kYXJcbiAgICBbZGlzYWJsZWRJdGVtSGFuZGxlcl09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyXCJcbiAgICBbbWF4XT1cIm1heFwiXG4gICAgW21pbl09XCJtaW5cIlxuICAgIFttdWx0aV09XCJtdWx0aVwiXG4gICAgW3NpbmdsZV09XCJzaW5nbGVcIlxuICAgIChjYW5jZWwpPVwiY2xvc2UoKVwiXG4gICAgKGNvbmZpcm0pPVwiY29uZmlybSgkZXZlbnQpXCJcbi8+XG4iXX0=
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLWNhbGVuZGFyLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLW1vYmlsZS9jb21wb25lbnRzL21vYmlsZS1jYWxlbmRhci1kcm9wZG93bi9tb2JpbGUtY2FsZW5kYXItZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tbW9iaWxlL2NvbXBvbmVudHMvbW9iaWxlLWNhbGVuZGFyLWRyb3Bkb3duL21vYmlsZS1jYWxlbmRhci1kcm9wZG93bi50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQUMsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUVuRSxPQUFPLEVBQUMsU0FBUyxFQUFFLGFBQWEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSx5Q0FBeUMs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SUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTyxFQUFFLENBQUMsUUFBZ0I7UUFDdkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7K0dBekVRLHlCQUF5QjttR0FBekIseUJBQXlCLCtOQ3pDdEMsa09BU0EscVFEcUJjLGlCQUFpQiw0S0FJZixDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUM7O1NBTzdCLHlCQUF5Qjs0RkFBekIseUJBQXlCO2tCQWRyQyxTQUFTO2lDQUNNLElBQUksWUFDTiw4QkFBOEIsV0FDL0IsQ0FBQyxpQkFBaUIsQ0FBQyxtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxrQkFDdEIsQ0FBQyxhQUFhLENBQUMsUUFDekI7d0JBQ0Ysa0JBQWtCLEVBQUUsV0FBVzt3QkFDL0IsY0FBYyxFQUFFLFdBQVc7cUJBQzlCOztBQThFTCxNQUFNLFVBQVUsd0JBQXdCO0lBQ3BDLE9BQU87UUFDSCxPQUFPLEVBQUUsbUJBQW1CO1FBQzVCLFFBQVEsRUFBRSx5QkFBeUI7S0FDdEMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7VmFsdWVQcm92aWRlcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1R1aU1vYmlsZUNhbGVuZGFyfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tbW9iaWxlL2NvbXBvbmVudHMvbW9iaWxlLWNhbGVuZGFyJztcbmltcG9ydCB7VHVpS2V5Ym9hcmRTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tbW9iaWxlL3NlcnZpY2VzJztcbmltcG9ydCB7VHVpQ29udHJvbH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jbGFzc2VzJztcbmltcG9ydCB7VFVJX0ZBTFNFX0hBTkRMRVJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB0eXBlIHtUdWlEYXl9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGF0ZS10aW1lJztcbmltcG9ydCB7VFVJX0ZJUlNUX0RBWSwgVFVJX0xBU1RfREFZfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge1R1aUFjdGl2ZVpvbmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9hY3RpdmUtem9uZSc7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHt0dWlGYWRlSW4sIHR1aVNsaWRlSW5Ub3B9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtUdWlEcm9wZG93bkRpcmVjdGl2ZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bic7XG5pbXBvcnQge1RVSV9BTklNQVRJT05TX1NQRUVEfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHt0dWlHZXREdXJhdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1RVSV9EQVlfQ0FQU19NQVBQRVJ9IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9jYWxlbmRhci1yYW5nZSc7XG5pbXBvcnQge1RVSV9NT0JJTEVfQ0FMRU5EQVJ9IGZyb20gJ0B0YWlnYS11aS9raXQvdG9rZW5zJztcbmltcG9ydCB7UE9MWU1PUlBIRVVTX0NPTlRFWFR9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHR5cGUge09ic2VydmVyfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBUdWlNb2JpbGVDYWxlbmRhckRhdGEge1xuICAgIGRpc2FibGVkSXRlbUhhbmRsZXI/OiBUdWlCb29sZWFuSGFuZGxlcjxUdWlEYXk+O1xuICAgIG1heD86IFR1aURheSB8IG51bGw7XG4gICAgbWluPzogVHVpRGF5IHwgbnVsbDtcbiAgICBtdWx0aT86IGJvb2xlYW47XG4gICAgc2luZ2xlPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1tb2JpbGUtY2FsZW5kYXItZHJvcGRvd24nLFxuICAgIGltcG9ydHM6IFtUdWlNb2JpbGVDYWxlbmRhcl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL21vYmlsZS1jYWxlbmRhci1kcm9wZG93bi50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tb2JpbGUtY2FsZW5kYXItZHJvcGRvd24uc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGFuaW1hdGlvbnM6IFt0dWlTbGlkZUluVG9wLCB0dWlGYWRlSW5dLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpQWN0aXZlWm9uZV0sXG4gICAgaG9zdDoge1xuICAgICAgICAnW0B0dWlTbGlkZUluVG9wXSc6ICdhbmltYXRpb24nLFxuICAgICAgICAnW0B0dWlGYWRlSW5dJzogJ2FuaW1hdGlvbicsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpTW9iaWxlQ2FsZW5kYXJEcm9wZG93biB7XG4gICAgLy8gVE9ETzogUmV3b3JrIHRvIHVzZSBUdWlEcm9wZG93bk9wZW5EaXJlY3RpdmUgc28gdGhlIGZvY3VzIHJldHVybnMgdG8gdGhlIGZpZWxkIG9uIGNsb3NpbmdcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRyb3Bkb3duID0gaW5qZWN0KFR1aURyb3Bkb3duRGlyZWN0aXZlLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGtleWJvYXJkID0gaW5qZWN0KFR1aUtleWJvYXJkU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0ID0gaW5qZWN0KFBPTFlNT1JQSEVVU19DT05URVhULCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9ic2VydmVyPzogT2JzZXJ2ZXI8YW55PiA9IHRoaXMuY29udGV4dD8uJGltcGxpY2l0O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0YTogVHVpTW9iaWxlQ2FsZW5kYXJEYXRhID0gdGhpcy5jb250ZXh0Py5kYXRhIHx8IHt9O1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFuaW1hdGlvbiA9IHtcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIHN0YXJ0OiAnMTAwdmgnLFxuICAgICAgICAgICAgZHVyYXRpb246IHR1aUdldER1cmF0aW9uKGluamVjdChUVUlfQU5JTUFUSU9OU19TUEVFRCkpLFxuICAgICAgICB9LFxuICAgIH07XG5cbiAgICAvLyBUT0RPOiBSZWZhY3RvciB0byBwcm9wZXIgRGF0ZSwgRGF0ZU11bHRpIGFuZCBEYXRlUmFuZ2UgY29tcG9uZW50cyBhZnRlciB0aGV5IGFyZSBhZGRlZCB0byBraXRcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udHJvbDogYW55ID0gaW5qZWN0KFR1aUNvbnRyb2wsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSByYW5nZSA9IHRoaXMuaXMoJ3R1aS1pbnB1dC1kYXRlLXJhbmdlJyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG11bHRpID0gdGhpcy5kYXRhLm11bHRpIHx8IHRoaXMuaXMoJ3R1aS1pbnB1dC1kYXRlW211bHRpcGxlXScpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzaW5nbGUgPVxuICAgICAgICB0aGlzLmRhdGEuc2luZ2xlIHx8IHRoaXMuaXMoJ3R1aS1pbnB1dC1kYXRlOm5vdChbbXVsdGlwbGVdKScpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1pbiA9XG4gICAgICAgIHRoaXMuZGF0YS5taW4gfHxcbiAgICAgICAgKHRoaXMucmFuZ2VcbiAgICAgICAgICAgID8gVFVJX0RBWV9DQVBTX01BUFBFUihcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC5taW4sXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wubWF4TGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiB0aGlzLmNvbnRyb2w/Lm1pbikgfHxcbiAgICAgICAgVFVJX0ZJUlNUX0RBWTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBtYXggPVxuICAgICAgICB0aGlzLmRhdGEubWF4IHx8XG4gICAgICAgICh0aGlzLnJhbmdlXG4gICAgICAgICAgICA/IFRVSV9EQVlfQ0FQU19NQVBQRVIoXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wubWF4LFxuICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9sLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgdGhpcy5jb250cm9sLm1heExlbmd0aCxcbiAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHRoaXMuY29udHJvbD8ubWF4KSB8fFxuICAgICAgICBUVUlfTEFTVF9EQVk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzYWJsZWRJdGVtSGFuZGxlciA9XG4gICAgICAgIHRoaXMuZGF0YS5kaXNhYmxlZEl0ZW1IYW5kbGVyIHx8XG4gICAgICAgIHRoaXMuY29udHJvbD8uZGlzYWJsZWRJdGVtSGFuZGxlciB8fFxuICAgICAgICBUVUlfRkFMU0VfSEFORExFUjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmtleWJvYXJkLmhpZGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZHJvcGRvd24/LnRvZ2dsZShmYWxzZSk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXI/LmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMua2V5Ym9hcmQuc2hvdygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb25maXJtKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9ic2VydmVyPy5uZXh0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXMoc2VsZWN0b3I6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmRyb3Bkb3duPy5lbC5jbG9zZXN0KHNlbGVjdG9yKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0dWlQcm92aWRlTW9iaWxlQ2FsZW5kYXIoKTogVmFsdWVQcm92aWRlciB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvdmlkZTogVFVJX01PQklMRV9DQUxFTkRBUixcbiAgICAgICAgdXNlVmFsdWU6IFR1aU1vYmlsZUNhbGVuZGFyRHJvcGRvd24sXG4gICAgfTtcbn1cbiIsIjx0dWktbW9iaWxlLWNhbGVuZGFyXG4gICAgW2Rpc2FibGVkSXRlbUhhbmRsZXJdPVwiZGlzYWJsZWRJdGVtSGFuZGxlclwiXG4gICAgW21heF09XCJtYXhcIlxuICAgIFttaW5dPVwibWluXCJcbiAgICBbbXVsdGldPVwibXVsdGlcIlxuICAgIFtzaW5nbGVdPVwic2luZ2xlXCJcbiAgICAoY2FuY2VsKT1cImNsb3NlKClcIlxuICAgIChjb25maXJtKT1cImNvbmZpcm0oJGV2ZW50KVwiXG4vPlxuIl19
|