ngx-histaff-alpha 2.5.2 → 2.5.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.
@@ -52,67 +52,49 @@ export class CoreButtonGroupVnsComponent extends BaseComponent {
52
52
  }
53
53
  }
54
54
  ngAfterViewInit() {
55
- setTimeout(() => {
56
- this.subscriptions.push(this.routingService.currentFunction$.subscribe(x => {
57
- this.function = x;
58
- this.currentFunctionAssigmentDone = true;
59
- if (!!this.forHeader) {
60
- if (!!this.isRootUser || !!this.isAdminUser) {
61
- this.buttons = CORE_VNS_BUTTONS.filter(x => !x.hidden).filter(button => {
62
- if (!!this.function) {
63
- return this.function.actionCodes.indexOf(button.code) >= 0 && button.isHeader;
55
+ if (!this.fixedShow) {
56
+ setTimeout(() => {
57
+ this.subscriptions.push(this.routingService.currentFunction$.subscribe(x => {
58
+ this.function = x;
59
+ this.currentFunctionAssigmentDone = true;
60
+ if (!!this.forHeader) {
61
+ if (!!this.isRootUser || !!this.isAdminUser) {
62
+ this.buttons = CORE_VNS_BUTTONS.filter(x => !x.hidden).filter(button => {
63
+ if (!!this.function) {
64
+ return this.function.actionCodes.indexOf(button.code) >= 0 && button.isHeader;
65
+ }
66
+ else {
67
+ return false;
68
+ }
69
+ });
70
+ }
71
+ else {
72
+ const functionFilter = this.authService.data$.value.permissionActions.filter(pa => {
73
+ return pa.functionId === this.function?.id;
74
+ });
75
+ if (functionFilter.length) {
76
+ const { allowedActionCodes } = functionFilter[0];
77
+ this.buttons = CORE_VNS_BUTTONS.filter(x => !!!x.hidden).filter(button => {
78
+ return allowedActionCodes.indexOf(button.code) >= 0 && button.isHeader;
79
+ });
64
80
  }
65
81
  else {
66
- return false;
82
+ this.buttons = [];
67
83
  }
68
- });
84
+ }
69
85
  }
70
86
  else {
71
- const functionFilter = this.authService.data$.value.permissionActions.filter(pa => {
72
- return pa.functionId === this.function?.id;
73
- });
74
- if (functionFilter.length) {
75
- const { allowedActionCodes } = functionFilter[0];
76
- this.buttons = CORE_VNS_BUTTONS.filter(x => !!!x.hidden).filter(button => {
77
- return allowedActionCodes.indexOf(button.code) >= 0 && button.isHeader;
78
- });
87
+ // To be improved
88
+ if (!!!this.shownItems) {
89
+ this.buttons = CORE_VNS_BUTTONS.filter(x => !!!x.isHeader);
79
90
  }
80
91
  else {
81
- this.buttons = [];
92
+ this.buttons = CORE_VNS_BUTTONS.filter(x => this.shownItems.includes(x.code));
82
93
  }
83
94
  }
84
- }
85
- else {
86
- // To be improved
87
- if (!!!this.shownItems) {
88
- this.buttons = CORE_VNS_BUTTONS.filter(x => !!!x.isHeader);
89
- }
90
- else {
91
- this.buttons = CORE_VNS_BUTTONS.filter(x => this.shownItems.includes(x.code));
92
- }
93
- }
94
- }));
95
- /*
96
- const filter = this.coreButtonGroupService.instances.filter(x => x.instanceNumber === this.instanceNumber);
97
- if (!!filter.length) {
98
- this.subscriptions.push(
99
- filter[0].mustBeHidden$.subscribe(mbh => {
100
- this.buttons.map(b => {
101
- if (mbh.includes(b.code)) {
102
- b.hidden = true;
103
- } else {
104
- b.hidden = false;
105
- }
106
- })
107
- })
108
- )
109
- } else {
110
- if (isDevMode()) {
111
- this.alertService.warn("Không tìm thấy instance number của nhóm nút", noneAutoClosedAlertOptions);
112
- }
113
- }
114
- */
115
- });
95
+ }));
96
+ });
97
+ }
116
98
  }
117
99
  swapTrioEditSaveCancel(editActive) {
118
100
  this.headerEdit = this.buttons.filter(x => x.code === EnumCoreButtonVNSCode.HEADER_EDIT);
@@ -150,7 +132,7 @@ export class CoreButtonGroupVnsComponent extends BaseComponent {
150
132
  this.coreButtonGroupService.instances = newInstances;
151
133
  }
152
134
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreButtonGroupVnsComponent, deps: [{ token: i1.MultiLanguageService }, { token: i2.Router }, { token: i3.AuthService }, { token: i4.RoutingService }, { token: i5.AlertService }, { token: i6.CoreButtonGroupService }], target: i0.ɵɵFactoryTarget.Component }); }
153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CoreButtonGroupVnsComponent, isStandalone: true, selector: "core-button-group-vns", inputs: { height: "height", instanceNumber: "instanceNumber", forHeader: "forHeader", shownItems: "shownItems", showCaption: "showCaption" }, outputs: { buttonClick: "buttonClick" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-button-group-vns-container\" [ngStyle]=\"{ height: height + 'px' }\">\r\n <div [ngStyle]=\"{ height: height + 'px' }\" class=\"setting-trigger d-flex d-flex-center\"\r\n *ngIf=\"!!isRootUser && !!forHeader\" (click)=\"onMapperClick()\"\r\n [appTooltip]=\"'UI_BUTTON_GROUP_SETTING_ADD_REMOVE_ACTION_ITEM_FOR_THIS_SCREEN' | translate : lang\"\r\n position=\"left\">\r\n <i class=\"feather-settings\"></i>\r\n </div>\r\n\r\n <div [ngStyle]=\"{ height: height + 'px' }\" class=\"separator\" *ngIf=\"!!isRootUser && !!forHeader\"></div>\r\n\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <ng-container *ngIf=\"!button.hidden\">\r\n <core-button-vns [showCaption]=\"showCaption\" [data]=\"button\" [instanceNumber]=\"instanceNumber\"\r\n (buttonClick)=\"onButtonClick($event)\"></core-button-vns>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <span *ngIf=\"!!isRootUser && !!forHeader && !!!buttons.length\">{{ currentFunctionAssigmentDone ?\r\n ('UI_BUTTON_GROUP_NO_ITEM_AVAILABLE_YET' | translate : lang) : '' }}</span>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CoreButtonVnsComponent, selector: "core-button-vns", inputs: ["height", "data", "instanceNumber", "disabled", "showCaption"], outputs: ["buttonClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }] }); }
135
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CoreButtonGroupVnsComponent, isStandalone: true, selector: "core-button-group-vns", inputs: { height: "height", instanceNumber: "instanceNumber", forHeader: "forHeader", fixedShow: "fixedShow", shownItems: "shownItems", showCaption: "showCaption" }, outputs: { buttonClick: "buttonClick" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-button-group-vns-container\" [ngStyle]=\"{ height: height + 'px' }\">\r\n <div [ngStyle]=\"{ height: height + 'px' }\" class=\"setting-trigger d-flex d-flex-center\"\r\n *ngIf=\"!!isRootUser && !!forHeader\" (click)=\"onMapperClick()\"\r\n [appTooltip]=\"'UI_BUTTON_GROUP_SETTING_ADD_REMOVE_ACTION_ITEM_FOR_THIS_SCREEN' | translate : lang\"\r\n position=\"left\">\r\n <i class=\"feather-settings\"></i>\r\n </div>\r\n\r\n <div [ngStyle]=\"{ height: height + 'px' }\" class=\"separator\" *ngIf=\"!!isRootUser && !!forHeader\"></div>\r\n\r\n <ng-container *ngFor=\"let button of buttons\">\r\n <ng-container *ngIf=\"!button.hidden\">\r\n <core-button-vns [showCaption]=\"showCaption\" [data]=\"button\" [instanceNumber]=\"instanceNumber\"\r\n (buttonClick)=\"onButtonClick($event)\"></core-button-vns>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <span *ngIf=\"!!isRootUser && !!forHeader && !!!buttons.length\">{{ currentFunctionAssigmentDone ?\r\n ('UI_BUTTON_GROUP_NO_ITEM_AVAILABLE_YET' | translate : lang) : '' }}</span>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: CoreButtonVnsComponent, selector: "core-button-vns", inputs: ["height", "data", "instanceNumber", "disabled", "showCaption"], outputs: ["buttonClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: TooltipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "showAnyway", "position"] }] }); }
154
136
  }
