fx-form-builder-wrapper 0.0.53 → 0.0.55

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.
Files changed (59) hide show
  1. package/esm2022/fx-form-builder-wrapper.mjs +5 -0
  2. package/esm2022/lib/components/dynamic-table/dynamic-table.component.mjs +235 -0
  3. package/esm2022/lib/components/fx-form-component/fx-form-component.component.mjs +103 -0
  4. package/esm2022/lib/components/toggle/toggle.component.mjs +33 -0
  5. package/esm2022/lib/components/toggle-button/toggle-button.component.mjs +38 -0
  6. package/esm2022/lib/components/uploader/uploader.component.mjs +58 -0
  7. package/esm2022/lib/custom-controls/dispatch-to-clinic/dispatch-to-clinic.component.mjs +42 -0
  8. package/esm2022/lib/fx-builder-wrapper.component.mjs +79 -0
  9. package/esm2022/lib/fx-builder-wrapper.service.mjs +44 -0
  10. package/esm2022/lib/panel/configuration-panel/configuration-panel.component.mjs +117 -0
  11. package/esm2022/lib/panel/settings-panel/settings-panel.component.mjs +24 -0
  12. package/esm2022/public-api.mjs +7 -0
  13. package/fesm2022/fx-form-builder-wrapper.mjs +718 -0
  14. package/fesm2022/fx-form-builder-wrapper.mjs.map +1 -0
  15. package/index.d.ts +5 -0
  16. package/lib/components/dynamic-table/dynamic-table.component.d.ts +52 -0
  17. package/lib/components/fx-form-component/fx-form-component.component.d.ts +19 -0
  18. package/lib/components/toggle/toggle.component.d.ts +13 -0
  19. package/lib/components/toggle-button/toggle-button.component.d.ts +15 -0
  20. package/lib/components/uploader/uploader.component.d.ts +16 -0
  21. package/lib/custom-controls/dispatch-to-clinic/dispatch-to-clinic.component.d.ts +17 -0
  22. package/lib/fx-builder-wrapper.component.d.ts +19 -0
  23. package/lib/fx-builder-wrapper.service.d.ts +14 -0
  24. package/lib/panel/configuration-panel/configuration-panel.component.d.ts +27 -0
  25. package/lib/panel/settings-panel/settings-panel.component.d.ts +10 -0
  26. package/package.json +29 -16
  27. package/public-api.d.ts +3 -0
  28. package/ng-package.json +0 -9
  29. package/src/lib/components/button/button.component.css +0 -0
  30. package/src/lib/components/button/button.component.html +0 -1
  31. package/src/lib/components/button/button.component.ts +0 -24
  32. package/src/lib/components/dynamic-table/dynamic-table.component.css +0 -31
  33. package/src/lib/components/dynamic-table/dynamic-table.component.html +0 -69
  34. package/src/lib/components/dynamic-table/dynamic-table.component.ts +0 -258
  35. package/src/lib/components/fx-form-component/fx-form-component.component.ts +0 -86
  36. package/src/lib/components/toggle/toggle.component.css +0 -51
  37. package/src/lib/components/toggle/toggle.component.html +0 -12
  38. package/src/lib/components/toggle/toggle.component.ts +0 -33
  39. package/src/lib/components/toggle-button/toggle-button.component.css +0 -22
  40. package/src/lib/components/toggle-button/toggle-button.component.html +0 -10
  41. package/src/lib/components/toggle-button/toggle-button.component.ts +0 -40
  42. package/src/lib/components/uploader/uploader.component.css +0 -49
  43. package/src/lib/components/uploader/uploader.component.html +0 -23
  44. package/src/lib/components/uploader/uploader.component.ts +0 -59
  45. package/src/lib/custom-controls/dispatch-to-clinic/dispatch-to-clinic.component.html +0 -78
  46. package/src/lib/custom-controls/dispatch-to-clinic/dispatch-to-clinic.component.ts +0 -44
  47. package/src/lib/form-builder.css +0 -9
  48. package/src/lib/fx-builder-wrapper.component.ts +0 -68
  49. package/src/lib/fx-builder-wrapper.service.ts +0 -38
  50. package/src/lib/panel/configuration-panel/configuration-panel.component.css +0 -154
  51. package/src/lib/panel/configuration-panel/configuration-panel.component.html +0 -162
  52. package/src/lib/panel/configuration-panel/configuration-panel.component.ts +0 -120
  53. package/src/lib/panel/settings-panel/settings-panel.component.css +0 -30
  54. package/src/lib/panel/settings-panel/settings-panel.component.html +0 -28
  55. package/src/lib/panel/settings-panel/settings-panel.component.ts +0 -23
  56. package/src/public-api.ts +0 -8
  57. package/tsconfig.lib.json +0 -15
  58. package/tsconfig.lib.prod.json +0 -13
  59. package/tsconfig.spec.json +0 -15
