@wlcm/angular 18.2.12 → 18.2.14
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/forms/esm2022/lib/forms/components/autocomplete/autocomplete.component.mjs +18 -2
- package/forms/esm2022/lib/forms/components/select/select.component.mjs +40 -3
- package/forms/fesm2022/wlcm-angular-forms.mjs +55 -2
- package/forms/fesm2022/wlcm-angular-forms.mjs.map +1 -1
- package/forms/lib/forms/components/autocomplete/autocomplete.component.d.ts +5 -1
- package/forms/lib/forms/components/select/select.component.d.ts +7 -1
- package/package.json +1 -1
@@ -44,15 +44,19 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
44
44
|
this.focus$ = this._focusStream$.pipe(switchMap((stream) => stream));
|
45
45
|
this.blur$ = this._blurStream$.pipe(switchMap((stream) => stream));
|
46
46
|
this.loading$ = this._loading$.asObservable();
|
47
|
+
this.adjustedValue$ = new BehaviorSubject(null);
|
47
48
|
this._paginatedData = null;
|
48
49
|
this._reloadOptions$ = new Subject();
|
50
|
+
this.viewReady$ = new Subject();
|
49
51
|
this.handleLoadMoreEvent();
|
50
52
|
this.handleControlValueChanges();
|
53
|
+
this.handleAdjustedValue();
|
51
54
|
}
|
52
55
|
ngOnInit() {
|
53
56
|
this.loadOptions().pipe(first()).subscribe();
|
54
57
|
}
|
55
58
|
ngAfterViewInit() {
|
59
|
+
this.viewReady$.next();
|
56
60
|
const container = this.formField.inputContainer;
|
57
61
|
const origin = new MatAutocompleteOrigin(container);
|
58
62
|
this.autocompleteTrigger.connectedTo = origin;
|
@@ -74,7 +78,8 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
74
78
|
this._loadMore$.next();
|
75
79
|
}
|
76
80
|
writeValue(value) {
|
77
|
-
this.
|
81
|
+
const formattedValue = this.prepareValueForPatch(value);
|
82
|
+
this.control.setValue(formattedValue);
|
78
83
|
}
|
79
84
|
registerOnChange(callback) {
|
80
85
|
this._changed = callback;
|
@@ -107,6 +112,12 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
107
112
|
registerOnValidatorChange(fn) {
|
108
113
|
this._onValidatorChange = fn;
|
109
114
|
}
|
115
|
+
prepareValueForPatch(value) {
|
116
|
+
if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly') {
|
117
|
+
this.adjustedValue$.next(value.value);
|
118
|
+
}
|
119
|
+
return value;
|
120
|
+
}
|
110
121
|
loadOptions(query = '') {
|
111
122
|
this._loading$.next(true);
|
112
123
|
this.queryParams = { ...this.queryParams, query, page: 1 };
|
@@ -155,6 +166,11 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
155
166
|
this._focusStream$.next(merge(...focusObservables).pipe(map(voidFn)));
|
156
167
|
this._blurStream$.next(merge(...blurObservables).pipe(map(() => this.control?.markAsTouched())));
|
157
168
|
}
|
169
|
+
handleAdjustedValue() {
|
170
|
+
this.viewReady$
|
171
|
+
.pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))
|
172
|
+
.subscribe((value) => this._changed?.(value));
|
173
|
+
}
|
158
174
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmAutocompleteComponent, deps: [{ token: WLCM_FORM_FIELD }], target: i0.ɵɵFactoryTarget.Component }); }
|
159
175
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmAutocompleteComponent, isStandalone: true, selector: "wlcm-autocomplete", inputs: { fetchPaginatedOptions: { classPropertyName: "fetchPaginatedOptions", publicName: "fetchPaginatedOptions", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: false, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: false, isRequired: false, transformFunction: (params) => cloneDeep(params) }, selectOptionFormat: { classPropertyName: "selectOptionFormat", publicName: "selectOptionFormat", isSignal: true, isRequired: false, transformFunction: null }, noResultsTemplate: { classPropertyName: "noResultsTemplate", publicName: "noResultsTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { classAttribute: "wlcm-autocomplete" }, providers: [
|
160
176
|
{ provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, useValue: { overlayPanelClass: PANEL_CLASS } },
|
@@ -223,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
223
239
|
type: ViewChild,
|
224
240
|
args: [MatAutocomplete]
|
225
241
|
}] } });
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUdwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUN2QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsS0FBSyxFQUVMLE9BQU8sRUFDUCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1QsR0FBRyxFQUNI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Q0FFdkUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQzs0QkFDdEMsQ0FBQzt5QkFDRjtxQkFDRjs7MEJBa0VZLE1BQU07MkJBQUMsZUFBZTt5Q0E1RDFCLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRWdFLFdBQVc7c0JBQWhGLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxNQUF1QixFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBNENoQixZQUFZO3NCQUEvRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBRUEsbUJBQW1CO3NCQUE3RCxTQUFTO3VCQUFDLHNCQUFzQjtnQkFFRyxZQUFZO3NCQUEvQyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBJbnB1dFNpZ25hbCxcbiAgT25Jbml0LFxuICBPdXRwdXRFbWl0dGVyUmVmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBXbGNtRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXbGNtTGFiZWxDb21wb25lbnQgfSBmcm9tICcuLi9sYWJlbC9sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2xjbUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsXG4gIE1hdEF1dG9jb21wbGV0ZSxcbiAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICBNYXRBdXRvY29tcGxldGVPcmlnaW4sXG4gIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIEVNUFRZLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBjb25jYXRNYXAsXG4gIGZpbHRlcixcbiAgZmlyc3QsXG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBtZXJnZSxcbiAgc3dpdGNoTWFwLFxuICB0YWtlLFxuICB0YXAsXG4gIHRpbWVyLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9hdXRvY29tcGxldGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERFRkFVTFRfUVVFUllfUEFSQU1TLCBXbGNtQXV0b2NvbXBsZXRlT3B0aW9uLCBXbGNtU2VsZWN0T3B0aW9uRm9ybWF0IH0gZnJvbSAnQHdsY20vYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdMQ01fRk9STV9GSUVMRCwgV0xDTV9JTlBVVCwgV0xDTV9JTlBVVF9CSU5ERVIgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgV2xjbUF1dG9jb21wbGV0ZSwgV2xjbUF1dG9jb21wbGV0ZVZhbHVlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F1dG9jb21wbGV0ZS5tb2RlbHMnO1xuaW1wb3J0IHsgV2xjbVF1ZXJ5UGFyYW1zLCBXbGNtUGFnaW5hdGVkRGF0YSB9IGZyb20gJ0B3bGNtL2NvbW1vbic7XG5pbXBvcnQgeyBXbGNtRm9ybUZpZWxkSW5wdXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5wdXQubW9kZWxzJztcbmltcG9ydCB7IFdsY21Gb3JtRmllbGQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS5tb2RlbHMnO1xuaW1wb3J0IHsgUnhMZXQgfSBmcm9tICdAcngtYW5ndWxhci90ZW1wbGF0ZS9sZXQnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcblxudHlwZSBPcHRpb24gPSBXbGNtQXV0b2NvbXBsZXRlT3B0aW9uO1xuXG5jb25zdCBQQU5FTF9DTEFTUzogc3RyaW5nID0gJ3dsY20tYXV0b2NvbXBsZXRlLXBhbmVsJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3bGNtLWF1dG9jb21wbGV0ZScsXG4gIGV4cG9ydEFzOiAnd2xjbUF1dG9jb21wbGV0ZScsXG4gIGhvc3Q6IHsgY2xhc3M6ICd3bGNtLWF1dG9jb21wbGV0ZScgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgQXV0b2NvbXBsZXRlRGlyZWN0aXZlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgV2xjbUZvcm1GaWVsZENvbXBvbmVudCxcbiAgICBXbGNtTGFiZWxDb21wb25lbnQsXG4gICAgV2xjbUlucHV0RGlyZWN0aXZlLFxuICAgIFJ4TGV0LFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE1BVF9BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TLCB1c2VWYWx1ZTogeyBvdmVybGF5UGFuZWxDbGFzczogUEFORUxfQ0xBU1MgfSB9LFxuICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21BdXRvY29tcGxldGVDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbUF1dG9jb21wbGV0ZUNvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogV0xDTV9JTlBVVF9CSU5ERVIsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGF1dG9jb21wbGV0ZSA9IGluamVjdChXbGNtQXV0b2NvbXBsZXRlQ29tcG9uZW50LCB7IHNlbGY6IHRydWUgfSk7XG5cbiAgICAgICAgcmV0dXJuIHsgYmluZDogKCkgPT4gYXV0b2NvbXBsZXRlIH07XG4gICAgICB9LFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFdsY21BdXRvY29tcGxldGVDb21wb25lbnRcbiAgZXh0ZW5kcyBXbGNtQXV0b2NvbXBsZXRlXG4gIGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBBZnRlclZpZXdJbml0LCBXbGNtRm9ybUZpZWxkSW5wdXRcbntcbiAgQElucHV0KCkgZmV0Y2hQYWdpbmF0ZWRPcHRpb25zITogKHBhcmFtczogV2xjbVF1ZXJ5UGFyYW1zKSA9PiBPYnNlcnZhYmxlPFdsY21QYWdpbmF0ZWREYXRhPE9wdGlvbj4+O1xuXG4gIEBJbnB1dCgpIGxhYmVsITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuXG4gIEBJbnB1dCgpIG9wdGlvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFdsY21BdXRvY29tcGxldGVPcHRpb24gfT47XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiAocGFyYW1zOiBXbGNtUXVlcnlQYXJhbXMpID0+IGNsb25lRGVlcChwYXJhbXMpIH0pIHF1ZXJ5UGFyYW1zOiBXbGNtUXVlcnlQYXJhbXMgPSBjbG9uZURlZXAoe1xuICAgIC4uLkRFRkFVTFRfUVVFUllfUEFSQU1TLFxuICAgIGxpbWl0OiAxNSxcbiAgfSk7XG5cbiAgc2VsZWN0T3B0aW9uRm9ybWF0OiBJbnB1dFNpZ25hbDxXbGNtU2VsZWN0T3B0aW9uRm9ybWF0PiA9IGlucHV0PFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+KCdWYWx1ZU9ubHknKTtcblxuICBub1Jlc3VsdHNUZW1wbGF0ZTogSW5wdXRTaWduYWw8VGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFdsY21BdXRvY29tcGxldGVWYWx1ZTsgbG9hZGluZzogYm9vbGVhbiB9PiB8IHVuZGVmaW5lZD4gPVxuICAgIGlucHV0KCk7XG5cbiAgc2VsZWN0ZWQ6IE91dHB1dEVtaXR0ZXJSZWY8V2xjbUF1dG9jb21wbGV0ZVZhbHVlPiA9IG91dHB1dCgpO1xuXG4gIHJlYWRvbmx5IGNvbnRyb2w6IEZvcm1Db250cm9sPFdsY21BdXRvY29tcGxldGVWYWx1ZT4gPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvYWRNb3JlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3B0aW9ucyQ6IEJlaGF2aW9yU3ViamVjdDxPcHRpb25bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9wdGlvbltdPihbXSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMkOiBPYnNlcnZhYmxlPE9wdGlvbltdPiA9IHRoaXMuX29wdGlvbnMkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjbG9zZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mb2N1c1N0cmVhbSQ6IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPHZvaWQ+PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoRU1QVFkgYXMgT2JzZXJ2YWJsZTx2b2lkPik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYmx1clN0cmVhbSQ6IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPHZvaWQ+PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoRU1QVFkgYXMgT2JzZXJ2YWJsZTx2b2lkPik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZGluZyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIGZvY3VzJDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IHRoaXMuX2ZvY3VzU3RyZWFtJC5waXBlKHN3aXRjaE1hcCgoc3RyZWFtOiBPYnNlcnZhYmxlPHVua25vd24+KSA9PiBzdHJlYW0pKTtcblxuICBibHVyJDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IHRoaXMuX2JsdXJTdHJlYW0kLnBpcGUoc3dpdGNoTWFwKChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4pID0+IHN0cmVhbSkpO1xuXG4gIGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJpdmF0ZSBfY2hhbmdlZD86ICh2YWx1ZTogV2xjbUF1dG9jb21wbGV0ZU9wdGlvbiB8IHN0cmluZykgPT4gdm9pZDtcblxuICBwcml2YXRlIF90b3VjaGVkPzogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF9vblZhbGlkYXRvckNoYW5nZT86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfcGFnaW5hdGVkRGF0YTogV2xjbVBhZ2luYXRlZERhdGE8T3B0aW9uPiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX3JlbG9hZE9wdGlvbnMkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBAVmlld0NoaWxkKFdMQ01fSU5QVVQsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwdWJsaWMgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpIHByaXZhdGUgYXV0b2NvbXBsZXRlVHJpZ2dlciE6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXI7XG5cbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGUpIHByaXZhdGUgYXV0b2NvbXBsZXRlITogTWF0QXV0b2NvbXBsZXRlO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoV0xDTV9GT1JNX0ZJRUxEKSBwcml2YXRlIGZvcm1GaWVsZDogV2xjbUZvcm1GaWVsZCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmhhbmRsZUxvYWRNb3JlRXZlbnQoKTtcblxuICAgIHRoaXMuaGFuZGxlQ29udHJvbFZhbHVlQ2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkT3B0aW9ucygpLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyOiBFbGVtZW50UmVmID0gdGhpcy5mb3JtRmllbGQuaW5wdXRDb250YWluZXI7XG5cbiAgICBjb25zdCBvcmlnaW46IE1hdEF1dG9jb21wbGV0ZU9yaWdpbiA9IG5ldyBNYXRBdXRvY29tcGxldGVPcmlnaW4oY29udGFpbmVyKTtcblxuICAgIHRoaXMuYXV0b2NvbXBsZXRlVHJpZ2dlci5jb25uZWN0ZWRUbyA9IG9yaWdpbjtcblxuICAgIHRoaXMuYXR0YWNoRm9jdXNCbHVyTGlzdGVuZXJzKCk7XG4gIH1cblxuICBkaXNwbGF5V2l0aCh2YWx1ZTogT3B0aW9uIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIHJldHVybiB2YWx1ZS52aWV3VmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgaXNGb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCB8fCB0aGlzLmF1dG9jb21wbGV0ZT8uaXNPcGVuO1xuICB9XG5cbiAgbG9hZE1vcmUoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9hZE1vcmUkLm5leHQoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IFdsY21BdXRvY29tcGxldGVWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGNhbGxiYWNrOiAodmFsdWU6IFdsY21BdXRvY29tcGxldGVPcHRpb24gfCBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFuZ2VkID0gY2FsbGJhY2s7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3RvdWNoZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250cm9sLmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XG4gIH1cblxuICByZWxvYWRPcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbG9hZE9wdGlvbnMkLm5leHQoKTtcbiAgfVxuXG4gIGJsdXJlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXV0b2NvbXBsZXRlLmlzT3BlbikgdGhpcy5fdG91Y2hlZD8uKCk7XG5cbiAgICB0aGlzLmF1dG9jb21wbGV0ZS5jbG9zZWQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fdG91Y2hlZD8uKCkpO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghIXRoaXMuY29udHJvbC52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIHJldHVybiB7IC4uLmNvbnRyb2wuZXJyb3JzLCB1bnNlbGVjdGVkOiB0cnVlLCByZXF1aXJlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkT3B0aW9ucyhxdWVyeTogc3RyaW5nID0gJycpOiBPYnNlcnZhYmxlPFdsY21QYWdpbmF0ZWREYXRhPE9wdGlvbj4+IHtcbiAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHsgLi4udGhpcy5xdWVyeVBhcmFtcywgcXVlcnksIHBhZ2U6IDEgfTtcblxuICAgIHJldHVybiB0aGlzLmZldGNoUGFnaW5hdGVkT3B0aW9ucyh0aGlzLnF1ZXJ5UGFyYW1zKS5waXBlKFxuICAgICAgdGFwKChwYWdpbmF0ZWREYXRhOiBXbGNtUGFnaW5hdGVkRGF0YTxPcHRpb24+KSA9PiB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRlZERhdGEgPSBwYWdpbmF0ZWREYXRhO1xuXG4gICAgICAgIHRoaXMuX29wdGlvbnMkLm5leHQocGFnaW5hdGVkRGF0YS5kYXRhKTtcblxuICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUxvYWRNb3JlRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9hZE1vcmUkXG4gICAgICAucGlwZShcbiAgICAgICAgY29uY2F0TWFwKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fcGFnaW5hdGVkRGF0YSAmJiB0aGlzLl9wYWdpbmF0ZWREYXRhLmN1cnJQYWdlICsgMSA8PSB0aGlzLl9wYWdpbmF0ZWREYXRhLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZSsrO1xuXG4gICAgICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFBhZ2luYXRlZE9wdGlvbnModGhpcy5xdWVyeVBhcmFtcykucGlwZShcbiAgICAgICAgICAgICAgdGFwKChwYWdpbmF0ZWREYXRhOiBXbGNtUGFnaW5hdGVkRGF0YTxPcHRpb24+KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFnaW5hdGVkRGF0YSA9IHBhZ2luYXRlZERhdGE7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zJC5uZXh0KFsuLi50aGlzLl9vcHRpb25zJC52YWx1ZSwgLi4ucGFnaW5hdGVkRGF0YS5kYXRhXSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNvbnRyb2xWYWx1ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgbWVyZ2UodGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcywgdGhpcy5fcmVsb2FkT3B0aW9ucyQucGlwZShtYXAoKCkgPT4gdGhpcy5jb250cm9sLnZhbHVlKSkpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlVmFsdWUpID0+IHtcbiAgICAgICAgICBsZXQgX3ZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlVmFsdWUgPSB2YWx1ZSA/PyAnJztcblxuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiB0aGlzLnNlbGVjdE9wdGlvbkZvcm1hdCgpID09PSAnVmFsdWVPbmx5JykgX3ZhbHVlID0gdmFsdWUudmFsdWU7XG5cbiAgICAgICAgICB0aGlzLl9jaGFuZ2VkPy4oX3ZhbHVlKTtcblxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChfdmFsdWUpO1xuXG4gICAgICAgICAgcmV0dXJuICEodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlVmFsdWUpID0+XG4gICAgICAgICAgdGltZXIoMjAwKS5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxvYWRPcHRpb25zKHZhbHVlIGFzIHN0cmluZykpKSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoRm9jdXNCbHVyTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHZvaWRGbiA9ICgpID0+IHt9O1xuXG4gICAgY29uc3QgaW5wdXRGb2N1czogT2JzZXJ2YWJsZTxFdmVudD4gPSBmcm9tRXZlbnQodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2ZvY3VzJyk7XG5cbiAgICBjb25zdCBpbnB1dEJsdXI6IE9ic2VydmFibGU8RXZlbnQ+ID0gZnJvbUV2ZW50KHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdibHVyJyk7XG5cbiAgICBjb25zdCBmb2N1c09ic2VydmFibGVzOiBPYnNlcnZhYmxlPHVua25vd24+W10gPSBbaW5wdXRGb2N1cywgdGhpcy5hdXRvY29tcGxldGUub3BlbmVkXTtcblxuICAgIGNvbnN0IGJsdXJPYnNlcnZhYmxlczogT2JzZXJ2YWJsZTx1bmtub3duPltdID0gW2lucHV0Qmx1ciwgdGhpcy5hdXRvY29tcGxldGUuY2xvc2VkXTtcblxuICAgIHRoaXMuX2ZvY3VzU3RyZWFtJC5uZXh0KG1lcmdlKC4uLmZvY3VzT2JzZXJ2YWJsZXMpLnBpcGUobWFwKHZvaWRGbikpKTtcblxuICAgIHRoaXMuX2JsdXJTdHJlYW0kLm5leHQobWVyZ2UoLi4uYmx1ck9ic2VydmFibGVzKS5waXBlKG1hcCgoKSA9PiB0aGlzLmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKSkpKTtcbiAgfVxufVxuIiwiPGlucHV0XG4gIHdsY21JbnB1dFxuICB0eXBlPVwidGV4dFwiXG4gIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAoYmx1cik9XCJibHVyZWQoKVwiXG4vPlxuXG48bWF0LWF1dG9jb21wbGV0ZVxuICAjYXV0b2NvbXBsZXRlPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgd2xjbUF1dG9jb21wbGV0ZVxuICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcbiAgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlXaXRoXCJcbiAgW2hpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JdPVwidHJ1ZVwiXG4gIChwYW5lbFNjcm9sbGVkKT1cImxvYWRNb3JlKClcIlxuPlxuICA8bmctY29udGFpbmVyICpyeExldD1cIiRhbnkob3B0aW9ucyQgfCBhc3luYyk7IGxldCBvcHRpb25zXCI+XG4gICAgPG1hdC1vcHRpb25cbiAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiXG4gICAgICBbbmdDbGFzc109XCJ7ICd3bGNtLWN1c3RvbS1vcHRpb24tY29udGVudCc6IG9wdGlvblRlbXBsYXRlIH1cIlxuICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXG4gICAgPlxuICAgICAgQGlmIChvcHRpb25UZW1wbGF0ZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG9wdGlvbiB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHt7IG9wdGlvbi52aWV3VmFsdWUgfX1cbiAgICAgIH1cbiAgICA8L21hdC1vcHRpb24+XG5cbiAgICA8bWF0LW9wdGlvbiBbZGlzYWJsZWRdPVwidHJ1ZVwiICpuZ0lmPVwib3B0aW9ucy5sZW5ndGggPT09IDBcIj5cbiAgICAgIEBpZiAobm9SZXN1bHRzVGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIG5vUmVzdWx0c1RlbXBsYXRlKCkhO1xuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbnRyb2wudmFsdWUsIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmMgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGRlZmF1bHROb1Jlc3VsdHNUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb250cm9sLnZhbHVlLCBsb2FkaW5nOiBsb2FkaW5nJCB8IGFzeW5jIH1cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICB9XG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm9SZXN1bHRzVGVtcGxhdGUgbGV0LWxvYWRpbmc9XCJsb2FkaW5nXCI+XG4gIEBpZiAobG9hZGluZykge1xuICAgIFBsZWFzZSB3YWl0Li4uXG4gIH0gQGVsc2Uge1xuICAgIE5vIHJlc3VsdHMgZm91bmRcbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUdwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGVBQWUsRUFDZixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLHNCQUFzQixHQUN2QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsS0FBSyxFQUVMLE9BQU8sRUFDUCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1QsR0FBRyxFQUNI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QkFBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLE1BQXVCLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFpRGhCLFlBQVk7c0JBQS9ELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFFQSxtQkFBbUI7c0JBQTdELFNBQVM7dUJBQUMsc0JBQXNCO2dCQUVHLFlBQVk7c0JBQS9DLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIElucHV0U2lnbmFsLFxuICBPbkluaXQsXG4gIE91dHB1dEVtaXR0ZXJSZWYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFdsY21Gb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IFdsY21MYWJlbENvbXBvbmVudCB9IGZyb20gJy4uL2xhYmVsL2xhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXbGNtSW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2lucHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICBNQVRfQVVUT0NPTVBMRVRFX0RFRkFVTFRfT1BUSU9OUyxcbiAgTWF0QXV0b2NvbXBsZXRlLFxuICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gIE1hdEF1dG9jb21wbGV0ZU9yaWdpbixcbiAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgRU1QVFksXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGNvbmNhdE1hcCxcbiAgZmlsdGVyLFxuICBmaXJzdCxcbiAgZnJvbUV2ZW50LFxuICBtYXAsXG4gIG1lcmdlLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbiAgdGltZXIsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2F1dG9jb21wbGV0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgREVGQVVMVF9RVUVSWV9QQVJBTVMsIFdsY21BdXRvY29tcGxldGVPcHRpb24sIFdsY21TZWxlY3RPcHRpb25Gb3JtYXQgfSBmcm9tICdAd2xjbS9hbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV0xDTV9GT1JNX0ZJRUxELCBXTENNX0lOUFVULCBXTENNX0lOUFVUX0JJTkRFUiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXbGNtQXV0b2NvbXBsZXRlLCBXbGNtQXV0b2NvbXBsZXRlVmFsdWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXV0b2NvbXBsZXRlLm1vZGVscyc7XG5pbXBvcnQgeyBXbGNtUXVlcnlQYXJhbXMsIFdsY21QYWdpbmF0ZWREYXRhIH0gZnJvbSAnQHdsY20vY29tbW9uJztcbmltcG9ydCB7IFdsY21Gb3JtRmllbGRJbnB1dCB9IGZyb20gJy4uLy4uL21vZGVscy9pbnB1dC5tb2RlbHMnO1xuaW1wb3J0IHsgV2xjbUZvcm1GaWVsZCB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLm1vZGVscyc7XG5pbXBvcnQgeyBSeExldCB9IGZyb20gJ0ByeC1hbmd1bGFyL3RlbXBsYXRlL2xldCc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG50eXBlIE9wdGlvbiA9IFdsY21BdXRvY29tcGxldGVPcHRpb247XG5cbmNvbnN0IFBBTkVMX0NMQVNTOiBzdHJpbmcgPSAnd2xjbS1hdXRvY29tcGxldGUtcGFuZWwnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dsY20tYXV0b2NvbXBsZXRlJyxcbiAgZXhwb3J0QXM6ICd3bGNtQXV0b2NvbXBsZXRlJyxcbiAgaG9zdDogeyBjbGFzczogJ3dsY20tYXV0b2NvbXBsZXRlJyB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBBdXRvY29tcGxldGVEaXJlY3RpdmUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBXbGNtRm9ybUZpZWxkQ29tcG9uZW50LFxuICAgIFdsY21MYWJlbENvbXBvbmVudCxcbiAgICBXbGNtSW5wdXREaXJlY3RpdmUsXG4gICAgUnhMZXQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IG92ZXJsYXlQYW5lbENsYXNzOiBQQU5FTF9DTEFTUyB9IH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2xjbUF1dG9jb21wbGV0ZUNvbXBvbmVudCksIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXbGNtQXV0b2NvbXBsZXRlQ29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBXTENNX0lOUFVUX0JJTkRFUixcbiAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgY29uc3QgYXV0b2NvbXBsZXRlID0gaW5qZWN0KFdsY21BdXRvY29tcGxldGVDb21wb25lbnQsIHsgc2VsZjogdHJ1ZSB9KTtcblxuICAgICAgICByZXR1cm4geyBiaW5kOiAoKSA9PiBhdXRvY29tcGxldGUgfTtcbiAgICAgIH0sXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV2xjbUF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICBleHRlbmRzIFdsY21BdXRvY29tcGxldGVcbiAgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3IsIEFmdGVyVmlld0luaXQsIFdsY21Gb3JtRmllbGRJbnB1dFxue1xuICBASW5wdXQoKSBmZXRjaFBhZ2luYXRlZE9wdGlvbnMhOiAocGFyYW1zOiBXbGNtUXVlcnlQYXJhbXMpID0+IE9ic2VydmFibGU8V2xjbVBhZ2luYXRlZERhdGE8T3B0aW9uPj47XG5cbiAgQElucHV0KCkgbGFiZWwhOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgb3B0aW9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogV2xjbUF1dG9jb21wbGV0ZU9wdGlvbiB9PjtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IChwYXJhbXM6IFdsY21RdWVyeVBhcmFtcykgPT4gY2xvbmVEZWVwKHBhcmFtcykgfSkgcXVlcnlQYXJhbXM6IFdsY21RdWVyeVBhcmFtcyA9IGNsb25lRGVlcCh7XG4gICAgLi4uREVGQVVMVF9RVUVSWV9QQVJBTVMsXG4gICAgbGltaXQ6IDE1LFxuICB9KTtcblxuICBzZWxlY3RPcHRpb25Gb3JtYXQ6IElucHV0U2lnbmFsPFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+ID0gaW5wdXQ8V2xjbVNlbGVjdE9wdGlvbkZvcm1hdD4oJ1ZhbHVlT25seScpO1xuXG4gIG5vUmVzdWx0c1RlbXBsYXRlOiBJbnB1dFNpZ25hbDxUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogV2xjbUF1dG9jb21wbGV0ZVZhbHVlOyBsb2FkaW5nOiBib29sZWFuIH0+IHwgdW5kZWZpbmVkPiA9XG4gICAgaW5wdXQoKTtcblxuICBzZWxlY3RlZDogT3V0cHV0RW1pdHRlclJlZjxXbGNtQXV0b2NvbXBsZXRlVmFsdWU+ID0gb3V0cHV0KCk7XG5cbiAgcmVhZG9ubHkgY29udHJvbDogRm9ybUNvbnRyb2w8V2xjbUF1dG9jb21wbGV0ZVZhbHVlPiA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZE1vcmUkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zJDogQmVoYXZpb3JTdWJqZWN0PE9wdGlvbltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T3B0aW9uW10+KFtdKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9ucyQ6IE9ic2VydmFibGU8T3B0aW9uW10+ID0gdGhpcy5fb3B0aW9ucyQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsb3NlZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvY3VzU3RyZWFtJDogQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8dm9pZD4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChFTVBUWSBhcyBPYnNlcnZhYmxlPHZvaWQ+KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ibHVyU3RyZWFtJDogQmVoYXZpb3JTdWJqZWN0PE9ic2VydmFibGU8dm9pZD4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChFTVBUWSBhcyBPYnNlcnZhYmxlPHZvaWQ+KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgZm9jdXMkOiBPYnNlcnZhYmxlPHVua25vd24+ID0gdGhpcy5fZm9jdXNTdHJlYW0kLnBpcGUoc3dpdGNoTWFwKChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4pID0+IHN0cmVhbSkpO1xuXG4gIGJsdXIkOiBPYnNlcnZhYmxlPHVua25vd24+ID0gdGhpcy5fYmx1clN0cmVhbSQucGlwZShzd2l0Y2hNYXAoKHN0cmVhbTogT2JzZXJ2YWJsZTx1bmtub3duPikgPT4gc3RyZWFtKSk7XG5cbiAgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcblxuICBwcml2YXRlIF9jaGFuZ2VkPzogKHZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlVmFsdWUpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdG91Y2hlZD86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfb25WYWxpZGF0b3JDaGFuZ2U/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgYWRqdXN0ZWRWYWx1ZSQ6IEJlaGF2aW9yU3ViamVjdDxXbGNtQXV0b2NvbXBsZXRlVmFsdWUgfCBudWxsPiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxXbGNtQXV0b2NvbXBsZXRlVmFsdWUgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIF9wYWdpbmF0ZWREYXRhOiBXbGNtUGFnaW5hdGVkRGF0YTxPcHRpb24+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfcmVsb2FkT3B0aW9ucyQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgdmlld1JlYWR5JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQFZpZXdDaGlsZChXTENNX0lOUFVULCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgcHVibGljIGlucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZChNYXRBdXRvY29tcGxldGVUcmlnZ2VyKSBwcml2YXRlIGF1dG9jb21wbGV0ZVRyaWdnZXIhOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xuXG4gIEBWaWV3Q2hpbGQoTWF0QXV0b2NvbXBsZXRlKSBwcml2YXRlIGF1dG9jb21wbGV0ZSE6IE1hdEF1dG9jb21wbGV0ZTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFdMQ01fRk9STV9GSUVMRCkgcHJpdmF0ZSBmb3JtRmllbGQ6IFdsY21Gb3JtRmllbGQpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5oYW5kbGVMb2FkTW9yZUV2ZW50KCk7XG5cbiAgICB0aGlzLmhhbmRsZUNvbnRyb2xWYWx1ZUNoYW5nZXMoKTtcblxuICAgIHRoaXMuaGFuZGxlQWRqdXN0ZWRWYWx1ZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkT3B0aW9ucygpLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3UmVhZHkkLm5leHQoKTtcblxuICAgIGNvbnN0IGNvbnRhaW5lcjogRWxlbWVudFJlZiA9IHRoaXMuZm9ybUZpZWxkLmlucHV0Q29udGFpbmVyO1xuXG4gICAgY29uc3Qgb3JpZ2luOiBNYXRBdXRvY29tcGxldGVPcmlnaW4gPSBuZXcgTWF0QXV0b2NvbXBsZXRlT3JpZ2luKGNvbnRhaW5lcik7XG5cbiAgICB0aGlzLmF1dG9jb21wbGV0ZVRyaWdnZXIuY29ubmVjdGVkVG8gPSBvcmlnaW47XG5cbiAgICB0aGlzLmF0dGFjaEZvY3VzQmx1ckxpc3RlbmVycygpO1xuICB9XG5cbiAgZGlzcGxheVdpdGgodmFsdWU6IE9wdGlvbiB8IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICByZXR1cm4gdmFsdWUudmlld1ZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGlzRm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgfHwgdGhpcy5hdXRvY29tcGxldGU/LmlzT3BlbjtcbiAgfVxuXG4gIGxvYWRNb3JlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xvYWRNb3JlJC5uZXh0KCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlVmFsdWUpOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZTogV2xjbUF1dG9jb21wbGV0ZVZhbHVlID0gdGhpcy5wcmVwYXJlVmFsdWVGb3JQYXRjaCh2YWx1ZSk7XG5cbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoZm9ybWF0dGVkVmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShjYWxsYmFjazogKHZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlVmFsdWUpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFuZ2VkID0gY2FsbGJhY2s7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3RvdWNoZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250cm9sLmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKCk7XG4gIH1cblxuICByZWxvYWRPcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbG9hZE9wdGlvbnMkLm5leHQoKTtcbiAgfVxuXG4gIGJsdXJlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYXV0b2NvbXBsZXRlLmlzT3BlbikgdGhpcy5fdG91Y2hlZD8uKCk7XG5cbiAgICB0aGlzLmF1dG9jb21wbGV0ZS5jbG9zZWQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fdG91Y2hlZD8uKCkpO1xuICB9XG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmICghIXRoaXMuY29udHJvbC52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgIHJldHVybiB7IC4uLmNvbnRyb2wuZXJyb3JzLCB1bnNlbGVjdGVkOiB0cnVlLCByZXF1aXJlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVwYXJlVmFsdWVGb3JQYXRjaCh2YWx1ZTogV2xjbUF1dG9jb21wbGV0ZVZhbHVlKTogV2xjbUF1dG9jb21wbGV0ZVZhbHVlIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgdGhpcy5zZWxlY3RPcHRpb25Gb3JtYXQoKSA9PT0gJ1ZhbHVlT25seScpIHtcbiAgICAgIHRoaXMuYWRqdXN0ZWRWYWx1ZSQubmV4dCh2YWx1ZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkT3B0aW9ucyhxdWVyeTogc3RyaW5nID0gJycpOiBPYnNlcnZhYmxlPFdsY21QYWdpbmF0ZWREYXRhPE9wdGlvbj4+IHtcbiAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHsgLi4udGhpcy5xdWVyeVBhcmFtcywgcXVlcnksIHBhZ2U6IDEgfTtcblxuICAgIHJldHVybiB0aGlzLmZldGNoUGFnaW5hdGVkT3B0aW9ucyh0aGlzLnF1ZXJ5UGFyYW1zKS5waXBlKFxuICAgICAgdGFwKChwYWdpbmF0ZWREYXRhOiBXbGNtUGFnaW5hdGVkRGF0YTxPcHRpb24+KSA9PiB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRlZERhdGEgPSBwYWdpbmF0ZWREYXRhO1xuXG4gICAgICAgIHRoaXMuX29wdGlvbnMkLm5leHQocGFnaW5hdGVkRGF0YS5kYXRhKTtcblxuICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUxvYWRNb3JlRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5fbG9hZE1vcmUkXG4gICAgICAucGlwZShcbiAgICAgICAgY29uY2F0TWFwKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fcGFnaW5hdGVkRGF0YSAmJiB0aGlzLl9wYWdpbmF0ZWREYXRhLmN1cnJQYWdlICsgMSA8PSB0aGlzLl9wYWdpbmF0ZWREYXRhLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZSsrO1xuXG4gICAgICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHRydWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFBhZ2luYXRlZE9wdGlvbnModGhpcy5xdWVyeVBhcmFtcykucGlwZShcbiAgICAgICAgICAgICAgdGFwKChwYWdpbmF0ZWREYXRhOiBXbGNtUGFnaW5hdGVkRGF0YTxPcHRpb24+KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcGFnaW5hdGVkRGF0YSA9IHBhZ2luYXRlZERhdGE7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9vcHRpb25zJC5uZXh0KFsuLi50aGlzLl9vcHRpb25zJC52YWx1ZSwgLi4ucGFnaW5hdGVkRGF0YS5kYXRhXSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNvbnRyb2xWYWx1ZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgbWVyZ2UodGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcywgdGhpcy5fcmVsb2FkT3B0aW9ucyQucGlwZShtYXAoKCkgPT4gdGhpcy5jb250cm9sLnZhbHVlKSkpXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlVmFsdWUpID0+IHtcbiAgICAgICAgICBsZXQgX3ZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlVmFsdWUgPSB2YWx1ZSA/PyAnJztcblxuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiB0aGlzLnNlbGVjdE9wdGlvbkZvcm1hdCgpID09PSAnVmFsdWVPbmx5JykgX3ZhbHVlID0gdmFsdWUudmFsdWU7XG5cbiAgICAgICAgICB0aGlzLl9jaGFuZ2VkPy4oX3ZhbHVlKTtcblxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChfdmFsdWUpO1xuXG4gICAgICAgICAgcmV0dXJuICEodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlOiBXbGNtQXV0b2NvbXBsZXRlVmFsdWUpID0+XG4gICAgICAgICAgdGltZXIoMjAwKS5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxvYWRPcHRpb25zKHZhbHVlIGFzIHN0cmluZykpKSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoRm9jdXNCbHVyTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHZvaWRGbiA9ICgpID0+IHt9O1xuXG4gICAgY29uc3QgaW5wdXRGb2N1czogT2JzZXJ2YWJsZTxFdmVudD4gPSBmcm9tRXZlbnQodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2ZvY3VzJyk7XG5cbiAgICBjb25zdCBpbnB1dEJsdXI6IE9ic2VydmFibGU8RXZlbnQ+ID0gZnJvbUV2ZW50KHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdibHVyJyk7XG5cbiAgICBjb25zdCBmb2N1c09ic2VydmFibGVzOiBPYnNlcnZhYmxlPHVua25vd24+W10gPSBbaW5wdXRGb2N1cywgdGhpcy5hdXRvY29tcGxldGUub3BlbmVkXTtcblxuICAgIGNvbnN0IGJsdXJPYnNlcnZhYmxlczogT2JzZXJ2YWJsZTx1bmtub3duPltdID0gW2lucHV0Qmx1ciwgdGhpcy5hdXRvY29tcGxldGUuY2xvc2VkXTtcblxuICAgIHRoaXMuX2ZvY3VzU3RyZWFtJC5uZXh0KG1lcmdlKC4uLmZvY3VzT2JzZXJ2YWJsZXMpLnBpcGUobWFwKHZvaWRGbikpKTtcblxuICAgIHRoaXMuX2JsdXJTdHJlYW0kLm5leHQobWVyZ2UoLi4uYmx1ck9ic2VydmFibGVzKS5waXBlKG1hcCgoKSA9PiB0aGlzLmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKSkpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQWRqdXN0ZWRWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnZpZXdSZWFkeSRcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLmFkanVzdGVkVmFsdWUkLnBpcGUoZmlsdGVyKEJvb2xlYW4pKSkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogV2xjbUF1dG9jb21wbGV0ZVZhbHVlKSA9PiB0aGlzLl9jaGFuZ2VkPy4odmFsdWUpKTtcbiAgfVxufVxuIiwiPGlucHV0XG4gIHdsY21JbnB1dFxuICB0eXBlPVwidGV4dFwiXG4gIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcbiAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAoYmx1cik9XCJibHVyZWQoKVwiXG4vPlxuXG48bWF0LWF1dG9jb21wbGV0ZVxuICAjYXV0b2NvbXBsZXRlPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgd2xjbUF1dG9jb21wbGV0ZVxuICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcbiAgW2Rpc3BsYXlXaXRoXT1cImRpc3BsYXlXaXRoXCJcbiAgW2hpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JdPVwidHJ1ZVwiXG4gIChwYW5lbFNjcm9sbGVkKT1cImxvYWRNb3JlKClcIlxuPlxuICA8bmctY29udGFpbmVyICpyeExldD1cIiRhbnkob3B0aW9ucyQgfCBhc3luYyk7IGxldCBvcHRpb25zXCI+XG4gICAgPG1hdC1vcHRpb25cbiAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiXG4gICAgICBbbmdDbGFzc109XCJ7ICd3bGNtLWN1c3RvbS1vcHRpb24tY29udGVudCc6IG9wdGlvblRlbXBsYXRlIH1cIlxuICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXG4gICAgPlxuICAgICAgQGlmIChvcHRpb25UZW1wbGF0ZSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IG9wdGlvbiB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHt7IG9wdGlvbi52aWV3VmFsdWUgfX1cbiAgICAgIH1cbiAgICA8L21hdC1vcHRpb24+XG5cbiAgICA8bWF0LW9wdGlvbiBbZGlzYWJsZWRdPVwidHJ1ZVwiICpuZ0lmPVwib3B0aW9ucy5sZW5ndGggPT09IDBcIj5cbiAgICAgIEBpZiAobm9SZXN1bHRzVGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIG5vUmVzdWx0c1RlbXBsYXRlKCkhO1xuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbnRyb2wudmFsdWUsIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmMgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGRlZmF1bHROb1Jlc3VsdHNUZW1wbGF0ZTtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb250cm9sLnZhbHVlLCBsb2FkaW5nOiBsb2FkaW5nJCB8IGFzeW5jIH1cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICB9XG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWF0LWF1dG9jb21wbGV0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm9SZXN1bHRzVGVtcGxhdGUgbGV0LWxvYWRpbmc9XCJsb2FkaW5nXCI+XG4gIEBpZiAobG9hZGluZykge1xuICAgIFBsZWFzZSB3YWl0Li4uXG4gIH0gQGVsc2Uge1xuICAgIE5vIHJlc3VsdHMgZm91bmRcbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
@@ -6,7 +6,7 @@ import { MAT_SELECT_CONFIG, MatOption, MatSelect, MatSelectModule } from '@angul
|
|
6
6
|
import { DEFAULT_QUERY_PARAMS, ScrollDetectionApi, WlcmIconDirective, WlcmIconName, } from '@wlcm/angular/core';
|
7
7
|
import { WLCM_FORM_CONTROL, WLCM_FORM_CONTROL_PROVIDER, WLCM_FORM_FIELD } from '../../constants';
|
8
8
|
import { WlcmSelectInputBinderDirective } from '../../directives/select-input-binder.directive';
|
9
|
-
import { BehaviorSubject, EMPTY, Observable, Subject, first, of, switchMap, takeUntil } from 'rxjs';
|
9
|
+
import { BehaviorSubject, EMPTY, Observable, Subject, filter, first, of, switchMap, takeUntil } from 'rxjs';
|
10
10
|
import { WLCM_SELECT_CONFIG } from '../../constants/select.constants';
|
11
11
|
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
12
12
|
import { toObservable } from '@angular/core/rxjs-interop';
|
@@ -70,6 +70,8 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
70
70
|
this._blurStream$ = new BehaviorSubject(EMPTY);
|
71
71
|
this.focus$ = this._focusStream$.pipe(switchMap((stream) => stream));
|
72
72
|
this.blur$ = this._blurStream$.pipe(switchMap((stream) => stream));
|
73
|
+
this.adjustedValue$ = new BehaviorSubject(null);
|
74
|
+
this.viewReady$ = new Subject();
|
73
75
|
this.selected$ = new Subject();
|
74
76
|
this.compareWith = (optionA, optionB) => {
|
75
77
|
return (optionA?.value || optionA) === (optionB?.value || optionB);
|
@@ -79,6 +81,7 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
79
81
|
if (this.parentFormMember) {
|
80
82
|
this.handleStateChange();
|
81
83
|
}
|
84
|
+
this.handleAdjustedValue();
|
82
85
|
toObservable(this.paginated)
|
83
86
|
.pipe(untilDestroyed(this))
|
84
87
|
.subscribe((paginated) => {
|
@@ -87,6 +90,7 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
87
90
|
});
|
88
91
|
}
|
89
92
|
ngAfterViewInit() {
|
93
|
+
this.viewReady$.next();
|
90
94
|
const formField = this.formField.inputContainer;
|
91
95
|
if (formField) {
|
92
96
|
this.matSelect._preferredOverlayOrigin = new CdkOverlayOrigin(this.formField.inputContainer);
|
@@ -141,7 +145,8 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
141
145
|
writeValue(value) {
|
142
146
|
if (this.paginated())
|
143
147
|
this.prefillOptions(value);
|
144
|
-
this.
|
148
|
+
const formattedValue = this.prepareValueForPatch(value);
|
149
|
+
this.updateValue(formattedValue);
|
145
150
|
}
|
146
151
|
registerOnChange(callback) {
|
147
152
|
this._changed = callback;
|
@@ -161,6 +166,33 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
161
166
|
get isOpen() {
|
162
167
|
return this.matSelect?.panelOpen ?? false;
|
163
168
|
}
|
169
|
+
prepareValueForPatch(value) {
|
170
|
+
const formatedValue = this.formatValue(value);
|
171
|
+
if (formatedValue.changed)
|
172
|
+
this.adjustedValue$.next(formatedValue.value);
|
173
|
+
return formatedValue.value;
|
174
|
+
}
|
175
|
+
formatValue(value) {
|
176
|
+
let changed = false;
|
177
|
+
const _formatOption = (value) => {
|
178
|
+
const formatedOption = this.formatOption(value);
|
179
|
+
if (formatedOption.changed)
|
180
|
+
changed = true;
|
181
|
+
return formatedOption.value;
|
182
|
+
};
|
183
|
+
if (value instanceof Array) {
|
184
|
+
const options = value.map(_formatOption);
|
185
|
+
return { changed, value: options };
|
186
|
+
}
|
187
|
+
const option = _formatOption(value);
|
188
|
+
return { changed, value: option };
|
189
|
+
}
|
190
|
+
formatOption(value) {
|
191
|
+
if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly') {
|
192
|
+
return { changed: true, value: value.value };
|
193
|
+
}
|
194
|
+
return { changed: false, value };
|
195
|
+
}
|
164
196
|
loadPaginatedOptions() {
|
165
197
|
this.queryParams.page = 1;
|
166
198
|
this.fetchPaginatedOptions(this.queryParams)
|
@@ -219,6 +251,11 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
219
251
|
this.changeDetectorRef.markForCheck();
|
220
252
|
});
|
221
253
|
}
|
254
|
+
handleAdjustedValue() {
|
255
|
+
this.viewReady$
|
256
|
+
.pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))
|
257
|
+
.subscribe((value) => this._changed?.(value));
|
258
|
+
}
|
222
259
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmSelectComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.ScrollDetectionApi }, { token: WLCM_FORM_FIELD }, { token: WLCM_FORM_CONTROL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
223
260
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmSelectComponent, isStandalone: true, selector: "wlcm-select", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, fetchPaginatedOptions: { classPropertyName: "fetchPaginatedOptions", publicName: "fetchPaginatedOptions", isSignal: false, isRequired: false, transformFunction: null }, canSelect: { classPropertyName: "canSelect", publicName: "canSelect", isSignal: false, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: false, isRequired: false, transformFunction: null }, paginated: { classPropertyName: "paginated", publicName: "paginated", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectOptionFormat: { classPropertyName: "selectOptionFormat", publicName: "selectOptionFormat", isSignal: true, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: true, isRequired: false, transformFunction: null }, triggerTemplate: { classPropertyName: "triggerTemplate", publicName: "triggerTemplate", isSignal: true, isRequired: false, transformFunction: null }, isOptionDisabled: { classPropertyName: "isOptionDisabled", publicName: "isOptionDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", opened: "opened", closed: "closed" }, host: { listeners: { "click": "openPanel()" } }, providers: [
|
224
261
|
WLCM_FORM_CONTROL_PROVIDER,
|
@@ -279,4 +316,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
279
316
|
type: HostListener,
|
280
317
|
args: ['click']
|
281
318
|
}] } });
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sUUFBUSxFQUlSLFNBQVMsRUFFVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsbUJBQW1CLEdBR3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQW1CLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JILE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixZQUFZLEdBR2IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFaEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsVUFBVSxF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RUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtxQkFDaEc7OzBCQXNGRSxNQUFNOzJCQUFDLGVBQWU7OzBCQUN0QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGlCQUFpQjt5Q0FwRjlCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQXFEZ0IsU0FBUztzQkFBOUIsU0FBUzt1QkFBQyxTQUFTO2dCQUVHLFNBQVM7c0JBQS9CLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBJbnB1dFNpZ25hbCxcbiAgTmdab25lLFxuICBPcHRpb25hbCxcbiAgT3V0cHV0RW1pdHRlclJlZixcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1BVF9TRUxFQ1RfQ09ORklHLCBNYXRPcHRpb24sIE1hdFNlbGVjdCwgTWF0U2VsZWN0Q2hhbmdlLCBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9RVUVSWV9QQVJBTVMsXG4gIFNjcm9sbERldGVjdGlvbkFwaSxcbiAgV2xjbUljb25EaXJlY3RpdmUsXG4gIFdsY21JY29uTmFtZSxcbiAgV2xjbU9wdGlvbixcbiAgV2xjbVNlbGVjdE9wdGlvbkZvcm1hdCxcbn0gZnJvbSAnQHdsY20vYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdMQ01fRk9STV9DT05UUk9MLCBXTENNX0ZPUk1fQ09OVFJPTF9QUk9WSURFUiwgV0xDTV9GT1JNX0ZJRUxEIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFdsY21TZWxlY3RJbnB1dEJpbmRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc2VsZWN0LWlucHV0LWJpbmRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2xjbUZvcm1Db250cm9sLCBXbGNtRm9ybUZpZWxkLCBXbGNtRm9ybUZpZWxkSW5wdXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvX2luZGV4JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmliZXIsIGZpcnN0LCBvZiwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElzT3B0aW9uRGlzYWJsZWRGbiwgV2xjbUNhblNlbGVjdEZuLCBXbGNtU2VsZWN0Q29uZmlnLCBXbGNtU2VsZWN0VmFsdWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VsZWN0Lm1vZGVscyc7XG5pbXBvcnQgeyBXTENNX1NFTEVDVF9DT05GSUcgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvc2VsZWN0LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IFdsY21RdWVyeVBhcmFtcywgV2xjbVBhZ2luYXRlZERhdGEgfSBmcm9tICdAd2xjbS9jb21tb24nO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ2RrT3ZlcmxheU9yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IG1lcmdlV2l0aCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbnR5cGUgT3B0aW9uVGVtcGxhdGVDb250ZXh0ID0gVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFdsY21PcHRpb24gfT47XG5cbmNvbnN0IFBBTkVMX0NMQVNTOiBzdHJpbmcgPSAnd2xjbS1zZWxlY3QtcGFuZWwnO1xuXG5jb25zdCBERUZBVUxUX0NPTkZJRzogV2xjbVNlbGVjdENvbmZpZyA9IHsgb3ZlcmxheVBhbmVsQ2xhc3M6IFtQQU5FTF9DTEFTU10gfTtcblxuY29uc3QgbWVyZ2VDb25maWcgPSAoY29uZmlnOiBXbGNtU2VsZWN0Q29uZmlnKTogV2xjbVNlbGVjdENvbmZpZyA9PiB7XG4gIGNvbnN0IGN1c3RvbWl6ZXIgPSAoX2RlZmF1bHQ6IFdsY21TZWxlY3RDb25maWcsIF9uZXc6IFdsY21TZWxlY3RDb25maWcpOiBBcnJheTx1bmtub3duPiB8IHZvaWQgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KF9kZWZhdWx0KSkgcmV0dXJuIF9kZWZhdWx0LmNvbmNhdChfbmV3KTtcbiAgfTtcblxuICByZXR1cm4gbWVyZ2VXaXRoKHsgLi4uREVGQVVMVF9DT05GSUcgfSwgY29uZmlnLCBjdXN0b21pemVyKTtcbn07XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2xjbS1zZWxlY3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRTZWxlY3RNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFdsY21JY29uRGlyZWN0aXZlLCBXbGNtU2VsZWN0SW5wdXRCaW5kZXJEaXJlY3RpdmVdLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0RGlyZWN0aXZlczogW1dsY21TZWxlY3RJbnB1dEJpbmRlckRpcmVjdGl2ZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIFdMQ01fRk9STV9DT05UUk9MX1BST1ZJREVSLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1BVF9TRUxFQ1RfQ09ORklHLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICBjb25zdCB3bGNtQ29uZmlnOiBXbGNtU2VsZWN0Q29uZmlnID0gaW5qZWN0KFdMQ01fU0VMRUNUX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KSA/PyB7fTtcblxuICAgICAgICByZXR1cm4gbWVyZ2VDb25maWcod2xjbUNvbmZpZyk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBOR19WQUxJREFUT1JTLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXbGNtU2VsZWN0Q29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXbGNtU2VsZWN0Q29tcG9uZW50KSwgbXVsdGk6IHRydWUgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV2xjbVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIFdsY21Gb3JtRmllbGRJbnB1dCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdOb3Qgc2VsZWN0ZWQnO1xuXG4gIEBJbnB1dCgpIGZldGNoUGFnaW5hdGVkT3B0aW9ucz86IChwYXJhbXM6IFdsY21RdWVyeVBhcmFtcykgPT4gT2JzZXJ2YWJsZTxXbGNtUGFnaW5hdGVkRGF0YTxXbGNtT3B0aW9uPj47XG5cbiAgQElucHV0KCkgY2FuU2VsZWN0OiBXbGNtQ2FuU2VsZWN0Rm4gPSAoXzogV2xjbVNlbGVjdFZhbHVlKSA9PiB0cnVlO1xuXG4gIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zOiBXbGNtUXVlcnlQYXJhbXMgPSB7IC4uLkRFRkFVTFRfUVVFUllfUEFSQU1TIH07XG5cbiAgcGFnaW5hdGVkOiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KGZhbHNlKTtcblxuICBvcHRpb25zOiBJbnB1dFNpZ25hbDxXbGNtT3B0aW9uW10+ID0gaW5wdXQ8V2xjbU9wdGlvbltdPihbXSk7XG5cbiAgcGFnaW5hdGVkT3B0aW9uczogV3JpdGFibGVTaWduYWw8V2xjbU9wdGlvbltdPiA9IHNpZ25hbChbXSk7XG5cbiAgc2VsZWN0T3B0aW9uRm9ybWF0OiBJbnB1dFNpZ25hbDxXbGNtU2VsZWN0T3B0aW9uRm9ybWF0PiA9IGlucHV0PFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+KCdWYWx1ZU9ubHknKTtcblxuICBvcHRpb25UZW1wbGF0ZTogSW5wdXRTaWduYWw8VGVtcGxhdGVSZWY8T3B0aW9uVGVtcGxhdGVDb250ZXh0PiB8IG51bGw+ID1cbiAgICBpbnB1dDxUZW1wbGF0ZVJlZjxPcHRpb25UZW1wbGF0ZUNvbnRleHQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgdHJpZ2dlclRlbXBsYXRlOiBJbnB1dFNpZ25hbDxUZW1wbGF0ZVJlZjxNYXRPcHRpb24gfCBNYXRPcHRpb25bXT4gfCB1bmRlZmluZWQ+ID0gaW5wdXQoKTtcblxuICBpc09wdGlvbkRpc2FibGVkOiBJbnB1dFNpZ25hbDxJc09wdGlvbkRpc2FibGVkRm4+ID0gaW5wdXQ8SXNPcHRpb25EaXNhYmxlZEZuPigoKSA9PiBmYWxzZSk7XG5cbiAgc2VsZWN0aW9uQ2hhbmdlOiBPdXRwdXRFbWl0dGVyUmVmPE1hdFNlbGVjdENoYW5nZT4gPSBvdXRwdXQoKTtcblxuICBvcGVuZWQ6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICBjbG9zZWQ6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICByZWFkb25seSB2YWx1ZTogV3JpdGFibGVTaWduYWw8V2xjbVNlbGVjdFZhbHVlIHwgbnVsbD4gPSBzaWduYWwobnVsbCk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBXbGNtSWNvbk5hbWUgPSBXbGNtSWNvbk5hbWU7XG5cbiAgcHJpdmF0ZSBfY2hhbmdlZD86ICh2YWx1ZTogV2xjbU9wdGlvbikgPT4gdm9pZDtcblxuICBwcml2YXRlIF90b3VjaGVkPzogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF92YWxpZGF0b3JDaGFuZ2VkPzogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF9wYWdpbmF0ZWREYXRhOiBXbGNtUGFnaW5hdGVkRGF0YTxXbGNtT3B0aW9uPiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX3ByZXZpb3VzVmFsdWU6IFdsY21TZWxlY3RWYWx1ZSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX29wdGlvbnNDYWNoZTogU2V0PHVua25vd24+ID0gbmV3IFNldCgpO1xuXG4gIGNvbXB1dGVkT3B0aW9uczogU2lnbmFsPFdsY21PcHRpb25bXT4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9uczogV2xjbU9wdGlvbltdID0gdGhpcy5wYWdpbmF0ZWQoKSA/IHRoaXMucGFnaW5hdGVkT3B0aW9ucygpIDogdGhpcy5vcHRpb25zKCk7XG5cbiAgICBpZiAodGhpcy5pc09wdGlvbkRpc2FibGVkKCkgJiYgb3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnVwZGF0ZU9wdGlvbnNTdGF0dXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfSk7XG5cbiAgcHJlZmlsbGVkT3B0aW9uczogV3JpdGFibGVTaWduYWw8V2xjbU9wdGlvbltdPiA9IHNpZ25hbChbXSk7XG5cbiAgQFZpZXdDaGlsZChNYXRTZWxlY3QpIG1hdFNlbGVjdCE6IE1hdFNlbGVjdDtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpIG9wZW5QYW5lbCgpOiB2b2lkIHtcbiAgICB0aGlzLm1hdFNlbGVjdC5vcGVuKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbWF0T3B0aW9uczogU2lnbmFsPFJlYWRvbmx5QXJyYXk8TWF0T3B0aW9uPj4gPSB2aWV3Q2hpbGRyZW4oTWF0T3B0aW9uKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mb2N1c1N0cmVhbSQ6IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPHZvaWQ+PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoRU1QVFkgYXMgT2JzZXJ2YWJsZTx2b2lkPik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYmx1clN0cmVhbSQ6IEJlaGF2aW9yU3ViamVjdDxPYnNlcnZhYmxlPHZvaWQ+PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoRU1QVFkgYXMgT2JzZXJ2YWJsZTx2b2lkPik7XG5cbiAgZm9jdXMkOiBPYnNlcnZhYmxlPHVua25vd24+ID0gdGhpcy5fZm9jdXNTdHJlYW0kLnBpcGUoc3dpdGNoTWFwKChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4pID0+IHN0cmVhbSkpO1xuXG4gIGJsdXIkOiBPYnNlcnZhYmxlPHVua25vd24+ID0gdGhpcy5fYmx1clN0cmVhbSQucGlwZShzd2l0Y2hNYXAoKHN0cmVhbTogT2JzZXJ2YWJsZTx1bmtub3duPikgPT4gc3RyZWFtKSk7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgc2Nyb2xsRGV0ZWN0aW9uQXBpOiBTY3JvbGxEZXRlY3Rpb25BcGksXG4gICAgQEluamVjdChXTENNX0ZPUk1fRklFTEQpIHByaXZhdGUgZm9ybUZpZWxkOiBXbGNtRm9ybUZpZWxkLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoV0xDTV9GT1JNX0NPTlRST0wpIHByaXZhdGUgcGFyZW50Rm9ybU1lbWJlcjogV2xjbUZvcm1Db250cm9sLFxuICApIHtcbiAgICBpZiAodGhpcy5wYXJlbnRGb3JtTWVtYmVyKSB7XG4gICAgICB0aGlzLmhhbmRsZVN0YXRlQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMucGFnaW5hdGVkKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAuc3Vic2NyaWJlKChwYWdpbmF0ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKHBhZ2luYXRlZCkgdGhpcy5sb2FkUGFnaW5hdGVkT3B0aW9ucygpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUZpZWxkOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9IHRoaXMuZm9ybUZpZWxkLmlucHV0Q29udGFpbmVyO1xuXG4gICAgaWYgKGZvcm1GaWVsZCkge1xuICAgICAgdGhpcy5tYXRTZWxlY3QuX3ByZWZlcnJlZE92ZXJsYXlPcmlnaW4gPSBuZXcgQ2RrT3ZlcmxheU9yaWdpbih0aGlzLmZvcm1GaWVsZC5pbnB1dENvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgdGhpcy5fZm9jdXNTdHJlYW0kLm5leHQodGhpcy5tYXRTZWxlY3QuX29wZW5lZFN0cmVhbSk7XG5cbiAgICB0aGlzLl9ibHVyU3RyZWFtJC5uZXh0KHRoaXMubWF0U2VsZWN0Ll9jbG9zZWRTdHJlYW0pO1xuICB9XG5cbiAgY29tcGFyZVdpdGggPSAob3B0aW9uQTogV2xjbU9wdGlvbiB8IHN0cmluZywgb3B0aW9uQjogV2xjbU9wdGlvbiB8IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiAoKG9wdGlvbkEgYXMgV2xjbU9wdGlvbik/LnZhbHVlIHx8IG9wdGlvbkEpID09PSAoKG9wdGlvbkIgYXMgV2xjbU9wdGlvbik/LnZhbHVlIHx8IG9wdGlvbkIpO1xuICB9O1xuXG4gIGZvY3VzID0gKCk6IHZvaWQgPT4gdGhpcy5tYXRTZWxlY3Qub3BlbigpO1xuXG4gIGlzRm9jdXNlZCA9ICgpOiBib29sZWFuID0+IHRoaXMuaXNPcGVuO1xuXG4gIHNlbGVjdChldmVudDogTWF0U2VsZWN0Q2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZCQubmV4dCgpO1xuXG4gICAgdGhpcy5tYXRTZWxlY3QudmFsdWUgPSBldmVudC52YWx1ZTtcblxuICAgIHRoaXMudmFsaWRhdGVTZWxlY3RlZE9wdGlvbihldmVudC52YWx1ZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnNlbGVjdGVkJCkpXG4gICAgICAuc3Vic2NyaWJlKChjYW5TZWxlY3Q6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKCFjYW5TZWxlY3QpIHJldHVybiB0aGlzLnJldmVydFByZXZpb3VzVmFsdWUoKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LnZhbHVlKTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VkPy4oZXZlbnQudmFsdWUpO1xuXG4gICAgICAgIHRoaXMuX3ZhbGlkYXRvckNoYW5nZWQ/LigpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJldmVydFByZXZpb3VzVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5tYXRTZWxlY3QudmFsdWUgPSB0aGlzLl9wcmV2aW91c1ZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZSh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZS5zZXQodmFsdWUpO1xuXG4gICAgdGhpcy5fcHJldmlvdXNWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNlbGVjdGVkT3B0aW9uKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8Ym9vbGVhbj4oKG9ic2VydmVyOiBTdWJzY3JpYmVyPGJvb2xlYW4+KSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IGJvb2xlYW4gPSB0aGlzLmNhblNlbGVjdCh2YWx1ZSk7XG5cbiAgICAgIGNvbnN0IHNvdXJjZTogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHJlc3BvbnNlIGluc3RhbmNlb2YgT2JzZXJ2YWJsZSA/IHJlc3BvbnNlLnBpcGUoZmlyc3QoKSkgOiBvZihyZXNwb25zZSk7XG5cbiAgICAgIHNvdXJjZS5zdWJzY3JpYmUoKHJlc3VsdDogYm9vbGVhbikgPT4ge1xuICAgICAgICBvYnNlcnZlci5uZXh0KHJlc3VsdCk7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYW5lbE9wZW5lZCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XG5cbiAgICB0aGlzLmhhbmRsZVNjcm9sbERvd24oKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYW5lbENsb3NlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG5cbiAgICB0aGlzLl90b3VjaGVkPy4oKTtcbiAgfVxuXG4gIHVwZGF0ZU9wdGlvbnNTdGF0dXMoKTogdm9pZCB7XG4gICAgdGhpcy5tYXRPcHRpb25zKCkuZm9yRWFjaCgobWF0T3B0aW9uOiBNYXRPcHRpb24pID0+IHtcbiAgICAgIG1hdE9wdGlvbi5kaXNhYmxlZCA9IHRoaXMuaXNPcHRpb25EaXNhYmxlZCgpKG1hdE9wdGlvbi52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYWdpbmF0ZWQoKSkgdGhpcy5wcmVmaWxsT3B0aW9ucyh2YWx1ZSk7XG5cbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoY2FsbGJhY2s6ICh2YWx1ZTogV2xjbU9wdGlvbikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5nZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fdG91Y2hlZCA9IGNhbGxiYWNrO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbGlkYXRvckNoYW5nZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpO1xuICB9XG5cbiAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tYXRTZWxlY3Q/LnBhbmVsT3BlbiA/PyBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFBhZ2luYXRlZE9wdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlID0gMTtcblxuICAgIHRoaXMuZmV0Y2hQYWdpbmF0ZWRPcHRpb25zISh0aGlzLnF1ZXJ5UGFyYW1zKVxuICAgICAgLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcyksIGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKChwYWdpbmF0ZWREYXRhOiBXbGNtUGFnaW5hdGVkRGF0YTxXbGNtT3B0aW9uPikgPT4ge1xuICAgICAgICB0aGlzLl9vcHRpb25zQ2FjaGUuY2xlYXIoKTtcblxuICAgICAgICB0aGlzLmNhY2hlT3B0aW9ucyhwYWdpbmF0ZWREYXRhLmRhdGEpO1xuXG4gICAgICAgIHRoaXMuX3BhZ2luYXRlZERhdGEgPSBwYWdpbmF0ZWREYXRhO1xuXG4gICAgICAgIHRoaXMucGFnaW5hdGVkT3B0aW9ucy5zZXQocGFnaW5hdGVkRGF0YS5kYXRhKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkTW9yZVBhZ2luYXRlZE9wdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wYWdpbmF0ZWREYXRhIHx8IHRoaXMuX3BhZ2luYXRlZERhdGEuY3VyclBhZ2UgKyAxID4gdGhpcy5fcGFnaW5hdGVkRGF0YS50b3RhbFBhZ2VzKSByZXR1cm47XG5cbiAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2UrKztcblxuICAgIHRoaXMuZmV0Y2hQYWdpbmF0ZWRPcHRpb25zISh7IC4uLnRoaXMucXVlcnlQYXJhbXMgfSlcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpLCBmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgocGFnaW5hdGVkRGF0YTogV2xjbVBhZ2luYXRlZERhdGE8V2xjbU9wdGlvbj4pID0+IHtcbiAgICAgICAgdGhpcy5jYWNoZU9wdGlvbnMocGFnaW5hdGVkRGF0YS5kYXRhKTtcblxuICAgICAgICB0aGlzLl9wYWdpbmF0ZWREYXRhID0gcGFnaW5hdGVkRGF0YTtcblxuICAgICAgICB0aGlzLnBhZ2luYXRlZE9wdGlvbnMudXBkYXRlKChvcHRpb25zOiBXbGNtT3B0aW9uW10pID0+IFsuLi5vcHRpb25zLCAuLi5wYWdpbmF0ZWREYXRhLmRhdGFdKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWNoZU9wdGlvbnMob3B0aW9uczogV2xjbU9wdGlvbltdKTogdm9pZCB7XG4gICAgb3B0aW9ucy5mb3JFYWNoKChvcHRpb246IFdsY21PcHRpb24pID0+IHRoaXMuX29wdGlvbnNDYWNoZS5hZGQob3B0aW9uLnZhbHVlKSk7XG5cbiAgICB0aGlzLnN5bmNQcmVmaWxsZWRPcHRpb25zKCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNQcmVmaWxsZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZWZpbGxlZE9wdGlvbnMoKS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIHRoaXMucHJlZmlsbGVkT3B0aW9ucy51cGRhdGUoKG9wdGlvbnM6IFdsY21PcHRpb25bXSkgPT4ge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZmlsdGVyKChvcHRpb246IFdsY21PcHRpb24pID0+ICF0aGlzLl9vcHRpb25zQ2FjaGUuaGFzKG9wdGlvbi52YWx1ZSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVmaWxsT3B0aW9ucyh2YWx1ZTogV2xjbVNlbGVjdFZhbHVlKTogdm9pZCB7XG4gICAgbGV0IHByZWZpbGxlZE9wdGlvbnM6IFdsY21PcHRpb25bXSA9IFtdO1xuXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIHByZWZpbGxlZE9wdGlvbnMgPSB2YWx1ZS5maWx0ZXIoKG9wdGlvbjogV2xjbU9wdGlvbiB8IHN0cmluZykgPT4gb3B0aW9uIGluc3RhbmNlb2YgT2JqZWN0KSBhcyBXbGNtT3B0aW9uW107XG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgcHJlZmlsbGVkT3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgdGhpcy5wcmVmaWxsZWRPcHRpb25zLnNldChwcmVmaWxsZWRPcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU2Nyb2xsRG93bigpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXQtbWRjLXNlbGVjdC1wYW5lbCcpITtcblxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbERldGVjdGlvbkFwaS5vblNjcm9sbGVkRG93bihlbGVtZW50KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHRoaXMubG9hZE1vcmVQYWdpbmF0ZWRPcHRpb25zKCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMucGFyZW50Rm9ybU1lbWJlci5zdGF0ZUNoYW5nZXMkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl92YWxpZGF0b3JDaGFuZ2VkPy4oKTtcblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPG1hdC1zZWxlY3RcbiAgI3NlbGVjdENvbXBvbmVudFxuICBbdmFsdWVdPVwidmFsdWUoKVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpXCJcbiAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIFtoaWRlU2luZ2xlU2VsZWN0aW9uSW5kaWNhdG9yXT1cInRydWVcIlxuICBbbmdDbGFzc109XCJ7IGZvY3VzZWQ6IHNlbGVjdENvbXBvbmVudC5mb2N1c2VkIH1cIlxuICAoc2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdCgkZXZlbnQpXCJcbiAgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVXaXRoXCJcbiAgKG9wZW5lZCk9XCJwYW5lbE9wZW5lZCgpXCJcbiAgKGNsb3NlZCk9XCJwYW5lbENsb3NlZCgpXCJcbj5cbiAgQGlmICh0cmlnZ2VyVGVtcGxhdGUoKSkge1xuICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgdHJpZ2dlclRlbXBsYXRlKCkhO1xuICAgICAgICAgIGNvbnRleHQ6ICRhbnkoeyAkaW1wbGljaXQ6IHNlbGVjdENvbXBvbmVudC5zZWxlY3RlZCB9KVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuICB9XG5cbiAgPG1hdC1vcHRpb25cbiAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHByZWZpbGxlZE9wdGlvbnMoKVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdE9wdGlvbkZvcm1hdCgpID09PSAnQ29tcGxldGVPcHRpb24nID8gb3B0aW9uIDogb3B0aW9uLnZhbHVlXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndsY21TZWxlY3RPcHRpb25Db250ZW50XCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtb3B0aW9uPlxuXG4gIDxtYXQtb3B0aW9uXG4gICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBjb21wdXRlZE9wdGlvbnMoKVwiXG4gICAgW3ZhbHVlXT1cInNlbGVjdE9wdGlvbkZvcm1hdCgpID09PSAnQ29tcGxldGVPcHRpb24nID8gb3B0aW9uIDogb3B0aW9uLnZhbHVlXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndsY21TZWxlY3RPcHRpb25Db250ZW50XCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uIH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtb3B0aW9uPlxuPC9tYXQtc2VsZWN0PlxuXG48ZGl2IGNsYXNzPVwid2xjbS1zZWxlY3QtYXJyb3dcIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgIFt3bGNtSWNvbl09XCJXbGNtSWNvbk5hbWUuQ0hFVlJPTl9ET1dOXCJcbiAgICBbd2xjbUljb25TdG9wUHJvcGFnYXRpb25dPVwiZmFsc2VcIlxuICA+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN3bGNtU2VsZWN0T3B0aW9uQ29udGVudCBsZXQtb3B0aW9uPlxuICBAaWYgKG9wdGlvblRlbXBsYXRlKCkpIHtcbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm9wdGlvblRlbXBsYXRlKCk7IGNvbnRleHQ6ICRhbnkoeyAkaW1wbGljaXQ6IG9wdGlvbiB9KVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICB9IEBlbHNlIHtcbiAgICB7eyBvcHRpb24udmlld1ZhbHVlIH19XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
319
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvZm9ybXMvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9mb3Jtcy9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sUUFBUSxFQUlSLFNBQVMsRUFFVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsbUJBQW1CLEdBR3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQW1CLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JILE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixZQUFZLEdBR2IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFaEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsVUFBVSxF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bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBJbnB1dFNpZ25hbCxcbiAgTmdab25lLFxuICBPcHRpb25hbCxcbiAgT3V0cHV0RW1pdHRlclJlZixcbiAgU2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTElEQVRPUlMsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1BVF9TRUxFQ1RfQ09ORklHLCBNYXRPcHRpb24sIE1hdFNlbGVjdCwgTWF0U2VsZWN0Q2hhbmdlLCBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9RVUVSWV9QQVJBTVMsXG4gIFNjcm9sbERldGVjdGlvbkFwaSxcbiAgV2xjbUljb25EaXJlY3RpdmUsXG4gIFdsY21JY29uTmFtZSxcbiAgV2xjbU9wdGlvbixcbiAgV2xjbVNlbGVjdE9wdGlvbkZvcm1hdCxcbn0gZnJvbSAnQHdsY20vYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdMQ01fRk9STV9DT05UUk9MLCBXTENNX0ZPUk1fQ09OVFJPTF9QUk9WSURFUiwgV0xDTV9GT1JNX0ZJRUxEIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFdsY21TZWxlY3RJbnB1dEJpbmRlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc2VsZWN0LWlucHV0LWJpbmRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2xjbUZvcm1Db250cm9sLCBXbGNtRm9ybUZpZWxkLCBXbGNtRm9ybUZpZWxkSW5wdXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvX2luZGV4JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmliZXIsIGZpbHRlciwgZmlyc3QsIG9mLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSXNPcHRpb25EaXNhYmxlZEZuLCBXbGNtQ2FuU2VsZWN0Rm4sIFdsY21TZWxlY3RDb25maWcsIFdsY21TZWxlY3RWYWx1ZSB9IGZyb20gJy4uLy4uL21vZGVscy9zZWxlY3QubW9kZWxzJztcbmltcG9ydCB7IFdMQ01fU0VMRUNUX0NPTkZJRyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9zZWxlY3QuY29uc3RhbnRzJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgV2xjbVF1ZXJ5UGFyYW1zLCBXbGNtUGFnaW5hdGVkRGF0YSB9IGZyb20gJ0B3bGNtL2NvbW1vbic7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDZGtPdmVybGF5T3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgbWVyZ2VXaXRoIH0gZnJvbSAnbG9kYXNoLWVzJztcblxudHlwZSBPcHRpb25UZW1wbGF0ZUNvbnRleHQgPSBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogV2xjbU9wdGlvbiB9PjtcblxuY29uc3QgUEFORUxfQ0xBU1M6IHN0cmluZyA9ICd3bGNtLXNlbGVjdC1wYW5lbCc7XG5cbmNvbnN0IERFRkFVTFRfQ09ORklHOiBXbGNtU2VsZWN0Q29uZmlnID0geyBvdmVybGF5UGFuZWxDbGFzczogW1BBTkVMX0NMQVNTXSB9O1xuXG5jb25zdCBtZXJnZUNvbmZpZyA9IChjb25maWc6IFdsY21TZWxlY3RDb25maWcpOiBXbGNtU2VsZWN0Q29uZmlnID0+IHtcbiAgY29uc3QgY3VzdG9taXplciA9IChfZGVmYXVsdDogV2xjbVNlbGVjdENvbmZpZywgX25ldzogV2xjbVNlbGVjdENvbmZpZyk6IEFycmF5PHVua25vd24+IHwgdm9pZCA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoX2RlZmF1bHQpKSByZXR1cm4gX2RlZmF1bHQuY29uY2F0KF9uZXcpO1xuICB9O1xuXG4gIHJldHVybiBtZXJnZVdpdGgoeyAuLi5ERUZBVUxUX0NPTkZJRyB9LCBjb25maWcsIGN1c3RvbWl6ZXIpO1xufTtcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3bGNtLXNlbGVjdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFNlbGVjdE1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgV2xjbUljb25EaXJlY3RpdmUsIFdsY21TZWxlY3RJbnB1dEJpbmRlckRpcmVjdGl2ZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3REaXJlY3RpdmVzOiBbV2xjbVNlbGVjdElucHV0QmluZGVyRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgV0xDTV9GT1JNX0NPTlRST0xfUFJPVklERVIsXG4gICAge1xuICAgICAgcHJvdmlkZTogTUFUX1NFTEVDVF9DT05GSUcsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHdsY21Db25maWc6IFdsY21TZWxlY3RDb25maWcgPSBpbmplY3QoV0xDTV9TRUxFQ1RfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IHt9O1xuXG4gICAgICAgIHJldHVybiBtZXJnZUNvbmZpZyh3bGNtQ29uZmlnKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21TZWxlY3RDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFdsY21TZWxlY3RDb21wb25lbnQpLCBtdWx0aTogdHJ1ZSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXbGNtU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgV2xjbUZvcm1GaWVsZElucHV0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ05vdCBzZWxlY3RlZCc7XG5cbiAgQElucHV0KCkgZmV0Y2hQYWdpbmF0ZWRPcHRpb25zPzogKHBhcmFtczogV2xjbVF1ZXJ5UGFyYW1zKSA9PiBPYnNlcnZhYmxlPFdsY21QYWdpbmF0ZWREYXRhPFdsY21PcHRpb24+PjtcblxuICBASW5wdXQoKSBjYW5TZWxlY3Q6IFdsY21DYW5TZWxlY3RGbiA9IChfOiBXbGNtU2VsZWN0VmFsdWUpID0+IHRydWU7XG5cbiAgQElucHV0KCkgcXVlcnlQYXJhbXM6IFdsY21RdWVyeVBhcmFtcyA9IHsgLi4uREVGQVVMVF9RVUVSWV9QQVJBTVMgfTtcblxuICBwYWdpbmF0ZWQ6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoZmFsc2UpO1xuXG4gIG9wdGlvbnM6IElucHV0U2lnbmFsPFdsY21PcHRpb25bXT4gPSBpbnB1dDxXbGNtT3B0aW9uW10+KFtdKTtcblxuICBwYWdpbmF0ZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxXbGNtT3B0aW9uW10+ID0gc2lnbmFsKFtdKTtcblxuICBzZWxlY3RPcHRpb25Gb3JtYXQ6IElucHV0U2lnbmFsPFdsY21TZWxlY3RPcHRpb25Gb3JtYXQ+ID0gaW5wdXQ8V2xjbVNlbGVjdE9wdGlvbkZvcm1hdD4oJ1ZhbHVlT25seScpO1xuXG4gIG9wdGlvblRlbXBsYXRlOiBJbnB1dFNpZ25hbDxUZW1wbGF0ZVJlZjxPcHRpb25UZW1wbGF0ZUNvbnRleHQ+IHwgbnVsbD4gPVxuICAgIGlucHV0PFRlbXBsYXRlUmVmPE9wdGlvblRlbXBsYXRlQ29udGV4dD4gfCBudWxsPihudWxsKTtcblxuICB0cmlnZ2VyVGVtcGxhdGU6IElucHV0U2lnbmFsPFRlbXBsYXRlUmVmPE1hdE9wdGlvbiB8IE1hdE9wdGlvbltdPiB8IHVuZGVmaW5lZD4gPSBpbnB1dCgpO1xuXG4gIGlzT3B0aW9uRGlzYWJsZWQ6IElucHV0U2lnbmFsPElzT3B0aW9uRGlzYWJsZWRGbj4gPSBpbnB1dDxJc09wdGlvbkRpc2FibGVkRm4+KCgpID0+IGZhbHNlKTtcblxuICBzZWxlY3Rpb25DaGFuZ2U6IE91dHB1dEVtaXR0ZXJSZWY8TWF0U2VsZWN0Q2hhbmdlPiA9IG91dHB1dCgpO1xuXG4gIG9wZW5lZDogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gIGNsb3NlZDogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gIHJlYWRvbmx5IHZhbHVlOiBXcml0YWJsZVNpZ25hbDxXbGNtU2VsZWN0VmFsdWUgfCBudWxsPiA9IHNpZ25hbChudWxsKTtcblxuICByZWFkb25seSBkaXNhYmxlZDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHJlYWRvbmx5IFdsY21JY29uTmFtZSA9IFdsY21JY29uTmFtZTtcblxuICBwcml2YXRlIF9jaGFuZ2VkPzogKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdG91Y2hlZD86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdG9yQ2hhbmdlZD86ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfcGFnaW5hdGVkRGF0YTogV2xjbVBhZ2luYXRlZERhdGE8V2xjbU9wdGlvbj4gfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9wcmV2aW91c1ZhbHVlOiBXbGNtU2VsZWN0VmFsdWUgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9vcHRpb25zQ2FjaGU6IFNldDx1bmtub3duPiA9IG5ldyBTZXQoKTtcblxuICBjb21wdXRlZE9wdGlvbnM6IFNpZ25hbDxXbGNtT3B0aW9uW10+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnM6IFdsY21PcHRpb25bXSA9IHRoaXMucGFnaW5hdGVkKCkgPyB0aGlzLnBhZ2luYXRlZE9wdGlvbnMoKSA6IHRoaXMub3B0aW9ucygpO1xuXG4gICAgaWYgKHRoaXMuaXNPcHRpb25EaXNhYmxlZCgpICYmIG9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy51cGRhdGVPcHRpb25zU3RhdHVzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH0pO1xuXG4gIHByZWZpbGxlZE9wdGlvbnM6IFdyaXRhYmxlU2lnbmFsPFdsY21PcHRpb25bXT4gPSBzaWduYWwoW10pO1xuXG4gIEBWaWV3Q2hpbGQoTWF0U2VsZWN0KSBtYXRTZWxlY3QhOiBNYXRTZWxlY3Q7XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKSBvcGVuUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5tYXRTZWxlY3Qub3BlbigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hdE9wdGlvbnM6IFNpZ25hbDxSZWFkb25seUFycmF5PE1hdE9wdGlvbj4+ID0gdmlld0NoaWxkcmVuKE1hdE9wdGlvbik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTx2b2lkPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KEVNUFRZIGFzIE9ic2VydmFibGU8dm9pZD4pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2JsdXJTdHJlYW0kOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTx2b2lkPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KEVNUFRZIGFzIE9ic2VydmFibGU8dm9pZD4pO1xuXG4gIGZvY3VzJDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IHRoaXMuX2ZvY3VzU3RyZWFtJC5waXBlKHN3aXRjaE1hcCgoc3RyZWFtOiBPYnNlcnZhYmxlPHVua25vd24+KSA9PiBzdHJlYW0pKTtcblxuICBibHVyJDogT2JzZXJ2YWJsZTx1bmtub3duPiA9IHRoaXMuX2JsdXJTdHJlYW0kLnBpcGUoc3dpdGNoTWFwKChzdHJlYW06IE9ic2VydmFibGU8dW5rbm93bj4pID0+IHN0cmVhbSkpO1xuXG4gIHByaXZhdGUgYWRqdXN0ZWRWYWx1ZSQ6IEJlaGF2aW9yU3ViamVjdDxXbGNtU2VsZWN0VmFsdWUgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V2xjbVNlbGVjdFZhbHVlIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSB2aWV3UmVhZHkkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIHNlbGVjdGVkJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBzY3JvbGxEZXRlY3Rpb25BcGk6IFNjcm9sbERldGVjdGlvbkFwaSxcbiAgICBASW5qZWN0KFdMQ01fRk9STV9GSUVMRCkgcHJpdmF0ZSBmb3JtRmllbGQ6IFdsY21Gb3JtRmllbGQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChXTENNX0ZPUk1fQ09OVFJPTCkgcHJpdmF0ZSBwYXJlbnRGb3JtTWVtYmVyOiBXbGNtRm9ybUNvbnRyb2wsXG4gICkge1xuICAgIGlmICh0aGlzLnBhcmVudEZvcm1NZW1iZXIpIHtcbiAgICAgIHRoaXMuaGFuZGxlU3RhdGVDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmhhbmRsZUFkanVzdGVkVmFsdWUoKTtcblxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLnBhZ2luYXRlZClcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnN1YnNjcmliZSgocGFnaW5hdGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChwYWdpbmF0ZWQpIHRoaXMubG9hZFBhZ2luYXRlZE9wdGlvbnMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmlld1JlYWR5JC5uZXh0KCk7XG5cbiAgICBjb25zdCBmb3JtRmllbGQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gdGhpcy5mb3JtRmllbGQuaW5wdXRDb250YWluZXI7XG5cbiAgICBpZiAoZm9ybUZpZWxkKSB7XG4gICAgICB0aGlzLm1hdFNlbGVjdC5fcHJlZmVycmVkT3ZlcmxheU9yaWdpbiA9IG5ldyBDZGtPdmVybGF5T3JpZ2luKHRoaXMuZm9ybUZpZWxkLmlucHV0Q29udGFpbmVyKTtcbiAgICB9XG5cbiAgICB0aGlzLl9mb2N1c1N0cmVhbSQubmV4dCh0aGlzLm1hdFNlbGVjdC5fb3BlbmVkU3RyZWFtKTtcblxuICAgIHRoaXMuX2JsdXJTdHJlYW0kLm5leHQodGhpcy5tYXRTZWxlY3QuX2Nsb3NlZFN0cmVhbSk7XG4gIH1cblxuICBjb21wYXJlV2l0aCA9IChvcHRpb25BOiBXbGNtT3B0aW9uIHwgc3RyaW5nLCBvcHRpb25COiBXbGNtT3B0aW9uIHwgc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuICgob3B0aW9uQSBhcyBXbGNtT3B0aW9uKT8udmFsdWUgfHwgb3B0aW9uQSkgPT09ICgob3B0aW9uQiBhcyBXbGNtT3B0aW9uKT8udmFsdWUgfHwgb3B0aW9uQik7XG4gIH07XG5cbiAgZm9jdXMgPSAoKTogdm9pZCA9PiB0aGlzLm1hdFNlbGVjdC5vcGVuKCk7XG5cbiAgaXNGb2N1c2VkID0gKCk6IGJvb2xlYW4gPT4gdGhpcy5pc09wZW47XG5cbiAgc2VsZWN0KGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkJC5uZXh0KCk7XG5cbiAgICB0aGlzLm1hdFNlbGVjdC52YWx1ZSA9IGV2ZW50LnZhbHVlO1xuXG4gICAgdGhpcy52YWxpZGF0ZVNlbGVjdGVkT3B0aW9uKGV2ZW50LnZhbHVlKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuc2VsZWN0ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNhblNlbGVjdDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoIWNhblNlbGVjdCkgcmV0dXJuIHRoaXMucmV2ZXJ0UHJldmlvdXNWYWx1ZSgpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoZXZlbnQudmFsdWUpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5nZWQ/LihldmVudC52YWx1ZSk7XG5cbiAgICAgICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlZD8uKCk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChldmVudCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmV2ZXJ0UHJldmlvdXNWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLm1hdFNlbGVjdC52YWx1ZSA9IHRoaXMuX3ByZXZpb3VzVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZhbHVlKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlLnNldCh2YWx1ZSk7XG5cbiAgICB0aGlzLl9wcmV2aW91c1ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlU2VsZWN0ZWRPcHRpb24odmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxib29sZWFuPigob2JzZXJ2ZXI6IFN1YnNjcmliZXI8Ym9vbGVhbj4pID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbiA9IHRoaXMuY2FuU2VsZWN0KHZhbHVlKTtcblxuICAgICAgY29uc3Qgc291cmNlOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gcmVzcG9uc2UgaW5zdGFuY2VvZiBPYnNlcnZhYmxlID8gcmVzcG9uc2UucGlwZShmaXJzdCgpKSA6IG9mKHJlc3BvbnNlKTtcblxuICAgICAgc291cmNlLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XG4gICAgICAgIG9ic2VydmVyLm5leHQocmVzdWx0KTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhbmVsT3BlbmVkKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcblxuICAgIHRoaXMuaGFuZGxlU2Nyb2xsRG93bigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhbmVsQ2xvc2VkKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcblxuICAgIHRoaXMuX3RvdWNoZWQ/LigpO1xuICB9XG5cbiAgdXBkYXRlT3B0aW9uc1N0YXR1cygpOiB2b2lkIHtcbiAgICB0aGlzLm1hdE9wdGlvbnMoKS5mb3JFYWNoKChtYXRPcHRpb246IE1hdE9wdGlvbikgPT4ge1xuICAgICAgbWF0T3B0aW9uLmRpc2FibGVkID0gdGhpcy5pc09wdGlvbkRpc2FibGVkKCkobWF0T3B0aW9uLnZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBhZ2luYXRlZCgpKSB0aGlzLnByZWZpbGxPcHRpb25zKHZhbHVlKTtcblxuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlOiBXbGNtU2VsZWN0VmFsdWUgPSB0aGlzLnByZXBhcmVWYWx1ZUZvclBhdGNoKHZhbHVlKTtcblxuICAgIHRoaXMudXBkYXRlVmFsdWUoZm9ybWF0dGVkVmFsdWUpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShjYWxsYmFjazogKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFuZ2VkID0gY2FsbGJhY2s7XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3RvdWNoZWQgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0b3JDaGFuZ2VkID0gY2FsbGJhY2s7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkLnNldChpc0Rpc2FibGVkKTtcbiAgfVxuXG4gIHZhbGlkYXRlKCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubWF0U2VsZWN0Py5wYW5lbE9wZW4gPz8gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVWYWx1ZUZvclBhdGNoKHZhbHVlOiBXbGNtU2VsZWN0VmFsdWUpOiBXbGNtU2VsZWN0VmFsdWUge1xuICAgIGNvbnN0IGZvcm1hdGVkVmFsdWU6IHsgY2hhbmdlZDogYm9vbGVhbjsgdmFsdWU6IFdsY21TZWxlY3RWYWx1ZSB9ID0gdGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAoZm9ybWF0ZWRWYWx1ZS5jaGFuZ2VkKSB0aGlzLmFkanVzdGVkVmFsdWUkLm5leHQoZm9ybWF0ZWRWYWx1ZS52YWx1ZSk7XG5cbiAgICByZXR1cm4gZm9ybWF0ZWRWYWx1ZS52YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VmFsdWUodmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IHsgY2hhbmdlZDogYm9vbGVhbjsgdmFsdWU6IFdsY21TZWxlY3RWYWx1ZSB9IHtcbiAgICBsZXQgY2hhbmdlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3QgX2Zvcm1hdE9wdGlvbiA9ICh2YWx1ZTogV2xjbU9wdGlvbiB8IHN0cmluZyk6IFdsY21PcHRpb24gfCBzdHJpbmcgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0ZWRPcHRpb246IHsgY2hhbmdlZDogYm9vbGVhbjsgdmFsdWU6IFdsY21PcHRpb24gfCBzdHJpbmcgfSA9IHRoaXMuZm9ybWF0T3B0aW9uKHZhbHVlKTtcblxuICAgICAgaWYgKGZvcm1hdGVkT3B0aW9uLmNoYW5nZWQpIGNoYW5nZWQgPSB0cnVlO1xuXG4gICAgICByZXR1cm4gZm9ybWF0ZWRPcHRpb24udmFsdWU7XG4gICAgfTtcblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjb25zdCBvcHRpb25zOiBXbGNtU2VsZWN0VmFsdWUgPSB2YWx1ZS5tYXAoX2Zvcm1hdE9wdGlvbikgYXMgV2xjbVNlbGVjdFZhbHVlO1xuXG4gICAgICByZXR1cm4geyBjaGFuZ2VkLCB2YWx1ZTogb3B0aW9ucyB9O1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbjogV2xjbVNlbGVjdFZhbHVlID0gX2Zvcm1hdE9wdGlvbih2YWx1ZSk7XG5cbiAgICByZXR1cm4geyBjaGFuZ2VkLCB2YWx1ZTogb3B0aW9uIH07XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE9wdGlvbih2YWx1ZTogV2xjbU9wdGlvbiB8IHN0cmluZyk6IHsgY2hhbmdlZDogYm9vbGVhbjsgdmFsdWU6IFdsY21PcHRpb24gfCBzdHJpbmcgfSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmIHRoaXMuc2VsZWN0T3B0aW9uRm9ybWF0KCkgPT09ICdWYWx1ZU9ubHknKSB7XG4gICAgICByZXR1cm4geyBjaGFuZ2VkOiB0cnVlLCB2YWx1ZTogdmFsdWUudmFsdWUgYXMgc3RyaW5nIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2hhbmdlZDogZmFsc2UsIHZhbHVlIH07XG4gIH1cblxuICBwcml2YXRlIGxvYWRQYWdpbmF0ZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZSA9IDE7XG5cbiAgICB0aGlzLmZldGNoUGFnaW5hdGVkT3B0aW9ucyEodGhpcy5xdWVyeVBhcmFtcylcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpLCBmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgocGFnaW5hdGVkRGF0YTogV2xjbVBhZ2luYXRlZERhdGE8V2xjbU9wdGlvbj4pID0+IHtcbiAgICAgICAgdGhpcy5fb3B0aW9uc0NhY2hlLmNsZWFyKCk7XG5cbiAgICAgICAgdGhpcy5jYWNoZU9wdGlvbnMocGFnaW5hdGVkRGF0YS5kYXRhKTtcblxuICAgICAgICB0aGlzLl9wYWdpbmF0ZWREYXRhID0gcGFnaW5hdGVkRGF0YTtcblxuICAgICAgICB0aGlzLnBhZ2luYXRlZE9wdGlvbnMuc2V0KHBhZ2luYXRlZERhdGEuZGF0YSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZE1vcmVQYWdpbmF0ZWRPcHRpb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGFnaW5hdGVkRGF0YSB8fCB0aGlzLl9wYWdpbmF0ZWREYXRhLmN1cnJQYWdlICsgMSA+IHRoaXMuX3BhZ2luYXRlZERhdGEudG90YWxQYWdlcykgcmV0dXJuO1xuXG4gICAgdGhpcy5xdWVyeVBhcmFtcy5wYWdlKys7XG5cbiAgICB0aGlzLmZldGNoUGFnaW5hdGVkT3B0aW9ucyEoeyAuLi50aGlzLnF1ZXJ5UGFyYW1zIH0pXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSwgZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHBhZ2luYXRlZERhdGE6IFdsY21QYWdpbmF0ZWREYXRhPFdsY21PcHRpb24+KSA9PiB7XG4gICAgICAgIHRoaXMuY2FjaGVPcHRpb25zKHBhZ2luYXRlZERhdGEuZGF0YSk7XG5cbiAgICAgICAgdGhpcy5fcGFnaW5hdGVkRGF0YSA9IHBhZ2luYXRlZERhdGE7XG5cbiAgICAgICAgdGhpcy5wYWdpbmF0ZWRPcHRpb25zLnVwZGF0ZSgob3B0aW9uczogV2xjbU9wdGlvbltdKSA9PiBbLi4ub3B0aW9ucywgLi4ucGFnaW5hdGVkRGF0YS5kYXRhXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FjaGVPcHRpb25zKG9wdGlvbnM6IFdsY21PcHRpb25bXSk6IHZvaWQge1xuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uOiBXbGNtT3B0aW9uKSA9PiB0aGlzLl9vcHRpb25zQ2FjaGUuYWRkKG9wdGlvbi52YWx1ZSkpO1xuXG4gICAgdGhpcy5zeW5jUHJlZmlsbGVkT3B0aW9ucygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzeW5jUHJlZmlsbGVkT3B0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcmVmaWxsZWRPcHRpb25zKCkubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICB0aGlzLnByZWZpbGxlZE9wdGlvbnMudXBkYXRlKChvcHRpb25zOiBXbGNtT3B0aW9uW10pID0+IHtcbiAgICAgIHJldHVybiBvcHRpb25zLmZpbHRlcigob3B0aW9uOiBXbGNtT3B0aW9uKSA9PiAhdGhpcy5fb3B0aW9uc0NhY2hlLmhhcyhvcHRpb24udmFsdWUpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlZmlsbE9wdGlvbnModmFsdWU6IFdsY21TZWxlY3RWYWx1ZSk6IHZvaWQge1xuICAgIGxldCBwcmVmaWxsZWRPcHRpb25zOiBXbGNtT3B0aW9uW10gPSBbXTtcblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBwcmVmaWxsZWRPcHRpb25zID0gdmFsdWUuZmlsdGVyKChvcHRpb246IFdsY21PcHRpb24gfCBzdHJpbmcpID0+IG9wdGlvbiBpbnN0YW5jZW9mIE9iamVjdCkgYXMgV2xjbU9wdGlvbltdO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIHByZWZpbGxlZE9wdGlvbnMgPSBbdmFsdWVdO1xuICAgIH1cblxuICAgIHRoaXMucHJlZmlsbGVkT3B0aW9ucy5zZXQocHJlZmlsbGVkT3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNjcm9sbERvd24oKTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWF0LW1kYy1zZWxlY3QtcGFuZWwnKSE7XG5cbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxEZXRlY3Rpb25BcGkub25TY3JvbGxlZERvd24oZWxlbWVudCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmxvYWRNb3JlUGFnaW5hdGVkT3B0aW9ucygpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmVudEZvcm1NZW1iZXIuc3RhdGVDaGFuZ2VzJC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fdmFsaWRhdG9yQ2hhbmdlZD8uKCk7XG5cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUFkanVzdGVkVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3UmVhZHkkXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hZGp1c3RlZFZhbHVlJC5waXBlKGZpbHRlcihCb29sZWFuKSkpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWU6IFdsY21TZWxlY3RWYWx1ZSkgPT4gdGhpcy5fY2hhbmdlZD8uKHZhbHVlKSk7XG4gIH1cbn1cbiIsIjxtYXQtc2VsZWN0XG4gICNzZWxlY3RDb21wb25lbnRcbiAgW3ZhbHVlXT1cInZhbHVlKClcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvcl09XCJ0cnVlXCJcbiAgW25nQ2xhc3NdPVwieyBmb2N1c2VkOiBzZWxlY3RDb21wb25lbnQuZm9jdXNlZCB9XCJcbiAgKHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3QoJGV2ZW50KVwiXG4gIFtjb21wYXJlV2l0aF09XCJjb21wYXJlV2l0aFwiXG4gIChvcGVuZWQpPVwicGFuZWxPcGVuZWQoKVwiXG4gIChjbG9zZWQpPVwicGFuZWxDbG9zZWQoKVwiXG4+XG4gIEBpZiAodHJpZ2dlclRlbXBsYXRlKCkpIHtcbiAgICA8bWF0LXNlbGVjdC10cmlnZ2VyPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIHRyaWdnZXJUZW1wbGF0ZSgpITtcbiAgICAgICAgICBjb250ZXh0OiAkYW55KHsgJGltcGxpY2l0OiBzZWxlY3RDb21wb25lbnQuc2VsZWN0ZWQgfSlcbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1zZWxlY3QtdHJpZ2dlcj5cbiAgfVxuXG4gIDxtYXQtb3B0aW9uXG4gICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwcmVmaWxsZWRPcHRpb25zKClcIlxuICAgIFt2YWx1ZV09XCJzZWxlY3RPcHRpb25Gb3JtYXQoKSA9PT0gJ0NvbXBsZXRlT3B0aW9uJyA/IG9wdGlvbiA6IG9wdGlvbi52YWx1ZVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ3bGNtU2VsZWN0T3B0aW9uQ29udGVudFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvbWF0LW9wdGlvbj5cblxuICA8bWF0LW9wdGlvblxuICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgY29tcHV0ZWRPcHRpb25zKClcIlxuICAgIFt2YWx1ZV09XCJzZWxlY3RPcHRpb25Gb3JtYXQoKSA9PT0gJ0NvbXBsZXRlT3B0aW9uJyA/IG9wdGlvbiA6IG9wdGlvbi52YWx1ZVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ3bGNtU2VsZWN0T3B0aW9uQ29udGVudFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbiB9XCJcbiAgICA+PC9uZy1jb250YWluZXI+XG4gIDwvbWF0LW9wdGlvbj5cbjwvbWF0LXNlbGVjdD5cblxuPGRpdiBjbGFzcz1cIndsY20tc2VsZWN0LWFycm93XCI+XG4gIDxuZy1jb250YWluZXJcbiAgICBbd2xjbUljb25dPVwiV2xjbUljb25OYW1lLkNIRVZST05fRE9XTlwiXG4gICAgW3dsY21JY29uU3RvcFByb3BhZ2F0aW9uXT1cImZhbHNlXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjd2xjbVNlbGVjdE9wdGlvbkNvbnRlbnQgbGV0LW9wdGlvbj5cbiAgQGlmIChvcHRpb25UZW1wbGF0ZSgpKSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25UZW1wbGF0ZSgpOyBjb250ZXh0OiAkYW55KHsgJGltcGxpY2l0OiBvcHRpb24gfSlcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgfSBAZWxzZSB7XG4gICAge3sgb3B0aW9uLnZpZXdWYWx1ZSB9fVxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
|
@@ -499,15 +499,19 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
499
499
|
this.focus$ = this._focusStream$.pipe(switchMap((stream) => stream));
|
500
500
|
this.blur$ = this._blurStream$.pipe(switchMap((stream) => stream));
|
501
501
|
this.loading$ = this._loading$.asObservable();
|
502
|
+
this.adjustedValue$ = new BehaviorSubject(null);
|
502
503
|
this._paginatedData = null;
|
503
504
|
this._reloadOptions$ = new Subject();
|
505
|
+
this.viewReady$ = new Subject();
|
504
506
|
this.handleLoadMoreEvent();
|
505
507
|
this.handleControlValueChanges();
|
508
|
+
this.handleAdjustedValue();
|
506
509
|
}
|
507
510
|
ngOnInit() {
|
508
511
|
this.loadOptions().pipe(first()).subscribe();
|
509
512
|
}
|
510
513
|
ngAfterViewInit() {
|
514
|
+
this.viewReady$.next();
|
511
515
|
const container = this.formField.inputContainer;
|
512
516
|
const origin = new MatAutocompleteOrigin(container);
|
513
517
|
this.autocompleteTrigger.connectedTo = origin;
|
@@ -529,7 +533,8 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
529
533
|
this._loadMore$.next();
|
530
534
|
}
|
531
535
|
writeValue(value) {
|
532
|
-
this.
|
536
|
+
const formattedValue = this.prepareValueForPatch(value);
|
537
|
+
this.control.setValue(formattedValue);
|
533
538
|
}
|
534
539
|
registerOnChange(callback) {
|
535
540
|
this._changed = callback;
|
@@ -562,6 +567,12 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
562
567
|
registerOnValidatorChange(fn) {
|
563
568
|
this._onValidatorChange = fn;
|
564
569
|
}
|
570
|
+
prepareValueForPatch(value) {
|
571
|
+
if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly') {
|
572
|
+
this.adjustedValue$.next(value.value);
|
573
|
+
}
|
574
|
+
return value;
|
575
|
+
}
|
565
576
|
loadOptions(query = '') {
|
566
577
|
this._loading$.next(true);
|
567
578
|
this.queryParams = { ...this.queryParams, query, page: 1 };
|
@@ -610,6 +621,11 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
|
|
610
621
|
this._focusStream$.next(merge(...focusObservables).pipe(map(voidFn)));
|
611
622
|
this._blurStream$.next(merge(...blurObservables).pipe(map(() => this.control?.markAsTouched())));
|
612
623
|
}
|
624
|
+
handleAdjustedValue() {
|
625
|
+
this.viewReady$
|
626
|
+
.pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))
|
627
|
+
.subscribe((value) => this._changed?.(value));
|
628
|
+
}
|
613
629
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmAutocompleteComponent, deps: [{ token: WLCM_FORM_FIELD }], target: i0.ɵɵFactoryTarget.Component }); }
|
614
630
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmAutocompleteComponent, isStandalone: true, selector: "wlcm-autocomplete", inputs: { fetchPaginatedOptions: { classPropertyName: "fetchPaginatedOptions", publicName: "fetchPaginatedOptions", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: false, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: false, isRequired: false, transformFunction: (params) => cloneDeep(params) }, selectOptionFormat: { classPropertyName: "selectOptionFormat", publicName: "selectOptionFormat", isSignal: true, isRequired: false, transformFunction: null }, noResultsTemplate: { classPropertyName: "noResultsTemplate", publicName: "noResultsTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { classAttribute: "wlcm-autocomplete" }, providers: [
|
615
631
|
{ provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, useValue: { overlayPanelClass: PANEL_CLASS$1 } },
|
@@ -924,6 +940,8 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
924
940
|
this._blurStream$ = new BehaviorSubject(EMPTY);
|
925
941
|
this.focus$ = this._focusStream$.pipe(switchMap((stream) => stream));
|
926
942
|
this.blur$ = this._blurStream$.pipe(switchMap((stream) => stream));
|
943
|
+
this.adjustedValue$ = new BehaviorSubject(null);
|
944
|
+
this.viewReady$ = new Subject();
|
927
945
|
this.selected$ = new Subject();
|
928
946
|
this.compareWith = (optionA, optionB) => {
|
929
947
|
return (optionA?.value || optionA) === (optionB?.value || optionB);
|
@@ -933,6 +951,7 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
933
951
|
if (this.parentFormMember) {
|
934
952
|
this.handleStateChange();
|
935
953
|
}
|
954
|
+
this.handleAdjustedValue();
|
936
955
|
toObservable(this.paginated)
|
937
956
|
.pipe(untilDestroyed(this))
|
938
957
|
.subscribe((paginated) => {
|
@@ -941,6 +960,7 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
941
960
|
});
|
942
961
|
}
|
943
962
|
ngAfterViewInit() {
|
963
|
+
this.viewReady$.next();
|
944
964
|
const formField = this.formField.inputContainer;
|
945
965
|
if (formField) {
|
946
966
|
this.matSelect._preferredOverlayOrigin = new CdkOverlayOrigin(this.formField.inputContainer);
|
@@ -995,7 +1015,8 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
995
1015
|
writeValue(value) {
|
996
1016
|
if (this.paginated())
|
997
1017
|
this.prefillOptions(value);
|
998
|
-
this.
|
1018
|
+
const formattedValue = this.prepareValueForPatch(value);
|
1019
|
+
this.updateValue(formattedValue);
|
999
1020
|
}
|
1000
1021
|
registerOnChange(callback) {
|
1001
1022
|
this._changed = callback;
|
@@ -1015,6 +1036,33 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
1015
1036
|
get isOpen() {
|
1016
1037
|
return this.matSelect?.panelOpen ?? false;
|
1017
1038
|
}
|
1039
|
+
prepareValueForPatch(value) {
|
1040
|
+
const formatedValue = this.formatValue(value);
|
1041
|
+
if (formatedValue.changed)
|
1042
|
+
this.adjustedValue$.next(formatedValue.value);
|
1043
|
+
return formatedValue.value;
|
1044
|
+
}
|
1045
|
+
formatValue(value) {
|
1046
|
+
let changed = false;
|
1047
|
+
const _formatOption = (value) => {
|
1048
|
+
const formatedOption = this.formatOption(value);
|
1049
|
+
if (formatedOption.changed)
|
1050
|
+
changed = true;
|
1051
|
+
return formatedOption.value;
|
1052
|
+
};
|
1053
|
+
if (value instanceof Array) {
|
1054
|
+
const options = value.map(_formatOption);
|
1055
|
+
return { changed, value: options };
|
1056
|
+
}
|
1057
|
+
const option = _formatOption(value);
|
1058
|
+
return { changed, value: option };
|
1059
|
+
}
|
1060
|
+
formatOption(value) {
|
1061
|
+
if (value instanceof Object && this.selectOptionFormat() === 'ValueOnly') {
|
1062
|
+
return { changed: true, value: value.value };
|
1063
|
+
}
|
1064
|
+
return { changed: false, value };
|
1065
|
+
}
|
1018
1066
|
loadPaginatedOptions() {
|
1019
1067
|
this.queryParams.page = 1;
|
1020
1068
|
this.fetchPaginatedOptions(this.queryParams)
|
@@ -1073,6 +1121,11 @@ let WlcmSelectComponent = class WlcmSelectComponent {
|
|
1073
1121
|
this.changeDetectorRef.markForCheck();
|
1074
1122
|
});
|
1075
1123
|
}
|
1124
|
+
handleAdjustedValue() {
|
1125
|
+
this.viewReady$
|
1126
|
+
.pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))
|
1127
|
+
.subscribe((value) => this._changed?.(value));
|
1128
|
+
}
|
1076
1129
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmSelectComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1$3.ScrollDetectionApi }, { token: WLCM_FORM_FIELD }, { token: WLCM_FORM_CONTROL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
1077
1130
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmSelectComponent, isStandalone: true, selector: "wlcm-select", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, fetchPaginatedOptions: { classPropertyName: "fetchPaginatedOptions", publicName: "fetchPaginatedOptions", isSignal: false, isRequired: false, transformFunction: null }, canSelect: { classPropertyName: "canSelect", publicName: "canSelect", isSignal: false, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: false, isRequired: false, transformFunction: null }, paginated: { classPropertyName: "paginated", publicName: "paginated", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectOptionFormat: { classPropertyName: "selectOptionFormat", publicName: "selectOptionFormat", isSignal: true, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: true, isRequired: false, transformFunction: null }, triggerTemplate: { classPropertyName: "triggerTemplate", publicName: "triggerTemplate", isSignal: true, isRequired: false, transformFunction: null }, isOptionDisabled: { classPropertyName: "isOptionDisabled", publicName: "isOptionDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", opened: "opened", closed: "closed" }, host: { listeners: { "click": "openPanel()" } }, providers: [
|
1078
1131
|
WLCM_FORM_CONTROL_PROVIDER,
|