155
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreButtonGroupVnsComponent, decorators: [{
156
138
  type: Component,
@@ -167,6 +149,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
167
149
  type: Input
168
150
  }], forHeader: [{
169
151
  type: Input
152
+ }], fixedShow: [{
153
+ type: Input
170
154
  }], shownItems: [{
171
155
  type: Input
172
156
  }], showCaption: [{
@@ -174,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
174
158
  }], buttonClick: [{
175
159
  type: Output
176
160
  }] } });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1idXR0b24tZ3JvdXAtdm5zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF5QixNQUFNLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBR25JLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUd6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxn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cVZBQ1osc0JBQXNCLDBKQUV0QixhQUFhLGtEQUNiLGdCQUFnQjs7MkZBS1AsMkJBQTJCO2tCQWJ2QyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYixnQkFBZ0I7cUJBQ2pCO3FPQU1RLE1BQU07c0JBQWQsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBJQ29yZUJ1dHRvblZOUyB9IGZyb20gJy4vSUNvcmVCdXR0b25WTlMnO1xyXG5pbXBvcnQgeyBFbnVtQ29yZUJ1dHRvblZOU0NvZGUgfSBmcm9tICcuL0VudW1Db3JlQnV0dG9uVk5TQ29kZSc7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWNvbXBvbmVudC9iYXNlL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi1ncm91cC1zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVudW1UcmFuc2xhdGVLZXkgfSBmcm9tIFwiYWxwaGEtZ2xvYmFsLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBJRnVuY3Rpb25XaXRoRnVsbEFjdGlvbnMsIFJvdXRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcm91dGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBhbGVydE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvYWxlcnRPcHRpb25zJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTWFwQXZhdGFyVG9TZXJ2ZXJQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL21hcC1hdmF0YXItdG8tc2VydmVyLnBpcGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vLi4vYXBwLXBpcGVzL3RyYW5zbGF0ZS5waXBlJztcclxuaW1wb3J0IHsgQ29yZUJ1dHRvblZuc0NvbXBvbmVudCB9IGZyb20gJy4uL2NvcmUtYnV0dG9uLXZucy9jb3JlLWJ1dHRvbi12bnMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbHRpcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3Rvb2x0aXAvdG9vbHRpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDT1JFX1ZOU19CVVRUT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL0NPUkVfVk5TX0JVVFRPTlMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjb3JlLWJ1dHRvbi1ncm91cC12bnMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQ29yZUJ1dHRvblZuc0NvbXBvbmVudCxcclxuICAgIE1hcEF2YXRhclRvU2VydmVyUGlwZSxcclxuICAgIFRyYW5zbGF0ZVBpcGUsXHJcbiAgICBUb29sdGlwRGlyZWN0aXZlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29yZS1idXR0b24tZ3JvdXAtdm5zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZUJ1dHRvbkdyb3VwVm5zQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBASW5wdXQoKSBoZWlnaHQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgaW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZm9ySGVhZGVyITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzaG93bkl0ZW1zITogRW51bUNvcmVCdXR0b25WTlNDb2RlW107XHJcbiAgQElucHV0KCkgc2hvd0NhcHRpb24hOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvcmVCdXR0b25WTlM+KCk7XHJcbiAgXHJcbiAgYnV0dG9uczogSUNvcmVCdXR0b25WTlNbXSA9IFtdO1xyXG5cclxuICBpc1Jvb3RVc2VyITogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICBpc0FkbWluVXNlciE6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgZnVuY3Rpb24hOiBJRnVuY3Rpb25XaXRoRnVsbEFjdGlvbnMgfCB1bmRlZmluZWQ7XHJcbiAgY3VycmVudEZ1bmN0aW9uQXNzaWdtZW50RG9uZSE6IGJvb2xlYW47XHJcblxyXG5cclxuICAvKiBC4buZIGJhIGPDoWMgbsO6dCBkxrDhu5tpIMSRw6J5IGPhuqduIOG6qW4vaGnhu4duIHRoZW8gdMOsbmggaHXhu5FuZyAqL1xyXG4gIGhlYWRlckVkaXQhOiBJQ29yZUJ1dHRvblZOU1tdO1xyXG4gIGhlYWRlclNhdmUhOiBJQ29yZUJ1dHRvblZOU1tdO1xyXG4gIGhlYWRlckNhbmNlbCE6IElDb3JlQnV0dG9uVk5TW107XHJcbiAgLyoqKiAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBvdmVycmlkZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb3JlQnV0dG9uR3JvdXBTZXJ2aWNlOiBDb3JlQnV0dG9uR3JvdXBTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihtbHMpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5jb3JlQnV0dG9uR3JvdXBTZXJ2aWNlLmluc3RhbmNlcy5wdXNoKHtcclxuICAgICAgaW5zdGFuY2VOdW1iZXI6IHRoaXMuaW5zdGFuY2VOdW1iZXIsXHJcbiAgICAgIG11c3RCZUhpZGRlbiQ6IG5ldyBCZWhhdmlvclN1YmplY3Q8RW51bUNvcmVCdXR0b25WTlNDb2RlW10+KFtdKVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5hdXRoU2VydmljZS5kYXRhJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgdGhpcy5pc1Jvb3RVc2VyID0geD8uaXNSb290O1xyXG4gICAgICAgIHRoaXMuaXNBZG1pblVzZXIgPSB4Py5pc0FkbWluO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG5cclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICB0aGlzLm1scy5sYW5nJC5zdWJzY3JpYmUoeCA9PiB0aGlzLmxhbmcgPSB4KVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoZTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cclxuICAgIGlmICghZVsnaGVpZ2h0J10/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAvLyBmYWxsYmFja1xyXG4gICAgICB0aGlzLmhlaWdodCA9IDMwO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZiAoISFlWydzaG93bkl0ZW1zJ10/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLmJ1dHRvbnMgPSBDT1JFX1ZOU19CVVRUT05TLmZpbHRlcih4ID0+IHRoaXMuc2hvd25JdGVtcy5pbmNsdWRlcyh4LmNvZGUpKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZ1bmN0aW9uID0geDtcclxuICAgICAgICAgIHRoaXMuY3VycmVudEZ1bmN0aW9uQXNzaWdtZW50RG9uZSA9IHRydWU7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIGlmICghIXRoaXMuZm9ySGVhZGVyKSB7XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuaXNSb290VXNlciB8fCAhIXRoaXMuaXNBZG1pblVzZXIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmJ1dHRvbnMgPSBDT1JFX1ZOU19CVVRUT05TLmZpbHRlcih4ID0+ICF4LmhpZGRlbikuZmlsdGVyKGJ1dHRvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoISF0aGlzLmZ1bmN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uIS5hY3Rpb25Db2RlcyEuaW5kZXhPZihidXR0b24uY29kZSkgPj0gMCAmJiBidXR0b24uaXNIZWFkZXJcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZ1bmN0aW9uRmlsdGVyID0gdGhpcy5hdXRoU2VydmljZS5kYXRhJC52YWx1ZSEucGVybWlzc2lvbkFjdGlvbnMuZmlsdGVyKHBhID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwYS5mdW5jdGlvbklkID09PSB0aGlzLmZ1bmN0aW9uPy5pZFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIGlmIChmdW5jdGlvbkZpbHRlci5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHsgYWxsb3dlZEFjdGlvbkNvZGVzIH0gPSBmdW5jdGlvbkZpbHRlclswXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9ucyA9IENPUkVfVk5TX0JVVFRPTlMuZmlsdGVyKHggPT4gISEheC5oaWRkZW4pLmZpbHRlcihidXR0b24gPT4ge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gYWxsb3dlZEFjdGlvbkNvZGVzIS5pbmRleE9mKGJ1dHRvbi5jb2RlKSA+PSAwICYmIGJ1dHRvbi5pc0hlYWRlclxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idXR0b25zID0gW107XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBUbyBiZSBpbXByb3ZlZFxyXG4gICAgICAgICAgICBpZiAoISEhdGhpcy5zaG93bkl0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5idXR0b25zID0gQ09SRV9WTlNfQlVUVE9OUy5maWx0ZXIoeCA9PiAhISF4LmlzSGVhZGVyKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuYnV0dG9ucyA9IENPUkVfVk5TX0JVVFRPTlMuZmlsdGVyKHggPT4gdGhpcy5zaG93bkl0ZW1zLmluY2x1ZGVzKHguY29kZSkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcblxyXG4gICAgICAvKlxyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmNvcmVCdXR0b25Hcm91cFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgPT09IHRoaXMuaW5zdGFuY2VOdW1iZXIpO1xyXG4gICAgICBpZiAoISFmaWx0ZXIubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgICAgICBmaWx0ZXJbMF0ubXVzdEJlSGlkZGVuJC5zdWJzY3JpYmUobWJoID0+IHtcclxuICAgICAgICAgICAgdGhpcy5idXR0b25zLm1hcChiID0+IHtcclxuICAgICAgICAgICAgICBpZiAobWJoLmluY2x1ZGVzKGIuY29kZSkpIHtcclxuICAgICAgICAgICAgICAgIGIuaGlkZGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYi5oaWRkZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm4oXCJLaMO0bmcgdMOsbSB0aOG6pXkgaW5zdGFuY2UgbnVtYmVyIGPhu6dhIG5ow7NtIG7DunRcIiwgbm9uZUF1dG9DbG9zZWRBbGVydE9wdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAqL1xyXG5cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBzd2FwVHJpb0VkaXRTYXZlQ2FuY2VsKGVkaXRBY3RpdmU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaGVhZGVyRWRpdCA9IHRoaXMuYnV0dG9ucy5maWx0ZXIoeCA9PiB4LmNvZGUgPT09IEVudW1Db3JlQnV0dG9uVk5TQ29kZS5IRUFERVJfRURJVCk7XHJcbiAgICB0aGlzLmhlYWRlclNhdmUgPSB0aGlzLmJ1dHRvbnMuZmlsdGVyKHggPT4geC5jb2RlID09PSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX1NBVkUpO1xyXG4gICAgdGhpcy5oZWFkZXJDYW5jZWwgPSB0aGlzLmJ1dHRvbnMuZmlsdGVyKHggPT4geC5jb2RlID09PSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX0NBTkNFTCk7XHJcbiAgICBpZiAoZWRpdEFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmhlYWRlckVkaXRbMF0uaGlkZGVuID0gdHJ1ZTtcclxuICAgICAgdGhpcy5oZWFkZXJTYXZlWzBdLmhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmhlYWRlckNhbmNlbFswXS5oaWRkZW4gPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaGVhZGVyRWRpdFswXS5oaWRkZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5oZWFkZXJTYXZlWzBdLmhpZGRlbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuaGVhZGVyQ2FuY2VsWzBdLmhpZGRlbiA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJ1dHRvbkNsaWNrKGU6IElDb3JlQnV0dG9uVk5TKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhcImJ1dHRvbi1ncm91cCBvbkJ1dHRvbkNsaWNrXCIsIGUpXHJcbiAgICB0aGlzLmJ1dHRvbkNsaWNrLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICBvbk1hcHBlckNsaWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKCEhdGhpcy5mdW5jdGlvbikge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShcclxuICAgICAgICBbXHJcbiAgICAgICAgICAnL3Jvb3QnLFxyXG4gICAgICAgICAgJ2FjdGlvbi1tYXBwZXInLFxyXG4gICAgICAgIF1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8odGhpcy5tbHMudHJhbnMoRW51bVRyYW5zbGF0ZUtleS5ST09UX01BUFBFUl9VUERBVEVfRlVOQ1RJT05fSURfRk9SX1RIRV9NRU5VX0lURU0pLCBhbGVydE9wdGlvbnMpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5tYXAoeCA9PiB4Py51bnN1YnNjcmliZSgpKTtcclxuICAgIGNvbnN0IG5ld0luc3RhbmNlcyA9IHRoaXMuY29yZUJ1dHRvbkdyb3VwU2VydmljZS5pbnN0YW5jZXMuZmlsdGVyKHggPT4geC5pbnN0YW5jZU51bWJlciAhPT0gdGhpcy5pbnN0YW5jZU51bWJlcik7XHJcbiAgICB0aGlzLmNvcmVCdXR0b25Hcm91cFNlcnZpY2UuaW5zdGFuY2VzID0gbmV3SW5zdGFuY2VzO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNvcmUtYnV0dG9uLWdyb3VwLXZucy1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGVpZ2h0ICsgJ3B4JyB9XCI+XHJcbiAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoZWlnaHQgKyAncHgnIH1cIiBjbGFzcz1cInNldHRpbmctdHJpZ2dlciBkLWZsZXggZC1mbGV4LWNlbnRlclwiXHJcbiAgICAgICAgKm5nSWY9XCIhIWlzUm9vdFVzZXIgJiYgISFmb3JIZWFkZXJcIiAoY2xpY2spPVwib25NYXBwZXJDbGljaygpXCJcclxuICAgICAgICBbYXBwVG9vbHRpcF09XCInVUlfQlVUVE9OX0dST1VQX1NFVFRJTkdfQUREX1JFTU9WRV9BQ1RJT05fSVRFTV9GT1JfVEhJU19TQ1JFRU4nIHwgdHJhbnNsYXRlIDogbGFuZ1wiXHJcbiAgICAgICAgcG9zaXRpb249XCJsZWZ0XCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmZWF0aGVyLXNldHRpbmdzXCI+PC9pPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGVpZ2h0ICsgJ3B4JyB9XCIgY2xhc3M9XCJzZXBhcmF0b3JcIiAqbmdJZj1cIiEhaXNSb290VXNlciAmJiAhIWZvckhlYWRlclwiPjwvZGl2PlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFidXR0b24uaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDxjb3JlLWJ1dHRvbi12bnMgW3Nob3dDYXB0aW9uXT1cInNob3dDYXB0aW9uXCIgW2RhdGFdPVwiYnV0dG9uXCIgW2luc3RhbmNlTnVtYmVyXT1cImluc3RhbmNlTnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJvbkJ1dHRvbkNsaWNrKCRldmVudClcIj48L2NvcmUtYnV0dG9uLXZucz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxzcGFuICpuZ0lmPVwiISFpc1Jvb3RVc2VyICYmICEhZm9ySGVhZGVyICYmICEhIWJ1dHRvbnMubGVuZ3RoXCI+e3sgY3VycmVudEZ1bmN0aW9uQXNzaWdtZW50RG9uZSA/XHJcbiAgICAgICAgKCdVSV9CVVRUT05fR1JPVVBfTk9fSVRFTV9BVkFJTEFCTEVfWUVUJyB8IHRyYW5zbGF0ZSA6IGxhbmcpIDogJycgfX08L3NwYW4+XHJcbjwvZGl2PiJdfQ==
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1idXR0b24tZ3JvdXAtdm5zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1oaXN0YWZmLWFscGhhL3NyYy9saWIvYXBwL2xpYnJhcmllcy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUF5QixNQUFNLEVBQXVDLE1BQU0sZUFBZSxDQUFDO0FBR25JLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUd6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxn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Qk0seURES0YsWUFBWSxxVkFDWixzQkFBc0IsMEpBRXRCLGFBQWEsa0RBQ2IsZ0JBQWdCOzsyRkFLUCwyQkFBMkI7a0JBYnZDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLHNCQUFzQjt3QkFDdEIscUJBQXFCO3dCQUNyQixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7cU9BTVEsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuL0lDb3JlQnV0dG9uVk5TJztcclxuaW1wb3J0IHsgRW51bUNvcmVCdXR0b25WTlNDb2RlIH0gZnJvbSAnLi9FbnVtQ29yZUJ1dHRvblZOU0NvZGUnO1xyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1jb21wb25lbnQvYmFzZS9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlQnV0dG9uR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS1idXR0b24tZ3JvdXAtc2VydmljZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgSUZ1bmN0aW9uV2l0aEZ1bGxBY3Rpb25zLCBSb3V0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3JvdXRpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXVsdGktbGFuZ3VhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYWxlcnRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2FsZXJ0T3B0aW9ucyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hcEF2YXRhclRvU2VydmVyUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy9tYXAtYXZhdGFyLXRvLXNlcnZlci5waXBlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IENvcmVCdXR0b25WbnNDb21wb25lbnQgfSBmcm9tICcuLi9jb3JlLWJ1dHRvbi12bnMvY29yZS1idXR0b24tdm5zLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90b29sdGlwL3Rvb2x0aXAuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ09SRV9WTlNfQlVUVE9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9DT1JFX1ZOU19CVVRUT05TJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY29yZS1idXR0b24tZ3JvdXAtdm5zJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIENvcmVCdXR0b25WbnNDb21wb25lbnQsXHJcbiAgICBNYXBBdmF0YXJUb1NlcnZlclBpcGUsXHJcbiAgICBUcmFuc2xhdGVQaXBlLFxyXG4gICAgVG9vbHRpcERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtYnV0dG9uLWdyb3VwLXZucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29yZS1idXR0b24tZ3JvdXAtdm5zLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQElucHV0KCkgaGVpZ2h0ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGluc3RhbmNlTnVtYmVyITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGZvckhlYWRlciE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZml4ZWRTaG93ITogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzaG93bkl0ZW1zITogRW51bUNvcmVCdXR0b25WTlNDb2RlW107XHJcbiAgQElucHV0KCkgc2hvd0NhcHRpb24hOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvcmVCdXR0b25WTlM+KCk7XHJcblxyXG4gIGJ1dHRvbnM6IElDb3JlQnV0dG9uVk5TW10gPSBbXTtcclxuXHJcbiAgaXNSb290VXNlciE6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgaXNBZG1pblVzZXIhOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIGZ1bmN0aW9uITogSUZ1bmN0aW9uV2l0aEZ1bGxBY3Rpb25zIHwgdW5kZWZpbmVkO1xyXG4gIGN1cnJlbnRGdW5jdGlvbkFzc2lnbWVudERvbmUhOiBib29sZWFuO1xyXG5cclxuXHJcbiAgLyogQuG7mSBiYSBjw6FjIG7DunQgZMaw4bubaSDEkcOieSBj4bqnbiDhuqluL2hp4buHbiB0aGVvIHTDrG5oIGh14buRbmcgKi9cclxuICBoZWFkZXJFZGl0ITogSUNvcmVCdXR0b25WTlNbXTtcclxuICBoZWFkZXJTYXZlITogSUNvcmVCdXR0b25WTlNbXTtcclxuICBoZWFkZXJDYW5jZWwhOiBJQ29yZUJ1dHRvblZOU1tdO1xyXG4gIC8qKiogKi9cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbWxzOiBNdWx0aUxhbmd1YWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHByaXZhdGUgY29yZUJ1dHRvbkdyb3VwU2VydmljZTogQ29yZUJ1dHRvbkdyb3VwU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIobWxzKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuY29yZUJ1dHRvbkdyb3VwU2VydmljZS5pbnN0YW5jZXMucHVzaCh7XHJcbiAgICAgIGluc3RhbmNlTnVtYmVyOiB0aGlzLmluc3RhbmNlTnVtYmVyLFxyXG4gICAgICBtdXN0QmVIaWRkZW4kOiBuZXcgQmVoYXZpb3JTdWJqZWN0PEVudW1Db3JlQnV0dG9uVk5TQ29kZVtdPihbXSlcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgIHRoaXMuaXNSb290VXNlciA9IHg/LmlzUm9vdDtcclxuICAgICAgICB0aGlzLmlzQWRtaW5Vc2VyID0geD8uaXNBZG1pbjtcclxuICAgICAgfSlcclxuICAgIClcclxuXHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5tbHMubGFuZyQuc3Vic2NyaWJlKHggPT4gdGhpcy5sYW5nID0geClcclxuICAgIClcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGU6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHJcbiAgICBpZiAoIWVbJ2hlaWdodCddPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgLy8gZmFsbGJhY2tcclxuICAgICAgdGhpcy5oZWlnaHQgPSAzMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoISFlWydzaG93bkl0ZW1zJ10/LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICB0aGlzLmJ1dHRvbnMgPSBDT1JFX1ZOU19CVVRUT05TLmZpbHRlcih4ID0+IHRoaXMuc2hvd25JdGVtcy5pbmNsdWRlcyh4LmNvZGUpKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmZpeGVkU2hvdykge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgICAgIHRoaXMucm91dGluZ1NlcnZpY2UuY3VycmVudEZ1bmN0aW9uJC5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZnVuY3Rpb24gPSB4O1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGdW5jdGlvbkFzc2lnbWVudERvbmUgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5mb3JIZWFkZXIpIHtcclxuICAgICAgICAgICAgICBpZiAoISF0aGlzLmlzUm9vdFVzZXIgfHwgISF0aGlzLmlzQWRtaW5Vc2VyKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ1dHRvbnMgPSBDT1JFX1ZOU19CVVRUT05TLmZpbHRlcih4ID0+ICF4LmhpZGRlbikuZmlsdGVyKGJ1dHRvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICghIXRoaXMuZnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mdW5jdGlvbiEuYWN0aW9uQ29kZXMhLmluZGV4T2YoYnV0dG9uLmNvZGUpID49IDAgJiYgYnV0dG9uLmlzSGVhZGVyXHJcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbkZpbHRlciA9IHRoaXMuYXV0aFNlcnZpY2UuZGF0YSQudmFsdWUhLnBlcm1pc3Npb25BY3Rpb25zLmZpbHRlcihwYSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwYS5mdW5jdGlvbklkID09PSB0aGlzLmZ1bmN0aW9uPy5pZFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25GaWx0ZXIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHsgYWxsb3dlZEFjdGlvbkNvZGVzIH0gPSBmdW5jdGlvbkZpbHRlclswXTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5idXR0b25zID0gQ09SRV9WTlNfQlVUVE9OUy5maWx0ZXIoeCA9PiAhISF4LmhpZGRlbikuZmlsdGVyKGJ1dHRvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsbG93ZWRBY3Rpb25Db2RlcyEuaW5kZXhPZihidXR0b24uY29kZSkgPj0gMCAmJiBidXR0b24uaXNIZWFkZXJcclxuICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9ucyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAvLyBUbyBiZSBpbXByb3ZlZFxyXG4gICAgICAgICAgICAgIGlmICghISF0aGlzLnNob3duSXRlbXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnV0dG9ucyA9IENPUkVfVk5TX0JVVFRPTlMuZmlsdGVyKHggPT4gISEheC5pc0hlYWRlcilcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idXR0b25zID0gQ09SRV9WTlNfQlVUVE9OUy5maWx0ZXIoeCA9PiB0aGlzLnNob3duSXRlbXMuaW5jbHVkZXMoeC5jb2RlKSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3dhcFRyaW9FZGl0U2F2ZUNhbmNlbChlZGl0QWN0aXZlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmhlYWRlckVkaXQgPSB0aGlzLmJ1dHRvbnMuZmlsdGVyKHggPT4geC5jb2RlID09PSBFbnVtQ29yZUJ1dHRvblZOU0NvZGUuSEVBREVSX0VESVQpO1xyXG4gICAgdGhpcy5oZWFkZXJTYXZlID0gdGhpcy5idXR0b25zLmZpbHRlcih4ID0+IHguY29kZSA9PT0gRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9TQVZFKTtcclxuICAgIHRoaXMuaGVhZGVyQ2FuY2VsID0gdGhpcy5idXR0b25zLmZpbHRlcih4ID0+IHguY29kZSA9PT0gRW51bUNvcmVCdXR0b25WTlNDb2RlLkhFQURFUl9DQU5DRUwpO1xyXG4gICAgaWYgKGVkaXRBY3RpdmUpIHtcclxuICAgICAgdGhpcy5oZWFkZXJFZGl0WzBdLmhpZGRlbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuaGVhZGVyU2F2ZVswXS5oaWRkZW4gPSBmYWxzZTtcclxuICAgICAgdGhpcy5oZWFkZXJDYW5jZWxbMF0uaGlkZGVuID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhlYWRlckVkaXRbMF0uaGlkZGVuID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaGVhZGVyU2F2ZVswXS5oaWRkZW4gPSB0cnVlO1xyXG4gICAgICB0aGlzLmhlYWRlckNhbmNlbFswXS5oaWRkZW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25CdXR0b25DbGljayhlOiBJQ29yZUJ1dHRvblZOUyk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJidXR0b24tZ3JvdXAgb25CdXR0b25DbGlja1wiLCBlKVxyXG4gICAgdGhpcy5idXR0b25DbGljay5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgb25NYXBwZXJDbGljaygpOiB2b2lkIHtcclxuICAgIGlmICghIXRoaXMuZnVuY3Rpb24pIHtcclxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgJy9yb290JyxcclxuICAgICAgICAgICdhY3Rpb24tbWFwcGVyJyxcclxuICAgICAgICBdXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5pbmZvKHRoaXMubWxzLnRyYW5zKEVudW1UcmFuc2xhdGVLZXkuUk9PVF9NQVBQRVJfVVBEQVRFX0ZVTkNUSU9OX0lEX0ZPUl9USEVfTUVOVV9JVEVNKSwgYWxlcnRPcHRpb25zKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMubWFwKHggPT4geD8udW5zdWJzY3JpYmUoKSk7XHJcbiAgICBjb25zdCBuZXdJbnN0YW5jZXMgPSB0aGlzLmNvcmVCdXR0b25Hcm91cFNlcnZpY2UuaW5zdGFuY2VzLmZpbHRlcih4ID0+IHguaW5zdGFuY2VOdW1iZXIgIT09IHRoaXMuaW5zdGFuY2VOdW1iZXIpO1xyXG4gICAgdGhpcy5jb3JlQnV0dG9uR3JvdXBTZXJ2aWNlLmluc3RhbmNlcyA9IG5ld0luc3RhbmNlcztcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb3JlLWJ1dHRvbi1ncm91cC12bnMtY29udGFpbmVyXCIgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGhlaWdodCArICdweCcgfVwiPlxyXG4gICAgPGRpdiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGVpZ2h0ICsgJ3B4JyB9XCIgY2xhc3M9XCJzZXR0aW5nLXRyaWdnZXIgZC1mbGV4IGQtZmxleC1jZW50ZXJcIlxyXG4gICAgICAgICpuZ0lmPVwiISFpc1Jvb3RVc2VyICYmICEhZm9ySGVhZGVyXCIgKGNsaWNrKT1cIm9uTWFwcGVyQ2xpY2soKVwiXHJcbiAgICAgICAgW2FwcFRvb2x0aXBdPVwiJ1VJX0JVVFRPTl9HUk9VUF9TRVRUSU5HX0FERF9SRU1PVkVfQUNUSU9OX0lURU1fRk9SX1RISVNfU0NSRUVOJyB8IHRyYW5zbGF0ZSA6IGxhbmdcIlxyXG4gICAgICAgIHBvc2l0aW9uPVwibGVmdFwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmVhdGhlci1zZXR0aW5nc1wiPjwvaT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGhlaWdodCArICdweCcgfVwiIGNsYXNzPVwic2VwYXJhdG9yXCIgKm5nSWY9XCIhIWlzUm9vdFVzZXIgJiYgISFmb3JIZWFkZXJcIj48L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uc1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYnV0dG9uLmhpZGRlblwiPlxyXG4gICAgICAgICAgICA8Y29yZS1idXR0b24tdm5zIFtzaG93Q2FwdGlvbl09XCJzaG93Q2FwdGlvblwiIFtkYXRhXT1cImJ1dHRvblwiIFtpbnN0YW5jZU51bWJlcl09XCJpbnN0YW5jZU51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCI+PC9jb3JlLWJ1dHRvbi12bnM+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8c3BhbiAqbmdJZj1cIiEhaXNSb290VXNlciAmJiAhIWZvckhlYWRlciAmJiAhISFidXR0b25zLmxlbmd0aFwiPnt7IGN1cnJlbnRGdW5jdGlvbkFzc2lnbWVudERvbmUgP1xyXG4gICAgICAgICgnVUlfQlVUVE9OX0dST1VQX05PX0lURU1fQVZBSUxBQkxFX1lFVCcgfCB0cmFuc2xhdGUgOiBsYW5nKSA6ICcnIH19PC9zcGFuPlxyXG48L2Rpdj4iXX0=
@@ -206,7 +206,7 @@ export class CoreFormComponent {
206
206
  this.buttonClick.emit(e);
207
207
  }
