@fundamental-ngx/core 0.47.0-rc.9 → 0.47.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/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/carousel/carousel-item/carousel-item.component.d.ts +4 -4
- package/carousel/carousel-item.directive.d.ts +4 -4
- package/checkbox/checkbox/checkbox.component.d.ts +10 -10
- package/esm2022/breadcrumb/breadcrumb.component.mjs +2 -2
- package/esm2022/calendar/calendar-header/calendar-header.component.mjs +4 -5
- package/esm2022/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +4 -5
- package/esm2022/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +4 -5
- package/esm2022/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +4 -5
- package/esm2022/carousel/carousel-item/carousel-item.component.mjs +1 -1
- package/esm2022/carousel/carousel-item.directive.mjs +1 -1
- package/esm2022/checkbox/checkbox/checkbox.component.mjs +1 -1
- package/esm2022/combobox/combobox.component.mjs +2 -2
- package/esm2022/date-picker/date-picker.component.mjs +4 -5
- package/esm2022/datetime-picker/datetime-picker.component.mjs +8 -10
- package/esm2022/feed-input/directives/feed-input-avatar.directive.mjs +2 -2
- package/esm2022/feed-input/directives/feed-input-textarea.directive.mjs +16 -19
- package/esm2022/form/form-control/form-control.component.mjs +3 -3
- package/esm2022/form/form-label/form-label.component.mjs +5 -6
- package/esm2022/input-group/input-group.component.mjs +7 -5
- package/esm2022/menu/menu-mobile/menu-mobile.component.mjs +4 -5
- package/esm2022/message-box/directives/message-box-template.directive.mjs +3 -3
- package/esm2022/message-strip/message-strip.component.mjs +8 -10
- package/esm2022/multi-combobox/base-multi-combobox.class.mjs +4 -4
- package/esm2022/multi-combobox/helpers.mjs +1 -1
- package/esm2022/multi-combobox/multi-announcer/multi-announcer.directive.mjs +11 -5
- package/esm2022/multi-combobox/multi-combobox.component.mjs +6 -6
- package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +4 -5
- package/esm2022/multi-input/multi-input.component.mjs +3 -3
- package/esm2022/notification/notification-utils/notification-config.mjs +1 -1
- package/esm2022/notification/notification-utils/notification-ref.mjs +1 -1
- package/esm2022/object-attribute/fundamental-ngx-core-object-attribute.mjs +5 -0
- package/esm2022/object-attribute/index.mjs +3 -0
- package/esm2022/object-attribute/object-attribute.component.mjs +49 -0
- package/esm2022/object-attribute/object-attribute.module.mjs +16 -0
- package/esm2022/overflow-layout/overflow-layout.component.mjs +18 -5
- package/esm2022/overflow-layout/overflow-layout.service.mjs +3 -3
- package/esm2022/pagination/pagination.component.mjs +2 -2
- package/esm2022/popover/popover-mobile/popover-mobile.module.mjs +6 -6
- package/esm2022/radio/radio-button/radio-button.component.mjs +2 -2
- package/esm2022/select/select-mobile/select-mobile.module.mjs +5 -5
- package/esm2022/select/select.component.mjs +3 -3
- package/esm2022/select/select.interface.mjs +1 -1
- package/esm2022/shellbar/product-menu/product-menu.component.mjs +8 -11
- package/esm2022/shellbar/shellbar-action/shellbar-action.component.mjs +6 -7
- package/esm2022/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.mjs +6 -7
- package/esm2022/shellbar/user-menu/shellbar-user-menu.component.mjs +5 -6
- package/esm2022/splitter/splitter-pane-container/splitter-pane-container.component.mjs +1 -1
- package/esm2022/switch/switch.component.mjs +1 -1
- package/esm2022/tabs/tab-list.component.mjs +6 -3
- package/esm2022/tabs/tabs.module.mjs +5 -1
- package/esm2022/time/time-column/time-column.component.mjs +1 -1
- package/esm2022/time/time.component.mjs +1 -1
- package/esm2022/time-picker/time-picker.component.mjs +2 -2
- package/esm2022/token/tokenizer.component.mjs +6 -7
- package/esm2022/toolbar/toolbar.component.mjs +10 -12
- package/esm2022/tree/components/tree-item/tree-item.component.mjs +5 -6
- package/esm2022/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +4 -6
- package/esm2022/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +2 -2
- package/feed-input/directives/feed-input-textarea.directive.d.ts +7 -8
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +9 -10
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +3 -4
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +8 -10
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-input.mjs +16 -19
- package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +6 -7
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-input-group.mjs +6 -4
- package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +3 -4
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +7 -9
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +15 -10
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +6 -7
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-attribute.mjs +69 -0
- package/fesm2022/fundamental-ngx-core-object-attribute.mjs.map +1 -0
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +18 -5
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-radio.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +12 -14
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +9 -2
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time-picker.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +5 -6
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +7 -8
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +4 -5
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +6 -7
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/form/form-control/form-control.component.d.ts +3 -3
- package/fundamental-ngx-core-v0.47.0.tgz +0 -0
- package/input-group/input-group.component.d.ts +10 -4
- package/message-box/directives/message-box-template.directive.d.ts +2 -2
- package/message-strip/message-strip.component.d.ts +2 -2
- package/multi-combobox/base-multi-combobox.class.d.ts +7 -7
- package/multi-combobox/helpers.d.ts +3 -3
- package/multi-combobox/multi-announcer/multi-announcer.directive.d.ts +4 -2
- package/notification/notification-utils/notification-config.d.ts +2 -2
- package/notification/notification-utils/notification-ref.d.ts +5 -5
- package/object-attribute/README.md +25 -0
- package/object-attribute/index.d.ts +2 -0
- package/object-attribute/object-attribute.component.d.ts +26 -0
- package/object-attribute/object-attribute.module.d.ts +7 -0
- package/overflow-layout/overflow-layout.component.d.ts +9 -1
- package/overflow-layout/overflow-layout.service.d.ts +1 -1
- package/package.json +9 -3
- package/pagination/pagination.component.d.ts +2 -2
- package/popover/popover-mobile/popover-mobile.module.d.ts +1 -1
- package/radio/radio-button/radio-button.component.d.ts +12 -12
- package/schematics/add-dependencies/index.js +4 -4
- package/select/select-mobile/select-mobile.module.d.ts +1 -1
- package/select/select.interface.d.ts +8 -8
- package/shellbar/product-menu/product-menu.component.d.ts +3 -3
- package/splitter/splitter-pane-container/splitter-pane-container.component.d.ts +1 -1
- package/switch/switch.component.d.ts +1 -1
- package/tabs/tab-list.component.d.ts +2 -0
- package/tabs/tabs.module.d.ts +4 -0
- package/time/time-column/time-column.component.d.ts +3 -3
- package/time/time.component.d.ts +1 -1
- package/toolbar/toolbar.component.d.ts +2 -2
- package/fundamental-ngx-core-v0.47.0-rc.9.tgz +0 -0
|
@@ -55,7 +55,7 @@ export declare class BreadcrumbComponent implements OnInit, AfterViewInit {
|
|
|
55
55
|
* We catch interactions with item, Enter, Space, Mouse click and Touch click,
|
|
56
56
|
* if original element had router link we are proxying click to that element
|
|
57
57
|
* */
|
|
58
|
-
itemClicked(breadcrumbItem: BreadcrumbItemComponent, $event:
|
|
58
|
+
itemClicked(breadcrumbItem: BreadcrumbItemComponent, $event: Event): void;
|
|
59
59
|
/** @hidden */
|
|
60
60
|
ngAfterViewInit(): void;
|
|
61
61
|
/** @hidden */
|
|
@@ -3,7 +3,7 @@ import { Nullable } from '@fundamental-ngx/cdk/utils';
|
|
|
3
3
|
import { CarouselItemInterface } from '../carousel.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export type Visibility = 'visible' | 'hidden';
|
|
6
|
-
export declare class CarouselItemComponent implements CarouselItemInterface {
|
|
6
|
+
export declare class CarouselItemComponent<T = any> implements CarouselItemInterface {
|
|
7
7
|
private readonly _elementRef;
|
|
8
8
|
/** Id of the Carousel items. */
|
|
9
9
|
id: string;
|
|
@@ -24,7 +24,7 @@ export declare class CarouselItemComponent implements CarouselItemInterface {
|
|
|
24
24
|
/** Initial height value, needed when carousel is inside popover */
|
|
25
25
|
initialWidth: number;
|
|
26
26
|
/** Value of carousel item */
|
|
27
|
-
value:
|
|
27
|
+
value: T;
|
|
28
28
|
/** @hidden */
|
|
29
29
|
carouselItem: boolean;
|
|
30
30
|
/** @hidden */
|
|
@@ -42,6 +42,6 @@ export declare class CarouselItemComponent implements CarouselItemInterface {
|
|
|
42
42
|
getWidth(): number;
|
|
43
43
|
/** Height of element */
|
|
44
44
|
getHeight(): number;
|
|
45
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CarouselItemComponent
|
|
46
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CarouselItemComponent
|
|
45
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CarouselItemComponent<any>, never>;
|
|
46
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CarouselItemComponent<any>, "fd-carousel-item", never, { "id": { "alias": "id"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "title": { "alias": "title"; "required": false; }; "initialHeight": { "alias": "initialHeight"; "required": false; }; "initialWidth": { "alias": "initialWidth"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, {}, never, ["*"], true, never>;
|
|
47
47
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ElementRef } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class CarouselItemDirective {
|
|
3
|
+
export declare class CarouselItemDirective<T = unknown> {
|
|
4
4
|
private readonly _elementRef;
|
|
5
5
|
/** Value of the item , to keep some information inside */
|
|
6
|
-
value:
|
|
6
|
+
value: T;
|
|
7
7
|
/** Initial height value, needed when carousel is inside popover */
|
|
8
8
|
initialHeight: number;
|
|
9
9
|
/** Initial height value, needed when carousel is inside popover */
|
|
@@ -18,6 +18,6 @@ export declare class CarouselItemDirective {
|
|
|
18
18
|
getWidth(): number;
|
|
19
19
|
/** Height of element */
|
|
20
20
|
getHeight(): number;
|
|
21
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CarouselItemDirective
|
|
22
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<CarouselItemDirective
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CarouselItemDirective<any>, never>;
|
|
22
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CarouselItemDirective<any>, "[fd-carousel-item], [fdCarouselItem]", ["fdCarouselItem"], { "value": { "alias": "value"; "required": false; }; "initialHeight": { "alias": "initialHeight"; "required": false; }; "initialWidth": { "alias": "initialWidth"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, {}, never, never, true, never>;
|
|
23
23
|
}
|
|
@@ -8,7 +8,7 @@ import { FormItemControl } from '@fundamental-ngx/core/form';
|
|
|
8
8
|
import { FdCheckboxValues } from './fd-checkbox-values.interface';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export type FdCheckboxTypes = 'checked' | 'unchecked' | 'indeterminate' | 'force-checked';
|
|
11
|
-
export declare class CheckboxComponent implements ControlValueAccessor, AfterViewInit, OnDestroy, FormItemControl {
|
|
11
|
+
export declare class CheckboxComponent<T = unknown> implements ControlValueAccessor, AfterViewInit, OnDestroy, FormItemControl {
|
|
12
12
|
elementRef: ElementRef<Element>;
|
|
13
13
|
tabIndexValue: number;
|
|
14
14
|
private _changeDetectorRef;
|
|
@@ -25,8 +25,8 @@ export declare class CheckboxComponent implements ControlValueAccessor, AfterVie
|
|
|
25
25
|
/** Sets the `aria-label` attribute to the element. */
|
|
26
26
|
ariaLabel: Nullable<string>;
|
|
27
27
|
/** Current selection state of the checkbox component */
|
|
28
|
-
set value(value:
|
|
29
|
-
get value():
|
|
28
|
+
set value(value: T);
|
|
29
|
+
get value(): T;
|
|
30
30
|
/** Sets the `aria-labelledby` attribute to the element. */
|
|
31
31
|
ariaLabelledBy: Nullable<string>;
|
|
32
32
|
/** Sets the `aria-describedby` attribute to the element. */
|
|
@@ -71,7 +71,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, AfterVie
|
|
|
71
71
|
/** @hidden */
|
|
72
72
|
_projectedDomPortal: Portal<any>;
|
|
73
73
|
/** Stores current checkbox value. */
|
|
74
|
-
checkboxValue:
|
|
74
|
+
checkboxValue: T;
|
|
75
75
|
/** Stores current checkbox state. */
|
|
76
76
|
checkboxState: FdCheckboxTypes;
|
|
77
77
|
/** @hidden */
|
|
@@ -91,7 +91,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, AfterVie
|
|
|
91
91
|
/** @hidden Reference to callback provided by FormControl.*/
|
|
92
92
|
onTouched: () => void;
|
|
93
93
|
/** @hidden Reference to callback provided by FormControl.*/
|
|
94
|
-
onValueChange: (value:
|
|
94
|
+
onValueChange: (value: T) => void;
|
|
95
95
|
/** @hidden */
|
|
96
96
|
ngAfterViewInit(): void;
|
|
97
97
|
/** @hidden */
|
|
@@ -101,11 +101,11 @@ export declare class CheckboxComponent implements ControlValueAccessor, AfterVie
|
|
|
101
101
|
* - sets new control value
|
|
102
102
|
* - updates control state
|
|
103
103
|
*/
|
|
104
|
-
writeValue(value:
|
|
104
|
+
writeValue(value: T): void;
|
|
105
105
|
/** @hidden ControlValueAccessor interface method - sets onValueChange callback.*/
|
|
106
|
-
registerOnChange(fn:
|
|
106
|
+
registerOnChange(fn: (value: T) => void): void;
|
|
107
107
|
/** @hidden ControlValueAccessor interface method - sets onTouched callback.*/
|
|
108
|
-
registerOnTouched(fn:
|
|
108
|
+
registerOnTouched(fn: () => void): void;
|
|
109
109
|
/** @hidden Called by FormControl - used to disable / enable control.*/
|
|
110
110
|
setDisabledState(disabled: boolean): void;
|
|
111
111
|
/**
|
|
@@ -136,6 +136,6 @@ export declare class CheckboxComponent implements ControlValueAccessor, AfterVie
|
|
|
136
136
|
private _setState;
|
|
137
137
|
/** Method to trigger change detection in component */
|
|
138
138
|
private _detectChanges;
|
|
139
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent
|
|
140
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent
|
|
139
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxComponent<any>, [null, { attribute: "tabIndexValue"; }, null, null, null]>;
|
|
140
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent<any>, "fd-checkbox", never, { "wrapLabel": { "alias": "wrapLabel"; "required": false; }; "valignLabel": { "alias": "valignLabel"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "value": { "alias": "value"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; }; "title": { "alias": "title"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "state": { "alias": "state"; "required": false; }; "name": { "alias": "name"; "required": false; }; "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tristate": { "alias": "tristate"; "required": false; }; "tristateSelectable": { "alias": "tristateSelectable"; "required": false; }; "labelClass": { "alias": "labelClass"; "required": false; }; "required": { "alias": "required"; "required": false; }; "displayOnly": { "alias": "displayOnly"; "required": false; }; "values": { "alias": "values"; "required": false; }; "standalone": { "alias": "standalone"; "required": false; }; }, { "focusChange": "focusChange"; }, never, ["*"], true, never>;
|
|
141
141
|
}
|
|
@@ -109,7 +109,7 @@ export class BreadcrumbComponent {
|
|
|
109
109
|
provide: FD_BREADCRUMB_COMPONENT,
|
|
110
110
|
useExisting: BreadcrumbComponent
|
|
111
111
|
}
|
|
112
|
-
], queries: [{ propertyName: "_contentItems", predicate: FD_BREADCRUMB_ITEM_COMPONENT }], viewQueries: [{ propertyName: "_menuComponent", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "_overflowLayout", first: true, predicate: OverflowLayoutComponent, descendants: true }], ngImport: i0, template: "<fd-overflow-layout\n [reverseHiddenItems]=\"!reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n>\n <ng-container *ngFor=\"let breadcrumb of _items\">\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n </ng-container>\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$ | async\">\n <ng-container *ngFor=\"let breadcrumbItem of breadcrumbs\">\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a\n fd-menu-interactive\n (click)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.enter)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.space)=\"itemClicked(breadcrumbItem.item, $event)\"\n >\n <ng-container *ngIf=\"breadcrumbItem?.item.breadcrumbLink; else portalContent\">\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\">\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n </ng-container>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\">\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n </ng-container>\n </ng-container>\n <ng-template #portalContent>\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n </ng-template>\n </a>\n </li>\n </ng-container>\n </fd-menu>\n <span class=\"fd-breadcrumb__item\" *ngIf=\"breadcrumbs.length > 0\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n [attr.aria-label]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n aria-haspopup=\"listbox\"\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n <fd-icon\n glyph=\"overflow\"\n [title]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n [ariaLabel]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n ></fd-icon>\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n </span>\n </ng-container>\n</fd-overflow-layout>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.32.0-rc.7\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-breadcrumb{-webkit-box-sizing:border-box;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);list-style:none;margin:0;padding:0}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{color:var(--sapContent_LabelColor);content:\"/\";margin-left:.25rem;margin-right:.25rem}.fd-breadcrumb__item:last-child:after{content:none}.fd-breadcrumb__item .fd-breadcrumb__popover-body{border:none;border-top-left-radius:.125rem;border-top-right-radius:.125rem}.fd-breadcrumb{display:flex;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}.fd-breadcrumb .fd-overflow-layout{justify-content:start}.fd-breadcrumb .fd-breadcrumb__item:last-child:after{content:\"/\"}.fd-breadcrumb .fd-overflow-layout__item--last .fd-breadcrumb__item:after{content:none}\n"], dependencies: [{ kind: "component", type: OverflowLayoutComponent, selector: "fd-overflow-layout", inputs: ["maxVisibleItems", "navigationTrigger", "showMorePosition", "reverseHiddenItems", "enableKeyboardNavigation", "moreItemsButtonText"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: OverflowItemRefDirective, selector: "[fdOverflowItemRef]", inputs: ["fdOverflowItemRef"] }, { kind: "directive", type: OverflowLayoutItemDirective, selector: "[fdOverflowLayoutItem]", inputs: ["forceVisibility"], outputs: ["hiddenChange"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: OverflowExpandDirective, selector: "[fdOverflowExpand]", inputs: ["fdOverflowExpandItems"] }, { kind: "component", type: MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: GlyphMenuAddonDirective, selector: "fd-menu-addon[glyph]", inputs: ["glyph"] }, { kind: "component", type: MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "directive", type: MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
112
|
+
], queries: [{ propertyName: "_contentItems", predicate: FD_BREADCRUMB_ITEM_COMPONENT }], viewQueries: [{ propertyName: "_menuComponent", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "_overflowLayout", first: true, predicate: OverflowLayoutComponent, descendants: true }], ngImport: i0, template: "<fd-overflow-layout\n [reverseHiddenItems]=\"!reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n>\n <ng-container *ngFor=\"let breadcrumb of _items\">\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n </ng-container>\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$ | async\">\n <ng-container *ngFor=\"let breadcrumbItem of breadcrumbs\">\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a\n fd-menu-interactive\n (click)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.enter)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.space)=\"itemClicked(breadcrumbItem.item, $event)\"\n >\n <ng-container *ngIf=\"breadcrumbItem?.item.breadcrumbLink; else portalContent\">\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\">\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n </ng-container>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\">\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n </ng-container>\n </ng-container>\n <ng-template #portalContent>\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n </ng-template>\n </a>\n </li>\n </ng-container>\n </fd-menu>\n <span class=\"fd-breadcrumb__item\" *ngIf=\"breadcrumbs.length > 0\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n [attr.aria-label]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n aria-haspopup=\"listbox\"\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n <fd-icon\n glyph=\"overflow\"\n [title]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n [ariaLabel]=\"'coreBreadcrumb.overflowTitleMore' | fdTranslate\"\n ></fd-icon>\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n </span>\n </ng-container>\n</fd-overflow-layout>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.32.0-rc.7\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-breadcrumb{-webkit-box-sizing:border-box;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);list-style:none;margin:0;padding:0}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{color:var(--sapContent_LabelColor);content:\"/\";margin-left:.25rem;margin-right:.25rem}.fd-breadcrumb__item:last-child:after{content:none}.fd-breadcrumb__item .fd-breadcrumb__popover-body{border:none;border-top-left-radius:.125rem;border-top-right-radius:.125rem}.fd-breadcrumb{display:flex;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}.fd-breadcrumb .fd-overflow-layout{justify-content:start}.fd-breadcrumb .fd-breadcrumb__item:last-child:after{content:\"/\"}.fd-breadcrumb .fd-overflow-layout__item--last .fd-breadcrumb__item:after{content:none}\n"], dependencies: [{ kind: "component", type: OverflowLayoutComponent, selector: "fd-overflow-layout", inputs: ["maxVisibleItems", "navigationTrigger", "showMorePosition", "renderShowMoreButton", "reverseHiddenItems", "enableKeyboardNavigation", "moreItemsButtonText"], outputs: ["visibleItemsCount", "hiddenItemsCount", "hiddenItemsChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: OverflowItemRefDirective, selector: "[fdOverflowItemRef]", inputs: ["fdOverflowItemRef"] }, { kind: "directive", type: OverflowLayoutItemDirective, selector: "[fdOverflowLayoutItem]", inputs: ["forceVisibility"], outputs: ["hiddenChange"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: OverflowExpandDirective, selector: "[fdOverflowExpand]", inputs: ["fdOverflowExpandItems"] }, { kind: "component", type: MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: GlyphMenuAddonDirective, selector: "fd-menu-addon[glyph]", inputs: ["glyph"] }, { kind: "component", type: MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "directive", type: MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "directive", type: MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
113
113
|
}
|
|
114
114
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
|
115
115
|
type: Component,
|
|
@@ -161,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
161
161
|
type: ViewChild,
|
|
162
162
|
args: [OverflowLayoutComponent]
|
|
163
163
|
}] } });
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUNILHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUN2QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHVCQUF1QixFQUN2QiwyQkFBMkIsRUFDOUIsTUFBTSx1Q0FBdUMsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQs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bEIsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixTQUFTO3dCQUNULGVBQWU7cUJBQ2xCOzswQkFnREksUUFBUTs0RUEzQ2IsT0FBTztzQkFETixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFPTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBT1AsZ0JBQWdCO3NCQURmLE1BQU07Z0JBS1UsYUFBYTtzQkFEN0IsZUFBZTt1QkFBQyw0QkFBNEI7Z0JBSzVCLGNBQWM7c0JBRDlCLFNBQVM7dUJBQUMsYUFBYTtnQkFLUCxlQUFlO3NCQUQvQixTQUFTO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgTGlua0NvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saW5rJztcbmltcG9ydCB7XG4gICAgR2x5cGhNZW51QWRkb25EaXJlY3RpdmUsXG4gICAgTWVudUFkZG9uRGlyZWN0aXZlLFxuICAgIE1lbnVDb21wb25lbnQsXG4gICAgTWVudUludGVyYWN0aXZlQ29tcG9uZW50LFxuICAgIE1lbnVJdGVtQ29tcG9uZW50LFxuICAgIE1lbnVUaXRsZURpcmVjdGl2ZSxcbiAgICBNZW51VHJpZ2dlckRpcmVjdGl2ZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVudSc7XG5pbXBvcnQge1xuICAgIE92ZXJmbG93RXhwYW5kRGlyZWN0aXZlLFxuICAgIE92ZXJmbG93SXRlbVJlZkRpcmVjdGl2ZSxcbiAgICBPdmVyZmxvd0xheW91dENvbXBvbmVudCxcbiAgICBPdmVyZmxvd0xheW91dEl0ZW1EaXJlY3RpdmVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL292ZXJmbG93LWxheW91dCc7XG5pbXBvcnQgeyBQbGFjZW1lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJyZWFkY3J1bWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9icmVhZGNydW1iLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEZEX0JSRUFEQ1JVTUJfQ09NUE9ORU5ULCBGRF9CUkVBRENSVU1CX0lURU1fQ09NUE9ORU5UIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIEJyZWFkY3J1bWIgcGFyZW50IHdyYXBwZXIgZGlyZWN0aXZlLiBNdXN0IGhhdmUgYnJlYWRjcnVtYiBpdGVtIGNoaWxkIGRpcmVjdGl2ZXMuXG4gKlxuICogYGBgaHRtbFxuICogPGZkLWJyZWFkY3J1bWI+XG4gKiAgICAgPGZkLWJyZWFkY3J1bWItaXRlbT5cbiAqICAgICAgICAgPGEgZmQtbGluayBbcm91dGVyTGlua109XCInIydcIj5CcmVhZGNydW1iIExpbms8L2E+XG4gKiAgICAgPC9mZC1icmVhZGNydW1iLWl0ZW0+XG4gKiA8L2ZkLWJyZWFkY3J1bWI+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1icmVhZGNydW1iJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtYnJlYWRjcnVtYicsXG4gICAgICAgIHJvbGU6ICd0cmVlJ1xuICAgIH0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9CUkVBRENSVU1CX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBCcmVhZGNydW1iQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBPdmVyZmxvd0xheW91dENvbXBvbmVudCxcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE92ZXJmbG93SXRlbVJlZkRpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMYXlvdXRJdGVtRGlyZWN0aXZlLFxuICAgICAgICBQb3J0YWxNb2R1bGUsXG4gICAgICAgIE92ZXJmbG93RXhwYW5kRGlyZWN0aXZlLFxuICAgICAgICBNZW51Q29tcG9uZW50LFxuICAgICAgICBNZW51SXRlbUNvbXBvbmVudCxcbiAgICAgICAgTWVudUludGVyYWN0aXZlQ29tcG9uZW50LFxuICAgICAgICBOZ0lmLFxuICAgICAgICBHbHlwaE1lbnVBZGRvbkRpcmVjdGl2ZSxcbiAgICAgICAgTWVudUFkZG9uRGlyZWN0aXZlLFxuICAgICAgICBNZW51VGl0bGVEaXJlY3RpdmUsXG4gICAgICAgIE1lbnVUcmlnZ2VyRGlyZWN0aXZlLFxuICAgICAgICBMaW5rQ29tcG9uZW50LFxuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIFdoZXRoZXIgdG8gYXBwZW5kIGl0ZW1zIHRvIHRoZSBvdmVyZmxvdyBkcm9wZG93biBpbiByZXZlcnNlIG9yZGVyLiBEZWZhdWx0IGlzIHRydWUuICovXG4gICAgQElucHV0KClcbiAgICByZXZlcnNlID0gZmFsc2U7XG5cbiAgICAvKiogVGFiaW5kZXggb2YgdGhlIGJyZWFkY3J1bWIuICovXG4gICAgQElucHV0KClcbiAgICB0YWJJbmRleCA9ICcwJztcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB2aXNpYmxlIGl0ZW1zIGNvdW50IGlzIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgdmlzaWJsZUl0ZW1zQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBoaWRkZW4gaXRlbXMgY291bnQgaXMgY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBoaWRkZW5JdGVtc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRkRfQlJFQURDUlVNQl9JVEVNX0NPTVBPTkVOVClcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50SXRlbXM6IFF1ZXJ5TGlzdDxCcmVhZGNydW1iSXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoTWVudUNvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZW51Q29tcG9uZW50OiBNZW51Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKE92ZXJmbG93TGF5b3V0Q29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX292ZXJmbG93TGF5b3V0OiBPdmVyZmxvd0xheW91dENvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBcnJheSBvZiBicmVhZGNydW1iIGl0ZW1zLlxuICAgICAqL1xuICAgIF9pdGVtczogQnJlYWRjcnVtYkl0ZW1Db21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGxhY2VtZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGxhY2VtZW50PignYm90dG9tLXN0YXJ0Jyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2UgfCBudWxsLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcnRsU2VydmljZT8ucnRsXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5fcGxhY2VtZW50JC5uZXh0KHZhbHVlID8gJ2JvdHRvbS1lbmQnIDogJ2JvdHRvbS1zdGFydCcpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vdmVyZmxvd0xheW91dC50cmlnZ2VyUmVjYWxjdWxhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIGNhdGNoIGludGVyYWN0aW9ucyB3aXRoIGl0ZW0sIEVudGVyLCBTcGFjZSwgTW91c2UgY2xpY2sgYW5kIFRvdWNoIGNsaWNrLFxuICAgICAqIGlmIG9yaWdpbmFsIGVsZW1lbnQgaGFkIHJvdXRlciBsaW5rIHdlIGFyZSBwcm94eWluZyBjbGljayB0byB0aGF0IGVsZW1lbnRcbiAgICAgKiAqL1xuICAgIGl0ZW1DbGlja2VkKGJyZWFkY3J1bWJJdGVtOiBCcmVhZGNydW1iSXRlbUNvbXBvbmVudCwgJGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKGJyZWFkY3J1bWJJdGVtLl9uZWVkc0NsaWNrUHJveHkpIHtcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgYnJlYWRjcnVtYkl0ZW0uYnJlYWRjcnVtYkxpbmsuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0SXRlbXMoKTtcblxuICAgICAgICB0aGlzLl9jb250ZW50SXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fc2V0SXRlbXMoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfa2V5RG93bkhhbmRsZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbWVudUNvbXBvbmVudC50b2dnbGUoKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkhpZGRlbkNoYW5nZShpc0hpZGRlbjogYm9vbGVhbiwgYnJlYWRjcnVtYjogQnJlYWRjcnVtYkl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc0hpZGRlbikge1xuICAgICAgICAgICAgYnJlYWRjcnVtYi5fZGV0YWNoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBicmVhZGNydW1iLl9hdHRhY2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uVmlzaWJsZUl0ZW1zQ291bnRDaGFuZ2UodmlzaWJsZUl0ZW1zQ291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZpc2libGVJdGVtc0NvdW50LmVtaXQodmlzaWJsZUl0ZW1zQ291bnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uSGlkZGVuSXRlbXNDb3VudENoYW5nZShoaWRkZW5JdGVtc0NvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaWRkZW5JdGVtc0NvdW50LmVtaXQoaGlkZGVuSXRlbXNDb3VudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29udGVudEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0uc2V0UG9ydGFsKCkpO1xuICAgICAgICB0aGlzLl9pdGVtcyA9IHRoaXMuX2NvbnRlbnRJdGVtcy50b0FycmF5KCk7XG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIiwiPGZkLW92ZXJmbG93LWxheW91dFxuICAgIFtyZXZlcnNlSGlkZGVuSXRlbXNdPVwiIXJldmVyc2VcIlxuICAgIHNob3dNb3JlUG9zaXRpb249XCJsZWZ0XCJcbiAgICBbZW5hYmxlS2V5Ym9hcmROYXZpZ2F0aW9uXT1cImZhbHNlXCJcbiAgICAodmlzaWJsZUl0ZW1zQ291bnQpPVwiX29uVmlzaWJsZUl0ZW1zQ291bnRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGhpZGRlbkl0ZW1zQ291bnQpPVwiX29uSGlkZGVuSXRlbXNDb3VudENoYW5nZSgkZXZlbnQpXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBicmVhZGNydW1iIG9mIF9pdGVtc1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqZmRPdmVyZmxvd0l0ZW1SZWY9XCJicmVhZGNydW1iOyBsZXQgaGlkZGVuXCJcbiAgICAgICAgICAgIGZkT3ZlcmZsb3dMYXlvdXRJdGVtXG4gICAgICAgICAgICAoaGlkZGVuQ2hhbmdlKT1cIl9vbkhpZGRlbkNoYW5nZSgkZXZlbnQsIGJyZWFkY3J1bWIpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwiYnJlYWRjcnVtYi5wb3J0YWxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpmZE92ZXJmbG93RXhwYW5kPVwibGV0IGJyZWFkY3J1bWJzOyBpdGVtczogX2l0ZW1zXCI+XG4gICAgICAgIDxmZC1tZW51ICNtZW51IFtjbG9zZU9uRXNjYXBlS2V5XT1cInRydWVcIiBbZm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCIgW3BsYWNlbWVudF09XCJfcGxhY2VtZW50JCB8IGFzeW5jXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBicmVhZGNydW1iSXRlbSBvZiBicmVhZGNydW1ic1wiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBmZC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iTGluayA/IGJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkxpbmsuZGlzYWJsZWQgOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLW1lbnUtaW50ZXJhY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJpdGVtQ2xpY2tlZChicmVhZGNydW1iSXRlbS5pdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIml0ZW1DbGlja2VkKGJyZWFkY3J1bWJJdGVtLml0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiaXRlbUNsaWNrZWQoYnJlYWRjcnVtYkl0ZW0uaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZGNydW1iSXRlbT8uaXRlbS5icmVhZGNydW1iTGluazsgZWxzZSBwb3J0YWxDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkxpbmsuX3ByZWZpeEljb25OYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbj1cImJlZm9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iTGluay5fcHJlZml4SWNvbk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2Nka1BvcnRhbE91dGxldF09XCJicmVhZGNydW1iSXRlbS5pdGVtLmxpbmtDb250ZW50UG9ydGFsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJMaW5rLl9wb3N0Zml4SWNvbk5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLW1lbnUtYWRkb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJMaW5rLl9wb3N0Zml4SWNvbk5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BvcnRhbENvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nka1BvcnRhbE91dGxldF09XCJicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJJdGVtUG9ydGFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtbWVudT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmZC1icmVhZGNydW1iX19pdGVtXCIgKm5nSWY9XCJicmVhZGNydW1icy5sZW5ndGggPiAwXCIgW2ZkTWVudVRyaWdnZXJdPVwibWVudVwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBmZC1saW5rXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInY29yZUJyZWFkY3J1bWIub3ZlcmZsb3dUaXRsZU1vcmUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYnJlYWRjcnVtYl9fY29sbGFwc2VkXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJfa2V5RG93bkhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJfa2V5RG93bkhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZmQtaWNvblxuICAgICAgICAgICAgICAgICAgICBnbHlwaD1cIm92ZXJmbG93XCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidjb3JlQnJlYWRjcnVtYi5vdmVyZmxvd1RpdGxlTW9yZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ2NvcmVCcmVhZGNydW1iLm92ZXJmbG93VGl0bGVNb3JlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1pY29uPlxuICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwic2xpbS1hcnJvdy1kb3duXCI+PC9mZC1pY29uPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2ZkLW92ZXJmbG93LWxheW91dD5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUNILHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUN2QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLHVCQUF1QixFQUN2QiwyQkFBMkIsRUFDOUIsTUFBTSx1Q0FBdUMsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQs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bEIsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixTQUFTO3dCQUNULGVBQWU7cUJBQ2xCOzswQkFnREksUUFBUTs0RUEzQ2IsT0FBTztzQkFETixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFPTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBT1AsZ0JBQWdCO3NCQURmLE1BQU07Z0JBS1UsYUFBYTtzQkFEN0IsZUFBZTt1QkFBQyw0QkFBNEI7Z0JBSzVCLGNBQWM7c0JBRDlCLFNBQVM7dUJBQUMsYUFBYTtnQkFLUCxlQUFlO3NCQUQvQixTQUFTO3VCQUFDLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFJ0bFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgTGlua0NvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saW5rJztcbmltcG9ydCB7XG4gICAgR2x5cGhNZW51QWRkb25EaXJlY3RpdmUsXG4gICAgTWVudUFkZG9uRGlyZWN0aXZlLFxuICAgIE1lbnVDb21wb25lbnQsXG4gICAgTWVudUludGVyYWN0aXZlQ29tcG9uZW50LFxuICAgIE1lbnVJdGVtQ29tcG9uZW50LFxuICAgIE1lbnVUaXRsZURpcmVjdGl2ZSxcbiAgICBNZW51VHJpZ2dlckRpcmVjdGl2ZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVudSc7XG5pbXBvcnQge1xuICAgIE92ZXJmbG93RXhwYW5kRGlyZWN0aXZlLFxuICAgIE92ZXJmbG93SXRlbVJlZkRpcmVjdGl2ZSxcbiAgICBPdmVyZmxvd0xheW91dENvbXBvbmVudCxcbiAgICBPdmVyZmxvd0xheW91dEl0ZW1EaXJlY3RpdmVcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL292ZXJmbG93LWxheW91dCc7XG5pbXBvcnQgeyBQbGFjZW1lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcbmltcG9ydCB7IEZkVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJyZWFkY3J1bWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9icmVhZGNydW1iLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEZEX0JSRUFEQ1JVTUJfQ09NUE9ORU5ULCBGRF9CUkVBRENSVU1CX0lURU1fQ09NUE9ORU5UIH0gZnJvbSAnLi90b2tlbnMnO1xuXG4vKipcbiAqIEJyZWFkY3J1bWIgcGFyZW50IHdyYXBwZXIgZGlyZWN0aXZlLiBNdXN0IGhhdmUgYnJlYWRjcnVtYiBpdGVtIGNoaWxkIGRpcmVjdGl2ZXMuXG4gKlxuICogYGBgaHRtbFxuICogPGZkLWJyZWFkY3J1bWI+XG4gKiAgICAgPGZkLWJyZWFkY3J1bWItaXRlbT5cbiAqICAgICAgICAgPGEgZmQtbGluayBbcm91dGVyTGlua109XCInIydcIj5CcmVhZGNydW1iIExpbms8L2E+XG4gKiAgICAgPC9mZC1icmVhZGNydW1iLWl0ZW0+XG4gKiA8L2ZkLWJyZWFkY3J1bWI+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1icmVhZGNydW1iJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtYnJlYWRjcnVtYicsXG4gICAgICAgIHJvbGU6ICd0cmVlJ1xuICAgIH0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2JyZWFkY3J1bWIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2JyZWFkY3J1bWIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRF9CUkVBRENSVU1CX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBCcmVhZGNydW1iQ29tcG9uZW50XG4gICAgICAgIH1cbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBPdmVyZmxvd0xheW91dENvbXBvbmVudCxcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE92ZXJmbG93SXRlbVJlZkRpcmVjdGl2ZSxcbiAgICAgICAgT3ZlcmZsb3dMYXlvdXRJdGVtRGlyZWN0aXZlLFxuICAgICAgICBQb3J0YWxNb2R1bGUsXG4gICAgICAgIE92ZXJmbG93RXhwYW5kRGlyZWN0aXZlLFxuICAgICAgICBNZW51Q29tcG9uZW50LFxuICAgICAgICBNZW51SXRlbUNvbXBvbmVudCxcbiAgICAgICAgTWVudUludGVyYWN0aXZlQ29tcG9uZW50LFxuICAgICAgICBOZ0lmLFxuICAgICAgICBHbHlwaE1lbnVBZGRvbkRpcmVjdGl2ZSxcbiAgICAgICAgTWVudUFkZG9uRGlyZWN0aXZlLFxuICAgICAgICBNZW51VGl0bGVEaXJlY3RpdmUsXG4gICAgICAgIE1lbnVUcmlnZ2VyRGlyZWN0aXZlLFxuICAgICAgICBMaW5rQ29tcG9uZW50LFxuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqIFdoZXRoZXIgdG8gYXBwZW5kIGl0ZW1zIHRvIHRoZSBvdmVyZmxvdyBkcm9wZG93biBpbiByZXZlcnNlIG9yZGVyLiBEZWZhdWx0IGlzIHRydWUuICovXG4gICAgQElucHV0KClcbiAgICByZXZlcnNlID0gZmFsc2U7XG5cbiAgICAvKiogVGFiaW5kZXggb2YgdGhlIGJyZWFkY3J1bWIuICovXG4gICAgQElucHV0KClcbiAgICB0YWJJbmRleCA9ICcwJztcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB2aXNpYmxlIGl0ZW1zIGNvdW50IGlzIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgdmlzaWJsZUl0ZW1zQ291bnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBoaWRkZW4gaXRlbXMgY291bnQgaXMgY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBoaWRkZW5JdGVtc0NvdW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRkRfQlJFQURDUlVNQl9JVEVNX0NPTVBPTkVOVClcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50SXRlbXM6IFF1ZXJ5TGlzdDxCcmVhZGNydW1iSXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoTWVudUNvbXBvbmVudClcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tZW51Q29tcG9uZW50OiBNZW51Q29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKE92ZXJmbG93TGF5b3V0Q29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX292ZXJmbG93TGF5b3V0OiBPdmVyZmxvd0xheW91dENvbXBvbmVudDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBBcnJheSBvZiBicmVhZGNydW1iIGl0ZW1zLlxuICAgICAqL1xuICAgIF9pdGVtczogQnJlYWRjcnVtYkl0ZW1Db21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGxhY2VtZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGxhY2VtZW50PignYm90dG9tLXN0YXJ0Jyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIHByaXZhdGUgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2UgfCBudWxsLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcnRsU2VydmljZT8ucnRsXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gdGhpcy5fcGxhY2VtZW50JC5uZXh0KHZhbHVlID8gJ2JvdHRvbS1lbmQnIDogJ2JvdHRvbS1zdGFydCcpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vdmVyZmxvd0xheW91dC50cmlnZ2VyUmVjYWxjdWxhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdlIGNhdGNoIGludGVyYWN0aW9ucyB3aXRoIGl0ZW0sIEVudGVyLCBTcGFjZSwgTW91c2UgY2xpY2sgYW5kIFRvdWNoIGNsaWNrLFxuICAgICAqIGlmIG9yaWdpbmFsIGVsZW1lbnQgaGFkIHJvdXRlciBsaW5rIHdlIGFyZSBwcm94eWluZyBjbGljayB0byB0aGF0IGVsZW1lbnRcbiAgICAgKiAqL1xuICAgIGl0ZW1DbGlja2VkKGJyZWFkY3J1bWJJdGVtOiBCcmVhZGNydW1iSXRlbUNvbXBvbmVudCwgJGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoYnJlYWRjcnVtYkl0ZW0uX25lZWRzQ2xpY2tQcm94eSkge1xuICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBicmVhZGNydW1iSXRlbS5icmVhZGNydW1iTGluay5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRJdGVtcygpO1xuXG4gICAgICAgIHRoaXMuX2NvbnRlbnRJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9zZXRJdGVtcygpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9rZXlEb3duSGFuZGxlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9tZW51Q29tcG9uZW50LnRvZ2dsZSgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uSGlkZGVuQ2hhbmdlKGlzSGlkZGVuOiBib29sZWFuLCBicmVhZGNydW1iOiBCcmVhZGNydW1iSXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzSGlkZGVuKSB7XG4gICAgICAgICAgICBicmVhZGNydW1iLl9kZXRhY2goKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJyZWFkY3J1bWIuX2F0dGFjaCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25WaXNpYmxlSXRlbXNDb3VudENoYW5nZSh2aXNpYmxlSXRlbXNDb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlzaWJsZUl0ZW1zQ291bnQuZW1pdCh2aXNpYmxlSXRlbXNDb3VudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25IaWRkZW5JdGVtc0NvdW50Q2hhbmdlKGhpZGRlbkl0ZW1zQ291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmhpZGRlbkl0ZW1zQ291bnQuZW1pdChoaWRkZW5JdGVtc0NvdW50KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldEl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb250ZW50SXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5zZXRQb3J0YWwoKSk7XG4gICAgICAgIHRoaXMuX2l0ZW1zID0gdGhpcy5fY29udGVudEl0ZW1zLnRvQXJyYXkoKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG59XG4iLCI8ZmQtb3ZlcmZsb3ctbGF5b3V0XG4gICAgW3JldmVyc2VIaWRkZW5JdGVtc109XCIhcmV2ZXJzZVwiXG4gICAgc2hvd01vcmVQb3NpdGlvbj1cImxlZnRcIlxuICAgIFtlbmFibGVLZXlib2FyZE5hdmlnYXRpb25dPVwiZmFsc2VcIlxuICAgICh2aXNpYmxlSXRlbXNDb3VudCk9XCJfb25WaXNpYmxlSXRlbXNDb3VudENoYW5nZSgkZXZlbnQpXCJcbiAgICAoaGlkZGVuSXRlbXNDb3VudCk9XCJfb25IaWRkZW5JdGVtc0NvdW50Q2hhbmdlKCRldmVudClcIlxuPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJyZWFkY3J1bWIgb2YgX2l0ZW1zXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpmZE92ZXJmbG93SXRlbVJlZj1cImJyZWFkY3J1bWI7IGxldCBoaWRkZW5cIlxuICAgICAgICAgICAgZmRPdmVyZmxvd0xheW91dEl0ZW1cbiAgICAgICAgICAgIChoaWRkZW5DaGFuZ2UpPVwiX29uSGlkZGVuQ2hhbmdlKCRldmVudCwgYnJlYWRjcnVtYilcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJicmVhZGNydW1iLnBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKmZkT3ZlcmZsb3dFeHBhbmQ9XCJsZXQgYnJlYWRjcnVtYnM7IGl0ZW1zOiBfaXRlbXNcIj5cbiAgICAgICAgPGZkLW1lbnUgI21lbnUgW2Nsb3NlT25Fc2NhcGVLZXldPVwidHJ1ZVwiIFtmb2N1c0F1dG9DYXB0dXJlXT1cInRydWVcIiBbcGxhY2VtZW50XT1cIl9wbGFjZW1lbnQkIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJyZWFkY3J1bWJJdGVtIG9mIGJyZWFkY3J1bWJzXCI+XG4gICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgIGZkLW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJMaW5rID8gYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iTGluay5kaXNhYmxlZCA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtbWVudS1pbnRlcmFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIml0ZW1DbGlja2VkKGJyZWFkY3J1bWJJdGVtLml0ZW0sICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaXRlbUNsaWNrZWQoYnJlYWRjcnVtYkl0ZW0uaXRlbSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJpdGVtQ2xpY2tlZChicmVhZGNydW1iSXRlbS5pdGVtLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkY3J1bWJJdGVtPy5pdGVtLmJyZWFkY3J1bWJMaW5rOyBlbHNlIHBvcnRhbENvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYnJlYWRjcnVtYkl0ZW0uaXRlbS5icmVhZGNydW1iTGluay5fcHJlZml4SWNvbk5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLW1lbnUtYWRkb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYmVmb3JlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCJicmVhZGNydW1iSXRlbS5pdGVtLmJyZWFkY3J1bWJMaW5rLl9wcmVmaXhJY29uTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbY2RrUG9ydGFsT3V0bGV0XT1cImJyZWFkY3J1bWJJdGVtLml0ZW0ubGlua0NvbnRlbnRQb3J0YWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkxpbmsuX3Bvc3RmaXhJY29uTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cImJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkxpbmsuX3Bvc3RmaXhJY29uTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcG9ydGFsQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2RrUG9ydGFsT3V0bGV0XT1cImJyZWFkY3J1bWJJdGVtLml0ZW0uYnJlYWRjcnVtYkl0ZW1Qb3J0YWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1tZW51PlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZkLWJyZWFkY3J1bWJfX2l0ZW1cIiAqbmdJZj1cImJyZWFkY3J1bWJzLmxlbmd0aCA+IDBcIiBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGZkLWxpbmtcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidjb3JlQnJlYWRjcnVtYi5vdmVyZmxvd1RpdGxlTW9yZScgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1icmVhZGNydW1iX19jb2xsYXBzZWRcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIl9rZXlEb3duSGFuZGxlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIl9rZXlEb3duSGFuZGxlKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxmZC1pY29uXG4gICAgICAgICAgICAgICAgICAgIGdseXBoPVwib3ZlcmZsb3dcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ2NvcmVCcmVhZGNydW1iLm92ZXJmbG93VGl0bGVNb3JlJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCInY29yZUJyZWFkY3J1bWIub3ZlcmZsb3dUaXRsZU1vcmUnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgID48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJzbGltLWFycm93LWRvd25cIj48L2ZkLWljb24+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZmQtb3ZlcmZsb3ctbGF5b3V0PlxuXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -3,13 +3,12 @@ import { Subject } from 'rxjs';
|
|
|
3
3
|
import { takeUntil } from 'rxjs/operators';
|
|
4
4
|
import { DatetimeAdapter } from '@fundamental-ngx/core/datetime';
|
|
5
5
|
import { NgIf } from '@angular/common';
|
|
6
|
-
import {
|
|
6
|
+
import { ButtonComponent } from '@fundamental-ngx/core/button';
|
|
7
7
|
import { FdTranslatePipe } from '@fundamental-ngx/i18n';
|
|
8
8
|
import { CalendarService } from '../calendar.service';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "../calendar.service";
|
|
11
11
|
import * as i2 from "@fundamental-ngx/core/datetime";
|
|
12
|
-
import * as i3 from "@fundamental-ngx/core/button";
|
|
13
12
|
/**
|
|
14
13
|
* Internal use only.
|
|
15
14
|
* Header of the calendar component.
|
|
@@ -206,13 +205,13 @@ export class CalendarHeaderComponent {
|
|
|
206
205
|
return this._dateTimeAdapter.getYearName(this._dateTimeAdapter.createDate(year, 1, 1));
|
|
207
206
|
}
|
|
208
207
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CalendarHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CalendarService }, { token: i2.DatetimeAdapter }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
209
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: CalendarHeaderComponent, isStandalone: true, selector: "fd-calendar-header", inputs: { activeView: "activeView", currentlyDisplayed: "currentlyDisplayed", previousButtonDisabled: "previousButtonDisabled", nextButtonDisabled: "nextButtonDisabled", calendarYearGrid: "calendarYearGrid", id: "id", mobileLandscape: "mobileLandscape" }, outputs: { activeViewChange: "activeViewChange", previousClicked: "previousClicked", nextClicked: "nextClicked" }, host: { properties: { "attr.id": "viewId" } }, viewQueries: [{ propertyName: "_prevButtonComponent", first: true, predicate: ["prevButton"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<header 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 fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel | fdTranslate\"\n [ariaLabel]=\"previousAriaLabel | fdTranslate\"\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 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 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 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 fdType=\"transparent\"\n glyph=\"slim-arrow-right\"\n [attr.id]=\"_nextButtonId\"\n [disabled]=\"nextButtonDisabled\"\n [attr.title]=\"nextAriaLabel | fdTranslate\"\n [ariaLabel]=\"nextAriaLabel | fdTranslate\"\n (click)=\"nextClicked.emit()\"\n type=\"button\"\n ></button>\n </div>\n</header>\n\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_selectMonthButtonAriaLabelId\">{{ selectMonthAriaLabel | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearButtonAriaLabelId\">{{ 'coreCalendar.yearSelectionLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearsRangeButtonAriaLabelId\">{{ selectAggregatedYearAriaLabel | fdTranslate }}</div>\n</div>\n", styles: [""], dependencies: [{ kind: "
|
|
208
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: CalendarHeaderComponent, isStandalone: true, selector: "fd-calendar-header", inputs: { activeView: "activeView", currentlyDisplayed: "currentlyDisplayed", previousButtonDisabled: "previousButtonDisabled", nextButtonDisabled: "nextButtonDisabled", calendarYearGrid: "calendarYearGrid", id: "id", mobileLandscape: "mobileLandscape" }, outputs: { activeViewChange: "activeViewChange", previousClicked: "previousClicked", nextClicked: "nextClicked" }, host: { properties: { "attr.id": "viewId" } }, viewQueries: [{ propertyName: "_prevButtonComponent", first: true, predicate: ["prevButton"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<header 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 fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel | fdTranslate\"\n [ariaLabel]=\"previousAriaLabel | fdTranslate\"\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 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 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 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 fdType=\"transparent\"\n glyph=\"slim-arrow-right\"\n [attr.id]=\"_nextButtonId\"\n [disabled]=\"nextButtonDisabled\"\n [attr.title]=\"nextAriaLabel | fdTranslate\"\n [ariaLabel]=\"nextAriaLabel | fdTranslate\"\n (click)=\"nextClicked.emit()\"\n type=\"button\"\n ></button>\n </div>\n</header>\n\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_selectMonthButtonAriaLabelId\">{{ selectMonthAriaLabel | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearButtonAriaLabelId\">{{ 'coreCalendar.yearSelectionLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearsRangeButtonAriaLabelId\">{{ selectAggregatedYearAriaLabel | fdTranslate }}</div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
210
209
|
}
|
|
211
210
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: CalendarHeaderComponent, decorators: [{
|
|
212
211
|
type: Component,
|
|
213
212
|
args: [{ selector: 'fd-calendar-header', encapsulation: ViewEncapsulation.None, host: {
|
|
214
213
|
'[attr.id]': 'viewId'
|
|
215
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
214
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ButtonComponent, NgIf, FdTranslatePipe], template: "<header 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 fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel | fdTranslate\"\n [ariaLabel]=\"previousAriaLabel | fdTranslate\"\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 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 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 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 fdType=\"transparent\"\n glyph=\"slim-arrow-right\"\n [attr.id]=\"_nextButtonId\"\n [disabled]=\"nextButtonDisabled\"\n [attr.title]=\"nextAriaLabel | fdTranslate\"\n [ariaLabel]=\"nextAriaLabel | fdTranslate\"\n (click)=\"nextClicked.emit()\"\n type=\"button\"\n ></button>\n </div>\n</header>\n\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_selectMonthButtonAriaLabelId\">{{ selectMonthAriaLabel | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearButtonAriaLabelId\">{{ 'coreCalendar.yearSelectionLabel' | fdTranslate }}</div>\n <div [attr.id]=\"_selectYearsRangeButtonAriaLabelId\">{{ selectAggregatedYearAriaLabel | fdTranslate }}</div>\n</div>\n" }]
|
|
216
215
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.CalendarService }, { type: i2.DatetimeAdapter }]; }, propDecorators: { activeView: [{
|
|
217
216
|
type: Input
|
|
218
217
|
}], currentlyDisplayed: [{
|
|
@@ -237,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
|
|
|
237
236
|
type: ViewChild,
|
|
238
237
|
args: ['prevButton', { read: ElementRef }]
|
|
239
238
|
}] } });
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWhlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItaGVhZGVyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7QUFLdEQ7OztHQUdHO0FBYUgsTUFBTSxPQUFPLHVCQUF1QjtJQWlCaEM7O09BRUc7SUFDSCxJQUNJLGdCQUFnQixDQUFDLFFBQTBCO1FBQzNDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxtQ0FBbUMsRUFB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RG5CLE1BQU07Z0JBK0hQLG9CQUFvQjtzQkFEbkIsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEYXRldGltZUFkYXB0ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgRmRUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IENhbGVuZGFyU2VydmljZSB9IGZyb20gJy4uL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDdXJyZW50IH0gZnJvbSAnLi4vbW9kZWxzL2NhbGVuZGFyLWN1cnJlbnQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJZZWFyR3JpZCB9IGZyb20gJy4uL21vZGVscy9jYWxlbmRhci15ZWFyLWdyaWQnO1xuaW1wb3J0IHsgRmRDYWxlbmRhclZpZXcgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogSW50ZXJuYWwgdXNlIG9ubHkuXG4gKiBIZWFkZXIgb2YgdGhlIGNhbGVuZGFyIGNvbXBvbmVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1jYWxlbmRhci1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuaWRdJzogJ3ZpZXdJZCdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0J1dHRvbk1vZHVsZSwgTmdJZiwgRmRUcmFuc2xhdGVQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckhlYWRlckNvbXBvbmVudDxEPiBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIC8qKiBDdXJyZW50bHkgYWN0aXZlIHZpZXcuIE5lZWRlZCBmb3IgYTExeSBsYWJlbHMuICovXG4gICAgQElucHV0KClcbiAgICBhY3RpdmVWaWV3OiBGZENhbGVuZGFyVmlldztcblxuICAgIC8qKiBDdXJyZW50bHkgZGlzcGxheWVkIGRhdGUgb24gdGhlIGNhbGVuZGFyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3VycmVudGx5RGlzcGxheWVkOiBDYWxlbmRhckN1cnJlbnQ7XG5cbiAgICAvKiogd2hldGhlciBwcmV2aW91cyBuYXZpZ2F0aW9uIGJ1dHRvbiBzaG91bGQgYmUgZGlzYWJsZWQgaW4gdGhlIGhlYWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIHByZXZpb3VzQnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKiogd2hldGhlciBuZXh0IG5hdmlnYXRpb24gYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZCBpbiB0aGUgaGVhZGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmV4dEJ1dHRvbkRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogT2JqZWN0IHRvIGN1c3RvbWl6ZSB5ZWFyIGdyaWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjYWxlbmRhclllYXJHcmlkKHllYXJHcmlkOiBDYWxlbmRhclllYXJHcmlkKSB7XG4gICAgICAgIHRoaXMuX2Ftb3VudE9mWWVhcnNQZXJQZXJpb2QgPSB5ZWFyR3JpZC5jb2xzICogeWVhckdyaWQucm93cyAtIDE7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWwoKTtcbiAgICB9XG5cbiAgICAvKiogQ2FsZW5kYXIgSUQgKi9cbiAgICBASW5wdXQoKVxuICAgIGlkOiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciBjYWxlbmRhciBzaG91bGQgYmUgcmVuZGVyZWQgaW4gbW9iaWxlIGxhbmRzY2FwZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlTGFuZHNjYXBlID0gZmFsc2U7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhY3RpdmUgdmlldyBzaG91bGQgY2hhbmdlLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGFjdGl2ZVZpZXdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGZENhbGVuZGFyVmlldz4gPSBuZXcgRXZlbnRFbWl0dGVyPEZkQ2FsZW5kYXJWaWV3PigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcHJldmlvdXMgYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgcHJldmlvdXNDbGlja2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBuZXh0IGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IG5leHRDbGlja2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIHByZXZpb3VzIGJ1dHRvbi4gRGVwZW5kcyBvbiB0aGUgYWN0aXZlIHZpZXcuICovXG4gICAgZ2V0IHByZXZpb3VzQXJpYUxhYmVsKCk6ICdjb3JlQ2FsZW5kYXIucHJldmlvdXNNb250aExhYmVsJyB8ICdjb3JlQ2FsZW5kYXIucHJldmlvdXNZZWFyTGFiZWwnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNPbkRheVZpZXcgPyAnY29yZUNhbGVuZGFyLnByZXZpb3VzTW9udGhMYWJlbCcgOiAnY29yZUNhbGVuZGFyLnByZXZpb3VzWWVhckxhYmVsJztcbiAgICB9XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIG5leHQgYnV0dG9uLiBEZXBlbmRzIG9uIHRoZSBhY3RpdmUgdmlldy4gKi9cbiAgICBnZXQgbmV4dEFyaWFMYWJlbCgpOiAnY29yZUNhbGVuZGFyLm5leHRNb250aExhYmVsJyB8ICdjb3JlQ2FsZW5kYXIubmV4dFllYXJMYWJlbCcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09uRGF5VmlldyA/ICdjb3JlQ2FsZW5kYXIubmV4dE1vbnRoTGFiZWwnIDogJ2NvcmVDYWxlbmRhci5uZXh0WWVhckxhYmVsJztcbiAgICB9XG5cbiAgICAvKiogQnV0dG9uIGFyaWEgbGFiZWwgdG8gb3BlbiBtb250aCBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBnZXQgc2VsZWN0TW9udGhBcmlhTGFiZWwoKTogJ2NvcmVDYWxlbmRhci5tb250aFNlbGVjdGlvbkxhYmVsJyB8ICdjb3JlQ2FsZW5kYXIuZGF0ZVNlbGVjdGlvbkxhYmVsJyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzT25Nb250aFZpZXcgPyAnY29yZUNhbGVuZGFyLmRhdGVTZWxlY3Rpb25MYWJlbCcgOiAnY29yZUNhbGVuZGFyLm1vbnRoU2VsZWN0aW9uTGFiZWwnO1xuICAgIH1cblxuICAgIC8qKiBCdXR0b24gYXJpYSBsYWJlbCB0byBvcGVuIGFnZ3JlZ2F0ZWQgeWVhcnMgc2VsZWN0aW9uIHZpZXcuICovXG4gICAgZ2V0IHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsKCk6ICdjb3JlQ2FsZW5kYXIueWVhcnNSYW5nZVNlbGVjdGlvbkxhYmVsJyB8ICdjb3JlQ2FsZW5kYXIuZGF0ZVNlbGVjdGlvbkxhYmVsJyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzT25BZ2dyZWdhdGVkWWVhcnNWaWV3XG4gICAgICAgICAgICA/ICdjb3JlQ2FsZW5kYXIuZGF0ZVNlbGVjdGlvbkxhYmVsJ1xuICAgICAgICAgICAgOiAnY29yZUNhbGVuZGFyLnllYXJzUmFuZ2VTZWxlY3Rpb25MYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqIEJ1dHRvbiBsYWJlbCB0byBvcGVuIG1vbnRoIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIHNlbGVjdE1vbnRoTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBCdXR0b24gbGFiZWwgdG8gb3BlbiB5ZWFyIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIHNlbGVjdFllYXJMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEJ1dHRvbiBsYWJlbCB0byBvcGVuIGFnZ3JlZ2F0ZWQgeWVhcnMgc2VsZWN0aW9uIHZpZXcuICovXG4gICAgc2VsZWN0QWdncmVnYXRlZFllYXJMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEdldCBpbmZvcm1hdGlvbiBpcyBjYWxlbmRhciBpcyBvbiBhZ2dyZWdhdGVkIHllYXJzIHZpZXcgKi9cbiAgICBnZXQgaXNPbkFnZ3JlZ2F0ZWRZZWFyc1ZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVZpZXcgPT09ICdhZ2dyZWdhdGVkWWVhcic7XG4gICAgfVxuXG4gICAgLyoqIEdldCBpbmZvcm1hdGlvbiBpcyBjYWxlbmRhciBpcyBvbiB5ZWFyIHZpZXcgKi9cbiAgICBnZXQgaXNPblllYXJWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSAneWVhcic7XG4gICAgfVxuXG4gICAgLyoqIEdldCBpbmZvcm1hdGlvbiBpcyBjYWxlbmRhciBpcyBvbiBtb250aCB2aWV3ICovXG4gICAgZ2V0IGlzT25Nb250aFZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVZpZXcgPT09ICdtb250aCc7XG4gICAgfVxuXG4gICAgLyoqIEdldCBpbmZvcm1hdGlvbiBpcyBjYWxlbmRhciBpcyBvbiBkYXkgdmlldyAqL1xuICAgIGdldCBpc09uRGF5VmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gJ2RheSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IGlkXG4gICAgICovXG4gICAgZ2V0IHZpZXdJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCArICctaGVhZGVyJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogUHJldmlvdXMgYnV0dG9uIGlkXG4gICAgICovXG4gICAgZ2V0IF9wcmV2QnV0dG9uSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1sZWZ0LWFycm93JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTmV4dCBidXR0b24gaWRcbiAgICAgKi9cbiAgICBnZXQgX25leHRCdXR0b25JZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXJpZ2h0LWFycm93JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTW9udGggbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX21vbnRoQnV0dG9uTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLW1vbnRoLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2VsZWN0IG1vbnRoIGFyaWEgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdE1vbnRoQnV0dG9uQXJpYUxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1zZWxlY3QtbW9udGgtYXJpYS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFllYXIgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3llYXJCdXR0b25MYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICcteWVhci1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNlbGVjdCB5ZWFyIGFyaWEgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdFllYXJCdXR0b25BcmlhTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXNlbGVjdC15ZWFyLWFyaWEtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBZZWFycyByYW5nZSBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfeWVhcnNSYW5nZUJ1dHRvbkxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy15ZWFycy1yYW5nZS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFNlbGVjdCB5ZWFycyByYW5nZSBhcmlhIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF9zZWxlY3RZZWFyc1JhbmdlQnV0dG9uQXJpYUxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy1zZWxlY3QteWVhcnMtcmFuZ2UtYXJpYS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdwcmV2QnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgX3ByZXZCdXR0b25Db21wb25lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBNb250aCBuYW1lcyAqL1xuICAgIHByaXZhdGUgX21vbnRoTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGFib3V0IGFtb3VudCBvZiB5ZWFycyBkaXNwbGF5ZWQgYXQgb25jZSBvbiB5ZWFyIHZpZXcgICovXG4gICAgcHJpdmF0ZSBfYW1vdW50T2ZZZWFyc1BlclBlcmlvZCA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9jYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD5cbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoY2hhbmdlcy5jdXJyZW50bHlEaXNwbGF5ZWQgJiYgIWNoYW5nZXMuY3VycmVudGx5RGlzcGxheWVkLmZpcnN0Q2hhbmdlKSB8fFxuICAgICAgICAgICAgKGNoYW5nZXMuYWN0aXZlVmlldyAmJiAhY2hhbmdlcy5hY3RpdmVWaWV3LmZpcnN0Q2hhbmdlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUxhYmVscygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmxlZnRBcnJvd0lkID0gdGhpcy5fcHJldkJ1dHRvbklkO1xuXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZU1vbnRoTmFtZXMoKTtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVMYWJlbHMoKTtcblxuICAgICAgICB0aGlzLl9saXN0ZW5Ub0xvY2FsZUNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2N1cyBvbiBmb2N1c2FibGUgY29udHJvbCB3aXRoaW4gdGhlIGhlYWRlclxuICAgICAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcmV2QnV0dG9uQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcHJvY2Vzc1ZpZXdDaGFuZ2UodHlwZTogRmRDYWxlbmRhclZpZXcsIGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gdHlwZSA9PT0gdGhpcy5hY3RpdmVWaWV3ID8gJ2RheScgOiB0eXBlO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlVmlld0NoYW5nZS5lbWl0KHRoaXMuYWN0aXZlVmlldyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0xvY2FsZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5sb2NhbGVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlTW9udGhOYW1lcygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlTGFiZWxzKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTGFiZWxzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RNb250aExhYmVsKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdFllYXJMYWJlbCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RNb250aExhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdE1vbnRoTGFiZWwgPSB0aGlzLl9tb250aE5hbWVzW3RoaXMuY3VycmVudGx5RGlzcGxheWVkLm1vbnRoIC0gMV07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RZZWFyTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0WWVhckxhYmVsID0gdGhpcy5fZ2V0WWVhck5hbWUodGhpcy5jdXJyZW50bHlEaXNwbGF5ZWQueWVhcik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWwgPSBgJHt0aGlzLl9nZXRZZWFyTmFtZSh0aGlzLmN1cnJlbnRseURpc3BsYXllZC55ZWFyKX0tJHt0aGlzLl9nZXRZZWFyTmFtZShcbiAgICAgICAgICAgIHRoaXMuY3VycmVudGx5RGlzcGxheWVkLnllYXIgKyB0aGlzLl9hbW91bnRPZlllYXJzUGVyUGVyaW9kXG4gICAgICAgICl9YDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZU1vbnRoTmFtZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX21vbnRoTmFtZXMgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZ2V0TW9udGhOYW1lcygnbG9uZycpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0WWVhck5hbWUoeWVhcjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRZZWFyTmFtZSh0aGlzLl9kYXRlVGltZUFkYXB0ZXIuY3JlYXRlRGF0ZSh5ZWFyLCAxLCAxKSk7XG4gICAgfVxufVxuIiwiPGhlYWRlciBjbGFzcz1cImZkLWNhbGVuZGFyX19uYXZpZ2F0aW9uXCIgW2NsYXNzLmZkLWNhbGVuZGFyX19uYXZpZ2F0aW9uLS1tYWluXT1cIm1vYmlsZUxhbmRzY2FwZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fYWN0aW9uIGZkLWNhbGVuZGFyX19hY3Rpb24tLWFycm93LWxlZnRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgI3ByZXZCdXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgZ2x5cGg9XCJzbGltLWFycm93LWxlZnRcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiX3ByZXZCdXR0b25JZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJldmlvdXNCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXR0ci50aXRsZV09XCJwcmV2aW91c0FyaWFMYWJlbCB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwicHJldmlvdXNBcmlhTGFiZWwgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c0NsaWNrZWQuZW1pdCgpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09uRGF5VmlldyB8fCBpc09uTW9udGhWaWV3XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fYWN0aW9uXCI+XG4gICAgICAgICAgICA8IS0tIFNlbGVjdCBtb250aCBidXR0b24gLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJfbW9udGhCdXR0b25MYWJlbElkICsgJyAnICsgX3NlbGVjdE1vbnRoQnV0dG9uQXJpYUxhYmVsSWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmQtY2FsZW5kYXItbW9udGhdPVwiY3VycmVudGx5RGlzcGxheWVkLm1vbnRoXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3Byb2Nlc3NWaWV3Q2hhbmdlKCdtb250aCcsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIFthdHRyLmlkXT1cIl9tb250aEJ1dHRvbkxhYmVsSWRcIj57eyBzZWxlY3RNb250aExhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvblwiPlxuICAgICAgICAgICAgPCEtLSBTZWxlY3QgeWVhciBidXR0b24gLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJfeWVhckJ1dHRvbkxhYmVsSWQgKyAnICcgKyBfc2VsZWN0WWVhckJ1dHRvbkFyaWFMYWJlbElkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWZkLWNhbGVuZGFyLXllYXJdPVwiY3VycmVudGx5RGlzcGxheWVkLnllYXJcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfcHJvY2Vzc1ZpZXdDaGFuZ2UoJ3llYXInLCAkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbYXR0ci5pZF09XCJfeWVhckJ1dHRvbkxhYmVsSWRcIj57eyBzZWxlY3RZZWFyTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT25BZ2dyZWdhdGVkWWVhcnNWaWV3IHx8IGlzT25ZZWFyVmlld1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvblwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX3llYXJzUmFuZ2VCdXR0b25MYWJlbElkICsgJyAnICsgX3NlbGVjdFllYXJzUmFuZ2VCdXR0b25BcmlhTGFiZWxJZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9wcm9jZXNzVmlld0NoYW5nZSgnYWdncmVnYXRlZFllYXInLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbYXR0ci5pZF09XCJfeWVhcnNSYW5nZUJ1dHRvbkxhYmVsSWRcIj57eyBzZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fYWN0aW9uIGZkLWNhbGVuZGFyX19hY3Rpb24tLWFycm93LXJpZ2h0XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgZ2x5cGg9XCJzbGltLWFycm93LXJpZ2h0XCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cIl9uZXh0QnV0dG9uSWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5leHRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICBbYXR0ci50aXRsZV09XCJuZXh0QXJpYUxhYmVsIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJuZXh0QXJpYUxhYmVsIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRDbGlja2VkLmVtaXQoKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9oZWFkZXI+XG5cbjwhLS0gSGlkZGVuIGVsZW1lbnRzIGZvciBhcmlhIHB1cnBvc2VzIC0tPlxuPGRpdiBoaWRkZW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPGRpdiBbYXR0ci5pZF09XCJfc2VsZWN0TW9udGhCdXR0b25BcmlhTGFiZWxJZFwiPnt7IHNlbGVjdE1vbnRoQXJpYUxhYmVsIHwgZmRUcmFuc2xhdGUgfX08L2Rpdj5cbiAgICA8ZGl2IFthdHRyLmlkXT1cIl9zZWxlY3RZZWFyQnV0dG9uQXJpYUxhYmVsSWRcIj57eyAnY29yZUNhbGVuZGFyLnllYXJTZWxlY3Rpb25MYWJlbCcgfCBmZFRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDxkaXYgW2F0dHIuaWRdPVwiX3NlbGVjdFllYXJzUmFuZ2VCdXR0b25BcmlhTGFiZWxJZFwiPnt7IHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsIHwgZmRUcmFuc2xhdGUgfX08L2Rpdj5cbjwvZGl2PlxuIl19
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWhlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItaGVhZGVyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQUt0RDs7O0dBR0c7QUFhSCxNQUFNLE9BQU8sdUJBQXVCO0lBaUJoQzs7T0FFRztJQUNILElBQ0ksZ0JBQWdCLENBQUMsUUFBMEI7UUFDM0MsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLG1DQUFtQyxFQUFF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bkIsTUFBTTtnQkErSFAsb0JBQW9CO3NCQURuQixTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5cbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgQ2FsZW5kYXJTZXJ2aWNlIH0gZnJvbSAnLi4vY2FsZW5kYXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYWxlbmRhckN1cnJlbnQgfSBmcm9tICcuLi9tb2RlbHMvY2FsZW5kYXItY3VycmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhclllYXJHcmlkIH0gZnJvbSAnLi4vbW9kZWxzL2NhbGVuZGFyLXllYXItZ3JpZCc7XG5pbXBvcnQgeyBGZENhbGVuZGFyVmlldyB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBJbnRlcm5hbCB1c2Ugb25seS5cbiAqIEhlYWRlciBvZiB0aGUgY2FsZW5kYXIgY29tcG9uZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWNhbGVuZGFyLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5pZF0nOiAndmlld0lkJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQnV0dG9uQ29tcG9uZW50LCBOZ0lmLCBGZFRyYW5zbGF0ZVBpcGVdXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFySGVhZGVyQ29tcG9uZW50PEQ+IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgLyoqIEN1cnJlbnRseSBhY3RpdmUgdmlldy4gTmVlZGVkIGZvciBhMTF5IGxhYmVscy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFjdGl2ZVZpZXc6IEZkQ2FsZW5kYXJWaWV3O1xuXG4gICAgLyoqIEN1cnJlbnRseSBkaXNwbGF5ZWQgZGF0ZSBvbiB0aGUgY2FsZW5kYXIuICovXG4gICAgQElucHV0KClcbiAgICBjdXJyZW50bHlEaXNwbGF5ZWQ6IENhbGVuZGFyQ3VycmVudDtcblxuICAgIC8qKiB3aGV0aGVyIHByZXZpb3VzIG5hdmlnYXRpb24gYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZCBpbiB0aGUgaGVhZGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHJldmlvdXNCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKiB3aGV0aGVyIG5leHQgbmF2aWdhdGlvbiBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkIGluIHRoZSBoZWFkZXIuICovXG4gICAgQElucHV0KClcbiAgICBuZXh0QnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBPYmplY3QgdG8gY3VzdG9taXplIHllYXIgZ3JpZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNhbGVuZGFyWWVhckdyaWQoeWVhckdyaWQ6IENhbGVuZGFyWWVhckdyaWQpIHtcbiAgICAgICAgdGhpcy5fYW1vdW50T2ZZZWFyc1BlclBlcmlvZCA9IHllYXJHcmlkLmNvbHMgKiB5ZWFyR3JpZC5yb3dzIC0gMTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlU2VsZWN0QWdncmVnYXRlZFllYXJMYWJlbCgpO1xuICAgIH1cblxuICAgIC8qKiBDYWxlbmRhciBJRCAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIGNhbGVuZGFyIHNob3VsZCBiZSByZW5kZXJlZCBpbiBtb2JpbGUgbGFuZHNjYXBlIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGVMYW5kc2NhcGUgPSBmYWxzZTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFjdGl2ZSB2aWV3IHNob3VsZCBjaGFuZ2UuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgYWN0aXZlVmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPEZkQ2FsZW5kYXJWaWV3PiA9IG5ldyBFdmVudEVtaXR0ZXI8RmRDYWxlbmRhclZpZXc+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwcmV2aW91cyBidXR0b24gaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBwcmV2aW91c0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG5leHQgYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgbmV4dENsaWNrZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgcHJldmlvdXMgYnV0dG9uLiBEZXBlbmRzIG9uIHRoZSBhY3RpdmUgdmlldy4gKi9cbiAgICBnZXQgcHJldmlvdXNBcmlhTGFiZWwoKTogJ2NvcmVDYWxlbmRhci5wcmV2aW91c01vbnRoTGFiZWwnIHwgJ2NvcmVDYWxlbmRhci5wcmV2aW91c1llYXJMYWJlbCcge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09uRGF5VmlldyA/ICdjb3JlQ2FsZW5kYXIucHJldmlvdXNNb250aExhYmVsJyA6ICdjb3JlQ2FsZW5kYXIucHJldmlvdXNZZWFyTGFiZWwnO1xuICAgIH1cblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgbmV4dCBidXR0b24uIERlcGVuZHMgb24gdGhlIGFjdGl2ZSB2aWV3LiAqL1xuICAgIGdldCBuZXh0QXJpYUxhYmVsKCk6ICdjb3JlQ2FsZW5kYXIubmV4dE1vbnRoTGFiZWwnIHwgJ2NvcmVDYWxlbmRhci5uZXh0WWVhckxhYmVsJyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzT25EYXlWaWV3ID8gJ2NvcmVDYWxlbmRhci5uZXh0TW9udGhMYWJlbCcgOiAnY29yZUNhbGVuZGFyLm5leHRZZWFyTGFiZWwnO1xuICAgIH1cblxuICAgIC8qKiBCdXR0b24gYXJpYSBsYWJlbCB0byBvcGVuIG1vbnRoIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIGdldCBzZWxlY3RNb250aEFyaWFMYWJlbCgpOiAnY29yZUNhbGVuZGFyLm1vbnRoU2VsZWN0aW9uTGFiZWwnIHwgJ2NvcmVDYWxlbmRhci5kYXRlU2VsZWN0aW9uTGFiZWwnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNPbk1vbnRoVmlldyA/ICdjb3JlQ2FsZW5kYXIuZGF0ZVNlbGVjdGlvbkxhYmVsJyA6ICdjb3JlQ2FsZW5kYXIubW9udGhTZWxlY3Rpb25MYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqIEJ1dHRvbiBhcmlhIGxhYmVsIHRvIG9wZW4gYWdncmVnYXRlZCB5ZWFycyBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBnZXQgc2VsZWN0QWdncmVnYXRlZFllYXJBcmlhTGFiZWwoKTogJ2NvcmVDYWxlbmRhci55ZWFyc1JhbmdlU2VsZWN0aW9uTGFiZWwnIHwgJ2NvcmVDYWxlbmRhci5kYXRlU2VsZWN0aW9uTGFiZWwnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNPbkFnZ3JlZ2F0ZWRZZWFyc1ZpZXdcbiAgICAgICAgICAgID8gJ2NvcmVDYWxlbmRhci5kYXRlU2VsZWN0aW9uTGFiZWwnXG4gICAgICAgICAgICA6ICdjb3JlQ2FsZW5kYXIueWVhcnNSYW5nZVNlbGVjdGlvbkxhYmVsJztcbiAgICB9XG5cbiAgICAvKiogQnV0dG9uIGxhYmVsIHRvIG9wZW4gbW9udGggc2VsZWN0aW9uIHZpZXcuICovXG4gICAgc2VsZWN0TW9udGhMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEJ1dHRvbiBsYWJlbCB0byBvcGVuIHllYXIgc2VsZWN0aW9uIHZpZXcuICovXG4gICAgc2VsZWN0WWVhckxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGxhYmVsIHRvIG9wZW4gYWdncmVnYXRlZCB5ZWFycyBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIGFnZ3JlZ2F0ZWQgeWVhcnMgdmlldyAqL1xuICAgIGdldCBpc09uQWdncmVnYXRlZFllYXJzVmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gJ2FnZ3JlZ2F0ZWRZZWFyJztcbiAgICB9XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIHllYXIgdmlldyAqL1xuICAgIGdldCBpc09uWWVhclZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVZpZXcgPT09ICd5ZWFyJztcbiAgICB9XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIG1vbnRoIHZpZXcgKi9cbiAgICBnZXQgaXNPbk1vbnRoVmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gJ21vbnRoJztcbiAgICB9XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIGRheSB2aWV3ICovXG4gICAgZ2V0IGlzT25EYXlWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSAnZGF5JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wb25lbnQgaWRcbiAgICAgKi9cbiAgICBnZXQgdmlld0lkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJy1oZWFkZXInO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBQcmV2aW91cyBidXR0b24gaWRcbiAgICAgKi9cbiAgICBnZXQgX3ByZXZCdXR0b25JZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLWxlZnQtYXJyb3cnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBOZXh0IGJ1dHRvbiBpZFxuICAgICAqL1xuICAgIGdldCBfbmV4dEJ1dHRvbklkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctcmlnaHQtYXJyb3cnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNb250aCBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfbW9udGhCdXR0b25MYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctbW9udGgtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWxlY3QgbW9udGggYXJpYSBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfc2VsZWN0TW9udGhCdXR0b25BcmlhTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXNlbGVjdC1tb250aC1hcmlhLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogWWVhciBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfeWVhckJ1dHRvbkxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy15ZWFyLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2VsZWN0IHllYXIgYXJpYSBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfc2VsZWN0WWVhckJ1dHRvbkFyaWFMYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctc2VsZWN0LXllYXItYXJpYS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFllYXJzIHJhbmdlIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF95ZWFyc1JhbmdlQnV0dG9uTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXllYXJzLXJhbmdlLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2VsZWN0IHllYXJzIHJhbmdlIGFyaWEgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdFllYXJzUmFuZ2VCdXR0b25BcmlhTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXNlbGVjdC15ZWFycy1yYW5nZS1hcmlhLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3ByZXZCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBfcHJldkJ1dHRvbkNvbXBvbmVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIE1vbnRoIG5hbWVzICovXG4gICAgcHJpdmF0ZSBfbW9udGhOYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgYW1vdW50IG9mIHllYXJzIGRpc3BsYXllZCBhdCBvbmNlIG9uIHllYXIgdmlldyAgKi9cbiAgICBwcml2YXRlIF9hbW91bnRPZlllYXJzUGVyUGVyaW9kID0gMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2NhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9kYXRlVGltZUFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPlxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChjaGFuZ2VzLmN1cnJlbnRseURpc3BsYXllZCAmJiAhY2hhbmdlcy5jdXJyZW50bHlEaXNwbGF5ZWQuZmlyc3RDaGFuZ2UpIHx8XG4gICAgICAgICAgICAoY2hhbmdlcy5hY3RpdmVWaWV3ICYmICFjaGFuZ2VzLmFjdGl2ZVZpZXcuZmlyc3RDaGFuZ2UpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlTGFiZWxzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jYWxlbmRhclNlcnZpY2UubGVmdEFycm93SWQgPSB0aGlzLl9wcmV2QnV0dG9uSWQ7XG5cbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlTW9udGhOYW1lcygpO1xuXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUxhYmVscygpO1xuXG4gICAgICAgIHRoaXMuX2xpc3RlblRvTG9jYWxlQ2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvY3VzIG9uIGZvY3VzYWJsZSBjb250cm9sIHdpdGhpbiB0aGUgaGVhZGVyXG4gICAgICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ByZXZCdXR0b25Db21wb25lbnQubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wcm9jZXNzVmlld0NoYW5nZSh0eXBlOiBGZENhbGVuZGFyVmlldywgZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZVZpZXcgPSB0eXBlID09PSB0aGlzLmFjdGl2ZVZpZXcgPyAnZGF5JyA6IHR5cGU7XG5cbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3Q2hhbmdlLmVtaXQodGhpcy5hY3RpdmVWaWV3KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvTG9jYWxlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmxvY2FsZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVNb250aE5hbWVzKCk7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVMYWJlbHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVMYWJlbHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdE1vbnRoTGFiZWwoKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlU2VsZWN0WWVhckxhYmVsKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWwoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdE1vbnRoTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0TW9udGhMYWJlbCA9IHRoaXMuX21vbnRoTmFtZXNbdGhpcy5jdXJyZW50bHlEaXNwbGF5ZWQubW9udGggLSAxXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdFllYXJMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RZZWFyTGFiZWwgPSB0aGlzLl9nZXRZZWFyTmFtZSh0aGlzLmN1cnJlbnRseURpc3BsYXllZC55ZWFyKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWdncmVnYXRlZFllYXJMYWJlbCA9IGAke3RoaXMuX2dldFllYXJOYW1lKHRoaXMuY3VycmVudGx5RGlzcGxheWVkLnllYXIpfS0ke3RoaXMuX2dldFllYXJOYW1lKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50bHlEaXNwbGF5ZWQueWVhciArIHRoaXMuX2Ftb3VudE9mWWVhcnNQZXJQZXJpb2RcbiAgICAgICAgKX1gO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTW9udGhOYW1lcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbW9udGhOYW1lcyA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNb250aE5hbWVzKCdsb25nJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRZZWFyTmFtZSh5ZWFyOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXJOYW1lKHRoaXMuX2RhdGVUaW1lQWRhcHRlci5jcmVhdGVEYXRlKHllYXIsIDEsIDEpKTtcbiAgICB9XG59XG4iLCI8aGVhZGVyIGNsYXNzPVwiZmQtY2FsZW5kYXJfX25hdmlnYXRpb25cIiBbY2xhc3MuZmQtY2FsZW5kYXJfX25hdmlnYXRpb24tLW1haW5dPVwibW9iaWxlTGFuZHNjYXBlXCI+XG4gICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb24gZmQtY2FsZW5kYXJfX2FjdGlvbi0tYXJyb3ctbGVmdFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAjcHJldkJ1dHRvblxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBnbHlwaD1cInNsaW0tYXJyb3ctbGVmdFwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJfcHJldkJ1dHRvbklkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcmV2aW91c0J1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByZXZpb3VzQXJpYUxhYmVsIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJwcmV2aW91c0FyaWFMYWJlbCB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzQ2xpY2tlZC5lbWl0KClcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzT25EYXlWaWV3IHx8IGlzT25Nb250aFZpZXdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb25cIj5cbiAgICAgICAgICAgIDwhLS0gU2VsZWN0IG1vbnRoIGJ1dHRvbiAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl9tb250aEJ1dHRvbkxhYmVsSWQgKyAnICcgKyBfc2VsZWN0TW9udGhCdXR0b25BcmlhTGFiZWxJZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mZC1jYWxlbmRhci1tb250aF09XCJjdXJyZW50bHlEaXNwbGF5ZWQubW9udGhcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfcHJvY2Vzc1ZpZXdDaGFuZ2UoJ21vbnRoJywgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwiX21vbnRoQnV0dG9uTGFiZWxJZFwiPnt7IHNlbGVjdE1vbnRoTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fYWN0aW9uXCI+XG4gICAgICAgICAgICA8IS0tIFNlbGVjdCB5ZWFyIGJ1dHRvbiAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl95ZWFyQnV0dG9uTGFiZWxJZCArICcgJyArIF9zZWxlY3RZZWFyQnV0dG9uQXJpYUxhYmVsSWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmQtY2FsZW5kYXIteWVhcl09XCJjdXJyZW50bHlEaXNwbGF5ZWQueWVhclwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9wcm9jZXNzVmlld0NoYW5nZSgneWVhcicsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIFthdHRyLmlkXT1cIl95ZWFyQnV0dG9uTGFiZWxJZFwiPnt7IHNlbGVjdFllYXJMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPbkFnZ3JlZ2F0ZWRZZWFyc1ZpZXcgfHwgaXNPblllYXJWaWV3XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fYWN0aW9uXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJfeWVhcnNSYW5nZUJ1dHRvbkxhYmVsSWQgKyAnICcgKyBfc2VsZWN0WWVhcnNSYW5nZUJ1dHRvbkFyaWFMYWJlbElkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3Byb2Nlc3NWaWV3Q2hhbmdlKCdhZ2dyZWdhdGVkWWVhcicsICRldmVudClcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIFthdHRyLmlkXT1cIl95ZWFyc1JhbmdlQnV0dG9uTGFiZWxJZFwiPnt7IHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb24gZmQtY2FsZW5kYXJfX2FjdGlvbi0tYXJyb3ctcmlnaHRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBnbHlwaD1cInNsaW0tYXJyb3ctcmlnaHRcIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiX25leHRCdXR0b25JZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibmV4dEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cIm5leHRBcmlhTGFiZWwgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIm5leHRBcmlhTGFiZWwgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwibmV4dENsaWNrZWQuZW1pdCgpXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L2hlYWRlcj5cblxuPCEtLSBIaWRkZW4gZWxlbWVudHMgZm9yIGFyaWEgcHVycG9zZXMgLS0+XG48ZGl2IGhpZGRlbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICA8ZGl2IFthdHRyLmlkXT1cIl9zZWxlY3RNb250aEJ1dHRvbkFyaWFMYWJlbElkXCI+e3sgc2VsZWN0TW9udGhBcmlhTGFiZWwgfCBmZFRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDxkaXYgW2F0dHIuaWRdPVwiX3NlbGVjdFllYXJCdXR0b25BcmlhTGFiZWxJZFwiPnt7ICdjb3JlQ2FsZW5kYXIueWVhclNlbGVjdGlvbkxhYmVsJyB8IGZkVHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPGRpdiBbYXR0ci5pZF09XCJfc2VsZWN0WWVhcnNSYW5nZUJ1dHRvbkFyaWFMYWJlbElkXCI+e3sgc2VsZWN0QWdncmVnYXRlZFllYXJBcmlhTGFiZWwgfCBmZFRyYW5zbGF0ZSB9fTwvZGl2PlxuPC9kaXY+XG4iXX0=
|