ngx-iso-form 2.2.2 → 2.3.0
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/README.md +117 -54
- package/esm2022/lib/Models/IsoForm.mjs +8 -3
- package/esm2022/lib/components/controls/iso-mat-checkbox.component.mjs +3 -3
- package/esm2022/lib/components/controls/iso-mat-currency.component.mjs +3 -3
- package/esm2022/lib/components/controls/iso-mat-date.component.mjs +3 -3
- package/esm2022/lib/components/controls/iso-mat-datetime.component.mjs +3 -3
- package/esm2022/lib/components/controls/iso-mat-input.component.mjs +3 -3
- package/esm2022/lib/components/controls/iso-mat-select.component.mjs +3 -3
- package/esm2022/lib/components/controls/iso-mat-textarea.component.mjs +3 -3
- package/esm2022/lib/ngx-iso-form.component.mjs +13 -5
- package/esm2022/lib/ngx-iso-form.module.mjs +1 -5
- package/esm2022/lib/ngx-iso-form.service.mjs +70 -64
- package/esm2022/lib/shared/pipe/error.pipe.mjs +2 -2
- package/fesm2022/ngx-iso-form.mjs +103 -88
- package/fesm2022/ngx-iso-form.mjs.map +1 -1
- package/lib/Models/IsoForm.d.ts +5 -1
- package/lib/ngx-iso-form.component.d.ts +4 -2
- package/lib/ngx-iso-form.service.d.ts +1 -0
- package/package.json +1 -1
|
@@ -24,14 +24,20 @@ export class NgxIsoFormComponent {
|
|
|
24
24
|
if (changes['form'] && changes['form'].currentValue) {
|
|
25
25
|
this.initiateFormModel();
|
|
26
26
|
}
|
|
27
|
+
if (changes['excludes'] && changes['excludes'].currentValue) {
|
|
28
|
+
this.service.excludes = this.excludes;
|
|
29
|
+
}
|
|
27
30
|
}
|
|
28
|
-
get
|
|
31
|
+
get model() {
|
|
29
32
|
if (this._form)
|
|
30
33
|
return this.service.sanitize(this._form.value);
|
|
31
34
|
}
|
|
32
35
|
get getFormModel() {
|
|
33
36
|
return this.service._formModel;
|
|
34
37
|
}
|
|
38
|
+
get invalid() {
|
|
39
|
+
return this._form.invalid;
|
|
40
|
+
}
|
|
35
41
|
initiateForm() {
|
|
36
42
|
this.service._formModel = [this.structuredClone(this.schema)];
|
|
37
43
|
this.service._formModel[0].elements = [];
|
|
@@ -56,9 +62,9 @@ export class NgxIsoFormComponent {
|
|
|
56
62
|
}
|
|
57
63
|
initiateFormModel() {
|
|
58
64
|
if (this._form) {
|
|
59
|
-
this._ngModel = this.form.
|
|
65
|
+
this._ngModel = this.form.isoFormModel;
|
|
60
66
|
this.form.getFormModel = () => {
|
|
61
|
-
return this.
|
|
67
|
+
return this.model;
|
|
62
68
|
};
|
|
63
69
|
this._isFormInitiate = true;
|
|
64
70
|
this.service.initFormModel(this._ngModel, this._form);
|
|
@@ -176,7 +182,7 @@ export class NgxIsoFormComponent {
|
|
|
176
182
|
return formControl;
|
|
177
183
|
}
|
|
178
184
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgxIsoFormComponent, deps: [{ token: i1.NgxIsoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
179
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: NgxIsoFormComponent, selector: "ngx-iso-form", inputs: { form: "form", schema: "schema" }, usesOnChanges: true, ngImport: i0, template: "<form *ngIf=\"_form && schema\" [formGroup]=\"_form\">\r\n <div class=\"form-group\">\r\n <ng-template #nodeTemplateRef let-node=\"node\" let-formElement=\"formElement\" let-index=\"index\"\r\n let-parentNode=\"parentNode\" let-parentFormElement=\"parentFormElement\">\r\n <ng-container *ngIf=\"node.multi then arr else obj\"></ng-container>\r\n <ng-template #arr>\r\n <ng-template *ngFor=\"let model of node.elements;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: formElement,\r\n parentFormElement: parentFormElement,\r\n parentNode: node,\r\n index: i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #obj>\r\n <ng-container *ngIf=\"node.elements.length\">\r\n <mat-accordion [formGroup]=\"formElement\" *ngIf=\"!node.hidden\">\r\n <mat-expansion-panel multi [expanded]=\"expand(node.minOccurs) || node.expanded\" #expan>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ node.name | trans: node.id : node.name }}\r\n </mat-panel-title>\r\n <mat-panel-description *ngIf=\"maxOccurs(node.maxOccurs)\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addSection($event, node,parentNode, parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeSection($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngIf=\"expan.expanded\">\r\n <mat-form-field *ngIf=\"node.dataType === 'choice'\">\r\n <mat-label>{{ node.name | trans: node.id : node.name }}</mat-label>\r\n <mat-select (selectionChange)=\"onChoiceSelectionChange($event.value,formElement, node)\" [formControl]=\"getChoiceFormControl(node.choiceKey)\">\r\n <mat-option *ngFor=\"let item of node.elements\" [value]=\"item.id\">\r\n {{item.name}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"!isEmpty(formElement)\">\r\n <ng-template *ngFor=\"let model of node.elements; let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: getElement(formElement,model),\r\n parentFormElement: formElement\r\n }\">\r\n </ng-template>\r\n </ng-container>\r\n <div *ngIf=\"node.elements.length === 0\">\r\n <ngx-iso-control *ngIf=\"!node.hidden\" [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n </div>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </ng-container>\r\n <ng-container *ngIf=\"!node.elements.length && !node.hidden\">\r\n <div *ngIf=\"maxOccurs(node.maxOccurs)\" class=\"form-add-section\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addNewControl($event, node,parentNode,parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeNewControl($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </div>\r\n <ngx-iso-control [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n <ng-container *ngFor=\"let model of getFormModel; let i = index\">\r\n <ng-container *ngIf=\"isArray(model);then formArray else formObject\">\r\n </ng-container>\r\n <ng-template #formArray>\r\n <ng-template *ngFor=\"let key of model;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: key,\r\n formElement: getElement(_form,key),\r\n parentFormElement: _form,\r\n index:i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #formObject>\r\n <ng-template [ngTemplateOutlet]=\"nodeTemplateRef\" [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: getElement(_form,model),\r\n parentFormElement: _form,\r\n index: i,\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</form>", styles: [":host .mat-expansion-panel-header-description{justify-content:space-between;align-items:center}:host .mat-expansion-panel{width:100%;margin:5px 0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i4.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.NgxIsoControlComponent, selector: "ngx-iso-control", inputs: ["formControl", "control"] }, { kind: "pipe", type: i11.IsoTranslatePipe, name: "trans" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
185
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: NgxIsoFormComponent, selector: "ngx-iso-form", inputs: { form: "form", schema: "schema", excludes: "excludes" }, usesOnChanges: true, ngImport: i0, template: "<form *ngIf=\"_form && schema\" [formGroup]=\"_form\">\r\n <div class=\"form-group\">\r\n <ng-template #nodeTemplateRef let-node=\"node\" let-formElement=\"formElement\" let-index=\"index\"\r\n let-parentNode=\"parentNode\" let-parentFormElement=\"parentFormElement\">\r\n <ng-container *ngIf=\"node.multi then arr else obj\"></ng-container>\r\n <ng-template #arr>\r\n <ng-template *ngFor=\"let model of node.elements;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: formElement,\r\n parentFormElement: parentFormElement,\r\n parentNode: node,\r\n index: i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #obj>\r\n <ng-container *ngIf=\"node.elements.length\">\r\n <mat-accordion [formGroup]=\"formElement\" *ngIf=\"!node.hidden\">\r\n <mat-expansion-panel multi [expanded]=\"expand(node.minOccurs) || node.expanded\" #expan>\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ node.name | trans: node.id : node.name }}\r\n </mat-panel-title>\r\n <mat-panel-description *ngIf=\"maxOccurs(node.maxOccurs)\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addSection($event, node,parentNode, parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeSection($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <ng-container *ngIf=\"expan.expanded\">\r\n <mat-form-field *ngIf=\"node.dataType === 'choice'\">\r\n <mat-label>{{ node.name | trans: node.id : node.name }}</mat-label>\r\n <mat-select (selectionChange)=\"onChoiceSelectionChange($event.value,formElement, node)\" [formControl]=\"getChoiceFormControl(node.choiceKey)\">\r\n <mat-option *ngFor=\"let item of node.elements\" [value]=\"item.id\">\r\n {{item.name}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <ng-container *ngIf=\"!isEmpty(formElement)\">\r\n <ng-template *ngFor=\"let model of node.elements; let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: getElement(formElement,model),\r\n parentFormElement: formElement\r\n }\">\r\n </ng-template>\r\n </ng-container>\r\n <div *ngIf=\"node.elements.length === 0\">\r\n <ngx-iso-control *ngIf=\"!node.hidden\" [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n </div>\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </ng-container>\r\n <ng-container *ngIf=\"!node.elements.length && !node.hidden\">\r\n <div *ngIf=\"maxOccurs(node.maxOccurs)\" class=\"form-add-section\">\r\n \r\n <button *ngIf=\"index < 1\" mat-icon-button (click)=\"addNewControl($event, node,parentNode,parentFormElement)\">\r\n <mat-icon>add</mat-icon>\r\n </button>\r\n <button *ngIf=\"index > 0\" mat-icon-button (click)=\"removeNewControl($event,parentNode,parentFormElement,index)\">\r\n <mat-icon>remove</mat-icon>\r\n </button>\r\n </div>\r\n <ngx-iso-control [formControl]=\"formElement\" [control]=\"node\"></ngx-iso-control>\r\n </ng-container>\r\n </ng-template>\r\n </ng-template>\r\n <ng-container *ngFor=\"let model of getFormModel; let i = index\">\r\n <ng-container *ngIf=\"isArray(model);then formArray else formObject\">\r\n </ng-container>\r\n <ng-template #formArray>\r\n <ng-template *ngFor=\"let key of model;let i = index\" [ngTemplateOutlet]=\"nodeTemplateRef\"\r\n [ngTemplateOutletContext]=\"{\r\n node: key,\r\n formElement: getElement(_form,key),\r\n parentFormElement: _form,\r\n index:i\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n <ng-template #formObject>\r\n <ng-template [ngTemplateOutlet]=\"nodeTemplateRef\" [ngTemplateOutletContext]=\"{\r\n node: model,\r\n formElement: getElement(_form,model),\r\n parentFormElement: _form,\r\n index: i,\r\n }\">\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n</form>", styles: [":host .mat-expansion-panel-header-description{justify-content:space-between;align-items:center}:host .mat-expansion-panel{width:100%;margin:5px 0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i4.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.NgxIsoControlComponent, selector: "ngx-iso-control", inputs: ["formControl", "control"] }, { kind: "pipe", type: i11.IsoTranslatePipe, name: "trans" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
180
186
|
}
|
|
181
187
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgxIsoFormComponent, decorators: [{
|
|
182
188
|
type: Component,
|
|
@@ -187,5 +193,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
187
193
|
}], schema: [{
|
|
188
194
|
type: Input,
|
|
189
195
|
args: [{ required: true }]
|
|
196
|
+
}], excludes: [{
|
|
197
|
+
type: Input
|
|
190
198
|
}] } });
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlzby1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pc28tZm9ybS9zcmMvbGliL25neC1pc28tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaXNvLWZvcm0vc3JjL2xpYi9uZ3gtaXNvLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFFVixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBWXhCLE1BQU0sT0FBTyxtQkFBbUI7SUFPOUIsWUFBb0IsT0FBc0IsRUFBVSxlQUFrQztRQUFsRSxZQUFPLEdBQVAsT0FBTyxDQUFlO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQW1CO0lBQ3RGLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUs7WUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQWMs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LE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLENBQUMsQ0FBQyxDQUFBO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLFNBQVM7Z0JBQ1gsT0FBTyxXQUFXLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFUyxjQUFjLENBQUMsSUFBaUI7UUFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRVMsb0JBQW9CLENBQUMsU0FBZ0I7UUFDN0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEQsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDOzhHQXZMVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixxSEN6QmhDLCs0SkFpR087OzJGRHhFTSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsY0FBYyxtQkFHUCx1QkFBdUIsQ0FBQyxNQUFNO2tIQUdwQixJQUFJO3NCQUE5QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDRSxNQUFNO3NCQUFoQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRm9ybUdyb3VwLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUFycmF5LFxuICBBYnN0cmFjdENvbnRyb2xcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBTY2hlbWFNb2RlbCB9IGZyb20gJy4vTW9kZWxzL1NjaGVtYSc7XG5pbXBvcnQgeyBOZ3hJc29TZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtaXNvLWZvcm0uc2VydmljZSc7XG5pbXBvcnQgeyBJc29Gb3JtIH0gZnJvbSAnLi9Nb2RlbHMvSXNvRm9ybSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1pc28tZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtaXNvLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9uZ3gtaXNvLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTmd4SXNvRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGZvcm06IElzb0Zvcm07XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNjaGVtYTogU2NoZW1hTW9kZWw7XG4gIHByb3RlY3RlZCBfZm9ybTogRm9ybUdyb3VwO1xuICBwcml2YXRlIF9pc0Zvcm1Jbml0aWF0ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfbmdNb2RlbDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogTmd4SXNvU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzY2hlbWEnXSAmJiBjaGFuZ2VzWydzY2hlbWEnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuaW5pdGlhdGVGb3JtKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydmb3JtJ10gJiYgY2hhbmdlc1snZm9ybSddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5pbml0aWF0ZUZvcm1Nb2RlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZ2V0SXNvRm9ybSgpOiBhbnkge1xuICAgIGlmICh0aGlzLl9mb3JtKVxuICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5zYW5pdGl6ZSh0aGlzLl9mb3JtLnZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgZ2V0Rm9ybU1vZGVsKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLl9mb3JtTW9kZWw7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYXRlRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UuX2Zvcm1Nb2RlbCA9IFt0aGlzLnN0cnVjdHVyZWRDbG9uZSh0aGlzLnNjaGVtYSldO1xuICAgIHRoaXMuc2VydmljZS5fZm9ybU1vZGVsWzBdLmVsZW1lbnRzID0gW107XG4gICAgbGV0IGdyb3VwOiBhbnkgPSB7fTtcbiAgICBjb25zdCBzY2hlbWFFbGVtZW50cyA9ICB0aGlzLnNjaGVtYS5lbGVtZW50cy5sZW5ndGggPiAwID8gdGhpcy5zdHJ1Y3R1cmVkQ2xvbmUodGhpcy5zY2hlbWEuZWxlbWVudHMpIDogdGhpcy5zY2hlbWEuZWxlbWVudHM7XG4gICAgY29uc3QgZm9ybUVsZW1lbnRzID0gdGhpcy5zZXJ2aWNlLl9mb3JtTW9kZWxbMF0uZWxlbWVudHMubGVuZ3RoID4gMCA/IHRoaXMuc3RydWN0dXJlZENsb25lKHRoaXMuc2VydmljZS5fZm9ybU1vZGVsWzBdLmVsZW1lbnRzKSA6IHRoaXMuc2VydmljZS5fZm9ybU1vZGVsWzBdLmVsZW1lbnRzO1xuICAgIGdyb3VwW3RoaXMuc2NoZW1hLmlkXSA9IHRoaXMuc2VydmljZS5nZXRGb3JtR3JvdXBDb250cm9scyhzY2hlbWFFbGVtZW50cywgZm9ybUVsZW1lbnRzKTtcbiAgICB0aGlzLl9mb3JtID0gbmV3IEZvcm1Hcm91cChncm91cCk7XG4gICAgaWYgKCF0aGlzLl9pc0Zvcm1Jbml0aWF0ZSkge1xuICAgICAgdGhpcy5pbml0aWF0ZUZvcm1Nb2RlbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RydWN0dXJlZENsb25lKGRhdGE6IGFueSk6IGFueSB7XG4gICAgbGV0IGNsb25lRGF0YTtcbiAgICB0cnkge1xuICAgICAgY2xvbmVEYXRhID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgY2xvbmVEYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgfVxuICAgIHJldHVybiBjbG9uZURhdGE7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYXRlRm9ybU1vZGVsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9mb3JtKSB7XG4gICAgICB0aGlzLl9uZ01vZGVsID0gdGhpcy5mb3JtLl9tb2RlbDtcbiAgICAgIHRoaXMuZm9ybS5nZXRGb3JtTW9kZWwgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldElzb0Zvcm07XG4gICAgICB9O1xuICAgICAgdGhpcy5faXNGb3JtSW5pdGlhdGUgPSB0cnVlO1xuICAgICAgdGhpcy5zZXJ2aWNlLmluaXRGb3JtTW9kZWwodGhpcy5fbmdNb2RlbCwgdGhpcy5fZm9ybSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2hvaWNlU2VsZWN0aW9uQ2hhbmdlKGlkOiBzdHJpbmcsIGZvcm1FbGVtZW50OiBhbnksIG5vZGU6IFNjaGVtYU1vZGVsKTogdm9pZCB7XG4gICAgbm9kZS5lbGVtZW50cy5mb3JFYWNoKChlbGVtZW50OiBTY2hlbWFNb2RlbCkgPT4ge1xuICAgICAgZWxlbWVudC5oaWRkZW4gPSB0cnVlO1xuICAgICAgZm9ybUVsZW1lbnQucmVtb3ZlQ29udHJvbChlbGVtZW50LmlkKTtcbiAgICAgIGlmIChlbGVtZW50LmlkID09PSBpZCkge1xuICAgICAgICBub2RlLmNob2ljZUtleSA9IGlkO1xuICAgICAgICBlbGVtZW50LmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgIC8vIGVsZW1lbnQuZWxlbWVudHNbMF0uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLnNlcnZpY2UuZ2V0Rm9ybUdyb3VwQ29udHJvbHMoZWxlbWVudC5lbGVtZW50cywgW10sIDAsIGZhbHNlKTtcbiAgICAgICAgICBmb3JtRWxlbWVudC5hZGRDb250cm9sKGVsZW1lbnQuaWQsIGdyb3VwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5zZXJ2aWNlLmdldEZvcm1Db250cm9sKCcnKTtcbiAgICAgICAgICBmb3JtRWxlbWVudC5hZGRDb250cm9sKGVsZW1lbnQuaWQsIGNvbnRyb2wpO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXhPY2N1cnMobWF4T2NjdXJzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWF4T2NjdXJzICE9PSBudWxsICYmIG1heE9jY3VycyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2VydmljZS5tYXhPY2N1cnMobWF4T2NjdXJzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBleHBhbmQobWluT2NjdXJzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWluT2NjdXJzICE9PSBudWxsICYmIG1pbk9jY3VycyAhPT0gdW5kZWZpbmVkICYmIHBhcnNlSW50KG1pbk9jY3VycywgMTApID4gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRTZWN0aW9uKCRldmVudDogRXZlbnQsIG5vZGU6IFNjaGVtYU1vZGVsLCBwYXJlbnROb2RlOiBTY2hlbWFNb2RlbCwgcGFyZW50Rm9ybUVsZTogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGNvbnRyb2w6IEZvcm1BcnJheSA9IHBhcmVudEZvcm1FbGUuZ2V0KG5vZGUuaWQpIGFzIEZvcm1BcnJheTtcbiAgICBpZiAobm9kZS5tYXhPY2N1cnMgJiYgcGFyc2VJbnQobm9kZS5tYXhPY2N1cnMsIDEwKSA8PSBwYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdFbGUgPSB0aGlzLnN0cnVjdHVyZWRDbG9uZShwYXJlbnROb2RlLmVsZW1lbnRzWzBdKTtcbiAgICBjb25zdCBuZXdLZXlzOiBhbnkgPSBbXTtcbiAgICBjb25zdCBncm91cENvbnRyb2xzID0gdGhpcy5zZXJ2aWNlLmdldEZvcm1Hcm91cENvbnRyb2xzKG5ld0VsZS5lbGVtZW50cywgbmV3S2V5cywgcGFyZW50Tm9kZS5lbGVtZW50cy5sZW5ndGggLSAxKTtcbiAgICBwYXJlbnROb2RlLmVsZW1lbnRzLnB1c2gobmV3RWxlKTtcbiAgICBjb250cm9sLnB1c2goZ3JvdXBDb250cm9scyk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZVNlY3Rpb24oJGV2ZW50OiBFdmVudCwgcGFyZW50Tm9kZTogU2NoZW1hTW9kZWwsIHBhcmVudEZvcm1FbGU6IEZvcm1Hcm91cCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBjb250cm9sOiBGb3JtQXJyYXkgPSBwYXJlbnRGb3JtRWxlLmdldChwYXJlbnROb2RlLmlkKSBhcyBGb3JtQXJyYXk7XG4gICAgcGFyZW50Tm9kZS5lbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGNvbnRyb2wucmVtb3ZlQXQoaW5kZXgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGROZXdDb250cm9sKCRldmVudDogRXZlbnQsIG5vZGU6IFNjaGVtYU1vZGVsLCBwYXJlbnROb2RlOiBTY2hlbWFNb2RlbCwgcGFyZW50Rm9ybUVsZTogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmIChub2RlLm1heE9jY3VycyAmJiBwYXJzZUludChub2RlLm1heE9jY3VycywgMTApIDw9IHBhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRyb2w6IEZvcm1BcnJheSA9IHBhcmVudEZvcm1FbGUuZ2V0KG5vZGUuaWQpIGFzIEZvcm1BcnJheTtcbiAgICBjb25zdCBuZXdDb250cm9sID0gdGhpcy5zZXJ2aWNlLmdldEZvcm1Db250cm9sKCcnKTtcbiAgICBjb25zdCBuZXdFbGUgPSB0aGlzLnN0cnVjdHVyZWRDbG9uZShwYXJlbnROb2RlLmVsZW1lbnRzW3BhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoIC0gMV0pO1xuICAgIGNvbnRyb2wucHVzaChuZXdDb250cm9sKTtcbiAgICBwYXJlbnROb2RlLmVsZW1lbnRzLnB1c2gobmV3RWxlKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlTmV3Q29udHJvbCgkZXZlbnQ6IEV2ZW50LCBwYXJlbnROb2RlOiBTY2hlbWFNb2RlbCwgcGFyZW50Rm9ybUVsZTogRm9ybUdyb3VwLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGNvbnRyb2w6IEZvcm1BcnJheSA9IHBhcmVudEZvcm1FbGUuZ2V0KHBhcmVudE5vZGUuaWQpIGFzIEZvcm1BcnJheTtcbiAgICBwYXJlbnROb2RlLmVsZW1lbnRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgY29udHJvbC5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzQXJyYXkobXlLZXk6IE9iamVjdCB8IEFycmF5PGFueT4pOiBib29sZWFuIHtcbiAgICBpZiAobXlLZXkgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0VtcHR5KGZvcm1FbGVtZW50OiBGb3JtR3JvdXApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZm9ybUVsZW1lbnQuY29udHJvbHMgJiYgT2JqZWN0LmtleXMoZm9ybUVsZW1lbnQuY29udHJvbHMpLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRFbGVtZW50KGZvcm1FbGVtZW50OiBGb3JtR3JvdXAsIGVsZW1lbnQ6IGFueSk6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCB1bmRlZmluZWQge1xuICAgIGlmIChlbGVtZW50LmhpZGRlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgX2VsZW1lbnQ7XG4gICAgaWYgKGVsZW1lbnQubXVsdGkpIHtcbiAgICAgIF9lbGVtZW50ID0gZWxlbWVudC5lbGVtZW50c1tlbGVtZW50LmVsZW1lbnRzLmxlbmd0aCAtIDFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBfZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgbGV0IGZvcm1Db250cm9sID0gZm9ybUVsZW1lbnQuY29udHJvbHNbX2VsZW1lbnQuaWRdO1xuICAgIGlmICghZm9ybUNvbnRyb2wpIHtcbiAgICAgIGZvcm1Db250cm9sID0gKGZvcm1FbGVtZW50IGFzIGFueSlbX2VsZW1lbnQuaWRdO1xuICAgICAgaWYgKCFmb3JtQ29udHJvbClcbiAgICAgICAgdGhyb3cgYEZvcm1Db250cm9sIG5vdCBmb3VuZCAke19lbGVtZW50LmlkfWA7XG4gICAgfVxuICAgIGlmIChmb3JtQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgY29uc3QgZm9ybUdyb3VwID0gZm9ybUNvbnRyb2wuY29udHJvbHMuZmluZCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhpdGVtLmNvbnRyb2xzKS5maW5kKChjdHJsKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGN0cmwuaW5kZXhPZihlbGVtZW50LmlkKSA+IC0xO1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgICBpZiAoZm9ybUdyb3VwKVxuICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2wuYXQoZm9ybUNvbnRyb2wubGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtQ29udHJvbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGb3JtQ29udHJvbChub2RlOiBTY2hlbWFNb2RlbCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEZvcm1Db250cm9sKCcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDaG9pY2VGb3JtQ29udHJvbChjaG9pY2VLZXk6c3RyaW5nKXtcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuc2VydmljZS5nZXRGb3JtQ29udHJvbCgnJyk7XG4gICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoY2hvaWNlS2V5KTtcbiAgICByZXR1cm4gZm9ybUNvbnRyb2w7XG4gIH1cbn1cbiIsIjxmb3JtICpuZ0lmPVwiX2Zvcm0gJiYgc2NoZW1hXCIgW2Zvcm1Hcm91cF09XCJfZm9ybVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgI25vZGVUZW1wbGF0ZVJlZiBsZXQtbm9kZT1cIm5vZGVcIiBsZXQtZm9ybUVsZW1lbnQ9XCJmb3JtRWxlbWVudFwiIGxldC1pbmRleD1cImluZGV4XCJcclxuICAgICAgbGV0LXBhcmVudE5vZGU9XCJwYXJlbnROb2RlXCIgbGV0LXBhcmVudEZvcm1FbGVtZW50PVwicGFyZW50Rm9ybUVsZW1lbnRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGUubXVsdGkgdGhlbiBhcnIgZWxzZSBvYmpcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNhcnI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0Zvcj1cImxldCBtb2RlbCBvZiBub2RlLmVsZW1lbnRzO2xldCBpID0gaW5kZXhcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJub2RlVGVtcGxhdGVSZWZcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgIG5vZGU6IG1vZGVsLFxyXG4gICAgICAgICAgZm9ybUVsZW1lbnQ6IGZvcm1FbGVtZW50LFxyXG4gICAgICAgICAgcGFyZW50Rm9ybUVsZW1lbnQ6IHBhcmVudEZvcm1FbGVtZW50LFxyXG4gICAgICAgICAgcGFyZW50Tm9kZTogbm9kZSxcclxuICAgICAgICAgIGluZGV4OiBpXHJcbiAgICAgICAgfVwiPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjb2JqPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlLmVsZW1lbnRzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgPG1hdC1hY2NvcmRpb24gW2Zvcm1Hcm91cF09XCJmb3JtRWxlbWVudFwiICpuZ0lmPVwiIW5vZGUuaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIG11bHRpIFtleHBhbmRlZF09XCJleHBhbmQobm9kZS5taW5PY2N1cnMpIHx8IG5vZGUuZXhwYW5kZWRcIiAjZXhwYW4+XHJcbiAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAge3sgbm9kZS5uYW1lIHwgdHJhbnM6IG5vZGUuaWQgOiBub2RlLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiAqbmdJZj1cIm1heE9jY3Vycyhub2RlLm1heE9jY3VycylcIj5cclxuICAgICAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpbmRleCA8IDFcIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImFkZFNlY3Rpb24oJGV2ZW50LCBub2RlLHBhcmVudE5vZGUsIHBhcmVudEZvcm1FbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImluZGV4ID4gMFwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlU2VjdGlvbigkZXZlbnQscGFyZW50Tm9kZSxwYXJlbnRGb3JtRWxlbWVudCxpbmRleClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBhbi5leHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibm9kZS5kYXRhVHlwZSA9PT0gJ2Nob2ljZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57eyBub2RlLm5hbWUgfCB0cmFuczogbm9kZS5pZCA6IG5vZGUubmFtZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ2hvaWNlU2VsZWN0aW9uQ2hhbmdlKCRldmVudC52YWx1ZSxmb3JtRWxlbWVudCwgbm9kZSlcIiBbZm9ybUNvbnRyb2xdPVwiZ2V0Q2hvaWNlRm9ybUNvbnRyb2wobm9kZS5jaG9pY2VLZXkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygbm9kZS5lbGVtZW50c1wiIFt2YWx1ZV09XCJpdGVtLmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VtcHR5KGZvcm1FbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nRm9yPVwibGV0IG1vZGVsIG9mIG5vZGUuZWxlbWVudHM7IGxldCBpID0gaW5kZXhcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJub2RlVGVtcGxhdGVSZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICAgIG5vZGU6IG1vZGVsLFxyXG4gICAgICAgICAgICBmb3JtRWxlbWVudDogZ2V0RWxlbWVudChmb3JtRWxlbWVudCxtb2RlbCksXHJcbiAgICAgICAgICAgIHBhcmVudEZvcm1FbGVtZW50OiBmb3JtRWxlbWVudFxyXG4gICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5lbGVtZW50cy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgPG5neC1pc28tY29udHJvbCAqbmdJZj1cIiFub2RlLmhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJmb3JtRWxlbWVudFwiIFtjb250cm9sXT1cIm5vZGVcIj48L25neC1pc28tY29udHJvbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgICA8L21hdC1hY2NvcmRpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFub2RlLmVsZW1lbnRzLmxlbmd0aCAmJiAhbm9kZS5oaWRkZW5cIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJtYXhPY2N1cnMobm9kZS5tYXhPY2N1cnMpXCIgY2xhc3M9XCJmb3JtLWFkZC1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5kZXggPCAxXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJhZGROZXdDb250cm9sKCRldmVudCwgbm9kZSxwYXJlbnROb2RlLHBhcmVudEZvcm1FbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImluZGV4ID4gMFwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlTmV3Q29udHJvbCgkZXZlbnQscGFyZW50Tm9kZSxwYXJlbnRGb3JtRWxlbWVudCxpbmRleClcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZ3gtaXNvLWNvbnRyb2wgW2Zvcm1Db250cm9sXT1cImZvcm1FbGVtZW50XCIgW2NvbnRyb2xdPVwibm9kZVwiPjwvbmd4LWlzby1jb250cm9sPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1vZGVsIG9mIGdldEZvcm1Nb2RlbDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBcnJheShtb2RlbCk7dGhlbiBmb3JtQXJyYXkgZWxzZSBmb3JtT2JqZWN0XCI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zvcm1BcnJheT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nRm9yPVwibGV0IGtleSBvZiBtb2RlbDtsZXQgaSA9IGluZGV4XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZVRlbXBsYXRlUmVmXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICBub2RlOiBrZXksXHJcbiAgICAgICAgICBmb3JtRWxlbWVudDogZ2V0RWxlbWVudChfZm9ybSxrZXkpLFxyXG4gICAgICAgICAgcGFyZW50Rm9ybUVsZW1lbnQ6IF9mb3JtLFxyXG4gICAgICAgICAgaW5kZXg6aVxyXG4gICAgICAgIH1cIj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zvcm1PYmplY3Q+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vZGVUZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICBub2RlOiBtb2RlbCxcclxuICAgICAgICAgIGZvcm1FbGVtZW50OiBnZXRFbGVtZW50KF9mb3JtLG1vZGVsKSxcclxuICAgICAgICAgIHBhcmVudEZvcm1FbGVtZW50OiBfZm9ybSxcclxuICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgIH1cIj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT4iXX0=
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlzby1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pc28tZm9ybS9zcmMvbGliL25neC1pc28tZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaXNvLWZvcm0vc3JjL2xpYi9uZ3gtaXNvLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFFVixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBWXhCLE1BQU0sT0FBTyxtQkFBbUI7SUFROUIsWUFBb0IsT0FBc0IsRUFBVSxlQUFrQztRQUFsRSxZQUFPLEdBQVAsT0FBTyxDQUFlO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQW1CO0lBQ3RGLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN4QyxDQUFDO0lBQ0gs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QUU7Z0JBQ2hCLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZvcm1Hcm91cCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1BcnJheSxcbiAgQWJzdHJhY3RDb250cm9sXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgU2NoZW1hTW9kZWwgfSBmcm9tICcuL01vZGVscy9TY2hlbWEnO1xuaW1wb3J0IHsgTmd4SXNvU2VydmljZSB9IGZyb20gJy4vbmd4LWlzby1mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgSXNvRm9ybSB9IGZyb20gJy4vTW9kZWxzL0lzb0Zvcm0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtaXNvLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LWlzby1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LWlzby1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE5neElzb0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBmb3JtOiBJc29Gb3JtO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzY2hlbWE6IFNjaGVtYU1vZGVsO1xuICBASW5wdXQoKSBleGNsdWRlczogc3RyaW5nW107XG4gIHByb3RlY3RlZCBfZm9ybTogRm9ybUdyb3VwO1xuICBwcml2YXRlIF9pc0Zvcm1Jbml0aWF0ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfbmdNb2RlbDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTogTmd4SXNvU2VydmljZSwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydzY2hlbWEnXSAmJiBjaGFuZ2VzWydzY2hlbWEnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuaW5pdGlhdGVGb3JtKCk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydmb3JtJ10gJiYgY2hhbmdlc1snZm9ybSddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5pbml0aWF0ZUZvcm1Nb2RlbCgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snZXhjbHVkZXMnXSAmJiBjaGFuZ2VzWydleGNsdWRlcyddLmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5zZXJ2aWNlLmV4Y2x1ZGVzID0gdGhpcy5leGNsdWRlczsgICAgICBcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGVsKCk6IGFueSB7XG4gICAgaWYgKHRoaXMuX2Zvcm0pXG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLnNhbml0aXplKHRoaXMuX2Zvcm0udmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBnZXRGb3JtTW9kZWwoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuX2Zvcm1Nb2RlbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybS5pbnZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWF0ZUZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5zZXJ2aWNlLl9mb3JtTW9kZWwgPSBbdGhpcy5zdHJ1Y3R1cmVkQ2xvbmUodGhpcy5zY2hlbWEpXTtcbiAgICB0aGlzLnNlcnZpY2UuX2Zvcm1Nb2RlbFswXS5lbGVtZW50cyA9IFtdO1xuICAgIGxldCBncm91cDogYW55ID0ge307XG4gICAgY29uc3Qgc2NoZW1hRWxlbWVudHMgPSAgdGhpcy5zY2hlbWEuZWxlbWVudHMubGVuZ3RoID4gMCA/IHRoaXMuc3RydWN0dXJlZENsb25lKHRoaXMuc2NoZW1hLmVsZW1lbnRzKSA6IHRoaXMuc2NoZW1hLmVsZW1lbnRzO1xuICAgIGNvbnN0IGZvcm1FbGVtZW50cyA9IHRoaXMuc2VydmljZS5fZm9ybU1vZGVsWzBdLmVsZW1lbnRzLmxlbmd0aCA+IDAgPyB0aGlzLnN0cnVjdHVyZWRDbG9uZSh0aGlzLnNlcnZpY2UuX2Zvcm1Nb2RlbFswXS5lbGVtZW50cykgOiB0aGlzLnNlcnZpY2UuX2Zvcm1Nb2RlbFswXS5lbGVtZW50cztcbiAgICBncm91cFt0aGlzLnNjaGVtYS5pZF0gPSB0aGlzLnNlcnZpY2UuZ2V0Rm9ybUdyb3VwQ29udHJvbHMoc2NoZW1hRWxlbWVudHMsIGZvcm1FbGVtZW50cyk7XG4gICAgdGhpcy5fZm9ybSA9IG5ldyBGb3JtR3JvdXAoZ3JvdXApO1xuICAgIGlmICghdGhpcy5faXNGb3JtSW5pdGlhdGUpIHtcbiAgICAgIHRoaXMuaW5pdGlhdGVGb3JtTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0cnVjdHVyZWRDbG9uZShkYXRhOiBhbnkpOiBhbnkge1xuICAgIGxldCBjbG9uZURhdGE7XG4gICAgdHJ5IHtcbiAgICAgIGNsb25lRGF0YSA9IHN0cnVjdHVyZWRDbG9uZShkYXRhKTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgIGNsb25lRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgIH1cbiAgICByZXR1cm4gY2xvbmVEYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWF0ZUZvcm1Nb2RlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZm9ybSkge1xuICAgICAgdGhpcy5fbmdNb2RlbCA9IHRoaXMuZm9ybS5pc29Gb3JtTW9kZWw7ICAgICAgXG4gICAgICB0aGlzLmZvcm0uZ2V0Rm9ybU1vZGVsID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgICAgIH07XG5cbiAgICAgIFxuICAgICAgdGhpcy5faXNGb3JtSW5pdGlhdGUgPSB0cnVlO1xuICAgICAgdGhpcy5zZXJ2aWNlLmluaXRGb3JtTW9kZWwodGhpcy5fbmdNb2RlbCwgdGhpcy5fZm9ybSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2hvaWNlU2VsZWN0aW9uQ2hhbmdlKGlkOiBzdHJpbmcsIGZvcm1FbGVtZW50OiBhbnksIG5vZGU6IFNjaGVtYU1vZGVsKTogdm9pZCB7XG4gICAgbm9kZS5lbGVtZW50cy5mb3JFYWNoKChlbGVtZW50OiBTY2hlbWFNb2RlbCkgPT4ge1xuICAgICAgZWxlbWVudC5oaWRkZW4gPSB0cnVlO1xuICAgICAgZm9ybUVsZW1lbnQucmVtb3ZlQ29udHJvbChlbGVtZW50LmlkKTtcbiAgICAgIGlmIChlbGVtZW50LmlkID09PSBpZCkge1xuICAgICAgICBub2RlLmNob2ljZUtleSA9IGlkO1xuICAgICAgICBlbGVtZW50LmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgIC8vIGVsZW1lbnQuZWxlbWVudHNbMF0uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLnNlcnZpY2UuZ2V0Rm9ybUdyb3VwQ29udHJvbHMoZWxlbWVudC5lbGVtZW50cywgW10sIDAsIGZhbHNlKTtcbiAgICAgICAgICBmb3JtRWxlbWVudC5hZGRDb250cm9sKGVsZW1lbnQuaWQsIGdyb3VwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5zZXJ2aWNlLmdldEZvcm1Db250cm9sKCcnKTtcbiAgICAgICAgICBmb3JtRWxlbWVudC5hZGRDb250cm9sKGVsZW1lbnQuaWQsIGNvbnRyb2wpO1xuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXhPY2N1cnMobWF4T2NjdXJzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWF4T2NjdXJzICE9PSBudWxsICYmIG1heE9jY3VycyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2VydmljZS5tYXhPY2N1cnMobWF4T2NjdXJzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBleHBhbmQobWluT2NjdXJzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWluT2NjdXJzICE9PSBudWxsICYmIG1pbk9jY3VycyAhPT0gdW5kZWZpbmVkICYmIHBhcnNlSW50KG1pbk9jY3VycywgMTApID4gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRTZWN0aW9uKCRldmVudDogRXZlbnQsIG5vZGU6IFNjaGVtYU1vZGVsLCBwYXJlbnROb2RlOiBTY2hlbWFNb2RlbCwgcGFyZW50Rm9ybUVsZTogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGNvbnRyb2w6IEZvcm1BcnJheSA9IHBhcmVudEZvcm1FbGUuZ2V0KG5vZGUuaWQpIGFzIEZvcm1BcnJheTtcbiAgICBpZiAobm9kZS5tYXhPY2N1cnMgJiYgcGFyc2VJbnQobm9kZS5tYXhPY2N1cnMsIDEwKSA8PSBwYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdFbGUgPSB0aGlzLnN0cnVjdHVyZWRDbG9uZShwYXJlbnROb2RlLmVsZW1lbnRzWzBdKTtcbiAgICBjb25zdCBuZXdLZXlzOiBhbnkgPSBbXTtcbiAgICBjb25zdCBncm91cENvbnRyb2xzID0gdGhpcy5zZXJ2aWNlLmdldEZvcm1Hcm91cENvbnRyb2xzKG5ld0VsZS5lbGVtZW50cywgbmV3S2V5cywgcGFyZW50Tm9kZS5lbGVtZW50cy5sZW5ndGggLSAxKTtcbiAgICBwYXJlbnROb2RlLmVsZW1lbnRzLnB1c2gobmV3RWxlKTtcbiAgICBjb250cm9sLnB1c2goZ3JvdXBDb250cm9scyk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlbW92ZVNlY3Rpb24oJGV2ZW50OiBFdmVudCwgcGFyZW50Tm9kZTogU2NoZW1hTW9kZWwsIHBhcmVudEZvcm1FbGU6IEZvcm1Hcm91cCwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBjb250cm9sOiBGb3JtQXJyYXkgPSBwYXJlbnRGb3JtRWxlLmdldChwYXJlbnROb2RlLmlkKSBhcyBGb3JtQXJyYXk7XG4gICAgcGFyZW50Tm9kZS5lbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGNvbnRyb2wucmVtb3ZlQXQoaW5kZXgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGROZXdDb250cm9sKCRldmVudDogRXZlbnQsIG5vZGU6IFNjaGVtYU1vZGVsLCBwYXJlbnROb2RlOiBTY2hlbWFNb2RlbCwgcGFyZW50Rm9ybUVsZTogRm9ybUdyb3VwKTogdm9pZCB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmIChub2RlLm1heE9jY3VycyAmJiBwYXJzZUludChub2RlLm1heE9jY3VycywgMTApIDw9IHBhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRyb2w6IEZvcm1BcnJheSA9IHBhcmVudEZvcm1FbGUuZ2V0KG5vZGUuaWQpIGFzIEZvcm1BcnJheTtcbiAgICBjb25zdCBuZXdDb250cm9sID0gdGhpcy5zZXJ2aWNlLmdldEZvcm1Db250cm9sKCcnKTtcbiAgICBjb25zdCBuZXdFbGUgPSB0aGlzLnN0cnVjdHVyZWRDbG9uZShwYXJlbnROb2RlLmVsZW1lbnRzW3BhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoIC0gMV0pO1xuICAgIGNvbnRyb2wucHVzaChuZXdDb250cm9sKTtcbiAgICBwYXJlbnROb2RlLmVsZW1lbnRzLnB1c2gobmV3RWxlKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVtb3ZlTmV3Q29udHJvbCgkZXZlbnQ6IEV2ZW50LCBwYXJlbnROb2RlOiBTY2hlbWFNb2RlbCwgcGFyZW50Rm9ybUVsZTogRm9ybUdyb3VwLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGNvbnRyb2w6IEZvcm1BcnJheSA9IHBhcmVudEZvcm1FbGUuZ2V0KHBhcmVudE5vZGUuaWQpIGFzIEZvcm1BcnJheTtcbiAgICBwYXJlbnROb2RlLmVsZW1lbnRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgY29udHJvbC5yZW1vdmVBdChpbmRleCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzQXJyYXkobXlLZXk6IE9iamVjdCB8IEFycmF5PGFueT4pOiBib29sZWFuIHtcbiAgICBpZiAobXlLZXkgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0VtcHR5KGZvcm1FbGVtZW50OiBGb3JtR3JvdXApOiBib29sZWFuIHtcbiAgICByZXR1cm4gZm9ybUVsZW1lbnQuY29udHJvbHMgJiYgT2JqZWN0LmtleXMoZm9ybUVsZW1lbnQuY29udHJvbHMpLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRFbGVtZW50KGZvcm1FbGVtZW50OiBGb3JtR3JvdXAsIGVsZW1lbnQ6IGFueSk6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCB1bmRlZmluZWQge1xuICAgIGlmIChlbGVtZW50LmhpZGRlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgX2VsZW1lbnQ7XG4gICAgaWYgKGVsZW1lbnQubXVsdGkpIHtcbiAgICAgIF9lbGVtZW50ID0gZWxlbWVudC5lbGVtZW50c1tlbGVtZW50LmVsZW1lbnRzLmxlbmd0aCAtIDFdO1xuICAgIH0gZWxzZSB7XG4gICAgICBfZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgbGV0IGZvcm1Db250cm9sID0gZm9ybUVsZW1lbnQuY29udHJvbHNbX2VsZW1lbnQuaWRdO1xuICAgIGlmICghZm9ybUNvbnRyb2wpIHtcbiAgICAgIGZvcm1Db250cm9sID0gKGZvcm1FbGVtZW50IGFzIGFueSlbX2VsZW1lbnQuaWRdO1xuICAgICAgaWYgKCFmb3JtQ29udHJvbClcbiAgICAgICAgdGhyb3cgYEZvcm1Db250cm9sIG5vdCBmb3VuZCAke19lbGVtZW50LmlkfWA7XG4gICAgfVxuICAgIGlmIChmb3JtQ29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAgICAgY29uc3QgZm9ybUdyb3VwID0gZm9ybUNvbnRyb2wuY29udHJvbHMuZmluZCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhpdGVtLmNvbnRyb2xzKS5maW5kKChjdHJsKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGN0cmwuaW5kZXhPZihlbGVtZW50LmlkKSA+IC0xO1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgICBpZiAoZm9ybUdyb3VwKVxuICAgICAgICByZXR1cm4gZm9ybUNvbnRyb2wuYXQoZm9ybUNvbnRyb2wubGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtQ29udHJvbDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGb3JtQ29udHJvbChub2RlOiBTY2hlbWFNb2RlbCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldEZvcm1Db250cm9sKCcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDaG9pY2VGb3JtQ29udHJvbChjaG9pY2VLZXk6c3RyaW5nKXtcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuc2VydmljZS5nZXRGb3JtQ29udHJvbCgnJyk7XG4gICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoY2hvaWNlS2V5KTtcbiAgICByZXR1cm4gZm9ybUNvbnRyb2w7XG4gIH1cbn1cbiIsIjxmb3JtICpuZ0lmPVwiX2Zvcm0gJiYgc2NoZW1hXCIgW2Zvcm1Hcm91cF09XCJfZm9ybVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgI25vZGVUZW1wbGF0ZVJlZiBsZXQtbm9kZT1cIm5vZGVcIiBsZXQtZm9ybUVsZW1lbnQ9XCJmb3JtRWxlbWVudFwiIGxldC1pbmRleD1cImluZGV4XCJcclxuICAgICAgbGV0LXBhcmVudE5vZGU9XCJwYXJlbnROb2RlXCIgbGV0LXBhcmVudEZvcm1FbGVtZW50PVwicGFyZW50Rm9ybUVsZW1lbnRcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGUubXVsdGkgdGhlbiBhcnIgZWxzZSBvYmpcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNhcnI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0Zvcj1cImxldCBtb2RlbCBvZiBub2RlLmVsZW1lbnRzO2xldCBpID0gaW5kZXhcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJub2RlVGVtcGxhdGVSZWZcIlxyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcclxuICAgICAgICAgIG5vZGU6IG1vZGVsLFxyXG4gICAgICAgICAgZm9ybUVsZW1lbnQ6IGZvcm1FbGVtZW50LFxyXG4gICAgICAgICAgcGFyZW50Rm9ybUVsZW1lbnQ6IHBhcmVudEZvcm1FbGVtZW50LFxyXG4gICAgICAgICAgcGFyZW50Tm9kZTogbm9kZSxcclxuICAgICAgICAgIGluZGV4OiBpXHJcbiAgICAgICAgfVwiPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjb2JqPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlLmVsZW1lbnRzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgPG1hdC1hY2NvcmRpb24gW2Zvcm1Hcm91cF09XCJmb3JtRWxlbWVudFwiICpuZ0lmPVwiIW5vZGUuaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIG11bHRpIFtleHBhbmRlZF09XCJleHBhbmQobm9kZS5taW5PY2N1cnMpIHx8IG5vZGUuZXhwYW5kZWRcIiAjZXhwYW4+XHJcbiAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgICAgICAgICAge3sgbm9kZS5uYW1lIHwgdHJhbnM6IG5vZGUuaWQgOiBub2RlLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiAqbmdJZj1cIm1heE9jY3Vycyhub2RlLm1heE9jY3VycylcIj5cclxuICAgICAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpbmRleCA8IDFcIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImFkZFNlY3Rpb24oJGV2ZW50LCBub2RlLHBhcmVudE5vZGUsIHBhcmVudEZvcm1FbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImluZGV4ID4gMFwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlU2VjdGlvbigkZXZlbnQscGFyZW50Tm9kZSxwYXJlbnRGb3JtRWxlbWVudCxpbmRleClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cclxuICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBhbi5leHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwibm9kZS5kYXRhVHlwZSA9PT0gJ2Nob2ljZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57eyBub2RlLm5hbWUgfCB0cmFuczogbm9kZS5pZCA6IG5vZGUubmFtZSB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uQ2hvaWNlU2VsZWN0aW9uQ2hhbmdlKCRldmVudC52YWx1ZSxmb3JtRWxlbWVudCwgbm9kZSlcIiBbZm9ybUNvbnRyb2xdPVwiZ2V0Q2hvaWNlRm9ybUNvbnRyb2wobm9kZS5jaG9pY2VLZXkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygbm9kZS5lbGVtZW50c1wiIFt2YWx1ZV09XCJpdGVtLmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VtcHR5KGZvcm1FbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nRm9yPVwibGV0IG1vZGVsIG9mIG5vZGUuZWxlbWVudHM7IGxldCBpID0gaW5kZXhcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJub2RlVGVtcGxhdGVSZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICAgIG5vZGU6IG1vZGVsLFxyXG4gICAgICAgICAgICBmb3JtRWxlbWVudDogZ2V0RWxlbWVudChmb3JtRWxlbWVudCxtb2RlbCksXHJcbiAgICAgICAgICAgIHBhcmVudEZvcm1FbGVtZW50OiBmb3JtRWxlbWVudFxyXG4gICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibm9kZS5lbGVtZW50cy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgPG5neC1pc28tY29udHJvbCAqbmdJZj1cIiFub2RlLmhpZGRlblwiIFtmb3JtQ29udHJvbF09XCJmb3JtRWxlbWVudFwiIFtjb250cm9sXT1cIm5vZGVcIj48L25neC1pc28tY29udHJvbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgICA8L21hdC1hY2NvcmRpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFub2RlLmVsZW1lbnRzLmxlbmd0aCAmJiAhbm9kZS5oaWRkZW5cIj5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJtYXhPY2N1cnMobm9kZS5tYXhPY2N1cnMpXCIgY2xhc3M9XCJmb3JtLWFkZC1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICZuYnNwO1xyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5kZXggPCAxXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJhZGROZXdDb250cm9sKCRldmVudCwgbm9kZSxwYXJlbnROb2RlLHBhcmVudEZvcm1FbGVtZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImluZGV4ID4gMFwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlTmV3Q29udHJvbCgkZXZlbnQscGFyZW50Tm9kZSxwYXJlbnRGb3JtRWxlbWVudCxpbmRleClcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZ3gtaXNvLWNvbnRyb2wgW2Zvcm1Db250cm9sXT1cImZvcm1FbGVtZW50XCIgW2NvbnRyb2xdPVwibm9kZVwiPjwvbmd4LWlzby1jb250cm9sPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1vZGVsIG9mIGdldEZvcm1Nb2RlbDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBcnJheShtb2RlbCk7dGhlbiBmb3JtQXJyYXkgZWxzZSBmb3JtT2JqZWN0XCI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zvcm1BcnJheT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nRm9yPVwibGV0IGtleSBvZiBtb2RlbDtsZXQgaSA9IGluZGV4XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZVRlbXBsYXRlUmVmXCJcclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICBub2RlOiBrZXksXHJcbiAgICAgICAgICBmb3JtRWxlbWVudDogZ2V0RWxlbWVudChfZm9ybSxrZXkpLFxyXG4gICAgICAgICAgcGFyZW50Rm9ybUVsZW1lbnQ6IF9mb3JtLFxyXG4gICAgICAgICAgaW5kZXg6aVxyXG4gICAgICAgIH1cIj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zvcm1PYmplY3Q+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5vZGVUZW1wbGF0ZVJlZlwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XHJcbiAgICAgICAgICBub2RlOiBtb2RlbCxcclxuICAgICAgICAgIGZvcm1FbGVtZW50OiBnZXRFbGVtZW50KF9mb3JtLG1vZGVsKSxcclxuICAgICAgICAgIHBhcmVudEZvcm1FbGVtZW50OiBfZm9ybSxcclxuICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgIH1cIj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT4iXX0=
|
|
@@ -20,10 +20,6 @@ import { IsoErrorPipe } from './shared/pipe/error.pipe';
|
|
|
20
20
|
import { IsoGeneralPipe } from './shared/pipe/general.pipe';
|
|
21
21
|
import { CUSTOM_DATE_FORMATS, CustomDateAdapter } from './shared/services/custom-date-adapter';
|
|
22
22
|
import * as i0 from "@angular/core";
|
|
23
|
-
// // AoT requires an exported function for factories
|
|
24
|
-
// export function HttpLoaderFactory(http: HttpClient) {
|
|
25
|
-
// return new TranslateHttpLoader(http);
|
|
26
|
-
// }
|
|
27
23
|
export class NgxIsoFormModule {
|
|
28
24
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgxIsoFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
29
25
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: NgxIsoFormModule, declarations: [NgxIsoFormComponent,
|
|
@@ -114,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
114
110
|
]
|
|
115
111
|
}]
|
|
116
112
|
}] });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlzby1mb3JtLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pc28tZm9ybS9zcmMvbGliL25neC1pc28tZm9ybS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLFdBQVcsRUFDWCxVQUFVLEVBQ1YsY0FBYyxFQUNkLFlBQVksRUFDWixjQUFjLEVBQ2QsY0FBYyxFQUNkLGNBQWMsR0FDZixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQTJDL0YsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBdkN6QixtQkFBbUI7WUFDbkIsc0JBQXNCO1lBQ3RCLG1CQUFtQjtZQUNuQix1QkFBdUI7WUFDdkIsV0FBVztZQUNYLGNBQWM7WUFDZCxVQUFVO1lBQ1YsY0FBYztZQUNkLFlBQVk7WUFDWixjQUFjO1lBQ2QsY0FBYztZQUNkLGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLGNBQWMsYUFHZCxhQUFhO1lBQ2IsdUJBQXVCO1lBQ3ZCLGVBQWU7WUFDZixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixrQkFBa0I7WUFDbEIsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhLGFBT2IsbUJBQW1COytHQUdWLGdCQUFnQixhQVJoQjtZQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7WUFDckQsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFO1NBQzdELFlBakJDLGFBQWE7WUFDYix1QkFBdUI7WUFDdkIsZUFBZTtZQUNmLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsZUFBZTtZQUNmLGFBQWE7OzJGQVVKLGdCQUFnQjtrQkF6QzVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLG1CQUFtQjt3QkFDbkIsc0JBQXNCO3dCQUN0QixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixjQUFjO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDUCxhQUFhO3dCQUNiLHVCQUF1Qjt3QkFDdkIsZUFBZTt3QkFDZixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixhQUFhO3FCQUNkO29CQUNELFNBQVMsRUFBRTt3QkFDVCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO3dCQUNyRCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUU7cUJBQzdEO29CQUNELE9BQU8sRUFBRTt3QkFDUCxtQkFBbUI7cUJBQ3BCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9uc1wiXHJcbmltcG9ydCB7IEJyb3dzZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyLCBNQVRfREFURV9GT1JNQVRTLCBNYXROYXRpdmVEYXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuXHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBOZ3hJc29Db250cm9sQ29tcG9uZW50LFxyXG4gIElzb0Jhc2VDb250cm9sQ29tcG9uZW50LFxyXG4gIElzb01hdElucHV0LFxyXG4gIElzb01hdERhdGUsXHJcbiAgSXNvTWF0VGV4dGFyZWEsXHJcbiAgSXNvTWF0U2VsZWN0LFxyXG4gIElzb01hdENoZWNrYm94LFxyXG4gIElzb01hdERhdGVUaW1lLFxyXG4gIElzb01hdEN1cnJlbmN5LFxyXG59IGZyb20gJy4vY29tcG9uZW50cyc7XHJcblxyXG5pbXBvcnQgeyBOZ3hJc29Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtaXNvLWZvcm0uY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IENvbXBvbmVudERpcmVjdGl2ZSB9IGZyb20gJy4vc2hhcmVkL2RpcmVjdGl2ZXMvY29tcG9uZW50LWNvbnRlbnQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgTmd4RHluYW1pY0NvbXBvbmVudCB9IGZyb20gJy4vc2hhcmVkL2NvbXBvbmVudHMvZHluYW1pYy9uZ3gtZHluYW1pYy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJc29UcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi9zaGFyZWQvcGlwZS90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IElzb0Vycm9yUGlwZSB9IGZyb20gJy4vc2hhcmVkL3BpcGUvZXJyb3IucGlwZSc7XHJcbmltcG9ydCB7IElzb0dlbmVyYWxQaXBlIH0gZnJvbSAnLi9zaGFyZWQvcGlwZS9nZW5lcmFsLnBpcGUnO1xyXG5pbXBvcnQgeyBDVVNUT01fREFURV9GT1JNQVRTLCBDdXN0b21EYXRlQWRhcHRlciB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL2N1c3RvbS1kYXRlLWFkYXB0ZXInO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIE5neElzb0Zvcm1Db21wb25lbnQsXHJcbiAgICBOZ3hJc29Db250cm9sQ29tcG9uZW50LFxyXG4gICAgTmd4RHluYW1pY0NvbXBvbmVudCxcclxuICAgIElzb0Jhc2VDb250cm9sQ29tcG9uZW50LFxyXG4gICAgSXNvTWF0SW5wdXQsXHJcbiAgICBJc29NYXRUZXh0YXJlYSxcclxuICAgIElzb01hdERhdGUsXHJcbiAgICBJc29NYXREYXRlVGltZSxcclxuICAgIElzb01hdFNlbGVjdCxcclxuICAgIElzb01hdENoZWNrYm94LFxyXG4gICAgSXNvTWF0Q3VycmVuY3ksXHJcbiAgICBDb21wb25lbnREaXJlY3RpdmUsXHJcbiAgICBJc29UcmFuc2xhdGVQaXBlLFxyXG4gICAgSXNvRXJyb3JQaXBlLFxyXG4gICAgSXNvR2VuZXJhbFBpcGVcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEJyb3dzZXJNb2R1bGUsXHJcbiAgICBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcclxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogQ3VzdG9tRGF0ZUFkYXB0ZXIgfSxcclxuICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IENVU1RPTV9EQVRFX0ZPUk1BVFMgfVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgTmd4SXNvRm9ybUNvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5neElzb0Zvcm1Nb2R1bGUgeyB9XHJcbiJdfQ==
|
|
@@ -8,6 +8,7 @@ export class NgxIsoService {
|
|
|
8
8
|
this.fb = fb;
|
|
9
9
|
this.dateService = dateService;
|
|
10
10
|
this._formModel = [];
|
|
11
|
+
this.excludes = [];
|
|
11
12
|
this.sanitize = (obj) => {
|
|
12
13
|
if (obj === null || obj === '') {
|
|
13
14
|
return null;
|
|
@@ -146,82 +147,87 @@ export class NgxIsoService {
|
|
|
146
147
|
let controls;
|
|
147
148
|
let value = {};
|
|
148
149
|
json.forEach((item) => {
|
|
149
|
-
item.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
if (
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
controls.
|
|
150
|
+
if ((this.excludes.length > 0 && !this.excludes.includes(item.id)) ||
|
|
151
|
+
this.excludes.length == 0) {
|
|
152
|
+
item.hidden = choiceEle;
|
|
153
|
+
value = item.elements;
|
|
154
|
+
const id = item.id;
|
|
155
|
+
const element = { ...item, elements: [], id };
|
|
156
|
+
if (item.elements.length > 0) {
|
|
157
|
+
let choice = item.dataType === 'choice';
|
|
158
|
+
if (choice) {
|
|
159
|
+
element.choiceKey = '';
|
|
160
|
+
}
|
|
161
|
+
if (this.maxOccurs(item.maxOccurs)) {
|
|
162
|
+
element.uniqueId = `${element.id}_${index}`;
|
|
163
|
+
keys.push({
|
|
164
|
+
id: element.id,
|
|
165
|
+
multi: true,
|
|
166
|
+
xpath: element.xpath,
|
|
167
|
+
elements: [element],
|
|
168
|
+
});
|
|
169
|
+
const data = this.getFormGroupControls(item.elements, element.elements, index, choice);
|
|
170
|
+
controls = this.fb.array([]);
|
|
171
|
+
if (!choice) {
|
|
172
|
+
controls.push(data);
|
|
173
|
+
}
|
|
174
|
+
control[id] = controls;
|
|
175
|
+
}
|
|
176
|
+
else if (item.multi && !item.isFormControls) {
|
|
177
|
+
keys.push({
|
|
178
|
+
id: element.id,
|
|
179
|
+
multi: true,
|
|
180
|
+
xpath: element.xpath,
|
|
181
|
+
elements: element.elements,
|
|
182
|
+
});
|
|
183
|
+
const data = this.getFormGroupControls(item.elements[item.elements.length - 1].elements, element.elements, index, choice);
|
|
184
|
+
controls = this.fb.array([]);
|
|
185
|
+
if (!choice) {
|
|
186
|
+
controls.push(data);
|
|
187
|
+
}
|
|
188
|
+
control[id] = controls;
|
|
189
|
+
}
|
|
190
|
+
else if (item.multi && item.isFormControls) {
|
|
191
|
+
if (item.elements.length > 1) {
|
|
192
|
+
item.elements.splice(1, item.elements.length - 1);
|
|
193
|
+
}
|
|
194
|
+
keys.push(item);
|
|
195
|
+
control[id] = this.fb.array([
|
|
196
|
+
this.getFormControl(item.value || ''),
|
|
197
|
+
]);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
keys.push(element);
|
|
201
|
+
const data = this.getFormGroupControls(item.elements, element.elements, index, choice);
|
|
202
|
+
if (!choice) {
|
|
203
|
+
control[id] = data;
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
control[id] = this.fb.group({});
|
|
207
|
+
}
|
|
170
208
|
}
|
|
171
|
-
control[id] = controls;
|
|
172
209
|
}
|
|
173
|
-
else if (
|
|
210
|
+
else if (this.maxOccurs(item.maxOccurs)) {
|
|
174
211
|
keys.push({
|
|
175
212
|
id: element.id,
|
|
176
213
|
multi: true,
|
|
177
214
|
xpath: element.xpath,
|
|
178
|
-
elements: element
|
|
215
|
+
elements: [element],
|
|
216
|
+
isFormControls: true,
|
|
179
217
|
});
|
|
180
|
-
|
|
181
|
-
controls = this.fb.array([]);
|
|
182
|
-
if (!choice) {
|
|
183
|
-
controls.push(data);
|
|
184
|
-
}
|
|
185
|
-
control[id] = controls;
|
|
218
|
+
control[id] = this.fb.array([this.getFormControl(item.value)]);
|
|
186
219
|
}
|
|
187
|
-
else if (item.
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
control[id] = this.fb.array([this.getFormControl(item.value || '')]);
|
|
220
|
+
else if (item.isCurrency) {
|
|
221
|
+
const _amountCurrency = this.getAmountCurrency(item);
|
|
222
|
+
keys.push(element);
|
|
223
|
+
const data = this.getFormGroupControls(_amountCurrency, element.elements, 0, false);
|
|
224
|
+
control[item.id] = data;
|
|
193
225
|
}
|
|
194
226
|
else {
|
|
195
227
|
keys.push(element);
|
|
196
|
-
|
|
197
|
-
if (!choice) {
|
|
198
|
-
control[id] = data;
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
control[id] = this.fb.group({});
|
|
202
|
-
}
|
|
228
|
+
control[id] = this.getFormControl(item.value || '');
|
|
203
229
|
}
|
|
204
230
|
}
|
|
205
|
-
else if (this.maxOccurs(item.maxOccurs)) {
|
|
206
|
-
keys.push({
|
|
207
|
-
id: element.id,
|
|
208
|
-
multi: true,
|
|
209
|
-
xpath: element.xpath,
|
|
210
|
-
elements: [element],
|
|
211
|
-
isFormControls: true,
|
|
212
|
-
});
|
|
213
|
-
control[id] = this.fb.array([this.getFormControl(item.value)]);
|
|
214
|
-
}
|
|
215
|
-
else if (item.isCurrency) {
|
|
216
|
-
const _amountCurrency = this.getAmountCurrency(item);
|
|
217
|
-
keys.push(element);
|
|
218
|
-
const data = this.getFormGroupControls(_amountCurrency, element.elements, 0, false);
|
|
219
|
-
control[item.id] = data;
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
keys.push(element);
|
|
223
|
-
control[id] = this.getFormControl(item.value || '');
|
|
224
|
-
}
|
|
225
231
|
});
|
|
226
232
|
return new FormGroup(control);
|
|
227
233
|
}
|
|
@@ -258,4 +264,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
258
264
|
providedIn: 'root',
|
|
259
265
|
}]
|
|
260
266
|
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.CustomDateAdapter }] });
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlzby1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaXNvLWZvcm0vc3JjL2xpYi9uZ3gtaXNvLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDOzs7O0FBT2hGLE1BQU0sT0FBTyxhQUFhO0lBRXhCLFlBQ1UsRUFBZSxFQUNmLFdBQThCO1FBRDlCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFIakMsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQW9OdkIsYUFBUSxHQUFHLENBQUMsR0FBUSxFQUFPLEVBQUU7WUFDbEMsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sVUFBVSxHQUFRLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxNQUFNLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDeEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDL0MsSUFDRSxZQUFZLEtBQUssSUFBSTt3QkFDckIsWUFBWSxLQUFLLEVBQUU7d0JBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUM7d0JBQ3BDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVB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QUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs4R0FyU1UsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2NoZW1hTW9kZWwgfSBmcm9tICcuL01vZGVscy9TY2hlbWEnO1xuaW1wb3J0IHsgQ3VzdG9tRGF0ZUFkYXB0ZXIgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9jdXN0b20tZGF0ZS1hZGFwdGVyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5neElzb1NlcnZpY2Uge1xuICBwdWJsaWMgX2Zvcm1Nb2RlbDogYW55W10gPSBbXTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBkYXRlU2VydmljZTogQ3VzdG9tRGF0ZUFkYXB0ZXJcbiAgKSB7fVxuXG4gIHB1YmxpYyBtYXhPY2N1cnMobWF4T2NjdXJzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWF4T2NjdXJzID09PSAndW5ib3VuZGVkJyB8fCBwYXJzZUludChtYXhPY2N1cnMsIDEwKSA+IDE7XG4gIH1cblxuICBwdWJsaWMgaW5pdEZvcm1Nb2RlbChtb2RlbDogYW55LCBmb3JtOiBGb3JtR3JvdXAgfCBGb3JtQXJyYXkpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIG1vZGVsID09PSAnb2JqZWN0Jykge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gbW9kZWwpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobW9kZWxba2V5XSkpIHtcbiAgICAgICAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5nZXRGb3JtTW9kZWwodGhpcy5fZm9ybU1vZGVsWzBdLCBrZXkpO1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSBtb2RlbFtrZXldO1xuICAgICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IGZvcm0uZ2V0KGtleSkgYXMgRm9ybUFycmF5O1xuICAgICAgICAgIGlmIChmb3JtQXJyYXkgJiYgZm9ybUFycmF5Lmxlbmd0aCAhPT0gaXRlbS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0VsZSA9IHN0cnVjdHVyZWRDbG9uZShcbiAgICAgICAgICAgICAgcGFyZW50Tm9kZS5lbGVtZW50c1twYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIG5ld0VsZS5tYXhPY2N1cnMgJiZcbiAgICAgICAgICAgICAgICBwYXJzZUludChuZXdFbGUubWF4T2NjdXJzLCAxMCkgPD0gcGFyZW50Tm9kZS5lbGVtZW50cy5sZW5ndGhcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0tleXM6IGFueSA9IFtdO1xuICAgICAgICAgICAgICBjb25zdCBncm91cENvbnRyb2xzID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhcbiAgICAgICAgICAgICAgICBuZXdFbGUuZWxlbWVudHMsXG4gICAgICAgICAgICAgICAgbmV3S2V5cyxcbiAgICAgICAgICAgICAgICBwYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcGFyZW50Tm9kZS5lbGVtZW50cy5wdXNoKG5ld0VsZSk7XG4gICAgICAgICAgICAgIGZvcm1BcnJheS5wdXNoKGdyb3VwQ29udHJvbHMpO1xuICAgICAgICAgICAgICBwYXJlbnROb2RlLmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IFNjaGVtYU1vZGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgIWVsZW1lbnQubWluT2NjdXJzIHx8XG4gICAgICAgICAgICAgICAgICBwYXJzZUludChlbGVtZW50Lm1pbk9jY3VycywgMTApID09PSAwXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBlbGVtZW50Lm1pbk9jY3VycyA9ICcxJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5lbGVtZW50c1tpXS5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBmb3JtQXJyYXkgPSBmb3JtLmdldChrZXkpO1xuICAgICAgICAgICAgaWYgKGZvcm1BcnJheSkge1xuICAgICAgICAgICAgICBjb25zdCBmcm1Hcm91cCA9IChmb3JtQXJyYXkgYXMgRm9ybUFycmF5KS5hdChpKTtcbiAgICAgICAgICAgICAgaWYgKGZybUdyb3VwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0Rm9ybU1vZGVsKGl0ZW1baV0sIGZybUdyb3VwIGFzIEZvcm1Hcm91cCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG1vZGVsW2tleV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Rm9ybU1vZGVsKHRoaXMuX2Zvcm1Nb2RlbFswXSwga2V5KTtcbiAgICAgICAgICBub2RlLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICBpZiAobm9kZSAmJiAoIW5vZGUubWluT2NjdXJzIHx8IHBhcnNlSW50KG5vZGUubWluT2NjdXJzLCAxMCkgPT09IDApKSB7XG4gICAgICAgICAgICBub2RlLm1pbk9jY3VycyA9ICcxJztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgX2Zvcm0gPSBmb3JtLmdldChrZXkpIGFzIEZvcm1Hcm91cDtcbiAgICAgICAgICBpZiAoX2Zvcm0pIHtcbiAgICAgICAgICAgIGlmIChub2RlLmRhdGFUeXBlID09PSAnY2hvaWNlJykge1xuICAgICAgICAgICAgICBjb25zdCBjaG9pY2VLZXkgPSBPYmplY3Qua2V5cyhtb2RlbFtrZXldKVswXTtcbiAgICAgICAgICAgICAgY29uc3QgY2hvaWNlRWxlID0gbm9kZS5lbGVtZW50cy5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtOiBTY2hlbWFNb2RlbCkgPT4gaXRlbS5pZCA9PT0gY2hvaWNlS2V5XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIG5vZGUuY2hvaWNlS2V5ID0gY2hvaWNlS2V5O1xuICAgICAgICAgICAgICBjaG9pY2VFbGUuaGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgIGNob2ljZUVsZS5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld05vZGUgPSBzdHJ1Y3R1cmVkQ2xvbmUoY2hvaWNlRWxlKTtcbiAgICAgICAgICAgICAgaWYgKG5ld05vZGUuZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgICAgICAgICAgbmV3Tm9kZS5lbGVtZW50cyxcbiAgICAgICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBfZm9ybS5hZGRDb250cm9sKG5ld05vZGUuaWQsIGdyb3VwKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRGb3JtQ29udHJvbCgnJyk7XG4gICAgICAgICAgICAgICAgX2Zvcm0uYWRkQ29udHJvbChuZXdOb2RlLmlkLCBjb250cm9sKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbml0Rm9ybU1vZGVsKG1vZGVsW2tleV0sIF9mb3JtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgX2Zvcm0gPSBmb3JtLmdldChrZXkpIGFzIEZvcm1Db250cm9sO1xuICAgICAgICAgIF9mb3JtLnNldFZhbHVlKG1vZGVsW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG1vZGVsKSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtb2RlbC5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBmcm1Hcm91cCA9IChmb3JtIGFzIEZvcm1BcnJheSkuYXQoaSk7XG4gICAgICAgIHRoaXMuaW5pdEZvcm1Nb2RlbChtb2RlbFtpXSwgZnJtR3JvdXAgYXMgRm9ybUdyb3VwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Rm9ybUdyb3VwQ29udHJvbHMoXG4gICAganNvbjogU2NoZW1hTW9kZWxbXSxcbiAgICBrZXlzOiBhbnksXG4gICAgaW5kZXg6IG51bWJlciA9IDAsXG4gICAgY2hvaWNlRWxlOiBib29sZWFuID0gZmFsc2VcbiAgKTogRm9ybUdyb3VwIHtcbiAgICBsZXQgY29udHJvbDogYW55ID0ge307XG4gICAgbGV0IGNvbnRyb2xzOiBhbnk7XG4gICAgbGV0IHZhbHVlID0ge307XG5cbiAgICBqc29uLmZvckVhY2goKGl0ZW06IFNjaGVtYU1vZGVsKSA9PiB7XG4gICAgICBpdGVtLmhpZGRlbiA9IGNob2ljZUVsZTtcbiAgICAgIHZhbHVlID0gaXRlbS5lbGVtZW50cztcbiAgICAgIGNvbnN0IGlkID0gaXRlbS5pZDtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB7IC4uLml0ZW0sIGVsZW1lbnRzOiBbXSwgaWQgfTtcbiAgICAgIGlmIChpdGVtLmVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGNob2ljZSA9IGl0ZW0uZGF0YVR5cGUgPT09ICdjaG9pY2UnO1xuICAgICAgICBpZiAoY2hvaWNlKSB7XG4gICAgICAgICAgZWxlbWVudC5jaG9pY2VLZXkgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tYXhPY2N1cnMoaXRlbS5tYXhPY2N1cnMpKSB7XG4gICAgICAgICAgZWxlbWVudC51bmlxdWVJZCA9IGAke2VsZW1lbnQuaWR9XyR7aW5kZXh9YDtcbiAgICAgICAgICBrZXlzLnB1c2goe1xuICAgICAgICAgICAgaWQ6IGVsZW1lbnQuaWQsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICAgIHhwYXRoOiBlbGVtZW50LnhwYXRoLFxuICAgICAgICAgICAgZWxlbWVudHM6IFtlbGVtZW50XSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhcbiAgICAgICAgICAgIGl0ZW0uZWxlbWVudHMsXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnRzLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICBjaG9pY2VcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnRyb2xzID0gdGhpcy5mYi5hcnJheShbXSk7XG4gICAgICAgICAgaWYgKCFjaG9pY2UpIHtcbiAgICAgICAgICAgIGNvbnRyb2xzLnB1c2goZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRyb2xbaWRdID0gY29udHJvbHM7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5tdWx0aSAmJiAhaXRlbS5pc0Zvcm1Db250cm9scykge1xuICAgICAgICAgIGtleXMucHVzaCh7XG4gICAgICAgICAgICBpZDogZWxlbWVudC5pZCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICAgICAgeHBhdGg6IGVsZW1lbnQueHBhdGgsXG4gICAgICAgICAgICBlbGVtZW50czogZWxlbWVudC5lbGVtZW50cyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhcbiAgICAgICAgICAgIGl0ZW0uZWxlbWVudHNbaXRlbS5lbGVtZW50cy5sZW5ndGggLSAxXS5lbGVtZW50cyxcbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudHMsXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIGNob2ljZVxuICAgICAgICAgICk7XG4gICAgICAgICAgY29udHJvbHMgPSB0aGlzLmZiLmFycmF5KFtdKTtcbiAgICAgICAgICBpZiAoIWNob2ljZSkge1xuICAgICAgICAgICAgY29udHJvbHMucHVzaChkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udHJvbFtpZF0gPSBjb250cm9scztcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLm11bHRpICYmIGl0ZW0uaXNGb3JtQ29udHJvbHMpIHtcbiAgICAgICAgICBpZiAoaXRlbS5lbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBpdGVtLmVsZW1lbnRzLnNwbGljZSgxLCBpdGVtLmVsZW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBrZXlzLnB1c2goaXRlbSk7XG4gICAgICAgICAgY29udHJvbFtpZF0gPSB0aGlzLmZiLmFycmF5KFt0aGlzLmdldEZvcm1Db250cm9sKGl0ZW0udmFsdWUgfHwgJycpXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2V5cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgICAgaXRlbS5lbGVtZW50cyxcbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudHMsXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIGNob2ljZVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKCFjaG9pY2UpIHtcbiAgICAgICAgICAgIGNvbnRyb2xbaWRdID0gZGF0YTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udHJvbFtpZF0gPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhPY2N1cnMoaXRlbS5tYXhPY2N1cnMpKSB7XG4gICAgICAgIGtleXMucHVzaCh7XG4gICAgICAgICAgaWQ6IGVsZW1lbnQuaWQsXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgeHBhdGg6IGVsZW1lbnQueHBhdGgsXG4gICAgICAgICAgZWxlbWVudHM6IFtlbGVtZW50XSxcbiAgICAgICAgICBpc0Zvcm1Db250cm9sczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnRyb2xbaWRdID0gdGhpcy5mYi5hcnJheShbdGhpcy5nZXRGb3JtQ29udHJvbChpdGVtLnZhbHVlKV0pO1xuICAgICAgfSBlbHNlIGlmIChpdGVtLmlzQ3VycmVuY3kpIHtcbiAgICAgICAgY29uc3QgX2Ftb3VudEN1cnJlbmN5ID0gdGhpcy5nZXRBbW91bnRDdXJyZW5jeShpdGVtKTtcbiAgICAgICAga2V5cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhcbiAgICAgICAgICBfYW1vdW50Q3VycmVuY3ksXG4gICAgICAgICAgZWxlbWVudC5lbGVtZW50cyxcbiAgICAgICAgICAwLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRyb2xbaXRlbS5pZF0gPSBkYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V5cy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICBjb250cm9sW2lkXSA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woaXRlbS52YWx1ZSB8fCAnJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV3IEZvcm1Hcm91cChjb250cm9sKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtQ29udHJvbCh2YWx1ZXM6IGFueSk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gbmV3IEZvcm1Db250cm9sKHZhbHVlcyB8fCAnJywge1xuICAgICAgdXBkYXRlT246ICdibHVyJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzYW5pdGl6ZSA9IChvYmo6IGFueSk6IGFueSA9PiB7XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09ICcnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICBjb25zdCBjbGVhbmVkT2JqOiBhbnkgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgaW5kZXggaW4gb2JqKSB7XG4gICAgICAgIGNvbnN0IGNsZWFuZWRWYWx1ZSA9IHRoaXMuc2FuaXRpemUob2JqW2luZGV4XSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjbGVhbmVkVmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICBjbGVhbmVkVmFsdWUgIT09ICcnICYmXG4gICAgICAgICAgT2JqZWN0LmtleXMoY2xlYW5lZFZhbHVlKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgKCFBcnJheS5pc0FycmF5KGNsZWFuZWRWYWx1ZSkgfHwgY2xlYW5lZFZhbHVlLmxlbmd0aCA+IDApXG4gICAgICAgICkge1xuICAgICAgICAgIGNsZWFuZWRPYmoucHVzaChjbGVhbmVkVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xlYW5lZE9iajtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGNsZWFuZWRPYmogPSB0aGlzLmRhdGVTZXJ2aWNlLmZvcm1hdChvYmosICdZWVlZLU1NLUREJyk7XG4gICAgICByZXR1cm4gY2xlYW5lZE9iajtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBjbGVhbmVkT2JqOiBhbnkgPSB7fTtcblxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGNvbnN0IGNsZWFuZWRWYWx1ZSA9IHRoaXMuc2FuaXRpemUob2JqW2tleV0pO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY2xlYW5lZFZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgY2xlYW5lZFZhbHVlICE9PSAnJyAmJlxuICAgICAgICAgIE9iamVjdC5rZXlzKGNsZWFuZWRWYWx1ZSkubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICghQXJyYXkuaXNBcnJheShjbGVhbmVkVmFsdWUpIHx8IGNsZWFuZWRWYWx1ZS5sZW5ndGggPiAwKVxuICAgICAgICApIHtcbiAgICAgICAgICBjbGVhbmVkT2JqW2tleV0gPSBjbGVhbmVkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGVhbmVkT2JqO1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXRGb3JtTW9kZWwgPSAob2JqZWN0OiBhbnksIGtleTogc3RyaW5nKTogYW55ID0+IHtcbiAgICBpZiAob2JqZWN0KSB7XG4gICAgICBpZiAob2JqZWN0LmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBpZiAob2JqZWN0LmlkID09PSBrZXkpIHtcbiAgICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqZWN0LmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3Qgb2JqID0gdGhpcy5nZXRGb3JtTW9kZWwob2JqZWN0LmVsZW1lbnRzW2ldLCBrZXkpO1xuICAgICAgICAgIGlmIChvYmopIHJldHVybiBvYmo7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChvYmplY3QuaWQgPT09IGtleSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXRBbW91bnRDdXJyZW5jeShpdGVtOiBTY2hlbWFNb2RlbCk6IFNjaGVtYU1vZGVsW10ge1xuICAgIGNvbnN0IGVsZW1lbnRzOiBTY2hlbWFNb2RlbFtdID0gW107XG4gICAgY29uc3QgY2N5ID0gc3RydWN0dXJlZENsb25lKGl0ZW0pO1xuICAgIGNvbnN0IGFtdCA9IHN0cnVjdHVyZWRDbG9uZShpdGVtKTtcblxuICAgIGNjeS5pZCA9IGAke2NjeS5pZH1fQ2N5YDtcbiAgICBjY3kubmFtZSA9ICdDY3knO1xuICAgIGNjeS5mcmFjdGlvbkRpZ2l0cyA9ICcnO1xuICAgIGNjeS50b3RhbERpZ2l0cyA9ICcnO1xuICAgIGNjeS5tYXhMZW5ndGggPSAnMyc7XG4gICAgY2N5LnhwYXRoID0gYCR7Y2N5LnhwYXRofUBDY3lgO1xuICAgIGNjeS5pc0N1cnJlbmN5ID0gZmFsc2U7XG4gICAgZWxlbWVudHMucHVzaChjY3kpO1xuXG4gICAgYW10LmlkID0gYCR7YW10LmlkfV9BbXRgO1xuICAgIGFtdC54cGF0aCA9IGAke2FtdC54cGF0aH0vQW10YDtcbiAgICBhbXQuaXNDdXJyZW5jeSA9IGZhbHNlO1xuICAgIGFtdC5wYXR0ZXJuID0gJyc7XG4gICAgZWxlbWVudHMucHVzaChhbXQpO1xuICAgIHJldHVybiBlbGVtZW50cztcbiAgfVxufVxuIl19
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWlzby1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaXNvLWZvcm0vc3JjL2xpYi9uZ3gtaXNvLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDOzs7O0FBT2hGLE1BQU0sT0FBTyxhQUFhO0lBR3hCLFlBQ1UsRUFBZSxFQUNmLFdBQThCO1FBRDlCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixnQkFBVyxHQUFYLFdBQVcsQ0FBbUI7UUFKakMsZUFBVSxHQUFVLEVBQUUsQ0FBQztRQUN2QixhQUFRLEdBQWEsRUFBRSxDQUFDO1FBME54QixhQUFRLEdBQUcsQ0FBQyxHQUFRLEVBQU8sRUFBRTtZQUNsQyxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUMvQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxVQUFVLEdBQVEsRUFBRSxDQUFDO2dCQUMzQixLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUN4QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUMvQyxJQUNFLFlBQVksS0FBSyxJQUFJO3dCQUNyQixZQUFZLEtBQUssRUFBRTt3QkFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQzt3QkFDcEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksWUFBWSxD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QUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbkIsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUN6QixHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssTUFBTSxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzs4R0E1U1UsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Db250cm9sLCBGb3JtQXJyYXksIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2NoZW1hTW9kZWwgfSBmcm9tICcuL01vZGVscy9TY2hlbWEnO1xuaW1wb3J0IHsgQ3VzdG9tRGF0ZUFkYXB0ZXIgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9jdXN0b20tZGF0ZS1hZGFwdGVyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE5neElzb1NlcnZpY2Uge1xuICBwdWJsaWMgX2Zvcm1Nb2RlbDogYW55W10gPSBbXTtcbiAgcHVibGljIGV4Y2x1ZGVzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGRhdGVTZXJ2aWNlOiBDdXN0b21EYXRlQWRhcHRlclxuICApIHt9XG5cbiAgcHVibGljIG1heE9jY3VycyhtYXhPY2N1cnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtYXhPY2N1cnMgPT09ICd1bmJvdW5kZWQnIHx8IHBhcnNlSW50KG1heE9jY3VycywgMTApID4gMTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0Rm9ybU1vZGVsKG1vZGVsOiBhbnksIGZvcm06IEZvcm1Hcm91cCB8IEZvcm1BcnJheSk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgbW9kZWwgPT09ICdvYmplY3QnKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBtb2RlbCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RlbFtrZXldKSkge1xuICAgICAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzLmdldEZvcm1Nb2RlbCh0aGlzLl9mb3JtTW9kZWxbMF0sIGtleSk7XG4gICAgICAgICAgY29uc3QgaXRlbSA9IG1vZGVsW2tleV07XG4gICAgICAgICAgY29uc3QgZm9ybUFycmF5ID0gZm9ybS5nZXQoa2V5KSBhcyBGb3JtQXJyYXk7XG4gICAgICAgICAgaWYgKGZvcm1BcnJheSAmJiBmb3JtQXJyYXkubGVuZ3RoICE9PSBpdGVtLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgbmV3RWxlID0gc3RydWN0dXJlZENsb25lKFxuICAgICAgICAgICAgICBwYXJlbnROb2RlLmVsZW1lbnRzW3BhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgbmV3RWxlLm1heE9jY3VycyAmJlxuICAgICAgICAgICAgICAgIHBhcnNlSW50KG5ld0VsZS5tYXhPY2N1cnMsIDEwKSA8PSBwYXJlbnROb2RlLmVsZW1lbnRzLmxlbmd0aFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3S2V5czogYW55ID0gW107XG4gICAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29udHJvbHMgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgICAgICAgIG5ld0VsZS5lbGVtZW50cyxcbiAgICAgICAgICAgICAgICBuZXdLZXlzLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGUuZWxlbWVudHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBwYXJlbnROb2RlLmVsZW1lbnRzLnB1c2gobmV3RWxlKTtcbiAgICAgICAgICAgICAgZm9ybUFycmF5LnB1c2goZ3JvdXBDb250cm9scyk7XG4gICAgICAgICAgICAgIHBhcmVudE5vZGUuZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudDogU2NoZW1hTW9kZWwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAhZWxlbWVudC5taW5PY2N1cnMgfHxcbiAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGVsZW1lbnQubWluT2NjdXJzLCAxMCkgPT09IDBcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIGVsZW1lbnQubWluT2NjdXJzID0gJzEnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBwYXJlbnROb2RlLmVsZW1lbnRzW2ldLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1BcnJheSA9IGZvcm0uZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAoZm9ybUFycmF5KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGZybUdyb3VwID0gKGZvcm1BcnJheSBhcyBGb3JtQXJyYXkpLmF0KGkpO1xuICAgICAgICAgICAgICBpZiAoZnJtR3JvdXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRGb3JtTW9kZWwoaXRlbVtpXSwgZnJtR3JvdXAgYXMgRm9ybUdyb3VwKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbW9kZWxba2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5nZXRGb3JtTW9kZWwodGhpcy5fZm9ybU1vZGVsWzBdLCBrZXkpO1xuICAgICAgICAgIG5vZGUuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgIGlmIChub2RlICYmICghbm9kZS5taW5PY2N1cnMgfHwgcGFyc2VJbnQobm9kZS5taW5PY2N1cnMsIDEwKSA9PT0gMCkpIHtcbiAgICAgICAgICAgIG5vZGUubWluT2NjdXJzID0gJzEnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBfZm9ybSA9IGZvcm0uZ2V0KGtleSkgYXMgRm9ybUdyb3VwO1xuICAgICAgICAgIGlmIChfZm9ybSkge1xuICAgICAgICAgICAgaWYgKG5vZGUuZGF0YVR5cGUgPT09ICdjaG9pY2UnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNob2ljZUtleSA9IE9iamVjdC5rZXlzKG1vZGVsW2tleV0pWzBdO1xuICAgICAgICAgICAgICBjb25zdCBjaG9pY2VFbGUgPSBub2RlLmVsZW1lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGl0ZW06IFNjaGVtYU1vZGVsKSA9PiBpdGVtLmlkID09PSBjaG9pY2VLZXlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgbm9kZS5jaG9pY2VLZXkgPSBjaG9pY2VLZXk7XG4gICAgICAgICAgICAgIGNob2ljZUVsZS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgY2hvaWNlRWxlLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc3QgbmV3Tm9kZSA9IHN0cnVjdHVyZWRDbG9uZShjaG9pY2VFbGUpO1xuICAgICAgICAgICAgICBpZiAobmV3Tm9kZS5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ2V0Rm9ybUdyb3VwQ29udHJvbHMoXG4gICAgICAgICAgICAgICAgICBuZXdOb2RlLmVsZW1lbnRzLFxuICAgICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIF9mb3JtLmFkZENvbnRyb2wobmV3Tm9kZS5pZCwgZ3JvdXApO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmdldEZvcm1Db250cm9sKCcnKTtcbiAgICAgICAgICAgICAgICBfZm9ybS5hZGRDb250cm9sKG5ld05vZGUuaWQsIGNvbnRyb2wpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmluaXRGb3JtTW9kZWwobW9kZWxba2V5XSwgX2Zvcm0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBfZm9ybSA9IGZvcm0uZ2V0KGtleSkgYXMgRm9ybUNvbnRyb2w7XG4gICAgICAgICAgX2Zvcm0uc2V0VmFsdWUobW9kZWxba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobW9kZWwpKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGZybUdyb3VwID0gKGZvcm0gYXMgRm9ybUFycmF5KS5hdChpKTtcbiAgICAgICAgdGhpcy5pbml0Rm9ybU1vZGVsKG1vZGVsW2ldLCBmcm1Hcm91cCBhcyBGb3JtR3JvdXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtR3JvdXBDb250cm9scyhcbiAgICBqc29uOiBTY2hlbWFNb2RlbFtdLFxuICAgIGtleXM6IGFueSxcbiAgICBpbmRleDogbnVtYmVyID0gMCxcbiAgICBjaG9pY2VFbGU6IGJvb2xlYW4gPSBmYWxzZVxuICApOiBGb3JtR3JvdXAge1xuICAgIGxldCBjb250cm9sOiBhbnkgPSB7fTtcbiAgICBsZXQgY29udHJvbHM6IGFueTtcbiAgICBsZXQgdmFsdWUgPSB7fTtcblxuICAgIGpzb24uZm9yRWFjaCgoaXRlbTogU2NoZW1hTW9kZWwpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgKHRoaXMuZXhjbHVkZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5leGNsdWRlcy5pbmNsdWRlcyhpdGVtLmlkKSkgfHxcbiAgICAgICAgdGhpcy5leGNsdWRlcy5sZW5ndGggPT0gMFxuICAgICAgKSB7XG4gICAgICAgIGl0ZW0uaGlkZGVuID0gY2hvaWNlRWxlO1xuICAgICAgICB2YWx1ZSA9IGl0ZW0uZWxlbWVudHM7XG4gICAgICAgIGNvbnN0IGlkID0gaXRlbS5pZDtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHsgLi4uaXRlbSwgZWxlbWVudHM6IFtdLCBpZCB9O1xuICAgICAgICBpZiAoaXRlbS5lbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbGV0IGNob2ljZSA9IGl0ZW0uZGF0YVR5cGUgPT09ICdjaG9pY2UnO1xuICAgICAgICAgIGlmIChjaG9pY2UpIHtcbiAgICAgICAgICAgIGVsZW1lbnQuY2hvaWNlS2V5ID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLm1heE9jY3VycyhpdGVtLm1heE9jY3VycykpIHtcbiAgICAgICAgICAgIGVsZW1lbnQudW5pcXVlSWQgPSBgJHtlbGVtZW50LmlkfV8ke2luZGV4fWA7XG4gICAgICAgICAgICBrZXlzLnB1c2goe1xuICAgICAgICAgICAgICBpZDogZWxlbWVudC5pZCxcbiAgICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICAgIHhwYXRoOiBlbGVtZW50LnhwYXRoLFxuICAgICAgICAgICAgICBlbGVtZW50czogW2VsZW1lbnRdLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhcbiAgICAgICAgICAgICAgaXRlbS5lbGVtZW50cyxcbiAgICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50cyxcbiAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgIGNob2ljZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnRyb2xzID0gdGhpcy5mYi5hcnJheShbXSk7XG4gICAgICAgICAgICBpZiAoIWNob2ljZSkge1xuICAgICAgICAgICAgICBjb250cm9scy5wdXNoKGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udHJvbFtpZF0gPSBjb250cm9scztcbiAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ubXVsdGkgJiYgIWl0ZW0uaXNGb3JtQ29udHJvbHMpIHtcbiAgICAgICAgICAgIGtleXMucHVzaCh7XG4gICAgICAgICAgICAgIGlkOiBlbGVtZW50LmlkLFxuICAgICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICAgICAgeHBhdGg6IGVsZW1lbnQueHBhdGgsXG4gICAgICAgICAgICAgIGVsZW1lbnRzOiBlbGVtZW50LmVsZW1lbnRzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhcbiAgICAgICAgICAgICAgaXRlbS5lbGVtZW50c1tpdGVtLmVsZW1lbnRzLmxlbmd0aCAtIDFdLmVsZW1lbnRzLFxuICAgICAgICAgICAgICBlbGVtZW50LmVsZW1lbnRzLFxuICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgY2hvaWNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29udHJvbHMgPSB0aGlzLmZiLmFycmF5KFtdKTtcbiAgICAgICAgICAgIGlmICghY2hvaWNlKSB7XG4gICAgICAgICAgICAgIGNvbnRyb2xzLnB1c2goZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250cm9sW2lkXSA9IGNvbnRyb2xzO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5tdWx0aSAmJiBpdGVtLmlzRm9ybUNvbnRyb2xzKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5lbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgIGl0ZW0uZWxlbWVudHMuc3BsaWNlKDEsIGl0ZW0uZWxlbWVudHMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrZXlzLnB1c2goaXRlbSk7XG4gICAgICAgICAgICBjb250cm9sW2lkXSA9IHRoaXMuZmIuYXJyYXkoW1xuICAgICAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sKGl0ZW0udmFsdWUgfHwgJycpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGtleXMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldEZvcm1Hcm91cENvbnRyb2xzKFxuICAgICAgICAgICAgICBpdGVtLmVsZW1lbnRzLFxuICAgICAgICAgICAgICBlbGVtZW50LmVsZW1lbnRzLFxuICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgICAgY2hvaWNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFjaG9pY2UpIHtcbiAgICAgICAgICAgICAgY29udHJvbFtpZF0gPSBkYXRhO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29udHJvbFtpZF0gPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tYXhPY2N1cnMoaXRlbS5tYXhPY2N1cnMpKSB7XG4gICAgICAgICAga2V5cy5wdXNoKHtcbiAgICAgICAgICAgIGlkOiBlbGVtZW50LmlkLFxuICAgICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgICAgICB4cGF0aDogZWxlbWVudC54cGF0aCxcbiAgICAgICAgICAgIGVsZW1lbnRzOiBbZWxlbWVudF0sXG4gICAgICAgICAgICBpc0Zvcm1Db250cm9sczogdHJ1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb250cm9sW2lkXSA9IHRoaXMuZmIuYXJyYXkoW3RoaXMuZ2V0Rm9ybUNvbnRyb2woaXRlbS52YWx1ZSldKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmlzQ3VycmVuY3kpIHtcbiAgICAgICAgICBjb25zdCBfYW1vdW50Q3VycmVuY3kgPSB0aGlzLmdldEFtb3VudEN1cnJlbmN5KGl0ZW0pO1xuICAgICAgICAgIGtleXMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRGb3JtR3JvdXBDb250cm9scyhcbiAgICAgICAgICAgIF9hbW91bnRDdXJyZW5jeSxcbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudHMsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnRyb2xbaXRlbS5pZF0gPSBkYXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGtleXMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICBjb250cm9sW2lkXSA9IHRoaXMuZ2V0Rm9ybUNvbnRyb2woaXRlbS52YWx1ZSB8fCAnJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IEZvcm1Hcm91cChjb250cm9sKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGb3JtQ29udHJvbCh2YWx1ZXM6IGFueSk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gbmV3IEZvcm1Db250cm9sKHZhbHVlcyB8fCAnJywge1xuICAgICAgdXBkYXRlT246ICdibHVyJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzYW5pdGl6ZSA9IChvYmo6IGFueSk6IGFueSA9PiB7XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09ICcnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICBjb25zdCBjbGVhbmVkT2JqOiBhbnkgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgaW5kZXggaW4gb2JqKSB7XG4gICAgICAgIGNvbnN0IGNsZWFuZWRWYWx1ZSA9IHRoaXMuc2FuaXRpemUob2JqW2luZGV4XSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjbGVhbmVkVmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgICBjbGVhbmVkVmFsdWUgIT09ICcnICYmXG4gICAgICAgICAgT2JqZWN0LmtleXMoY2xlYW5lZFZhbHVlKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgKCFBcnJheS5pc0FycmF5KGNsZWFuZWRWYWx1ZSkgfHwgY2xlYW5lZFZhbHVlLmxlbmd0aCA+IDApXG4gICAgICAgICkge1xuICAgICAgICAgIGNsZWFuZWRPYmoucHVzaChjbGVhbmVkVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xlYW5lZE9iajtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IGNsZWFuZWRPYmogPSB0aGlzLmRhdGVTZXJ2aWNlLmZvcm1hdChvYmosICdZWVlZLU1NLUREJyk7XG4gICAgICByZXR1cm4gY2xlYW5lZE9iajtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBjbGVhbmVkT2JqOiBhbnkgPSB7fTtcblxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGNvbnN0IGNsZWFuZWRWYWx1ZSA9IHRoaXMuc2FuaXRpemUob2JqW2tleV0pO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY2xlYW5lZFZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICAgY2xlYW5lZFZhbHVlICE9PSAnJyAmJlxuICAgICAgICAgIE9iamVjdC5rZXlzKGNsZWFuZWRWYWx1ZSkubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICghQXJyYXkuaXNBcnJheShjbGVhbmVkVmFsdWUpIHx8IGNsZWFuZWRWYWx1ZS5sZW5ndGggPiAwKVxuICAgICAgICApIHtcbiAgICAgICAgICBjbGVhbmVkT2JqW2tleV0gPSBjbGVhbmVkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjbGVhbmVkT2JqO1xuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXRGb3JtTW9kZWwgPSAob2JqZWN0OiBhbnksIGtleTogc3RyaW5nKTogYW55ID0+IHtcbiAgICBpZiAob2JqZWN0KSB7XG4gICAgICBpZiAob2JqZWN0LmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBpZiAob2JqZWN0LmlkID09PSBrZXkpIHtcbiAgICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2JqZWN0LmVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3Qgb2JqID0gdGhpcy5nZXRGb3JtTW9kZWwob2JqZWN0LmVsZW1lbnRzW2ldLCBrZXkpO1xuICAgICAgICAgIGlmIChvYmopIHJldHVybiBvYmo7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChvYmplY3QuaWQgPT09IGtleSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSBnZXRBbW91bnRDdXJyZW5jeShpdGVtOiBTY2hlbWFNb2RlbCk6IFNjaGVtYU1vZGVsW10ge1xuICAgIGNvbnN0IGVsZW1lbnRzOiBTY2hlbWFNb2RlbFtdID0gW107XG4gICAgY29uc3QgY2N5ID0gc3RydWN0dXJlZENsb25lKGl0ZW0pO1xuICAgIGNvbnN0IGFtdCA9IHN0cnVjdHVyZWRDbG9uZShpdGVtKTtcblxuICAgIGNjeS5pZCA9IGAke2NjeS5pZH1fQ2N5YDtcbiAgICBjY3kubmFtZSA9ICdDY3knO1xuICAgIGNjeS5mcmFjdGlvbkRpZ2l0cyA9ICcnO1xuICAgIGNjeS50b3RhbERpZ2l0cyA9ICcnO1xuICAgIGNjeS5tYXhMZW5ndGggPSAnMyc7XG4gICAgY2N5LnhwYXRoID0gYCR7Y2N5LnhwYXRofUBDY3lgO1xuICAgIGNjeS5pc0N1cnJlbmN5ID0gZmFsc2U7XG4gICAgZWxlbWVudHMucHVzaChjY3kpO1xuXG4gICAgYW10LmlkID0gYCR7YW10LmlkfV9BbXRgO1xuICAgIGFtdC54cGF0aCA9IGAke2FtdC54cGF0aH0vQW10YDtcbiAgICBhbXQuaXNDdXJyZW5jeSA9IGZhbHNlO1xuICAgIGFtdC5wYXR0ZXJuID0gJyc7XG4gICAgZWxlbWVudHMucHVzaChhbXQpO1xuICAgIHJldHVybiBlbGVtZW50cztcbiAgfVxufVxuIl19
|
|
@@ -9,7 +9,7 @@ export class IsoErrorPipe {
|
|
|
9
9
|
let key = `iso.${value}`;
|
|
10
10
|
let tran = this.translateService.instant(key);
|
|
11
11
|
if (tran === key) {
|
|
12
|
-
key = `iso.${id
|
|
12
|
+
key = `iso.${id}`;
|
|
13
13
|
tran = this.translateService.instant(key);
|
|
14
14
|
if (tran === key) {
|
|
15
15
|
return defaultValue;
|
|
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
30
30
|
pure: false
|
|
31
31
|
}]
|
|
32
32
|
}], ctorParameters: () => [{ type: i1.TranslateService }] });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1pc28tZm9ybS9zcmMvbGliL3NoYXJlZC9waXBlL2Vycm9yLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQU81RCxNQUFNLE9BQU8sWUFBWTtJQUVyQixZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUV0RCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWEsRUFBRSxFQUFVLEVBQUMsUUFBZSxFQUFFLFlBQW9CO1FBQ3JFLElBQUksR0FBRyxHQUFHLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxJQUFJLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNmLEdBQUcsR0FBRyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNmLE9BQU8sWUFBWSxDQUFDO1lBQ3hCLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQ3JDLENBQUM7WUFDRyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7OEdBckJRLFlBQVk7NEdBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFKeEIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsT0FBTztvQkFDYixJQUFJLEVBQUUsS0FBSztpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgICBuYW1lOiAnZXJyb3InLFxyXG4gICAgcHVyZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIElzb0Vycm9yUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgaWQ6IHN0cmluZyxlcnJvcktleTpzdHJpbmcsIGRlZmF1bHRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQga2V5ID0gYGlzby4ke3ZhbHVlfWA7XHJcbiAgICAgICAgbGV0IHRyYW4gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChrZXkpO1xyXG4gICAgICAgIGlmICh0cmFuID09PSBrZXkpIHtcclxuICAgICAgICAgICAga2V5ID0gYGlzby4ke2lkfWA7XHJcbiAgICAgICAgICAgIHRyYW4gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChrZXkpO1xyXG4gICAgICAgICAgICBpZiAodHJhbiA9PT0ga2V5KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRyYW4uZXJyb3IgJiYgdHJhbi5lcnJvcltlcnJvcktleV0pXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJhbi5lcnJvcltlcnJvcktleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XHJcbiAgICB9XHJcblxyXG59Il19
|