ng-prime-tools 1.0.24 → 1.0.26

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 (46) hide show
  1. package/README.md +8 -0
  2. package/esm2022/lib/enums/public-api.mjs +2 -1
  3. package/esm2022/lib/enums/severity.enum.mjs +8 -0
  4. package/esm2022/lib/models/button.model.mjs +1 -1
  5. package/esm2022/lib/models/chart-config.model.mjs +1 -1
  6. package/esm2022/lib/models/dialog-config.model.mjs +2 -0
  7. package/esm2022/lib/models/public-api.mjs +3 -2
  8. package/esm2022/lib/models/toast-message.model.mjs +2 -0
  9. package/esm2022/lib/pt-chart-comparison/index.mjs +2 -0
  10. package/esm2022/lib/pt-chart-comparison/pt-chart-comparison.component.mjs +153 -0
  11. package/esm2022/lib/pt-chart-comparison/pt-chart-comparison.module.mjs +18 -0
  12. package/esm2022/lib/pt-chart-comparison/public-api.mjs +3 -0
  13. package/esm2022/lib/pt-dialog/pt-dialog.component.mjs +219 -48
  14. package/esm2022/public-api.mjs +2 -1
  15. package/fesm2022/ng-prime-tools.mjs +388 -48
  16. package/fesm2022/ng-prime-tools.mjs.map +1 -1
  17. package/lib/enums/public-api.d.ts +1 -0
  18. package/lib/enums/public-api.d.ts.map +1 -1
  19. package/lib/enums/severity.enum.d.ts +7 -0
  20. package/lib/enums/severity.enum.d.ts.map +1 -0
  21. package/lib/models/button.model.d.ts +2 -0
  22. package/lib/models/button.model.d.ts.map +1 -1
  23. package/lib/models/chart-config.model.d.ts +15 -0
  24. package/lib/models/chart-config.model.d.ts.map +1 -1
  25. package/lib/models/dialog-config.model.d.ts +18 -0
  26. package/lib/models/dialog-config.model.d.ts.map +1 -0
  27. package/lib/models/public-api.d.ts +2 -1
  28. package/lib/models/public-api.d.ts.map +1 -1
  29. package/lib/models/toast-message.model.d.ts +7 -0
  30. package/lib/models/toast-message.model.d.ts.map +1 -0
  31. package/lib/pt-chart-comparison/index.d.ts +2 -0
  32. package/lib/pt-chart-comparison/index.d.ts.map +1 -0
  33. package/lib/pt-chart-comparison/pt-chart-comparison.component.d.ts +42 -0
  34. package/lib/pt-chart-comparison/pt-chart-comparison.component.d.ts.map +1 -0
  35. package/lib/pt-chart-comparison/pt-chart-comparison.module.d.ts +9 -0
  36. package/lib/pt-chart-comparison/pt-chart-comparison.module.d.ts.map +1 -0
  37. package/lib/pt-chart-comparison/public-api.d.ts +3 -0
  38. package/lib/pt-chart-comparison/public-api.d.ts.map +1 -0
  39. package/lib/pt-dialog/pt-dialog.component.d.ts +11 -3
  40. package/lib/pt-dialog/pt-dialog.component.d.ts.map +1 -1
  41. package/package.json +1 -1
  42. package/public-api.d.ts +1 -0
  43. package/public-api.d.ts.map +1 -1
  44. package/esm2022/lib/models/dialog.model.mjs +0 -2
  45. package/lib/models/dialog.model.d.ts +0 -13
  46. package/lib/models/dialog.model.d.ts.map +0 -1
@@ -1,66 +1,115 @@
1
1
  import { Component, Input, Output, EventEmitter, } from '@angular/core';
2
2
  import { ConfirmationService, ConfirmEventType, MessageService, } from 'primeng/api';
