@ethlete/cdk 3.19.0 → 3.19.2
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/CHANGELOG.md +14 -0
- package/esm2022/lib/components/button/directives/button/button.directive.mjs +10 -25
- package/esm2022/lib/components/button/directives/query-button/query-button.directive.mjs +8 -17
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.mjs +7 -11
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.mjs +17 -14
- package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.mjs +6 -13
- package/esm2022/lib/components/forms/components/error/components/error/error.component.mjs +7 -9
- package/esm2022/lib/components/forms/components/radio/directives/radio/radio.directive.mjs +6 -8
- package/esm2022/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.mjs +14 -18
- package/esm2022/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.mjs +5 -11
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.mjs +6 -8
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.mjs +14 -18
- package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.mjs +6 -11
- package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +17 -25
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.mjs +20 -24
- package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.mjs +11 -23
- package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +29 -22
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.mjs +7 -15
- package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.mjs +13 -14
- package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.mjs +9 -3
- package/esm2022/lib/components/forms/components/select/directives/select-field/select-field.directive.mjs +3 -4
- package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +6 -8
- package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +18 -41
- package/esm2022/lib/components/forms/directives/input/input.directive.mjs +4 -1
- package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +10 -23
- package/esm2022/lib/components/forms/services/input-state.service.mjs +21 -4
- package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +5 -8
- package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +26 -23
- package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +6 -8
- package/esm2022/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.mjs +11 -4
- package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +9 -3
- package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +4 -1
- package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +9 -3
- package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +4 -1
- package/esm2022/lib/components/picture/picture.component.mjs +7 -4
- package/fesm2022/ethlete-cdk.mjs +255 -356
- package/fesm2022/ethlete-cdk.mjs.map +1 -1
- package/lib/components/button/directives/button/button.directive.d.ts +4 -1
- package/lib/components/button/directives/query-button/query-button.directive.d.ts +4 -1
- package/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.d.ts +4 -1
- package/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.d.ts +11 -6
- package/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.d.ts +6 -4
- package/lib/components/forms/components/error/components/error/error.component.d.ts +4 -1
- package/lib/components/forms/components/radio/directives/radio/radio.directive.d.ts +4 -1
- package/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.d.ts +12 -6
- package/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.d.ts +4 -1
- package/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.d.ts +4 -1
- package/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.d.ts +12 -7
- package/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.d.ts +4 -1
- package/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.d.ts +10 -1
- package/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.d.ts +13 -2
- package/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.d.ts +8 -1
- package/lib/components/forms/components/select/components/select/directives/select/select.directive.d.ts +15 -3
- package/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.d.ts +4 -1
- package/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.d.ts +10 -1
- package/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.d.ts +5 -1
- package/lib/components/forms/components/select/directives/select-field/select-field.directive.d.ts +2 -2
- package/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.d.ts +4 -1
- package/lib/components/forms/components/slider/components/slider/slider.component.d.ts +8 -1
- package/lib/components/forms/directives/input/input.directive.d.ts +21 -19
- package/lib/components/forms/directives/writeable-input/writeable-input.directive.d.ts +4 -1
- package/lib/components/forms/services/input-state.service.d.ts +13 -6
- package/lib/components/forms/utils/decorated-form-field.base.d.ts +4 -1
- package/lib/components/forms/utils/decorated-input.base.d.ts +13 -6
- package/lib/components/masonry/components/masonry/masonry.component.d.ts +4 -1
- package/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.d.ts +4 -1
- package/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.d.ts +5 -1
- package/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.d.ts +1 -0
- package/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.d.ts +5 -1
- package/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.d.ts +1 -0
- package/package.json +3 -3
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { Directive, InjectionToken } from '@angular/core';
|
|
2
|
-
import { createReactiveBindings } from '@ethlete/core';
|
|
1
|
+
import { Directive, ElementRef, InjectionToken, inject } from '@angular/core';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export const SELECT_FIELD_TOKEN = new InjectionToken('ET_SELECT_FIELD_DIRECTIVE_TOKEN');
|
|
5
4
|
export class SelectFieldDirective {
|
|
6
5
|
constructor() {
|
|
7
|
-
this.
|
|
6
|
+
this.elementRef = inject(ElementRef);
|
|
8
7
|
}
|
|
9
8
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SelectFieldDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10
9
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: SelectFieldDirective, isStandalone: true, providers: [{ provide: SELECT_FIELD_TOKEN, useExisting: SelectFieldDirective }], exportAs: ["etSelectField"], ngImport: i0 }); }
|
|
@@ -17,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
|
|
|
17
16
|
exportAs: 'etSelectField',
|
|
18
17
|
}]
|
|
19
18
|
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZpZWxkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9kaXJlY3RpdmVzL3NlbGVjdC1maWVsZC9zZWxlY3QtZmllbGQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTlFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUF1QixpQ0FBaUMsQ0FBQyxDQUFDO0FBTzlHLE1BQU0sT0FBTyxvQkFBb0I7SUFMakM7UUFNVyxlQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztLQUNuRTs4R0FGWSxvQkFBb0I7a0dBQXBCLG9CQUFvQixpQ0FIcEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQzs7MkZBR3BFLG9CQUFvQjtrQkFMaEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxzQkFBc0IsRUFBRSxDQUFDO29CQUMvRSxRQUFRLEVBQUUsZUFBZTtpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdGlvblRva2VuLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IFNFTEVDVF9GSUVMRF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTZWxlY3RGaWVsZERpcmVjdGl2ZT4oJ0VUX1NFTEVDVF9GSUVMRF9ESVJFQ1RJVkVfVE9LRU4nKTtcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogU0VMRUNUX0ZJRUxEX1RPS0VOLCB1c2VFeGlzdGluZzogU2VsZWN0RmllbGREaXJlY3RpdmUgfV0sXG4gIGV4cG9ydEFzOiAnZXRTZWxlY3RGaWVsZCcsXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEZpZWxkRGlyZWN0aXZlIHtcbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG59XG4iXX0=
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Directive, inject, InjectionToken } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { signalHostClasses } from '@ethlete/core';
|
|
3
4
|
import { map } from 'rxjs';
|
|
4
5
|
import { INPUT_TOKEN } from '../../../../directives';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
@@ -8,12 +9,9 @@ export class SlideToggleDirective {
|
|
|
8
9
|
constructor() {
|
|
9
10
|
this.input = inject(INPUT_TOKEN);
|
|
10
11
|
this.checked$ = this.input.value$.pipe(map((value) => !!value));
|
|
11
|
-
this.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}, {
|
|
15
|
-
attribute: ['class.et-slide-toggle--disabled'],
|
|
16
|
-
observable: this.input.disabled$,
|
|
12
|
+
this.hostClassBindings = signalHostClasses({
|
|
13
|
+
'et-slide-toggle--checked': toSignal(this.checked$),
|
|
14
|
+
'et-slide-toggle--disabled': toSignal(this.input.disabled$),
|
|
17
15
|
});
|
|
18
16
|
}
|
|
19
17
|
_onInputInteraction(event) {
|
|
@@ -37,4 +35,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
|
|
|
37
35
|
exportAs: 'etSlideToggle',
|
|
38
36
|
}]
|
|
39
37
|
}] });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGUtdG9nZ2xlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NsaWRlLXRvZ2dsZS9kaXJlY3RpdmVzL3NsaWRlLXRvZ2dsZS9zbGlkZS10b2dnbGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0IsT0FBTyxFQUFFLFdBQVcsRUFBa0IsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFckUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQXVCLGlDQUFpQyxDQUFDLENBQUM7QUFPOUcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFVBQUssR0FBRyxNQUFNLENBQTBCLFdBQVcsQ0FBQyxDQUFDO1FBQ3JELGFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUUzRCxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztZQUM3QywwQkFBMEIsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNuRCwyQkFBMkIsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDNUQsQ0FBQyxDQUFDO0tBZUo7SUFiQyxtQkFBbUIsQ0FBQyxLQUFZO1FBQzlCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7OEdBckJVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGlDQUhwQixDQUFDLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxDQUFDOzsyRkFHcEUsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxXQUFXLHNCQUFzQixFQUFFLENBQUM7b0JBQy9FLFFBQVEsRUFBRSxlQUFlO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBzaWduYWxIb3N0Q2xhc3NlcyB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJTlBVVF9UT0tFTiwgSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzJztcblxuZXhwb3J0IGNvbnN0IFNMSURFX1RPR0dMRV9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTbGlkZVRvZ2dsZURpcmVjdGl2ZT4oJ0VUX1NMSURFX1RPR0dMRV9ESVJFQ1RJVkVfVE9LRU4nKTtcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogU0xJREVfVE9HR0xFX1RPS0VOLCB1c2VFeGlzdGluZzogU2xpZGVUb2dnbGVEaXJlY3RpdmUgfV0sXG4gIGV4cG9ydEFzOiAnZXRTbGlkZVRvZ2dsZScsXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlVG9nZ2xlRGlyZWN0aXZlIHtcbiAgcmVhZG9ubHkgaW5wdXQgPSBpbmplY3Q8SW5wdXREaXJlY3RpdmU8Ym9vbGVhbj4+KElOUFVUX1RPS0VOKTtcbiAgcmVhZG9ubHkgY2hlY2tlZCQgPSB0aGlzLmlucHV0LnZhbHVlJC5waXBlKG1hcCgodmFsdWUpID0+ICEhdmFsdWUpKTtcblxuICByZWFkb25seSBob3N0Q2xhc3NCaW5kaW5ncyA9IHNpZ25hbEhvc3RDbGFzc2VzKHtcbiAgICAnZXQtc2xpZGUtdG9nZ2xlLS1jaGVja2VkJzogdG9TaWduYWwodGhpcy5jaGVja2VkJCksXG4gICAgJ2V0LXNsaWRlLXRvZ2dsZS0tZGlzYWJsZWQnOiB0b1NpZ25hbCh0aGlzLmlucHV0LmRpc2FibGVkJCksXG4gIH0pO1xuXG4gIF9vbklucHV0SW50ZXJhY3Rpb24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLmlucHV0Ll91cGRhdGVWYWx1ZSghdGhpcy5pbnB1dC52YWx1ZSk7XG5cbiAgICB0aGlzLmlucHV0Ll9tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5pbnB1dC5fc2V0U2hvdWxkRGlzcGxheUVycm9yKHRydWUpO1xuICB9XG5cbiAgX2NvbnRyb2xUb3VjaGVkKCkge1xuICAgIHRoaXMuaW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLmlucHV0Ll9zZXRTaG91bGREaXNwbGF5RXJyb3IodHJ1ZSk7XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Directionality } from '@angular/cdk/bidi';
|
|
2
2
|
import { AsyncPipe, DOCUMENT, NgIf } from '@angular/common';
|
|
3
3
|
import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewEncapsulation, booleanAttribute, inject, numberAttribute, } from '@angular/core';
|
|
4
|
-
import {
|
|
4
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { LetDirective, clamp, createDestroy, signalHostAttributes, signalHostClasses } from '@ethlete/core';
|
|
5
6
|
import { BehaviorSubject, combineLatest, filter, fromEvent, map, merge, of, startWith, switchMap, take, takeUntil, tap, withLatestFrom, } from 'rxjs';
|
|
6
7
|
import { INPUT_TOKEN, InputDirective } from '../../../../directives';
|
|
7
8
|
import { FormFieldStateService } from '../../../../services';
|
|
@@ -108,45 +109,21 @@ export class SliderComponent {
|
|
|
108
109
|
this.disableAnimations$ = new BehaviorSubject(false);
|
|
109
110
|
this.touchId$ = new BehaviorSubject(null);
|
|
110
111
|
this.lastPointerEvent$ = new BehaviorSubject(null);
|
|
111
|
-
this.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}, {
|
|
127
|
-
attribute: 'aria-valuemax',
|
|
128
|
-
observable: this._max$.pipe(map((value) => ({ render: true, value }))),
|
|
129
|
-
}, {
|
|
130
|
-
attribute: 'aria-valuetext',
|
|
131
|
-
observable: this.valueText$.pipe(map((value) => ({ render: true, value }))),
|
|
132
|
-
}, {
|
|
133
|
-
attribute: 'tabindex',
|
|
134
|
-
observable: this._input.disabled$.pipe(map((disabled) => ({ render: true, value: disabled ? -1 : 0 }))),
|
|
135
|
-
}, {
|
|
136
|
-
attribute: 'class.et-slider--is-sliding',
|
|
137
|
-
observable: this.isSlidingVia$.pipe(map((isSlidingVia) => !!isSlidingVia)),
|
|
138
|
-
}, {
|
|
139
|
-
attribute: 'class.et-slider--inverted',
|
|
140
|
-
observable: this._inverted$,
|
|
141
|
-
}, {
|
|
142
|
-
attribute: 'class.et-slider--disable-animations',
|
|
143
|
-
observable: this.disableAnimations$,
|
|
144
|
-
}, {
|
|
145
|
-
attribute: 'aria-labeledby',
|
|
146
|
-
observable: this._formFieldStateService.labelId$.pipe(map((labelId) => ({ render: !!labelId, value: labelId ?? '' }))),
|
|
147
|
-
}, {
|
|
148
|
-
attribute: 'aria-describedby',
|
|
149
|
-
observable: this._formFieldStateService.describedBy$.pipe(map((describedBy) => ({ render: !!describedBy, value: describedBy ?? '' }))),
|
|
112
|
+
this.hostClassBindings = signalHostClasses({
|
|
113
|
+
'et-slider--is-sliding': toSignal(this.isSlidingVia$),
|
|
114
|
+
'et-slider--inverted': toSignal(this._inverted$),
|
|
115
|
+
'et-slider--disable-animations': toSignal(this.disableAnimations$),
|
|
116
|
+
});
|
|
117
|
+
this.hostAttributeBindings = signalHostAttributes({
|
|
118
|
+
'aria-orientation': toSignal(this._vertical$.pipe(map((vertical) => (vertical ? 'vertical' : 'horizontal')))),
|
|
119
|
+
'aria-disabled': toSignal(this._input.disabled$),
|
|
120
|
+
'aria-valuenow': toSignal(this._value$),
|
|
121
|
+
'aria-valuemin': toSignal(this._min$),
|
|
122
|
+
'aria-valuemax': toSignal(this._max$),
|
|
123
|
+
'aria-valuetext': toSignal(this.valueText$),
|
|
124
|
+
tabindex: toSignal(this._input.disabled$.pipe(map((disabled) => (disabled ? -1 : 0)))),
|
|
125
|
+
'aria-labeledby': this._formFieldStateService.labelId,
|
|
126
|
+
'aria-describedby': this._formFieldStateService.describedBy,
|
|
150
127
|
});
|
|
151
128
|
this._updateValueFromPosition = (pos, sliderDimensions, shouldInvertMouseCoords) => {
|
|
152
129
|
const offset = this.vertical ? sliderDimensions.top : sliderDimensions.left;
|
|
@@ -351,4 +328,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
|
|
|
351
328
|
type: Input,
|
|
352
329
|
args: [{ transform: booleanAttribute }]
|
|
353
330
|
}] } });
|
|
354
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NsaWRlci9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2xpZGVyL2NvbXBvbmVudHMvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sU0FBUyxFQUNULEdBQUcsRUFDSCxLQUFLLEVBQ0wsRUFBRSxFQUNGLFNBQVMsRUFDVCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEVBQ0gsY0FBYyxHQUNmLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FB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RDBCLFNBQVMsOENBQUUsSUFBSTs7MkZBRzVCLGVBQWU7a0JBZjNCLFNBQVM7K0JBQ0UsV0FBVyxjQUdULElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixLQUFLLEVBQUUsV0FBVzt3QkFDbEIsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsTUFBTSxFQUFFLFdBQVc7cUJBQ3BCLFdBQ1EsQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxrQkFDeEIsQ0FBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQzs4QkFtQnJFLEdBQUc7c0JBRE4sS0FBSztnQkFVRixHQUFHO3NCQUROLEtBQUs7Z0JBVUYsSUFBSTtzQkFEUCxLQUFLO2dCQVVGLFFBQVE7c0JBRFgsS0FBSztnQkFVRixRQUFRO3NCQURYLEtBQUs7Z0JBVUYsa0JBQWtCO3NCQURyQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIERPQ1VNRU5ULCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBpbmplY3QsXG4gIG51bWJlckF0dHJpYnV0ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMZXREaXJlY3RpdmUsIGNsYW1wLCBjcmVhdGVEZXN0cm95LCBjcmVhdGVSZWFjdGl2ZUJpbmRpbmdzIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgZnJvbUV2ZW50LFxuICBtYXAsXG4gIG1lcmdlLFxuICBvZixcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJTlBVVF9UT0tFTiwgSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEZvcm1GaWVsZFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcblxuY29uc3QgaXNUb3VjaEV2ZW50ID0gKGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIFRvdWNoRXZlbnQgPT4ge1xuICByZXR1cm4gZXZlbnQudHlwZVswXSA9PT0gJ3QnO1xufTtcblxuY29uc3QgZ2V0VG91Y2hJZEZvclNsaWRlciA9IChldmVudDogVG91Y2hFdmVudCwgc2xpZGVyOiBIVE1MRWxlbWVudCkgPT4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGV2ZW50LnRvdWNoZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50b3VjaGVzW2ldIS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoc2xpZGVyID09PSB0YXJnZXQgfHwgc2xpZGVyLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBldmVudC50b3VjaGVzW2ldIS5pZGVudGlmaWVyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuY29uc3QgZmluZE1hdGNoaW5nVG91Y2ggPSAodG91Y2hlczogVG91Y2hMaXN0LCBpZDogbnVtYmVyKSA9PiB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG91Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0b3VjaGVzW2ldIS5pZGVudGlmaWVyID09PSBpZCkge1xuICAgICAgcmV0dXJuIHRvdWNoZXNbaV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBnZXRQb2ludGVyUG9zaXRpb25PblBhZ2UgPSAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LCBpZDogbnVtYmVyIHwgbnVsbCkgPT4ge1xuICBsZXQgcG9pbnQ6IHsgY2xpZW50WDogbnVtYmVyOyBjbGllbnRZOiBudW1iZXIgfSB8IG51bGw7XG5cbiAgaWYgKGlzVG91Y2hFdmVudChldmVudCkpIHtcbiAgICBpZiAodHlwZW9mIGlkID09PSAnbnVtYmVyJykge1xuICAgICAgcG9pbnQgPSBmaW5kTWF0Y2hpbmdUb3VjaChldmVudC50b3VjaGVzLCBpZCkgfHwgZmluZE1hdGNoaW5nVG91Y2goZXZlbnQuY2hhbmdlZFRvdWNoZXMsIGlkKSB8fCBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb2ludCA9IGV2ZW50LnRvdWNoZXNbMF0gfHwgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0gfHwgbnVsbDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcG9pbnQgPSBldmVudDtcbiAgfVxuXG4gIHJldHVybiBwb2ludCA/IHsgeDogcG9pbnQuY2xpZW50WCwgeTogcG9pbnQuY2xpZW50WSB9IDogbnVsbDtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LXNsaWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LXNsaWRlcicsXG4gICAgcm9sZTogJ3NsaWRlcicsXG4gICAgJ1tpZF0nOiAnX2lucHV0LmlkJyxcbiAgfSxcbiAgaW1wb3J0czogW0xldERpcmVjdGl2ZSwgQXN5bmNQaXBlLCBOZ0lmXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFt7IGRpcmVjdGl2ZTogSW5wdXREaXJlY3RpdmUsIGlucHV0czogWydhdXRvY29tcGxldGUnXSB9XSxcbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RpclNlcnZpY2UgPSBpbmplY3QoRGlyZWN0aW9uYWxpdHkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21vdXNlRG93biQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJywgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG91Y2hTdGFydCQgPSBmcm9tRXZlbnQ8VG91Y2hFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG91Y2hzdGFydCcsIHtcbiAgICBwYXNzaXZlOiBmYWxzZSxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2tleURvd24kID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9rZXlVcCQgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5dXAnLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lucHV0ID0gaW5qZWN0PElucHV0RGlyZWN0aXZlPG51bWJlcj4+KElOUFVUX1RPS0VOKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUZpZWxkU3RhdGVTZXJ2aWNlID0gaW5qZWN0KEZvcm1GaWVsZFN0YXRlU2VydmljZSk7XG5cbiAgQElucHV0KClcbiAgZ2V0IG1pbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9taW4kLnZhbHVlO1xuICB9XG4gIHNldCBtaW4odmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9taW4kLm5leHQobnVtYmVyQXR0cmlidXRlKHZhbHVlLCAwKSk7XG4gIH1cbiAgcHJpdmF0ZSBfbWluJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXgkLnZhbHVlO1xuICB9XG4gIHNldCBtYXgodmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9tYXgkLm5leHQobnVtYmVyQXR0cmlidXRlKHZhbHVlLCAxMDApKTtcbiAgfVxuICBwcml2YXRlIF9tYXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgxMDApO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzdGVwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXAkLnZhbHVlO1xuICB9XG4gIHNldCBzdGVwKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fc3RlcCQubmV4dChudW1iZXJBdHRyaWJ1dGUodmFsdWUsIDEpKTtcbiAgfVxuICBwcml2YXRlIF9zdGVwJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMSk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92ZXJ0aWNhbCQudmFsdWU7XG4gIH1cbiAgc2V0IHZlcnRpY2FsKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fdmVydGljYWwkLm5leHQoYm9vbGVhbkF0dHJpYnV0ZSh2YWx1ZSkpO1xuICB9XG4gIHByaXZhdGUgX3ZlcnRpY2FsJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpbnZlcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW52ZXJ0ZWQkLnZhbHVlO1xuICB9XG4gIHNldCBpbnZlcnRlZCh2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2ludmVydGVkJC5uZXh0KGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpKTtcbiAgfVxuICBwcml2YXRlIF9pbnZlcnRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgZ2V0IHJlbmRlclZhbHVlVG9vbHRpcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVuZGVyVmFsdWVUb29sdGlwJC52YWx1ZTtcbiAgfVxuICBzZXQgcmVuZGVyVmFsdWVUb29sdGlwKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVuZGVyVmFsdWVUb29sdGlwJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9yZW5kZXJWYWx1ZVRvb2x0aXAkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlyJCA9IHRoaXMuX2RpclNlcnZpY2UuY2hhbmdlLnBpcGUoc3RhcnRXaXRoKHRoaXMuX2RpclNlcnZpY2UudmFsdWUpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9pbnB1dC52YWx1ZSQsIHRoaXMuX21pbiQsIHRoaXMuX21heCRdKS5waXBlKFxuICAgIG1hcCgoW3ZhbHVlLCBtaW4sIG1heF0pID0+IGNsYW1wKHZhbHVlID8/IDAsIG1pbiwgbWF4KSksXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcm91bmRUb0RlY2ltYWwkID0gdGhpcy5fc3RlcCQucGlwZShcbiAgICBtYXAoKHN0ZXApID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLnRvU3RyaW5nKCk7XG5cbiAgICAgIHJldHVybiBzdGVwU3RyaW5nLmluY2x1ZGVzKCcuJykgPyBzdGVwU3RyaW5nLnNwbGl0KCcuJylbMV0hLmxlbmd0aCA6IDA7XG4gICAgfSksXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcGVyY2VudCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl92YWx1ZSQsIHRoaXMuX21pbiQsIHRoaXMuX21heCRdKS5waXBlKFxuICAgIG1hcCgoW3ZhbHVlLCBtaW4sIG1heF0pID0+ICh2YWx1ZSAtIG1pbikgLyAobWF4IC0gbWluKSksXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nob3VsZEludmVydEF4aXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fdmVydGljYWwkLCB0aGlzLl9pbnZlcnRlZCRdKS5waXBlKFxuICAgIG1hcCgoW3ZlcnRpY2FsLCBpbnZlcnRlZF0pID0+ICh2ZXJ0aWNhbCA/ICFpbnZlcnRlZCA6IGludmVydGVkKSksXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nob3VsZEludmVydE1vdXNlQ29vcmRzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX3ZlcnRpY2FsJCxcbiAgICB0aGlzLl9zaG91bGRJbnZlcnRBeGlzJCxcbiAgICB0aGlzLl9kaXIkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3ZlcnRpY2FsLCBzaG91bGRJbnZlcnRBeGlzLCBkaXJdKSA9PiAoZGlyID09PSAncnRsJyAmJiAhdmVydGljYWwgPyAhc2hvdWxkSW52ZXJ0QXhpcyA6IHNob3VsZEludmVydEF4aXMpKSxcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2xpZGVyRGltZW5zaW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZhbHVlVGV4dCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl92YWx1ZSQsIHRoaXMuX3JvdW5kVG9EZWNpbWFsJF0pLnBpcGUoXG4gICAgbWFwKChbdmFsdWUsIHJvdW5kVG9EZWNpbWFsXSkgPT4gdmFsdWUudG9GaXhlZChyb3VuZFRvRGVjaW1hbCkpLFxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFja0JhY2tncm91bmRTdHlsZXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fcGVyY2VudCQsIHRoaXMuX3ZlcnRpY2FsJF0pLnBpcGUoXG4gICAgbWFwKChbcGVyY2VudCwgdmVydGljYWxdKSA9PiB7XG4gICAgICBjb25zdCBzY2FsZSA9IHZlcnRpY2FsID8gYDEsICR7MSAtIHBlcmNlbnR9LCAxYCA6IGAkezEgLSBwZXJjZW50fSwgMSwgMWA7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zZm9ybTogYHNjYWxlM2QoJHtzY2FsZX0pYCxcbiAgICAgIH07XG4gICAgfSksXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYWNrRmlsbFN0eWxlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9wZXJjZW50JCwgdGhpcy5fdmVydGljYWwkXSkucGlwZShcbiAgICBtYXAoKFtwZXJjZW50LCB2ZXJ0aWNhbF0pID0+IHtcbiAgICAgIGNvbnN0IHNjYWxlID0gdmVydGljYWwgPyBgMSwgJHtwZXJjZW50fSwgMWAgOiBgJHtwZXJjZW50fSwgMSwgMWA7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zZm9ybTogYHNjYWxlM2QoJHtzY2FsZX0pYCxcbiAgICAgICAgZGlzcGxheTogcGVyY2VudCA9PT0gMCA/ICdub25lJyA6ICcnLFxuICAgICAgfTtcbiAgICB9KSxcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGh1bWJDb250YWluZXJTdHlsZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fcGVyY2VudCQsXG4gICAgdGhpcy5fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMkLFxuICAgIHRoaXMuX3ZlcnRpY2FsJCxcbiAgICB0aGlzLl9kaXIkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3BlcmNlbnQsIHNob3VsZEludmVydE1vdXNlQ29vcmRzLCB2ZXJ0aWNhbCwgZGlyXSkgPT4ge1xuICAgICAgY29uc3QgYXhpcyA9IHZlcnRpY2FsID8gJ1knIDogJ1gnO1xuICAgICAgY29uc3QgaW52ZXJ0T2Zmc2V0ID0gZGlyID09PSAncnRsJyAmJiAhdmVydGljYWwgPyAhc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMgOiBzaG91bGRJbnZlcnRNb3VzZUNvb3JkcztcbiAgICAgIGNvbnN0IG9mZnNldCA9IChpbnZlcnRPZmZzZXQgPyBwZXJjZW50IDogMSAtIHBlcmNlbnQpICogMTAwO1xuICAgICAgY29uc3Qgc2lnbiA9IHZlcnRpY2FsID8gJy0nIDogZGlyID09PSAncnRsJyA/ICcnIDogJy0nO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGUke2F4aXN9KCR7c2lnbn0ke29mZnNldH0lKWAsXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc1NsaWRpbmdWaWEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwna2V5Ym9hcmQnIHwgJ3BvaW50ZXInIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkaXNhYmxlQW5pbWF0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRvdWNoSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxhc3RQb2ludGVyRXZlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IF9iaW5kaW5ncyA9IGNyZWF0ZVJlYWN0aXZlQmluZGluZ3MoXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnYXJpYS1vcmllbnRhdGlvbicsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl92ZXJ0aWNhbCQucGlwZShcbiAgICAgICAgbWFwKCh2ZXJ0aWNhbCkgPT4gKHtcbiAgICAgICAgICByZW5kZXI6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IHZlcnRpY2FsID8gJ3ZlcnRpY2FsJyA6ICdob3Jpem9udGFsJyxcbiAgICAgICAgfSkpLFxuICAgICAgKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2FyaWEtZGlzYWJsZWQnLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5faW5wdXQuZGlzYWJsZWQkLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnYXJpYS12YWx1ZW5vdycsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl92YWx1ZSQucGlwZShtYXAoKHZhbHVlKSA9PiAoeyByZW5kZXI6IHRydWUsIHZhbHVlIH0pKSksXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdhcmlhLXZhbHVlbWluJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuX21pbiQucGlwZShtYXAoKHZhbHVlKSA9PiAoeyByZW5kZXI6IHRydWUsIHZhbHVlIH0pKSksXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdhcmlhLXZhbHVlbWF4JyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuX21heCQucGlwZShtYXAoKHZhbHVlKSA9PiAoeyByZW5kZXI6IHRydWUsIHZhbHVlIH0pKSksXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdhcmlhLXZhbHVldGV4dCcsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLnZhbHVlVGV4dCQucGlwZShtYXAoKHZhbHVlKSA9PiAoeyByZW5kZXI6IHRydWUsIHZhbHVlIH0pKSksXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICd0YWJpbmRleCcsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9pbnB1dC5kaXNhYmxlZCQucGlwZShtYXAoKGRpc2FibGVkKSA9PiAoeyByZW5kZXI6IHRydWUsIHZhbHVlOiBkaXNhYmxlZCA/IC0xIDogMCB9KSkpLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnY2xhc3MuZXQtc2xpZGVyLS1pcy1zbGlkaW5nJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuaXNTbGlkaW5nVmlhJC5waXBlKG1hcCgoaXNTbGlkaW5nVmlhKSA9PiAhIWlzU2xpZGluZ1ZpYSkpLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnY2xhc3MuZXQtc2xpZGVyLS1pbnZlcnRlZCcsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9pbnZlcnRlZCQsXG4gICAgfSxcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1zbGlkZXItLWRpc2FibGUtYW5pbWF0aW9ucycsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLmRpc2FibGVBbmltYXRpb25zJCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2FyaWEtbGFiZWxlZGJ5JyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuX2Zvcm1GaWVsZFN0YXRlU2VydmljZS5sYWJlbElkJC5waXBlKFxuICAgICAgICBtYXAoKGxhYmVsSWQpID0+ICh7IHJlbmRlcjogISFsYWJlbElkLCB2YWx1ZTogbGFiZWxJZCA/PyAnJyB9KSksXG4gICAgICApLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnYXJpYS1kZXNjcmliZWRieScsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9mb3JtRmllbGRTdGF0ZVNlcnZpY2UuZGVzY3JpYmVkQnkkLnBpcGUoXG4gICAgICAgIG1hcCgoZGVzY3JpYmVkQnkpID0+ICh7IHJlbmRlcjogISFkZXNjcmliZWRCeSwgdmFsdWU6IGRlc2NyaWJlZEJ5ID8/ICcnIH0pKSxcbiAgICAgICksXG4gICAgfSxcbiAgKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBtZXJnZSh0aGlzLl9tb3VzZURvd24kLCB0aGlzLl90b3VjaFN0YXJ0JClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMuX2lucHV0LmRpc2FibGVkO1xuICAgICAgICAgIGNvbnN0IGlzU2xpZGluZyA9ICEhdGhpcy5pc1NsaWRpbmdWaWEkLnZhbHVlO1xuICAgICAgICAgIGNvbnN0IGlzSW52YWxpZE1vdXNlQnV0dG9uID0gIWlzVG91Y2hFdmVudChldmVudCkgJiYgZXZlbnQuYnV0dG9uICE9PSAwO1xuXG4gICAgICAgICAgcmV0dXJuICFpc0Rpc2FibGVkICYmICFpc1NsaWRpbmcgJiYgIWlzSW52YWxpZE1vdXNlQnV0dG9uO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKChldmVudCkgPT5cbiAgICAgICAgICBjb21iaW5lTGF0ZXN0KFtvZihldmVudCksIHRoaXMuX2ZyZXNoU2xpZGVyRGltZW5zaW9ucygpLCB0aGlzLl9zaG91bGRJbnZlcnRNb3VzZUNvb3JkcyRdKS5waXBlKFxuICAgICAgICAgICAgdGFwKChbZXZlbnQsIHNsaWRlckRpbWVuc2lvbnMsIHNob3VsZEludmVydE1vdXNlQ29vcmRzXSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsaXplU2xpZGUoZXZlbnQsIHNsaWRlckRpbWVuc2lvbnMsIHNob3VsZEludmVydE1vdXNlQ29vcmRzKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9rZXlEb3duJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5faW5wdXQuZGlzYWJsZWQ7XG4gICAgICAgICAgY29uc3QgaXNTbGlkaW5nID0gdGhpcy5pc1NsaWRpbmdWaWEkLnZhbHVlICYmIHRoaXMuaXNTbGlkaW5nVmlhJC52YWx1ZSAhPT0gJ2tleWJvYXJkJztcbiAgICAgICAgICBjb25zdCBpc01vZGlmaWVyUHJlc3NlZCA9IGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleTtcblxuICAgICAgICAgIHJldHVybiAhaXNEaXNhYmxlZCAmJiAhaXNTbGlkaW5nICYmICFpc01vZGlmaWVyUHJlc3NlZDtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuX2RpciQpLFxuICAgICAgICB0YXAoKFtldmVudCwgZGlyXSkgPT4gdGhpcy5fdXBkYXRlU2xpZGVyVmlhS2V5Ym9hcmQoZXZlbnQsIGRpcikpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fa2V5VXAkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaXNTbGlkaW5nVmlhJC52YWx1ZSA9PT0gJ2tleWJvYXJkJyksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmlzU2xpZGluZ1ZpYSQubmV4dChudWxsKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBmcm9tRXZlbnQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYmx1cicpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9pbnB1dC5fbWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgIHRoaXMuX2lucHV0Ll9zZXRTaG91bGREaXNwbGF5RXJyb3IodHJ1ZSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVNsaWRlKFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCxcbiAgICBzbGlkZXJEaW1lbnNpb25zOiBET01SZWN0LFxuICAgIHNob3VsZEludmVydE1vdXNlQ29vcmRzOiBib29sZWFuLFxuICApIHtcbiAgICBpZiAoaXNUb3VjaEV2ZW50KGV2ZW50KSkge1xuICAgICAgdGhpcy50b3VjaElkJC5uZXh0KGdldFRvdWNoSWRGb3JTbGlkZXIoZXZlbnQsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpO1xuICAgIH1cblxuICAgIGNvbnN0IHBvaW50ZXJQb3NpdGlvbiA9IGdldFBvaW50ZXJQb3NpdGlvbk9uUGFnZShldmVudCwgdGhpcy50b3VjaElkJC52YWx1ZSk7XG5cbiAgICBpZiAoIXBvaW50ZXJQb3NpdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNTbGlkaW5nVmlhJC5uZXh0KCdwb2ludGVyJyk7XG5cbiAgICB0aGlzLl9iaW5kR2xvYmFsRXZlbnRzKGV2ZW50KTtcbiAgICB0aGlzLl91cGRhdGVWYWx1ZUZyb21Qb3NpdGlvbihwb2ludGVyUG9zaXRpb24sIHNsaWRlckRpbWVuc2lvbnMsIHNob3VsZEludmVydE1vdXNlQ29vcmRzKTtcbiAgICB0aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJztcblxuICAgIGlmIChldmVudC5jYW5jZWxhYmxlKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2JpbmRHbG9iYWxFdmVudHMoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XG4gICAgY29uc3QgaXNUb3VjaCA9IGlzVG91Y2hFdmVudChldmVudCk7XG4gICAgY29uc3QgbW92ZUV2ZW50TmFtZSA9IGlzVG91Y2ggPyAndG91Y2htb3ZlJyA6ICdtb3VzZW1vdmUnO1xuICAgIGNvbnN0IGVuZEV2ZW50TmFtZSA9IGlzVG91Y2ggPyAndG91Y2hlbmQnIDogJ21vdXNldXAnO1xuXG4gICAgY29uc3QgZXZlbnRDb25maWcgPSB7IHBhc3NpdmU6IGZhbHNlIH07XG5cbiAgICBjb25zdCBwb2ludGVyVXAkID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50Pih3aW5kb3csIGVuZEV2ZW50TmFtZSwgZXZlbnRDb25maWcpO1xuICAgIGNvbnN0IHRvdWNoQ2FuY2VsJCA9IGZyb21FdmVudDxUb3VjaEV2ZW50Pih3aW5kb3csICd0b3VjaGNhbmNlbCcsIGV2ZW50Q29uZmlnKTtcbiAgICBjb25zdCB3aW5kb3dCbHVyJCA9IGZyb21FdmVudDxGb2N1c0V2ZW50Pih3aW5kb3csICdibHVyJyk7XG5cbiAgICBjb25zdCBzbGlkZUVuZCQgPSBtZXJnZShwb2ludGVyVXAkLCB0b3VjaENhbmNlbCQsIHdpbmRvd0JsdXIkKTtcblxuICAgIGZyb21FdmVudDxNb3VzZUV2ZW50IHwgVG91Y2hFdmVudD4od2luZG93LCBtb3ZlRXZlbnROYW1lLCBldmVudENvbmZpZylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwoc2xpZGVFbmQkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5fc2xpZGVyRGltZW5zaW9ucyQsIHRoaXMuX3Nob3VsZEludmVydE1vdXNlQ29vcmRzJCksXG4gICAgICAgIHRhcCgoW2V2ZW50LCBzbGlkZXJEaW1lbnNpb25zLCBzaG91bGRJbnZlcnRNb3VzZUNvb3Jkc10pID0+IHtcbiAgICAgICAgICBjb25zdCBwb2ludGVyUG9zaXRpb24gPSBnZXRQb2ludGVyUG9zaXRpb25PblBhZ2UoZXZlbnQsIHRoaXMudG91Y2hJZCQudmFsdWUpO1xuXG4gICAgICAgICAgaWYgKCFwb2ludGVyUG9zaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZUFuaW1hdGlvbnMkLnZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVBbmltYXRpb25zJC5uZXh0KHRydWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX3VwZGF0ZVZhbHVlRnJvbVBvc2l0aW9uKHBvaW50ZXJQb3NpdGlvbiwgc2xpZGVyRGltZW5zaW9ucywgc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHNsaWRlRW5kJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRhcCgoZXZlbnQpID0+IHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuaXNTbGlkaW5nVmlhJC5uZXh0KG51bGwpO1xuICAgICAgICAgIHRoaXMudG91Y2hJZCQubmV4dChudWxsKTtcbiAgICAgICAgICB0aGlzLl9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuY3Vyc29yID0gJyc7XG4gICAgICAgICAgdGhpcy5kaXNhYmxlQW5pbWF0aW9ucyQubmV4dChmYWxzZSk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVmFsdWVGcm9tUG9zaXRpb24gPSAoXG4gICAgcG9zOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0sXG4gICAgc2xpZGVyRGltZW5zaW9uczogRE9NUmVjdCxcbiAgICBzaG91bGRJbnZlcnRNb3VzZUNvb3JkczogYm9vbGVhbixcbiAgKSA9PiB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy52ZXJ0aWNhbCA/IHNsaWRlckRpbWVuc2lvbnMudG9wIDogc2xpZGVyRGltZW5zaW9ucy5sZWZ0O1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLnZlcnRpY2FsID8gc2xpZGVyRGltZW5zaW9ucy5oZWlnaHQgOiBzbGlkZXJEaW1lbnNpb25zLndpZHRoO1xuICAgIGNvbnN0IHBvc0NvbXBvbmVudCA9IHRoaXMudmVydGljYWwgPyBwb3MueSA6IHBvcy54O1xuXG4gICAgbGV0IHBlcmNlbnQgPSBjbGFtcCgocG9zQ29tcG9uZW50IC0gb2Zmc2V0KSAvIHNpemUsIDAsIDEpO1xuXG4gICAgaWYgKHNob3VsZEludmVydE1vdXNlQ29vcmRzKSB7XG4gICAgICBwZXJjZW50ID0gMSAtIHBlcmNlbnQ7XG4gICAgfVxuXG4gICAgaWYgKHBlcmNlbnQgPT09IDApIHtcbiAgICAgIHRoaXMuX2lucHV0Ll91cGRhdGVWYWx1ZSh0aGlzLm1pbik7XG4gICAgfSBlbHNlIGlmIChwZXJjZW50ID09PSAxKSB7XG4gICAgICB0aGlzLl9pbnB1dC5fdXBkYXRlVmFsdWUodGhpcy5tYXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBleGFjdFZhbHVlID0gcGVyY2VudCAqICh0aGlzLm1heCAtIHRoaXMubWluKSArIHRoaXMubWluO1xuICAgICAgY29uc3QgY2xvc2VzdFZhbHVlID0gTWF0aC5yb3VuZCgoZXhhY3RWYWx1ZSAtIHRoaXMubWluKSAvIHRoaXMuc3RlcCkgKiB0aGlzLnN0ZXAgKyB0aGlzLm1pbjtcbiAgICAgIHRoaXMuX2lucHV0Ll91cGRhdGVWYWx1ZShjbGFtcChjbG9zZXN0VmFsdWUsIHRoaXMubWluLCB0aGlzLm1heCkpO1xuICAgIH1cblxuICAgIHRoaXMuX2lucHV0Ll9tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5faW5wdXQuX3NldFNob3VsZERpc3BsYXlFcnJvcih0cnVlKTtcbiAgfTtcblxuICBwcml2YXRlIF91cGRhdGVTbGlkZXJWaWFLZXlib2FyZChldmVudDogS2V5Ym9hcmRFdmVudCwgZGlyOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSAnUGFnZVVwJzpcbiAgICAgICAgdGhpcy5fdXBkYXRlU2xpZGVyVmFsdWVCeSgxMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnUGFnZURvd24nOlxuICAgICAgICB0aGlzLl91cGRhdGVTbGlkZXJWYWx1ZUJ5KC0xMCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgdGhpcy5faW5wdXQuX3VwZGF0ZVZhbHVlKHRoaXMubWF4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdIb21lJzpcbiAgICAgICAgdGhpcy5faW5wdXQuX3VwZGF0ZVZhbHVlKHRoaXMubWluKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICB0aGlzLl91cGRhdGVTbGlkZXJWYWx1ZUJ5KGRpciA9PT0gJ3J0bCcgPyAxIDogLTEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICB0aGlzLl91cGRhdGVTbGlkZXJWYWx1ZUJ5KDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICB0aGlzLl91cGRhdGVTbGlkZXJWYWx1ZUJ5KGRpciA9PT0gJ3J0bCcgPyAtMSA6IDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRlclZhbHVlQnkoLTEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNTbGlkaW5nVmlhJC5uZXh0KCdrZXlib2FyZCcpO1xuXG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLl9pbnB1dC5fc2V0U2hvdWxkRGlzcGxheUVycm9yKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfdXBkYXRlU2xpZGVyVmFsdWVCeShvZmZzZXQ6IG51bWJlcikge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuX2lucHV0LnZhbHVlIHx8IDA7XG4gICAgY29uc3QgdmFsdWUgPSBjbGFtcChjdXJyZW50VmFsdWUgKyB0aGlzLnN0ZXAgKiBvZmZzZXQsIHRoaXMubWluLCB0aGlzLm1heCk7XG5cbiAgICB0aGlzLl9pbnB1dC5fdXBkYXRlVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnJlc2hTbGlkZXJEaW1lbnNpb25zKCkge1xuICAgIHRoaXMuX3NsaWRlckRpbWVuc2lvbnMkLm5leHQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcblxuICAgIHJldHVybiB0aGlzLl9zbGlkZXJEaW1lbnNpb25zJDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImV0LXNsaWRlci10cmFjay1jb250YWluZXJcIj5cbiAgPGRpdlxuICAgICpuZ0lmPVwidHJhY2tCYWNrZ3JvdW5kU3R5bGVzJCB8IGFzeW5jIGFzIHRyYWNrQmFja2dyb3VuZFN0eWxlc1wiXG4gICAgW3N0eWxlLnRyYW5zZm9ybV09XCJ0cmFja0JhY2tncm91bmRTdHlsZXMudHJhbnNmb3JtXCJcbiAgICBjbGFzcz1cImV0LXNsaWRlci10cmFjay1iYWNrZ3JvdW5kXCJcbiAgPjwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJ0cmFja0ZpbGxTdHlsZXMkIHwgYXN5bmMgYXMgdHJhY2tGaWxsU3R5bGVzXCJcbiAgICBbc3R5bGUudHJhbnNmb3JtXT1cInRyYWNrRmlsbFN0eWxlcy50cmFuc2Zvcm1cIlxuICAgIFtzdHlsZS5kaXNwbGF5XT1cInRyYWNrRmlsbFN0eWxlcy5kaXNwbGF5XCJcbiAgICBjbGFzcz1cImV0LXNsaWRlci10cmFjay1maWxsXCJcbiAgPjwvZGl2PlxuPC9kaXY+XG5cbjxkaXZcbiAgKm5nSWY9XCJ0aHVtYkNvbnRhaW5lclN0eWxlcyQgfCBhc3luYyBhcyB0aHVtYkNvbnRhaW5lclN0eWxlc1wiXG4gIFtzdHlsZS50cmFuc2Zvcm1dPVwidGh1bWJDb250YWluZXJTdHlsZXMudHJhbnNmb3JtXCJcbiAgY2xhc3M9XCJldC1zbGlkZXItdGh1bWItY29udGFpbmVyXCJcbj5cbiAgPGRpdiBjbGFzcz1cImV0LXNsaWRlci10aHVtYlwiPlxuICAgIDxkaXYgKm5nSWY9XCJyZW5kZXJWYWx1ZVRvb2x0aXBcIiBjbGFzcz1cImV0LXNsaWRlci12YWx1ZS10b29sdGlwXCI+e3sgdmFsdWVUZXh0JCB8IGFzeW5jIH19PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
331
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NsaWRlci9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2xpZGVyL2NvbXBvbmVudHMvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFFTCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixlQUFlLEdBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsTUFBTSxFQUNOLFNBQVMsRUFDVCxHQUFHLEVBQ0gsS0FBSyxFQUNMLEVBQUUsRUFDRixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxFQUNILGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLE1BQU0s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SUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLEtBQUssRUFBRSxXQUFXO3dCQUNsQixJQUFJLEVBQUUsUUFBUTt3QkFDZCxNQUFNLEVBQUUsV0FBVztxQkFDcEIsV0FDUSxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGtCQUN4QixDQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDOzhCQW1CckUsR0FBRztzQkFETixLQUFLO2dCQVVGLEdBQUc7c0JBRE4sS0FBSztnQkFVRixJQUFJO3NCQURQLEtBQUs7Z0JBVUYsUUFBUTtzQkFEWCxLQUFLO2dCQVVGLFFBQVE7c0JBRFgsS0FBSztnQkFVRixrQkFBa0I7c0JBRHJCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgRE9DVU1FTlQsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTGV0RGlyZWN0aXZlLCBjbGFtcCwgY3JlYXRlRGVzdHJveSwgc2lnbmFsSG9zdEF0dHJpYnV0ZXMsIHNpZ25hbEhvc3RDbGFzc2VzIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgZnJvbUV2ZW50LFxuICBtYXAsXG4gIG1lcmdlLFxuICBvZixcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJTlBVVF9UT0tFTiwgSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEZvcm1GaWVsZFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcblxuY29uc3QgaXNUb3VjaEV2ZW50ID0gKGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIFRvdWNoRXZlbnQgPT4ge1xuICByZXR1cm4gZXZlbnQudHlwZVswXSA9PT0gJ3QnO1xufTtcblxuY29uc3QgZ2V0VG91Y2hJZEZvclNsaWRlciA9IChldmVudDogVG91Y2hFdmVudCwgc2xpZGVyOiBIVE1MRWxlbWVudCkgPT4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGV2ZW50LnRvdWNoZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50b3VjaGVzW2ldIS50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAoc2xpZGVyID09PSB0YXJnZXQgfHwgc2xpZGVyLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgIHJldHVybiBldmVudC50b3VjaGVzW2ldIS5pZGVudGlmaWVyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuY29uc3QgZmluZE1hdGNoaW5nVG91Y2ggPSAodG91Y2hlczogVG91Y2hMaXN0LCBpZDogbnVtYmVyKSA9PiB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG91Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0b3VjaGVzW2ldIS5pZGVudGlmaWVyID09PSBpZCkge1xuICAgICAgcmV0dXJuIHRvdWNoZXNbaV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBnZXRQb2ludGVyUG9zaXRpb25PblBhZ2UgPSAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LCBpZDogbnVtYmVyIHwgbnVsbCkgPT4ge1xuICBsZXQgcG9pbnQ6IHsgY2xpZW50WDogbnVtYmVyOyBjbGllbnRZOiBudW1iZXIgfSB8IG51bGw7XG5cbiAgaWYgKGlzVG91Y2hFdmVudChldmVudCkpIHtcbiAgICBpZiAodHlwZW9mIGlkID09PSAnbnVtYmVyJykge1xuICAgICAgcG9pbnQgPSBmaW5kTWF0Y2hpbmdUb3VjaChldmVudC50b3VjaGVzLCBpZCkgfHwgZmluZE1hdGNoaW5nVG91Y2goZXZlbnQuY2hhbmdlZFRvdWNoZXMsIGlkKSB8fCBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBwb2ludCA9IGV2ZW50LnRvdWNoZXNbMF0gfHwgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0gfHwgbnVsbDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcG9pbnQgPSBldmVudDtcbiAgfVxuXG4gIHJldHVybiBwb2ludCA/IHsgeDogcG9pbnQuY2xpZW50WCwgeTogcG9pbnQuY2xpZW50WSB9IDogbnVsbDtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LXNsaWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LXNsaWRlcicsXG4gICAgcm9sZTogJ3NsaWRlcicsXG4gICAgJ1tpZF0nOiAnX2lucHV0LmlkJyxcbiAgfSxcbiAgaW1wb3J0czogW0xldERpcmVjdGl2ZSwgQXN5bmNQaXBlLCBOZ0lmXSxcbiAgaG9zdERpcmVjdGl2ZXM6IFt7IGRpcmVjdGl2ZTogSW5wdXREaXJlY3RpdmUsIGlucHV0czogWydhdXRvY29tcGxldGUnXSB9XSxcbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RpclNlcnZpY2UgPSBpbmplY3QoRGlyZWN0aW9uYWxpdHkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21vdXNlRG93biQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJywgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG91Y2hTdGFydCQgPSBmcm9tRXZlbnQ8VG91Y2hFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG91Y2hzdGFydCcsIHtcbiAgICBwYXNzaXZlOiBmYWxzZSxcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2tleURvd24kID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9rZXlVcCQgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5dXAnLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lucHV0ID0gaW5qZWN0PElucHV0RGlyZWN0aXZlPG51bWJlcj4+KElOUFVUX1RPS0VOKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUZpZWxkU3RhdGVTZXJ2aWNlID0gaW5qZWN0KEZvcm1GaWVsZFN0YXRlU2VydmljZSk7XG5cbiAgQElucHV0KClcbiAgZ2V0IG1pbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9taW4kLnZhbHVlO1xuICB9XG4gIHNldCBtaW4odmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9taW4kLm5leHQobnVtYmVyQXR0cmlidXRlKHZhbHVlLCAwKSk7XG4gIH1cbiAgcHJpdmF0ZSBfbWluJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMCk7XG5cbiAgQElucHV0KClcbiAgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXgkLnZhbHVlO1xuICB9XG4gIHNldCBtYXgodmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9tYXgkLm5leHQobnVtYmVyQXR0cmlidXRlKHZhbHVlLCAxMDApKTtcbiAgfVxuICBwcml2YXRlIF9tYXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgxMDApO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzdGVwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXAkLnZhbHVlO1xuICB9XG4gIHNldCBzdGVwKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fc3RlcCQubmV4dChudW1iZXJBdHRyaWJ1dGUodmFsdWUsIDEpKTtcbiAgfVxuICBwcml2YXRlIF9zdGVwJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoMSk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92ZXJ0aWNhbCQudmFsdWU7XG4gIH1cbiAgc2V0IHZlcnRpY2FsKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fdmVydGljYWwkLm5leHQoYm9vbGVhbkF0dHJpYnV0ZSh2YWx1ZSkpO1xuICB9XG4gIHByaXZhdGUgX3ZlcnRpY2FsJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpbnZlcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW52ZXJ0ZWQkLnZhbHVlO1xuICB9XG4gIHNldCBpbnZlcnRlZCh2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2ludmVydGVkJC5uZXh0KGJvb2xlYW5BdHRyaWJ1dGUodmFsdWUpKTtcbiAgfVxuICBwcml2YXRlIF9pbnZlcnRlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgZ2V0IHJlbmRlclZhbHVlVG9vbHRpcCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVuZGVyVmFsdWVUb29sdGlwJC52YWx1ZTtcbiAgfVxuICBzZXQgcmVuZGVyVmFsdWVUb29sdGlwKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVuZGVyVmFsdWVUb29sdGlwJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9yZW5kZXJWYWx1ZVRvb2x0aXAkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlyJCA9IHRoaXMuX2RpclNlcnZpY2UuY2hhbmdlLnBpcGUoc3RhcnRXaXRoKHRoaXMuX2RpclNlcnZpY2UudmFsdWUpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9pbnB1dC52YWx1ZSQsIHRoaXMuX21pbiQsIHRoaXMuX21heCRdKS5waXBlKFxuICAgIG1hcCgoW3ZhbHVlLCBtaW4sIG1heF0pID0+IGNsYW1wKHZhbHVlID8/IDAsIG1pbiwgbWF4KSksXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcm91bmRUb0RlY2ltYWwkID0gdGhpcy5fc3RlcCQucGlwZShcbiAgICBtYXAoKHN0ZXApID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLnRvU3RyaW5nKCk7XG5cbiAgICAgIHJldHVybiBzdGVwU3RyaW5nLmluY2x1ZGVzKCcuJykgPyBzdGVwU3RyaW5nLnNwbGl0KCcuJylbMV0hLmxlbmd0aCA6IDA7XG4gICAgfSksXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcGVyY2VudCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl92YWx1ZSQsIHRoaXMuX21pbiQsIHRoaXMuX21heCRdKS5waXBlKFxuICAgIG1hcCgoW3ZhbHVlLCBtaW4sIG1heF0pID0+ICh2YWx1ZSAtIG1pbikgLyAobWF4IC0gbWluKSksXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nob3VsZEludmVydEF4aXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fdmVydGljYWwkLCB0aGlzLl9pbnZlcnRlZCRdKS5waXBlKFxuICAgIG1hcCgoW3ZlcnRpY2FsLCBpbnZlcnRlZF0pID0+ICh2ZXJ0aWNhbCA/ICFpbnZlcnRlZCA6IGludmVydGVkKSksXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nob3VsZEludmVydE1vdXNlQ29vcmRzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX3ZlcnRpY2FsJCxcbiAgICB0aGlzLl9zaG91bGRJbnZlcnRBeGlzJCxcbiAgICB0aGlzLl9kaXIkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3ZlcnRpY2FsLCBzaG91bGRJbnZlcnRBeGlzLCBkaXJdKSA9PiAoZGlyID09PSAncnRsJyAmJiAhdmVydGljYWwgPyAhc2hvdWxkSW52ZXJ0QXhpcyA6IHNob3VsZEludmVydEF4aXMpKSxcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2xpZGVyRGltZW5zaW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHZhbHVlVGV4dCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl92YWx1ZSQsIHRoaXMuX3JvdW5kVG9EZWNpbWFsJF0pLnBpcGUoXG4gICAgbWFwKChbdmFsdWUsIHJvdW5kVG9EZWNpbWFsXSkgPT4gdmFsdWUudG9GaXhlZChyb3VuZFRvRGVjaW1hbCkpLFxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFja0JhY2tncm91bmRTdHlsZXMkID0gY29tYmluZUxhdGVzdChbdGhpcy5fcGVyY2VudCQsIHRoaXMuX3ZlcnRpY2FsJF0pLnBpcGUoXG4gICAgbWFwKChbcGVyY2VudCwgdmVydGljYWxdKSA9PiB7XG4gICAgICBjb25zdCBzY2FsZSA9IHZlcnRpY2FsID8gYDEsICR7MSAtIHBlcmNlbnR9LCAxYCA6IGAkezEgLSBwZXJjZW50fSwgMSwgMWA7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zZm9ybTogYHNjYWxlM2QoJHtzY2FsZX0pYCxcbiAgICAgIH07XG4gICAgfSksXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYWNrRmlsbFN0eWxlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLl9wZXJjZW50JCwgdGhpcy5fdmVydGljYWwkXSkucGlwZShcbiAgICBtYXAoKFtwZXJjZW50LCB2ZXJ0aWNhbF0pID0+IHtcbiAgICAgIGNvbnN0IHNjYWxlID0gdmVydGljYWwgPyBgMSwgJHtwZXJjZW50fSwgMWAgOiBgJHtwZXJjZW50fSwgMSwgMWA7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zZm9ybTogYHNjYWxlM2QoJHtzY2FsZX0pYCxcbiAgICAgICAgZGlzcGxheTogcGVyY2VudCA9PT0gMCA/ICdub25lJyA6ICcnLFxuICAgICAgfTtcbiAgICB9KSxcbiAgKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGh1bWJDb250YWluZXJTdHlsZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fcGVyY2VudCQsXG4gICAgdGhpcy5fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMkLFxuICAgIHRoaXMuX3ZlcnRpY2FsJCxcbiAgICB0aGlzLl9kaXIkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3BlcmNlbnQsIHNob3VsZEludmVydE1vdXNlQ29vcmRzLCB2ZXJ0aWNhbCwgZGlyXSkgPT4ge1xuICAgICAgY29uc3QgYXhpcyA9IHZlcnRpY2FsID8gJ1knIDogJ1gnO1xuICAgICAgY29uc3QgaW52ZXJ0T2Zmc2V0ID0gZGlyID09PSAncnRsJyAmJiAhdmVydGljYWwgPyAhc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMgOiBzaG91bGRJbnZlcnRNb3VzZUNvb3JkcztcbiAgICAgIGNvbnN0IG9mZnNldCA9IChpbnZlcnRPZmZzZXQgPyBwZXJjZW50IDogMSAtIHBlcmNlbnQpICogMTAwO1xuICAgICAgY29uc3Qgc2lnbiA9IHZlcnRpY2FsID8gJy0nIDogZGlyID09PSAncnRsJyA/ICcnIDogJy0nO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGUke2F4aXN9KCR7c2lnbn0ke29mZnNldH0lKWAsXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpc1NsaWRpbmdWaWEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwna2V5Ym9hcmQnIHwgJ3BvaW50ZXInIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBkaXNhYmxlQW5pbWF0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRvdWNoSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxhc3RQb2ludGVyRXZlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGhvc3RDbGFzc0JpbmRpbmdzID0gc2lnbmFsSG9zdENsYXNzZXMoe1xuICAgICdldC1zbGlkZXItLWlzLXNsaWRpbmcnOiB0b1NpZ25hbCh0aGlzLmlzU2xpZGluZ1ZpYSQpLFxuICAgICdldC1zbGlkZXItLWludmVydGVkJzogdG9TaWduYWwodGhpcy5faW52ZXJ0ZWQkKSxcbiAgICAnZXQtc2xpZGVyLS1kaXNhYmxlLWFuaW1hdGlvbnMnOiB0b1NpZ25hbCh0aGlzLmRpc2FibGVBbmltYXRpb25zJCksXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGhvc3RBdHRyaWJ1dGVCaW5kaW5ncyA9IHNpZ25hbEhvc3RBdHRyaWJ1dGVzKHtcbiAgICAnYXJpYS1vcmllbnRhdGlvbic6IHRvU2lnbmFsKHRoaXMuX3ZlcnRpY2FsJC5waXBlKG1hcCgodmVydGljYWwpID0+ICh2ZXJ0aWNhbCA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCcpKSkpLFxuICAgICdhcmlhLWRpc2FibGVkJzogdG9TaWduYWwodGhpcy5faW5wdXQuZGlzYWJsZWQkKSxcbiAgICAnYXJpYS12YWx1ZW5vdyc6IHRvU2lnbmFsKHRoaXMuX3ZhbHVlJCksXG4gICAgJ2FyaWEtdmFsdWVtaW4nOiB0b1NpZ25hbCh0aGlzLl9taW4kKSxcbiAgICAnYXJpYS12YWx1ZW1heCc6IHRvU2lnbmFsKHRoaXMuX21heCQpLFxuICAgICdhcmlhLXZhbHVldGV4dCc6IHRvU2lnbmFsKHRoaXMudmFsdWVUZXh0JCksXG4gICAgdGFiaW5kZXg6IHRvU2lnbmFsKHRoaXMuX2lucHV0LmRpc2FibGVkJC5waXBlKG1hcCgoZGlzYWJsZWQpID0+IChkaXNhYmxlZCA/IC0xIDogMCkpKSksXG4gICAgJ2FyaWEtbGFiZWxlZGJ5JzogdGhpcy5fZm9ybUZpZWxkU3RhdGVTZXJ2aWNlLmxhYmVsSWQsXG4gICAgJ2FyaWEtZGVzY3JpYmVkYnknOiB0aGlzLl9mb3JtRmllbGRTdGF0ZVNlcnZpY2UuZGVzY3JpYmVkQnksXG4gIH0pO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIG1lcmdlKHRoaXMuX21vdXNlRG93biQsIHRoaXMuX3RvdWNoU3RhcnQkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5faW5wdXQuZGlzYWJsZWQ7XG4gICAgICAgICAgY29uc3QgaXNTbGlkaW5nID0gISF0aGlzLmlzU2xpZGluZ1ZpYSQudmFsdWU7XG4gICAgICAgICAgY29uc3QgaXNJbnZhbGlkTW91c2VCdXR0b24gPSAhaXNUb3VjaEV2ZW50KGV2ZW50KSAmJiBldmVudC5idXR0b24gIT09IDA7XG5cbiAgICAgICAgICByZXR1cm4gIWlzRGlzYWJsZWQgJiYgIWlzU2xpZGluZyAmJiAhaXNJbnZhbGlkTW91c2VCdXR0b247XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKGV2ZW50KSA9PlxuICAgICAgICAgIGNvbWJpbmVMYXRlc3QoW29mKGV2ZW50KSwgdGhpcy5fZnJlc2hTbGlkZXJEaW1lbnNpb25zKCksIHRoaXMuX3Nob3VsZEludmVydE1vdXNlQ29vcmRzJF0pLnBpcGUoXG4gICAgICAgICAgICB0YXAoKFtldmVudCwgc2xpZGVyRGltZW5zaW9ucywgc2hvdWxkSW52ZXJ0TW91c2VDb29yZHNdKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVTbGlkZShldmVudCwgc2xpZGVyRGltZW5zaW9ucywgc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX2tleURvd24kXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLl9pbnB1dC5kaXNhYmxlZDtcbiAgICAgICAgICBjb25zdCBpc1NsaWRpbmcgPSB0aGlzLmlzU2xpZGluZ1ZpYSQudmFsdWUgJiYgdGhpcy5pc1NsaWRpbmdWaWEkLnZhbHVlICE9PSAna2V5Ym9hcmQnO1xuICAgICAgICAgIGNvbnN0IGlzTW9kaWZpZXJQcmVzc2VkID0gZXZlbnQuYWx0S2V5IHx8IGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5zaGlmdEtleSB8fCBldmVudC5tZXRhS2V5O1xuXG4gICAgICAgICAgcmV0dXJuICFpc0Rpc2FibGVkICYmICFpc1NsaWRpbmcgJiYgIWlzTW9kaWZpZXJQcmVzc2VkO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5fZGlyJCksXG4gICAgICAgIHRhcCgoW2V2ZW50LCBkaXJdKSA9PiB0aGlzLl91cGRhdGVTbGlkZXJWaWFLZXlib2FyZChldmVudCwgZGlyKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9rZXlVcCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5pc1NsaWRpbmdWaWEkLnZhbHVlID09PSAna2V5Ym9hcmQnKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuaXNTbGlkaW5nVmlhJC5uZXh0KG51bGwpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGZyb21FdmVudCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdibHVyJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2lucHV0Ll9tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy5faW5wdXQuX3NldFNob3VsZERpc3BsYXlFcnJvcih0cnVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0aWFsaXplU2xpZGUoXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LFxuICAgIHNsaWRlckRpbWVuc2lvbnM6IERPTVJlY3QsXG4gICAgc2hvdWxkSW52ZXJ0TW91c2VDb29yZHM6IGJvb2xlYW4sXG4gICkge1xuICAgIGlmIChpc1RvdWNoRXZlbnQoZXZlbnQpKSB7XG4gICAgICB0aGlzLnRvdWNoSWQkLm5leHQoZ2V0VG91Y2hJZEZvclNsaWRlcihldmVudCwgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSk7XG4gICAgfVxuXG4gICAgY29uc3QgcG9pbnRlclBvc2l0aW9uID0gZ2V0UG9pbnRlclBvc2l0aW9uT25QYWdlKGV2ZW50LCB0aGlzLnRvdWNoSWQkLnZhbHVlKTtcblxuICAgIGlmICghcG9pbnRlclBvc2l0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1NsaWRpbmdWaWEkLm5leHQoJ3BvaW50ZXInKTtcblxuICAgIHRoaXMuX2JpbmRHbG9iYWxFdmVudHMoZXZlbnQpO1xuICAgIHRoaXMuX3VwZGF0ZVZhbHVlRnJvbVBvc2l0aW9uKHBvaW50ZXJQb3NpdGlvbiwgc2xpZGVyRGltZW5zaW9ucywgc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMpO1xuICAgIHRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnZ3JhYmJpbmcnO1xuXG4gICAgaWYgKGV2ZW50LmNhbmNlbGFibGUpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYmluZEdsb2JhbEV2ZW50cyhldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBjb25zdCBpc1RvdWNoID0gaXNUb3VjaEV2ZW50KGV2ZW50KTtcbiAgICBjb25zdCBtb3ZlRXZlbnROYW1lID0gaXNUb3VjaCA/ICd0b3VjaG1vdmUnIDogJ21vdXNlbW92ZSc7XG4gICAgY29uc3QgZW5kRXZlbnROYW1lID0gaXNUb3VjaCA/ICd0b3VjaGVuZCcgOiAnbW91c2V1cCc7XG5cbiAgICBjb25zdCBldmVudENvbmZpZyA9IHsgcGFzc2l2ZTogZmFsc2UgfTtcblxuICAgIGNvbnN0IHBvaW50ZXJVcCQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudCB8IFRvdWNoRXZlbnQ+KHdpbmRvdywgZW5kRXZlbnROYW1lLCBldmVudENvbmZpZyk7XG4gICAgY29uc3QgdG91Y2hDYW5jZWwkID0gZnJvbUV2ZW50PFRvdWNoRXZlbnQ+KHdpbmRvdywgJ3RvdWNoY2FuY2VsJywgZXZlbnRDb25maWcpO1xuICAgIGNvbnN0IHdpbmRvd0JsdXIkID0gZnJvbUV2ZW50PEZvY3VzRXZlbnQ+KHdpbmRvdywgJ2JsdXInKTtcblxuICAgIGNvbnN0IHNsaWRlRW5kJCA9IG1lcmdlKHBvaW50ZXJVcCQsIHRvdWNoQ2FuY2VsJCwgd2luZG93Qmx1ciQpO1xuXG4gICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50Pih3aW5kb3csIG1vdmVFdmVudE5hbWUsIGV2ZW50Q29uZmlnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbChzbGlkZUVuZCQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLl9zbGlkZXJEaW1lbnNpb25zJCwgdGhpcy5fc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMkKSxcbiAgICAgICAgdGFwKChbZXZlbnQsIHNsaWRlckRpbWVuc2lvbnMsIHNob3VsZEludmVydE1vdXNlQ29vcmRzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBvaW50ZXJQb3NpdGlvbiA9IGdldFBvaW50ZXJQb3NpdGlvbk9uUGFnZShldmVudCwgdGhpcy50b3VjaElkJC52YWx1ZSk7XG5cbiAgICAgICAgICBpZiAoIXBvaW50ZXJQb3NpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlQW5pbWF0aW9ucyQudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZUFuaW1hdGlvbnMkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fdXBkYXRlVmFsdWVGcm9tUG9zaXRpb24ocG9pbnRlclBvc2l0aW9uLCBzbGlkZXJEaW1lbnNpb25zLCBzaG91bGRJbnZlcnRNb3VzZUNvb3Jkcyk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgc2xpZGVFbmQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFwKChldmVudCkgPT4ge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5pc1NsaWRpbmdWaWEkLm5leHQobnVsbCk7XG4gICAgICAgICAgdGhpcy50b3VjaElkJC5uZXh0KG51bGwpO1xuICAgICAgICAgIHRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnJztcbiAgICAgICAgICB0aGlzLmRpc2FibGVBbmltYXRpb25zJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVWYWx1ZUZyb21Qb3NpdGlvbiA9IChcbiAgICBwb3M6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSxcbiAgICBzbGlkZXJEaW1lbnNpb25zOiBET01SZWN0LFxuICAgIHNob3VsZEludmVydE1vdXNlQ29vcmRzOiBib29sZWFuLFxuICApID0+IHtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnZlcnRpY2FsID8gc2xpZGVyRGltZW5zaW9ucy50b3AgOiBzbGlkZXJEaW1lbnNpb25zLmxlZnQ7XG4gICAgY29uc3Qgc2l6ZSA9IHRoaXMudmVydGljYWwgPyBzbGlkZXJEaW1lbnNpb25zLmhlaWdodCA6IHNsaWRlckRpbWVuc2lvbnMud2lkdGg7XG4gICAgY29uc3QgcG9zQ29tcG9uZW50ID0gdGhpcy52ZXJ0aWNhbCA/IHBvcy55IDogcG9zLng7XG5cbiAgICBsZXQgcGVyY2VudCA9IGNsYW1wKChwb3NDb21wb25lbnQgLSBvZmZzZXQpIC8gc2l6ZSwgMCwgMSk7XG5cbiAgICBpZiAoc2hvdWxkSW52ZXJ0TW91c2VDb29yZHMpIHtcbiAgICAgIHBlcmNlbnQgPSAxIC0gcGVyY2VudDtcbiAgICB9XG5cbiAgICBpZiAocGVyY2VudCA9PT0gMCkge1xuICAgICAgdGhpcy5faW5wdXQuX3VwZGF0ZVZhbHVlKHRoaXMubWluKTtcbiAgICB9IGVsc2UgaWYgKHBlcmNlbnQgPT09IDEpIHtcbiAgICAgIHRoaXMuX2lucHV0Ll91cGRhdGVWYWx1ZSh0aGlzLm1heCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4YWN0VmFsdWUgPSBwZXJjZW50ICogKHRoaXMubWF4IC0gdGhpcy5taW4pICsgdGhpcy5taW47XG4gICAgICBjb25zdCBjbG9zZXN0VmFsdWUgPSBNYXRoLnJvdW5kKChleGFjdFZhbHVlIC0gdGhpcy5taW4pIC8gdGhpcy5zdGVwKSAqIHRoaXMuc3RlcCArIHRoaXMubWluO1xuICAgICAgdGhpcy5faW5wdXQuX3VwZGF0ZVZhbHVlKGNsYW1wKGNsb3Nlc3RWYWx1ZSwgdGhpcy5taW4sIHRoaXMubWF4KSk7XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXQuX21hcmtBc1RvdWNoZWQoKTtcbiAgICB0aGlzLl9pbnB1dC5fc2V0U2hvdWxkRGlzcGxheUVycm9yKHRydWUpO1xuICB9O1xuXG4gIHByaXZhdGUgX3VwZGF0ZVNsaWRlclZpYUtleWJvYXJkKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkaXI6IHN0cmluZykge1xuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICB0aGlzLl91cGRhdGVTbGlkZXJWYWx1ZUJ5KDEwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdQYWdlRG93bic6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRlclZhbHVlQnkoLTEwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgICB0aGlzLl9pbnB1dC5fdXBkYXRlVmFsdWUodGhpcy5tYXgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICB0aGlzLl9pbnB1dC5fdXBkYXRlVmFsdWUodGhpcy5taW4pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRlclZhbHVlQnkoZGlyID09PSAncnRsJyA/IDEgOiAtMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRlclZhbHVlQnkoMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRlclZhbHVlQnkoZGlyID09PSAncnRsJyA/IC0xIDogMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgdGhpcy5fdXBkYXRlU2xpZGVyVmFsdWVCeSgtMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc1NsaWRpbmdWaWEkLm5leHQoJ2tleWJvYXJkJyk7XG5cbiAgICB0aGlzLl9pbnB1dC5fbWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuX2lucHV0Ll9zZXRTaG91bGREaXNwbGF5RXJyb3IodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF91cGRhdGVTbGlkZXJWYWx1ZUJ5KG9mZnNldDogbnVtYmVyKSB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5faW5wdXQudmFsdWUgfHwgMDtcbiAgICBjb25zdCB2YWx1ZSA9IGNsYW1wKGN1cnJlbnRWYWx1ZSArIHRoaXMuc3RlcCAqIG9mZnNldCwgdGhpcy5taW4sIHRoaXMubWF4KTtcblxuICAgIHRoaXMuX2lucHV0Ll91cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9mcmVzaFNsaWRlckRpbWVuc2lvbnMoKSB7XG4gICAgdGhpcy5fc2xpZGVyRGltZW5zaW9ucyQubmV4dCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gICAgcmV0dXJuIHRoaXMuX3NsaWRlckRpbWVuc2lvbnMkO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZXQtc2xpZGVyLXRyYWNrLWNvbnRhaW5lclwiPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJ0cmFja0JhY2tncm91bmRTdHlsZXMkIHwgYXN5bmMgYXMgdHJhY2tCYWNrZ3JvdW5kU3R5bGVzXCJcbiAgICBbc3R5bGUudHJhbnNmb3JtXT1cInRyYWNrQmFja2dyb3VuZFN0eWxlcy50cmFuc2Zvcm1cIlxuICAgIGNsYXNzPVwiZXQtc2xpZGVyLXRyYWNrLWJhY2tncm91bmRcIlxuICA+PC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cInRyYWNrRmlsbFN0eWxlcyQgfCBhc3luYyBhcyB0cmFja0ZpbGxTdHlsZXNcIlxuICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwidHJhY2tGaWxsU3R5bGVzLnRyYW5zZm9ybVwiXG4gICAgW3N0eWxlLmRpc3BsYXldPVwidHJhY2tGaWxsU3R5bGVzLmRpc3BsYXlcIlxuICAgIGNsYXNzPVwiZXQtc2xpZGVyLXRyYWNrLWZpbGxcIlxuICA+PC9kaXY+XG48L2Rpdj5cblxuPGRpdlxuICAqbmdJZj1cInRodW1iQ29udGFpbmVyU3R5bGVzJCB8IGFzeW5jIGFzIHRodW1iQ29udGFpbmVyU3R5bGVzXCJcbiAgW3N0eWxlLnRyYW5zZm9ybV09XCJ0aHVtYkNvbnRhaW5lclN0eWxlcy50cmFuc2Zvcm1cIlxuICBjbGFzcz1cImV0LXNsaWRlci10aHVtYi1jb250YWluZXJcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZXQtc2xpZGVyLXRodW1iXCI+XG4gICAgPGRpdiAqbmdJZj1cInJlbmRlclZhbHVlVG9vbHRpcFwiIGNsYXNzPVwiZXQtc2xpZGVyLXZhbHVlLXRvb2x0aXBcIj57eyB2YWx1ZVRleHQkIHwgYXN5bmMgfX08L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -235,6 +235,9 @@ export class InputDirective {
|
|
|
235
235
|
}
|
|
236
236
|
this._inputStateService.shouldDisplayError$.next(value);
|
|
237
237
|
}
|
|
238
|
+
_setEmptyHelper(value) {
|
|
239
|
+
this._inputStateService.isEmptyHelper$.next(value);
|
|
240
|
+
}
|
|
238
241
|
_detectControlRequiredValidationChanges() {
|
|
239
242
|
const hasRequired = this.control.hasValidator(Validators.required) ?? false;
|
|
240
243
|
const hasRequiredTrue = this.control.hasValidator(Validators.requiredTrue) ?? false;
|
|
@@ -271,4 +274,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
|
|
|
271
274
|
}], placeholder: [{
|
|
272
275
|
type: Input
|
|
273
276
|
}] } });
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2RpcmVjdGl2ZXMvaW5wdXQvaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHL0QsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFpQiwwQkFBMEIsQ0FBQyxDQUFDO0FBRTFGLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQVlyQixNQUFNLE9BQU8sY0FBYztJQWlCekIsSUFBWSxPQUFPO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVB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SCxDQUFDOzhHQTNWVSxjQUFjO2tHQUFkLGNBQWMsaU5BRmQsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDOzsyRkFFdkQsY0FBYztrQkFWMUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztvQkFDckIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxTQUFTO29CQUNuQixJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLFVBQVU7d0JBQ2pCLHFCQUFxQixFQUFFLE1BQU07cUJBQzlCO29CQUNELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLGdCQUFnQixFQUFFLENBQUM7aUJBQ25FOzBFQXFDQyxZQUFZO3NCQURYLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEF1dG9maWxsTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXh0LWZpZWxkJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNyZWF0ZURlc3Ryb3ksIGVxdWFsIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBwYWlyd2lzZSwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkU3RhdGVTZXJ2aWNlLCBJbnB1dFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEVYUE9TRV9JTlBVVF9WQVJTX1RPS0VOIH0gZnJvbSAnLi4vZXhwb3NlLWlucHV0LXZhcnMnO1xuaW1wb3J0IHsgTmF0aXZlSW5wdXRSZWZEaXJlY3RpdmUgfSBmcm9tICcuLi9uYXRpdmUtaW5wdXQtcmVmJztcblxuZXhwb3J0IGNvbnN0IElOUFVUX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPElucHV0RGlyZWN0aXZlPignRVRfSU5QVVRfRElSRUNUSVZFX1RPS0VOJyk7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZXRJbnB1dF0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBleHBvcnRBczogJ2V0SW5wdXQnLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1pbnB1dCcsXG4gICAgJ1thdHRyLmF1dG9jb21wbGV0ZV0nOiAnbnVsbCcsXG4gIH0sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSU5QVVRfVE9LRU4sIHVzZUV4aXN0aW5nOiBJbnB1dERpcmVjdGl2ZSB9XSxcbn0pXG5leHBvcnQgY2xhc3MgSW5wdXREaXJlY3RpdmU8XG4gICAgVCA9IHVua25vd24sXG4gICAgSiBleHRlbmRzIEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MU2VsZWN0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQgPSBIVE1MSW5wdXRFbGVtZW50LFxuICA+XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbnB1dFN0YXRlU2VydmljZSA9IGluamVjdDxJbnB1dFN0YXRlU2VydmljZTxULCBKPj4oSW5wdXRTdGF0ZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtRmllbGRTdGF0ZVNlcnZpY2UgPSBpbmplY3QoRm9ybUZpZWxkU3RhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1dG9maWxsTW9uaXRvciA9IGluamVjdChBdXRvZmlsbE1vbml0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb2N1c01vbml0b3IgPSBpbmplY3QoRm9jdXNNb25pdG9yKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgcHJpdmF0ZSBfaW1wbGljaXRDb250cm9sPzogRm9ybUNvbnRyb2w8dW5rbm93bj47XG5cbiAgcHJpdmF0ZSBnZXQgY29udHJvbCgpIHtcbiAgICBpZiAoIXRoaXMuX25nQ29udHJvbCkge1xuICAgICAgaWYgKCF0aGlzLl9pbXBsaWNpdENvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5faW1wbGljaXRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9pbXBsaWNpdENvbnRyb2w7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9uZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZ0NvbnRyb2wuY29udHJvbCBjYW4gb25seSBiZSBhY2Nlc3NlZCBhZnRlciBjb25zdHJ1Y3Rpb24gcGhhc2UnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbmdDb250cm9sLmNvbnRyb2w7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9pZCA9IGBldC1pbnB1dC0keysrbmV4dFVuaXF1ZUlkfWA7XG5cbiAgQElucHV0KClcbiAgYXV0b2NvbXBsZXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIGdldCB2YWx1ZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnZhbHVlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UudmFsdWUoKTtcbiAgfVxuXG4gIGdldCBsYXN0VXBkYXRlVHlwZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmxhc3RVcGRhdGVUeXBlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBsYXN0VXBkYXRlVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UubGFzdFVwZGF0ZVR5cGUoKTtcbiAgfVxuXG4gIGdldCB2YWx1ZUNoYW5nZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnZhbHVlQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmRpc2FibGVkJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuZGlzYWJsZWQoKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZENoYW5nZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmRpc2FibGVkQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnJlcXVpcmVkJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UucmVxdWlyZWQoKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZENoYW5nZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnJlcXVpcmVkQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBsYWJlbElkJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUZpZWxkU3RhdGVTZXJ2aWNlLmxhYmVsSWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGxhYmVsSWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1GaWVsZFN0YXRlU2VydmljZS5sYWJlbElkKCk7XG4gIH1cblxuICBnZXQgaW52YWxpZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgodGhpcy5jb250cm9sLnN0YXR1cyksXG4gICAgICBtYXAoKHMpID0+IHMgPT09ICdJTlZBTElEJyksXG4gICAgKTtcbiAgfVxuXG4gIGdldCBpbnZhbGlkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wuaW52YWxpZDtcbiAgfVxuXG4gIGdldCB1c2VzSW1wbGljaXRDb250cm9sJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UudXNlc0ltcGxpY2l0Q29udHJvbCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgdXNlc0ltcGxpY2l0Q29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UudXNlc0ltcGxpY2l0Q29udHJvbCgpO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZUlucHV0UmVmJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UubmF0aXZlSW5wdXRSZWYkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZUlucHV0UmVmKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5uYXRpdmVJbnB1dFJlZigpO1xuICB9XG5cbiAgZ2V0IGF1dG9maWxsZWQkKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5hdXRvZmlsbGVkJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBhdXRvZmlsbGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5hdXRvZmlsbGVkKCk7XG4gIH1cblxuICBnZXQgZXJyb3JzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuZXJyb3JzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBlcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmVycm9ycygpO1xuICB9XG5cbiAgZ2V0IHNob3VsZERpc3BsYXlFcnJvciQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnNob3VsZERpc3BsYXlFcnJvciQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgc2hvdWxkRGlzcGxheUVycm9yKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5zaG91bGREaXNwbGF5RXJyb3IoKTtcbiAgfVxuXG4gIGdldCBpc0ZvY3VzZWRWaWEkKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5pc0ZvY3VzZWRWaWEkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzRm9jdXNlZFZpYSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuaXNGb2N1c2VkVmlhKCk7XG4gIH1cblxuICBnZXQgZXJyb3JJZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1GaWVsZFN0YXRlU2VydmljZS5lcnJvcklkJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBlcnJvcklkKCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtRmllbGRTdGF0ZVNlcnZpY2UuZXJyb3JJZCgpO1xuICB9XG5cbiAgcmVhZG9ubHkgZGVzY3JpYmVkQnkkID0gdGhpcy5fZm9ybUZpZWxkU3RhdGVTZXJ2aWNlLmRlc2NyaWJlZEJ5JDtcbiAgcmVhZG9ubHkgb25JbnRlcm5hbFVwZGF0ZSQgPSB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5vbkludGVybmFsVXBkYXRlJDtcbiAgcmVhZG9ubHkgb25FeHRlcm5hbFVwZGF0ZSQgPSB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5vbkV4dGVybmFsVXBkYXRlJDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS51c2VzSW1wbGljaXRDb250cm9sJC5uZXh0KCF0aGlzLl9uZ0NvbnRyb2wpO1xuXG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBleHBvc2VJbnB1dFZhcnNEaXJlY3RpdmUgPSB0aGlzLl9pbmplY3Rvci5nZXQoRVhQT1NFX0lOUFVUX1ZBUlNfVE9LRU4sIG51bGwsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAgIGlmIChleHBvc2VJbnB1dFZhcnNEaXJlY3RpdmUpIHtcbiAgICAgICAgZXhwb3NlSW5wdXRWYXJzRGlyZWN0aXZlLl9tb25pdG9ySW5wdXQodGhpcyBhcyB1bmtub3duIGFzIElucHV0RGlyZWN0aXZlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2xTdGF0ZUNoYW5nZXMkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmNvbnRyb2wuc3RhdHVzKSksXG4gICAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuY29udHJvbC52YWx1ZSkpLFxuICAgIF0pLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICBtYXAoKFtzdGF0dXMsIHZhbHVlXSkgPT4gKHsgc3RhdHVzLCB2YWx1ZSB9KSksXG4gICAgKTtcblxuICAgIGNvbnRyb2xTdGF0ZUNoYW5nZXMkXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuY29udHJvbC5lcnJvcnMpLFxuICAgICAgICBmaWx0ZXIoKGVycm9ycykgPT4gIWVxdWFsKGVycm9ycywgdGhpcy5lcnJvcnMpKSxcbiAgICAgICAgdGFwKChlcnJvcnMpID0+IHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmVycm9ycyQubmV4dChlcnJvcnMpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGNvbnRyb2xTdGF0ZUNoYW5nZXMkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2RldGVjdENvbnRyb2xSZXF1aXJlZFZhbGlkYXRpb25DaGFuZ2VzKCkpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fZGV0ZWN0Q29udHJvbERpc2FibGVkQ2hhbmdlcygpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgID8ucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5sYXN0VXBkYXRlVHlwZSgpID09PSAnaW50ZXJuYWwnKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5sYXN0VXBkYXRlVHlwZSQubmV4dChudWxsKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5sYXN0VXBkYXRlVHlwZSQubmV4dCgnZXh0ZXJuYWwnKTtcblxuICAgICAgICAgIHRoaXMuX3VwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLm5hdGl2ZUlucHV0UmVmJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHBhaXJ3aXNlKCksXG4gICAgICAgIHRhcCgoW3ByZXZpb3VzTmF0aXZlSW5wdXRSZWYsIGN1cnJlbnROYXRpdmVJbnB1dFJlZl0pID0+IHtcbiAgICAgICAgICBpZiAocHJldmlvdXNOYXRpdmVJbnB1dFJlZikge1xuICAgICAgICAgICAgdGhpcy5fYXV0b2ZpbGxNb25pdG9yLnN0b3BNb25pdG9yaW5nKHByZXZpb3VzTmF0aXZlSW5wdXRSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY3VycmVudE5hdGl2ZUlucHV0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9hdXRvZmlsbE1vbml0b3JcbiAgICAgICAgICAgICAgLm1vbml0b3IoY3VycmVudE5hdGl2ZUlucHV0UmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuX3NldEF1dG9maWxsZWQoZXZlbnQuaXNBdXRvZmlsbGVkKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEF1dG9maWxsZWQoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9mb2N1c01vbml0b3JcbiAgICAgIC5tb25pdG9yKHRoaXMuX2VsZW1lbnRSZWYsIHRydWUpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChvcmlnaW4pID0+IHtcbiAgICAgICAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5pc0ZvY3VzZWRWaWEkLm5leHQob3JpZ2luKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uYXRpdmVJbnB1dFJlZikge1xuICAgICAgdGhpcy5fYXV0b2ZpbGxNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMubmF0aXZlSW5wdXRSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBmb2N1c0lucHV0VmlhKG9yaWdpbjogRm9jdXNPcmlnaW4gPSAncHJvZ3JhbScpIHtcbiAgICBjb25zdCBpbnB1dEVsID0gdGhpcy5uYXRpdmVJbnB1dFJlZj8uZWxlbWVudD8ubmF0aXZlRWxlbWVudDtcblxuICAgIGlmIChpbnB1dEVsKSB7XG4gICAgICB0aGlzLl9mb2N1c01vbml0b3IuZm9jdXNWaWEoaW5wdXRFbCwgb3JpZ2luKTtcbiAgICB9XG4gIH1cblxuICBfdXBkYXRlVmFsdWUodmFsdWU6IFQsIG9wdGlvbnM6IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9ID0ge30pIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMudmFsdWUgfHwgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZW1pdEV2ZW50ID0gdHJ1ZSB9ID0gb3B0aW9ucztcblxuICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnZhbHVlJC5uZXh0KHZhbHVlKTtcbiAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5sYXN0VXBkYXRlVHlwZSQubmV4dCgnaW50ZXJuYWwnKTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2wudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5fdmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnZhbHVlQ2hhbmdlJC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBfdXBkYXRlRGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5kaXNhYmxlZCQubmV4dCh2YWx1ZSk7XG4gICAgdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuZGlzYWJsZWRDaGFuZ2UkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgX21hcmtBc1RvdWNoZWQoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5jb250cm9sLnRvdWNoZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5fdG91Y2hlZCgpO1xuICB9XG5cbiAgX3NldE5hdGl2ZUlucHV0UmVmKHJlZjogTmF0aXZlSW5wdXRSZWZEaXJlY3RpdmU8Sj4gfCBudWxsKSB7XG4gICAgaWYgKHRoaXMubmF0aXZlSW5wdXRSZWYgPT09IHJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLm5hdGl2ZUlucHV0UmVmJC5uZXh0KHJlZik7XG4gIH1cblxuICBfc2V0QXV0b2ZpbGxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmF1dG9maWxsZWQgPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuYXV0b2ZpbGxlZCQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBfc2V0U2hvdWxkRGlzcGxheUVycm9yKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuc2hvdWxkRGlzcGxheUVycm9yID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnNob3VsZERpc3BsYXlFcnJvciQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9kZXRlY3RDb250cm9sUmVxdWlyZWRWYWxpZGF0aW9uQ2hhbmdlcygpIHtcbiAgICBjb25zdCBoYXNSZXF1aXJlZCA9IHRoaXMuY29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPz8gZmFsc2U7XG4gICAgY29uc3QgaGFzUmVxdWlyZWRUcnVlID0gdGhpcy5jb250cm9sLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZSkgPz8gZmFsc2U7XG5cbiAgICBjb25zdCBpc1JlcXVpcmVkID0gaGFzUmVxdWlyZWQgfHwgaGFzUmVxdWlyZWRUcnVlO1xuXG4gICAgaWYgKGlzUmVxdWlyZWQgIT09IHRoaXMucmVxdWlyZWQpIHtcbiAgICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnJlcXVpcmVkJC5uZXh0KGlzUmVxdWlyZWQpO1xuICAgICAgdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UucmVxdWlyZWRDaGFuZ2UkLm5leHQoaXNSZXF1aXJlZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGV0ZWN0Q29udHJvbERpc2FibGVkQ2hhbmdlcygpIHtcbiAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5jb250cm9sLmRpc2FibGVkO1xuXG4gICAgaWYgKGlzRGlzYWJsZWQgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmRpc2FibGVkJC5uZXh0KGlzRGlzYWJsZWQpO1xuICAgICAgdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuZGlzYWJsZWRDaGFuZ2UkLm5leHQoaXNEaXNhYmxlZCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2RpcmVjdGl2ZXMvaW5wdXQvaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWMsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHL0QsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFpQiwwQkFBMEIsQ0FBQyxDQUFDO0FBRTFGLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQVlyQixNQUFNLE9BQU8sY0FBYztJQWlCekIsSUFBWSxPQUFPO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVB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QUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7OEdBL1ZVLGNBQWM7a0dBQWQsY0FBYyxpTkFGZCxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLENBQUM7OzJGQUV2RCxjQUFjO2tCQVYxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxXQUFXO29CQUNyQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsVUFBVTt3QkFDakIscUJBQXFCLEVBQUUsTUFBTTtxQkFDOUI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsZ0JBQWdCLEVBQUUsQ0FBQztpQkFDbkU7MEVBcUNDLFlBQVk7c0JBRFgsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQXV0b2ZpbGxNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RleHQtZmllbGQnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY3JlYXRlRGVzdHJveSwgZXF1YWwgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtRmllbGRTdGF0ZVNlcnZpY2UsIElucHV0U3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRVhQT1NFX0lOUFVUX1ZBUlNfVE9LRU4gfSBmcm9tICcuLi9leHBvc2UtaW5wdXQtdmFycyc7XG5pbXBvcnQgeyBOYXRpdmVJbnB1dFJlZkRpcmVjdGl2ZSB9IGZyb20gJy4uL25hdGl2ZS1pbnB1dC1yZWYnO1xuXG5leHBvcnQgY29uc3QgSU5QVVRfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SW5wdXREaXJlY3RpdmU+KCdFVF9JTlBVVF9ESVJFQ1RJVkVfVE9LRU4nKTtcblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tldElucHV0XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGV4cG9ydEFzOiAnZXRJbnB1dCcsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LWlucHV0JyxcbiAgICAnW2F0dHIuYXV0b2NvbXBsZXRlXSc6ICdudWxsJyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJTlBVVF9UT0tFTiwgdXNlRXhpc3Rpbmc6IElucHV0RGlyZWN0aXZlIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dERpcmVjdGl2ZTxcbiAgICBUID0gdW5rbm93bixcbiAgICBKIGV4dGVuZHMgSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudCA9IEhUTUxJbnB1dEVsZW1lbnQsXG4gID5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lucHV0U3RhdGVTZXJ2aWNlID0gaW5qZWN0PElucHV0U3RhdGVTZXJ2aWNlPFQsIEo+PihJbnB1dFN0YXRlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zvcm1GaWVsZFN0YXRlU2VydmljZSA9IGluamVjdChGb3JtRmllbGRTdGF0ZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGNyZWF0ZURlc3Ryb3koKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0b2ZpbGxNb25pdG9yID0gaW5qZWN0KEF1dG9maWxsTW9uaXRvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvY3VzTW9uaXRvciA9IGluamVjdChGb2N1c01vbml0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICBwcml2YXRlIF9pbXBsaWNpdENvbnRyb2w/OiBGb3JtQ29udHJvbDx1bmtub3duPjtcblxuICBwcml2YXRlIGdldCBjb250cm9sKCkge1xuICAgIGlmICghdGhpcy5fbmdDb250cm9sKSB7XG4gICAgICBpZiAoIXRoaXMuX2ltcGxpY2l0Q29udHJvbCkge1xuICAgICAgICB0aGlzLl9pbXBsaWNpdENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuX2ltcGxpY2l0Q29udHJvbDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX25nQ29udHJvbC5jb250cm9sKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05nQ29udHJvbC5jb250cm9sIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIGFmdGVyIGNvbnN0cnVjdGlvbiBwaGFzZScpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9uZ0NvbnRyb2wuY29udHJvbDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lkID0gYGV0LWlucHV0LSR7KytuZXh0VW5pcXVlSWR9YDtcblxuICBASW5wdXQoKVxuICBhdXRvY29tcGxldGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lkO1xuICB9XG5cbiAgZ2V0IHZhbHVlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UudmFsdWUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS52YWx1ZSgpO1xuICB9XG5cbiAgZ2V0IGxhc3RVcGRhdGVUeXBlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UubGFzdFVwZGF0ZVR5cGUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGxhc3RVcGRhdGVUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5sYXN0VXBkYXRlVHlwZSgpO1xuICB9XG5cbiAgZ2V0IHZhbHVlQ2hhbmdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UudmFsdWVDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuZGlzYWJsZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5kaXNhYmxlZCgpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkQ2hhbmdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuZGlzYWJsZWRDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UucmVxdWlyZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5yZXF1aXJlZCgpO1xuICB9XG5cbiAgZ2V0IHJlcXVpcmVkQ2hhbmdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UucmVxdWlyZWRDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGxhYmVsSWQkKCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtRmllbGRTdGF0ZVNlcnZpY2UubGFiZWxJZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgbGFiZWxJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUZpZWxkU3RhdGVTZXJ2aWNlLmxhYmVsSWQoKTtcbiAgfVxuXG4gIGdldCBpbnZhbGlkJCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sLnN0YXR1c0NoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLmNvbnRyb2wuc3RhdHVzKSxcbiAgICAgIG1hcCgocykgPT4gcyA9PT0gJ0lOVkFMSUQnKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IGludmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbC5pbnZhbGlkO1xuICB9XG5cbiAgZ2V0IHVzZXNJbXBsaWNpdENvbnRyb2wkKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS51c2VzSW1wbGljaXRDb250cm9sJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCB1c2VzSW1wbGljaXRDb250cm9sKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS51c2VzSW1wbGljaXRDb250cm9sKCk7XG4gIH1cblxuICBnZXQgbmF0aXZlSW5wdXRSZWYkKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5uYXRpdmVJbnB1dFJlZiQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgbmF0aXZlSW5wdXRSZWYoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLm5hdGl2ZUlucHV0UmVmKCk7XG4gIH1cblxuICBnZXQgYXV0b2ZpbGxlZCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmF1dG9maWxsZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGF1dG9maWxsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmF1dG9maWxsZWQoKTtcbiAgfVxuXG4gIGdldCBlcnJvcnMkKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5lcnJvcnMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGVycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuZXJyb3JzKCk7XG4gIH1cblxuICBnZXQgc2hvdWxkRGlzcGxheUVycm9yJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2Uuc2hvdWxkRGlzcGxheUVycm9yJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBzaG91bGREaXNwbGF5RXJyb3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnNob3VsZERpc3BsYXlFcnJvcigpO1xuICB9XG5cbiAgZ2V0IGlzRm9jdXNlZFZpYSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmlzRm9jdXNlZFZpYSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNGb2N1c2VkVmlhKCkge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5pc0ZvY3VzZWRWaWEoKTtcbiAgfVxuXG4gIGdldCBlcnJvcklkJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUZpZWxkU3RhdGVTZXJ2aWNlLmVycm9ySWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGVycm9ySWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1GaWVsZFN0YXRlU2VydmljZS5lcnJvcklkKCk7XG4gIH1cblxuICByZWFkb25seSBkZXNjcmliZWRCeSQgPSB0aGlzLl9mb3JtRmllbGRTdGF0ZVNlcnZpY2UuZGVzY3JpYmVkQnkkO1xuICByZWFkb25seSBvbkludGVybmFsVXBkYXRlJCA9IHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLm9uSW50ZXJuYWxVcGRhdGUkO1xuICByZWFkb25seSBvbkV4dGVybmFsVXBkYXRlJCA9IHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLm9uRXh0ZXJuYWxVcGRhdGUkO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnVzZXNJbXBsaWNpdENvbnRyb2wkLm5leHQoIXRoaXMuX25nQ29udHJvbCk7XG5cbiAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGV4cG9zZUlucHV0VmFyc0RpcmVjdGl2ZSA9IHRoaXMuX2luamVjdG9yLmdldChFWFBPU0VfSU5QVVRfVkFSU19UT0tFTiwgbnVsbCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgICAgaWYgKGV4cG9zZUlucHV0VmFyc0RpcmVjdGl2ZSkge1xuICAgICAgICBleHBvc2VJbnB1dFZhcnNEaXJlY3RpdmUuX21vbml0b3JJbnB1dCh0aGlzIGFzIHVua25vd24gYXMgSW5wdXREaXJlY3RpdmUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbFN0YXRlQ2hhbmdlcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuY29udHJvbC5zdGF0dXMpKSxcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5jb250cm9sLnZhbHVlKSksXG4gICAgXSkucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgIG1hcCgoW3N0YXR1cywgdmFsdWVdKSA9PiAoeyBzdGF0dXMsIHZhbHVlIH0pKSxcbiAgICApO1xuXG4gICAgY29udHJvbFN0YXRlQ2hhbmdlcyRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5jb250cm9sLmVycm9ycyksXG4gICAgICAgIGZpbHRlcigoZXJyb3JzKSA9PiAhZXF1YWwoZXJyb3JzLCB0aGlzLmVycm9ycykpLFxuICAgICAgICB0YXAoKGVycm9ycykgPT4gdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuZXJyb3JzJC5uZXh0KGVycm9ycykpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgY29udHJvbFN0YXRlQ2hhbmdlcyRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fZGV0ZWN0Q29udHJvbFJlcXVpcmVkVmFsaWRhdGlvbkNoYW5nZXMoKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9kZXRlY3RDb250cm9sRGlzYWJsZWRDaGFuZ2VzKCkpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgPy5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmxhc3RVcGRhdGVUeXBlKCkgPT09ICdpbnRlcm5hbCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmxhc3RVcGRhdGVUeXBlJC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmxhc3RVcGRhdGVUeXBlJC5uZXh0KCdleHRlcm5hbCcpO1xuXG4gICAgICAgICAgdGhpcy5fdXBkYXRlVmFsdWUodmFsdWUpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMubmF0aXZlSW5wdXRSZWYkXG4gICAgICAucGlwZShcbiAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgdGFwKChbcHJldmlvdXNOYXRpdmVJbnB1dFJlZiwgY3VycmVudE5hdGl2ZUlucHV0UmVmXSkgPT4ge1xuICAgICAgICAgIGlmIChwcmV2aW91c05hdGl2ZUlucHV0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLl9hdXRvZmlsbE1vbml0b3Iuc3RvcE1vbml0b3JpbmcocHJldmlvdXNOYXRpdmVJbnB1dFJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjdXJyZW50TmF0aXZlSW5wdXRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuX2F1dG9maWxsTW9uaXRvclxuICAgICAgICAgICAgICAubW9uaXRvcihjdXJyZW50TmF0aXZlSW5wdXRSZWYuZWxlbWVudC5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5fc2V0QXV0b2ZpbGxlZChldmVudC5pc0F1dG9maWxsZWQpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2V0QXV0b2ZpbGxlZChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX2ZvY3VzTW9uaXRvclxuICAgICAgLm1vbml0b3IodGhpcy5fZWxlbWVudFJlZiwgdHJ1ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKG9yaWdpbikgPT4ge1xuICAgICAgICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmlzRm9jdXNlZFZpYSQubmV4dChvcmlnaW4pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5hdGl2ZUlucHV0UmVmKSB7XG4gICAgICB0aGlzLl9hdXRvZmlsbE1vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5uYXRpdmVJbnB1dFJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzSW5wdXRWaWEob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJykge1xuICAgIGNvbnN0IGlucHV0RWwgPSB0aGlzLm5hdGl2ZUlucHV0UmVmPy5lbGVtZW50Py5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYgKGlucHV0RWwpIHtcbiAgICAgIHRoaXMuX2ZvY3VzTW9uaXRvci5mb2N1c1ZpYShpbnB1dEVsLCBvcmlnaW4pO1xuICAgIH1cbiAgfVxuXG4gIF91cGRhdGVWYWx1ZSh2YWx1ZTogVCwgb3B0aW9uczogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0gPSB7fSkge1xuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy52YWx1ZSB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBlbWl0RXZlbnQgPSB0cnVlIH0gPSBvcHRpb25zO1xuXG4gICAgdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UudmFsdWUkLm5leHQodmFsdWUpO1xuICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmxhc3RVcGRhdGVUeXBlJC5uZXh0KCdpbnRlcm5hbCcpO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLl92YWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGVtaXRFdmVudCkge1xuICAgICAgdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UudmFsdWVDaGFuZ2UkLm5leHQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIF91cGRhdGVEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmRpc2FibGVkJC5uZXh0KHZhbHVlKTtcbiAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5kaXNhYmxlZENoYW5nZSQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBfbWFya0FzVG91Y2hlZCgpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmNvbnRyb2wudG91Y2hlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLl90b3VjaGVkKCk7XG4gIH1cblxuICBfc2V0TmF0aXZlSW5wdXRSZWYocmVmOiBOYXRpdmVJbnB1dFJlZkRpcmVjdGl2ZTxKPiB8IG51bGwpIHtcbiAgICBpZiAodGhpcy5uYXRpdmVJbnB1dFJlZiA9PT0gcmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UubmF0aXZlSW5wdXRSZWYkLm5leHQocmVmKTtcbiAgfVxuXG4gIF9zZXRBdXRvZmlsbGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuYXV0b2ZpbGxlZCA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5hdXRvZmlsbGVkJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIF9zZXRTaG91bGREaXNwbGF5RXJyb3IodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5zaG91bGREaXNwbGF5RXJyb3IgPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2Uuc2hvdWxkRGlzcGxheUVycm9yJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIF9zZXRFbXB0eUhlbHBlcih2YWx1ZTogdW5rbm93biB8IE9ic2VydmFibGU8dW5rbm93bj4pIHtcbiAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5pc0VtcHR5SGVscGVyJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RldGVjdENvbnRyb2xSZXF1aXJlZFZhbGlkYXRpb25DaGFuZ2VzKCkge1xuICAgIGNvbnN0IGhhc1JlcXVpcmVkID0gdGhpcy5jb250cm9sLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/PyBmYWxzZTtcbiAgICBjb25zdCBoYXNSZXF1aXJlZFRydWUgPSB0aGlzLmNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlKSA/PyBmYWxzZTtcblxuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBoYXNSZXF1aXJlZCB8fCBoYXNSZXF1aXJlZFRydWU7XG5cbiAgICBpZiAoaXNSZXF1aXJlZCAhPT0gdGhpcy5yZXF1aXJlZCkge1xuICAgICAgdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UucmVxdWlyZWQkLm5leHQoaXNSZXF1aXJlZCk7XG4gICAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5yZXF1aXJlZENoYW5nZSQubmV4dChpc1JlcXVpcmVkKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZXRlY3RDb250cm9sRGlzYWJsZWRDaGFuZ2VzKCkge1xuICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLmNvbnRyb2wuZGlzYWJsZWQ7XG5cbiAgICBpZiAoaXNEaXNhYmxlZCAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuZGlzYWJsZWQkLm5leHQoaXNEaXNhYmxlZCk7XG4gICAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5kaXNhYmxlZENoYW5nZSQubmV4dChpc0Rpc2FibGVkKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Directive, forwardRef, inject, InjectionToken } from '@angular/core';
|
|
2
2
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
-
import {
|
|
3
|
+
import { signalHostClasses } from '@ethlete/core';
|
|
4
4
|
import { InputStateService } from '../../services';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export const WRITEABLE_INPUT_TOKEN = new InjectionToken('ET_WRITEABLE_INPUT_DIRECTIVE_TOKEN');
|
|
@@ -12,27 +12,14 @@ export const WRITEABLE_INPUT_VALUE_ACCESSOR = {
|
|
|
12
12
|
export class WriteableInputDirective {
|
|
13
13
|
constructor() {
|
|
14
14
|
this._inputStateService = inject(InputStateService);
|
|
15
|
-
this.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
observable: this._inputStateService.valueIsTruthy$,
|
|
24
|
-
}, {
|
|
25
|
-
attribute: 'class.et-value-is-falsy',
|
|
26
|
-
observable: this._inputStateService.valueIsFalsy$,
|
|
27
|
-
}, {
|
|
28
|
-
attribute: 'class.et-empty',
|
|
29
|
-
observable: this._inputStateService.valueIsEmpty$,
|
|
30
|
-
}, {
|
|
31
|
-
attribute: 'class.et-should-display-error',
|
|
32
|
-
observable: this._inputStateService.shouldDisplayError$,
|
|
33
|
-
}, {
|
|
34
|
-
attribute: 'class.et-autofilled',
|
|
35
|
-
observable: this._inputStateService.autofilled$,
|
|
15
|
+
this.hostClassBindings = signalHostClasses({
|
|
16
|
+
'et-required': this._inputStateService.required,
|
|
17
|
+
'et-disabled': this._inputStateService.disabled,
|
|
18
|
+
'et-value-is-truthy': this._inputStateService.valueIsTruthy,
|
|
19
|
+
'et-value-is-falsy': this._inputStateService.valueIsFalsy,
|
|
20
|
+
'et-empty': this._inputStateService.valueIsEmpty,
|
|
21
|
+
'et-should-display-error': this._inputStateService.shouldDisplayError,
|
|
22
|
+
'et-autofilled': this._inputStateService.autofilled,
|
|
36
23
|
});
|
|
37
24
|
}
|
|
38
25
|
writeValue(value) {
|
|
@@ -66,4 +53,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
|
|
|
66
53
|
],
|
|
67
54
|
}]
|
|
68
55
|
}] });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVhYmxlLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9kaXJlY3RpdmVzL3dyaXRlYWJsZS1pbnB1dC93cml0ZWFibGUtaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFHbkQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQTBCLG9DQUFvQyxDQUFDLENBQUM7QUFFdkgsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUc7SUFDNUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO0lBQ3RELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQVlGLE1BQU0sT0FBTyx1QkFBdUI7SUFWcEM7UUFXVyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUUvQyxzQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztZQUM3QyxhQUFhLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVE7WUFDL0MsYUFBYSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRO1lBQy9DLG9CQUFvQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhO1lBQzNELG1CQUFtQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZO1lBQ3pELFVBQVUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWTtZQUNoRCx5QkFBeUIsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCO1lBQ3JFLGVBQWUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVTtTQUNwRCxDQUFDLENBQUM7S0FpQko7SUFmQyxVQUFVLENBQUMsS0FBYztRQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBc0I7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQWtCO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxDQUFDOzhHQTNCVSx1QkFBdUI7a0dBQXZCLHVCQUF1QixpQ0FQdkI7WUFDVCw4QkFBOEI7WUFFOUIsaUJBQWlCO1lBQ2pCLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSx1QkFBdUIsRUFBRTtTQUN6RTs7MkZBRVUsdUJBQXVCO2tCQVZuQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixTQUFTLEVBQUU7d0JBQ1QsOEJBQThCO3dCQUU5QixpQkFBaUI7d0JBQ2pCLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFdBQVcseUJBQXlCLEVBQUU7cUJBQ3pFO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBpbmplY3QsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBzaWduYWxIb3N0Q2xhc3NlcyB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBJbnB1dFRvdWNoZWRGbiwgSW5wdXRWYWx1ZUNoYW5nZUZuIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgV1JJVEVBQkxFX0lOUFVUX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFdyaXRlYWJsZUlucHV0RGlyZWN0aXZlPignRVRfV1JJVEVBQkxFX0lOUFVUX0RJUkVDVElWRV9UT0tFTicpO1xuXG5leHBvcnQgY29uc3QgV1JJVEVBQkxFX0lOUFVUX1ZBTFVFX0FDQ0VTU09SID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV3JpdGVhYmxlSW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBleHBvcnRBczogJ2V0V3JpdGVhYmxlSW5wdXQnLFxuICBwcm92aWRlcnM6IFtcbiAgICBXUklURUFCTEVfSU5QVVRfVkFMVUVfQUNDRVNTT1IsXG5cbiAgICBJbnB1dFN0YXRlU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFdSSVRFQUJMRV9JTlBVVF9UT0tFTiwgdXNlRXhpc3Rpbmc6IFdyaXRlYWJsZUlucHV0RGlyZWN0aXZlIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlYWJsZUlucHV0RGlyZWN0aXZlIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICByZWFkb25seSBfaW5wdXRTdGF0ZVNlcnZpY2UgPSBpbmplY3QoSW5wdXRTdGF0ZVNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IGhvc3RDbGFzc0JpbmRpbmdzID0gc2lnbmFsSG9zdENsYXNzZXMoe1xuICAgICdldC1yZXF1aXJlZCc6IHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnJlcXVpcmVkLFxuICAgICdldC1kaXNhYmxlZCc6IHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLmRpc2FibGVkLFxuICAgICdldC12YWx1ZS1pcy10cnV0aHknOiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS52YWx1ZUlzVHJ1dGh5LFxuICAgICdldC12YWx1ZS1pcy1mYWxzeSc6IHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnZhbHVlSXNGYWxzeSxcbiAgICAnZXQtZW1wdHknOiB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS52YWx1ZUlzRW1wdHksXG4gICAgJ2V0LXNob3VsZC1kaXNwbGF5LWVycm9yJzogdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2Uuc2hvdWxkRGlzcGxheUVycm9yLFxuICAgICdldC1hdXRvZmlsbGVkJzogdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuYXV0b2ZpbGxlZCxcbiAgfSk7XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLnZhbHVlJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IElucHV0VmFsdWVDaGFuZ2VGbikge1xuICAgIHRoaXMuX2lucHV0U3RhdGVTZXJ2aWNlLl92YWx1ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IElucHV0VG91Y2hlZEZuKSB7XG4gICAgdGhpcy5faW5wdXRTdGF0ZVNlcnZpY2UuX3RvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbnB1dFN0YXRlU2VydmljZS5kaXNhYmxlZCQubmV4dChpc0Rpc2FibGVkKTtcbiAgfVxufVxuIl19
|