@eui/components 17.2.1-snapshot-1707791018159 → 17.2.1-snapshot-1707877313882
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/docs/components/EuiDropdownComponent.html +109 -4
- package/docs/dependencies.html +2 -2
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/eui-buttons/eui-buttons.component.mjs +1 -1
- package/esm2022/eui-card/components/eui-card-footer/eui-card-footer-menu-content.component.mjs +1 -1
- package/esm2022/eui-dropdown/dropdown-item/eui-dropdown-item.component.mjs +2 -2
- package/esm2022/eui-dropdown/eui-dropdown.component.mjs +76 -9
- package/esm2022/eui-table/sortable-col/eui-table-sortable-col.component.mjs +1 -1
- package/esm2022/eui-tabs/eui-tabs.component.mjs +2 -2
- package/esm2022/eui-textarea/eui-textarea.component.mjs +3 -3
- package/esm2022/eui-tree/eui-tree.component.mjs +1 -1
- package/esm2022/layout/eui-breadcrumb/collapsed-breadcrumb/collapsed-breadcrumb.component.mjs +1 -1
- package/esm2022/layout/eui-language-selector/language-selector.component.mjs +1 -1
- package/esm2022/layout/eui-user-profile/user-profile.component.mjs +1 -1
- package/eui-dropdown/eui-dropdown.component.d.ts +14 -3
- package/eui-dropdown/eui-dropdown.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-buttons.mjs +1 -1
- package/fesm2022/eui-components-eui-buttons.mjs.map +1 -1
- package/fesm2022/eui-components-eui-card.mjs +1 -1
- package/fesm2022/eui-components-eui-card.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dropdown.mjs +78 -11
- package/fesm2022/eui-components-eui-dropdown.mjs.map +1 -1
- package/fesm2022/eui-components-eui-table.mjs +1 -1
- package/fesm2022/eui-components-eui-table.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tabs.mjs +1 -1
- package/fesm2022/eui-components-eui-tabs.mjs.map +1 -1
- package/fesm2022/eui-components-eui-textarea.mjs +2 -2
- package/fesm2022/eui-components-eui-textarea.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tree.mjs +1 -1
- package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
- package/fesm2022/eui-components-layout.mjs +3 -3
- package/fesm2022/eui-components-layout.mjs.map +1 -1
- package/package.json +13 -13
@@ -182,7 +182,7 @@ export class EuiTableSortableColComponent {
|
|
182
182
|
return arr.filter((col) => col.name === el.name).length === 1;
|
183
183
|
}
|
184
184
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EuiTableSortableColComponent, deps: [{ token: i1.EuiTableSortService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
185
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: EuiTableSortableColComponent, selector: "th[sortable]", inputs: { sortOn: "sortOn", sortOrder: "sortOrder", defaultMultiOrder: "defaultMultiOrder", defaultOrder: "defaultOrder", sortDisabled: "sortDisabled", isMultiSortable: "isMultiSortable" }, host: { properties: { "class": "this.cssClasses" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: EuiDropdownComponent, descendants: true }], ngImport: i0, template: "<div class=\"eui-table__sortable-col-content\">\n <ng-content></ng-content>\n <button type=\"button\" *ngIf=\"!sortDisabled\" euiSizeS euiButton euiIconButton euiBasicButton class=\"eui-table__sortable-icon-button\" (click)=\"click()\">\n <eui-icon-svg\n *ngIf=\"!order\"\n icon=\"eui-swap-vertical\"\n fillColor=\"grey-50\"\n [aria-label]=\"'eui.euitable.NO-SORTING-ICON' | translate\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"order === 'asc'\"\n icon=\"eui-arrow-up\"\n fillColor=\"primary-100\"\n [aria-label]=\"'eui.euitable.ASCENDING-ICON' | translate\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"order === 'desc'\"\n icon=\"eui-arrow-down\"\n fillColor=\"primary-100\"\n [aria-label]=\"'eui.euitable.DESCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n <ng-template *ngIf=\"isMultiSortable\" [ngTemplateOutlet]=\"sortDropdown\"></ng-template>\n</div>\n<ng-template #sortDropdown let-index>\n <eui-dropdown [isClosedOnClickInside]=\"false\">\n <button type=\"button\" euiButton euiBasicButton euiRounded euiIconButton euiSizeS [euiDisabled]=\"sortDisabled\" (click)=\"onOpenDropdown()\">\n <span euiBadge euiPrimary euiOutline>{{ currentMultiSortPosition }}</span>\n </button>\n <eui-dropdown-content>\n <div class=\"eui-u-pt-xs eui-u-pl-s\">\n <small>{{ 'eui.euitable.CHOOSE-SORT-ORDER' | translate }}</small>\n </div>\n <form [formGroup]=\"form\" *ngIf=\"form\">\n <ng-container formArrayName=\"columns\">\n <ng-container *ngFor=\"let columnForm of columns.controls; let i = index\">\n <div class=\"eui-u-flex eui-u-p-s\" [formGroup]=\"form.get('columns')['controls'][i]\">\n <span euiLabel class=\"eui-u-mr-s\">{{ i + 1 }}</span>\n <select euiSelect euiSizeS formControlName=\"name\" class=\"eui-u-mr-s\">\n <option value=\"\"></option>\n <option *ngFor=\"let column of multisortParams\" [value]=\"column.name\">\n {{ column.name }}\n </option>\n </select>\n <button type=\"button\"\n *ngIf=\"!getOrderByIndex(i)\"\n euiSizeS\n euiSecondary\n euiButton\n euiIconButton\n euiBasicButton\n (click)=\"onClickMultisortOrder(i + 1, 'asc')\">\n <eui-icon-svg\n icon=\"eui-swap-vertical\"\n [aria-label]=\"'eui.euitable.NO-SORTING-ICON' | translate\"></eui-icon-svg>\n </button>\n <button type=\"button\"\n *ngIf=\"getOrderByIndex(i) === 'asc'\"\n euiSizeS\n euiPrimary\n euiButton\n euiIconButton\n euiBasicButton\n (click)=\"onClickMultisortOrder(i + 1, 'desc')\">\n <eui-icon-svg icon=\"eui-arrow-up\" [aria-label]=\"'eui.euitable.ASCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n <button type=\"button\"\n *ngIf=\"getOrderByIndex(i) === 'desc'\"\n euiSizeS\n euiPrimary\n euiButton\n euiIconButton\n euiBasicButton\n (click)=\"onClickMultisortOrder(i + 1, null)\">\n <eui-icon-svg\n icon=\"eui-arrow-down\"\n [aria-label]=\"'eui.euitable.DESCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n </div>\n </ng-container>\n </ng-container>\n </form>\n <!-- Footer-->\n <p class=\"eui-u-mt-none eui-u-mb-none eui-u-ml-s\" *ngIf=\"error\">\n <eui-feedback-message euiDanger>{{ 'eui.euitable.WRONG-SORT-PARAMS' | translate }}</eui-feedback-message>\n </p>\n <div class=\"eui-u-flex eui-u-flex-justify-content-between eui-u-p-s\">\n <button type=\"button\" euiButton euiSizeS euiSecondary (click)=\"onCancelMultiSort()\">{{ 'eui.CANCEL' | translate }}</button>\n <button type=\"button\" euiButton euiSizeS euiPrimary (click)=\"onSubmitMultiSort()\">{{ 'eui.APPLY' | translate }}</button>\n </div>\n </eui-dropdown-content>\n </eui-dropdown>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i4.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i5.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isBlock", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation"] }, { kind: "directive", type: i5.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i6.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i7.EuiFeedbackMessageComponent, selector: "eui-feedback-message", inputs: ["styleClass"] }, { kind: "component", type: i8.EuiSelectComponent, selector: "select[euiSelect]", inputs: ["placeholder", "readonly", "isInvalid"] }, { kind: "directive", type: i8.EuiNgSelectOptionDirective, selector: "option:not([eclSelectOption]):not([eclMultiselectOption]), option[euiOption]", inputs: ["selected", "label", "ngValue"] }, { kind: "directive", type: i8.EuiSelectControlValueAccessor, selector: "select:not([multiple])[formControlName][euiSelect],select:not([multiple])[formControl][euiSelect],select:not([multiple])[ngModel][euiSelect]", inputs: ["placeholder"] }, { kind: "directive", type: i8.EuiSelectMultipleOption, selector: "option, option[euiOption]", inputs: ["ngValue", "value"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
|
185
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: EuiTableSortableColComponent, selector: "th[sortable]", inputs: { sortOn: "sortOn", sortOrder: "sortOrder", defaultMultiOrder: "defaultMultiOrder", defaultOrder: "defaultOrder", sortDisabled: "sortDisabled", isMultiSortable: "isMultiSortable" }, host: { properties: { "class": "this.cssClasses" } }, viewQueries: [{ propertyName: "dropdown", first: true, predicate: EuiDropdownComponent, descendants: true }], ngImport: i0, template: "<div class=\"eui-table__sortable-col-content\">\n <ng-content></ng-content>\n <button type=\"button\" *ngIf=\"!sortDisabled\" euiSizeS euiButton euiIconButton euiBasicButton class=\"eui-table__sortable-icon-button\" (click)=\"click()\">\n <eui-icon-svg\n *ngIf=\"!order\"\n icon=\"eui-swap-vertical\"\n fillColor=\"grey-50\"\n [aria-label]=\"'eui.euitable.NO-SORTING-ICON' | translate\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"order === 'asc'\"\n icon=\"eui-arrow-up\"\n fillColor=\"primary-100\"\n [aria-label]=\"'eui.euitable.ASCENDING-ICON' | translate\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"order === 'desc'\"\n icon=\"eui-arrow-down\"\n fillColor=\"primary-100\"\n [aria-label]=\"'eui.euitable.DESCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n <ng-template *ngIf=\"isMultiSortable\" [ngTemplateOutlet]=\"sortDropdown\"></ng-template>\n</div>\n<ng-template #sortDropdown let-index>\n <eui-dropdown [isClosedOnClickInside]=\"false\">\n <button type=\"button\" euiButton euiBasicButton euiRounded euiIconButton euiSizeS [euiDisabled]=\"sortDisabled\" (click)=\"onOpenDropdown()\">\n <span euiBadge euiPrimary euiOutline>{{ currentMultiSortPosition }}</span>\n </button>\n <eui-dropdown-content>\n <div class=\"eui-u-pt-xs eui-u-pl-s\">\n <small>{{ 'eui.euitable.CHOOSE-SORT-ORDER' | translate }}</small>\n </div>\n <form [formGroup]=\"form\" *ngIf=\"form\">\n <ng-container formArrayName=\"columns\">\n <ng-container *ngFor=\"let columnForm of columns.controls; let i = index\">\n <div class=\"eui-u-flex eui-u-p-s\" [formGroup]=\"form.get('columns')['controls'][i]\">\n <span euiLabel class=\"eui-u-mr-s\">{{ i + 1 }}</span>\n <select euiSelect euiSizeS formControlName=\"name\" class=\"eui-u-mr-s\">\n <option value=\"\"></option>\n <option *ngFor=\"let column of multisortParams\" [value]=\"column.name\">\n {{ column.name }}\n </option>\n </select>\n <button type=\"button\"\n *ngIf=\"!getOrderByIndex(i)\"\n euiSizeS\n euiSecondary\n euiButton\n euiIconButton\n euiBasicButton\n (click)=\"onClickMultisortOrder(i + 1, 'asc')\">\n <eui-icon-svg\n icon=\"eui-swap-vertical\"\n [aria-label]=\"'eui.euitable.NO-SORTING-ICON' | translate\"></eui-icon-svg>\n </button>\n <button type=\"button\"\n *ngIf=\"getOrderByIndex(i) === 'asc'\"\n euiSizeS\n euiPrimary\n euiButton\n euiIconButton\n euiBasicButton\n (click)=\"onClickMultisortOrder(i + 1, 'desc')\">\n <eui-icon-svg icon=\"eui-arrow-up\" [aria-label]=\"'eui.euitable.ASCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n <button type=\"button\"\n *ngIf=\"getOrderByIndex(i) === 'desc'\"\n euiSizeS\n euiPrimary\n euiButton\n euiIconButton\n euiBasicButton\n (click)=\"onClickMultisortOrder(i + 1, null)\">\n <eui-icon-svg\n icon=\"eui-arrow-down\"\n [aria-label]=\"'eui.euitable.DESCENDING-ICON' | translate\"></eui-icon-svg>\n </button>\n </div>\n </ng-container>\n </ng-container>\n </form>\n <!-- Footer-->\n <p class=\"eui-u-mt-none eui-u-mb-none eui-u-ml-s\" *ngIf=\"error\">\n <eui-feedback-message euiDanger>{{ 'eui.euitable.WRONG-SORT-PARAMS' | translate }}</eui-feedback-message>\n </p>\n <div class=\"eui-u-flex eui-u-flex-justify-content-between eui-u-p-s\">\n <button type=\"button\" euiButton euiSizeS euiSecondary (click)=\"onCancelMultiSort()\">{{ 'eui.CANCEL' | translate }}</button>\n <button type=\"button\" euiButton euiSizeS euiPrimary (click)=\"onSubmitMultiSort()\">{{ 'eui.APPLY' | translate }}</button>\n </div>\n </eui-dropdown-content>\n </eui-dropdown>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i4.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i5.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isBlock", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation", "isRightClickEnabled"] }, { kind: "directive", type: i5.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i6.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i7.EuiFeedbackMessageComponent, selector: "eui-feedback-message", inputs: ["styleClass"] }, { kind: "component", type: i8.EuiSelectComponent, selector: "select[euiSelect]", inputs: ["placeholder", "readonly", "isInvalid"] }, { kind: "directive", type: i8.EuiNgSelectOptionDirective, selector: "option:not([eclSelectOption]):not([eclMultiselectOption]), option[euiOption]", inputs: ["selected", "label", "ngValue"] }, { kind: "directive", type: i8.EuiSelectControlValueAccessor, selector: "select:not([multiple])[formControlName][euiSelect],select:not([multiple])[formControl][euiSelect],select:not([multiple])[ngModel][euiSelect]", inputs: ["placeholder"] }, { kind: "directive", type: i8.EuiSelectMultipleOption, selector: "option, option[euiOption]", inputs: ["ngValue", "value"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
|
186
186
|
}
|
187
187
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EuiTableSortableColComponent, decorators: [{
|
188
188
|
type: Component,
|
@@ -145,7 +145,7 @@ export class EuiTabsComponent {
|
|
145
145
|
ngOnDestroy() {
|
146
146
|
this.destroy$.next(true);
|
147
147
|
this.destroy$.unsubscribe();
|
148
|
-
this.observer
|
148
|
+
this.observer?.unobserve(this.host.nativeElement);
|
149
149
|
}
|
150
150
|
onResize() {
|
151
151
|
this.getScrollingStatus();
|
@@ -384,4 +384,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
384
384
|
type: HostBinding,
|
385
385
|
args: ['class']
|
386
386
|
}] } });
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLXRhYnMvZXVpLXRhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRhYnMvZXVpLXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsVUFBVSxFQUdWLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsU0FBUyxFQUlULFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUF1RCxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7OztBQVE5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBcUJ6QixJQUNJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFtQjtRQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQ0ksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLGlC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QkFBaUI7c0JBRHBCLEtBQUs7Z0JBU0YsU0FBUztzQkFEWixLQUFLO2dCQVNGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBcUlOLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBK003QyxvQkFBb0I7QUFFcEIsTUFBTSxPQUFPLCtCQUErQjtJQUQ1QztRQUUwQixpQkFBWSxHQUFHLGlDQUFpQyxDQUFDO0tBQzFFO2lJQUZZLCtCQUErQjtxSEFBL0IsK0JBQStCOzsyRkFBL0IsK0JBQStCO2tCQUQzQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFOzhCQUVwQixZQUFZO3NCQUFqQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgZm9yd2FyZFJlZixcbiAgICBPbkNoYW5nZXMsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIEhvc3RCaW5kaW5nLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFuaW1hdGUsIEFuaW1hdGlvbkJ1aWxkZXIsIEFuaW1hdGlvbkZhY3RvcnksIEFuaW1hdGlvblBsYXllciwgc3R5bGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEV1aVRhYkNvbXBvbmVudCB9IGZyb20gJy4vZXVpLXRhYi9ldWktdGFiLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLXRhYnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktdGFicy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpVGFic0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdGFiczogRXVpVGFiQ29tcG9uZW50W10gPSBbXTtcbiAgICBASW5wdXQoKSBhY3RpdmVUYWJJbmRleCA9IG51bGw7XG4gICAgQElucHV0KCkgZTJlQXR0ciA9ICdldWktdGFicyc7XG4gICAgQElucHV0KCkgcGF0aE1hdGNoOiAncHJlZml4JyB8ICdmdWxsJyA9ICdwcmVmaXgnO1xuXG4gICAgQE91dHB1dCgpIHRhYkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRhYjogRXVpVGFiQ29tcG9uZW50OyBpbmRleDogbnVtYmVyIH0+KCk7XG4gICAgQE91dHB1dCgpIHRhYlNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0YWI6IEV1aVRhYkNvbXBvbmVudDsgaW5kZXg6IG51bWJlciB9PigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEV1aVRhYkNvbXBvbmVudCksIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIF90YWJzOiBRdWVyeUxpc3Q8RXVpVGFiQ29tcG9uZW50PjtcbiAgICBAVmlld0NoaWxkcmVuKCdldWlUYWJMYWJlbEl0ZW0nLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgZXVpVGFiTGFiZWxJdGVtczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+O1xuICAgIEBWaWV3Q2hpbGQoJ2V1aVRhYnNJdGVtcycpIGV1aVRhYnNJdGVtczogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdldWlUYWJzSXRlbXNXcmFwcGVyJykgZXVpVGFic0l0ZW1zV3JhcHBlcjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdob3N0JykgaG9zdDogRWxlbWVudFJlZjtcblxuICAgIHB1YmxpYyBzY3JvbGxpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgbmF2aWdhdGlvbkxlZnRCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgcHVibGljIG5hdmlnYXRpb25SaWdodEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgcHVibGljIGN1cnJlbnRPZmZzZXQgPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNNYWluTmF2aWdhdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTWFpbk5hdmlnYXRpb247XG4gICAgfVxuICAgIHNldCBpc01haW5OYXZpZ2F0aW9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNNYWluTmF2aWdhdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzTWFpbk5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0hhbmRsZUNoYW5nZVRhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSGFuZGxlQ2hhbmdlVGFiO1xuICAgIH1cbiAgICBzZXQgaXNIYW5kbGVDaGFuZ2VUYWIodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0hhbmRsZUNoYW5nZVRhYiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzSGFuZGxlQ2hhbmdlVGFiID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTdWJUYWJzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTdWJUYWJzO1xuICAgIH1cbiAgICBzZXQgaXNTdWJUYWJzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTdWJUYWJzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNTdWJUYWJzID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNWZXJ0aWNhbFRhYnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZlcnRpY2FsVGFicztcbiAgICB9XG4gICAgc2V0IGlzVmVydGljYWxUYWJzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNWZXJ0aWNhbFRhYnMgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1ZlcnRpY2FsVGFicyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSByb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIHBsYXllcjogQW5pbWF0aW9uUGxheWVyO1xuICAgIHByaXZhdGUgb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICAgIHByaXZhdGUgc3RlcE1vdmUgPSA0MDA7XG4gICAgLyoqXG4gICAgICogRm9yIHJhY2UgY29uZGl0aW9uIHJlYXNvbiwgdGhlIHdyYXBwZXIgd2lkdGggaXMgbm90IGNvcnJlY3RseSBjYWxjdWxhdGVkIHdoZW4gdGhlIGNvbXBvbmVudCBwYXNzZXMgZnJvbSBuby1zY3JvbGwgc3RhdGUgdG8gc2Nyb2xsXG4gICAgICogc3RhdGUuIFRvIGZpeCB0aGlzIGlzc3VlLCB3ZSBjb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBnZXRTY3JvbGxpbmdTdGF0dXMgbWV0aG9kIGlzIGNhbGxlZC5cbiAgICAgKlxuICAgICAqIFNjZW5hcmlvIDE6IFRoZSBudW1iZXIgb2YgdGFicyBkb2VzIG5vdCByZXF1aXJlIGFueSBzY3JvbGw6XG4gICAgICogLSBXaXRob3V0IGFueSBmaXggdGhlIHNjcm9sbCB3aWxsIGhhdmUgYSBkZWx0YSBvZiA2NCBhdCB0aGUgZmlyc3QgYWN0aXZhdGlvbiwgdGhlbiBvbiB0aGUgZmlyc3Qgbm8tc2Nyb2xsIHRvIHNjcm9sbCBzdGF0ZSxcbiAgICAgKiAtIHdlIGhhZCA2NCB0byB0aGUgbW92ZVxuICAgICAqXG4gICAgICogU2NlbmFyaW8gMjogVGhlIG51bWJlciBvZiB0YWJzIHJlcXVpcmVzIGEgc2Nyb2xsOlxuICAgICAqIC0gSW4gdGhpcyBjYXNlIHRoZSB3cmFwcGVyIHdpZHRoIGlzIGNvcnJlY3RseSBjYWxjdWxhdGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGFkZCB0aGUgZGVsdGFcbiAgICAgKi9cbiAgICBwcml2YXRlIHNjcm9sbGluZ0NvdW50ID0gMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBidWlsZGVyOiBBbmltYXRpb25CdWlsZGVyLFxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGMuYWN0aXZlVGFiSW5kZXgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5pdGVtKGMuYWN0aXZlVGFiSW5kZXguY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVGFiICYmICF0aGlzLmlzQWN0aXZlVGFiRnVsbHlWaXNpYmxlKGFjdGl2ZVRhYikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxUbyA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2V0V2lkdGggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gYy5hY3RpdmVUYWJJbmRleC5jdXJyZW50VmFsdWU7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNldFdpZHRoICs9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLml0ZW0oaSkuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvID0gY29udGFpbmVyV2lkdGggLyAyIC0gc3Vic2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzY3JvbGxUbykgPiB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCArIDMyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG8gPSAtKHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoICsgMzIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsVG8gPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG8gPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy5hY3RpdmVUYWJJbmRleC5pc0ZpcnN0Q2hhbmdlKCkgJiYgYy5hY3RpdmVUYWJJbmRleC5jdXJyZW50VmFsdWUgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGxUbyhzY3JvbGxUbywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYy5hY3RpdmVUYWJJbmRleC5pc0ZpcnN0Q2hhbmdlKCkgJiYgYy5hY3RpdmVUYWJJbmRleC5jdXJyZW50VmFsdWUgPiAwID8gNTAwIDogMCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyAod2luZG93IGFzIGFueSkuUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRTY3JvbGxpbmdTdGF0dXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuX3RhYnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YWJzID0gdGhpcy5fdGFicy50b0FycmF5KCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlclN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh7IHVybDogdGhpcy5yb3V0ZXIudXJsIH0pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChlOiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYnNXaXRoVXJsID0gdGhpcy50YWJzLmZpbHRlcigodCkgPT4gdC51cmwgIT09IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFic1dpdGhVcmwubGVuZ3RoID09PSB0aGlzLnRhYnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGFiSW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhdGhNYXRjaCA9PT0gJ2Z1bGwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXggPSB0YWJzV2l0aFVybC5maW5kSW5kZXgoKHQpID0+IGUudXJsID09PSB0LnVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4ID0gdGFic1dpdGhVcmwuZmluZEluZGV4KCh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCh0LnVybCArICcoLz8pJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KGUudXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLm1hcCgodCwgaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleCA9PT0gaSA/IE9iamVjdC5hc3NpZ24odCwgeyBpc0FjdGl2ZTogdHJ1ZSB9KSA6IE9iamVjdC5hc3NpZ24odCwgeyBpc0FjdGl2ZTogZmFsc2UgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50YWJzLmZpbmRJbmRleCgodCkgPT4gdC5pc0FjdGl2ZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IHRoaXMudGFicy5maW5kSW5kZXgoKHQpID0+IHQuaXNBY3RpdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuYWN0aXZlVGFiSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gdGhpcy50YWJzLmZpbmRJbmRleCgodCkgPT4gdC5pc0FjdGl2ZSkgIT09IC0xID8gdGhpcy50YWJzLmZpbmRJbmRleCgodCkgPT4gdC5pc0FjdGl2ZSkgOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm9ic2VydmVyLnVub2JzZXJ2ZSh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gICAgb25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0U2Nyb2xsaW5nU3RhdHVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29udGVudENoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0U2Nyb2xsaW5nU3RhdHVzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdvVG9MZWZ0KCk6IHZvaWQge1xuICAgICAgICBsZXQgc2Nyb2xsVG8gPSB0aGlzLmN1cnJlbnRPZmZzZXQgKyB0aGlzLnN0ZXBNb3ZlO1xuICAgICAgICBpZiAoc2Nyb2xsVG8gPiAwKSB7XG4gICAgICAgICAgICBzY3JvbGxUbyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ29Ub1JpZ2h0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHdyYXBwZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICAgIGxldCBzY3JvbGxUbyA9IHRoaXMuY3VycmVudE9mZnNldCAtIHRoaXMuc3RlcE1vdmU7XG5cbiAgICAgICAgaWYgKE1hdGguYWJzKHNjcm9sbFRvKSA+IHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoKSB7XG4gICAgICAgICAgICBzY3JvbGxUbyA9IC0od3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGgpIC0gMzI7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hhbmdlVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNIYW5kbGVDaGFuZ2VUYWIpIHtcbiAgICAgICAgICAgIHRoaXMudGFiU2VsZWN0LmVtaXQoeyB0YWI6IHRoaXMudGFic1tpbmRleF0sIGluZGV4IH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMudGFic1tpbmRleF0gJiYgIXRoaXMudGFic1tpbmRleF0uaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhYnNbdGhpcy5hY3RpdmVUYWJJbmRleF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzW3RoaXMuYWN0aXZlVGFiSW5kZXhdLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMudGFic1tpbmRleF0uaXNBY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlVGFiID0gdGhpcy5ldWlUYWJzSXRlbXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4uaXRlbShpbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZVRhYiAmJiAhdGhpcy5pc0FjdGl2ZVRhYkZ1bGx5VmlzaWJsZShhY3RpdmVUYWIpICYmICF0aGlzLmlzVmVydGljYWxUYWJzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxUbyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdWJzZXRXaWR0aCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGluZGV4OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNldFdpZHRoICs9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLml0ZW0oaSkuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbyA9IGNvbnRhaW5lcldpZHRoIC8gMiAtIHN1YnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzY3JvbGxUbykgPiB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCArIDMyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbyA9IC0od3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGggKyAzMik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsVG8gPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUbyA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGFic1tpbmRleF0udXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJTZWxlY3QuZW1pdCh7IHRhYjogdGhpcy50YWJzW2luZGV4XSwgaW5kZXggfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMudGFic1tpbmRleF0udXJsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25LZXlVcChlOiBLZXlib2FyZEV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChlLmNvZGUgPT09ICdFbnRlcicgfHwgZS5jb2RlID09PSAnU3BhY2UnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50YWJzW2luZGV4XSAmJiAhdGhpcy50YWJzW2luZGV4XS5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJzLm1hcCgodCwgaSkgPT4gKGkgPT09IGluZGV4ID8gT2JqZWN0LmFzc2lnbih0LCB7IGlzQWN0aXZlOiB0cnVlIH0pIDogT2JqZWN0LmFzc2lnbih0LCB7IGlzQWN0aXZlOiBmYWxzZSB9KSkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRhYnNbaW5kZXhdLnVybCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFiU2VsZWN0LmVtaXQoeyB0YWI6IHRoaXMudGFic1tpbmRleF0sIGluZGV4IH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnRhYnNbaW5kZXhdLnVybCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGNsb3NlVGFiKGluZGV4OiBudW1iZXIsIGU6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnNbaW5kZXhdO1xuICAgICAgICBpZiAoIXRoaXMudGFic1tpbmRleF0uaXNIYW5kbGVDbG9zZU9uQ2xvc2UpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoZS5pbmRleCk7XG4gICAgICAgICAgICB0aGlzLnRhYnMgPSB0aGlzLnRhYnMuZmlsdGVyKCh0LCBpKSA9PiBpICE9PSBpbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRhYkNsb3NlLmVtaXQoeyB0YWIsIGluZGV4IH0pO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGEgdGFiIHBhc3MgaW4gcGFyYW1ldGVyLlxuICAgICAqXG4gICAgICogQHVzYWdlTm90ZXNcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGV1aS10YWJzICN0YWJzPlxuICAgICAqICAgICA8ZXVpLXRhYiBpc0Nsb3NhYmxlIGlzSGFuZGxlQ2xvc2VPbkNsb3NlPlxuICAgICAqICAgICAgICAgPGV1aS10YWItbGFiZWw+VGFiIGxhYmVsPC9ldWktdGFiLWxhYmVsPlxuICAgICAqICAgICAgICAgPGV1aS10YWItY29udGVudD5UYWIgY29udGVudDwvZXVpLXRhYi1jb250ZW50PlxuICAgICAqICAgICA8L2V1aS10YWI+XG4gICAgICogPC9ldWktdGFicz5cbiAgICAgKiBgYGBcbiAgICAgKiAuLi5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy50YWJzLmNsb3NlKDEpO1xuICAgICAqIGBgYFxuICAgICAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiB0aGUgdGFiIHRvIGNsb3NlXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLmFjdGl2ZVRhYkluZGV4KSB7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c1Zpc2libGVJbmRleCA9IHRoaXMudGFicy5pbmRleE9mKHRoaXMudGFic1tpbmRleCAtIDFdKTtcblxuICAgICAgICAgICAgaWYgKHByZXZpb3VzVmlzaWJsZUluZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlVGFiKDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVRhYihwcmV2aW91c1Zpc2libGVJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaW5kZXggPCB0aGlzLmFjdGl2ZVRhYkluZGV4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IHRoaXMuYWN0aXZlVGFiSW5kZXggLSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLmZpbHRlcigodCwgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBY3RpdmVUYWJGdWxseVZpc2libGUoYWN0aXZlVGFiOiBIVE1MRGl2RWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIHJldHVybiBhY3RpdmVUYWIub2Zmc2V0TGVmdCAtIDQ4ID4gMCAmJiBhY3RpdmVUYWIub2Zmc2V0TGVmdCArIGFjdGl2ZVRhYi5jbGllbnRXaWR0aCA8IGNvbnRhaW5lcldpZHRoIC0gNDg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTY3JvbGxUbyhzY3JvbGxUbzogbnVtYmVyLCBpc0FuaW1hdGVkID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHdyYXBwZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICAgIGNvbnN0IHRpbWluZ3MgPSBpc0FuaW1hdGVkID8gJzUwMG1zIGN1YmljLWJlemllcigwLjM1LCAwLCAwLjI1LCAxKScgOiAwO1xuICAgICAgICBjb25zdCBhbmltYXRpb246IEFuaW1hdGlvbkZhY3RvcnkgPSB0aGlzLmJ1aWxkZXIuYnVpbGQoW2FuaW1hdGUodGltaW5ncywgc3R5bGUoeyAnbWFyZ2luLWxlZnQnOiArc2Nyb2xsVG8gKyAncHgnIH0pKV0pO1xuXG4gICAgICAgIHRoaXMucGxheWVyID0gYW5pbWF0aW9uLmNyZWF0ZSh0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMucGxheWVyLnBsYXkoKTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRPZmZzZXQgPSBzY3JvbGxUbztcblxuICAgICAgICBpZiAoc2Nyb2xsVG8gPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkxlZnRCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuY3VycmVudE9mZnNldCkgPCB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCArIDMyKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25SaWdodEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE9mZnNldCA8IDApIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkxlZnRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChNYXRoLmFicyhzY3JvbGxUbykgPT09IHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoICsgMzIpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvblJpZ2h0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTY3JvbGxpbmdTdGF0dXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5ldWlUYWJzSXRlbXMubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgY29uc3Qgd3JhcHBlcldpZHRoID0gdGhpcy5ldWlUYWJzSXRlbXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG5cbiAgICAgICAgdGhpcy5zY3JvbGxpbmcgPSBjb250YWluZXJXaWR0aCA8IHdyYXBwZXJXaWR0aDtcblxuICAgICAgICBpZiAoIXRoaXMuc2Nyb2xsaW5nKSB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbGluZ0NvdW50ID0gMDtcbiAgICAgICAgICAgIHRoaXMuc2V0U2Nyb2xsVG8oMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAod3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGggPD0gTWF0aC5hYnModGhpcy5jdXJyZW50T2Zmc2V0KSArIDMyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVsdGFGaXggPSB0aGlzLnNjcm9sbGluZ0NvdW50ID09PSAwID8gNjQgOiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbFRvID0gLSh3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCkgLSAzMiAtIGRlbHRhRml4O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGxUbyhzY3JvbGxUbyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRPZmZzZXQgPSBzY3JvbGxUbztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuY3VycmVudE9mZnNldCkgPCB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCArIDMyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvblJpZ2h0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudE9mZnNldCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uTGVmdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNjcm9sbGluZ0NvdW50Kys7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdldWlUYWJzUmlnaHRDb250ZW50JyB9KVxuZXhwb3J0IGNsYXNzIEV1aVRhYnNSaWdodENvbnRlbnRUYWdEaXJlY3RpdmUge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBlbGVtZW50Q2xhc3MgPSAnZXVpLXRhYnNfX3JpZ2h0LWNvbnRlbnQtd3JhcHBlcic7XG59XG4vKiBlc2xpbnQtZW5hYmxlICovXG4iLCI8ZGl2XG4gICAgI2hvc3RcbiAgICBjbGFzcz1cImV1aS10YWJzIHt7IHN0eWxlQ2xhc3MgfX1cIlxuICAgIFtjbGFzcy5ldWktdGFicy0tbWFpbi1uYXZpZ2F0aW9uXT1cImlzTWFpbk5hdmlnYXRpb25cIlxuICAgIFtjbGFzcy5ldWktdGFicy0tdmVydGljYWxdPVwiaXNWZXJ0aWNhbFRhYnNcIlxuICAgIGF0dHIuZGF0YS1lMmU9XCJ7eyBlMmVBdHRyIH19XCI+XG4gICAgPGRpdiBjbGFzcz1cImV1aS11LWZsZXhcIiBbY2xhc3MuZXVpLXRhYnNfX3dyYXBwZXItLWhvcml6b250YWxdPVwiIWlzVmVydGljYWxUYWJzXCIgW2NsYXNzLmV1aS10YWJzX193cmFwcGVyLS12ZXJ0aWNhbF09XCJpc1ZlcnRpY2FsVGFic1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjZXVpVGFic0l0ZW1zXG4gICAgICAgICAgICBjbGFzcz1cImV1aS10YWJzX19pdGVtc1wiXG4gICAgICAgICAgICBbY2xhc3MuZXVpLXRhYnNfX2l0ZW1zLS1ob3Jpem9udGFsXT1cIiFpc1ZlcnRpY2FsVGFic1wiXG4gICAgICAgICAgICBbY2xhc3MuZXVpLXRhYnNfX2l0ZW1zLS1zY3JvbGxpbmddPVwic2Nyb2xsaW5nXCJcbiAgICAgICAgICAgIChjZGtPYnNlcnZlQ29udGVudCk9XCJvbkNvbnRlbnRDaGFuZ2VzKClcIj5cbiAgICAgICAgICAgIDxkaXYgI2V1aVRhYnNJdGVtc1dyYXBwZXIgY2xhc3M9XCJldWktdGFic19faXRlbXMtd3JhcHBlclwiIFthdHRyLmRhdGEtb2Zmc2V0XT1cImN1cnJlbnRPZmZzZXRcIiByb2xlPVwidGFibGlzdFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWIuaXNWaXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS10YWItaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV1aS10YWItaXRlbS0tY2xvc2FibGVdPVwidGFiLmlzQ2xvc2FibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktdGFiLWl0ZW0tLWFjdGl2ZV09XCJhY3RpdmVUYWJJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV1aS10YWItaXRlbS0tZGlzYWJsZWRdPVwidGFiLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktdGFiLWl0ZW0tLXNlY29uZGFyeV09XCJ0YWIuZXVpU2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLXRhYi1pdGVtLS1wcmltYXJ5XT1cInRhYi5ldWlQcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLXRhYi1pdGVtLS1pbmZvXT1cInRhYi5ldWlJbmZvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLXRhYi1pdGVtLS1zdWNjZXNzXT1cInRhYi5ldWlTdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLXRhYi1pdGVtLS13YXJuaW5nXT1cInRhYi5ldWlXYXJuaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLXRhYi1pdGVtLS1kYW5nZXJdPVwidGFiLmV1aURhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV1aS10YWItaXRlbS0tYWNjZW50XT1cInRhYi5ldWlBY2NlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktdGFiLWl0ZW0tLWJhY2tncm91bmQtZmlsbGVkXT1cInRhYi5oYXNCYWNrZ3JvdW5kRmlsbGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRhYi5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlVGFiKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXVpVG9vbHRpcF09XCJ0YWIudG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uS2V5VXAoJGV2ZW50LCBpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldWktdGFiLWl0ZW1fX2xhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInRhYi50ZW1wbGF0ZUxhYmVsLnRlbXBsYXRlUG9ydGFsXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFiLmlzQ2xvc2FibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VUYWIoaSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV1aVJvdW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXVpU2l6ZVhTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXVpRGlzYWJsZWRdPVwibmF2aWdhdGlvblJpZ2h0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgdGFiIGJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLXUtbWwtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZXVpLWVjbC1jbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsQ29sb3I9XCJncmV5LTc1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpLXRhYl9fY2xvc2UtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2UgaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRhYnNfX25hdmlnYXRpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRhYnNfX25hdmlnYXRpb25fX2xlZnQtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub0xlZnQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJuYXZpZ2F0aW9uTGVmdEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTY3JvbGwgbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwiZXVpLWNoZXZyb24tYmFja1wiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRhYnNfX25hdmlnYXRpb25fX3JpZ2h0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9SaWdodCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV1aUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZXVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZXVpQmFzaWNCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aURpc2FibGVkXT1cIm5hdmlnYXRpb25SaWdodEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTY3JvbGwgcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jaGV2cm9uLWZvcndhcmRcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10YWJzX19yaWdodC1jb250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldWlUYWJzUmlnaHRDb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWktdGFiLWNvbnRlbnQtd3JhcHBlclwiIHRhYmluZGV4PVwiMFwiICpuZ0lmPVwiaSA9PT0gYWN0aXZlVGFiSW5kZXggJiYgdGFiLnRlbXBsYXRlQ29udGVudFwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtjZGtQb3J0YWxPdXRsZXRdPVwidGFiLnRlbXBsYXRlQ29udGVudC50ZW1wbGF0ZVBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|
387
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLXRhYnMvZXVpLXRhYnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRhYnMvZXVpLXRhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsVUFBVSxFQUdWLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsU0FBUyxFQUlULFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUF1RCxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7OztBQVE5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBcUJ6QixJQUNJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFtQjtRQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQ0ksaUJBQWlCO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLGlC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QkFBaUI7c0JBRHBCLEtBQUs7Z0JBU0YsU0FBUztzQkFEWixLQUFLO2dCQVNGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBcUlOLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBK003QyxvQkFBb0I7QUFFcEIsTUFBTSxPQUFPLCtCQUErQjtJQUQ1QztRQUUwQixpQkFBWSxHQUFHLGlDQUFpQyxDQUFDO0tBQzFFO2lJQUZZLCtCQUErQjtxSEFBL0IsK0JBQStCOzsyRkFBL0IsK0JBQStCO2tCQUQzQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFOzhCQUVwQixZQUFZO3NCQUFqQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgZm9yd2FyZFJlZixcbiAgICBPbkNoYW5nZXMsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIEhvc3RCaW5kaW5nLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFuaW1hdGUsIEFuaW1hdGlvbkJ1aWxkZXIsIEFuaW1hdGlvbkZhY3RvcnksIEFuaW1hdGlvblBsYXllciwgc3R5bGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEV1aVRhYkNvbXBvbmVudCB9IGZyb20gJy4vZXVpLXRhYi9ldWktdGFiLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLXRhYnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktdGFicy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpVGFic0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdGFiczogRXVpVGFiQ29tcG9uZW50W10gPSBbXTtcbiAgICBASW5wdXQoKSBhY3RpdmVUYWJJbmRleCA9IG51bGw7XG4gICAgQElucHV0KCkgZTJlQXR0ciA9ICdldWktdGFicyc7XG4gICAgQElucHV0KCkgcGF0aE1hdGNoOiAncHJlZml4JyB8ICdmdWxsJyA9ICdwcmVmaXgnO1xuXG4gICAgQE91dHB1dCgpIHRhYkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRhYjogRXVpVGFiQ29tcG9uZW50OyBpbmRleDogbnVtYmVyIH0+KCk7XG4gICAgQE91dHB1dCgpIHRhYlNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8eyB0YWI6IEV1aVRhYkNvbXBvbmVudDsgaW5kZXg6IG51bWJlciB9PigpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IEV1aVRhYkNvbXBvbmVudCksIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIF90YWJzOiBRdWVyeUxpc3Q8RXVpVGFiQ29tcG9uZW50PjtcbiAgICBAVmlld0NoaWxkcmVuKCdldWlUYWJMYWJlbEl0ZW0nLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgZXVpVGFiTGFiZWxJdGVtczogUXVlcnlMaXN0PFZpZXdDb250YWluZXJSZWY+O1xuICAgIEBWaWV3Q2hpbGQoJ2V1aVRhYnNJdGVtcycpIGV1aVRhYnNJdGVtczogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdldWlUYWJzSXRlbXNXcmFwcGVyJykgZXVpVGFic0l0ZW1zV3JhcHBlcjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdob3N0JykgaG9zdDogRWxlbWVudFJlZjtcblxuICAgIHB1YmxpYyBzY3JvbGxpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgbmF2aWdhdGlvbkxlZnRCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gICAgcHVibGljIG5hdmlnYXRpb25SaWdodEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgcHVibGljIGN1cnJlbnRPZmZzZXQgPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNNYWluTmF2aWdhdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTWFpbk5hdmlnYXRpb247XG4gICAgfVxuICAgIHNldCBpc01haW5OYXZpZ2F0aW9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNNYWluTmF2aWdhdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzTWFpbk5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0hhbmRsZUNoYW5nZVRhYigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSGFuZGxlQ2hhbmdlVGFiO1xuICAgIH1cbiAgICBzZXQgaXNIYW5kbGVDaGFuZ2VUYWIodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0hhbmRsZUNoYW5nZVRhYiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzSGFuZGxlQ2hhbmdlVGFiID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTdWJUYWJzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTdWJUYWJzO1xuICAgIH1cbiAgICBzZXQgaXNTdWJUYWJzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTdWJUYWJzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNTdWJUYWJzID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNWZXJ0aWNhbFRhYnMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZlcnRpY2FsVGFicztcbiAgICB9XG4gICAgc2V0IGlzVmVydGljYWxUYWJzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNWZXJ0aWNhbFRhYnMgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1ZlcnRpY2FsVGFicyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSByb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIHBsYXllcjogQW5pbWF0aW9uUGxheWVyO1xuICAgIHByaXZhdGUgb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuICAgIHByaXZhdGUgc3RlcE1vdmUgPSA0MDA7XG4gICAgLyoqXG4gICAgICogRm9yIHJhY2UgY29uZGl0aW9uIHJlYXNvbiwgdGhlIHdyYXBwZXIgd2lkdGggaXMgbm90IGNvcnJlY3RseSBjYWxjdWxhdGVkIHdoZW4gdGhlIGNvbXBvbmVudCBwYXNzZXMgZnJvbSBuby1zY3JvbGwgc3RhdGUgdG8gc2Nyb2xsXG4gICAgICogc3RhdGUuIFRvIGZpeCB0aGlzIGlzc3VlLCB3ZSBjb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBnZXRTY3JvbGxpbmdTdGF0dXMgbWV0aG9kIGlzIGNhbGxlZC5cbiAgICAgKlxuICAgICAqIFNjZW5hcmlvIDE6IFRoZSBudW1iZXIgb2YgdGFicyBkb2VzIG5vdCByZXF1aXJlIGFueSBzY3JvbGw6XG4gICAgICogLSBXaXRob3V0IGFueSBmaXggdGhlIHNjcm9sbCB3aWxsIGhhdmUgYSBkZWx0YSBvZiA2NCBhdCB0aGUgZmlyc3QgYWN0aXZhdGlvbiwgdGhlbiBvbiB0aGUgZmlyc3Qgbm8tc2Nyb2xsIHRvIHNjcm9sbCBzdGF0ZSxcbiAgICAgKiAtIHdlIGhhZCA2NCB0byB0aGUgbW92ZVxuICAgICAqXG4gICAgICogU2NlbmFyaW8gMjogVGhlIG51bWJlciBvZiB0YWJzIHJlcXVpcmVzIGEgc2Nyb2xsOlxuICAgICAqIC0gSW4gdGhpcyBjYXNlIHRoZSB3cmFwcGVyIHdpZHRoIGlzIGNvcnJlY3RseSBjYWxjdWxhdGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGFkZCB0aGUgZGVsdGFcbiAgICAgKi9cbiAgICBwcml2YXRlIHNjcm9sbGluZ0NvdW50ID0gMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBidWlsZGVyOiBBbmltYXRpb25CdWlsZGVyLFxuICAgICkge31cblxuICAgIG5nT25DaGFuZ2VzKGM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGMuYWN0aXZlVGFiSW5kZXgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVUYWIgPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5pdGVtKGMuYWN0aXZlVGFiSW5kZXguY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVGFiICYmICF0aGlzLmlzQWN0aXZlVGFiRnVsbHlWaXNpYmxlKGFjdGl2ZVRhYikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzY3JvbGxUbyA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2V0V2lkdGggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gYy5hY3RpdmVUYWJJbmRleC5jdXJyZW50VmFsdWU7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNldFdpZHRoICs9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLml0ZW0oaSkuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvID0gY29udGFpbmVyV2lkdGggLyAyIC0gc3Vic2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhzY3JvbGxUbykgPiB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCArIDMyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG8gPSAtKHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoICsgMzIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsVG8gPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG8gPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYy5hY3RpdmVUYWJJbmRleC5pc0ZpcnN0Q2hhbmdlKCkgJiYgYy5hY3RpdmVUYWJJbmRleC5jdXJyZW50VmFsdWUgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGxUbyhzY3JvbGxUbywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvKHNjcm9sbFRvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYy5hY3RpdmVUYWJJbmRleC5pc0ZpcnN0Q2hhbmdlKCkgJiYgYy5hY3RpdmVUYWJJbmRleC5jdXJyZW50VmFsdWUgPiAwID8gNTAwIDogMCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyAod2luZG93IGFzIGFueSkuUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRTY3JvbGxpbmdTdGF0dXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuX3RhYnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YWJzID0gdGhpcy5fdGFicy50b0FycmF5KCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJvdXRlclN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigoZSkgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh7IHVybDogdGhpcy5yb3V0ZXIudXJsIH0pLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChlOiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYnNXaXRoVXJsID0gdGhpcy50YWJzLmZpbHRlcigodCkgPT4gdC51cmwgIT09IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFic1dpdGhVcmwubGVuZ3RoID09PSB0aGlzLnRhYnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGFiSW5kZXggPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhdGhNYXRjaCA9PT0gJ2Z1bGwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXggPSB0YWJzV2l0aFVybC5maW5kSW5kZXgoKHQpID0+IGUudXJsID09PSB0LnVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4ID0gdGFic1dpdGhVcmwuZmluZEluZGV4KCh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCh0LnVybCArICcoLz8pJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KGUudXJsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLm1hcCgodCwgaSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleCA9PT0gaSA/IE9iamVjdC5hc3NpZ24odCwgeyBpc0FjdGl2ZTogdHJ1ZSB9KSA6IE9iamVjdC5hc3NpZ24odCwgeyBpc0FjdGl2ZTogZmFsc2UgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50YWJzLmZpbmRJbmRleCgodCkgPT4gdC5pc0FjdGl2ZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IHRoaXMudGFicy5maW5kSW5kZXgoKHQpID0+IHQuaXNBY3RpdmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuYWN0aXZlVGFiSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gdGhpcy50YWJzLmZpbmRJbmRleCgodCkgPT4gdC5pc0FjdGl2ZSkgIT09IC0xID8gdGhpcy50YWJzLmZpbmRJbmRleCgodCkgPT4gdC5pc0FjdGl2ZSkgOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm9ic2VydmVyPy51bm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICAgIG9uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdldFNjcm9sbGluZ1N0YXR1cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbnRlbnRDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdldFNjcm9sbGluZ1N0YXR1cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnb1RvTGVmdCgpOiB2b2lkIHtcbiAgICAgICAgbGV0IHNjcm9sbFRvID0gdGhpcy5jdXJyZW50T2Zmc2V0ICsgdGhpcy5zdGVwTW92ZTtcbiAgICAgICAgaWYgKHNjcm9sbFRvID4gMCkge1xuICAgICAgICAgICAgc2Nyb2xsVG8gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTY3JvbGxUbyhzY3JvbGxUbyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdvVG9SaWdodCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICBjb25zdCB3cmFwcGVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcblxuICAgICAgICBsZXQgc2Nyb2xsVG8gPSB0aGlzLmN1cnJlbnRPZmZzZXQgLSB0aGlzLnN0ZXBNb3ZlO1xuXG4gICAgICAgIGlmIChNYXRoLmFicyhzY3JvbGxUbykgPiB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCkge1xuICAgICAgICAgICAgc2Nyb2xsVG8gPSAtKHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoKSAtIDMyO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTY3JvbGxUbyhzY3JvbGxUbyk7XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZVRhYihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzSGFuZGxlQ2hhbmdlVGFiKSB7XG4gICAgICAgICAgICB0aGlzLnRhYlNlbGVjdC5lbWl0KHsgdGFiOiB0aGlzLnRhYnNbaW5kZXhdLCBpbmRleCB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhYnNbaW5kZXhdICYmICF0aGlzLnRhYnNbaW5kZXhdLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50YWJzW3RoaXMuYWN0aXZlVGFiSW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFic1t0aGlzLmFjdGl2ZVRhYkluZGV4XS5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnRhYnNbaW5kZXhdLmlzQWN0aXZlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLml0ZW0oaW5kZXgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5ldWlUYWJzSXRlbXMubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgICAgICBjb25zdCB3cmFwcGVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcblxuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVUYWIgJiYgIXRoaXMuaXNBY3RpdmVUYWJGdWxseVZpc2libGUoYWN0aXZlVGFiKSAmJiAhdGhpcy5pc1ZlcnRpY2FsVGFicykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc2Nyb2xsVG8gPSAwO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc3Vic2V0V2lkdGggPSAwO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSBpbmRleDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJzZXRXaWR0aCArPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5pdGVtKGkpLmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG8gPSBjb250YWluZXJXaWR0aCAvIDIgLSBzdWJzZXRXaWR0aDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoc2Nyb2xsVG8pID4gd3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGggKyAzMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG8gPSAtKHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoICsgMzIpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbFRvID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG8gPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGxUbyhzY3JvbGxUbyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRhYnNbaW5kZXhdLnVybCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFiU2VsZWN0LmVtaXQoeyB0YWI6IHRoaXMudGFic1tpbmRleF0sIGluZGV4IH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnRhYnNbaW5kZXhdLnVybCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uS2V5VXAoZTogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoZS5jb2RlID09PSAnRW50ZXInIHx8IGUuY29kZSA9PT0gJ1NwYWNlJykge1xuICAgICAgICAgICAgaWYgKHRoaXMudGFic1tpbmRleF0gJiYgIXRoaXMudGFic1tpbmRleF0uaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMudGFicy5tYXAoKHQsIGkpID0+IChpID09PSBpbmRleCA/IE9iamVjdC5hc3NpZ24odCwgeyBpc0FjdGl2ZTogdHJ1ZSB9KSA6IE9iamVjdC5hc3NpZ24odCwgeyBpc0FjdGl2ZTogZmFsc2UgfSkpKTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy50YWJzW2luZGV4XS51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYlNlbGVjdC5lbWl0KHsgdGFiOiB0aGlzLnRhYnNbaW5kZXhdLCBpbmRleCB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy50YWJzW2luZGV4XS51cmwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBjbG9zZVRhYihpbmRleDogbnVtYmVyLCBlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFiID0gdGhpcy50YWJzW2luZGV4XTtcbiAgICAgICAgaWYgKCF0aGlzLnRhYnNbaW5kZXhdLmlzSGFuZGxlQ2xvc2VPbkNsb3NlKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKGUuaW5kZXgpO1xuICAgICAgICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLmZpbHRlcigodCwgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50YWJDbG9zZS5lbWl0KHsgdGFiLCBpbmRleCB9KTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSBhIHRhYiBwYXNzIGluIHBhcmFtZXRlci5cbiAgICAgKlxuICAgICAqIEB1c2FnZU5vdGVzXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxldWktdGFicyAjdGFicz5cbiAgICAgKiAgICAgPGV1aS10YWIgaXNDbG9zYWJsZSBpc0hhbmRsZUNsb3NlT25DbG9zZT5cbiAgICAgKiAgICAgICAgIDxldWktdGFiLWxhYmVsPlRhYiBsYWJlbDwvZXVpLXRhYi1sYWJlbD5cbiAgICAgKiAgICAgICAgIDxldWktdGFiLWNvbnRlbnQ+VGFiIGNvbnRlbnQ8L2V1aS10YWItY29udGVudD5cbiAgICAgKiAgICAgPC9ldWktdGFiPlxuICAgICAqIDwvZXVpLXRhYnM+XG4gICAgICogYGBgXG4gICAgICogLi4uXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMudGFicy5jbG9zZSgxKTtcbiAgICAgKiBgYGBcbiAgICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHRhYiB0byBjbG9zZVxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5hY3RpdmVUYWJJbmRleCkge1xuICAgICAgICAgICAgY29uc3QgcHJldmlvdXNWaXNpYmxlSW5kZXggPSB0aGlzLnRhYnMuaW5kZXhPZih0aGlzLnRhYnNbaW5kZXggLSAxXSk7XG5cbiAgICAgICAgICAgIGlmIChwcmV2aW91c1Zpc2libGVJbmRleCA8IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVRhYigwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VUYWIocHJldmlvdXNWaXNpYmxlSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5hY3RpdmVUYWJJbmRleCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSB0aGlzLmFjdGl2ZVRhYkluZGV4IC0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIoKHQsIGkpID0+IGkgIT09IGluZGV4KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWN0aXZlVGFiRnVsbHlWaXNpYmxlKGFjdGl2ZVRhYjogSFRNTERpdkVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICByZXR1cm4gYWN0aXZlVGFiLm9mZnNldExlZnQgLSA0OCA+IDAgJiYgYWN0aXZlVGFiLm9mZnNldExlZnQgKyBhY3RpdmVUYWIuY2xpZW50V2lkdGggPCBjb250YWluZXJXaWR0aCAtIDQ4O1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0U2Nyb2xsVG8oc2Nyb2xsVG86IG51bWJlciwgaXNBbmltYXRlZCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtcy5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgICBjb25zdCB3cmFwcGVyV2lkdGggPSB0aGlzLmV1aVRhYnNJdGVtc1dyYXBwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcblxuICAgICAgICBjb25zdCB0aW1pbmdzID0gaXNBbmltYXRlZCA/ICc1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSknIDogMDtcbiAgICAgICAgY29uc3QgYW5pbWF0aW9uOiBBbmltYXRpb25GYWN0b3J5ID0gdGhpcy5idWlsZGVyLmJ1aWxkKFthbmltYXRlKHRpbWluZ3MsIHN0eWxlKHsgJ21hcmdpbi1sZWZ0JzogK3Njcm9sbFRvICsgJ3B4JyB9KSldKTtcblxuICAgICAgICB0aGlzLnBsYXllciA9IGFuaW1hdGlvbi5jcmVhdGUodGhpcy5ldWlUYWJzSXRlbXNXcmFwcGVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnBsYXllci5wbGF5KCk7XG5cbiAgICAgICAgdGhpcy5jdXJyZW50T2Zmc2V0ID0gc2Nyb2xsVG87XG5cbiAgICAgICAgaWYgKHNjcm9sbFRvID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25MZWZ0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChNYXRoLmFicyh0aGlzLmN1cnJlbnRPZmZzZXQpIDwgd3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGggKyAzMikge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uUmlnaHRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRPZmZzZXQgPCAwKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25MZWZ0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTWF0aC5hYnMoc2Nyb2xsVG8pID09PSB3cmFwcGVyV2lkdGggLSBjb250YWluZXJXaWR0aCArIDMyKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25SaWdodEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2Nyb2xsaW5nU3RhdHVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHdyYXBwZXJXaWR0aCA9IHRoaXMuZXVpVGFic0l0ZW1zV3JhcHBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuXG4gICAgICAgIHRoaXMuc2Nyb2xsaW5nID0gY29udGFpbmVyV2lkdGggPCB3cmFwcGVyV2lkdGg7XG5cbiAgICAgICAgaWYgKCF0aGlzLnNjcm9sbGluZykge1xuICAgICAgICAgICAgdGhpcy5zY3JvbGxpbmdDb3VudCA9IDA7XG4gICAgICAgICAgICB0aGlzLnNldFNjcm9sbFRvKDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHdyYXBwZXJXaWR0aCAtIGNvbnRhaW5lcldpZHRoIDw9IE1hdGguYWJzKHRoaXMuY3VycmVudE9mZnNldCkgKyAzMikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbHRhRml4ID0gdGhpcy5zY3JvbGxpbmdDb3VudCA9PT0gMCA/IDY0IDogMDtcbiAgICAgICAgICAgICAgICBjb25zdCBzY3JvbGxUbyA9IC0od3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGgpIC0gMzIgLSBkZWx0YUZpeDtcblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2Nyb2xsVG8oc2Nyb2xsVG8pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50T2Zmc2V0ID0gc2Nyb2xsVG87XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyh0aGlzLmN1cnJlbnRPZmZzZXQpIDwgd3JhcHBlcldpZHRoIC0gY29udGFpbmVyV2lkdGggKyAzMikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25SaWdodEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRPZmZzZXQgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkxlZnRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zY3JvbGxpbmdDb3VudCsrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZXVpVGFic1JpZ2h0Q29udGVudCcgfSlcbmV4cG9ydCBjbGFzcyBFdWlUYWJzUmlnaHRDb250ZW50VGFnRGlyZWN0aXZlIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZWxlbWVudENsYXNzID0gJ2V1aS10YWJzX19yaWdodC1jb250ZW50LXdyYXBwZXInO1xufVxuLyogZXNsaW50LWVuYWJsZSAqL1xuIiwiPGRpdlxuICAgICNob3N0XG4gICAgY2xhc3M9XCJldWktdGFicyB7eyBzdHlsZUNsYXNzIH19XCJcbiAgICBbY2xhc3MuZXVpLXRhYnMtLW1haW4tbmF2aWdhdGlvbl09XCJpc01haW5OYXZpZ2F0aW9uXCJcbiAgICBbY2xhc3MuZXVpLXRhYnMtLXZlcnRpY2FsXT1cImlzVmVydGljYWxUYWJzXCJcbiAgICBhdHRyLmRhdGEtZTJlPVwie3sgZTJlQXR0ciB9fVwiPlxuICAgIDxkaXYgY2xhc3M9XCJldWktdS1mbGV4XCIgW2NsYXNzLmV1aS10YWJzX193cmFwcGVyLS1ob3Jpem9udGFsXT1cIiFpc1ZlcnRpY2FsVGFic1wiIFtjbGFzcy5ldWktdGFic19fd3JhcHBlci0tdmVydGljYWxdPVwiaXNWZXJ0aWNhbFRhYnNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgI2V1aVRhYnNJdGVtc1xuICAgICAgICAgICAgY2xhc3M9XCJldWktdGFic19faXRlbXNcIlxuICAgICAgICAgICAgW2NsYXNzLmV1aS10YWJzX19pdGVtcy0taG9yaXpvbnRhbF09XCIhaXNWZXJ0aWNhbFRhYnNcIlxuICAgICAgICAgICAgW2NsYXNzLmV1aS10YWJzX19pdGVtcy0tc2Nyb2xsaW5nXT1cInNjcm9sbGluZ1wiXG4gICAgICAgICAgICAoY2RrT2JzZXJ2ZUNvbnRlbnQpPVwib25Db250ZW50Q2hhbmdlcygpXCI+XG4gICAgICAgICAgICA8ZGl2ICNldWlUYWJzSXRlbXNXcmFwcGVyIGNsYXNzPVwiZXVpLXRhYnNfX2l0ZW1zLXdyYXBwZXJcIiBbYXR0ci5kYXRhLW9mZnNldF09XCJjdXJyZW50T2Zmc2V0XCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiLmlzVmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJldWktdGFiLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktdGFiLWl0ZW0tLWNsb3NhYmxlXT1cInRhYi5pc0Nsb3NhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLXRhYi1pdGVtLS1hY3RpdmVdPVwiYWN0aXZlVGFiSW5kZXggPT09IGlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktdGFiLWl0ZW0tLWRpc2FibGVkXT1cInRhYi5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLXRhYi1pdGVtLS1zZWNvbmRhcnldPVwidGFiLmV1aVNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV1aS10YWItaXRlbS0tcHJpbWFyeV09XCJ0YWIuZXVpUHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV1aS10YWItaXRlbS0taW5mb109XCJ0YWIuZXVpSW5mb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV1aS10YWItaXRlbS0tc3VjY2Vzc109XCJ0YWIuZXVpU3VjY2Vzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV1aS10YWItaXRlbS0td2FybmluZ109XCJ0YWIuZXVpV2FybmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV1aS10YWItaXRlbS0tZGFuZ2VyXT1cInRhYi5ldWlEYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktdGFiLWl0ZW0tLWFjY2VudF09XCJ0YWIuZXVpQWNjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLXRhYi1pdGVtLS1iYWNrZ3JvdW5kLWZpbGxlZF09XCJ0YWIuaGFzQmFja2dyb3VuZEZpbGxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJ0YWIuaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZVRhYihpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V1aVRvb2x0aXBdPVwidGFiLnRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJvbktleVVwKCRldmVudCwgaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRhYi1pdGVtX19sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJ0YWIudGVtcGxhdGVMYWJlbC50ZW1wbGF0ZVBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYi5pc0Nsb3NhYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlVGFiKGksICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldWlSb3VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV1aVNpemVYU1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2V1aURpc2FibGVkXT1cIm5hdmlnYXRpb25SaWdodEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIHRhYiBidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS11LW1sLXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGV1aS1pY29uLXN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImV1aS1lY2wtY2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbENvbG9yPVwiZ3JleS03NVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImV1aS10YWJfX2Nsb3NlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIGljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10YWJzX19uYXZpZ2F0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10YWJzX19uYXZpZ2F0aW9uX19sZWZ0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9MZWZ0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZXVpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBldWlJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBldWlCYXNpY0J1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpRGlzYWJsZWRdPVwibmF2aWdhdGlvbkxlZnRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2Nyb2xsIGxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWktaWNvbi1zdmcgaWNvbj1cImV1aS1jaGV2cm9uLWJhY2tcIj48L2V1aS1pY29uLXN2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS10YWJzX19uYXZpZ2F0aW9uX19yaWdodC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUmlnaHQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBldWlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGV1aUJhc2ljQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlEaXNhYmxlZF09XCJuYXZpZ2F0aW9uUmlnaHRCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2Nyb2xsIHJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpLWljb24tc3ZnIGljb249XCJldWktY2hldnJvbi1mb3J3YXJkXCI+PC9ldWktaWNvbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWktdGFic19fcmlnaHQtY29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpVGFic1JpZ2h0Q29udGVudFwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLXRhYi1jb250ZW50LXdyYXBwZXJcIiB0YWJpbmRleD1cIjBcIiAqbmdJZj1cImkgPT09IGFjdGl2ZVRhYkluZGV4ICYmIHRhYi50ZW1wbGF0ZUNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInRhYi50ZW1wbGF0ZUNvbnRlbnQudGVtcGxhdGVQb3J0YWxcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
|
@@ -131,9 +131,9 @@ export class EuiTextareaComponent extends BaseDirective {
|
|
131
131
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
132
132
|
writeValue(obj) {
|
133
133
|
if (this.valueContainerEl) {
|
134
|
-
this._renderer.setProperty(this.valueContainerEl, 'innerText', obj);
|
134
|
+
this._renderer.setProperty(this.valueContainerEl, 'innerText', obj || null);
|
135
135
|
}
|
136
|
-
this._renderer.setProperty(this._elementRef.nativeElement, 'value', obj);
|
136
|
+
this._renderer.setProperty(this._elementRef.nativeElement, 'value', obj || null);
|
137
137
|
}
|
138
138
|
// TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html
|
139
139
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
@@ -235,4 +235,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
235
235
|
type: HostListener,
|
236
236
|
args: ['blur', ['$event.target.value']]
|
237
237
|
}] } });
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRleHRhcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10ZXh0YXJlYS9ldWktdGV4dGFyZWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBS0wsaUJBQWlCLEVBSWpCLFVBQVUsRUFDVixXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGlCQUFpQixFQUVqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBVTNDLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxhQUFhO2FBQzVDLGNBQVMsR0FBRyxDQUFDLEFBQUosQ0FBSztJQUVyQixJQUVXLEtBQUssQ0FBQyxRQUFnQjtRQUM3QixLQUFLLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBVyxLQUFLO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqSCxDQUFDO0lBRUQsSUFFVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMs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Y2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIE9uRGVzdHJveSxcbiAgICBEb0NoZWNrLFxuICAgIEluamVjdG9yLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0RmxhZ3MsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBOZ0NvbnRyb2wsXG4gICAgRm9ybUNvbnRyb2wsXG4gICAgRm9ybUNvbnRyb2xEaXJlY3RpdmUsXG4gICAgRm9ybUdyb3VwRGlyZWN0aXZlLFxuICAgIEZvcm1Db250cm9sTmFtZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmFzZURpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9zaGFyZWQnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAndGV4dGFyZWFbZXVpVGV4dEFyZWFdJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRXVpVGV4dGFyZWFDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9XSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpVGV4dGFyZWFDb21wb25lbnQgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIERvQ2hlY2ssIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHN0YXRpYyBpZENvdW50ZXIgPSAwO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGNsYXNzKGNzc0NsYXNzOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIuc3R5bGVDbGFzcyA9IGNzc0NsYXNzO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGNsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbdGhpcy5pc0ludmFsaWQgPyAnZXVpLXRleHRhcmVhLS1pbnZhbGlkJyA6ICcnLCBzdXBlci5nZXRDc3NDbGFzc2VzKCdldWktdGV4dGFyZWEnKV0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCA/IHRydWUgOiBudWxsO1xuICAgIH1cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgc2V0IGRpc2FibGVkKHN0YXRlOiBhbnkpIHtcbiAgICAgICAgLy8gaW4gY2FzZSBpdCdzIGNvbnRyb2xsZWQgYnkgTmdDb250cm9sIG92ZXJyaWRlXG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHN0YXRlKTtcbiAgICAgICAgLy8gc2V0IEJhc2VEaXJlY3RpdmUgQXR0cmlidXRlXG4gICAgICAgIHN1cGVyLmV1aURpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5yZWFkb25seScpXG4gICAgQElucHV0KClcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgZ2V0IHJlYWRvbmx5KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkb25seSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIHNldCByZWFkb25seShzdGF0ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX3JlYWRvbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHN0YXRlKTtcbiAgICB9XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIGlkID0gYGV1aS10ZXh0YXJlYV8ke0V1aVRleHRhcmVhQ29tcG9uZW50LmlkQ291bnRlcisrfWA7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNJbnZhbGlkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgaXNJbnZhbGlkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNJbnZhbGlkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgc3VwZXIuZXVpRGFuZ2VyID0gdGhpcy5faXNJbnZhbGlkO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1lMmUnKSBASW5wdXQoKSBlMmVBdHRyID0gJ2V1aS10ZXh0YXJlYSc7XG4gICAgcHJvdGVjdGVkIF9yZWFkb25seTogYm9vbGVhbjtcblxuICAgIHByb3RlY3RlZCBob3N0RWw6IEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG5cbiAgICBwcm90ZWN0ZWQgaG9zdFBhcmVudEVsOiBIVE1MRWxlbWVudDtcbiAgICBwcm90ZWN0ZWQgaG9zdFdyYXBwZXJFbDogSFRNTERpdkVsZW1lbnQ7XG4gICAgcHJvdGVjdGVkIHZhbHVlQ29udGFpbmVyRWw6IEhUTUxEaXZFbGVtZW50O1xuICAgIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2lzSW52YWxpZD86IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBjb250cm9sOiBGb3JtQ29udHJvbCB8IE5nQ29udHJvbDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50LnRhcmdldC52YWx1ZSddKVxuICAgIHB1YmxpYyBvbklucHV0Q2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignYmx1cicsIFsnJGV2ZW50LnRhcmdldC52YWx1ZSddKVxuICAgIHB1YmxpYyBvbkJsdXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG9zdEVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLmhvc3RQYXJlbnRFbCA9IHRoaXMuaG9zdEVsLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuaG9zdFdyYXBwZXJFbCA9IHRoaXMuY3JlYXRlSG9zdFdyYXBwZXJDb250YWluZXIoKTtcbiAgICAgICAgdGhpcy52YWx1ZUNvbnRhaW5lckVsID0gdGhpcy5jcmVhdGVWYWx1ZUNvbnRhaW5lcigpO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlTWFya3VwKCk7XG4gICAgICAgIC8vIGV4dHJhY3QgdGhlIEZvcm1Db250cm9sIG9yIE5nQ29udHJvbFxuICAgICAgICB0aGlzLmNvbnRyb2wgPSAodGhpcy5pbmplY3RvciBhcyBJbmplY3RvcikuZ2V0KE5nQ29udHJvbCwgbnVsbCwgSW5qZWN0RmxhZ3MuT3B0aW9uYWwpO1xuICAgICAgICBpZiAodGhpcy5jb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2xOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wgPSAodGhpcy5pbmplY3RvciBhcyBJbmplY3RvcikuZ2V0KEZvcm1Hcm91cERpcmVjdGl2ZSkuZ2V0Q29udHJvbCh0aGlzLmNvbnRyb2wpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmNvbnRyb2wuZm9ybSBhcyBGb3JtQ29udHJvbDtcbiAgICAgICAgfVxuICAgICAgICAvLyBzZXRzIGludmFsaWQgc3RhdGUgaWYgY29udHJvbCBpcyBwcmVzZW50XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCB8fCB0aGlzLmNvbnRyb2wgaW5zdGFuY2VvZiBOZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0aGlzLmNvbnRyb2wuZGlzYWJsZWQ7XG4gICAgICAgICAgICB0aGlzLmlzSW52YWxpZCA9IHRoaXMuY29udHJvbC5kaXJ0eSAmJiB0aGlzLmNvbnRyb2wudG91Y2hlZCAmJiB0aGlzLmNvbnRyb2wuaW52YWxpZDtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHN0YXR1cykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSW52YWxpZCA9IHN0YXR1cyA9PT0gJ0lOVkFMSUQnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gc3RhdHVzID09PSAnRElTQUJMRUQnO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sIGluc3RhbmNlb2YgTmdDb250cm9sIHx8IHRoaXMuY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBEZWxldGUgd2hlbiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8zMDI3NSBpcyByZXNvbHZlZFxuICAgICAgICAgICAgdGhpcy5pc0ludmFsaWQgPSB0aGlzLmNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLmNvbnRyb2wudG91Y2hlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3JlYWRvbmx5J10pIHtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRvbmx5ID0gY2hhbmdlc1sncmVhZG9ubHknXS5jdXJyZW50VmFsdWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhvc3RXcmFwcGVyRWwgJiYgdGhpcy52YWx1ZUNvbnRhaW5lckVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ob3N0V3JhcHBlckVsLmNsYXNzTGlzdC50b2dnbGUoJ2V1aS10ZXh0YXJlYV9fd3JhcHBlci0tcmVhZG9ubHknLCAhIXJlYWRvbmx5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmhvc3RFbCAmJiB0aGlzLnZhbHVlQ29udGFpbmVyRWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3RFbC5jbGFzc0xpc3QudG9nZ2xlKCdldWktdGV4dGFyZWEtLXJlYWRvbmx5JywgISFyZWFkb25seSk7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZUNvbnRhaW5lckVsLmlubmVyVGV4dCA9IHRoaXMuaG9zdEVsLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzWydldWlEaXNhYmxlZCddKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VzWydldWlEaXNhYmxlZCddLmN1cnJlbnRWYWx1ZSA/IHRoaXMuY29udHJvbC5kaXNhYmxlKCkgOiB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZShjaGFuZ2VzWydldWlEaXNhYmxlZCddLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIC8vIGNsZWFudXAgRE9NIGxlZnRvdmVyc1xuICAgICAgICBpZiAodGhpcy52YWx1ZUNvbnRhaW5lckVsKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuaG9zdEVsLnBhcmVudEVsZW1lbnQsIHRoaXMudmFsdWVDb250YWluZXJFbCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5ob3N0V3JhcHBlckVsKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuaG9zdFBhcmVudEVsLCB0aGlzLmhvc3RXcmFwcGVyRWwpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlQ29udGFpbmVyRWwpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMudmFsdWVDb250YWluZXJFbCwgJ2lubmVyVGV4dCcsIG9iaik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCBvYmopO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ob3N0RWwpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuaG9zdEVsLCAnZGlzYWJsZWQnLCBpc0Rpc2FibGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNoYW5nZShfKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZShfKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIG9uVG91Y2hlZChfKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdGhpcy5jb250cm9sLmludmFsaWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUhvc3RXcmFwcGVyQ29udGFpbmVyKCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh3cmFwcGVyLCAnZXVpLXRleHRhcmVhX193cmFwcGVyJyk7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh3cmFwcGVyLCAnZXVpLXRleHRhcmVhX193cmFwcGVyLS1yZWFkb25seScpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ob3N0RWwsICdldWktdGV4dGFyZWEtLXJlYWRvbmx5Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh3cmFwcGVyLCAnZXVpLXRleHRhcmVhX193cmFwcGVyLS1yZWFkb25seScpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5ob3N0RWwsICdldWktdGV4dGFyZWEtLXJlYWRvbmx5Jyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBEaXYgZWxlbWVudCB3aGljaCB3aWxsIGhvbGQgdGhlIHZhbHVlIHRvIGRpc3BsYXkgd2hlbiByZWFkb25seVxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZVZhbHVlQ29udGFpbmVyKCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICAgICAgY29uc3QgdmFsdWVDb250YWluZXIgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModmFsdWVDb250YWluZXIsICdldWktdGV4dGFyZWFfX3ZhbHVlLWNvbnRhaW5lcicpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh2YWx1ZUNvbnRhaW5lciwgJ2lubmVyVGV4dCcsIHRoaXMuaG9zdEVsLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlQ29udGFpbmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIG1hcmt1cCBhcm91bmQgdGhlIHRleHRhcmVhLiBBcHBlbmQgdGV4dGFyZWEgb250byBhIGNvbnRhaW5lciB3aXRoIGRpdlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGhhbmRsZU1hcmt1cCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaG9zdFBhcmVudEVsICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaG9zdFBhcmVudEVsLnJlcGxhY2VDaGlsZCh0aGlzLmhvc3RXcmFwcGVyRWwsIHRoaXMuaG9zdEVsKTtcbiAgICAgICAgICAgIHRoaXMuaG9zdFdyYXBwZXJFbC5hcHBlbmRDaGlsZCh0aGlzLmhvc3RFbCk7XG4gICAgICAgICAgICB0aGlzLmhvc3RXcmFwcGVyRWwuYXBwZW5kQ2hpbGQodGhpcy52YWx1ZUNvbnRhaW5lckVsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRleHRhcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10ZXh0YXJlYS9ldWktdGV4dGFyZWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBS0wsaUJBQWlCLEVBSWpCLFVBQVUsRUFDVixXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNILGlCQUFpQixFQUVqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBVTNDLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxhQUFhO2FBQzVDLGNBQVMsR0FBRyxDQUFDLEFBQUosQ0FBSztJQUVyQixJQUVXLEtBQUssQ0FBQyxRQUFnQjtRQUM3QixLQUFLLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBVyxLQUFLO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqSCxDQUFDO0lBRUQsSUFFVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMs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QyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgT25EZXN0cm95LFxuICAgIERvQ2hlY2ssXG4gICAgSW5qZWN0b3IsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3RGbGFncyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIE5nQ29udHJvbCxcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtQ29udHJvbERpcmVjdGl2ZSxcbiAgICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgRm9ybUNvbnRyb2xOYW1lLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICd0ZXh0YXJlYVtldWlUZXh0QXJlYV0nLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFdWlUZXh0YXJlYUNvbXBvbmVudCksIG11bHRpOiB0cnVlIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlUZXh0YXJlYUNvbXBvbmVudCBleHRlbmRzIEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgRG9DaGVjaywgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgc3RhdGljIGlkQ291bnRlciA9IDA7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgY2xhc3MoY3NzQ2xhc3M6IHN0cmluZykge1xuICAgICAgICBzdXBlci5zdHlsZUNsYXNzID0gY3NzQ2xhc3M7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgY2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLmlzSW52YWxpZCA/ICdldWktdGV4dGFyZWEtLWludmFsaWQnIDogJycsIHN1cGVyLmdldENzc0NsYXNzZXMoJ2V1aS10ZXh0YXJlYScpXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkID8gdHJ1ZSA6IG51bGw7XG4gICAgfVxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQoc3RhdGU6IGFueSkge1xuICAgICAgICAvLyBpbiBjYXNlIGl0J3MgY29udHJvbGxlZCBieSBOZ0NvbnRyb2wgb3ZlcnJpZGVcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoc3RhdGUpO1xuICAgICAgICAvLyBzZXQgQmFzZURpcmVjdGl2ZSBBdHRyaWJ1dGVcbiAgICAgICAgc3VwZXIuZXVpRGlzYWJsZWQgPSB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJlYWRvbmx5JylcbiAgICBASW5wdXQoKVxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBnZXQgcmVhZG9ubHkoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5IHx8IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgc2V0IHJlYWRvbmx5KHN0YXRlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fcmVhZG9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoc3RhdGUpO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgaWQgPSBgZXVpLXRleHRhcmVhXyR7RXVpVGV4dGFyZWFDb21wb25lbnQuaWRDb3VudGVyKyt9YDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpc0ludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0ludmFsaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBpc0ludmFsaWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0ludmFsaWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBzdXBlci5ldWlEYW5nZXIgPSB0aGlzLl9pc0ludmFsaWQ7XG4gICAgfVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWUyZScpIEBJbnB1dCgpIGUyZUF0dHIgPSAnZXVpLXRleHRhcmVhJztcbiAgICBwcm90ZWN0ZWQgX3JlYWRvbmx5OiBib29sZWFuO1xuXG4gICAgcHJvdGVjdGVkIGhvc3RFbDogSFRNTFRleHRBcmVhRWxlbWVudDtcblxuICAgIHByb3RlY3RlZCBob3N0UGFyZW50RWw6IEhUTUxFbGVtZW50O1xuICAgIHByb3RlY3RlZCBob3N0V3JhcHBlckVsOiBIVE1MRGl2RWxlbWVudDtcbiAgICBwcm90ZWN0ZWQgdmFsdWVDb250YWluZXJFbDogSFRNTERpdkVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfaXNJbnZhbGlkPzogYm9vbGVhbjtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIGNvbnRyb2w6IEZvcm1Db250cm9sIHwgTmdDb250cm9sO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQudGFyZ2V0LnZhbHVlJ10pXG4gICAgcHVibGljIG9uSW5wdXRDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQudGFyZ2V0LnZhbHVlJ10pXG4gICAgcHVibGljIG9uQmx1cih2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKHZhbHVlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3N0RWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuaG9zdFBhcmVudEVsID0gdGhpcy5ob3N0RWwucGFyZW50RWxlbWVudDtcbiAgICAgICAgdGhpcy5ob3N0V3JhcHBlckVsID0gdGhpcy5jcmVhdGVIb3N0V3JhcHBlckNvbnRhaW5lcigpO1xuICAgICAgICB0aGlzLnZhbHVlQ29udGFpbmVyRWwgPSB0aGlzLmNyZWF0ZVZhbHVlQ29udGFpbmVyKCk7XG5cbiAgICAgICAgdGhpcy5oYW5kbGVNYXJrdXAoKTtcbiAgICAgICAgLy8gZXh0cmFjdCB0aGUgRm9ybUNvbnRyb2wgb3IgTmdDb250cm9sXG4gICAgICAgIHRoaXMuY29udHJvbCA9ICh0aGlzLmluamVjdG9yIGFzIEluamVjdG9yKS5nZXQoTmdDb250cm9sLCBudWxsLCBJbmplY3RGbGFncy5PcHRpb25hbCk7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbE5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbCA9ICh0aGlzLmluamVjdG9yIGFzIEluamVjdG9yKS5nZXQoRm9ybUdyb3VwRGlyZWN0aXZlKS5nZXRDb250cm9sKHRoaXMuY29udHJvbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2xEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbCA9IHRoaXMuY29udHJvbC5mb3JtIGFzIEZvcm1Db250cm9sO1xuICAgICAgICB9XG4gICAgICAgIC8vIHNldHMgaW52YWxpZCBzdGF0ZSBpZiBjb250cm9sIGlzIHByZXNlbnRcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sIHx8IHRoaXMuY29udHJvbCBpbnN0YW5jZW9mIE5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRoaXMuY29udHJvbC5kaXNhYmxlZDtcbiAgICAgICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdGhpcy5jb250cm9sLmRpcnR5ICYmIHRoaXMuY29udHJvbC50b3VjaGVkICYmIHRoaXMuY29udHJvbC5pbnZhbGlkO1xuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250cm9sLnN0YXR1c0NoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNJbnZhbGlkID0gc3RhdHVzID09PSAnSU5WQUxJRCc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSBzdGF0dXMgPT09ICdESVNBQkxFRCc7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wgaW5zdGFuY2VvZiBOZ0NvbnRyb2wgfHwgdGhpcy5jb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IERlbGV0ZSB3aGVuIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzMwMjc1IGlzIHJlc29sdmVkXG4gICAgICAgICAgICB0aGlzLmlzSW52YWxpZCA9IHRoaXMuY29udHJvbC5pbnZhbGlkICYmIHRoaXMuY29udHJvbC50b3VjaGVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1sncmVhZG9ubHknXSkge1xuICAgICAgICAgICAgY29uc3QgcmVhZG9ubHkgPSBjaGFuZ2VzWydyZWFkb25seSddLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaG9zdFdyYXBwZXJFbCAmJiB0aGlzLnZhbHVlQ29udGFpbmVyRWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhvc3RXcmFwcGVyRWwuY2xhc3NMaXN0LnRvZ2dsZSgnZXVpLXRleHRhcmVhX193cmFwcGVyLS1yZWFkb25seScsICEhcmVhZG9ubHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaG9zdEVsICYmIHRoaXMudmFsdWVDb250YWluZXJFbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaG9zdEVsLmNsYXNzTGlzdC50b2dnbGUoJ2V1aS10ZXh0YXJlYS0tcmVhZG9ubHknLCAhIXJlYWRvbmx5KTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlQ29udGFpbmVyRWwuaW5uZXJUZXh0ID0gdGhpcy5ob3N0RWwudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXNbJ2V1aURpc2FibGVkJ10pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIGNoYW5nZXNbJ2V1aURpc2FibGVkJ10uY3VycmVudFZhbHVlID8gdGhpcy5jb250cm9sLmRpc2FibGUoKSA6IHRoaXMuY29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKGNoYW5nZXNbJ2V1aURpc2FibGVkJ10uY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgLy8gY2xlYW51cCBET00gbGVmdG92ZXJzXG4gICAgICAgIGlmICh0aGlzLnZhbHVlQ29udGFpbmVyRWwpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5ob3N0RWwucGFyZW50RWxlbWVudCwgdGhpcy52YWx1ZUNvbnRhaW5lckVsKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmhvc3RXcmFwcGVyRWwpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5ob3N0UGFyZW50RWwsIHRoaXMuaG9zdFdyYXBwZXJFbCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWVDb250YWluZXJFbCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy52YWx1ZUNvbnRhaW5lckVsLCAnaW5uZXJUZXh0Jywgb2JqIHx8IG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgb2JqIHx8IG51bGwpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ob3N0RWwpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuaG9zdEVsLCAnZGlzYWJsZWQnLCBpc0Rpc2FibGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkNoYW5nZShfKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZShfKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIG9uVG91Y2hlZChfKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdGhpcy5jb250cm9sLmludmFsaWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUhvc3RXcmFwcGVyQ29udGFpbmVyKCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh3cmFwcGVyLCAnZXVpLXRleHRhcmVhX193cmFwcGVyJyk7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh3cmFwcGVyLCAnZXVpLXRleHRhcmVhX193cmFwcGVyLS1yZWFkb25seScpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ob3N0RWwsICdldWktdGV4dGFyZWEtLXJlYWRvbmx5Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh3cmFwcGVyLCAnZXVpLXRleHRhcmVhX193cmFwcGVyLS1yZWFkb25seScpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5ob3N0RWwsICdldWktdGV4dGFyZWEtLXJlYWRvbmx5Jyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBEaXYgZWxlbWVudCB3aGljaCB3aWxsIGhvbGQgdGhlIHZhbHVlIHRvIGRpc3BsYXkgd2hlbiByZWFkb25seVxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGNyZWF0ZVZhbHVlQ29udGFpbmVyKCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICAgICAgY29uc3QgdmFsdWVDb250YWluZXIgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModmFsdWVDb250YWluZXIsICdldWktdGV4dGFyZWFfX3ZhbHVlLWNvbnRhaW5lcicpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh2YWx1ZUNvbnRhaW5lciwgJ2lubmVyVGV4dCcsIHRoaXMuaG9zdEVsLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlQ29udGFpbmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoYW5nZXMgdGhlIG1hcmt1cCBhcm91bmQgdGhlIHRleHRhcmVhLiBBcHBlbmQgdGV4dGFyZWEgb250byBhIGNvbnRhaW5lciB3aXRoIGRpdlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGhhbmRsZU1hcmt1cCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaG9zdFBhcmVudEVsICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuaG9zdFBhcmVudEVsLnJlcGxhY2VDaGlsZCh0aGlzLmhvc3RXcmFwcGVyRWwsIHRoaXMuaG9zdEVsKTtcbiAgICAgICAgICAgIHRoaXMuaG9zdFdyYXBwZXJFbC5hcHBlbmRDaGlsZCh0aGlzLmhvc3RFbCk7XG4gICAgICAgICAgICB0aGlzLmhvc3RXcmFwcGVyRWwuYXBwZW5kQ2hpbGQodGhpcy52YWx1ZUNvbnRhaW5lckVsKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
@@ -883,7 +883,7 @@ export class EuiTreeComponent {
|
|
883
883
|
return scrolled.getElementRef().nativeElement === this.cdkScrollableRef.getElementRef().nativeElement;
|
884
884
|
}
|
885
885
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EuiTreeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ScrollDispatcher }], target: i0.ɵɵFactoryTarget.Component }); }
|
886
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: EuiTreeComponent, selector: "eui-tree", inputs: { e2eAttr: "e2eAttr", nodes: "nodes", nodeTemplateRef: "nodeTemplateRef", nodeContentMetadataTemplateRef: "nodeContentMetadataTemplateRef", rightContextMenuTemplateRef: "rightContextMenuTemplateRef", expandedIconClass: "expandedIconClass", collapsedIconClass: "collapsedIconClass", expandedSvgIconClass: "expandedSvgIconClass", collapsedSvgIconClass: "collapsedSvgIconClass", isClickTogglingNode: "isClickTogglingNode", isMultiselect: "isMultiselect", isSingleSelect: "isSingleSelect", isRecursiveSelection: "isRecursiveSelection", isRecursiveParentSelection: "isRecursiveParentSelection", showUnderlinedLinks: "showUnderlinedLinks", showLines: "showLines", autoTranslate: "autoTranslate", highlightPath: "highlightPath" }, outputs: { selectionChange: "selectionChange", nodeClick: "nodeClick", nodeToggle: "nodeToggle" }, host: { properties: { "class": "this.cssClasses", "attr.data-e2e": "this.e2eAttr" } }, viewQueries: [{ propertyName: "cdkScrollableRef", first: true, predicate: ["cdkScrollableRef"], descendants: true, read: CdkScrollable }, { propertyName: "treeComponentInstance", first: true, predicate: ["treeComponentInstance"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-ul-rep eui-tree__wrapper\" cdkScrollable #cdkScrollableRef>\n <cdk-tree\n #treeComponentInstance\n [dataSource]=\"cdkArrayDataSource\"\n [treeControl]=\"cdkTreeControl\"\n [trackBy]=\"trackBy\"\n *ngIf=\"renderTree\"\n class=\"eui-cdk-tree\">\n <!-- There are two states of generic cdk-nested-tree-node declarations.\n First one is without child. No sub rendering.\n -->\n <cdk-nested-tree-node *cdkTreeNodeDef=\"let treeRunTimeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <div *ngIf=\"treeRunTimeItemModel\"\n class=\"eui-li-rep eui-tree-node\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\"\n (click)=\"onNodeClick(treeRunTimeItemModel)\">\n <div class=\"eui-tree-node-wrapper__container\">\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel?.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path\n }\">\n </ng-container>\n </div>\n </div>\n </div>\n </cdk-nested-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n *cdkTreeNodeDef=\"let treeRunTimeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <div\n class=\"eui-li-rep eui-tree-node eui-tree-node--with-child\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n *ngIf=\"treeRunTimeItemModel\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div\n class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeRunTimeItemModel)\" class=\"eui-tree-node-wrapper__container\">\n <!-- Expand/collapse action button -->\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeS\n type=\"button\"\n [attr.aria-label]=\"'Toggle ' + getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeRunTimeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-tree-node__button\">\n <span\n euiIcon\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel) && collapsedIconClass\"\n [iconClass]=\"collapsedIconClass\"></span>\n <span\n euiIcon\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && expandedIconClass\"\n [iconClass]=\"expandedIconClass\"></span>\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && !expandedIconClass\"\n [icon]=\"collapsedSvgIconClass\"></eui-icon-svg>\n </button>\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path,\n children: getTreeItem(treeRunTimeItemModel?.path)?.children\n }\">\n </ng-container>\n </div>\n </div>\n <!--uses cdkTreeNodeOutlet to render children nodes, CdkTreeControl is used to control isExpanded state.-->\n <div class=\"eui-ul-rep eui-tree-node\" role=\"group\" *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n</div>\n\n<ng-template #nodeTemplateDefault let-node let-onSelect=\"onSelect\" let-id=\"id\" let-path=\"path\">\n <ng-container *ngIf=\"node\">\n <div class=\"eui-tree-node-wrapper__container-left\" [class.eui-tree-node-wrapper__container-left--selected]=\"node?.isSelected\">\n <!--input checkbox area-->\n <input\n euiInputCheckBox\n *ngIf=\"node && node.selectable\"\n type=\"checkbox\"\n id=\"{{ id }}\"\n [checked]=\"!!node?.isSelected\"\n [indeterminate]=\"!!node?.isIndeterminate\"\n (change)=\"onSelect($event)\"\n class=\"eui-u-mr-m\" />\n\n <!--icon area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.iconClass\">\n <eui-icon\n [euiVariant]=\"node?.treeContentBlock?.iconTypeClass || 'primary'\"\n iconClass=\"{{ node?.treeContentBlock?.iconClass }}\"\n euiSizeS\n class=\"eui-u-mr-xs\">\n </eui-icon>\n </ng-container>\n <ng-container *ngIf=\"node?.treeContentBlock?.iconSvgName\">\n <eui-icon-svg\n icon=\"{{ node?.treeContentBlock?.iconSvgName }}\"\n fillColor=\"{{ node?.treeContentBlock?.iconTypeClass || 'grey-100' }}\"\n size=\"s\"\n class=\"eui-u-mr-xs\">\n </eui-icon-svg>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.chips\">\n <eui-chip\n *ngFor=\"let chip of node.treeContentBlock.chips\"\n euiSizeXS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-mr-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--badge (typeLabel & typeClass) area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.typeLabel\" [ngSwitch]=\"node?.treeContentBlock?.typeClass\">\n <eui-badge euiSizeM [euiVariant]=\"node?.treeContentBlock?.typeClass || 'primary'\" class=\"eui-u-flex-no-shrink eui-u-mr-xs\">\n {{ node?.treeContentBlock?.typeLabel }}\n </eui-badge>\n </ng-container>\n </div>\n\n <!--label area-->\n <div class=\"eui-tree-node-wrapper__container-middle\">\n <label\n *ngIf=\"!node?.treeContentBlock?.url && !node?.treeContentBlock?.urlExternal\"\n euiLabel\n for=\"{{ id }}\"\n class=\"eui-u-text-truncate eui-u-p-2xs\"\n [class.eui-label--selected]=\"\n highlightPath\n ? getRunTimeSelectionRecursiveState(path)?.selectionRecursiveState === 'indeterminate' || node?.isSelected\n : node?.isSelected\n \"\n [class.eui-u-cursor-pointer]=\"node?.selectable\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </label>\n <label *ngIf=\"node?.treeContentBlock?.url\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link\"\n [class.eui-u-text-link-standalone]=\"!showUnderlinedLinks\"\n [routerLink]=\"node?.treeContentBlock?.url\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n <label *ngIf=\"node?.treeContentBlock?.urlExternal\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link-external\"\n [class.eui-u-text-link-external-standalone]=\"!showUnderlinedLinks\"\n href=\"{{ node?.treeContentBlock?.urlExternal }}\"\n target=\"{{ node?.treeContentBlock?.urlExternalTarget || 'blank' }}\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n </div>\n\n <div *ngIf=\"node?.treeContentBlock?.rightContent\" class=\"eui-tree-node-wrapper__container-right\">\n <!--badges area-->\n <ng-container *ngFor=\"let badge of node.treeContentBlock.rightContent?.badges\">\n <eui-badge euiSizeM euiOutline [euiVariant]=\"badge.typeClass || 'secondary'\" class=\"eui-u-ml-xs\">\n <span euiLabel>{{ badge.label }}</span>\n </eui-badge>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngFor=\"let chip of node.treeContentBlock.rightContent?.chips\">\n <eui-chip\n euiSizeXS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-ml-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--Context menu-->\n <ng-container *ngIf=\"node.treeContentBlock.rightContent?.contextMenuMetaData && rightContextMenuTemplateRef\">\n <eui-dropdown class=\"eui-u-ml-xs\">\n <button euiButton euiSizeS euiRounded euiIconButton euiBasicButton euiSecondary [attr.aria-label]=\"'Options menu'\">\n <eui-icon-svg icon=\"eui-ellipsis-vertical\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ng-template\n [ngTemplateOutlet]=\"rightContextMenuTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.rightContent?.contextMenuMetaData,\n metadata: node?.treeContentBlock?.rightContent?.contextMenuMetaData\n }\">\n </ng-template>\n </eui-dropdown-content>\n </eui-dropdown>\n </ng-container>\n </div>\n\n <!--metadata, uses the help of ng template to generate dynamic expand variable without handling state -->\n <ng-container\n *ngIf=\"node.treeContentBlock?.metadata && nodeContentMetadataTemplateRef\"\n [ngTemplateOutlet]=\"nodeContentMetadataContainer\"\n [ngTemplateOutletContext]=\"{\n $implicit: { expanded: false }\n }\">\n </ng-container>\n <ng-template #nodeContentMetadataContainer let-metaDataContainer>\n <button\n euiButton\n euiBasicButton\n euiIconButton\n euiRounded\n euiSizeS\n type=\"button\"\n aria-label=\"expand collapse tree item\"\n (click)=\"metaDataContainer.expanded = !metaDataContainer.expanded\">\n <eui-icon-svg [icon]=\"metaDataContainer.expanded ? 'eui-chevron-down' : 'eui-chevron-forward'\"></eui-icon-svg>\n </button>\n <div *ngIf=\"metaDataContainer.expanded\" class=\"eui-tree-node__metacontent\">\n <!--passing metadata of the node content to provided template-ref:nodeContentMetadataTemplateRef-->\n <ng-template\n [ngTemplateOutlet]=\"nodeContentMetadataTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.metadata,\n metadata: node?.treeContentBlock?.metadata\n }\">\n </ng-template>\n </div>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: [".eui-tree{display:flex;overflow-x:hidden;overflow-y:auto;position:relative;width:100%}.eui-tree .eui-tree__wrapper{display:flex;list-style:none;margin:0;overflow-y:auto;padding:var(--eui-base-spacing-2xs);position:relative;width:100%}.eui-tree .eui-tree__wrapper::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-5)}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-tree .eui-tree__wrapper .eui-cdk-tree{display:flex;flex-direction:column;width:100%}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node{display:flex;width:auto}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node:not(.eui-cdk-nested-tree-node--with-child){padding-inline-start:var(--eui-base-spacing-xl)}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node--with-child{display:flex;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node{display:flex;flex-direction:column;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node__metacontent{display:flex}.eui-tree .eui-tree__wrapper .eui-tree-node__button{margin-left:calc(-1 * var(--eui-base-spacing-2xs));margin-right:var(--eui-base-spacing-2xs)}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper{align-items:center;display:flex;min-height:var(--eui-base-spacing-xl);width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper:hover{background-color:var(--eui-base-color-grey-5)}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container{align-items:center;display:flex;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-left{align-items:center;display:flex;justify-content:flex-start}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-middle{align-items:center;display:flex;justify-content:flex-start;overflow:hidden;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-right{align-items:center;display:flex;justify-content:flex-end;margin-left:auto}.eui-tree:not(.eui-tree--with-children) .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node{padding-inline-start:2px}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-ul-rep{padding-inline-start:var(--eui-base-spacing-s)}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-ul-rep:before{border-left:1px solid var(--eui-base-color-grey-20);content:\"\";height:calc(100% - var(--eui-base-spacing-m) - var(--eui-base-spacing-xl));position:absolute;top:var(--eui-base-spacing-xl)}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-ul-rep:first-child:before{height:calc(100% - var(--eui-base-spacing-m) - var(--eui-base-spacing-2xs));top:0}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-li-rep{padding-inline-start:var(--eui-base-spacing-s);position:relative}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-li-rep:before:not(.eui-tree-node--first){border-top:1px solid var(--eui-base-color-grey-20);content:\"\";display:block;height:0;left:0;position:absolute;top:var(--eui-base-spacing-m);width:var(--eui-base-spacing-xl)}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-li-rep.eui-tree-node:not(.eui-tree-node--with-child):before{position:relative;left:0;display:inline-flex;width:var(--eui-base-spacing-2xl);border-bottom:1px solid var(--eui-base-color-grey-20);content:\"\";margin-left:calc(-2 * var(--eui-base-spacing-l) + var(--eui-base-spacing-2xs));top:var(--eui-base-spacing-m)}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-li-rep.eui-tree-node.eui-tree-node--with-child:before{position:absolute;left:calc(1 * var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs));display:inline-flex;width:var(--eui-base-spacing-s);border-bottom:1px solid var(--eui-base-color-grey-20);border-left:1px solid var(--eui-base-color-grey-20);content:\"\";margin-left:calc(-2 * var(--eui-base-spacing-l) + var(--eui-base-spacing-2xs));top:var(--eui-base-spacing-m)}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-li-rep.eui-tree-node--last:before{height:auto;top:var(--eui-base-spacing-m)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.EuiInputCheckboxComponent, selector: "input[euiInputCheckBox]", inputs: ["indeterminate", "isInvalid", "styleClass", "checked", "id"], outputs: ["indeterminateChange"] }, { kind: "directive", type: i5.CdkNestedTreeNode, selector: "cdk-nested-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["cdkNestedTreeNode"] }, { kind: "directive", type: i5.CdkTreeNodeDef, selector: "[cdkTreeNodeDef]", inputs: ["cdkTreeNodeDefWhen"] }, { kind: "directive", type: i5.CdkTreeNodeToggle, selector: "[cdkTreeNodeToggle]", inputs: ["cdkTreeNodeToggleRecursive"] }, { kind: "component", type: i5.CdkTree, selector: "cdk-tree", inputs: ["dataSource", "treeControl", "trackBy"], exportAs: ["cdkTree"] }, { kind: "directive", type: i5.CdkTreeNodeOutlet, selector: "[cdkTreeNodeOutlet]" }, { kind: "component", type: i6.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i7.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i7.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i8.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "component", type: i9.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["e2eAttr", "aria-label"] }, { kind: "component", type: i10.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i11.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isBlock", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation"] }, { kind: "directive", type: i11.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "directive", type: i1.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
886
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: EuiTreeComponent, selector: "eui-tree", inputs: { e2eAttr: "e2eAttr", nodes: "nodes", nodeTemplateRef: "nodeTemplateRef", nodeContentMetadataTemplateRef: "nodeContentMetadataTemplateRef", rightContextMenuTemplateRef: "rightContextMenuTemplateRef", expandedIconClass: "expandedIconClass", collapsedIconClass: "collapsedIconClass", expandedSvgIconClass: "expandedSvgIconClass", collapsedSvgIconClass: "collapsedSvgIconClass", isClickTogglingNode: "isClickTogglingNode", isMultiselect: "isMultiselect", isSingleSelect: "isSingleSelect", isRecursiveSelection: "isRecursiveSelection", isRecursiveParentSelection: "isRecursiveParentSelection", showUnderlinedLinks: "showUnderlinedLinks", showLines: "showLines", autoTranslate: "autoTranslate", highlightPath: "highlightPath" }, outputs: { selectionChange: "selectionChange", nodeClick: "nodeClick", nodeToggle: "nodeToggle" }, host: { properties: { "class": "this.cssClasses", "attr.data-e2e": "this.e2eAttr" } }, viewQueries: [{ propertyName: "cdkScrollableRef", first: true, predicate: ["cdkScrollableRef"], descendants: true, read: CdkScrollable }, { propertyName: "treeComponentInstance", first: true, predicate: ["treeComponentInstance"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-ul-rep eui-tree__wrapper\" cdkScrollable #cdkScrollableRef>\n <cdk-tree\n #treeComponentInstance\n [dataSource]=\"cdkArrayDataSource\"\n [treeControl]=\"cdkTreeControl\"\n [trackBy]=\"trackBy\"\n *ngIf=\"renderTree\"\n class=\"eui-cdk-tree\">\n <!-- There are two states of generic cdk-nested-tree-node declarations.\n First one is without child. No sub rendering.\n -->\n <cdk-nested-tree-node *cdkTreeNodeDef=\"let treeRunTimeItemModel\" class=\"eui-cdk-nested-tree-node\">\n <div *ngIf=\"treeRunTimeItemModel\"\n class=\"eui-li-rep eui-tree-node\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div class=\"eui-tree-node-wrapper\"\n (click)=\"onNodeClick(treeRunTimeItemModel)\">\n <div class=\"eui-tree-node-wrapper__container\">\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel?.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path\n }\">\n </ng-container>\n </div>\n </div>\n </div>\n </cdk-nested-tree-node>\n <!-- This is the tree node template for expandable nodes -->\n <cdk-nested-tree-node\n *cdkTreeNodeDef=\"let treeRunTimeItemModel; when: hasChild\"\n class=\"eui-cdk-nested-tree-node eui-cdk-nested-tree-node--with-child\">\n <div\n class=\"eui-li-rep eui-tree-node eui-tree-node--with-child\"\n [class.eui-tree-node--first]=\"treeRunTimeItemModel?.path === '0'\"\n [class.eui-tree-node--last]=\"treeRunTimeItemModel.last\"\n *ngIf=\"treeRunTimeItemModel\"\n title=\"{{\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.tooltipLabel ||\n getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\n }}\">\n <div\n class=\"eui-tree-node-wrapper\">\n <!--Here wraps the node, and listen for node clicks.-->\n <div (click)=\"onNodeClick(treeRunTimeItemModel)\" class=\"eui-tree-node-wrapper__container\">\n <!-- Expand/collapse action button -->\n <button\n euiButton\n euiIconButton\n euiBasicButton\n euiRounded\n euiSizeS\n type=\"button\"\n [attr.aria-label]=\"'Toggle ' + getTreeItem(treeRunTimeItemModel?.path)?.node?.treeContentBlock?.label\"\n (click)=\"onNodeToggle(treeRunTimeItemModel)\"\n cdkTreeNodeToggle\n class=\"eui-tree-node__button\">\n <span\n euiIcon\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel) && collapsedIconClass\"\n [iconClass]=\"collapsedIconClass\"></span>\n <span\n euiIcon\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && expandedIconClass\"\n [iconClass]=\"expandedIconClass\"></span>\n <eui-icon-svg\n *ngIf=\"!cdkTreeControl.isExpanded(treeRunTimeItemModel) && !collapsedIconClass\"\n [icon]=\"expandedSvgIconClass\"></eui-icon-svg>\n <eui-icon-svg\n *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel) && !expandedIconClass\"\n [icon]=\"collapsedSvgIconClass\"></eui-icon-svg>\n </button>\n <!--\n Renders node in default or provided template's context.\n Generates onSelect with onSelectFn for developers to send the events from their custom check events.\n Provides id to be used on generic template\n -->\n <ng-container\n [ngTemplateOutlet]=\"nodeTemplateRef || nodeTemplateDefault\"\n [ngTemplateOutletContext]=\"{\n $implicit: getTreeItem(treeRunTimeItemModel.path)?.node,\n onSelect: onSelectFn(treeRunTimeItemModel.path),\n id: uid + treeRunTimeItemModel.path,\n path: treeRunTimeItemModel.path,\n children: getTreeItem(treeRunTimeItemModel?.path)?.children\n }\">\n </ng-container>\n </div>\n </div>\n <!--uses cdkTreeNodeOutlet to render children nodes, CdkTreeControl is used to control isExpanded state.-->\n <div class=\"eui-ul-rep eui-tree-node\" role=\"group\" *ngIf=\"cdkTreeControl.isExpanded(treeRunTimeItemModel)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n</div>\n\n<ng-template #nodeTemplateDefault let-node let-onSelect=\"onSelect\" let-id=\"id\" let-path=\"path\">\n <ng-container *ngIf=\"node\">\n <div class=\"eui-tree-node-wrapper__container-left\" [class.eui-tree-node-wrapper__container-left--selected]=\"node?.isSelected\">\n <!--input checkbox area-->\n <input\n euiInputCheckBox\n *ngIf=\"node && node.selectable\"\n type=\"checkbox\"\n id=\"{{ id }}\"\n [checked]=\"!!node?.isSelected\"\n [indeterminate]=\"!!node?.isIndeterminate\"\n (change)=\"onSelect($event)\"\n class=\"eui-u-mr-m\" />\n\n <!--icon area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.iconClass\">\n <eui-icon\n [euiVariant]=\"node?.treeContentBlock?.iconTypeClass || 'primary'\"\n iconClass=\"{{ node?.treeContentBlock?.iconClass }}\"\n euiSizeS\n class=\"eui-u-mr-xs\">\n </eui-icon>\n </ng-container>\n <ng-container *ngIf=\"node?.treeContentBlock?.iconSvgName\">\n <eui-icon-svg\n icon=\"{{ node?.treeContentBlock?.iconSvgName }}\"\n fillColor=\"{{ node?.treeContentBlock?.iconTypeClass || 'grey-100' }}\"\n size=\"s\"\n class=\"eui-u-mr-xs\">\n </eui-icon-svg>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.chips\">\n <eui-chip\n *ngFor=\"let chip of node.treeContentBlock.chips\"\n euiSizeXS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-mr-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--badge (typeLabel & typeClass) area-->\n <ng-container *ngIf=\"node?.treeContentBlock?.typeLabel\" [ngSwitch]=\"node?.treeContentBlock?.typeClass\">\n <eui-badge euiSizeM [euiVariant]=\"node?.treeContentBlock?.typeClass || 'primary'\" class=\"eui-u-flex-no-shrink eui-u-mr-xs\">\n {{ node?.treeContentBlock?.typeLabel }}\n </eui-badge>\n </ng-container>\n </div>\n\n <!--label area-->\n <div class=\"eui-tree-node-wrapper__container-middle\">\n <label\n *ngIf=\"!node?.treeContentBlock?.url && !node?.treeContentBlock?.urlExternal\"\n euiLabel\n for=\"{{ id }}\"\n class=\"eui-u-text-truncate eui-u-p-2xs\"\n [class.eui-label--selected]=\"\n highlightPath\n ? getRunTimeSelectionRecursiveState(path)?.selectionRecursiveState === 'indeterminate' || node?.isSelected\n : node?.isSelected\n \"\n [class.eui-u-cursor-pointer]=\"node?.selectable\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </label>\n <label *ngIf=\"node?.treeContentBlock?.url\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link\"\n [class.eui-u-text-link-standalone]=\"!showUnderlinedLinks\"\n [routerLink]=\"node?.treeContentBlock?.url\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n <label *ngIf=\"node?.treeContentBlock?.urlExternal\" euiLabel for=\"{{ id }}\" class=\"eui-u-text-truncate eui-u-p-2xs\">\n <a\n class=\"eui-u-text-link-external\"\n [class.eui-u-text-link-external-standalone]=\"!showUnderlinedLinks\"\n href=\"{{ node?.treeContentBlock?.urlExternal }}\"\n target=\"{{ node?.treeContentBlock?.urlExternalTarget || 'blank' }}\">\n {{ autoTranslate ? (node?.treeContentBlock?.label | translate) : node?.treeContentBlock?.label }}\n </a>\n </label>\n </div>\n\n <div *ngIf=\"node?.treeContentBlock?.rightContent\" class=\"eui-tree-node-wrapper__container-right\">\n <!--badges area-->\n <ng-container *ngFor=\"let badge of node.treeContentBlock.rightContent?.badges\">\n <eui-badge euiSizeM euiOutline [euiVariant]=\"badge.typeClass || 'secondary'\" class=\"eui-u-ml-xs\">\n <span euiLabel>{{ badge.label }}</span>\n </eui-badge>\n </ng-container>\n\n <!--chips area-->\n <ng-container *ngFor=\"let chip of node.treeContentBlock.rightContent?.chips\">\n <eui-chip\n euiSizeXS\n [euiVariant]=\"chip.typeClass || 'secondary'\"\n [euiOutline]=\"chip.isOutline\"\n class=\"eui-chip--rounded eui-u-mb-none eui-u-ml-xs\">\n <span euiLabel>{{ chip.label }}</span>\n </eui-chip>\n </ng-container>\n\n <!--Context menu-->\n <ng-container *ngIf=\"node.treeContentBlock.rightContent?.contextMenuMetaData && rightContextMenuTemplateRef\">\n <eui-dropdown class=\"eui-u-ml-xs\">\n <button euiButton euiSizeS euiRounded euiIconButton euiBasicButton euiSecondary [attr.aria-label]=\"'Options menu'\">\n <eui-icon-svg icon=\"eui-ellipsis-vertical\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ng-template\n [ngTemplateOutlet]=\"rightContextMenuTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.rightContent?.contextMenuMetaData,\n metadata: node?.treeContentBlock?.rightContent?.contextMenuMetaData\n }\">\n </ng-template>\n </eui-dropdown-content>\n </eui-dropdown>\n </ng-container>\n </div>\n\n <!--metadata, uses the help of ng template to generate dynamic expand variable without handling state -->\n <ng-container\n *ngIf=\"node.treeContentBlock?.metadata && nodeContentMetadataTemplateRef\"\n [ngTemplateOutlet]=\"nodeContentMetadataContainer\"\n [ngTemplateOutletContext]=\"{\n $implicit: { expanded: false }\n }\">\n </ng-container>\n <ng-template #nodeContentMetadataContainer let-metaDataContainer>\n <button\n euiButton\n euiBasicButton\n euiIconButton\n euiRounded\n euiSizeS\n type=\"button\"\n aria-label=\"expand collapse tree item\"\n (click)=\"metaDataContainer.expanded = !metaDataContainer.expanded\">\n <eui-icon-svg [icon]=\"metaDataContainer.expanded ? 'eui-chevron-down' : 'eui-chevron-forward'\"></eui-icon-svg>\n </button>\n <div *ngIf=\"metaDataContainer.expanded\" class=\"eui-tree-node__metacontent\">\n <!--passing metadata of the node content to provided template-ref:nodeContentMetadataTemplateRef-->\n <ng-template\n [ngTemplateOutlet]=\"nodeContentMetadataTemplateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: node?.treeContentBlock?.metadata,\n metadata: node?.treeContentBlock?.metadata\n }\">\n </ng-template>\n </div>\n </ng-template>\n </ng-container>\n</ng-template>\n", styles: [".eui-tree{display:flex;overflow-x:hidden;overflow-y:auto;position:relative;width:100%}.eui-tree .eui-tree__wrapper{display:flex;list-style:none;margin:0;overflow-y:auto;padding:var(--eui-base-spacing-2xs);position:relative;width:100%}.eui-tree .eui-tree__wrapper::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-base-color-grey-5)}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-tree .eui-tree__wrapper::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-tree .eui-tree__wrapper .eui-cdk-tree{display:flex;flex-direction:column;width:100%}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node{display:flex;width:auto}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node:not(.eui-cdk-nested-tree-node--with-child){padding-inline-start:var(--eui-base-spacing-xl)}.eui-tree .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node--with-child{display:flex;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node{display:flex;flex-direction:column;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node__metacontent{display:flex}.eui-tree .eui-tree__wrapper .eui-tree-node__button{margin-left:calc(-1 * var(--eui-base-spacing-2xs));margin-right:var(--eui-base-spacing-2xs)}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper{align-items:center;display:flex;min-height:var(--eui-base-spacing-xl);width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper:hover{background-color:var(--eui-base-color-grey-5)}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container{align-items:center;display:flex;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-left{align-items:center;display:flex;justify-content:flex-start}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-middle{align-items:center;display:flex;justify-content:flex-start;overflow:hidden;width:100%}.eui-tree .eui-tree__wrapper .eui-tree-node-wrapper__container-right{align-items:center;display:flex;justify-content:flex-end;margin-left:auto}.eui-tree:not(.eui-tree--with-children) .eui-tree__wrapper .eui-cdk-tree .eui-cdk-nested-tree-node{padding-inline-start:2px}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-ul-rep{padding-inline-start:var(--eui-base-spacing-s)}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-ul-rep:before{border-left:1px solid var(--eui-base-color-grey-20);content:\"\";height:calc(100% - var(--eui-base-spacing-m) - var(--eui-base-spacing-xl));position:absolute;top:var(--eui-base-spacing-xl)}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-ul-rep:first-child:before{height:calc(100% - var(--eui-base-spacing-m) - var(--eui-base-spacing-2xs));top:0}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-li-rep{padding-inline-start:var(--eui-base-spacing-s);position:relative}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-li-rep:before:not(.eui-tree-node--first){border-top:1px solid var(--eui-base-color-grey-20);content:\"\";display:block;height:0;left:0;position:absolute;top:var(--eui-base-spacing-m);width:var(--eui-base-spacing-xl)}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-li-rep.eui-tree-node:not(.eui-tree-node--with-child):before{position:relative;left:0;display:inline-flex;width:var(--eui-base-spacing-2xl);border-bottom:1px solid var(--eui-base-color-grey-20);content:\"\";margin-left:calc(-2 * var(--eui-base-spacing-l) + var(--eui-base-spacing-2xs));top:var(--eui-base-spacing-m)}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-li-rep.eui-tree-node.eui-tree-node--with-child:before{position:absolute;left:calc(1 * var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs));display:inline-flex;width:var(--eui-base-spacing-s);border-bottom:1px solid var(--eui-base-color-grey-20);border-left:1px solid var(--eui-base-color-grey-20);content:\"\";margin-left:calc(-2 * var(--eui-base-spacing-l) + var(--eui-base-spacing-2xs));top:var(--eui-base-spacing-m)}.eui-tree.eui-tree--show-lines.eui-tree--with-children div.eui-li-rep.eui-tree-node--last:before{height:auto;top:var(--eui-base-spacing-m)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.EuiInputCheckboxComponent, selector: "input[euiInputCheckBox]", inputs: ["indeterminate", "isInvalid", "styleClass", "checked", "id"], outputs: ["indeterminateChange"] }, { kind: "directive", type: i5.CdkNestedTreeNode, selector: "cdk-nested-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["cdkNestedTreeNode"] }, { kind: "directive", type: i5.CdkTreeNodeDef, selector: "[cdkTreeNodeDef]", inputs: ["cdkTreeNodeDefWhen"] }, { kind: "directive", type: i5.CdkTreeNodeToggle, selector: "[cdkTreeNodeToggle]", inputs: ["cdkTreeNodeToggleRecursive"] }, { kind: "component", type: i5.CdkTree, selector: "cdk-tree", inputs: ["dataSource", "treeControl", "trackBy"], exportAs: ["cdkTree"] }, { kind: "directive", type: i5.CdkTreeNodeOutlet, selector: "[cdkTreeNodeOutlet]" }, { kind: "component", type: i6.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i7.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i7.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i8.EuiLabelComponent, selector: "label[euiLabel], span[euiLabel], div[euiLabel], a[euiLabel], eui-label, label[euiSublabel], span[euiSublabel], div[euiSublabel], a[euiSublabel], eui-sublabel", inputs: ["euiRequired", "euiReadonly", "euiSublabel"] }, { kind: "component", type: i9.EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: ["e2eAttr", "aria-label"] }, { kind: "component", type: i10.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i11.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isBlock", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation", "isRightClickEnabled"] }, { kind: "directive", type: i11.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "directive", type: i1.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
887
887
|
}
|
888
888
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EuiTreeComponent, decorators: [{
|
889
889
|
type: Component,
|
package/esm2022/layout/eui-breadcrumb/collapsed-breadcrumb/collapsed-breadcrumb.component.mjs
CHANGED
@@ -67,7 +67,7 @@ export class CollapsedBreadcrumbComponent {
|
|
67
67
|
return !!this.customButton;
|
68
68
|
}
|
69
69
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: CollapsedBreadcrumbComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
70
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: CollapsedBreadcrumbComponent, selector: "eui-collapsed-breadcrumb", queries: [{ propertyName: "customButton", first: true, predicate: i0.forwardRef(() => CollapsedButtonDirective), descendants: true, static: true }, { propertyName: "listItemComponents", predicate: i0.forwardRef(() => EuiListItemComponent) }], viewQueries: [{ propertyName: "list", first: true, predicate: EuiListComponent, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<eui-dropdown>\n <!-- render default collapsed button if no custom is provided -->\n <ng-container *ngIf=\"!hasCustomButton()\">\n <button type=\"button\" euiButton euiRounded euiSizeS euiIconButton euiOutline euiAccent>\n <eui-icon-svg icon=\"eui-ellipsis-horizontal\"></eui-icon-svg>\n </button>\n </ng-container>\n <!-- provide customizations for the collapsed button -->\n <ng-content select=\"collapsed-button\"></ng-content>\n <eui-dropdown-content>\n <ul euiList>\n <ng-content></ng-content>\n </ul>\n </eui-dropdown-content>\n</eui-dropdown>\n\n<!-- SAMPLE aligned with Design System\n<eui-dropdown>\n <button type=\"button\" euiButton euiRounded euiIconButton euiBasicButton euiPrimary euiSizeS euiTooltip=\"Other links menu\" [attr.aria-label]=\"'Other links menu'\">\n <eui-icon-svg icon=\"ellipsis-horizontal\" fillColor=\"grey-100\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ul euiList>\n <li euiListItem>\n <eui-icon-svg icon=\"chevron-forward\" size=\"xs\" fillColor=\"grey-75\"></eui-icon-svg>\n <button type=\"button\" euiSizeXS euiListItem>Item 1</button>\n </li>\n <li euiListItem>\n <eui-icon-svg icon=\"chevron-forward\" size=\"xs\" fillColor=\"grey-75\"></eui-icon-svg>\n <button type=\"button\" euiSizeXS euiListItem>Item 2</button>\n </li>\n </ul>\n </eui-dropdown-content>\n</eui-dropdown>\n-->\n", styles: [".eui-breadcrumb-item{align-items:center;display:flex;font-size:v(eui-base-font-size-s);font-weight:700;z-index:9}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 v(eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:v(eui-base-font-size-s);font-weight:700;padding:0 v(eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:v(eui-base-color-grey-75);cursor:none;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i3.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i4.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isBlock", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation"] }, { kind: "directive", type: i4.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i5.EuiListComponent, selector: "[euiList], eui-list", inputs: ["isCollapsible"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
70
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: CollapsedBreadcrumbComponent, selector: "eui-collapsed-breadcrumb", queries: [{ propertyName: "customButton", first: true, predicate: i0.forwardRef(() => CollapsedButtonDirective), descendants: true, static: true }, { propertyName: "listItemComponents", predicate: i0.forwardRef(() => EuiListItemComponent) }], viewQueries: [{ propertyName: "list", first: true, predicate: EuiListComponent, descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<eui-dropdown>\n <!-- render default collapsed button if no custom is provided -->\n <ng-container *ngIf=\"!hasCustomButton()\">\n <button type=\"button\" euiButton euiRounded euiSizeS euiIconButton euiOutline euiAccent>\n <eui-icon-svg icon=\"eui-ellipsis-horizontal\"></eui-icon-svg>\n </button>\n </ng-container>\n <!-- provide customizations for the collapsed button -->\n <ng-content select=\"collapsed-button\"></ng-content>\n <eui-dropdown-content>\n <ul euiList>\n <ng-content></ng-content>\n </ul>\n </eui-dropdown-content>\n</eui-dropdown>\n\n<!-- SAMPLE aligned with Design System\n<eui-dropdown>\n <button type=\"button\" euiButton euiRounded euiIconButton euiBasicButton euiPrimary euiSizeS euiTooltip=\"Other links menu\" [attr.aria-label]=\"'Other links menu'\">\n <eui-icon-svg icon=\"ellipsis-horizontal\" fillColor=\"grey-100\"></eui-icon-svg>\n </button>\n <eui-dropdown-content>\n <ul euiList>\n <li euiListItem>\n <eui-icon-svg icon=\"chevron-forward\" size=\"xs\" fillColor=\"grey-75\"></eui-icon-svg>\n <button type=\"button\" euiSizeXS euiListItem>Item 1</button>\n </li>\n <li euiListItem>\n <eui-icon-svg icon=\"chevron-forward\" size=\"xs\" fillColor=\"grey-75\"></eui-icon-svg>\n <button type=\"button\" euiSizeXS euiListItem>Item 2</button>\n </li>\n </ul>\n </eui-dropdown-content>\n</eui-dropdown>\n-->\n", styles: [".eui-breadcrumb-item{align-items:center;display:flex;font-size:v(eui-base-font-size-s);font-weight:700;z-index:9}.eui-breadcrumb-item__separator{align-items:center;display:flex;padding:0 v(eui-base-spacing-2xs)}.eui-breadcrumb-item .eui-button{background-color:transparent;border:1px solid transparent;font-size:v(eui-base-font-size-s);font-weight:700;padding:0 v(eui-base-spacing-2xs) 0 0}.eui-breadcrumb-item .eui-button:hover{background-color:transparent!important}.eui-breadcrumb-item .eui-label{white-space:nowrap;text-decoration:none!important}.eui-breadcrumb-item .eui-label--secondary{color:v(eui-base-color-grey-75);cursor:none;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i3.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "size", "fillColor", "set", "ariaLabelledby", "role", "style", "iconUrl", "transform", "aria-label", "ariaHidden", "focusable", "isLoading"] }, { kind: "component", type: i4.EuiDropdownComponent, selector: "eui-dropdown", inputs: ["e2eAttr", "tabIndex", "width", "position", "isBlock", "isDropDownRightAligned", "isClosedOnClickInside", "isLabelUpdatedFromSelectedItem", "isExpandOnHover", "hasTabNavigation", "isRightClickEnabled"] }, { kind: "directive", type: i4.EuiDropdownContentDirective, selector: "eui-dropdown-content" }, { kind: "component", type: i5.EuiListComponent, selector: "[euiList], eui-list", inputs: ["isCollapsible"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
71
71
|
}
|
72
72
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: CollapsedBreadcrumbComponent, decorators: [{
|
73
73
|
type: Component,
|