3
+ import { SeverityEnum } from '../enums';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "primeng/api";
5
- import * as i2 from "primeng/toast";
6
- import * as i3 from "primeng/confirmdialog";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "primeng/toast";
8
+ import * as i4 from "primeng/confirmdialog";
9
+ // Default Styles for Different Dialog Types
10
+ const DIALOG_STYLES = {
11
+ [SeverityEnum.WARNING]: {
12
+ header: { text: 'Warning', color: '#d98300' },
13
+ content: { text: 'This is a warning message!', color: '#d98300' },
14
+ confirmButtonConfig: { backgroundColor: '#d98300', fontColor: '#fff' },
15
+ cancelButtonConfig: { backgroundColor: '#6c757d', fontColor: '#fff' },
16
+ },
17
+ [SeverityEnum.SUCCESS]: {
18
+ header: { text: 'Success', color: '#28a745' },
19
+ content: { text: 'Operation was successful!', color: '#28a745' },
20
+ confirmButtonConfig: { backgroundColor: '#28a745', fontColor: '#fff' },
21
+ cancelButtonConfig: { backgroundColor: '#6c757d', fontColor: '#fff' },
22
+ },
23
+ [SeverityEnum.DANGER]: {
24
+ header: { text: 'Error', color: '#dc3545' },
25
+ content: { text: 'An error occurred!', color: '#dc3545' },
26
+ confirmButtonConfig: { backgroundColor: '#dc3545', fontColor: '#fff' },
27
+ cancelButtonConfig: { backgroundColor: '#6c757d', fontColor: '#fff' },
28
+ },
29
+ [SeverityEnum.INFO]: {
30
+ header: { text: 'Information', color: '#007bff' },
31
+ content: { text: 'Here is some important information.', color: '#007bff' },
32
+ confirmButtonConfig: { backgroundColor: '#007bff', fontColor: '#fff' },
33
+ cancelButtonConfig: { backgroundColor: '#6c757d', fontColor: '#fff' },
34
+ },
35
+ };
36
+ // Centralized Default Values
37
+ const DEFAULT_DIALOG_CONFIG = {
38
+ header: { text: 'Confirmation' },
39
+ visible: false,
40
+ width: '400px',
41
+ height: 'auto',
42
+ content: 'Do you want to proceed?',
43
+ confirmButtonConfig: {
44
+ label: 'Confirm',
45
+ fontColor: '#fff',
46
+ backgroundColor: '#007bff',
47
+ },
48
+ cancelButtonConfig: {
49
+ label: 'Cancel',
50
+ fontColor: '#fff',
51
+ backgroundColor: '#6c757d',
52
+ },
53
+ dialogStyle: SeverityEnum.INFO,
54
+ };
7
55
  export class PTDialogComponent {
8
56
  constructor(confirmationService, messageService, renderer, el) {
9
57
  this.confirmationService = confirmationService;
10
58
  this.messageService = messageService;
11
59
  this.renderer = renderer;
12
60
  this.el = el;
13
- this.dialogModel = {
14
- header: { text: 'Confirmation' },
15
- visible: false,
16
- width: '400px',
17
- height: 'auto',
18
- content: 'Do you want to proceed?',
19
- confirmButtonConfig: {
20
- label: 'Confirm',
21
- fontColor: '#fff',
22
- backgroundColor: '#007bff',
23
- },
24
- cancelButtonConfig: {
25
- label: 'Cancel',
26
- fontColor: '#fff',
27
- backgroundColor: '#6c757d',
28
- },
29
- };
61
+ this.dialogConfig = { ...DEFAULT_DIALOG_CONFIG };
30
62
  this.confirm = new EventEmitter();
31
63
  this.cancel = new EventEmitter();
32
64
  }
33
65
  ngOnChanges(changes) {
34
- if (changes['dialogModel'] && this.dialogModel.visible) {
35
- this.showDialog();
66
+ if (changes['dialogConfig']) {
67
+ if (changes['dialogConfig'].currentValue?.dialogStyle !==
68
+ changes['dialogConfig'].previousValue?.dialogStyle) {
69
+ this.applyDialogStyle();
70
+ }
71
+ if (this.dialogConfig.visible) {
72
+ this.showDialog();
73
+ }
36
74
  }
37
75
  }
76
+ applyDialogStyle() {
77
+ const dialogStyle = this.dialogConfig.dialogStyle || SeverityEnum.INFO; // ✅ Ensure dialogStyle is always defined
78
+ const styleConfig = DIALOG_STYLES[dialogStyle] || {}; // ✅ Get the styles for the selected dialogStyle
79
+ this.dialogConfig = {
80
+ ...DEFAULT_DIALOG_CONFIG, // ✅ Start with the default values
81
+ ...styleConfig, // ✅ Override with the selected dialogStyle values
82
+ confirmButtonConfig: {
83
+ ...DEFAULT_DIALOG_CONFIG.confirmButtonConfig, // ✅ Start with default confirm button styles
84
+ ...styleConfig.confirmButtonConfig, // ✅ Override with the confirm button styles for the selected dialogStyle
85
+ },
86
+ cancelButtonConfig: {
87
+ ...DEFAULT_DIALOG_CONFIG.cancelButtonConfig, // ✅ Start with default cancel button styles
88
+ ...styleConfig.cancelButtonConfig, // ✅ Override with the cancel button styles for the selected dialogStyle
89
+ },
90
+ };
91
+ }
38
92
  showDialog() {
39
93
  this.confirmationService.confirm({
40
- header: this.dialogModel.header?.text || 'Confirmation',
41
- message: this.dialogModel.content || 'Are you sure?',
42
- acceptButtonStyleClass: this.getButtonStyle(this.dialogModel.confirmButtonConfig),
43
- rejectButtonStyleClass: this.getButtonStyle(this.dialogModel.cancelButtonConfig),
44
- acceptIcon: this.dialogModel.confirmButtonConfig?.icon || 'pi pi-check',
45
- rejectIcon: this.dialogModel.cancelButtonConfig?.icon || 'pi pi-times',
94
+ header: this.getDialogHeaderText(),
95
+ message: this.getDialogContentText(),
96
+ acceptLabel: this.dialogConfig.confirmButtonConfig?.label || 'Confirm',
97
+ rejectLabel: this.dialogConfig.cancelButtonConfig?.label || 'Cancel',
98
+ acceptButtonStyleClass: this.getButtonStyle(this.dialogConfig.confirmButtonConfig, true),
99
+ rejectButtonStyleClass: this.getButtonStyle(this.dialogConfig.cancelButtonConfig, false),
100
+ acceptIcon: this.dialogConfig.confirmButtonConfig?.icon || 'pi pi-check',
101
+ rejectIcon: this.dialogConfig.cancelButtonConfig?.icon || 'pi pi-times',
46
102
  accept: () => {
47
103
  this.confirm.emit();
48
- this.messageService.add({
49
- severity: 'info',
50
- summary: 'Confirmed',
51
- detail: 'Action confirmed',
52
- life: 3000,
53
- });
104
+ if (this.dialogConfig.toastOnConfirm) {
105
+ this.showToast(this.dialogConfig.toastOnConfirm);
106
+ }
54
107
  },
55
108
  reject: (type) => {
56
109
  this.cancel.emit();
57
- if (type === ConfirmEventType.REJECT) {
58
- this.messageService.add({
59
- severity: 'error',
60
- summary: 'Rejected',
61
- detail: 'Action cancelled',
62
- life: 3000,
63
- });
110
+ if (type === ConfirmEventType.REJECT &&
111
+ this.dialogConfig.toastOnCancel) {
112
+ this.showToast(this.dialogConfig.toastOnCancel);
64
113
  }
65
114
  },
66
115
  });
@@ -68,25 +117,147 @@ export class PTDialogComponent {
68
117
  setTimeout(() => {
69
118
  const dialogElement = this.el.nativeElement.querySelector('.p-dialog');
70
119
  if (dialogElement) {
71
- this.renderer.setStyle(dialogElement, 'width', this.dialogModel.width || '400px');
72
- this.renderer.setStyle(dialogElement, 'height', this.dialogModel.height || 'auto');
120
+ this.renderer.setStyle(dialogElement, 'width', this.dialogConfig.width || '400px');
121
+ this.renderer.setStyle(dialogElement, 'height', this.dialogConfig.height || 'auto');
73
122
  }
74
123
  }, 0);
75
124
  }
76
- getButtonStyle(buttonConfig) {
77
- return buttonConfig?.styleClass || 'p-button-sm'; // Default to small button style
125
+ showToast(toast) {
126
+ if (toast) {
127
+ this.messageService.add({
128
+ severity: toast.severity,
129
+ summary: toast.summary,
130
+ detail: toast.detail,
131
+ life: toast.life || 3000,
132
+ });
133
+ }
134
+ }
135
+ getButtonStyle(buttonConfig, isConfirm = false) {
136
+ let styleClass = buttonConfig?.styleClass ?? 'p-button-sm'; // ✅ Default button size
137
+ // ✅ Apply width dynamically if provided, otherwise default to 100%
138
+ const buttonWidth = buttonConfig?.width ?? '100%';
139
+ // ✅ Set default severity: SUCCESS for confirm, SECONDARY for cancel
140
+ const defaultSeverity = isConfirm ? SeverityEnum.DANGER : SeverityEnum.INFO;
141
+ const severity = buttonConfig?.severity ?? defaultSeverity;
142
+ // ✅ Apply severity-based styles only if no custom background color is set
143
+ if (!buttonConfig?.backgroundColor) {
144
+ switch (severity) {
145
+ case SeverityEnum.WARNING:
146
+ styleClass += ' p-button-warning';
147
+ break;
148
+ case SeverityEnum.DANGER:
149
+ styleClass += ' p-button-danger';
150
+ break;
151
+ case SeverityEnum.SUCCESS:
152
+ styleClass += ' p-button-success';
153
+ break;
154
+ case SeverityEnum.INFO:
155
+ default:
156
+ styleClass += ' p-button-secondary';
157
+ break;
158
+ }
159
+ }
160
+ return `${styleClass.trim()} width-${buttonWidth.replace('%', '')}`;
161
+ }
162
+ getDialogHeaderText() {
163
+ const header = this.dialogConfig.header;
164
+ const dialogStyle = this.dialogConfig.dialogStyle ?? SeverityEnum.INFO;
165
+ const styleHeader = DIALOG_STYLES[dialogStyle]?.header;
166
+ return typeof header === 'object' && header !== null && 'text' in header
167
+ ? header.text
168
+ : typeof header === 'string'
169
+ ? header
170
+ : typeof styleHeader === 'object' &&
171
+ styleHeader !== null &&
172
+ 'text' in styleHeader
173
+ ? styleHeader.text
174
+ : 'Confirmation'; // ✅ Default value
175
+ }
176
+ getDialogHeaderStyle() {
177
+ const header = this.dialogConfig.header;
178
+ const dialogStyle = this.dialogConfig.dialogStyle ?? SeverityEnum.INFO; // ✅ Ensure dialogStyle is always defined
179
+ const styleHeader = DIALOG_STYLES[dialogStyle]?.header; // ✅ Store the style header separately
180
+ return typeof header === 'object' && header !== null
181
+ ? {
182
+ color: header.color ||
183
+ (typeof styleHeader === 'object' ? styleHeader?.color : '#333'),
184
+ fontSize: header.fontSize || '25px',
185
+ }
186
+ : {
187
+ color: typeof styleHeader === 'object' ? styleHeader?.color : '#333',
188
+ fontSize: '25px',
189
+ };
190
+ }
191
+ getDialogIconClass() {
192
+ const header = this.dialogConfig.header;
193
+ const dialogStyle = this.dialogConfig.dialogStyle ?? SeverityEnum.INFO; // ✅ Ensure dialogStyle is always defined
194
+ const styleHeader = DIALOG_STYLES[dialogStyle]?.header; // ✅ Store the style header separately
195
+ // ✅ Ensure header.icon exists and is an object before accessing .code
196
+ const icon = typeof header === 'object' && header !== null && 'icon' in header
197
+ ? header.icon
198
+ : typeof styleHeader === 'object' && 'icon' in styleHeader
199
+ ? styleHeader.icon
200
+ : undefined;
201
+ // ✅ If `icon` is an object, extract `.code`, otherwise return as string or default value
202
+ return typeof icon === 'string'
203
+ ? icon
204
+ : icon?.code || 'pi pi-exclamation-circle';
205
+ }
206
+ getDialogIconStyle() {
207
+ const header = this.dialogConfig.header;
208
+ const dialogStyle = this.dialogConfig.dialogStyle ?? SeverityEnum.INFO;
209
+ const styleHeader = DIALOG_STYLES[dialogStyle]?.header;
210
+ const icon = typeof header === 'object' && header !== null && 'icon' in header
211
+ ? header.icon
212
+ : undefined;
213
+ return {
214
+ color: icon?.color ||
215
+ (typeof styleHeader === 'object' ? styleHeader?.color : '#f39c12'),
216
+ fontSize: icon?.fontSize || '1.5rem',
217
+ backgroundColor: icon?.backgroundColor || 'transparent',
218
+ borderRadius: icon?.shape === 'circular' ? '50%' : '4px',
219
+ padding: '5px',
220
+ };
221
+ }
222
+ getDialogContentText() {
223
+ const content = this.dialogConfig.content;
224
+ const dialogStyle = this.dialogConfig.dialogStyle ?? SeverityEnum.INFO;
225
+ const styleContent = DIALOG_STYLES[dialogStyle]?.content;
226
+ return typeof content === 'string'
227
+ ? content
228
+ : content?.text ||
229
+ (typeof styleContent === 'object'
230
+ ? styleContent?.text
231
+ : 'Are you sure?');
232
+ }
233
+ getDialogContentStyle() {
234
+ const content = this.dialogConfig.content;
235
+ const dialogStyle = this.dialogConfig.dialogStyle ?? SeverityEnum.INFO;
236
+ const styleContent = DIALOG_STYLES[dialogStyle]?.content;
237
+ return typeof content === 'object' && content !== null
238
+ ? {
239
+ color: content.color ||
240
+ (typeof styleContent === 'object' ? styleContent?.color : '#333'),
241
+ fontSize: content.fontSize || '20px',
242
+ textAlign: content.position || 'left',
243
+ }
244
+ : {
245
+ color: typeof styleContent === 'object' ? styleContent?.color : '#333',
246
+ fontSize: '20px',
247
+ textAlign: 'left',
248
+ };
78
249
  }
79
250
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTDialogComponent, deps: [{ token: i1.ConfirmationService }, { token: i1.MessageService }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
80
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTDialogComponent, selector: "pt-dialog", inputs: { dialogModel: "dialogModel" }, outputs: { confirm: "confirm", cancel: "cancel" }, providers: [ConfirmationService, MessageService], usesOnChanges: true, ngImport: i0, template: "<div>\n <p-toast></p-toast>\n <p-confirmDialog>\n <ng-template pTemplate=\"message\" let-message>\n <div\n class=\"flex flex-column align-items-center w-full gap-3 border-bottom-1 surface-border\"\n >\n <i [class]=\"dialogModel.header?.icon || 'pi pi-exclamation-circle'\"></i>\n <p>{{ message.message }}</p>\n </div>\n </ng-template>\n </p-confirmDialog>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i2.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i3.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }] }); }
251
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTDialogComponent, selector: "pt-dialog", inputs: { dialogConfig: "dialogConfig" }, outputs: { confirm: "confirm", cancel: "cancel" }, providers: [ConfirmationService, MessageService], usesOnChanges: true, ngImport: i0, template: "<div class=\"pt-dialog\">\n <p-toast></p-toast>\n <p-confirmDialog>\n <!-- Header with Icon and Title aligned horizontally -->\n <ng-template pTemplate=\"header\">\n <div class=\"popup-header bordered-section\">\n <i [class]=\"getDialogIconClass()\" [ngStyle]=\"getDialogIconStyle()\"></i>\n <span class=\"popup-title\" [ngStyle]=\"getDialogHeaderStyle()\">\n {{ getDialogHeaderText() }}\n </span>\n </div>\n </ng-template>\n\n <!-- Message Content with Divider -->\n <ng-template pTemplate=\"message\" let-message>\n <div\n class=\"popup-content bordered-section\"\n [ngStyle]=\"getDialogContentStyle()\"\n >\n <p>{{ getDialogContentText() }}</p>\n </div>\n </ng-template>\n </p-confirmDialog>\n</div>\n", styles: ["::ng-deep .pt-dialog .p-dialog .p-dialog-header{padding-bottom:0}::ng-deep .pt-dialog .p-dialog .p-dialog-content{padding:0}::ng-deep .pt-dialog .full-width-button{width:100%;display:block;text-align:center}::ng-deep .pt-dialog .p-dialog-footer{display:flex;justify-content:center;gap:10px;width:100%;padding:10px}::ng-deep .pt-dialog .p-confirm-dialog-accept,::ng-deep .pt-dialog .p-confirm-dialog-reject{flex:1;max-width:50%;text-align:center;display:flex;justify-content:center;align-items:center;height:40px}::ng-deep .pt-dialog .p-confirm-dialog-accept i,::ng-deep .pt-dialog .p-confirm-dialog-reject i{margin-right:5px}::ng-deep .pt-dialog .p-confirm-dialog-accept .p-button-label,::ng-deep .pt-dialog .p-confirm-dialog-reject .p-button-label{font-weight:700;flex-grow:1;text-align:center}.pt-dialog .popup-header{display:flex;align-items:center;gap:10px;font-size:1.2rem;font-weight:700;padding-bottom:10px;width:100%}.pt-dialog .popup-title{color:#333;font-size:1.2rem}.pt-dialog .bordered-section{width:100%;border-bottom:1px solid rgba(0,0,0,.2);padding-bottom:10px;margin-bottom:10px}.pt-dialog .popup-content{display:flex;justify-content:center;text-align:center;padding:15px;width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i4.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }] }); }
81
252
  }
82
253
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTDialogComponent, decorators: [{
83
254
  type: Component,
84
- args: [{ selector: 'pt-dialog', providers: [ConfirmationService, MessageService], template: "<div>\n <p-toast></p-toast>\n <p-confirmDialog>\n <ng-template pTemplate=\"message\" let-message>\n <div\n class=\"flex flex-column align-items-center w-full gap-3 border-bottom-1 surface-border\"\n >\n <i [class]=\"dialogModel.header?.icon || 'pi pi-exclamation-circle'\"></i>\n <p>{{ message.message }}</p>\n </div>\n </ng-template>\n </p-confirmDialog>\n</div>\n" }]
85
- }], ctorParameters: () => [{ type: i1.ConfirmationService }, { type: i1.MessageService }, { type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { dialogModel: [{
255
+ args: [{ selector: 'pt-dialog', providers: [ConfirmationService, MessageService], template: "<div class=\"pt-dialog\">\n <p-toast></p-toast>\n <p-confirmDialog>\n <!-- Header with Icon and Title aligned horizontally -->\n <ng-template pTemplate=\"header\">\n <div class=\"popup-header bordered-section\">\n <i [class]=\"getDialogIconClass()\" [ngStyle]=\"getDialogIconStyle()\"></i>\n <span class=\"popup-title\" [ngStyle]=\"getDialogHeaderStyle()\">\n {{ getDialogHeaderText() }}\n </span>\n </div>\n </ng-template>\n\n <!-- Message Content with Divider -->\n <ng-template pTemplate=\"message\" let-message>\n <div\n class=\"popup-content bordered-section\"\n [ngStyle]=\"getDialogContentStyle()\"\n >\n <p>{{ getDialogContentText() }}</p>\n </div>\n </ng-template>\n </p-confirmDialog>\n</div>\n", styles: ["::ng-deep .pt-dialog .p-dialog .p-dialog-header{padding-bottom:0}::ng-deep .pt-dialog .p-dialog .p-dialog-content{padding:0}::ng-deep .pt-dialog .full-width-button{width:100%;display:block;text-align:center}::ng-deep .pt-dialog .p-dialog-footer{display:flex;justify-content:center;gap:10px;width:100%;padding:10px}::ng-deep .pt-dialog .p-confirm-dialog-accept,::ng-deep .pt-dialog .p-confirm-dialog-reject{flex:1;max-width:50%;text-align:center;display:flex;justify-content:center;align-items:center;height:40px}::ng-deep .pt-dialog .p-confirm-dialog-accept i,::ng-deep .pt-dialog .p-confirm-dialog-reject i{margin-right:5px}::ng-deep .pt-dialog .p-confirm-dialog-accept .p-button-label,::ng-deep .pt-dialog .p-confirm-dialog-reject .p-button-label{font-weight:700;flex-grow:1;text-align:center}.pt-dialog .popup-header{display:flex;align-items:center;gap:10px;font-size:1.2rem;font-weight:700;padding-bottom:10px;width:100%}.pt-dialog .popup-title{color:#333;font-size:1.2rem}.pt-dialog .bordered-section{width:100%;border-bottom:1px solid rgba(0,0,0,.2);padding-bottom:10px;margin-bottom:10px}.pt-dialog .popup-content{display:flex;justify-content:center;text-align:center;padding:15px;width:100%}\n"] }]
256
+ }], ctorParameters: () => [{ type: i1.ConfirmationService }, { type: i1.MessageService }, { type: i0.Renderer2 }, { type: i0.ElementRef }], propDecorators: { dialogConfig: [{
86
257
  type: Input
87
258
  }], confirm: [{
88
259
  type: Output
89
260
  }], cancel: [{
90
261
  type: Output
91
262
  }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvcHQtZGlhbG9nL3B0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWRpYWxvZy9wdC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBRUwsTUFBTSxFQUNOLFlBQVksR0FLYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixjQUFjLEdBQ2YsTUFBTSxhQUFhLENBQUM7Ozs7O0FBVXJCLE1BQU0sT0FBTyxpQkFBaUI7SUFzQjVCLFlBQ1UsbUJBQXdDLEVBQ3hDLGNBQThCLEVBQzlCLFFBQW1CLEVBQ25CLEVBQWM7UUFIZCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQVk7UUF6QmYsZ0JBQVcsR0FBZ0I7WUFDbEMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNoQyxPQUFPLEVBQUUsS0FBSztZQUNkLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLE1BQU07WUFDZCxPQUFPLEVBQUUseUJBQXlCO1lBQ2xDLG1CQUFtQixFQUFFO2dCQUNuQixLQUFLLEVBQUUsU0FBUztnQkFDaEIsU0FBUyxFQUFFLE1BQU07Z0JBQ2pCLGVBQWUsRUFBRSxTQUFTO2FBQzNCO1lBQ0Qsa0JBQWtCLEVBQUU7Z0JBQ2xCLEtBQUssRUFBRSxRQUFRO2dCQUNmLFNBQVMsRUFBRSxNQUFNO2dCQUNqQixlQUFlLEVBQUUs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LENBQUMsbUJBQW1CLEVBQUUsY0FBYyxDQUFDO3NLQUd2QyxXQUFXO3NCQUFuQixLQUFLO2dCQWtCSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFJlbmRlcmVyMixcbiAgRWxlbWVudFJlZixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT25DaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbmZpcm1hdGlvblNlcnZpY2UsXG4gIENvbmZpcm1FdmVudFR5cGUsXG4gIE1lc3NhZ2VTZXJ2aWNlLFxufSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBEaWFsb2dNb2RlbCB9IGZyb20gJy4uL21vZGVscy9kaWFsb2cubW9kZWwnO1xuaW1wb3J0IHsgQnV0dG9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvYnV0dG9uLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3B0LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LWRpYWxvZy5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW0NvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgUFREaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBkaWFsb2dNb2RlbDogRGlhbG9nTW9kZWwgPSB7XG4gICAgaGVhZGVyOiB7IHRleHQ6ICdDb25maXJtYXRpb24nIH0sXG4gICAgdmlzaWJsZTogZmFsc2UsXG4gICAgd2lkdGg6ICc0MDBweCcsXG4gICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgY29udGVudDogJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JyxcbiAgICBjb25maXJtQnV0dG9uQ29uZmlnOiB7XG4gICAgICBsYWJlbDogJ0NvbmZpcm0nLFxuICAgICAgZm9udENvbG9yOiAnI2ZmZicsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMDA3YmZmJyxcbiAgICB9LFxuICAgIGNhbmNlbEJ1dHRvbkNvbmZpZzoge1xuICAgICAgbGFiZWw6ICdDYW5jZWwnLFxuICAgICAgZm9udENvbG9yOiAnI2ZmZicsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNmM3NTdkJyxcbiAgICB9LFxuICB9O1xuXG4gIEBPdXRwdXQoKSBjb25maXJtOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjYW5jZWw6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGlhbG9nTW9kZWwnXSAmJiB0aGlzLmRpYWxvZ01vZGVsLnZpc2libGUpIHtcbiAgICAgIHRoaXMuc2hvd0RpYWxvZygpO1xuICAgIH1cbiAgfVxuXG4gIHNob3dEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgaGVhZGVyOiB0aGlzLmRpYWxvZ01vZGVsLmhlYWRlcj8udGV4dCB8fCAnQ29uZmlybWF0aW9uJyxcbiAgICAgIG1lc3NhZ2U6IHRoaXMuZGlhbG9nTW9kZWwuY29udGVudCB8fCAnQXJlIHlvdSBzdXJlPycsXG4gICAgICBhY2NlcHRCdXR0b25TdHlsZUNsYXNzOiB0aGlzLmdldEJ1dHRvblN0eWxlKFxuICAgICAgICB0aGlzLmRpYWxvZ01vZGVsLmNvbmZpcm1CdXR0b25Db25maWdcbiAgICAgICksXG4gICAgICByZWplY3RCdXR0b25TdHlsZUNsYXNzOiB0aGlzLmdldEJ1dHRvblN0eWxlKFxuICAgICAgICB0aGlzLmRpYWxvZ01vZGVsLmNhbmNlbEJ1dHRvbkNvbmZpZ1xuICAgICAgKSxcbiAgICAgIGFjY2VwdEljb246IHRoaXMuZGlhbG9nTW9kZWwuY29uZmlybUJ1dHRvbkNvbmZpZz8uaWNvbiB8fCAncGkgcGktY2hlY2snLFxuICAgICAgcmVqZWN0SWNvbjogdGhpcy5kaWFsb2dNb2RlbC5jYW5jZWxCdXR0b25Db25maWc/Lmljb24gfHwgJ3BpIHBpLXRpbWVzJyxcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpcm0uZW1pdCgpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgICAgc2V2ZXJpdHk6ICdpbmZvJyxcbiAgICAgICAgICBzdW1tYXJ5OiAnQ29uZmlybWVkJyxcbiAgICAgICAgICBkZXRhaWw6ICdBY3Rpb24gY29uZmlybWVkJyxcbiAgICAgICAgICBsaWZlOiAzMDAwLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICByZWplY3Q6ICh0eXBlOiBDb25maXJtRXZlbnRUeXBlKSA9PiB7XG4gICAgICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgICAgICAgaWYgKHR5cGUgPT09IENvbmZpcm1FdmVudFR5cGUuUkVKRUNUKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgICAgICBzdW1tYXJ5OiAnUmVqZWN0ZWQnLFxuICAgICAgICAgICAgZGV0YWlsOiAnQWN0aW9uIGNhbmNlbGxlZCcsXG4gICAgICAgICAgICBsaWZlOiAzMDAwLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gVXNlIHJlbmRlcmVyIHRvIGFwcGx5IGR5bmFtaWMgc3R5bGVzXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBkaWFsb2dFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wLWRpYWxvZycpO1xuICAgICAgaWYgKGRpYWxvZ0VsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICBkaWFsb2dFbGVtZW50LFxuICAgICAgICAgICd3aWR0aCcsXG4gICAgICAgICAgdGhpcy5kaWFsb2dNb2RlbC53aWR0aCB8fCAnNDAwcHgnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgZGlhbG9nRWxlbWVudCxcbiAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICB0aGlzLmRpYWxvZ01vZGVsLmhlaWdodCB8fCAnYXV0bydcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnV0dG9uU3R5bGUoYnV0dG9uQ29uZmlnPzogQnV0dG9uTW9kZWwpOiBzdHJpbmcge1xuICAgIHJldHVybiBidXR0b25Db25maWc/LnN0eWxlQ2xhc3MgfHwgJ3AtYnV0dG9uLXNtJzsgLy8gRGVmYXVsdCB0byBzbWFsbCBidXR0b24gc3R5bGVcbiAgfVxufVxuIiwiPGRpdj5cbiAgPHAtdG9hc3Q+PC9wLXRvYXN0PlxuICA8cC1jb25maXJtRGlhbG9nPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJtZXNzYWdlXCIgbGV0LW1lc3NhZ2U+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy1mdWxsIGdhcC0zIGJvcmRlci1ib3R0b20tMSBzdXJmYWNlLWJvcmRlclwiXG4gICAgICA+XG4gICAgICAgIDxpIFtjbGFzc109XCJkaWFsb2dNb2RlbC5oZWFkZXI/Lmljb24gfHwgJ3BpIHBpLWV4Y2xhbWF0aW9uLWNpcmNsZSdcIj48L2k+XG4gICAgICAgIDxwPnt7IG1lc3NhZ2UubWVzc2FnZSB9fTwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvcC1jb25maXJtRGlhbG9nPlxuPC9kaXY+XG4iXX0=
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvcHQtZGlhbG9nL3B0LWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWRpYWxvZy9wdC1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FLYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixjQUFjLEdBQ2YsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBRXhDLDRDQUE0QztBQUM1QyxNQUFNLGFBQWEsR0FBZ0Q7SUFDakUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDdEIsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1FBQzdDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSw0QkFBNEIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1FBQ2pFLG1CQUFtQixFQUFFLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO1FBQ3RFLGtCQUFrQixFQUFFLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFO0tBQ3RFO0lBQ0QsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDdEIsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1FBQzdDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSwy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QUMsK0NDeEVsRCxteUJBd0JBOzs0RkRrRGEsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLFdBQVcsYUFHVixDQUFDLG1CQUFtQixFQUFFLGNBQWMsQ0FBQztzS0FHdkMsWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBSZW5kZXJlcjIsXG4gIEVsZW1lbnRSZWYsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb25maXJtYXRpb25TZXJ2aWNlLFxuICBDb25maXJtRXZlbnRUeXBlLFxuICBNZXNzYWdlU2VydmljZSxcbn0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRGlhbG9nQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL2RpYWxvZy1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgQnV0dG9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvYnV0dG9uLm1vZGVsJztcbmltcG9ydCB7IEljb25TdHlsZSwgVG9hc3RNZXNzYWdlIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFNldmVyaXR5RW51bSB9IGZyb20gJy4uL2VudW1zJztcblxuLy8gRGVmYXVsdCBTdHlsZXMgZm9yIERpZmZlcmVudCBEaWFsb2cgVHlwZXNcbmNvbnN0IERJQUxPR19TVFlMRVM6IFJlY29yZDxTZXZlcml0eUVudW0sIFBhcnRpYWw8RGlhbG9nQ29uZmlnPj4gPSB7XG4gIFtTZXZlcml0eUVudW0uV0FSTklOR106IHtcbiAgICBoZWFkZXI6IHsgdGV4dDogJ1dhcm5pbmcnLCBjb2xvcjogJyNkOTgzMDAnIH0sXG4gICAgY29udGVudDogeyB0ZXh0OiAnVGhpcyBpcyBhIHdhcm5pbmcgbWVzc2FnZSEnLCBjb2xvcjogJyNkOTgzMDAnIH0sXG4gICAgY29uZmlybUJ1dHRvbkNvbmZpZzogeyBiYWNrZ3JvdW5kQ29sb3I6ICcjZDk4MzAwJywgZm9udENvbG9yOiAnI2ZmZicgfSxcbiAgICBjYW5jZWxCdXR0b25Db25maWc6IHsgYmFja2dyb3VuZENvbG9yOiAnIzZjNzU3ZCcsIGZvbnRDb2xvcjogJyNmZmYnIH0sXG4gIH0sXG4gIFtTZXZlcml0eUVudW0uU1VDQ0VTU106IHtcbiAgICBoZWFkZXI6IHsgdGV4dDogJ1N1Y2Nlc3MnLCBjb2xvcjogJyMyOGE3NDUnIH0sXG4gICAgY29udGVudDogeyB0ZXh0OiAnT3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsIScsIGNvbG9yOiAnIzI4YTc0NScgfSxcbiAgICBjb25maXJtQnV0dG9uQ29uZmlnOiB7IGJhY2tncm91bmRDb2xvcjogJyMyOGE3NDUnLCBmb250Q29sb3I6ICcjZmZmJyB9LFxuICAgIGNhbmNlbEJ1dHRvbkNvbmZpZzogeyBiYWNrZ3JvdW5kQ29sb3I6ICcjNmM3NTdkJywgZm9udENvbG9yOiAnI2ZmZicgfSxcbiAgfSxcbiAgW1NldmVyaXR5RW51bS5EQU5HRVJdOiB7XG4gICAgaGVhZGVyOiB7IHRleHQ6ICdFcnJvcicsIGNvbG9yOiAnI2RjMzU0NScgfSxcbiAgICBjb250ZW50OiB7IHRleHQ6ICdBbiBlcnJvciBvY2N1cnJlZCEnLCBjb2xvcjogJyNkYzM1NDUnIH0sXG4gICAgY29uZmlybUJ1dHRvbkNvbmZpZzogeyBiYWNrZ3JvdW5kQ29sb3I6ICcjZGMzNTQ1JywgZm9udENvbG9yOiAnI2ZmZicgfSxcbiAgICBjYW5jZWxCdXR0b25Db25maWc6IHsgYmFja2dyb3VuZENvbG9yOiAnIzZjNzU3ZCcsIGZvbnRDb2xvcjogJyNmZmYnIH0sXG4gIH0sXG4gIFtTZXZlcml0eUVudW0uSU5GT106IHtcbiAgICBoZWFkZXI6IHsgdGV4dDogJ0luZm9ybWF0aW9uJywgY29sb3I6ICcjMDA3YmZmJyB9LFxuICAgIGNvbnRlbnQ6IHsgdGV4dDogJ0hlcmUgaXMgc29tZSBpbXBvcnRhbnQgaW5mb3JtYXRpb24uJywgY29sb3I6ICcjMDA3YmZmJyB9LFxuICAgIGNvbmZpcm1CdXR0b25Db25maWc6IHsgYmFja2dyb3VuZENvbG9yOiAnIzAwN2JmZicsIGZvbnRDb2xvcjogJyNmZmYnIH0sXG4gICAgY2FuY2VsQnV0dG9uQ29uZmlnOiB7IGJhY2tncm91bmRDb2xvcjogJyM2Yzc1N2QnLCBmb250Q29sb3I6ICcjZmZmJyB9LFxuICB9LFxufTtcblxuLy8gQ2VudHJhbGl6ZWQgRGVmYXVsdCBWYWx1ZXNcbmNvbnN0IERFRkFVTFRfRElBTE9HX0NPTkZJRzogRGlhbG9nQ29uZmlnID0ge1xuICBoZWFkZXI6IHsgdGV4dDogJ0NvbmZpcm1hdGlvbicgfSxcbiAgdmlzaWJsZTogZmFsc2UsXG4gIHdpZHRoOiAnNDAwcHgnLFxuICBoZWlnaHQ6ICdhdXRvJyxcbiAgY29udGVudDogJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JyxcbiAgY29uZmlybUJ1dHRvbkNvbmZpZzoge1xuICAgIGxhYmVsOiAnQ29uZmlybScsXG4gICAgZm9udENvbG9yOiAnI2ZmZicsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnIzAwN2JmZicsXG4gIH0sXG4gIGNhbmNlbEJ1dHRvbkNvbmZpZzoge1xuICAgIGxhYmVsOiAnQ2FuY2VsJyxcbiAgICBmb250Q29sb3I6ICcjZmZmJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjNmM3NTdkJyxcbiAgfSxcbiAgZGlhbG9nU3R5bGU6IFNldmVyaXR5RW51bS5JTkZPLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3B0LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LWRpYWxvZy5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW0NvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgUFREaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBkaWFsb2dDb25maWc6IERpYWxvZ0NvbmZpZyA9IHsgLi4uREVGQVVMVF9ESUFMT0dfQ09ORklHIH07XG4gIEBPdXRwdXQoKSBjb25maXJtOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjYW5jZWw6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZGlhbG9nQ29uZmlnJ10pIHtcbiAgICAgIGlmIChcbiAgICAgICAgY2hhbmdlc1snZGlhbG9nQ29uZmlnJ10uY3VycmVudFZhbHVlPy5kaWFsb2dTdHlsZSAhPT1cbiAgICAgICAgY2hhbmdlc1snZGlhbG9nQ29uZmlnJ10ucHJldmlvdXNWYWx1ZT8uZGlhbG9nU3R5bGVcbiAgICAgICkge1xuICAgICAgICB0aGlzLmFwcGx5RGlhbG9nU3R5bGUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGlhbG9nQ29uZmlnLnZpc2libGUpIHtcbiAgICAgICAgdGhpcy5zaG93RGlhbG9nKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURpYWxvZ1N0eWxlKCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1N0eWxlID0gdGhpcy5kaWFsb2dDb25maWcuZGlhbG9nU3R5bGUgfHwgU2V2ZXJpdHlFbnVtLklORk87IC8vIOKchSBFbnN1cmUgZGlhbG9nU3R5bGUgaXMgYWx3YXlzIGRlZmluZWRcbiAgICBjb25zdCBzdHlsZUNvbmZpZyA9IERJQUxPR19TVFlMRVNbZGlhbG9nU3R5bGVdIHx8IHt9OyAvLyDinIUgR2V0IHRoZSBzdHlsZXMgZm9yIHRoZSBzZWxlY3RlZCBkaWFsb2dTdHlsZVxuXG4gICAgdGhpcy5kaWFsb2dDb25maWcgPSB7XG4gICAgICAuLi5ERUZBVUxUX0RJQUxPR19DT05GSUcsIC8vIOKchSBTdGFydCB3aXRoIHRoZSBkZWZhdWx0IHZhbHVlc1xuICAgICAgLi4uc3R5bGVDb25maWcsIC8vIOKchSBPdmVycmlkZSB3aXRoIHRoZSBzZWxlY3RlZCBkaWFsb2dTdHlsZSB2YWx1ZXNcbiAgICAgIGNvbmZpcm1CdXR0b25Db25maWc6IHtcbiAgICAgICAgLi4uREVGQVVMVF9ESUFMT0dfQ09ORklHLmNvbmZpcm1CdXR0b25Db25maWcsIC8vIOKchSBTdGFydCB3aXRoIGRlZmF1bHQgY29uZmlybSBidXR0b24gc3R5bGVzXG4gICAgICAgIC4uLnN0eWxlQ29uZmlnLmNvbmZpcm1CdXR0b25Db25maWcsIC8vIOKchSBPdmVycmlkZSB3aXRoIHRoZSBjb25maXJtIGJ1dHRvbiBzdHlsZXMgZm9yIHRoZSBzZWxlY3RlZCBkaWFsb2dTdHlsZVxuICAgICAgfSxcbiAgICAgIGNhbmNlbEJ1dHRvbkNvbmZpZzoge1xuICAgICAgICAuLi5ERUZBVUxUX0RJQUxPR19DT05GSUcuY2FuY2VsQnV0dG9uQ29uZmlnLCAvLyDinIUgU3RhcnQgd2l0aCBkZWZhdWx0IGNhbmNlbCBidXR0b24gc3R5bGVzXG4gICAgICAgIC4uLnN0eWxlQ29uZmlnLmNhbmNlbEJ1dHRvbkNvbmZpZywgLy8g4pyFIE92ZXJyaWRlIHdpdGggdGhlIGNhbmNlbCBidXR0b24gc3R5bGVzIGZvciB0aGUgc2VsZWN0ZWQgZGlhbG9nU3R5bGVcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHNob3dEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgaGVhZGVyOiB0aGlzLmdldERpYWxvZ0hlYWRlclRleHQoKSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMuZ2V0RGlhbG9nQ29udGVudFRleHQoKSxcbiAgICAgIGFjY2VwdExhYmVsOiB0aGlzLmRpYWxvZ0NvbmZpZy5jb25maXJtQnV0dG9uQ29uZmlnPy5sYWJlbCB8fCAnQ29uZmlybScsXG4gICAgICByZWplY3RMYWJlbDogdGhpcy5kaWFsb2dDb25maWcuY2FuY2VsQnV0dG9uQ29uZmlnPy5sYWJlbCB8fCAnQ2FuY2VsJyxcbiAgICAgIGFjY2VwdEJ1dHRvblN0eWxlQ2xhc3M6IHRoaXMuZ2V0QnV0dG9uU3R5bGUoXG4gICAgICAgIHRoaXMuZGlhbG9nQ29uZmlnLmNvbmZpcm1CdXR0b25Db25maWcsXG4gICAgICAgIHRydWVcbiAgICAgICksXG4gICAgICByZWplY3RCdXR0b25TdHlsZUNsYXNzOiB0aGlzLmdldEJ1dHRvblN0eWxlKFxuICAgICAgICB0aGlzLmRpYWxvZ0NvbmZpZy5jYW5jZWxCdXR0b25Db25maWcsXG4gICAgICAgIGZhbHNlXG4gICAgICApLFxuICAgICAgYWNjZXB0SWNvbjogdGhpcy5kaWFsb2dDb25maWcuY29uZmlybUJ1dHRvbkNvbmZpZz8uaWNvbiB8fCAncGkgcGktY2hlY2snLFxuICAgICAgcmVqZWN0SWNvbjogdGhpcy5kaWFsb2dDb25maWcuY2FuY2VsQnV0dG9uQ29uZmlnPy5pY29uIHx8ICdwaSBwaS10aW1lcycsXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb25maXJtLmVtaXQoKTtcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nQ29uZmlnLnRvYXN0T25Db25maXJtKSB7XG4gICAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy5kaWFsb2dDb25maWcudG9hc3RPbkNvbmZpcm0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVqZWN0OiAodHlwZTogQ29uZmlybUV2ZW50VHlwZSkgPT4ge1xuICAgICAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0eXBlID09PSBDb25maXJtRXZlbnRUeXBlLlJFSkVDVCAmJlxuICAgICAgICAgIHRoaXMuZGlhbG9nQ29uZmlnLnRvYXN0T25DYW5jZWxcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy5kaWFsb2dDb25maWcudG9hc3RPbkNhbmNlbCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBVc2UgcmVuZGVyZXIgdG8gYXBwbHkgZHluYW1pYyBzdHlsZXNcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRpYWxvZ0VsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnAtZGlhbG9nJyk7XG4gICAgICBpZiAoZGlhbG9nRWxlbWVudCkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgIGRpYWxvZ0VsZW1lbnQsXG4gICAgICAgICAgJ3dpZHRoJyxcbiAgICAgICAgICB0aGlzLmRpYWxvZ0NvbmZpZy53aWR0aCB8fCAnNDAwcHgnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgZGlhbG9nRWxlbWVudCxcbiAgICAgICAgICAnaGVpZ2h0JyxcbiAgICAgICAgICB0aGlzLmRpYWxvZ0NvbmZpZy5oZWlnaHQgfHwgJ2F1dG8nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHNob3dUb2FzdCh0b2FzdD86IFRvYXN0TWVzc2FnZSkge1xuICAgIGlmICh0b2FzdCkge1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xuICAgICAgICBzZXZlcml0eTogdG9hc3Quc2V2ZXJpdHksXG4gICAgICAgIHN1bW1hcnk6IHRvYXN0LnN1bW1hcnksXG4gICAgICAgIGRldGFpbDogdG9hc3QuZGV0YWlsLFxuICAgICAgICBsaWZlOiB0b2FzdC5saWZlIHx8IDMwMDAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEJ1dHRvblN0eWxlKFxuICAgIGJ1dHRvbkNvbmZpZz86IEJ1dHRvbk1vZGVsLFxuICAgIGlzQ29uZmlybTogYm9vbGVhbiA9IGZhbHNlXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IHN0eWxlQ2xhc3MgPSBidXR0b25Db25maWc/LnN0eWxlQ2xhc3MgPz8gJ3AtYnV0dG9uLXNtJzsgLy8g4pyFIERlZmF1bHQgYnV0dG9uIHNpemVcblxuICAgIC8vIOKchSBBcHBseSB3aWR0aCBkeW5hbWljYWxseSBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gMTAwJVxuICAgIGNvbnN0IGJ1dHRvbldpZHRoID0gYnV0dG9uQ29uZmlnPy53aWR0aCA/PyAnMTAwJSc7XG5cbiAgICAvLyDinIUgU2V0IGRlZmF1bHQgc2V2ZXJpdHk6IFNVQ0NFU1MgZm9yIGNvbmZpcm0sIFNFQ09OREFSWSBmb3IgY2FuY2VsXG4gICAgY29uc3QgZGVmYXVsdFNldmVyaXR5ID0gaXNDb25maXJtID8gU2V2ZXJpdHlFbnVtLkRBTkdFUiA6IFNldmVyaXR5RW51bS5JTkZPO1xuICAgIGNvbnN0IHNldmVyaXR5ID0gYnV0dG9uQ29uZmlnPy5zZXZlcml0eSA/PyBkZWZhdWx0U2V2ZXJpdHk7XG5cbiAgICAvLyDinIUgQXBwbHkgc2V2ZXJpdHktYmFzZWQgc3R5bGVzIG9ubHkgaWYgbm8gY3VzdG9tIGJhY2tncm91bmQgY29sb3IgaXMgc2V0XG4gICAgaWYgKCFidXR0b25Db25maWc/LmJhY2tncm91bmRDb2xvcikge1xuICAgICAgc3dpdGNoIChzZXZlcml0eSkge1xuICAgICAgICBjYXNlIFNldmVyaXR5RW51bS5XQVJOSU5HOlxuICAgICAgICAgIHN0eWxlQ2xhc3MgKz0gJyBwLWJ1dHRvbi13YXJuaW5nJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBTZXZlcml0eUVudW0uREFOR0VSOlxuICAgICAgICAgIHN0eWxlQ2xhc3MgKz0gJyBwLWJ1dHRvbi1kYW5nZXInO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFNldmVyaXR5RW51bS5TVUNDRVNTOlxuICAgICAgICAgIHN0eWxlQ2xhc3MgKz0gJyBwLWJ1dHRvbi1zdWNjZXNzJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBTZXZlcml0eUVudW0uSU5GTzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBzdHlsZUNsYXNzICs9ICcgcC1idXR0b24tc2Vjb25kYXJ5JztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYCR7c3R5bGVDbGFzcy50cmltKCl9IHdpZHRoLSR7YnV0dG9uV2lkdGgucmVwbGFjZSgnJScsICcnKX1gO1xuICB9XG5cbiAgZ2V0RGlhbG9nSGVhZGVyVGV4dCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhlYWRlciA9IHRoaXMuZGlhbG9nQ29uZmlnLmhlYWRlcjtcbiAgICBjb25zdCBkaWFsb2dTdHlsZSA9IHRoaXMuZGlhbG9nQ29uZmlnLmRpYWxvZ1N0eWxlID8/IFNldmVyaXR5RW51bS5JTkZPO1xuICAgIGNvbnN0IHN0eWxlSGVhZGVyID0gRElBTE9HX1NUWUxFU1tkaWFsb2dTdHlsZV0/LmhlYWRlcjtcblxuICAgIHJldHVybiB0eXBlb2YgaGVhZGVyID09PSAnb2JqZWN0JyAmJiBoZWFkZXIgIT09IG51bGwgJiYgJ3RleHQnIGluIGhlYWRlclxuICAgICAgPyBoZWFkZXIudGV4dFxuICAgICAgOiB0eXBlb2YgaGVhZGVyID09PSAnc3RyaW5nJ1xuICAgICAgPyBoZWFkZXJcbiAgICAgIDogdHlwZW9mIHN0eWxlSGVhZGVyID09PSAnb2JqZWN0JyAmJlxuICAgICAgICBzdHlsZUhlYWRlciAhPT0gbnVsbCAmJlxuICAgICAgICAndGV4dCcgaW4gc3R5bGVIZWFkZXJcbiAgICAgID8gc3R5bGVIZWFkZXIudGV4dFxuICAgICAgOiAnQ29uZmlybWF0aW9uJzsgLy8g4pyFIERlZmF1bHQgdmFsdWVcbiAgfVxuXG4gIGdldERpYWxvZ0hlYWRlclN0eWxlKCk6IGFueSB7XG4gICAgY29uc3QgaGVhZGVyID0gdGhpcy5kaWFsb2dDb25maWcuaGVhZGVyO1xuICAgIGNvbnN0IGRpYWxvZ1N0eWxlID0gdGhpcy5kaWFsb2dDb25maWcuZGlhbG9nU3R5bGUgPz8gU2V2ZXJpdHlFbnVtLklORk87IC8vIOKchSBFbnN1cmUgZGlhbG9nU3R5bGUgaXMgYWx3YXlzIGRlZmluZWRcbiAgICBjb25zdCBzdHlsZUhlYWRlciA9IERJQUxPR19TVFlMRVNbZGlhbG9nU3R5bGVdPy5oZWFkZXI7IC8vIOKchSBTdG9yZSB0aGUgc3R5bGUgaGVhZGVyIHNlcGFyYXRlbHlcblxuICAgIHJldHVybiB0eXBlb2YgaGVhZGVyID09PSAnb2JqZWN0JyAmJiBoZWFkZXIgIT09IG51bGxcbiAgICAgID8ge1xuICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgaGVhZGVyLmNvbG9yIHx8XG4gICAgICAgICAgICAodHlwZW9mIHN0eWxlSGVhZGVyID09PSAnb2JqZWN0JyA/IHN0eWxlSGVhZGVyPy5jb2xvciA6ICcjMzMzJyksXG4gICAgICAgICAgZm9udFNpemU6IGhlYWRlci5mb250U2l6ZSB8fCAnMjVweCcsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGNvbG9yOiB0eXBlb2Ygc3R5bGVIZWFkZXIgPT09ICdvYmplY3QnID8gc3R5bGVIZWFkZXI/LmNvbG9yIDogJyMzMzMnLFxuICAgICAgICAgIGZvbnRTaXplOiAnMjVweCcsXG4gICAgICAgIH07XG4gIH1cblxuICBnZXREaWFsb2dJY29uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBoZWFkZXIgPSB0aGlzLmRpYWxvZ0NvbmZpZy5oZWFkZXI7XG4gICAgY29uc3QgZGlhbG9nU3R5bGUgPSB0aGlzLmRpYWxvZ0NvbmZpZy5kaWFsb2dTdHlsZSA/PyBTZXZlcml0eUVudW0uSU5GTzsgLy8g4pyFIEVuc3VyZSBkaWFsb2dTdHlsZSBpcyBhbHdheXMgZGVmaW5lZFxuICAgIGNvbnN0IHN0eWxlSGVhZGVyID0gRElBTE9HX1NUWUxFU1tkaWFsb2dTdHlsZV0/LmhlYWRlcjsgLy8g4pyFIFN0b3JlIHRoZSBzdHlsZSBoZWFkZXIgc2VwYXJhdGVseVxuXG4gICAgLy8g4pyFIEVuc3VyZSBoZWFkZXIuaWNvbiBleGlzdHMgYW5kIGlzIGFuIG9iamVjdCBiZWZvcmUgYWNjZXNzaW5nIC5jb2RlXG4gICAgY29uc3QgaWNvbiA9XG4gICAgICB0eXBlb2YgaGVhZGVyID09PSAnb2JqZWN0JyAmJiBoZWFkZXIgIT09IG51bGwgJiYgJ2ljb24nIGluIGhlYWRlclxuICAgICAgICA/IGhlYWRlci5pY29uXG4gICAgICAgIDogdHlwZW9mIHN0eWxlSGVhZGVyID09PSAnb2JqZWN0JyAmJiAnaWNvbicgaW4gc3R5bGVIZWFkZXJcbiAgICAgICAgPyBzdHlsZUhlYWRlci5pY29uXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgLy8g4pyFIElmIGBpY29uYCBpcyBhbiBvYmplY3QsIGV4dHJhY3QgYC5jb2RlYCwgb3RoZXJ3aXNlIHJldHVybiBhcyBzdHJpbmcgb3IgZGVmYXVsdCB2YWx1ZVxuICAgIHJldHVybiB0eXBlb2YgaWNvbiA9PT0gJ3N0cmluZydcbiAgICAgID8gaWNvblxuICAgICAgOiAoaWNvbiBhcyBJY29uU3R5bGUpPy5jb2RlIHx8ICdwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGUnO1xuICB9XG5cbiAgZ2V0RGlhbG9nSWNvblN0eWxlKCk6IGFueSB7XG4gICAgY29uc3QgaGVhZGVyID0gdGhpcy5kaWFsb2dDb25maWcuaGVhZGVyO1xuICAgIGNvbnN0IGRpYWxvZ1N0eWxlID0gdGhpcy5kaWFsb2dDb25maWcuZGlhbG9nU3R5bGUgPz8gU2V2ZXJpdHlFbnVtLklORk87XG4gICAgY29uc3Qgc3R5bGVIZWFkZXIgPSBESUFMT0dfU1RZTEVTW2RpYWxvZ1N0eWxlXT8uaGVhZGVyO1xuXG4gICAgY29uc3QgaWNvbjogSWNvblN0eWxlIHwgdW5kZWZpbmVkID1cbiAgICAgIHR5cGVvZiBoZWFkZXIgPT09ICdvYmplY3QnICYmIGhlYWRlciAhPT0gbnVsbCAmJiAnaWNvbicgaW4gaGVhZGVyXG4gICAgICAgID8gKGhlYWRlci5pY29uIGFzIEljb25TdHlsZSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6XG4gICAgICAgIGljb24/LmNvbG9yIHx8XG4gICAgICAgICh0eXBlb2Ygc3R5bGVIZWFkZXIgPT09ICdvYmplY3QnID8gc3R5bGVIZWFkZXI/LmNvbG9yIDogJyNmMzljMTInKSxcbiAgICAgIGZvbnRTaXplOiBpY29uPy5mb250U2l6ZSB8fCAnMS41cmVtJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogaWNvbj8uYmFja2dyb3VuZENvbG9yIHx8ICd0cmFuc3BhcmVudCcsXG4gICAgICBib3JkZXJSYWRpdXM6IGljb24/LnNoYXBlID09PSAnY2lyY3VsYXInID8gJzUwJScgOiAnNHB4JyxcbiAgICAgIHBhZGRpbmc6ICc1cHgnLFxuICAgIH07XG4gIH1cblxuICBnZXREaWFsb2dDb250ZW50VGV4dCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmRpYWxvZ0NvbmZpZy5jb250ZW50O1xuICAgIGNvbnN0IGRpYWxvZ1N0eWxlID0gdGhpcy5kaWFsb2dDb25maWcuZGlhbG9nU3R5bGUgPz8gU2V2ZXJpdHlFbnVtLklORk87XG4gICAgY29uc3Qgc3R5bGVDb250ZW50ID0gRElBTE9HX1NUWUxFU1tkaWFsb2dTdHlsZV0/LmNvbnRlbnQ7XG5cbiAgICByZXR1cm4gdHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnXG4gICAgICA/IGNvbnRlbnRcbiAgICAgIDogY29udGVudD8udGV4dCB8fFxuICAgICAgICAgICh0eXBlb2Ygc3R5bGVDb250ZW50ID09PSAnb2JqZWN0J1xuICAgICAgICAgICAgPyBzdHlsZUNvbnRlbnQ/LnRleHRcbiAgICAgICAgICAgIDogJ0FyZSB5b3Ugc3VyZT8nKTtcbiAgfVxuXG4gIGdldERpYWxvZ0NvbnRlbnRTdHlsZSgpOiBhbnkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmRpYWxvZ0NvbmZpZy5jb250ZW50O1xuICAgIGNvbnN0IGRpYWxvZ1N0eWxlID0gdGhpcy5kaWFsb2dDb25maWcuZGlhbG9nU3R5bGUgPz8gU2V2ZXJpdHlFbnVtLklORk87XG4gICAgY29uc3Qgc3R5bGVDb250ZW50ID0gRElBTE9HX1NUWUxFU1tkaWFsb2dTdHlsZV0/LmNvbnRlbnQ7XG5cbiAgICByZXR1cm4gdHlwZW9mIGNvbnRlbnQgPT09ICdvYmplY3QnICYmIGNvbnRlbnQgIT09IG51bGxcbiAgICAgID8ge1xuICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgY29udGVudC5jb2xvciB8fFxuICAgICAgICAgICAgKHR5cGVvZiBzdHlsZUNvbnRlbnQgPT09ICdvYmplY3QnID8gc3R5bGVDb250ZW50Py5jb2xvciA6ICcjMzMzJyksXG4gICAgICAgICAgZm9udFNpemU6IGNvbnRlbnQuZm9udFNpemUgfHwgJzIwcHgnLFxuICAgICAgICAgIHRleHRBbGlnbjogY29udGVudC5wb3NpdGlvbiB8fCAnbGVmdCcsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgdHlwZW9mIHN0eWxlQ29udGVudCA9PT0gJ29iamVjdCcgPyBzdHlsZUNvbnRlbnQ/LmNvbG9yIDogJyMzMzMnLFxuICAgICAgICAgIGZvbnRTaXplOiAnMjBweCcsXG4gICAgICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwdC1kaWFsb2dcIj5cbiAgPHAtdG9hc3Q+PC9wLXRvYXN0PlxuICA8cC1jb25maXJtRGlhbG9nPlxuICAgIDwhLS0gSGVhZGVyIHdpdGggSWNvbiBhbmQgVGl0bGUgYWxpZ25lZCBob3Jpem9udGFsbHkgLS0+XG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWhlYWRlciBib3JkZXJlZC1zZWN0aW9uXCI+XG4gICAgICAgIDxpIFtjbGFzc109XCJnZXREaWFsb2dJY29uQ2xhc3MoKVwiIFtuZ1N0eWxlXT1cImdldERpYWxvZ0ljb25TdHlsZSgpXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBvcHVwLXRpdGxlXCIgW25nU3R5bGVdPVwiZ2V0RGlhbG9nSGVhZGVyU3R5bGUoKVwiPlxuICAgICAgICAgIHt7IGdldERpYWxvZ0hlYWRlclRleHQoKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBNZXNzYWdlIENvbnRlbnQgd2l0aCBEaXZpZGVyIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJtZXNzYWdlXCIgbGV0LW1lc3NhZ2U+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicG9wdXAtY29udGVudCBib3JkZXJlZC1zZWN0aW9uXCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0RGlhbG9nQ29udGVudFN0eWxlKClcIlxuICAgICAgPlxuICAgICAgICA8cD57eyBnZXREaWFsb2dDb250ZW50VGV4dCgpIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLWNvbmZpcm1EaWFsb2c+XG48L2Rpdj5cbiJdfQ==
@@ -17,6 +17,7 @@ export * from './lib/pt-metric-card';
17
17
  export * from './lib/pt-metric-card-group';
18
18
  // Chart
19
19
  export * from './lib/pt-chart';
20
+ export * from './lib/pt-chart-comparison';
20
21
  export * from './lib/pt-line-chart';
21
22
  // Cards
22
23
  export * from './lib/pt-card';
@@ -44,4 +45,4 @@ export * from './lib/models';
44
45
  export * from './lib/enums';
45
46
  export * from './lib/types';
46
47
  export * from './lib/pt-group';
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFFNUMsaUJBQWlCO0FBQ2pCLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxTQUFTO0FBQ1QsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBRXBDLFlBQVk7QUFDWixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxRQUFRO0FBQ1IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLHFCQUFxQixDQUFDO0FBRXBDLFFBQVE7QUFDUixjQUFjLGVBQWUsQ0FBQztBQUU5QixPQUFPO0FBQ1AsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxTQUFTO0FBQ1QsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxTQUFTO0FBQ1QsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxnQkFBZ0I7QUFDaEIsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxTQUFTO0FBQ1QsY0FBYyxpQkFBaUIsQ0FBQztBQUVoQyxjQUFjO0FBQ2QsY0FBYyxzQkFBc0IsQ0FBQztBQUVyQyxhQUFhO0FBQ2IsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxTQUFTO0FBQ1QsY0FBYyxpQkFBaUIsQ0FBQztBQUVoQyxTQUFTO0FBQ1QsY0FBYyxpQkFBaUIsQ0FBQztBQUVoQyxVQUFVO0FBQ1YsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL25nLXByaW1lLXRvb2xzLm1vZHVsZSc7XG5cbi8vIEFkdmFuY2VkIHRhYmxlXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1hZHZhbmNlZC1wcmltZS10YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tdWx0aS1zZWFyY2gtY3JpdGVyaWEnO1xuXG4vLyBJbnB1dHNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LWNoZWNrLWJveC1pbnB1dCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1kYXRlLWlucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LWRyb3Bkb3duJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LWZvcm0tYnVpbGRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1udW1iZXItaW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtc3dpdGNoLWlucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LXRleHQtYXJlYS1pbnB1dCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC10ZXh0LWlucHV0JztcblxuLy8gRGFzaGJvYXJkXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1tZXRyaWMtcGFuZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtbWV0cmljLWNhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtbWV0cmljLWNhcmQtZ3JvdXAnO1xuXG4vLyBDaGFydFxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtY2hhcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtbGluZS1jaGFydCc7XG5cbi8vIENhcmRzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1jYXJkJztcblxuLy8gTWVudVxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtbWVudSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1tZW51LWZhbmN5JztcblxuLy8gTmF2YmFyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1uYXYtYmFyLW1lbnUnO1xuXG4vLyBOYXZiYXJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LXNpZGUtYmFyLW1lbnUnO1xuXG4vLyBQYWdlIHNrZWxldG9uXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1wYWdlLXNrZWxldG9uJztcblxuLy8gZm9vdGVyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1mb290ZXInO1xuXG4vLyBicmVhZCBjcnVtYlxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtYnJlYWQtY3J1bWInO1xuXG4vLyBsb2dpbiBwYWdlXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1sb2dpbi1wYWdlJztcblxuLy8gYnV0dG9uXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1idXR0b24nO1xuXG4vLyBkaWFsb2dcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LWRpYWxvZyc7XG5cbi8vIEdlbmVyaWNcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnVtcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1ncm91cCc7XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFFNUMsaUJBQWlCO0FBQ2pCLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxTQUFTO0FBQ1QsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHFCQUFxQixDQUFDO0FBRXBDLFlBQVk7QUFDWixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxRQUFRO0FBQ1IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMscUJBQXFCLENBQUM7QUFFcEMsUUFBUTtBQUNSLGNBQWMsZUFBZSxDQUFDO0FBRTlCLE9BQU87QUFDUCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHFCQUFxQixDQUFDO0FBRXBDLFNBQVM7QUFDVCxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLFNBQVM7QUFDVCxjQUFjLHdCQUF3QixDQUFDO0FBRXZDLGdCQUFnQjtBQUNoQixjQUFjLHdCQUF3QixDQUFDO0FBRXZDLFNBQVM7QUFDVCxjQUFjLGlCQUFpQixDQUFDO0FBRWhDLGNBQWM7QUFDZCxjQUFjLHNCQUFzQixDQUFDO0FBRXJDLGFBQWE7QUFDYixjQUFjLHFCQUFxQixDQUFDO0FBRXBDLFNBQVM7QUFDVCxjQUFjLGlCQUFpQixDQUFDO0FBRWhDLFNBQVM7QUFDVCxjQUFjLGlCQUFpQixDQUFDO0FBRWhDLFVBQVU7QUFDVixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvbmctcHJpbWUtdG9vbHMubW9kdWxlJztcblxuLy8gQWR2YW5jZWQgdGFibGVcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LWFkdmFuY2VkLXByaW1lLXRhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL211bHRpLXNlYXJjaC1jcml0ZXJpYSc7XG5cbi8vIElucHV0c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtY2hlY2stYm94LWlucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LWRhdGUtaW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtZHJvcGRvd24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtZm9ybS1idWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LW51bWJlci1pbnB1dCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1zd2l0Y2gtaW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtdGV4dC1hcmVhLWlucHV0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LXRleHQtaW5wdXQnO1xuXG4vLyBEYXNoYm9hcmRcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LW1ldHJpYy1wYW5lbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1tZXRyaWMtY2FyZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1tZXRyaWMtY2FyZC1ncm91cCc7XG5cbi8vIENoYXJ0XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1jaGFydCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1jaGFydC1jb21wYXJpc29uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LWxpbmUtY2hhcnQnO1xuXG4vLyBDYXJkc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtY2FyZCc7XG5cbi8vIE1lbnVcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LW1lbnUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtbWVudS1mYW5jeSc7XG5cbi8vIE5hdmJhclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtbmF2LWJhci1tZW51JztcblxuLy8gTmF2YmFyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1zaWRlLWJhci1tZW51JztcblxuLy8gUGFnZSBza2VsZXRvblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtcGFnZS1za2VsZXRvbic7XG5cbi8vIGZvb3RlclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtZm9vdGVyJztcblxuLy8gYnJlYWQgY3J1bWJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3B0LWJyZWFkLWNydW1iJztcblxuLy8gbG9naW4gcGFnZVxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtbG9naW4tcGFnZSc7XG5cbi8vIGJ1dHRvblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtYnV0dG9uJztcblxuLy8gZGlhbG9nXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wdC1kaWFsb2cnO1xuXG4vLyBHZW5lcmljXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZW51bXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHQtZ3JvdXAnO1xuIl19