208
208
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreFormComponent, 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: "14.0.0", version: "17.2.3", type: CoreFormComponent, isStandalone: true, selector: "core-form", 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: "<div class=\"core-form-container\" *ngIf=\"!!form\">\r\n\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n\r\n <div class=\"row\">\r\n\r\n <div [class]=\"'col-md-' + (leftInputSectionsFlexSize || 0)\" *ngIf=\"!!leftInputSections\">\r\n\r\n <div *ngFor=\"let section of leftInputSections\" 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 [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\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 [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\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\r\n</div>", 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: CoreControlComponent, selector: "core-control", 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"] }] }); }
209
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: CoreFormComponent, isStandalone: true, selector: "core-form", 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: "<div class=\"core-form-container\" *ngIf=\"!!form\">\r\n\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n\r\n <div class=\"row\">\r\n\r\n <div [class]=\"'col-md-' + (leftInputSectionsFlexSize || 0)\" *ngIf=\"!!leftInputSections\">\r\n\r\n <div *ngFor=\"let section of leftInputSections\" 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 [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\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 [control]=\"col\" [form]=\"form\" [checkError$]=\"checkError$\"></core-control>\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\r\n</div>", 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: CoreControlComponent, selector: "core-control", inputs: ["control", "form", "checkError$", "rangeLimit"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: CoreButtonGroupVnsComponent, selector: "core-button-group-vns", inputs: ["height", "instanceNumber", "forHeader", "fixedShow", "shownItems", "showCaption"], outputs: ["buttonClick"] }] }); }
210
210
  }
