@seniorsistemas/data-seniorx-core 3.0.0 → 3.1.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/core/constants/editable-overlay.const.d.ts +4 -0
- package/core/constants/help-popover.const.d.ts +7 -0
- package/core/constants/input-mask.const.d.ts +5 -0
- package/core/constants/navigation-button.const.d.ts +3 -0
- package/core/constants/object-card.const.d.ts +21 -0
- package/core/constants/thumbnail.const.d.ts +6 -0
- package/core/constants/thumbnails.const.d.ts +4 -0
- package/core/constants/token-list.const.d.ts +3 -0
- package/core/types/button.type.d.ts +1 -1
- package/core/types/datepicker.type.d.ts +28 -0
- package/core/types/dynamic-form.type.d.ts +29 -0
- package/core/types/editable-overlay.type.d.ts +15 -0
- package/core/types/help-popover.type.d.ts +2 -0
- package/core/types/input-mask.type.d.ts +6 -0
- package/core/types/lookup.type.d.ts +45 -0
- package/core/types/navigation-button.type.d.ts +9 -0
- package/core/types/row-card.type.d.ts +5 -0
- package/core/types/semantics.type.d.ts +1 -1
- package/core/types/table-options.type.d.ts +1 -0
- package/core/types/thumbnail.type.d.ts +1 -0
- package/core/types/thumbnails.type.d.ts +20 -0
- package/core/types/token-list.type.d.ts +6 -0
- package/core/utils/emoji-support.util.d.ts +12 -0
- package/core/utils/overlay-dismiss.util.d.ts +25 -0
- package/esm2022/core/config/row-card.type.config.mjs +3 -1
- package/esm2022/core/constants/country-phone-picker.const.mjs +6 -6
- package/esm2022/core/constants/editable-overlay.const.mjs +5 -0
- package/esm2022/core/constants/help-popover.const.mjs +7 -0
- package/esm2022/core/constants/input-mask.const.mjs +6 -0
- package/esm2022/core/constants/navigation-button.const.mjs +4 -0
- package/esm2022/core/constants/object-card.const.mjs +23 -0
- package/esm2022/core/constants/thumbnail.const.mjs +14 -0
- package/esm2022/core/constants/thumbnails.const.mjs +5 -0
- package/esm2022/core/constants/token-list.const.mjs +4 -0
- package/esm2022/core/types/button.type.mjs +1 -1
- package/esm2022/core/types/datepicker.type.mjs +2 -0
- package/esm2022/core/types/dynamic-form.type.mjs +2 -0
- package/esm2022/core/types/editable-overlay.type.mjs +2 -0
- package/esm2022/core/types/help-popover.type.mjs +2 -0
- package/esm2022/core/types/input-mask.type.mjs +2 -0
- package/esm2022/core/types/lookup.type.mjs +2 -0
- package/esm2022/core/types/navigation-button.type.mjs +2 -0
- package/esm2022/core/types/row-card.type.mjs +1 -1
- package/esm2022/core/types/semantics.type.mjs +1 -1
- package/esm2022/core/types/table-options.type.mjs +1 -1
- package/esm2022/core/types/thumbnail.type.mjs +2 -0
- package/esm2022/core/types/thumbnails.type.mjs +2 -0
- package/esm2022/core/types/token-list.type.mjs +2 -0
- package/esm2022/core/utils/emoji-support.util.mjs +48 -0
- package/esm2022/core/utils/mask.util.mjs +2 -2
- package/esm2022/core/utils/overlay-dismiss.util.mjs +38 -0
- package/esm2022/features/alert/alert.component.mjs +5 -2
- package/esm2022/features/autocomplete/autocomplete.component.mjs +30 -8
- package/esm2022/features/bignumber-input/bignumber-input.component.mjs +1 -1
- package/esm2022/features/button/button.component.mjs +13 -5
- package/esm2022/features/card-list/card/card.component.mjs +2 -2
- package/esm2022/features/card-list/card-list.component.mjs +2 -2
- package/esm2022/features/checkbox-list/checkbox-list.component.mjs +25 -5
- package/esm2022/features/chips/chips.component.mjs +3 -3
- package/esm2022/features/code-editor/code-editor.component.mjs +12 -3
- package/esm2022/features/combobox/combobox.component.mjs +3 -3
- package/esm2022/features/confirm/confirm.component.mjs +2 -2
- package/esm2022/features/context-selector/context-selector.component.mjs +1 -1
- package/esm2022/features/country-phone-picker/country-phone-picker.component.mjs +22 -18
- package/esm2022/features/currency/currency.component.mjs +3 -3
- package/esm2022/features/datepicker/datepicker.component.mjs +814 -0
- package/esm2022/features/dynamic-form/dynamic-form-field.directive.mjs +178 -0
- package/esm2022/features/dynamic-form/dynamic-form.component.mjs +60 -0
- package/esm2022/features/dynamic-form/dynamic-form.registry.mjs +13 -0
- package/esm2022/features/editable-overlay/editable-overlay-editor.directive.mjs +31 -0
- package/esm2022/features/editable-overlay/editable-overlay.component.mjs +217 -0
- package/esm2022/features/editor/editor.component.mjs +173 -0
- package/esm2022/features/empty-state/empty-state.component.mjs +3 -3
- package/esm2022/features/fileupload/fileupload.component.mjs +3 -3
- package/esm2022/features/help-popover/help-popover.component.mjs +204 -0
- package/esm2022/features/hyperlink/hyperlink.component.mjs +3 -3
- package/esm2022/features/icon-picker/icon-picker.component.mjs +4 -4
- package/esm2022/features/image-cropper/image-cropper.component.mjs +2 -2
- package/esm2022/features/info-sign/info-sign.component.mjs +6 -3
- package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +1 -1
- package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +2 -2
- package/esm2022/features/input-mask/input-mask.directive.mjs +510 -0
- package/esm2022/features/list/list.component.mjs +2 -2
- package/esm2022/features/localized-number-input/localized-number-input.component.mjs +3 -3
- package/esm2022/features/lookup/lookup.component.mjs +351 -0
- package/esm2022/features/modal/modal.component.mjs +6 -3
- package/esm2022/features/modalc/modalc.component.mjs +6 -3
- package/esm2022/features/navigation-button/navigation-button.component.mjs +172 -0
- package/esm2022/features/number-input/number-input.component.mjs +10 -4
- package/esm2022/features/object-card/components/object-card-field/object-card-field.component.mjs +89 -0
- package/esm2022/features/object-card/components/object-card-main/object-card-main.component.mjs +114 -0
- package/esm2022/features/object-card/object-card.component.mjs +199 -0
- package/esm2022/features/password-strength/password-strength.component.mjs +3 -3
- package/esm2022/features/pin-code-field/pin-code-field.component.mjs +14 -4
- package/esm2022/features/popover/popover.component.mjs +29 -3
- package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +13 -4
- package/esm2022/features/rating-scale/rating-scale.component.mjs +24 -4
- package/esm2022/features/row-card-list/row-card/row-card.component.mjs +19 -4
- package/esm2022/features/row-card-list/row-card-list.component.mjs +12 -3
- package/esm2022/features/scaffold/scaffold.component.mjs +3 -3
- package/esm2022/features/searchbox/searchbox.component.mjs +2 -2
- package/esm2022/features/select-button/select-button.component.mjs +26 -4
- package/esm2022/features/slider/slider.component.mjs +3 -3
- package/esm2022/features/split-button/split-button.component.mjs +1 -1
- package/esm2022/features/spotlight/components/spotlight-overlay/spotlight-overlay.component.mjs +15 -18
- package/esm2022/features/spotlight/spotlight.component.mjs +2 -2
- package/esm2022/features/star-rating/star-rating.component.mjs +25 -4
- package/esm2022/features/table/components/table-cell-content.component.mjs +2 -2
- package/esm2022/features/table/table.component.mjs +30 -9
- package/esm2022/features/textarea/textarea.component.mjs +3 -3
- package/esm2022/features/thumbnail/thumbnail.component.mjs +86 -0
- package/esm2022/features/thumbnails/components/thumbnail-item/thumbnail-item.component.mjs +59 -0
- package/esm2022/features/thumbnails/components/thumbnail-item-image/thumbnail-item-image.component.mjs +25 -0
- package/esm2022/features/thumbnails/components/thumbnail-item-video/thumbnail-item-video.component.mjs +50 -0
- package/esm2022/features/thumbnails/thumbnails.component.mjs +76 -0
- package/esm2022/features/tiered-menu/directives/tiered-menu.directive.mjs +13 -1
- package/esm2022/features/token-list/token-list.component.mjs +64 -0
- package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +2 -2
- package/esm2022/locales/en.json +409 -1
- package/esm2022/locales/es-CO.json +423 -2
- package/esm2022/locales/pt.json +1037 -630
- package/esm2022/providers/features.provider.mjs +20 -2
- package/esm2022/providers/primeng-config.provider.mjs +14 -128
- package/esm2022/providers/translate.provider.mjs +2 -2
- package/esm2022/public-api.mjs +31 -1
- package/features/alert/alert.component.d.ts +1 -0
- package/features/autocomplete/autocomplete.component.d.ts +9 -3
- package/features/button/button.component.d.ts +3 -1
- package/features/checkbox-list/checkbox-list.component.d.ts +8 -1
- package/features/code-editor/code-editor.component.d.ts +5 -1
- package/features/country-phone-picker/country-phone-picker.component.d.ts +3 -0
- package/features/datepicker/datepicker.component.d.ts +118 -0
- package/features/dynamic-form/dynamic-form-field.directive.d.ts +26 -0
- package/features/dynamic-form/dynamic-form.component.d.ts +15 -0
- package/features/dynamic-form/dynamic-form.registry.d.ts +11 -0
- package/features/editable-overlay/editable-overlay-editor.directive.d.ts +22 -0
- package/features/editable-overlay/editable-overlay.component.d.ts +60 -0
- package/features/editor/editor.component.d.ts +47 -0
- package/features/help-popover/help-popover.component.d.ts +81 -0
- package/features/info-sign/info-sign.component.d.ts +2 -1
- package/features/input-mask/input-mask.directive.d.ts +117 -0
- package/features/lookup/lookup.component.d.ts +104 -0
- package/features/modal/modal.component.d.ts +2 -1
- package/features/modalc/modalc.component.d.ts +2 -1
- package/features/navigation-button/navigation-button.component.d.ts +58 -0
- package/features/number-input/number-input.component.d.ts +3 -1
- package/features/object-card/components/object-card-field/object-card-field.component.d.ts +48 -0
- package/features/object-card/components/object-card-main/object-card-main.component.d.ts +57 -0
- package/features/object-card/object-card.component.d.ts +70 -0
- package/features/pin-code-field/pin-code-field.component.d.ts +6 -1
- package/features/popover/popover.component.d.ts +4 -1
- package/features/profile-picture-picker/profile-picture-picker.component.d.ts +5 -1
- package/features/rating-scale/rating-scale.component.d.ts +9 -1
- package/features/row-card-list/row-card/row-card.component.d.ts +6 -1
- package/features/row-card-list/row-card-list.component.d.ts +4 -1
- package/features/select-button/select-button.component.d.ts +9 -1
- package/features/star-rating/star-rating.component.d.ts +9 -1
- package/features/table/table.component.d.ts +2 -1
- package/features/thumbnail/thumbnail.component.d.ts +48 -0
- package/features/thumbnails/components/thumbnail-item/thumbnail-item.component.d.ts +29 -0
- package/features/thumbnails/components/thumbnail-item-image/thumbnail-item-image.component.d.ts +13 -0
- package/features/thumbnails/components/thumbnail-item-video/thumbnail-item-video.component.d.ts +19 -0
- package/features/thumbnails/thumbnails.component.d.ts +46 -0
- package/features/tiered-menu/directives/tiered-menu.directive.d.ts +2 -0
- package/features/token-list/token-list.component.d.ts +31 -0
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs +11288 -6613
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
- package/package.json +12 -3
- package/providers/primeng-config.provider.d.ts +12 -0
- package/public-api.d.ts +38 -0
- package/src/locales/en.json +409 -1
- package/src/locales/es-CO.json +423 -2
- package/src/locales/pt.json +1037 -630
- package/styles/sdc-global-variables.scss +38 -0
- package/styles.css +132 -0
- package/styles.scss +2 -0
- package/esm2022/providers/custom/button.mjs +0 -93
- package/esm2022/providers/custom/toast.mjs +0 -75
- package/providers/custom/button.d.ts +0 -16
- package/providers/custom/toast.d.ts +0 -14
|
@@ -3,9 +3,11 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, In
|
|
|
3
3
|
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
4
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
5
5
|
import { Overlay, OverlayModule } from '@angular/cdk/overlay';
|
|
6
|
+
import { Router } from '@angular/router';
|
|
6
7
|
import { TranslateModule } from '@ngx-translate/core';
|
|
7
|
-
import { Subject, Subscription,
|
|
8
|
+
import { Subject, Subscription, debounce, distinctUntilChanged, timer } from 'rxjs';
|
|
8
9
|
import { AUTOCOMPLETE_DEFAULT_DELAY, AUTOCOMPLETE_DEFAULT_EMPTY_MESSAGE_KEY, AUTOCOMPLETE_DEFAULT_MIN_LENGTH, AUTOCOMPLETE_DEFAULT_PLACEHOLDER_KEY } from '../../core/constants/autocomplete.const';
|
|
10
|
+
import { watchOverlayDismiss } from '../../core/utils/overlay-dismiss.util';
|
|
9
11
|
import { AutocompleteChipComponent } from './components/autocomplete-chip/autocomplete-chip.component';
|
|
10
12
|
import * as i0 from "@angular/core";
|
|
11
13
|
import * as i1 from "@angular/common";
|
|
@@ -22,14 +24,18 @@ export class AutocompleteComponent {
|
|
|
22
24
|
}
|
|
23
25
|
cdr = inject(ChangeDetectorRef);
|
|
24
26
|
overlay = inject(Overlay);
|
|
27
|
+
router = inject(Router, { optional: true });
|
|
25
28
|
inputSubject = new Subject();
|
|
26
29
|
lazyLoadSubject = new Subject();
|
|
27
30
|
subscriptions = new Subscription();
|
|
31
|
+
dismissWatcher = null;
|
|
28
32
|
suggestions = [];
|
|
29
33
|
placeholder = AUTOCOMPLETE_DEFAULT_PLACEHOLDER_KEY;
|
|
30
34
|
suggestionValue;
|
|
31
35
|
suggestionLabel;
|
|
32
36
|
readonly = false;
|
|
37
|
+
label = false;
|
|
38
|
+
required = false;
|
|
33
39
|
emptyMessage = AUTOCOMPLETE_DEFAULT_EMPTY_MESSAGE_KEY;
|
|
34
40
|
delay = AUTOCOMPLETE_DEFAULT_DELAY;
|
|
35
41
|
invalid = false;
|
|
@@ -55,7 +61,7 @@ export class AutocompleteComponent {
|
|
|
55
61
|
containerDiv;
|
|
56
62
|
inputEl;
|
|
57
63
|
componentId = AutocompleteComponent.allocateComponentId();
|
|
58
|
-
scrollStrategy = this.overlay.scrollStrategies.
|
|
64
|
+
scrollStrategy = this.overlay.scrollStrategies.reposition();
|
|
59
65
|
overlayPositions = [
|
|
60
66
|
{ originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },
|
|
61
67
|
{ originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },
|
|
@@ -72,7 +78,7 @@ export class AutocompleteComponent {
|
|
|
72
78
|
onTouched = () => { };
|
|
73
79
|
lazyRequestId = 0;
|
|
74
80
|
constructor() {
|
|
75
|
-
this.subscriptions.add(this.inputSubject.pipe(
|
|
81
|
+
this.subscriptions.add(this.inputSubject.pipe(debounce(() => timer(this.delay)), distinctUntilChanged()).subscribe((query) => {
|
|
76
82
|
if (query.length < this.minLengthToSearch && query.length > 0) {
|
|
77
83
|
this.filteredSuggestions = [];
|
|
78
84
|
this.showEmptyMessage = false;
|
|
@@ -85,7 +91,7 @@ export class AutocompleteComponent {
|
|
|
85
91
|
this.onChange(query);
|
|
86
92
|
}
|
|
87
93
|
}));
|
|
88
|
-
this.subscriptions.add(this.lazyLoadSubject.pipe(
|
|
94
|
+
this.subscriptions.add(this.lazyLoadSubject.pipe(debounce(() => timer(this.delay)), distinctUntilChanged()).subscribe((query) => {
|
|
89
95
|
this.loading = true;
|
|
90
96
|
this.lazyRequestId += 1;
|
|
91
97
|
const requestId = this.lazyRequestId;
|
|
@@ -109,8 +115,17 @@ export class AutocompleteComponent {
|
|
|
109
115
|
this.refreshFilteredSuggestions(this.inputValue);
|
|
110
116
|
}
|
|
111
117
|
}
|
|
118
|
+
ngAfterViewInit() {
|
|
119
|
+
this.dismissWatcher = watchOverlayDismiss({
|
|
120
|
+
getTriggerElement: () => this.containerDiv?.nativeElement ?? null,
|
|
121
|
+
isOpen: () => this.isOpen,
|
|
122
|
+
onDismiss: () => this.closeDropdownPanel(),
|
|
123
|
+
router: this.router
|
|
124
|
+
});
|
|
125
|
+
}
|
|
112
126
|
ngOnDestroy() {
|
|
113
127
|
this.subscriptions.unsubscribe();
|
|
128
|
+
this.dismissWatcher?.destroy();
|
|
114
129
|
}
|
|
115
130
|
writeValue(value) {
|
|
116
131
|
if (this.multiple) {
|
|
@@ -253,6 +268,9 @@ export class AutocompleteComponent {
|
|
|
253
268
|
isSuggestionSelected(suggestion) {
|
|
254
269
|
return suggestion.isSelected === true;
|
|
255
270
|
}
|
|
271
|
+
labelKey() {
|
|
272
|
+
return typeof this.label === 'string' ? this.label : '';
|
|
273
|
+
}
|
|
256
274
|
get activeDescendantId() {
|
|
257
275
|
if (this.focusedIndex < 0) {
|
|
258
276
|
return null;
|
|
@@ -408,13 +426,13 @@ export class AutocompleteComponent {
|
|
|
408
426
|
});
|
|
409
427
|
}
|
|
410
428
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
411
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AutocompleteComponent, isStandalone: true, selector: "sdc-autocomplete", inputs: { suggestions: "suggestions", placeholder: "placeholder", suggestionValue: "suggestionValue", suggestionLabel: "suggestionLabel", readonly: "readonly", emptyMessage: "emptyMessage", delay: "delay", invalid: "invalid", virtualScroll: "virtualScroll", virtualScrollItemSize: "virtualScrollItemSize", lazy: "lazy", dropdown: "dropdown", forceSelection: "forceSelection", checkmark: "checkmark", multiple: "multiple", minLengthToSearch: "minLengthToSearch", inputClass: "inputClass", dataKey: "dataKey", disabled: "disabled" }, outputs: { lazyLoad: "lazyLoad", selected: "selected", unselected: "unselected", blurred: "blurred", cleared: "cleared", keyUp: "keyUp", focused: "focused", completeMethod: "completeMethod" }, host: { attributes: { "role": "combobox" }, listeners: { "window:resize": "onWindowResize()" }, properties: { "attr.aria-expanded": "isOpen", "attr.aria-haspopup": "\"listbox\"" } }, providers: [
|
|
429
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AutocompleteComponent, isStandalone: true, selector: "sdc-autocomplete", inputs: { suggestions: "suggestions", placeholder: "placeholder", suggestionValue: "suggestionValue", suggestionLabel: "suggestionLabel", readonly: "readonly", label: "label", required: "required", emptyMessage: "emptyMessage", delay: "delay", invalid: "invalid", virtualScroll: "virtualScroll", virtualScrollItemSize: "virtualScrollItemSize", lazy: "lazy", dropdown: "dropdown", forceSelection: "forceSelection", checkmark: "checkmark", multiple: "multiple", minLengthToSearch: "minLengthToSearch", inputClass: "inputClass", dataKey: "dataKey", disabled: "disabled" }, outputs: { lazyLoad: "lazyLoad", selected: "selected", unselected: "unselected", blurred: "blurred", cleared: "cleared", keyUp: "keyUp", focused: "focused", completeMethod: "completeMethod" }, host: { attributes: { "role": "combobox" }, listeners: { "window:resize": "onWindowResize()" }, properties: { "attr.aria-expanded": "isOpen", "attr.aria-haspopup": "\"listbox\"" } }, providers: [
|
|
412
430
|
{
|
|
413
431
|
provide: NG_VALUE_ACCESSOR,
|
|
414
432
|
useExisting: forwardRef(() => AutocompleteComponent),
|
|
415
433
|
multi: true
|
|
416
434
|
}
|
|
417
|
-
], viewQueries: [{ propertyName: "containerDiv", first: true, predicate: ["containerDiv"], descendants: true }, { propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"sdc-autocomplete\"\n [class.sdc-autocomplete--disabled]=\"disabled\"\n [class.sdc-autocomplete--invalid]=\"invalid\"\n [class.sdc-autocomplete--multiple]=\"multiple\"\n [ngClass]=\"inputClass\"\n>\n <div class=\"sdc-autocomplete__control\">\n @if (multiple && values.length > 0) {\n <div class=\"sdc-autocomplete__chips\">\n @for (suggestion of values; track suggestion) {\n <sdc-autocomplete-chip\n [suggestion]=\"suggestion\"\n [suggestionLabel]=\"suggestionLabel\"\n (suggestionRemoved)=\"removeSuggestion($event)\"\n ></sdc-autocomplete-chip>\n }\n </div>\n }\n\n <input\n #inputEl\n [id]=\"componentId\"\n class=\"sdc-autocomplete__input\"\n type=\"text\"\n [attr.aria-label]=\"placeholder | translate\"\n [placeholder]=\"placeholder | translate\"\n [readOnly]=\"readonly\"\n [(ngModel)]=\"inputValue\"\n [disabled]=\"disabled\"\n [attr.aria-autocomplete]=\"multiple ? 'list' : 'both'\"\n [attr.aria-activedescendant]=\"activeDescendantId\"\n role=\"searchbox\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keyup)=\"onKeyUp($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\"\n />\n\n @if (loading) {\n <span class=\"sdc-autocomplete__loader\">\n <i class=\"fas fa-spinner fa-spin\"></i>\n </span>\n } @else if ((value || values.length > 0 || inputValue) && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__clear\"\n tabindex=\"-1\"\n (click)=\"clear()\"\n >\n <i class=\"far fa-times\"></i>\n </button>\n }\n </div>\n\n @if (dropdown) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__toggle\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n >\n <i\n class=\"fas\"\n [class.fa-caret-down]=\"!isOpen\"\n [class.fa-caret-up]=\"isOpen\"\n ></i>\n </button>\n }\n</div>\n\n@if ((showEmptyMessage || filteredSuggestions.length > 0) && !readonly) {\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayViewportMargin]=\"8\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeDropdownPanel()\"\n (detach)=\"closeDropdownPanel()\"\n>\n <div\n class=\"sdc-autocomplete__panel\"\n [id]=\"'dropdown-container-' + componentId\"\n [style.width.px]=\"containerDiv?.offsetWidth ?? null\"\n >\n <ul\n class=\"sdc-autocomplete__list\"\n >\n @if (virtualScroll && filteredSuggestions.length > 10) {\n <cdk-virtual-scroll-viewport\n class=\"sdc-autocomplete__viewport\"\n [itemSize]=\"virtualScrollItemSize\"\n >\n <ng-container\n *cdkVirtualFor=\"let suggestion of filteredSuggestions; let i = index; trackBy: trackBySuggestionId\"\n >\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n } @else {\n @for (suggestion of filteredSuggestions; track suggestion.id; let i = $index) {\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n }\n }\n\n @if (showEmptyMessage) {\n <li class=\"sdc-autocomplete__empty\">{{ emptyMessage | translate }}</li>\n }\n </ul>\n </div>\n</ng-template>\n}\n", styles: [":host{display:block}.sdc-autocomplete{display:flex;align-items:stretch;width:100%;min-height:2.25rem;overflow:hidden;border:1px solid #c1c1cc;border-radius:.25rem;background:#fff}.sdc-autocomplete--invalid{border-color:#d9534f}.sdc-autocomplete--disabled{background:#f7f7f8;color:#999}.sdc-autocomplete__control{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;gap:.375rem;padding:.25rem .5rem}.sdc-autocomplete__chips{display:flex;flex-wrap:wrap;gap:.375rem}.sdc-autocomplete__input{flex:1 1 7rem;min-width:0;border:0;outline:none;background:transparent}.sdc-autocomplete__clear,.sdc-autocomplete__toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;border:0;background:transparent;cursor:pointer;color:#666}.sdc-autocomplete__toggle{border-left:1px solid #e2e2e4}.sdc-autocomplete__loader{color:#428bca}.sdc-autocomplete__panel{margin-top:.25rem;overflow:hidden;border-radius:.25rem;background:#fff;box-shadow:0 .5rem 1.5rem #0000001f}.sdc-autocomplete__list{max-height:13rem;margin:0;padding:.25rem 0;overflow:auto;list-style:none}.sdc-autocomplete__viewport{height:13rem}.sdc-autocomplete__option,.sdc-autocomplete__empty{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;color:#444}.sdc-autocomplete__option{cursor:pointer}.sdc-autocomplete__option--focused{background:#f3f7fa}.sdc-autocomplete__option--selected{background:#e9f2f8}.sdc-autocomplete__empty{color:#777}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: AutocompleteChipComponent, selector: "sdc-autocomplete-chip", inputs: ["suggestion", "suggestionLabel"], outputs: ["suggestionRemoved"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
435
|
+
], viewQueries: [{ propertyName: "containerDiv", first: true, predicate: ["containerDiv"], descendants: true }, { propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (labelKey()) {\n <div class=\"sdc-autocomplete__label-row\">\n <label class=\"sdc-autocomplete__label\" [for]=\"componentId\">\n <span class=\"sdc-autocomplete__label-text\">\n {{ labelKey() | translate }}\n @if (required) {\n <span class=\"required-field\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility.required_field' | translate }}</span>\n }\n </span>\n </label>\n </div>\n}\n\n<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"sdc-autocomplete\"\n [class.sdc-autocomplete--disabled]=\"disabled\"\n [class.sdc-autocomplete--invalid]=\"invalid\"\n [class.sdc-autocomplete--multiple]=\"multiple\"\n [ngClass]=\"inputClass\"\n>\n <div class=\"sdc-autocomplete__control\">\n @if (multiple && values.length > 0) {\n <div class=\"sdc-autocomplete__chips\">\n @for (suggestion of values; track suggestion) {\n <sdc-autocomplete-chip\n [suggestion]=\"suggestion\"\n [suggestionLabel]=\"suggestionLabel\"\n (suggestionRemoved)=\"removeSuggestion($event)\"\n ></sdc-autocomplete-chip>\n }\n </div>\n }\n\n <input\n #inputEl\n [id]=\"componentId\"\n class=\"sdc-autocomplete__input\"\n type=\"text\"\n [attr.aria-label]=\"labelKey() ? null : (placeholder | translate)\"\n [placeholder]=\"placeholder | translate\"\n [readOnly]=\"readonly\"\n [(ngModel)]=\"inputValue\"\n [disabled]=\"disabled\"\n [attr.aria-autocomplete]=\"multiple ? 'list' : 'both'\"\n [attr.aria-activedescendant]=\"activeDescendantId\"\n role=\"searchbox\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keyup)=\"onKeyUp($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\"\n />\n\n @if (loading) {\n <span class=\"sdc-autocomplete__loader\">\n <i class=\"fas fa-spinner fa-spin\"></i>\n </span>\n } @else if ((value || values.length > 0 || inputValue) && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__clear\"\n tabindex=\"-1\"\n (click)=\"clear()\"\n >\n <i class=\"far fa-times\"></i>\n </button>\n }\n </div>\n\n @if (dropdown) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__toggle\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n >\n <i\n class=\"fas\"\n [class.fa-caret-down]=\"!isOpen\"\n [class.fa-caret-up]=\"isOpen\"\n ></i>\n </button>\n }\n</div>\n\n@if ((showEmptyMessage || filteredSuggestions.length > 0) && !readonly) {\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayViewportMargin]=\"8\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeDropdownPanel()\"\n (detach)=\"closeDropdownPanel()\"\n>\n <div\n class=\"sdc-autocomplete__panel\"\n [id]=\"'dropdown-container-' + componentId\"\n [style.width.px]=\"containerDiv?.offsetWidth ?? null\"\n >\n <ul\n class=\"sdc-autocomplete__list\"\n >\n @if (virtualScroll && filteredSuggestions.length > 10) {\n <cdk-virtual-scroll-viewport\n class=\"sdc-autocomplete__viewport\"\n [itemSize]=\"virtualScrollItemSize\"\n >\n <ng-container\n *cdkVirtualFor=\"let suggestion of filteredSuggestions; let i = index; trackBy: trackBySuggestionId\"\n >\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n } @else {\n @for (suggestion of filteredSuggestions; track suggestion.id; let i = $index) {\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n }\n }\n\n @if (showEmptyMessage) {\n <li class=\"sdc-autocomplete__empty\">{{ emptyMessage | translate }}</li>\n }\n </ul>\n </div>\n</ng-template>\n}\n", styles: [":host{display:block}.sdc-autocomplete{display:flex;align-items:stretch;width:100%;min-height:var(--sdc-formfield-default-height, 34px);overflow:hidden;border:1px solid #c1c1cc;border-radius:.25rem;background:#fff}.sdc-autocomplete--invalid{border-color:#d9534f}.sdc-autocomplete--disabled{background:#f7f7f8;color:#999}.sdc-autocomplete__control{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;gap:.375rem;padding:.25rem .5rem}.sdc-autocomplete__chips{display:flex;flex-wrap:wrap;gap:.375rem}.sdc-autocomplete__input{flex:1 1 7rem;min-width:0;border:0;outline:none;background:transparent}.sdc-autocomplete__clear,.sdc-autocomplete__toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;border:0;background:transparent;cursor:pointer;color:#666}.sdc-autocomplete__toggle{border-left:1px solid #e2e2e4}.sdc-autocomplete__loader{color:#428bca}.sdc-autocomplete__panel{margin-top:.25rem;overflow:hidden;border-radius:.25rem;background:#fff;box-shadow:0 .5rem 1.5rem #0000001f}.sdc-autocomplete__list{max-height:13rem;margin:0;padding:.25rem 0;overflow:auto;list-style:none}.sdc-autocomplete__viewport{height:13rem}.sdc-autocomplete__option,.sdc-autocomplete__empty{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;color:#444}.sdc-autocomplete__option{cursor:pointer}.sdc-autocomplete__option--focused{background:#f3f7fa}.sdc-autocomplete__option--selected{background:#e9f2f8}.sdc-autocomplete__empty{color:#777}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: AutocompleteChipComponent, selector: "sdc-autocomplete-chip", inputs: ["suggestion", "suggestionLabel"], outputs: ["suggestionRemoved"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
418
436
|
}
|
|
419
437
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
420
438
|
type: Component,
|
|
@@ -436,7 +454,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
436
454
|
'[attr.aria-expanded]': 'isOpen',
|
|
437
455
|
'[attr.aria-haspopup]': '"listbox"',
|
|
438
456
|
'(window:resize)': 'onWindowResize()'
|
|
439
|
-
}, template: "<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"sdc-autocomplete\"\n [class.sdc-autocomplete--disabled]=\"disabled\"\n [class.sdc-autocomplete--invalid]=\"invalid\"\n [class.sdc-autocomplete--multiple]=\"multiple\"\n [ngClass]=\"inputClass\"\n>\n <div class=\"sdc-autocomplete__control\">\n @if (multiple && values.length > 0) {\n <div class=\"sdc-autocomplete__chips\">\n @for (suggestion of values; track suggestion) {\n <sdc-autocomplete-chip\n [suggestion]=\"suggestion\"\n [suggestionLabel]=\"suggestionLabel\"\n (suggestionRemoved)=\"removeSuggestion($event)\"\n ></sdc-autocomplete-chip>\n }\n </div>\n }\n\n <input\n #inputEl\n [id]=\"componentId\"\n class=\"sdc-autocomplete__input\"\n type=\"text\"\n [attr.aria-label]=\"placeholder | translate\"\n [placeholder]=\"placeholder | translate\"\n [readOnly]=\"readonly\"\n [(ngModel)]=\"inputValue\"\n [disabled]=\"disabled\"\n [attr.aria-autocomplete]=\"multiple ? 'list' : 'both'\"\n [attr.aria-activedescendant]=\"activeDescendantId\"\n role=\"searchbox\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keyup)=\"onKeyUp($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\"\n />\n\n @if (loading) {\n <span class=\"sdc-autocomplete__loader\">\n <i class=\"fas fa-spinner fa-spin\"></i>\n </span>\n } @else if ((value || values.length > 0 || inputValue) && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__clear\"\n tabindex=\"-1\"\n (click)=\"clear()\"\n >\n <i class=\"far fa-times\"></i>\n </button>\n }\n </div>\n\n @if (dropdown) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__toggle\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n >\n <i\n class=\"fas\"\n [class.fa-caret-down]=\"!isOpen\"\n [class.fa-caret-up]=\"isOpen\"\n ></i>\n </button>\n }\n</div>\n\n@if ((showEmptyMessage || filteredSuggestions.length > 0) && !readonly) {\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayViewportMargin]=\"8\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeDropdownPanel()\"\n (detach)=\"closeDropdownPanel()\"\n>\n <div\n class=\"sdc-autocomplete__panel\"\n [id]=\"'dropdown-container-' + componentId\"\n [style.width.px]=\"containerDiv?.offsetWidth ?? null\"\n >\n <ul\n class=\"sdc-autocomplete__list\"\n >\n @if (virtualScroll && filteredSuggestions.length > 10) {\n <cdk-virtual-scroll-viewport\n class=\"sdc-autocomplete__viewport\"\n [itemSize]=\"virtualScrollItemSize\"\n >\n <ng-container\n *cdkVirtualFor=\"let suggestion of filteredSuggestions; let i = index; trackBy: trackBySuggestionId\"\n >\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n } @else {\n @for (suggestion of filteredSuggestions; track suggestion.id; let i = $index) {\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n }\n }\n\n @if (showEmptyMessage) {\n <li class=\"sdc-autocomplete__empty\">{{ emptyMessage | translate }}</li>\n }\n </ul>\n </div>\n</ng-template>\n}\n", styles: [":host{display:block}.sdc-autocomplete{display:flex;align-items:stretch;width:100%;min-height:
|
|
457
|
+
}, template: "@if (labelKey()) {\n <div class=\"sdc-autocomplete__label-row\">\n <label class=\"sdc-autocomplete__label\" [for]=\"componentId\">\n <span class=\"sdc-autocomplete__label-text\">\n {{ labelKey() | translate }}\n @if (required) {\n <span class=\"required-field\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility.required_field' | translate }}</span>\n }\n </span>\n </label>\n </div>\n}\n\n<div\n #containerDiv\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n class=\"sdc-autocomplete\"\n [class.sdc-autocomplete--disabled]=\"disabled\"\n [class.sdc-autocomplete--invalid]=\"invalid\"\n [class.sdc-autocomplete--multiple]=\"multiple\"\n [ngClass]=\"inputClass\"\n>\n <div class=\"sdc-autocomplete__control\">\n @if (multiple && values.length > 0) {\n <div class=\"sdc-autocomplete__chips\">\n @for (suggestion of values; track suggestion) {\n <sdc-autocomplete-chip\n [suggestion]=\"suggestion\"\n [suggestionLabel]=\"suggestionLabel\"\n (suggestionRemoved)=\"removeSuggestion($event)\"\n ></sdc-autocomplete-chip>\n }\n </div>\n }\n\n <input\n #inputEl\n [id]=\"componentId\"\n class=\"sdc-autocomplete__input\"\n type=\"text\"\n [attr.aria-label]=\"labelKey() ? null : (placeholder | translate)\"\n [placeholder]=\"placeholder | translate\"\n [readOnly]=\"readonly\"\n [(ngModel)]=\"inputValue\"\n [disabled]=\"disabled\"\n [attr.aria-autocomplete]=\"multiple ? 'list' : 'both'\"\n [attr.aria-activedescendant]=\"activeDescendantId\"\n role=\"searchbox\"\n (input)=\"onInput($event)\"\n (keydown)=\"onKeyDown($event)\"\n (keyup)=\"onKeyUp($event)\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus($event)\"\n />\n\n @if (loading) {\n <span class=\"sdc-autocomplete__loader\">\n <i class=\"fas fa-spinner fa-spin\"></i>\n </span>\n } @else if ((value || values.length > 0 || inputValue) && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__clear\"\n tabindex=\"-1\"\n (click)=\"clear()\"\n >\n <i class=\"far fa-times\"></i>\n </button>\n }\n </div>\n\n @if (dropdown) {\n <button\n type=\"button\"\n class=\"sdc-autocomplete__toggle\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n >\n <i\n class=\"fas\"\n [class.fa-caret-down]=\"!isOpen\"\n [class.fa-caret-up]=\"isOpen\"\n ></i>\n </button>\n }\n</div>\n\n@if ((showEmptyMessage || filteredSuggestions.length > 0) && !readonly) {\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayViewportMargin]=\"8\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeDropdownPanel()\"\n (detach)=\"closeDropdownPanel()\"\n>\n <div\n class=\"sdc-autocomplete__panel\"\n [id]=\"'dropdown-container-' + componentId\"\n [style.width.px]=\"containerDiv?.offsetWidth ?? null\"\n >\n <ul\n class=\"sdc-autocomplete__list\"\n >\n @if (virtualScroll && filteredSuggestions.length > 10) {\n <cdk-virtual-scroll-viewport\n class=\"sdc-autocomplete__viewport\"\n [itemSize]=\"virtualScrollItemSize\"\n >\n <ng-container\n *cdkVirtualFor=\"let suggestion of filteredSuggestions; let i = index; trackBy: trackBySuggestionId\"\n >\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n } @else {\n @for (suggestion of filteredSuggestions; track suggestion.id; let i = $index) {\n <li\n [id]=\"suggestion.id\"\n class=\"sdc-autocomplete__option\"\n [class.sdc-autocomplete__option--focused]=\"i === focusedIndex\"\n [class.sdc-autocomplete__option--selected]=\"isSuggestionSelected(suggestion)\"\n (click)=\"selectSuggestion(suggestion.data)\"\n (keydown.enter)=\"selectSuggestion(suggestion.data)\"\n (keydown.space)=\"selectSuggestion(suggestion.data)\"\n >\n @if (checkmark && multiple && isSuggestionSelected(suggestion)) {\n <i class=\"far fa-check\"></i>\n }\n {{ toDisplayValue(suggestion.data) }}\n </li>\n }\n }\n\n @if (showEmptyMessage) {\n <li class=\"sdc-autocomplete__empty\">{{ emptyMessage | translate }}</li>\n }\n </ul>\n </div>\n</ng-template>\n}\n", styles: [":host{display:block}.sdc-autocomplete{display:flex;align-items:stretch;width:100%;min-height:var(--sdc-formfield-default-height, 34px);overflow:hidden;border:1px solid #c1c1cc;border-radius:.25rem;background:#fff}.sdc-autocomplete--invalid{border-color:#d9534f}.sdc-autocomplete--disabled{background:#f7f7f8;color:#999}.sdc-autocomplete__control{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;gap:.375rem;padding:.25rem .5rem}.sdc-autocomplete__chips{display:flex;flex-wrap:wrap;gap:.375rem}.sdc-autocomplete__input{flex:1 1 7rem;min-width:0;border:0;outline:none;background:transparent}.sdc-autocomplete__clear,.sdc-autocomplete__toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;border:0;background:transparent;cursor:pointer;color:#666}.sdc-autocomplete__toggle{border-left:1px solid #e2e2e4}.sdc-autocomplete__loader{color:#428bca}.sdc-autocomplete__panel{margin-top:.25rem;overflow:hidden;border-radius:.25rem;background:#fff;box-shadow:0 .5rem 1.5rem #0000001f}.sdc-autocomplete__list{max-height:13rem;margin:0;padding:.25rem 0;overflow:auto;list-style:none}.sdc-autocomplete__viewport{height:13rem}.sdc-autocomplete__option,.sdc-autocomplete__empty{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;color:#444}.sdc-autocomplete__option{cursor:pointer}.sdc-autocomplete__option--focused{background:#f3f7fa}.sdc-autocomplete__option--selected{background:#e9f2f8}.sdc-autocomplete__empty{color:#777}\n"] }]
|
|
440
458
|
}], ctorParameters: () => [], propDecorators: { suggestions: [{
|
|
441
459
|
type: Input
|
|
442
460
|
}], placeholder: [{
|
|
@@ -447,6 +465,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
447
465
|
type: Input
|
|
448
466
|
}], readonly: [{
|
|
449
467
|
type: Input
|
|
468
|
+
}], label: [{
|
|
469
|
+
type: Input
|
|
470
|
+
}], required: [{
|
|
471
|
+
type: Input
|
|
450
472
|
}], emptyMessage: [{
|
|
451
473
|
type: Input
|
|
452
474
|
}], delay: [{
|
|
@@ -498,4 +520,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
498
520
|
type: ViewChild,
|
|
499
521
|
args: ['inputEl']
|
|
500
522
|
}] } });
|
|
501
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpGLE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsc0NBQXNDLEVBQ3RDLCtCQUErQixFQUMvQixvQ0FBb0MsRUFDckMsTUFBTSx5Q0FBeUMsQ0FBQztBQU1qRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQzs7Ozs7OztBQXFDdkcsTUFBTSxPQUFPLHFCQUFxQjtJQUN4QixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVsQixN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SztzQkFBZCxNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFFOEIsWUFBWTtzQkFBaEQsU0FBUzt1QkFBQyxjQUFjO2dCQUNPLE9BQU87c0JBQXRDLFNBQVM7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgZm9yd2FyZFJlZixcbiAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB0eXBlIHsgQ29ubmVjdGVkUG9zaXRpb24sIFNjcm9sbFN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgQVVUT0NPTVBMRVRFX0RFRkFVTFRfREVMQVksXG4gIEFVVE9DT01QTEVURV9ERUZBVUxUX0VNUFRZX01FU1NBR0VfS0VZLFxuICBBVVRPQ09NUExFVEVfREVGQVVMVF9NSU5fTEVOR1RILFxuICBBVVRPQ09NUExFVEVfREVGQVVMVF9QTEFDRUhPTERFUl9LRVlcbn0gZnJvbSAnLi4vLi4vY29yZS9jb25zdGFudHMvYXV0b2NvbXBsZXRlLmNvbnN0JztcbmltcG9ydCB0eXBlIHtcbiAgQXV0b2NvbXBsZXRlQ29tcGxldGVFdmVudCxcbiAgQXV0b2NvbXBsZXRlTGF6eUxvYWRFdmVudCxcbiAgQXV0b2NvbXBsZXRlV3JpdGVWYWx1ZVxufSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2F1dG9jb21wbGV0ZS50eXBlJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNoaXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLWNoaXAvYXV0b2NvbXBsZXRlLWNoaXAuY29tcG9uZW50JztcblxudHlwZSBTdWdnZXN0aW9uV3JhcHBlcjxUPiA9IHtcbiAgZGF0YTogVDtcbiAgaWQ6IHN0cmluZztcbiAgaXNTZWxlY3RlZD86IGJvb2xlYW47XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtYXV0b2NvbXBsZXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBPdmVybGF5TW9kdWxlLFxuICAgIFNjcm9sbGluZ01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQXV0b2NvbXBsZXRlQ2hpcENvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBdXRvY29tcGxldGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICByb2xlOiAnY29tYm9ib3gnLFxuICAgICdbYXR0ci5hcmlhLWV4cGFuZGVkXSc6ICdpc09wZW4nLFxuICAgICdbYXR0ci5hcmlhLWhhc3BvcHVwXSc6ICdcImxpc3Rib3hcIicsXG4gICAgJyh3aW5kb3c6cmVzaXplKSc6ICdvbldpbmRvd1Jlc2l6ZSgpJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYWxsb2NhdGVDb21wb25lbnRJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5leHRJZCA9IEF1dG9jb21wbGV0ZUNvbXBvbmVudC5uZXh0SWQ7XG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50Lm5leHRJZCArPSAxO1xuICAgIHJldHVybiBgc2RjLWF1dG9jb21wbGV0ZS0ke25leHRJZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGxhenlMb2FkU3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25zOiBUW10gPSBbXTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBBVVRPQ09NUExFVEVfREVGQVVMVF9QTEFDRUhPTERFUl9LRVk7XG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25WYWx1ZT86IGtleW9mIFQ7XG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25MYWJlbD86IGtleW9mIFQ7XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9IEFVVE9DT01QTEVURV9ERUZBVUxUX0VNUFRZX01FU1NBR0VfS0VZO1xuICBASW5wdXQoKSBkZWxheSA9IEFVVE9DT01QTEVURV9ERUZBVUxUX0RFTEFZO1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgdmlydHVhbFNjcm9sbEl0ZW1TaXplID0gMzc7XG4gIEBJbnB1dCgpIGxhenkgPSBmYWxzZTtcbiAgQElucHV0KCkgZHJvcGRvd24gPSBmYWxzZTtcbiAgQElucHV0KCkgZm9yY2VTZWxlY3Rpb24gPSBmYWxzZTtcbiAgQElucHV0KCkgY2hlY2ttYXJrID0gZmFsc2U7XG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aFRvU2VhcmNoID0gQVVUT0NPTVBMRVRFX0RFRkFVTFRfTUlOX0xFTkdUSDtcbiAgQElucHV0KCkgaW5wdXRDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBkYXRhS2V5Pzoga2V5b2YgVDtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgbGF6eUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPEF1dG9jb21wbGV0ZUxhenlMb2FkRXZlbnQ8VD4+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgQE91dHB1dCgpIHVuc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBibHVycmVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBrZXlVcCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBmb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNvbXBsZXRlTWV0aG9kID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvY29tcGxldGVDb21wbGV0ZUV2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lckRpdicpIHByb3RlY3RlZCBjb250YWluZXJEaXY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbCcpIHByb3RlY3RlZCBpbnB1dEVsPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tcG9uZW50SWQgPSBBdXRvY29tcGxldGVDb21wb25lbnQuYWxsb2NhdGVDb21wb25lbnRJZCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsU3RyYXRlZ3k6IFNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG92ZXJsYXlQb3NpdGlvbnM6IENvbm5lY3RlZFBvc2l0aW9uW10gPSBbXG4gICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgIHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ3RvcCcsIG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2JvdHRvbScgfSxcbiAgXTtcblxuICBwcm90ZWN0ZWQgaW5wdXRWYWx1ZSA9ICcnO1xuICBwcm90ZWN0ZWQgaXNPcGVuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBsb2FkaW5nID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93RW1wdHlNZXNzYWdlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBmb2N1c2VkSW5kZXggPSAtMTtcbiAgcHJvdGVjdGVkIGZpbHRlcmVkU3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25XcmFwcGVyPFQ+W10gPSBbXTtcbiAgcHJvdGVjdGVkIHZhbHVlOiBUIHwgc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCB2YWx1ZXM6IFRbXSA9IFtdO1xuXG4gIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZCA9ICgpID0+IHsgfTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7IH07XG4gIHByaXZhdGUgbGF6eVJlcXVlc3RJZCA9IDA7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuaW5wdXRTdWJqZWN0LnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVsYXkpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoKHF1ZXJ5KSA9PiB7XG4gICAgICAgIGlmIChxdWVyeS5sZW5ndGggPCB0aGlzLm1pbkxlbmd0aFRvU2VhcmNoICYmIHF1ZXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnMgPSBbXTtcbiAgICAgICAgICB0aGlzLnNob3dFbXB0eU1lc3NhZ2UgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZvY3VzZWRJbmRleCA9IC0xO1xuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnMocXVlcnkpO1xuXG4gICAgICAgIGlmICghdGhpcy5mb3JjZVNlbGVjdGlvbiAmJiAhdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgIHRoaXMub25DaGFuZ2UocXVlcnkpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5sYXp5TG9hZFN1YmplY3QucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWxheSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgocXVlcnkpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5sYXp5UmVxdWVzdElkICs9IDE7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMubGF6eVJlcXVlc3RJZDtcbiAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICB0aGlzLmxhenlMb2FkLmVtaXQoe1xuICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgIHJlc3BvbnNlOiAoZGF0YTogVFtdKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVxdWVzdElkICE9PSB0aGlzLmxhenlSZXF1ZXN0SWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3VnZ2VzdGlvbnMgPSBkYXRhO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoRmlsdGVyZWRTdWdnZXN0aW9ucyhxdWVyeSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snc3VnZ2VzdGlvbnMnXSAmJiAhdGhpcy5sYXp5KSB7XG4gICAgICB0aGlzLnJlZnJlc2hGaWx0ZXJlZFN1Z2dlc3Rpb25zKHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBBdXRvY29tcGxldGVXcml0ZVZhbHVlPFQ+KTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMudmFsdWVzID0gdGhpcy5ub3JtYWxpemVNdWx0aXBsZVZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLnJlZnJlc2hGaWx0ZXJlZFN1Z2dlc3Rpb25zKHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXV0b2NvbXBsZXRlIHZhbHVlIG11c3Qgbm90IGJlIGFuIGFycmF5IHdoZW4gbXVsdGlwbGUgaXMgZmFsc2UuJyk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlID8/IG51bGw7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy50b0Rpc3BsYXlWYWx1ZSh2YWx1ZSA/PyBudWxsKTtcbiAgICB0aGlzLnJlZnJlc2hGaWx0ZXJlZFN1Z2dlc3Rpb25zKHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiAodmFsdWU6IHVua25vd24pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gb25DaGFuZ2U7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSA/PyAnJztcbiAgICB0aGlzLmlucHV0VmFsdWUgPSBxdWVyeTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgaWYgKHRoaXMubGF6eSkge1xuICAgICAgdGhpcy5sYXp5TG9hZFN1YmplY3QubmV4dChxdWVyeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29tcGxldGVNZXRob2QuZW1pdCh7IHF1ZXJ5IH0pO1xuICAgICAgdGhpcy5pbnB1dFN1YmplY3QubmV4dChxdWVyeSk7XG4gICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb25JbnB1dEJsdXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5ibHVycmVkLmVtaXQoZXZlbnQpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG5cbiAgICBpZiAoIXRoaXMuZm9yY2VTZWxlY3Rpb24gfHwgdGhpcy5tdWx0aXBsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoID0gdGhpcy5maW5kRXhhY3RNYXRjaCh0aGlzLmlucHV0VmFsdWUpO1xuXG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy50b0Rpc3BsYXlWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0U3VnZ2VzdGlvbihtYXRjaC5kYXRhKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbklucHV0Rm9jdXMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c2VkLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmhhbmRsZUNsb3NlZFBhbmVsS2V5RG93bihldmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXNCeSgxLCBldmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLm1vdmVGb2N1c0J5KC0xLCBldmVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgIHRoaXMuc2VsZWN0Rm9jdXNlZFN1Z2dlc3Rpb24oZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd25QYW5lbCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uS2V5VXAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5rZXlVcC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbldpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRHJvcGRvd25QYW5lbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogVCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBpZiAoIXRoaXMudmFsdWVzLnNvbWUoKHZhbHVlKSA9PiB0aGlzLmFyZVN1Z2dlc3Rpb25zRXF1YWwodmFsdWUsIHN1Z2dlc3Rpb24pKSkge1xuICAgICAgICB0aGlzLnZhbHVlcyA9IFsuLi50aGlzLnZhbHVlcywgc3VnZ2VzdGlvbl07XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZXMpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IHN1Z2dlc3Rpb247XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLnRvRGlzcGxheVZhbHVlKHN1Z2dlc3Rpb24pO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmdldFN1Z2dlc3Rpb25SZXN1bHRWYWx1ZShzdWdnZXN0aW9uKSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZC5lbWl0KHN1Z2dlc3Rpb24pO1xuICAgIHRoaXMucmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnModGhpcy5pbnB1dFZhbHVlKTtcbiAgICB0aGlzLmNsb3NlRHJvcGRvd25QYW5lbCgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgIHRoaXMudmFsdWVzID0gW107XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zID0gW107XG4gICAgdGhpcy5zaG93RW1wdHlNZXNzYWdlID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duUGFuZWwoKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMubXVsdGlwbGUgPyBbXSA6IG51bGwpO1xuICAgIHRoaXMuY2xlYXJlZC5lbWl0KCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duUGFuZWwoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9wZW5Ecm9wZG93blBhbmVsKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlU3VnZ2VzdGlvbihzdWdnZXN0aW9uOiBUKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZXMgPSB0aGlzLnZhbHVlcy5maWx0ZXIoKHZhbHVlKSA9PiAhdGhpcy5hcmVTdWdnZXN0aW9uc0VxdWFsKHZhbHVlLCBzdWdnZXN0aW9uKSk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlcyk7XG4gICAgdGhpcy51bnNlbGVjdGVkLmVtaXQoc3VnZ2VzdGlvbik7XG4gICAgdGhpcy5yZWZyZXNoRmlsdGVyZWRTdWdnZXN0aW9ucyh0aGlzLmlucHV0VmFsdWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYWNrQnlTdWdnZXN0aW9uSWQoXzogbnVtYmVyLCBpdGVtOiBTdWdnZXN0aW9uV3JhcHBlcjxUPik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0uaWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNTdWdnZXN0aW9uU2VsZWN0ZWQoc3VnZ2VzdGlvbjogU3VnZ2VzdGlvbldyYXBwZXI8VD4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VnZ2VzdGlvbi5pc1NlbGVjdGVkID09PSB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBhY3RpdmVEZXNjZW5kYW50SWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuZm9jdXNlZEluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9uc1t0aGlzLmZvY3VzZWRJbmRleF0/LmlkID8/IG51bGw7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3BlbkRyb3Bkb3duUGFuZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGF6eSkge1xuICAgICAgdGhpcy5sYXp5TG9hZFN1YmplY3QubmV4dCh0aGlzLmlucHV0VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlZnJlc2hGaWx0ZXJlZFN1Z2dlc3Rpb25zKHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlRHJvcGRvd25QYW5lbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hGaWx0ZXJlZFN1Z2dlc3Rpb25zKHF1ZXJ5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3JtYWxpemVkUXVlcnkgPSBxdWVyeS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBhbGxTdWdnZXN0aW9ucyA9IHRoaXMuc3VnZ2VzdGlvbnMubWFwKChzdWdnZXN0aW9uKSA9PiB0aGlzLndyYXBTdWdnZXN0aW9uKHN1Z2dlc3Rpb24pKTtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IHRoaXMuZmlsdGVyU3VnZ2VzdGlvbnNCeVF1ZXJ5KG5vcm1hbGl6ZWRRdWVyeSwgYWxsU3VnZ2VzdGlvbnMpO1xuICAgIGNvbnN0IHNlbGVjdGVkSWRzID0gbmV3IFNldCh0aGlzLnZhbHVlcy5tYXAoKHZhbHVlKSA9PiB0aGlzLmdldFN1Z2dlc3Rpb25JZGVudGl0eSh2YWx1ZSkpKTtcblxuICAgIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucyA9IHRoaXMubWFya1NlbGVjdGVkU3VnZ2VzdGlvbnMoZmlsdGVyZWQsIHNlbGVjdGVkSWRzKTtcbiAgICB0aGlzLnNob3dFbXB0eU1lc3NhZ2UgPSB0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnMubGVuZ3RoID09PSAwICYmIG5vcm1hbGl6ZWRRdWVyeS5sZW5ndGggPj0gMDtcbiAgICB0aGlzLmZvY3VzZWRJbmRleCA9IHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGggPyAwIDogLTE7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlclN1Z2dlc3Rpb25zQnlRdWVyeShxdWVyeTogc3RyaW5nLCBzdWdnZXN0aW9uczogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSk6IFN1Z2dlc3Rpb25XcmFwcGVyPFQ+W10ge1xuICAgIHJldHVybiBxdWVyeVxuICAgICAgPyBzdWdnZXN0aW9ucy5maWx0ZXIoKHN1Z2dlc3Rpb24pID0+XG4gICAgICAgIHRoaXMudG9EaXNwbGF5VmFsdWUoc3VnZ2VzdGlvbi5kYXRhKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5KVxuICAgICAgKVxuICAgICAgOiBzdWdnZXN0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgbWFya1NlbGVjdGVkU3VnZ2VzdGlvbnMoXG4gICAgc3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25XcmFwcGVyPFQ+W10sXG4gICAgc2VsZWN0ZWRJZHM6IFNldDxzdHJpbmc+XG4gICk6IFN1Z2dlc3Rpb25XcmFwcGVyPFQ+W10ge1xuICAgIHJldHVybiBzdWdnZXN0aW9ucy5tYXAoKHN1Z2dlc3Rpb24pID0+ICh7XG4gICAgICAuLi5zdWdnZXN0aW9uLFxuICAgICAgaXNTZWxlY3RlZDogc2VsZWN0ZWRJZHMuaGFzKHN1Z2dlc3Rpb24uaWQpXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB3cmFwU3VnZ2VzdGlvbihzdWdnZXN0aW9uOiBUKTogU3VnZ2VzdGlvbldyYXBwZXI8VD4ge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBzdWdnZXN0aW9uLFxuICAgICAgaWQ6IHRoaXMuZ2V0U3VnZ2VzdGlvbklkZW50aXR5KHN1Z2dlc3Rpb24pXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3VnZ2VzdGlvbklkZW50aXR5KHN1Z2dlc3Rpb246IFQpOiBzdHJpbmcge1xuICAgIGlmICghc3VnZ2VzdGlvbiB8fCB0eXBlb2Ygc3VnZ2VzdGlvbiAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiBTdHJpbmcoc3VnZ2VzdGlvbiA/PyAnJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb2JqZWN0U3VnZ2VzdGlvbiA9IHN1Z2dlc3Rpb24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3Qgc2VsZWN0ZWRLZXkgPSB0aGlzLmRhdGFLZXkgPz8gdGhpcy5zdWdnZXN0aW9uVmFsdWU7XG5cbiAgICBpZiAoc2VsZWN0ZWRLZXkpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBvYmplY3RTdWdnZXN0aW9uW3NlbGVjdGVkS2V5IGFzIHN0cmluZ107XG4gICAgICByZXR1cm4gdGhpcy5zdHJpbmdpZnlJZGVudGl0eVZhbHVlKHNlbGVjdGVkVmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShzdWdnZXN0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RyaW5naWZ5SWRlbnRpdHlWYWx1ZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3ltYm9sJykge1xuICAgICAgcmV0dXJuIHZhbHVlLmRlc2NyaXB0aW9uID8/ICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2xvc2VkUGFuZWxLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuaXNPcGVuICYmIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJyAmJiAhdGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMub3BlbkRyb3Bkb3duUGFuZWwoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgbW92ZUZvY3VzQnkoc3RlcDogMSB8IC0xLCBldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoc3RlcCA+IDApIHtcbiAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gTWF0aC5taW4odGhpcy5mb2N1c2VkSW5kZXggKyAxLCB0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gTWF0aC5tYXgodGhpcy5mb2N1c2VkSW5kZXggLSAxLCAwKTtcbiAgICB9XG5cbiAgICB0aGlzLnNjcm9sbEZvY3VzZWRTdWdnZXN0aW9uSW50b1ZpZXcoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Rm9jdXNlZFN1Z2dlc3Rpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVTdWdnZXN0aW9uID0gdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zW3RoaXMuZm9jdXNlZEluZGV4XTtcblxuICAgIGlmIChhY3RpdmVTdWdnZXN0aW9uKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5zZWxlY3RTdWdnZXN0aW9uKGFjdGl2ZVN1Z2dlc3Rpb24uZGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZURyb3Bkb3duUGFuZWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3VnZ2VzdGlvblJlc3VsdFZhbHVlKHN1Z2dlc3Rpb246IFQpOiB1bmtub3duIHtcbiAgICBpZiAoIXRoaXMuc3VnZ2VzdGlvblZhbHVlIHx8ICFzdWdnZXN0aW9uIHx8IHR5cGVvZiBzdWdnZXN0aW9uICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHN1Z2dlc3Rpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1Z2dlc3Rpb25bdGhpcy5zdWdnZXN0aW9uVmFsdWVdO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvRGlzcGxheVZhbHVlKHZhbHVlOiBUIHwgc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25MYWJlbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlW3RoaXMuc3VnZ2VzdGlvbkxhYmVsXSA/PyAnJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZU11bHRpcGxlVmFsdWUodmFsdWU6IEF1dG9jb21wbGV0ZVdyaXRlVmFsdWU8VD4pOiBUW10ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmZpbHRlcigoZW50cnkpOiBlbnRyeSBpcyBUID0+IHR5cGVvZiBlbnRyeSAhPT0gJ3N0cmluZycpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFt2YWx1ZV07XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHByaXZhdGUgYXJlU3VnZ2VzdGlvbnNFcXVhbChsZWZ0OiBULCByaWdodDogVCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldFN1Z2dlc3Rpb25JZGVudGl0eShsZWZ0KSA9PT0gdGhpcy5nZXRTdWdnZXN0aW9uSWRlbnRpdHkocmlnaHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kRXhhY3RNYXRjaChxdWVyeTogc3RyaW5nKTogU3VnZ2VzdGlvbldyYXBwZXI8VD4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVyeSA9IHF1ZXJ5LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIHRoaXMuc3VnZ2VzdGlvbnNcbiAgICAgIC5tYXAoKHN1Z2dlc3Rpb24pID0+IHRoaXMud3JhcFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbikpXG4gICAgICAuZmluZCgoc3VnZ2VzdGlvbikgPT4gdGhpcy50b0Rpc3BsYXlWYWx1ZShzdWdnZXN0aW9uLmRhdGEpLnRvTG93ZXJDYXNlKCkgPT09IG5vcm1hbGl6ZWRRdWVyeSk7XG4gIH1cblxuICBwcml2YXRlIHNjcm9sbEZvY3VzZWRTdWdnZXN0aW9uSW50b1ZpZXcoKTogdm9pZCB7XG4gICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgY29uc3QgYWN0aXZlSWQgPSB0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnNbdGhpcy5mb2N1c2VkSW5kZXhdPy5pZDtcblxuICAgICAgaWYgKCFhY3RpdmVJZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGFjdGl2ZUlkKT8uc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2XG4gICNjb250YWluZXJEaXZcbiAgY2RrT3ZlcmxheU9yaWdpblxuICAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIlxuICBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVcIlxuICBbY2xhc3Muc2RjLWF1dG9jb21wbGV0ZS0tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3Muc2RjLWF1dG9jb21wbGV0ZS0taW52YWxpZF09XCJpbnZhbGlkXCJcbiAgW2NsYXNzLnNkYy1hdXRvY29tcGxldGUtLW11bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgW25nQ2xhc3NdPVwiaW5wdXRDbGFzc1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19jb250cm9sXCI+XG4gICAgQGlmIChtdWx0aXBsZSAmJiB2YWx1ZXMubGVuZ3RoID4gMCkge1xuICAgIDxkaXYgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19jaGlwc1wiPlxuICAgICAgQGZvciAoc3VnZ2VzdGlvbiBvZiB2YWx1ZXM7IHRyYWNrIHN1Z2dlc3Rpb24pIHtcbiAgICAgIDxzZGMtYXV0b2NvbXBsZXRlLWNoaXBcbiAgICAgICAgW3N1Z2dlc3Rpb25dPVwic3VnZ2VzdGlvblwiXG4gICAgICAgIFtzdWdnZXN0aW9uTGFiZWxdPVwic3VnZ2VzdGlvbkxhYmVsXCJcbiAgICAgICAgKHN1Z2dlc3Rpb25SZW1vdmVkKT1cInJlbW92ZVN1Z2dlc3Rpb24oJGV2ZW50KVwiXG4gICAgICA+PC9zZGMtYXV0b2NvbXBsZXRlLWNoaXA+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPGlucHV0XG4gICAgICAjaW5wdXRFbFxuICAgICAgW2lkXT1cImNvbXBvbmVudElkXCJcbiAgICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9faW5wdXRcIlxuICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2F0dHIuYXJpYS1hdXRvY29tcGxldGVdPVwibXVsdGlwbGUgPyAnbGlzdCcgOiAnYm90aCdcIlxuICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImFjdGl2ZURlc2NlbmRhbnRJZFwiXG4gICAgICByb2xlPVwic2VhcmNoYm94XCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiXG4gICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIEBpZiAobG9hZGluZykge1xuICAgIDxzcGFuIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbG9hZGVyXCI+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+XG4gICAgPC9zcGFuPlxuICAgIH0gQGVsc2UgaWYgKCh2YWx1ZSB8fCB2YWx1ZXMubGVuZ3RoID4gMCB8fCBpbnB1dFZhbHVlKSAmJiAhZGlzYWJsZWQpIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fY2xlYXJcIlxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtdGltZXNcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKGRyb3Bkb3duKSB7XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX3RvZ2dsZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiXG4gID5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJmYXNcIlxuICAgICAgW2NsYXNzLmZhLWNhcmV0LWRvd25dPVwiIWlzT3BlblwiXG4gICAgICBbY2xhc3MuZmEtY2FyZXQtdXBdPVwiaXNPcGVuXCJcbiAgICA+PC9pPlxuICA8L2J1dHRvbj5cbiAgfVxuPC9kaXY+XG5cbkBpZiAoKHNob3dFbXB0eU1lc3NhZ2UgfHwgZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGggPiAwKSAmJiAhcmVhZG9ubHkpIHtcbjxuZy10ZW1wbGF0ZVxuICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNPcGVuXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwib3ZlcmxheVBvc2l0aW9uc1wiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3ldPVwic2Nyb2xsU3RyYXRlZ3lcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVZpZXdwb3J0TWFyZ2luXT1cIjhcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICBjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcz1cImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCJcbiAgKGJhY2tkcm9wQ2xpY2spPVwiY2xvc2VEcm9wZG93blBhbmVsKClcIlxuICAoZGV0YWNoKT1cImNsb3NlRHJvcGRvd25QYW5lbCgpXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fcGFuZWxcIlxuICAgIFtpZF09XCInZHJvcGRvd24tY29udGFpbmVyLScgKyBjb21wb25lbnRJZFwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbnRhaW5lckRpdj8ub2Zmc2V0V2lkdGggPz8gbnVsbFwiXG4gID5cbiAgICA8dWxcbiAgICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbGlzdFwiXG4gICAgPlxuICAgICAgQGlmICh2aXJ0dWFsU2Nyb2xsICYmIGZpbHRlcmVkU3VnZ2VzdGlvbnMubGVuZ3RoID4gMTApIHtcbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX192aWV3cG9ydFwiXG4gICAgICAgIFtpdGVtU2l6ZV09XCJ2aXJ0dWFsU2Nyb2xsSXRlbVNpemVcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgc3VnZ2VzdGlvbiBvZiBmaWx0ZXJlZFN1Z2dlc3Rpb25zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5U3VnZ2VzdGlvbklkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgW2lkXT1cInN1Z2dlc3Rpb24uaWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19vcHRpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy1hdXRvY29tcGxldGVfX29wdGlvbi0tZm9jdXNlZF09XCJpID09PSBmb2N1c2VkSW5kZXhcIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy1hdXRvY29tcGxldGVfX29wdGlvbi0tc2VsZWN0ZWRdPVwiaXNTdWdnZXN0aW9uU2VsZWN0ZWQoc3VnZ2VzdGlvbilcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb24uZGF0YSlcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwic2VsZWN0U3VnZ2VzdGlvbihzdWdnZXN0aW9uLmRhdGEpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGNoZWNrbWFyayAmJiBtdWx0aXBsZSAmJiBpc1N1Z2dlc3Rpb25TZWxlY3RlZChzdWdnZXN0aW9uKSkge1xuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtY2hlY2tcIj48L2k+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7eyB0b0Rpc3BsYXlWYWx1ZShzdWdnZXN0aW9uLmRhdGEpIH19XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgQGZvciAoc3VnZ2VzdGlvbiBvZiBmaWx0ZXJlZFN1Z2dlc3Rpb25zOyB0cmFjayBzdWdnZXN0aW9uLmlkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgPGxpXG4gICAgICAgIFtpZF09XCJzdWdnZXN0aW9uLmlkXCJcbiAgICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19vcHRpb25cIlxuICAgICAgICBbY2xhc3Muc2RjLWF1dG9jb21wbGV0ZV9fb3B0aW9uLS1mb2N1c2VkXT1cImkgPT09IGZvY3VzZWRJbmRleFwiXG4gICAgICAgIFtjbGFzcy5zZGMtYXV0b2NvbXBsZXRlX19vcHRpb24tLXNlbGVjdGVkXT1cImlzU3VnZ2VzdGlvblNlbGVjdGVkKHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoY2hlY2ttYXJrICYmIG11bHRpcGxlICYmIGlzU3VnZ2VzdGlvblNlbGVjdGVkKHN1Z2dlc3Rpb24pKSB7XG4gICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNoZWNrXCI+PC9pPlxuICAgICAgICB9XG4gICAgICAgIHt7IHRvRGlzcGxheVZhbHVlKHN1Z2dlc3Rpb24uZGF0YSkgfX1cbiAgICAgIDwvbGk+XG4gICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpZiAoc2hvd0VtcHR5TWVzc2FnZSkge1xuICAgICAgPGxpIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fZW1wdHlcIj57eyBlbXB0eU1lc3NhZ2UgfCB0cmFuc2xhdGUgfX08L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbn1cbiJdfQ==
|
|
523
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9zcmMvZmVhdHVyZXMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEYsT0FBTyxFQUNMLDBCQUEwQixFQUMxQixzQ0FBc0MsRUFDdEMsK0JBQStCLEVBQy9CLG9DQUFvQyxFQUNyQyxNQUFNLHlDQUF5QyxDQUFDO0FBTWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBOEIsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RyxPQUFPLEVBQUUseUJB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O3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgdHlwZSB7IENvbm5lY3RlZFBvc2l0aW9uLCBTY3JvbGxTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGVib3VuY2UsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBBVVRPQ09NUExFVEVfREVGQVVMVF9ERUxBWSxcbiAgQVVUT0NPTVBMRVRFX0RFRkFVTFRfRU1QVFlfTUVTU0FHRV9LRVksXG4gIEFVVE9DT01QTEVURV9ERUZBVUxUX01JTl9MRU5HVEgsXG4gIEFVVE9DT01QTEVURV9ERUZBVUxUX1BMQUNFSE9MREVSX0tFWVxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9hdXRvY29tcGxldGUuY29uc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBdXRvY29tcGxldGVDb21wbGV0ZUV2ZW50LFxuICBBdXRvY29tcGxldGVMYXp5TG9hZEV2ZW50LFxuICBBdXRvY29tcGxldGVXcml0ZVZhbHVlXG59IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvYXV0b2NvbXBsZXRlLnR5cGUnO1xuaW1wb3J0IHsgd2F0Y2hPdmVybGF5RGlzbWlzcywgdHlwZSBPdmVybGF5RGlzbWlzc1dhdGNoZXIgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzL292ZXJsYXktZGlzbWlzcy51dGlsJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNoaXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLWNoaXAvYXV0b2NvbXBsZXRlLWNoaXAuY29tcG9uZW50JztcblxudHlwZSBTdWdnZXN0aW9uV3JhcHBlcjxUPiA9IHtcbiAgZGF0YTogVDtcbiAgaWQ6IHN0cmluZztcbiAgaXNTZWxlY3RlZD86IGJvb2xlYW47XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtYXV0b2NvbXBsZXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBPdmVybGF5TW9kdWxlLFxuICAgIFNjcm9sbGluZ01vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQXV0b2NvbXBsZXRlQ2hpcENvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBdXRvY29tcGxldGVDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGhvc3Q6IHtcbiAgICByb2xlOiAnY29tYm9ib3gnLFxuICAgICdbYXR0ci5hcmlhLWV4cGFuZGVkXSc6ICdpc09wZW4nLFxuICAgICdbYXR0ci5hcmlhLWhhc3BvcHVwXSc6ICdcImxpc3Rib3hcIicsXG4gICAgJyh3aW5kb3c6cmVzaXplKSc6ICdvbldpbmRvd1Jlc2l6ZSgpJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3RhdGljIG5leHRJZCA9IDA7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYWxsb2NhdGVDb21wb25lbnRJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5leHRJZCA9IEF1dG9jb21wbGV0ZUNvbXBvbmVudC5uZXh0SWQ7XG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50Lm5leHRJZCArPSAxO1xuICAgIHJldHVybiBgc2RjLWF1dG9jb21wbGV0ZS0ke25leHRJZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbGF6eUxvYWRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgZGlzbWlzc1dhdGNoZXI6IE92ZXJsYXlEaXNtaXNzV2F0Y2hlciB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25zOiBUW10gPSBbXTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBBVVRPQ09NUExFVEVfREVGQVVMVF9QTEFDRUhPTERFUl9LRVk7XG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25WYWx1ZT86IGtleW9mIFQ7XG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25MYWJlbD86IGtleW9mIFQ7XG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlcXVpcmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9IEFVVE9DT01QTEVURV9ERUZBVUxUX0VNUFRZX01FU1NBR0VfS0VZO1xuICBASW5wdXQoKSBkZWxheSA9IEFVVE9DT01QTEVURV9ERUZBVUxUX0RFTEFZO1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgdmlydHVhbFNjcm9sbEl0ZW1TaXplID0gMzc7XG4gIEBJbnB1dCgpIGxhenkgPSBmYWxzZTtcbiAgQElucHV0KCkgZHJvcGRvd24gPSBmYWxzZTtcbiAgQElucHV0KCkgZm9yY2VTZWxlY3Rpb24gPSBmYWxzZTtcbiAgQElucHV0KCkgY2hlY2ttYXJrID0gZmFsc2U7XG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1pbkxlbmd0aFRvU2VhcmNoID0gQVVUT0NPTVBMRVRFX0RFRkFVTFRfTUlOX0xFTkdUSDtcbiAgQElucHV0KCkgaW5wdXRDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBkYXRhS2V5Pzoga2V5b2YgVDtcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgbGF6eUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPEF1dG9jb21wbGV0ZUxhenlMb2FkRXZlbnQ8VD4+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgQE91dHB1dCgpIHVuc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFQ+KCk7XG4gIEBPdXRwdXQoKSBibHVycmVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBrZXlVcCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBmb2N1c2VkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNvbXBsZXRlTWV0aG9kID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvY29tcGxldGVDb21wbGV0ZUV2ZW50PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lckRpdicpIHByb3RlY3RlZCBjb250YWluZXJEaXY/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnaW5wdXRFbCcpIHByb3RlY3RlZCBpbnB1dEVsPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29tcG9uZW50SWQgPSBBdXRvY29tcGxldGVDb21wb25lbnQuYWxsb2NhdGVDb21wb25lbnRJZCgpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsU3RyYXRlZ3k6IFNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3ZlcmxheVBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcbiAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9LFxuICBdO1xuXG4gIHByb3RlY3RlZCBpbnB1dFZhbHVlID0gJyc7XG4gIHByb3RlY3RlZCBpc09wZW4gPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGxvYWRpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHNob3dFbXB0eU1lc3NhZ2UgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIGZvY3VzZWRJbmRleCA9IC0xO1xuICBwcm90ZWN0ZWQgZmlsdGVyZWRTdWdnZXN0aW9uczogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSA9IFtdO1xuICBwcm90ZWN0ZWQgdmFsdWU6IFQgfCBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIHZhbHVlczogVFtdID0gW107XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkID0gKCkgPT4geyB9O1xuICBwcml2YXRlIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHsgfTtcbiAgcHJpdmF0ZSBsYXp5UmVxdWVzdElkID0gMDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5pbnB1dFN1YmplY3QucGlwZShkZWJvdW5jZSgoKSA9PiB0aW1lcih0aGlzLmRlbGF5KSksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgocXVlcnkpID0+IHtcbiAgICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA8IHRoaXMubWluTGVuZ3RoVG9TZWFyY2ggJiYgcXVlcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucyA9IFtdO1xuICAgICAgICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gLTE7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoRmlsdGVyZWRTdWdnZXN0aW9ucyhxdWVyeSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmZvcmNlU2VsZWN0aW9uICYmICF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZShxdWVyeSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmxhenlMb2FkU3ViamVjdC5waXBlKGRlYm91bmNlKCgpID0+IHRpbWVyKHRoaXMuZGVsYXkpKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKChxdWVyeSkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmxhenlSZXF1ZXN0SWQgKz0gMTtcbiAgICAgICAgY29uc3QgcmVxdWVzdElkID0gdGhpcy5sYXp5UmVxdWVzdElkO1xuICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIHRoaXMubGF6eUxvYWQuZW1pdCh7XG4gICAgICAgICAgcXVlcnksXG4gICAgICAgICAgcmVzcG9uc2U6IChkYXRhOiBUW10pID0+IHtcbiAgICAgICAgICAgIGlmIChyZXF1ZXN0SWQgIT09IHRoaXMubGF6eVJlcXVlc3RJZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9ucyA9IGRhdGE7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hGaWx0ZXJlZFN1Z2dlc3Rpb25zKHF1ZXJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzdWdnZXN0aW9ucyddICYmICF0aGlzLmxhenkpIHtcbiAgICAgIHRoaXMucmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnModGhpcy5pbnB1dFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNtaXNzV2F0Y2hlciA9IHdhdGNoT3ZlcmxheURpc21pc3Moe1xuICAgICAgZ2V0VHJpZ2dlckVsZW1lbnQ6ICgpID0+IHRoaXMuY29udGFpbmVyRGl2Py5uYXRpdmVFbGVtZW50ID8/IG51bGwsXG4gICAgICBpc09wZW46ICgpID0+IHRoaXMuaXNPcGVuLFxuICAgICAgb25EaXNtaXNzOiAoKSA9PiB0aGlzLmNsb3NlRHJvcGRvd25QYW5lbCgpLFxuICAgICAgcm91dGVyOiB0aGlzLnJvdXRlclxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5kaXNtaXNzV2F0Y2hlcj8uZGVzdHJveSgpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogQXV0b2NvbXBsZXRlV3JpdGVWYWx1ZTxUPik6IHZvaWQge1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXMubm9ybWFsaXplTXVsdGlwbGVWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5yZWZyZXNoRmlsdGVyZWRTdWdnZXN0aW9ucyh0aGlzLmlucHV0VmFsdWUpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0F1dG9jb21wbGV0ZSB2YWx1ZSBtdXN0IG5vdCBiZSBhbiBhcnJheSB3aGVuIG11bHRpcGxlIGlzIGZhbHNlLicpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA/PyBudWxsO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMudG9EaXNwbGF5VmFsdWUodmFsdWUgPz8gbnVsbCk7XG4gICAgdGhpcy5yZWZyZXNoRmlsdGVyZWRTdWdnZXN0aW9ucyh0aGlzLmlucHV0VmFsdWUpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogKHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUgPz8gJyc7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gcXVlcnk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgIGlmICh0aGlzLmxhenkpIHtcbiAgICAgIHRoaXMubGF6eUxvYWRTdWJqZWN0Lm5leHQocXVlcnkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbXBsZXRlTWV0aG9kLmVtaXQoeyBxdWVyeSB9KTtcbiAgICAgIHRoaXMuaW5wdXRTdWJqZWN0Lm5leHQocXVlcnkpO1xuICAgICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uSW5wdXRCbHVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuYmx1cnJlZC5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgaWYgKCF0aGlzLmZvcmNlU2VsZWN0aW9uIHx8IHRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtYXRjaCA9IHRoaXMuZmluZEV4YWN0TWF0Y2godGhpcy5pbnB1dFZhbHVlKTtcblxuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMudG9EaXNwbGF5VmFsdWUodGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdFN1Z2dlc3Rpb24obWF0Y2guZGF0YSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25JbnB1dEZvY3VzKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNlZC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYW5kbGVDbG9zZWRQYW5lbEtleURvd24oZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIHRoaXMubW92ZUZvY3VzQnkoMSwgZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgdGhpcy5tb3ZlRm9jdXNCeSgtMSwgZXZlbnQpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdFbnRlcic6XG4gICAgICBjYXNlICdUYWInOlxuICAgICAgICB0aGlzLnNlbGVjdEZvY3VzZWRTdWdnZXN0aW9uKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duUGFuZWwoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvbktleVVwKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMua2V5VXAuZW1pdChldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duUGFuZWwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgaWYgKCF0aGlzLnZhbHVlcy5zb21lKCh2YWx1ZSkgPT4gdGhpcy5hcmVTdWdnZXN0aW9uc0VxdWFsKHZhbHVlLCBzdWdnZXN0aW9uKSkpIHtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSBbLi4udGhpcy52YWx1ZXMsIHN1Z2dlc3Rpb25dO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWVzKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBzdWdnZXN0aW9uO1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy50b0Rpc3BsYXlWYWx1ZShzdWdnZXN0aW9uKTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5nZXRTdWdnZXN0aW9uUmVzdWx0VmFsdWUoc3VnZ2VzdGlvbikpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChzdWdnZXN0aW9uKTtcbiAgICB0aGlzLnJlZnJlc2hGaWx0ZXJlZFN1Z2dlc3Rpb25zKHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duUGFuZWwoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLnZhbHVlcyA9IFtdO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZSA9IGZhbHNlO1xuICAgIHRoaXMuY2xvc2VEcm9wZG93blBhbmVsKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLm11bHRpcGxlID8gW10gOiBudWxsKTtcbiAgICB0aGlzLmNsZWFyZWQuZW1pdCgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93blBhbmVsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuRHJvcGRvd25QYW5lbCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZVN1Z2dlc3Rpb24oc3VnZ2VzdGlvbjogVCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWVzID0gdGhpcy52YWx1ZXMuZmlsdGVyKCh2YWx1ZSkgPT4gIXRoaXMuYXJlU3VnZ2VzdGlvbnNFcXVhbCh2YWx1ZSwgc3VnZ2VzdGlvbikpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZXMpO1xuICAgIHRoaXMudW5zZWxlY3RlZC5lbWl0KHN1Z2dlc3Rpb24pO1xuICAgIHRoaXMucmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnModGhpcy5pbnB1dFZhbHVlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFja0J5U3VnZ2VzdGlvbklkKF86IG51bWJlciwgaXRlbTogU3VnZ2VzdGlvbldyYXBwZXI8VD4pOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzU3VnZ2VzdGlvblNlbGVjdGVkKHN1Z2dlc3Rpb246IFN1Z2dlc3Rpb25XcmFwcGVyPFQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1Z2dlc3Rpb24uaXNTZWxlY3RlZCA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsYWJlbEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5sYWJlbCA9PT0gJ3N0cmluZycgPyB0aGlzLmxhYmVsIDogJyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGFjdGl2ZURlc2NlbmRhbnRJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5mb2N1c2VkSW5kZXggPCAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zW3RoaXMuZm9jdXNlZEluZGV4XT8uaWQgPz8gbnVsbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBvcGVuRHJvcGRvd25QYW5lbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sYXp5KSB7XG4gICAgICB0aGlzLmxhenlMb2FkU3ViamVjdC5uZXh0KHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnModGhpcy5pbnB1dFZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xvc2VEcm9wZG93blBhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5mb2N1c2VkSW5kZXggPSAtMTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaEZpbHRlcmVkU3VnZ2VzdGlvbnMocXVlcnk6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRRdWVyeSA9IHF1ZXJ5LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGFsbFN1Z2dlc3Rpb25zID0gdGhpcy5zdWdnZXN0aW9ucy5tYXAoKHN1Z2dlc3Rpb24pID0+IHRoaXMud3JhcFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbikpO1xuICAgIGNvbnN0IGZpbHRlcmVkID0gdGhpcy5maWx0ZXJTdWdnZXN0aW9uc0J5UXVlcnkobm9ybWFsaXplZFF1ZXJ5LCBhbGxTdWdnZXN0aW9ucyk7XG4gICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSBuZXcgU2V0KHRoaXMudmFsdWVzLm1hcCgodmFsdWUpID0+IHRoaXMuZ2V0U3VnZ2VzdGlvbklkZW50aXR5KHZhbHVlKSkpO1xuXG4gICAgdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zID0gdGhpcy5tYXJrU2VsZWN0ZWRTdWdnZXN0aW9ucyhmaWx0ZXJlZCwgc2VsZWN0ZWRJZHMpO1xuICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZSA9IHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGggPT09IDAgJiYgbm9ybWFsaXplZFF1ZXJ5Lmxlbmd0aCA+PSAwO1xuICAgIHRoaXMuZm9jdXNlZEluZGV4ID0gdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zLmxlbmd0aCA/IDAgOiAtMTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyU3VnZ2VzdGlvbnNCeVF1ZXJ5KHF1ZXJ5OiBzdHJpbmcsIHN1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uV3JhcHBlcjxUPltdKTogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSB7XG4gICAgcmV0dXJuIHF1ZXJ5XG4gICAgICA/IHN1Z2dlc3Rpb25zLmZpbHRlcigoc3VnZ2VzdGlvbikgPT5cbiAgICAgICAgdGhpcy50b0Rpc3BsYXlWYWx1ZShzdWdnZXN0aW9uLmRhdGEpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnkpXG4gICAgICApXG4gICAgICA6IHN1Z2dlc3Rpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrU2VsZWN0ZWRTdWdnZXN0aW9ucyhcbiAgICBzdWdnZXN0aW9uczogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSxcbiAgICBzZWxlY3RlZElkczogU2V0PHN0cmluZz5cbiAgKTogU3VnZ2VzdGlvbldyYXBwZXI8VD5bXSB7XG4gICAgcmV0dXJuIHN1Z2dlc3Rpb25zLm1hcCgoc3VnZ2VzdGlvbikgPT4gKHtcbiAgICAgIC4uLnN1Z2dlc3Rpb24sXG4gICAgICBpc1NlbGVjdGVkOiBzZWxlY3RlZElkcy5oYXMoc3VnZ2VzdGlvbi5pZClcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHdyYXBTdWdnZXN0aW9uKHN1Z2dlc3Rpb246IFQpOiBTdWdnZXN0aW9uV3JhcHBlcjxUPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHN1Z2dlc3Rpb24sXG4gICAgICBpZDogdGhpcy5nZXRTdWdnZXN0aW9uSWRlbnRpdHkoc3VnZ2VzdGlvbilcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWdnZXN0aW9uSWRlbnRpdHkoc3VnZ2VzdGlvbjogVCk6IHN0cmluZyB7XG4gICAgaWYgKCFzdWdnZXN0aW9uIHx8IHR5cGVvZiBzdWdnZXN0aW9uICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIFN0cmluZyhzdWdnZXN0aW9uID8/ICcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBvYmplY3RTdWdnZXN0aW9uID0gc3VnZ2VzdGlvbiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCBzZWxlY3RlZEtleSA9IHRoaXMuZGF0YUtleSA/PyB0aGlzLnN1Z2dlc3Rpb25WYWx1ZTtcblxuICAgIGlmIChzZWxlY3RlZEtleSkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IG9iamVjdFN1Z2dlc3Rpb25bc2VsZWN0ZWRLZXkgYXMgc3RyaW5nXTtcbiAgICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeUlkZW50aXR5VmFsdWUoc2VsZWN0ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHN1Z2dlc3Rpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnlJZGVudGl0eVZhbHVlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzeW1ib2wnKSB7XG4gICAgICByZXR1cm4gdmFsdWUuZGVzY3JpcHRpb24gPz8gJyc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHwgdHlwZW9mIHZhbHVlID09PSAnYmlnaW50Jykge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbG9zZWRQYW5lbEtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc09wZW4gJiYgdGhpcy5maWx0ZXJlZFN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nICYmICF0aGlzLmlzT3Blbikge1xuICAgICAgdGhpcy5vcGVuRHJvcGRvd25QYW5lbCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBtb3ZlRm9jdXNCeShzdGVwOiAxIHwgLTEsIGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmIChzdGVwID4gMCkge1xuICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSBNYXRoLm1pbih0aGlzLmZvY3VzZWRJbmRleCArIDEsIHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGggLSAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c2VkSW5kZXggPSBNYXRoLm1heCh0aGlzLmZvY3VzZWRJbmRleCAtIDEsIDApO1xuICAgIH1cblxuICAgIHRoaXMuc2Nyb2xsRm9jdXNlZFN1Z2dlc3Rpb25JbnRvVmlldygpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RGb2N1c2VkU3VnZ2VzdGlvbihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZVN1Z2dlc3Rpb24gPSB0aGlzLmZpbHRlcmVkU3VnZ2VzdGlvbnNbdGhpcy5mb2N1c2VkSW5kZXhdO1xuXG4gICAgaWYgKGFjdGl2ZVN1Z2dlc3Rpb24pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNlbGVjdFN1Z2dlc3Rpb24oYWN0aXZlU3VnZ2VzdGlvbi5kYXRhKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlRHJvcGRvd25QYW5lbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWdnZXN0aW9uUmVzdWx0VmFsdWUoc3VnZ2VzdGlvbjogVCk6IHVua25vd24ge1xuICAgIGlmICghdGhpcy5zdWdnZXN0aW9uVmFsdWUgfHwgIXN1Z2dlc3Rpb24gfHwgdHlwZW9mIHN1Z2dlc3Rpb24gIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gc3VnZ2VzdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VnZ2VzdGlvblt0aGlzLnN1Z2dlc3Rpb25WYWx1ZV07XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9EaXNwbGF5VmFsdWUodmFsdWU6IFQgfCBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3VnZ2VzdGlvbkxhYmVsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWVbdGhpcy5zdWdnZXN0aW9uTGFiZWxdID8/ICcnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplTXVsdGlwbGVWYWx1ZSh2YWx1ZTogQXV0b2NvbXBsZXRlV3JpdGVWYWx1ZTxUPik6IFRbXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWUuZmlsdGVyKChlbnRyeSk6IGVudHJ5IGlzIFQgPT4gdHlwZW9mIGVudHJ5ICE9PSAnc3RyaW5nJyk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gW3ZhbHVlXTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBhcmVTdWdnZXN0aW9uc0VxdWFsKGxlZnQ6IFQsIHJpZ2h0OiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3VnZ2VzdGlvbklkZW50aXR5KGxlZnQpID09PSB0aGlzLmdldFN1Z2dlc3Rpb25JZGVudGl0eShyaWdodCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRFeGFjdE1hdGNoKHF1ZXJ5OiBzdHJpbmcpOiBTdWdnZXN0aW9uV3JhcHBlcjxUPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFF1ZXJ5ID0gcXVlcnkudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdWdnZXN0aW9uc1xuICAgICAgLm1hcCgoc3VnZ2VzdGlvbikgPT4gdGhpcy53cmFwU3VnZ2VzdGlvbihzdWdnZXN0aW9uKSlcbiAgICAgIC5maW5kKChzdWdnZXN0aW9uKSA9PiB0aGlzLnRvRGlzcGxheVZhbHVlKHN1Z2dlc3Rpb24uZGF0YSkudG9Mb3dlckNhc2UoKSA9PT0gbm9ybWFsaXplZFF1ZXJ5KTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsRm9jdXNlZFN1Z2dlc3Rpb25JbnRvVmlldygpOiB2b2lkIHtcbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB7XG4gICAgICBjb25zdCBhY3RpdmVJZCA9IHRoaXMuZmlsdGVyZWRTdWdnZXN0aW9uc1t0aGlzLmZvY3VzZWRJbmRleF0/LmlkO1xuXG4gICAgICBpZiAoIWFjdGl2ZUlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYWN0aXZlSWQpPy5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIkBpZiAobGFiZWxLZXkoKSkge1xuICA8ZGl2IGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbGFiZWwtcm93XCI+XG4gICAgPGxhYmVsIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbGFiZWxcIiBbZm9yXT1cImNvbXBvbmVudElkXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX2xhYmVsLXRleHRcIj5cbiAgICAgICAge3sgbGFiZWxLZXkoKSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICBAaWYgKHJlcXVpcmVkKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZC1maWVsZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPio8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucmVxdWlyZWRfZmllbGQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgPC9kaXY+XG59XG5cbjxkaXZcbiAgI2NvbnRhaW5lckRpdlxuICBjZGtPdmVybGF5T3JpZ2luXG4gICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZVwiXG4gIFtjbGFzcy5zZGMtYXV0b2NvbXBsZXRlLS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtjbGFzcy5zZGMtYXV0b2NvbXBsZXRlLS1pbnZhbGlkXT1cImludmFsaWRcIlxuICBbY2xhc3Muc2RjLWF1dG9jb21wbGV0ZS0tbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICBbbmdDbGFzc109XCJpbnB1dENsYXNzXCJcbj5cbiAgPGRpdiBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX2NvbnRyb2xcIj5cbiAgICBAaWYgKG11bHRpcGxlICYmIHZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgPGRpdiBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX2NoaXBzXCI+XG4gICAgICBAZm9yIChzdWdnZXN0aW9uIG9mIHZhbHVlczsgdHJhY2sgc3VnZ2VzdGlvbikge1xuICAgICAgPHNkYy1hdXRvY29tcGxldGUtY2hpcFxuICAgICAgICBbc3VnZ2VzdGlvbl09XCJzdWdnZXN0aW9uXCJcbiAgICAgICAgW3N1Z2dlc3Rpb25MYWJlbF09XCJzdWdnZXN0aW9uTGFiZWxcIlxuICAgICAgICAoc3VnZ2VzdGlvblJlbW92ZWQpPVwicmVtb3ZlU3VnZ2VzdGlvbigkZXZlbnQpXCJcbiAgICAgID48L3NkYy1hdXRvY29tcGxldGUtY2hpcD5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8aW5wdXRcbiAgICAgICNpbnB1dEVsXG4gICAgICBbaWRdPVwiY29tcG9uZW50SWRcIlxuICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19pbnB1dFwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsS2V5KCkgPyBudWxsIDogKHBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlKVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIlxuICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgW2F0dHIuYXJpYS1hdXRvY29tcGxldGVdPVwibXVsdGlwbGUgPyAnbGlzdCcgOiAnYm90aCdcIlxuICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImFjdGl2ZURlc2NlbmRhbnRJZFwiXG4gICAgICByb2xlPVwic2VhcmNoYm94XCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50KVwiXG4gICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigkZXZlbnQpXCJcbiAgICAgIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoJGV2ZW50KVwiXG4gICAgLz5cblxuICAgIEBpZiAobG9hZGluZykge1xuICAgIDxzcGFuIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbG9hZGVyXCI+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+XG4gICAgPC9zcGFuPlxuICAgIH0gQGVsc2UgaWYgKCh2YWx1ZSB8fCB2YWx1ZXMubGVuZ3RoID4gMCB8fCBpbnB1dFZhbHVlKSAmJiAhZGlzYWJsZWQpIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fY2xlYXJcIlxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAoY2xpY2spPVwiY2xlYXIoKVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtdGltZXNcIj48L2k+XG4gICAgPC9idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKGRyb3Bkb3duKSB7XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cInNkYy1hdXRvY29tcGxldGVfX3RvZ2dsZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiXG4gID5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJmYXNcIlxuICAgICAgW2NsYXNzLmZhLWNhcmV0LWRvd25dPVwiIWlzT3BlblwiXG4gICAgICBbY2xhc3MuZmEtY2FyZXQtdXBdPVwiaXNPcGVuXCJcbiAgICA+PC9pPlxuICA8L2J1dHRvbj5cbiAgfVxuPC9kaXY+XG5cbkBpZiAoKHNob3dFbXB0eU1lc3NhZ2UgfHwgZmlsdGVyZWRTdWdnZXN0aW9ucy5sZW5ndGggPiAwKSAmJiAhcmVhZG9ubHkpIHtcbjxuZy10ZW1wbGF0ZVxuICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNPcGVuXCJcbiAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwib3ZlcmxheVBvc2l0aW9uc1wiXG4gIFtjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3ldPVwic2Nyb2xsU3RyYXRlZ3lcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheVZpZXdwb3J0TWFyZ2luXT1cIjhcIlxuICBbY2RrQ29ubmVjdGVkT3ZlcmxheUhhc0JhY2tkcm9wXT1cInRydWVcIlxuICBjZGtDb25uZWN0ZWRPdmVybGF5QmFja2Ryb3BDbGFzcz1cImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCJcbiAgKGJhY2tkcm9wQ2xpY2spPVwiY2xvc2VEcm9wZG93blBhbmVsKClcIlxuICAoZGV0YWNoKT1cImNsb3NlRHJvcGRvd25QYW5lbCgpXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fcGFuZWxcIlxuICAgIFtpZF09XCInZHJvcGRvd24tY29udGFpbmVyLScgKyBjb21wb25lbnRJZFwiXG4gICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbnRhaW5lckRpdj8ub2Zmc2V0V2lkdGggPz8gbnVsbFwiXG4gID5cbiAgICA8dWxcbiAgICAgIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fbGlzdFwiXG4gICAgPlxuICAgICAgQGlmICh2aXJ0dWFsU2Nyb2xsICYmIGZpbHRlcmVkU3VnZ2VzdGlvbnMubGVuZ3RoID4gMTApIHtcbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX192aWV3cG9ydFwiXG4gICAgICAgIFtpdGVtU2l6ZV09XCJ2aXJ0dWFsU2Nyb2xsSXRlbVNpemVcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgc3VnZ2VzdGlvbiBvZiBmaWx0ZXJlZFN1Z2dlc3Rpb25zOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5U3VnZ2VzdGlvbklkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgW2lkXT1cInN1Z2dlc3Rpb24uaWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19vcHRpb25cIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy1hdXRvY29tcGxldGVfX29wdGlvbi0tZm9jdXNlZF09XCJpID09PSBmb2N1c2VkSW5kZXhcIlxuICAgICAgICAgICAgW2NsYXNzLnNkYy1hdXRvY29tcGxldGVfX29wdGlvbi0tc2VsZWN0ZWRdPVwiaXNTdWdnZXN0aW9uU2VsZWN0ZWQoc3VnZ2VzdGlvbilcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJzZWxlY3RTdWdnZXN0aW9uKHN1Z2dlc3Rpb24uZGF0YSlcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwic2VsZWN0U3VnZ2VzdGlvbihzdWdnZXN0aW9uLmRhdGEpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGNoZWNrbWFyayAmJiBtdWx0aXBsZSAmJiBpc1N1Z2dlc3Rpb25TZWxlY3RlZChzdWdnZXN0aW9uKSkge1xuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtY2hlY2tcIj48L2k+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7eyB0b0Rpc3BsYXlWYWx1ZShzdWdnZXN0aW9uLmRhdGEpIH19XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgQGZvciAoc3VnZ2VzdGlvbiBvZiBmaWx0ZXJlZFN1Z2dlc3Rpb25zOyB0cmFjayBzdWdnZXN0aW9uLmlkOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgPGxpXG4gICAgICAgIFtpZF09XCJzdWdnZXN0aW9uLmlkXCJcbiAgICAgICAgY2xhc3M9XCJzZGMtYXV0b2NvbXBsZXRlX19vcHRpb25cIlxuICAgICAgICBbY2xhc3Muc2RjLWF1dG9jb21wbGV0ZV9fb3B0aW9uLS1mb2N1c2VkXT1cImkgPT09IGZvY3VzZWRJbmRleFwiXG4gICAgICAgIFtjbGFzcy5zZGMtYXV0b2NvbXBsZXRlX19vcHRpb24tLXNlbGVjdGVkXT1cImlzU3VnZ2VzdGlvblNlbGVjdGVkKHN1Z2dlc3Rpb24pXCJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cInNlbGVjdFN1Z2dlc3Rpb24oc3VnZ2VzdGlvbi5kYXRhKVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoY2hlY2ttYXJrICYmIG11bHRpcGxlICYmIGlzU3VnZ2VzdGlvblNlbGVjdGVkKHN1Z2dlc3Rpb24pKSB7XG4gICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNoZWNrXCI+PC9pPlxuICAgICAgICB9XG4gICAgICAgIHt7IHRvRGlzcGxheVZhbHVlKHN1Z2dlc3Rpb24uZGF0YSkgfX1cbiAgICAgIDwvbGk+XG4gICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBpZiAoc2hvd0VtcHR5TWVzc2FnZSkge1xuICAgICAgPGxpIGNsYXNzPVwic2RjLWF1dG9jb21wbGV0ZV9fZW1wdHlcIj57eyBlbXB0eU1lc3NhZ2UgfCB0cmFuc2xhdGUgfX08L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbn1cbiJdfQ==
|
|
@@ -45,7 +45,7 @@ export class BignumberInputComponent {
|
|
|
45
45
|
useExisting: forwardRef(() => BignumberInputComponent),
|
|
46
46
|
multi: true
|
|
47
47
|
}
|
|
48
|
-
], ngImport: i0, template: "<sdc-number-input\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [label]=\"label\"\n [message]=\"message\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [invalid]=\"invalid\"\n [precision]=\"precision\"\n [scale]=\"scale\"\n [alignTo]=\"alignTo\"\n [allowNegative]=\"allowNegative\"\n [infoTooltip]=\"infoTooltip\"\n [infoTooltipPosition]=\"infoTooltipPosition\"\n [infoTooltipEvent]=\"infoTooltipEvent\"\n (blur)=\"onTouched()\"\n></sdc-number-input>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: NumberInputComponent, selector: "sdc-number-input", inputs: ["precision", "scale", "decimalSeparator", "thousandsSeparator", "alignTo", "allowNegative", "min", "max", "step", "infoTooltip", "infoTooltipPosition", "infoTooltipEvent"], outputs: ["pasteRejected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
48
|
+
], ngImport: i0, template: "<sdc-number-input\n [ngModel]=\"value\"\n (ngModelChange)=\"onValueChange($event)\"\n [label]=\"label\"\n [message]=\"message\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [invalid]=\"invalid\"\n [precision]=\"precision\"\n [scale]=\"scale\"\n [alignTo]=\"alignTo\"\n [allowNegative]=\"allowNegative\"\n [infoTooltip]=\"infoTooltip\"\n [infoTooltipPosition]=\"infoTooltipPosition\"\n [infoTooltipEvent]=\"infoTooltipEvent\"\n (blur)=\"onTouched()\"\n></sdc-number-input>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: NumberInputComponent, selector: "sdc-number-input", inputs: ["precision", "scale", "decimalSeparator", "thousandsSeparator", "alignTo", "allowNegative", "min", "max", "step", "infoTooltip", "infoTooltipPosition", "infoTooltipEvent", "addonLeft", "addonRight"], outputs: ["pasteRejected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
49
49
|
}
|
|
50
50
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BignumberInputComponent, decorators: [{
|
|
51
51
|
type: Component,
|