@fundamental-ngx/core 0.33.5-rc.2 → 0.33.5-rc.22
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/action-bar/package.json +1 -1
- package/action-sheet/package.json +1 -1
- package/alert/package.json +1 -1
- package/avatar/package.json +1 -1
- package/avatar-group/package.json +1 -1
- package/bar/package.json +1 -1
- package/breadcrumb/package.json +1 -1
- package/busy-indicator/package.json +1 -1
- package/button/package.json +1 -1
- package/calendar/calendar-header/calendar-header.component.d.ts +5 -1
- package/calendar/calendar.component.d.ts +28 -8
- package/calendar/esm2020/calendar-header/calendar-header.component.mjs +7 -3
- package/calendar/esm2020/calendar.component.mjs +35 -10
- package/calendar/esm2020/public_api.mjs +2 -1
- package/calendar/esm2020/types.mjs +1 -1
- package/calendar/fesm2015/fundamental-ngx-core-calendar.mjs +37 -11
- package/calendar/fesm2015/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/calendar/fesm2020/fundamental-ngx-core-calendar.mjs +40 -11
- package/calendar/fesm2020/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/calendar/package.json +1 -1
- package/calendar/public_api.d.ts +1 -0
- package/calendar/types.d.ts +2 -0
- package/card/package.json +1 -1
- package/carousel/package.json +1 -1
- package/checkbox/esm2020/checkbox/checkbox.component.mjs +2 -2
- package/checkbox/fesm2015/fundamental-ngx-core-checkbox.mjs +2 -2
- package/checkbox/fesm2020/fundamental-ngx-core-checkbox.mjs +2 -2
- package/checkbox/package.json +1 -1
- package/combobox/package.json +1 -1
- package/date-picker/date-picker.component.d.ts +10 -1
- package/date-picker/esm2020/date-picker.component.mjs +8 -4
- package/date-picker/fesm2015/fundamental-ngx-core-date-picker.mjs +7 -3
- package/date-picker/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/date-picker/fesm2020/fundamental-ngx-core-date-picker.mjs +7 -3
- package/date-picker/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/date-picker/package.json +1 -1
- package/datetime/package.json +1 -1
- package/datetime-picker/esm2020/datetime-picker.component.mjs +3 -3
- package/datetime-picker/fesm2015/fundamental-ngx-core-datetime-picker.mjs +2 -2
- package/datetime-picker/fesm2015/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/datetime-picker/fesm2020/fundamental-ngx-core-datetime-picker.mjs +2 -2
- package/datetime-picker/fesm2020/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/datetime-picker/package.json +1 -1
- package/dialog/package.json +1 -1
- package/dynamic-page/package.json +1 -1
- package/dynamic-side-content/package.json +1 -1
- package/esm2020/calendar/calendar-header/calendar-header.component.mjs +7 -3
- package/esm2020/calendar/calendar.component.mjs +35 -10
- package/esm2020/calendar/public_api.mjs +2 -1
- package/esm2020/calendar/types.mjs +1 -1
- package/esm2020/checkbox/checkbox/checkbox.component.mjs +2 -2
- package/esm2020/date-picker/date-picker.component.mjs +8 -4
- package/esm2020/datetime-picker/datetime-picker.component.mjs +3 -3
- package/esm2020/grid-list/components/grid-list/grid-list-base.component.mjs +10 -0
- package/esm2020/grid-list/components/grid-list/grid-list.component.mjs +70 -16
- package/esm2020/grid-list/components/grid-list-item/grid-list-item.component.mjs +21 -15
- package/esm2020/grid-list/models/grid-list-selection.models.mjs +6 -0
- package/esm2020/grid-list/public_api.mjs +2 -2
- package/esm2020/menu/menu-item/menu-item.component.mjs +1 -3
- package/esm2020/menu/menu.component.mjs +3 -3
- package/esm2020/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +8 -5
- package/esm2020/multi-input/multi-input.component.mjs +52 -40
- package/esm2020/multi-input/multi-input.interface.mjs +1 -1
- package/esm2020/time/time-column/time-column.component.mjs +51 -25
- package/esm2020/time/time.component.mjs +15 -4
- package/esm2020/time-picker/time-picker.component.mjs +1 -1
- package/facets/package.json +1 -1
- package/feed-input/package.json +1 -1
- package/feed-list-item/package.json +1 -1
- package/fesm2015/fundamental-ngx-core-calendar.mjs +37 -11
- package/fesm2015/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-checkbox.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-date-picker.mjs +7 -3
- package/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-datetime-picker.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-grid-list.mjs +98 -86
- package/fesm2015/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-menu.mjs +2 -4
- package/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-input.mjs +59 -43
- package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-time-picker.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-time.mjs +64 -27
- package/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-calendar.mjs +40 -11
- package/fesm2020/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-checkbox.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-date-picker.mjs +7 -3
- package/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-datetime-picker.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-grid-list.mjs +98 -86
- package/fesm2020/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-menu.mjs +2 -4
- package/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-input.mjs +58 -43
- package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-time-picker.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-time.mjs +64 -27
- package/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
- package/file-uploader/package.json +1 -1
- package/fixed-card-layout/package.json +1 -1
- package/flexible-column-layout/package.json +1 -1
- package/form/package.json +1 -1
- package/formatted-text/package.json +1 -1
- package/grid-list/components/grid-list/grid-list-base.component.d.ts +11 -0
- package/grid-list/components/grid-list/grid-list.component.d.ts +14 -5
- package/grid-list/components/grid-list-item/grid-list-item.component.d.ts +7 -5
- package/grid-list/esm2020/components/grid-list/grid-list-base.component.mjs +10 -0
- package/grid-list/esm2020/components/grid-list/grid-list.component.mjs +70 -16
- package/grid-list/esm2020/components/grid-list-item/grid-list-item.component.mjs +21 -15
- package/grid-list/esm2020/models/grid-list-selection.models.mjs +6 -0
- package/grid-list/esm2020/public_api.mjs +2 -2
- package/grid-list/fesm2015/fundamental-ngx-core-grid-list.mjs +98 -86
- package/grid-list/fesm2015/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/grid-list/fesm2020/fundamental-ngx-core-grid-list.mjs +98 -86
- package/grid-list/fesm2020/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/grid-list/models/grid-list-selection.models.d.ts +15 -0
- package/grid-list/package.json +1 -1
- package/grid-list/public_api.d.ts +1 -1
- package/icon/package.json +1 -1
- package/illustrated-message/package.json +1 -1
- package/infinite-scroll/package.json +1 -1
- package/info-label/package.json +1 -1
- package/inline-help/package.json +1 -1
- package/input-group/package.json +1 -1
- package/layout-grid/package.json +1 -1
- package/layout-panel/package.json +1 -1
- package/link/package.json +1 -1
- package/list/package.json +1 -1
- package/menu/esm2020/menu-item/menu-item.component.mjs +1 -3
- package/menu/esm2020/menu.component.mjs +3 -3
- package/menu/fesm2015/fundamental-ngx-core-menu.mjs +2 -4
- package/menu/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
- package/menu/fesm2020/fundamental-ngx-core-menu.mjs +2 -4
- package/menu/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
- package/menu/package.json +1 -1
- package/message-box/package.json +1 -1
- package/message-strip/package.json +1 -1
- package/message-toast/package.json +1 -1
- package/micro-process-flow/package.json +1 -1
- package/mobile-mode/package.json +1 -1
- package/multi-input/esm2020/multi-input-mobile/multi-input-mobile.component.mjs +8 -5
- package/multi-input/esm2020/multi-input.component.mjs +52 -40
- package/multi-input/esm2020/multi-input.interface.mjs +1 -1
- package/multi-input/fesm2015/fundamental-ngx-core-multi-input.mjs +59 -43
- package/multi-input/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/multi-input/fesm2020/fundamental-ngx-core-multi-input.mjs +58 -43
- package/multi-input/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +3 -1
- package/multi-input/multi-input.component.d.ts +13 -6
- package/multi-input/multi-input.interface.d.ts +2 -1
- package/multi-input/package.json +1 -1
- package/nested-list/package.json +1 -1
- package/notification/package.json +1 -1
- package/object-identifier/package.json +1 -1
- package/object-marker/package.json +1 -1
- package/object-number/package.json +1 -1
- package/object-status/package.json +1 -1
- package/package.json +1 -1
- package/pagination/package.json +1 -1
- package/panel/package.json +1 -1
- package/popover/package.json +1 -1
- package/product-switch/package.json +1 -1
- package/progress-indicator/package.json +1 -1
- package/quick-view/package.json +1 -1
- package/radio/package.json +1 -1
- package/rating-indicator/package.json +1 -1
- package/resizable-card-layout/package.json +1 -1
- package/schematics/ng-add/index.js +1 -2
- package/schematics/ng-add/index.js.map +1 -1
- package/scroll-spy/package.json +1 -1
- package/scrollbar/package.json +1 -1
- package/segmented-button/package.json +1 -1
- package/select/package.json +1 -1
- package/shared/package.json +1 -1
- package/shellbar/package.json +1 -1
- package/side-navigation/package.json +1 -1
- package/slider/package.json +1 -1
- package/split-button/package.json +1 -1
- package/splitter/package.json +1 -1
- package/status-indicator/package.json +1 -1
- package/step-input/package.json +1 -1
- package/switch/package.json +1 -1
- package/table/package.json +1 -1
- package/tabs/package.json +1 -1
- package/text/package.json +1 -1
- package/tile/package.json +1 -1
- package/time/esm2020/time-column/time-column.component.mjs +51 -25
- package/time/esm2020/time.component.mjs +15 -4
- package/time/fesm2015/fundamental-ngx-core-time.mjs +64 -27
- package/time/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
- package/time/fesm2020/fundamental-ngx-core-time.mjs +64 -27
- package/time/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
- package/time/package.json +1 -1
- package/time/time-column/time-column.component.d.ts +13 -3
- package/time/time.component.d.ts +5 -1
- package/time-picker/esm2020/time-picker.component.mjs +1 -1
- package/time-picker/fesm2015/fundamental-ngx-core-time-picker.mjs +1 -1
- package/time-picker/fesm2020/fundamental-ngx-core-time-picker.mjs +1 -1
- package/time-picker/package.json +1 -1
- package/timeline/package.json +1 -1
- package/title/package.json +1 -1
- package/token/package.json +1 -1
- package/toolbar/package.json +1 -1
- package/tree/package.json +1 -1
- package/upload-collection/package.json +1 -1
- package/utils/package.json +1 -1
- package/vertical-navigation/package.json +1 -1
- package/wizard/package.json +1 -1
- package/esm2020/grid-list/components/grid-list/grid-list-selection-mode.mjs +0 -2
- package/esm2020/grid-list/helpers/index.mjs +0 -2
- package/esm2020/grid-list/services/grid-list-selection.service.mjs +0 -63
- package/grid-list/components/grid-list/grid-list-selection-mode.d.ts +0 -1
- package/grid-list/esm2020/components/grid-list/grid-list-selection-mode.mjs +0 -2
- package/grid-list/esm2020/helpers/index.mjs +0 -2
- package/grid-list/esm2020/services/grid-list-selection.service.mjs +0 -63
- package/grid-list/helpers/index.d.ts +0 -1
- package/grid-list/services/grid-list-selection.service.d.ts +0 -27
package/action-bar/package.json
CHANGED
package/alert/package.json
CHANGED
package/avatar/package.json
CHANGED
package/bar/package.json
CHANGED
package/breadcrumb/package.json
CHANGED
package/button/package.json
CHANGED
|
@@ -20,6 +20,10 @@ export declare class CalendarHeaderComponent<D> implements OnDestroy, OnInit, On
|
|
|
20
20
|
activeView: FdCalendarView;
|
|
21
21
|
/** Currently displayed date on the calendar. */
|
|
22
22
|
currentlyDisplayed: CalendarCurrent;
|
|
23
|
+
/** whether previous navigation button should be disabled in the header. */
|
|
24
|
+
previousButtonDisabled: boolean;
|
|
25
|
+
/** whether next navigation button should be disabled in the header. */
|
|
26
|
+
nextButtonDisabled: boolean;
|
|
23
27
|
/**
|
|
24
28
|
* Object to customize year grid
|
|
25
29
|
*/
|
|
@@ -157,5 +161,5 @@ export declare class CalendarHeaderComponent<D> implements OnDestroy, OnInit, On
|
|
|
157
161
|
/** @hidden */
|
|
158
162
|
private _getYearName;
|
|
159
163
|
static ɵfac: i0.ɵɵFactoryDeclaration<CalendarHeaderComponent<any>, never>;
|
|
160
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarHeaderComponent<any>, "fd-calendar-header", never, { "activeView": "activeView"; "currentlyDisplayed": "currentlyDisplayed"; "calendarYearGrid": "calendarYearGrid"; "id": "id"; "mobileLandscape": "mobileLandscape"; "compact": "compact"; }, { "activeViewChange": "activeViewChange"; "previousClicked": "previousClicked"; "nextClicked": "nextClicked"; "closeClicked": "closeClicked"; }, never, never>;
|
|
164
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarHeaderComponent<any>, "fd-calendar-header", never, { "activeView": "activeView"; "currentlyDisplayed": "currentlyDisplayed"; "previousButtonDisabled": "previousButtonDisabled"; "nextButtonDisabled": "nextButtonDisabled"; "calendarYearGrid": "calendarYearGrid"; "id": "id"; "mobileLandscape": "mobileLandscape"; "compact": "compact"; }, { "activeViewChange": "activeViewChange"; "previousClicked": "previousClicked"; "nextClicked": "nextClicked"; "closeClicked": "closeClicked"; }, never, never>;
|
|
161
165
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
-
import {
|
|
1
|
+
import { ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { ControlValueAccessor, Validator } from '@angular/forms';
|
|
3
3
|
import { DatetimeAdapter, DateTimeFormats } from '@fundamental-ngx/core/datetime';
|
|
4
4
|
import { ContentDensityService } from '@fundamental-ngx/core/utils';
|
|
5
5
|
import { SpecialDayRule } from '@fundamental-ngx/core/shared';
|
|
@@ -12,7 +12,7 @@ import { CalendarYearViewComponent } from './calendar-views/calendar-year-view/c
|
|
|
12
12
|
import { CalendarMonthViewComponent } from './calendar-views/calendar-month-view/calendar-month-view.component';
|
|
13
13
|
import { CalendarHeaderComponent } from './calendar-header/calendar-header.component';
|
|
14
14
|
import { CalendarAggregatedYearViewComponent } from './calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component';
|
|
15
|
-
import { FdCalendarView, DaysOfWeek, CalendarType } from './types';
|
|
15
|
+
import { FdCalendarView, DaysOfWeek, CalendarType, NavigationButtonDisableFunction } from './types';
|
|
16
16
|
import * as i0 from "@angular/core";
|
|
17
17
|
/**
|
|
18
18
|
* Months: 1 = January, 12 = december.
|
|
@@ -25,7 +25,7 @@ import * as i0 from "@angular/core";
|
|
|
25
25
|
* ```
|
|
26
26
|
*
|
|
27
27
|
*/
|
|
28
|
-
export declare class CalendarComponent<D> implements OnInit, ControlValueAccessor, Validator, OnDestroy {
|
|
28
|
+
export declare class CalendarComponent<D> implements OnInit, OnChanges, ControlValueAccessor, Validator, OnDestroy {
|
|
29
29
|
private _changeDetectorRef;
|
|
30
30
|
private _contentDensityService;
|
|
31
31
|
private _dateTimeAdapter;
|
|
@@ -101,6 +101,20 @@ export declare class CalendarComponent<D> implements OnInit, ControlValueAccesso
|
|
|
101
101
|
_aggregatedYearViewComponent: CalendarAggregatedYearViewComponent<D>;
|
|
102
102
|
/** @hidden */
|
|
103
103
|
_calendarHeaderComponent: CalendarHeaderComponent<D>;
|
|
104
|
+
/**
|
|
105
|
+
* Function used to disable previous button in the calendar header.
|
|
106
|
+
* @param date selected date
|
|
107
|
+
* @param currentlyDisplayedDate currently displayed date
|
|
108
|
+
* @param activeView current view of calendar
|
|
109
|
+
*/
|
|
110
|
+
previousButtonDisableFunction: NavigationButtonDisableFunction<D>;
|
|
111
|
+
/**
|
|
112
|
+
* Function used to disable next button in the calendar header.
|
|
113
|
+
* @param date selected date
|
|
114
|
+
* @param currentlyDisplayedDate currently displayed date
|
|
115
|
+
* @param activeView current view of calendar
|
|
116
|
+
*/
|
|
117
|
+
nextButtonDisableFunction: NavigationButtonDisableFunction<D>;
|
|
104
118
|
/**
|
|
105
119
|
* @hidden
|
|
106
120
|
* Currently displayed days depending on month and year
|
|
@@ -110,6 +124,10 @@ export declare class CalendarComponent<D> implements OnInit, ControlValueAccesso
|
|
|
110
124
|
private _subscriptions;
|
|
111
125
|
/** @hidden */
|
|
112
126
|
private _adapterStartingDayOfWeek;
|
|
127
|
+
/** @hidden */
|
|
128
|
+
previousButtonDisabled: boolean;
|
|
129
|
+
/** @hidden */
|
|
130
|
+
nextButtonDisabled: boolean;
|
|
113
131
|
/** That allows to define function that should happen, when focus should normally escape of component */
|
|
114
132
|
escapeFocusFunction: (event?: KeyboardEvent) => void;
|
|
115
133
|
/**
|
|
@@ -135,6 +153,8 @@ export declare class CalendarComponent<D> implements OnInit, ControlValueAccesso
|
|
|
135
153
|
constructor(_changeDetectorRef: ChangeDetectorRef, _contentDensityService: ContentDensityService, _dateTimeAdapter: DatetimeAdapter<D>, _dateTimeFormats: DateTimeFormats);
|
|
136
154
|
/** @hidden */
|
|
137
155
|
ngOnInit(): void;
|
|
156
|
+
/** @hidden */
|
|
157
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
138
158
|
getWeekStartDay(): DaysOfWeek;
|
|
139
159
|
/** @hidden */
|
|
140
160
|
ngOnDestroy(): void;
|
|
@@ -147,15 +167,13 @@ export declare class CalendarComponent<D> implements OnInit, ControlValueAccesso
|
|
|
147
167
|
* @hidden
|
|
148
168
|
* Function that implements Validator Interface, adds validation support for forms
|
|
149
169
|
*/
|
|
150
|
-
validate(
|
|
170
|
+
validate(): {
|
|
151
171
|
[key: string]: any;
|
|
152
172
|
};
|
|
153
173
|
/** @hidden */
|
|
154
174
|
registerOnChange(fn: any): void;
|
|
155
175
|
/** @hidden */
|
|
156
176
|
registerOnTouched(fn: any): void;
|
|
157
|
-
/** @hidden */
|
|
158
|
-
setDisabledState?(isDisabled: boolean): void;
|
|
159
177
|
/**
|
|
160
178
|
* Method that handle active view change and throws event.
|
|
161
179
|
*
|
|
@@ -228,6 +246,8 @@ export declare class CalendarComponent<D> implements OnInit, ControlValueAccesso
|
|
|
228
246
|
private _prepareDisplayedView;
|
|
229
247
|
/** @hidden */
|
|
230
248
|
private _getActiveFocusableView;
|
|
249
|
+
/** @hidden */
|
|
250
|
+
private _setNavigationButtonsStates;
|
|
231
251
|
static ɵfac: i0.ɵɵFactoryDeclaration<CalendarComponent<any>, [null, { optional: true; }, { optional: true; }, { optional: true; }]>;
|
|
232
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarComponent<any>, "fd-calendar", never, { "selectedDate": "selectedDate"; "compact": "compact"; "markWeekends": "markWeekends"; "showWeekNumbers": "showWeekNumbers"; "mobileLandscape": "mobileLandscape"; "mobilePortrait": "mobilePortrait"; "selectedRangeDate": "selectedRangeDate"; "activeView": "activeView"; "startingDayOfWeek": "startingDayOfWeek"; "calType": "calType"; "id": "id"; "specialDaysRules": "specialDaysRules"; "yearGrid": "yearGrid"; "aggregatedYearGrid": "aggregatedYearGrid"; "rangeHoverEffect": "rangeHoverEffect"; "escapeFocusFunction": "escapeFocusFunction"; "disableFunction": "disableFunction"; "disableRangeStartFunction": "disableRangeStartFunction"; "disableRangeEndFunction": "disableRangeEndFunction"; }, { "activeViewChange": "activeViewChange"; "selectedDateChange": "selectedDateChange"; "selectedRangeDateChange": "selectedRangeDateChange"; "isValidDateChange": "isValidDateChange"; "closeCalendar": "closeCalendar"; "closeClicked": "closeClicked"; }, never, never>;
|
|
252
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CalendarComponent<any>, "fd-calendar", never, { "selectedDate": "selectedDate"; "compact": "compact"; "markWeekends": "markWeekends"; "showWeekNumbers": "showWeekNumbers"; "mobileLandscape": "mobileLandscape"; "mobilePortrait": "mobilePortrait"; "selectedRangeDate": "selectedRangeDate"; "activeView": "activeView"; "startingDayOfWeek": "startingDayOfWeek"; "calType": "calType"; "id": "id"; "specialDaysRules": "specialDaysRules"; "yearGrid": "yearGrid"; "aggregatedYearGrid": "aggregatedYearGrid"; "rangeHoverEffect": "rangeHoverEffect"; "previousButtonDisableFunction": "previousButtonDisableFunction"; "nextButtonDisableFunction": "nextButtonDisableFunction"; "escapeFocusFunction": "escapeFocusFunction"; "disableFunction": "disableFunction"; "disableRangeStartFunction": "disableRangeStartFunction"; "disableRangeEndFunction": "disableRangeEndFunction"; }, { "activeViewChange": "activeViewChange"; "selectedDateChange": "selectedDateChange"; "selectedRangeDateChange": "selectedRangeDateChange"; "isValidDateChange": "isValidDateChange"; "closeCalendar": "closeCalendar"; "closeClicked": "closeClicked"; }, never, never>;
|
|
233
253
|
}
|
|
@@ -247,16 +247,20 @@ export class CalendarHeaderComponent {
|
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
249
|
CalendarHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: CalendarHeaderComponent, deps: [{ token: i1.CalendarI18nLabels }, { token: i0.ChangeDetectorRef }, { token: i2.CalendarService }, { token: i3.DatetimeAdapter }], target: i0.ɵɵFactoryTarget.Component });
|
|
250
|
-
CalendarHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: CalendarHeaderComponent, selector: "fd-calendar-header", inputs: { activeView: "activeView", currentlyDisplayed: "currentlyDisplayed", calendarYearGrid: "calendarYearGrid", id: "id", mobileLandscape: "mobileLandscape", compact: "compact" }, outputs: { activeViewChange: "activeViewChange", previousClicked: "previousClicked", nextClicked: "nextClicked", closeClicked: "closeClicked" }, host: { properties: { "attr.id": "viewId" } }, viewQueries: [{ propertyName: "_prevButtonComponent", first: true, predicate: ["prevButton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<header class=\"fd-calendar__header\">\n <div class=\"fd-calendar__navigation\" [class.fd-calendar__navigation--main]=\"mobileLandscape\">\n <div class=\"fd-calendar__action fd-calendar__action--arrow-left\">\n <button\n #prevButton\n fd-button\n [compact]=\"compact\"\n fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [
|
|
250
|
+
CalendarHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.2", type: CalendarHeaderComponent, selector: "fd-calendar-header", inputs: { activeView: "activeView", currentlyDisplayed: "currentlyDisplayed", previousButtonDisabled: "previousButtonDisabled", nextButtonDisabled: "nextButtonDisabled", calendarYearGrid: "calendarYearGrid", id: "id", mobileLandscape: "mobileLandscape", compact: "compact" }, outputs: { activeViewChange: "activeViewChange", previousClicked: "previousClicked", nextClicked: "nextClicked", closeClicked: "closeClicked" }, host: { properties: { "attr.id": "viewId" } }, viewQueries: [{ propertyName: "_prevButtonComponent", first: true, predicate: ["prevButton"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<header class=\"fd-calendar__header\">\n <div class=\"fd-calendar__navigation\" [class.fd-calendar__navigation--main]=\"mobileLandscape\">\n <div class=\"fd-calendar__action fd-calendar__action--arrow-left\">\n <button\n #prevButton\n fd-button\n [compact]=\"compact\"\n fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel\"\n [ariaLabel]=\"previousAriaLabel\"\n type=\"button\"\n (click)=\"previousClicked.emit()\"\n ></button>\n </div>\n <ng-container *ngIf=\"isOnDayView || isOnMonthView\">\n <div class=\"fd-calendar__action\">\n <!-- Select month button -->\n <button\n fd-button\n type=\"button\"\n [compact]=\"compact\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_monthButtonLabelId + ' ' + _selectMonthButtonAriaLabelId\"\n [attr.data-fd-calendar-month]=\"currentlyDisplayed.month\"\n (click)=\"_processViewChange('month', $event)\"\n >\n <span [attr.id]=\"_monthButtonLabelId\">{{ selectMonthLabel }}</span>\n </button>\n </div>\n <div class=\"fd-calendar__action\">\n <!-- Select year button -->\n <button\n fd-button\n type=\"button\"\n [compact]=\"compact\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearButtonLabelId + ' ' + _selectYearButtonAriaLabelId\"\n [attr.data-fd-calendar-year]=\"currentlyDisplayed.year\"\n (click)=\"_processViewChange('year', $event)\"\n >\n <span [attr.id]=\"_yearButtonLabelId\">{{ selectYearLabel }}</span>\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isOnAggregatedYearsView || isOnYearView\">\n <div class=\"fd-calendar__action\" aria-live=\"polite\">\n <button\n fd-button\n [compact]=\"compact\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearsRangeButtonLabelId + ' ' + _selectYearsRangeButtonAriaLabelId\"\n (click)=\"_processViewChange('aggregatedYear', $event)\"\n type=\"button\"\n >\n <span [attr.id]=\"_yearsRangeButtonLabelId\">{{ selectAggregatedYearLabel }}</span>\n </button>\n </div>\n </ng-container>\n <div class=\"fd-calendar__action fd-calendar__action--arrow-right\">\n <button\n fd-button\n [compact]=\"compact\"\n fdType=\"transparent\"\n glyph=\"slim-arrow-right\"\n [attr.id]=\"_nextButtonId\"\n [disabled]=\"nextButtonDisabled\"\n [attr.title]=\"nextAriaLabel\"\n [ariaLabel]=\"nextAriaLabel\"\n (click)=\"nextClicked.emit()\"\n type=\"button\"\n ></button>\n </div>\n <button\n *ngIf=\"mobileLandscape\"\n fd-button\n fd-calendar-close-button\n class=\"fd-calendar__close-button--navigation\"\n type=\"button\"\n glyph=\"decline\"\n fdType=\"transparent\"\n (click)=\"_emitClose()\"\n ></button>\n </div>\n\n <!-- Hidden elements for aria purposes -->\n <div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_selectMonthButtonAriaLabelId\">{{ selectMonthAriaLabel }}</div>\n <div [attr.id]=\"_selectYearButtonAriaLabelId\">{{ selectYearAriaLabel }}</div>\n <div [attr.id]=\"_selectYearsRangeButtonAriaLabelId\">{{ selectAggregatedYearAriaLabel }}</div>\n </div>\n</header>\n", styles: [""], components: [{ type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.CalendarCloseButtonDirective, selector: "[fd-calendar-close-button]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
251
251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: CalendarHeaderComponent, decorators: [{
|
|
252
252
|
type: Component,
|
|
253
253
|
args: [{ selector: 'fd-calendar-header', encapsulation: ViewEncapsulation.None, host: {
|
|
254
254
|
'[attr.id]': 'viewId'
|
|
255
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"fd-calendar__header\">\n <div class=\"fd-calendar__navigation\" [class.fd-calendar__navigation--main]=\"mobileLandscape\">\n <div class=\"fd-calendar__action fd-calendar__action--arrow-left\">\n <button\n #prevButton\n fd-button\n [compact]=\"compact\"\n fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [
|
|
255
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"fd-calendar__header\">\n <div class=\"fd-calendar__navigation\" [class.fd-calendar__navigation--main]=\"mobileLandscape\">\n <div class=\"fd-calendar__action fd-calendar__action--arrow-left\">\n <button\n #prevButton\n fd-button\n [compact]=\"compact\"\n fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel\"\n [ariaLabel]=\"previousAriaLabel\"\n type=\"button\"\n (click)=\"previousClicked.emit()\"\n ></button>\n </div>\n <ng-container *ngIf=\"isOnDayView || isOnMonthView\">\n <div class=\"fd-calendar__action\">\n <!-- Select month button -->\n <button\n fd-button\n type=\"button\"\n [compact]=\"compact\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_monthButtonLabelId + ' ' + _selectMonthButtonAriaLabelId\"\n [attr.data-fd-calendar-month]=\"currentlyDisplayed.month\"\n (click)=\"_processViewChange('month', $event)\"\n >\n <span [attr.id]=\"_monthButtonLabelId\">{{ selectMonthLabel }}</span>\n </button>\n </div>\n <div class=\"fd-calendar__action\">\n <!-- Select year button -->\n <button\n fd-button\n type=\"button\"\n [compact]=\"compact\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearButtonLabelId + ' ' + _selectYearButtonAriaLabelId\"\n [attr.data-fd-calendar-year]=\"currentlyDisplayed.year\"\n (click)=\"_processViewChange('year', $event)\"\n >\n <span [attr.id]=\"_yearButtonLabelId\">{{ selectYearLabel }}</span>\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isOnAggregatedYearsView || isOnYearView\">\n <div class=\"fd-calendar__action\" aria-live=\"polite\">\n <button\n fd-button\n [compact]=\"compact\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearsRangeButtonLabelId + ' ' + _selectYearsRangeButtonAriaLabelId\"\n (click)=\"_processViewChange('aggregatedYear', $event)\"\n type=\"button\"\n >\n <span [attr.id]=\"_yearsRangeButtonLabelId\">{{ selectAggregatedYearLabel }}</span>\n </button>\n </div>\n </ng-container>\n <div class=\"fd-calendar__action fd-calendar__action--arrow-right\">\n <button\n fd-button\n [compact]=\"compact\"\n fdType=\"transparent\"\n glyph=\"slim-arrow-right\"\n [attr.id]=\"_nextButtonId\"\n [disabled]=\"nextButtonDisabled\"\n [attr.title]=\"nextAriaLabel\"\n [ariaLabel]=\"nextAriaLabel\"\n (click)=\"nextClicked.emit()\"\n type=\"button\"\n ></button>\n </div>\n <button\n *ngIf=\"mobileLandscape\"\n fd-button\n fd-calendar-close-button\n class=\"fd-calendar__close-button--navigation\"\n type=\"button\"\n glyph=\"decline\"\n fdType=\"transparent\"\n (click)=\"_emitClose()\"\n ></button>\n </div>\n\n <!-- Hidden elements for aria purposes -->\n <div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_selectMonthButtonAriaLabelId\">{{ selectMonthAriaLabel }}</div>\n <div [attr.id]=\"_selectYearButtonAriaLabelId\">{{ selectYearAriaLabel }}</div>\n <div [attr.id]=\"_selectYearsRangeButtonAriaLabelId\">{{ selectAggregatedYearAriaLabel }}</div>\n </div>\n</header>\n", styles: [""] }]
|
|
256
256
|
}], ctorParameters: function () { return [{ type: i1.CalendarI18nLabels }, { type: i0.ChangeDetectorRef }, { type: i2.CalendarService }, { type: i3.DatetimeAdapter }]; }, propDecorators: { activeView: [{
|
|
257
257
|
type: Input
|
|
258
258
|
}], currentlyDisplayed: [{
|
|
259
259
|
type: Input
|
|
260
|
+
}], previousButtonDisabled: [{
|
|
261
|
+
type: Input
|
|
262
|
+
}], nextButtonDisabled: [{
|
|
263
|
+
type: Input
|
|
260
264
|
}], calendarYearGrid: [{
|
|
261
265
|
type: Input
|
|
262
266
|
}], id: [{
|
|
@@ -277,4 +281,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImpor
|
|
|
277
281
|
type: ViewChild,
|
|
278
282
|
args: ['prevButton']
|
|
279
283
|
}] } });
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWhlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItaGVhZGVyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFFdEQ7OztHQUdHO0FBV0gsTUFBTSxPQUFPLHVCQUF1QjtJQThLaEMsWUFDWSxtQkFBdUMsRUFDdkMsYUFBZ0MsRUFDaEMsZ0JBQWlDLEVBQ2pDLGdCQUFvQztRQUhwQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2pDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUE1SmhELDJDQUEy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QkFEdkIsTUFBTTtnQkFLRSxXQUFXO3NCQURuQixNQUFNO2dCQUtFLFlBQVk7c0JBRHBCLE1BQU07Z0JBd0hQLG9CQUFvQjtzQkFEbkIsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRGF0ZXRpbWVBZGFwdGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuXG5pbXBvcnQgeyBDYWxlbmRhckkxOG5MYWJlbHMgfSBmcm9tICcuLi9pMThuL2NhbGVuZGFyLWkxOG4tbGFiZWxzJztcbmltcG9ydCB7IEZkQ2FsZW5kYXJWaWV3IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDdXJyZW50IH0gZnJvbSAnLi4vbW9kZWxzL2NhbGVuZGFyLWN1cnJlbnQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJZZWFyR3JpZCB9IGZyb20gJy4uL21vZGVscy9jYWxlbmRhci15ZWFyLWdyaWQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi4vY2FsZW5kYXIuc2VydmljZSc7XG5cbi8qKlxuICogSW50ZXJuYWwgdXNlIG9ubHkuXG4gKiBIZWFkZXIgb2YgdGhlIGNhbGVuZGFyIGNvbXBvbmVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1jYWxlbmRhci1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuaWRdJzogJ3ZpZXdJZCdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFySGVhZGVyQ29tcG9uZW50PEQ+IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgLyoqIEN1cnJlbnRseSBhY3RpdmUgdmlldy4gTmVlZGVkIGZvciBhMTF5IGxhYmVscy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFjdGl2ZVZpZXc6IEZkQ2FsZW5kYXJWaWV3O1xuXG4gICAgLyoqIEN1cnJlbnRseSBkaXNwbGF5ZWQgZGF0ZSBvbiB0aGUgY2FsZW5kYXIuICovXG4gICAgQElucHV0KClcbiAgICBjdXJyZW50bHlEaXNwbGF5ZWQ6IENhbGVuZGFyQ3VycmVudDtcblxuICAgIC8qKlxuICAgICAqIE9iamVjdCB0byBjdXN0b21pemUgeWVhciBncmlkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FsZW5kYXJZZWFyR3JpZCh5ZWFyR3JpZDogQ2FsZW5kYXJZZWFyR3JpZCkge1xuICAgICAgICB0aGlzLl9hbW91bnRPZlllYXJzUGVyUGVyaW9kID0geWVhckdyaWQuY29scyAqIHllYXJHcmlkLnJvd3MgLSAxO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIENhbGVuZGFyIElEICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgY2xvc2UgYnV0dG9uIHNob3VsZCBiZSBzaG93biAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlTGFuZHNjYXBlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBjb21wYWN0IG1vZGUgc2hvdWxkIGJlIGluY2x1ZGVkIGludG8gY2FsZW5kYXIgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbXBhY3QgPSBmYWxzZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFjdGl2ZSB2aWV3IHNob3VsZCBjaGFuZ2UuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgYWN0aXZlVmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPEZkQ2FsZW5kYXJWaWV3PiA9IG5ldyBFdmVudEVtaXR0ZXI8RmRDYWxlbmRhclZpZXc+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwcmV2aW91cyBidXR0b24gaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBwcmV2aW91c0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG5leHQgYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgbmV4dENsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCB0aHJvd24sIHdoZW4gdGhlIGNsb3NlIGJ1dHRvbiBpcyBjbGlja2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY2xvc2VDbGlja2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIHByZXZpb3VzIGJ1dHRvbi4gRGVwZW5kcyBvbiB0aGUgYWN0aXZlIHZpZXcuICovXG4gICAgcHJldmlvdXNBcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgbmV4dCBidXR0b24uIERlcGVuZHMgb24gdGhlIGFjdGl2ZSB2aWV3LiAqL1xuICAgIG5leHRBcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gYXJpYSBsYWJlbCB0byBvcGVuIG1vbnRoIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIHNlbGVjdE1vbnRoQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGFyaWEgbGFiZWwgdG8gb3BlbiB5ZWFyIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIHNlbGVjdFllYXJBcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gYXJpYSBsYWJlbCB0byBvcGVuIGFnZ3JlZ2F0ZWQgeWVhcnMgc2VsZWN0aW9uIHZpZXcuICovXG4gICAgc2VsZWN0QWdncmVnYXRlZFllYXJBcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gbGFiZWwgdG8gb3BlbiBtb250aCBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RNb250aExhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGxhYmVsIHRvIG9wZW4geWVhciBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RZZWFyTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gbGFiZWwgdG8gb3BlbiBhZ2dyZWdhdGVkIHllYXJzIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gaXMgY2FsZW5kYXIgaXMgb24gYWdncmVnYXRlZCB5ZWFycyB2aWV3ICovXG4gICAgZ2V0IGlzT25BZ2dyZWdhdGVkWWVhcnNWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSAnYWdncmVnYXRlZFllYXInO1xuICAgIH1cblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gaXMgY2FsZW5kYXIgaXMgb24geWVhciB2aWV3ICovXG4gICAgZ2V0IGlzT25ZZWFyVmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gJ3llYXInO1xuICAgIH1cblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gaXMgY2FsZW5kYXIgaXMgb24gbW9udGggdmlldyAqL1xuICAgIGdldCBpc09uTW9udGhWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSAnbW9udGgnO1xuICAgIH1cblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gaXMgY2FsZW5kYXIgaXMgb24gZGF5IHZpZXcgKi9cbiAgICBnZXQgaXNPbkRheVZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVZpZXcgPT09ICdkYXknO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBvbmVudCBpZFxuICAgICAqL1xuICAgIGdldCB2aWV3SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyAnLWhlYWRlcic7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFByZXZpb3VzIGJ1dHRvbiBpZFxuICAgICAqL1xuICAgIGdldCBfcHJldkJ1dHRvbklkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctbGVmdC1hcnJvdyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE5leHQgYnV0dG9uIGlkXG4gICAgICovXG4gICAgZ2V0IF9uZXh0QnV0dG9uSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1yaWdodC1hcnJvdyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1vbnRoIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF9tb250aEJ1dHRvbkxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1tb250aC1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNlbGVjdCBtb250aCBhcmlhIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF9zZWxlY3RNb250aEJ1dHRvbkFyaWFMYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctc2VsZWN0LW1vbnRoLWFyaWEtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBZZWFyIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF95ZWFyQnV0dG9uTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXllYXItbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWxlY3QgeWVhciBhcmlhIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF9zZWxlY3RZZWFyQnV0dG9uQXJpYUxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1zZWxlY3QteWVhci1hcmlhLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogWWVhcnMgcmFuZ2UgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3llYXJzUmFuZ2VCdXR0b25MYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICcteWVhcnMtcmFuZ2UtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWxlY3QgeWVhcnMgcmFuZ2UgYXJpYSBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfc2VsZWN0WWVhcnNSYW5nZUJ1dHRvbkFyaWFMYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctc2VsZWN0LXllYXJzLXJhbmdlLWFyaWEtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgncHJldkJ1dHRvbicpXG4gICAgX3ByZXZCdXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudDtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIE1vbnRoIG5hbWVzICovXG4gICAgcHJpdmF0ZSBfbW9udGhOYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgYW1vdW50IG9mIHllYXJzIGRpc3BsYXllZCBhdCBvbmNlIG9uIHllYXIgdmlldyAgKi9cbiAgICBwcml2YXRlIF9hbW91bnRPZlllYXJzUGVyUGVyaW9kID0gMTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jYWxlbmRhckkxOG5MYWJlbHM6IENhbGVuZGFySTE4bkxhYmVscyxcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0UmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfY2FsZW5kYXJTZXJ2aWNlOiBDYWxlbmRhclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2RhdGVUaW1lQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+XG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGNoYW5nZXMuY3VycmVudGx5RGlzcGxheWVkICYmICFjaGFuZ2VzLmN1cnJlbnRseURpc3BsYXllZC5maXJzdENoYW5nZSkgfHxcbiAgICAgICAgICAgIChjaGFuZ2VzLmFjdGl2ZVZpZXcgJiYgIWNoYW5nZXMuYWN0aXZlVmlldy5maXJzdENoYW5nZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVMYWJlbHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUFyaWFMYWJlbHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5sZWZ0QXJyb3dJZCA9IHRoaXMuX3ByZXZCdXR0b25JZDtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVNb250aE5hbWVzKCk7XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlTGFiZWxzKCk7XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQXJpYUxhYmVscygpO1xuXG4gICAgICAgIHRoaXMuX2xpc3RlblRvTG9jYWxlQ2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuX2xpc3RlblRvQ2FsZW5kYXJMYWJlbHNDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9jdXMgb24gZm9jdXNhYmxlIGNvbnRyb2wgd2l0aGluIHRoZSBoZWFkZXJcbiAgICAgKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wcmV2QnV0dG9uQ29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJldkJ1dHRvbkNvbXBvbmVudC5lbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Byb2Nlc3NWaWV3Q2hhbmdlKHR5cGU6IEZkQ2FsZW5kYXJWaWV3LCBldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlVmlldyA9IHR5cGUgPT09IHRoaXMuYWN0aXZlVmlldyA/ICdkYXknIDogdHlwZTtcblxuICAgICAgICB0aGlzLmFjdGl2ZVZpZXdDaGFuZ2UuZW1pdCh0aGlzLmFjdGl2ZVZpZXcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2VtaXRDbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZUNsaWNrZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9Mb2NhbGVDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kYXRlVGltZUFkYXB0ZXIubG9jYWxlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZU1vbnRoTmFtZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUxhYmVscygpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvQ2FsZW5kYXJMYWJlbHNDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMubGFiZWxzQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlQXJpYUxhYmVscygpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUFyaWFMYWJlbHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVByZXZpb3VzQXJpYUxhYmVsKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZU5leHRBcmlhTGFiZWwoKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlU2VsZWN0TW9udGhBcmlhTGFiZWwoKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlU2VsZWN0WWVhckFyaWFMYWJlbCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckFyaWFMYWJlbCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTGFiZWxzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RNb250aExhYmVsKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdFllYXJMYWJlbCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVQcmV2aW91c0FyaWFMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c0FyaWFMYWJlbCA9IHRoaXMuaXNPbkRheVZpZXdcbiAgICAgICAgICAgID8gdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLnByZXZpb3VzTW9udGhMYWJlbFxuICAgICAgICAgICAgOiB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMucHJldmlvdXNZZWFyTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVOZXh0QXJpYUxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5leHRBcmlhTGFiZWwgPSB0aGlzLmlzT25EYXlWaWV3XG4gICAgICAgICAgICA/IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5uZXh0TW9udGhMYWJlbFxuICAgICAgICAgICAgOiB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMubmV4dFllYXJMYWJlbDtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RNb250aEFyaWFMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RNb250aEFyaWFMYWJlbCA9IHRoaXMuaXNPbk1vbnRoVmlld1xuICAgICAgICAgICAgPyB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMuZGF0ZVNlbGVjdGlvbkxhYmVsXG4gICAgICAgICAgICA6IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5tb250aFNlbGVjdGlvbkxhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlU2VsZWN0WWVhckFyaWFMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RZZWFyQXJpYUxhYmVsID0gdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLnllYXJTZWxlY3Rpb25MYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsID0gdGhpcy5pc09uQWdncmVnYXRlZFllYXJzVmlld1xuICAgICAgICAgICAgPyB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMuZGF0ZVNlbGVjdGlvbkxhYmVsXG4gICAgICAgICAgICA6IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy55ZWFyc1JhbmdlU2VsZWN0aW9uTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RNb250aExhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdE1vbnRoTGFiZWwgPSB0aGlzLl9tb250aE5hbWVzW3RoaXMuY3VycmVudGx5RGlzcGxheWVkLm1vbnRoIC0gMV07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RZZWFyTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0WWVhckxhYmVsID0gdGhpcy5fZ2V0WWVhck5hbWUodGhpcy5jdXJyZW50bHlEaXNwbGF5ZWQueWVhcik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWwgPSBgJHt0aGlzLl9nZXRZZWFyTmFtZSh0aGlzLmN1cnJlbnRseURpc3BsYXllZC55ZWFyKX0tJHt0aGlzLl9nZXRZZWFyTmFtZShcbiAgICAgICAgICAgIHRoaXMuY3VycmVudGx5RGlzcGxheWVkLnllYXIgKyB0aGlzLl9hbW91bnRPZlllYXJzUGVyUGVyaW9kXG4gICAgICAgICl9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVNb250aE5hbWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tb250aE5hbWVzID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldE1vbnRoTmFtZXMoJ2xvbmcnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFllYXJOYW1lKHllYXI6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0WWVhck5hbWUodGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmNyZWF0ZURhdGUoeWVhciwgMSwgMSkpO1xuICAgIH1cbn1cbiIsIjxoZWFkZXIgY2xhc3M9XCJmZC1jYWxlbmRhcl9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19uYXZpZ2F0aW9uXCIgW2NsYXNzLmZkLWNhbGVuZGFyX19uYXZpZ2F0aW9uLS1tYWluXT1cIm1vYmlsZUxhbmRzY2FwZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvbiBmZC1jYWxlbmRhcl9fYWN0aW9uLS1hcnJvdy1sZWZ0XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgI3ByZXZCdXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJzbGltLWFycm93LWxlZnRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIl9wcmV2QnV0dG9uSWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByZXZpb3VzQXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cInByZXZpb3VzQXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNDbGlja2VkLmVtaXQoKVwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPbkRheVZpZXcgfHwgaXNPbk1vbnRoVmlld1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdCBtb250aCBidXR0b24gLS0+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJfbW9udGhCdXR0b25MYWJlbElkICsgJyAnICsgX3NlbGVjdE1vbnRoQnV0dG9uQXJpYUxhYmVsSWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWZkLWNhbGVuZGFyLW1vbnRoXT1cImN1cnJlbnRseURpc3BsYXllZC5tb250aFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfcHJvY2Vzc1ZpZXdDaGFuZ2UoJ21vbnRoJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbYXR0ci5pZF09XCJfbW9udGhCdXR0b25MYWJlbElkXCI+e3sgc2VsZWN0TW9udGhMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdCB5ZWFyIGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl95ZWFyQnV0dG9uTGFiZWxJZCArICcgJyArIF9zZWxlY3RZZWFyQnV0dG9uQXJpYUxhYmVsSWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWZkLWNhbGVuZGFyLXllYXJdPVwiY3VycmVudGx5RGlzcGxheWVkLnllYXJcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3Byb2Nlc3NWaWV3Q2hhbmdlKCd5ZWFyJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbYXR0ci5pZF09XCJfeWVhckJ1dHRvbkxhYmVsSWRcIj57eyBzZWxlY3RZZWFyTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09uQWdncmVnYXRlZFllYXJzVmlldyB8fCBpc09uWWVhclZpZXdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fYWN0aW9uXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl95ZWFyc1JhbmdlQnV0dG9uTGFiZWxJZCArICcgJyArIF9zZWxlY3RZZWFyc1JhbmdlQnV0dG9uQXJpYUxhYmVsSWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3Byb2Nlc3NWaWV3Q2hhbmdlKCdhZ2dyZWdhdGVkWWVhcicsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFthdHRyLmlkXT1cIl95ZWFyc1JhbmdlQnV0dG9uTGFiZWxJZFwiPnt7IHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fYWN0aW9uIGZkLWNhbGVuZGFyX19hY3Rpb24tLWFycm93LXJpZ2h0XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIGdseXBoPVwic2xpbS1hcnJvdy1yaWdodFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiX25leHRCdXR0b25JZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwibmV4dEFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJuZXh0QXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibmV4dENsaWNrZWQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibW9iaWxlTGFuZHNjYXBlXCJcbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmQtY2FsZW5kYXItY2xvc2UtYnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImZkLWNhbGVuZGFyX19jbG9zZS1idXR0b24tLW5hdmlnYXRpb25cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBnbHlwaD1cImRlY2xpbmVcIlxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIl9lbWl0Q2xvc2UoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gSGlkZGVuIGVsZW1lbnRzIGZvciBhcmlhIHB1cnBvc2VzIC0tPlxuICAgIDxkaXYgaGlkZGVuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IFthdHRyLmlkXT1cIl9zZWxlY3RNb250aEJ1dHRvbkFyaWFMYWJlbElkXCI+e3sgc2VsZWN0TW9udGhBcmlhTGFiZWwgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBbYXR0ci5pZF09XCJfc2VsZWN0WWVhckJ1dHRvbkFyaWFMYWJlbElkXCI+e3sgc2VsZWN0WWVhckFyaWFMYWJlbCB9fTwvZGl2PlxuICAgICAgICA8ZGl2IFthdHRyLmlkXT1cIl9zZWxlY3RZZWFyc1JhbmdlQnV0dG9uQXJpYUxhYmVsSWRcIj57eyBzZWxlY3RBZ2dyZWdhdGVkWWVhckFyaWFMYWJlbCB9fTwvZGl2PlxuICAgIDwvZGl2PlxuPC9oZWFkZXI+XG4iXX0=
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWhlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItaGVhZGVyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFFdEQ7OztHQUdHO0FBV0gsTUFBTSxPQUFPLHVCQUF1QjtJQXNMaEMsWUFDWSxtQkFBdUMsRUFDdkMsYUFBZ0MsRUFDaEMsZ0JBQWlDLEVBQ2pDLGdCQUFvQztRQUhwQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQ2pDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUE1SmhELDJDQUEy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TztzQkFETixLQUFLO2dCQUtHLGdCQUFnQjtzQkFEeEIsTUFBTTtnQkFLRSxlQUFlO3NCQUR2QixNQUFNO2dCQUtFLFdBQVc7c0JBRG5CLE1BQU07Z0JBS0UsWUFBWTtzQkFEcEIsTUFBTTtnQkF3SFAsb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBEYXRldGltZUFkYXB0ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5cbmltcG9ydCB7IENhbGVuZGFySTE4bkxhYmVscyB9IGZyb20gJy4uL2kxOG4vY2FsZW5kYXItaTE4bi1sYWJlbHMnO1xuaW1wb3J0IHsgRmRDYWxlbmRhclZpZXcgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBDYWxlbmRhckN1cnJlbnQgfSBmcm9tICcuLi9tb2RlbHMvY2FsZW5kYXItY3VycmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhclllYXJHcmlkIH0gZnJvbSAnLi4vbW9kZWxzL2NhbGVuZGFyLXllYXItZ3JpZCc7XG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcblxuLyoqXG4gKiBJbnRlcm5hbCB1c2Ugb25seS5cbiAqIEhlYWRlciBvZiB0aGUgY2FsZW5kYXIgY29tcG9uZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWNhbGVuZGFyLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5pZF0nOiAndmlld0lkJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICAvKiogQ3VycmVudGx5IGFjdGl2ZSB2aWV3LiBOZWVkZWQgZm9yIGExMXkgbGFiZWxzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZlVmlldzogRmRDYWxlbmRhclZpZXc7XG5cbiAgICAvKiogQ3VycmVudGx5IGRpc3BsYXllZCBkYXRlIG9uIHRoZSBjYWxlbmRhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbnRseURpc3BsYXllZDogQ2FsZW5kYXJDdXJyZW50O1xuXG4gICAgLyoqIHdoZXRoZXIgcHJldmlvdXMgbmF2aWdhdGlvbiBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkIGluIHRoZSBoZWFkZXIuICovXG4gICAgQElucHV0KClcbiAgICBwcmV2aW91c0J1dHRvbkRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgLyoqIHdoZXRoZXIgbmV4dCBuYXZpZ2F0aW9uIGJ1dHRvbiBzaG91bGQgYmUgZGlzYWJsZWQgaW4gdGhlIGhlYWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5leHRCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE9iamVjdCB0byBjdXN0b21pemUgeWVhciBncmlkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FsZW5kYXJZZWFyR3JpZCh5ZWFyR3JpZDogQ2FsZW5kYXJZZWFyR3JpZCkge1xuICAgICAgICB0aGlzLl9hbW91bnRPZlllYXJzUGVyUGVyaW9kID0geWVhckdyaWQuY29scyAqIHllYXJHcmlkLnJvd3MgLSAxO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIENhbGVuZGFyIElEICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgY2xvc2UgYnV0dG9uIHNob3VsZCBiZSBzaG93biAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlTGFuZHNjYXBlID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBjb21wYWN0IG1vZGUgc2hvdWxkIGJlIGluY2x1ZGVkIGludG8gY2FsZW5kYXIgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbXBhY3QgPSBmYWxzZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFjdGl2ZSB2aWV3IHNob3VsZCBjaGFuZ2UuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgYWN0aXZlVmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPEZkQ2FsZW5kYXJWaWV3PiA9IG5ldyBFdmVudEVtaXR0ZXI8RmRDYWxlbmRhclZpZXc+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwcmV2aW91cyBidXR0b24gaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBwcmV2aW91c0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG5leHQgYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgbmV4dENsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCB0aHJvd24sIHdoZW4gdGhlIGNsb3NlIGJ1dHRvbiBpcyBjbGlja2VkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgY2xvc2VDbGlja2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIHByZXZpb3VzIGJ1dHRvbi4gRGVwZW5kcyBvbiB0aGUgYWN0aXZlIHZpZXcuICovXG4gICAgcHJldmlvdXNBcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgbmV4dCBidXR0b24uIERlcGVuZHMgb24gdGhlIGFjdGl2ZSB2aWV3LiAqL1xuICAgIG5leHRBcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gYXJpYSBsYWJlbCB0byBvcGVuIG1vbnRoIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIHNlbGVjdE1vbnRoQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGFyaWEgbGFiZWwgdG8gb3BlbiB5ZWFyIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIHNlbGVjdFllYXJBcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gYXJpYSBsYWJlbCB0byBvcGVuIGFnZ3JlZ2F0ZWQgeWVhcnMgc2VsZWN0aW9uIHZpZXcuICovXG4gICAgc2VsZWN0QWdncmVnYXRlZFllYXJBcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gbGFiZWwgdG8gb3BlbiBtb250aCBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RNb250aExhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGxhYmVsIHRvIG9wZW4geWVhciBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RZZWFyTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gbGFiZWwgdG8gb3BlbiBhZ2dyZWdhdGVkIHllYXJzIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gaXMgY2FsZW5kYXIgaXMgb24gYWdncmVnYXRlZCB5ZWFycyB2aWV3ICovXG4gICAgZ2V0IGlzT25BZ2dyZWdhdGVkWWVhcnNWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSAnYWdncmVnYXRlZFllYXInO1xuICAgIH1cblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gaXMgY2FsZW5kYXIgaXMgb24geWVhciB2aWV3ICovXG4gICAgZ2V0IGlzT25ZZWFyVmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gJ3llYXInO1xuICAgIH1cblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gaXMgY2FsZW5kYXIgaXMgb24gbW9udGggdmlldyAqL1xuICAgIGdldCBpc09uTW9udGhWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSAnbW9udGgnO1xuICAgIH1cblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gaXMgY2FsZW5kYXIgaXMgb24gZGF5IHZpZXcgKi9cbiAgICBnZXQgaXNPbkRheVZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVZpZXcgPT09ICdkYXknO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBvbmVudCBpZFxuICAgICAqL1xuICAgIGdldCB2aWV3SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyAnLWhlYWRlcic7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFByZXZpb3VzIGJ1dHRvbiBpZFxuICAgICAqL1xuICAgIGdldCBfcHJldkJ1dHRvbklkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctbGVmdC1hcnJvdyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE5leHQgYnV0dG9uIGlkXG4gICAgICovXG4gICAgZ2V0IF9uZXh0QnV0dG9uSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1yaWdodC1hcnJvdyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1vbnRoIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF9tb250aEJ1dHRvbkxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1tb250aC1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNlbGVjdCBtb250aCBhcmlhIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF9zZWxlY3RNb250aEJ1dHRvbkFyaWFMYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctc2VsZWN0LW1vbnRoLWFyaWEtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBZZWFyIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF95ZWFyQnV0dG9uTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXllYXItbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWxlY3QgeWVhciBhcmlhIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF9zZWxlY3RZZWFyQnV0dG9uQXJpYUxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1zZWxlY3QteWVhci1hcmlhLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogWWVhcnMgcmFuZ2UgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3llYXJzUmFuZ2VCdXR0b25MYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICcteWVhcnMtcmFuZ2UtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWxlY3QgeWVhcnMgcmFuZ2UgYXJpYSBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfc2VsZWN0WWVhcnNSYW5nZUJ1dHRvbkFyaWFMYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctc2VsZWN0LXllYXJzLXJhbmdlLWFyaWEtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgncHJldkJ1dHRvbicpXG4gICAgX3ByZXZCdXR0b25Db21wb25lbnQ6IEJ1dHRvbkNvbXBvbmVudDtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIE1vbnRoIG5hbWVzICovXG4gICAgcHJpdmF0ZSBfbW9udGhOYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgYW1vdW50IG9mIHllYXJzIGRpc3BsYXllZCBhdCBvbmNlIG9uIHllYXIgdmlldyAgKi9cbiAgICBwcml2YXRlIF9hbW91bnRPZlllYXJzUGVyUGVyaW9kID0gMTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jYWxlbmRhckkxOG5MYWJlbHM6IENhbGVuZGFySTE4bkxhYmVscyxcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0UmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfY2FsZW5kYXJTZXJ2aWNlOiBDYWxlbmRhclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2RhdGVUaW1lQWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+XG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGNoYW5nZXMuY3VycmVudGx5RGlzcGxheWVkICYmICFjaGFuZ2VzLmN1cnJlbnRseURpc3BsYXllZC5maXJzdENoYW5nZSkgfHxcbiAgICAgICAgICAgIChjaGFuZ2VzLmFjdGl2ZVZpZXcgJiYgIWNoYW5nZXMuYWN0aXZlVmlldy5maXJzdENoYW5nZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVMYWJlbHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUFyaWFMYWJlbHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFyU2VydmljZS5sZWZ0QXJyb3dJZCA9IHRoaXMuX3ByZXZCdXR0b25JZDtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVNb250aE5hbWVzKCk7XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlTGFiZWxzKCk7XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlQXJpYUxhYmVscygpO1xuXG4gICAgICAgIHRoaXMuX2xpc3RlblRvTG9jYWxlQ2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuX2xpc3RlblRvQ2FsZW5kYXJMYWJlbHNDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9jdXMgb24gZm9jdXNhYmxlIGNvbnRyb2wgd2l0aGluIHRoZSBoZWFkZXJcbiAgICAgKi9cbiAgICBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wcmV2QnV0dG9uQ29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJldkJ1dHRvbkNvbXBvbmVudC5lbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Byb2Nlc3NWaWV3Q2hhbmdlKHR5cGU6IEZkQ2FsZW5kYXJWaWV3LCBldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlVmlldyA9IHR5cGUgPT09IHRoaXMuYWN0aXZlVmlldyA/ICdkYXknIDogdHlwZTtcblxuICAgICAgICB0aGlzLmFjdGl2ZVZpZXdDaGFuZ2UuZW1pdCh0aGlzLmFjdGl2ZVZpZXcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2VtaXRDbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZUNsaWNrZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9Mb2NhbGVDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kYXRlVGltZUFkYXB0ZXIubG9jYWxlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZU1vbnRoTmFtZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUxhYmVscygpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvQ2FsZW5kYXJMYWJlbHNDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMubGFiZWxzQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlQXJpYUxhYmVscygpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUFyaWFMYWJlbHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVByZXZpb3VzQXJpYUxhYmVsKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZU5leHRBcmlhTGFiZWwoKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlU2VsZWN0TW9udGhBcmlhTGFiZWwoKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlU2VsZWN0WWVhckFyaWFMYWJlbCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckFyaWFMYWJlbCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTGFiZWxzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RNb250aExhYmVsKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdFllYXJMYWJlbCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVQcmV2aW91c0FyaWFMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c0FyaWFMYWJlbCA9IHRoaXMuaXNPbkRheVZpZXdcbiAgICAgICAgICAgID8gdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLnByZXZpb3VzTW9udGhMYWJlbFxuICAgICAgICAgICAgOiB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMucHJldmlvdXNZZWFyTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVOZXh0QXJpYUxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5leHRBcmlhTGFiZWwgPSB0aGlzLmlzT25EYXlWaWV3XG4gICAgICAgICAgICA/IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5uZXh0TW9udGhMYWJlbFxuICAgICAgICAgICAgOiB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMubmV4dFllYXJMYWJlbDtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RNb250aEFyaWFMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RNb250aEFyaWFMYWJlbCA9IHRoaXMuaXNPbk1vbnRoVmlld1xuICAgICAgICAgICAgPyB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMuZGF0ZVNlbGVjdGlvbkxhYmVsXG4gICAgICAgICAgICA6IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5tb250aFNlbGVjdGlvbkxhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlU2VsZWN0WWVhckFyaWFMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RZZWFyQXJpYUxhYmVsID0gdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLnllYXJTZWxlY3Rpb25MYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsID0gdGhpcy5pc09uQWdncmVnYXRlZFllYXJzVmlld1xuICAgICAgICAgICAgPyB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMuZGF0ZVNlbGVjdGlvbkxhYmVsXG4gICAgICAgICAgICA6IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy55ZWFyc1JhbmdlU2VsZWN0aW9uTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RNb250aExhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdE1vbnRoTGFiZWwgPSB0aGlzLl9tb250aE5hbWVzW3RoaXMuY3VycmVudGx5RGlzcGxheWVkLm1vbnRoIC0gMV07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RZZWFyTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0WWVhckxhYmVsID0gdGhpcy5fZ2V0WWVhck5hbWUodGhpcy5jdXJyZW50bHlEaXNwbGF5ZWQueWVhcik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWwgPSBgJHt0aGlzLl9nZXRZZWFyTmFtZSh0aGlzLmN1cnJlbnRseURpc3BsYXllZC55ZWFyKX0tJHt0aGlzLl9nZXRZZWFyTmFtZShcbiAgICAgICAgICAgIHRoaXMuY3VycmVudGx5RGlzcGxheWVkLnllYXIgKyB0aGlzLl9hbW91bnRPZlllYXJzUGVyUGVyaW9kXG4gICAgICAgICl9YDtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVNb250aE5hbWVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tb250aE5hbWVzID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldE1vbnRoTmFtZXMoJ2xvbmcnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFllYXJOYW1lKHllYXI6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0WWVhck5hbWUodGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmNyZWF0ZURhdGUoeWVhciwgMSwgMSkpO1xuICAgIH1cbn1cbiIsIjxoZWFkZXIgY2xhc3M9XCJmZC1jYWxlbmRhcl9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19uYXZpZ2F0aW9uXCIgW2NsYXNzLmZkLWNhbGVuZGFyX19uYXZpZ2F0aW9uLS1tYWluXT1cIm1vYmlsZUxhbmRzY2FwZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvbiBmZC1jYWxlbmRhcl9fYWN0aW9uLS1hcnJvdy1sZWZ0XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgI3ByZXZCdXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJzbGltLWFycm93LWxlZnRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIl9wcmV2QnV0dG9uSWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcmV2aW91c0J1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJwcmV2aW91c0FyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJwcmV2aW91c0FyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzQ2xpY2tlZC5lbWl0KClcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT25EYXlWaWV3IHx8IGlzT25Nb250aFZpZXdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBTZWxlY3QgbW9udGggYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX21vbnRoQnV0dG9uTGFiZWxJZCArICcgJyArIF9zZWxlY3RNb250aEJ1dHRvbkFyaWFMYWJlbElkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mZC1jYWxlbmRhci1tb250aF09XCJjdXJyZW50bHlEaXNwbGF5ZWQubW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3Byb2Nlc3NWaWV3Q2hhbmdlKCdtb250aCcsICRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwiX21vbnRoQnV0dG9uTGFiZWxJZFwiPnt7IHNlbGVjdE1vbnRoTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBTZWxlY3QgeWVhciBidXR0b24gLS0+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJfeWVhckJ1dHRvbkxhYmVsSWQgKyAnICcgKyBfc2VsZWN0WWVhckJ1dHRvbkFyaWFMYWJlbElkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mZC1jYWxlbmRhci15ZWFyXT1cImN1cnJlbnRseURpc3BsYXllZC55ZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9wcm9jZXNzVmlld0NoYW5nZSgneWVhcicsICRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwiX3llYXJCdXR0b25MYWJlbElkXCI+e3sgc2VsZWN0WWVhckxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPbkFnZ3JlZ2F0ZWRZZWFyc1ZpZXcgfHwgaXNPblllYXJWaWV3XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvblwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJfeWVhcnNSYW5nZUJ1dHRvbkxhYmVsSWQgKyAnICcgKyBfc2VsZWN0WWVhcnNSYW5nZUJ1dHRvbkFyaWFMYWJlbElkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9wcm9jZXNzVmlld0NoYW5nZSgnYWdncmVnYXRlZFllYXInLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbYXR0ci5pZF09XCJfeWVhcnNSYW5nZUJ1dHRvbkxhYmVsSWRcIj57eyBzZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvbiBmZC1jYWxlbmRhcl9fYWN0aW9uLS1hcnJvdy1yaWdodFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBnbHlwaD1cInNsaW0tYXJyb3ctcmlnaHRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmlkXT1cIl9uZXh0QnV0dG9uSWRcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJuZXh0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIm5leHRBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwibmV4dEFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRDbGlja2VkLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1vYmlsZUxhbmRzY2FwZVwiXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGZkLWNhbGVuZGFyLWNsb3NlLWJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJmZC1jYWxlbmRhcl9fY2xvc2UtYnV0dG9uLS1uYXZpZ2F0aW9uXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgZ2x5cGg9XCJkZWNsaW5lXCJcbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIChjbGljayk9XCJfZW1pdENsb3NlKClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEhpZGRlbiBlbGVtZW50cyBmb3IgYXJpYSBwdXJwb3NlcyAtLT5cbiAgICA8ZGl2IGhpZGRlbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgPGRpdiBbYXR0ci5pZF09XCJfc2VsZWN0TW9udGhCdXR0b25BcmlhTGFiZWxJZFwiPnt7IHNlbGVjdE1vbnRoQXJpYUxhYmVsIH19PC9kaXY+XG4gICAgICAgIDxkaXYgW2F0dHIuaWRdPVwiX3NlbGVjdFllYXJCdXR0b25BcmlhTGFiZWxJZFwiPnt7IHNlbGVjdFllYXJBcmlhTGFiZWwgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBbYXR0ci5pZF09XCJfc2VsZWN0WWVhcnNSYW5nZUJ1dHRvbkFyaWFMYWJlbElkXCI+e3sgc2VsZWN0QWdncmVnYXRlZFllYXJBcmlhTGFiZWwgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbjwvaGVhZGVyPlxuIl19
|