@@ -0,0 +1,718 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, inject, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
3
+ import * as i1 from '@instantsys-labs/fx';
4
+ import { FxUtils, FxBaseComponent, FxStringSetting, FxValidatorService, FxComponent, FxMode, FxSelectSetting, FxScope, FxComponentBuilder, FxFormComponent } from '@instantsys-labs/fx';
5
+ import { BehaviorSubject, Subject, takeUntil } from 'rxjs';
6
+ import * as i2 from '@angular/common';
7
+ import { CommonModule } from '@angular/common';
8
+ import * as i1$1 from '@angular/forms';
9
+ import { FormBuilder, Validators, ReactiveFormsModule, FormsModule, FormControl, UntypedFormControl } from '@angular/forms';
10
+ import { HttpClient } from '@angular/common/http';
11
+ import * as i3 from 'primeng/button';
12
+ import { ButtonModule } from 'primeng/button';
13
+ import { InputTextModule } from 'primeng/inputtext';
14
+ import * as i5 from 'primeng/dialog';
15
+ import { DialogModule } from 'primeng/dialog';
16
+ import { DropdownModule } from 'primeng/dropdown';
17
+ import * as i4 from 'primeng/api';
18
+ import { v4 } from 'uuid';
19
+
20
+ class FxBuilderWrapperService {
21
+ fxComponentRegistry;
22
+ variables$ = new BehaviorSubject(null);
23
+ constructor(fxComponentRegistry) {
24
+ this.fxComponentRegistry = fxComponentRegistry;
25
+ }
26
+ registerCustomComponent(title, selector, component) {
27
+ this.fxComponentRegistry.registerComponent(selector, component, {
28
+ registeringAs: "CUSTOM",
29
+ libraryItem: {
30
+ title,
31
+ icon: 'fa-eye',
32
+ fxData: {
33
+ id: null,
34
+ name: selector,
35
+ value: "",
36
+ selector: selector,
37
+ elements: [],
38
+ events: []
39
+ }
40
+ },
41
+ });
42
+ }
43
+ getComponent(selector) {
44
+ return this.fxComponentRegistry.getComponent(selector);
45
+ }
46
+ getInitializedFxForm() {
47
+ return FxUtils.createNewForm();
48
+ }
49
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FxBuilderWrapperService, deps: [{ token: i1.FxComponentRegistryService }], target: i0.ɵɵFactoryTarget.Injectable });
50
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FxBuilderWrapperService, providedIn: 'root' });
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FxBuilderWrapperService, decorators: [{
53
+ type: Injectable,
54
+ args: [{
55
+ providedIn: 'root'
56
+ }]
57
+ }], ctorParameters: () => [{ type: i1.FxComponentRegistryService }] });
58
+
59
+ class DispatchToClinicComponent extends FxBaseComponent {
60
+ cdr;
61
+ fb = inject(FormBuilder);
62
+ clinicAddress$ = new BehaviorSubject({});
63
+ dispatchForm = this.fb.group({
64
+ courierName: ['', Validators.required],
65
+ trackingNumber: ['', Validators.required],
66
+ trackingUrl: ['', [Validators.required, Validators.pattern('https?://.+')]],
67
+ notes: ['', Validators.required]
68
+ });
69
+ constructor(cdr) {
70
+ super(cdr);
71
+ this.cdr = cdr;
72
+ this.onInit.subscribe(() => {
73
+ this._register(this.dispatchForm);
74
+ });
75
+ }
76
+ settings() {
77
+ return [new FxStringSetting({ key: 'heading-text', $title: 'Heading Text', value: 'My Default Value' })];
78
+ }
79
+ validations() {
80
+ return [FxValidatorService.required];
81
+ }
82
+ copyToClipboard(address) {
83
+ navigator.clipboard.writeText(address);
84
+ }
85
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DispatchToClinicComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
86
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DispatchToClinicComponent, isStandalone: true, selector: "lib-dispatch-to-clinic", usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\">\r\n <section\r\n class=\"justify-content-around lg:justify-content-between w-full white-color border-1 border-solid stroke_light_grey p-3 mb-3 mt-3\">\r\n <form [formGroup]=\"dispatchForm\">\r\n <div class=\"grid\">\r\n <!-- Courier Name -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"courierName\" class=\"input-title\">Courier Name</label>\r\n <input autocomplete=\"off\" formControlName=\"courierName\" type=\"text\" id=\"courierName\"\r\n name=\"courierName\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter courier name\" />\r\n\r\n <!-- validation -->\r\n <small *ngIf=\"dispatchForm.get('courierName')?.invalid && dispatchForm.get('courierName')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Courier Name is required.\r\n </small>\r\n <!-- validation -->\r\n </div>\r\n <!-- Courier Name -->\r\n\r\n <!-- Tracking Number -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"trackingNumber\" class=\"input-title\">Tracking Number</label>\r\n <input autocomplete=\"off\" formControlName=\"trackingNumber\" type=\"text\" id=\"trackingNumber\"\r\n name=\"trackingNumber\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter tracking number\" />\r\n <small\r\n *ngIf=\"dispatchForm.get('trackingNumber')?.invalid && dispatchForm.get('trackingNumber')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Tracking Number is required.\r\n </small>\r\n </div>\r\n <!-- Tracking Number -->\r\n\r\n <!-- Tracking URL -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"trackingUrl\" class=\"input-title\">Tracking URL</label>\r\n <input autocomplete=\"off\" formControlName=\"trackingUrl\" type=\"text\" id=\"trackingUrl\"\r\n name=\"trackingUrl\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter tracking url\" />\r\n <small *ngIf=\"dispatchForm.get('trackingUrl')?.invalid && dispatchForm.get('trackingUrl')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n <span *ngIf=\"dispatchForm.get('trackingUrl')?.errors?.['required']\">Tracking URL is\r\n required.</span>\r\n <span *ngIf=\"dispatchForm.get('trackingUrl')?.errors?.['pattern']\">Invalid URL format.</span>\r\n </small>\r\n </div>\r\n <!-- Tracking URL -->\r\n\r\n <!-- Notes -->\r\n <div class=\"col-12 md:col-6 input-container\">\r\n <label for=\"notes\" class=\"input-title\">Notes</label>\r\n <textarea autocomplete=\"off\" formControlName=\"notes\" rows=\"5\" id=\"notes\" name=\"notes\"\r\n class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter notes\"></textarea>\r\n <small *ngIf=\"dispatchForm.get('notes')?.invalid && dispatchForm.get('notes')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Notes are required.\r\n </small>\r\n </div>\r\n <!-- Notes -->\r\n\r\n <!-- Address with Copy Icon -->\r\n <div class=\"col-12 md:col-6 pt-0\">\r\n <div class=\"mb-1\">Address</div>\r\n <ng-container *ngIf=\"(clinicAddress$ | async) as address\">\r\n <address #completeAddress>{{address?.street}}, {{address?.state}}, {{address?.postalCode}}\r\n <i class=\"pi pi-copy cursor-pointer text-xl text-secondary-color\"\r\n (click)=\"copyToClipboard(completeAddress.textContent)\"></i>\r\n </address>\r\n </ng-container>\r\n </div>\r\n <!-- Address with Copy Icon -->\r\n </div>\r\n </form>\r\n </section>\r\n</fx-component>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }] });
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DispatchToClinicComponent, decorators: [{
89
+ type: Component,
90
+ args: [{ selector: 'lib-dispatch-to-clinic', standalone: true, imports: [CommonModule, ReactiveFormsModule, FormsModule, FxComponent], template: "<fx-component [fxData]=\"fxData\">\r\n <section\r\n class=\"justify-content-around lg:justify-content-between w-full white-color border-1 border-solid stroke_light_grey p-3 mb-3 mt-3\">\r\n <form [formGroup]=\"dispatchForm\">\r\n <div class=\"grid\">\r\n <!-- Courier Name -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"courierName\" class=\"input-title\">Courier Name</label>\r\n <input autocomplete=\"off\" formControlName=\"courierName\" type=\"text\" id=\"courierName\"\r\n name=\"courierName\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter courier name\" />\r\n\r\n <!-- validation -->\r\n <small *ngIf=\"dispatchForm.get('courierName')?.invalid && dispatchForm.get('courierName')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Courier Name is required.\r\n </small>\r\n <!-- validation -->\r\n </div>\r\n <!-- Courier Name -->\r\n\r\n <!-- Tracking Number -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"trackingNumber\" class=\"input-title\">Tracking Number</label>\r\n <input autocomplete=\"off\" formControlName=\"trackingNumber\" type=\"text\" id=\"trackingNumber\"\r\n name=\"trackingNumber\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter tracking number\" />\r\n <small\r\n *ngIf=\"dispatchForm.get('trackingNumber')?.invalid && dispatchForm.get('trackingNumber')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Tracking Number is required.\r\n </small>\r\n </div>\r\n <!-- Tracking Number -->\r\n\r\n <!-- Tracking URL -->\r\n <div class=\"col-12 sm:col-6 md:col-3 input-container\">\r\n <label for=\"trackingUrl\" class=\"input-title\">Tracking URL</label>\r\n <input autocomplete=\"off\" formControlName=\"trackingUrl\" type=\"text\" id=\"trackingUrl\"\r\n name=\"trackingUrl\" class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter tracking url\" />\r\n <small *ngIf=\"dispatchForm.get('trackingUrl')?.invalid && dispatchForm.get('trackingUrl')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n <span *ngIf=\"dispatchForm.get('trackingUrl')?.errors?.['required']\">Tracking URL is\r\n required.</span>\r\n <span *ngIf=\"dispatchForm.get('trackingUrl')?.errors?.['pattern']\">Invalid URL format.</span>\r\n </small>\r\n </div>\r\n <!-- Tracking URL -->\r\n\r\n <!-- Notes -->\r\n <div class=\"col-12 md:col-6 input-container\">\r\n <label for=\"notes\" class=\"input-title\">Notes</label>\r\n <textarea autocomplete=\"off\" formControlName=\"notes\" rows=\"5\" id=\"notes\" name=\"notes\"\r\n class=\"p-inputtext p-component p-element input-field border-1 w-full\"\r\n placeholder=\"enter notes\"></textarea>\r\n <small *ngIf=\"dispatchForm.get('notes')?.invalid && dispatchForm.get('notes')?.touched\"\r\n class=\"text-danger-color block mt-1\">\r\n Notes are required.\r\n </small>\r\n </div>\r\n <!-- Notes -->\r\n\r\n <!-- Address with Copy Icon -->\r\n <div class=\"col-12 md:col-6 pt-0\">\r\n <div class=\"mb-1\">Address</div>\r\n <ng-container *ngIf=\"(clinicAddress$ | async) as address\">\r\n <address #completeAddress>{{address?.street}}, {{address?.state}}, {{address?.postalCode}}\r\n <i class=\"pi pi-copy cursor-pointer text-xl text-secondary-color\"\r\n (click)=\"copyToClipboard(completeAddress.textContent)\"></i>\r\n </address>\r\n </ng-container>\r\n </div>\r\n <!-- Address with Copy Icon -->\r\n </div>\r\n </form>\r\n </section>\r\n</fx-component>" }]
91
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
92
+
93
+ class ConfigurationPanelComponent {
94
+ fb;
95
+ visible = false;
96
+ isVisible = new EventEmitter();
97
+ configuration = new EventEmitter();
98
+ rows = 1;
99
+ enableAPI = false;
100
+ api = '';
101
+ dynamicForm;
102
+ columnTypes = ['text', 'input-text', 'input-number', 'dropdown', 'smart-dropdown', 'checkbox', 'radio', 'radio-group', 'file-upload', 'textarea'];
103
+ constructor(fb) {
104
+ this.fb = fb;
105
+ this.dynamicForm = this.fb.group({
106
+ columns: this.fb.array([])
107
+ });
108
+ }
109
+ ngOnInit() {
110
+ this.addColumn();
111
+ }
112
+ get columns() {
113
+ return this.dynamicForm.get('columns');
114
+ }
115
+ // **🔹 Add Column Dynamically**
116
+ addColumn() {
117
+ const columnFormGroup = this.fb.group({
118
+ header: ['', Validators.required],
119
+ cellType: ['', Validators.required],
120
+ placeholder: '',
121
+ options: this.fb.array([]),
122
+ apiUrl: '',
123
+ valueKey: '',
124
+ labelKey: '',
125
+ className: '',
126
+ apiKey: ''
127
+ });
128
+ this.columns.push(columnFormGroup);
129
+ }
130
+ removeColumn(index) {
131
+ if (this.columns.length > 1) {
132
+ this.columns.removeAt(index);
133
+ }
134
+ }
135
+ // **🔹 Duplicate Column**
136
+ duplicateColumn(index) {
137
+ const currentColumn = this.columns.at(index).value;
138
+ const duplicateColumn = this.fb.group({
139
+ header: [currentColumn.header, Validators.required],
140
+ cellType: [currentColumn.cellType, Validators.required],
141
+ placeholder: [currentColumn.placeholder],
142
+ apiUrl: [currentColumn.apiUrl],
143
+ valueKey: [currentColumn.valueKey],
144
+ labelKey: [currentColumn.labelKey],
145
+ className: [currentColumn.className],
146
+ apiKey: [currentColumn.apiKey],
147
+ options: this.fb.array(currentColumn.options.map((option) => this.fb.group({
148
+ optionName: [option.optionName, Validators.required],
149
+ optionValue: [option.optionValue, Validators.required]
150
+ })))
151
+ });
152
+ this.columns.insert(index + 1, duplicateColumn);
153
+ }
154
+ // **🔹 Add Options Dynamically**
155
+ addOption(columnIndex) {
156
+ const optionGroup = this.fb.group({
157
+ optionName: ['', Validators.required],
158
+ optionValue: ['', Validators.required]
159
+ });
160
+ this.getOptions(columnIndex).push(optionGroup);
161
+ }
162
+ // **🔹 Get Options FormArray for a Specific Column**
163
+ getOptions(columnIndex) {
164
+ return this.columns.at(columnIndex).get('options');
165
+ }
166
+ // **🔹 Close Dialog**
167
+ closeDialog() {
168
+ this.isVisible.emit(false);
169
+ }
170
+ // **🔹 Save Configuration**
171
+ saveConfiguration() {
172
+ this.configuration.emit({
173
+ rows: this.rows,
174
+ columns: this.dynamicForm.value?.columns,
175
+ enableAPI: this.enableAPI,
176
+ api: this.api
177
+ });
178
+ this.isVisible.emit(false);
179
+ }
180
+ onSubmit() {
181
+ console.log("Value columns formArray", this.dynamicForm.value);
182
+ }
183
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigurationPanelComponent, deps: [{ token: i1$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
184
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ConfigurationPanelComponent, isStandalone: true, selector: "fx-configuration-panel", inputs: { visible: "visible" }, outputs: { isVisible: "isVisible", configuration: "configuration" }, ngImport: i0, template: "<p-dialog header=\"Edit Configurations\" [modal]=\"true\" [draggable]=\"false\" [(visible)]=\"visible\" [style]=\"{width: '70rem'}\" class=\"customDialogClass\">\r\n <!-- <ng-template pTemplate=\"header\">\r\n <div class=\"flex p-2 bg-white border-2\">\r\n <p class=\"text-base\">Edit Configurations</p>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"flex flex-col gap-4 bg-white p-2 border-2 border-gray-200\">\r\n <div class=\"flex items-center gap-4 mb-8 w-full\">\r\n <div class=\"w-1/3\">\r\n <label for=\"rows\" class=\"font-semibold w-24\">Rows</label>\r\n <input type=\"text\" [disabled]=\"enableAPI\" [(ngModel)]=\"rows\" placeholder=\"rows\" class=\"form__input\" id=\"name\" autocomplete=\"rows\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n <label for=\"enableAPI\" class=\"font-semibold w-24\">Enable API</label>\r\n <input type=\"checkbox\" [(ngModel)]=\"enableAPI\" placeholder=\"API Url\" id=\"enableAPI\" autocomplete=\"enableAPI\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n @if (enableAPI) {\r\n <ng-container>\r\n <label for=\"api\" class=\"font-semibold w-24\">API</label>\r\n <input type=\"text\" [(ngModel)]=\"api\" placeholder=\"Enter API Url\" id=\"api\" class=\"form__input\" autocomplete=\"api\" />\r\n </ng-container>\r\n }\r\n </div> \r\n \r\n </div>\r\n <!-- <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n \r\n </div>\r\n \r\n \r\n </div>\r\n \r\n <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n \r\n \r\n </div> -->\r\n \r\n <div class=\"flex flex-wrap gap-4 mb-8\">\r\n \r\n <div class=\"w-full flex items-center justify-between\">\r\n <p class=\"text-sm font-semibold\">Columns:</p>\r\n <!-- <button type=\"button\" (click)=\"addColumn()\" class=\"custom-save-button\">Add Column</button> -->\r\n </div>\r\n \r\n <div class=\"w-full overflow-x-auto\">\r\n <form [formGroup]=\"dynamicForm\" (ngSubmit)=\"onSubmit()\">\r\n <!-- Flex container with nowrap to keep all columns in a single row -->\r\n <div formArrayName=\"columns\" class=\"flex gap-4 flex-nowrap whitespace-nowrap\">\r\n <div *ngFor=\"let column of columns.controls; let i = index\" [formGroupName]=\"i\" \r\n class=\"border p-4 rounded-lg min-w-[20rem] flex-shrink-0 card-width\">\r\n <div class=\"top-2 right-2 flex gap-2 justify-end\">\r\n <button type=\"button\" (click)=\"duplicateColumn(i)\" \r\n class=\"bg-green-500 text-white px-3 py-1 rounded-md hover:bg-green-600\">\r\n \u2795\r\n </button>\r\n <button type=\"button\" (click)=\"removeColumn(i)\" \r\n class=\"text-white px-3 py-1 rounded-md hover:bg-red-600\" *ngIf=\"columns.length>1\">\r\n \u274C\r\n </button>\r\n </div>\r\n <!-- Columns in a Single Row -->\r\n <div class=\"grid grid-cols-1 gap-4 items-center mb-2\">\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Name:</label>\r\n <input formControlName=\"header\" placeholder=\"Enter Column Name\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Type:</label>\r\n <select formControlName=\"cellType\" class=\"w-full border rounded-md px-3 py-2\">\r\n <option *ngFor=\"let type of columnTypes\" [value]=\"type\">{{ type }}</option>\r\n </select>\r\n </div>\r\n @if (enableAPI) {\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">API Value Key:</label>\r\n <input formControlName=\"apiKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n }\r\n \r\n </div>\r\n <div *ngIf=\"['radio-group', 'dropdown'].includes(column.value.cellType)\" class=\"mt-2\">\r\n\r\n <label class=\"font-semibold\">Options:</label>\r\n \r\n <div formArrayName=\"options\">\r\n <div *ngFor=\"let option of getOptions(i).controls; let j = index\" [formGroupName]=\"j\" \r\n class=\"grid grid-cols-1 gap-4 items-center mt-2\">\r\n <input formControlName=\"optionName\" placeholder=\"Enter Option Name\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <input formControlName=\"optionValue\" placeholder=\"Enter Option Value\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <button type=\"button\" (click)=\"getOptions(i).removeAt(j)\" \r\n class=\"col-span-2 bg-red-500 text-white px-2 py-1 rounded-md hover:bg-red-600\">\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n <button type=\"button\" (click)=\"addOption(i)\" class=\"custom-save-button justify-end\">Add Option</button>\r\n </div>\r\n \r\n \r\n <div *ngIf=\"['smart-dropdown'].includes(column.value.cellType)\" class=\"grid grid-cols-1 gap-4 mt-4\">\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">API Url:</label>\r\n <input formControlName=\"apiUrl\" placeholder=\"Enter API URL\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Value Key:</label>\r\n <input formControlName=\"valueKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Label Key:</label>\r\n <input formControlName=\"labelKey\" placeholder=\"Enter Label Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n \r\n \r\n \r\n \r\n </div>\r\n \r\n </div>\r\n\r\n\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <!-- <hr class=\"mt-3 mx-2 mb-0 opacity-10\"> -->\r\n <!-- <div class=\"flex justify-end gap-4 w-full\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\" />\r\n <p-button styleClass=\"border border-indigo-600\" label=\"Save\" (click)=\"saveConfiguration()\" />\r\n </div> -->\r\n <div class=\"flex justify-center my-3\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\"\r\n styleClass=\"border-gray-400\" />\r\n <p-button label=\"Attach\" label=\"Save\" (click)=\"saveConfiguration()\" \r\n styleClass=\"cta_buttons text-medium button_text_white secondary-color border-1 stroke_secondary no_hightlight no_hightlight_stroke h-max mr-2 w-6rem custom-save-button\"\r\n />\r\n </div>\r\n </ng-template>\r\n</p-dialog>", styles: [".p-overflow-hidden{overflow:hidden;padding-right:var(--scrollbar-width)}@layer primeng{.p-component,.p-component *{box-sizing:border-box}.p-hidden{display:none}.p-hidden-space{visibility:hidden}.p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.p-hidden-accessible input,.p-hidden-accessible select{transform:scale(0)}.p-reset{margin:0;padding:0;border:0;outline:0;text-decoration:none;font-size:100%;list-style:none}.p-disabled,.p-disabled *{cursor:default!important;pointer-events:none}.p-component-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.p-unselectable-text{-webkit-user-select:none;user-select:none}.p-scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}@-webkit-keyframes p-fadein{0%{opacity:0}to{opacity:1}}@keyframes p-fadein{0%{opacity:0}to{opacity:1}}input[type=button],input[type=submit],input[type=reset],input[type=file]::-webkit-file-upload-button,button{border-radius:0}.p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:0;cursor:pointer;-webkit-user-select:none;user-select:none}.p-link:disabled{cursor:default}.p-sr-only{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.p-connected-overlay{opacity:0;transform:scaleY(.8);transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1)}.p-connected-overlay-visible{opacity:1;transform:scaleY(1)}.p-connected-overlay-hidden{opacity:0;transform:scaleY(1);transition:opacity .1s linear}.p-toggleable-content.ng-animating{overflow:hidden}.p-icon-wrapper{display:inline-flex}.p-icon{display:inline-block}.p-icon-spin{-webkit-animation:p-icon-spin 2s infinite linear;animation:p-icon-spin 2s infinite linear}}@-webkit-keyframes p-icon-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes p-icon-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@layer primeng{.p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}}@layer primeng{.p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default;pointer-events:none}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\"p\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-button-group .p-button{margin:0}.p-button-group .p-button:focus,.p-button-group p-button:focus .p-button,.p-buttonset .p-button:focus,.p-buttonset p-button:focus .p-button{position:relative;z-index:1}.p-button-group .p-button:not(:last-child),.p-button-group .p-button:not(:last-child):hover,.p-button-group p-button:not(:last-child) .p-button,.p-button-group p-button:not(:last-child) .p-button:hover,.p-buttonset .p-button:not(:last-child),.p-buttonset .p-button:not(:last-child):hover,.p-buttonset p-button:not(:last-child) .p-button,.p-buttonset p-button:not(:last-child) .p-button:hover{border-right:0 none}.p-button-group .p-button:not(:first-of-type):not(:last-of-type),.p-button-group p-button:not(:first-of-type):not(:last-of-type) .p-button,.p-buttonset .p-button:not(:first-of-type):not(:last-of-type),.p-buttonset p-button:not(:first-of-type):not(:last-of-type) .p-button{border-radius:0}.p-button-group .p-button:first-of-type:not(:only-of-type),.p-button-group p-button:first-of-type:not(:only-of-type) .p-button,.p-buttonset .p-button:first-of-type:not(:only-of-type),.p-buttonset p-button:first-of-type:not(:only-of-type) .p-button{border-top-right-radius:0;border-bottom-right-radius:0}.p-button-group .p-button:last-of-type:not(:only-of-type),.p-button-group p-button:last-of-type:not(:only-of-type) .p-button,.p-buttonset .p-button:last-of-type:not(:only-of-type),.p-buttonset p-button:last-of-type:not(:only-of-type) .p-button{border-top-left-radius:0;border-bottom-left-radius:0}p-button[iconpos=right] spinnericon{order:1}}@layer primeng{.p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-checkbox-disabled{cursor:default!important;pointer-events:none}.p-checkbox-box{display:flex;justify-content:center;align-items:center}p-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.p-checkbox-label{line-height:1}}.p-colorpicker-panel .p-colorpicker-color{background:transparent url('data:image/png,\\fffdPNG%0D%0A\u001A%0A\\0\\0\\0%0DIHDR\\0\\0\\0\\fffd\\0\\0\\0\\fffd\b\u0006\\0\\0\\0<\u0001q\\fffd\\0\\0\\0%09pHYs\\0\\0\v\u0013\\0\\0\v\u0013\u0001\\0\\fffd\\fffd\u0018\\0\\0\\0 cHRM\\0\\0z-\\0\\0\\fffd\\fffd\\0\\0\\fffd\\fffd\\0\\0\\fffdR\\0\\0qE\\0\\0\\fffd f\\0\\0 9\u0007\\0\\0!\\fffd\u0003\\'\\fffdV\\0\\0\\'\\fffdIDATx\\fffd\\fffd}\\2ce\\fffdH\\fffd\\fffd\u001A\\'\\fffd\\fffd\u001E\\fffdO\\fffd;\\fffd\u000F\\fffd 8\\fffdn\\fffd\\fffd]\\755Y\\fffd\\fffd\u000F\\fffd=\u0014\\fffd%\u0014\\fffd\\fffd\\fffd\\fffdG\\fffd\u0002\\fffd%09 \u0010\\fffdN:\\fffd\\fffd(T\u0011\u0015U36w\\fffd/3\\fffd\\fffd f\\fffd 03\\fffd\\fffd\\fffd\u001B=\\fffd\\fffd\\fffd\\fffd;\\fffd\\fffd\\fffd\\fffd\\fffd~\\fffd 6w/\\fffdW=\\fffdx\\fffd\\fffd 1\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd\\1e2\\fffd\\fffd\\c?\\fffd\\fffd\\fffd\\fffd\\fffdw\u001C\\fffd\\fffdZ\\fffd\\fffd\\77d\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\77f}\\fffd\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd\\fffd cf\\fffdk\u0007\\fffd\\fffdy\u0016O\\fffdl@\" \\fffdN\\533z\\fffd\\fffd\\f203\\fffd\\fffd 1\u0012\\fffd\\fffd\\fffd\\0\u0010\\fffd\u0018\\fffd\\fffd\\fffdyvq\\fffd\\fffd\\fffd\\fffd%09\\fffd\\fffd\\fffd\u0006\\fffd\\fffd\\fffd\\7fad\\fffd\\fffd\\6ce\\fffd\u0006\\fffd\\fffdx<\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u001F\u001F\u001F\\fffd\\fffd\\fffdw\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdO?\\fffd_\\fffd\\fffdW\\fffd\\fffd{\\fffdz|\\fffdI\\fffd\\640\\fffds\\fffd^<\\fffd\\fffd/\\\\\\fffdo\\fffd\\fffd\\fffdN?\\fffdo23\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd 9?v<\\fffd\\fffd\\fffd\\fffdo\\fffd\\fffdv\u0010\\fffd\\5cf}v\\fffdl;\\fffd\\fffdk\\fffd|>\\fffd\\fffd|\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdn\\fffd\\fffd\\fffdn7\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdO?\\fffd d\\7fe}\\fffd/\\fffd\u000F\\fffd~h\\fffd ffm\\fffd\\1035\\fffdV\\fffd\\fffd\\fffd\\7381%0D\u001E\\fffd\u0006=\\fffd\\fffd\\fffd*\\fffd}\\fffd\\\\<\\fffd\\fffd\\fffdm\u0007>\\fffd\\fffd\u0005\\fffd\u0018\u001C\v\\fffdy\\fffdG\\fffd 7\\0\\fffd F\\0r\\0V\u001B@\\fffd\\fffdt\\fffd\\fffd\\fffd\\fffd\\fffd|Z\\ff4d\\fffd\\fffd\\1e3=\u001E\\fffd\\fffd~\\fffd\\fffd\\fffdv\\cf3cf\\fffd\\fffd\\fffd\u000F\\fffd\\fffd\\fffd[\\fffd\\fffd\\fffd_\\fffd?\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd~\\fffd\\fffd\\fffd\\fffdx<\\697\\fffd\\fffd\\289\\fffd\\fffd\u0015\\fffd\u0004\\'o%0A\u0010\\fffdl\\fffd\\fffdr\u0002\\fffd\\0\\fffd\\fffd D\\fffd\\58e\u0013\\fffd\u0017B\\fffdY\\c\u0012\\fffd\u0001\\fffd\\fffd\\fffd\\fffd\\fffd 6xlj\\fffd\\fffd[km\\fffd[k\\fffd\\fffd[\\fffd=\u0004\u0016E\\fffd%23R\\fffd\\fffd\u0007\\fffd\\fffds~\u0002\\448R;\\fffd|\\fffdP}\\fffd\\6de\\fffdg\\fffd\\fffd\\fffd\\fffdn;\u0005\\fffd\\5ef_\\fffd_\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd/\\fffd\\fffd\\5ef_\\fffd\\fffd|\\fffd\u0014X00)\\fffd\\fffd\u0011&\u0004g!\\fffd\\fffd\\'^\\0I\\fffdM\u0015\\fffd a$%0A\\fffd\\fffd\u0001\\fffd\\fffd\\fffd FA\\fffd 9\\fffd\\fffd\\fffd A\\fffd 0\\fffd\\fffd c\\fffd\u0011\\fffdN\\fffd 6\\fffd\\fffd\u0007\\fffd\\fffd 1\\fffd\\fffd\\fffd\\fffd{\\fffd\\fffd`rw{<\u001E\u0003X\\fffd|>}\\0\\fffdv\\fffd\\fffd\\fffd\\fffd f\\fffd\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffdo\\fffd\u001D\\fffd\\fffd\\fffd\\fffd_\\fffd\\fffd\\5ef\\fffd\\fffdo\\fffdY\\fffd}%0A\\fffd\\fffd\\fffd\"m\\fffd\"[\\fffd\\fffd\\1a0\\fffd\\fffd;\\fffd\\fffd\\fffd\\fffd\\fffd\u0010\\fffd\\fffd DT\\fffd\\fffd.\u0003V\\fffdx\u0003$\\fffd\\fffd\\fffd.`\"\\fffd 4\\0\\519\\fffd\\fffdl\\fffd\u0019\u0002\\fffd 0B\\fffd\\fffd\\fffd\\7fe\\fffd 6\u0004\\fffd\\fffd{?\"\u0016\u0002\v5\\fffd\\fffd~\\fffd\\fffd\\fffd\u000F\\fffd\\fffd\\fffdG\\fffd\\fffd\\fffdh\\fffd\\fffd\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdv\\fffd\\fffd\u000E\\fffd(RT\u0001\\fffd\\fffdg\"N\\fffdH\\fffd\\fffd*\\fffd\\fffd|\\fffd\b \\fffd\\fffd\\fffd\\fffd\\fffdZ\\d3\\fffd\\fffd 5\\cb\u0011%23z\\0\\fffd\\fffdG\u0001Pf\\fffdr\u0012\\5ca\\fffd\u001A\\fffd\\fffd\u001E\\fffd\u0006x\u001AF,\\fffdQ\\fffd\\fffd\\fffd\\fffd\\fffdv\u001D5@5\\fffd\\6ee\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdn\\fffd\\fffd\\fffd\\fffd\\fffd\\7ff\\fffd\\fffd~\\fffd\\fffd}||\\c\\fffd\\fffd~\\fffd\\fffd\\fffdn\\fffd\\fffd=\u001E\\fffd ffZcU\\fffd 5\\fffd d+\\0\\fffd-\\fffd\\b20e<H *\\fffdNQ\\fffd\\fffd D^\\fffdK\u0006\u0011\\fffdG\\fffd\"\\0!\\fffdu\\fffd/\\fffdK\\fffd\\fffd f`\\fffd\\fffd\\fffd D\\fffd\\fffd\b\\fffd A\\fffd%23za\\fffd\u001AT\\fffdk\\fffd\\fffd\\fffd\\fffd\\fffd,pD,\\fffd\\fffd\\fffd\\fffdo\\7fe%0D!o?~\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd B\\fffd\u001E\\\\\\fffd/\\464 8\\fffd>\\fffdt\u0019\\fffdI\\fffd(\\fffd)@\\fffd 1[!\\fffd\\fffd\u0019\u0015\\fffd\\fffd\\fffd\u001E\\fffd\\fffd\\fffd\u0016\\0\\fffd\\fffd\\fffd\\fffd`\\fffd\bu\\fffdk\\fffd\\fffd&\\fffd\\fffd d{;\\fffd a\u0004\\6d0\\fffd\bL\u0003h\\fffd\\fffd\\fffd\\0\\fffd\\fffd\\fffd\\fffd]S\\fffd\\fffd\\fffd@\\fffd\\fffd\u0001*\u0004\\fffd\\0\\4b7o\\fffd\\fffd\\fffd\\fffd\\1f6\\fffd\u0001,\\fffdP\\fffd\\cO\\fffdZHRs\\fffd e\\fffd\u00118\\fffd 82\\fffd\u0005\\78fGQ\\fffd\\fffd=ff\u0002\u0014\\fffd\u0017X\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd 5p\\fffd\u0018t\\fffd\\f0$]u\\fffd\\fffd a\u001B\\c:DKa\\8a9d\\fffdl\\fffd\\fffd\u0013\\fffd=\\fffd\\3f6G\\fffdv\\fffd\\fffd\\6ee\\fffdNT\\fffd\\fffd?>>\\fffd\\fffd\\1c7=\u001E\\fffd\\fffd\\fffdx\\fffd\u0011\u00199bM\\fffd\\fffd,J\\fffd\\fffd\\fffd\u0005\\fffd\\fffd\u0001\\fffd\"\\a2f2 1\\fffdG\\fffd|\u0011y\u001C\\fffdsa\u0007x$\\4154h\\fffd)\\fffd@6\u001Cn\\fffdT\\fffd^\"1\\0 b%23\\fffd\\fffd%0D\\fffd\\fffd\\fffd\\fffds\\fffd d\\fffd%0D-\\fffd\\fffd@\u0007\\fffdj\u0018\\fffdGd\\fffd\u001F\\fffd}\\fffdVv\\fffd\\fffd\\fffd~\\fffd\\fffd\\fffd\\fffd%0DSt\b\\fffd}\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffdw{<\u001EG\\fffd\\fffdh\\fffd\\fffdQ\\fffd\\fffd*\u0003TK\"Oh\\fffd\\fffd\\c\\c897\\fffd\\fffdv\\fffd\\fffd\\fffd\\fffd\\fffd\\4f6\b\\fffdM\\0 FzP\\fffd\\fffd 5\u0006\\c\u001CsS\u0019\u001D\\fffd\u0001\\200\\fffd\\cJ.hn\\fffd 7\\fffdQ\\fffd\\fffd@C a&\\fffd\\fffdWuP\\fffdn\\fffdn\u0002Xv\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdn\\fffd\u001Bf\\fffd\\fffd\u0003qd\\fffd>\\fffd}\u0002\u0016g<\\fffdl+\\fffdrHApB\\fffd\\fffdw\\fffd\\fffd\\fffdV\\0\\fffd\u0005\\11c(\\fffd\\fffd m\u0001\\fffd\\fffdy\u0014\\fffd.\u0011p\\fffd\\fffd\u0010\\fffd\\fffd\\fffd.2-\\fffd c\u0016\\fffd\\'\\fffd\\fffd`\u0002 %0DZ\\fffd\u001C\\fffd\\fffd(\\fffd\\fffdj\\0iD)\\736!\\fffd\u0006\\fffd\\fffd\\235\\fffdQh\\0i\\0\\c\\fffd\\fffd\u0003\\fffd\u001F\u001F\u001F\u000E\u0011\\fffd\\fffd\\fffd^\\0U\\fffd\u001F\\'W\\42d\\fffd\\fffd\u001A\\9ca2\\fffd\\ch\u0002\\517\\c\u000F\\fffd\\fffd B^\u0001\\fffdu\\fffd\\fffd\u000EX\\fffd\\fffd\\fffd\u0011\\fffd\\fffd\u0003\\0N\\fffd\\fffd\\fffd\\fffd 9\u0007\\fffd\\fffd\u0013\\fffd\\fffd\u0001L\\fffd\\fffd\u001BF\\fffd\\fffd\\fffdyl{>\\fffd\\fffd\\78dpD\\fffd\\fffd%09\u000E\\fffdt\\fffd\\fffd\u0007\\fffd\\fffd\u000E\\fffd\\fffdG\\fffd~\\fffd\\fffd}\\fffd am\u0007\\fffd A\\fffd\\fffd\\fffd\\73d\\fffd\\fffdp\\fffd\\fffd%0A(-\u0013\\fffdx\\fffdK\u0003\\fffd 4\\fffd\\fffd 2\\fffd\\fffd 2\u001D%\u0004\\fffd\\6b6\u0012\\fffd\"\\fffdi\u0013T\\fffd\\fffd\u001A@\\fffd}\\fffd\\fffd\\fffd\u0001F\\fffd\\fffd F\\fffd\"\\fffd a\\fffd 2\\fffd\\fffd\\fffd\u001C\\fffd F&xh\\fffd\\fffd\\fffd\u0013\\fffd\\fffdY\\fffd 6\"\\fffd\u000E0\\fffd\\fffdn\u000E\\fffd\\fffd\\fffd 4k\\fffd\u000Ek\\fffd%0A\u0003\u0010\\fffdh\\fffd E\\fffd\b \u0015\\fffd E\u0011\\154\\fffd\\'\\fffd\\fffd 2NU\\fffd\\'\"\\fffd\u0001\u0005JG=+\\fffd 2x\\fffd\\fffd CJ\u001BB\u001E\\fffd\u0015\\fffd\u0012\\fffd\\fffd\bL\\fffd-\u0005\u0004\\fffd\\fffdU\\fffdu\\fffd\u0014 \v\\fffd\\fffd\\7cf9{\\fffd[_\\fffd\\fffd\\fffdw%0A\\fffd\\fffdn\\fffd\\fffd\\fffd\\fffdG\\fffd C[\\fffdv\\fffd\\fffd\\fffd\\3c61 E1>c\\fffd\\fffd\\fffd\\fffdP\\fffd\\'\u0002ODm\\fffd\\fffd\u001F\\fffd\u0012E8\u00052\\fffdh\\fffd(\\303\\fffd\u0001E\\fffd\\fffdQ\b\\fffd\u0017\u0001K\\fffd:%09E\\fffd 38\\fffd\\fffdr\\fffdo?a\u0017K\u0001\\fffdU\u001F\\fffdR\\8d33w\u0005\u001D\vH\\fffd\u0007\\fffd=\u001E\u000Fw\\fffd\\fffdn\u0018\\fffdgv\\fffd\\fffdmG\u0007\u0004GO3\\fffd\\4c8U\\fffd`\u0013\\fffdXf!\\43e\\fffd\\fffd\\fffd\u0010\\fffd\\fffd\\fffd\\fffd\\fffd 6p\\fffd\u0011L\u001C\\fffd\\fffd\\fffd\u0002U\\fffd\u0013\\fffdm\\fffd\\fffd 9eyG$\u001A\\fffd\u0003\\fffd\\fffd&\u0011\\fffd\u001D\\fffdN\\0;\\fffd\\fffd\\fffdkX%0A\\0\\fffd\\fffd\\fffduw\u001F\u0002\u001E;\u001A\u001A\\fffd`%0D=\\fffd\\fffd\\fffd\\fffdk\\fffd\\fffd\u0001;,\u000E3\\fffd\u0010XQ%09\\fffdR\\fffd\\fffd,\"%09cRQ!\\fffd)O\\fffd\\fffd)@\\fffd\\fffd\\fffd\\fffd 3\u0016\\0\\fffd\\fffd 1\\fffd&g\\fffd\u0007\\fffd\\0\v4\\fffd\\27b\\fffdl\u000FLOI\\fffd\\0\\fffd\u0011\\fffd\u0018d\\6fe\\fffd@\u0018\\fffd\\fffd+w}\\fffdg\u001B\\fffd f\\fffdX{\\fffdr\\fffd\u0018\\fffd\\fffdv\\fffd\\fffd|h*\u0004\\fffd\\0\\fffd\\fffd\\fffd_T\\fffd 4\u0003L\\fffd\\761\\fffd\\fffd\b\\fffd\\fffdkG\\fffd\\fffd[\u0007\\fffd\\fffd\\fffd\u0006\\fffd\u0003?\u001F \\fffd\\fffd\\fffd\u0014\\fffd 8%23\\fffdHo\u0011\\fffd 5\\fffd_\\fffdw\\0\\fffdO\u0004\\fffd 1\u001E\u0004,n\\fffds\\fffd\\fffd 9\\fffd\\fffd\\fffd)\\fffd\\fffd\\fffd\u00151\\fffd\\fffdx\\fffdH\\fffd\\fffd\\0\\fffd]C%0D\\fffd\\fffd 9\\fffd\\fffd\\fffd a3\\fffd%23\\fffd\\0\\fffd\\fffd[?\u001Cx,V\\fffd\\c;+\u000E\\\\|\u0011\\fffd\\fffd)5\u0006\\fffd\\fffd\\fffd\u001D\\fffd\\fffd\\fffd\\fffd\u0018\\fffd\\fffd\\452P\\fffd\\251OR+\\fffdL8JBC\\fffd\\fffd\\fffd 1a\u0013\\\\\\fffd 1\\fffd\u0006\bt\\fffd\\fffduA\\fffd\\708g\\0\\fffd%23\u0019\u0018\\fffd%09\\fffd\\13b C\u001B\\320\\fffd\u000E\\fffd\\fffd\\fffdN\\fffd\\fffd\\fffd\\fffdx\u000E\\fffd\\fffd\\fffd\\fffd\\686\\fffd\\fffd%23\\fffd 6\\fffd 8\\fffd\u0012[\\fffdGd\\fffd\u00028S\\fffdL_)\\fffd[=\\fffd\\fffd\u000E\\fffd\\fffd\\fffd>\\fffd@\\fffd\u001F\\eda0IE}\u001BL\u001C\\fffd D/\\fffd\\fffd dZ2H&\\fffd\\fffd E\\723\\fffd\u0010\u0018\\fffdln\"5\"-np\\fffd\\fffd F\\fffd\\fffd\\3b6SZC\\fffd\u0014\\fffd f\\0.\\fffd\u001B:P\\fffd\\fffd\\fffdl\\fffd\\fffd@\\fffd\u001F\\fffd\\fffd\\fffd\\6a7\\fffd\\fffd\\430U`\\fffd\\fffd]\\fffd\\\\Y\u0011-\u0002P\\fffd\\fffd\\fffd\\fffd b\\fffd\\fffd\\fffd\\fffdXD\\fffd.\\fffd 9\u0017\\fffdO\\fffdu\\fffd\\fffd\u0016\\fffd\\fffd\\fffd\\fffdX7\\fffd\\fffd\\fffd\u0003\\fffd 5\u0002\\fffd 6a1t0E\u0011dR\\fffd\u000F\\fffd\\fffd\\fffd 3\u0004{\\fffd c\\fffd\\fffd\\fffd\\fffd\u0004b\\fffd\\fffdlX\\1b9 D,\\fffd\\fffd*-& \\fffd\\fffd\\fffd\\fffd%09\\fffdy@\\fffd\\fffd\\fffdvn\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd-\\fffd\\fffd\\fffd\\fffdLX\u0003\u0017\u001D\u0015\\fffd\\c362\\560x\\9f23\\740\\fffd%0A\\0\\fffd\u001A\vg\\fffd 86\\fffd=\\fffdO7\\fffd\\fffd\\fffd\\fffd\\fffdw\\fffd\\fffd\\fffd\u0003\\fffd\\fffdn%\u001C\u0019\\fffd\\fffd\\432\\fffd D\\fffd%0A\\fffdg\\fffd 5\\fffd\u00120d%\u0016\\fffdT\\fffdRJD\\fffd\"\\fffd;\\fffd\u0006Aq\\fffdj\\fffd\\fffdY\\fffd\\fffdp\\fffd\\fffd\\fffd\\fffdV\\fffd\\fffd^\\fffd\\fffd\u0003\\fffd d\\fffd\\fffd 8*\\fffdZ\\fffd\\0@\\fffd\\fffd Zu(\\fffd\\c \u001ETH\\fffdx\\fffd 6\\cR\\fffd\\fffdm\u001Cs\\fffdt%23J\\fffdN\\fffd\u001B\\0\\fffdl7\\fffd\"V5Z\u00118<q\\fffd%23\\fffd 5u\\fffd@S\\fffd\\fffdP\\fffd(\u001F\u0003%23\\fffd*Bg\\fffdS\\fffd 7z\\fffd\\fffd\\fffd aL\\\\ \\fffd D\\fffd\\b92b:Lv8m\\fffd\\fffd\u001D\\fffd\\fffdN\\fffd\\fffd\u0007\\fffd\\fffd~\\fffd\\ced08%\u001Ep\\d3d2\\fffd\u001E\u0001\u001D\\fffd\u0006O\\fffd!\u0005\u0002\\6d4\\fffd\\fffd\u0005\\fffd\vr?\\232\\fffd\\fffd|X\u0012`G\\\\\\fffd\\fffd\u0001\\fffd\\fffd\\fffd\u0005\\fffd\\fffd D6AiFB\\fffd\\fffd\u0004\u001B\\fffd\\fffd\\'\\fffd\\fffdhnP\u000E|\\fffd%{\u0004%0As\\fffd^XXv\u0010\\fffd\\fffd\\fffd|\\fffd%0D\\fffd\u0016\\fffd\\fffdN\\fffd\\fffd C\\fffd\u001Ct\\fffd\\fffd\\fffdU0\\fffd 8\\fffdg\u0014\\fffd\\fffdR84\\fffdN\\fffd\\fffdj=0\\fffd\\fffdv\u0003\\fffd\\fffd\\fffd\b\u0015i\\fffd\u0006\\fffdM\\fffd\vk\u0019\u0004\b\\fffd C\\fffdUu\u0015\u0011Y\u0007\u0005\\fffd\\525\\fffd\"\\fffd%09m\\fffd\\fffd a\u0013\\fffd\\fffd%09\\fffd\u0001=\\fffd\\fffd\\fffd>\\fffd\u0019\\fffd\\fffdT$\\fffd\\8166(D\\fffd F\u0011kc*\\fffd%23%0DRacZ\\729\\fffd-\u000E\\fffd\\fffd\\fffdp\u0007S\\fffd f\\fffd\\164d\\fffd\u0012\\fffd\\fffd\\fffdJ:E\\fffdj\\fffd%\\fffd E49\\fffdL\\fffd\u0005\u000E\\fffd\\fffdY!\\fffd\\'},\u0006\u001A\u001B\\fffd\\fffd\\cp\\fffd\u001A\u0003\\fffd\\fffd\\fffd\\fffd\\fffd@@\\fffdJc\\fffd\\fffd@\\fffd\\fffd\u001F\u001F\\fffd ?\u0006\\fffd\u001DA7<*\u0006]\\fffd\\fffd 5\\fffdt48\\fffd\\fffd cB\\fffd\\fffd\\fffd\u0019\\fffd,\u0001U\\fffd\\fffd-\u0002\\fffd\u0005`\\fffd 3\\fffd\u0002\v\\fffd\\fffd\\5dc 3\u0016*\\fffd 8\\fffd\\fffdM\\fffd\\fffd<\u0002\u001B\u0014\\fffd%2309\u001B\\fffdH\\fffd\\fffd\\fffd]\\fffd\\fffd\\fffd\\fffd\u000E\\fffd;e\\fffd\u001B\\fffd\\1a0\\fffd\u0015\\0\\fffd!%0A\\fffd\\fffdwJ\\0\\fffd}+\u0004\u0013\\fffd*\\fffd\u001B\\fffd\\fffd\\fffd\u0017\\0 7\\fffd f\\fffdg\v y2\\fffd!r\\fffd%23\\fffd D\\fffd\\3c0v\\fffd\\fffd\u0011\\65e\\fffdRN\u0016\\fffd\\fffd\u0016M4\\fffd\u0019\\fffd\u0003\\fffd\\fffd\u0006|\\fffd\\fffd%0A\\7c7Z\\a939\\fffd\u001Ey\\fffd\u001EPP\\fffd\\fffd\\fffd\\fffd 9b\\fffd\\fffd\\fffdX\u0017\\fffd@\\fffd\\fffd%\\fffd\\fffd\\fffd\\fffd\\fffd E\\fffd\\fffd d\\fffdKDc\\fffd 8\\fffd dQ\\fffd\u0010\u0017\\410\u0016\u0003\\fffd\\fffd\\227\\fffdP\\fffdx\\fffd\\fffd\u001D\\fffd\\fffd\\fffd-\\fffd%0Aw0cI\\fffd\\fffdy\\fffdP\u001B\\fffdp\\fffdg\\fffd\\1e7\\206\\fffdr\\406 \\fffd\u001E\\fffd\u000E-3\u0016\\fffd%0D\u0013\\fffd\\fffd E\\fffd\v8\\fffd\\fffdR\\0$ps\\fffd E\\fffdVMQ\\fffd\u0010\\fffd 3-e\\fffd\\fffdoA\\fffd\\fffd\u0016\\fffd\\fffdT\u001F\u001F\\fffdh\\fffd%0AB\\fffd c%09\\fffd c\\fffd\u0006\\fffd\\fffd\\fffd\\fffd@\\fffd\\fffd\\fffdz<\u001E\\fffd%0A\\fffd B@\\fffd\\5415\\fffd\\fffd\u000Ei\u0012\\5cb\\fffd\\fffdo\\fffd\\fffd\\fffd%0AK`\"1\u001F%09\\fffdW(\\3c2\u0006\\fffd\u0019x<\\fffd@\\fffdKwL\\fffd\u0013J<\\fffd=\\fffd\u0010\\fffdN\\fffdI\\fffd\\fffd\\fffd_\\fffd\\fffd\\fffd\\fffd\u0019\\fffd\v@?&\\fffd\\fffdQc96\\fffd%0D\\fffd Bz\u001B6\\fffd\u0018Kl\\fffd\\fffd\\fffdjRk\\fffd\\fffd\\0\\517\\fffd 1b\\fffd\\fffd\u0006\\fffdL\\fffd c\\fffdh\\fffdzG\\fffdz\u0001\\fffd\\1b5\\fffd\u0004H\\c^\\fffd\\fffdW\\fffd\\fffd\u0005B\u001C\\fffd-\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd:E/\\fffd\\fffd^\\fffd\\fffd\\4a1\\fffd}2A\\fffd\u0010\\fffd\\0\"\\'*<(%0D%23\u0014\\0\\fffd\\fffd\\fffd\\fffd\"\\fffd\\fffd\\293!z\\\\W\\fffdTh\\fffd\\c aE[*\\fffd\\fffd\u0017\u0001Id\u00195^@\\fffdm\\fffd\\1ee\\fffd\\fffdY\\fffdr\\1f8\\fffdX\\fffd\u0006\\fffd\\fffd \u0007\\fffd\\fffd\\fffd eC\\\\\\fffd 1\\40f\u0012\\fffdh8\u0013\\fffd\\fffd\\fffdMQ!f\\fffd\u0004\\fffd\\fffd\\fffd\\fffd\\fffd A6\\fffd\\fffd\\fffd e*3\u0004\\fffd\\373\\fffd%09\\fffd\\fffd\u001A\\fffd\\fffd\\fffd\\7dd\\fffd\\fffd_i\u001B\\fffd%0DLM\u0014\\fffd\\fffd\\245Q{\\fffd\\1ad\\fffd%23\\fffdp\\fffdQY\u0014Q4\\fffd\\fffd*\u0002\\fffd E\\fffd\\fffd 1\\fffdm\b:\\fffd\u0002\\fffd 6t\\fffd\\fffd\\fffd:\\fffd~Fd\":D\\fffdw\\fffdn\\fffd\u001Bv%23\\fffd\u0001\\fffd\\ecG\\fffdl{\\fffd\\fffdG+\\fffdX\\fffdnS\\1c1\u0005QLE=W\\fffd-\\fffd 2@\\fffdl\\fffd\\fffd A\\fffd\\fffdz\\fffdR\u001D\\fffdm\\fffd\\fffd\\fffd\\fffdh8\\fffd(\\fffd\\fffdN\\fffd\\fffd\\fffd\\fffd\u0006\\fffd\\fffd\\fffd\u0001\\fffd/\\fffdn\\'K\u0002t\\fffd\\fffd 4ee h\\9f3e\\fffd\\fffd\\fffd\\fffd at\\fffd EKJ\u0013\u0019\\fffd\u0005`\\fffd\\fffd\b\\fffd\\'\\fffd E\u0007CF\\fffdlZ\\fffd\\fffdp\\fffdh\\fffd E\\fffd\u001A\\fffd\\66e 4V\\fffd\\fffd\\fffd%\\fffd\\fffd\\'\\fffd+\\fffd\\fffd\\fffd\u001E,\\fffd\\fffd\v\\fffd!-\\fffd\\fffd\\fffd\\fffd=\\fffd\\fffd\v\\fffd\\fffd/\\fffd 28z\u0011%0D\\fffdI\\fffd\\fffd]\\fffd\bj:\\56cw*\\fffd\u001F<\\fffdG\u001Eh,~\\fffd\\fffd\\fffdK\u0003E\\fffd\\fffd(\\3d5\\fffdN\\fffd\u0007K1\\fffd\\fffd C\\fffdO\\fffd%0A&Y\\fffd\\fffd>\u001C\\fffd-8\\fffd\\']\u00056\u0004>o\\\\;\\fffd\\fffdM\\fffd\u0002$\\fffd)\u0016\\fffdT\\fffd\\fffd\u0015\\fffds\\fffd 5\\fffd|P\\fffd\\1fe`-\\fffd\\0 FF\\fffd\\fffd\b.\\fffd\\fffd`\\fffdK1\\fffdq\u0001=\\fffdX\\fffd\u0016\\fffd\\fffdL\v\\fffd\u0006\\'\\fffd\\fffd\\fffd\\fffd)Z\u0002\u001D\\fffd\\fffdp\u0012\\fffd\u0001M\\fffd 1\u0010\\fffdl%23\\fffd\\fffd:\\fffd\\fffdha\\fffd\\fffd\\fffd\\fffd\\fffd\u001C\\fffd\\fffdV\u0018\u0001`%\\fffd\\fffd\\cr\\fffd\\fffd\u0014\\fffd 1\\fffd\u0016\\fffd\\fffd\u0002-\\fffdR!;\\fffd{A\\fffd\\fffdy\\fffdHg@o\\fffd\\0\\fffd\u0004\u0005Z%0A\u0018^ +D\\fffd\\fffd~,SV\\fffd\\fffd%0A\\fffdn8\\fffd)D&\\fffd\\fffd\\fffd\\fffdh\\fffd\\fffd\\fffd\\fffdq\\fffd\\fffdmI\\fffd\u0007-1\\fffd^\\fffd\\360\\fffd\"W\\fffdK\\fffd\u00010\\fffd\u0014\\\\\\fffd\u0004\\fffd)]\\49fRB?\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u0006*\\fffd X\\fffdm\\fffdP&\\4d6\\fffd F\\fffd\\fffd\\fffd\\fffdG\u0006\u0007\\fffd A\\0\\fffd\\fffd\\fffd(\u0012=-\u0004\\fffd\\fffdqS\u0004\u00137O\\fffdR\\fffd<3k\\fffd\\0 Fs%0DG\\fffd_&\\fffd\\fffd}hI\u0018\\fffd\\fffd\\fffd*5Mt0\\fffd\\fffd 2\\fffdh\u001E!w%\\fffd\\fffd~\\fffd\\fffd\\fffd}hU \\fffd\\fffd\\fffd\\'\\fffd\u001E\\fffd 2\\fffd\u001B\\fffd 5v\\fffd\u000Fw\u001DW\\fffd a\u001A\\fffd)\\fffd\\fffd\u0012\\fffdw\\fffdI7:\\fffd\u0016\\fffdz\\70f\\fffdX\\420\\fffd\\a8}f\\fffd\\fffd\\fffd\\4da\\fffd C\\fffdW\\fffd;j\\fffd\\fffd/S\u0016\u0003\\4df\\fffdx\\fffd F>\u0017\\fffd\\fffd FEh\\fffd\\fffd\\fffd D\b\\fffdT\u001ED\\fffd\\fffd\\0\\36d 2\\fffd)rC F,%23?%0A\\fffd\\fffd Fm\\fffd\u0018\\fffd\u001C\\fffd\\fffd c\\fffd\\fffdX\\fffd\\fffd\\fffd[\\fffd)\\fffdJ\\fffd\\fffd\\aa a\u001A\\fffdlR%0D\\fffd\\fffd|Iw\u0001x,\\fffd\u0002G\\742\\fffd>K(2+\\fffd\\\\\\fffd\u0016\\fffdw\\fffd\\fffd DGe\u0011\\fffd Ep\\439\\fffd\\d153\\fffd\\507\\fffd 9fw\\fffdq\\fffd\\fffd\u0012\\fffdo\\c@<\\fffd\u0003\\fffd\\fffd\\0+[\\fffd\\fffd&\\fffdS\\fffdy\\fffd\\fffd\u0016\\fffdo.V\\0\\fffd\u0011Jg%09\\fffd\\542\\fffd:\u0015\\fffd\\fffd\\fffd 3\\fffd\u0014\\fffdv\"a4\\fffd 4\u001BD%09\\fffd\\fffd\\125\u001B\\fffd\"\\fffd\u001C=\\fffd%09t\\fffd\\fffd\\fffd\\fffd++\u000F\\0\\fffd?\\fffd\\fffd\u0006\\fffd:i\\fffd\u0011\\fffd\\fffd\\fffd\\55d2\\18a\"\\fffd,\\fffd]\\0\\fffdh%23\\fffd.\u0006\u0019\\fffd\\fffdq\u0014\\fffdR\\fffdV\\fffdz\u0003\u0007\\fffd Df\\fffd 4\\fffd\\fffd\u0005\\173\\fffd\u0010\\fffd~g \\fffd\\fffd\\fffd\\fffd\\fffd_JC\\fffd\\fffd\u001B\\356\\fffd(\\fffd\\fffdo\\fffd\\fffd\\10b\\fffd?0\\fffdrU\\fffd%\\fffdU\\fffd b!\\fffd\\fffd\\fffdq\\fffd fU\\fffd\\2e5\\fffd=\\2e8QD3~=r\\fffdM\\462z\\fffd\\fffd e[\\fffd B\\fffd\\fffd\\fffd\u0001\\fffds\\fffd$a`\\fffd\\fffd\u0017g\\fffd\\fffd\\fffd\\fffd 85\\fffdm\u000E^\\\\\\fffd\\fffd[\\fffd%0D\\fffd\\fffd 6n\\fffd\\fffd\\fffd\\'&\\0\\fffd\\fffdK\\fffd\\fffd\\0\\fffd\\fffd\u0011\\fffd eQ%09\\fffd\\fffd\\fffd\\fffd B\\fffd\\fffd\\689\\fffd\\fffdr\\5c9\\fffdN\\fffd\u0005-\\fffd a\\fffdqQ%0D\\fffd\\fffd(\\b2H\\fffd\\fffd D\\50a\\fffd\\fffd\\fffd%0D\\fffdLP\\fffd e\\fffd\\fffd\\fffd\\fffd 6\\fffdz\\fffdg\\fffdl!3T\\fffd~\\fffd@g\\fffd!\u0012\\fffd\u0016L\\fffdp%\\fffd\\fffdmKT&xq\\fffd%098\\fffd\u000E\\fffd\\fffd\\fffd\\606\\fffd\\fffd.Z\u001Dv\\fffd\\fffd\\fffd\\fffd B\\fffd\\fffd\\fffd\\fffd\u001FN\\fffdw\\fffd\\fffdwv\\133\\fffd?\\fffd\\fffd\")\\fffdt2Xt\\fffd(\u001AMh0\\fffd\\fffd\u0015i\\c\u000F\\fffdk\\fffd\\fffd*\\fffd D\u0004\\fffdL\\fffd\\fffdp\\5d5\\fffd\\fffd\\fffd\u0019\\fffdJ\\fffd\\fffd~\\fffd\u0005\u0006\v\\5e7 cPM\\fffd\u0014\\fffd\\fffd\\fffdp1J\\fffd|\\fffd\\fffd\\5f2\\a4\\fffd 8\\fffd F\\fffd\\fffd d\\fffd\\fffd\\262\\fffd\\8a72\u0002E\\fffd\\fffd b\\fffd\\fffd\\fffd)\\fffd b\u0002@\\fffd 8Lw\\fffd\\fffd$\\310 9\u0001\\fffdO2\u0003\\fffd\\c193>\"Q\\fffd\\fffd{\\fffdUo6A\\fffdNEg\\fffd\\fffdO9\\fffd\u0012X\\fffd\\fffd\\3a2Rd+\\cg=\\fffd\\fffd\\fffd\\fffd\u001E\u0002dL\\147\\fffd 2\v|,\\fffd 271\\fffd\\fffd\\fffd\\fffd\\fffdu\\fffd\\fffd\\fffd\u0010XL\u0015bf\\fffd)+B\\fffd%23\\fffdmF\\0\\fffd\\fffdO\\fffd\\fffd\\0\\fffd\\fffd\\fffdt|\\fffd\\fffd]|\u0007\\fffd\\fffd\\fffd \\fffd;\\108c4f\\fffd\\fffd;\u0015\\fffd\\fffd\u001A\\fffdR;\\fffdJ7j\\fffd\\fffd\\fffd>\u0018\\fffd\u0006\\fffd\u001D\\fffd\\fffd\\fffd\u0001\\fffdyf\\fffd\\fffd\\fffd \u001B\\fffd\u0010\\fffd B\\fffd\\fffd\\fffd\u001E\u0019\\fffdQD\u0013 \\fffd\\fffd<\\fffd%23\\fffd`\\fffd\\fffd 7A\\fffd\\fffd,\\fffd\\fffd>\\fffdg\\fffd b\\fffdr\\fffd\\6f3\u0015\u001DYb(\\fffd!+\u0004O\\17b\\fffdJ%09(e\u0017gFwB\\fffd](\\fffd%23\\fffdj+N\"]4\\fffd>\\fffd=a?\\fffd@\\fffd\\fffd\\382e\\fffdn\\fffd\\fffd\\fffd\\fffd\\fffd\vo\\54b%\u001D\u0013\\fffd\\fffd\\fffd\\fffd\\fffd D\\fffd\u0003|Js\\fffd\\586\\fffd\\fffdZk\u000E\\fffd\\fffd 0J\\fffd\u001A\\fffd\\6a6\\fffd\\fffd<\\fffd\u0002\\355\\fffd\u000El%09\\fffd\\fffd|\u0005\\fffd\\fffd b\\fffd\u00065\\fffdw\\fffd%\\fffd{\u0015d \\fffd;\\fffd\u001D\\fffd\\fffd\\fffd\\fffd D\\588\\fffd}\v\\0\\fffdhE\\fffdN\\fffdnJ7\\fffd~\\fffd\\fffd\"(W\u000E\u000F+\\fffd\u001B^\\fffd\u001F\u0012\u0003U\\fffd D\\fffdV\\fffd\\fffd\\271\\fffd br\\fffd b_T\\fffd\\fffdh\u000E\\fffd\\fffdrDwJ\\fffd\\fffd \\fffd\\fffd\\fffd&\u001A\u0003\\fffd\\fffd_I\\fffd\\fffd\u0014\\fffd\\fffd\u0007\\fffd\\fffd\\fffd@fs\u0013\\53c\u00015\\fffd\\fffd\\fffd\\fffd_\u0014\\fffd\\fffd\u0014x\u0012\\fffdm\u0012\\fffd f\u0013S-\\fffdyc*\\c3\\fffd+\\'\\fffd\\fffd\\fffd\\fffd\u001B\\fffdNL\\fffd\\\\-c4\\fffd b+\\fffd\\6a0>7\\fffd\\490\\fffd,\\fffd\u0012MQ!\\fffd\\fffd,\\fffd\\fffd\\fffd\\fffdNY\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdx<\u001A\\fffd \\fffd-\\fffdX\u0015K!\\\\p6\\fffd 5\u0016g\\fffd(@N\u0001\\fffd\\0\\fffd(Z\\fffd\u0019:8w\\fffd\u0005\u001A\\fffd\\fffd-\\fffd\\fffd\\fffd 1\\22epe\u00130\u0010\\fffd/w\\fffd\\fffd\u0006\\fffd\u0006\\fffd\\fffd\u0016u\u001A\\41cQ\\fffd\\fffdtZ\\fffd\\fffd 0\\fffd~n\\fffdUc2\\0 Fkf\u0005\\fffd F\u0013=@\\fffdk\\fffd E5\\fffd\\fffd\u001A\\fffd 0sY\\fffdOL\\fffdp\\fffd$\u0011\\fffd\v*\\6e6\u0012Pd-\\fffd\\fffd\u0011\\fffd Dq\u0017*\\fffd=V\\fffd\\fffd\\218\\fffd 2\\fffdS\\fffd%{\\fffd\u0015\\fffd=\\fffd\\fffd\\fffd%09\\fffd\\fffd\\fffd~\\fffd\\fffd f\\fffd(\\fffd\u0014\\fffd\\fffd\u0019\\39eP\\fffd\\fffd D{E\\333w\\fffd\u0012\\fffd\\fffd\u0018\\fffd\\fffd\\fffdM\\fffdj\u001BL\\fffd 8E\\fffd\\fffd\\fffdqvJ\\fffd\\1d9\\fffd\\fffd\\539\\248\\fffd\u000E\u0015~\\fffd_e+\\fffd\\44c 4\\fffd%\\fffdTC\\fffdl{EO\\fffd\u0017\\fffd\\fffd\\fffd\\fffd\u0006\\fffd 6\\fffd{u0?\\fffd 0B\\6cc\u0016\\fffd 5\u0004%0A\\fffd bE?\\fffd\\fffd\\536 2\\fffdV\\fffdV\u0004%0A\\55c\\'\\fffd;\\fffdX\\276hMv\v\\0\\fffdHc\\fffd\\fffd\u001F~%0A\\fffd\\fffd\b5\\fffd&\\fffd B\\fffd\u0006\\fffd\\fffd\u0006\\fffd&:\u0014\\fffd`\\fffd{\\fffdP\\fffdG\u0011*\\fffd%23^\\fffd\u001B^\\fffdj?\\fffd(1\u0015\\fffd 7E\\fffd*\\fffd E\\fffd\\fffd\\fffdx\\fffd>\u0010\\fffd\\fffd%\\fffd\\322\\fffd d\\fffd\\fffd\\10aW\\fffd)\\fffdQ\\fffd\\fffd`\\fffd 8\\fffd\\fffd \\fffd\\fffd Ep\\fffd_)+\\fffd\b\\fffd\v%\\fffd\u0019\\fffd\u0015\\fffd(\\fffd 3xO\u0018\\fffd\\412\\fffd\\fffdj^\\fffd\"Z\\fffd\\fffd\u001C\\fffd-\\fffd\\fffd\\489\\fffd\u000F\\fffd\u0013\vq\\fffd\\fffdv>\\fffd 2R\\fffdT\\fffd\\fffd\u000E4\\fffd\\fffd\\fffd\u0014\\fffd|\\fffd-\\fffd 0!u\\fffd+T\\fffd@\\fffd\\fffd\\fffd%\\fffd\u0011Qa\\fffd\\fffd\\fffd\\fffdx\u0017\u0011\\292\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdMe\\fffd\\fffdp\u0017\\fffd\u001A\u0005\\fffd-0_\\fffdM\\fffd\\fffd-1 \\fffdYOD\\fffd\\fffd e\u001D\\fffd\\fffd F\\fffd\u0010\\fffd 7\u0017\\fffd\\fffd\\fffd]\\fffd 8\\fffd-\\fffdiw\\fffd\\fffdl\u0004\\fffd 2\\fffd\u0005\\fffd 6\\fffd\u0016\\fffdH\\'\\a456,Y\\fffdu\\fffdj\\fffd\\fffd\\fffd\\fffd 3\\fffdwU\\fffd F\\fffd_L\\fffd\\fffd\\fffd\\fffd&\u0013<fe/y\\fffd\\fffd\\4deQe\\fffd%0A\\fffd\"t\u0006%0A\\fffd\\152~*S\\fffdZ\\fffd\\fffd\\fffd?18-\u001B\\fffdJ&X}\\fffd\\fffd\\fffd`\\fffd e\\fffd 2\u0010\\fffdX\\fffdi/\\fffd(J\\fffd 356\\fffd\\fffd\\fffd\u0014.\u0014\\fffd\u001BOk\\fffd\\fffdV\\fffd\u0016\\fffd\\fffd\\fffd\\fffd F(\\fffd\u0017O\u0013\\fffd\\fffdP\\fffdG\\fffdw(\\fffd\\fffd\\385\\fffd\\fffd\\fffd\\fffdWy\u0002\\fffd\\655\\768 3!\u0003W\\fffd\u0014\\fffd%0D\\fffd\\fffd\u0010h\\fffd 0\\fffd\u0013\\fffd\\fffd\\fffd\\fffdKt\u0017/K\u0010Y%0D6J:aV8\u0003\\fffdh\\fffd\\fffdQ\u0018\\fffd\u0007\\fffd\u001BY\\fffd\\fffdT;\\fffdXa\u0016\\fffdk\\fffdr\\fffdW\\fffd\\fffd\u0004S\\fffd$\\fffd(2f \\fffd\\fffd\u0015f\u0013`/\u001A\b\u0016\\fffdU\\fffd+\\fffd B\\fffdz\u0002O\\fffd d\\fffd\\fffd\\fffd\u0019;\\fffdyM\\fffd\u0010%23\\fffd\\fffdl7$\\fffdx\\fffd(Ri\\fffd\\fffd\\fffd\\fffd\\fffd 4\u0013\\fffd 3$\\fffd e\\689V\u0001\\c=.\\fffd\\fffd \\fffd\u0011-j\\fffd\\fffd\u0004`V\\fffdN*\bV\\fffd\\fffd%0A\\\\u5\\fffd\u0019?g%23\u0001o\\fffd\\109\\fffd\\fffd 7\\fffd\\fffd\\fffd%0DoN\u0001\\fffd\\fffd 9\\fffd\\fffdRTr\\fffd\\fffdl`?\\fffd\\fffd\vRa$h+\\fffd*x.\\fffd\bf\\fffd\u0005\\fffdt\u001A\\fffd\\fffd\\fffd\u0003\u0016\u001E\\fffd:\\fffd\\fffd\\fffd\\fffd&/\\fffdKL\\fffdP\\fffd\u001C/S\\fffdg\\fffd-\\fffdza*\\fffd$\\fffdx\\fffdYB-\\fffd.\u0015\\fffd\\fffdR\\fffd\\fffd\\fffd&\\fffd\\fffdq\\fffd\\fffd\\'\\fffd\\fffdl=\u0014\\fffd\\fffd=&S\u0002]\\fffd\\fffd&GDu\\9c%0A+\\fffd\\fffdH1\\fffdG\\fffd:%0D\\fffdt1\\fffdX\\fffdm\u0019e\\fffdu\\fffd\\fffdp\\fffd\\fffd d\\fffd\\fffd\\fffd\\fffd 9\\fffd\\fffd d\\fffd\\fffd%09\u001B,/X\\fffd%0A\\0\\fffd 4b\\fffdMD\\fffd\\fffd{\\fffdyI\\fffd\u0003P\\fffdn\\fffd\\fffd;\u0015\\fffd\u0013\\fffdV%23\\fffd\\'kh}f\\fffdR\\0\\fffd\\fffd\\fffd\\fffd*UR\\fffd\\fffd F\\fffdI\\fffd\\fffd\\fffd\\fffdnVt\\fffd\\fffd(%\\fffdtYR\v\\fffd dj\\fffdYc}2\\fffdJ\u001AK\\fffd\v>\\fffd\\fffd:;~\\fffd\\fffdM\\fffdw\\fffdM\\fffd(\\fffd]-\\fffdX\\fffdUO\\fffd\\1d0\\fffd\\fffd%\u0002`\\fffd\\fffd\\fffd\\fffd\u001A\\fffd\\fffd\u0018j\u000E!\\fffdi\\fffd\\fffd B*\\fffd\\fffd\\fffd\u0011\\a569\\fffd dC\\fffdYa\\fffd\\fffd_\"\\fffd\\fffdy\\fffd\\fffd\\fffd?\\fffdI\\fffdY\\fffd BV\\fffdylaVX\\fffdl\\fffdw)+\\fffd\v\\fffd%23V\\fffd ;8\\fffd(\\21f\\fffdWk\\fffd\\'\\fffd\\fffd\\fffd\\fffd&\\fffd\\fffd+Y\\fffd\\fffd\\fffd\\fffd`F\\fffd\\fffd 3\"\\fffdhFl\u0013\\3ebM&\u0017\\30e!\\fffd\\fffdg\\fffd&@\\fffd\\fffd\\fffd fT\\fffds\u0004X+%09\\fffd 3\\fffdK\\fffdN\\fffd\\fffd|Mh\\fffd\\fffd\\fffd 7\\c\\fffdhq\\fffd\\fffdx\\fffd\\fffd\u0017uE\\fffd\\fffdO\\fffdz\\fffd\\fffd \\c\\426&a&\\fffd%0D\\fffd\\fffdr0\\fffd\\fffd%23T\\fffd%0A\\fffd\\35fi)5\\fffd\\fffd\\fffdk\\fffd\\fffd\\fffd\\fffdN\\fffd%0D\\fffd\\fffd\\fffd\\fffd\\fffd\u0005M\\fffd\\fffd\\fffd\u0004\u0005^^\\fffd 2=\\fffd\\5a2\\fffdMO2\\116%09v1\\fffdT\\fffd a\\fffdzE\\fffdO(\\fffdo\\fffd b\\fffd`\\fffdtX+\b\\fffd\u0006s\\fffdTdkB\\fffd 7\\fffdX\\fffd b!\u0002D\\fffd\\'h\\fffd\\fffd\u0011k\\fffd\\fffd f\\65c\\fffd[\\fffdU\\fffd\\fffdlE\\fffd&f\\fffd dV\\fffd\u0005\\fffd%09\\fffd\\fffd\\fffd EQw\\fffdO\\fffd\\fffd\u0007\\3be)-\u00164\u0014Z4\\3cf\\fffdZq\\fffdi\\fffdZxT\\fffd\u0004vI\\fffdy\\fffd>40>\\fffd\\727\\fffd\\fffd\\fffd\\fffd\"U\\fffd\"\\fffdI\\fffdi\u0013+\\fffd D\\'>\\fffd\\fffd\\fffd\\fffdz[\\fffd 6\\'\\0\\fffd\\fffdW:(\\fffd 4\\fffd DHh\\fffd e\\fffdh\u0012\\fffd\u0018\u0014HmM\\fffd\\fffd 1\\6d8\"\u000F\u0013eO\\fffd\u001E\\fffd\\fffd 7a\\fffd\\fffdI\\fffdZ\\fffdX\\fffd\\fffd\u000Ez\\6e3\\fffd\\fffd 6Y\\fffd-j9\\fffd\\fffdX\\fffd(\\fffdK,\\fffdi\\fffdtq\u0006P\\fffd\u0019\\fffd\\fffd\\fffd 7\\fffd\u000F\\fffd 2U\u0012\\fffd f\\9eu\\fffd\\fffd\\fffdR\\fffd\u0011\\fffd Aj)\\fffd\\\\\\fffd%0D\u0004\\fffd\\fffd\u0006\u0017\\fffd\u000EU\\fffd\\fffd\u0017W\\fffd\\fffd\\fffd\\fffd\\13c\\fffd 6\\fffd e\\fffd\u001C\\fffd BJ\\fffd 4)V\\fffd\\fffd 6\\fffdt2\\fffd\\c b*z\\fffd^t\\fffd\\382\\fffdwJ\\fffd\\fffd\\fffd\\fffd A\\fffd=\\fffd\\fffd\\fffdv\\fffd e-\\fffdWg\\fffd>OfXK\\fffd\\fffdNT\\fffd 9a\\fffd\\fffd\v=\\fffd>\\fffd 4+)LPZ\\fffd\u001D\\fffd\u0006/YetQr\\fffdh\\76ca^\\c\\fffd\\fffdw\\fffd\\fffd\\fffd\\fffd\\fffdWT\\fffd\\fffd\\cX3A\\fffd\u0005\u001D\\fffd f\\fffd(\\fffd 6\\fffd d\\fffd\b9k:Z=&Z\u000Fbe\\fffd\\42b\u0019cbI\\fffd\\fffdSY\u0003\\fffd\\fffdR\\fffd\u0018$d\\fffd*\\fffd<e\\fffd\b&Q\\fffdi\\285\\fffdm\\fffd\\fffd\\fffd\\cQ\\fffdw\\fffd\\74dcN,-\\fffdq\u000F\\fffdW\\fffdz\u0016\\fffdQ\\1e2\u0015\\fffdZ\u001B\\fffd\u0013z\u0006*g\u001D\\fffd,d\u0012&%0A\\fffd\u0004\\0\\fffd 9\u0011\\fffd|\u0002\\fffd\u0016h\\fffd\\2f9`-\\fffd\\fffdU;2\\fffd\u000F\\fffd\\fffd\\fffd\\fffd\\fffd%0D\u0001\\fffd\\fffd\\fffd\u0012\\fffd\\fffd\\fffdkfk7$\v\\fffd\\fffd\b\u0010m3\\fffd fW\\fffd\\fffd dD\\c5\\26f\\fffd\\fffd\\fffd,]\\fffd F\\fffdL%0ADS\\fffdx\\fffdR\\fffd.\\fffd\\fffd\\fffd@\\fffd^G;\\cg\\fffd\\fffd\\fffdJ\\fffd\\fffdZ\\fffd\\fffd\\fffd 5\\fffd\\fffd\\fffd_\u0011(%09\\fffd\\fffd 8O\\443h\\fffd\u0005p\u001C\\fffd_\\424\\fffdl!\\fffd\\fffd c\\fffd{D\\3e2YvO\\fffdSv&tXD\\fffd\u0017%0A%\\fffd)Sm\\fffd\\fffd\u0012E\\fffd\\fffd %23T\u0012m2ao\\fffdty\u0005J^\\fffd E\\fffd\\fffd\\fffd\\fffd,\\0p\\fffd\\fffd[d\\'\\fffd\\fffd\\fffd B\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdG<\\fffd\\fffd\\fffd\\fffdyc*\u0004\\fffd\\fffd\u0002\\fffd 5.&\\fffd\\fffd\\fffd\\fffd*\\fffd\\fa\\fffd.\\fffdN\\fffd\\fffd\\fffdMp\\fffd\\fffd\\fffd\\6b39X\\31fR\\fffdly\\fffd\u0010dA\\fffd\\fffd|\\fffd%0D\\fffd\\fffd 2\\fffd\\fffd\\fffd\\fffd\\fffdw|\\fffd\\fffd\\fffd\\fffd\\878f!\u0015\\fffd\\fffdV@i\u0011%0DV\\59cwFz\\0\\fffdt%\\fffd@\u0003\\fffd 3\\fffd\\fffdl.\u0003\\fffd\\fffd\\fffd}\u0018E\\fffd d\\fffd\\fffd\\fffd,\\fffdyT%0Aj\\fffd\\a612 D\\fffd_\\fffd\\fffd\\fffdX\\fffd\\fffdzQ\\fffd\\fffd%%0A\\fffd\\1be\\fffdX%0D\\fffd%0Ae\\fffd\\fffd\\fffd]\\fffd d\\fffd\bh2\\fffd E\\fffd\\fffd\\fffdL\\fffdpE?\\fffd>\\fffdy\\fffd\\fffd\\468S\\fffd\\fffd\\fffd\\fffd\\fffd EM\\fffd\\fffd}Z\\fffd\\fffd e\\1dd\\fffd d\\fffd\u0006\\fffdz\\fffdPq\\fffd\\fffdH_5\\fffd\\fffd\\fffdj\u0011\\fffdH\\fffd!\\cg\\fffd\\fffd\\fffd\u001F\u001E\\fffd\\fffd%23Q*{\\fffdYD\\fffd\\fffd\\1f7\\fffdMo(`\\fffd\\fffd{\u0012\u001D/\\fffdy\\fffd\\fffd\u000F\\fffd@\\fffd:\\fffd.\\fffd\\268\\fffd d1\u0013\u001E\\fffdJ\\fffdt\\fffd}\\fffdq\u001F\\7e1\u0007N\\fffd\u001A\u0015\u0016\u001A\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd,\u001B-\\fffd\\fffd\v71W\\fffd\v\\fffd\\fffd\\fffd\\fffdO\\fffd\\fffd<\\fffd\\acd3I!a\\fffd\u0017gn\\fffd?\\'\\fffd\\fffd\\fb58i\\fffdp|\u0004\\236\\fffd C\\fffd,\u0004\u0015\\fffd 6\\fffd\\fffd&\\fffdk\\fffd\\fffdU\\fffd\u0019J\\0\u0014\\46c|/\u001D53(\\fffd%0A-\\fffd\\fffd\u000EG\\fffd\u0002\\fffd\\66c\\fffd\\fffd\\fffd$_\\fffd^\\fffd\\fffd.Sn{E\\fffdMZ\\fffd\\\\]P\\fffd B\b\\fffdG\\fffdZ\u0006\\fffd\\fffdJ\\fffd\\fffd\\fffd\\fffdV\u0013\\fffd eBPg\\fffd d%09(\\fffd+\\fffdQ\\fffd\\0\\fffd\\fffd\\fffd\\fffd\\6cc\\fffd\\fffd\\fffd\\fffd D\\fffd\u0014Db\\fffd\\5d4\u000F\\fffd?\\fffd\\fffd!\u0012-\\fffd\\fffd e SQ\\fffd\\fffd\u0013\\fffd 7ZcE\\fffd\\fffd Bs\u0013\\fffd 55Hg\\'M%%09\u00010\\fffd\\fffd\\fffd\\fffd\\fffd-GQ\\fffd)}\u0017e\\12a\\fffd\u001F@\\fffd\\eb68 2[i;\\fffd\\fffd\\fffd\\fffd!\\fffd@\\fffd\\fffd\\'\\fffd \\fffdVDP9he*\\fffd\\0k\\fffdV(YdjI\\fffdX\u001Ep\vn\\fffd\u001Bd\\fffd/\\fffd\\fffd\\fffd\\fffd\\fffd+m\\fffd\\\\$\\fffdy\\fffd\\fffd-\"\\fffd\\fffd@EdR\\fffd\\fffd\u0002g]\\fffd}\\fffd%0AS\\fffd 8\\fffdG\u0019\\764\u0003.\\fffd\\fffd\\fffd\\fffdW\\0\\fffd\\fffd:\\4cb ae\\fffd\\fffd\\fffdm\\fffd\u0013?\\fffd\\fffd%0A\\fffd\u0011eV\\fffd\\7e3 D\\fffd 4\\fffd\u001CXI\u0004\\280\\fffd\\fffd\u0007\\fffd\\fffd\\fffd\\fffd 0/\\fffd\\fffd\\fffd\\fffdPFyr\\fffd\\fffd\\fffd\\445\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd_h\\fffd\\fffd\u0014Syy\\fffd\\fffd\\fffd\\fffd\u000EtX\u0014\\fffd\\4c2w\\fffd\u0016\\67e!eV\\fffd\\fffdJ\\255\\fffd\\fffd\\fffdJ\\fffd E\\'\\fffd\\fffd.\\fffd\\fffd\u0015\\fffdk*\\fffd\\fffd 2\\fffd 7j\\fffd.\\fffd\u001B\\fffd(\\fffd\\fffd\\fffd\\fffd E\\fffd@\\fffd\\fffd\\fffd\u001Eg|\"+\\fffd\\fffd a\\fffd%0Ag6\\fffd D?\\fffd\\fffdW\\fffd 6\\16c-\\fffd@\\135e\"A\\fffd\\0\\fffd%\\fffd\u0014\\fffd 0ZK\\fffd\\fffdW\\fffd\u001Fdt2\u0013D\\'\"\\fffd\\fffd\\fffd.\\fffdl`\\fffd\\fffd\\fffd\v\\fffd+\\fffd\\fffdl-\\fffdJ\\fffd\\fffdo\\fffd\\fffdW,\\fffd\\fffd+\\fffdlE\\fffdM\\fffdHQ\\fffd\\fffdU5\u0013\\fffd\\fffd\\'\\fffd\u001D\\fffd%0A\\fffdt\\fffd^\\fffd\u0001%0A{\\fffd\\32c e\u001A+\\fffd\v2Z\\c 4\\fffd\\fffd\\fffd_\u001A\\fffd&F\\fffd\\fffd\u0004\\fffd 4\\fffd\\fffd^\\fffd\\fffd\\fffd\\fffd+\u0013HdG\\fffd\\fffd^\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd&\\\\w|\\fffd 6\\fffd;\\fffdu=\\fffd 5\\fffd\\fffd\\fffd\\fffd\u0013=\\fffdJ\\fffd\\fffd\\fffd\\fffdz\\fffd\\fffd\\fffd\\fffd\\fffd\u0013\\fffd\\fffd E\\fffd\\fffd`\u0014\\fffd\\319\\fffd\\fffd>\\fffd F\\fffdr\u0017\u001A\\fffd\\fffd\\fffd\"\\fffd\\fffd\\fffdl%0A\u0010\\fffd\\fffd\\fffd%23\\fffd\\fffd DGU\\8c2a\\fffdT\b.\\fffd%\\fffd\\fffd\\2ba]\u001E\\fffdM\\fffdh\\fffd\u0002\\fffd,J{\\fffd\\fffd 0K\u0011QM}{!\\fffd:\\fffd\\192\\fffdW\\fffd_\\fffd\\fffdP\u001DHe\u0001L\\fffd\\fffdp\\fffdM\\fffd\u0005Q\\fffd\\fffd\u0003\\fffdU\\fffdZ:\\fffd 8g\\fffd|a\\fffd\\fffd\\fffd\\fffd-\\fffd\u000E\\fffd\\fffd)3\\fffd+\u0017\\fffd\\fffd\\fffd\\fffd\\4f6 f\\fffd\\fffdV\\fffd\\fffd\\fffd\\fffd\u0016\\fffd[\\fffd\\fffd\\fffd.\\fffd,\u001A\\fffd\\fffd\\fffd\\fffdMZ\u000ETA\\fffdT\\fffd-/\\fffd db\u0002o\\fffdj\\744\u001F\\fffdq\\fffd\\fffd aAy2c\\c\\fffd\\fffdM\\cR\\fffd D\\fffdl2E\\4a4\\fffd\u0001\\fffd\\fffdi\\fffd\u0005}f\u0005\\fffd\\fffd\\fffd)j\\723\\fffd\u0017\u0003\\fffd\\fffd\\fffd\\fffd\\fffd\u0007\\fffd 1\\fffd\\fffd+~^\\fffd\u001AK\\fffd,\\fffdt)\\fffdR`\\fffd 8\u001F\\fffd\\fffd\\fffd~<\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd)5\u0005.\\fffd E\\fffd 9\\fffd\\0\\fffd\\fffd\\fffd\\fffdx%0D=\\fffdY\\fffd\\fffd\\fffd\\fffdP\\fffd\u0013\\fffd b|\\fffd\\fffdW(\\fffd{\\420\\fffdN\\'+b\u0016\\fffd\\fffdm\\fffd\\fffd au\\5b1P\\fffd_\\fffdW{`\\fffd)\\fffd%09\\fffdW5\\fffd\\fffd F\\fffdY\\fffd\\fffd$\\fffd_)\\fffd\\fffd\\fffd=3oy\\fffd\u0006\u0011\\fffd||\\fffd 9\\fffd\\fffdt2\\fffd\u001D\\fffd\\fffd\\fffd\\fffd\"`XD\\fffd\u0005\\fffdKg\\fffdT%23\\4a4\\fffd d\\fffd$[a2oa\\fffd\u0010\\fffd\u001E\\fffd@\\fffdzQD4i3\u001A\\c\\fffdU\\fffd\\fffd\u0016\\fffd e\u0005\\fffd 3\\fffd\u001F\\fffd\\0\\fffd 6\\fffd\\1f3\\fffd eB\\7ae\\fffd<X\u0005t\\fffd\\fffd&4e%:[\\fffd\\fffd C\\\\\b\\fffd>%0A*\u000F!H\u0016\\fffd\u0014\u0001\\fffd}\\fffd e1\u0015\\fffd 1\u0011\\fffd\\fffd|\\fffd\u0018L\\fffd\\fffd\" -(\\fffd_\\fffdu\\fffd\\fffd\\fffd\\fffd dK\\fffd\u0017\\fffd%\\fffd/Pn\\fffd\\fffd\\fffd\\fffd 8\\fffd-Qq\\fffd\\fffdT8\u0003I\u0001\\fffd/\u0001Ae\\fffd\\fffd\\fffd\\fffd\"M\\fffd&\\fffd&\\fffd/\\fffdG\\fffd 3\\fffd:\u001EV\\fffd\\c\\fffdO\\fffd\\fffd\\fffd\\fffd%23\u001Cu\v2\\fffd(ri*L\\fffd\\fffdY\\fffd\\fffd\\fffd\\fffd\\fffd}\\fffd\\fffd\\3d9 b\u0005\u0014+`+g\\fffd\u0005\\fffdM\\fffd\\fffd\\fffd\\fffd-\u0003\\fffd\v2\\fffdX\\fffd\\fffd\\fffd\\750%0D\\fffd\\fffdQk&\\fffd+Wz\\fffd\\fffd\\fffd+\\63dxR\\571\\fffdz\u0012\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u0019\\fffdXV\\fffd*\u001E\\fffd|a\\fffdPx\\fffdSa\\fffd E\\fffdY\\fffd\\fffd 3Z\\fffdP\\fffd\v\\0\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdg\\fffd \\fffd%0D\\fffdK_\u0019\\fffd%F\\fffdhW\\0\\fffd\u0017\u0005|J\\fffd\\fffd\\fffd\\fffd\u0014\\fffd%23\\fffd}e@\\fffd\\fffd\\fffd%0A\\fffd_\u0001\\fffd\\fffd\\fffd\\fffd\\fffd f\\fffd\u0012\\fffd\\fffd\\fffdxi\\fffd\\fffdu\\fffd&\u001A+\\fffd\u0017\\fffduC\\fffd\u0006V\\fffdOG\u0013)8\\fffdJ\\fffd\\fffd\\fffd\\fffd\\fffd 8\\fffd\u0018\u0011\\fffd\\fffdU\\fffdM\\fffd\u0015\\fffd>\\fffd=%090\\fffd\\fffd fc \\fffd\\fffd<\\fffd\\0\\fffd,\\fffdi`\u0015\\b3\\fffd\\fffd f\\fffd\u0015\\fffd\u0017\\fffd\\fffdT\\fffdZ\u0015xU\\fffd\\\\8QK\\'t!\\fffdJ\\fffd\u0016D\\fffdH\\\\\\fffd\\fffd\\fffd.+)\\fffd\\fffd\\fffd\\fffd\u0011l\u0005@\u0015\\fffd\\\\\\fffd\\fffd\b\"\\fffd\u0001b\\fffd dW\\681^\\fffd\\fffd\\7b8H8\u001A\\fffd\\fffd\\fffd\\fffdQh!B\\569p\u0006\u0018\u0013S\\fffd\u0016\u0007\\fffdV\"Bpu\\fffd\u0006/\\fffd\\fffdV(\\fffd\\fffd}\\fffd\u0017`%09\\fffd\u0013\\fffd\\fffd\\fffd\\fffd\\fffd 2$\\fffd\\fffd\u0019\\0 c*\\\\LC3:{gP\\fffdN\\0iJ\\fffd\\fffd\u0002\\fffd\u0015\\fffd\\fffd\\fffd@\\fffd]\u0004t\\fffdZ\\fffd@\\fffd\\fffd\u0005\\fffd\\fffd\u0013T z\\fffd\\fffd\\fffd\u0014\\\\\\fffd\\fffd 5=\\fffd\u0014\\fffdR\\fffd\\fffd{\\fffd\\fffd!\\fffd|\\fffd\\fffdIy%b\\fffdV\\fffd\\fffd=\\fffd\u0012\\563\\fffd\\fffd)\\fffd\\fffd\\fffd\\fffd;Sd\u00149\\fffd\\b4\\fffd\\fffdUp-\\fffd\\fffd\\fffdg%0D\\fffd*\\fffd^y>\u0001\\fffdg_\\fffd/]\\fffdo\\fffd]K\\fffd\\fffd\u001CX\u0005\\fffdK\\fffd\u0006McU\\fffd\\fffdQW\\fffd\\fffd{f\u0003\\fffd\\fffd\\fffd\"\\fffd(L\\fffd\\fffd|\\fffd\u000E\\fffd\\fffdlN\\fffdhsq\\2f6 7\u0001:\\fffdX\\fffd.x\\fffd\\fffd\u0011\\fffd %0A\\fffd\\fffdk\\fffdw\\fffd f\\fffdM2\\fffd}h\\fffd\\fffdlQ\\fffd\\ce6dR\\fffd*(\u0017\\fffdz\\fffd\\'w\\fffd 0K\\fffd<\\fffd 2\\fffd b\\fffd\\fffd\\fffdU>Wz\\fffd\\fffd\\fffdPUw\\fffd\\fffd\u0006\\fffd\\fffd\\fffd\\fffd\\fffdM\\464\\fffd\\fffd*W[\\fffd*MN\\fffd\\fffd\\fffdW\\fffdX*\\fffd\u0005\u0017\\fffd\\fffd\u0002\\fffd\\fffd\\fffd\\568\\fffd\\fffdS\u001E\\fffdJ\\fffd:-n\\fffd\\526\\fffd\\fffdT}M|\\fffdW\\fffdSy%0D\\fffd\\fffd%j\u0004\\fffdM\u0017\u001C\\fffd\\fffd\\fffd\\0 D\u0019p\\fffd\\fffd\\fffdt|*\u0017\\20b6\u001A\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\\\\u0001\\fffd\\fffdh\\fffd\\fffd,\\c\\fffd\\fffd\\fffdT8\u0001\\fffd\\fffd)\\fffd@+\\fffd\\fffd/_4+\\0\\fffd\\\\\\fffd\u0005\\0\\fffd b7\\fffdi\\fffdZ8\\fffd\\fffd\\'=;q\\fffd;\\fffd\\fffd\\fffd\\fffd\\fffdYuP\v\u0005\\fffd\\fffd\\fffdjuLVAN\\fffd^5\\fffd\\fffd<V\\1ab\\37c\u0018\\fffd\\488\\fffd%0A\\fffd\u0015\\fffdQ&g\\fffd 0 \\fffd\\0Z~\\fffd\\fffd\vT\by_\\fffd\\fffd\\fffd\\fffd\\fffd\u0010\\fffd<\\fffd\\fffdW*\\fffd]\\fffd%23eV\\fffd\\fffdm\\fffd\\fffd\u0019\\fffdvq\\5f3m\\fffd 6c\\fffd]|\\fffd a\u0001\\fffd\\fffd\\fffd\\fffd\\fffdm\\fffd\\fffd\\'\\fffdx\\fffd|\\fffd 9\\fffd\\fffd\\fffd$RD\\fffd d\\fffdM\\fffd D\\fffd e\\fffd+\\fffd\\fffd\\fffdO\"Pd%09\\fffd\u001AVe\\fffd\\\\\\fffdq\u0012\\fffd\\fffd\\fffd\\fffd\\fffdjoQ\\fffdSI\\fffd\\fffd\\fffdO\\656xN+\u0011\\fffd\u001C\\fffd\\fffd\\fffd fQ\\fffdN\\fffdU\\fffd\u0005`(\\fffd\\fffd\\fffdzw\\fffd*W\\fffd 96\\fffd\\fffd.^h\\fffd c\\fffd\\fffd\\fffdL\\fffd 5\u0019\\fffd\\fffd\\fffd 7\u0006\\fffd]0\\fffd\u000E\\fffdR\u000Fz\\fffd\\fffd\\\\\\fffd\\fffd\\fffd d:\\fffd%0A\\fffd\\3f8\u0010\u0017.\\fffdx2\\fffd\\fffd\\0\\fffd\\fffdU\\fffdg\u0002\\a5}^\\0k+\u0002z\\fffd\\fffd\"wj\\fffdV\\'F,\\0\\fffd%0A\u0017\\fffd\\fffd>\\fffd\\fffd]\\fffd?\v\u0014\\fffd\\fffdU9a\\fffdh\\fffd)\u0003\\fffdx\\fffd\\fffd\\fffd\\fffd\\2f1%0A\\fffd\\fffd\u0002`\\fffdL-j\\fffd\\fffdX\u0019\\fffdO\u001B\\fffd*\u001D\\fffdy\\fffdV.\\b7\\fffdj\u0005\\fffd+\u0011\\fffd\\771\\fffd\\fffd\\fffd\\fffd\u0005\\fffd\\fffd\\fffd+\\fffd\\fffd\\fffd\\fffd\\c\\fffd%0A@\\fffdyO\v,\\fffd\\fffd\\5ac\\fffdo\\fffdX\u0001Fh{\\fffdx\u0001\\fffd\\fffd%0A\\fffd\u0001\\fffd+\\'\\fffdj\\fffd\u0017\\fffd\\fffdW\\fffd\\217\\fffd\\fffdj\\fffd\\fffd\\fffd\\fffd\u0019\u0017\\4bb\\fffdl\u0001\\fffd 9\u0015~\u0012\\fffdV\\fffd\\fffd\\fffd\u001D\\fffd\\fffd\u001C\\fffd 7\\fffd\\fffdgH\\fffd\\fffd\\fffd\\1548\\fffdI\\470\u000E,Z\\fffd\\fffd\\fffd\\fffdW\u0006Z\\fffd\\fffdr\\fffd@\\fffd\\fffd\\fffd>\\fffd\\fffd\\fffd\\141m+\\fffd\\fffd d|>=\\fffd\\fffd\u0004@z\\fffdsg\\fffdj_\\fffd%0D\\fffdW\\fffd+I\\fffd\\fffd\\fffd\\fffd\\fffdW\\fffd 1\\fffd\\fffd\\fffd\\fffd\\fffdl3\u0015?\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u001B\u0006\\fffd\\fffd\\fffd\u0003HW\\fffd\\fffdK\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd~>\\fffd\\fffd_\\fffdo\\0\\fffdx=)\\fffd\\fffd{z\\0\\0\\0\\0IEND\\fffd B`\\fffd') no-repeat left top}.p-colorpicker-panel .p-colorpicker-hue{background:transparent url(\"data:image/png,\\fffdPNG%0D%0A\u001A%0A\\0\\0\\0%0DIHDR\\0\\0\\0\u0011\\0\\0\\0\\fffd\b\u0002\\0\\0\\0\\fffd\\fffd\\fffd\\fffd\\0\\0\\0\\fffdIDATX\\fffd\\fffdQ%0A\\fffd@\\c D\\fffd\\456\\fffd\\fffdz\u0005\\fffd%?<D\\fffd\u0015EK\\fffd\\fffdIA\\fffd\u0012\\fffd\\fffd!y\\fffd\\fffd$,\\fffd~\\fffd_\\fffd\\fffd\\fffd\\fffd\\fffdr\\fffdoE\\fffdI \\fffd 2z\\fffd\\fffd\btb\\fffd\\fffd 9\\fffd%Nmg\u0010<\\fffd c\\fffd\\d0c7*\u0016@\\fffd\\253\u0001U\\\\\\fffd \\fffd 1\\fffd\\a4f\\fffd\\fffd\u000E\\fffd\u0004\\fffd{\\fffd\\fffd\\fffd*\\fffd-\u001E\\fffd\\fffd 5\\fffd\\fffd\u0005\\fffd'x\\fffd\\fffd\\109\\fffd\u0006O\u0002q?TQ_\u000F2\\fffd\u0016_\b\\fffd[\\fffd 1\\fffdU<W\\fffd Am<\\fffdk\u001A<\\fffd\\7dc\\fffd)\\fffd C\u0015\\fffd\\62e\u0013@\\fffd]\\fffd<\\fffd(\u0001\\fffd\\fffd\u0015<\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdr\\7da%0D\\fffd\\fffd\\fffdk\\fffdG\\fffd\\c\\fffd 4\\fffd\\fffdx\\fffd\\fffd A\\fffd+\\fffd\\fffd\\fffd DM\u001D\\fffd\\fffd\\fffdS\\fffd 6+*{\\fffd\u0005\\fffd FbV0\\fffd\u001C%\\0\\0\\0\\0IEND\\fffd B`\\fffd\") no-repeat left top}@layer primeng{.p-inputtext{margin:0}.p-fluid .p-inputtext{width:100%}.p-inputgroup{display:flex;align-items:stretch;width:100%}.p-inputgroup-addon{display:flex;align-items:center;justify-content:center}.p-inputgroup .p-float-label{display:flex;align-items:stretch;width:100%}.p-inputgroup .p-inputtext,.p-fluid .p-inputgroup .p-inputtext,.p-inputgroup .p-inputwrapper,.p-inputgroup .p-inputwrapper>.p-component{flex:1 1 auto;width:1%}.p-float-label{display:block;position:relative}.p-float-label label{position:absolute;pointer-events:none;top:50%;margin-top:-.5rem;transition-property:all;transition-timing-function:ease;line-height:1}.p-float-label textarea~label{top:1rem}.p-float-label input:focus~label,.p-float-label input.p-filled~label,.p-float-label textarea:focus~label,.p-float-label textarea.p-filled~label,.p-float-label .p-inputwrapper-focus~label,.p-float-label .p-inputwrapper-filled~label{top:-.75rem;font-size:12px}.p-float-label .input:-webkit-autofill~label{top:-20px;font-size:12px}.p-float-label .p-placeholder,.p-float-label input::placeholder,.p-float-label .p-inputtext::placeholder{opacity:0;transition-property:all;transition-timing-function:ease}.p-float-label .p-focus .p-placeholder,.p-float-label input:focus::placeholder,.p-float-label .p-inputtext:focus::placeholder{opacity:1;transition-property:all;transition-timing-function:ease}.p-input-icon-left,.p-input-icon-right{position:relative;display:inline-block}.p-input-icon-left>i,.p-input-icon-left>.p-icon-wrapper,.p-input-icon-right>i,.p-input-icon-right>.p-icon-wrapper{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-input-icon-left,.p-fluid .p-input-icon-right{display:block;width:100%}}@layer primeng{.p-inputtextarea-resizable{overflow:hidden;resize:none}.p-fluid .p-inputtextarea{width:100%}}@layer primeng{.p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}.p-password-input::-ms-reveal,.p-password-input::-ms-clear{display:none}.p-password-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-password .p-icon{cursor:pointer}.p-password-clearable.p-password-mask .p-password-clear-icon{margin-top:unset}.p-password-clearable{position:relative}}@layer primeng{.p-radiobutton{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-radiobutton-box{display:flex;justify-content:center;align-items:center}.p-radiobutton-icon{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0) scale(.1);border-radius:50%;visibility:hidden}.p-radiobutton-box.p-highlight .p-radiobutton-icon{transform:translateZ(0) scale(1);visibility:visible}p-radiobutton{display:inline-flex;vertical-align:bottom;align-items:center}.p-radiobutton-label{line-height:1}}@layer primeng{.p-ripple{overflow:hidden;position:relative}.p-ink{display:block;position:absolute;background:#ffffff80;border-radius:100%;transform:scale(0)}.p-ink-active{animation:ripple .4s linear}.p-ripple-disabled .p-ink{display:none!important}}@keyframes ripple{to{opacity:0;transform:scale(2.5)}}@layer primeng{.p-tooltip{position:absolute;display:none;padding:.25em .5rem;max-width:12.5rem;pointer-events:none}.p-tooltip.p-tooltip-right,.p-tooltip.p-tooltip-left{padding:0 .25rem}.p-tooltip.p-tooltip-top,.p-tooltip.p-tooltip-bottom{padding:.25em 0}.p-tooltip .p-tooltip-text{white-space:pre-line;word-break:break-word}.p-tooltip-arrow{scale:2;position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.p-tooltip-right .p-tooltip-arrow{top:50%;left:0;margin-top:-.25rem;border-width:.25em .25em .25em 0}.p-tooltip-left .p-tooltip-arrow{top:50%;right:0;margin-top:-.25rem;border-width:.25em 0 .25em .25rem}.p-tooltip.p-tooltip-top{padding:.25em 0}.p-tooltip-top .p-tooltip-arrow{bottom:0;left:50%;margin-left:-.25rem;border-width:.25em .25em 0}.p-tooltip-bottom .p-tooltip-arrow{top:0;left:50%;margin-left:-.25rem;border-width:0 .25em .25rem}}.customDialogClass .p-dialog{height:auto}.customDialogClass .p-dialog-header{padding:.8rem .55rem!important;background-color:#fff!important}.customDialogClass .p-dialog-header-close-icon{color:#000!important}.customDialogClass .p-dialog-content{border-top-left-radius:0%;padding:0}.p-dialog .p-dialog-header{background-color:#fff!important;border-bottom:2px solid #e5e7eb;padding:12px 16px;font-weight:700;font-size:1rem;display:flex;align-items:center;justify-content:space-between}.p-dialog-mask{background:#00000080!important}.p-dialog .p-dialog-content{background-color:#fff;padding:16px}.p-dialog .p-dialog-footer{background-color:#f3f4f6;padding:12px 16px;border-top:2px solid #e5e7eb}.p-dialog .p-dialog-content::-webkit-scrollbar{width:8px}.p-dialog .p-dialog-content::-webkit-scrollbar-track{background-color:#f1f1f1}.p-dialog .p-dialog-content::-webkit-scrollbar-thumb{background-color:#faa762;border-radius:10px}.p-dialog .p-dialog-content::-webkit-scrollbar-thumb:hover{background-color:#faa762}.custom-save-button{background-color:#faa762!important;color:#fff!important;border:1px solid #FAA762!important}.custom-save-button:hover{background-color:#e59550!important;border-color:#e59550!important}.form__input{width:100%;padding:8px;border:1px solid #ccc;border-radius:5px}label{font-size:14px;font-weight:600;margin-bottom:5px}.button-group{display:flex;justify-content:flex-end;gap:10px;padding-top:1rem}button{padding:8px 12px;border:none;border-radius:5px;cursor:pointer}.cancel{background:#ccc;color:#000}.save{background:#007bff;color:#fff}button:hover{opacity:.8}.card-width{width:295px!important;flex-shrink:0}.justify-end{justify-content:end}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i5.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DropdownModule }] });
185
+ }
186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfigurationPanelComponent, decorators: [{
187
+ type: Component,
188
+ args: [{ selector: 'fx-configuration-panel', standalone: true, imports: [CommonModule, ReactiveFormsModule, ButtonModule, DialogModule, InputTextModule, FormsModule, DropdownModule, ButtonModule], template: "<p-dialog header=\"Edit Configurations\" [modal]=\"true\" [draggable]=\"false\" [(visible)]=\"visible\" [style]=\"{width: '70rem'}\" class=\"customDialogClass\">\r\n <!-- <ng-template pTemplate=\"header\">\r\n <div class=\"flex p-2 bg-white border-2\">\r\n <p class=\"text-base\">Edit Configurations</p>\r\n </div>\r\n </ng-template> -->\r\n <div class=\"flex flex-col gap-4 bg-white p-2 border-2 border-gray-200\">\r\n <div class=\"flex items-center gap-4 mb-8 w-full\">\r\n <div class=\"w-1/3\">\r\n <label for=\"rows\" class=\"font-semibold w-24\">Rows</label>\r\n <input type=\"text\" [disabled]=\"enableAPI\" [(ngModel)]=\"rows\" placeholder=\"rows\" class=\"form__input\" id=\"name\" autocomplete=\"rows\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n <label for=\"enableAPI\" class=\"font-semibold w-24\">Enable API</label>\r\n <input type=\"checkbox\" [(ngModel)]=\"enableAPI\" placeholder=\"API Url\" id=\"enableAPI\" autocomplete=\"enableAPI\" />\r\n </div>\r\n <div class=\"w-1/3\">\r\n @if (enableAPI) {\r\n <ng-container>\r\n <label for=\"api\" class=\"font-semibold w-24\">API</label>\r\n <input type=\"text\" [(ngModel)]=\"api\" placeholder=\"Enter API Url\" id=\"api\" class=\"form__input\" autocomplete=\"api\" />\r\n </ng-container>\r\n }\r\n </div> \r\n \r\n </div>\r\n <!-- <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n \r\n </div>\r\n \r\n \r\n </div>\r\n \r\n <div class=\"flex items-center gap-4 mb-8\">\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n <div class=\"w-1/2\">\r\n \r\n </div>\r\n \r\n \r\n </div> -->\r\n \r\n <div class=\"flex flex-wrap gap-4 mb-8\">\r\n \r\n <div class=\"w-full flex items-center justify-between\">\r\n <p class=\"text-sm font-semibold\">Columns:</p>\r\n <!-- <button type=\"button\" (click)=\"addColumn()\" class=\"custom-save-button\">Add Column</button> -->\r\n </div>\r\n \r\n <div class=\"w-full overflow-x-auto\">\r\n <form [formGroup]=\"dynamicForm\" (ngSubmit)=\"onSubmit()\">\r\n <!-- Flex container with nowrap to keep all columns in a single row -->\r\n <div formArrayName=\"columns\" class=\"flex gap-4 flex-nowrap whitespace-nowrap\">\r\n <div *ngFor=\"let column of columns.controls; let i = index\" [formGroupName]=\"i\" \r\n class=\"border p-4 rounded-lg min-w-[20rem] flex-shrink-0 card-width\">\r\n <div class=\"top-2 right-2 flex gap-2 justify-end\">\r\n <button type=\"button\" (click)=\"duplicateColumn(i)\" \r\n class=\"bg-green-500 text-white px-3 py-1 rounded-md hover:bg-green-600\">\r\n \u2795\r\n </button>\r\n <button type=\"button\" (click)=\"removeColumn(i)\" \r\n class=\"text-white px-3 py-1 rounded-md hover:bg-red-600\" *ngIf=\"columns.length>1\">\r\n \u274C\r\n </button>\r\n </div>\r\n <!-- Columns in a Single Row -->\r\n <div class=\"grid grid-cols-1 gap-4 items-center mb-2\">\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Name:</label>\r\n <input formControlName=\"header\" placeholder=\"Enter Column Name\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">Column Type:</label>\r\n <select formControlName=\"cellType\" class=\"w-full border rounded-md px-3 py-2\">\r\n <option *ngFor=\"let type of columnTypes\" [value]=\"type\">{{ type }}</option>\r\n </select>\r\n </div>\r\n @if (enableAPI) {\r\n <div class=\"col-span-3\">\r\n <label class=\"font-semibold\">API Value Key:</label>\r\n <input formControlName=\"apiKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n }\r\n \r\n </div>\r\n <div *ngIf=\"['radio-group', 'dropdown'].includes(column.value.cellType)\" class=\"mt-2\">\r\n\r\n <label class=\"font-semibold\">Options:</label>\r\n \r\n <div formArrayName=\"options\">\r\n <div *ngFor=\"let option of getOptions(i).controls; let j = index\" [formGroupName]=\"j\" \r\n class=\"grid grid-cols-1 gap-4 items-center mt-2\">\r\n <input formControlName=\"optionName\" placeholder=\"Enter Option Name\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <input formControlName=\"optionValue\" placeholder=\"Enter Option Value\" \r\n class=\"col-span-4 border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n <button type=\"button\" (click)=\"getOptions(i).removeAt(j)\" \r\n class=\"col-span-2 bg-red-500 text-white px-2 py-1 rounded-md hover:bg-red-600\">\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n <button type=\"button\" (click)=\"addOption(i)\" class=\"custom-save-button justify-end\">Add Option</button>\r\n </div>\r\n \r\n \r\n <div *ngIf=\"['smart-dropdown'].includes(column.value.cellType)\" class=\"grid grid-cols-1 gap-4 mt-4\">\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">API Url:</label>\r\n <input formControlName=\"apiUrl\" placeholder=\"Enter API URL\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Value Key:</label>\r\n <input formControlName=\"valueKey\" placeholder=\"Enter Value Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n <div class=\"col-span-4\">\r\n <label class=\"font-semibold\">Label Key:</label>\r\n <input formControlName=\"labelKey\" placeholder=\"Enter Label Key\" \r\n class=\"w-full border rounded-md px-3 py-2 focus:ring focus:ring-blue-200\" />\r\n </div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n \r\n \r\n \r\n \r\n </div>\r\n \r\n </div>\r\n\r\n\r\n\r\n <ng-template pTemplate=\"footer\">\r\n <!-- <hr class=\"mt-3 mx-2 mb-0 opacity-10\"> -->\r\n <!-- <div class=\"flex justify-end gap-4 w-full\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\" />\r\n <p-button styleClass=\"border border-indigo-600\" label=\"Save\" (click)=\"saveConfiguration()\" />\r\n </div> -->\r\n <div class=\"flex justify-center my-3\">\r\n <p-button label=\"Cancel\" severity=\"secondary\" (click)=\"closeDialog()\"\r\n styleClass=\"border-gray-400\" />\r\n <p-button label=\"Attach\" label=\"Save\" (click)=\"saveConfiguration()\" \r\n styleClass=\"cta_buttons text-medium button_text_white secondary-color border-1 stroke_secondary no_hightlight no_hightlight_stroke h-max mr-2 w-6rem custom-save-button\"\r\n />\r\n </div>\r\n </ng-template>\r\n</p-dialog>", styles: [".p-overflow-hidden{overflow:hidden;padding-right:var(--scrollbar-width)}@layer primeng{.p-component,.p-component *{box-sizing:border-box}.p-hidden{display:none}.p-hidden-space{visibility:hidden}.p-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.p-hidden-accessible input,.p-hidden-accessible select{transform:scale(0)}.p-reset{margin:0;padding:0;border:0;outline:0;text-decoration:none;font-size:100%;list-style:none}.p-disabled,.p-disabled *{cursor:default!important;pointer-events:none}.p-component-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.p-unselectable-text{-webkit-user-select:none;user-select:none}.p-scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}@-webkit-keyframes p-fadein{0%{opacity:0}to{opacity:1}}@keyframes p-fadein{0%{opacity:0}to{opacity:1}}input[type=button],input[type=submit],input[type=reset],input[type=file]::-webkit-file-upload-button,button{border-radius:0}.p-link{text-align:left;background-color:transparent;margin:0;padding:0;border:0;cursor:pointer;-webkit-user-select:none;user-select:none}.p-link:disabled{cursor:default}.p-sr-only{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.p-connected-overlay{opacity:0;transform:scaleY(.8);transition:transform .12s cubic-bezier(0,0,.2,1),opacity .12s cubic-bezier(0,0,.2,1)}.p-connected-overlay-visible{opacity:1;transform:scaleY(1)}.p-connected-overlay-hidden{opacity:0;transform:scaleY(1);transition:opacity .1s linear}.p-toggleable-content.ng-animating{overflow:hidden}.p-icon-wrapper{display:inline-flex}.p-icon{display:inline-block}.p-icon-spin{-webkit-animation:p-icon-spin 2s infinite linear;animation:p-icon-spin 2s infinite linear}}@-webkit-keyframes p-icon-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes p-icon-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@layer primeng{.p-badge{display:inline-block;border-radius:10px;text-align:center;padding:0 .5rem}.p-overlay-badge{position:relative}.p-overlay-badge .p-badge{position:absolute;top:0;right:0;transform:translate(50%,-50%);transform-origin:100% 0;margin:0}.p-badge-dot{width:.5rem;min-width:.5rem;height:.5rem;border-radius:50%;padding:0}.p-badge-no-gutter{padding:0;border-radius:50%}}@layer primeng{.p-button{margin:0;display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;vertical-align:bottom;text-align:center;overflow:hidden;position:relative}.p-button-label{flex:1 1 auto}.p-button-icon-right{order:1}.p-button:disabled{cursor:default;pointer-events:none}.p-button-icon-only{justify-content:center}.p-button-icon-only:after{content:\"p\";visibility:hidden;clip:rect(0 0 0 0);width:0}.p-button-vertical{flex-direction:column}.p-button-icon-bottom{order:2}.p-button-group .p-button{margin:0}.p-button-group .p-button:focus,.p-button-group p-button:focus .p-button,.p-buttonset .p-button:focus,.p-buttonset p-button:focus .p-button{position:relative;z-index:1}.p-button-group .p-button:not(:last-child),.p-button-group .p-button:not(:last-child):hover,.p-button-group p-button:not(:last-child) .p-button,.p-button-group p-button:not(:last-child) .p-button:hover,.p-buttonset .p-button:not(:last-child),.p-buttonset .p-button:not(:last-child):hover,.p-buttonset p-button:not(:last-child) .p-button,.p-buttonset p-button:not(:last-child) .p-button:hover{border-right:0 none}.p-button-group .p-button:not(:first-of-type):not(:last-of-type),.p-button-group p-button:not(:first-of-type):not(:last-of-type) .p-button,.p-buttonset .p-button:not(:first-of-type):not(:last-of-type),.p-buttonset p-button:not(:first-of-type):not(:last-of-type) .p-button{border-radius:0}.p-button-group .p-button:first-of-type:not(:only-of-type),.p-button-group p-button:first-of-type:not(:only-of-type) .p-button,.p-buttonset .p-button:first-of-type:not(:only-of-type),.p-buttonset p-button:first-of-type:not(:only-of-type) .p-button{border-top-right-radius:0;border-bottom-right-radius:0}.p-button-group .p-button:last-of-type:not(:only-of-type),.p-button-group p-button:last-of-type:not(:only-of-type) .p-button,.p-buttonset .p-button:last-of-type:not(:only-of-type),.p-buttonset p-button:last-of-type:not(:only-of-type) .p-button{border-top-left-radius:0;border-bottom-left-radius:0}p-button[iconpos=right] spinnericon{order:1}}@layer primeng{.p-checkbox{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-checkbox-disabled{cursor:default!important;pointer-events:none}.p-checkbox-box{display:flex;justify-content:center;align-items:center}p-checkbox{display:inline-flex;vertical-align:bottom;align-items:center}.p-checkbox-label{line-height:1}}.p-colorpicker-panel .p-colorpicker-color{background:transparent url('data:image/png,\\fffdPNG%0D%0A\u001A%0A\\0\\0\\0%0DIHDR\\0\\0\\0\\fffd\\0\\0\\0\\fffd\b\u0006\\0\\0\\0<\u0001q\\fffd\\0\\0\\0%09pHYs\\0\\0\v\u0013\\0\\0\v\u0013\u0001\\0\\fffd\\fffd\u0018\\0\\0\\0 cHRM\\0\\0z-\\0\\0\\fffd\\fffd\\0\\0\\fffd\\fffd\\0\\0\\fffdR\\0\\0qE\\0\\0\\fffd f\\0\\0 9\u0007\\0\\0!\\fffd\u0003\\'\\fffdV\\0\\0\\'\\fffdIDATx\\fffd\\fffd}\\2ce\\fffdH\\fffd\\fffd\u001A\\'\\fffd\\fffd\u001E\\fffdO\\fffd;\\fffd\u000F\\fffd 8\\fffdn\\fffd\\fffd]\\755Y\\fffd\\fffd\u000F\\fffd=\u0014\\fffd%\u0014\\fffd\\fffd\\fffd\\fffdG\\fffd\u0002\\fffd%09 \u0010\\fffdN:\\fffd\\fffd(T\u0011\u0015U36w\\fffd/3\\fffd\\fffd f\\fffd 03\\fffd\\fffd\\fffd\u001B=\\fffd\\fffd\\fffd\\fffd;\\fffd\\fffd\\fffd\\fffd\\fffd~\\fffd 6w/\\fffdW=\\fffdx\\fffd\\fffd 1\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd\\1e2\\fffd\\fffd\\c?\\fffd\\fffd\\fffd\\fffd\\fffdw\u001C\\fffd\\fffdZ\\fffd\\fffd\\77d\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\77f}\\fffd\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd\\fffd cf\\fffdk\u0007\\fffd\\fffdy\u0016O\\fffdl@\" \\fffdN\\533z\\fffd\\fffd\\f203\\fffd\\fffd 1\u0012\\fffd\\fffd\\fffd\\0\u0010\\fffd\u0018\\fffd\\fffd\\fffdyvq\\fffd\\fffd\\fffd\\fffd%09\\fffd\\fffd\\fffd\u0006\\fffd\\fffd\\fffd\\7fad\\fffd\\fffd\\6ce\\fffd\u0006\\fffd\\fffdx<\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u001F\u001F\u001F\\fffd\\fffd\\fffdw\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdO?\\fffd_\\fffd\\fffdW\\fffd\\fffd{\\fffdz|\\fffdI\\fffd\\640\\fffds\\fffd^<\\fffd\\fffd/\\\\\\fffdo\\fffd\\fffd\\fffdN?\\fffdo23\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd 9?v<\\fffd\\fffd\\fffd\\fffdo\\fffd\\fffdv\u0010\\fffd\\5cf}v\\fffdl;\\fffd\\fffdk\\fffd|>\\fffd\\fffd|\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdn\\fffd\\fffd\\fffdn7\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdO?\\fffd d\\7fe}\\fffd/\\fffd\u000F\\fffd~h\\fffd ffm\\fffd\\1035\\fffdV\\fffd\\fffd\\fffd\\7381%0D\u001E\\fffd\u0006=\\fffd\\fffd\\fffd*\\fffd}\\fffd\\\\<\\fffd\\fffd\\fffdm\u0007>\\fffd\\fffd\u0005\\fffd\u0018\u001C\v\\fffdy\\fffdG\\fffd 7\\0\\fffd F\\0r\\0V\u001B@\\fffd\\fffdt\\fffd\\fffd\\fffd\\fffd\\fffd|Z\\ff4d\\fffd\\fffd\\1e3=\u001E\\fffd\\fffd~\\fffd\\fffd\\fffdv\\cf3cf\\fffd\\fffd\\fffd\u000F\\fffd\\fffd\\fffd[\\fffd\\fffd\\fffd_\\fffd?\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd~\\fffd\\fffd\\fffd\\fffdx<\\697\\fffd\\fffd\\289\\fffd\\fffd\u0015\\fffd\u0004\\'o%0A\u0010\\fffdl\\fffd\\fffdr\u0002\\fffd\\0\\fffd\\fffd D\\fffd\\58e\u0013\\fffd\u0017B\\fffdY\\c\u0012\\fffd\u0001\\fffd\\fffd\\fffd\\fffd\\fffd 6xlj\\fffd\\fffd[km\\fffd[k\\fffd\\fffd[\\fffd=\u0004\u0016E\\fffd%23R\\fffd\\fffd\u0007\\fffd\\fffds~\u0002\\448R;\\fffd|\\fffdP}\\fffd\\6de\\fffdg\\fffd\\fffd\\fffd\\fffdn;\u0005\\fffd\\5ef_\\fffd_\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd/\\fffd\\fffd\\5ef_\\fffd\\fffd|\\fffd\u0014X00)\\fffd\\fffd\u0011&\u0004g!\\fffd\\fffd\\'^\\0I\\fffdM\u0015\\fffd a$%0A\\fffd\\fffd\u0001\\fffd\\fffd\\fffd FA\\fffd 9\\fffd\\fffd\\fffd A\\fffd 0\\fffd\\fffd c\\fffd\u0011\\fffdN\\fffd 6\\fffd\\fffd\u0007\\fffd\\fffd 1\\fffd\\fffd\\fffd\\fffd{\\fffd\\fffd`rw{<\u001E\u0003X\\fffd|>}\\0\\fffdv\\fffd\\fffd\\fffd\\fffd f\\fffd\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffdo\\fffd\u001D\\fffd\\fffd\\fffd\\fffd_\\fffd\\fffd\\5ef\\fffd\\fffdo\\fffdY\\fffd}%0A\\fffd\\fffd\\fffd\"m\\fffd\"[\\fffd\\fffd\\1a0\\fffd\\fffd;\\fffd\\fffd\\fffd\\fffd\\fffd\u0010\\fffd\\fffd DT\\fffd\\fffd.\u0003V\\fffdx\u0003$\\fffd\\fffd\\fffd.`\"\\fffd 4\\0\\519\\fffd\\fffdl\\fffd\u0019\u0002\\fffd 0B\\fffd\\fffd\\fffd\\7fe\\fffd 6\u0004\\fffd\\fffd{?\"\u0016\u0002\v5\\fffd\\fffd~\\fffd\\fffd\\fffd\u000F\\fffd\\fffd\\fffdG\\fffd\\fffd\\fffdh\\fffd\\fffd\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdv\\fffd\\fffd\u000E\\fffd(RT\u0001\\fffd\\fffdg\"N\\fffdH\\fffd\\fffd*\\fffd\\fffd|\\fffd\b \\fffd\\fffd\\fffd\\fffd\\fffdZ\\d3\\fffd\\fffd 5\\cb\u0011%23z\\0\\fffd\\fffdG\u0001Pf\\fffdr\u0012\\5ca\\fffd\u001A\\fffd\\fffd\u001E\\fffd\u0006x\u001AF,\\fffdQ\\fffd\\fffd\\fffd\\fffd\\fffdv\u001D5@5\\fffd\\6ee\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdn\\fffd\\fffd\\fffd\\fffd\\fffd\\7ff\\fffd\\fffd~\\fffd\\fffd}||\\c\\fffd\\fffd~\\fffd\\fffd\\fffdn\\fffd\\fffd=\u001E\\fffd ffZcU\\fffd 5\\fffd d+\\0\\fffd-\\fffd\\b20e<H *\\fffdNQ\\fffd\\fffd D^\\fffdK\u0006\u0011\\fffdG\\fffd\"\\0!\\fffdu\\fffd/\\fffdK\\fffd\\fffd f`\\fffd\\fffd\\fffd D\\fffd\\fffd\b\\fffd A\\fffd%23za\\fffd\u001AT\\fffdk\\fffd\\fffd\\fffd\\fffd\\fffd,pD,\\fffd\\fffd\\fffd\\fffdo\\7fe%0D!o?~\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd B\\fffd\u001E\\\\\\fffd/\\464 8\\fffd>\\fffdt\u0019\\fffdI\\fffd(\\fffd)@\\fffd 1[!\\fffd\\fffd\u0019\u0015\\fffd\\fffd\\fffd\u001E\\fffd\\fffd\\fffd\u0016\\0\\fffd\\fffd\\fffd\\fffd`\\fffd\bu\\fffdk\\fffd\\fffd&\\fffd\\fffd d{;\\fffd a\u0004\\6d0\\fffd\bL\u0003h\\fffd\\fffd\\fffd\\0\\fffd\\fffd\\fffd\\fffd]S\\fffd\\fffd\\fffd@\\fffd\\fffd\u0001*\u0004\\fffd\\0\\4b7o\\fffd\\fffd\\fffd\\fffd\\1f6\\fffd\u0001,\\fffdP\\fffd\\cO\\fffdZHRs\\fffd e\\fffd\u00118\\fffd 82\\fffd\u0005\\78fGQ\\fffd\\fffd=ff\u0002\u0014\\fffd\u0017X\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd 5p\\fffd\u0018t\\fffd\\f0$]u\\fffd\\fffd a\u001B\\c:DKa\\8a9d\\fffdl\\fffd\\fffd\u0013\\fffd=\\fffd\\3f6G\\fffdv\\fffd\\fffd\\6ee\\fffdNT\\fffd\\fffd?>>\\fffd\\fffd\\1c7=\u001E\\fffd\\fffd\\fffdx\\fffd\u0011\u00199bM\\fffd\\fffd,J\\fffd\\fffd\\fffd\u0005\\fffd\\fffd\u0001\\fffd\"\\a2f2 1\\fffdG\\fffd|\u0011y\u001C\\fffdsa\u0007x$\\4154h\\fffd)\\fffd@6\u001Cn\\fffdT\\fffd^\"1\\0 b%23\\fffd\\fffd%0D\\fffd\\fffd\\fffd\\fffds\\fffd d\\fffd%0D-\\fffd\\fffd@\u0007\\fffdj\u0018\\fffdGd\\fffd\u001F\\fffd}\\fffdVv\\fffd\\fffd\\fffd~\\fffd\\fffd\\fffd\\fffd%0DSt\b\\fffd}\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffdw{<\u001EG\\fffd\\fffdh\\fffd\\fffdQ\\fffd\\fffd*\u0003TK\"Oh\\fffd\\fffd\\c\\c897\\fffd\\fffdv\\fffd\\fffd\\fffd\\fffd\\fffd\\4f6\b\\fffdM\\0 FzP\\fffd\\fffd 5\u0006\\c\u001CsS\u0019\u001D\\fffd\u0001\\200\\fffd\\cJ.hn\\fffd 7\\fffdQ\\fffd\\fffd@C a&\\fffd\\fffdWuP\\fffdn\\fffdn\u0002Xv\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdn\\fffd\u001Bf\\fffd\\fffd\u0003qd\\fffd>\\fffd}\u0002\u0016g<\\fffdl+\\fffdrHApB\\fffd\\fffdw\\fffd\\fffd\\fffdV\\0\\fffd\u0005\\11c(\\fffd\\fffd m\u0001\\fffd\\fffdy\u0014\\fffd.\u0011p\\fffd\\fffd\u0010\\fffd\\fffd\\fffd.2-\\fffd c\u0016\\fffd\\'\\fffd\\fffd`\u0002 %0DZ\\fffd\u001C\\fffd\\fffd(\\fffd\\fffdj\\0iD)\\736!\\fffd\u0006\\fffd\\fffd\\235\\fffdQh\\0i\\0\\c\\fffd\\fffd\u0003\\fffd\u001F\u001F\u001F\u000E\u0011\\fffd\\fffd\\fffd^\\0U\\fffd\u001F\\'W\\42d\\fffd\\fffd\u001A\\9ca2\\fffd\\ch\u0002\\517\\c\u000F\\fffd\\fffd B^\u0001\\fffdu\\fffd\\fffd\u000EX\\fffd\\fffd\\fffd\u0011\\fffd\\fffd\u0003\\0N\\fffd\\fffd\\fffd\\fffd 9\u0007\\fffd\\fffd\u0013\\fffd\\fffd\u0001L\\fffd\\fffd\u001BF\\fffd\\fffd\\fffdyl{>\\fffd\\fffd\\78dpD\\fffd\\fffd%09\u000E\\fffdt\\fffd\\fffd\u0007\\fffd\\fffd\u000E\\fffd\\fffdG\\fffd~\\fffd\\fffd}\\fffd am\u0007\\fffd A\\fffd\\fffd\\fffd\\73d\\fffd\\fffdp\\fffd\\fffd%0A(-\u0013\\fffdx\\fffdK\u0003\\fffd 4\\fffd\\fffd 2\\fffd\\fffd 2\u001D%\u0004\\fffd\\6b6\u0012\\fffd\"\\fffdi\u0013T\\fffd\\fffd\u001A@\\fffd}\\fffd\\fffd\\fffd\u0001F\\fffd\\fffd F\\fffd\"\\fffd a\\fffd 2\\fffd\\fffd\\fffd\u001C\\fffd F&xh\\fffd\\fffd\\fffd\u0013\\fffd\\fffdY\\fffd 6\"\\fffd\u000E0\\fffd\\fffdn\u000E\\fffd\\fffd\\fffd 4k\\fffd\u000Ek\\fffd%0A\u0003\u0010\\fffdh\\fffd E\\fffd\b \u0015\\fffd E\u0011\\154\\fffd\\'\\fffd\\fffd 2NU\\fffd\\'\"\\fffd\u0001\u0005JG=+\\fffd 2x\\fffd\\fffd CJ\u001BB\u001E\\fffd\u0015\\fffd\u0012\\fffd\\fffd\bL\\fffd-\u0005\u0004\\fffd\\fffdU\\fffdu\\fffd\u0014 \v\\fffd\\fffd\\7cf9{\\fffd[_\\fffd\\fffd\\fffdw%0A\\fffd\\fffdn\\fffd\\fffd\\fffd\\fffdG\\fffd C[\\fffdv\\fffd\\fffd\\fffd\\3c61 E1>c\\fffd\\fffd\\fffd\\fffdP\\fffd\\'\u0002ODm\\fffd\\fffd\u001F\\fffd\u0012E8\u00052\\fffdh\\fffd(\\303\\fffd\u0001E\\fffd\\fffdQ\b\\fffd\u0017\u0001K\\fffd:%09E\\fffd 38\\fffd\\fffdr\\fffdo?a\u0017K\u0001\\fffdU\u001F\\fffdR\\8d33w\u0005\u001D\vH\\fffd\u0007\\fffd=\u001E\u000Fw\\fffd\\fffdn\u0018\\fffdgv\\fffd\\fffdmG\u0007\u0004GO3\\fffd\\4c8U\\fffd`\u0013\\fffdXf!\\43e\\fffd\\fffd\\fffd\u0010\\fffd\\fffd\\fffd\\fffd\\fffd 6p\\fffd\u0011L\u001C\\fffd\\fffd\\fffd\u0002U\\fffd\u0013\\fffdm\\fffd\\fffd 9eyG$\u001A\\fffd\u0003\\fffd\\fffd&\u0011\\fffd\u001D\\fffdN\\0;\\fffd\\fffd\\fffdkX%0A\\0\\fffd\\fffd\\fffduw\u001F\u0002\u001E;\u001A\u001A\\fffd`%0D=\\fffd\\fffd\\fffd\\fffdk\\fffd\\fffd\u0001;,\u000E3\\fffd\u0010XQ%09\\fffdR\\fffd\\fffd,\"%09cRQ!\\fffd)O\\fffd\\fffd)@\\fffd\\fffd\\fffd\\fffd 3\u0016\\0\\fffd\\fffd 1\\fffd&g\\fffd\u0007\\fffd\\0\v4\\fffd\\27b\\fffdl\u000FLOI\\fffd\\0\\fffd\u0011\\fffd\u0018d\\6fe\\fffd@\u0018\\fffd\\fffd+w}\\fffdg\u001B\\fffd f\\fffdX{\\fffdr\\fffd\u0018\\fffd\\fffdv\\fffd\\fffd|h*\u0004\\fffd\\0\\fffd\\fffd\\fffd_T\\fffd 4\u0003L\\fffd\\761\\fffd\\fffd\b\\fffd\\fffdkG\\fffd\\fffd[\u0007\\fffd\\fffd\\fffd\u0006\\fffd\u0003?\u001F \\fffd\\fffd\\fffd\u0014\\fffd 8%23\\fffdHo\u0011\\fffd 5\\fffd_\\fffdw\\0\\fffdO\u0004\\fffd 1\u001E\u0004,n\\fffds\\fffd\\fffd 9\\fffd\\fffd\\fffd)\\fffd\\fffd\\fffd\u00151\\fffd\\fffdx\\fffdH\\fffd\\fffd\\0\\fffd]C%0D\\fffd\\fffd 9\\fffd\\fffd\\fffd a3\\fffd%23\\fffd\\0\\fffd\\fffd[?\u001Cx,V\\fffd\\c;+\u000E\\\\|\u0011\\fffd\\fffd)5\u0006\\fffd\\fffd\\fffd\u001D\\fffd\\fffd\\fffd\\fffd\u0018\\fffd\\fffd\\452P\\fffd\\251OR+\\fffdL8JBC\\fffd\\fffd\\fffd 1a\u0013\\\\\\fffd 1\\fffd\u0006\bt\\fffd\\fffduA\\fffd\\708g\\0\\fffd%23\u0019\u0018\\fffd%09\\fffd\\13b C\u001B\\320\\fffd\u000E\\fffd\\fffd\\fffdN\\fffd\\fffd\\fffd\\fffdx\u000E\\fffd\\fffd\\fffd\\fffd\\686\\fffd\\fffd%23\\fffd 6\\fffd 8\\fffd\u0012[\\fffdGd\\fffd\u00028S\\fffdL_)\\fffd[=\\fffd\\fffd\u000E\\fffd\\fffd\\fffd>\\fffd@\\fffd\u001F\\eda0IE}\u001BL\u001C\\fffd D/\\fffd\\fffd dZ2H&\\fffd\\fffd E\\723\\fffd\u0010\u0018\\fffdln\"5\"-np\\fffd\\fffd F\\fffd\\fffd\\3b6SZC\\fffd\u0014\\fffd f\\0.\\fffd\u001B:P\\fffd\\fffd\\fffdl\\fffd\\fffd@\\fffd\u001F\\fffd\\fffd\\fffd\\6a7\\fffd\\fffd\\430U`\\fffd\\fffd]\\fffd\\\\Y\u0011-\u0002P\\fffd\\fffd\\fffd\\fffd b\\fffd\\fffd\\fffd\\fffdXD\\fffd.\\fffd 9\u0017\\fffdO\\fffdu\\fffd\\fffd\u0016\\fffd\\fffd\\fffd\\fffdX7\\fffd\\fffd\\fffd\u0003\\fffd 5\u0002\\fffd 6a1t0E\u0011dR\\fffd\u000F\\fffd\\fffd\\fffd 3\u0004{\\fffd c\\fffd\\fffd\\fffd\\fffd\u0004b\\fffd\\fffdlX\\1b9 D,\\fffd\\fffd*-& \\fffd\\fffd\\fffd\\fffd%09\\fffdy@\\fffd\\fffd\\fffdvn\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd-\\fffd\\fffd\\fffd\\fffdLX\u0003\u0017\u001D\u0015\\fffd\\c362\\560x\\9f23\\740\\fffd%0A\\0\\fffd\u001A\vg\\fffd 86\\fffd=\\fffdO7\\fffd\\fffd\\fffd\\fffd\\fffdw\\fffd\\fffd\\fffd\u0003\\fffd\\fffdn%\u001C\u0019\\fffd\\fffd\\432\\fffd D\\fffd%0A\\fffdg\\fffd 5\\fffd\u00120d%\u0016\\fffdT\\fffdRJD\\fffd\"\\fffd;\\fffd\u0006Aq\\fffdj\\fffd\\fffdY\\fffd\\fffdp\\fffd\\fffd\\fffd\\fffdV\\fffd\\fffd^\\fffd\\fffd\u0003\\fffd d\\fffd\\fffd 8*\\fffdZ\\fffd\\0@\\fffd\\fffd Zu(\\fffd\\c \u001ETH\\fffdx\\fffd 6\\cR\\fffd\\fffdm\u001Cs\\fffdt%23J\\fffdN\\fffd\u001B\\0\\fffdl7\\fffd\"V5Z\u00118<q\\fffd%23\\fffd 5u\\fffd@S\\fffd\\fffdP\\fffd(\u001F\u0003%23\\fffd*Bg\\fffdS\\fffd 7z\\fffd\\fffd\\fffd aL\\\\ \\fffd D\\fffd\\b92b:Lv8m\\fffd\\fffd\u001D\\fffd\\fffdN\\fffd\\fffd\u0007\\fffd\\fffd~\\fffd\\ced08%\u001Ep\\d3d2\\fffd\u001E\u0001\u001D\\fffd\u0006O\\fffd!\u0005\u0002\\6d4\\fffd\\fffd\u0005\\fffd\vr?\\232\\fffd\\fffd|X\u0012`G\\\\\\fffd\\fffd\u0001\\fffd\\fffd\\fffd\u0005\\fffd\\fffd D6AiFB\\fffd\\fffd\u0004\u001B\\fffd\\fffd\\'\\fffd\\fffdhnP\u000E|\\fffd%{\u0004%0As\\fffd^XXv\u0010\\fffd\\fffd\\fffd|\\fffd%0D\\fffd\u0016\\fffd\\fffdN\\fffd\\fffd C\\fffd\u001Ct\\fffd\\fffd\\fffdU0\\fffd 8\\fffdg\u0014\\fffd\\fffdR84\\fffdN\\fffd\\fffdj=0\\fffd\\fffdv\u0003\\fffd\\fffd\\fffd\b\u0015i\\fffd\u0006\\fffdM\\fffd\vk\u0019\u0004\b\\fffd C\\fffdUu\u0015\u0011Y\u0007\u0005\\fffd\\525\\fffd\"\\fffd%09m\\fffd\\fffd a\u0013\\fffd\\fffd%09\\fffd\u0001=\\fffd\\fffd\\fffd>\\fffd\u0019\\fffd\\fffdT$\\fffd\\8166(D\\fffd F\u0011kc*\\fffd%23%0DRacZ\\729\\fffd-\u000E\\fffd\\fffd\\fffdp\u0007S\\fffd f\\fffd\\164d\\fffd\u0012\\fffd\\fffd\\fffdJ:E\\fffdj\\fffd%\\fffd E49\\fffdL\\fffd\u0005\u000E\\fffd\\fffdY!\\fffd\\'},\u0006\u001A\u001B\\fffd\\fffd\\cp\\fffd\u001A\u0003\\fffd\\fffd\\fffd\\fffd\\fffd@@\\fffdJc\\fffd\\fffd@\\fffd\\fffd\u001F\u001F\\fffd ?\u0006\\fffd\u001DA7<*\u0006]\\fffd\\fffd 5\\fffdt48\\fffd\\fffd cB\\fffd\\fffd\\fffd\u0019\\fffd,\u0001U\\fffd\\fffd-\u0002\\fffd\u0005`\\fffd 3\\fffd\u0002\v\\fffd\\fffd\\5dc 3\u0016*\\fffd 8\\fffd\\fffdM\\fffd\\fffd<\u0002\u001B\u0014\\fffd%2309\u001B\\fffdH\\fffd\\fffd\\fffd]\\fffd\\fffd\\fffd\\fffd\u000E\\fffd;e\\fffd\u001B\\fffd\\1a0\\fffd\u0015\\0\\fffd!%0A\\fffd\\fffdwJ\\0\\fffd}+\u0004\u0013\\fffd*\\fffd\u001B\\fffd\\fffd\\fffd\u0017\\0 7\\fffd f\\fffdg\v y2\\fffd!r\\fffd%23\\fffd D\\fffd\\3c0v\\fffd\\fffd\u0011\\65e\\fffdRN\u0016\\fffd\\fffd\u0016M4\\fffd\u0019\\fffd\u0003\\fffd\\fffd\u0006|\\fffd\\fffd%0A\\7c7Z\\a939\\fffd\u001Ey\\fffd\u001EPP\\fffd\\fffd\\fffd\\fffd 9b\\fffd\\fffd\\fffdX\u0017\\fffd@\\fffd\\fffd%\\fffd\\fffd\\fffd\\fffd\\fffd E\\fffd\\fffd d\\fffdKDc\\fffd 8\\fffd dQ\\fffd\u0010\u0017\\410\u0016\u0003\\fffd\\fffd\\227\\fffdP\\fffdx\\fffd\\fffd\u001D\\fffd\\fffd\\fffd-\\fffd%0Aw0cI\\fffd\\fffdy\\fffdP\u001B\\fffdp\\fffdg\\fffd\\1e7\\206\\fffdr\\406 \\fffd\u001E\\fffd\u000E-3\u0016\\fffd%0D\u0013\\fffd\\fffd E\\fffd\v8\\fffd\\fffdR\\0$ps\\fffd E\\fffdVMQ\\fffd\u0010\\fffd 3-e\\fffd\\fffdoA\\fffd\\fffd\u0016\\fffd\\fffdT\u001F\u001F\\fffdh\\fffd%0AB\\fffd c%09\\fffd c\\fffd\u0006\\fffd\\fffd\\fffd\\fffd@\\fffd\\fffd\\fffdz<\u001E\\fffd%0A\\fffd B@\\fffd\\5415\\fffd\\fffd\u000Ei\u0012\\5cb\\fffd\\fffdo\\fffd\\fffd\\fffd%0AK`\"1\u001F%09\\fffdW(\\3c2\u0006\\fffd\u0019x<\\fffd@\\fffdKwL\\fffd\u0013J<\\fffd=\\fffd\u0010\\fffdN\\fffdI\\fffd\\fffd\\fffd_\\fffd\\fffd\\fffd\\fffd\u0019\\fffd\v@?&\\fffd\\fffdQc96\\fffd%0D\\fffd Bz\u001B6\\fffd\u0018Kl\\fffd\\fffd\\fffdjRk\\fffd\\fffd\\0\\517\\fffd 1b\\fffd\\fffd\u0006\\fffdL\\fffd c\\fffdh\\fffdzG\\fffdz\u0001\\fffd\\1b5\\fffd\u0004H\\c^\\fffd\\fffdW\\fffd\\fffd\u0005B\u001C\\fffd-\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd:E/\\fffd\\fffd^\\fffd\\fffd\\4a1\\fffd}2A\\fffd\u0010\\fffd\\0\"\\'*<(%0D%23\u0014\\0\\fffd\\fffd\\fffd\\fffd\"\\fffd\\fffd\\293!z\\\\W\\fffdTh\\fffd\\c aE[*\\fffd\\fffd\u0017\u0001Id\u00195^@\\fffdm\\fffd\\1ee\\fffd\\fffdY\\fffdr\\1f8\\fffdX\\fffd\u0006\\fffd\\fffd \u0007\\fffd\\fffd\\fffd eC\\\\\\fffd 1\\40f\u0012\\fffdh8\u0013\\fffd\\fffd\\fffdMQ!f\\fffd\u0004\\fffd\\fffd\\fffd\\fffd\\fffd A6\\fffd\\fffd\\fffd e*3\u0004\\fffd\\373\\fffd%09\\fffd\\fffd\u001A\\fffd\\fffd\\fffd\\7dd\\fffd\\fffd_i\u001B\\fffd%0DLM\u0014\\fffd\\fffd\\245Q{\\fffd\\1ad\\fffd%23\\fffdp\\fffdQY\u0014Q4\\fffd\\fffd*\u0002\\fffd E\\fffd\\fffd 1\\fffdm\b:\\fffd\u0002\\fffd 6t\\fffd\\fffd\\fffd:\\fffd~Fd\":D\\fffdw\\fffdn\\fffd\u001Bv%23\\fffd\u0001\\fffd\\ecG\\fffdl{\\fffd\\fffdG+\\fffdX\\fffdnS\\1c1\u0005QLE=W\\fffd-\\fffd 2@\\fffdl\\fffd\\fffd A\\fffd\\fffdz\\fffdR\u001D\\fffdm\\fffd\\fffd\\fffd\\fffdh8\\fffd(\\fffd\\fffdN\\fffd\\fffd\\fffd\\fffd\u0006\\fffd\\fffd\\fffd\u0001\\fffd/\\fffdn\\'K\u0002t\\fffd\\fffd 4ee h\\9f3e\\fffd\\fffd\\fffd\\fffd at\\fffd EKJ\u0013\u0019\\fffd\u0005`\\fffd\\fffd\b\\fffd\\'\\fffd E\u0007CF\\fffdlZ\\fffd\\fffdp\\fffdh\\fffd E\\fffd\u001A\\fffd\\66e 4V\\fffd\\fffd\\fffd%\\fffd\\fffd\\'\\fffd+\\fffd\\fffd\\fffd\u001E,\\fffd\\fffd\v\\fffd!-\\fffd\\fffd\\fffd\\fffd=\\fffd\\fffd\v\\fffd\\fffd/\\fffd 28z\u0011%0D\\fffdI\\fffd\\fffd]\\fffd\bj:\\56cw*\\fffd\u001F<\\fffdG\u001Eh,~\\fffd\\fffd\\fffdK\u0003E\\fffd\\fffd(\\3d5\\fffdN\\fffd\u0007K1\\fffd\\fffd C\\fffdO\\fffd%0A&Y\\fffd\\fffd>\u001C\\fffd-8\\fffd\\']\u00056\u0004>o\\\\;\\fffd\\fffdM\\fffd\u0002$\\fffd)\u0016\\fffdT\\fffd\\fffd\u0015\\fffds\\fffd 5\\fffd|P\\fffd\\1fe`-\\fffd\\0 FF\\fffd\\fffd\b.\\fffd\\fffd`\\fffdK1\\fffdq\u0001=\\fffdX\\fffd\u0016\\fffd\\fffdL\v\\fffd\u0006\\'\\fffd\\fffd\\fffd\\fffd)Z\u0002\u001D\\fffd\\fffdp\u0012\\fffd\u0001M\\fffd 1\u0010\\fffdl%23\\fffd\\fffd:\\fffd\\fffdha\\fffd\\fffd\\fffd\\fffd\\fffd\u001C\\fffd\\fffdV\u0018\u0001`%\\fffd\\fffd\\cr\\fffd\\fffd\u0014\\fffd 1\\fffd\u0016\\fffd\\fffd\u0002-\\fffdR!;\\fffd{A\\fffd\\fffdy\\fffdHg@o\\fffd\\0\\fffd\u0004\u0005Z%0A\u0018^ +D\\fffd\\fffd~,SV\\fffd\\fffd%0A\\fffdn8\\fffd)D&\\fffd\\fffd\\fffd\\fffdh\\fffd\\fffd\\fffd\\fffdq\\fffd\\fffdmI\\fffd\u0007-1\\fffd^\\fffd\\360\\fffd\"W\\fffdK\\fffd\u00010\\fffd\u0014\\\\\\fffd\u0004\\fffd)]\\49fRB?\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u0006*\\fffd X\\fffdm\\fffdP&\\4d6\\fffd F\\fffd\\fffd\\fffd\\fffdG\u0006\u0007\\fffd A\\0\\fffd\\fffd\\fffd(\u0012=-\u0004\\fffd\\fffdqS\u0004\u00137O\\fffdR\\fffd<3k\\fffd\\0 Fs%0DG\\fffd_&\\fffd\\fffd}hI\u0018\\fffd\\fffd\\fffd*5Mt0\\fffd\\fffd 2\\fffdh\u001E!w%\\fffd\\fffd~\\fffd\\fffd\\fffd}hU \\fffd\\fffd\\fffd\\'\\fffd\u001E\\fffd 2\\fffd\u001B\\fffd 5v\\fffd\u000Fw\u001DW\\fffd a\u001A\\fffd)\\fffd\\fffd\u0012\\fffdw\\fffdI7:\\fffd\u0016\\fffdz\\70f\\fffdX\\420\\fffd\\a8}f\\fffd\\fffd\\fffd\\4da\\fffd C\\fffdW\\fffd;j\\fffd\\fffd/S\u0016\u0003\\4df\\fffdx\\fffd F>\u0017\\fffd\\fffd FEh\\fffd\\fffd\\fffd D\b\\fffdT\u001ED\\fffd\\fffd\\0\\36d 2\\fffd)rC F,%23?%0A\\fffd\\fffd Fm\\fffd\u0018\\fffd\u001C\\fffd\\fffd c\\fffd\\fffdX\\fffd\\fffd\\fffd[\\fffd)\\fffdJ\\fffd\\fffd\\aa a\u001A\\fffdlR%0D\\fffd\\fffd|Iw\u0001x,\\fffd\u0002G\\742\\fffd>K(2+\\fffd\\\\\\fffd\u0016\\fffdw\\fffd\\fffd DGe\u0011\\fffd Ep\\439\\fffd\\d153\\fffd\\507\\fffd 9fw\\fffdq\\fffd\\fffd\u0012\\fffdo\\c@<\\fffd\u0003\\fffd\\fffd\\0+[\\fffd\\fffd&\\fffdS\\fffdy\\fffd\\fffd\u0016\\fffdo.V\\0\\fffd\u0011Jg%09\\fffd\\542\\fffd:\u0015\\fffd\\fffd\\fffd 3\\fffd\u0014\\fffdv\"a4\\fffd 4\u001BD%09\\fffd\\fffd\\125\u001B\\fffd\"\\fffd\u001C=\\fffd%09t\\fffd\\fffd\\fffd\\fffd++\u000F\\0\\fffd?\\fffd\\fffd\u0006\\fffd:i\\fffd\u0011\\fffd\\fffd\\fffd\\55d2\\18a\"\\fffd,\\fffd]\\0\\fffdh%23\\fffd.\u0006\u0019\\fffd\\fffdq\u0014\\fffdR\\fffdV\\fffdz\u0003\u0007\\fffd Df\\fffd 4\\fffd\\fffd\u0005\\173\\fffd\u0010\\fffd~g \\fffd\\fffd\\fffd\\fffd\\fffd_JC\\fffd\\fffd\u001B\\356\\fffd(\\fffd\\fffdo\\fffd\\fffd\\10b\\fffd?0\\fffdrU\\fffd%\\fffdU\\fffd b!\\fffd\\fffd\\fffdq\\fffd fU\\fffd\\2e5\\fffd=\\2e8QD3~=r\\fffdM\\462z\\fffd\\fffd e[\\fffd B\\fffd\\fffd\\fffd\u0001\\fffds\\fffd$a`\\fffd\\fffd\u0017g\\fffd\\fffd\\fffd\\fffd 85\\fffdm\u000E^\\\\\\fffd\\fffd[\\fffd%0D\\fffd\\fffd 6n\\fffd\\fffd\\fffd\\'&\\0\\fffd\\fffdK\\fffd\\fffd\\0\\fffd\\fffd\u0011\\fffd eQ%09\\fffd\\fffd\\fffd\\fffd B\\fffd\\fffd\\689\\fffd\\fffdr\\5c9\\fffdN\\fffd\u0005-\\fffd a\\fffdqQ%0D\\fffd\\fffd(\\b2H\\fffd\\fffd D\\50a\\fffd\\fffd\\fffd%0D\\fffdLP\\fffd e\\fffd\\fffd\\fffd\\fffd 6\\fffdz\\fffdg\\fffdl!3T\\fffd~\\fffd@g\\fffd!\u0012\\fffd\u0016L\\fffdp%\\fffd\\fffdmKT&xq\\fffd%098\\fffd\u000E\\fffd\\fffd\\fffd\\606\\fffd\\fffd.Z\u001Dv\\fffd\\fffd\\fffd\\fffd B\\fffd\\fffd\\fffd\\fffd\u001FN\\fffdw\\fffd\\fffdwv\\133\\fffd?\\fffd\\fffd\")\\fffdt2Xt\\fffd(\u001AMh0\\fffd\\fffd\u0015i\\c\u000F\\fffdk\\fffd\\fffd*\\fffd D\u0004\\fffdL\\fffd\\fffdp\\5d5\\fffd\\fffd\\fffd\u0019\\fffdJ\\fffd\\fffd~\\fffd\u0005\u0006\v\\5e7 cPM\\fffd\u0014\\fffd\\fffd\\fffdp1J\\fffd|\\fffd\\fffd\\5f2\\a4\\fffd 8\\fffd F\\fffd\\fffd d\\fffd\\fffd\\262\\fffd\\8a72\u0002E\\fffd\\fffd b\\fffd\\fffd\\fffd)\\fffd b\u0002@\\fffd 8Lw\\fffd\\fffd$\\310 9\u0001\\fffdO2\u0003\\fffd\\c193>\"Q\\fffd\\fffd{\\fffdUo6A\\fffdNEg\\fffd\\fffdO9\\fffd\u0012X\\fffd\\fffd\\3a2Rd+\\cg=\\fffd\\fffd\\fffd\\fffd\u001E\u0002dL\\147\\fffd 2\v|,\\fffd 271\\fffd\\fffd\\fffd\\fffd\\fffdu\\fffd\\fffd\\fffd\u0010XL\u0015bf\\fffd)+B\\fffd%23\\fffdmF\\0\\fffd\\fffdO\\fffd\\fffd\\0\\fffd\\fffd\\fffdt|\\fffd\\fffd]|\u0007\\fffd\\fffd\\fffd \\fffd;\\108c4f\\fffd\\fffd;\u0015\\fffd\\fffd\u001A\\fffdR;\\fffdJ7j\\fffd\\fffd\\fffd>\u0018\\fffd\u0006\\fffd\u001D\\fffd\\fffd\\fffd\u0001\\fffdyf\\fffd\\fffd\\fffd \u001B\\fffd\u0010\\fffd B\\fffd\\fffd\\fffd\u001E\u0019\\fffdQD\u0013 \\fffd\\fffd<\\fffd%23\\fffd`\\fffd\\fffd 7A\\fffd\\fffd,\\fffd\\fffd>\\fffdg\\fffd b\\fffdr\\fffd\\6f3\u0015\u001DYb(\\fffd!+\u0004O\\17b\\fffdJ%09(e\u0017gFwB\\fffd](\\fffd%23\\fffdj+N\"]4\\fffd>\\fffd=a?\\fffd@\\fffd\\fffd\\382e\\fffdn\\fffd\\fffd\\fffd\\fffd\\fffd\vo\\54b%\u001D\u0013\\fffd\\fffd\\fffd\\fffd\\fffd D\\fffd\u0003|Js\\fffd\\586\\fffd\\fffdZk\u000E\\fffd\\fffd 0J\\fffd\u001A\\fffd\\6a6\\fffd\\fffd<\\fffd\u0002\\355\\fffd\u000El%09\\fffd\\fffd|\u0005\\fffd\\fffd b\\fffd\u00065\\fffdw\\fffd%\\fffd{\u0015d \\fffd;\\fffd\u001D\\fffd\\fffd\\fffd\\fffd D\\588\\fffd}\v\\0\\fffdhE\\fffdN\\fffdnJ7\\fffd~\\fffd\\fffd\"(W\u000E\u000F+\\fffd\u001B^\\fffd\u001F\u0012\u0003U\\fffd D\\fffdV\\fffd\\fffd\\271\\fffd br\\fffd b_T\\fffd\\fffdh\u000E\\fffd\\fffdrDwJ\\fffd\\fffd \\fffd\\fffd\\fffd&\u001A\u0003\\fffd\\fffd_I\\fffd\\fffd\u0014\\fffd\\fffd\u0007\\fffd\\fffd\\fffd@fs\u0013\\53c\u00015\\fffd\\fffd\\fffd\\fffd_\u0014\\fffd\\fffd\u0014x\u0012\\fffdm\u0012\\fffd f\u0013S-\\fffdyc*\\c3\\fffd+\\'\\fffd\\fffd\\fffd\\fffd\u001B\\fffdNL\\fffd\\\\-c4\\fffd b+\\fffd\\6a0>7\\fffd\\490\\fffd,\\fffd\u0012MQ!\\fffd\\fffd,\\fffd\\fffd\\fffd\\fffdNY\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdx<\u001A\\fffd \\fffd-\\fffdX\u0015K!\\\\p6\\fffd 5\u0016g\\fffd(@N\u0001\\fffd\\0\\fffd(Z\\fffd\u0019:8w\\fffd\u0005\u001A\\fffd\\fffd-\\fffd\\fffd\\fffd 1\\22epe\u00130\u0010\\fffd/w\\fffd\\fffd\u0006\\fffd\u0006\\fffd\\fffd\u0016u\u001A\\41cQ\\fffd\\fffdtZ\\fffd\\fffd 0\\fffd~n\\fffdUc2\\0 Fkf\u0005\\fffd F\u0013=@\\fffdk\\fffd E5\\fffd\\fffd\u001A\\fffd 0sY\\fffdOL\\fffdp\\fffd$\u0011\\fffd\v*\\6e6\u0012Pd-\\fffd\\fffd\u0011\\fffd Dq\u0017*\\fffd=V\\fffd\\fffd\\218\\fffd 2\\fffdS\\fffd%{\\fffd\u0015\\fffd=\\fffd\\fffd\\fffd%09\\fffd\\fffd\\fffd~\\fffd\\fffd f\\fffd(\\fffd\u0014\\fffd\\fffd\u0019\\39eP\\fffd\\fffd D{E\\333w\\fffd\u0012\\fffd\\fffd\u0018\\fffd\\fffd\\fffdM\\fffdj\u001BL\\fffd 8E\\fffd\\fffd\\fffdqvJ\\fffd\\1d9\\fffd\\fffd\\539\\248\\fffd\u000E\u0015~\\fffd_e+\\fffd\\44c 4\\fffd%\\fffdTC\\fffdl{EO\\fffd\u0017\\fffd\\fffd\\fffd\\fffd\u0006\\fffd 6\\fffd{u0?\\fffd 0B\\6cc\u0016\\fffd 5\u0004%0A\\fffd bE?\\fffd\\fffd\\536 2\\fffdV\\fffdV\u0004%0A\\55c\\'\\fffd;\\fffdX\\276hMv\v\\0\\fffdHc\\fffd\\fffd\u001F~%0A\\fffd\\fffd\b5\\fffd&\\fffd B\\fffd\u0006\\fffd\\fffd\u0006\\fffd&:\u0014\\fffd`\\fffd{\\fffdP\\fffdG\u0011*\\fffd%23^\\fffd\u001B^\\fffdj?\\fffd(1\u0015\\fffd 7E\\fffd*\\fffd E\\fffd\\fffd\\fffdx\\fffd>\u0010\\fffd\\fffd%\\fffd\\322\\fffd d\\fffd\\fffd\\10aW\\fffd)\\fffdQ\\fffd\\fffd`\\fffd 8\\fffd\\fffd \\fffd\\fffd Ep\\fffd_)+\\fffd\b\\fffd\v%\\fffd\u0019\\fffd\u0015\\fffd(\\fffd 3xO\u0018\\fffd\\412\\fffd\\fffdj^\\fffd\"Z\\fffd\\fffd\u001C\\fffd-\\fffd\\fffd\\489\\fffd\u000F\\fffd\u0013\vq\\fffd\\fffdv>\\fffd 2R\\fffdT\\fffd\\fffd\u000E4\\fffd\\fffd\\fffd\u0014\\fffd|\\fffd-\\fffd 0!u\\fffd+T\\fffd@\\fffd\\fffd\\fffd%\\fffd\u0011Qa\\fffd\\fffd\\fffd\\fffdx\u0017\u0011\\292\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdMe\\fffd\\fffdp\u0017\\fffd\u001A\u0005\\fffd-0_\\fffdM\\fffd\\fffd-1 \\fffdYOD\\fffd\\fffd e\u001D\\fffd\\fffd F\\fffd\u0010\\fffd 7\u0017\\fffd\\fffd\\fffd]\\fffd 8\\fffd-\\fffdiw\\fffd\\fffdl\u0004\\fffd 2\\fffd\u0005\\fffd 6\\fffd\u0016\\fffdH\\'\\a456,Y\\fffdu\\fffdj\\fffd\\fffd\\fffd\\fffd 3\\fffdwU\\fffd F\\fffd_L\\fffd\\fffd\\fffd\\fffd&\u0013<fe/y\\fffd\\fffd\\4deQe\\fffd%0A\\fffd\"t\u0006%0A\\fffd\\152~*S\\fffdZ\\fffd\\fffd\\fffd?18-\u001B\\fffdJ&X}\\fffd\\fffd\\fffd`\\fffd e\\fffd 2\u0010\\fffdX\\fffdi/\\fffd(J\\fffd 356\\fffd\\fffd\\fffd\u0014.\u0014\\fffd\u001BOk\\fffd\\fffdV\\fffd\u0016\\fffd\\fffd\\fffd\\fffd F(\\fffd\u0017O\u0013\\fffd\\fffdP\\fffdG\\fffdw(\\fffd\\fffd\\385\\fffd\\fffd\\fffd\\fffdWy\u0002\\fffd\\655\\768 3!\u0003W\\fffd\u0014\\fffd%0D\\fffd\\fffd\u0010h\\fffd 0\\fffd\u0013\\fffd\\fffd\\fffd\\fffdKt\u0017/K\u0010Y%0D6J:aV8\u0003\\fffdh\\fffd\\fffdQ\u0018\\fffd\u0007\\fffd\u001BY\\fffd\\fffdT;\\fffdXa\u0016\\fffdk\\fffdr\\fffdW\\fffd\\fffd\u0004S\\fffd$\\fffd(2f \\fffd\\fffd\u0015f\u0013`/\u001A\b\u0016\\fffdU\\fffd+\\fffd B\\fffdz\u0002O\\fffd d\\fffd\\fffd\\fffd\u0019;\\fffdyM\\fffd\u0010%23\\fffd\\fffdl7$\\fffdx\\fffd(Ri\\fffd\\fffd\\fffd\\fffd\\fffd 4\u0013\\fffd 3$\\fffd e\\689V\u0001\\c=.\\fffd\\fffd \\fffd\u0011-j\\fffd\\fffd\u0004`V\\fffdN*\bV\\fffd\\fffd%0A\\\\u5\\fffd\u0019?g%23\u0001o\\fffd\\109\\fffd\\fffd 7\\fffd\\fffd\\fffd%0DoN\u0001\\fffd\\fffd 9\\fffd\\fffdRTr\\fffd\\fffdl`?\\fffd\\fffd\vRa$h+\\fffd*x.\\fffd\bf\\fffd\u0005\\fffdt\u001A\\fffd\\fffd\\fffd\u0003\u0016\u001E\\fffd:\\fffd\\fffd\\fffd\\fffd&/\\fffdKL\\fffdP\\fffd\u001C/S\\fffdg\\fffd-\\fffdza*\\fffd$\\fffdx\\fffdYB-\\fffd.\u0015\\fffd\\fffdR\\fffd\\fffd\\fffd&\\fffd\\fffdq\\fffd\\fffd\\'\\fffd\\fffdl=\u0014\\fffd\\fffd=&S\u0002]\\fffd\\fffd&GDu\\9c%0A+\\fffd\\fffdH1\\fffdG\\fffd:%0D\\fffdt1\\fffdX\\fffdm\u0019e\\fffdu\\fffd\\fffdp\\fffd\\fffd d\\fffd\\fffd\\fffd\\fffd 9\\fffd\\fffd d\\fffd\\fffd%09\u001B,/X\\fffd%0A\\0\\fffd 4b\\fffdMD\\fffd\\fffd{\\fffdyI\\fffd\u0003P\\fffdn\\fffd\\fffd;\u0015\\fffd\u0013\\fffdV%23\\fffd\\'kh}f\\fffdR\\0\\fffd\\fffd\\fffd\\fffd*UR\\fffd\\fffd F\\fffdI\\fffd\\fffd\\fffd\\fffdnVt\\fffd\\fffd(%\\fffdtYR\v\\fffd dj\\fffdYc}2\\fffdJ\u001AK\\fffd\v>\\fffd\\fffd:;~\\fffd\\fffdM\\fffdw\\fffdM\\fffd(\\fffd]-\\fffdX\\fffdUO\\fffd\\1d0\\fffd\\fffd%\u0002`\\fffd\\fffd\\fffd\\fffd\u001A\\fffd\\fffd\u0018j\u000E!\\fffdi\\fffd\\fffd B*\\fffd\\fffd\\fffd\u0011\\a569\\fffd dC\\fffdYa\\fffd\\fffd_\"\\fffd\\fffdy\\fffd\\fffd\\fffd?\\fffdI\\fffdY\\fffd BV\\fffdylaVX\\fffdl\\fffdw)+\\fffd\v\\fffd%23V\\fffd ;8\\fffd(\\21f\\fffdWk\\fffd\\'\\fffd\\fffd\\fffd\\fffd&\\fffd\\fffd+Y\\fffd\\fffd\\fffd\\fffd`F\\fffd\\fffd 3\"\\fffdhFl\u0013\\3ebM&\u0017\\30e!\\fffd\\fffdg\\fffd&@\\fffd\\fffd\\fffd fT\\fffds\u0004X+%09\\fffd 3\\fffdK\\fffdN\\fffd\\fffd|Mh\\fffd\\fffd\\fffd 7\\c\\fffdhq\\fffd\\fffdx\\fffd\\fffd\u0017uE\\fffd\\fffdO\\fffdz\\fffd\\fffd \\c\\426&a&\\fffd%0D\\fffd\\fffdr0\\fffd\\fffd%23T\\fffd%0A\\fffd\\35fi)5\\fffd\\fffd\\fffdk\\fffd\\fffd\\fffd\\fffdN\\fffd%0D\\fffd\\fffd\\fffd\\fffd\\fffd\u0005M\\fffd\\fffd\\fffd\u0004\u0005^^\\fffd 2=\\fffd\\5a2\\fffdMO2\\116%09v1\\fffdT\\fffd a\\fffdzE\\fffdO(\\fffdo\\fffd b\\fffd`\\fffdtX+\b\\fffd\u0006s\\fffdTdkB\\fffd 7\\fffdX\\fffd b!\u0002D\\fffd\\'h\\fffd\\fffd\u0011k\\fffd\\fffd f\\65c\\fffd[\\fffdU\\fffd\\fffdlE\\fffd&f\\fffd dV\\fffd\u0005\\fffd%09\\fffd\\fffd\\fffd EQw\\fffdO\\fffd\\fffd\u0007\\3be)-\u00164\u0014Z4\\3cf\\fffdZq\\fffdi\\fffdZxT\\fffd\u0004vI\\fffdy\\fffd>40>\\fffd\\727\\fffd\\fffd\\fffd\\fffd\"U\\fffd\"\\fffdI\\fffdi\u0013+\\fffd D\\'>\\fffd\\fffd\\fffd\\fffdz[\\fffd 6\\'\\0\\fffd\\fffdW:(\\fffd 4\\fffd DHh\\fffd e\\fffdh\u0012\\fffd\u0018\u0014HmM\\fffd\\fffd 1\\6d8\"\u000F\u0013eO\\fffd\u001E\\fffd\\fffd 7a\\fffd\\fffdI\\fffdZ\\fffdX\\fffd\\fffd\u000Ez\\6e3\\fffd\\fffd 6Y\\fffd-j9\\fffd\\fffdX\\fffd(\\fffdK,\\fffdi\\fffdtq\u0006P\\fffd\u0019\\fffd\\fffd\\fffd 7\\fffd\u000F\\fffd 2U\u0012\\fffd f\\9eu\\fffd\\fffd\\fffdR\\fffd\u0011\\fffd Aj)\\fffd\\\\\\fffd%0D\u0004\\fffd\\fffd\u0006\u0017\\fffd\u000EU\\fffd\\fffd\u0017W\\fffd\\fffd\\fffd\\fffd\\13c\\fffd 6\\fffd e\\fffd\u001C\\fffd BJ\\fffd 4)V\\fffd\\fffd 6\\fffdt2\\fffd\\c b*z\\fffd^t\\fffd\\382\\fffdwJ\\fffd\\fffd\\fffd\\fffd A\\fffd=\\fffd\\fffd\\fffdv\\fffd e-\\fffdWg\\fffd>OfXK\\fffd\\fffdNT\\fffd 9a\\fffd\\fffd\v=\\fffd>\\fffd 4+)LPZ\\fffd\u001D\\fffd\u0006/YetQr\\fffdh\\76ca^\\c\\fffd\\fffdw\\fffd\\fffd\\fffd\\fffd\\fffdWT\\fffd\\fffd\\cX3A\\fffd\u0005\u001D\\fffd f\\fffd(\\fffd 6\\fffd d\\fffd\b9k:Z=&Z\u000Fbe\\fffd\\42b\u0019cbI\\fffd\\fffdSY\u0003\\fffd\\fffdR\\fffd\u0018$d\\fffd*\\fffd<e\\fffd\b&Q\\fffdi\\285\\fffdm\\fffd\\fffd\\fffd\\cQ\\fffdw\\fffd\\74dcN,-\\fffdq\u000F\\fffdW\\fffdz\u0016\\fffdQ\\1e2\u0015\\fffdZ\u001B\\fffd\u0013z\u0006*g\u001D\\fffd,d\u0012&%0A\\fffd\u0004\\0\\fffd 9\u0011\\fffd|\u0002\\fffd\u0016h\\fffd\\2f9`-\\fffd\\fffdU;2\\fffd\u000F\\fffd\\fffd\\fffd\\fffd\\fffd%0D\u0001\\fffd\\fffd\\fffd\u0012\\fffd\\fffd\\fffdkfk7$\v\\fffd\\fffd\b\u0010m3\\fffd fW\\fffd\\fffd dD\\c5\\26f\\fffd\\fffd\\fffd,]\\fffd F\\fffdL%0ADS\\fffdx\\fffdR\\fffd.\\fffd\\fffd\\fffd@\\fffd^G;\\cg\\fffd\\fffd\\fffdJ\\fffd\\fffdZ\\fffd\\fffd\\fffd 5\\fffd\\fffd\\fffd_\u0011(%09\\fffd\\fffd 8O\\443h\\fffd\u0005p\u001C\\fffd_\\424\\fffdl!\\fffd\\fffd c\\fffd{D\\3e2YvO\\fffdSv&tXD\\fffd\u0017%0A%\\fffd)Sm\\fffd\\fffd\u0012E\\fffd\\fffd %23T\u0012m2ao\\fffdty\u0005J^\\fffd E\\fffd\\fffd\\fffd\\fffd,\\0p\\fffd\\fffd[d\\'\\fffd\\fffd\\fffd B\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdG<\\fffd\\fffd\\fffd\\fffdyc*\u0004\\fffd\\fffd\u0002\\fffd 5.&\\fffd\\fffd\\fffd\\fffd*\\fffd\\fa\\fffd.\\fffdN\\fffd\\fffd\\fffdMp\\fffd\\fffd\\fffd\\6b39X\\31fR\\fffdly\\fffd\u0010dA\\fffd\\fffd|\\fffd%0D\\fffd\\fffd 2\\fffd\\fffd\\fffd\\fffd\\fffdw|\\fffd\\fffd\\fffd\\fffd\\878f!\u0015\\fffd\\fffdV@i\u0011%0DV\\59cwFz\\0\\fffdt%\\fffd@\u0003\\fffd 3\\fffd\\fffdl.\u0003\\fffd\\fffd\\fffd}\u0018E\\fffd d\\fffd\\fffd\\fffd,\\fffdyT%0Aj\\fffd\\a612 D\\fffd_\\fffd\\fffd\\fffdX\\fffd\\fffdzQ\\fffd\\fffd%%0A\\fffd\\1be\\fffdX%0D\\fffd%0Ae\\fffd\\fffd\\fffd]\\fffd d\\fffd\bh2\\fffd E\\fffd\\fffd\\fffdL\\fffdpE?\\fffd>\\fffdy\\fffd\\fffd\\468S\\fffd\\fffd\\fffd\\fffd\\fffd EM\\fffd\\fffd}Z\\fffd\\fffd e\\1dd\\fffd d\\fffd\u0006\\fffdz\\fffdPq\\fffd\\fffdH_5\\fffd\\fffd\\fffdj\u0011\\fffdH\\fffd!\\cg\\fffd\\fffd\\fffd\u001F\u001E\\fffd\\fffd%23Q*{\\fffdYD\\fffd\\fffd\\1f7\\fffdMo(`\\fffd\\fffd{\u0012\u001D/\\fffdy\\fffd\\fffd\u000F\\fffd@\\fffd:\\fffd.\\fffd\\268\\fffd d1\u0013\u001E\\fffdJ\\fffdt\\fffd}\\fffdq\u001F\\7e1\u0007N\\fffd\u001A\u0015\u0016\u001A\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd,\u001B-\\fffd\\fffd\v71W\\fffd\v\\fffd\\fffd\\fffd\\fffdO\\fffd\\fffd<\\fffd\\acd3I!a\\fffd\u0017gn\\fffd?\\'\\fffd\\fffd\\fb58i\\fffdp|\u0004\\236\\fffd C\\fffd,\u0004\u0015\\fffd 6\\fffd\\fffd&\\fffdk\\fffd\\fffdU\\fffd\u0019J\\0\u0014\\46c|/\u001D53(\\fffd%0A-\\fffd\\fffd\u000EG\\fffd\u0002\\fffd\\66c\\fffd\\fffd\\fffd$_\\fffd^\\fffd\\fffd.Sn{E\\fffdMZ\\fffd\\\\]P\\fffd B\b\\fffdG\\fffdZ\u0006\\fffd\\fffdJ\\fffd\\fffd\\fffd\\fffdV\u0013\\fffd eBPg\\fffd d%09(\\fffd+\\fffdQ\\fffd\\0\\fffd\\fffd\\fffd\\fffd\\6cc\\fffd\\fffd\\fffd\\fffd D\\fffd\u0014Db\\fffd\\5d4\u000F\\fffd?\\fffd\\fffd!\u0012-\\fffd\\fffd e SQ\\fffd\\fffd\u0013\\fffd 7ZcE\\fffd\\fffd Bs\u0013\\fffd 55Hg\\'M%%09\u00010\\fffd\\fffd\\fffd\\fffd\\fffd-GQ\\fffd)}\u0017e\\12a\\fffd\u001F@\\fffd\\eb68 2[i;\\fffd\\fffd\\fffd\\fffd!\\fffd@\\fffd\\fffd\\'\\fffd \\fffdVDP9he*\\fffd\\0k\\fffdV(YdjI\\fffdX\u001Ep\vn\\fffd\u001Bd\\fffd/\\fffd\\fffd\\fffd\\fffd\\fffd+m\\fffd\\\\$\\fffdy\\fffd\\fffd-\"\\fffd\\fffd@EdR\\fffd\\fffd\u0002g]\\fffd}\\fffd%0AS\\fffd 8\\fffdG\u0019\\764\u0003.\\fffd\\fffd\\fffd\\fffdW\\0\\fffd\\fffd:\\4cb ae\\fffd\\fffd\\fffdm\\fffd\u0013?\\fffd\\fffd%0A\\fffd\u0011eV\\fffd\\7e3 D\\fffd 4\\fffd\u001CXI\u0004\\280\\fffd\\fffd\u0007\\fffd\\fffd\\fffd\\fffd 0/\\fffd\\fffd\\fffd\\fffdPFyr\\fffd\\fffd\\fffd\\445\\fffd\\fffd\\fffd\\fffd/\\fffd\\fffd_h\\fffd\\fffd\u0014Syy\\fffd\\fffd\\fffd\\fffd\u000EtX\u0014\\fffd\\4c2w\\fffd\u0016\\67e!eV\\fffd\\fffdJ\\255\\fffd\\fffd\\fffdJ\\fffd E\\'\\fffd\\fffd.\\fffd\\fffd\u0015\\fffdk*\\fffd\\fffd 2\\fffd 7j\\fffd.\\fffd\u001B\\fffd(\\fffd\\fffd\\fffd\\fffd E\\fffd@\\fffd\\fffd\\fffd\u001Eg|\"+\\fffd\\fffd a\\fffd%0Ag6\\fffd D?\\fffd\\fffdW\\fffd 6\\16c-\\fffd@\\135e\"A\\fffd\\0\\fffd%\\fffd\u0014\\fffd 0ZK\\fffd\\fffdW\\fffd\u001Fdt2\u0013D\\'\"\\fffd\\fffd\\fffd.\\fffdl`\\fffd\\fffd\\fffd\v\\fffd+\\fffd\\fffdl-\\fffdJ\\fffd\\fffdo\\fffd\\fffdW,\\fffd\\fffd+\\fffdlE\\fffdM\\fffdHQ\\fffd\\fffdU5\u0013\\fffd\\fffd\\'\\fffd\u001D\\fffd%0A\\fffdt\\fffd^\\fffd\u0001%0A{\\fffd\\32c e\u001A+\\fffd\v2Z\\c 4\\fffd\\fffd\\fffd_\u001A\\fffd&F\\fffd\\fffd\u0004\\fffd 4\\fffd\\fffd^\\fffd\\fffd\\fffd\\fffd+\u0013HdG\\fffd\\fffd^\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd&\\\\w|\\fffd 6\\fffd;\\fffdu=\\fffd 5\\fffd\\fffd\\fffd\\fffd\u0013=\\fffdJ\\fffd\\fffd\\fffd\\fffdz\\fffd\\fffd\\fffd\\fffd\\fffd\u0013\\fffd\\fffd E\\fffd\\fffd`\u0014\\fffd\\319\\fffd\\fffd>\\fffd F\\fffdr\u0017\u001A\\fffd\\fffd\\fffd\"\\fffd\\fffd\\fffdl%0A\u0010\\fffd\\fffd\\fffd%23\\fffd\\fffd DGU\\8c2a\\fffdT\b.\\fffd%\\fffd\\fffd\\2ba]\u001E\\fffdM\\fffdh\\fffd\u0002\\fffd,J{\\fffd\\fffd 0K\u0011QM}{!\\fffd:\\fffd\\192\\fffdW\\fffd_\\fffd\\fffdP\u001DHe\u0001L\\fffd\\fffdp\\fffdM\\fffd\u0005Q\\fffd\\fffd\u0003\\fffdU\\fffdZ:\\fffd 8g\\fffd|a\\fffd\\fffd\\fffd\\fffd-\\fffd\u000E\\fffd\\fffd)3\\fffd+\u0017\\fffd\\fffd\\fffd\\fffd\\4f6 f\\fffd\\fffdV\\fffd\\fffd\\fffd\\fffd\u0016\\fffd[\\fffd\\fffd\\fffd.\\fffd,\u001A\\fffd\\fffd\\fffd\\fffdMZ\u000ETA\\fffdT\\fffd-/\\fffd db\u0002o\\fffdj\\744\u001F\\fffdq\\fffd\\fffd aAy2c\\c\\fffd\\fffdM\\cR\\fffd D\\fffdl2E\\4a4\\fffd\u0001\\fffd\\fffdi\\fffd\u0005}f\u0005\\fffd\\fffd\\fffd)j\\723\\fffd\u0017\u0003\\fffd\\fffd\\fffd\\fffd\\fffd\u0007\\fffd 1\\fffd\\fffd+~^\\fffd\u001AK\\fffd,\\fffdt)\\fffdR`\\fffd 8\u001F\\fffd\\fffd\\fffd~<\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd)5\u0005.\\fffd E\\fffd 9\\fffd\\0\\fffd\\fffd\\fffd\\fffdx%0D=\\fffdY\\fffd\\fffd\\fffd\\fffdP\\fffd\u0013\\fffd b|\\fffd\\fffdW(\\fffd{\\420\\fffdN\\'+b\u0016\\fffd\\fffdm\\fffd\\fffd au\\5b1P\\fffd_\\fffdW{`\\fffd)\\fffd%09\\fffdW5\\fffd\\fffd F\\fffdY\\fffd\\fffd$\\fffd_)\\fffd\\fffd\\fffd=3oy\\fffd\u0006\u0011\\fffd||\\fffd 9\\fffd\\fffdt2\\fffd\u001D\\fffd\\fffd\\fffd\\fffd\"`XD\\fffd\u0005\\fffdKg\\fffdT%23\\4a4\\fffd d\\fffd$[a2oa\\fffd\u0010\\fffd\u001E\\fffd@\\fffdzQD4i3\u001A\\c\\fffdU\\fffd\\fffd\u0016\\fffd e\u0005\\fffd 3\\fffd\u001F\\fffd\\0\\fffd 6\\fffd\\1f3\\fffd eB\\7ae\\fffd<X\u0005t\\fffd\\fffd&4e%:[\\fffd\\fffd C\\\\\b\\fffd>%0A*\u000F!H\u0016\\fffd\u0014\u0001\\fffd}\\fffd e1\u0015\\fffd 1\u0011\\fffd\\fffd|\\fffd\u0018L\\fffd\\fffd\" -(\\fffd_\\fffdu\\fffd\\fffd\\fffd\\fffd dK\\fffd\u0017\\fffd%\\fffd/Pn\\fffd\\fffd\\fffd\\fffd 8\\fffd-Qq\\fffd\\fffdT8\u0003I\u0001\\fffd/\u0001Ae\\fffd\\fffd\\fffd\\fffd\"M\\fffd&\\fffd&\\fffd/\\fffdG\\fffd 3\\fffd:\u001EV\\fffd\\c\\fffdO\\fffd\\fffd\\fffd\\fffd%23\u001Cu\v2\\fffd(ri*L\\fffd\\fffdY\\fffd\\fffd\\fffd\\fffd\\fffd}\\fffd\\fffd\\3d9 b\u0005\u0014+`+g\\fffd\u0005\\fffdM\\fffd\\fffd\\fffd\\fffd-\u0003\\fffd\v2\\fffdX\\fffd\\fffd\\fffd\\750%0D\\fffd\\fffdQk&\\fffd+Wz\\fffd\\fffd\\fffd+\\63dxR\\571\\fffdz\u0012\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u0019\\fffdXV\\fffd*\u001E\\fffd|a\\fffdPx\\fffdSa\\fffd E\\fffdY\\fffd\\fffd 3Z\\fffdP\\fffd\v\\0\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdg\\fffd \\fffd%0D\\fffdK_\u0019\\fffd%F\\fffdhW\\0\\fffd\u0017\u0005|J\\fffd\\fffd\\fffd\\fffd\u0014\\fffd%23\\fffd}e@\\fffd\\fffd\\fffd%0A\\fffd_\u0001\\fffd\\fffd\\fffd\\fffd\\fffd f\\fffd\u0012\\fffd\\fffd\\fffdxi\\fffd\\fffdu\\fffd&\u001A+\\fffd\u0017\\fffduC\\fffd\u0006V\\fffdOG\u0013)8\\fffdJ\\fffd\\fffd\\fffd\\fffd\\fffd 8\\fffd\u0018\u0011\\fffd\\fffdU\\fffdM\\fffd\u0015\\fffd>\\fffd=%090\\fffd\\fffd fc \\fffd\\fffd<\\fffd\\0\\fffd,\\fffdi`\u0015\\b3\\fffd\\fffd f\\fffd\u0015\\fffd\u0017\\fffd\\fffdT\\fffdZ\u0015xU\\fffd\\\\8QK\\'t!\\fffdJ\\fffd\u0016D\\fffdH\\\\\\fffd\\fffd\\fffd.+)\\fffd\\fffd\\fffd\\fffd\u0011l\u0005@\u0015\\fffd\\\\\\fffd\\fffd\b\"\\fffd\u0001b\\fffd dW\\681^\\fffd\\fffd\\7b8H8\u001A\\fffd\\fffd\\fffd\\fffdQh!B\\569p\u0006\u0018\u0013S\\fffd\u0016\u0007\\fffdV\"Bpu\\fffd\u0006/\\fffd\\fffdV(\\fffd\\fffd}\\fffd\u0017`%09\\fffd\u0013\\fffd\\fffd\\fffd\\fffd\\fffd 2$\\fffd\\fffd\u0019\\0 c*\\\\LC3:{gP\\fffdN\\0iJ\\fffd\\fffd\u0002\\fffd\u0015\\fffd\\fffd\\fffd@\\fffd]\u0004t\\fffdZ\\fffd@\\fffd\\fffd\u0005\\fffd\\fffd\u0013T z\\fffd\\fffd\\fffd\u0014\\\\\\fffd\\fffd 5=\\fffd\u0014\\fffdR\\fffd\\fffd{\\fffd\\fffd!\\fffd|\\fffd\\fffdIy%b\\fffdV\\fffd\\fffd=\\fffd\u0012\\563\\fffd\\fffd)\\fffd\\fffd\\fffd\\fffd;Sd\u00149\\fffd\\b4\\fffd\\fffdUp-\\fffd\\fffd\\fffdg%0D\\fffd*\\fffd^y>\u0001\\fffdg_\\fffd/]\\fffdo\\fffd]K\\fffd\\fffd\u001CX\u0005\\fffdK\\fffd\u0006McU\\fffd\\fffdQW\\fffd\\fffd{f\u0003\\fffd\\fffd\\fffd\"\\fffd(L\\fffd\\fffd|\\fffd\u000E\\fffd\\fffdlN\\fffdhsq\\2f6 7\u0001:\\fffdX\\fffd.x\\fffd\\fffd\u0011\\fffd %0A\\fffd\\fffdk\\fffdw\\fffd f\\fffdM2\\fffd}h\\fffd\\fffdlQ\\fffd\\ce6dR\\fffd*(\u0017\\fffdz\\fffd\\'w\\fffd 0K\\fffd<\\fffd 2\\fffd b\\fffd\\fffd\\fffdU>Wz\\fffd\\fffd\\fffdPUw\\fffd\\fffd\u0006\\fffd\\fffd\\fffd\\fffd\\fffdM\\464\\fffd\\fffd*W[\\fffd*MN\\fffd\\fffd\\fffdW\\fffdX*\\fffd\u0005\u0017\\fffd\\fffd\u0002\\fffd\\fffd\\fffd\\568\\fffd\\fffdS\u001E\\fffdJ\\fffd:-n\\fffd\\526\\fffd\\fffdT}M|\\fffdW\\fffdSy%0D\\fffd\\fffd%j\u0004\\fffdM\u0017\u001C\\fffd\\fffd\\fffd\\0 D\u0019p\\fffd\\fffd\\fffdt|*\u0017\\20b6\u001A\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\\\\u0001\\fffd\\fffdh\\fffd\\fffd,\\c\\fffd\\fffd\\fffdT8\u0001\\fffd\\fffd)\\fffd@+\\fffd\\fffd/_4+\\0\\fffd\\\\\\fffd\u0005\\0\\fffd b7\\fffdi\\fffdZ8\\fffd\\fffd\\'=;q\\fffd;\\fffd\\fffd\\fffd\\fffd\\fffdYuP\v\u0005\\fffd\\fffd\\fffdjuLVAN\\fffd^5\\fffd\\fffd<V\\1ab\\37c\u0018\\fffd\\488\\fffd%0A\\fffd\u0015\\fffdQ&g\\fffd 0 \\fffd\\0Z~\\fffd\\fffd\vT\by_\\fffd\\fffd\\fffd\\fffd\\fffd\u0010\\fffd<\\fffd\\fffdW*\\fffd]\\fffd%23eV\\fffd\\fffdm\\fffd\\fffd\u0019\\fffdvq\\5f3m\\fffd 6c\\fffd]|\\fffd a\u0001\\fffd\\fffd\\fffd\\fffd\\fffdm\\fffd\\fffd\\'\\fffdx\\fffd|\\fffd 9\\fffd\\fffd\\fffd$RD\\fffd d\\fffdM\\fffd D\\fffd e\\fffd+\\fffd\\fffd\\fffdO\"Pd%09\\fffd\u001AVe\\fffd\\\\\\fffdq\u0012\\fffd\\fffd\\fffd\\fffd\\fffdjoQ\\fffdSI\\fffd\\fffd\\fffdO\\656xN+\u0011\\fffd\u001C\\fffd\\fffd\\fffd fQ\\fffdN\\fffdU\\fffd\u0005`(\\fffd\\fffd\\fffdzw\\fffd*W\\fffd 96\\fffd\\fffd.^h\\fffd c\\fffd\\fffd\\fffdL\\fffd 5\u0019\\fffd\\fffd\\fffd 7\u0006\\fffd]0\\fffd\u000E\\fffdR\u000Fz\\fffd\\fffd\\\\\\fffd\\fffd\\fffd d:\\fffd%0A\\fffd\\3f8\u0010\u0017.\\fffdx2\\fffd\\fffd\\0\\fffd\\fffdU\\fffdg\u0002\\a5}^\\0k+\u0002z\\fffd\\fffd\"wj\\fffdV\\'F,\\0\\fffd%0A\u0017\\fffd\\fffd>\\fffd\\fffd]\\fffd?\v\u0014\\fffd\\fffdU9a\\fffdh\\fffd)\u0003\\fffdx\\fffd\\fffd\\fffd\\fffd\\2f1%0A\\fffd\\fffd\u0002`\\fffdL-j\\fffd\\fffdX\u0019\\fffdO\u001B\\fffd*\u001D\\fffdy\\fffdV.\\b7\\fffdj\u0005\\fffd+\u0011\\fffd\\771\\fffd\\fffd\\fffd\\fffd\u0005\\fffd\\fffd\\fffd+\\fffd\\fffd\\fffd\\fffd\\c\\fffd%0A@\\fffdyO\v,\\fffd\\fffd\\5ac\\fffdo\\fffdX\u0001Fh{\\fffdx\u0001\\fffd\\fffd%0A\\fffd\u0001\\fffd+\\'\\fffdj\\fffd\u0017\\fffd\\fffdW\\fffd\\217\\fffd\\fffdj\\fffd\\fffd\\fffd\\fffd\u0019\u0017\\4bb\\fffdl\u0001\\fffd 9\u0015~\u0012\\fffdV\\fffd\\fffd\\fffd\u001D\\fffd\\fffd\u001C\\fffd 7\\fffd\\fffdgH\\fffd\\fffd\\fffd\\1548\\fffdI\\470\u000E,Z\\fffd\\fffd\\fffd\\fffdW\u0006Z\\fffd\\fffdr\\fffd@\\fffd\\fffd\\fffd>\\fffd\\fffd\\fffd\\141m+\\fffd\\fffd d|>=\\fffd\\fffd\u0004@z\\fffdsg\\fffdj_\\fffd%0D\\fffdW\\fffd+I\\fffd\\fffd\\fffd\\fffd\\fffdW\\fffd 1\\fffd\\fffd\\fffd\\fffd\\fffdl3\u0015?\\fffd}\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\u001B\u0006\\fffd\\fffd\\fffd\u0003HW\\fffd\\fffdK\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd~>\\fffd\\fffd_\\fffdo\\0\\fffdx=)\\fffd\\fffd{z\\0\\0\\0\\0IEND\\fffd B`\\fffd') no-repeat left top}.p-colorpicker-panel .p-colorpicker-hue{background:transparent url(\"data:image/png,\\fffdPNG%0D%0A\u001A%0A\\0\\0\\0%0DIHDR\\0\\0\\0\u0011\\0\\0\\0\\fffd\b\u0002\\0\\0\\0\\fffd\\fffd\\fffd\\fffd\\0\\0\\0\\fffdIDATX\\fffd\\fffdQ%0A\\fffd@\\c D\\fffd\\456\\fffd\\fffdz\u0005\\fffd%?<D\\fffd\u0015EK\\fffd\\fffdIA\\fffd\u0012\\fffd\\fffd!y\\fffd\\fffd$,\\fffd~\\fffd_\\fffd\\fffd\\fffd\\fffd\\fffdr\\fffdoE\\fffdI \\fffd 2z\\fffd\\fffd\btb\\fffd\\fffd 9\\fffd%Nmg\u0010<\\fffd c\\fffd\\d0c7*\u0016@\\fffd\\253\u0001U\\\\\\fffd \\fffd 1\\fffd\\a4f\\fffd\\fffd\u000E\\fffd\u0004\\fffd{\\fffd\\fffd\\fffd*\\fffd-\u001E\\fffd\\fffd 5\\fffd\\fffd\u0005\\fffd'x\\fffd\\fffd\\109\\fffd\u0006O\u0002q?TQ_\u000F2\\fffd\u0016_\b\\fffd[\\fffd 1\\fffdU<W\\fffd Am<\\fffdk\u001A<\\fffd\\7dc\\fffd)\\fffd C\u0015\\fffd\\62e\u0013@\\fffd]\\fffd<\\fffd(\u0001\\fffd\\fffd\u0015<\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffd\\fffdr\\7da%0D\\fffd\\fffd\\fffdk\\fffdG\\fffd\\c\\fffd 4\\fffd\\fffdx\\fffd\\fffd A\\fffd+\\fffd\\fffd\\fffd DM\u001D\\fffd\\fffd\\fffdS\\fffd 6+*{\\fffd\u0005\\fffd FbV0\\fffd\u001C%\\0\\0\\0\\0IEND\\fffd B`\\fffd\") no-repeat left top}@layer primeng{.p-inputtext{margin:0}.p-fluid .p-inputtext{width:100%}.p-inputgroup{display:flex;align-items:stretch;width:100%}.p-inputgroup-addon{display:flex;align-items:center;justify-content:center}.p-inputgroup .p-float-label{display:flex;align-items:stretch;width:100%}.p-inputgroup .p-inputtext,.p-fluid .p-inputgroup .p-inputtext,.p-inputgroup .p-inputwrapper,.p-inputgroup .p-inputwrapper>.p-component{flex:1 1 auto;width:1%}.p-float-label{display:block;position:relative}.p-float-label label{position:absolute;pointer-events:none;top:50%;margin-top:-.5rem;transition-property:all;transition-timing-function:ease;line-height:1}.p-float-label textarea~label{top:1rem}.p-float-label input:focus~label,.p-float-label input.p-filled~label,.p-float-label textarea:focus~label,.p-float-label textarea.p-filled~label,.p-float-label .p-inputwrapper-focus~label,.p-float-label .p-inputwrapper-filled~label{top:-.75rem;font-size:12px}.p-float-label .input:-webkit-autofill~label{top:-20px;font-size:12px}.p-float-label .p-placeholder,.p-float-label input::placeholder,.p-float-label .p-inputtext::placeholder{opacity:0;transition-property:all;transition-timing-function:ease}.p-float-label .p-focus .p-placeholder,.p-float-label input:focus::placeholder,.p-float-label .p-inputtext:focus::placeholder{opacity:1;transition-property:all;transition-timing-function:ease}.p-input-icon-left,.p-input-icon-right{position:relative;display:inline-block}.p-input-icon-left>i,.p-input-icon-left>.p-icon-wrapper,.p-input-icon-right>i,.p-input-icon-right>.p-icon-wrapper{position:absolute;top:50%;margin-top:-.5rem}.p-fluid .p-input-icon-left,.p-fluid .p-input-icon-right{display:block;width:100%}}@layer primeng{.p-inputtextarea-resizable{overflow:hidden;resize:none}.p-fluid .p-inputtextarea{width:100%}}@layer primeng{.p-password{position:relative;display:inline-flex}.p-password-panel{position:absolute;top:0;left:0}.p-password .p-password-panel{min-width:100%}.p-password-meter{height:10px}.p-password-strength{height:100%;width:0;transition:width 1s ease-in-out}.p-fluid .p-password{display:flex}.p-password-input::-ms-reveal,.p-password-input::-ms-clear{display:none}.p-password-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}.p-password .p-icon{cursor:pointer}.p-password-clearable.p-password-mask .p-password-clear-icon{margin-top:unset}.p-password-clearable{position:relative}}@layer primeng{.p-radiobutton{display:inline-flex;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:bottom;position:relative}.p-radiobutton-box{display:flex;justify-content:center;align-items:center}.p-radiobutton-icon{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0) scale(.1);border-radius:50%;visibility:hidden}.p-radiobutton-box.p-highlight .p-radiobutton-icon{transform:translateZ(0) scale(1);visibility:visible}p-radiobutton{display:inline-flex;vertical-align:bottom;align-items:center}.p-radiobutton-label{line-height:1}}@layer primeng{.p-ripple{overflow:hidden;position:relative}.p-ink{display:block;position:absolute;background:#ffffff80;border-radius:100%;transform:scale(0)}.p-ink-active{animation:ripple .4s linear}.p-ripple-disabled .p-ink{display:none!important}}@keyframes ripple{to{opacity:0;transform:scale(2.5)}}@layer primeng{.p-tooltip{position:absolute;display:none;padding:.25em .5rem;max-width:12.5rem;pointer-events:none}.p-tooltip.p-tooltip-right,.p-tooltip.p-tooltip-left{padding:0 .25rem}.p-tooltip.p-tooltip-top,.p-tooltip.p-tooltip-bottom{padding:.25em 0}.p-tooltip .p-tooltip-text{white-space:pre-line;word-break:break-word}.p-tooltip-arrow{scale:2;position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.p-tooltip-right .p-tooltip-arrow{top:50%;left:0;margin-top:-.25rem;border-width:.25em .25em .25em 0}.p-tooltip-left .p-tooltip-arrow{top:50%;right:0;margin-top:-.25rem;border-width:.25em 0 .25em .25rem}.p-tooltip.p-tooltip-top{padding:.25em 0}.p-tooltip-top .p-tooltip-arrow{bottom:0;left:50%;margin-left:-.25rem;border-width:.25em .25em 0}.p-tooltip-bottom .p-tooltip-arrow{top:0;left:50%;margin-left:-.25rem;border-width:0 .25em .25rem}}.customDialogClass .p-dialog{height:auto}.customDialogClass .p-dialog-header{padding:.8rem .55rem!important;background-color:#fff!important}.customDialogClass .p-dialog-header-close-icon{color:#000!important}.customDialogClass .p-dialog-content{border-top-left-radius:0%;padding:0}.p-dialog .p-dialog-header{background-color:#fff!important;border-bottom:2px solid #e5e7eb;padding:12px 16px;font-weight:700;font-size:1rem;display:flex;align-items:center;justify-content:space-between}.p-dialog-mask{background:#00000080!important}.p-dialog .p-dialog-content{background-color:#fff;padding:16px}.p-dialog .p-dialog-footer{background-color:#f3f4f6;padding:12px 16px;border-top:2px solid #e5e7eb}.p-dialog .p-dialog-content::-webkit-scrollbar{width:8px}.p-dialog .p-dialog-content::-webkit-scrollbar-track{background-color:#f1f1f1}.p-dialog .p-dialog-content::-webkit-scrollbar-thumb{background-color:#faa762;border-radius:10px}.p-dialog .p-dialog-content::-webkit-scrollbar-thumb:hover{background-color:#faa762}.custom-save-button{background-color:#faa762!important;color:#fff!important;border:1px solid #FAA762!important}.custom-save-button:hover{background-color:#e59550!important;border-color:#e59550!important}.form__input{width:100%;padding:8px;border:1px solid #ccc;border-radius:5px}label{font-size:14px;font-weight:600;margin-bottom:5px}.button-group{display:flex;justify-content:flex-end;gap:10px;padding-top:1rem}button{padding:8px 12px;border:none;border-radius:5px;cursor:pointer}.cancel{background:#ccc;color:#000}.save{background:#007bff;color:#fff}button:hover{opacity:.8}.card-width{width:295px!important;flex-shrink:0}.justify-end{justify-content:end}\n"] }]
189
+ }], ctorParameters: () => [{ type: i1$1.FormBuilder }], propDecorators: { visible: [{
190
+ type: Input
191
+ }], isVisible: [{
192
+ type: Output
193
+ }], configuration: [{
194
+ type: Output
195
+ }] } });
196
+
197
+ class SettingsPanelComponent extends FxComponent {
198
+ configuration = new EventEmitter();
199
+ visible = false;
200
+ openSettingDialog() {
201
+ this.visible = true;
202
+ }
203
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SettingsPanelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
204
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SettingsPanelComponent, isStandalone: true, selector: "fx-settings-panel", outputs: { configuration: "configuration" }, usesInheritance: true, ngImport: i0, template: "<fx-configuration-panel [visible]=\"visible\" (isVisible)=\"visible = $event\" (configuration)=\"configuration.emit($event)\"></fx-configuration-panel>\r\n\r\n<div class=\"fx-element\">\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"fxData.$fxForm?.$mode !== FxMode.VIEW\">\r\n <div class=\"fx-overlay border-gray-400 border rounded cursor-pointer\" (click)=\"onElementSelect(fxData)\"\r\n (dblclick)=\"openSettingDialog()\">\r\n <div class=\"fx-actions flex justify-between\">\r\n\r\n <div class=\"bg-gray-700 text-gray-300 px-2 rounded-t ml-2 text-xs flex justify-center items-center\">\r\n <div>#{{ fxData.name }}-<span class=\"text-xs italic\">{{ fxData.id }}</span></div>\r\n </div>\r\n\r\n <div class=\"flex justify-around items-end mr-2\">\r\n <div class=\"cursor-pointer bg-secondary text-white w-8 mr-1 text-center rounded-t\" title=\"Settings\"\r\n (click)=\"fxSettingService.openSetting(fxData)\">\r\n <i class=\"fa fa-cog text-xs\"></i>\r\n </div>\r\n <div (click)=\"deleteElement(fxData)\"\r\n class=\"cursor-pointer bg-red-600 text-white w-8 mr-1 text-center rounded-t\" title=\"Delete\">\r\n <i class=\"fa fa-times text-xs\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container #dynamicComponentContainer></ng-container>\r\n </ng-container>\r\n</div>", styles: [".fx-element{position:relative}.fx-element .fx-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#0000001a;z-index:-1;pointer-events:none;opacity:0}.fx-element:hover .fx-overlay{z-index:1;opacity:1;pointer-events:auto}.fx-element:hover .fx-overlay .fx-actions{position:absolute;margin-top:-26px;height:25px;border-top-right-radius:10px;width:100%;border-top-left-radius:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: InputTextModule }, { kind: "component", type: ConfigurationPanelComponent, selector: "fx-configuration-panel", inputs: ["visible"], outputs: ["isVisible", "configuration"] }] });
205
+ }
206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SettingsPanelComponent, decorators: [{
207
+ type: Component,
208
+ args: [{ selector: 'fx-settings-panel', standalone: true, imports: [CommonModule, ButtonModule, InputTextModule, ConfigurationPanelComponent], template: "<fx-configuration-panel [visible]=\"visible\" (isVisible)=\"visible = $event\" (configuration)=\"configuration.emit($event)\"></fx-configuration-panel>\r\n\r\n<div class=\"fx-element\">\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"fxData.$fxForm?.$mode !== FxMode.VIEW\">\r\n <div class=\"fx-overlay border-gray-400 border rounded cursor-pointer\" (click)=\"onElementSelect(fxData)\"\r\n (dblclick)=\"openSettingDialog()\">\r\n <div class=\"fx-actions flex justify-between\">\r\n\r\n <div class=\"bg-gray-700 text-gray-300 px-2 rounded-t ml-2 text-xs flex justify-center items-center\">\r\n <div>#{{ fxData.name }}-<span class=\"text-xs italic\">{{ fxData.id }}</span></div>\r\n </div>\r\n\r\n <div class=\"flex justify-around items-end mr-2\">\r\n <div class=\"cursor-pointer bg-secondary text-white w-8 mr-1 text-center rounded-t\" title=\"Settings\"\r\n (click)=\"fxSettingService.openSetting(fxData)\">\r\n <i class=\"fa fa-cog text-xs\"></i>\r\n </div>\r\n <div (click)=\"deleteElement(fxData)\"\r\n class=\"cursor-pointer bg-red-600 text-white w-8 mr-1 text-center rounded-t\" title=\"Delete\">\r\n <i class=\"fa fa-times text-xs\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container #dynamicComponentContainer></ng-container>\r\n </ng-container>\r\n</div>", styles: [".fx-element{position:relative}.fx-element .fx-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#0000001a;z-index:-1;pointer-events:none;opacity:0}.fx-element:hover .fx-overlay{z-index:1;opacity:1;pointer-events:auto}.fx-element:hover .fx-overlay .fx-actions{position:absolute;margin-top:-26px;height:25px;border-top-right-radius:10px;width:100%;border-top-left-radius:10px}\n"] }]
209
+ }], propDecorators: { configuration: [{
210
+ type: Output
211
+ }] } });
212
+
213
+ class DynamicTableComponent extends FxBaseComponent {
214
+ cdr;
215
+ fxBuilderWrapperService;
216
+ tableRows = [];
217
+ previewType = FxMode.VIEW;
218
+ tableConfig = {
219
+ columns: [
220
+ { header: 'Column 1', cellType: 'text' },
221
+ { header: 'Column 2', cellType: 'text' },
222
+ { header: 'Column 3', cellType: 'text' },
223
+ { header: 'Column 4', cellType: 'text' },
224
+ { header: 'Column 5', cellType: 'text' },
225
+ ],
226
+ };
227
+ destroy$ = new Subject();
228
+ uploadedImages = [];
229
+ tableFormControl = new FormControl();
230
+ smartDropdownOptions = {};
231
+ http = inject(HttpClient);
232
+ constructor(cdr, fxBuilderWrapperService) {
233
+ super(cdr);
234
+ this.cdr = cdr;
235
+ this.fxBuilderWrapperService = fxBuilderWrapperService;
236
+ this.onInit.subscribe((fxData) => {
237
+ this._register(this.tableFormControl);
238
+ });
239
+ }
240
+ ngOnInit() {
241
+ this.fxBuilderWrapperService.variables$.pipe(takeUntil(this.destroy$)).subscribe((variables) => {
242
+ if (variables) {
243
+ let dynamicTableValues;
244
+ for (const [key, value] of Object.entries(variables)) {
245
+ if (key.includes('dynamic-table')) {
246
+ dynamicTableValues = value;
247
+ }
248
+ }
249
+ if (Object.keys(dynamicTableValues).length) {
250
+ // const fileHeaderName = dynamicTableValues?.columns.find((f: any) => f.cellType === 'file-upload')?.header;
251
+ const fileHeaderName = dynamicTableValues?.columns.find((f) => f.cellType === 'file-upload')?.header;
252
+ dynamicTableValues?.rows?.forEach((item, index) => {
253
+ // // this.uploadedImages[index] = item[fileHeaderName] ? item[fileHeaderName]: null;
254
+ // const fileUrl = item[fileHeaderName]; // Get the file URL
255
+ // this.uploadedImages[index] = fileUrl
256
+ // ? { result: fileUrl, file: null } // Store the URL as 'result'
257
+ // : null;
258
+ if (item[fileHeaderName]) {
259
+ this.parseUrls(item[fileHeaderName], index);
260
+ }
261
+ });
262
+ console.log("uploadedImages", this.uploadedImages);
263
+ console.log("dynamictable", dynamicTableValues);
264
+ this.tableConfig = dynamicTableValues;
265
+ this.fxData.value = this.tableConfig;
266
+ // this.tableFormControl.reset();
267
+ // this.tableFormControl.setValue(this.tableConfig);
268
+ this.tableFormControl = new FormControl();
269
+ setTimeout(() => {
270
+ this.tableFormControl.patchValue(this.tableConfig, { emitEvent: true });
271
+ console.log("tableFormControl", this.tableFormControl);
272
+ this.cdr.detectChanges();
273
+ }, 50);
274
+ }
275
+ }
276
+ });
277
+ }
278
+ ngAfterViewInit() {
279
+ setTimeout(() => {
280
+ if (this.fxData?.value && Object.keys(this.fxData?.value)?.length != 0) {
281
+ this.tableConfig = this.fxData.value;
282
+ this.fetchSmartDropdownData();
283
+ }
284
+ }, 100);
285
+ }
286
+ fetchSmartDropdownData() {
287
+ this.tableConfig.columns
288
+ .filter((column) => column.cellType === 'smart-dropdown' && column?.apiUrl)
289
+ .forEach((column) => {
290
+ this.http.get(column.apiUrl).subscribe((response) => {
291
+ this.smartDropdownOptions[column.header] = response.map((item) => ({
292
+ value: item[column.valueKey],
293
+ name: item[column.labelKey],
294
+ }));
295
+ });
296
+ });
297
+ }
298
+ uploadImage(event, rowIndex) {
299
+ const file = event.target.files?.[0];
300
+ if (file) {
301
+ const reader = new FileReader();
302
+ reader.onload = () => {
303
+ this.uploadedImages[rowIndex] = {
304
+ result: reader.result,
305
+ file: file
306
+ };
307
+ this.tableConfig.rows[rowIndex][this.tableConfig.columns.find((f) => f.cellType === 'file-upload')?.header] = file;
308
+ console.log("tableConfig", this.tableConfig);
309
+ };
310
+ reader.readAsDataURL(file);
311
+ }
312
+ }
313
+ settings() {
314
+ return [
315
+ new FxStringSetting({ key: 'column-size', $title: 'No. of columns', value: 1 }),
316
+ new FxStringSetting({ key: 'table-config', $title: 'Table Configuration', value: {} }),
317
+ ];
318
+ }
319
+ validations() {
320
+ return [FxValidatorService.required];
321
+ }
322
+ getArray(count) {
323
+ return Array.from({ length: count });
324
+ }
325
+ onChangeConfiguration(event) {
326
+ const columns = event.columns.map((col) => {
327
+ return {
328
+ header: col?.header,
329
+ cellType: col?.cellType,
330
+ placeholder: col?.placeholder,
331
+ options: col?.options,
332
+ apiUrl: col?.apiUrl,
333
+ valueKey: col?.valueKey,
334
+ labelKey: col?.labelKey,
335
+ className: col?.className,
336
+ apiKey: col?.apiKey
337
+ };
338
+ });
339
+ if (!event?.enableAPI) {
340
+ this.tableConfig.columns = columns;
341
+ // this.tableConfig.rows = Array.from({ length: +event?.rows }, (e, index) => ({ name: `SKU-${index + 1}`, age: index % 2 !== 0, gender: 'male' }))
342
+ // this.tableConfig.rows = Array.from({ length: +event?.rows }, (e, index) => {
343
+ // const rows = columns.map((c: any) => {
344
+ // return {
345
+ // c?.header: null
346
+ // }
347
+ // })
348
+ // return rows
349
+ // })
350
+ this.tableConfig.rows = Array.from({ length: +event?.rows }, (_, index) => {
351
+ return columns.reduce((acc, c) => {
352
+ acc[c?.header] = ''; // Initialize each column key with null
353
+ return acc;
354
+ }, {});
355
+ });
356
+ this.fetchSmartDropdownData();
357
+ }
358
+ if (event?.enableAPI) {
359
+ this.drawTable(event, columns);
360
+ this.tableConfig = {
361
+ columns: columns,
362
+ rows: []
363
+ };
364
+ }
365
+ this.fxData.value = this.tableConfig;
366
+ this.tableFormControl.reset();
367
+ this.tableFormControl.setValue(this.tableConfig);
368
+ }
369
+ updateSettings() {
370
+ if (this.fxData.settings) {
371
+ for (let setting of this.fxData.settings) {
372
+ if (setting.key === 'table-config') {
373
+ setting.value = this.tableConfig;
374
+ }
375
+ }
376
+ }
377
+ }
378
+ drawTable(event, columns) {
379
+ let rows;
380
+ this.http.get(event.api).subscribe((res) => {
381
+ if (res) {
382
+ rows = res.map((item) => {
383
+ const newObj = {};
384
+ columns.forEach((col) => {
385
+ newObj[col.header] = item[col.apiKey];
386
+ });
387
+ return newObj;
388
+ });
389
+ this.tableConfig = {
390
+ columns,
391
+ rows
392
+ };
393
+ this.fxData.value = this.tableConfig;
394
+ this.tableFormControl.reset();
395
+ this.tableFormControl.setValue(this.tableConfig);
396
+ }
397
+ });
398
+ }
399
+ deleteFile(file, index) {
400
+ this.uploadedImages.splice(index, 1, null);
401
+ this.tableConfig.rows[index][this.tableConfig.columns.find((f) => f.cellType === 'file-upload')?.header] = null;
402
+ console.log("tableConfig", this.tableConfig);
403
+ this.tableFormControl.setValue(this.tableConfig);
404
+ }
405
+ parseUrls(url, index) {
406
+ this.http.get(url, { responseType: 'blob' }).subscribe({
407
+ next: (imageBlob) => {
408
+ const imageURL = URL.createObjectURL(imageBlob);
409
+ this.uploadedImages[index] = {
410
+ result: imageURL,
411
+ file: null
412
+ };
413
+ },
414
+ error: (error) => {
415
+ console.error('Error fetching image:', error);
416
+ }
417
+ });
418
+ }
419
+ ngOnDestroy() {
420
+ this.destroy$.next(true);
421
+ this.destroy$.complete();
422
+ }
423
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicTableComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: FxBuilderWrapperService }], target: i0.ɵɵFactoryTarget.Component });
424
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DynamicTableComponent, isStandalone: true, selector: "fx-dynamic-table", inputs: { tableRows: "tableRows", previewType: "previewType", tableConfig: "tableConfig" }, usesInheritance: true, ngImport: i0, template: "<fx-settings-panel [fxData]=\"fxData\" (configuration)=\"onChangeConfiguration($event)\">\r\n <div *ngIf=\"fxData\">\r\n <table style=\"width: 100%;\" class=\"formBuilder_dynamic_table\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of tableConfig.columns\">{{ column.header }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of tableConfig.rows; let rowIndex = index\">\r\n <td *ngFor=\"let column of tableConfig.columns\">\r\n <ng-container [ngSwitch]=\"column.cellType\">\r\n <span [class]=\"column?.className\" *ngSwitchCase=\"'text'\">{{row[column.header]}}</span>\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'input-text'\" type=\"text\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'input-number'\" type=\"number\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <select [class]=\"column?.className\" *ngSwitchCase=\"'dropdown'\"\r\n [(ngModel)]=\"row[column.header]\">\r\n <option *ngFor=\"let option of column?.options\" [value]=\"option?.optionValue\"> \r\n {{ option?.optionName }}\r\n </option>\r\n </select>\r\n \r\n <select [class]=\"column?.className\" style=\"width: 60%;\" *ngSwitchCase=\"'smart-dropdown'\"\r\n [(ngModel)]=\"row[column.header]\">\r\n <option *ngFor=\"let option of smartDropdownOptions[column.header]\" [value]=\"option?.value\">\r\n {{option?.name }}\r\n </option>\r\n </select>\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'checkbox'\" type=\"checkbox\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <input name=\"radio-{{rowIndex}}\" [class]=\"column?.className\" *ngSwitchCase=\"'radio'\" type=\"radio\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <div [class]=\"column?.className\" style=\"display: flex; justify-content: center; gap: 10px;\"\r\n *ngSwitchCase=\"'radio-group'\">\r\n <label *ngFor=\"let option of column.options\">\r\n <input name=\"radio-group-{{rowIndex}}\" type=\"radio\" [value]=\"option?.optionName\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n {{ option?.optionName }}\r\n </label>\r\n </div>\r\n \r\n <ng-container *ngSwitchCase=\"'file-upload'\">\r\n <div style=\"display: flex; flex-direction: column; align-items: end;justify-content: end;\">\r\n <img width=\"100\" *ngIf=\"uploadedImages?.[rowIndex]?.['result']\" [src]=\"uploadedImages[rowIndex]?.['result']\"\r\n alt=\"Uploaded Image\" (click)=\"deleteFile(uploadedImages[rowIndex], rowIndex)\"/>\r\n <input [class]=\"column?.className\" type=\"file\" name=\"file\" #uploadFile hidden multiple\r\n (change)=\"uploadImage($event, rowIndex)\" />\r\n <button (click)=\"uploadFile.click()\">Upload</button>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <textarea [class]=\"column?.className\" name=\"\" id=\"\" cols=\"30\" rows=\"2\"></textarea>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</fx-settings-panel>", styles: [".formBuilder_dynamic_table{border:.6px solid #ccc}.formBuilder_dynamic_table>thead>tr{background-color:#4682b4;color:#fff}.formBuilder_dynamic_table>thead>tr>th{font-weight:400!important;padding:.25rem .55rem;font-size:.875rem}.formBuilder_dynamic_table>tbody>tr:nth-child(odd){background-color:#fff}.formBuilder_dynamic_table>tbody>tr:nth-child(2n){background-color:#f6f6f6}.formBuilder_dynamic_table>tbody>tr>td{text-align:center;padding:.25rem .55rem}select:not([size]){width:186px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SettingsPanelComponent, selector: "fx-settings-panel", outputs: ["configuration"] }, { kind: "ngmodule", type: ReactiveFormsModule }] });
425
+ }
426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DynamicTableComponent, decorators: [{
427
+ type: Component,
428
+ args: [{ selector: 'fx-dynamic-table', standalone: true, imports: [CommonModule, FormsModule, SettingsPanelComponent, ReactiveFormsModule], template: "<fx-settings-panel [fxData]=\"fxData\" (configuration)=\"onChangeConfiguration($event)\">\r\n <div *ngIf=\"fxData\">\r\n <table style=\"width: 100%;\" class=\"formBuilder_dynamic_table\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of tableConfig.columns\">{{ column.header }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of tableConfig.rows; let rowIndex = index\">\r\n <td *ngFor=\"let column of tableConfig.columns\">\r\n <ng-container [ngSwitch]=\"column.cellType\">\r\n <span [class]=\"column?.className\" *ngSwitchCase=\"'text'\">{{row[column.header]}}</span>\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'input-text'\" type=\"text\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'input-number'\" type=\"number\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <select [class]=\"column?.className\" *ngSwitchCase=\"'dropdown'\"\r\n [(ngModel)]=\"row[column.header]\">\r\n <option *ngFor=\"let option of column?.options\" [value]=\"option?.optionValue\"> \r\n {{ option?.optionName }}\r\n </option>\r\n </select>\r\n \r\n <select [class]=\"column?.className\" style=\"width: 60%;\" *ngSwitchCase=\"'smart-dropdown'\"\r\n [(ngModel)]=\"row[column.header]\">\r\n <option *ngFor=\"let option of smartDropdownOptions[column.header]\" [value]=\"option?.value\">\r\n {{option?.name }}\r\n </option>\r\n </select>\r\n \r\n <input [class]=\"column?.className\" *ngSwitchCase=\"'checkbox'\" type=\"checkbox\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <input name=\"radio-{{rowIndex}}\" [class]=\"column?.className\" *ngSwitchCase=\"'radio'\" type=\"radio\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n \r\n <div [class]=\"column?.className\" style=\"display: flex; justify-content: center; gap: 10px;\"\r\n *ngSwitchCase=\"'radio-group'\">\r\n <label *ngFor=\"let option of column.options\">\r\n <input name=\"radio-group-{{rowIndex}}\" type=\"radio\" [value]=\"option?.optionName\"\r\n [(ngModel)]=\"row[column.header]\" />\r\n {{ option?.optionName }}\r\n </label>\r\n </div>\r\n \r\n <ng-container *ngSwitchCase=\"'file-upload'\">\r\n <div style=\"display: flex; flex-direction: column; align-items: end;justify-content: end;\">\r\n <img width=\"100\" *ngIf=\"uploadedImages?.[rowIndex]?.['result']\" [src]=\"uploadedImages[rowIndex]?.['result']\"\r\n alt=\"Uploaded Image\" (click)=\"deleteFile(uploadedImages[rowIndex], rowIndex)\"/>\r\n <input [class]=\"column?.className\" type=\"file\" name=\"file\" #uploadFile hidden multiple\r\n (change)=\"uploadImage($event, rowIndex)\" />\r\n <button (click)=\"uploadFile.click()\">Upload</button>\r\n </div>\r\n </ng-container>\r\n \r\n <ng-container *ngSwitchCase=\"'textarea'\">\r\n <textarea [class]=\"column?.className\" name=\"\" id=\"\" cols=\"30\" rows=\"2\"></textarea>\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</fx-settings-panel>", styles: [".formBuilder_dynamic_table{border:.6px solid #ccc}.formBuilder_dynamic_table>thead>tr{background-color:#4682b4;color:#fff}.formBuilder_dynamic_table>thead>tr>th{font-weight:400!important;padding:.25rem .55rem;font-size:.875rem}.formBuilder_dynamic_table>tbody>tr:nth-child(odd){background-color:#fff}.formBuilder_dynamic_table>tbody>tr:nth-child(2n){background-color:#f6f6f6}.formBuilder_dynamic_table>tbody>tr>td{text-align:center;padding:.25rem .55rem}select:not([size]){width:186px!important}\n"] }]
429
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: FxBuilderWrapperService }], propDecorators: { tableRows: [{
430
+ type: Input
431
+ }], previewType: [{
432
+ type: Input
433
+ }], tableConfig: [{
434
+ type: Input
435
+ }] } });
436
+
437
+ class ToggleButtonComponent extends FxBaseComponent {
438
+ cdr;
439
+ toggleBtnControl = new UntypedFormControl(false);
440
+ isToggled = false;
441
+ constructor(cdr) {
442
+ super(cdr);
443
+ this.cdr = cdr;
444
+ this.onInit.subscribe((fxData) => {
445
+ this._register(this.toggleBtnControl);
446
+ });
447
+ }
448
+ toggle() {
449
+ this.isToggled = !this.toggleBtnControl.value;
450
+ this.toggleBtnControl.setValue(this.isToggled);
451
+ }
452
+ settings() {
453
+ return [
454
+ new FxStringSetting({ key: 'classes', $title: 'Classes', value: '' }),
455
+ new FxStringSetting({ key: 'active-text', $title: 'Active Text', value: 'On' }),
456
+ new FxStringSetting({ key: 'inactive-text', $title: 'Inactive Text', value: 'Off' }),
457
+ ];
458
+ }
459
+ validations() {
460
+ return [FxValidatorService.required];
461
+ }
462
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleButtonComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
463
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ToggleButtonComponent, isStandalone: true, selector: "lib-toggle-button", usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\">\r\n <button\r\n class=\"custom-toggle-btn\"\r\n [class]=\"setting('classes') ? setting('classes'): ''\"\r\n [class.active]=\"toggleBtnControl.value\"\r\n (click)=\"toggle()\"\r\n >\r\n {{ toggleBtnControl.value ? setting('active-text') : setting('inactive-text') }}\r\n </button>\r\n</fx-component>\r\n", styles: [".custom-toggle-btn{padding:10px 20px;font-size:16px;font-weight:700;color:#fff;border:none;border-radius:5px;cursor:pointer;background-color:#ccc;transition:background-color .3s}.custom-toggle-btn.active{background-color:#4caf50}.custom-toggle-btn:hover{opacity:.9}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormsModule }] });
464
+ }
465
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleButtonComponent, decorators: [{
466
+ type: Component,
467
+ args: [{ selector: 'lib-toggle-button', standalone: true, imports: [CommonModule, FxComponent, ReactiveFormsModule, FormsModule], template: "<fx-component [fxData]=\"fxData\">\r\n <button\r\n class=\"custom-toggle-btn\"\r\n [class]=\"setting('classes') ? setting('classes'): ''\"\r\n [class.active]=\"toggleBtnControl.value\"\r\n (click)=\"toggle()\"\r\n >\r\n {{ toggleBtnControl.value ? setting('active-text') : setting('inactive-text') }}\r\n </button>\r\n</fx-component>\r\n", styles: [".custom-toggle-btn{padding:10px 20px;font-size:16px;font-weight:700;color:#fff;border:none;border-radius:5px;cursor:pointer;background-color:#ccc;transition:background-color .3s}.custom-toggle-btn.active{background-color:#4caf50}.custom-toggle-btn:hover{opacity:.9}\n"] }]
468
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
469
+
470
+ class UploaderComponent extends FxBaseComponent {
471
+ cdr;
472
+ uploadFileControl = new UntypedFormControl();
473
+ uploadedFiles = [];
474
+ constructor(cdr) {
475
+ super(cdr);
476
+ this.cdr = cdr;
477
+ this.onInit.subscribe((fxData) => {
478
+ this._register(this.uploadFileControl);
479
+ });
480
+ }
481
+ onFileSelected(event) {
482
+ const input = event.target;
483
+ if (input.files) {
484
+ for (let i = 0; i < input?.files?.length; i++) {
485
+ const file = input.files[i];
486
+ const reader = new FileReader();
487
+ reader.onload = e => {
488
+ this.uploadedFiles.push({
489
+ file: file,
490
+ previewUrl: e.target?.result,
491
+ name: file?.name,
492
+ id: v4()
493
+ });
494
+ this.uploadFileControl.setValue(this.uploadedFiles);
495
+ };
496
+ reader.readAsDataURL(file);
497
+ }
498
+ }
499
+ }
500
+ deleteFile(id) {
501
+ this.uploadedFiles = this.uploadedFiles.filter(file => file?.id !== id);
502
+ }
503
+ settings() {
504
+ return [
505
+ new FxStringSetting({ key: 'upload-text', $title: 'Upload Text', value: 'Upload File' }),
506
+ new FxSelectSetting({ key: 'multiple-upload', $title: 'Multiple Upload', value: false }, [{ option: 'Enable', value: true }, { option: 'Disable', value: false }])
507
+ ];
508
+ }
509
+ validations() {
510
+ return [FxValidatorService.required];
511
+ }
512
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploaderComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
513
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UploaderComponent, isStandalone: true, selector: "fx-uploader", usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\">\r\n <div class=\"custom-upload\">\r\n <button type=\"button\" (click)=\"fileInput.click()\">\r\n {{setting('upload-text')}}\r\n </button>\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n [multiple]=\"setting('multiple-upload')\"\r\n (change)=\"onFileSelected($event)\"\r\n [formControl]=\"uploadFileControl\"\r\n hidden\r\n />\r\n <div class=\"file-list\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div (click)=\"deleteFile(file?.id)\" *ngFor=\"let file of uploadedFiles\">\r\n <img class=\"file-thumbnail\" style=\"border-radius: 4px\" [src]=\"file?.previewUrl\" alt=\"\">\r\n <!-- <p>{{file?.name}}</p> -->\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</fx-component>\r\n", styles: [".custom-upload{display:flex;flex-direction:row;align-items:flex-start}.custom-upload button{padding:10px 20px;font-size:16px;font-weight:700;color:#fff;background-color:#007bff;border:none;border-radius:5px;cursor:pointer;transition:background-color .3s}.custom-upload button:hover{background-color:#0056b3}.custom-upload .file-list{display:flex}.custom-upload .file-list p{margin:0;padding:5px;background-color:#f1f1f1;border:1px solid #ddd;border-radius:3px;font-size:14px}.custom-upload .file-list>div{display:flex;flex-direction:column;align-items:center;justify-content:center}.custom-upload .file-list .file-thumbnail{width:100px;height:100px;object-fit:contain}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
514
+ }
515
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UploaderComponent, decorators: [{
516
+ type: Component,
517
+ args: [{ selector: 'fx-uploader', standalone: true, imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule], template: "<fx-component [fxData]=\"fxData\">\r\n <div class=\"custom-upload\">\r\n <button type=\"button\" (click)=\"fileInput.click()\">\r\n {{setting('upload-text')}}\r\n </button>\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n [multiple]=\"setting('multiple-upload')\"\r\n (change)=\"onFileSelected($event)\"\r\n [formControl]=\"uploadFileControl\"\r\n hidden\r\n />\r\n <div class=\"file-list\">\r\n <ng-container *ngIf=\"uploadedFiles?.length\">\r\n <div (click)=\"deleteFile(file?.id)\" *ngFor=\"let file of uploadedFiles\">\r\n <img class=\"file-thumbnail\" style=\"border-radius: 4px\" [src]=\"file?.previewUrl\" alt=\"\">\r\n <!-- <p>{{file?.name}}</p> -->\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</fx-component>\r\n", styles: [".custom-upload{display:flex;flex-direction:row;align-items:flex-start}.custom-upload button{padding:10px 20px;font-size:16px;font-weight:700;color:#fff;background-color:#007bff;border:none;border-radius:5px;cursor:pointer;transition:background-color .3s}.custom-upload button:hover{background-color:#0056b3}.custom-upload .file-list{display:flex}.custom-upload .file-list p{margin:0;padding:5px;background-color:#f1f1f1;border:1px solid #ddd;border-radius:3px;font-size:14px}.custom-upload .file-list>div{display:flex;flex-direction:column;align-items:center;justify-content:center}.custom-upload .file-list .file-thumbnail{width:100px;height:100px;object-fit:contain}\n"] }]
518
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
519
+
520
+ class ToggleComponent extends FxBaseComponent {
521
+ cdr;
522
+ toggleControl = new FormControl(false);
523
+ constructor(cdr) {
524
+ super(cdr);
525
+ this.cdr = cdr;
526
+ this.onInit.subscribe((fxData) => {
527
+ this._register(this.toggleControl);
528
+ });
529
+ }
530
+ settings() {
531
+ return [
532
+ new FxStringSetting({ key: 'accept', $title: 'Accept Text', value: 'Yes' }),
533
+ new FxStringSetting({ key: 'reject', $title: 'Reject Text', value: 'No' })
534
+ ];
535
+ }
536
+ validations() {
537
+ return [FxValidatorService.required];
538
+ }
539
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
540
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ToggleComponent, isStandalone: true, selector: "fx-toggle", usesInheritance: true, ngImport: i0, template: "<fx-component [fxData]=\"fxData\">\r\n <div style=\"display: flex;\">\r\n <label>\r\n <input [formControl]=\"toggleControl\" type=\"radio\" name=\"radio_grp\" class=\"form-radio mr-3\" value=\"true\">\r\n <span class=\"mt-1\">{{setting('accept')}}</span>\r\n </label>\r\n <label>\r\n <input [formControl]=\"toggleControl\" type=\"radio\" name=\"radio_grp\" class=\"form-radio mr-3\" value=\"false\">\r\n <span class=\"mt-1\">{{setting('reject')}}</span>\r\n </label>\r\n </div>\r\n</fx-component>\r\n", styles: ["label{position:relative;white-space:nowrap;border-radius:0;border:0 solid #999999;margin:0 14px 0 0;width:120px;height:auto;padding:0;text-align:center;cursor:pointer}.form-radio{background-color:#dae6f0;color:#fff;box-shadow:none;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;border:1px solid #DEDEDE;padding:9px 10px;margin:0;white-space:nowrap;width:100%;height:38px;background-image:none;border-radius:4px}.form-radio:checked{background-color:#add8e6;border-color:#9bbbd6}.form-radio:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px #9dc1fb,0 1px 2px #000;background-color:#add8e6}.form-radio:hover{border-color:#4682b4}span{position:absolute;inset:8px 0 0;margin:0;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: FxComponent, selector: "fx-component", inputs: ["fxData"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
541
+ }
542
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleComponent, decorators: [{
543
+ type: Component,
544
+ args: [{ selector: 'fx-toggle', standalone: true, imports: [CommonModule, FxComponent, FormsModule, ReactiveFormsModule], template: "<fx-component [fxData]=\"fxData\">\r\n <div style=\"display: flex;\">\r\n <label>\r\n <input [formControl]=\"toggleControl\" type=\"radio\" name=\"radio_grp\" class=\"form-radio mr-3\" value=\"true\">\r\n <span class=\"mt-1\">{{setting('accept')}}</span>\r\n </label>\r\n <label>\r\n <input [formControl]=\"toggleControl\" type=\"radio\" name=\"radio_grp\" class=\"form-radio mr-3\" value=\"false\">\r\n <span class=\"mt-1\">{{setting('reject')}}</span>\r\n </label>\r\n </div>\r\n</fx-component>\r\n", styles: ["label{position:relative;white-space:nowrap;border-radius:0;border:0 solid #999999;margin:0 14px 0 0;width:120px;height:auto;padding:0;text-align:center;cursor:pointer}.form-radio{background-color:#dae6f0;color:#fff;box-shadow:none;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;border:1px solid #DEDEDE;padding:9px 10px;margin:0;white-space:nowrap;width:100%;height:38px;background-image:none;border-radius:4px}.form-radio:checked{background-color:#add8e6;border-color:#9bbbd6}.form-radio:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px #9dc1fb,0 1px 2px #000;background-color:#add8e6}.form-radio:hover{border-color:#4682b4}span{position:absolute;inset:8px 0 0;margin:0;padding:0}\n"] }]
545
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
546
+
547
+ class FxBuilderWrapperComponent {
548
+ fxWrapperService;
549
+ componentBuilder;
550
+ fxForm = FxUtils.createNewForm();
551
+ fxMode = FxMode.EDIT;
552
+ fxConfiguration = {
553
+ settings: true,
554
+ logics: true,
555
+ customControls: true,
556
+ };
557
+ FxScope = FxScope;
558
+ FxMode = FxMode;
559
+ constructor(fxWrapperService) {
560
+ this.fxWrapperService = fxWrapperService;
561
+ }
562
+ ngOnInit() {
563
+ if (!Boolean(this.fxWrapperService.getComponent('dispatch-to-clinic'))) {
564
+ this.fxWrapperService.registerCustomComponent('Dispatch To Clinic', 'dispatch-to-clinic', DispatchToClinicComponent);
565
+ }
566
+ if (!Boolean(this.fxWrapperService.getComponent('dynamic-table'))) {
567
+ this.fxWrapperService.registerCustomComponent('Dynamic Table', 'dynamic-table', DynamicTableComponent);
568
+ }
569
+ if (!Boolean(this.fxWrapperService.getComponent('toggle-button'))) {
570
+ this.fxWrapperService.registerCustomComponent('Toggle Button', 'toggle-button', ToggleButtonComponent);
571
+ }
572
+ if (!Boolean(this.fxWrapperService.getComponent('uploader'))) {
573
+ this.fxWrapperService.registerCustomComponent('Uploader', 'uploader', UploaderComponent);
574
+ }
575
+ if (!Boolean(this.fxWrapperService.getComponent('toggle'))) {
576
+ this.fxWrapperService.registerCustomComponent('Toggle', 'toggle', ToggleComponent);
577
+ }
578
+ }
579
+ ;
580
+ getParsedForm() {
581
+ return this.componentBuilder.getParsedForm();
582
+ }
583
+ getInitializedFxForm() {
584
+ return FxUtils.createNewForm();
585
+ }
586
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FxBuilderWrapperComponent, deps: [{ token: FxBuilderWrapperService }], target: i0.ɵɵFactoryTarget.Component });
587
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FxBuilderWrapperComponent, isStandalone: true, selector: "fx-builder-wrapper", inputs: { fxForm: ["fx-form", "fxForm"] }, viewQueries: [{ propertyName: "componentBuilder", first: true, predicate: ["componentBuilder"], descendants: true }], ngImport: i0, template: `
588
+ <fx-component-builder
589
+ #componentBuilder
590
+ [fx-form]="fxForm"
591
+ [configuration]="fxConfiguration"
592
+ [scope]="FxScope.BUILDER"
593
+ >
594
+ </fx-component-builder>
595
+ `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: FxComponentBuilder, selector: "fx-component-builder", inputs: ["fx-form", "scope", "configuration"] }] });
596
+ }
597
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FxBuilderWrapperComponent, decorators: [{
598
+ type: Component,
599
+ args: [{ selector: 'fx-builder-wrapper', standalone: true, imports: [CommonModule, FxComponentBuilder], template: `
600
+ <fx-component-builder
601
+ #componentBuilder
602
+ [fx-form]="fxForm"
603
+ [configuration]="fxConfiguration"
604
+ [scope]="FxScope.BUILDER"
605
+ >
606
+ </fx-component-builder>
607
+ ` }]
608
+ }], ctorParameters: () => [{ type: FxBuilderWrapperService }], propDecorators: { componentBuilder: [{
609
+ type: ViewChild,
610
+ args: ['componentBuilder']
611
+ }], fxForm: [{
612
+ type: Input,
613
+ args: [{ alias: 'fx-form', required: true }]
614
+ }] } });
615
+
616
+ class FxFormWrapperComponent {
617
+ fxWrapperService;
618
+ form;
619
+ fxForm;
620
+ variables;
621
+ fxFormSubmit = new EventEmitter();
622
+ constructor(fxWrapperService) {
623
+ this.fxWrapperService = fxWrapperService;
624
+ this.registerCustomComponents();
625
+ }
626
+ ngOnChanges(changes) {
627
+ // if('variables' in changes && !changes['fxForm']) {
628
+ // this.fxWrapperService.variables$.next(this.variables);
629
+ // }
630
+ if ('variables' in changes) {
631
+ this.fxWrapperService.variables$.next(this.variables);
632
+ }
633
+ }
634
+ ngOnInit() {
635
+ // if (!Boolean(this.fxWrapperService.getComponent('dispatch-to-clinic'))) {
636
+ // this.fxWrapperService.registerCustomComponent('Dispatch To Clinic', 'dispatch-to-clinic', DispatchToClinicComponent);
637
+ // }
638
+ // if (!Boolean(this.fxWrapperService.getComponent('dynamic-table'))) {
639
+ // this.fxWrapperService.registerCustomComponent('Dynamic Table', 'dynamic-table', DynamicTableComponent);
640
+ // }
641
+ // if (!Boolean(this.fxWrapperService.getComponent('toggle-button'))) {
642
+ // this.fxWrapperService.registerCustomComponent('Toggle Button', 'toggle-button', ToggleButtonComponent);
643
+ // }
644
+ // if (!Boolean(this.fxWrapperService.getComponent('uploader'))) {
645
+ // this.fxWrapperService.registerCustomComponent('Uploader', 'uploader', UploaderComponent);
646
+ // }
647
+ // if (!Boolean(this.fxWrapperService.getComponent('toggle'))) {
648
+ // this.fxWrapperService.registerCustomComponent('Toggle', 'toggle', ToggleComponent);
649
+ // }
650
+ }
651
+ registerCustomComponents() {
652
+ const components = [
653
+ { name: 'Dispatch To Clinic', key: 'dispatch-to-clinic', component: DispatchToClinicComponent },
654
+ { name: 'Dynamic Table', key: 'dynamic-table', component: DynamicTableComponent },
655
+ { name: 'Toggle Button', key: 'toggle-button', component: ToggleButtonComponent },
656
+ { name: 'Uploader', key: 'uploader', component: UploaderComponent },
657
+ { name: 'Toggle', key: 'toggle', component: ToggleComponent }
658
+ ];
659
+ components.forEach(({ name, key, component }) => {
660
+ if (!this.fxWrapperService.getComponent(key)) {
661
+ this.fxWrapperService.registerCustomComponent(name, key, component);
662
+ }
663
+ });
664
+ }
665
+ onSubmit(event) {
666
+ this.fxFormSubmit.emit(event);
667
+ }
668
+ submit() {
669
+ this.form.submit();
670
+ }
671
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FxFormWrapperComponent, deps: [{ token: FxBuilderWrapperService }], target: i0.ɵɵFactoryTarget.Component });
672
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FxFormWrapperComponent, isStandalone: true, selector: "fx-form-component", inputs: { fxForm: "fxForm", variables: "variables" }, outputs: { fxFormSubmit: "fxFormSubmit" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
673
+ <fx-form
674
+ [fxForm]="fxForm"
675
+ [value]="variables"
676
+ (onSubmit)="onSubmit($event)"
677
+ #form
678
+ >
679
+ </fx-form>
680
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: FxFormComponent, selector: "fx-form", inputs: ["formGroup", "fxForm", "value", "mode"], outputs: ["onSubmit"] }] });
681
+ }
682
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FxFormWrapperComponent, decorators: [{
683
+ type: Component,
684
+ args: [{
685
+ selector: 'fx-form-component',
686
+ standalone: true,
687
+ imports: [CommonModule, FxFormComponent],
688
+ template: `
689
+ <fx-form
690
+ [fxForm]="fxForm"
691
+ [value]="variables"
692
+ (onSubmit)="onSubmit($event)"
693
+ #form
694
+ >
695
+ </fx-form>
696
+ `,
697
+ }]
698
+ }], ctorParameters: () => [{ type: FxBuilderWrapperService }], propDecorators: { form: [{
699
+ type: ViewChild,
700
+ args: ['form']
701
+ }], fxForm: [{
702
+ type: Input
703
+ }], variables: [{
704
+ type: Input
705
+ }], fxFormSubmit: [{
706
+ type: Output
707
+ }] } });
708
+
709
+ /*
710
+ * Public API Surface of fx-builder-wrapper
711
+ */
712
+
713
+ /**
714
+ * Generated bundle index. Do not edit.
715
+ */
716
+
717
+ export { FxBuilderWrapperComponent, FxBuilderWrapperService, FxFormWrapperComponent };
718
+ //# sourceMappingURL=fx-form-builder-wrapper.mjs.map