@eui/components 17.2.3-snapshot-1709778029844 → 17.2.3-snapshot-1709808319083
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/EuiAutocompleteComponent.html +1 -1
- package/docs/components/EuiDateRangeSelectorComponent.html +1 -1
- package/docs/components/EuiDatepickerComponent.html +1 -1
- package/docs/components/EuiTimepickerComponent.html +1 -1
- package/docs/dependencies.html +2 -2
- package/docs/js/search/search_index.js +2 -2
- package/esm2022/eui-autocomplete/eui-autocomplete.component.mjs +17 -5
- package/esm2022/eui-date-range-selector/eui-date-range-selector.component.mjs +15 -4
- package/esm2022/eui-datepicker/eui-datepicker.component.mjs +15 -4
- package/esm2022/eui-page/eui-page.component.mjs +2 -2
- package/esm2022/eui-sidebar-menu/eui-sidebar-menu.component.mjs +2 -2
- package/esm2022/eui-timepicker/eui-timepicker.component.mjs +15 -4
- package/eui-autocomplete/eui-autocomplete.component.d.ts +6 -0
- package/eui-autocomplete/eui-autocomplete.component.d.ts.map +1 -1
- package/eui-date-range-selector/eui-date-range-selector.component.d.ts +6 -0
- package/eui-date-range-selector/eui-date-range-selector.component.d.ts.map +1 -1
- package/eui-datepicker/eui-datepicker.component.d.ts +6 -0
- package/eui-datepicker/eui-datepicker.component.d.ts.map +1 -1
- package/eui-timepicker/eui-timepicker.component.d.ts +6 -0
- package/eui-timepicker/eui-timepicker.component.d.ts.map +1 -1
- package/fesm2022/eui-components-eui-autocomplete.mjs +15 -3
- package/fesm2022/eui-components-eui-autocomplete.mjs.map +1 -1
- package/fesm2022/eui-components-eui-date-range-selector.mjs +14 -3
- package/fesm2022/eui-components-eui-date-range-selector.mjs.map +1 -1
- package/fesm2022/eui-components-eui-datepicker.mjs +14 -3
- package/fesm2022/eui-components-eui-datepicker.mjs.map +1 -1
- package/fesm2022/eui-components-eui-page.mjs +2 -2
- package/fesm2022/eui-components-eui-page.mjs.map +1 -1
- package/fesm2022/eui-components-eui-sidebar-menu.mjs +2 -2
- package/fesm2022/eui-components-eui-sidebar-menu.mjs.map +1 -1
- package/fesm2022/eui-components-eui-timepicker.mjs +14 -3
- package/fesm2022/eui-components-eui-timepicker.mjs.map +1 -1
- package/package.json +3 -3
@@ -1,6 +1,6 @@
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
2
2
|
import { Component, EventEmitter, Input, Optional, Output, Self, ViewEncapsulation, booleanAttribute, } from '@angular/core';
|
3
|
-
import { FormControl } from '@angular/forms';
|
3
|
+
import { FormControl, Validators } from '@angular/forms';
|
4
4
|
import { Subject } from 'rxjs';
|
5
5
|
import { takeUntil } from 'rxjs/operators';
|
6
6
|
import * as i0 from "@angular/core";
|
@@ -85,6 +85,10 @@ export class EuiDateRangeSelectorComponent {
|
|
85
85
|
this.secondInputAriaLabel = result;
|
86
86
|
});
|
87
87
|
}
|
88
|
+
this.updateInputAriaRequiredAttribute(this.control);
|
89
|
+
this.control?.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((value) => {
|
90
|
+
this.updateInputAriaRequiredAttribute(this.control);
|
91
|
+
});
|
88
92
|
}
|
89
93
|
ngDoCheck() {
|
90
94
|
if (this.control) {
|
@@ -172,12 +176,19 @@ export class EuiDateRangeSelectorComponent {
|
|
172
176
|
registerOnTouched(fn) {
|
173
177
|
this.propagateTouched = fn;
|
174
178
|
}
|
179
|
+
/**
|
180
|
+
* Updates the `aria-required` attribute on the input element.
|
181
|
+
* @private
|
182
|
+
*/
|
183
|
+
updateInputAriaRequiredAttribute(control) {
|
184
|
+
this.hasAriaRequiredAttribute = control?.control?.hasValidator(Validators.required);
|
185
|
+
}
|
175
186
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EuiDateRangeSelectorComponent, deps: [{ token: i1.TranslateService }, { token: i2.LocaleService, optional: true }, { token: i3.DateAdapter }, { token: i4.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
176
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.8", type: EuiDateRangeSelectorComponent, selector: "eui-date-range-selector", inputs: { styleClass: "styleClass", e2eAttr: "e2eAttr", minDate: "minDate", maxDate: "maxDate", togglerIcon: "togglerIcon", togglerIconSvg: "togglerIconSvg", togglerLabel: "togglerLabel", firstInputPlaceholder: "firstInputPlaceholder", secondInputPlaceholder: "secondInputPlaceholder", firstInputAriaLabel: "firstInputAriaLabel", secondInputAriaLabel: "secondInputAriaLabel", startDateDefaultValue: "startDateDefaultValue", endDateDefaultValue: "endDateDefaultValue", comparisonStart: "comparisonStart", comparisonEnd: "comparisonEnd", startView: "startView", islongDateFormat: ["islongDateFormat", "islongDateFormat", booleanAttribute], isClearable: ["isClearable", "isClearable", booleanAttribute], isReadOnly: ["isReadOnly", "isReadOnly", booleanAttribute], isDisabled: ["isDisabled", "isDisabled", booleanAttribute], isResponsive: ["isResponsive", "isResponsive", booleanAttribute] }, outputs: { firstSelectedDate: "firstSelectedDate", secondSelectedDate: "secondSelectedDate" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"eui-date-range-selector {{ styleClass }}\"\n attr.data-e2e=\"{{ e2eAttr }}\"\n [class.eui-date-range-selector--responsive]=\"isResponsive\">\n <mat-date-range-input\n [class.mat-date-range-input--read-only]=\"isReadOnly\"\n [class.mat-date-range-input--disabled]=\"isDisabled\"\n [class.mat-date-range-input--invalid]=\"isInvalid && isTouched\"\n [rangePicker]=\"picker\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\">\n <input\n class=\"eui-date-range-selector__start-date\"\n euiInputText\n [readonly]=\"isReadOnly\"\n matStartDate\n placeholder=\"{{ firstInputPlaceholder }}\"\n attr.aria-label=\"{{ firstInputAriaLabel }}\"\n [formControl]=\"startRangeFormControl\"\n (dateInput)=\"onFirstDateChange($event)\"\n [euiClearable]=\"isClearable\"\n (clear)=\"onFirstDateClear()\" />\n <input\n class=\"eui-date-range-selector__end-date\"\n euiInputText\n [readonly]=\"isReadOnly\"\n matEndDate\n placeholder=\"{{ secondInputPlaceholder }}\"\n attr.aria-label=\"{{ secondInputAriaLabel }}\"\n [formControl]=\"endRangeFormControl\"\n (dateInput)=\"onSecondDateChange($event)\"\n [euiClearable]=\"isClearable\"\n (clear)=\"onSecondDateClear()\" />\n </mat-date-range-input>\n <mat-date-range-picker #picker [startView]=\"startView\"> </mat-date-range-picker>\n <button\n *ngIf=\"!isReadOnly\"\n class=\"eui-date-range-selector__toggler eui-date-range-selector__toggler-{{ !togglerLabel ? 'icon' : 'label' }}\"\n (click)=\"picker.open()\"\n euiButton\n euiSecondary\n euiIconButton\n type=\"button\"\n [euiDisabled]=\"isDisabled\"\n aria-haspopup=\"dialog\">\n <span *ngIf=\"!togglerLabel && togglerIcon\" euiIcon aria-label=\"Open Calendar\" iconClass=\"{{ togglerIcon }}\"></span>\n <ng-container *ngIf=\"!togglerLabel && !togglerIcon\">\n <eui-icon-svg icon=\"{{ togglerIconSvg }}\" aria-label=\"Open Calendar\"></eui-icon-svg>\n </ng-container>\n <span *ngIf=\"togglerLabel\">{{ togglerLabel }}</span>\n </button>\n</div>\n", styles: ["eui-date-range-selector{display:flex;width:100%}.eui-date-range-selector{display:inline-flex;height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs))}.eui-date-range-selector--responsive{display:flex;width:100%}.eui-date-range-selector .mat-date-range-input{align-items:center;display:flex;height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs))}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container{align-items:center;display:flex;height:100%}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container .mat-date-range-input-wrapper{height:100%;width:calc(6.9 * var(--eui-base-spacing-m))}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container .mat-date-range-input-wrapper .eui-input-text{min-height:calc(var(--eui-base-spacing-2xl) + 2px)}.eui-date-range-selector.eui-date-range-selector--clearable .mat-date-range-input-wrapper{width:calc(8.5 * var(--eui-base-spacing-m))!important}.eui-date-range-selector.eui-date-range-selector--clearable .mat-date-range-input-wrapper .mat-date-range-input-inner{position:relative}.eui-date-range-selector--long-date-format .mat-date-range-input-wrapper{width:calc(12.5 * var(--eui-base-spacing-m))}.eui-date-range-selector .mat-date-range-input-separator.mat-date-range-input-separator-hidden{opacity:1}.eui-date-range-selector__toggler{border-bottom-left-radius:0;border-top-left-radius:0;border-left:none}.eui-date-range-selector__toggler-label{width:auto}.eui-date-range-selector .mat-date-range-input{align-items:center;display:flex;box-sizing:border-box;background:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-50);border-radius:var(--eui-base-border-radius);border-bottom-right-radius:0;border-top-right-radius:0;text-align:center}.eui-date-range-selector .mat-date-range-input--read-only{background-color:transparent;border-color:transparent!important;box-shadow:none;height:inherit;padding:var(--eui-base-spacing-2xs) 0;pointer-events:none}.eui-date-range-selector .mat-date-range-input--read-only .mat-date-range-input-separator.mat-date-range-input-separator-hidden{opacity:0}.eui-date-range-selector .mat-date-range-input--disabled{background-image:none;box-shadow:none;cursor:not-allowed!important;opacity:var(--eui-base-disabled-opacity);background-color:var(--eui-base-color-grey-5);border:1px solid var(--eui-base-color-grey-25)}.eui-date-range-selector .mat-date-range-input--disabled input.eui-date-range-selector__start-date{border-right:none!important}.eui-date-range-selector .mat-date-range-input--disabled input.eui-date-range-selector__end-date{border-left:none!important}.eui-date-range-selector .mat-date-range-input--invalid{border:1px solid var(--eui-base-color-danger-100)}.eui-date-range-selector input.mat-date-range-input-inner{align-items:center;font: 400 1rem/1.25rem arial,sans-serif;appearance:none;background-color:inherit;border:hidden;color:var(--eui-base-color-grey-100);display:flex;padding:var(--eui-base-spacing-s);text-align:left;width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i6.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i6.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i6.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: i7.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i8.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i8.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: i9.EuiInputTextComponent, selector: "input[euiInputText]", inputs: ["class", "isInvalid"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
187
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.0.8", type: EuiDateRangeSelectorComponent, selector: "eui-date-range-selector", inputs: { styleClass: "styleClass", e2eAttr: "e2eAttr", minDate: "minDate", maxDate: "maxDate", togglerIcon: "togglerIcon", togglerIconSvg: "togglerIconSvg", togglerLabel: "togglerLabel", firstInputPlaceholder: "firstInputPlaceholder", secondInputPlaceholder: "secondInputPlaceholder", firstInputAriaLabel: "firstInputAriaLabel", secondInputAriaLabel: "secondInputAriaLabel", startDateDefaultValue: "startDateDefaultValue", endDateDefaultValue: "endDateDefaultValue", comparisonStart: "comparisonStart", comparisonEnd: "comparisonEnd", startView: "startView", islongDateFormat: ["islongDateFormat", "islongDateFormat", booleanAttribute], isClearable: ["isClearable", "isClearable", booleanAttribute], isReadOnly: ["isReadOnly", "isReadOnly", booleanAttribute], isDisabled: ["isDisabled", "isDisabled", booleanAttribute], isResponsive: ["isResponsive", "isResponsive", booleanAttribute] }, outputs: { firstSelectedDate: "firstSelectedDate", secondSelectedDate: "secondSelectedDate" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"eui-date-range-selector {{ styleClass }}\"\n attr.data-e2e=\"{{ e2eAttr }}\"\n [class.eui-date-range-selector--responsive]=\"isResponsive\">\n <mat-date-range-input\n [class.mat-date-range-input--read-only]=\"isReadOnly\"\n [class.mat-date-range-input--disabled]=\"isDisabled\"\n [class.mat-date-range-input--invalid]=\"isInvalid && isTouched\"\n [rangePicker]=\"picker\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\">\n <input\n #inputStartDate\n class=\"eui-date-range-selector__start-date\"\n euiInputText\n [readonly]=\"isReadOnly\"\n matStartDate\n placeholder=\"{{ firstInputPlaceholder }}\"\n attr.aria-label=\"{{ firstInputAriaLabel }}\"\n [attr.aria-required]=\"hasAriaRequiredAttribute ? 'true' : null\"\n [formControl]=\"startRangeFormControl\"\n (dateInput)=\"onFirstDateChange($event)\"\n [euiClearable]=\"isClearable\"\n (clear)=\"onFirstDateClear()\" />\n <input\n #inputEndDate\n class=\"eui-date-range-selector__end-date\"\n euiInputText\n [readonly]=\"isReadOnly\"\n matEndDate\n placeholder=\"{{ secondInputPlaceholder }}\"\n attr.aria-label=\"{{ secondInputAriaLabel }}\"\n [attr.aria-required]=\"hasAriaRequiredAttribute ? 'true' : null\"\n [formControl]=\"endRangeFormControl\"\n (dateInput)=\"onSecondDateChange($event)\"\n [euiClearable]=\"isClearable\"\n (clear)=\"onSecondDateClear()\" />\n </mat-date-range-input>\n <mat-date-range-picker #picker [startView]=\"startView\"> </mat-date-range-picker>\n <button\n *ngIf=\"!isReadOnly\"\n class=\"eui-date-range-selector__toggler eui-date-range-selector__toggler-{{ !togglerLabel ? 'icon' : 'label' }}\"\n (click)=\"picker.open()\"\n euiButton\n euiSecondary\n euiIconButton\n type=\"button\"\n [euiDisabled]=\"isDisabled\"\n aria-haspopup=\"dialog\">\n <span *ngIf=\"!togglerLabel && togglerIcon\" euiIcon aria-label=\"Open Calendar\" iconClass=\"{{ togglerIcon }}\"></span>\n <ng-container *ngIf=\"!togglerLabel && !togglerIcon\">\n <eui-icon-svg icon=\"{{ togglerIconSvg }}\" aria-label=\"Open Calendar\"></eui-icon-svg>\n </ng-container>\n <span *ngIf=\"togglerLabel\">{{ togglerLabel }}</span>\n </button>\n</div>\n", styles: ["eui-date-range-selector{display:flex;width:100%}.eui-date-range-selector{display:inline-flex;height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs))}.eui-date-range-selector--responsive{display:flex;width:100%}.eui-date-range-selector .mat-date-range-input{align-items:center;display:flex;height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs))}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container{align-items:center;display:flex;height:100%}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container .mat-date-range-input-wrapper{height:100%;width:calc(6.9 * var(--eui-base-spacing-m))}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container .mat-date-range-input-wrapper .eui-input-text{min-height:calc(var(--eui-base-spacing-2xl) + 2px)}.eui-date-range-selector.eui-date-range-selector--clearable .mat-date-range-input-wrapper{width:calc(8.5 * var(--eui-base-spacing-m))!important}.eui-date-range-selector.eui-date-range-selector--clearable .mat-date-range-input-wrapper .mat-date-range-input-inner{position:relative}.eui-date-range-selector--long-date-format .mat-date-range-input-wrapper{width:calc(12.5 * var(--eui-base-spacing-m))}.eui-date-range-selector .mat-date-range-input-separator.mat-date-range-input-separator-hidden{opacity:1}.eui-date-range-selector__toggler{border-bottom-left-radius:0;border-top-left-radius:0;border-left:none}.eui-date-range-selector__toggler-label{width:auto}.eui-date-range-selector .mat-date-range-input{align-items:center;display:flex;box-sizing:border-box;background:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-50);border-radius:var(--eui-base-border-radius);border-bottom-right-radius:0;border-top-right-radius:0;text-align:center}.eui-date-range-selector .mat-date-range-input--read-only{background-color:transparent;border-color:transparent!important;box-shadow:none;height:inherit;padding:var(--eui-base-spacing-2xs) 0;pointer-events:none}.eui-date-range-selector .mat-date-range-input--read-only .mat-date-range-input-separator.mat-date-range-input-separator-hidden{opacity:0}.eui-date-range-selector .mat-date-range-input--disabled{background-image:none;box-shadow:none;cursor:not-allowed!important;opacity:var(--eui-base-disabled-opacity);background-color:var(--eui-base-color-grey-5);border:1px solid var(--eui-base-color-grey-25)}.eui-date-range-selector .mat-date-range-input--disabled input.eui-date-range-selector__start-date{border-right:none!important}.eui-date-range-selector .mat-date-range-input--disabled input.eui-date-range-selector__end-date{border-left:none!important}.eui-date-range-selector .mat-date-range-input--invalid{border:1px solid var(--eui-base-color-danger-100)}.eui-date-range-selector input.mat-date-range-input-inner{align-items:center;font: 400 1rem/1.25rem arial,sans-serif;appearance:none;background-color:inherit;border:hidden;color:var(--eui-base-color-grey-100);display:flex;padding:var(--eui-base-spacing-s);text-align:left;width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i6.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i6.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i6.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: i7.EuiButtonComponent, selector: "button[euiButton], a[euiButton]", inputs: ["e2eAttr", "id", "euiBasicButton", "euiButtonCall", "euiBlockButton", "isLoading", "euiIconButton", "euiLineWrap"], outputs: ["buttonClick"] }, { kind: "component", type: i8.EuiIconComponent, selector: "div[euiIcon], span[euiIcon], i[euiIcon], eui-icon", inputs: ["aria-label", "iconClass", "isLoading"] }, { kind: "component", type: i8.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: i9.EuiInputTextComponent, selector: "input[euiInputText]", inputs: ["class", "isInvalid"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
177
188
|
}
|
178
189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: EuiDateRangeSelectorComponent, decorators: [{
|
179
190
|
type: Component,
|
180
|
-
args: [{ selector: 'eui-date-range-selector', encapsulation: ViewEncapsulation.None, template: "<div\n class=\"eui-date-range-selector {{ styleClass }}\"\n attr.data-e2e=\"{{ e2eAttr }}\"\n [class.eui-date-range-selector--responsive]=\"isResponsive\">\n <mat-date-range-input\n [class.mat-date-range-input--read-only]=\"isReadOnly\"\n [class.mat-date-range-input--disabled]=\"isDisabled\"\n [class.mat-date-range-input--invalid]=\"isInvalid && isTouched\"\n [rangePicker]=\"picker\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\">\n <input\n class=\"eui-date-range-selector__start-date\"\n euiInputText\n [readonly]=\"isReadOnly\"\n matStartDate\n placeholder=\"{{ firstInputPlaceholder }}\"\n attr.aria-label=\"{{ firstInputAriaLabel }}\"\n [formControl]=\"startRangeFormControl\"\n (dateInput)=\"onFirstDateChange($event)\"\n [euiClearable]=\"isClearable\"\n (clear)=\"onFirstDateClear()\" />\n <input\n class=\"eui-date-range-selector__end-date\"\n euiInputText\n [readonly]=\"isReadOnly\"\n matEndDate\n placeholder=\"{{ secondInputPlaceholder }}\"\n attr.aria-label=\"{{ secondInputAriaLabel }}\"\n [formControl]=\"endRangeFormControl\"\n (dateInput)=\"onSecondDateChange($event)\"\n [euiClearable]=\"isClearable\"\n (clear)=\"onSecondDateClear()\" />\n </mat-date-range-input>\n <mat-date-range-picker #picker [startView]=\"startView\"> </mat-date-range-picker>\n <button\n *ngIf=\"!isReadOnly\"\n class=\"eui-date-range-selector__toggler eui-date-range-selector__toggler-{{ !togglerLabel ? 'icon' : 'label' }}\"\n (click)=\"picker.open()\"\n euiButton\n euiSecondary\n euiIconButton\n type=\"button\"\n [euiDisabled]=\"isDisabled\"\n aria-haspopup=\"dialog\">\n <span *ngIf=\"!togglerLabel && togglerIcon\" euiIcon aria-label=\"Open Calendar\" iconClass=\"{{ togglerIcon }}\"></span>\n <ng-container *ngIf=\"!togglerLabel && !togglerIcon\">\n <eui-icon-svg icon=\"{{ togglerIconSvg }}\" aria-label=\"Open Calendar\"></eui-icon-svg>\n </ng-container>\n <span *ngIf=\"togglerLabel\">{{ togglerLabel }}</span>\n </button>\n</div>\n", styles: ["eui-date-range-selector{display:flex;width:100%}.eui-date-range-selector{display:inline-flex;height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs))}.eui-date-range-selector--responsive{display:flex;width:100%}.eui-date-range-selector .mat-date-range-input{align-items:center;display:flex;height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs))}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container{align-items:center;display:flex;height:100%}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container .mat-date-range-input-wrapper{height:100%;width:calc(6.9 * var(--eui-base-spacing-m))}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container .mat-date-range-input-wrapper .eui-input-text{min-height:calc(var(--eui-base-spacing-2xl) + 2px)}.eui-date-range-selector.eui-date-range-selector--clearable .mat-date-range-input-wrapper{width:calc(8.5 * var(--eui-base-spacing-m))!important}.eui-date-range-selector.eui-date-range-selector--clearable .mat-date-range-input-wrapper .mat-date-range-input-inner{position:relative}.eui-date-range-selector--long-date-format .mat-date-range-input-wrapper{width:calc(12.5 * var(--eui-base-spacing-m))}.eui-date-range-selector .mat-date-range-input-separator.mat-date-range-input-separator-hidden{opacity:1}.eui-date-range-selector__toggler{border-bottom-left-radius:0;border-top-left-radius:0;border-left:none}.eui-date-range-selector__toggler-label{width:auto}.eui-date-range-selector .mat-date-range-input{align-items:center;display:flex;box-sizing:border-box;background:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-50);border-radius:var(--eui-base-border-radius);border-bottom-right-radius:0;border-top-right-radius:0;text-align:center}.eui-date-range-selector .mat-date-range-input--read-only{background-color:transparent;border-color:transparent!important;box-shadow:none;height:inherit;padding:var(--eui-base-spacing-2xs) 0;pointer-events:none}.eui-date-range-selector .mat-date-range-input--read-only .mat-date-range-input-separator.mat-date-range-input-separator-hidden{opacity:0}.eui-date-range-selector .mat-date-range-input--disabled{background-image:none;box-shadow:none;cursor:not-allowed!important;opacity:var(--eui-base-disabled-opacity);background-color:var(--eui-base-color-grey-5);border:1px solid var(--eui-base-color-grey-25)}.eui-date-range-selector .mat-date-range-input--disabled input.eui-date-range-selector__start-date{border-right:none!important}.eui-date-range-selector .mat-date-range-input--disabled input.eui-date-range-selector__end-date{border-left:none!important}.eui-date-range-selector .mat-date-range-input--invalid{border:1px solid var(--eui-base-color-danger-100)}.eui-date-range-selector input.mat-date-range-input-inner{align-items:center;font: 400 1rem/1.25rem arial,sans-serif;appearance:none;background-color:inherit;border:hidden;color:var(--eui-base-color-grey-100);display:flex;padding:var(--eui-base-spacing-s);text-align:left;width:100%}\n"] }]
|
191
|
+
args: [{ selector: 'eui-date-range-selector', encapsulation: ViewEncapsulation.None, template: "<div\n class=\"eui-date-range-selector {{ styleClass }}\"\n attr.data-e2e=\"{{ e2eAttr }}\"\n [class.eui-date-range-selector--responsive]=\"isResponsive\">\n <mat-date-range-input\n [class.mat-date-range-input--read-only]=\"isReadOnly\"\n [class.mat-date-range-input--disabled]=\"isDisabled\"\n [class.mat-date-range-input--invalid]=\"isInvalid && isTouched\"\n [rangePicker]=\"picker\"\n [min]=\"minDate\"\n [max]=\"maxDate\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\">\n <input\n #inputStartDate\n class=\"eui-date-range-selector__start-date\"\n euiInputText\n [readonly]=\"isReadOnly\"\n matStartDate\n placeholder=\"{{ firstInputPlaceholder }}\"\n attr.aria-label=\"{{ firstInputAriaLabel }}\"\n [attr.aria-required]=\"hasAriaRequiredAttribute ? 'true' : null\"\n [formControl]=\"startRangeFormControl\"\n (dateInput)=\"onFirstDateChange($event)\"\n [euiClearable]=\"isClearable\"\n (clear)=\"onFirstDateClear()\" />\n <input\n #inputEndDate\n class=\"eui-date-range-selector__end-date\"\n euiInputText\n [readonly]=\"isReadOnly\"\n matEndDate\n placeholder=\"{{ secondInputPlaceholder }}\"\n attr.aria-label=\"{{ secondInputAriaLabel }}\"\n [attr.aria-required]=\"hasAriaRequiredAttribute ? 'true' : null\"\n [formControl]=\"endRangeFormControl\"\n (dateInput)=\"onSecondDateChange($event)\"\n [euiClearable]=\"isClearable\"\n (clear)=\"onSecondDateClear()\" />\n </mat-date-range-input>\n <mat-date-range-picker #picker [startView]=\"startView\"> </mat-date-range-picker>\n <button\n *ngIf=\"!isReadOnly\"\n class=\"eui-date-range-selector__toggler eui-date-range-selector__toggler-{{ !togglerLabel ? 'icon' : 'label' }}\"\n (click)=\"picker.open()\"\n euiButton\n euiSecondary\n euiIconButton\n type=\"button\"\n [euiDisabled]=\"isDisabled\"\n aria-haspopup=\"dialog\">\n <span *ngIf=\"!togglerLabel && togglerIcon\" euiIcon aria-label=\"Open Calendar\" iconClass=\"{{ togglerIcon }}\"></span>\n <ng-container *ngIf=\"!togglerLabel && !togglerIcon\">\n <eui-icon-svg icon=\"{{ togglerIconSvg }}\" aria-label=\"Open Calendar\"></eui-icon-svg>\n </ng-container>\n <span *ngIf=\"togglerLabel\">{{ togglerLabel }}</span>\n </button>\n</div>\n", styles: ["eui-date-range-selector{display:flex;width:100%}.eui-date-range-selector{display:inline-flex;height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs))}.eui-date-range-selector--responsive{display:flex;width:100%}.eui-date-range-selector .mat-date-range-input{align-items:center;display:flex;height:calc(var(--eui-base-spacing-2xl) + var(--eui-base-spacing-2xs))}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container{align-items:center;display:flex;height:100%}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container .mat-date-range-input-wrapper{height:100%;width:calc(6.9 * var(--eui-base-spacing-m))}.eui-date-range-selector .mat-date-range-input .mat-date-range-input-container .mat-date-range-input-wrapper .eui-input-text{min-height:calc(var(--eui-base-spacing-2xl) + 2px)}.eui-date-range-selector.eui-date-range-selector--clearable .mat-date-range-input-wrapper{width:calc(8.5 * var(--eui-base-spacing-m))!important}.eui-date-range-selector.eui-date-range-selector--clearable .mat-date-range-input-wrapper .mat-date-range-input-inner{position:relative}.eui-date-range-selector--long-date-format .mat-date-range-input-wrapper{width:calc(12.5 * var(--eui-base-spacing-m))}.eui-date-range-selector .mat-date-range-input-separator.mat-date-range-input-separator-hidden{opacity:1}.eui-date-range-selector__toggler{border-bottom-left-radius:0;border-top-left-radius:0;border-left:none}.eui-date-range-selector__toggler-label{width:auto}.eui-date-range-selector .mat-date-range-input{align-items:center;display:flex;box-sizing:border-box;background:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-50);border-radius:var(--eui-base-border-radius);border-bottom-right-radius:0;border-top-right-radius:0;text-align:center}.eui-date-range-selector .mat-date-range-input--read-only{background-color:transparent;border-color:transparent!important;box-shadow:none;height:inherit;padding:var(--eui-base-spacing-2xs) 0;pointer-events:none}.eui-date-range-selector .mat-date-range-input--read-only .mat-date-range-input-separator.mat-date-range-input-separator-hidden{opacity:0}.eui-date-range-selector .mat-date-range-input--disabled{background-image:none;box-shadow:none;cursor:not-allowed!important;opacity:var(--eui-base-disabled-opacity);background-color:var(--eui-base-color-grey-5);border:1px solid var(--eui-base-color-grey-25)}.eui-date-range-selector .mat-date-range-input--disabled input.eui-date-range-selector__start-date{border-right:none!important}.eui-date-range-selector .mat-date-range-input--disabled input.eui-date-range-selector__end-date{border-left:none!important}.eui-date-range-selector .mat-date-range-input--invalid{border:1px solid var(--eui-base-color-danger-100)}.eui-date-range-selector input.mat-date-range-input-inner{align-items:center;font: 400 1rem/1.25rem arial,sans-serif;appearance:none;background-color:inherit;border:hidden;color:var(--eui-base-color-grey-100);display:flex;padding:var(--eui-base-spacing-s);text-align:left;width:100%}\n"] }]
|
181
192
|
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.LocaleService, decorators: [{
|
182
193
|
type: Optional
|
183
194
|
}] }, { type: i3.DateAdapter }, { type: i4.NgControl, decorators: [{
|
@@ -236,4 +247,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
236
247
|
type: Input,
|
237
248
|
args: [{ transform: booleanAttribute }]
|
238
249
|
}] } });
|
239
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IvZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IvZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFFSixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFLOUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7O0FBVTNDLE1BQU0sT0FBTyw2QkFBNkI7SUFrQ3RDLFlBQ2MsZ0JBQWtDLEVBQ3RCLGFBQTRCLEVBQ3hDLE9BQXlCLEVBQ0wsT0FBa0I7UUFIdEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN4QyxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUNMLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFyQ3BELGtCQUFhLEdBQThCLEVBQUUsVUFBVSxFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFHeEUsMEJBQXFCLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUMxQyx3QkFBbUIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRXJDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUMs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c291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VySW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzIH0gZnJvbSAnLi9tb2RlbHMvZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3ItZGF0ZXMubW9kZWwnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktZGF0ZS1yYW5nZS1zZWxlY3RvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS1kYXRlLXJhbmdlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlEYXRlUmFuZ2VTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEb0NoZWNrIHtcbiAgICBzZWxlY3RlZERhdGVzOiBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzID0geyBzdGFydFJhbmdlOm51bGwsIGVuZFJhbmdlOiBudWxsIH07XG4gICAgcHVibGljIGlzSW52YWxpZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgaXNUb3VjaGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyBzdGFydFJhbmdlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBwdWJsaWMgZW5kUmFuZ2VGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gICAgQE91dHB1dCgpIGZpcnN0U2VsZWN0ZWREYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHNlY29uZFNlbGVjdGVkRGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzcyA9ICcnO1xuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAnZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3InO1xuICAgIEBJbnB1dCgpIG1pbkRhdGU6IGFueTtcbiAgICBASW5wdXQoKSBtYXhEYXRlOiBhbnk7XG4gICAgQElucHV0KCkgdG9nZ2xlckljb246IHN0cmluZztcbiAgICBASW5wdXQoKSB0b2dnbGVySWNvblN2ZyA9ICdldWktY2FsZW5kYXItb3V0bGluZSc7XG4gICAgQElucHV0KCkgdG9nZ2xlckxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZmlyc3RJbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2Vjb25kSW5wdXRQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGZpcnN0SW5wdXRBcmlhTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBzZWNvbmRJbnB1dEFyaWFMYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN0YXJ0RGF0ZURlZmF1bHRWYWx1ZTogYW55O1xuICAgIEBJbnB1dCgpIGVuZERhdGVEZWZhdWx0VmFsdWU6IGFueTtcbiAgICBASW5wdXQoKSBjb21wYXJpc29uU3RhcnQ6IGFueTtcbiAgICBASW5wdXQoKSBjb21wYXJpc29uRW5kOiBhbnk7XG4gICAgQElucHV0KCkgc3RhcnRWaWV3OiAnbW9udGgnIHwgJ3llYXInIHwgJ211bHRpLXllYXInID0gJ21vbnRoJztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlpc2xvbmdEYXRlRm9ybWF0ID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0paXNDbGVhcmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlpc1JlYWRPbmx5ID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0paXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KWlzUmVzcG9uc2l2ZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBsb2NhbGVTZXJ2aWNlOiBMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgY29udHJvbDogTmdDb250cm9sLFxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0U3RhdGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkYXB0ZXIuc2V0TG9jYWxlKHN0YXRlLmlkKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuc3RhcnREYXRlRGVmYXVsdFZhbHVlLCBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkIH0pO1xuICAgICAgICB0aGlzLmVuZFJhbmdlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5lbmREYXRlRGVmYXVsdFZhbHVlLCBkaXNhYmxlZDogdGhpcy5pc0Rpc2FibGVkIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5maXJzdElucHV0UGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgICAgICAgICAgIC5zdHJlYW0oJ2V1aS5kYXRlcmFuZ2VzZWxlY3Rvci5GSVJTVFBJQ0tFUlNMQUJFTCcpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RJbnB1dFBsYWNlaG9sZGVyID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJ5IHNldHRpbmcgdGhlIGZpcnN0SW5wdXRBcmlhTGFiZWwgdG8gZGQvbW0veXl5eShvciB0aGUgZGVzaXJlZCBmb3JtYXQpIHRoZSBmb3JtYXQgY2FuIGJlIGFubm91bmNlZCB0byB0aGUgc2NyZWVuIHJlYWRlciB1c2VycyBiZWZvcmUgdGhlIHVzZXJzIHN0YXJ0IHR5cGluZ1xuICAgICAgICBpZiAoIXRoaXMuZmlyc3RJbnB1dEFyaWFMYWJlbCkge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnN0cmVhbSgnZXVpLmRhdGVyYW5nZXNlbGVjdG9yLkZJUlNUUElDS0VSU1BMQUNFSE9MREVSJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJzdElucHV0QXJpYUxhYmVsID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5zZWNvbmRJbnB1dFBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAuc3RyZWFtKCdldWkuZGF0ZXJhbmdlc2VsZWN0b3IuU0VDT05EUElDS0VSU0xBQkVMJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRJbnB1dFBsYWNlaG9sZGVyID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJ5IHNldHRpbmcgdGhlIHNlY29uZElucHV0QXJpYUxhYmVsIHRvIGRkL21tL3l5eXkob3IgdGhlIGRlc2lyZWQgZm9ybWF0KSB0aGUgZm9ybWF0IGNhbiBiZSBhbm5vdW5jZWQgdG8gdGhlIHNjcmVlbiByZWFkZXIgdXNlcnMgYmVmb3JlIHRoZSB1c2VycyBzdGFydCB0eXBpbmdcbiAgICAgICAgaWYgKCF0aGlzLnNlY29uZElucHV0QXJpYUxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAuc3RyZWFtKCdldWkuZGF0ZXJhbmdlc2VsZWN0b3IuU0VDT05EUElDS0VSU1BMQUNFSE9MREVSJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRJbnB1dEFyaWFMYWJlbCA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgLy8gbWFya3MgdGhlIGlucHV0IGNvbnRyb2xzIGFzIHRvdWNoZWQvaW52YWxpZCBpZiB0aGUgZm9ybSBjb250cm9sIGlzIHRvdWNoZWQvaW52YWxpZFxuICAgICAgICAgICAgdGhpcy5jb250cm9sPy50b3VjaGVkID8gdGhpcy5zdGFydFJhbmdlRm9ybUNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKSA6IHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy5jb250cm9sPy50b3VjaGVkID8gdGhpcy5lbmRSYW5nZUZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKSA6IHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbD8ubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/LnRvdWNoZWQgPyAodGhpcy5pc1RvdWNoZWQgPSB0cnVlKSA6ICh0aGlzLmlzVG91Y2hlZCA9IGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8uaW52YWxpZCA/IHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLnNldEVycm9ycyh0aGlzLmNvbnRyb2wuZXJyb3JzKSA6IHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8uaW52YWxpZCA/IHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5zZXRFcnJvcnModGhpcy5jb250cm9sLmVycm9ycykgOiB0aGlzLmVuZFJhbmdlRm9ybUNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5jb250cm9sPy5pbnZhbGlkID8gKHRoaXMuaXNJbnZhbGlkID0gdHJ1ZSkgOiAodGhpcy5pc0ludmFsaWQgPSBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzbG9uZ0RhdGVGb3JtYXQpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVDbGFzcyArPSAnZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3ItLWxvbmctZGF0ZS1mb3JtYXQnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzQ2xlYXJhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlQ2xhc3MgKz0gJ2V1aS1kYXRlLXJhbmdlLXNlbGVjdG9yLS1jbGVhcmFibGUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydzdGFydERhdGVEZWZhdWx0VmFsdWUnXSkge1xuICAgICAgICAgICAgdGhpcy5zdGFydFJhbmdlRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5zdGFydERhdGVEZWZhdWx0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXNbJ2VuZERhdGVEZWZhdWx0VmFsdWUnXSkge1xuICAgICAgICAgICAgdGhpcy5lbmRSYW5nZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZW5kRGF0ZURlZmF1bHRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydpc0Rpc2FibGVkJ10pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmlzRGlzYWJsZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpcnN0RGF0ZUNoYW5nZShlOiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcy5zdGFydFJhbmdlID0gZS52YWx1ZTtcbiAgICAgICAgdGhpcy5maXJzdFNlbGVjdGVkRGF0ZS5lbWl0KGUudmFsdWUpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZXMpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWNvbmREYXRlQ2hhbmdlKGU6IE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50PGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzLmVuZFJhbmdlID0gZS52YWx1ZTtcbiAgICAgICAgdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUuZW1pdChlLnZhbHVlKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGVzKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgb25GaXJzdERhdGVDbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzLnN0YXJ0UmFuZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLmZpcnN0U2VsZWN0ZWREYXRlLmVtaXQobnVsbCk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0ZWREYXRlcyk7XG4gICAgfVxuICAgIG9uU2Vjb25kRGF0ZUNsZWFyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZXMuZW5kUmFuZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZS5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZXMpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWVzOiBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzKTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLnN0YXJ0UmFuZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzdGFydFJhbmdlIG9mIEV1aURhdGVSYW5nZVNlbGVjdG9yRGF0ZXMgbW9kZWwgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMuZW5kUmFuZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdlbmRSYW5nZSBvZiBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzIG1vZGVsIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGFydERhdGVEZWZhdWx0VmFsdWUgPSB2YWx1ZXM/LnN0YXJ0UmFuZ2U7XG4gICAgICAgIHRoaXMuZW5kRGF0ZURlZmF1bHRWYWx1ZSA9IHZhbHVlcz8uZW5kUmFuZ2U7XG4gICAgICAgIHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlcz8uc3RhcnRSYW5nZSk7XG4gICAgICAgIHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXM/LmVuZFJhbmdlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzID0gdmFsdWVzIHx8IHsgc3RhcnRSYW5nZTpudWxsLCBlbmRSYW5nZTogbnVsbCB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIGlmICh0aGlzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgICAgIHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0UmFuZ2VGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICAgIHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KTogdm9pZCA9PiB7fTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBwcml2YXRlIHByb3BhZ2F0ZVRvdWNoZWQgPSAoKTogdm9pZCA9PiB7fTtcbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yIHt7IHN0eWxlQ2xhc3MgfX1cIlxuICAgIGF0dHIuZGF0YS1lMmU9XCJ7eyBlMmVBdHRyIH19XCJcbiAgICBbY2xhc3MuZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3ItLXJlc3BvbnNpdmVdPVwiaXNSZXNwb25zaXZlXCI+XG4gICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0XG4gICAgICAgIFtjbGFzcy5tYXQtZGF0ZS1yYW5nZS1pbnB1dC0tcmVhZC1vbmx5XT1cImlzUmVhZE9ubHlcIlxuICAgICAgICBbY2xhc3MubWF0LWRhdGUtcmFuZ2UtaW5wdXQtLWRpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICBbY2xhc3MubWF0LWRhdGUtcmFuZ2UtaW5wdXQtLWludmFsaWRdPVwiaXNJbnZhbGlkICYmIGlzVG91Y2hlZFwiXG4gICAgICAgIFtyYW5nZVBpY2tlcl09XCJwaWNrZXJcIlxuICAgICAgICBbbWluXT1cIm1pbkRhdGVcIlxuICAgICAgICBbbWF4XT1cIm1heERhdGVcIlxuICAgICAgICBbY29tcGFyaXNvblN0YXJ0XT1cImNvbXBhcmlzb25TdGFydFwiXG4gICAgICAgIFtjb21wYXJpc29uRW5kXT1cImNvbXBhcmlzb25FbmRcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cImV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yX19zdGFydC1kYXRlXCJcbiAgICAgICAgICAgIGV1aUlucHV0VGV4dFxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlzUmVhZE9ubHlcIlxuICAgICAgICAgICAgbWF0U3RhcnREYXRlXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IGZpcnN0SW5wdXRQbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyBmaXJzdElucHV0QXJpYUxhYmVsIH19XCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzdGFydFJhbmdlRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgKGRhdGVJbnB1dCk9XCJvbkZpcnN0RGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtldWlDbGVhcmFibGVdPVwiaXNDbGVhcmFibGVcIlxuICAgICAgICAgICAgKGNsZWFyKT1cIm9uRmlyc3REYXRlQ2xlYXIoKVwiIC8+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJldWktZGF0ZS1yYW5nZS1zZWxlY3Rvcl9fZW5kLWRhdGVcIlxuICAgICAgICAgICAgZXVpSW5wdXRUZXh0XG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiaXNSZWFkT25seVwiXG4gICAgICAgICAgICBtYXRFbmREYXRlXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHNlY29uZElucHV0UGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgc2Vjb25kSW5wdXRBcmlhTGFiZWwgfX1cIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImVuZFJhbmdlRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgKGRhdGVJbnB1dCk9XCJvblNlY29uZERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZXVpQ2xlYXJhYmxlXT1cImlzQ2xlYXJhYmxlXCJcbiAgICAgICAgICAgIChjbGVhcik9XCJvblNlY29uZERhdGVDbGVhcigpXCIgLz5cbiAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciBbc3RhcnRWaWV3XT1cInN0YXJ0Vmlld1wiPiA8L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIWlzUmVhZE9ubHlcIlxuICAgICAgICBjbGFzcz1cImV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yX190b2dnbGVyIGV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yX190b2dnbGVyLXt7ICF0b2dnbGVyTGFiZWwgPyAnaWNvbicgOiAnbGFiZWwnIH19XCJcbiAgICAgICAgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIlxuICAgICAgICBldWlCdXR0b25cbiAgICAgICAgZXVpU2Vjb25kYXJ5XG4gICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtldWlEaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiF0b2dnbGVyTGFiZWwgJiYgdG9nZ2xlckljb25cIiBldWlJY29uIGFyaWEtbGFiZWw9XCJPcGVuIENhbGVuZGFyXCIgaWNvbkNsYXNzPVwie3sgdG9nZ2xlckljb24gfX1cIj48L3NwYW4+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdG9nZ2xlckxhYmVsICYmICF0b2dnbGVySWNvblwiPlxuICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwie3sgdG9nZ2xlckljb25TdmcgfX1cIiBhcmlhLWxhYmVsPVwiT3BlbiBDYWxlbmRhclwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ0b2dnbGVyTGFiZWxcIj57eyB0b2dnbGVyTGFiZWwgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
250
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IvZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IvZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFFSixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQVUzQyxNQUFNLE9BQU8sNkJBQTZCO0lBbUN0QyxZQUNjLGdCQUFrQyxFQUN0QixhQUE0QixFQUN4QyxPQUF5QixFQUNMLE9BQWtCO1FBSHRDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDeEMsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDTCxZQUFPLEdBQVAsT0FBTyxDQUFXO1FBdENwRCxrQkFBYSxHQUE4QixFQUFFLFVBQVUsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1FBR3hFLDBCQUFxQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDMUMsd0JBQW1CLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUVyQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBTyxD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SztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ2lDLGdCQUFnQjtzQkFBdEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDQyxXQUFXO3NCQUFqRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNDLFVBQVU7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0MsVUFBVTtzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDQyxZQUFZO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOZ0NvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VySW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTG9jYWxlU2VydmljZSB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzIH0gZnJvbSAnLi9tb2RlbHMvZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3ItZGF0ZXMubW9kZWwnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktZGF0ZS1yYW5nZS1zZWxlY3RvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS1kYXRlLXJhbmdlLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlEYXRlUmFuZ2VTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEb0NoZWNrIHtcbiAgICBzZWxlY3RlZERhdGVzOiBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzID0geyBzdGFydFJhbmdlOm51bGwsIGVuZFJhbmdlOiBudWxsIH07XG4gICAgcHVibGljIGlzSW52YWxpZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgaXNUb3VjaGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyBzdGFydFJhbmdlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBwdWJsaWMgZW5kUmFuZ2VGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gICAgQE91dHB1dCgpIGZpcnN0U2VsZWN0ZWREYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgQE91dHB1dCgpIHNlY29uZFNlbGVjdGVkRGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQElucHV0KCkgc3R5bGVDbGFzcyA9ICcnO1xuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAnZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3InO1xuICAgIEBJbnB1dCgpIG1pbkRhdGU6IGFueTtcbiAgICBASW5wdXQoKSBtYXhEYXRlOiBhbnk7XG4gICAgQElucHV0KCkgdG9nZ2xlckljb246IHN0cmluZztcbiAgICBASW5wdXQoKSB0b2dnbGVySWNvblN2ZyA9ICdldWktY2FsZW5kYXItb3V0bGluZSc7XG4gICAgQElucHV0KCkgdG9nZ2xlckxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZmlyc3RJbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2Vjb25kSW5wdXRQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGZpcnN0SW5wdXRBcmlhTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBzZWNvbmRJbnB1dEFyaWFMYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN0YXJ0RGF0ZURlZmF1bHRWYWx1ZTogYW55O1xuICAgIEBJbnB1dCgpIGVuZERhdGVEZWZhdWx0VmFsdWU6IGFueTtcbiAgICBASW5wdXQoKSBjb21wYXJpc29uU3RhcnQ6IGFueTtcbiAgICBASW5wdXQoKSBjb21wYXJpc29uRW5kOiBhbnk7XG4gICAgQElucHV0KCkgc3RhcnRWaWV3OiAnbW9udGgnIHwgJ3llYXInIHwgJ211bHRpLXllYXInID0gJ21vbnRoJztcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlpc2xvbmdEYXRlRm9ybWF0ID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0paXNDbGVhcmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlpc1JlYWRPbmx5ID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0paXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KWlzUmVzcG9uc2l2ZSA9IGZhbHNlO1xuXG4gICAgcHJvdGVjdGVkIGhhc0FyaWFSZXF1aXJlZEF0dHJpYnV0ZTogYm9vbGVhbjtcbiAgICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGxvY2FsZVNlcnZpY2U6IExvY2FsZVNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBhZGFwdGVyOiBEYXRlQWRhcHRlcjxhbnk+LFxuICAgICAgICBAU2VsZigpIEBPcHRpb25hbCgpIHByb3RlY3RlZCBjb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRTdGF0ZSgpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRhcHRlci5zZXRMb2NhbGUoc3RhdGUuaWQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5zdGFydFJhbmdlRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGFydERhdGVEZWZhdWx0VmFsdWUsIGRpc2FibGVkOiB0aGlzLmlzRGlzYWJsZWQgfSk7XG4gICAgICAgIHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLmVuZERhdGVEZWZhdWx0VmFsdWUsIGRpc2FibGVkOiB0aGlzLmlzRGlzYWJsZWQgfSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmZpcnN0SW5wdXRQbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnN0cmVhbSgnZXVpLmRhdGVyYW5nZXNlbGVjdG9yLkZJUlNUUElDS0VSU0xBQkVMJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJzdElucHV0UGxhY2Vob2xkZXIgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gYnkgc2V0dGluZyB0aGUgZmlyc3RJbnB1dEFyaWFMYWJlbCB0byBkZC9tbS95eXl5KG9yIHRoZSBkZXNpcmVkIGZvcm1hdCkgdGhlIGZvcm1hdCBjYW4gYmUgYW5ub3VuY2VkIHRvIHRoZSBzY3JlZW4gcmVhZGVyIHVzZXJzIGJlZm9yZSB0aGUgdXNlcnMgc3RhcnQgdHlwaW5nXG4gICAgICAgIGlmICghdGhpcy5maXJzdElucHV0QXJpYUxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgICAgICAgICAuc3RyZWFtKCdldWkuZGF0ZXJhbmdlc2VsZWN0b3IuRklSU1RQSUNLRVJTUExBQ0VIT0xERVInKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpcnN0SW5wdXRBcmlhTGFiZWwgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnNlY29uZElucHV0UGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgICAgICAgICAgIC5zdHJlYW0oJ2V1aS5kYXRlcmFuZ2VzZWxlY3Rvci5TRUNPTkRQSUNLRVJTTEFCRUwnKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY29uZElucHV0UGxhY2Vob2xkZXIgPSByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gYnkgc2V0dGluZyB0aGUgc2Vjb25kSW5wdXRBcmlhTGFiZWwgdG8gZGQvbW0veXl5eShvciB0aGUgZGVzaXJlZCBmb3JtYXQpIHRoZSBmb3JtYXQgY2FuIGJlIGFubm91bmNlZCB0byB0aGUgc2NyZWVuIHJlYWRlciB1c2VycyBiZWZvcmUgdGhlIHVzZXJzIHN0YXJ0IHR5cGluZ1xuICAgICAgICBpZiAoIXRoaXMuc2Vjb25kSW5wdXRBcmlhTGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgICAgICAgICAgICAgIC5zdHJlYW0oJ2V1aS5kYXRlcmFuZ2VzZWxlY3Rvci5TRUNPTkRQSUNLRVJTUExBQ0VIT0xERVInKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlY29uZElucHV0QXJpYUxhYmVsID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dEFyaWFSZXF1aXJlZEF0dHJpYnV0ZSh0aGlzLmNvbnRyb2wpO1xuICAgICAgICB0aGlzLmNvbnRyb2w/LnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJbnB1dEFyaWFSZXF1aXJlZEF0dHJpYnV0ZSh0aGlzLmNvbnRyb2wpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIC8vIG1hcmtzIHRoZSBpbnB1dCBjb250cm9scyBhcyB0b3VjaGVkL2ludmFsaWQgaWYgdGhlIGZvcm0gY29udHJvbCBpcyB0b3VjaGVkL2ludmFsaWRcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8udG91Y2hlZCA/IHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sPy5tYXJrQXNUb3VjaGVkKCkgOiB0aGlzLnN0YXJ0UmFuZ2VGb3JtQ29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8udG91Y2hlZCA/IHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCkgOiB0aGlzLmVuZFJhbmdlRm9ybUNvbnRyb2w/Lm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICAgICAgdGhpcy5jb250cm9sPy50b3VjaGVkID8gKHRoaXMuaXNUb3VjaGVkID0gdHJ1ZSkgOiAodGhpcy5pc1RvdWNoZWQgPSBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/LmludmFsaWQgPyB0aGlzLnN0YXJ0UmFuZ2VGb3JtQ29udHJvbC5zZXRFcnJvcnModGhpcy5jb250cm9sLmVycm9ycykgOiB0aGlzLnN0YXJ0UmFuZ2VGb3JtQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2w/LmludmFsaWQgPyB0aGlzLmVuZFJhbmdlRm9ybUNvbnRyb2wuc2V0RXJyb3JzKHRoaXMuY29udHJvbC5lcnJvcnMpIDogdGhpcy5lbmRSYW5nZUZvcm1Db250cm9sLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbD8uaW52YWxpZCA/ICh0aGlzLmlzSW52YWxpZCA9IHRydWUpIDogKHRoaXMuaXNJbnZhbGlkID0gZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc2xvbmdEYXRlRm9ybWF0KSB7XG4gICAgICAgICAgICB0aGlzLnN0eWxlQ2xhc3MgKz0gJ2V1aS1kYXRlLXJhbmdlLXNlbGVjdG9yLS1sb25nLWRhdGUtZm9ybWF0JztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0NsZWFyYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5zdHlsZUNsYXNzICs9ICdldWktZGF0ZS1yYW5nZS1zZWxlY3Rvci0tY2xlYXJhYmxlJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlc1snc3RhcnREYXRlRGVmYXVsdFZhbHVlJ10pIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRSYW5nZUZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuc3RhcnREYXRlRGVmYXVsdFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydlbmREYXRlRGVmYXVsdFZhbHVlJ10pIHtcbiAgICAgICAgICAgIHRoaXMuZW5kUmFuZ2VGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmVuZERhdGVEZWZhdWx0VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlc1snaXNEaXNhYmxlZCddKSB7XG4gICAgICAgICAgICB0aGlzLnNldERpc2FibGVkU3RhdGUodGhpcy5pc0Rpc2FibGVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25GaXJzdERhdGVDaGFuZ2UoZTogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8YW55Pik6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZXMuc3RhcnRSYW5nZSA9IGUudmFsdWU7XG4gICAgICAgIHRoaXMuZmlyc3RTZWxlY3RlZERhdGUuZW1pdChlLnZhbHVlKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGVzKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVUb3VjaGVkKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2Vjb25kRGF0ZUNoYW5nZShlOiBNYXREYXRlcGlja2VySW5wdXRFdmVudDxhbnk+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcy5lbmRSYW5nZSA9IGUudmFsdWU7XG4gICAgICAgIHRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlLmVtaXQoZS52YWx1ZSk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuc2VsZWN0ZWREYXRlcyk7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCgpO1xuICAgIH1cblxuICAgIG9uRmlyc3REYXRlQ2xlYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcy5zdGFydFJhbmdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5maXJzdFNlbGVjdGVkRGF0ZS5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZXMpO1xuICAgIH1cbiAgICBvblNlY29uZERhdGVDbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVzLmVuZFJhbmdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUuZW1pdChudWxsKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy5zZWxlY3RlZERhdGVzKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlczogRXVpRGF0ZVJhbmdlU2VsZWN0b3JEYXRlcyk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5zdGFydFJhbmdlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignc3RhcnRSYW5nZSBvZiBFdWlEYXRlUmFuZ2VTZWxlY3RvckRhdGVzIG1vZGVsIG11c3QgYmUgZGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZXMgJiYgdmFsdWVzLmVuZFJhbmdlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZW5kUmFuZ2Ugb2YgRXVpRGF0ZVJhbmdlU2VsZWN0b3JEYXRlcyBtb2RlbCBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RhcnREYXRlRGVmYXVsdFZhbHVlID0gdmFsdWVzPy5zdGFydFJhbmdlO1xuICAgICAgICB0aGlzLmVuZERhdGVEZWZhdWx0VmFsdWUgPSB2YWx1ZXM/LmVuZFJhbmdlO1xuICAgICAgICB0aGlzLnN0YXJ0UmFuZ2VGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZXM/LnN0YXJ0UmFuZ2UpO1xuICAgICAgICB0aGlzLmVuZFJhbmdlRm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWVzPy5lbmRSYW5nZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlcyA9IHZhbHVlcyB8fCB7IHN0YXJ0UmFuZ2U6bnVsbCwgZW5kUmFuZ2U6IG51bGwgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0UmFuZ2VGb3JtQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgICAgICB0aGlzLmVuZFJhbmdlRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGFydFJhbmdlRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgICAgICB0aGlzLmVuZFJhbmdlRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb24sIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVUb3VjaGVkID0gKCk6IHZvaWQgPT4ge307XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBgYXJpYS1yZXF1aXJlZGAgYXR0cmlidXRlIG9uIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVJbnB1dEFyaWFSZXF1aXJlZEF0dHJpYnV0ZShjb250cm9sOiBOZ0NvbnRyb2wpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oYXNBcmlhUmVxdWlyZWRBdHRyaWJ1dGUgPSBjb250cm9sPy5jb250cm9sPy5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiZXVpLWRhdGUtcmFuZ2Utc2VsZWN0b3Ige3sgc3R5bGVDbGFzcyB9fVwiXG4gICAgYXR0ci5kYXRhLWUyZT1cInt7IGUyZUF0dHIgfX1cIlxuICAgIFtjbGFzcy5ldWktZGF0ZS1yYW5nZS1zZWxlY3Rvci0tcmVzcG9uc2l2ZV09XCJpc1Jlc3BvbnNpdmVcIj5cbiAgICA8bWF0LWRhdGUtcmFuZ2UtaW5wdXRcbiAgICAgICAgW2NsYXNzLm1hdC1kYXRlLXJhbmdlLWlucHV0LS1yZWFkLW9ubHldPVwiaXNSZWFkT25seVwiXG4gICAgICAgIFtjbGFzcy5tYXQtZGF0ZS1yYW5nZS1pbnB1dC0tZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgIFtjbGFzcy5tYXQtZGF0ZS1yYW5nZS1pbnB1dC0taW52YWxpZF09XCJpc0ludmFsaWQgJiYgaXNUb3VjaGVkXCJcbiAgICAgICAgW3JhbmdlUGlja2VyXT1cInBpY2tlclwiXG4gICAgICAgIFttaW5dPVwibWluRGF0ZVwiXG4gICAgICAgIFttYXhdPVwibWF4RGF0ZVwiXG4gICAgICAgIFtjb21wYXJpc29uU3RhcnRdPVwiY29tcGFyaXNvblN0YXJ0XCJcbiAgICAgICAgW2NvbXBhcmlzb25FbmRdPVwiY29tcGFyaXNvbkVuZFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFN0YXJ0RGF0ZVxuICAgICAgICAgICAgY2xhc3M9XCJldWktZGF0ZS1yYW5nZS1zZWxlY3Rvcl9fc3RhcnQtZGF0ZVwiXG4gICAgICAgICAgICBldWlJbnB1dFRleHRcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgICAgIG1hdFN0YXJ0RGF0ZVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBmaXJzdElucHV0UGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgYXR0ci5hcmlhLWxhYmVsPVwie3sgZmlyc3RJbnB1dEFyaWFMYWJlbCB9fVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImhhc0FyaWFSZXF1aXJlZEF0dHJpYnV0ZSA/ICd0cnVlJyA6IG51bGxcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInN0YXJ0UmFuZ2VGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAoZGF0ZUlucHV0KT1cIm9uRmlyc3REYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgW2V1aUNsZWFyYWJsZV09XCJpc0NsZWFyYWJsZVwiXG4gICAgICAgICAgICAoY2xlYXIpPVwib25GaXJzdERhdGVDbGVhcigpXCIgLz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRFbmREYXRlXG4gICAgICAgICAgICBjbGFzcz1cImV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yX19lbmQtZGF0ZVwiXG4gICAgICAgICAgICBldWlJbnB1dFRleHRcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJpc1JlYWRPbmx5XCJcbiAgICAgICAgICAgIG1hdEVuZERhdGVcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgc2Vjb25kSW5wdXRQbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICBhdHRyLmFyaWEtbGFiZWw9XCJ7eyBzZWNvbmRJbnB1dEFyaWFMYWJlbCB9fVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImhhc0FyaWFSZXF1aXJlZEF0dHJpYnV0ZSA/ICd0cnVlJyA6IG51bGxcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImVuZFJhbmdlRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgKGRhdGVJbnB1dCk9XCJvblNlY29uZERhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZXVpQ2xlYXJhYmxlXT1cImlzQ2xlYXJhYmxlXCJcbiAgICAgICAgICAgIChjbGVhcik9XCJvblNlY29uZERhdGVDbGVhcigpXCIgLz5cbiAgICA8L21hdC1kYXRlLXJhbmdlLWlucHV0PlxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXIgI3BpY2tlciBbc3RhcnRWaWV3XT1cInN0YXJ0Vmlld1wiPiA8L21hdC1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIWlzUmVhZE9ubHlcIlxuICAgICAgICBjbGFzcz1cImV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yX190b2dnbGVyIGV1aS1kYXRlLXJhbmdlLXNlbGVjdG9yX190b2dnbGVyLXt7ICF0b2dnbGVyTGFiZWwgPyAnaWNvbicgOiAnbGFiZWwnIH19XCJcbiAgICAgICAgKGNsaWNrKT1cInBpY2tlci5vcGVuKClcIlxuICAgICAgICBldWlCdXR0b25cbiAgICAgICAgZXVpU2Vjb25kYXJ5XG4gICAgICAgIGV1aUljb25CdXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFtldWlEaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgYXJpYS1oYXNwb3B1cD1cImRpYWxvZ1wiPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiF0b2dnbGVyTGFiZWwgJiYgdG9nZ2xlckljb25cIiBldWlJY29uIGFyaWEtbGFiZWw9XCJPcGVuIENhbGVuZGFyXCIgaWNvbkNsYXNzPVwie3sgdG9nZ2xlckljb24gfX1cIj48L3NwYW4+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhdG9nZ2xlckxhYmVsICYmICF0b2dnbGVySWNvblwiPlxuICAgICAgICAgICAgPGV1aS1pY29uLXN2ZyBpY29uPVwie3sgdG9nZ2xlckljb25TdmcgfX1cIiBhcmlhLWxhYmVsPVwiT3BlbiBDYWxlbmRhclwiPjwvZXVpLWljb24tc3ZnPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJ0b2dnbGVyTGFiZWxcIj57eyB0b2dnbGVyTGFiZWwgfX08L3NwYW4+XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|