ngx-histaff-alpha 0.9.2 → 0.9.4

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.
@@ -3,7 +3,6 @@ import { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
3
3
  import { BehaviorSubject } from 'rxjs';
4
4
  import { noneAutoClosedAlertOptions } from '../../constants/alertOptions';
5
5
  import { EnumCoreButtonVNSCode } from '../core-button-group-vns/core-button-group-vns/EnumCoreButtonVNSCode';
6
- import { EnumCorePageEditMode } from '../core-page-edit/EnumCorePageEditMode';
7
6
  import { CommonModule } from '@angular/common';
8
7
  import { CoreControlNoGridBufferComponent } from '../core-control-no-grid-buffer/core-control-no-grid-buffer/core-control-no-grid-buffer.component';
9
8
  import { TranslatePipe } from '../../app-pipes/translate.pipe';
@@ -81,46 +80,10 @@ export class CoreFormLiteComponent {
81
80
  }
82
81
  }
83
82
  ngOnInit() {
84
- if (this.appConfigService.APP_TYPE === "WEBAPP") {
85
- if (!this.disableSaveButton) {
86
- this.buttonItems = [
87
- EnumCoreButtonVNSCode.NONE_HEADER_SAVE,
88
- EnumCoreButtonVNSCode.NONE_HEADER_CANCEL,
89
- ];
90
- }
91
- else {
92
- this.buttonItems = [
93
- EnumCoreButtonVNSCode.NONE_HEADER_CANCEL,
94
- ];
95
- }
96
- }
97
- else if (this.appConfigService.APP_TYPE === "PORTAL") {
98
- if (!this.disableSaveButton) {
99
- this.buttonItems = [
100
- EnumCoreButtonVNSCode.SEND,
101
- EnumCoreButtonVNSCode.CANCEL,
102
- EnumCoreButtonVNSCode.SAVE,
103
- ];
104
- }
105
- else {
106
- this.buttonItems = [
107
- EnumCoreButtonVNSCode.SEND,
108
- EnumCoreButtonVNSCode.CANCEL,
109
- ];
110
- }
111
- }
112
- if (!!this.customFormButtonItems) {
113
- this.buttonItems = this.customFormButtonItems;
114
- }
115
- this.subscriptions.push(this.mode$.subscribe((x) => (this.isUpdateMode = x === EnumCorePageEditMode.UPDATE)));
116
- console.log(this.mode$);
117
- /* START: Check if id field is available */
118
- if (!!!this.form.get('id') && isDevMode()) {
119
- this.alertService.error(`
120
- Control "id" is mandatory. Please define one in your bussiness component. You can assign its "hidden" property to true if needed.
121
- `, noneAutoClosedAlertOptions);
122
- }
123
- /* END: Check if id field is available */
83
+ this.buttonItems = [
84
+ EnumCoreButtonVNSCode.NONE_HEADER_SAVE,
85
+ EnumCoreButtonVNSCode.NONE_HEADER_CANCEL,
86
+ ];
124
87
  if (isDevMode()) {
125
88
  /* START: Check if each field is unique */
126
89
  const fields = this.coreFormService.getAllFormBaseControlNames(this.sections);
@@ -149,14 +112,6 @@ export class CoreFormLiteComponent {
149
112
  this.onSubmit.emit(this.form?.getRawValue());
150
113
  }
151
114
  }
152
- onFormSave() {
153
- this.checkError$.next(true);
154
- if (!!this.form.valid) {
155
- this.payLoad = JSON.stringify(this.form?.getRawValue(), null, 2);
156
- this.onSave.emit(this.form?.getRawValue());
157
- }
158
- setTimeout(() => this.checkError$.next(false), 3000);
159
- }
160
115
  onCancelLocal() {
161
116
  this.onCancal.emit(null);
162
117
  }
@@ -186,27 +141,18 @@ export class CoreFormLiteComponent {
186
141
  onButtonClick(e) {
187
142
  switch (e.code) {
188
143
  case EnumCoreButtonVNSCode.NONE_HEADER_CANCEL:
189
- case EnumCoreButtonVNSCode.CANCEL:
190
144
  this.onCancelLocal();
191
145
  break;
192
146
  case EnumCoreButtonVNSCode.NONE_HEADER_SAVE:
193
- case EnumCoreButtonVNSCode.SEND:
194
- case EnumCoreButtonVNSCode.NONE_HEADER_DELETE:
195
- case EnumCoreButtonVNSCode.NONE_HEADER_LIQUIDATE_CONTRACT:
196
- case EnumCoreButtonVNSCode.ONFORMDELETE:
197
- case EnumCoreButtonVNSCode.SAVE_PASSWORD:
198
147
  this.onFormSubmit();
199
148
  break;
200
- case EnumCoreButtonVNSCode.SAVE:
201
- this.onFormSave();
202
- break;
203
149
  default:
204
150
  break;
205
151
  }
206
152
  this.buttonClick.emit(e);
207
153
  }
208
154
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreFormLiteComponent, deps: [{ token: i1.CoreControlService }, { token: i2.MultiLanguageService }, { token: i3.AlertService }, { token: i4.CoreFormService }, { token: i5.AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
209
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreFormLiteComponent, isStandalone: true, selector: "core-form-lite", inputs: { formName: "formName", submitText: "submitText", leftInputSections: "leftInputSections", leftInputSectionsFlexSize: "leftInputSectionsFlexSize", inputSections: "inputSections", mode$: "mode$", bottomTemplateRef: "bottomTemplateRef", customFormButtonItems: "customFormButtonItems", showCaptionButton: "showCaptionButton", disableSaveButton: "disableSaveButton", checkError$: "checkError$" }, outputs: { onFormCreated: "onFormCreated", onFormRefCreated: "onFormRefCreated", onSubmit: "onSubmit", onSave: "onSave", onCancal: "onCancal", buttonClick: "buttonClick" }, viewQueries: [{ propertyName: "formRef", first: true, predicate: ["formRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (!!form) {\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n <div class=\"row\">\r\n <div [class]=\"'col-md-' + (12 - (leftInputSectionsFlexSize || 0))\">\r\n\r\n <div *ngFor=\"let section of sections\" class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || !!section.hidden\">\r\n\r\n <div class=\"section-header-label\" *ngIf=\"section.caption\">\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n\r\n <div *ngFor=\"let row of section.rows\" class=\"row mb15\">\r\n <div *ngFor=\"let col of row\" [class]=\"'col-md-' + col.flexSize\"\r\n [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control-no-grid-buffer [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control-no-grid-buffer>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!!bottomTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplateRef\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <div class=\"h10\"></div>\r\n\r\n <div class=\"form-row\">\r\n\r\n <core-button-group-vns [showCaption]=\"showCaptionButton\" [forHeader]=\"false\" (buttonClick)=\"onButtonClick($event)\"\r\n [shownItems]=\"buttonItems\" class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n <div class=\"form-row\" *ngIf=\"isDevMode\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updatePayload()\">Show\r\n values</button>\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updateValidorOverview()\">Show\r\n validators</button>\r\n </div>\r\n </form>\r\n\r\n <div *ngIf=\"!!payLoad && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current values</strong><br>{{payLoad}}\r\n </div>\r\n <div *ngIf=\"!!validatorOverview && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current errors</strong><br>{{validatorOverview}}\r\n </div>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: CoreControlNoGridBufferComponent, selector: "core-control-no-grid-buffer", inputs: ["control", "form", "checkError$", "rangeLimit"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: CoreButtonGroupVnsComponent, selector: "core-button-group-vns", inputs: ["height", "instanceNumber", "forHeader", "shownItems", "showCaption"], outputs: ["buttonClick"] }] }); }
155
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreFormLiteComponent, isStandalone: true, selector: "core-form-lite", inputs: { formName: "formName", submitText: "submitText", leftInputSections: "leftInputSections", leftInputSectionsFlexSize: "leftInputSectionsFlexSize", inputSections: "inputSections", mode$: "mode$", bottomTemplateRef: "bottomTemplateRef", customFormButtonItems: "customFormButtonItems", showCaptionButton: "showCaptionButton", disableSaveButton: "disableSaveButton", checkError$: "checkError$" }, outputs: { onFormCreated: "onFormCreated", onFormRefCreated: "onFormRefCreated", onSubmit: "onSubmit", onSave: "onSave", onCancal: "onCancal", buttonClick: "buttonClick" }, viewQueries: [{ propertyName: "formRef", first: true, predicate: ["formRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (!!form) {\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n <div class=\"row\">\r\n <div [class]=\"'col-md-' + (12 - (leftInputSectionsFlexSize || 0))\">\r\n\r\n <div *ngFor=\"let section of sections\" class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || !!section.hidden\">\r\n\r\n <div class=\"section-header-label\" *ngIf=\"section.caption\">\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n\r\n <div *ngFor=\"let row of section.rows\" class=\"row mb15\">\r\n <div *ngFor=\"let col of row\" [class]=\"'col-md-' + col.flexSize\"\r\n [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control-no-grid-buffer [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control-no-grid-buffer>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!!bottomTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplateRef\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <div class=\"h10\"></div>\r\n\r\n <div class=\"form-row\">\r\n\r\n <core-button-group-vns [showCaption]=\"showCaptionButton\" [forHeader]=\"false\" (buttonClick)=\"onButtonClick($event)\"\r\n [shownItems]=\"buttonItems\" class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n <div class=\"form-row\" *ngIf=\"isDevMode\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updatePayload()\">Show\r\n values</button>\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updateValidorOverview()\">Show\r\n validators</button>\r\n </div>\r\n </form>\r\n\r\n <div *ngIf=\"!!payLoad && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current values</strong><br>{{payLoad}}\r\n </div>\r\n <div *ngIf=\"!!validatorOverview && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current errors</strong><br>{{validatorOverview}}\r\n </div>\r\n}", styles: [".core-form-container>form .section .section-header-label{display:block;height:34px;line-height:34px;margin-bottom:15px;margin-left:12px}.core-form-container>form .section .section-header-label .section-img-wrapper{position:relative}.core-form-container>form .section .section-header-label .section-img-wrapper .section-img{position:absolute;width:34px;height:34px;border-radius:50%;background-color:#d3d3d3;float:left;background-image:url(/assets/images/info.svg);background-repeat:no-repeat;background-position:center}.core-form-container>form .section .section-header-label .section-caption{padding-left:40px;font-weight:700;color:#696969}.core-form-container .row{margin-left:var(--size-layout-block-cell-spacing) 0px;margin-right:var(--size-layout-block-cell-spacing) 0px}.core-form-container .row .grid-buffer{border:dotted 2px darkgray}.core-form-container .row .button-control{display:flex;align-items:flex-end}.core-form-container .form-row{margin:var(--size-layout-block-cell-spacing) 0px;display:flex;align-items:center;justify-content:center}.core-form-container .form-row>button{cursor:pointer}.core-form-container .form-row>button:not(:first-child){margin-left:var(--size-layout-block-cell-spacing)}.core-form-container .payload-preview{display:block;width:100%;height:200px;white-space:pre-wrap;overflow-x:hidden;overflow-y:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: CoreControlNoGridBufferComponent, selector: "core-control-no-grid-buffer", inputs: ["control", "form", "checkError$", "rangeLimit"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: CoreButtonGroupVnsComponent, selector: "core-button-group-vns", inputs: ["height", "instanceNumber", "forHeader", "shownItems", "showCaption"], outputs: ["buttonClick"] }] }); }
210
156
  }
211
157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreFormLiteComponent, decorators: [{
212
158
  type: Component,
@@ -217,7 +163,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
217
163
  CoreControlNoGridBufferComponent,
218
164
  TranslatePipe,
219
165
  CoreButtonGroupVnsComponent
220
- ], template: "@if (!!form) {\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n <div class=\"row\">\r\n <div [class]=\"'col-md-' + (12 - (leftInputSectionsFlexSize || 0))\">\r\n\r\n <div *ngFor=\"let section of sections\" class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || !!section.hidden\">\r\n\r\n <div class=\"section-header-label\" *ngIf=\"section.caption\">\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n\r\n <div *ngFor=\"let row of section.rows\" class=\"row mb15\">\r\n <div *ngFor=\"let col of row\" [class]=\"'col-md-' + col.flexSize\"\r\n [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control-no-grid-buffer [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control-no-grid-buffer>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!!bottomTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplateRef\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <div class=\"h10\"></div>\r\n\r\n <div class=\"form-row\">\r\n\r\n <core-button-group-vns [showCaption]=\"showCaptionButton\" [forHeader]=\"false\" (buttonClick)=\"onButtonClick($event)\"\r\n [shownItems]=\"buttonItems\" class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n <div class=\"form-row\" *ngIf=\"isDevMode\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updatePayload()\">Show\r\n values</button>\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updateValidorOverview()\">Show\r\n validators</button>\r\n </div>\r\n </form>\r\n\r\n <div *ngIf=\"!!payLoad && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current values</strong><br>{{payLoad}}\r\n </div>\r\n <div *ngIf=\"!!validatorOverview && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current errors</strong><br>{{validatorOverview}}\r\n </div>\r\n}" }]
166
+ ], template: "@if (!!form) {\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n <div class=\"row\">\r\n <div [class]=\"'col-md-' + (12 - (leftInputSectionsFlexSize || 0))\">\r\n\r\n <div *ngFor=\"let section of sections\" class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || !!section.hidden\">\r\n\r\n <div class=\"section-header-label\" *ngIf=\"section.caption\">\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n\r\n <div *ngFor=\"let row of section.rows\" class=\"row mb15\">\r\n <div *ngFor=\"let col of row\" [class]=\"'col-md-' + col.flexSize\"\r\n [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control-no-grid-buffer [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control-no-grid-buffer>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!!bottomTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplateRef\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <div class=\"h10\"></div>\r\n\r\n <div class=\"form-row\">\r\n\r\n <core-button-group-vns [showCaption]=\"showCaptionButton\" [forHeader]=\"false\" (buttonClick)=\"onButtonClick($event)\"\r\n [shownItems]=\"buttonItems\" class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n <div class=\"form-row\" *ngIf=\"isDevMode\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updatePayload()\">Show\r\n values</button>\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updateValidorOverview()\">Show\r\n validators</button>\r\n </div>\r\n </form>\r\n\r\n <div *ngIf=\"!!payLoad && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current values</strong><br>{{payLoad}}\r\n </div>\r\n <div *ngIf=\"!!validatorOverview && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current errors</strong><br>{{validatorOverview}}\r\n </div>\r\n}", styles: [".core-form-container>form .section .section-header-label{display:block;height:34px;line-height:34px;margin-bottom:15px;margin-left:12px}.core-form-container>form .section .section-header-label .section-img-wrapper{position:relative}.core-form-container>form .section .section-header-label .section-img-wrapper .section-img{position:absolute;width:34px;height:34px;border-radius:50%;background-color:#d3d3d3;float:left;background-image:url(/assets/images/info.svg);background-repeat:no-repeat;background-position:center}.core-form-container>form .section .section-header-label .section-caption{padding-left:40px;font-weight:700;color:#696969}.core-form-container .row{margin-left:var(--size-layout-block-cell-spacing) 0px;margin-right:var(--size-layout-block-cell-spacing) 0px}.core-form-container .row .grid-buffer{border:dotted 2px darkgray}.core-form-container .row .button-control{display:flex;align-items:flex-end}.core-form-container .form-row{margin:var(--size-layout-block-cell-spacing) 0px;display:flex;align-items:center;justify-content:center}.core-form-container .form-row>button{cursor:pointer}.core-form-container .form-row>button:not(:first-child){margin-left:var(--size-layout-block-cell-spacing)}.core-form-container .payload-preview{display:block;width:100%;height:200px;white-space:pre-wrap;overflow-x:hidden;overflow-y:auto}\n"] }]
221
167
  }], ctorParameters: () => [{ type: i1.CoreControlService }, { type: i2.MultiLanguageService }, { type: i3.AlertService }, { type: i4.CoreFormService }, { type: i5.AppConfigService }], propDecorators: { formName: [{
222
168
  type: Input
223
169
  }], submitText: [{
@@ -256,4 +202,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
256
202
  type: ViewChild,
257
203
  args: ['formRef']
258
204
  }] } });
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1mb3JtLWxpdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtZm9ybS1saXRlL2NvcmUtZm9ybS1saXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWZvcm0tbGl0ZS9jb3JlLWZvcm0tbGl0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQThCLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEwsT0FBTyxFQUFFLFNBQVMsRUFBbUIsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUYsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFNN0csT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGtHQUFrRyxDQUFDO0FBQ3BKLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQzs7Ozs7Ozs7O0FBZ0I3SCxNQUFNLE9BQU8scUJBQXFCO0lBb0NoQyxZQUNVLGtCQUFzQyxFQUN0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SUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNsRSxDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDNUM7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENB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LEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUdlLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSAnYWxwaGEtZ2xvYmFsLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAtY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNdWx0aUxhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL211bHRpLWxhbmd1YWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW51bUNvcmVCdXR0b25WTlNDb2RlIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9FbnVtQ29yZUJ1dHRvblZOU0NvZGUnO1xyXG5pbXBvcnQgeyBJQ29yZUJ1dHRvblZOUyB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvSUNvcmVCdXR0b25WTlMnO1xyXG5pbXBvcnQgeyBDb3JlQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLWZvcm0vY29yZS1jb250cm9sLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlRm9ybVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLWZvcm0vY29yZS1mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJRHluYW1pY0Zvcm1FbWl0T25Gb3JtQ3JlYXRlZCB9IGZyb20gJy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0vY29yZS1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElDb3JlRm9ybVNlY3Rpb24gfSBmcm9tICcuLi9jb3JlLWZvcm0vY29yZS1mb3JtL2VudW0taW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEVudW1Db3JlUGFnZUVkaXRNb2RlIH0gZnJvbSAnLi4vY29yZS1wYWdlLWVkaXQvRW51bUNvcmVQYWdlRWRpdE1vZGUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb3JlQ29udHJvbE5vR3JpZEJ1ZmZlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtY29udHJvbC1uby1ncmlkLWJ1ZmZlci9jb3JlLWNvbnRyb2wtbm8tZ3JpZC1idWZmZXIvY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9hcHAtcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWZvcm0tbGl0ZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBDb3JlQ29udHJvbE5vR3JpZEJ1ZmZlckNvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBDb3JlQnV0dG9uR3JvdXBWbnNDb21wb25lbnRcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb3JlLWZvcm0tbGl0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2NvcmUtZm9ybS1saXRlLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZUZvcm1MaXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIGZvcm1OYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHN1Ym1pdFRleHQhOiBFbnVtVHJhbnNsYXRlS2V5O1xyXG4gIEBJbnB1dCgpIGxlZnRJbnB1dFNlY3Rpb25zITogSUNvcmVGb3JtU2VjdGlvbltdO1xyXG4gIEBJbnB1dCgpIGxlZnRJbnB1dFNlY3Rpb25zRmxleFNpemUhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaW5wdXRTZWN0aW9ucyE6IElDb3JlRm9ybVNlY3Rpb25bXTtcclxuICBASW5wdXQoKSBtb2RlJCE6IEJlaGF2aW9yU3ViamVjdDxFbnVtQ29yZVBhZ2VFZGl0TW9kZT47XHJcbiAgQElucHV0KCkgYm90dG9tVGVtcGxhdGVSZWYhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dCgpIGN1c3RvbUZvcm1CdXR0b25JdGVtcyE6IEVudW1Db3JlQnV0dG9uVk5TQ29kZVtdOyAvLyBPcHRpb25hbFxyXG4gIEBJbnB1dCgpIHNob3dDYXB0aW9uQnV0dG9uITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkaXNhYmxlU2F2ZUJ1dHRvbiE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY2hlY2tFcnJvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcbiAgQE91dHB1dCgpIG9uRm9ybUNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybUVtaXRPbkZvcm1DcmVhdGVkPigpO1xyXG4gIEBPdXRwdXQoKSBvbkZvcm1SZWZDcmVhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxFbGVtZW50UmVmPGFueT4+KCk7XHJcbiAgQE91dHB1dCgpIG9uU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQ2FuY2FsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvcmVCdXR0b25WTlM+KCk7XHJcblxyXG5cclxuICBAVmlld0NoaWxkKCdmb3JtUmVmJykgZm9ybVJlZiE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGJ1dHRvbkl0ZW1zITogRW51bUNvcmVCdXR0b25WTlNDb2RlW107XHJcblxyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc2VjdGlvbnMhOiBJQ29yZUZvcm1TZWN0aW9uW107XHJcbiAgbGFuZyE6IHN0cmluZztcclxuICBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBwYXlMb2FkID0gJyc7XHJcbiAgdmFsaWRhdG9yT3ZlcnZpZXc6IGFueTtcclxuICBpc0Rldk1vZGUhOiBib29sZWFuO1xyXG4gIGlzVXBkYXRlTW9kZSE6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb3JlQ29udHJvbFNlcnZpY2U6IENvcmVDb250cm9sU2VydmljZSxcclxuICAgIHByaXZhdGUgbXVsdGlMYW5ndWFnZVNlcnZpY2U6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZUZvcm1TZXJ2aWNlOiBDb3JlRm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwcENvbmZpZ1NlcnZpY2U6IEFwcENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaXNEZXZNb2RlID0gaXNEZXZNb2RlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNlY3Rpb25zKG5ld1NlY3Rpb25zOiBJQ29yZUZvcm1TZWN0aW9uW10pOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLnNlY3Rpb25zLm1hcCgoc2VjdGlvbiwgc2VjdGlvbkluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld1NlY3Rpb24gPSBuZXdTZWN0aW9uc1tzZWN0aW9uSW5kZXhdO1xyXG4gICAgICBzZWN0aW9uLnJvd3MubWFwKChyb3csIHJvd0luZGV4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3Um93ID0gbmV3U2VjdGlvbi5yb3dzW3Jvd0luZGV4XTtcclxuICAgICAgICByb3cubWFwKChjb250cm9sLCBjb250cm9sSW5kZXgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG5ld0NvbnRyb2wgPSBuZXdSb3dbY29udHJvbEluZGV4XTtcclxuXHJcbiAgICAgICAgICAvKiBUSEUgT05MWSBQUk9QIFRPIEJFIFVEQVRFRCBJUyAnaGlkZGVuJywgVEhFIE9USEVSUyBTSE9VTEQgQkUgTUFOSVBVTEFURUQgVEhST1VHSCB0aGlzLmZvcm0uZ2V0KFlPVVJfQ09OVFJPTF9OQU1FKS4uLiAqL1xyXG4gICAgICAgICAgY29udHJvbC5oaWRkZW4gPSBuZXdDb250cm9sPy5oaWRkZW47XHJcbiAgICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8qICNyZWdpb24gT2N0IHRoZSAxMXRoIDIwMjMgKi9cclxuICAgICAgLyogU29tZSBzZWN0aW9ucyB3YXMgcG9zaWJseSBoYXZlIHJlbmRlck9mZj10cnVlIGZyb20gcHJldmlvdXMgc3RhdGUgYW5kIHRoZWlyIGNvbnRyb2xzIG11c3QgYmUgY3JlYXRlZC9yZW1vdmUgKi9cclxuICAgICAgLypcclxuICAgICAgQlVUIFRISVMgVEFTSyBJUyBIQVJEIFNPIEZBUlxyXG4gICAgICAqL1xyXG4gICAgICAvKiAjZW5kcmVnaW9uIE9jdCB0aGUgMTF0aCAyMDIzICovXHJcblxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2lucHV0U2VjdGlvbnMnXSkge1xyXG4gICAgICBsZXQgbmV3U2VjdGlvbnM6IElDb3JlRm9ybVNlY3Rpb25bXSA9XHJcbiAgICAgICAgY2hhbmdlc1snaW5wdXRTZWN0aW9ucyddLmN1cnJlbnRWYWx1ZTtcclxuXHJcbiAgICAgIGlmICghISF0aGlzLmZvcm0pIHtcclxuICAgICAgICB0aGlzLnNlY3Rpb25zID0gbmV3U2VjdGlvbnM7XHJcblxyXG4gICAgICAgIGxldCBsZWZ0R3JvdXA7XHJcbiAgICAgICAgbGV0IGZvcm06IEZvcm1Hcm91cDxhbnk+O1xyXG5cclxuICAgICAgICBjb25zdCBtYWluR3JvdXAgPSB0aGlzLmNvcmVDb250cm9sU2VydmljZS50b0dyb3VwKHRoaXMuc2VjdGlvbnMpO1xyXG5cclxuICAgICAgICBpZiAoISF0aGlzLmxlZnRJbnB1dFNlY3Rpb25zKSB7XHJcbiAgICAgICAgICBsZWZ0R3JvdXAgPSB0aGlzLmNvcmVDb250cm9sU2VydmljZS50b0dyb3VwKHRoaXMubGVmdElucHV0U2VjdGlvbnMpO1xyXG4gICAgICAgICAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoeyAuLi5sZWZ0R3JvdXAsIC4uLm1haW5Hcm91cCB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9ybSA9IG5ldyBGb3JtR3JvdXAobWFpbkdyb3VwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybSA9IGZvcm07XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2VjdGlvbnMobmV3U2VjdGlvbnMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm9uRm9ybUNyZWF0ZWQuZW1pdCh7XHJcbiAgICAgICAgZm9ybU5hbWU6IHRoaXMuZm9ybU5hbWUsXHJcbiAgICAgICAgZm9ybUdyb3VwOiB0aGlzLmZvcm0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgaWYgKHRoaXMuYXBwQ29uZmlnU2VydmljZS5BUFBfVFlQRSA9PT0gXCJXRUJBUFBcIikge1xyXG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZVNhdmVCdXR0b24pIHtcclxuICAgICAgICB0aGlzLmJ1dHRvbkl0ZW1zID0gW1xyXG4gICAgICAgICAgRW51bUNvcmVCdXR0b25WTlNDb2RlLk5PTkVfSEVBREVSX1NBVkUsXHJcbiAgICAgICAgICBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuTk9ORV9IRUFERVJfQ0FOQ0VMLFxyXG4gICAgICAgIF1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmJ1dHRvbkl0ZW1zID0gW1xyXG4gICAgICAgICAgRW51bUNvcmVCdXR0b25WTlNDb2RlLk5PTkVfSEVBREVSX0NBTkNFTCxcclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5hcHBDb25maWdTZXJ2aWNlLkFQUF9UWVBFID09PSBcIlBPUlRBTFwiKSB7XHJcbiAgICAgIGlmICghdGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbikge1xyXG4gICAgICAgIHRoaXMuYnV0dG9uSXRlbXMgPSBbXHJcbiAgICAgICAgICBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuU0VORCxcclxuICAgICAgICAgIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5DQU5DRUwsXHJcbiAgICAgICAgICBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuU0FWRSxcclxuICAgICAgICBdXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5idXR0b25JdGVtcyA9IFtcclxuICAgICAgICAgIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5TRU5ELFxyXG4gICAgICAgICAgRW51bUNvcmVCdXR0b25WTlNDb2RlLkNBTkNFTCxcclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoISF0aGlzLmN1c3RvbUZvcm1CdXR0b25JdGVtcykge1xyXG4gICAgICB0aGlzLmJ1dHRvbkl0ZW1zID0gdGhpcy5jdXN0b21Gb3JtQnV0dG9uSXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubW9kZSQuc3Vic2NyaWJlKFxyXG4gICAgICAgICh4KSA9PiAodGhpcy5pc1VwZGF0ZU1vZGUgPSB4ID09PSBFbnVtQ29yZVBhZ2VFZGl0TW9kZS5VUERBVEUpXHJcbiAgICAgIClcclxuICAgICk7XHJcblxyXG4gICAgY29uc29sZS5sb2codGhpcy5tb2RlJCk7XHJcblxyXG4gICAgLyogU1RBUlQ6IENoZWNrIGlmIGlkIGZpZWxkIGlzIGF2YWlsYWJsZSAqL1xyXG4gICAgaWYgKCEhIXRoaXMuZm9ybS5nZXQoJ2lkJykgJiYgaXNEZXZNb2RlKCkpIHtcclxuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgYFxyXG4gICAgICAgICAgICBDb250cm9sIFwiaWRcIiBpcyBtYW5kYXRvcnkuIFBsZWFzZSBkZWZpbmUgb25lIGluIHlvdXIgYnVzc2luZXNzIGNvbXBvbmVudC4gWW91IGNhbiBhc3NpZ24gaXRzIFwiaGlkZGVuXCIgcHJvcGVydHkgdG8gdHJ1ZSBpZiBuZWVkZWQuXHJcbiAgICAgICAgICBgLFxyXG4gICAgICAgIG5vbmVBdXRvQ2xvc2VkQWxlcnRPcHRpb25zXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAvKiBFTkQ6IENoZWNrIGlmIGlkIGZpZWxkIGlzIGF2YWlsYWJsZSAqL1xyXG5cclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAvKiBTVEFSVDogQ2hlY2sgaWYgZWFjaCBmaWVsZCBpcyB1bmlxdWUgKi9cclxuXHJcbiAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuY29yZUZvcm1TZXJ2aWNlLmdldEFsbEZvcm1CYXNlQ29udHJvbE5hbWVzKFxyXG4gICAgICAgIHRoaXMuc2VjdGlvbnNcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGZpZWxkcy5yZWR1Y2UoKHAsIGMpID0+IHtcclxuICAgICAgICBpZiAoYyA9PT0gJycpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICBgRm9ybSBjb250cm9sIG5hbWUgbXVzdCBiZSBkZWZpbmRlZCwgJyR7Y30nIGlzIGludmFsaWQgZm9ybSBjb250cm9sIG5hbWUhISFgLFxyXG4gICAgICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHAgPT09IGMpIHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgYER1cGxpY2F0ZSBmb3JtIGNvbnRyb2wgbmFtZTogJyR7Y30nLiBDb25zaWRlciB0byBwcmVkZWZpbmUgb25lIE9OTFkhISEuYCxcclxuICAgICAgICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9uc1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYztcclxuICAgICAgfSk7XHJcbiAgICAgIC8qIEVORDogQ2hlY2sgaWYgZWFjaCBmaWVsZCBpcyB1bmlxdWUgKi9cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tdWx0aUxhbmd1YWdlU2VydmljZS5sYW5nJC5zdWJzY3JpYmUoKHgpID0+ICh0aGlzLmxhbmcgPSB4KSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRm9ybVJlZkNyZWF0ZWQuZW1pdCh0aGlzLmZvcm1SZWYpO1xyXG4gIH1cclxuXHJcbiAgb25Gb3JtU3VibWl0KCkge1xyXG4gICAgdGhpcy5jaGVja0Vycm9yJC5uZXh0KHRydWUpO1xyXG4gICAgaWYgKCEhdGhpcy5mb3JtLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMucGF5TG9hZCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybT8uZ2V0UmF3VmFsdWUoKSwgbnVsbCwgMik7XHJcbiAgICAgIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzLmZvcm0/LmdldFJhd1ZhbHVlKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25Gb3JtU2F2ZSgpIHtcclxuICAgIHRoaXMuY2hlY2tFcnJvciQubmV4dCh0cnVlKTtcclxuICAgIGlmICghIXRoaXMuZm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLnBheUxvYWQgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0/LmdldFJhd1ZhbHVlKCksIG51bGwsIDIpO1xyXG4gICAgICB0aGlzLm9uU2F2ZS5lbWl0KHRoaXMuZm9ybT8uZ2V0UmF3VmFsdWUoKSk7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tFcnJvciQubmV4dChmYWxzZSksIDMwMDApO1xyXG4gIH1cclxuXHJcbiAgb25DYW5jZWxMb2NhbCgpIHtcclxuICAgIHRoaXMub25DYW5jYWwuZW1pdChudWxsKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVBheWxvYWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBheUxvYWQgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0/LmdldFJhd1ZhbHVlKCksIG51bGwsIDIpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVmFsaWRvck92ZXJ2aWV3KCk6IHZvaWQge1xyXG4gICAgY29uc3QgcmVzdWx0OiB7IGtleTogc3RyaW5nOyBlcnJvcnM6IGFueVtdIH1bXSA9IFtdO1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpITtcclxuICAgICAgY29uc3QgZXJyb3JzOiBhbnlbXSA9IFtdO1xyXG4gICAgICBpZiAoISFjb250cm9sLmludmFsaWQpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycyEpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgZXJyb3JzLnB1c2goa2V5KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXN1bHQucHVzaCh7XHJcbiAgICAgICAga2V5LFxyXG4gICAgICAgIGVycm9ycyxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudmFsaWRhdG9yT3ZlcnZpZXcgPSBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKCh4KSA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIG9uQnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpOiB2b2lkIHtcclxuXHJcbiAgICBzd2l0Y2ggKGUuY29kZSkge1xyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5OT05FX0hFQURFUl9DQU5DRUw6XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLkNBTkNFTDpcclxuICAgICAgICB0aGlzLm9uQ2FuY2VsTG9jYWwoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuTk9ORV9IRUFERVJfU0FWRTpcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuU0VORDpcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuTk9ORV9IRUFERVJfREVMRVRFOlxyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5OT05FX0hFQURFUl9MSVFVSURBVEVfQ09OVFJBQ1Q6XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLk9ORk9STURFTEVURTpcclxuICAgICAgY2FzZSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuU0FWRV9QQVNTV09SRDpcclxuICAgICAgICB0aGlzLm9uRm9ybVN1Ym1pdCgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5TQVZFOlxyXG4gICAgICAgIHRoaXMub25Gb3JtU2F2ZSgpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5idXR0b25DbGljay5lbWl0KGUpO1xyXG4gIH1cclxufVxyXG4iLCJAaWYgKCEhZm9ybSkge1xyXG4gICAgPGZvcm0gI2Zvcm1SZWYgKG5nU3VibWl0KT1cIm9uRm9ybVN1Ym1pdCgpXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IFtjbGFzc109XCInY29sLW1kLScgKyAoMTIgLSAobGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZSB8fCAwKSlcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHNlY3Rpb25zXCIgY2xhc3M9XCJzZWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZC1ub25lXT1cIighIWlzVXBkYXRlTW9kZSAmJiBzZWN0aW9uLmFkZE1vZGVPbmx5KSB8fCAoISEhaXNVcGRhdGVNb2RlICYmIHNlY3Rpb24udXBkYXRlTW9kZU9ubHkpIHx8ICEhc2VjdGlvbi5oaWRkZW5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyLWxhYmVsXCIgKm5nSWY9XCJzZWN0aW9uLmNhcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taW1nLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWltZ1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tY2FwdGlvblwiPnt7IHNlY3Rpb24uY2FwdGlvbiB8IHRyYW5zbGF0ZTogbGFuZyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb3cgb2Ygc2VjdGlvbi5yb3dzXCIgY2xhc3M9XCJyb3cgbWIxNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb2wgb2Ygcm93XCIgW2NsYXNzXT1cIidjb2wtbWQtJyArIGNvbC5mbGV4U2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZ3JpZC1idWZmZXJdPVwiY29sLmNvbnRyb2xUeXBlPT09J0dSSURCVUZGRVInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5idXR0b24tY29udHJvbF09XCJjb2wuY29udHJvbFR5cGU9PT0nQlVUVE9OJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvcmUtY29udHJvbC1uby1ncmlkLWJ1ZmZlciBbY29udHJvbF09XCJjb2xcIiBbZm9ybV09XCJmb3JtXCIgW2NoZWNrRXJyb3IkXT1cImNoZWNrRXJyb3IkXCI+PC9jb3JlLWNvbnRyb2wtbm8tZ3JpZC1idWZmZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEhYm90dG9tVGVtcGxhdGVSZWZcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJvdHRvbVRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaDEwXCI+PC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxyXG5cclxuICAgICAgICAgICAgPGNvcmUtYnV0dG9uLWdyb3VwLXZucyBbc2hvd0NhcHRpb25dPVwic2hvd0NhcHRpb25CdXR0b25cIiBbZm9ySGVhZGVyXT1cImZhbHNlXCIgKGJ1dHRvbkNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd25JdGVtc109XCJidXR0b25JdGVtc1wiIGNsYXNzPVwiYnV0dG9uR3JvdXBDdXN0b21cIj48L2NvcmUtYnV0dG9uLWdyb3VwLXZucz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIiAqbmdJZj1cImlzRGV2TW9kZVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IHRleHRcIiAoY2xpY2spPVwidXBkYXRlUGF5bG9hZCgpXCI+U2hvd1xyXG4gICAgICAgICAgICAgICAgdmFsdWVzPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgdGV4dFwiIChjbGljayk9XCJ1cGRhdGVWYWxpZG9yT3ZlcnZpZXcoKVwiPlNob3dcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnM8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiISFwYXlMb2FkICYmIGlzRGV2TW9kZVwiIGNsYXNzPVwiZm9ybS1yb3cgcGF5bG9hZC1wcmV2aWV3XCI+XHJcbiAgICAgICAgPHN0cm9uZz5DdXJyZW50IHZhbHVlczwvc3Ryb25nPjxicj57e3BheUxvYWR9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiISF2YWxpZGF0b3JPdmVydmlldyAmJiBpc0Rldk1vZGVcIiBjbGFzcz1cImZvcm0tcm93IHBheWxvYWQtcHJldmlld1wiPlxyXG4gICAgICAgIDxzdHJvbmc+Q3VycmVudCBlcnJvcnM8L3N0cm9uZz48YnI+e3t2YWxpZGF0b3JPdmVydmlld319XHJcbiAgICA8L2Rpdj5cclxufSJdfQ==
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1mb3JtLWxpdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtZm9ybS1saXRlL2NvcmUtZm9ybS1saXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWZvcm0tbGl0ZS9jb3JlLWZvcm0tbGl0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQThCLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEwsT0FBTyxFQUFFLFNBQVMsRUFBbUIsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUYsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0VBQXNFLENBQUM7QUFPN0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGtHQUFrRyxDQUFDO0FBQ3BKLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQzs7Ozs7Ozs7O0FBZ0I3SCxNQUFNLE9BQU8scUJBQXFCO0lBb0NoQyxZQUNVLGtCQUFzQyxFQUN0QyxvQkFBMEMsRUFDMUMsWUFBMEIsRUFDMUIsZUFBZ0MsRUFDaEMsZ0JBQWtD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c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLHlCQUF5QjtzQkFBakMsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBR2UsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEFic3RyYWN0Q29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tICdhbHBoYS1nbG9iYWwtY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC1jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUJ1dHRvblZOU0NvZGUgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0VudW1Db3JlQnV0dG9uVk5TQ29kZSc7XHJcbmltcG9ydCB7IElDb3JlQnV0dG9uVk5TIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9JQ29yZUJ1dHRvblZOUyc7XHJcbmltcG9ydCB7IENvcmVDb250cm9sU2VydmljZSB9IGZyb20gJy4uL2NvcmUtZm9ybS9jb3JlLWNvbnRyb2wuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVGb3JtU2VydmljZSB9IGZyb20gJy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0uc2VydmljZSc7XHJcbmltcG9ydCB7IElEeW5hbWljRm9ybUVtaXRPbkZvcm1DcmVhdGVkIH0gZnJvbSAnLi4vY29yZS1mb3JtL2NvcmUtZm9ybS9jb3JlLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcmVGb3JtU2VjdGlvbiB9IGZyb20gJy4uL2NvcmUtZm9ybS9jb3JlLWZvcm0vZW51bS1pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRW51bUNvcmVQYWdlRWRpdE1vZGUgfSBmcm9tICcuLi9jb3JlLXBhZ2UtZWRpdC9FbnVtQ29yZVBhZ2VFZGl0TW9kZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvcmVDb250cm9sTm9HcmlkQnVmZmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyL2NvcmUtY29udHJvbC1uby1ncmlkLWJ1ZmZlci9jb3JlLWNvbnRyb2wtbm8tZ3JpZC1idWZmZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtZm9ybS1saXRlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIENvcmVDb250cm9sTm9HcmlkQnVmZmVyQ29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtZm9ybS1saXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY29yZS1mb3JtLWxpdGUuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb3JlRm9ybUxpdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgZm9ybU5hbWUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc3VibWl0VGV4dCE6IEVudW1UcmFuc2xhdGVLZXk7XHJcbiAgQElucHV0KCkgbGVmdElucHV0U2VjdGlvbnMhOiBJQ29yZUZvcm1TZWN0aW9uW107XHJcbiAgQElucHV0KCkgbGVmdElucHV0U2VjdGlvbnNGbGV4U2l6ZSE6IG51bWJlcjtcclxuICBASW5wdXQoKSBpbnB1dFNlY3Rpb25zITogSUNvcmVGb3JtU2VjdGlvbltdO1xyXG4gIEBJbnB1dCgpIG1vZGUkITogQmVoYXZpb3JTdWJqZWN0PEVudW1Db3JlUGFnZUVkaXRNb2RlPjtcclxuICBASW5wdXQoKSBib3R0b21UZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgY3VzdG9tRm9ybUJ1dHRvbkl0ZW1zITogRW51bUNvcmVCdXR0b25WTlNDb2RlW107IC8vIE9wdGlvbmFsXHJcbiAgQElucHV0KCkgc2hvd0NhcHRpb25CdXR0b24hOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVTYXZlQnV0dG9uITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBjaGVja0Vycm9yJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBAT3V0cHV0KCkgb25Gb3JtQ3JlYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtRW1pdE9uRm9ybUNyZWF0ZWQ+KCk7XHJcbiAgQE91dHB1dCgpIG9uRm9ybVJlZkNyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEVsZW1lbnRSZWY8YW55Pj4oKTtcclxuICBAT3V0cHV0KCkgb25TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25DYW5jYWwgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJ1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxJQ29yZUJ1dHRvblZOUz4oKTtcclxuXHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1SZWYnKSBmb3JtUmVmITogRWxlbWVudFJlZjtcclxuXHJcbiAgYnV0dG9uSXRlbXMhOiBFbnVtQ29yZUJ1dHRvblZOU0NvZGVbXTtcclxuXHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBzZWN0aW9ucyE6IElDb3JlRm9ybVNlY3Rpb25bXTtcclxuICBsYW5nITogc3RyaW5nO1xyXG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHBheUxvYWQgPSAnJztcclxuICB2YWxpZGF0b3JPdmVydmlldzogYW55O1xyXG4gIGlzRGV2TW9kZSE6IGJvb2xlYW47XHJcbiAgaXNVcGRhdGVNb2RlITogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvcmVDb250cm9sU2VydmljZTogQ29yZUNvbnRyb2xTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtdWx0aUxhbmd1YWdlU2VydmljZTogTXVsdGlMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlRm9ybVNlcnZpY2U6IENvcmVGb3JtU2VydmljZSxcclxuICAgIHByaXZhdGUgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5pc0Rldk1vZGUgPSBpc0Rldk1vZGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlU2VjdGlvbnMobmV3U2VjdGlvbnM6IElDb3JlRm9ybVNlY3Rpb25bXSk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2VjdGlvbnMubWFwKChzZWN0aW9uLCBzZWN0aW9uSW5kZXgpID0+IHtcclxuICAgICAgY29uc3QgbmV3U2VjdGlvbiA9IG5ld1NlY3Rpb25zW3NlY3Rpb25JbmRleF07XHJcbiAgICAgIHNlY3Rpb24ucm93cy5tYXAoKHJvdywgcm93SW5kZXgpID0+IHtcclxuICAgICAgICBjb25zdCBuZXdSb3cgPSBuZXdTZWN0aW9uLnJvd3Nbcm93SW5kZXhdO1xyXG4gICAgICAgIHJvdy5tYXAoKGNvbnRyb2wsIGNvbnRyb2xJbmRleCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbmV3Q29udHJvbCA9IG5ld1Jvd1tjb250cm9sSW5kZXhdO1xyXG5cclxuICAgICAgICAgIC8qIFRIRSBPTkxZIFBST1AgVE8gQkUgVURBVEVEIElTICdoaWRkZW4nLCBUSEUgT1RIRVJTIFNIT1VMRCBCRSBNQU5JUFVMQVRFRCBUSFJPVUdIIHRoaXMuZm9ybS5nZXQoWU9VUl9DT05UUk9MX05BTUUpLi4uICovXHJcbiAgICAgICAgICBjb250cm9sLmhpZGRlbiA9IG5ld0NvbnRyb2w/LmhpZGRlbjtcclxuICAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLyogI3JlZ2lvbiBPY3QgdGhlIDExdGggMjAyMyAqL1xyXG4gICAgICAvKiBTb21lIHNlY3Rpb25zIHdhcyBwb3NpYmx5IGhhdmUgcmVuZGVyT2ZmPXRydWUgZnJvbSBwcmV2aW91cyBzdGF0ZSBhbmQgdGhlaXIgY29udHJvbHMgbXVzdCBiZSBjcmVhdGVkL3JlbW92ZSAqL1xyXG4gICAgICAvKlxyXG4gICAgICBCVVQgVEhJUyBUQVNLIElTIEhBUkQgU08gRkFSXHJcbiAgICAgICovXHJcbiAgICAgIC8qICNlbmRyZWdpb24gT2N0IHRoZSAxMXRoIDIwMjMgKi9cclxuXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snaW5wdXRTZWN0aW9ucyddKSB7XHJcbiAgICAgIGxldCBuZXdTZWN0aW9uczogSUNvcmVGb3JtU2VjdGlvbltdID1cclxuICAgICAgICBjaGFuZ2VzWydpbnB1dFNlY3Rpb25zJ10uY3VycmVudFZhbHVlO1xyXG5cclxuICAgICAgaWYgKCEhIXRoaXMuZm9ybSkge1xyXG4gICAgICAgIHRoaXMuc2VjdGlvbnMgPSBuZXdTZWN0aW9ucztcclxuXHJcbiAgICAgICAgbGV0IGxlZnRHcm91cDtcclxuICAgICAgICBsZXQgZm9ybTogRm9ybUdyb3VwPGFueT47XHJcblxyXG4gICAgICAgIGNvbnN0IG1haW5Hcm91cCA9IHRoaXMuY29yZUNvbnRyb2xTZXJ2aWNlLnRvR3JvdXAodGhpcy5zZWN0aW9ucyk7XHJcblxyXG4gICAgICAgIGlmICghIXRoaXMubGVmdElucHV0U2VjdGlvbnMpIHtcclxuICAgICAgICAgIGxlZnRHcm91cCA9IHRoaXMuY29yZUNvbnRyb2xTZXJ2aWNlLnRvR3JvdXAodGhpcy5sZWZ0SW5wdXRTZWN0aW9ucyk7XHJcbiAgICAgICAgICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7IC4uLmxlZnRHcm91cCwgLi4ubWFpbkdyb3VwIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3JtID0gbmV3IEZvcm1Hcm91cChtYWluR3JvdXApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5mb3JtID0gZm9ybTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVTZWN0aW9ucyhuZXdTZWN0aW9ucyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMub25Gb3JtQ3JlYXRlZC5lbWl0KHtcclxuICAgICAgICBmb3JtTmFtZTogdGhpcy5mb3JtTmFtZSxcclxuICAgICAgICBmb3JtR3JvdXA6IHRoaXMuZm9ybSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYnV0dG9uSXRlbXMgPSBbXHJcbiAgICAgIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5OT05FX0hFQURFUl9TQVZFLFxyXG4gICAgICBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuTk9ORV9IRUFERVJfQ0FOQ0VMLFxyXG4gICAgXVxyXG5cclxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xyXG4gICAgICAvKiBTVEFSVDogQ2hlY2sgaWYgZWFjaCBmaWVsZCBpcyB1bmlxdWUgKi9cclxuXHJcbiAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuY29yZUZvcm1TZXJ2aWNlLmdldEFsbEZvcm1CYXNlQ29udHJvbE5hbWVzKFxyXG4gICAgICAgIHRoaXMuc2VjdGlvbnNcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGZpZWxkcy5yZWR1Y2UoKHAsIGMpID0+IHtcclxuICAgICAgICBpZiAoYyA9PT0gJycpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICBgRm9ybSBjb250cm9sIG5hbWUgbXVzdCBiZSBkZWZpbmRlZCwgJyR7Y30nIGlzIGludmFsaWQgZm9ybSBjb250cm9sIG5hbWUhISFgLFxyXG4gICAgICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9uc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHAgPT09IGMpIHtcclxuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgYER1cGxpY2F0ZSBmb3JtIGNvbnRyb2wgbmFtZTogJyR7Y30nLiBDb25zaWRlciB0byBwcmVkZWZpbmUgb25lIE9OTFkhISEuYCxcclxuICAgICAgICAgICAgICBub25lQXV0b0Nsb3NlZEFsZXJ0T3B0aW9uc1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYztcclxuICAgICAgfSk7XHJcbiAgICAgIC8qIEVORDogQ2hlY2sgaWYgZWFjaCBmaWVsZCBpcyB1bmlxdWUgKi9cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tdWx0aUxhbmd1YWdlU2VydmljZS5sYW5nJC5zdWJzY3JpYmUoKHgpID0+ICh0aGlzLmxhbmcgPSB4KSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRm9ybVJlZkNyZWF0ZWQuZW1pdCh0aGlzLmZvcm1SZWYpO1xyXG4gIH1cclxuXHJcbiAgb25Gb3JtU3VibWl0KCkge1xyXG4gICAgdGhpcy5jaGVja0Vycm9yJC5uZXh0KHRydWUpO1xyXG4gICAgaWYgKCEhdGhpcy5mb3JtLnZhbGlkKSB7XHJcbiAgICAgIHRoaXMucGF5TG9hZCA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybT8uZ2V0UmF3VmFsdWUoKSwgbnVsbCwgMik7XHJcbiAgICAgIHRoaXMub25TdWJtaXQuZW1pdCh0aGlzLmZvcm0/LmdldFJhd1ZhbHVlKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DYW5jZWxMb2NhbCgpIHtcclxuICAgIHRoaXMub25DYW5jYWwuZW1pdChudWxsKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVBheWxvYWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBheUxvYWQgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm0/LmdldFJhd1ZhbHVlKCksIG51bGwsIDIpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVmFsaWRvck92ZXJ2aWV3KCk6IHZvaWQge1xyXG4gICAgY29uc3QgcmVzdWx0OiB7IGtleTogc3RyaW5nOyBlcnJvcnM6IGFueVtdIH1bXSA9IFtdO1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpITtcclxuICAgICAgY29uc3QgZXJyb3JzOiBhbnlbXSA9IFtdO1xyXG4gICAgICBpZiAoISFjb250cm9sLmludmFsaWQpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycyEpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgZXJyb3JzLnB1c2goa2V5KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXN1bHQucHVzaCh7XHJcbiAgICAgICAga2V5LFxyXG4gICAgICAgIGVycm9ycyxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudmFsaWRhdG9yT3ZlcnZpZXcgPSBKU09OLnN0cmluZ2lmeShyZXN1bHQsIG51bGwsIDIpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKCh4KSA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIG9uQnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpOiB2b2lkIHtcclxuXHJcbiAgICBzd2l0Y2ggKGUuY29kZSkge1xyXG4gICAgICBjYXNlIEVudW1Db3JlQnV0dG9uVk5TQ29kZS5OT05FX0hFQURFUl9DQU5DRUw6XHJcbiAgICAgICAgdGhpcy5vbkNhbmNlbExvY2FsKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRW51bUNvcmVCdXR0b25WTlNDb2RlLk5PTkVfSEVBREVSX1NBVkU6XHJcbiAgICAgICAgdGhpcy5vbkZvcm1TdWJtaXQoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdChlKTtcclxuICB9XHJcbn1cclxuIiwiQGlmICghIWZvcm0pIHtcclxuICAgIDxmb3JtICNmb3JtUmVmIChuZ1N1Ym1pdCk9XCJvbkZvcm1TdWJtaXQoKVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwiJ2NvbC1tZC0nICsgKDEyIC0gKGxlZnRJbnB1dFNlY3Rpb25zRmxleFNpemUgfHwgMCkpXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBzZWN0aW9uc1wiIGNsYXNzPVwic2VjdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmQtbm9uZV09XCIoISFpc1VwZGF0ZU1vZGUgJiYgc2VjdGlvbi5hZGRNb2RlT25seSkgfHwgKCEhIWlzVXBkYXRlTW9kZSAmJiBzZWN0aW9uLnVwZGF0ZU1vZGVPbmx5KSB8fCAhIXNlY3Rpb24uaGlkZGVuXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlci1sYWJlbFwiICpuZ0lmPVwic2VjdGlvbi5jYXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWltZy13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1pbWdcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWNhcHRpb25cIj57eyBzZWN0aW9uLmNhcHRpb24gfCB0cmFuc2xhdGU6IGxhbmcgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIHNlY3Rpb24ucm93c1wiIGNsYXNzPVwicm93IG1iMTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29sIG9mIHJvd1wiIFtjbGFzc109XCInY29sLW1kLScgKyBjb2wuZmxleFNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmdyaWQtYnVmZmVyXT1cImNvbC5jb250cm9sVHlwZT09PSdHUklEQlVGRkVSJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYnV0dG9uLWNvbnRyb2xdPVwiY29sLmNvbnRyb2xUeXBlPT09J0JVVFRPTidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb3JlLWNvbnRyb2wtbm8tZ3JpZC1idWZmZXIgW2NvbnRyb2xdPVwiY29sXCIgW2Zvcm1dPVwiZm9ybVwiIFtjaGVja0Vycm9yJF09XCJjaGVja0Vycm9yJFwiPjwvY29yZS1jb250cm9sLW5vLWdyaWQtYnVmZmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhIWJvdHRvbVRlbXBsYXRlUmVmXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib3R0b21UZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImgxMFwiPjwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuXHJcbiAgICAgICAgICAgIDxjb3JlLWJ1dHRvbi1ncm91cC12bnMgW3Nob3dDYXB0aW9uXT1cInNob3dDYXB0aW9uQnV0dG9uXCIgW2ZvckhlYWRlcl09XCJmYWxzZVwiIChidXR0b25DbGljayk9XCJvbkJ1dHRvbkNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3duSXRlbXNdPVwiYnV0dG9uSXRlbXNcIiBjbGFzcz1cImJ1dHRvbkdyb3VwQ3VzdG9tXCI+PC9jb3JlLWJ1dHRvbi1ncm91cC12bnM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCIgKm5nSWY9XCJpc0Rldk1vZGVcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSB0ZXh0XCIgKGNsaWNrKT1cInVwZGF0ZVBheWxvYWQoKVwiPlNob3dcclxuICAgICAgICAgICAgICAgIHZhbHVlczwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IHRleHRcIiAoY2xpY2spPVwidXBkYXRlVmFsaWRvck92ZXJ2aWV3KClcIj5TaG93XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiEhcGF5TG9hZCAmJiBpc0Rldk1vZGVcIiBjbGFzcz1cImZvcm0tcm93IHBheWxvYWQtcHJldmlld1wiPlxyXG4gICAgICAgIDxzdHJvbmc+Q3VycmVudCB2YWx1ZXM8L3N0cm9uZz48YnI+e3twYXlMb2FkfX1cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiEhdmFsaWRhdG9yT3ZlcnZpZXcgJiYgaXNEZXZNb2RlXCIgY2xhc3M9XCJmb3JtLXJvdyBwYXlsb2FkLXByZXZpZXdcIj5cclxuICAgICAgICA8c3Ryb25nPkN1cnJlbnQgZXJyb3JzPC9zdHJvbmc+PGJyPnt7dmFsaWRhdG9yT3ZlcnZpZXd9fVxyXG4gICAgPC9kaXY+XHJcbn0iXX0=
@@ -12679,46 +12679,10 @@ class CoreFormLiteComponent {
12679
12679
  }
12680
12680
  }
12681
12681
  ngOnInit() {
12682
- if (this.appConfigService.APP_TYPE === "WEBAPP") {
12683
- if (!this.disableSaveButton) {
12684
- this.buttonItems = [
12685
- EnumCoreButtonVNSCode.NONE_HEADER_SAVE,
12686
- EnumCoreButtonVNSCode.NONE_HEADER_CANCEL,
12687
- ];
12688
- }
12689
- else {
12690
- this.buttonItems = [
12691
- EnumCoreButtonVNSCode.NONE_HEADER_CANCEL,
12692
- ];
12693
- }
12694
- }
12695
- else if (this.appConfigService.APP_TYPE === "PORTAL") {
12696
- if (!this.disableSaveButton) {
12697
- this.buttonItems = [
12698
- EnumCoreButtonVNSCode.SEND,
12699
- EnumCoreButtonVNSCode.CANCEL,
12700
- EnumCoreButtonVNSCode.SAVE,
12701
- ];
12702
- }
12703
- else {
12704
- this.buttonItems = [
12705
- EnumCoreButtonVNSCode.SEND,
12706
- EnumCoreButtonVNSCode.CANCEL,
12707
- ];
12708
- }
12709
- }
12710
- if (!!this.customFormButtonItems) {
12711
- this.buttonItems = this.customFormButtonItems;
12712
- }
12713
- this.subscriptions.push(this.mode$.subscribe((x) => (this.isUpdateMode = x === EnumCorePageEditMode.UPDATE)));
12714
- console.log(this.mode$);
12715
- /* START: Check if id field is available */
12716
- if (!!!this.form.get('id') && isDevMode()) {
12717
- this.alertService.error(`
12718
- Control "id" is mandatory. Please define one in your bussiness component. You can assign its "hidden" property to true if needed.
12719
- `, noneAutoClosedAlertOptions);
12720
- }
12721
- /* END: Check if id field is available */
12682
+ this.buttonItems = [
12683
+ EnumCoreButtonVNSCode.NONE_HEADER_SAVE,
12684
+ EnumCoreButtonVNSCode.NONE_HEADER_CANCEL,
12685
+ ];
12722
12686
  if (isDevMode()) {
12723
12687
  /* START: Check if each field is unique */
12724
12688
  const fields = this.coreFormService.getAllFormBaseControlNames(this.sections);
@@ -12747,14 +12711,6 @@ class CoreFormLiteComponent {
12747
12711
  this.onSubmit.emit(this.form?.getRawValue());
12748
12712
  }
12749
12713
  }
12750
- onFormSave() {
12751
- this.checkError$.next(true);
12752
- if (!!this.form.valid) {
12753
- this.payLoad = JSON.stringify(this.form?.getRawValue(), null, 2);
12754
- this.onSave.emit(this.form?.getRawValue());
12755
- }
12756
- setTimeout(() => this.checkError$.next(false), 3000);
12757
- }
12758
12714
  onCancelLocal() {
12759
12715
  this.onCancal.emit(null);
12760
12716
  }
@@ -12784,27 +12740,18 @@ class CoreFormLiteComponent {
12784
12740
  onButtonClick(e) {
12785
12741
  switch (e.code) {
12786
12742
  case EnumCoreButtonVNSCode.NONE_HEADER_CANCEL:
12787
- case EnumCoreButtonVNSCode.CANCEL:
12788
12743
  this.onCancelLocal();
12789
12744
  break;
12790
12745
  case EnumCoreButtonVNSCode.NONE_HEADER_SAVE:
12791
- case EnumCoreButtonVNSCode.SEND:
12792
- case EnumCoreButtonVNSCode.NONE_HEADER_DELETE:
12793
- case EnumCoreButtonVNSCode.NONE_HEADER_LIQUIDATE_CONTRACT:
12794
- case EnumCoreButtonVNSCode.ONFORMDELETE:
12795
- case EnumCoreButtonVNSCode.SAVE_PASSWORD:
12796
12746
  this.onFormSubmit();
12797
12747
  break;
12798
- case EnumCoreButtonVNSCode.SAVE:
12799
- this.onFormSave();
12800
- break;
12801
12748
  default:
12802
12749
  break;
12803
12750
  }
12804
12751
  this.buttonClick.emit(e);
12805
12752
  }
12806
12753
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreFormLiteComponent, deps: [{ token: CoreControlService }, { token: MultiLanguageService }, { token: AlertService }, { token: CoreFormService }, { token: AppConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
12807
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreFormLiteComponent, isStandalone: true, selector: "core-form-lite", inputs: { formName: "formName", submitText: "submitText", leftInputSections: "leftInputSections", leftInputSectionsFlexSize: "leftInputSectionsFlexSize", inputSections: "inputSections", mode$: "mode$", bottomTemplateRef: "bottomTemplateRef", customFormButtonItems: "customFormButtonItems", showCaptionButton: "showCaptionButton", disableSaveButton: "disableSaveButton", checkError$: "checkError$" }, outputs: { onFormCreated: "onFormCreated", onFormRefCreated: "onFormRefCreated", onSubmit: "onSubmit", onSave: "onSave", onCancal: "onCancal", buttonClick: "buttonClick" }, viewQueries: [{ propertyName: "formRef", first: true, predicate: ["formRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (!!form) {\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n <div class=\"row\">\r\n <div [class]=\"'col-md-' + (12 - (leftInputSectionsFlexSize || 0))\">\r\n\r\n <div *ngFor=\"let section of sections\" class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || !!section.hidden\">\r\n\r\n <div class=\"section-header-label\" *ngIf=\"section.caption\">\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n\r\n <div *ngFor=\"let row of section.rows\" class=\"row mb15\">\r\n <div *ngFor=\"let col of row\" [class]=\"'col-md-' + col.flexSize\"\r\n [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control-no-grid-buffer [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control-no-grid-buffer>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!!bottomTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplateRef\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <div class=\"h10\"></div>\r\n\r\n <div class=\"form-row\">\r\n\r\n <core-button-group-vns [showCaption]=\"showCaptionButton\" [forHeader]=\"false\" (buttonClick)=\"onButtonClick($event)\"\r\n [shownItems]=\"buttonItems\" class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n <div class=\"form-row\" *ngIf=\"isDevMode\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updatePayload()\">Show\r\n values</button>\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updateValidorOverview()\">Show\r\n validators</button>\r\n </div>\r\n </form>\r\n\r\n <div *ngIf=\"!!payLoad && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current values</strong><br>{{payLoad}}\r\n </div>\r\n <div *ngIf=\"!!validatorOverview && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current errors</strong><br>{{validatorOverview}}\r\n </div>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: CoreControlNoGridBufferComponent, selector: "core-control-no-grid-buffer", inputs: ["control", "form", "checkError$", "rangeLimit"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: CoreButtonGroupVnsComponent, selector: "core-button-group-vns", inputs: ["height", "instanceNumber", "forHeader", "shownItems", "showCaption"], outputs: ["buttonClick"] }] }); }
12754
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CoreFormLiteComponent, isStandalone: true, selector: "core-form-lite", inputs: { formName: "formName", submitText: "submitText", leftInputSections: "leftInputSections", leftInputSectionsFlexSize: "leftInputSectionsFlexSize", inputSections: "inputSections", mode$: "mode$", bottomTemplateRef: "bottomTemplateRef", customFormButtonItems: "customFormButtonItems", showCaptionButton: "showCaptionButton", disableSaveButton: "disableSaveButton", checkError$: "checkError$" }, outputs: { onFormCreated: "onFormCreated", onFormRefCreated: "onFormRefCreated", onSubmit: "onSubmit", onSave: "onSave", onCancal: "onCancal", buttonClick: "buttonClick" }, viewQueries: [{ propertyName: "formRef", first: true, predicate: ["formRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (!!form) {\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n <div class=\"row\">\r\n <div [class]=\"'col-md-' + (12 - (leftInputSectionsFlexSize || 0))\">\r\n\r\n <div *ngFor=\"let section of sections\" class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || !!section.hidden\">\r\n\r\n <div class=\"section-header-label\" *ngIf=\"section.caption\">\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n\r\n <div *ngFor=\"let row of section.rows\" class=\"row mb15\">\r\n <div *ngFor=\"let col of row\" [class]=\"'col-md-' + col.flexSize\"\r\n [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control-no-grid-buffer [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control-no-grid-buffer>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!!bottomTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplateRef\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <div class=\"h10\"></div>\r\n\r\n <div class=\"form-row\">\r\n\r\n <core-button-group-vns [showCaption]=\"showCaptionButton\" [forHeader]=\"false\" (buttonClick)=\"onButtonClick($event)\"\r\n [shownItems]=\"buttonItems\" class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n <div class=\"form-row\" *ngIf=\"isDevMode\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updatePayload()\">Show\r\n values</button>\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updateValidorOverview()\">Show\r\n validators</button>\r\n </div>\r\n </form>\r\n\r\n <div *ngIf=\"!!payLoad && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current values</strong><br>{{payLoad}}\r\n </div>\r\n <div *ngIf=\"!!validatorOverview && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current errors</strong><br>{{validatorOverview}}\r\n </div>\r\n}", styles: [".core-form-container>form .section .section-header-label{display:block;height:34px;line-height:34px;margin-bottom:15px;margin-left:12px}.core-form-container>form .section .section-header-label .section-img-wrapper{position:relative}.core-form-container>form .section .section-header-label .section-img-wrapper .section-img{position:absolute;width:34px;height:34px;border-radius:50%;background-color:#d3d3d3;float:left;background-image:url(/assets/images/info.svg);background-repeat:no-repeat;background-position:center}.core-form-container>form .section .section-header-label .section-caption{padding-left:40px;font-weight:700;color:#696969}.core-form-container .row{margin-left:var(--size-layout-block-cell-spacing) 0px;margin-right:var(--size-layout-block-cell-spacing) 0px}.core-form-container .row .grid-buffer{border:dotted 2px darkgray}.core-form-container .row .button-control{display:flex;align-items:flex-end}.core-form-container .form-row{margin:var(--size-layout-block-cell-spacing) 0px;display:flex;align-items:center;justify-content:center}.core-form-container .form-row>button{cursor:pointer}.core-form-container .form-row>button:not(:first-child){margin-left:var(--size-layout-block-cell-spacing)}.core-form-container .payload-preview{display:block;width:100%;height:200px;white-space:pre-wrap;overflow-x:hidden;overflow-y:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: CoreControlNoGridBufferComponent, selector: "core-control-no-grid-buffer", inputs: ["control", "form", "checkError$", "rangeLimit"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: CoreButtonGroupVnsComponent, selector: "core-button-group-vns", inputs: ["height", "instanceNumber", "forHeader", "shownItems", "showCaption"], outputs: ["buttonClick"] }] }); }
12808
12755
  }
12809
12756
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreFormLiteComponent, decorators: [{
12810
12757
  type: Component,
@@ -12815,7 +12762,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
12815
12762
  CoreControlNoGridBufferComponent,
12816
12763
  TranslatePipe,
12817
12764
  CoreButtonGroupVnsComponent
12818
- ], template: "@if (!!form) {\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n <div class=\"row\">\r\n <div [class]=\"'col-md-' + (12 - (leftInputSectionsFlexSize || 0))\">\r\n\r\n <div *ngFor=\"let section of sections\" class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || !!section.hidden\">\r\n\r\n <div class=\"section-header-label\" *ngIf=\"section.caption\">\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n\r\n <div *ngFor=\"let row of section.rows\" class=\"row mb15\">\r\n <div *ngFor=\"let col of row\" [class]=\"'col-md-' + col.flexSize\"\r\n [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control-no-grid-buffer [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control-no-grid-buffer>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!!bottomTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplateRef\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <div class=\"h10\"></div>\r\n\r\n <div class=\"form-row\">\r\n\r\n <core-button-group-vns [showCaption]=\"showCaptionButton\" [forHeader]=\"false\" (buttonClick)=\"onButtonClick($event)\"\r\n [shownItems]=\"buttonItems\" class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n <div class=\"form-row\" *ngIf=\"isDevMode\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updatePayload()\">Show\r\n values</button>\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updateValidorOverview()\">Show\r\n validators</button>\r\n </div>\r\n </form>\r\n\r\n <div *ngIf=\"!!payLoad && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current values</strong><br>{{payLoad}}\r\n </div>\r\n <div *ngIf=\"!!validatorOverview && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current errors</strong><br>{{validatorOverview}}\r\n </div>\r\n}" }]
12765
+ ], template: "@if (!!form) {\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n <div class=\"row\">\r\n <div [class]=\"'col-md-' + (12 - (leftInputSectionsFlexSize || 0))\">\r\n\r\n <div *ngFor=\"let section of sections\" class=\"section\"\r\n [class.d-none]=\"(!!isUpdateMode && section.addModeOnly) || (!!!isUpdateMode && section.updateModeOnly) || !!section.hidden\">\r\n\r\n <div class=\"section-header-label\" *ngIf=\"section.caption\">\r\n <div class=\"section-img-wrapper\">\r\n <div class=\"section-img\"></div>\r\n </div>\r\n <div class=\"section-caption\">{{ section.caption | translate: lang }}</div>\r\n </div>\r\n\r\n <div *ngFor=\"let row of section.rows\" class=\"row mb15\">\r\n <div *ngFor=\"let col of row\" [class]=\"'col-md-' + col.flexSize\"\r\n [class.grid-buffer]=\"col.controlType==='GRIDBUFFER'\"\r\n [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control-no-grid-buffer [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control-no-grid-buffer>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <ng-container *ngIf=\"!!bottomTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"bottomTemplateRef\"></ng-container>\r\n </ng-container>\r\n\r\n\r\n <div class=\"h10\"></div>\r\n\r\n <div class=\"form-row\">\r\n\r\n <core-button-group-vns [showCaption]=\"showCaptionButton\" [forHeader]=\"false\" (buttonClick)=\"onButtonClick($event)\"\r\n [shownItems]=\"buttonItems\" class=\"buttonGroupCustom\"></core-button-group-vns>\r\n </div>\r\n <div class=\"form-row\" *ngIf=\"isDevMode\">\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updatePayload()\">Show\r\n values</button>\r\n <button type=\"button\" class=\"btn btn-secondary text\" (click)=\"updateValidorOverview()\">Show\r\n validators</button>\r\n </div>\r\n </form>\r\n\r\n <div *ngIf=\"!!payLoad && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current values</strong><br>{{payLoad}}\r\n </div>\r\n <div *ngIf=\"!!validatorOverview && isDevMode\" class=\"form-row payload-preview\">\r\n <strong>Current errors</strong><br>{{validatorOverview}}\r\n </div>\r\n}", styles: [".core-form-container>form .section .section-header-label{display:block;height:34px;line-height:34px;margin-bottom:15px;margin-left:12px}.core-form-container>form .section .section-header-label .section-img-wrapper{position:relative}.core-form-container>form .section .section-header-label .section-img-wrapper .section-img{position:absolute;width:34px;height:34px;border-radius:50%;background-color:#d3d3d3;float:left;background-image:url(/assets/images/info.svg);background-repeat:no-repeat;background-position:center}.core-form-container>form .section .section-header-label .section-caption{padding-left:40px;font-weight:700;color:#696969}.core-form-container .row{margin-left:var(--size-layout-block-cell-spacing) 0px;margin-right:var(--size-layout-block-cell-spacing) 0px}.core-form-container .row .grid-buffer{border:dotted 2px darkgray}.core-form-container .row .button-control{display:flex;align-items:flex-end}.core-form-container .form-row{margin:var(--size-layout-block-cell-spacing) 0px;display:flex;align-items:center;justify-content:center}.core-form-container .form-row>button{cursor:pointer}.core-form-container .form-row>button:not(:first-child){margin-left:var(--size-layout-block-cell-spacing)}.core-form-container .payload-preview{display:block;width:100%;height:200px;white-space:pre-wrap;overflow-x:hidden;overflow-y:auto}\n"] }]
12819
12766
  }], ctorParameters: () => [{ type: CoreControlService }, { type: MultiLanguageService }, { type: AlertService }, { type: CoreFormService }, { type: AppConfigService }], propDecorators: { formName: [{
12820
12767
  type: Input
12821
12768
  }], submitText: [{