@koobiq/components 18.39.2 → 18.39.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/highlight/highlight.pipe.d.ts +2 -0
- package/core/option/action.d.ts +5 -6
- package/datepicker/datepicker-input.directive.d.ts +6 -1
- package/esm2022/core/highlight/highlight.pipe.mjs +23 -5
- package/esm2022/core/option/action.mjs +21 -22
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/datepicker-input.directive.mjs +9 -2
- package/esm2022/datepicker/datepicker.component.mjs +2 -2
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +3 -2
- package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +3 -3
- package/esm2022/form-field/cleaner.mjs +3 -3
- package/esm2022/form-field/fieldset.mjs +2 -2
- package/esm2022/form-field/form-field.mjs +2 -2
- package/esm2022/form-field/password-toggle.mjs +3 -3
- package/esm2022/icon/icon-button.component.mjs +2 -2
- package/esm2022/inline-edit/inline-edit.mjs +4 -4
- package/esm2022/list/list-selection.component.mjs +12 -2
- package/esm2022/popover/popover-confirm.component.mjs +3 -3
- package/esm2022/popover/popover.component.mjs +3 -3
- package/esm2022/search-expandable/search-expandable.mjs +50 -23
- package/esm2022/select/select.component.mjs +7 -4
- package/esm2022/tags/tag-input.mjs +7 -6
- package/esm2022/tags/tag-list.component.mjs +11 -3
- package/esm2022/tags/tag.component.mjs +9 -3
- package/fesm2022/koobiq-components-core.mjs +42 -26
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +9 -2
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +2 -1
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +2 -2
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +8 -8
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +2 -2
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +3 -3
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +11 -1
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +4 -4
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +49 -22
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +6 -3
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +24 -9
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/form-field/_form-field-theme.scss +2 -2
- package/form-field/form-field.scss +0 -1
- package/icon/icon-button.scss +5 -4
- package/inline-edit/inline-edit-tokens.scss +1 -1
- package/inline-edit/inline-edit.d.ts +2 -2
- package/inline-edit/inline-edit.scss +1 -1
- package/list/list-selection.component.d.ts +1 -0
- package/package.json +4 -4
- package/popover/_popover-theme.scss +1 -1
- package/schematics/ng-add/index.js +2 -2
- package/search-expandable/search-expandable.d.ts +19 -4
- package/select/select.component.d.ts +2 -1
- package/tags/tag-list.component.d.ts +7 -1
- package/tags/tag.component.d.ts +2 -0
|
@@ -95,6 +95,10 @@ export class KbqTagEditInput {
|
|
|
95
95
|
this.tag = inject(KbqTag);
|
|
96
96
|
}
|
|
97
97
|
/** @docs-private */
|
|
98
|
+
handleClick(event) {
|
|
99
|
+
event.stopPropagation();
|
|
100
|
+
}
|
|
101
|
+
/** @docs-private */
|
|
98
102
|
handleKeydown(event) {
|
|
99
103
|
switch (event.keyCode) {
|
|
100
104
|
case ESCAPE: {
|
|
@@ -118,7 +122,7 @@ export class KbqTagEditInput {
|
|
|
118
122
|
}
|
|
119
123
|
}
|
|
120
124
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqTagEditInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
121
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqTagEditInput, isStandalone: true, selector: "[kbqTagEditInput]", host: { listeners: { "keydown": "handleKeydown($event)" }, classAttribute: "kbq-tag-edit-input" }, exportAs: ["kbqTagEditInput"], hostDirectives: [{ directive: i1.KbqFieldSizingContent }], ngImport: i0 }); }
|
|
125
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqTagEditInput, isStandalone: true, selector: "[kbqTagEditInput]", host: { listeners: { "keydown": "handleKeydown($event)", "click": "handleClick($event)" }, classAttribute: "kbq-tag-edit-input" }, exportAs: ["kbqTagEditInput"], hostDirectives: [{ directive: i1.KbqFieldSizingContent }], ngImport: i0 }); }
|
|
122
126
|
}
|
|
123
127
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqTagEditInput, decorators: [{
|
|
124
128
|
type: Directive,
|
|
@@ -128,7 +132,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
128
132
|
exportAs: 'kbqTagEditInput',
|
|
129
133
|
host: {
|
|
130
134
|
class: 'kbq-tag-edit-input',
|
|
131
|
-
'(keydown)': 'handleKeydown($event)'
|
|
135
|
+
'(keydown)': 'handleKeydown($event)',
|
|
136
|
+
'(click)': 'handleClick($event)'
|
|
132
137
|
},
|
|
133
138
|
hostDirectives: [KbqFieldSizingContent]
|
|
134
139
|
}]
|
|
@@ -413,6 +418,7 @@ export class KbqTag extends KbqColorDirective {
|
|
|
413
418
|
const input = this.editInputElementRef?.nativeElement;
|
|
414
419
|
if (!input)
|
|
415
420
|
throw getTagEditInputMissingError();
|
|
421
|
+
this.focusMonitor.focusVia(this.elementRef.nativeElement, 'keyboard');
|
|
416
422
|
input.select();
|
|
417
423
|
});
|
|
418
424
|
}
|
|
@@ -644,4 +650,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
644
650
|
type: Inject,
|
|
645
651
|
args: [forwardRef(() => KbqTag)]
|
|
646
652
|
}] }] });
|
|
647
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdGFncy90YWcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEYsT0FBTyxFQUdILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUNILE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFFeEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFTbEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JB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QzFCLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsc0NBQXNDO3dCQUM3QyxpQkFBaUIsRUFBRSxJQUFJO3dCQUN2QixTQUFTLEVBQUUscUJBQXFCO3dCQUNoQyxTQUFTLEVBQUUsZUFBZTtxQkFDN0I7aUJBQ0o7OzBCQUVnQixNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ2RrRHJhZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQkFDS1NQQUNFLCBERUxFVEUsIEVOVEVSLCBFU0NBUEUsIEYyLCBTUEFDRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBzaWduYWwsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSUZvY3VzYWJsZU9wdGlvbiB9IGZyb20gJ0Brb29iaXEvY2RrL2ExMXknO1xuaW1wb3J0IHsgaGFzTW9kaWZpZXJLZXkgfSBmcm9tICdAa29vYmlxL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIGlzTnVsbCxcbiAgICBLQlFfVElUTEVfVEVYVF9SRUYsXG4gICAgS2JxQ29sb3JEaXJlY3RpdmUsXG4gICAgS2JxQ29tcG9uZW50Q29sb3JzLFxuICAgIEticUZpZWxkU2l6aW5nQ29udGVudCxcbiAgICBLYnFUaXRsZVRleHRSZWZcbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxSWNvbiB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEticVRhZ0xpc3QgfSBmcm9tICcuL3RhZy1saXN0LmNvbXBvbmVudCc7XG5cbi8qKlxuICogRXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgS2JxVGFnLlxuICovXG5leHBvcnQgdHlwZSBLYnFUYWdFdmVudCA9IHtcbiAgICB0YWc6IEticVRhZztcbn07XG5cbi8qKlxuICogRXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgS2JxVGFnIHdoZW4gdGhlIHRhZyBpcyBlZGl0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBLYnFUYWdFZGl0Q2hhbmdlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHRhZzogS2JxVGFnLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogJ3N0YXJ0JyB8ICdzdWJtaXQnIHwgJ2NhbmNlbCcsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSByZWFzb246IHN0cmluZ1xuICAgICkge31cbn1cblxuLyoqIEV2ZW50IG9iamVjdCBlbWl0dGVkIGJ5IEticVRhZyB3aGVuIHNlbGVjdGVkIG9yIGRlc2VsZWN0ZWQuICovXG5leHBvcnQgY2xhc3MgS2JxVGFnU2VsZWN0aW9uQ2hhbmdlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHNvdXJjZTogS2JxVGFnLFxuICAgICAgICBwdWJsaWMgc2VsZWN0ZWQ6IGJvb2xlYW4sXG4gICAgICAgIHB1YmxpYyBpc1VzZXJJbnB1dCA9IGZhbHNlXG4gICAgKSB7fVxufVxuXG4vKipcbiAqIEV2ZW50IG9iamVjdCBlbWl0dGVkIHdoZW4gdGhlIEticVRhZyBpcyBmb2N1c2VkLlxuICovXG5leHBvcnQgdHlwZSBLYnFUYWdGb2N1c0V2ZW50ID0gS2JxVGFnRXZlbnQgJiB7XG4gICAgb3JpZ2luOiBGb2N1c09yaWdpbjtcbn07XG5cbmNvbnN0IFRBR19BVFRSSUJVVEVfTkFNRVMgPSBbJ2ticS1iYXNpYy10YWcnXTtcblxuY29uc3QgZ2V0VGFnRWRpdElucHV0TWlzc2luZ0Vycm9yID0gKCk6IEVycm9yID0+IHtcbiAgICByZXR1cm4gRXJyb3IoJ0VkaXRhYmxlIGticS10YWcgbXVzdCBjb250YWluIGEgS2JxVGFnRWRpdElucHV0LicpO1xufTtcblxuLyoqXG4gKiBPYmplY3QgcGFzc2VkIHRvIHRoZSBkcmFnIGRhdGEgZXZlbnQgd2hlbiBhIHRhZyBpcyBiZWluZyBkcmFnZ2VkLlxuICpcbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IHR5cGUgS2JxVGFnRHJhZ0RhdGEgPSBLYnFUYWdFdmVudDtcblxuLyoqXG4gKiBEdW1teSBkaXJlY3RpdmUgdG8gYWRkIENTUyBjbGFzcyB0byB0YWcgYXZhdGFyLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWctYXZhdGFyLCBba2JxVGFnQXZhdGFyXScsXG4gICAgaG9zdDogeyBjbGFzczogJ2ticS10YWctYXZhdGFyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEticVRhZ0F2YXRhciB7fVxuXG4vKipcbiAqIER1bW15IGRpcmVjdGl2ZSB0byBhZGQgQ1NTIGNsYXNzIHRvIHRhZyB0cmFpbGluZyBpY29uLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWctdHJhaWxpbmctaWNvbiwgW2ticVRhZ1RyYWlsaW5nSWNvbl0nLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdrYnEtdGFnLXRyYWlsaW5nLWljb24nIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxVGFnVHJhaWxpbmdJY29uIHt9XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIGFkZCBzdWJtaXQgYmVoYXZpb3IgZm9yIHRoZSBlZGl0YWJsZSB0YWcuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdba2JxVGFnRWRpdFN1Ym1pdF0nLFxuICAgIGV4cG9ydEFzOiAna2JxVGFnRWRpdFN1Ym1pdCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS10YWctZWRpdC1zdWJtaXQnLFxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJy0xJyxcblxuICAgICAgICAnKGNsaWNrKSc6ICd0YWcuc3VibWl0RWRpdGluZyhcImNsaWNrXCIpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxVGFnRWRpdFN1Ym1pdCB7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFnID0gaW5qZWN0KEticVRhZyk7XG59XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIGFkZCBpbnB1dCBiZWhhdmlvciBmb3IgdGhlIGVkaXRhYmxlIHRhZy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1trYnFUYWdFZGl0SW5wdXRdJyxcbiAgICBleHBvcnRBczogJ2ticVRhZ0VkaXRJbnB1dCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS10YWctZWRpdC1pbnB1dCcsXG5cbiAgICAgICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknXG4gICAgfSxcbiAgICBob3N0RGlyZWN0aXZlczogW0ticUZpZWxkU2l6aW5nQ29udGVudF1cbn0pXG5leHBvcnQgY2xhc3MgS2JxVGFnRWRpdElucHV0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhZyA9IGluamVjdChLYnFUYWcpO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWcuY2FuY2VsRWRpdGluZygnZXNjYXBlJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEVOVEVSOiB7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWcuc3VibWl0RWRpdGluZygnZW50ZXInKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHByZXZlbnQgS2JxVGFnIGZyb20gcmVjZWl2aW5nIHRoZXNlIGtleWRvd24gZXZlbnRzXG4gICAgICAgICAgICBjYXNlIEJBQ0tTUEFDRTpcbiAgICAgICAgICAgIGNhc2UgU1BBQ0U6XG4gICAgICAgICAgICBjYXNlIERFTEVURToge1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWcsIFtrYnEtdGFnXSwga2JxLWJhc2ljLXRhZywgW2ticS1iYXNpYy10YWddJyxcbiAgICBleHBvcnRBczogJ2ticVRhZycsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtDZGtEcmFnXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLXRhZ19fd3JhcHBlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ticS1pY29uXTpub3QoW2ticVRhZ1JlbW92ZV0pOm5vdChba2JxVGFnRWRpdFN1Ym1pdF0pXCIgLz5cbiAgICAgICAgICAgIDxzcGFuICNrYnFUaXRsZVRleHQgY2xhc3M9XCJrYnEtdGFnX190ZXh0XCI+XG4gICAgICAgICAgICAgICAgQGlmIChlZGl0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ticVRhZ0VkaXRJbnB1dF1cIiAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAoZWRpdGluZygpKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ticVRhZ0VkaXRTdWJtaXRdXCIgLz5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIEBpZiAocmVtb3ZhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltrYnFUYWdSZW1vdmVdXCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFnLnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLXRhZycsXG5cbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJpbmRleCcsXG4gICAgICAgICdbYXR0ci5kaXNhYmxlZF0nOiAnZGlzYWJsZWQgfHwgbnVsbCcsXG5cbiAgICAgICAgJ1tjbGFzcy5rYnEtc2VsZWN0ZWRdJzogJ3NlbGVjdGVkJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFnLXdpdGgtYXZhdGFyXSc6ICdhdmF0YXInLFxuICAgICAgICAnW2NsYXNzLmticS10YWctd2l0aC1pY29uXSc6ICdjb250ZW50Q2hpbGRyZW4nLFxuICAgICAgICAnW2NsYXNzLmticS10YWctd2l0aC10cmFpbGluZy1pY29uXSc6ICd0cmFpbGluZ0ljb24gfHwgcmVtb3ZlSWNvbicsXG4gICAgICAgICdbY2xhc3Mua2JxLWRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgICAgICdbY2xhc3Mua2JxLXRhZ19lZGl0YWJsZV0nOiAnZWRpdGFibGUnLFxuICAgICAgICAnW2NsYXNzLmticS10YWdfZWRpdGluZ10nOiAnZWRpdGluZygpJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFnX3JlbW92YWJsZV0nOiAncmVtb3ZhYmxlJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFnX3NlbGVjdGFibGVdJzogJ3NlbGVjdGFibGUnLFxuICAgICAgICAnW2NsYXNzLmticS10YWdfZHJhZ2dhYmxlXSc6ICdkcmFnZ2FibGUnLFxuXG4gICAgICAgICcoZGJsY2xpY2spJzogJ2hhbmRsZURibENsaWNrKCRldmVudCknLFxuICAgICAgICAnKGNsaWNrKSc6ICdoYW5kbGVDbGljaygkZXZlbnQpJyxcbiAgICAgICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknXG4gICAgfSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogS0JRX1RJVExFX1RFWFRfUkVGLCB1c2VFeGlzdGluZzogS2JxVGFnIH1dXG59KVxuZXhwb3J0IGNsYXNzIEticVRhZ1xuICAgIGV4dGVuZHMgS2JxQ29sb3JEaXJlY3RpdmVcbiAgICBpbXBsZW1lbnRzIElGb2N1c2FibGVPcHRpb24sIE9uRGVzdHJveSwgS2JxVGl0bGVUZXh0UmVmLCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0XG57XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb2N1c01vbml0b3IgPSBpbmplY3QoRm9jdXNNb25pdG9yKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhZ0xpc3QgPSBpbmplY3QoS2JxVGFnTGlzdCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRyYWc6IENka0RyYWc8S2JxVGFnRHJhZ0RhdGE+ID0gaW5qZWN0KENka0RyYWcsIHsgaG9zdDogdHJ1ZSB9KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiB0aGUgdGFnIGlzIGZvY3VzZWQuXG4gICAgICpcbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgcmVhZG9ubHkgb25Gb2N1cyA9IG5ldyBTdWJqZWN0PEticVRhZ0ZvY3VzRXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB3aGVuIHRoZSB0YWcgaXMgYmx1cnJlZC5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICByZWFkb25seSBvbkJsdXIgPSBuZXcgU3ViamVjdDxLYnFUYWdFdmVudD4oKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcmVhZG9ubHkgbmF0aXZlRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdGFnIGhhcyBmb2N1cy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBoYXNGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRhZyBpcyBlZGl0YWJsZS4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBnZXQgZWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0YWJsZSA/PyAhIXRoaXMudGFnTGlzdD8uZWRpdGFibGU7XG4gICAgfVxuXG4gICAgc2V0IGVkaXRhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2VkaXRhYmxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZWRpdGFibGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFnIGVkaXRzIGNhbid0IGJlIHN1Ym1pdHRlZC4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcHJldmVudEVkaXRTdWJtaXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBDb250ZW50Q2hpbGQoS2JxVGFnRWRpdElucHV0LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVkaXRJbnB1dEVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBldmVudCB3aGVuIHRoZSB0YWcgaXMgZWRpdGVkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBlZGl0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFUYWdFZGl0Q2hhbmdlPigpO1xuXG4gICAgLyoqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBlZGl0aW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdrYnFUaXRsZVRleHQnKSByZWFkb25seSB0ZXh0RWxlbWVudDogRWxlbWVudFJlZjxIVE1MU3BhbkVsZW1lbnQ+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihLYnFJY29uKSBjb250ZW50Q2hpbGRyZW46IFF1ZXJ5TGlzdDxLYnFJY29uPjtcblxuICAgIC8qKiBUaGUgdGFnIGF2YXRhciAqL1xuICAgIEBDb250ZW50Q2hpbGQoS2JxVGFnQXZhdGFyLCB7IHN0YXRpYzogZmFsc2UgfSkgYXZhdGFyOiBLYnFUYWdBdmF0YXI7XG5cbiAgICAvKiogVGhlIHRhZydzIHRyYWlsaW5nIGljb24uICovXG4gICAgQENvbnRlbnRDaGlsZChLYnFUYWdUcmFpbGluZ0ljb24sIHsgc3RhdGljOiBmYWxzZSB9KSB0cmFpbGluZ0ljb246IEticVRhZ1RyYWlsaW5nSWNvbjtcblxuICAgIC8qKiBUaGUgdGFnJ3MgcmVtb3ZlIHRvZ2dsZXIuICovXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IEticVRhZ1JlbW92ZSksIHsgc3RhdGljOiBmYWxzZSB9KSByZW1vdmVJY29uOiBLYnFUYWdSZW1vdmU7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSB0YWcgaXMgc2VsZWN0ZWQgb3IgZGVzZWxlY3RlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8S2JxVGFnU2VsZWN0aW9uQ2hhbmdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxVGFnU2VsZWN0aW9uQ2hhbmdlPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdGFnIGlzIGRlc3Ryb3llZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgZGVzdHJveWVkOiBFdmVudEVtaXR0ZXI8S2JxVGFnRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFUYWdFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSB0YWcgaXMgdG8gYmUgcmVtb3ZlZC4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgcmVtb3ZlZDogRXZlbnRFbWl0dGVyPEticVRhZ0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxVGFnRXZlbnQ+KCk7XG5cbiAgICAvKiogV2hldGhlciB0aGUgdGFnIGlzIHNlbGVjdGVkLiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICAgIH1cblxuICAgIHNldCBzZWxlY3RlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkU3RhdGUodmFsdWUsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKiogVGhlIHZhbHVlIG9mIHRoZSB0YWcuIERlZmF1bHRzIHRvIHRoZSBjb250ZW50IGluc2lkZSBgPGticS10YWc+YCB0YWdzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZSA/PyB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudD8udHJpbSgpO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdmFsdWU6IGFueTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHRhZyBpcyBzZWxlY3RhYmxlLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGdldCBzZWxlY3RhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0YWJsZSB8fCAhIXRoaXMudGFnTGlzdD8uc2VsZWN0YWJsZTtcbiAgICB9XG5cbiAgICBzZXQgc2VsZWN0YWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zZWxlY3RhYmxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2VsZWN0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0YWcgaXMgcmVtb3ZhYmxlLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGdldCByZW1vdmFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZW1vdmFibGUgJiYgKHRoaXMudGFnTGlzdD8ucmVtb3ZhYmxlID8/IHRydWUpO1xuICAgIH1cblxuICAgIHNldCByZW1vdmFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZhYmxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVtb3ZhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHRhYmluZGV4KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/IG51bGwgOiB0aGlzLl90YWJpbmRleDtcbiAgICB9XG5cbiAgICBzZXQgdGFiaW5kZXgodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl90YWJpbmRleCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3RhYmluZGV4ID0gLTE7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0YWcgaXMgZGlzYWJsZWQuXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgfHwgKHRoaXMudGFnTGlzdD8uZGlzYWJsZWQgPz8gZmFsc2UpO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnN5bmNEcmFnRGlzYWJsZWRTdGF0ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0YWcgaXMgZHJhZ2dhYmxlLlxuICAgICAqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXQgZHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMudGFnTGlzdD8uZHJhZ2dhYmxlID8/IGZhbHNlKSAmJiAhdGhpcy5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5jb2xvciA9IEticUNvbXBvbmVudENvbG9ycy5Db250cmFzdEZhZGU7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdENvbG9yKEticUNvbXBvbmVudENvbG9ycy5Db250cmFzdEZhZGUpO1xuXG4gICAgICAgIHRoaXMuYWRkSG9zdENsYXNzTmFtZSgpO1xuICAgICAgICB0aGlzLnNldHVwRHJhZ0luaXRpYWxQcm9wZXJ0aWVzKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLmFkZENsYXNzTW9kaWZpY2F0b3JGb3JJY29ucygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXR1cEZvY3VzTW9uaXRvcigpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhbmNlbEVkaXRpbmcoJ2Rlc3Ryb3knKTtcbiAgICAgICAgdGhpcy5mb2N1c01vbml0b3Iuc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmKTtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQuZW1pdCh7IHRhZzogdGhpcyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGFkZENsYXNzTW9kaWZpY2F0b3JGb3JJY29ucygpIHtcbiAgICAgICAgY29uc3QgaWNvbnMgPSB0aGlzLmNvbnRlbnRDaGlsZHJlbi5tYXAoKGl0ZW0pID0+IGl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICBpZiAoaWNvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBpY29uRWxlbWVudCA9IGljb25zWzBdO1xuXG4gICAgICAgICAgICBpZiAoaWNvbkVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdrYnEtdGFnLXJlbW92ZScpKSB7XG4gICAgICAgICAgICAgICAgaWNvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgna2JxLWljb25fcmlnaHQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgna2JxLXJpZ2h0LWljb24nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWNvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgna2JxLWljb25fbGVmdCcpO1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdrYnEtbGVmdC1pY29uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaWNvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RJY29uRWxlbWVudCA9IGljb25zWzBdO1xuICAgICAgICAgICAgY29uc3Qgc2Vjb25kSWNvbkVsZW1lbnQgPSBpY29uc1sxXTtcblxuICAgICAgICAgICAgZmlyc3RJY29uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdrYnEtaWNvbl9sZWZ0Jyk7XG4gICAgICAgICAgICBzZWNvbmRJY29uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdrYnEtaWNvbl9yaWdodCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBhZGRIb3N0Q2xhc3NOYW1lKCkge1xuICAgICAgICAvLyBBZGQgY2xhc3MgZm9yIHRoZSBkaWZmZXJlbnQgdGFnc1xuICAgICAgICBmb3IgKGNvbnN0IGF0dHIgb2YgVEFHX0FUVFJJQlVURV9OQU1FUykge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZShhdHRyKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gYXR0clxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuYWRkKGF0dHIpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuYWRkKCdrYnEtc3RhbmRhcmQtdGFnJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0cyB0aGUgdGFnLlxuICAgICAqL1xuICAgIHNlbGVjdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuc2VsZWN0YWJsZSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRTdGF0ZSh0cnVlLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXNlbGVjdHMgdGhlIHRhZy5cbiAgICAgKi9cbiAgICBkZXNlbGVjdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuc2VsZWN0YWJsZSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRTdGF0ZShmYWxzZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0cyB0aGUgdGFnIGFuZCBlbWl0cyBldmVudCB3aXRoIGlzVXNlcklucHV0IGZsYWcuXG4gICAgICpcbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgc2VsZWN0VmlhSW50ZXJhY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLnNlbGVjdGFibGUpIHJldHVybjtcblxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkU3RhdGUodHJ1ZSwgeyBpc1VzZXJJbnB1dDogdHJ1ZSwgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRvZ2dsZXMgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgc3RhdGUgb2YgdGhlIHRhZy5cbiAgICAgKi9cbiAgICB0b2dnbGVTZWxlY3RlZChpc1VzZXJJbnB1dDogYm9vbGVhbiA9IGZhbHNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLnNlbGVjdGFibGUpIHJldHVybiB0aGlzLnNlbGVjdGVkO1xuXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRTdGF0ZSghdGhpcy5zZWxlY3RlZCwgeyBpc1VzZXJJbnB1dCwgZW1pdEV2ZW50OiB0cnVlIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkO1xuICAgIH1cblxuICAgIC8qKiBGb2N1c2VzIHRoZSB0YWcuICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbGxvd3MgZm9yIHByb2dyYW1tYXRpYyByZW1vdmFsIG9mIHRoZSB0YWcuIENhbGxlZCBieSB0aGUgS2JxVGFnTGlzdCB3aGVuIHRoZSBERUxFVEUgb3JcbiAgICAgKiBCQUNLU1BBQ0Uga2V5cyBhcmUgcHJlc3NlZC5cbiAgICAgKlxuICAgICAqIEluZm9ybXMgYW55IGxpc3RlbmVycyBvZiB0aGUgcmVtb3ZhbCByZXF1ZXN0LiBEb2VzIG5vdCByZW1vdmUgdGhlIHRhZyBmcm9tIHRoZSBET00uXG4gICAgICovXG4gICAgcmVtb3ZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yZW1vdmFibGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlZC5lbWl0KHsgdGFnOiB0aGlzIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBoYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmVkaXRpbmcoKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHRvZ2dsZSBzZWxlY3Rpb24gb25seSBpZiB0YWcgaW5zaWRlIG9mIGEgdGFnIGxpc3QuXG4gICAgICAgICAgICAvLyBTaW5nbGUgdGFnIGNhbiBvbmx5IGJlIHRvZ2dsZWQgb24gZm9jdXMgb3IgYmx1ci5cbiAgICAgICAgICAgIHRoaXMudGFnTGlzdCAmJlxuICAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlICYmXG4gICAgICAgICAgICBoYXNNb2RpZmllcktleShldmVudCwgJ21ldGFLZXknLCAnY3RybEtleScsICdzaGlmdEtleScpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3RlZCh0cnVlKTtcblxuICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHN0b3AgZXZlbnQgcHJvcGFnYXRpb24gdG8gcHJldmVudCB0aGUgdGFnIGxpc3QgZnJvbSBoYW5kbGluZyB0aGUgY2xpY2sgZXZlbnQuXG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuZWRpdGluZygpKSByZXR1cm47XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICAgICAgICBjYXNlIERFTEVURTpcbiAgICAgICAgICAgIGNhc2UgQkFDS1NQQUNFOiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSB0YWcgbGlzdCBhbmQgaXQgaGFzIHNlbGVjdGVkIHRhZ3MsIHJlbW92ZSB0aGVtLCBvdGhlcndpc2UgcmVtb3ZlIGZvY3VzZWQgdGFnLlxuICAgICAgICAgICAgICAgIHRoaXMudGFnTGlzdD8uc2VsZWN0ZWQubGVuZ3RoID8gdGhpcy50YWdMaXN0LnJlbW92ZVNlbGVjdGVkKCkgOiB0aGlzLnJlbW92ZSgpO1xuXG4gICAgICAgICAgICAgICAgLy8gQWx3YXlzIHByZXZlbnQgc28gcGFnZSBuYXZpZ2F0aW9uIGRvZXMgbm90IG9jY3VyXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU1BBQ0U6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdGVkKHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuZWxlbWVudFJlZiwgJ2tleWJvYXJkJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBBbHdheXMgcHJldmVudCBzcGFjZSBmcm9tIHNjcm9sbGluZyB0aGUgcGFnZSBzaW5jZSB0aGUgbGlzdCBoYXMgZm9jdXNcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGMjpcbiAgICAgICAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydEVkaXRpbmcoZXZlbnQua2V5KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIGJsdXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHByb3RlY3RlZCBoYW5kbGVEYmxDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5lZGl0YWJsZSkgcmV0dXJuO1xuXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnN0YXJ0RWRpdGluZygnZGJsY2xpY2snKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0RWRpdGluZyhyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdGFibGUgfHwgdGhpcy5lZGl0aW5nKCkpIHJldHVybjtcblxuICAgICAgICB0aGlzLmVkaXRpbmcuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLmVkaXRDaGFuZ2UuZW1pdCh7IHRhZzogdGhpcywgdHlwZTogJ3N0YXJ0JywgcmVhc29uIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSB0aGlzLmVkaXRJbnB1dEVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmICghaW5wdXQpIHRocm93IGdldFRhZ0VkaXRJbnB1dE1pc3NpbmdFcnJvcigpO1xuXG4gICAgICAgICAgICBpbnB1dC5zZWxlY3QoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBjYW5jZWxFZGl0aW5nKHJlYXNvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5lZGl0aW5nKCkpIHJldHVybjtcblxuICAgICAgICB0aGlzLmVkaXRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5lZGl0Q2hhbmdlLmVtaXQoeyB0YWc6IHRoaXMsIHR5cGU6ICdjYW5jZWwnLCByZWFzb24gfSk7XG5cbiAgICAgICAgdGhpcy50ZXh0RWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvPy4oeyBsZWZ0OiAwLCBiZWhhdmlvcjogJ2luc3RhbnQnIH0pO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgc3VibWl0RWRpdGluZyhyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdGluZygpIHx8IHRoaXMucHJldmVudEVkaXRTdWJtaXQpIHJldHVybjtcblxuICAgICAgICB0aGlzLmVkaXRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5lZGl0Q2hhbmdlLmVtaXQoeyB0YWc6IHRoaXMsIHR5cGU6ICdzdWJtaXQnLCByZWFzb24gfSk7XG5cbiAgICAgICAgdGhpcy50ZXh0RWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvPy4oeyBsZWZ0OiAwLCBiZWhhdmlvcjogJ2luc3RhbnQnIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHNlbGVjdGVkIHN0YXRlIG9mIHRoZSB0YWcuXG4gICAgICpcbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgc2V0U2VsZWN0ZWRTdGF0ZShzZWxlY3RlZDogYm9vbGVhbiwgb3B0aW9uczogUGFydGlhbDx7IGlzVXNlcklucHV0OiBib29sZWFuOyBlbWl0RXZlbnQ6IGJvb2xlYW4gfT4gPSB7fSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGlzVXNlcklucHV0ID0gZmFsc2UsIGVtaXRFdmVudCA9IGZhbHNlIH0gPSBvcHRpb25zO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZCAhPT0gdGhpcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBzZWxlY3RlZDtcblxuICAgICAgICAgICAgaWYgKGVtaXRFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgICAgICAgICAgICAgIGlzVXNlcklucHV0LFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cERyYWdJbml0aWFsUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zeW5jRHJhZ0Rpc2FibGVkU3RhdGUoKTtcblxuICAgICAgICB0aGlzLmRyYWcuc3RhcnRlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kcmFnLmRhdGEgPSB7IHRhZzogdGhpcyB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmNEcmFnRGlzYWJsZWRTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcmFnLmRpc2FibGVkID0gIXRoaXMuZHJhZ2dhYmxlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBGb2N1c01vbml0b3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5lbGVtZW50UmVmLCB0cnVlKS5zdWJzY3JpYmUoKG9yaWdpbikgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgaGFzRm9jdXMgPSAhaXNOdWxsKG9yaWdpbik7XG5cbiAgICAgICAgICAgIGlmIChoYXNGb2N1cyAhPT0gdGhpcy5oYXNGb2N1cykge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzRm9jdXMgPSBoYXNGb2N1cztcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhc0ZvY3VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25Gb2N1cy5uZXh0KHsgdGFnOiB0aGlzLCBvcmlnaW4gfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy50YWdMaXN0KSB0aGlzLnNlbGVjdCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25CbHVyLm5leHQoeyB0YWc6IHRoaXMgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsRWRpdGluZygnYmx1cicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGFnTGlzdCkgdGhpcy5kZXNlbGVjdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiAgICAgYDxrYnEtdGFnPlxuICogICAgICAgPGticS1pY29uIGticVRhZ1JlbW92ZT5jYW5jZWw8L2ticS1pY29uPlxuICogICAgIDwva2JxLXRhZz5gXG4gKlxuICogWW91ICptYXkqIHVzZSBhIGN1c3RvbSBpY29uLCBidXQgeW91IG1heSBuZWVkIHRvIG92ZXJyaWRlIHRoZSBga2JxLXRhZy1yZW1vdmVgIHBvc2l0aW9uaW5nXG4gKiBzdHlsZXMgdG8gcHJvcGVybHkgY2VudGVyIHRoZSBpY29uIHdpdGhpbiB0aGUgdGFnLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1trYnFUYWdSZW1vdmVdJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLXRhZy1yZW1vdmUga2JxLXRhZy10cmFpbGluZy1pY29uJyxcbiAgICAgICAgJ1thdHRyLnRhYmluZGV4XSc6ICctMScsXG4gICAgICAgICcoY2xpY2spJzogJ2hhbmRsZUNsaWNrKCRldmVudCknLFxuICAgICAgICAnKGZvY3VzKSc6ICdmb2N1cygkZXZlbnQpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxVGFnUmVtb3ZlIHtcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gS2JxVGFnKSkgcHJvdGVjdGVkIHBhcmVudFRhZzogS2JxVGFnKSB7fVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBmb2N1cyhldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxscyB0aGUgcGFyZW50IHRhZydzIHB1YmxpYyBgcmVtb3ZlKClgIG1ldGhvZCBpZiBhcHBsaWNhYmxlLlxuICAgICAqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGhhbmRsZUNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnRUYWcucmVtb3ZhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudFRhZy5oYXNGb2N1cyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMucGFyZW50VGFnLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UgbmVlZCB0byBzdG9wIGV2ZW50IHByb3BhZ2F0aW9uIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBldmVudCB3aWxsIGJ1YmJsZSB1cCB0byB0aGVcbiAgICAgICAgLy8gZm9ybSBmaWVsZCBhbmQgY2F1c2UgdGhlIGBvbkNvbnRhaW5lckNsaWNrYCBtZXRob2QgdG8gYmUgaW52b2tlZC4gVGhpcyBtZXRob2Qgd291bGQgdGhlblxuICAgICAgICAvLyByZXNldCB0aGUgZm9jdXNlZCB0YWcgdGhhdCBoYXMgYmVlbiBmb2N1c2VkIGFmdGVyIHRhZyByZW1vdmFsLiBVc3VhbGx5IHRoZSBwYXJlbnRcbiAgICAgICAgLy8gdGhlIHBhcmVudCBjbGljayBsaXN0ZW5lciBvZiB0aGUgYEticVRhZ2Agd291bGQgcHJldmVudCBwcm9wYWdhdGlvbiwgYnV0IGl0IGNhbiBoYXBwZW5cbiAgICAgICAgLy8gdGhhdCB0aGUgdGFnIGlzIGJlaW5nIHJlbW92ZWQgYmVmb3JlIHRoZSBldmVudCBidWJibGVzIHVwLlxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG59XG4iXX0=
|
|
653
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvdGFncy90YWcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEYsT0FBTyxFQUdILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFVBQVUsRUFDVixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUNILE1BQU0sRUFDTixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFFeEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFTbEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JB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QXlGO1FBQ3pGLDZEQUE2RDtRQUM3RCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsQ0FBQztrSUExQlEsWUFBWSxrQkFDRCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO3NIQURuQyxZQUFZOzs0RkFBWixZQUFZO2tCQVR4QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsc0NBQXNDO3dCQUM3QyxpQkFBaUIsRUFBRSxJQUFJO3dCQUN2QixTQUFTLEVBQUUscUJBQXFCO3dCQUNoQyxTQUFTLEVBQUUsZUFBZTtxQkFDN0I7aUJBQ0o7OzBCQUVnQixNQUFNOzJCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ2RrRHJhZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQkFDS1NQQUNFLCBERUxFVEUsIEVOVEVSLCBFU0NBUEUsIEYyLCBTUEFDRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBzaWduYWwsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSUZvY3VzYWJsZU9wdGlvbiB9IGZyb20gJ0Brb29iaXEvY2RrL2ExMXknO1xuaW1wb3J0IHsgaGFzTW9kaWZpZXJLZXkgfSBmcm9tICdAa29vYmlxL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICAgIGlzTnVsbCxcbiAgICBLQlFfVElUTEVfVEVYVF9SRUYsXG4gICAgS2JxQ29sb3JEaXJlY3RpdmUsXG4gICAgS2JxQ29tcG9uZW50Q29sb3JzLFxuICAgIEticUZpZWxkU2l6aW5nQ29udGVudCxcbiAgICBLYnFUaXRsZVRleHRSZWZcbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgS2JxSWNvbiB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEticVRhZ0xpc3QgfSBmcm9tICcuL3RhZy1saXN0LmNvbXBvbmVudCc7XG5cbi8qKlxuICogRXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgS2JxVGFnLlxuICovXG5leHBvcnQgdHlwZSBLYnFUYWdFdmVudCA9IHtcbiAgICB0YWc6IEticVRhZztcbn07XG5cbi8qKlxuICogRXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgS2JxVGFnIHdoZW4gdGhlIHRhZyBpcyBlZGl0ZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBLYnFUYWdFZGl0Q2hhbmdlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHRhZzogS2JxVGFnLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogJ3N0YXJ0JyB8ICdzdWJtaXQnIHwgJ2NhbmNlbCcsXG4gICAgICAgIHB1YmxpYyByZWFkb25seSByZWFzb246IHN0cmluZ1xuICAgICkge31cbn1cblxuLyoqIEV2ZW50IG9iamVjdCBlbWl0dGVkIGJ5IEticVRhZyB3aGVuIHNlbGVjdGVkIG9yIGRlc2VsZWN0ZWQuICovXG5leHBvcnQgY2xhc3MgS2JxVGFnU2VsZWN0aW9uQ2hhbmdlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHNvdXJjZTogS2JxVGFnLFxuICAgICAgICBwdWJsaWMgc2VsZWN0ZWQ6IGJvb2xlYW4sXG4gICAgICAgIHB1YmxpYyBpc1VzZXJJbnB1dCA9IGZhbHNlXG4gICAgKSB7fVxufVxuXG4vKipcbiAqIEV2ZW50IG9iamVjdCBlbWl0dGVkIHdoZW4gdGhlIEticVRhZyBpcyBmb2N1c2VkLlxuICovXG5leHBvcnQgdHlwZSBLYnFUYWdGb2N1c0V2ZW50ID0gS2JxVGFnRXZlbnQgJiB7XG4gICAgb3JpZ2luOiBGb2N1c09yaWdpbjtcbn07XG5cbmNvbnN0IFRBR19BVFRSSUJVVEVfTkFNRVMgPSBbJ2ticS1iYXNpYy10YWcnXTtcblxuY29uc3QgZ2V0VGFnRWRpdElucHV0TWlzc2luZ0Vycm9yID0gKCk6IEVycm9yID0+IHtcbiAgICByZXR1cm4gRXJyb3IoJ0VkaXRhYmxlIGticS10YWcgbXVzdCBjb250YWluIGEgS2JxVGFnRWRpdElucHV0LicpO1xufTtcblxuLyoqXG4gKiBPYmplY3QgcGFzc2VkIHRvIHRoZSBkcmFnIGRhdGEgZXZlbnQgd2hlbiBhIHRhZyBpcyBiZWluZyBkcmFnZ2VkLlxuICpcbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IHR5cGUgS2JxVGFnRHJhZ0RhdGEgPSBLYnFUYWdFdmVudDtcblxuLyoqXG4gKiBEdW1teSBkaXJlY3RpdmUgdG8gYWRkIENTUyBjbGFzcyB0byB0YWcgYXZhdGFyLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWctYXZhdGFyLCBba2JxVGFnQXZhdGFyXScsXG4gICAgaG9zdDogeyBjbGFzczogJ2ticS10YWctYXZhdGFyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEticVRhZ0F2YXRhciB7fVxuXG4vKipcbiAqIER1bW15IGRpcmVjdGl2ZSB0byBhZGQgQ1NTIGNsYXNzIHRvIHRhZyB0cmFpbGluZyBpY29uLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2ticS10YWctdHJhaWxpbmctaWNvbiwgW2ticVRhZ1RyYWlsaW5nSWNvbl0nLFxuICAgIGhvc3Q6IHsgY2xhc3M6ICdrYnEtdGFnLXRyYWlsaW5nLWljb24nIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxVGFnVHJhaWxpbmdJY29uIHt9XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIGFkZCBzdWJtaXQgYmVoYXZpb3IgZm9yIHRoZSBlZGl0YWJsZSB0YWcuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdba2JxVGFnRWRpdFN1Ym1pdF0nLFxuICAgIGV4cG9ydEFzOiAna2JxVGFnRWRpdFN1Ym1pdCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS10YWctZWRpdC1zdWJtaXQnLFxuICAgICAgICAnW2F0dHIudGFiaW5kZXhdJzogJy0xJyxcblxuICAgICAgICAnKGNsaWNrKSc6ICd0YWcuc3VibWl0RWRpdGluZyhcImNsaWNrXCIpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxVGFnRWRpdFN1Ym1pdCB7XG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFnID0gaW5qZWN0KEticVRhZyk7XG59XG5cbi8qKlxuICogRGlyZWN0aXZlIHRvIGFkZCBpbnB1dCBiZWhhdmlvciBmb3IgdGhlIGVkaXRhYmxlIHRhZy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1trYnFUYWdFZGl0SW5wdXRdJyxcbiAgICBleHBvcnRBczogJ2ticVRhZ0VkaXRJbnB1dCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS10YWctZWRpdC1pbnB1dCcsXG5cbiAgICAgICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknLFxuICAgICAgICAnKGNsaWNrKSc6ICdoYW5kbGVDbGljaygkZXZlbnQpJ1xuICAgIH0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtLYnFGaWVsZFNpemluZ0NvbnRlbnRdXG59KVxuZXhwb3J0IGNsYXNzIEticVRhZ0VkaXRJbnB1dCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0YWcgPSBpbmplY3QoS2JxVGFnKTtcblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIGhhbmRsZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgcHJvdGVjdGVkIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICAgICAgICBjYXNlIEVTQ0FQRToge1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFnLmNhbmNlbEVkaXRpbmcoJ2VzY2FwZScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBFTlRFUjoge1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFnLnN1Ym1pdEVkaXRpbmcoJ2VudGVyJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFdlIHNob3VsZCBwcmV2ZW50IEticVRhZyBmcm9tIHJlY2VpdmluZyB0aGVzZSBrZXlkb3duIGV2ZW50c1xuICAgICAgICAgICAgY2FzZSBCQUNLU1BBQ0U6XG4gICAgICAgICAgICBjYXNlIFNQQUNFOlxuICAgICAgICAgICAgY2FzZSBERUxFVEU6IHtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrYnEtdGFnLCBba2JxLXRhZ10sIGticS1iYXNpYy10YWcsIFtrYnEtYmFzaWMtdGFnXScsXG4gICAgZXhwb3J0QXM6ICdrYnFUYWcnLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbQ2RrRHJhZ10sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImticS10YWdfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltrYnEtaWNvbl06bm90KFtrYnFUYWdSZW1vdmVdKTpub3QoW2ticVRhZ0VkaXRTdWJtaXRdKVwiIC8+XG4gICAgICAgICAgICA8c3BhbiAja2JxVGl0bGVUZXh0IGNsYXNzPVwia2JxLXRhZ19fdGV4dFwiPlxuICAgICAgICAgICAgICAgIEBpZiAoZWRpdGluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltrYnFUYWdFZGl0SW5wdXRdXCIgLz5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICBAaWYgKGVkaXRpbmcoKSkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltrYnFUYWdFZGl0U3VibWl0XVwiIC8+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICBAaWYgKHJlbW92YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJba2JxVGFnUmVtb3ZlXVwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIHN0eWxlVXJsczogWycuL3RhZy5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS10YWcnLFxuXG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAndGFiaW5kZXgnLFxuICAgICAgICAnW2F0dHIuZGlzYWJsZWRdJzogJ2Rpc2FibGVkIHx8IG51bGwnLFxuXG4gICAgICAgICdbY2xhc3Mua2JxLXNlbGVjdGVkXSc6ICdzZWxlY3RlZCcsXG4gICAgICAgICdbY2xhc3Mua2JxLXRhZy13aXRoLWF2YXRhcl0nOiAnYXZhdGFyJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFnLXdpdGgtaWNvbl0nOiAnY29udGVudENoaWxkcmVuJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFnLXdpdGgtdHJhaWxpbmctaWNvbl0nOiAndHJhaWxpbmdJY29uIHx8IHJlbW92ZUljb24nLFxuICAgICAgICAnW2NsYXNzLmticS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICAgICAnW2NsYXNzLmticS10YWdfZWRpdGFibGVdJzogJ2VkaXRhYmxlJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFnX2VkaXRpbmddJzogJ2VkaXRpbmcoKScsXG4gICAgICAgICdbY2xhc3Mua2JxLXRhZ19yZW1vdmFibGVdJzogJ3JlbW92YWJsZScsXG4gICAgICAgICdbY2xhc3Mua2JxLXRhZ19zZWxlY3RhYmxlXSc6ICdzZWxlY3RhYmxlJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtdGFnX2RyYWdnYWJsZV0nOiAnZHJhZ2dhYmxlJyxcblxuICAgICAgICAnKGRibGNsaWNrKSc6ICdoYW5kbGVEYmxDbGljaygkZXZlbnQpJyxcbiAgICAgICAgJyhjbGljayknOiAnaGFuZGxlQ2xpY2soJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93biknOiAnaGFuZGxlS2V5ZG93bigkZXZlbnQpJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEtCUV9USVRMRV9URVhUX1JFRiwgdXNlRXhpc3Rpbmc6IEticVRhZyB9XVxufSlcbmV4cG9ydCBjbGFzcyBLYnFUYWdcbiAgICBleHRlbmRzIEticUNvbG9yRGlyZWN0aXZlXG4gICAgaW1wbGVtZW50cyBJRm9jdXNhYmxlT3B0aW9uLCBPbkRlc3Ryb3ksIEticVRpdGxlVGV4dFJlZiwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdFxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9jdXNNb25pdG9yID0gaW5qZWN0KEZvY3VzTW9uaXRvcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0YWdMaXN0ID0gaW5qZWN0KEticVRhZ0xpc3QsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkcmFnOiBDZGtEcmFnPEticVRhZ0RyYWdEYXRhPiA9IGluamVjdChDZGtEcmFnLCB7IGhvc3Q6IHRydWUgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gdGhlIHRhZyBpcyBmb2N1c2VkLlxuICAgICAqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IG9uRm9jdXMgPSBuZXcgU3ViamVjdDxLYnFUYWdGb2N1c0V2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiB0aGUgdGFnIGlzIGJsdXJyZWQuXG4gICAgICpcbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgcmVhZG9ubHkgb25CbHVyID0gbmV3IFN1YmplY3Q8S2JxVGFnRXZlbnQ+KCk7XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHJlYWRvbmx5IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHRhZyBoYXMgZm9jdXMuXG4gICAgICpcbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgaGFzRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSB0YWcgaXMgZWRpdGFibGUuICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgZ2V0IGVkaXRhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdGFibGUgPz8gISF0aGlzLnRhZ0xpc3Q/LmVkaXRhYmxlO1xuICAgIH1cblxuICAgIHNldCBlZGl0YWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9lZGl0YWJsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2VkaXRhYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRhZyBlZGl0cyBjYW4ndCBiZSBzdWJtaXR0ZWQuICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHByZXZlbnRFZGl0U3VibWl0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAQ29udGVudENoaWxkKEticVRhZ0VkaXRJbnB1dCwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBlZGl0SW5wdXRFbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgZXZlbnQgd2hlbiB0aGUgdGFnIGlzIGVkaXRlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgZWRpdENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxVGFnRWRpdENoYW5nZT4oKTtcblxuICAgIC8qKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWRpdGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgna2JxVGl0bGVUZXh0JykgcmVhZG9ubHkgdGV4dEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTFNwYW5FbGVtZW50PjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oS2JxSWNvbikgY29udGVudENoaWxkcmVuOiBRdWVyeUxpc3Q8S2JxSWNvbj47XG5cbiAgICAvKiogVGhlIHRhZyBhdmF0YXIgKi9cbiAgICBAQ29udGVudENoaWxkKEticVRhZ0F2YXRhciwgeyBzdGF0aWM6IGZhbHNlIH0pIGF2YXRhcjogS2JxVGFnQXZhdGFyO1xuXG4gICAgLyoqIFRoZSB0YWcncyB0cmFpbGluZyBpY29uLiAqL1xuICAgIEBDb250ZW50Q2hpbGQoS2JxVGFnVHJhaWxpbmdJY29uLCB7IHN0YXRpYzogZmFsc2UgfSkgdHJhaWxpbmdJY29uOiBLYnFUYWdUcmFpbGluZ0ljb247XG5cbiAgICAvKiogVGhlIHRhZydzIHJlbW92ZSB0b2dnbGVyLiAqL1xuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBLYnFUYWdSZW1vdmUpLCB7IHN0YXRpYzogZmFsc2UgfSkgcmVtb3ZlSWNvbjogS2JxVGFnUmVtb3ZlO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgdGFnIGlzIHNlbGVjdGVkIG9yIGRlc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEticVRhZ1NlbGVjdGlvbkNoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEticVRhZ1NlbGVjdGlvbkNoYW5nZT4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHRhZyBpcyBkZXN0cm95ZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IGRlc3Ryb3llZDogRXZlbnRFbWl0dGVyPEticVRhZ0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8S2JxVGFnRXZlbnQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgdGFnIGlzIHRvIGJlIHJlbW92ZWQuICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHJlbW92ZWQ6IEV2ZW50RW1pdHRlcjxLYnFUYWdFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEticVRhZ0V2ZW50PigpO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRhZyBpcyBzZWxlY3RlZC4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgICB9XG5cbiAgICBzZXQgc2VsZWN0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFN0YXRlKHZhbHVlLCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRoZSB2YWx1ZSBvZiB0aGUgdGFnLiBEZWZhdWx0cyB0byB0aGUgY29udGVudCBpbnNpZGUgYDxrYnEtdGFnPmAgdGFncy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUgPz8gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ/LnRyaW0oKTtcbiAgICB9XG5cbiAgICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSB0YWcgaXMgc2VsZWN0YWJsZS5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBnZXQgc2VsZWN0YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGFibGUgfHwgISF0aGlzLnRhZ0xpc3Q/LnNlbGVjdGFibGU7XG4gICAgfVxuXG4gICAgc2V0IHNlbGVjdGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0YWJsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NlbGVjdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hldGhlciB0aGUgdGFnIGlzIHJlbW92YWJsZS5cbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBnZXQgcmVtb3ZhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVtb3ZhYmxlICYmICh0aGlzLnRhZ0xpc3Q/LnJlbW92YWJsZSA/PyB0cnVlKTtcbiAgICB9XG5cbiAgICBzZXQgcmVtb3ZhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3JlbW92YWJsZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3JlbW92YWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCB0YWJpbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyBudWxsIDogdGhpcy5fdGFiaW5kZXg7XG4gICAgfVxuXG4gICAgc2V0IHRhYmluZGV4KHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fdGFiaW5kZXggPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF90YWJpbmRleCA9IC0xO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdGFnIGlzIGRpc2FibGVkLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8ICh0aGlzLnRhZ0xpc3Q/LmRpc2FibGVkID8/IGZhbHNlKTtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zeW5jRHJhZ0Rpc2FibGVkU3RhdGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdGFnIGlzIGRyYWdnYWJsZS5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IGRyYWdnYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnRhZ0xpc3Q/LmRyYWdnYWJsZSA/PyBmYWxzZSkgJiYgIXRoaXMuZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuY29sb3IgPSBLYnFDb21wb25lbnRDb2xvcnMuQ29udHJhc3RGYWRlO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRDb2xvcihLYnFDb21wb25lbnRDb2xvcnMuQ29udHJhc3RGYWRlKTtcblxuICAgICAgICB0aGlzLmFkZEhvc3RDbGFzc05hbWUoKTtcbiAgICAgICAgdGhpcy5zZXR1cERyYWdJbml0aWFsUHJvcGVydGllcygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5hZGRDbGFzc01vZGlmaWNhdG9yRm9ySWNvbnMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0dXBGb2N1c01vbml0b3IoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYW5jZWxFZGl0aW5nKCdkZXN0cm95Jyk7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLnN0b3BNb25pdG9yaW5nKHRoaXMuZWxlbWVudFJlZik7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkLmVtaXQoeyB0YWc6IHRoaXMgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBhZGRDbGFzc01vZGlmaWNhdG9yRm9ySWNvbnMoKSB7XG4gICAgICAgIGNvbnN0IGljb25zID0gdGhpcy5jb250ZW50Q2hpbGRyZW4ubWFwKChpdGVtKSA9PiBpdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGljb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgY29uc3QgaWNvbkVsZW1lbnQgPSBpY29uc1swXTtcblxuICAgICAgICAgICAgaWYgKGljb25FbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygna2JxLXRhZy1yZW1vdmUnKSkge1xuICAgICAgICAgICAgICAgIGljb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2ticS1pY29uX3JpZ2h0Jyk7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2ticS1yaWdodC1pY29uJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGljb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2ticS1pY29uX2xlZnQnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgna2JxLWxlZnQtaWNvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGljb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0SWNvbkVsZW1lbnQgPSBpY29uc1swXTtcbiAgICAgICAgICAgIGNvbnN0IHNlY29uZEljb25FbGVtZW50ID0gaWNvbnNbMV07XG5cbiAgICAgICAgICAgIGZpcnN0SWNvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgna2JxLWljb25fbGVmdCcpO1xuICAgICAgICAgICAgc2Vjb25kSWNvbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgna2JxLWljb25fcmlnaHQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgYWRkSG9zdENsYXNzTmFtZSgpIHtcbiAgICAgICAgLy8gQWRkIGNsYXNzIGZvciB0aGUgZGlmZmVyZW50IHRhZ3NcbiAgICAgICAgZm9yIChjb25zdCBhdHRyIG9mIFRBR19BVFRSSUJVVEVfTkFNRVMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0cikgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IGF0dHJcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmFkZChhdHRyKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmFkZCgna2JxLXN0YW5kYXJkLXRhZycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGhlIHRhZy5cbiAgICAgKi9cbiAgICBzZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLnNlbGVjdGFibGUpIHJldHVybjtcblxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkU3RhdGUodHJ1ZSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVzZWxlY3RzIHRoZSB0YWcuXG4gICAgICovXG4gICAgZGVzZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8ICF0aGlzLnNlbGVjdGFibGUpIHJldHVybjtcblxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkU3RhdGUoZmFsc2UsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGhlIHRhZyBhbmQgZW1pdHMgZXZlbnQgd2l0aCBpc1VzZXJJbnB1dCBmbGFnLlxuICAgICAqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHNlbGVjdFZpYUludGVyYWN0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5zZWxlY3RhYmxlKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFN0YXRlKHRydWUsIHsgaXNVc2VySW5wdXQ6IHRydWUsIGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHRoZSBjdXJyZW50IHNlbGVjdGVkIHN0YXRlIG9mIHRoZSB0YWcuXG4gICAgICovXG4gICAgdG9nZ2xlU2VsZWN0ZWQoaXNVc2VySW5wdXQ6IGJvb2xlYW4gPSBmYWxzZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5zZWxlY3RhYmxlKSByZXR1cm4gdGhpcy5zZWxlY3RlZDtcblxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkU3RhdGUoIXRoaXMuc2VsZWN0ZWQsIHsgaXNVc2VySW5wdXQsIGVtaXRFdmVudDogdHJ1ZSB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZDtcbiAgICB9XG5cbiAgICAvKiogRm9jdXNlcyB0aGUgdGFnLiAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWxsb3dzIGZvciBwcm9ncmFtbWF0aWMgcmVtb3ZhbCBvZiB0aGUgdGFnLiBDYWxsZWQgYnkgdGhlIEticVRhZ0xpc3Qgd2hlbiB0aGUgREVMRVRFIG9yXG4gICAgICogQkFDS1NQQUNFIGtleXMgYXJlIHByZXNzZWQuXG4gICAgICpcbiAgICAgKiBJbmZvcm1zIGFueSBsaXN0ZW5lcnMgb2YgdGhlIHJlbW92YWwgcmVxdWVzdC4gRG9lcyBub3QgcmVtb3ZlIHRoZSB0YWcgZnJvbSB0aGUgRE9NLlxuICAgICAqL1xuICAgIHJlbW92ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVtb3ZhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZWQuZW1pdCh7IHRhZzogdGhpcyB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgaGFuZGxlQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5lZGl0aW5nKCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIC8vIFdlIHNob3VsZCB0b2dnbGUgc2VsZWN0aW9uIG9ubHkgaWYgdGFnIGluc2lkZSBvZiBhIHRhZyBsaXN0LlxuICAgICAgICAgICAgLy8gU2luZ2xlIHRhZyBjYW4gb25seSBiZSB0b2dnbGVkIG9uIGZvY3VzIG9yIGJsdXIuXG4gICAgICAgICAgICB0aGlzLnRhZ0xpc3QgJiZcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0YWJsZSAmJlxuICAgICAgICAgICAgaGFzTW9kaWZpZXJLZXkoZXZlbnQsICdtZXRhS2V5JywgJ2N0cmxLZXknLCAnc2hpZnRLZXknKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlU2VsZWN0ZWQodHJ1ZSk7XG5cbiAgICAgICAgICAgIC8vIFdlIHNob3VsZCBzdG9wIGV2ZW50IHByb3BhZ2F0aW9uIHRvIHByZXZlbnQgdGhlIHRhZyBsaXN0IGZyb20gaGFuZGxpbmcgdGhlIGNsaWNrIGV2ZW50LlxuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmVkaXRpbmcoKSkgcmV0dXJuO1xuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICAgICAgY2FzZSBERUxFVEU6XG4gICAgICAgICAgICBjYXNlIEJBQ0tTUEFDRToge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgdGFnIGxpc3QgYW5kIGl0IGhhcyBzZWxlY3RlZCB0YWdzLCByZW1vdmUgdGhlbSwgb3RoZXJ3aXNlIHJlbW92ZSBmb2N1c2VkIHRhZy5cbiAgICAgICAgICAgICAgICB0aGlzLnRhZ0xpc3Q/LnNlbGVjdGVkLmxlbmd0aCA/IHRoaXMudGFnTGlzdC5yZW1vdmVTZWxlY3RlZCgpIDogdGhpcy5yZW1vdmUoKTtcblxuICAgICAgICAgICAgICAgIC8vIEFsd2F5cyBwcmV2ZW50IHNvIHBhZ2UgbmF2aWdhdGlvbiBkb2VzIG5vdCBvY2N1clxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFNQQUNFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3RlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5mb2N1c1ZpYSh0aGlzLmVsZW1lbnRSZWYsICdrZXlib2FyZCcpO1xuXG4gICAgICAgICAgICAgICAgLy8gQWx3YXlzIHByZXZlbnQgc3BhY2UgZnJvbSBzY3JvbGxpbmcgdGhlIHBhZ2Ugc2luY2UgdGhlIGxpc3QgaGFzIGZvY3VzXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRjI6XG4gICAgICAgICAgICBjYXNlIEVOVEVSOlxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRFZGl0aW5nKGV2ZW50LmtleSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBibHVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgICBwcm90ZWN0ZWQgaGFuZGxlRGJsQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuZWRpdGFibGUpIHJldHVybjtcblxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5zdGFydEVkaXRpbmcoJ2RibGNsaWNrJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydEVkaXRpbmcocmVhc29uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRhYmxlIHx8IHRoaXMuZWRpdGluZygpKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5lZGl0aW5nLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5lZGl0Q2hhbmdlLmVtaXQoeyB0YWc6IHRoaXMsIHR5cGU6ICdzdGFydCcsIHJlYXNvbiB9KTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5lZGl0SW5wdXRFbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoIWlucHV0KSB0aHJvdyBnZXRUYWdFZGl0SW5wdXRNaXNzaW5nRXJyb3IoKTtcblxuICAgICAgICAgICAgdGhpcy5mb2N1c01vbml0b3IuZm9jdXNWaWEodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdrZXlib2FyZCcpO1xuICAgICAgICAgICAgaW5wdXQuc2VsZWN0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgY2FuY2VsRWRpdGluZyhyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdGluZygpKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5lZGl0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuZWRpdENoYW5nZS5lbWl0KHsgdGFnOiB0aGlzLCB0eXBlOiAnY2FuY2VsJywgcmVhc29uIH0pO1xuXG4gICAgICAgIHRoaXMudGV4dEVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUbz8uKHsgbGVmdDogMCwgYmVoYXZpb3I6ICdpbnN0YW50JyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICAgIHN1Ym1pdEVkaXRpbmcocmVhc29uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRpbmcoKSB8fCB0aGlzLnByZXZlbnRFZGl0U3VibWl0KSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5lZGl0aW5nLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMuZWRpdENoYW5nZS5lbWl0KHsgdGFnOiB0aGlzLCB0eXBlOiAnc3VibWl0JywgcmVhc29uIH0pO1xuXG4gICAgICAgIHRoaXMudGV4dEVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUbz8uKHsgbGVmdDogMCwgYmVoYXZpb3I6ICdpbnN0YW50JyB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzZWxlY3RlZCBzdGF0ZSBvZiB0aGUgdGFnLlxuICAgICAqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHNldFNlbGVjdGVkU3RhdGUoc2VsZWN0ZWQ6IGJvb2xlYW4sIG9wdGlvbnM6IFBhcnRpYWw8eyBpc1VzZXJJbnB1dDogYm9vbGVhbjsgZW1pdEV2ZW50OiBib29sZWFuIH0+ID0ge30pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBpc1VzZXJJbnB1dCA9IGZhbHNlLCBlbWl0RXZlbnQgPSBmYWxzZSB9ID0gb3B0aW9ucztcblxuICAgICAgICBpZiAoc2VsZWN0ZWQgIT09IHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gc2VsZWN0ZWQ7XG5cbiAgICAgICAgICAgIGlmIChlbWl0RXZlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICAgICAgICAgICAgICBpc1VzZXJJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBEcmFnSW5pdGlhbFByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3luY0RyYWdEaXNhYmxlZFN0YXRlKCk7XG5cbiAgICAgICAgdGhpcy5kcmFnLnN0YXJ0ZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZHJhZy5kYXRhID0geyB0YWc6IHRoaXMgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzeW5jRHJhZ0Rpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZHJhZy5kaXNhYmxlZCA9ICF0aGlzLmRyYWdnYWJsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldHVwRm9jdXNNb25pdG9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5tb25pdG9yKHRoaXMuZWxlbWVudFJlZiwgdHJ1ZSkuc3Vic2NyaWJlKChvcmlnaW4pID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGhhc0ZvY3VzID0gIWlzTnVsbChvcmlnaW4pO1xuXG4gICAgICAgICAgICBpZiAoaGFzRm9jdXMgIT09IHRoaXMuaGFzRm9jdXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhc0ZvY3VzID0gaGFzRm9jdXM7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNGb2N1cykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRm9jdXMubmV4dCh7IHRhZzogdGhpcywgb3JpZ2luIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGFnTGlzdCkgdGhpcy5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQmx1ci5uZXh0KHsgdGFnOiB0aGlzIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbEVkaXRpbmcoJ2JsdXInKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnRhZ0xpc3QpIHRoaXMuZGVzZWxlY3QoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogICAgIGA8a2JxLXRhZz5cbiAqICAgICAgIDxrYnEtaWNvbiBrYnFUYWdSZW1vdmU+Y2FuY2VsPC9rYnEtaWNvbj5cbiAqICAgICA8L2ticS10YWc+YFxuICpcbiAqIFlvdSAqbWF5KiB1c2UgYSBjdXN0b20gaWNvbiwgYnV0IHlvdSBtYXkgbmVlZCB0byBvdmVycmlkZSB0aGUgYGticS10YWctcmVtb3ZlYCBwb3NpdGlvbmluZ1xuICogc3R5bGVzIHRvIHByb3Blcmx5IGNlbnRlciB0aGUgaWNvbiB3aXRoaW4gdGhlIHRhZy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdba2JxVGFnUmVtb3ZlXScsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS10YWctcmVtb3ZlIGticS10YWctdHJhaWxpbmctaWNvbicsXG4gICAgICAgICdbYXR0ci50YWJpbmRleF0nOiAnLTEnLFxuICAgICAgICAnKGNsaWNrKSc6ICdoYW5kbGVDbGljaygkZXZlbnQpJyxcbiAgICAgICAgJyhmb2N1cyknOiAnZm9jdXMoJGV2ZW50KSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticVRhZ1JlbW92ZSB7XG4gICAgY29uc3RydWN0b3IoQEluamVjdChmb3J3YXJkUmVmKCgpID0+IEticVRhZykpIHByb3RlY3RlZCBwYXJlbnRUYWc6IEticVRhZykge31cblxuICAgIC8qKiBAZG9jcy1wcml2YXRlICovXG4gICAgZm9jdXMoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsbHMgdGhlIHBhcmVudCB0YWcncyBwdWJsaWMgYHJlbW92ZSgpYCBtZXRob2QgaWYgYXBwbGljYWJsZS5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBoYW5kbGVDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50VGFnLnJlbW92YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRUYWcuaGFzRm9jdXMgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLnBhcmVudFRhZy5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIG5lZWQgdG8gc3RvcCBldmVudCBwcm9wYWdhdGlvbiBiZWNhdXNlIG90aGVyd2lzZSB0aGUgZXZlbnQgd2lsbCBidWJibGUgdXAgdG8gdGhlXG4gICAgICAgIC8vIGZvcm0gZmllbGQgYW5kIGNhdXNlIHRoZSBgb25Db250YWluZXJDbGlja2AgbWV0aG9kIHRvIGJlIGludm9rZWQuIFRoaXMgbWV0aG9kIHdvdWxkIHRoZW5cbiAgICAgICAgLy8gcmVzZXQgdGhlIGZvY3VzZWQgdGFnIHRoYXQgaGFzIGJlZW4gZm9jdXNlZCBhZnRlciB0YWcgcmVtb3ZhbC4gVXN1YWxseSB0aGUgcGFyZW50XG4gICAgICAgIC8vIHRoZSBwYXJlbnQgY2xpY2sgbGlzdGVuZXIgb2YgdGhlIGBLYnFUYWdgIHdvdWxkIHByZXZlbnQgcHJvcGFnYXRpb24sIGJ1dCBpdCBjYW4gaGFwcGVuXG4gICAgICAgIC8vIHRoYXQgdGhlIHRhZyBpcyBiZWluZyByZW1vdmVkIGJlZm9yZSB0aGUgZXZlbnQgYnViYmxlcyB1cC5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxufVxuIl19
|
|
@@ -4,7 +4,6 @@ import { inject, ElementRef, Directive, Input, InjectionToken, isDevMode, NgModu
|
|
|
4
4
|
import { BidiModule, Directionality } from '@angular/cdk/bidi';
|
|
5
5
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
6
6
|
import { coerceBooleanProperty, coerceElement, coerceNumberProperty, coerceCssPixelValue } from '@angular/cdk/coercion';
|
|
7
|
-
import * as i1$1 from '@angular/cdk/a11y';
|
|
8
7
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
9
8
|
import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
10
9
|
import { merge, fromEvent, map, BehaviorSubject, Subject, interval, Subscription, pairwise } from 'rxjs';
|
|
@@ -3423,18 +3422,36 @@ class FileValidators {
|
|
|
3423
3422
|
}
|
|
3424
3423
|
}
|
|
3425
3424
|
|
|
3425
|
+
const HTML_ESCAPES = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' };
|
|
3426
|
+
const HTML_SPECIAL_CHARS = /[&<>"']/;
|
|
3427
|
+
const HTML_SPECIAL_CHARS_GLOBAL = new RegExp(HTML_SPECIAL_CHARS.source, 'g');
|
|
3428
|
+
/** @docs-private */
|
|
3429
|
+
const kbqHighlightMark = (text) => `<mark class="kbq-highlight">${text}</mark>`;
|
|
3426
3430
|
function escapeRegExp(value) {
|
|
3427
3431
|
if (value) {
|
|
3428
3432
|
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
3429
3433
|
}
|
|
3430
3434
|
return value;
|
|
3431
3435
|
}
|
|
3436
|
+
function escapeHtml(value) {
|
|
3437
|
+
if (!HTML_SPECIAL_CHARS.test(value))
|
|
3438
|
+
return value;
|
|
3439
|
+
return value.replace(HTML_SPECIAL_CHARS_GLOBAL, (chr) => HTML_ESCAPES[chr] ?? chr);
|
|
3440
|
+
}
|
|
3432
3441
|
class KbqHighlightPipe {
|
|
3433
3442
|
transform(value, args) {
|
|
3434
|
-
if (
|
|
3435
|
-
return
|
|
3436
|
-
|
|
3437
|
-
|
|
3443
|
+
if (typeof value !== 'string')
|
|
3444
|
+
return '';
|
|
3445
|
+
if (!args || typeof args !== 'string')
|
|
3446
|
+
return escapeHtml(value);
|
|
3447
|
+
const parts = value.split(new RegExp(`(${escapeRegExp(args)})`, 'gi'));
|
|
3448
|
+
return parts
|
|
3449
|
+
.map((part, i) => {
|
|
3450
|
+
const escaped = escapeHtml(part);
|
|
3451
|
+
const isMatch = i % 2 === 1;
|
|
3452
|
+
return isMatch ? kbqHighlightMark(escaped) : escaped;
|
|
3453
|
+
})
|
|
3454
|
+
.join('');
|
|
3438
3455
|
}
|
|
3439
3456
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
3440
3457
|
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqHighlightPipe, name: "mcHighlight" }); }
|
|
@@ -3562,6 +3579,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3562
3579
|
|
|
3563
3580
|
const KBQ_OPTION_ACTION_PARENT = new InjectionToken('KBQ_OPTION_ACTION_PARENT');
|
|
3564
3581
|
class KbqOptionActionComponent {
|
|
3582
|
+
constructor() {
|
|
3583
|
+
this.nativeElement = kbqInjectNativeElement();
|
|
3584
|
+
this.focusMonitor = inject(FocusMonitor);
|
|
3585
|
+
this.option = inject(KBQ_OPTION_ACTION_PARENT);
|
|
3586
|
+
this._disabled = false;
|
|
3587
|
+
this.hasFocus = false;
|
|
3588
|
+
this.destroyRef = inject(DestroyRef);
|
|
3589
|
+
}
|
|
3565
3590
|
get disabled() {
|
|
3566
3591
|
return this._disabled;
|
|
3567
3592
|
}
|
|
@@ -3573,17 +3598,9 @@ class KbqOptionActionComponent {
|
|
|
3573
3598
|
get active() {
|
|
3574
3599
|
return this.hasFocus || !!this.option.dropdownTrigger?.opened;
|
|
3575
3600
|
}
|
|
3576
|
-
constructor(elementRef, focusMonitor, option) {
|
|
3577
|
-
this.elementRef = elementRef;
|
|
3578
|
-
this.focusMonitor = focusMonitor;
|
|
3579
|
-
this.option = option;
|
|
3580
|
-
this._disabled = false;
|
|
3581
|
-
this.hasFocus = false;
|
|
3582
|
-
this.destroyRef = inject(DestroyRef);
|
|
3583
|
-
}
|
|
3584
3601
|
ngAfterViewInit() {
|
|
3585
3602
|
this.focusMonitor
|
|
3586
|
-
.monitor(this.
|
|
3603
|
+
.monitor(this.nativeElement, true)
|
|
3587
3604
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
3588
3605
|
.subscribe((result) => (this.hasFocus = !!result));
|
|
3589
3606
|
if (!this.option.dropdownTrigger)
|
|
@@ -3591,19 +3608,21 @@ class KbqOptionActionComponent {
|
|
|
3591
3608
|
this.option.dropdownTrigger.restoreFocus = false;
|
|
3592
3609
|
this.option.dropdownTrigger.dropdownClosed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
|
|
3593
3610
|
this.preventShowingTooltip();
|
|
3594
|
-
const
|
|
3595
|
-
|
|
3611
|
+
const lastDestroyReason = this.option.dropdownTrigger.lastDestroyReason;
|
|
3612
|
+
if (lastDestroyReason) {
|
|
3613
|
+
this.focus(lastDestroyReason === 'keydown' ? 'keyboard' : 'program');
|
|
3614
|
+
}
|
|
3596
3615
|
});
|
|
3597
3616
|
}
|
|
3598
3617
|
ngOnDestroy() {
|
|
3599
|
-
this.focusMonitor.stopMonitoring(this.
|
|
3618
|
+
this.focusMonitor.stopMonitoring(this.nativeElement);
|
|
3600
3619
|
}
|
|
3601
3620
|
focus(origin, options) {
|
|
3602
3621
|
if (this.focusMonitor && origin) {
|
|
3603
|
-
this.focusMonitor.focusVia(this.
|
|
3622
|
+
this.focusMonitor.focusVia(this.nativeElement, origin, options);
|
|
3604
3623
|
}
|
|
3605
3624
|
else {
|
|
3606
|
-
this.
|
|
3625
|
+
this.nativeElement.focus();
|
|
3607
3626
|
}
|
|
3608
3627
|
this.hasFocus = true;
|
|
3609
3628
|
}
|
|
@@ -3631,7 +3650,7 @@ class KbqOptionActionComponent {
|
|
|
3631
3650
|
this.option.tooltipTrigger.disabled = true;
|
|
3632
3651
|
setTimeout(() => (this.option.tooltipTrigger.disabled = false));
|
|
3633
3652
|
}
|
|
3634
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqOptionActionComponent, deps: [
|
|
3653
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqOptionActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3635
3654
|
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: KbqOptionActionComponent, selector: "kbq-option-action", inputs: { disabled: ["disabled", "disabled", booleanAttribute] }, host: { listeners: { "click": "onClick($event)", "keydown": "onKeyDown($event)" }, properties: { "class.kbq-expanded": "false", "class.kbq-disabled": "disabled", "attr.disabled": "disabled || null", "attr.tabIndex": "-1" }, classAttribute: "kbq-option-action" }, exportAs: ["kbqOptionAction"], ngImport: i0, template: `
|
|
3636
3655
|
<ng-content select="[kbq-icon]">
|
|
3637
3656
|
<i class="kbq kbq-icon kbq-contrast-fade kbq-ellipsis-vertical_16"></i>
|
|
@@ -3653,10 +3672,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
3653
3672
|
'(click)': 'onClick($event)',
|
|
3654
3673
|
'(keydown)': 'onKeyDown($event)'
|
|
3655
3674
|
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".kbq-option-action{display:flex;align-items:center;justify-content:center;cursor:pointer;outline:none;border:var(--kbq-size-3xs) solid transparent;border-radius:var(--kbq-size-xs);width:var(--kbq-size-xl);height:var(--kbq-size-xl)}.kbq-option-action:not(.kbq-disabled):hover .kbq-icon,.kbq-option-action:not(.kbq-disabled):focus .kbq-icon{color:var(--kbq-icon-button-fade-contrast-states-hover)}.kbq-option-action.kbq-disabled{cursor:default}.kbq-option-action.cdk-keyboard-focused{border-color:var(--kbq-states-line-focus-theme)}.kbq-option-action:active,.kbq-option-action.kbq-pressed{background-color:var(--kbq-background-transparent)}.kbq-option-action:active .kbq-icon.kbq-empty,.kbq-option-action.kbq-pressed .kbq-icon.kbq-empty{color:var(--kbq-states-icon-contrast-fade-active)}.kbq-option-action:hover .kbq-icon.kbq-empty{color:var(--kbq-states-icon-contrast-fade-hover)}.kbq-option-action.kbq-disabled{background-color:var(--kbq-background-transparent)}.kbq-option-action.kbq-disabled .kbq-icon.kbq-empty{color:var(--kbq-states-icon-disabled)}\n"] }]
|
|
3656
|
-
}],
|
|
3657
|
-
type: Inject,
|
|
3658
|
-
args: [KBQ_OPTION_ACTION_PARENT]
|
|
3659
|
-
}] }], propDecorators: { disabled: [{
|
|
3675
|
+
}], propDecorators: { disabled: [{
|
|
3660
3676
|
type: Input,
|
|
3661
3677
|
args: [{ transform: booleanAttribute }]
|
|
3662
3678
|
}] } });
|
|
@@ -5307,11 +5323,11 @@ const kbqDisableLegacyValidationDirectiveProvider = () => ({
|
|
|
5307
5323
|
useValue: { useValidation: false }
|
|
5308
5324
|
});
|
|
5309
5325
|
|
|
5310
|
-
const VERSION = new Version('18.39.
|
|
5326
|
+
const VERSION = new Version('18.39.3+sha-edbe5e2');
|
|
5311
5327
|
|
|
5312
5328
|
/**
|
|
5313
5329
|
* Generated bundle index. Do not edit.
|
|
5314
5330
|
*/
|
|
5315
5331
|
|
|
5316
|
-
export { ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT, AbsoluteDateFormatterImpurePipe, AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterImpurePipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterImpurePipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterImpurePipe, AbsoluteShortDateTimeFormatterPipe, AnimationCurves, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, BaseFormatterPipe, DateAdapter, DateFormatter, EXTENDED_OVERLAY_POSITIONS, EmptyFocusTrapStrategy, ErrorStateMatcher, FileValidators, KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER, KBQ_DATE_FORMATS, KBQ_DATE_LOCALE, KBQ_DATE_LOCALE_FACTORY, KBQ_DEFAULT_LOCALE_DATA_FACTORY, KBQ_DEFAULT_LOCALE_ID, KBQ_DEFAULT_PRECISION_SEPARATOR, KBQ_FORM_FIELD_REF, KBQ_INVALID_VALUE_ERROR, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_LOCALE_SERVICE_LANG_ATTR_NAME, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_PARENT_POPUP, KBQ_SANITY_CHECKS, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD, KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG, KBQ_TITLE_TEXT_REF, KBQ_VALIDATION, KBQ_WINDOW, KbqAbstractSelect, KbqActionContainer, KbqAnimationCurves, KbqAnimationDurations, KbqColorDirective, KbqCommonModule, KbqComponentColors, KbqDataSizePipe, KbqDecimalPipe, KbqDefaultThemes, KbqErrorStateTracker, KbqFieldSizingContent, KbqFocusMonitor, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightModule, KbqHighlightPipe, KbqHover, KbqLine, KbqLineModule, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqMeasurementSystem, KbqNormalizeWhitespace, KbqOptgroup, KbqOption, KbqOptionActionComponent, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxModule, KbqReadStateDirective, KbqRectangleItem, KbqRoundDecimalPipe, KbqSelectFooter, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger, KbqTableNumberPipe, KbqThemeSelector, KbqVirtualOption, LEFT_BOTTOM_POSITION_PRIORITY, LEFT_POSITION_PRIORITY, LEFT_TOP_POSITION_PRIORITY, MeasurementSystem, MultipleMode, NUMBER_FORMAT_REGEXP, POSITION_MAP, POSITION_PRIORITY_STRATEGY, POSITION_TO_CSS_MAP, PasswordValidators, PopUpPlacements, PopUpSizes, PopUpTriggers, PopUpVisibility, RIGHT_BOTTOM_POSITION_PRIORITY, RIGHT_POSITION_PRIORITY, RIGHT_TOP_POSITION_PRIORITY, RangeDateFormatterImpurePipe, RangeDateFormatterPipe, RangeDateTimeFormatterImpurePipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterImpurePipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterImpurePipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterImpurePipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterImpurePipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterImpurePipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterImpurePipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterImpurePipe, RelativeShortDateTimeFormatterPipe, SELECT_PANEL_VIEWPORT_PADDING, ShowOnControlDirtyErrorStateMatcher, ShowOnFormSubmitErrorStateMatcher, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, ThemePalette, ThemeService, VERSION, applyPopupMargins, checkAndNormalizeLocalizedNumber, countGroupLabelsBeforeOption, defaultOffsetY, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, fadeAnimation, formatDataSize, formatNumberWithLocale, getFormattedSizeParts, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getNodesWithoutComments, getOptionScrollPosition, isBoolean, isMac, isNull, isUndefined, isWithin, kbqDisableLegacyValidationDirectiveProvider, kbqErrorStateMatcherProvider, kbqFilesizeFormatterConfigurationProvider, kbqInjectNativeElement, kbqLocaleServiceLangAttrNameProvider, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, leftIconClassName, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, normalizeNumber, numberByParts, ptBRFormattersData, ptBRLocaleData, rightIconClassName, ruRUFormattersData, ruRULocaleData, selectEvents, tkTMFormattersData, tkTMLocaleData, toBoolean, validationTooltipHideDelay, validationTooltipShowDelay };
|
|
5332
|
+
export { ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT, AbsoluteDateFormatterImpurePipe, AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterImpurePipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterImpurePipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterImpurePipe, AbsoluteShortDateTimeFormatterPipe, AnimationCurves, BOTTOM_LEFT_POSITION_PRIORITY, BOTTOM_POSITION_PRIORITY, BOTTOM_RIGHT_POSITION_PRIORITY, BaseFormatterPipe, DateAdapter, DateFormatter, EXTENDED_OVERLAY_POSITIONS, EmptyFocusTrapStrategy, ErrorStateMatcher, FileValidators, KBQ_CUSTOM_SCROLL_STRATEGY_PROVIDER, KBQ_DATE_FORMATS, KBQ_DATE_LOCALE, KBQ_DATE_LOCALE_FACTORY, KBQ_DEFAULT_LOCALE_DATA_FACTORY, KBQ_DEFAULT_LOCALE_ID, KBQ_DEFAULT_PRECISION_SEPARATOR, KBQ_FORM_FIELD_REF, KBQ_INVALID_VALUE_ERROR, KBQ_LOCALE_DATA, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KBQ_LOCALE_SERVICE_LANG_ATTR_NAME, KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS, KBQ_NUMBER_FORMATTER_OPTIONS, KBQ_OPTION_ACTION_PARENT, KBQ_OPTION_PARENT_COMPONENT, KBQ_PARENT_ANIMATION_COMPONENT, KBQ_PARENT_POPUP, KBQ_SANITY_CHECKS, KBQ_SELECT_SCROLL_STRATEGY, KBQ_SELECT_SCROLL_STRATEGY_PROVIDER, KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD, KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG, KBQ_TITLE_TEXT_REF, KBQ_VALIDATION, KBQ_WINDOW, KbqAbstractSelect, KbqActionContainer, KbqAnimationCurves, KbqAnimationDurations, KbqColorDirective, KbqCommonModule, KbqComponentColors, KbqDataSizePipe, KbqDecimalPipe, KbqDefaultThemes, KbqErrorStateTracker, KbqFieldSizingContent, KbqFocusMonitor, KbqForm, KbqFormElement, KbqFormattersModule, KbqFormsModule, KbqHighlightModule, KbqHighlightPipe, KbqHover, KbqLine, KbqLineModule, KbqLineSetter, KbqLocaleService, KbqLocaleServiceModule, KbqMeasureScrollbarService, KbqMeasurementSystem, KbqNormalizeWhitespace, KbqOptgroup, KbqOption, KbqOptionActionComponent, KbqOptionBase, KbqOptionModule, KbqOptionSelectionChange, KbqPopUp, KbqPopUpTrigger, KbqPseudoCheckbox, KbqPseudoCheckboxModule, KbqReadStateDirective, KbqRectangleItem, KbqRoundDecimalPipe, KbqSelectFooter, KbqSelectMatcher, KbqSelectSearch, KbqSelectSearchEmptyResult, KbqSelectTrigger, KbqTableNumberPipe, KbqThemeSelector, KbqVirtualOption, LEFT_BOTTOM_POSITION_PRIORITY, LEFT_POSITION_PRIORITY, LEFT_TOP_POSITION_PRIORITY, MeasurementSystem, MultipleMode, NUMBER_FORMAT_REGEXP, POSITION_MAP, POSITION_PRIORITY_STRATEGY, POSITION_TO_CSS_MAP, PasswordValidators, PopUpPlacements, PopUpSizes, PopUpTriggers, PopUpVisibility, RIGHT_BOTTOM_POSITION_PRIORITY, RIGHT_POSITION_PRIORITY, RIGHT_TOP_POSITION_PRIORITY, RangeDateFormatterImpurePipe, RangeDateFormatterPipe, RangeDateTimeFormatterImpurePipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterImpurePipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterImpurePipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterImpurePipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterImpurePipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterImpurePipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterImpurePipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterImpurePipe, RelativeShortDateTimeFormatterPipe, SELECT_PANEL_VIEWPORT_PADDING, ShowOnControlDirtyErrorStateMatcher, ShowOnFormSubmitErrorStateMatcher, TOP_LEFT_POSITION_PRIORITY, TOP_POSITION_PRIORITY, TOP_RIGHT_POSITION_PRIORITY, ThemePalette, ThemeService, VERSION, applyPopupMargins, checkAndNormalizeLocalizedNumber, countGroupLabelsBeforeOption, defaultOffsetY, enUSFormattersData, enUSLocaleData, esLAFormattersData, esLALocaleData, escapeRegExp, fadeAnimation, formatDataSize, formatNumberWithLocale, getFormattedSizeParts, getHumanizedBytes, getKbqSelectDynamicMultipleError, getKbqSelectNonArrayValueError, getKbqSelectNonFunctionValueError, getNodesWithoutComments, getOptionScrollPosition, isBoolean, isMac, isNull, isUndefined, isWithin, kbqDisableLegacyValidationDirectiveProvider, kbqErrorStateMatcherProvider, kbqFilesizeFormatterConfigurationProvider, kbqHighlightMark, kbqInjectNativeElement, kbqLocaleServiceLangAttrNameProvider, kbqSelectAnimations, kbqSelectScrollStrategyProviderFactory, leftIconClassName, mixinColor, mixinDisabled, mixinErrorState, mixinTabIndex, normalizeNumber, numberByParts, ptBRFormattersData, ptBRLocaleData, rightIconClassName, ruRUFormattersData, ruRULocaleData, selectEvents, tkTMFormattersData, tkTMLocaleData, toBoolean, validationTooltipHideDelay, validationTooltipShowDelay };
|
|
5317
5333
|
//# sourceMappingURL=koobiq-components-core.mjs.map
|