211
211
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreFormComponent, decorators: [{
212
212
  type: Component,
@@ -151,7 +151,7 @@ export class CoreFormLiteComponent {
151
151
  this.buttonClick.emit(e);
152
152
  }
153
153
  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 }); }
154
- 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", inputSections: "inputSections", mode$: "mode$", customFormButtonItems: "customFormButtonItems", showButonCaptions: "showButonCaptions", 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: "<div class=\"core-form-lite-container\">\r\n @if (!!form) {\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n <div class=\"row\">\r\n <div [class]=\"'col-md-12'\">\r\n\r\n <div *ngFor=\"let section of sections\" class=\"section\" [class.d-none]=\"!!section.hidden\">\r\n\r\n @if (!!section.caption) {\r\n <div class=\"section-header-label\">\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\r\n @for (row of section.rows; track row) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track col) {\r\n <div [class]=\"'col-md-' + col.flexSize\" [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control-no-seeker [control]=\"col\" [form]=\"form\"\r\n [checkError$]=\"checkError$\"></core-control-no-seeker>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\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]=\"showButonCaptions\" [forHeader]=\"false\"\r\n (buttonClick)=\"onButtonClick($event)\" [shownItems]=\"buttonItems\"\r\n 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 }\r\n\r\n</div>", styles: [".core-form-lite-container>form .section .section-header-label{display:block;height:34px;line-height:34px;margin-bottom:15px;margin-left:12px}.core-form-lite-container>form .section .section-header-label .section-img-wrapper{position:relative}.core-form-lite-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-lite-container>form .section .section-header-label .section-caption{padding-left:40px;font-weight:700;color:#696969}.core-form-lite-container .row{margin-left:var(--size-layout-block-cell-spacing) 0px;margin-right:var(--size-layout-block-cell-spacing) 0px}.core-form-lite-container .row .grid-buffer{border:dotted 2px darkgray}.core-form-lite-container .row .button-control{display:flex;align-items:flex-end}.core-form-lite-container .form-row{margin:var(--size-layout-block-cell-spacing) 0px;display:flex;align-items:center;justify-content:center}.core-form-lite-container .form-row>button{cursor:pointer}.core-form-lite-container .form-row>button:not(:first-child){margin-left:var(--size-layout-block-cell-spacing)}.core-form-lite-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: "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: CoreControlNoSeekerComponent, selector: "core-control-no-seeker", 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"] }] }); }
154
+ 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", inputSections: "inputSections", mode$: "mode$", customFormButtonItems: "customFormButtonItems", showButonCaptions: "showButonCaptions", 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: "<div class=\"core-form-lite-container\">\r\n @if (!!form) {\r\n <form #formRef (ngSubmit)=\"onFormSubmit()\" [formGroup]=\"form\" autocomplete=\"off\">\r\n <div class=\"row\">\r\n <div [class]=\"'col-md-12'\">\r\n\r\n <div *ngFor=\"let section of sections\" class=\"section\" [class.d-none]=\"!!section.hidden\">\r\n\r\n @if (!!section.caption) {\r\n <div class=\"section-header-label\">\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\r\n @for (row of section.rows; track row) {\r\n <div class=\"row mb15\">\r\n @for (col of row; track col) {\r\n <div [class]=\"'col-md-' + col.flexSize\" [class.button-control]=\"col.controlType==='BUTTON'\">\r\n <core-control-no-seeker [control]=\"col\" [form]=\"form\"\r\n [checkError$]=\"checkError$\"></core-control-no-seeker>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\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]=\"showButonCaptions\" [forHeader]=\"false\"\r\n (buttonClick)=\"onButtonClick($event)\" [shownItems]=\"buttonItems\"\r\n 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 }\r\n\r\n</div>", styles: [".core-form-lite-container>form .section .section-header-label{display:block;height:34px;line-height:34px;margin-bottom:15px;margin-left:12px}.core-form-lite-container>form .section .section-header-label .section-img-wrapper{position:relative}.core-form-lite-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-lite-container>form .section .section-header-label .section-caption{padding-left:40px;font-weight:700;color:#696969}.core-form-lite-container .row{margin-left:var(--size-layout-block-cell-spacing) 0px;margin-right:var(--size-layout-block-cell-spacing) 0px}.core-form-lite-container .row .grid-buffer{border:dotted 2px darkgray}.core-form-lite-container .row .button-control{display:flex;align-items:flex-end}.core-form-lite-container .form-row{margin:var(--size-layout-block-cell-spacing) 0px;display:flex;align-items:center;justify-content:center}.core-form-lite-container .form-row>button{cursor:pointer}.core-form-lite-container .form-row>button:not(:first-child){margin-left:var(--size-layout-block-cell-spacing)}.core-form-lite-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: "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: CoreControlNoSeekerComponent, selector: "core-control-no-seeker", inputs: ["control", "form", "checkError$", "rangeLimit"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: CoreButtonGroupVnsComponent, selector: "core-button-group-vns", inputs: ["height", "instanceNumber", "forHeader", "fixedShow", "shownItems", "showCaption"], outputs: ["buttonClick"] }] }); }
155
155
  }
