nira-falcon 1.0.14 → 1.0.16
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/esm2022/lib/core-input/core-input.component.mjs +12 -4
- package/esm2022/lib/core-multi-select/core-multi-select.component.mjs +47 -22
- package/esm2022/lib/core-select/core-select.component.mjs +13 -7
- package/esm2022/lib/core-select-search/core-select-search.component.mjs +50 -23
- package/esm2022/lib/core-table/core-table/core-table.component.mjs +3 -3
- package/fesm2022/nira-falcon.mjs +120 -54
- package/fesm2022/nira-falcon.mjs.map +1 -1
- package/lib/core-input/core-input.component.d.ts +3 -1
- package/lib/core-multi-select/core-multi-select.component.d.ts +6 -3
- package/lib/core-select/core-select.component.d.ts +4 -3
- package/lib/core-select-search/core-select-search.component.d.ts +4 -2
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
2
2
|
import { FormControl } from '@angular/forms';
|
|
3
3
|
import { environment } from '../../environments/environment';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
@@ -64,6 +64,11 @@ export class CoreInputComponent {
|
|
|
64
64
|
change(event) {
|
|
65
65
|
this.formatPrice(event.srcElement.value);
|
|
66
66
|
}
|
|
67
|
+
setInputFocus() {
|
|
68
|
+
if (this.inputElement) {
|
|
69
|
+
this.inputElement.nativeElement?.focus();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
67
72
|
onPaste(event) {
|
|
68
73
|
setTimeout(() => {
|
|
69
74
|
const value = event.srcElement.value;
|
|
@@ -161,11 +166,11 @@ export class CoreInputComponent {
|
|
|
161
166
|
}
|
|
162
167
|
}
|
|
163
168
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
164
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreInputComponent, selector: "core-input", inputs: { type: "type", canShowWordifyFa: "canShowWordifyFa", canSplitNumber: "canSplitNumber", canHighlightBackground: "canHighlightBackground", maxLength: "maxLength", size: "size", inputFormControl: "inputFormControl", disable: "disable", placeholder: "placeholder", errorMessages: "errorMessages" }, outputs: { onChange: "onChange", onBlurEmit: "onBlurEmit" }, ngImport: i0, template: "<div>\r\n <div\r\n class=\"container-input\"\r\n [ngClass]=\"{\r\n error:\r\n (inputFormControl.touched || inputFormControl.dirty) &&\r\n inputFormControl.errors
|
|
169
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreInputComponent, selector: "core-input", inputs: { type: "type", canShowWordifyFa: "canShowWordifyFa", canSplitNumber: "canSplitNumber", canHighlightBackground: "canHighlightBackground", maxLength: "maxLength", size: "size", inputFormControl: "inputFormControl", disable: "disable", placeholder: "placeholder", errorMessages: "errorMessages" }, outputs: { onChange: "onChange", onBlurEmit: "onBlurEmit" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div tabindex=\"0\" (focusin)=\"setInputFocus()\">\r\n <div\r\n class=\"container-input\"\r\n [ngClass]=\"{\r\n error:\r\n (inputFormControl.touched || inputFormControl.dirty) &&\r\n inputFormControl.errors,\r\n }\"\r\n >\r\n <input\r\n #inputElement\r\n [type]=\"inputType\"\r\n class=\"a-input-style\"\r\n [formControl]=\"inputFormControl\"\r\n (blur)=\"onBlur()\"\r\n (keyup)=\"change($event)\"\r\n (paste)=\"onPaste($event)\"\r\n [ngClass]=\"{\r\n 'have-value': inputFormControl.value.toString().length > 0,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n inputFormControl.value.toString().length === 0 &&\r\n !(\r\n (inputFormControl.touched || inputFormControl.dirty) &&\r\n inputFormControl.errors\r\n ),\r\n 'disable-input': isDisable,\r\n }\"\r\n (keypress)=\"onKeyPress()\"\r\n />\r\n <label *ngIf=\"placeholder.length > 0\">{{ placeholder }} </label>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n class=\"label-number\"\r\n *ngIf=\"\r\n canShowWordifyFa &&\r\n inputFormControl.value.toString().length > 0 &&\r\n inputType === 'number'\r\n \"\r\n ><app-core-number\r\n [canShowWordInToolTip]=\"false\"\r\n [type]=\"'word'\"\r\n [number]=\"inputFormControl.value\"\r\n ></app-core-number\r\n ></span>\r\n <span\r\n *ngIf=\"\r\n (inputFormControl.touched || inputFormControl.dirty) &&\r\n inputFormControl.errors\r\n \"\r\n >\r\n {{ errorMassage?.message }}\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".container{position:relative}input{border:1px solid #ced4da;border-radius:.25rem}.highlight-background{background-color:#dcf6ff!important}.icon-style{position:absolute;right:16px;top:16px;cursor:pointer;font-size:16px}.icon-style-email{position:absolute;right:16px;top:16px}.a-input-style{height:42px;width:100%;padding:16px;outline:none;caret-color:#020202b3;background-color:#f2f4f726;color:#000000b3;box-sizing:border-box}.a-input-style:focus{background-color:#f2f4f70d;border-radius:3px;border:2px solid rgba(19,92,175,.397)}.a-input-style::placeholder{height:15px;font-style:normal;font-weight:400;font-size:12px;line-height:15px;letter-spacing:-.03em;color:#c2c2c2b3}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus{-webkit-text-fill-color:rgba(255,255,255,0)}input:-webkit-autofill.have-value,input:-webkit-autofill:hover.have-value,input:-webkit-autofill:focus.have-value{-webkit-text-fill-color:#181818!important}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.label-number{color:#6a6a6a}.error input{border:1px solid #fe5f5f}.container-input{background:#fff;position:relative}.container-input .disable-input{background-color:#f7f7f7;border:1px dashed #ced4da;pointer-events:none}.container-input label{position:absolute;right:20px;top:12px;color:gray;font-size:12px;padding:0 8px;border-radius:15px;pointer-events:none;transition:.2s}.container-input input:focus+label,.container-input input.have-value+label{top:-10px;font-size:10px;z-index:3}.container-input input:focus+label:after,.container-input input.have-value+label:after{content:\"\";display:block;background:#fff;position:absolute;width:100%;height:1px;top:10px;right:0;transition:.3s;z-index:-1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.CoreNumberComponent, selector: "app-core-number", inputs: ["number", "type", "canSplitNumbers", "canShowWordInToolTip", "canShowTomanInToolTip", "enDigitsToFa", "canShowIRR"] }] }); }
|
|
165
170
|
}
|
|
166
171
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreInputComponent, decorators: [{
|
|
167
172
|
type: Component,
|
|
168
|
-
args: [{ selector: 'core-input', template: "<div>\r\n <div\r\n class=\"container-input\"\r\n [ngClass]=\"{\r\n error:\r\n (inputFormControl.touched || inputFormControl.dirty) &&\r\n inputFormControl.errors
|
|
173
|
+
args: [{ selector: 'core-input', template: "<div tabindex=\"0\" (focusin)=\"setInputFocus()\">\r\n <div\r\n class=\"container-input\"\r\n [ngClass]=\"{\r\n error:\r\n (inputFormControl.touched || inputFormControl.dirty) &&\r\n inputFormControl.errors,\r\n }\"\r\n >\r\n <input\r\n #inputElement\r\n [type]=\"inputType\"\r\n class=\"a-input-style\"\r\n [formControl]=\"inputFormControl\"\r\n (blur)=\"onBlur()\"\r\n (keyup)=\"change($event)\"\r\n (paste)=\"onPaste($event)\"\r\n [ngClass]=\"{\r\n 'have-value': inputFormControl.value.toString().length > 0,\r\n 'highlight-background':\r\n canHighlightBackground &&\r\n inputFormControl.value.toString().length === 0 &&\r\n !(\r\n (inputFormControl.touched || inputFormControl.dirty) &&\r\n inputFormControl.errors\r\n ),\r\n 'disable-input': isDisable,\r\n }\"\r\n (keypress)=\"onKeyPress()\"\r\n />\r\n <label *ngIf=\"placeholder.length > 0\">{{ placeholder }} </label>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n class=\"label-number\"\r\n *ngIf=\"\r\n canShowWordifyFa &&\r\n inputFormControl.value.toString().length > 0 &&\r\n inputType === 'number'\r\n \"\r\n ><app-core-number\r\n [canShowWordInToolTip]=\"false\"\r\n [type]=\"'word'\"\r\n [number]=\"inputFormControl.value\"\r\n ></app-core-number\r\n ></span>\r\n <span\r\n *ngIf=\"\r\n (inputFormControl.touched || inputFormControl.dirty) &&\r\n inputFormControl.errors\r\n \"\r\n >\r\n {{ errorMassage?.message }}\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".container{position:relative}input{border:1px solid #ced4da;border-radius:.25rem}.highlight-background{background-color:#dcf6ff!important}.icon-style{position:absolute;right:16px;top:16px;cursor:pointer;font-size:16px}.icon-style-email{position:absolute;right:16px;top:16px}.a-input-style{height:42px;width:100%;padding:16px;outline:none;caret-color:#020202b3;background-color:#f2f4f726;color:#000000b3;box-sizing:border-box}.a-input-style:focus{background-color:#f2f4f70d;border-radius:3px;border:2px solid rgba(19,92,175,.397)}.a-input-style::placeholder{height:15px;font-style:normal;font-weight:400;font-size:12px;line-height:15px;letter-spacing:-.03em;color:#c2c2c2b3}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus{-webkit-text-fill-color:rgba(255,255,255,0)}input:-webkit-autofill.have-value,input:-webkit-autofill:hover.have-value,input:-webkit-autofill:focus.have-value{-webkit-text-fill-color:#181818!important}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.label-number{color:#6a6a6a}.error input{border:1px solid #fe5f5f}.container-input{background:#fff;position:relative}.container-input .disable-input{background-color:#f7f7f7;border:1px dashed #ced4da;pointer-events:none}.container-input label{position:absolute;right:20px;top:12px;color:gray;font-size:12px;padding:0 8px;border-radius:15px;pointer-events:none;transition:.2s}.container-input input:focus+label,.container-input input.have-value+label{top:-10px;font-size:10px;z-index:3}.container-input input:focus+label:after,.container-input input.have-value+label:after{content:\"\";display:block;background:#fff;position:absolute;width:100%;height:1px;top:10px;right:0;transition:.3s;z-index:-1}\n"] }]
|
|
169
174
|
}], propDecorators: { type: [{
|
|
170
175
|
type: Input
|
|
171
176
|
}], canShowWordifyFa: [{
|
|
@@ -190,5 +195,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
190
195
|
type: Output
|
|
191
196
|
}], errorMessages: [{
|
|
192
197
|
type: Input
|
|
198
|
+
}], inputElement: [{
|
|
199
|
+
type: ViewChild,
|
|
200
|
+
args: ['inputElement']
|
|
193
201
|
}] } });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWxjb24tbGliL3NyYy9saWIvY29yZS1pbnB1dC9jb3JlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhbGNvbi1saWIvc3JjL2xpYi9jb3JlLWlucHV0L2NvcmUtaW5wdXQtZmFsY29uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7QUFZN0QsTUFBTSxPQUFPLGtCQUFrQjtJQUwvQjtRQU9FLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUlOLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QiwyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFDL0IsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YscUJBQWdCLEdBQWdCLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQVN4RCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNoQixhQUFRLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEQsZUFBVSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSWhFLG1CQUFjLEdBQW1CO1lBQy9CLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7WUFDbEQsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFF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QUFjO2dDQUMzRCxZQUFZLENBQUM7cUJBQ2hCO3lCQUFNLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTt3QkFDNUIsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUNyQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1IsS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHOzRCQUNsQixLQUFLLENBQUMsT0FBTztnQ0FDWCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsZUFBZSxDQUNoRSxDQUFDO3FCQUNIO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sWUFBWSxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNMLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzsrR0ExSlUsa0JBQWtCO21HQUFsQixrQkFBa0IsK1pDZC9CLHdxREF1REE7OzRGRHpDYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsWUFBWTs4QkFRVCxJQUFJO3NCQUFoQixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ08sT0FBTztzQkFBbkIsS0FBSztnQkFRRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDTSxhQUFhO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcclxudHlwZSBJbnB1dFR5cGUgPSAnbnVtYmVyJyB8ICdwYXNzd29yZCcgfCAndGV4dCcgfCAnY29sb3InO1xyXG5pbnRlcmZhY2UgRXJyb3JNYXNzYWdlIHtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIHBhdHRlcm4/OiBzdHJpbmc7XHJcbn1cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWlucHV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1pbnB1dCcgKyBlbnZpcm9ubWVudC50ZW1wTmFtZSxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLWlucHV0JyArIGVudmlyb25tZW50LnN0eWxlTmFtZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlSW5wdXRDb21wb25lbnQge1xyXG4gIGlucHV0VHlwZSE6IElucHV0VHlwZTtcclxuICBpc0Rpc2FibGUgPSBmYWxzZTtcclxuICBsYXN0VmFsdWUgPSAnJztcclxuICBASW5wdXQoKSBzZXQgdHlwZSh2YWx1ZTogSW5wdXRUeXBlKSB7XHJcbiAgICB0aGlzLmlucHV0VHlwZSA9IHZhbHVlO1xyXG4gIH1cclxuICBASW5wdXQoKSBjYW5TaG93V29yZGlmeUZhID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2FuU3BsaXROdW1iZXIgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjYW5IaWdobGlnaHRCYWNrZ3JvdW5kID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbWF4TGVuZ3RoID0gMjAwMDtcclxuICBASW5wdXQoKSBzaXplID0gJyc7XHJcbiAgQElucHV0KCkgaW5wdXRGb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycsIFtdKTtcclxuICBASW5wdXQoKSBzZXQgZGlzYWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc0Rpc2FibGUgPSB2YWx1ZTtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQmx1ckVtaXQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIHNldCBlcnJvck1lc3NhZ2VzKHZhbHVlOiBFcnJvck1hc3NhZ2VbXSkge1xyXG4gICAgdGhpcy5fZXJyb3JNZXNzYWdlcyA9IHRoaXMuX2Vycm9yTWVzc2FnZXMuY29uY2F0KHZhbHVlKTtcclxuICB9XHJcbiAgX2Vycm9yTWVzc2FnZXM6IEVycm9yTWFzc2FnZVtdID0gW1xyXG4gICAgeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAn2KfbjNmGINmB24zZhNivINiu2KfZhNuMINin2LPYqicgfSxcclxuICAgIHsgdHlwZTogJ3ByZVBheW1lbnQnLCBtZXNzYWdlOiAn2YXYqNmE2Log2LXYrduM2K0g2YbbjNiz2KonIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6ICdtaW5sZW5ndGgnLFxyXG4gICAgICBtZXNzYWdlOiAnJyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6ICdtYXhsZW5ndGgnLFxyXG4gICAgICBtZXNzYWdlOiAnJyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6ICdlbWFpbCcsXHJcbiAgICAgIG1lc3NhZ2U6ICfYp9uM2YXbjNmEINix2Kcg2KjZhyDYr9ix2LPYqiDZiNin2LHYryDZhtmF2KfbjNuM2K8nLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdHlwZTogJ21vYmlsZVBob25lJyxcclxuICAgICAgbWVzc2FnZTogJ9i02YXYp9ix2Ycg2YfZhdix2KfZhyDYp9i02KrYqNin2Ycg2YfYs9iqJyxcclxuICAgIH0sXHJcbiAgXTtcclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcclxuICAgICAgaWYgKHRoaXMubGFzdFZhbHVlICE9PSBjaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLmZvcm1hdFByaWNlKGNoYW5nZS50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZvcm1hdFByaWNlKGV2ZW50LnNyY0VsZW1lbnQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25QYXN0ZShldmVudDogYW55KSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBldmVudC5zcmNFbGVtZW50LnZhbHVlO1xyXG4gICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgICB0aGlzLmxhc3RWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICBpZiAodGhpcy5pbnB1dFR5cGUgPT09ICdudW1iZXInICYmIHRoaXMuY2FuU3BsaXROdW1iZXIpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodmFsdWUucmVwbGFjZUFsbCgnLCcsICcnKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlucHV0Rm9ybUNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCkge1xyXG4gICAgaWYgKHRoaXMuaW5wdXRUeXBlID09PSAnbnVtYmVyJyAmJiB0aGlzLmNhblNwbGl0TnVtYmVyKSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWUucmVwbGFjZUFsbCgnLCcsICcnKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMuaW5wdXRGb3JtQ29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5pbnB1dEZvcm1Db250cm9sLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5vbkJsdXJFbWl0LmVtaXQodGhpcy5pbnB1dEZvcm1Db250cm9sLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uS2V5UHJlc3MoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dEZvcm1Db250cm9sLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoID09IHRoaXMubWF4TGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9ybWF0UHJpY2UoZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuaW5wdXRUeXBlID09PSAnbnVtYmVyJyAmJiB0aGlzLmNhblNwbGl0TnVtYmVyKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IGV2ZW50O1xyXG4gICAgICAgIHZhbHVlID0gTnVtYmVyKHZhbHVlLnJlcGxhY2VBbGwoJywnLCAnJykpO1xyXG4gICAgICAgIGlmIChpc05hTih2YWx1ZSkpIHtcclxuICAgICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgICAgICB0aGlzLmxhc3RWYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBmb3JtYXRWYWx1ZSA9IHZhbHVlXHJcbiAgICAgICAgICAgIC50b1N0cmluZygpXHJcbiAgICAgICAgICAgIC5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCAnLCcpO1xyXG4gICAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKGZvcm1hdFZhbHVlKTtcclxuICAgICAgICAgIHRoaXMubGFzdFZhbHVlID0gZm9ybWF0VmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5pbnB1dEZvcm1Db250cm9sLmVycm9ycykge1xyXG4gICAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZS5yZXBsYWNlQWxsKCcsJywgJycpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5pbnB1dEZvcm1Db250cm9sLmVycm9ycykge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgZXJyb3JNYXNzYWdlKCk6IEVycm9yTWFzc2FnZSB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAodGhpcy5pbnB1dEZvcm1Db250cm9sLmVycm9ycykge1xyXG4gICAgICBpZiAoT2JqZWN0LmtleXModGhpcy5pbnB1dEZvcm1Db250cm9sLmVycm9ycykubGVuZ3RoICE9IDApIHtcclxuICAgICAgICBsZXQgZXJyb3JNZXNzYWdlO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuaW5wdXRGb3JtQ29udHJvbC5lcnJvcnMpLmZpbHRlcigoa2V5KSA9PiB7XHJcbiAgICAgICAgICBlcnJvck1lc3NhZ2UgPSB0aGlzLl9lcnJvck1lc3NhZ2VzLmZpbmQoXHJcbiAgICAgICAgICAgIChlcnJvcikgPT4gZXJyb3IudHlwZSA9PT0ga2V5XHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UgJiYga2V5ID09PSAnbWlubGVuZ3RoJykge1xyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UubWVzc2FnZSA9XHJcbiAgICAgICAgICAgICAgJyDYrdiv2KfZgtmEINqp2KfYsdqp2KrYsSDZhdis2KfYsiAnICtcclxuICAgICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2w/LmVycm9ycz8uWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aCArXHJcbiAgICAgICAgICAgICAgJyDZhduMINio2KfYtNivICAnO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChlcnJvck1lc3NhZ2UgJiYga2V5ID09PSAnbWF4bGVuZ3RoJykge1xyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UubWVzc2FnZSA9XHJcbiAgICAgICAgICAgICAgJyDYrdiv2Kfaqdir2LEg2qnYp9ix2qnYqtixINmF2KzYp9iyICAnICtcclxuICAgICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2w/LmVycm9ycz8uWydtYXhsZW5ndGgnXS5yZXF1aXJlZExlbmd0aCArXHJcbiAgICAgICAgICAgICAgJyDZhduMINio2KfYtNivICAnO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdwYXR0ZXJuJykge1xyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSB0aGlzLl9lcnJvck1lc3NhZ2VzLmZpbmQoXHJcbiAgICAgICAgICAgICAgKGVycm9yKSA9PlxyXG4gICAgICAgICAgICAgICAgZXJyb3IudHlwZSA9PT0ga2V5ICYmXHJcbiAgICAgICAgICAgICAgICBlcnJvci5wYXR0ZXJuID09PVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2w/LmVycm9ycz8uWydwYXR0ZXJuJ10/LnJlcXVpcmVkUGF0dGVyblxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImNvbnRhaW5lci1pbnB1dFwiXHJcbiAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgIGVycm9yOlxyXG4gICAgICAgIChpbnB1dEZvcm1Db250cm9sLnRvdWNoZWQgfHwgaW5wdXRGb3JtQ29udHJvbC5kaXJ0eSkgJiZcclxuICAgICAgICBpbnB1dEZvcm1Db250cm9sLmVycm9yc1xyXG4gICAgfVwiXHJcbiAgPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIFt0eXBlXT1cImlucHV0VHlwZVwiXHJcbiAgICAgIGNsYXNzPVwiYS1pbnB1dC1zdHlsZVwiXHJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dEZvcm1Db250cm9sXCJcclxuICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAoa2V5dXApPVwiY2hhbmdlKCRldmVudClcIlxyXG4gICAgICAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCJcclxuICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICdoYXZlLXZhbHVlJzogaW5wdXRGb3JtQ29udHJvbC52YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+IDAsXHJcbiAgICAgICAgJ2hpZ2hsaWdodC1iYWNrZ3JvdW5kJzpcclxuICAgICAgICAgIGNhbkhpZ2hsaWdodEJhY2tncm91bmQgJiZcclxuICAgICAgICAgIGlucHV0Rm9ybUNvbnRyb2wudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICAgICEoXHJcbiAgICAgICAgICAgIChpbnB1dEZvcm1Db250cm9sLnRvdWNoZWQgfHwgaW5wdXRGb3JtQ29udHJvbC5kaXJ0eSkgJiZcclxuICAgICAgICAgICAgaW5wdXRGb3JtQ29udHJvbC5lcnJvcnNcclxuICAgICAgICAgICksXHJcbiAgICAgICAgJ2Rpc2FibGUtaW5wdXQnOiBpc0Rpc2FibGVcclxuICAgICAgfVwiXHJcbiAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKClcIlxyXG4gICAgLz5cclxuICAgIDxsYWJlbCAqbmdJZj1cInBsYWNlaG9sZGVyLmxlbmd0aCA+IDBcIj57eyBwbGFjZWhvbGRlciB9fSA8L2xhYmVsPlxyXG4gICAgPGRpdiBjbGFzcz1cImxhYmVsLWVycm9yIG92ZXJmbG93LWhpZGRlblwiPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIGNsYXNzPVwibGFiZWwtbnVtYmVyXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgY2FuU2hvd1dvcmRpZnlGYSAmJlxyXG4gICAgICAgICAgaW5wdXRGb3JtQ29udHJvbC52YWx1ZS50b1N0cmluZygpLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgIGlucHV0VHlwZSA9PT0gJ251bWJlcidcclxuICAgICAgICBcIlxyXG4gICAgICAgID48YXBwLWNvcmUtbnVtYmVyXHJcbiAgICAgICAgICBbY2FuU2hvd1dvcmRJblRvb2xUaXBdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW3R5cGVdPVwiJ3dvcmQnXCJcclxuICAgICAgICAgIFtudW1iZXJdPVwiaW5wdXRGb3JtQ29udHJvbC52YWx1ZVwiXHJcbiAgICAgICAgPjwvYXBwLWNvcmUtbnVtYmVyXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIChpbnB1dEZvcm1Db250cm9sLnRvdWNoZWQgfHwgaW5wdXRGb3JtQ29udHJvbC5kaXJ0eSkgJiZcclxuICAgICAgICAgIGlucHV0Rm9ybUNvbnRyb2wuZXJyb3JzXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGVycm9yTWFzc2FnZT8ubWVzc2FnZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYWxjb24tbGliL3NyYy9saWIvY29yZS1pbnB1dC9jb3JlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhbGNvbi1saWIvc3JjL2xpYi9jb3JlLWlucHV0L2NvcmUtaW5wdXQtZmFsY29uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O0FBWTdELE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFPRSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFJTixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLHFCQUFnQixHQUFnQixJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFTeEQsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDaEIsYUFBUSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BELGVBQVUsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUtoRSxtQkFBYyxHQUFtQjtZQUMvQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFO1lBQ2xELEVBQUUsSUFBSSxFQUFF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YyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XHJcbnR5cGUgSW5wdXRUeXBlID0gJ251bWJlcicgfCAncGFzc3dvcmQnIHwgJ3RleHQnIHwgJ2NvbG9yJztcclxuaW50ZXJmYWNlIEVycm9yTWFzc2FnZSB7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBwYXR0ZXJuPzogc3RyaW5nO1xyXG59XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtaW5wdXQnICsgZW52aXJvbm1lbnQudGVtcE5hbWUsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1pbnB1dCcgKyBlbnZpcm9ubWVudC5zdHlsZU5hbWVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZUlucHV0Q29tcG9uZW50IHtcclxuICBpbnB1dFR5cGUhOiBJbnB1dFR5cGU7XHJcbiAgaXNEaXNhYmxlID0gZmFsc2U7XHJcbiAgbGFzdFZhbHVlID0gJyc7XHJcbiAgQElucHV0KCkgc2V0IHR5cGUodmFsdWU6IElucHV0VHlwZSkge1xyXG4gICAgdGhpcy5pbnB1dFR5cGUgPSB2YWx1ZTtcclxuICB9XHJcbiAgQElucHV0KCkgY2FuU2hvd1dvcmRpZnlGYSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNhblNwbGl0TnVtYmVyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2FuSGlnaGxpZ2h0QmFja2dyb3VuZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1heExlbmd0aCA9IDIwMDA7XHJcbiAgQElucHV0KCkgc2l6ZSA9ICcnO1xyXG4gIEBJbnB1dCgpIGlucHV0Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCBbXSk7XHJcbiAgQElucHV0KCkgc2V0IGRpc2FibGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNEaXNhYmxlID0gdmFsdWU7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5lbmFibGUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcclxuICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkJsdXJFbWl0OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBzZXQgZXJyb3JNZXNzYWdlcyh2YWx1ZTogRXJyb3JNYXNzYWdlW10pIHtcclxuICAgIHRoaXMuX2Vycm9yTWVzc2FnZXMgPSB0aGlzLl9lcnJvck1lc3NhZ2VzLmNvbmNhdCh2YWx1ZSk7XHJcbiAgfVxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcpIGlucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcbiAgX2Vycm9yTWVzc2FnZXM6IEVycm9yTWFzc2FnZVtdID0gW1xyXG4gICAgeyB0eXBlOiAncmVxdWlyZWQnLCBtZXNzYWdlOiAn2KfbjNmGINmB24zZhNivINiu2KfZhNuMINin2LPYqicgfSxcclxuICAgIHsgdHlwZTogJ3ByZVBheW1lbnQnLCBtZXNzYWdlOiAn2YXYqNmE2Log2LXYrduM2K0g2YbbjNiz2KonIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6ICdtaW5sZW5ndGgnLFxyXG4gICAgICBtZXNzYWdlOiAnJyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6ICdtYXhsZW5ndGgnLFxyXG4gICAgICBtZXNzYWdlOiAnJyxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6ICdlbWFpbCcsXHJcbiAgICAgIG1lc3NhZ2U6ICfYp9uM2YXbjNmEINix2Kcg2KjZhyDYr9ix2LPYqiDZiNin2LHYryDZhtmF2KfbjNuM2K8nLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgdHlwZTogJ21vYmlsZVBob25lJyxcclxuICAgICAgbWVzc2FnZTogJ9i02YXYp9ix2Ycg2YfZhdix2KfZhyDYp9i02KrYqNin2Ycg2YfYs9iqJyxcclxuICAgIH0sXHJcbiAgXTtcclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcclxuICAgICAgaWYgKHRoaXMubGFzdFZhbHVlICE9PSBjaGFuZ2UpIHtcclxuICAgICAgICB0aGlzLmZvcm1hdFByaWNlKGNoYW5nZS50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmZvcm1hdFByaWNlKGV2ZW50LnNyY0VsZW1lbnQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0SW5wdXRGb2N1cygpIHtcclxuICAgIGlmICh0aGlzLmlucHV0RWxlbWVudCkge1xyXG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvblBhc3RlKGV2ZW50OiBhbnkpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnNyY0VsZW1lbnQudmFsdWU7XHJcbiAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIHRoaXMubGFzdFZhbHVlID0gdmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLmlucHV0VHlwZSA9PT0gJ251bWJlcicgJiYgdGhpcy5jYW5TcGxpdE51bWJlcikge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh2YWx1ZS5yZXBsYWNlQWxsKCcsJywgJycpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIXRoaXMuaW5wdXRGb3JtQ29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LCAxMCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dFR5cGUgPT09ICdudW1iZXInICYmIHRoaXMuY2FuU3BsaXROdW1iZXIpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZS5yZXBsYWNlQWxsKCcsJywgJycpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghdGhpcy5pbnB1dEZvcm1Db250cm9sLmVycm9ycykge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQmx1ckVtaXQuZW1pdCh0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25LZXlQcmVzcygpIHtcclxuICAgIGlmICh0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPT0gdGhpcy5tYXhMZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmb3JtYXRQcmljZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dFR5cGUgPT09ICdudW1iZXInICYmIHRoaXMuY2FuU3BsaXROdW1iZXIpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gZXZlbnQ7XHJcbiAgICAgICAgdmFsdWUgPSBOdW1iZXIodmFsdWUucmVwbGFjZUFsbCgnLCcsICcnKSk7XHJcbiAgICAgICAgaWYgKGlzTmFOKHZhbHVlKSkge1xyXG4gICAgICAgICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgICAgICAgIHRoaXMubGFzdFZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGZvcm1hdFZhbHVlID0gdmFsdWVcclxuICAgICAgICAgICAgLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csICcsJyk7XHJcbiAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0VmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5sYXN0VmFsdWUgPSBmb3JtYXRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmlucHV0Rm9ybUNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5pbnB1dEZvcm1Db250cm9sLnZhbHVlLnJlcGxhY2VBbGwoJywnLCAnJykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMTApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCF0aGlzLmlucHV0Rm9ybUNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBlcnJvck1hc3NhZ2UoKTogRXJyb3JNYXNzYWdlIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICh0aGlzLmlucHV0Rm9ybUNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmlucHV0Rm9ybUNvbnRyb2wuZXJyb3JzKS5sZW5ndGggIT0gMCkge1xyXG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2U7XHJcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5pbnB1dEZvcm1Db250cm9sLmVycm9ycykuZmlsdGVyKChrZXkpID0+IHtcclxuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IHRoaXMuX2Vycm9yTWVzc2FnZXMuZmluZChcclxuICAgICAgICAgICAgKGVycm9yKSA9PiBlcnJvci50eXBlID09PSBrZXksXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UgJiYga2V5ID09PSAnbWlubGVuZ3RoJykge1xyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UubWVzc2FnZSA9XHJcbiAgICAgICAgICAgICAgJyDYrdiv2KfZgtmEINqp2KfYsdqp2KrYsSDZhdis2KfYsiAnICtcclxuICAgICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2w/LmVycm9ycz8uWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aCArXHJcbiAgICAgICAgICAgICAgJyDZhduMINio2KfYtNivICAnO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChlcnJvck1lc3NhZ2UgJiYga2V5ID09PSAnbWF4bGVuZ3RoJykge1xyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UubWVzc2FnZSA9XHJcbiAgICAgICAgICAgICAgJyDYrdiv2Kfaqdir2LEg2qnYp9ix2qnYqtixINmF2KzYp9iyICAnICtcclxuICAgICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2w/LmVycm9ycz8uWydtYXhsZW5ndGgnXS5yZXF1aXJlZExlbmd0aCArXHJcbiAgICAgICAgICAgICAgJyDZhduMINio2KfYtNivICAnO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdwYXR0ZXJuJykge1xyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSB0aGlzLl9lcnJvck1lc3NhZ2VzLmZpbmQoXHJcbiAgICAgICAgICAgICAgKGVycm9yKSA9PlxyXG4gICAgICAgICAgICAgICAgZXJyb3IudHlwZSA9PT0ga2V5ICYmXHJcbiAgICAgICAgICAgICAgICBlcnJvci5wYXR0ZXJuID09PVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2w/LmVycm9ycz8uWydwYXR0ZXJuJ10/LnJlcXVpcmVkUGF0dGVybixcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgdGFiaW5kZXg9XCIwXCIgKGZvY3VzaW4pPVwic2V0SW5wdXRGb2N1cygpXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJjb250YWluZXItaW5wdXRcIlxyXG4gICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICBlcnJvcjpcclxuICAgICAgICAoaW5wdXRGb3JtQ29udHJvbC50b3VjaGVkIHx8IGlucHV0Rm9ybUNvbnRyb2wuZGlydHkpICYmXHJcbiAgICAgICAgaW5wdXRGb3JtQ29udHJvbC5lcnJvcnMsXHJcbiAgICB9XCJcclxuICA+XHJcbiAgICA8aW5wdXRcclxuICAgICAgI2lucHV0RWxlbWVudFxyXG4gICAgICBbdHlwZV09XCJpbnB1dFR5cGVcIlxyXG4gICAgICBjbGFzcz1cImEtaW5wdXQtc3R5bGVcIlxyXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiaW5wdXRGb3JtQ29udHJvbFwiXHJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgKGtleXVwKT1cImNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAnaGF2ZS12YWx1ZSc6IGlucHV0Rm9ybUNvbnRyb2wudmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPiAwLFxyXG4gICAgICAgICdoaWdobGlnaHQtYmFja2dyb3VuZCc6XHJcbiAgICAgICAgICBjYW5IaWdobGlnaHRCYWNrZ3JvdW5kICYmXHJcbiAgICAgICAgICBpbnB1dEZvcm1Db250cm9sLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoID09PSAwICYmXHJcbiAgICAgICAgICAhKFxyXG4gICAgICAgICAgICAoaW5wdXRGb3JtQ29udHJvbC50b3VjaGVkIHx8IGlucHV0Rm9ybUNvbnRyb2wuZGlydHkpICYmXHJcbiAgICAgICAgICAgIGlucHV0Rm9ybUNvbnRyb2wuZXJyb3JzXHJcbiAgICAgICAgICApLFxyXG4gICAgICAgICdkaXNhYmxlLWlucHV0JzogaXNEaXNhYmxlLFxyXG4gICAgICB9XCJcclxuICAgICAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoKVwiXHJcbiAgICAvPlxyXG4gICAgPGxhYmVsICpuZ0lmPVwicGxhY2Vob2xkZXIubGVuZ3RoID4gMFwiPnt7IHBsYWNlaG9sZGVyIH19IDwvbGFiZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwibGFiZWwtZXJyb3Igb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJsYWJlbC1udW1iZXJcIlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICBjYW5TaG93V29yZGlmeUZhICYmXHJcbiAgICAgICAgICBpbnB1dEZvcm1Db250cm9sLnZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgICAgaW5wdXRUeXBlID09PSAnbnVtYmVyJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgPjxhcHAtY29yZS1udW1iZXJcclxuICAgICAgICAgIFtjYW5TaG93V29yZEluVG9vbFRpcF09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbdHlwZV09XCInd29yZCdcIlxyXG4gICAgICAgICAgW251bWJlcl09XCJpbnB1dEZvcm1Db250cm9sLnZhbHVlXCJcclxuICAgICAgICA+PC9hcHAtY29yZS1udW1iZXJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgKGlucHV0Rm9ybUNvbnRyb2wudG91Y2hlZCB8fCBpbnB1dEZvcm1Db250cm9sLmRpcnR5KSAmJlxyXG4gICAgICAgICAgaW5wdXRGb3JtQ29udHJvbC5lcnJvcnNcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZXJyb3JNYXNzYWdlPy5tZXNzYWdlIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
@@ -38,6 +38,7 @@ export class CoreMultiSelectComponent {
|
|
|
38
38
|
constructor(cdr, elRef) {
|
|
39
39
|
this.cdr = cdr;
|
|
40
40
|
this.elRef = elRef;
|
|
41
|
+
this.focusItem = undefined;
|
|
41
42
|
this.onItemSelected = new EventEmitter();
|
|
42
43
|
this.canAddValueKeyAndTitleKeyInSearchKeys = true;
|
|
43
44
|
this.inputFormControl = new FormControl('', []);
|
|
@@ -53,7 +54,8 @@ export class CoreMultiSelectComponent {
|
|
|
53
54
|
this._items = [];
|
|
54
55
|
this._defaultValue = [];
|
|
55
56
|
this.initCounter = 0;
|
|
56
|
-
this.
|
|
57
|
+
this.currentItemIndex = 0;
|
|
58
|
+
this.randomId = 0;
|
|
57
59
|
this.hasTitleKey = false;
|
|
58
60
|
this.hasValueKey = false;
|
|
59
61
|
this.hasItems = false;
|
|
@@ -70,7 +72,15 @@ export class CoreMultiSelectComponent {
|
|
|
70
72
|
this.newItems = this.changeItemsType(this._items);
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
|
-
async onChangeText() {
|
|
75
|
+
async onChangeText(event = undefined, canOpenMenu = false) {
|
|
76
|
+
if (event &&
|
|
77
|
+
(event.key === 'Enter' ||
|
|
78
|
+
event.key === 'Tab' ||
|
|
79
|
+
event.key === 'Escape' ||
|
|
80
|
+
event.key === 'ArrowDown' ||
|
|
81
|
+
event.key === 'ArrowUp')) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
74
84
|
if (this.searchText.length === 0) {
|
|
75
85
|
this.filteredItems.next(this.newItems);
|
|
76
86
|
}
|
|
@@ -89,9 +99,22 @@ export class CoreMultiSelectComponent {
|
|
|
89
99
|
else {
|
|
90
100
|
this.filteredItems.next(this.newItems);
|
|
91
101
|
}
|
|
102
|
+
if (this.filteredItems.getValue().length > 0) {
|
|
103
|
+
this.focusItem = this.filteredItems.getValue()[0];
|
|
104
|
+
}
|
|
105
|
+
if (canOpenMenu &&
|
|
106
|
+
typeof this.searchText === 'string' &&
|
|
107
|
+
this.searchText.length > 0) {
|
|
108
|
+
this.isOpenMenu = true;
|
|
109
|
+
}
|
|
92
110
|
}
|
|
93
111
|
ngOnInit() {
|
|
112
|
+
this.randomId = Math.floor(Math.random() * 10000);
|
|
94
113
|
this.keys = this.searchKeys.length > 0 ? this.searchKeys.split(',') : [];
|
|
114
|
+
if (this.canAddValueKeyAndTitleKeyInSearchKeys) {
|
|
115
|
+
this.keys.push(this._titleKey);
|
|
116
|
+
this.keys.push(this._valueKey);
|
|
117
|
+
}
|
|
95
118
|
this.initializeDefaultValue();
|
|
96
119
|
this.onChangeText();
|
|
97
120
|
}
|
|
@@ -112,18 +135,20 @@ export class CoreMultiSelectComponent {
|
|
|
112
135
|
}
|
|
113
136
|
});
|
|
114
137
|
}
|
|
115
|
-
|
|
138
|
+
handleKeyBoard(event) {
|
|
139
|
+
const key = event;
|
|
116
140
|
const items = this.filteredItems.getValue();
|
|
117
|
-
this.
|
|
118
|
-
switch (
|
|
141
|
+
this.currentItemIndex = items.findIndex((item) => item[this._valueKey] === this.focusItem?.value);
|
|
142
|
+
switch (key.key) {
|
|
119
143
|
case 'Enter':
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
else {
|
|
124
|
-
this.onItemSelect(items[this.currentIndex], false);
|
|
144
|
+
event.preventDefault();
|
|
145
|
+
if (this.focusItem) {
|
|
146
|
+
this.onItemSelect(items[this.currentItemIndex], false);
|
|
125
147
|
}
|
|
126
148
|
break;
|
|
149
|
+
case ' ':
|
|
150
|
+
this.isOpenMenu = !this.isOpenMenu;
|
|
151
|
+
break;
|
|
127
152
|
case 'Backspace':
|
|
128
153
|
if (this.searchText.length > 0)
|
|
129
154
|
return;
|
|
@@ -138,19 +163,19 @@ export class CoreMultiSelectComponent {
|
|
|
138
163
|
break;
|
|
139
164
|
case 'ArrowDown':
|
|
140
165
|
event.preventDefault();
|
|
141
|
-
if (this.isOpenMenu && items.length - 1 > this.
|
|
142
|
-
this.
|
|
143
|
-
this.
|
|
166
|
+
if (this.isOpenMenu && items.length - 1 > this.currentItemIndex) {
|
|
167
|
+
this.currentItemIndex = this.currentItemIndex + 1;
|
|
168
|
+
this.focusItem = items[this.currentItemIndex];
|
|
169
|
+
this.scrollToActive();
|
|
144
170
|
}
|
|
145
|
-
this.scrollToActive();
|
|
146
171
|
break;
|
|
147
172
|
case 'ArrowUp':
|
|
148
173
|
event.preventDefault();
|
|
149
|
-
if (this.isOpenMenu && this.
|
|
150
|
-
this.
|
|
151
|
-
this.
|
|
174
|
+
if (this.isOpenMenu && this.currentItemIndex > 0) {
|
|
175
|
+
this.currentItemIndex = this.currentItemIndex - 1;
|
|
176
|
+
this.focusItem = items[this.currentItemIndex];
|
|
177
|
+
this.scrollToActive();
|
|
152
178
|
}
|
|
153
|
-
this.scrollToActive();
|
|
154
179
|
break;
|
|
155
180
|
case 'Tab':
|
|
156
181
|
this.isOpenMenu = false;
|
|
@@ -162,7 +187,7 @@ export class CoreMultiSelectComponent {
|
|
|
162
187
|
this.cdr.detectChanges();
|
|
163
188
|
}
|
|
164
189
|
scrollToActive() {
|
|
165
|
-
const element = document.getElementById('scroll' + this.
|
|
190
|
+
const element = document.getElementById('scroll' + this.randomId + '-' + this.currentItemIndex);
|
|
166
191
|
element?.scrollIntoView({
|
|
167
192
|
block: 'center',
|
|
168
193
|
behavior: 'smooth',
|
|
@@ -231,11 +256,11 @@ export class CoreMultiSelectComponent {
|
|
|
231
256
|
}
|
|
232
257
|
}
|
|
233
258
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreMultiSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
234
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreMultiSelectComponent, selector: "core-multi-select", inputs: { canAddValueKeyAndTitleKeyInSearchKeys: "canAddValueKeyAndTitleKeyInSearchKeys", inputFormControl: "inputFormControl", singleSelectItems: "singleSelectItems", label: "label", searchKeys: "searchKeys", titleKey: "titleKey", valueKey: "valueKey", items: "items", defaultValue: "defaultValue" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputSearch"], descendants: true }], ngImport: i0, template: "<div\r\n tabindex=\"
|
|
259
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CoreMultiSelectComponent, selector: "core-multi-select", inputs: { canAddValueKeyAndTitleKeyInSearchKeys: "canAddValueKeyAndTitleKeyInSearchKeys", inputFormControl: "inputFormControl", singleSelectItems: "singleSelectItems", label: "label", searchKeys: "searchKeys", titleKey: "titleKey", valueKey: "valueKey", items: "items", defaultValue: "defaultValue" }, outputs: { onItemSelected: "onItemSelected" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputSearch"], descendants: true }], ngImport: i0, template: "<div\r\n (keydown)=\"handleKeyBoard($event)\"\r\n tabindex=\"0\"\r\n class=\"dropdown\"\r\n (focusin)=\"setInputFocus()\"\r\n (focusout)=\"focusOut($event)\"\r\n>\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-focus': focused,\r\n 'select-clicked': isOpenMenu,\r\n selectError: inputFormControl.touched && inputFormControl.errors,\r\n }\"\r\n (click)=\"openMenuClick()\"\r\n >\r\n <span class=\"placeholder-top\" *ngIf=\"isSelectedItems || focused\">{{\r\n label\r\n }}</span>\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n\r\n <input\r\n #inputSearch\r\n autocomplete=\"off\"\r\n id=\"inputSearch\"\r\n class=\"input bg-transparent text-sm focus:outline-none\"\r\n [(ngModel)]=\"searchText\"\r\n (keyup)=\"onChangeText($event, true)\"\r\n (focus)=\"focused = true\"\r\n (blur)=\"focused = false\"\r\n />\r\n <!-- (keydown)=\"handleKeyBoard($event)\" -->\r\n <span\r\n class=\"text-content text-right\"\r\n [ngClass]=\"[\r\n label.length > 0 && !isSelectedItems ? 'placeholder' : 'selected',\r\n ]\"\r\n >{{ isSelectedItems || focused ? text : label }}</span\r\n >\r\n </div>\r\n <ul class=\"menu\" [ngClass]=\"{ 'menu-open': isOpenMenu }\">\r\n <app-core-multi-select-row\r\n *ngFor=\"let item of filteredItems | async; let i = index\"\r\n [item]=\"item\"\r\n [id]=\"'scroll' + randomId + '-' + i\"\r\n [isSelected]=\"selectedItems[item.value] ? true : false\"\r\n [focusItemId]=\"focusItem?.value\"\r\n (onSelect)=\"onItemSelect(item, true)\"\r\n >\r\n </app-core-multi-select-row>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"inputFormControl.touched && inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown:focus{outline:none}.dropdown .select{background:#fff;color:#304050;display:flex;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;overflow:hidden;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select .text-content{white-space:nowrap;display:block;overflow:hidden;word-wrap:break-word;text-overflow:ellipsis}.dropdown .select .selected{padding-inline:12px;font-size:14px;max-width:90%;color:#000000b3;flex:0 0 auto;overflow:hidden;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline-start:16px;flex:0 0 auto}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);opacity:0;display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;margin-inline:4px;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6;box-shadow:0 1px 2px #00000021,0 4px 4px #0000001a}.dropdown .menu .active{background:#ced4da!important}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}.select-focus{background-color:#f2f4f70d!important;border-radius:3px;border:2px solid rgba(19,92,175,.397)!important}.input{flex:1 1 auto;width:100%;min-width:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.CoreMultiSelectRowComponent, selector: "app-core-multi-select-row", inputs: ["isSelected", "focusItemId", "item"], outputs: ["onSelect"] }, { kind: "component", type: i4.ArrowDownIconComponent, selector: "arrow-down-icon" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] }); }
|
|
235
260
|
}
|
|
236
261
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CoreMultiSelectComponent, decorators: [{
|
|
237
262
|
type: Component,
|
|
238
|
-
args: [{ selector: 'core-multi-select', template: "<div\r\n tabindex=\"
|
|
263
|
+
args: [{ selector: 'core-multi-select', template: "<div\r\n (keydown)=\"handleKeyBoard($event)\"\r\n tabindex=\"0\"\r\n class=\"dropdown\"\r\n (focusin)=\"setInputFocus()\"\r\n (focusout)=\"focusOut($event)\"\r\n>\r\n <div\r\n class=\"select\"\r\n [ngClass]=\"{\r\n 'select-focus': focused,\r\n 'select-clicked': isOpenMenu,\r\n selectError: inputFormControl.touched && inputFormControl.errors,\r\n }\"\r\n (click)=\"openMenuClick()\"\r\n >\r\n <span class=\"placeholder-top\" *ngIf=\"isSelectedItems || focused\">{{\r\n label\r\n }}</span>\r\n <arrow-down-icon\r\n class=\"caret fill-secondary-text-color h-6\"\r\n [ngClass]=\"{ 'caret-rotate': isOpenMenu }\"\r\n ></arrow-down-icon>\r\n\r\n <input\r\n #inputSearch\r\n autocomplete=\"off\"\r\n id=\"inputSearch\"\r\n class=\"input bg-transparent text-sm focus:outline-none\"\r\n [(ngModel)]=\"searchText\"\r\n (keyup)=\"onChangeText($event, true)\"\r\n (focus)=\"focused = true\"\r\n (blur)=\"focused = false\"\r\n />\r\n <!-- (keydown)=\"handleKeyBoard($event)\" -->\r\n <span\r\n class=\"text-content text-right\"\r\n [ngClass]=\"[\r\n label.length > 0 && !isSelectedItems ? 'placeholder' : 'selected',\r\n ]\"\r\n >{{ isSelectedItems || focused ? text : label }}</span\r\n >\r\n </div>\r\n <ul class=\"menu\" [ngClass]=\"{ 'menu-open': isOpenMenu }\">\r\n <app-core-multi-select-row\r\n *ngFor=\"let item of filteredItems | async; let i = index\"\r\n [item]=\"item\"\r\n [id]=\"'scroll' + randomId + '-' + i\"\r\n [isSelected]=\"selectedItems[item.value] ? true : false\"\r\n [focusItemId]=\"focusItem?.value\"\r\n (onSelect)=\"onItemSelect(item, true)\"\r\n >\r\n </app-core-multi-select-row>\r\n </ul>\r\n <div class=\"label-error overflow-hidden\">\r\n <span\r\n *ngIf=\"inputFormControl.touched && inputFormControl.errors?.['required']\"\r\n >\u0627\u06CC\u0646 \u0641\u06CC\u0644\u062F \u062E\u0627\u0644\u06CC \u0627\u0633\u062A</span\r\n >\r\n </div>\r\n</div>\r\n", styles: [".dropdown{min-width:15em;position:relative;width:100%;min-width:120px}.dropdown:focus{outline:none}.dropdown .select{background:#fff;color:#304050;display:flex;justify-content:space-between;flex-direction:row-reverse;align-items:center;border:1px solid #ced4da;border-radius:4px;padding:8px;cursor:pointer;overflow:hidden;transition:background .3s;font-size:12px;-webkit-user-select:none;user-select:none}.dropdown .select:hover{background:#fbfbfb}.dropdown .select .text-content{white-space:nowrap;display:block;overflow:hidden;word-wrap:break-word;text-overflow:ellipsis}.dropdown .select .selected{padding-inline:12px;font-size:14px;max-width:90%;color:#000000b3;flex:0 0 auto;overflow:hidden;-webkit-user-select:none;user-select:none}.dropdown .select .placeholder-top{position:absolute;right:13px;background:#fff;top:-8px;padding-inline:6px;font-size:11px;color:#888}.dropdown .select .caret{color:#595c5f;-webkit-user-select:none;user-select:none}.dropdown .select .caret-rotate{transform:rotate(180deg)}.dropdown .select .placeholder{color:#888;padding-inline-start:16px;flex:0 0 auto}.dropdown .select-clicked{border:1px solid rgba(19,92,175,.397)}.dropdown .menu{list-style:none;padding-inline:0px;background:#fff;border:1px #e3e8f1 solid;box-shadow:0 .5em 1em #0003;border-radius:.5em;color:#595c5f;position:absolute;top:40px;left:50%;width:100%;transform:translate(-50%);opacity:0;display:none;transition:0,2s;z-index:10;max-height:200px;overflow:auto}.dropdown .menu li{padding:.7em .5em;margin:.3em 0;margin-inline:4px;border-radius:.5em;font-size:14px;text-align:start;cursor:pointer}.dropdown .menu li:hover{background:#f6f6f6;box-shadow:0 1px 2px #00000021,0 4px 4px #0000001a}.dropdown .menu .active{background:#ced4da!important}.dropdown .menu-open{display:block;opacity:1}.dropdown .label-error{color:red;font-size:13px;margin-block-start:4px;min-height:21px;width:100%;display:inline-block!important;text-align:start}.dropdown .selectError{border:1px solid #fe5f5f!important}.select-focus{background-color:#f2f4f70d!important;border-radius:3px;border:2px solid rgba(19,92,175,.397)!important}.input{flex:1 1 auto;width:100%;min-width:0}\n"] }]
|
|
239
264
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { onItemSelected: [{
|
|
240
265
|
type: Output
|
|
241
266
|
}], inputElement: [{
|
|
@@ -261,4 +286,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
261
286
|
type: Input,
|
|
262
287
|
args: [{ required: true }]
|
|
263
288
|
}] } });
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1tdWx0aS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLWxpYi9zcmMvbGliL2NvcmUtbXVsdGktc2VsZWN0L2NvcmUtbXVsdGktc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhbGNvbi1saWIvc3JjL2xpYi9jb3JlLW11bHRpLXNlbGVjdC9jb3JlLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBVXZDLE1BQU0sT0FBTyx3QkFBd0I7SUFRbkMsSUFBYSxRQUFRLENBQUMsSUFBUztRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBYSxRQUFRLENBQUMsSUFBUztRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBYSxLQUFLLENBQUMsSUFBUztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFD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cnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAnLi4vZmFsY29uVHlwZXMnO1xyXG5pbnRlcmZhY2UgSVNlbGVjdGVkSXRlbXNEaWN0aW9uYXJ5IHtcclxuICBbaW5kZXg6IHN0cmluZ106IGFueTtcclxufVxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtbXVsdGktc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1tdWx0aS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtbXVsdGktc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlTXVsdGlTZWxlY3RDb21wb25lbnQge1xyXG4gIEBPdXRwdXQoKSBvbkl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRTZWFyY2gnKSBpbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIEBJbnB1dCgpIGNhbkFkZFZhbHVlS2V5QW5kVGl0bGVLZXlJblNlYXJjaEtleXM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGlucHV0Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCBbXSk7XHJcbiAgQElucHV0KCkgc2luZ2xlU2VsZWN0SXRlbXM6IHN0cmluZ1tdID0gW107XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHNlYXJjaEtleXM6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHNldCB0aXRsZUtleShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuX3RpdGxlS2V5ID0gZGF0YTtcclxuICAgIHRoaXMuaGFzVGl0bGVLZXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCB2YWx1ZUtleShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuX3ZhbHVlS2V5ID0gZGF0YTtcclxuICAgIHRoaXMuaGFzVmFsdWVLZXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBpdGVtcyhkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuX2l0ZW1zID0gZGF0YTtcclxuICAgIHRoaXMuaGFzSXRlbXMgPSB0cnVlO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNldCBkZWZhdWx0VmFsdWUoZGF0YTogYW55W10pIHtcclxuICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9IGRhdGE7XHJcbiAgICB0aGlzLmhhc0RlZmF1bHRWYWx1ZSA9IHRydWU7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZURlZmF1bHRWYWx1ZSgpO1xyXG4gICAgdGhpcy5zaG93VGV4dCgpO1xyXG4gIH1cclxuICBzZWxlY3RlZEl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCB7IHRpdGxlOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT5bXSA9IFtdO1xyXG4gIGZpbHRlcmVkSXRlbXM6IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XHJcbiAgZm9jdXNJdGVtSWQgPSAnJztcclxuICBrZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIG5ld0l0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIGlzT3Blbk1lbnUgPSBmYWxzZTtcclxuICBfaXRlbXM6IGFueSA9IFtdO1xyXG4gIF9kZWZhdWx0VmFsdWU6IHN0cmluZ1tdID0gW107XHJcbiAgX3RpdGxlS2V5ITogYW55O1xyXG4gIF92YWx1ZUtleSE6IGFueTtcclxuICBpbml0Q291bnRlciA9IDA7XHJcbiAgY3VycmVudEluZGV4ID0gMDtcclxuICBoYXNUaXRsZUtleSA9IGZhbHNlO1xyXG4gIGhhc1ZhbHVlS2V5ID0gZmFsc2U7XHJcbiAgaGFzSXRlbXMgPSBmYWxzZTtcclxuICBoYXNEZWZhdWx0VmFsdWUgPSBmYWxzZTtcclxuICBmb2N1c2VkID0gZmFsc2U7XHJcbiAgdGV4dCA9ICcnO1xyXG4gIHNlYXJjaFRleHQgPSAnJztcclxuICBnZXQgaXNGb2N1c2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZDtcclxuICB9XHJcblxyXG4gIGdldCBpc1NlbGVjdGVkSXRlbXMoKSB7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZEl0ZW1zKS5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxyXG4gICkge31cclxuXHJcbiAgaW5pdCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5oYXNUaXRsZUtleSAmJlxyXG4gICAgICB0aGlzLmhhc1ZhbHVlS2V5ICYmXHJcbiAgICAgIHRoaXMuaGFzSXRlbXMgJiZcclxuICAgICAgdGhpcy5oYXNEZWZhdWx0VmFsdWVcclxuICAgICkge1xyXG4gICAgICB0aGlzLm5ld0l0ZW1zID0gdGhpcy5jaGFuZ2VJdGVtc1R5cGUodGhpcy5faXRlbXMpO1xyXG4gICAgfVxyXG4gIH1cclxuICBhc3luYyBvbkNoYW5nZVRleHQoKSB7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMubmV4dCh0aGlzLm5ld0l0ZW1zKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcy5uZXh0KFxyXG4gICAgICAgIHRoaXMubmV3SXRlbXMuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICAgIHJlc3VsdCA9IHRoaXMua2V5cy5zb21lKChrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGl0ZW1ba2V5XSA9PT0gJ251bWJlcidcclxuICAgICAgICAgICAgICA/IGl0ZW1ba2V5XSA9PSBOdW1iZXIodGhpcy5zZWFyY2hUZXh0KVxyXG4gICAgICAgICAgICAgIDogU3RyaW5nKGl0ZW1ba2V5XSkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0KSB8fFxyXG4gICAgICAgICAgICAgICAgICBTdHJpbmcoaXRlbVtrZXldKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcmVkSXRlbXMubmV4dCh0aGlzLm5ld0l0ZW1zKTtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmtleXMgPSB0aGlzLnNlYXJjaEtleXMubGVuZ3RoID4gMCA/IHRoaXMuc2VhcmNoS2V5cy5zcGxpdCgnLCcpIDogW107XHJcbiAgICB0aGlzLmluaXRpYWxpemVEZWZhdWx0VmFsdWUoKTtcclxuICAgIHRoaXMub25DaGFuZ2VUZXh0KCk7XHJcbiAgfVxyXG4gIHNldElucHV0Rm9jdXMoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGluaXRpYWxpemVEZWZhdWx0VmFsdWUoKSB7XHJcbiAgICBpZiAodGhpcy5fZGVmYXVsdFZhbHVlLmxlbmd0aCA9PSAwKSByZXR1cm47XHJcbiAgICB0aGlzLl9kZWZhdWx0VmFsdWUuZm9yRWFjaCgoaXRlbTE6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMubmV3SXRlbXMuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLnZhbHVlID09PSBpdGVtMSk7XHJcbiAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1t2YWx1ZS52YWx1ZV0gPSB2YWx1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGhhbmRsZUtleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLmZpbHRlcmVkSXRlbXMuZ2V0VmFsdWUoKTtcclxuICAgIHRoaXMuY3VycmVudEluZGV4ID0gaXRlbXMuZmluZEluZGV4KFxyXG4gICAgICAoaXRlbTogeyB0aXRsZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0pID0+XHJcbiAgICAgICAgaXRlbS52YWx1ZSA9PT0gdGhpcy5mb2N1c0l0ZW1JZCxcclxuICAgICk7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xyXG4gICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzT3Blbk1lbnUpIHtcclxuICAgICAgICAgIHRoaXMuaXNPcGVuTWVudSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMub25JdGVtU2VsZWN0KGl0ZW1zW3RoaXMuY3VycmVudEluZGV4XSwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQmFja3NwYWNlJzpcclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXh0Lmxlbmd0aCA+IDApIHJldHVybjtcclxuICAgICAgICBjb25zdCB2YWx1ZXMgPSBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gICAgICAgIGNvbnN0IGxhc3RJdGVtOiBhbnkgPSB2YWx1ZXNbdmFsdWVzLmxlbmd0aCAtIDFdO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLnNlbGVjdGVkSXRlbXNbbGFzdEl0ZW1dO1xyXG4gICAgICAgIHRoaXMuc2hvd1RleHQoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnRXNjYXBlJzpcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIHRoaXMuaXNPcGVuTWVudSA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuTWVudSAmJiBpdGVtcy5sZW5ndGggLSAxID4gdGhpcy5jdXJyZW50SW5kZXgpIHtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gdGhpcy5jdXJyZW50SW5kZXggKyAxO1xyXG4gICAgICAgICAgdGhpcy5mb2N1c0l0ZW1JZCA9IGl0ZW1zW3RoaXMuY3VycmVudEluZGV4XS52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdBcnJvd1VwJzpcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbk1lbnUgJiYgdGhpcy5jdXJyZW50SW5kZXggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IHRoaXMuY3VycmVudEluZGV4IC0gMTtcclxuICAgICAgICAgIHRoaXMuZm9jdXNJdGVtSWQgPSBpdGVtc1t0aGlzLmN1cnJlbnRJbmRleF0udmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmUoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnVGFiJzpcclxuICAgICAgICB0aGlzLmlzT3Blbk1lbnUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93VGV4dCgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBwcml2YXRlIHNjcm9sbFRvQWN0aXZlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGwnICsgdGhpcy5jdXJyZW50SW5kZXgpO1xyXG4gICAgZWxlbWVudD8uc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICBibG9jazogJ2NlbnRlcicsXHJcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcclxuICAgIH0pO1xyXG4gIH1cclxuICBvbkl0ZW1TZWxlY3Qoc2VsZWN0ZWRJdGVtOiBhbnksIGlzRnJvbVVpOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zW3NlbGVjdGVkSXRlbS52YWx1ZV0pIHtcclxuICAgICAgZGVsZXRlIHRoaXMuc2VsZWN0ZWRJdGVtc1tzZWxlY3RlZEl0ZW0udmFsdWVdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZEl0ZW1zKS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlU2VsZWN0SXRlbXMuZmluZCgoZGF0YSkgPT4gZGF0YSA9PSBpdGVtKSkge1xyXG4gICAgICAgICAgZmxhZyA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRJdGVtcykubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgIHRoaXMuc2luZ2xlU2VsZWN0SXRlbXMuZmluZCgoZGF0YSkgPT4gZGF0YSA9PSBzZWxlY3RlZEl0ZW0udmFsdWUpXHJcbiAgICAgICkge1xyXG4gICAgICB9IGVsc2UgaWYgKCFmbGFnKSB0aGlzLnNlbGVjdGVkSXRlbXNbc2VsZWN0ZWRJdGVtLnZhbHVlXSA9IHNlbGVjdGVkSXRlbTtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd1RleHQoKTtcclxuICAgIHRoaXMub25JdGVtU2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgc2hvd1RleHQoKSB7XHJcbiAgICBsZXQgdGV4dCA9ICcnO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IE9iamVjdC52YWx1ZXModGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIHNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA8IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIHRleHQgPSBpdGVtLnRpdGxlICsgJyAsICcgKyB0ZXh0O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRleHQgPSB0ZXh0ICsgaXRlbS50aXRsZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xyXG4gICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudGV4dCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VJdGVtc1R5cGUoaXRlbXM6IGFueVtdKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0OiBhbnkgPSB7XHJcbiAgICAgICAgdGl0bGU6IGl0ZW1bdGhpcy5fdGl0bGVLZXldLFxyXG4gICAgICAgIHZhbHVlOiBpdGVtW3RoaXMuX3ZhbHVlS2V5XSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5rZXlzLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIHJlc3VsdFtrZXldID0gaXRlbVtrZXldO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMuY2FuQWRkVmFsdWVLZXlBbmRUaXRsZUtleUluU2VhcmNoS2V5cykge1xyXG4gICAgICAgIHRoaXMua2V5cy5wdXNoKHRoaXMudGl0bGVLZXkpO1xyXG4gICAgICAgIHRoaXMua2V5cy5wdXNoKHRoaXMudmFsdWVLZXkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW5NZW51Q2xpY2soKSB7XHJcbiAgICB0aGlzLmlzT3Blbk1lbnUgPSAhdGhpcy5pc09wZW5NZW51O1xyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcclxuICAgIGNvbnN0IG5leHRGb2N1c2VkRWxlbWVudCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoXHJcbiAgICAgICFuZXh0Rm9jdXNlZEVsZW1lbnQgfHxcclxuICAgICAgIXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhuZXh0Rm9jdXNlZEVsZW1lbnQpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pc09wZW5NZW51ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICB0YWJpbmRleD1cIi0xXCJcclxuICBjbGFzcz1cImRyb3Bkb3duXCJcclxuICAoZm9jdXNpbik9XCJzZXRJbnB1dEZvY3VzKClcIlxyXG4gIChmb2N1c291dCk9XCJmb2N1c091dCgkZXZlbnQpXCJcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwic2VsZWN0XCJcclxuICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgJ3NlbGVjdC1mb2N1cyc6IGZvY3VzZWQsXHJcbiAgICAgICdzZWxlY3QtY2xpY2tlZCc6IGlzT3Blbk1lbnUsXHJcbiAgICAgIHNlbGVjdEVycm9yOiBpbnB1dEZvcm1Db250cm9sLnRvdWNoZWQgJiYgaW5wdXRGb3JtQ29udHJvbC5lcnJvcnNcclxuICAgIH1cIlxyXG4gICAgKGNsaWNrKT1cIm9wZW5NZW51Q2xpY2soKVwiXHJcbiAgPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlci10b3BcIiAqbmdJZj1cImlzU2VsZWN0ZWRJdGVtcyB8fCBmb2N1c2VkXCI+e3tcclxuICAgICAgbGFiZWxcclxuICAgIH19PC9zcGFuPlxyXG4gICAgPGFycm93LWRvd24taWNvblxyXG4gICAgICBjbGFzcz1cImNhcmV0IGZpbGwtc2Vjb25kYXJ5LXRleHQtY29sb3IgaC02XCJcclxuICAgICAgW25nQ2xhc3NdPVwieyAnY2FyZXQtcm90YXRlJzogaXNPcGVuTWVudSB9XCJcclxuICAgID48L2Fycm93LWRvd24taWNvbj5cclxuXHJcbiAgICA8aW5wdXRcclxuICAgICAgI2lucHV0U2VhcmNoXHJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgIGlkPVwiaW5wdXRTZWFyY2hcIlxyXG4gICAgICBjbGFzcz1cImZsZXgtMSBiZy10cmFuc3BhcmVudCB0ZXh0LXNtIGZvY3VzOm91dGxpbmUtbm9uZVwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXHJcbiAgICAgIChrZXlkb3duKT1cImhhbmRsZUtleSgkZXZlbnQpXCJcclxuICAgICAgKGtleXVwKT1cIm9uQ2hhbmdlVGV4dCgpXCJcclxuICAgICAgKGZvY3VzKT1cImZvY3VzZWQgPSB0cnVlXCJcclxuICAgICAgKGJsdXIpPVwiZm9jdXNlZCA9IGZhbHNlXCJcclxuICAgIC8+XHJcbiAgICA8c3BhblxyXG4gICAgICBjbGFzcz1cInRleHQtY29udGVudCB0ZXh0LXJpZ2h0XCJcclxuICAgICAgW25nQ2xhc3NdPVwiW1xyXG4gICAgICAgIGxhYmVsLmxlbmd0aCA+IDAgJiYgIWlzU2VsZWN0ZWRJdGVtcyA/ICdwbGFjZWhvbGRlcicgOiAnc2VsZWN0ZWQnXHJcbiAgICAgIF1cIlxyXG4gICAgICA+e3sgaXNTZWxlY3RlZEl0ZW1zIHx8IGZvY3VzZWQgPyB0ZXh0IDogbGFiZWwgfX08L3NwYW5cclxuICAgID5cclxuICA8L2Rpdj5cclxuICA8dWxcclxuICAgIGNsYXNzPVwibWVudVwiXHJcbiAgICBbbmdDbGFzc109XCJ7ICdtZW51LW9wZW4nOiBpc09wZW5NZW51IH1cIlxyXG4gICAgdGFiaW5kZXg9XCIwXCJcclxuICAgIChrZXlkb3duKT1cImhhbmRsZUtleSgkZXZlbnQpXCJcclxuICA+XHJcbiAgICA8YXBwLWNvcmUtbXVsdGktc2VsZWN0LXJvd1xyXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zIHwgYXN5bmM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICBbaXRlbV09XCJpdGVtXCJcclxuICAgICAgW2lkXT1cIidzY3JvbGwnICsgaVwiXHJcbiAgICAgIFtpc1NlbGVjdGVkXT1cInNlbGVjdGVkSXRlbXNbaXRlbS52YWx1ZV0gPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICBbZm9jdXNJdGVtSWRdPVwiZm9jdXNJdGVtSWRcIlxyXG4gICAgICAob25TZWxlY3QpPVwib25JdGVtU2VsZWN0KGl0ZW0sIHRydWUpXCJcclxuICAgID5cclxuICAgIDwvYXBwLWNvcmUtbXVsdGktc2VsZWN0LXJvdz5cclxuICA8L3VsPlxyXG4gIDxkaXYgY2xhc3M9XCJsYWJlbC1lcnJvciBvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgIDxzcGFuXHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICBpbnB1dEZvcm1Db250cm9sLnRvdWNoZWQgICYmXHJcbiAgICAgIGlucHV0Rm9ybUNvbnRyb2wuZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIlxyXG4gICAgICA+2KfbjNmGINmB24zZhNivINiu2KfZhNuMINin2LPYqjwvc3BhblxyXG4gICAgPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
289
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1tdWx0aS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmFsY29uLWxpYi9zcmMvbGliL2NvcmUtbXVsdGktc2VsZWN0L2NvcmUtbXVsdGktc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZhbGNvbi1saWIvc3JjL2xpYi9jb3JlLW11bHRpLXNlbGVjdC9jb3JlLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBVXZDLE1BQU0sT0FBTyx3QkFBd0I7SUFTbkMsSUFBYSxRQUFRLENBQUMsSUFBUztRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBYSxRQUFRLENBQUMsSUFBUztRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBYSxLQUFLLENBQUMsSUFBUztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFD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QUExQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICcuLi9mYWxjb25UeXBlcyc7XHJcbmludGVyZmFjZSBJU2VsZWN0ZWRJdGVtc0RpY3Rpb25hcnkge1xyXG4gIFtpbmRleDogc3RyaW5nXTogYW55O1xyXG59XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1tdWx0aS1zZWxlY3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLW11bHRpLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1tdWx0aS1zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVNdWx0aVNlbGVjdENvbXBvbmVudCB7XHJcbiAgZm9jdXNJdGVtOiBNZW51SXRlbTxhbnk+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIEBPdXRwdXQoKSBvbkl0ZW1TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRTZWFyY2gnKSBpbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gIEBJbnB1dCgpIGNhbkFkZFZhbHVlS2V5QW5kVGl0bGVLZXlJblNlYXJjaEtleXM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGlucHV0Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCBbXSk7XHJcbiAgQElucHV0KCkgc2luZ2xlU2VsZWN0SXRlbXM6IHN0cmluZ1tdID0gW107XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHNlYXJjaEtleXM6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHNldCB0aXRsZUtleShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuX3RpdGxlS2V5ID0gZGF0YTtcclxuICAgIHRoaXMuaGFzVGl0bGVLZXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCB2YWx1ZUtleShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuX3ZhbHVlS2V5ID0gZGF0YTtcclxuICAgIHRoaXMuaGFzVmFsdWVLZXkgPSB0cnVlO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBpdGVtcyhkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuX2l0ZW1zID0gZGF0YTtcclxuICAgIHRoaXMuaGFzSXRlbXMgPSB0cnVlO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNldCBkZWZhdWx0VmFsdWUoZGF0YTogYW55W10pIHtcclxuICAgIHRoaXMuX2RlZmF1bHRWYWx1ZSA9IGRhdGE7XHJcbiAgICB0aGlzLmhhc0RlZmF1bHRWYWx1ZSA9IHRydWU7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZURlZmF1bHRWYWx1ZSgpO1xyXG4gICAgdGhpcy5zaG93VGV4dCgpO1xyXG4gIH1cclxuICBzZWxlY3RlZEl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCB7IHRpdGxlOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT5bXSA9IFtdO1xyXG4gIGZpbHRlcmVkSXRlbXM6IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XHJcbiAgZm9jdXNJdGVtSWQgPSAnJztcclxuICBrZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIG5ld0l0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIGlzT3Blbk1lbnUgPSBmYWxzZTtcclxuICBfaXRlbXM6IGFueSA9IFtdO1xyXG4gIF9kZWZhdWx0VmFsdWU6IHN0cmluZ1tdID0gW107XHJcbiAgX3RpdGxlS2V5ITogYW55O1xyXG4gIF92YWx1ZUtleSE6IGFueTtcclxuICBpbml0Q291bnRlciA9IDA7XHJcbiAgY3VycmVudEl0ZW1JbmRleCA9IDA7XHJcbiAgcmFuZG9tSWQgPSAwO1xyXG4gIGhhc1RpdGxlS2V5ID0gZmFsc2U7XHJcbiAgaGFzVmFsdWVLZXkgPSBmYWxzZTtcclxuICBoYXNJdGVtcyA9IGZhbHNlO1xyXG4gIGhhc0RlZmF1bHRWYWx1ZSA9IGZhbHNlO1xyXG4gIGZvY3VzZWQgPSBmYWxzZTtcclxuICB0ZXh0ID0gJyc7XHJcbiAgc2VhcmNoVGV4dCA9ICcnO1xyXG4gIGdldCBpc0ZvY3VzZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mb2N1c2VkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzU2VsZWN0ZWRJdGVtcygpIHtcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnNlbGVjdGVkSXRlbXMpLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXHJcbiAgKSB7fVxyXG5cclxuICBpbml0KCkge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmhhc1RpdGxlS2V5ICYmXHJcbiAgICAgIHRoaXMuaGFzVmFsdWVLZXkgJiZcclxuICAgICAgdGhpcy5oYXNJdGVtcyAmJlxyXG4gICAgICB0aGlzLmhhc0RlZmF1bHRWYWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMubmV3SXRlbXMgPSB0aGlzLmNoYW5nZUl0ZW1zVHlwZSh0aGlzLl9pdGVtcyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIG9uQ2hhbmdlVGV4dChcclxuICAgIGV2ZW50OiBLZXlib2FyZEV2ZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxyXG4gICAgY2FuT3Blbk1lbnU6IGJvb2xlYW4gPSBmYWxzZSxcclxuICApIHtcclxuICAgIGlmIChcclxuICAgICAgZXZlbnQgJiZcclxuICAgICAgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fFxyXG4gICAgICAgIGV2ZW50LmtleSA9PT0gJ1RhYicgfHxcclxuICAgICAgICBldmVudC5rZXkgPT09ICdFc2NhcGUnIHx8XHJcbiAgICAgICAgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJyB8fFxyXG4gICAgICAgIGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlYXJjaFRleHQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcy5uZXh0KHRoaXMubmV3SXRlbXMpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaFRleHQpIHtcclxuICAgICAgdGhpcy5maWx0ZXJlZEl0ZW1zLm5leHQoXHJcbiAgICAgICAgdGhpcy5uZXdJdGVtcy5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5rZXlzLnNvbWUoKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgaXRlbVtrZXldID09PSAnbnVtYmVyJ1xyXG4gICAgICAgICAgICAgID8gaXRlbVtrZXldID09IE51bWJlcih0aGlzLnNlYXJjaFRleHQpXHJcbiAgICAgICAgICAgICAgOiBTdHJpbmcoaXRlbVtrZXldKS5pbmNsdWRlcyh0aGlzLnNlYXJjaFRleHQpIHx8XHJcbiAgICAgICAgICAgICAgICAgIFN0cmluZyhpdGVtW2tleV0pLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9KSxcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcy5uZXh0KHRoaXMubmV3SXRlbXMpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmlsdGVyZWRJdGVtcy5nZXRWYWx1ZSgpLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5mb2N1c0l0ZW0gPSB0aGlzLmZpbHRlcmVkSXRlbXMuZ2V0VmFsdWUoKVswXTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgY2FuT3Blbk1lbnUgJiZcclxuICAgICAgdHlwZW9mIHRoaXMuc2VhcmNoVGV4dCA9PT0gJ3N0cmluZycgJiZcclxuICAgICAgdGhpcy5zZWFyY2hUZXh0Lmxlbmd0aCA+IDBcclxuICAgICkge1xyXG4gICAgICB0aGlzLmlzT3Blbk1lbnUgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJhbmRvbUlkID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDApO1xyXG4gICAgdGhpcy5rZXlzID0gdGhpcy5zZWFyY2hLZXlzLmxlbmd0aCA+IDAgPyB0aGlzLnNlYXJjaEtleXMuc3BsaXQoJywnKSA6IFtdO1xyXG4gICAgaWYgKHRoaXMuY2FuQWRkVmFsdWVLZXlBbmRUaXRsZUtleUluU2VhcmNoS2V5cykge1xyXG4gICAgICB0aGlzLmtleXMucHVzaCh0aGlzLl90aXRsZUtleSk7XHJcbiAgICAgIHRoaXMua2V5cy5wdXNoKHRoaXMuX3ZhbHVlS2V5KTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdGlhbGl6ZURlZmF1bHRWYWx1ZSgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZVRleHQoKTtcclxuICB9XHJcblxyXG4gIHNldElucHV0Rm9jdXMoKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplRGVmYXVsdFZhbHVlKCkge1xyXG4gICAgaWYgKHRoaXMuX2RlZmF1bHRWYWx1ZS5sZW5ndGggPT0gMCkgcmV0dXJuO1xyXG4gICAgdGhpcy5fZGVmYXVsdFZhbHVlLmZvckVhY2goKGl0ZW0xOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLm5ld0l0ZW1zLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS52YWx1ZSA9PT0gaXRlbTEpO1xyXG4gICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNbdmFsdWUudmFsdWVdID0gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5Qm9hcmQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IGtleSA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XHJcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmlsdGVyZWRJdGVtcy5nZXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5jdXJyZW50SXRlbUluZGV4ID0gaXRlbXMuZmluZEluZGV4KFxyXG4gICAgICAoaXRlbTogYW55KSA9PiBpdGVtW3RoaXMuX3ZhbHVlS2V5XSA9PT0gdGhpcy5mb2N1c0l0ZW0/LnZhbHVlLFxyXG4gICAgKTtcclxuICAgIHN3aXRjaCAoa2V5LmtleSkge1xyXG4gICAgICBjYXNlICdFbnRlcic6XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBpZiAodGhpcy5mb2N1c0l0ZW0pIHtcclxuICAgICAgICAgIHRoaXMub25JdGVtU2VsZWN0KGl0ZW1zW3RoaXMuY3VycmVudEl0ZW1JbmRleF0sIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJyAnOlxyXG4gICAgICAgIHRoaXMuaXNPcGVuTWVudSA9ICF0aGlzLmlzT3Blbk1lbnU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dC5sZW5ndGggPiAwKSByZXR1cm47XHJcbiAgICAgICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgICBjb25zdCBsYXN0SXRlbTogYW55ID0gdmFsdWVzW3ZhbHVlcy5sZW5ndGggLSAxXTtcclxuICAgICAgICBkZWxldGUgdGhpcy5zZWxlY3RlZEl0ZW1zW2xhc3RJdGVtXTtcclxuICAgICAgICB0aGlzLnNob3dUZXh0KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB0aGlzLmlzT3Blbk1lbnUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbk1lbnUgJiYgaXRlbXMubGVuZ3RoIC0gMSA+IHRoaXMuY3VycmVudEl0ZW1JbmRleCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50SXRlbUluZGV4ID0gdGhpcy5jdXJyZW50SXRlbUluZGV4ICsgMTtcclxuICAgICAgICAgIHRoaXMuZm9jdXNJdGVtID0gaXRlbXNbdGhpcy5jdXJyZW50SXRlbUluZGV4XTtcclxuICAgICAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuTWVudSAmJiB0aGlzLmN1cnJlbnRJdGVtSW5kZXggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRJdGVtSW5kZXggPSB0aGlzLmN1cnJlbnRJdGVtSW5kZXggLSAxO1xyXG4gICAgICAgICAgdGhpcy5mb2N1c0l0ZW0gPSBpdGVtc1t0aGlzLmN1cnJlbnRJdGVtSW5kZXhdO1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnVGFiJzpcclxuICAgICAgICB0aGlzLmlzT3Blbk1lbnUgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93VGV4dCgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuICBwcml2YXRlIHNjcm9sbFRvQWN0aXZlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICAnc2Nyb2xsJyArIHRoaXMucmFuZG9tSWQgKyAnLScgKyB0aGlzLmN1cnJlbnRJdGVtSW5kZXgsXHJcbiAgICApO1xyXG4gICAgZWxlbWVudD8uc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICBibG9jazogJ2NlbnRlcicsXHJcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcclxuICAgIH0pO1xyXG4gIH1cclxuICBvbkl0ZW1TZWxlY3Qoc2VsZWN0ZWRJdGVtOiBhbnksIGlzRnJvbVVpOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zW3NlbGVjdGVkSXRlbS52YWx1ZV0pIHtcclxuICAgICAgZGVsZXRlIHRoaXMuc2VsZWN0ZWRJdGVtc1tzZWxlY3RlZEl0ZW0udmFsdWVdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5zZWxlY3RlZEl0ZW1zKS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlU2VsZWN0SXRlbXMuZmluZCgoZGF0YSkgPT4gZGF0YSA9PSBpdGVtKSkge1xyXG4gICAgICAgICAgZmxhZyA9IHRydWU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0ZWRJdGVtcykubGVuZ3RoID4gMCAmJlxyXG4gICAgICAgIHRoaXMuc2luZ2xlU2VsZWN0SXRlbXMuZmluZCgoZGF0YSkgPT4gZGF0YSA9PSBzZWxlY3RlZEl0ZW0udmFsdWUpXHJcbiAgICAgICkge1xyXG4gICAgICB9IGVsc2UgaWYgKCFmbGFnKSB0aGlzLnNlbGVjdGVkSXRlbXNbc2VsZWN0ZWRJdGVtLnZhbHVlXSA9IHNlbGVjdGVkSXRlbTtcclxuICAgIH1cclxuICAgIHRoaXMuc2hvd1RleHQoKTtcclxuICAgIHRoaXMub25JdGVtU2VsZWN0ZWQuZW1pdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgc2hvd1RleHQoKSB7XHJcbiAgICBsZXQgdGV4dCA9ICcnO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IE9iamVjdC52YWx1ZXModGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgIHNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA8IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIHRleHQgPSBpdGVtLnRpdGxlICsgJyAsICcgKyB0ZXh0O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRleHQgPSB0ZXh0ICsgaXRlbS50aXRsZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xyXG4gICAgdGhpcy5pbnB1dEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMudGV4dCk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VJdGVtc1R5cGUoaXRlbXM6IGFueVtdKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0OiBhbnkgPSB7XHJcbiAgICAgICAgdGl0bGU6IGl0ZW1bdGhpcy5fdGl0bGVLZXldLFxyXG4gICAgICAgIHZhbHVlOiBpdGVtW3RoaXMuX3ZhbHVlS2V5XSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5rZXlzLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIHJlc3VsdFtrZXldID0gaXRlbVtrZXldO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMuY2FuQWRkVmFsdWVLZXlBbmRUaXRsZUtleUluU2VhcmNoS2V5cykge1xyXG4gICAgICAgIHRoaXMua2V5cy5wdXNoKHRoaXMudGl0bGVLZXkpO1xyXG4gICAgICAgIHRoaXMua2V5cy5wdXNoKHRoaXMudmFsdWVLZXkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW5NZW51Q2xpY2soKSB7XHJcbiAgICB0aGlzLmlzT3Blbk1lbnUgPSAhdGhpcy5pc09wZW5NZW51O1xyXG4gIH1cclxuXHJcbiAgZm9jdXNPdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcclxuICAgIGNvbnN0IG5leHRGb2N1c2VkRWxlbWVudCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAoXHJcbiAgICAgICFuZXh0Rm9jdXNlZEVsZW1lbnQgfHxcclxuICAgICAgIXRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhuZXh0Rm9jdXNlZEVsZW1lbnQpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5pc09wZW5NZW51ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAoa2V5ZG93bik9XCJoYW5kbGVLZXlCb2FyZCgkZXZlbnQpXCJcclxuICB0YWJpbmRleD1cIjBcIlxyXG4gIGNsYXNzPVwiZHJvcGRvd25cIlxyXG4gIChmb2N1c2luKT1cInNldElucHV0Rm9jdXMoKVwiXHJcbiAgKGZvY3Vzb3V0KT1cImZvY3VzT3V0KCRldmVudClcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJzZWxlY3RcIlxyXG4gICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAnc2VsZWN0LWZvY3VzJzogZm9jdXNlZCxcclxuICAgICAgJ3NlbGVjdC1jbGlja2VkJzogaXNPcGVuTWVudSxcclxuICAgICAgc2VsZWN0RXJyb3I6IGlucHV0Rm9ybUNvbnRyb2wudG91Y2hlZCAmJiBpbnB1dEZvcm1Db250cm9sLmVycm9ycyxcclxuICAgIH1cIlxyXG4gICAgKGNsaWNrKT1cIm9wZW5NZW51Q2xpY2soKVwiXHJcbiAgPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlci10b3BcIiAqbmdJZj1cImlzU2VsZWN0ZWRJdGVtcyB8fCBmb2N1c2VkXCI+e3tcclxuICAgICAgbGFiZWxcclxuICAgIH19PC9zcGFuPlxyXG4gICAgPGFycm93LWRvd24taWNvblxyXG4gICAgICBjbGFzcz1cImNhcmV0IGZpbGwtc2Vjb25kYXJ5LXRleHQtY29sb3IgaC02XCJcclxuICAgICAgW25nQ2xhc3NdPVwieyAnY2FyZXQtcm90YXRlJzogaXNPcGVuTWVudSB9XCJcclxuICAgID48L2Fycm93LWRvd24taWNvbj5cclxuXHJcbiAgICA8aW5wdXRcclxuICAgICAgI2lucHV0U2VhcmNoXHJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgIGlkPVwiaW5wdXRTZWFyY2hcIlxyXG4gICAgICBjbGFzcz1cImlucHV0IGJnLXRyYW5zcGFyZW50IHRleHQtc20gZm9jdXM6b3V0bGluZS1ub25lXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcclxuICAgICAgKGtleXVwKT1cIm9uQ2hhbmdlVGV4dCgkZXZlbnQsIHRydWUpXCJcclxuICAgICAgKGZvY3VzKT1cImZvY3VzZWQgPSB0cnVlXCJcclxuICAgICAgKGJsdXIpPVwiZm9jdXNlZCA9IGZhbHNlXCJcclxuICAgIC8+XHJcbiAgICA8IS0tIChrZXlkb3duKT1cImhhbmRsZUtleUJvYXJkKCRldmVudClcIiAtLT5cclxuICAgIDxzcGFuXHJcbiAgICAgIGNsYXNzPVwidGV4dC1jb250ZW50IHRleHQtcmlnaHRcIlxyXG4gICAgICBbbmdDbGFzc109XCJbXHJcbiAgICAgICAgbGFiZWwubGVuZ3RoID4gMCAmJiAhaXNTZWxlY3RlZEl0ZW1zID8gJ3BsYWNlaG9sZGVyJyA6ICdzZWxlY3RlZCcsXHJcbiAgICAgIF1cIlxyXG4gICAgICA+e3sgaXNTZWxlY3RlZEl0ZW1zIHx8IGZvY3VzZWQgPyB0ZXh0IDogbGFiZWwgfX08L3NwYW5cclxuICAgID5cclxuICA8L2Rpdj5cclxuICA8dWwgY2xhc3M9XCJtZW51XCIgW25nQ2xhc3NdPVwieyAnbWVudS1vcGVuJzogaXNPcGVuTWVudSB9XCI+XHJcbiAgICA8YXBwLWNvcmUtbXVsdGktc2VsZWN0LXJvd1xyXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zIHwgYXN5bmM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICBbaXRlbV09XCJpdGVtXCJcclxuICAgICAgW2lkXT1cIidzY3JvbGwnICsgcmFuZG9tSWQgKyAnLScgKyBpXCJcclxuICAgICAgW2lzU2VsZWN0ZWRdPVwic2VsZWN0ZWRJdGVtc1tpdGVtLnZhbHVlXSA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgIFtmb2N1c0l0ZW1JZF09XCJmb2N1c0l0ZW0/LnZhbHVlXCJcclxuICAgICAgKG9uU2VsZWN0KT1cIm9uSXRlbVNlbGVjdChpdGVtLCB0cnVlKVwiXHJcbiAgICA+XHJcbiAgICA8L2FwcC1jb3JlLW11bHRpLXNlbGVjdC1yb3c+XHJcbiAgPC91bD5cclxuICA8ZGl2IGNsYXNzPVwibGFiZWwtZXJyb3Igb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICA8c3BhblxyXG4gICAgICAqbmdJZj1cImlucHV0Rm9ybUNvbnRyb2wudG91Y2hlZCAmJiBpbnB1dEZvcm1Db250cm9sLmVycm9ycz8uWydyZXF1aXJlZCddXCJcclxuICAgICAgPtin24zZhiDZgduM2YTYryDYrtin2YTbjCDYp9iz2Ko8L3NwYW5cclxuICAgID5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|