156
156
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CoreFormLiteComponent, decorators: [{
157
157
  type: Component,
@@ -22,7 +22,7 @@ export class CorePageHeaderComponent extends BaseComponent {
22
22
  ngAfterViewInit() {
23
23
  }
24
24
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePageHeaderComponent, deps: [{ token: i1.MultiLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CorePageHeaderComponent, isStandalone: true, selector: "core-page-header", inputs: { instanceNumber: "instanceNumber", shownItems: "shownItems", title: "title", hideButtonGroup: "hideButtonGroup" }, outputs: { buttonClick: "buttonClick" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-page-header-container\" #container>\r\n <div class=\"d-flex-between pd-25\">\r\n <div class=\"title\">{{ title | translate: lang }}</div>\r\n @if (!hideButtonGroup) {\r\n <core-button-group-vns [instanceNumber]=\"instanceNumber\" [forHeader]=\"true\"\r\n (buttonClick)=\"onButtonClick($event)\"></core-button-group-vns>\r\n }\r\n </div>\r\n</div>", styles: [".core-page-header-container{height:var(--size-core-page-header-height);background-color:#fff}.core-page-header-container .title{color:#000;font-weight:400;font-size:20px;text-wrap:nowrap;overflow:hidden;text-overflow:ellipsis}.d-flex-between{height:var(--size-core-page-header-height)}.buttonGroupCustom{overflow-x:scroll}.buttonGroupCustom::-webkit-scrollbar-thumb{width:20%!important}.buttonGroupCustom:hover{overflow-x:scroll}.buttonGroupCustom::-webkit-scrollbar-thumb{background-color:transparent;width:50px!important;border-radius:10px;transition:background-color 2s}.buttonGroupCustom:hover::-webkit-scrollbar-thumb{background-color:#a5a4a4;width:50px!important;border-radius:10px;transition:background-color 2s}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: CoreButtonGroupVnsComponent, selector: "core-button-group-vns", inputs: ["height", "instanceNumber", "forHeader", "shownItems", "showCaption"], outputs: ["buttonClick"] }] }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.3", type: CorePageHeaderComponent, isStandalone: true, selector: "core-page-header", inputs: { instanceNumber: "instanceNumber", shownItems: "shownItems", title: "title", hideButtonGroup: "hideButtonGroup" }, outputs: { buttonClick: "buttonClick" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"core-page-header-container\" #container>\r\n <div class=\"d-flex-between pd-25\">\r\n <div class=\"title\">{{ title | translate: lang }}</div>\r\n @if (!hideButtonGroup) {\r\n <core-button-group-vns [instanceNumber]=\"instanceNumber\" [forHeader]=\"true\" [shownItems]=\"shownItems\"\r\n (buttonClick)=\"onButtonClick($event)\"></core-button-group-vns>\r\n }\r\n </div>\r\n</div>", styles: [".core-page-header-container{height:var(--size-core-page-header-height);background-color:#fff}.core-page-header-container .title{color:#000;font-weight:400;font-size:20px;text-wrap:nowrap;overflow:hidden;text-overflow:ellipsis}.d-flex-between{height:var(--size-core-page-header-height)}.buttonGroupCustom{overflow-x:scroll}.buttonGroupCustom::-webkit-scrollbar-thumb{width:20%!important}.buttonGroupCustom:hover{overflow-x:scroll}.buttonGroupCustom::-webkit-scrollbar-thumb{background-color:transparent;width:50px!important;border-radius:10px;transition:background-color 2s}.buttonGroupCustom:hover::-webkit-scrollbar-thumb{background-color:#a5a4a4;width:50px!important;border-radius:10px;transition:background-color 2s}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: CoreButtonGroupVnsComponent, selector: "core-button-group-vns", inputs: ["height", "instanceNumber", "forHeader", "fixedShow", "shownItems", "showCaption"], outputs: ["buttonClick"] }] }); }
26
26
  }
27
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: CorePageHeaderComponent, decorators: [{
28
28
  type: Component,
@@ -30,7 +30,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
30
30
  CommonModule,
31
31
  TranslatePipe,
32
32
  CoreButtonGroupVnsComponent
33
- ], template: "<div class=\"core-page-header-container\" #container>\r\n <div class=\"d-flex-between pd-25\">\r\n <div class=\"title\">{{ title | translate: lang }}</div>\r\n @if (!hideButtonGroup) {\r\n <core-button-group-vns [instanceNumber]=\"instanceNumber\" [forHeader]=\"true\"\r\n (buttonClick)=\"onButtonClick($event)\"></core-button-group-vns>\r\n }\r\n </div>\r\n</div>", styles: [".core-page-header-container{height:var(--size-core-page-header-height);background-color:#fff}.core-page-header-container .title{color:#000;font-weight:400;font-size:20px;text-wrap:nowrap;overflow:hidden;text-overflow:ellipsis}.d-flex-between{height:var(--size-core-page-header-height)}.buttonGroupCustom{overflow-x:scroll}.buttonGroupCustom::-webkit-scrollbar-thumb{width:20%!important}.buttonGroupCustom:hover{overflow-x:scroll}.buttonGroupCustom::-webkit-scrollbar-thumb{background-color:transparent;width:50px!important;border-radius:10px;transition:background-color 2s}.buttonGroupCustom:hover::-webkit-scrollbar-thumb{background-color:#a5a4a4;width:50px!important;border-radius:10px;transition:background-color 2s}\n"] }]
33
+ ], template: "<div class=\"core-page-header-container\" #container>\r\n <div class=\"d-flex-between pd-25\">\r\n <div class=\"title\">{{ title | translate: lang }}</div>\r\n @if (!hideButtonGroup) {\r\n <core-button-group-vns [instanceNumber]=\"instanceNumber\" [forHeader]=\"true\" [shownItems]=\"shownItems\"\r\n (buttonClick)=\"onButtonClick($event)\"></core-button-group-vns>\r\n }\r\n </div>\r\n</div>", styles: [".core-page-header-container{height:var(--size-core-page-header-height);background-color:#fff}.core-page-header-container .title{color:#000;font-weight:400;font-size:20px;text-wrap:nowrap;overflow:hidden;text-overflow:ellipsis}.d-flex-between{height:var(--size-core-page-header-height)}.buttonGroupCustom{overflow-x:scroll}.buttonGroupCustom::-webkit-scrollbar-thumb{width:20%!important}.buttonGroupCustom:hover{overflow-x:scroll}.buttonGroupCustom::-webkit-scrollbar-thumb{background-color:transparent;width:50px!important;border-radius:10px;transition:background-color 2s}.buttonGroupCustom:hover::-webkit-scrollbar-thumb{background-color:#a5a4a4;width:50px!important;border-radius:10px;transition:background-color 2s}\n"] }]
34
34
  }], ctorParameters: () => [{ type: i1.MultiLanguageService }], propDecorators: { instanceNumber: [{
35
35
  type: Input
36
36
  }], shownItems: [{
@@ -45,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
45
45
  type: ViewChild,
46
46
  args: ['container']
47
47
  }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBS3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUZBQW1GLENBQUM7OztBQWFoSSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsYUFBYTtJQVd4RCxZQUNrQixHQUF5QjtRQUV6QyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFGSyxRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQU5qQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO0lBUzNELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFBO1NBQ25GO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxDQUFpQjtRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtJQUNmLENBQUM7OEdBNUJVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHFZQ3JCcEMsMlpBUU0sMHdCRE1GLFlBQVksMEJBQ1osYUFBYSxrREFDYiwyQkFBMkI7OzJGQUtsQix1QkFBdUI7a0JBWG5DLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsMkJBQTJCO3FCQUM1Qjt5RkFNUSxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFHaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWNvbXBvbmVudC9iYXNlL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi8uLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0lDb3JlQnV0dG9uVk5TJztcclxuaW1wb3J0IHsgRW51bUNvcmVCdXR0b25WTlNDb2RlIH0gZnJvbSAnLi4vLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9FbnVtQ29yZUJ1dHRvblZOU0NvZGUnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtcGFnZS1oZWFkZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgaW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2hvd25JdGVtcyE6IEVudW1Db3JlQnV0dG9uVk5TQ29kZVtdO1xyXG4gIEBJbnB1dCgpIHRpdGxlITogRW51bVRyYW5zbGF0ZUtleSB8IHN0cmluZztcclxuICBASW5wdXQoKSBoaWRlQnV0dG9uR3JvdXAhOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvcmVCdXR0b25WTlM+KCk7XHJcblxyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBvdmVycmlkZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIobWxzKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydoaWRlQnV0dG9uR3JvdXAnXSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcImNoYW5nZXNbJ2hpZGVCdXR0b25Hcm91cCddXCIsIGNoYW5nZXNbJ2hpZGVCdXR0b25Hcm91cCddLmN1cnJlbnRWYWx1ZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpIHtcclxuICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb3JlLXBhZ2UtaGVhZGVyLWNvbnRhaW5lclwiICNjb250YWluZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4LWJldHdlZW4gcGQtMjVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj57eyB0aXRsZSB8IHRyYW5zbGF0ZTogbGFuZyB9fTwvZGl2PlxyXG4gICAgICAgIEBpZiAoIWhpZGVCdXR0b25Hcm91cCkge1xyXG4gICAgICAgIDxjb3JlLWJ1dHRvbi1ncm91cC12bnMgW2luc3RhbmNlTnVtYmVyXT1cImluc3RhbmNlTnVtYmVyXCIgW2ZvckhlYWRlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiPjwvY29yZS1idXR0b24tZ3JvdXAtdm5zPlxyXG4gICAgICAgIH1cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1wYWdlLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtaGlzdGFmZi1hbHBoYS9zcmMvbGliL2FwcC9saWJyYXJpZXMvY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWhpc3RhZmYtYWxwaGEvc3JjL2xpYi9hcHAvbGlicmFyaWVzL2NvcmUtcGFnZS1oZWFkZXIvY29yZS1wYWdlLWhlYWRlci9jb3JlLXBhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBS3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUZBQW1GLENBQUM7OztBQWFoSSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsYUFBYTtJQVd4RCxZQUNrQixHQUF5QjtRQUV6QyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFGSyxRQUFHLEdBQUgsR0FBRyxDQUFzQjtRQU5qQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO0lBUzNELENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFBO1NBQ25GO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxDQUFpQjtRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtJQUNmLENBQUM7OEdBNUJVLHVCQUF1QjtrR0FBdkIsdUJBQXVCLHFZQ3JCcEMsdWJBUU0sMHdCRE1GLFlBQVksMEJBQ1osYUFBYSxrREFDYiwyQkFBMkI7OzJGQUtsQix1QkFBdUI7a0JBWG5DLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsMkJBQTJCO3FCQUM1Qjt5RkFNUSxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFHaUIsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLWNvbXBvbmVudC9iYXNlL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcmVCdXR0b25WTlMgfSBmcm9tICcuLi8uLi9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zL0lDb3JlQnV0dG9uVk5TJztcclxuaW1wb3J0IHsgRW51bUNvcmVCdXR0b25WTlNDb2RlIH0gZnJvbSAnLi4vLi4vY29yZS1idXR0b24tZ3JvdXAtdm5zL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9FbnVtQ29yZUJ1dHRvblZOU0NvZGUnO1xyXG5pbXBvcnQgeyBFbnVtVHJhbnNsYXRlS2V5IH0gZnJvbSBcImFscGhhLWdsb2JhbC1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgTXVsdGlMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tdWx0aS1sYW5ndWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uLy4uL2FwcC1waXBlcy90cmFuc2xhdGUucGlwZSc7XHJcbmltcG9ydCB7IENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUtYnV0dG9uLWdyb3VwLXZucy9jb3JlLWJ1dHRvbi1ncm91cC12bnMvY29yZS1idXR0b24tZ3JvdXAtdm5zLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvcmUtcGFnZS1oZWFkZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlUGlwZSxcclxuICAgIENvcmVCdXR0b25Hcm91cFZuc0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvcmUtcGFnZS1oZWFkZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVBhZ2VIZWFkZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgaW5zdGFuY2VOdW1iZXIhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgc2hvd25JdGVtcyE6IEVudW1Db3JlQnV0dG9uVk5TQ29kZVtdO1xyXG4gIEBJbnB1dCgpIHRpdGxlITogRW51bVRyYW5zbGF0ZUtleSB8IHN0cmluZztcclxuICBASW5wdXQoKSBoaWRlQnV0dG9uR3JvdXAhOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvcmVCdXR0b25WTlM+KCk7XHJcblxyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBvdmVycmlkZSBtbHM6IE11bHRpTGFuZ3VhZ2VTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIobWxzKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzWydoaWRlQnV0dG9uR3JvdXAnXSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcImNoYW5nZXNbJ2hpZGVCdXR0b25Hcm91cCddXCIsIGNoYW5nZXNbJ2hpZGVCdXR0b25Hcm91cCddLmN1cnJlbnRWYWx1ZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQnV0dG9uQ2xpY2soZTogSUNvcmVCdXR0b25WTlMpIHtcclxuICAgIHRoaXMuYnV0dG9uQ2xpY2suZW1pdChlKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb3JlLXBhZ2UtaGVhZGVyLWNvbnRhaW5lclwiICNjb250YWluZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4LWJldHdlZW4gcGQtMjVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj57eyB0aXRsZSB8IHRyYW5zbGF0ZTogbGFuZyB9fTwvZGl2PlxyXG4gICAgICAgIEBpZiAoIWhpZGVCdXR0b25Hcm91cCkge1xyXG4gICAgICAgIDxjb3JlLWJ1dHRvbi1ncm91cC12bnMgW2luc3RhbmNlTnVtYmVyXT1cImluc3RhbmNlTnVtYmVyXCIgW2ZvckhlYWRlcl09XCJ0cnVlXCIgW3Nob3duSXRlbXNdPVwic2hvd25JdGVtc1wiXHJcbiAgICAgICAgICAgIChidXR0b25DbGljayk9XCJvbkJ1dHRvbkNsaWNrKCRldmVudClcIj48L2NvcmUtYnV0dG9uLWdyb3VwLXZucz5cclxuICAgICAgICB9XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19