@huntsman-cancer-institute/dialog 12.11.9-SNAPSHOT

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 (53) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +24 -0
  3. package/alert/alert-dialog.component.d.ts +31 -0
  4. package/bundles/huntsman-cancer-institute-dialog.umd.js +1049 -0
  5. package/bundles/huntsman-cancer-institute-dialog.umd.js.map +1 -0
  6. package/bundles/huntsman-cancer-institute-dialog.umd.min.js +2 -0
  7. package/bundles/huntsman-cancer-institute-dialog.umd.min.js.map +1 -0
  8. package/confirm/confirm-dialog.component.d.ts +18 -0
  9. package/custom/custom-dialog.component.d.ts +35 -0
  10. package/dialog.module.d.ts +27 -0
  11. package/esm2015/alert/alert-dialog.component.js +243 -0
  12. package/esm2015/confirm/confirm-dialog.component.js +130 -0
  13. package/esm2015/custom/custom-dialog.component.js +231 -0
  14. package/esm2015/dialog.module.js +157 -0
  15. package/esm2015/generic/generic-container-dialog.component.js +158 -0
  16. package/esm2015/huntsman-cancer-institute-dialog.js +5 -0
  17. package/esm2015/index.js +13 -0
  18. package/esm2015/model/base-generic-container-dialog.js +26 -0
  19. package/esm2015/model/confirm-type.model.js +12 -0
  20. package/esm2015/model/dialog-type.model.js +12 -0
  21. package/esm2015/model/generic-dialog-action.model.js +6 -0
  22. package/esm2015/save-footer/save-footer.component.js +135 -0
  23. package/esm2015/service/dialog.service.js +272 -0
  24. package/esm2015/spinner/spinner-dialog.component.js +69 -0
  25. package/esm5/alert/alert-dialog.component.js +105 -0
  26. package/esm5/confirm/confirm-dialog.component.js +101 -0
  27. package/esm5/custom/custom-dialog.component.js +118 -0
  28. package/esm5/dialog.module.js +161 -0
  29. package/esm5/generic/generic-container-dialog.component.js +128 -0
  30. package/esm5/huntsman-cancer-institute-dialog.js +5 -0
  31. package/esm5/index.js +13 -0
  32. package/esm5/model/base-generic-container-dialog.js +28 -0
  33. package/esm5/model/confirm-type.model.js +12 -0
  34. package/esm5/model/dialog-type.model.js +12 -0
  35. package/esm5/model/generic-dialog-action.model.js +6 -0
  36. package/esm5/save-footer/save-footer.component.js +86 -0
  37. package/esm5/service/dialog.service.js +307 -0
  38. package/esm5/spinner/spinner-dialog.component.js +47 -0
  39. package/fesm2015/huntsman-cancer-institute-dialog.js +1396 -0
  40. package/fesm2015/huntsman-cancer-institute-dialog.js.map +1 -0
  41. package/fesm5/huntsman-cancer-institute-dialog.js +1047 -0
  42. package/fesm5/huntsman-cancer-institute-dialog.js.map +1 -0
  43. package/generic/generic-container-dialog.component.d.ts +38 -0
  44. package/huntsman-cancer-institute-dialog.d.ts +5 -0
  45. package/index.d.ts +14 -0
  46. package/model/base-generic-container-dialog.d.ts +13 -0
  47. package/model/confirm-type.model.d.ts +10 -0
  48. package/model/dialog-type.model.d.ts +10 -0
  49. package/model/generic-dialog-action.model.d.ts +18 -0
  50. package/package.json +34 -0
  51. package/save-footer/save-footer.component.d.ts +24 -0
  52. package/service/dialog.service.d.ts +45 -0
  53. package/spinner/spinner-dialog.component.d.ts +12 -0
@@ -0,0 +1,307 @@
1
+ var __values = (this && this.__values) || function(o) {
2
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
3
+ if (m) return m.call(o);
4
+ if (o && typeof o.length === "number") return {
5
+ next: function () {
6
+ if (o && i >= o.length) o = void 0;
7
+ return { value: o && o[i++], done: !o };
8
+ }
9
+ };
10
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
11
+ };
12
+ import { Injectable } from '@angular/core';
13
+ import { MatDialog, MatDialogConfig } from '@angular/material/dialog';
14
+ import { AlertDialogComponent } from '../alert/alert-dialog.component';
15
+ import { SpinnerDialogComponent } from '../spinner/spinner-dialog.component';
16
+ import { CustomDialogComponent } from '../custom/custom-dialog.component';
17
+ import { GenericContainerDialogComponent } from '../generic/generic-container-dialog.component';
18
+ import { ActionType } from '../model/generic-dialog-action.model';
19
+ import { DialogType } from '../model/dialog-type.model';
20
+ import { ConfirmType } from '../model/confirm-type.model';
21
+ import { ConfirmDialogComponent } from '../confirm/confirm-dialog.component';
22
+ import * as i0 from "@angular/core";
23
+ import * as i1 from "@angular/material/dialog";
24
+ var DialogService = /** @class */ (function () {
25
+ function DialogService(dialog) {
26
+ this.dialog = dialog;
27
+ this._spinnerDialogIsOpen = false;
28
+ this.spinnerWorkItemCount = 0;
29
+ this.checkingSpinnerWorkItems = false;
30
+ this.spinnerDialogRefs = [];
31
+ }
32
+ Object.defineProperty(DialogService.prototype, "spinnerDialogIsOpen", {
33
+ get: function () {
34
+ return this._spinnerDialogIsOpen;
35
+ },
36
+ enumerable: false,
37
+ configurable: true
38
+ });
39
+ DialogService.prototype.alert = function (message, title, dialogType, icon, config) {
40
+ return this.openDialog(message, title, dialogType ? dialogType : DialogType.ALERT, icon, config);
41
+ };
42
+ DialogService.prototype.confirm = function (message, title, icon, config) {
43
+ return this.openDialog(message, title, DialogType.CONFIRM, icon, config);
44
+ };
45
+ /**
46
+ * Creates a ConfirmDialogComponent with different display depending on
47
+ * the ConfirmType.
48
+ * @param title defaults to 'Confirm'
49
+ * @param icon defaults to 'fa fa-info-circle'
50
+ * @param config config.data can contain a prompt, message1 and/or
51
+ * message2 according to the ConfirmType chosen
52
+ * @param actionConfig sets up the dialog buttons and actions if you want
53
+ * to override the defaults
54
+ */
55
+ DialogService.prototype.confirmByType = function (confirmType, title, icon, config, actionConfig) {
56
+ if (!title) {
57
+ title = 'Confirm';
58
+ }
59
+ if (!icon) {
60
+ icon = 'fa fa-info-circle';
61
+ }
62
+ // set up a default if needed
63
+ if (!config) {
64
+ config = new MatDialogConfig();
65
+ config.width = '33vw';
66
+ config.minWidth = '300px';
67
+ config.disableClose = true;
68
+ }
69
+ if (config.data) {
70
+ config.data.confirmType = confirmType;
71
+ }
72
+ else {
73
+ config.data = {
74
+ confirmType: confirmType
75
+ };
76
+ }
77
+ // if no actions passed in, set up the defaults
78
+ if (!actionConfig) {
79
+ // default actions
80
+ var primary = { type: ActionType.PRIMARY, name: 'YES',
81
+ internalAction: 'onConfirmClick', internalActionReturnValue: true };
82
+ var secondary = { type: ActionType.SECONDARY, name: 'GO BACK',
83
+ internalAction: 'onClose' };
84
+ // by enum type, setup the messages/prompt
85
+ // only two need different defaults than generic defaults
86
+ switch (confirmType) {
87
+ case ConfirmType.CONFIRM_AND_CLOSE:
88
+ primary = { type: ActionType.PRIMARY, name: 'CONFIRM AND CLOSE',
89
+ internalAction: 'onConfirmClick', internalActionReturnValue: true };
90
+ break;
91
+ case ConfirmType.ALERT:
92
+ primary = undefined;
93
+ secondary = { type: ActionType.SECONDARY, name: 'CLOSE',
94
+ internalAction: 'onClose' };
95
+ break;
96
+ // case ConfirmType.DELETE:
97
+ // case ConfirmType.DELETE_W_MESSAGE:
98
+ // case ConfirmType.DELETE_W_PROMPT:
99
+ // case ConfirmType.DISCARD:
100
+ // case ConfirmType.ADD:
101
+ // case ConfirmType.GENERIC:
102
+ default:
103
+ throw new Error('Confirm type doesn\'t exist');
104
+ }
105
+ var actions = [];
106
+ if (primary) {
107
+ actions.push(primary);
108
+ }
109
+ if (secondary) {
110
+ actions.push(secondary);
111
+ }
112
+ actionConfig = {
113
+ actions: actions
114
+ };
115
+ }
116
+ return this.genericDialogContainer(ConfirmDialogComponent, title, icon, config, actionConfig);
117
+ };
118
+ DialogService.prototype.error = function (message, title, icon, config) {
119
+ return this.openDialog(message, title, DialogType.ERROR, icon, config);
120
+ };
121
+ DialogService.prototype.info = function (message, title, icon, config) {
122
+ return this.openDialog(message, title, DialogType.INFO, icon, config);
123
+ };
124
+ DialogService.prototype.createCustomDialog = function (tempRef, context, title, icon, config, actionConfig) {
125
+ var configuration = null;
126
+ if (!config) {
127
+ configuration = new MatDialogConfig();
128
+ }
129
+ else {
130
+ configuration = config;
131
+ }
132
+ configuration.data = configuration.data ? configuration.data : {};
133
+ configuration.data.templateRef = tempRef;
134
+ configuration.data.title = title ? title : '';
135
+ configuration.data.icon = icon ? icon : '';
136
+ configuration.data.context = context;
137
+ if (actionConfig) {
138
+ configuration.data.actionConfig = actionConfig;
139
+ }
140
+ configuration.minWidth = configuration.minWidth ? configuration.minWidth : '10em';
141
+ configuration.width = configuration.width ? configuration.width : '30em';
142
+ configuration.panelClass = ['mx-sized-dialog', 'no-padding'];
143
+ configuration.disableClose = true;
144
+ configuration.hasBackdrop = true;
145
+ var dialogRef = this.dialog.open(CustomDialogComponent, configuration);
146
+ return dialogRef;
147
+ };
148
+ DialogService.prototype.startDefaultSpinnerDialog = function () {
149
+ return this.startSpinnerDialog('Please wait...', 3, 30);
150
+ };
151
+ DialogService.prototype.startSpinnerDialog = function (message, strokeWidth, diameter) {
152
+ var _this = this;
153
+ if (this._spinnerDialogIsOpen) {
154
+ return null;
155
+ }
156
+ this._spinnerDialogIsOpen = true;
157
+ var configuration = new MatDialogConfig();
158
+ configuration.data = {
159
+ message: message,
160
+ strokeWidth: strokeWidth,
161
+ diameter: diameter
162
+ };
163
+ configuration.width = '13em';
164
+ configuration.disableClose = true;
165
+ var dialogRef = this.dialog.open(SpinnerDialogComponent, configuration);
166
+ dialogRef.afterClosed().subscribe(function () {
167
+ _this._spinnerDialogIsOpen = false;
168
+ });
169
+ this.spinnerDialogRefs.push(dialogRef);
170
+ return dialogRef;
171
+ };
172
+ DialogService.prototype.startNonModalSpinnerDialog = function (message, strokeWidth, diameter) {
173
+ var _this = this;
174
+ if (this._spinnerDialogIsOpen) {
175
+ return null;
176
+ }
177
+ this._spinnerDialogIsOpen = true;
178
+ var configuration = new MatDialogConfig();
179
+ configuration.data = {
180
+ message: message,
181
+ strokeWidth: strokeWidth,
182
+ diameter: diameter
183
+ };
184
+ configuration.width = '13em';
185
+ configuration.disableClose = true;
186
+ configuration.hasBackdrop = false;
187
+ var dialogRef = this.dialog.open(SpinnerDialogComponent, configuration);
188
+ dialogRef.afterClosed().subscribe(function () {
189
+ _this._spinnerDialogIsOpen = false;
190
+ });
191
+ this.spinnerDialogRefs.push(dialogRef);
192
+ return dialogRef;
193
+ };
194
+ // Let there be an alternative, global way to stop all active spinner dialogs.
195
+ DialogService.prototype.stopAllSpinnerDialogs = function () {
196
+ var e_1, _a;
197
+ this.spinnerWorkItemCount = 0;
198
+ var _loop_1 = function (dialogRef) {
199
+ setTimeout(function () {
200
+ dialogRef.close();
201
+ });
202
+ };
203
+ try {
204
+ for (var _b = __values(this.spinnerDialogRefs), _c = _b.next(); !_c.done; _c = _b.next()) {
205
+ var dialogRef = _c.value;
206
+ _loop_1(dialogRef);
207
+ }
208
+ }
209
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
210
+ finally {
211
+ try {
212
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
213
+ }
214
+ finally { if (e_1) throw e_1.error; }
215
+ }
216
+ this.spinnerDialogRefs = [];
217
+ };
218
+ DialogService.prototype.addSpinnerWorkItem = function () {
219
+ var _this = this;
220
+ this.spinnerWorkItemCount++;
221
+ if (!this.checkingSpinnerWorkItems) {
222
+ this.checkingSpinnerWorkItems = true;
223
+ setTimeout(function () {
224
+ _this.checkSpinnerWorkItems();
225
+ });
226
+ }
227
+ };
228
+ DialogService.prototype.removeSpinnerWorkItem = function () {
229
+ var _this = this;
230
+ this.spinnerWorkItemCount--;
231
+ if (this.spinnerWorkItemCount < 0) {
232
+ this.spinnerWorkItemCount = 0;
233
+ }
234
+ if (!this.checkingSpinnerWorkItems) {
235
+ this.checkingSpinnerWorkItems = true;
236
+ setTimeout(function () {
237
+ _this.checkSpinnerWorkItems();
238
+ });
239
+ }
240
+ };
241
+ DialogService.prototype.checkSpinnerWorkItems = function () {
242
+ this.checkingSpinnerWorkItems = false;
243
+ if (this.spinnerWorkItemCount) {
244
+ if (!this._spinnerDialogIsOpen) {
245
+ this.startDefaultSpinnerDialog();
246
+ }
247
+ }
248
+ else if (this._spinnerDialogIsOpen) {
249
+ this.stopAllSpinnerDialogs();
250
+ }
251
+ };
252
+ DialogService.prototype.genericDialogContainer = function (dialogContent, title, icon, config, actionConfig) {
253
+ var configuration = null;
254
+ if (!config) {
255
+ configuration = new MatDialogConfig();
256
+ }
257
+ else {
258
+ configuration = config;
259
+ }
260
+ configuration.data = configuration.data ? configuration.data : {};
261
+ configuration.data.dialogContent = dialogContent;
262
+ configuration.data.title = title;
263
+ if (icon) {
264
+ configuration.data.icon = icon;
265
+ }
266
+ if (actionConfig) {
267
+ configuration.data.actionConfig = actionConfig;
268
+ }
269
+ configuration.panelClass = ['mx-sized-dialog', 'no-padding'];
270
+ configuration.disableClose = true;
271
+ configuration.hasBackdrop = true;
272
+ var dialogRef = this.dialog.open(GenericContainerDialogComponent, configuration);
273
+ return dialogRef.afterClosed();
274
+ };
275
+ DialogService.prototype.openDialog = function (message, title, type, icon, config) {
276
+ var configuration = null;
277
+ if (!config) {
278
+ configuration = new MatDialogConfig();
279
+ }
280
+ else {
281
+ configuration = config;
282
+ }
283
+ configuration.data = configuration.data ? configuration.data : {};
284
+ configuration.data.message = message;
285
+ configuration.data.title = title ? title : '';
286
+ configuration.data.icon = icon ? icon : '';
287
+ configuration.data.dialogType = type ? type : '';
288
+ configuration.maxWidth = configuration.maxWidth ? configuration.maxWidth : '80vw';
289
+ configuration.maxHeight = configuration.maxHeight ? configuration.maxHeight : '80vh';
290
+ configuration.minWidth = configuration.minWidth ? configuration.minWidth : '30em';
291
+ configuration.panelClass = 'no-padding';
292
+ configuration.disableClose = true;
293
+ configuration.autoFocus = false;
294
+ configuration.hasBackdrop = false;
295
+ var dialogRef;
296
+ dialogRef = this.dialog.open(AlertDialogComponent, configuration);
297
+ return dialogRef.afterClosed();
298
+ };
299
+ DialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DialogService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
300
+ DialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DialogService });
301
+ return DialogService;
302
+ }());
303
+ export { DialogService };
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DialogService, decorators: [{
305
+ type: Injectable
306
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }]; } });
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS9kaWFsb2cvIiwic291cmNlcyI6WyJzZXJ2aWNlL2RpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQWdCLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsK0JBQStCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUM5RixPQUFPLEVBQUMsVUFBVSxFQUFpQixNQUFNLHNDQUFzQyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDeEQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0scUNBQXFDLENBQUM7OztBQUkzRTtJQWFJLHVCQUFvQixNQUFpQjtRQUFqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBVjdCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3Qix5QkFBb0IsR0FBRyxDQUFDLENBQUM7UUFDekIsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBRWxDLHNCQUFpQixHQUEyQyxFQUFFLENBQUM7SUFPdEUsQ0FBQztJQUxELHNCQUFXLDhDQUFtQjthQUE5QjtZQUNJLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3JDLENBQUM7OztPQUFBO0lBS00sNkJBQUssR0FBWixVQUFhLE9BQTBCLEVBQUUsS0FBYyxFQUMxQyxVQUF1QixFQUFFLElBQWEsRUFDdEMsTUFBd0I7UUFDakMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFTSwrQkFBTyxHQUFkLFVBQWUsT0FBMEIsRUFBRSxLQUFjLEVBQzFDLElBQWEsRUFBRSxNQUF3QjtRQUNsRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU3RSxDQUFDO0lBRUg7Ozs7Ozs7OztPQVNHO0lBQ0kscUNBQWEsR0FBcEIsVUFBcUIsV0FBd0IsRUFBRSxLQUFjLEVBQ3hDLElBQWEsRUFBRSxNQUF3QixFQUN2QyxZQUE2QjtRQUNoRCxJQUFJLENBQUMsS0FBSyxFQUFDO1lBQ1QsS0FBSyxHQUFHLFNBQVMsQ0FBQztTQUNuQjtRQUVELElBQUksQ0FBQyxJQUFJLEVBQUM7WUFDUixJQUFJLEdBQUcsbUJBQW1CLENBQUM7U0FDNUI7UUFFRCw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLE1BQU0sRUFBQztZQUNWLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBTyxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFDO1lBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1NBQ3ZDO2FBQUs7WUFDSixNQUFNLENBQUMsSUFBSSxHQUFHO2dCQUNaLFdBQVcsYUFBQTthQUNaLENBQUM7U0FDSDtRQUVELCtDQUErQztRQUMvQyxJQUFJLENBQUMsWUFBWSxFQUFDO1lBRWhCLGtCQUFrQjtZQUNsQixJQUFJLE9BQU8sR0FBRyxFQUFDLElBQUksRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLO2dCQUNsRCxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFDLENBQUM7WUFDckUsSUFBSSxTQUFTLEdBQUcsRUFBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUztnQkFDMUQsY0FBYyxFQUFFLFNBQVMsRUFBQyxDQUFDO1lBRTdCLDBDQUEwQztZQUMxQyx5REFBeUQ7WUFDekQsUUFBUSxXQUFXLEVBQUU7Z0JBQ25CLEtBQUssV0FBVyxDQUFDLGlCQUFpQjtvQkFDaEMsT0FBTyxHQUFHLEVBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLG1CQUFtQjt3QkFDNUQsY0FBYyxFQUFFLGdCQUFnQixFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBQyxDQUFDO29CQUNyRSxNQUFNO2dCQUNSLEtBQUssV0FBVyxDQUFDLEtBQUs7b0JBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUM7b0JBQ3BCLFNBQVMsR0FBRyxFQUFDLElBQUksRUFBRSxVQUFVLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPO3dCQUNwRCxjQUFjLEVBQUUsU0FBUyxFQUFDLENBQUM7b0JBQzdCLE1BQU07Z0JBQ1IsMkJBQTJCO2dCQUMzQixxQ0FBcUM7Z0JBQ3JDLG9DQUFvQztnQkFDcEMsNEJBQTRCO2dCQUM1Qix3QkFBd0I7Z0JBQ3hCLDRCQUE0QjtnQkFDNUI7b0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2FBQ2xEO1lBRUQsSUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ25CLElBQUksT0FBTyxFQUFDO2dCQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdkI7WUFDRCxJQUFJLFNBQVMsRUFBQztnQkFDWixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3pCO1lBRUQsWUFBWSxHQUFHO2dCQUNiLE9BQU8sU0FBQTthQUNSLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixFQUN2RCxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRVEsNkJBQUssR0FBWixVQUFhLE9BQTBCLEVBQUUsS0FBYyxFQUMxQyxJQUFhLEVBQUUsTUFBd0I7UUFDaEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVNLDRCQUFJLEdBQVgsVUFBWSxPQUEwQixFQUFFLEtBQWMsRUFDMUMsSUFBYSxFQUFFLE1BQXdCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSwwQ0FBa0IsR0FBekIsVUFBMEIsT0FBeUIsRUFBRSxPQUFhLEVBQUUsS0FBYyxFQUN4RCxJQUFhLEVBQUUsTUFBd0IsRUFDdkMsWUFBNkI7UUFDbkQsSUFBSSxhQUFhLEdBQW9CLElBQUksQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsYUFBYSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7U0FDekM7YUFBTTtZQUNILGFBQWEsR0FBRyxNQUFNLENBQUM7U0FDMUI7UUFFRCxhQUFhLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRSxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7UUFDekMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5QyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUNyQyxJQUFJLFlBQVksRUFBRTtZQUNkLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztTQUNsRDtRQUVELGFBQWEsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ2xGLGFBQWEsQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRXpFLGFBQWEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUM3RCxhQUFhLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUNsQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUVqQyxJQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUV6RSxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRU0saURBQXlCLEdBQWhDO1FBQ0ksT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSwwQ0FBa0IsR0FBekIsVUFBMEIsT0FBZSxFQUFFLFdBQW1CLEVBQUUsUUFBZ0I7UUFBaEYsaUJBeUJDO1FBeEJHLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRWpDLElBQU0sYUFBYSxHQUFvQixJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzdELGFBQWEsQ0FBQyxJQUFJLEdBQUc7WUFDakIsT0FBTyxTQUFBO1lBQ1AsV0FBVyxhQUFBO1lBQ1gsUUFBUSxVQUFBO1NBQ1gsQ0FBQztRQUNGLGFBQWEsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQzdCLGFBQWEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRWxDLElBQU0sU0FBUyxHQUF5QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVoSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQzlCLEtBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZDLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxrREFBMEIsR0FBakMsVUFBa0MsT0FBZSxFQUFFLFdBQW1CLEVBQUUsUUFBZ0I7UUFBeEYsaUJBMEJDO1FBekJHLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRWpDLElBQU0sYUFBYSxHQUFvQixJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQzdELGFBQWEsQ0FBQyxJQUFJLEdBQUc7WUFDakIsT0FBTyxTQUFBO1lBQ1AsV0FBVyxhQUFBO1lBQ1gsUUFBUSxVQUFBO1NBQ1gsQ0FBQztRQUNGLGFBQWEsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQzdCLGFBQWEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBRWxDLElBQU0sU0FBUyxHQUF5QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVoSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQzlCLEtBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZDLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRCw4RUFBOEU7SUFDdkUsNkNBQXFCLEdBQTVCOztRQUNJLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7Z0NBQ25CLFNBQVM7WUFDaEIsVUFBVSxDQUFDO2dCQUNQLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixDQUFDLENBQUMsQ0FBQzs7O1lBSFAsS0FBd0IsSUFBQSxLQUFBLFNBQUEsSUFBSSxDQUFDLGlCQUFpQixDQUFBLGdCQUFBO2dCQUF6QyxJQUFNLFNBQVMsV0FBQTt3QkFBVCxTQUFTO2FBSW5COzs7Ozs7Ozs7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSwwQ0FBa0IsR0FBekI7UUFBQSxpQkFRQztRQVBHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFDaEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztZQUNyQyxVQUFVLENBQUM7Z0JBQ1AsS0FBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFTSw2Q0FBcUIsR0FBNUI7UUFBQSxpQkFXQztRQVZHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsRUFBRTtZQUMvQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNoQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1lBQ3JDLFVBQVUsQ0FBQztnQkFDUCxLQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVPLDZDQUFxQixHQUE3QjtRQUNJLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDdEMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7YUFDcEM7U0FDSjthQUFNLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ2xDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQUVNLDhDQUFzQixHQUE3QixVQUE4QixhQUFrQixFQUFFLEtBQWEsRUFDakMsSUFBYSxFQUFFLE1BQXdCLEVBQ3ZDLFlBQTZCO1FBQ3ZELElBQUksYUFBYSxHQUFvQixJQUFJLENBQUM7UUFHMUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULGFBQWEsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1NBQ3pDO2FBQU07WUFDSCxhQUFhLEdBQUcsTUFBTSxDQUFDO1NBQzFCO1FBQ0QsYUFBYSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbEUsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ2pELGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNqQyxJQUFJLElBQUksRUFBRTtZQUNOLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNsQztRQUNELElBQUksWUFBWSxFQUFFO1lBQ2QsYUFBYSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1NBQ2xEO1FBQ0QsYUFBYSxDQUFDLFVBQVUsR0FBRyxDQUFDLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzdELGFBQWEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRW5GLE9BQU8sU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyxrQ0FBVSxHQUFsQixVQUFtQixPQUEwQixFQUFFLEtBQWMsRUFDMUMsSUFBaUIsRUFBRSxJQUFhLEVBQUUsTUFBd0I7UUFDekUsSUFBSSxhQUFhLEdBQW9CLElBQUksQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsYUFBYSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7U0FDekM7YUFBTTtZQUNILGFBQWEsR0FBRyxNQUFNLENBQUM7U0FDMUI7UUFFRCxhQUFhLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRSxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDckMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5QyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFakQsYUFBYSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDbEYsYUFBYSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDckYsYUFBYSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFbEYsYUFBYSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7UUFDeEMsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDbEMsYUFBYSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDaEMsYUFBYSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFFbEMsSUFBSSxTQUE2QyxDQUFDO1FBRWxELFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUVsRSxPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDOytHQTFUUSxhQUFhO21IQUFiLGFBQWE7d0JBakIxQjtDQThVQyxBQTlURCxJQThUQztTQTdUWSxhQUFhOzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIFRlbXBsYXRlUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBBbGVydERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2FsZXJ0L2FsZXJ0LWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTcGlubmVyRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vc3Bpbm5lci9zcGlubmVyLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0N1c3RvbURpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vY3VzdG9tL2N1c3RvbS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtHZW5lcmljQ29udGFpbmVyRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi9nZW5lcmljL2dlbmVyaWMtY29udGFpbmVyLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge0FjdGlvblR5cGUsIEdEQWN0aW9uQ29uZmlnfSBmcm9tICcuLi9tb2RlbC9nZW5lcmljLWRpYWxvZy1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQge0RpYWxvZ1R5cGV9IGZyb20gJy4uL21vZGVsL2RpYWxvZy10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtDb25maXJtVHlwZX0gZnJvbSAnLi4vbW9kZWwvY29uZmlybS10eXBlLm1vZGVsJztcclxuaW1wb3J0IHtDb25maXJtRGlhbG9nQ29tcG9uZW50fSBmcm9tICcuLi9jb25maXJtL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgX3NwaW5uZXJEaWFsb2dJc09wZW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgc3Bpbm5lcldvcmtJdGVtQ291bnQgPSAwO1xyXG4gICAgcHJpdmF0ZSBjaGVja2luZ1NwaW5uZXJXb3JrSXRlbXMgPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgc3Bpbm5lckRpYWxvZ1JlZnM6IE1hdERpYWxvZ1JlZjxTcGlubmVyRGlhbG9nQ29tcG9uZW50PltdID0gW107XHJcblxyXG4gICAgcHVibGljIGdldCBzcGlubmVyRGlhbG9nSXNPcGVuKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zcGlubmVyRGlhbG9nSXNPcGVuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2cpIHtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYWxlcnQobWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10sIHRpdGxlPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgIGRpYWxvZ1R5cGU/OiBEaWFsb2dUeXBlLCBpY29uPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgIGNvbmZpZz86IE1hdERpYWxvZ0NvbmZpZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5EaWFsb2cobWVzc2FnZSwgdGl0bGUsIGRpYWxvZ1R5cGUgPyBkaWFsb2dUeXBlIDogRGlhbG9nVHlwZS5BTEVSVCwgaWNvbiwgY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY29uZmlybShtZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSwgdGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICBpY29uPzogc3RyaW5nLCBjb25maWc/OiBNYXREaWFsb2dDb25maWcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuRGlhbG9nKG1lc3NhZ2UsIHRpdGxlLCBEaWFsb2dUeXBlLkNPTkZJUk0sIGljb24sIGNvbmZpZyk7XHJcblxyXG4gICAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgQ29uZmlybURpYWxvZ0NvbXBvbmVudCB3aXRoIGRpZmZlcmVudCBkaXNwbGF5IGRlcGVuZGluZyBvblxyXG4gICAqIHRoZSBDb25maXJtVHlwZS5cclxuICAgKiBAcGFyYW0gdGl0bGUgZGVmYXVsdHMgdG8gJ0NvbmZpcm0nXHJcbiAgICogQHBhcmFtIGljb24gZGVmYXVsdHMgdG8gJ2ZhIGZhLWluZm8tY2lyY2xlJ1xyXG4gICAqIEBwYXJhbSBjb25maWcgY29uZmlnLmRhdGEgY2FuIGNvbnRhaW4gYSBwcm9tcHQsIG1lc3NhZ2UxIGFuZC9vclxyXG4gICAqIG1lc3NhZ2UyIGFjY29yZGluZyB0byB0aGUgQ29uZmlybVR5cGUgY2hvc2VuXHJcbiAgICogQHBhcmFtIGFjdGlvbkNvbmZpZyBzZXRzIHVwIHRoZSBkaWFsb2cgYnV0dG9ucyBhbmQgYWN0aW9ucyBpZiB5b3Ugd2FudFxyXG4gICAqIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0c1xyXG4gICAqL1xyXG4gIHB1YmxpYyBjb25maXJtQnlUeXBlKGNvbmZpcm1UeXBlOiBDb25maXJtVHlwZSwgdGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgaWNvbj86IHN0cmluZywgY29uZmlnPzogTWF0RGlhbG9nQ29uZmlnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbkNvbmZpZz86IEdEQWN0aW9uQ29uZmlnKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICBpZiAoIXRpdGxlKXtcclxuICAgICAgdGl0bGUgPSAnQ29uZmlybSc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFpY29uKXtcclxuICAgICAgaWNvbiA9ICdmYSBmYS1pbmZvLWNpcmNsZSc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gc2V0IHVwIGEgZGVmYXVsdCBpZiBuZWVkZWRcclxuICAgIGlmICghY29uZmlnKXtcclxuICAgICAgY29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZzxhbnk+KCk7XHJcbiAgICAgIGNvbmZpZy53aWR0aCA9ICczM3Z3JztcclxuICAgICAgY29uZmlnLm1pbldpZHRoID0gJzMwMHB4JztcclxuICAgICAgY29uZmlnLmRpc2FibGVDbG9zZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbmZpZy5kYXRhKXtcclxuICAgICAgY29uZmlnLmRhdGEuY29uZmlybVR5cGUgPSBjb25maXJtVHlwZTtcclxuICAgIH1lbHNlIHtcclxuICAgICAgY29uZmlnLmRhdGEgPSB7XHJcbiAgICAgICAgY29uZmlybVR5cGVcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiBubyBhY3Rpb25zIHBhc3NlZCBpbiwgc2V0IHVwIHRoZSBkZWZhdWx0c1xyXG4gICAgaWYgKCFhY3Rpb25Db25maWcpe1xyXG5cclxuICAgICAgLy8gZGVmYXVsdCBhY3Rpb25zXHJcbiAgICAgIGxldCBwcmltYXJ5ID0ge3R5cGU6IEFjdGlvblR5cGUuUFJJTUFSWSwgbmFtZTogJ1lFUycsXHJcbiAgICAgICAgaW50ZXJuYWxBY3Rpb246ICdvbkNvbmZpcm1DbGljaycsIGludGVybmFsQWN0aW9uUmV0dXJuVmFsdWU6IHRydWV9O1xyXG4gICAgICBsZXQgc2Vjb25kYXJ5ID0ge3R5cGU6IEFjdGlvblR5cGUuU0VDT05EQVJZLCBuYW1lOiAnR08gQkFDSycsXHJcbiAgICAgICAgaW50ZXJuYWxBY3Rpb246ICdvbkNsb3NlJ307XHJcblxyXG4gICAgICAvLyBieSBlbnVtIHR5cGUsIHNldHVwIHRoZSBtZXNzYWdlcy9wcm9tcHRcclxuICAgICAgLy8gb25seSB0d28gbmVlZCBkaWZmZXJlbnQgZGVmYXVsdHMgdGhhbiBnZW5lcmljIGRlZmF1bHRzXHJcbiAgICAgIHN3aXRjaCAoY29uZmlybVR5cGUpIHtcclxuICAgICAgICBjYXNlIENvbmZpcm1UeXBlLkNPTkZJUk1fQU5EX0NMT1NFOlxyXG4gICAgICAgICAgcHJpbWFyeSA9IHt0eXBlOiBBY3Rpb25UeXBlLlBSSU1BUlksIG5hbWU6ICdDT05GSVJNIEFORCBDTE9TRScsXHJcbiAgICAgICAgICAgIGludGVybmFsQWN0aW9uOiAnb25Db25maXJtQ2xpY2snLCBpbnRlcm5hbEFjdGlvblJldHVyblZhbHVlOiB0cnVlfTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uZmlybVR5cGUuQUxFUlQ6XHJcbiAgICAgICAgICBwcmltYXJ5ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgc2Vjb25kYXJ5ID0ge3R5cGU6IEFjdGlvblR5cGUuU0VDT05EQVJZLCBuYW1lOiAnQ0xPU0UnLFxyXG4gICAgICAgICAgICBpbnRlcm5hbEFjdGlvbjogJ29uQ2xvc2UnfTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vIGNhc2UgQ29uZmlybVR5cGUuREVMRVRFOlxyXG4gICAgICAgIC8vIGNhc2UgQ29uZmlybVR5cGUuREVMRVRFX1dfTUVTU0FHRTpcclxuICAgICAgICAvLyBjYXNlIENvbmZpcm1UeXBlLkRFTEVURV9XX1BST01QVDpcclxuICAgICAgICAvLyBjYXNlIENvbmZpcm1UeXBlLkRJU0NBUkQ6XHJcbiAgICAgICAgLy8gY2FzZSBDb25maXJtVHlwZS5BREQ6XHJcbiAgICAgICAgLy8gY2FzZSBDb25maXJtVHlwZS5HRU5FUklDOlxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbmZpcm0gdHlwZSBkb2VzblxcJ3QgZXhpc3QnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgYWN0aW9ucyA9IFtdO1xyXG4gICAgICBpZiAocHJpbWFyeSl7XHJcbiAgICAgICAgYWN0aW9ucy5wdXNoKHByaW1hcnkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChzZWNvbmRhcnkpe1xyXG4gICAgICAgIGFjdGlvbnMucHVzaChzZWNvbmRhcnkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhY3Rpb25Db25maWcgPSB7XHJcbiAgICAgICAgYWN0aW9uc1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmdlbmVyaWNEaWFsb2dDb250YWluZXIoQ29uZmlybURpYWxvZ0NvbXBvbmVudCxcclxuICAgICAgdGl0bGUsIGljb24sIGNvbmZpZywgYWN0aW9uQ29uZmlnKTtcclxuICB9XHJcblxyXG4gICAgcHVibGljIGVycm9yKG1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdLCB0aXRsZT86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICBpY29uPzogc3RyaW5nLCBjb25maWc/OiBNYXREaWFsb2dDb25maWcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuRGlhbG9nKG1lc3NhZ2UsIHRpdGxlLCBEaWFsb2dUeXBlLkVSUk9SLCBpY29uLCBjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbmZvKG1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdLCB0aXRsZT86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgIGljb24/OiBzdHJpbmcsIGNvbmZpZz86IE1hdERpYWxvZ0NvbmZpZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5EaWFsb2cobWVzc2FnZSwgdGl0bGUsIERpYWxvZ1R5cGUuSU5GTywgaWNvbiwgY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY3JlYXRlQ3VzdG9tRGlhbG9nKHRlbXBSZWY6IFRlbXBsYXRlUmVmPGFueT4sIGNvbnRleHQ/OiBhbnksIHRpdGxlPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPzogc3RyaW5nLCBjb25maWc/OiBNYXREaWFsb2dDb25maWcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbkNvbmZpZz86IEdEQWN0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgbGV0IGNvbmZpZ3VyYXRpb246IE1hdERpYWxvZ0NvbmZpZyA9IG51bGw7XHJcbiAgICAgICAgaWYgKCFjb25maWcpIHtcclxuICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uID0gY29uZmlnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5kYXRhID0gY29uZmlndXJhdGlvbi5kYXRhID8gY29uZmlndXJhdGlvbi5kYXRhIDoge307XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5kYXRhLnRlbXBsYXRlUmVmID0gdGVtcFJlZjtcclxuICAgICAgICBjb25maWd1cmF0aW9uLmRhdGEudGl0bGUgPSB0aXRsZSA/IHRpdGxlIDogJyc7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5kYXRhLmljb24gPSBpY29uID8gaWNvbiA6ICcnO1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24uZGF0YS5jb250ZXh0ID0gY29udGV4dDtcclxuICAgICAgICBpZiAoYWN0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uZGF0YS5hY3Rpb25Db25maWcgPSBhY3Rpb25Db25maWc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25maWd1cmF0aW9uLm1pbldpZHRoID0gY29uZmlndXJhdGlvbi5taW5XaWR0aCA/IGNvbmZpZ3VyYXRpb24ubWluV2lkdGggOiAnMTBlbSc7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi53aWR0aCA9IGNvbmZpZ3VyYXRpb24ud2lkdGggPyBjb25maWd1cmF0aW9uLndpZHRoIDogJzMwZW0nO1xyXG5cclxuICAgICAgICBjb25maWd1cmF0aW9uLnBhbmVsQ2xhc3MgPSBbJ214LXNpemVkLWRpYWxvZycsICduby1wYWRkaW5nJ107XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24uaGFzQmFja2Ryb3AgPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEN1c3RvbURpYWxvZ0NvbXBvbmVudCwgY29uZmlndXJhdGlvbik7XHJcblxyXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWY7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXJ0RGVmYXVsdFNwaW5uZXJEaWFsb2coKTogTWF0RGlhbG9nUmVmPFNwaW5uZXJEaWFsb2dDb21wb25lbnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGFydFNwaW5uZXJEaWFsb2coJ1BsZWFzZSB3YWl0Li4uJywgMywgMzApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGFydFNwaW5uZXJEaWFsb2cobWVzc2FnZTogc3RyaW5nLCBzdHJva2VXaWR0aDogbnVtYmVyLCBkaWFtZXRlcjogbnVtYmVyKTogTWF0RGlhbG9nUmVmPFNwaW5uZXJEaWFsb2dDb21wb25lbnQ+IHtcclxuICAgICAgICBpZiAodGhpcy5fc3Bpbm5lckRpYWxvZ0lzT3Blbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3NwaW5uZXJEaWFsb2dJc09wZW4gPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uOiBNYXREaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5kYXRhID0ge1xyXG4gICAgICAgICAgICBtZXNzYWdlLFxyXG4gICAgICAgICAgICBzdHJva2VXaWR0aCxcclxuICAgICAgICAgICAgZGlhbWV0ZXJcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24ud2lkdGggPSAnMTNlbSc7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxTcGlubmVyRGlhbG9nQ29tcG9uZW50PiA9IHRoaXMuZGlhbG9nLm9wZW4oU3Bpbm5lckRpYWxvZ0NvbXBvbmVudCwgY29uZmlndXJhdGlvbik7XHJcblxyXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NwaW5uZXJEaWFsb2dJc09wZW4gPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zcGlubmVyRGlhbG9nUmVmcy5wdXNoKGRpYWxvZ1JlZik7XHJcblxyXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWY7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXJ0Tm9uTW9kYWxTcGlubmVyRGlhbG9nKG1lc3NhZ2U6IHN0cmluZywgc3Ryb2tlV2lkdGg6IG51bWJlciwgZGlhbWV0ZXI6IG51bWJlcik6IE1hdERpYWxvZ1JlZjxTcGlubmVyRGlhbG9nQ29tcG9uZW50PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NwaW5uZXJEaWFsb2dJc09wZW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zcGlubmVyRGlhbG9nSXNPcGVuID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgY29uZmlndXJhdGlvbjogTWF0RGlhbG9nQ29uZmlnID0gbmV3IE1hdERpYWxvZ0NvbmZpZygpO1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24uZGF0YSA9IHtcclxuICAgICAgICAgICAgbWVzc2FnZSxcclxuICAgICAgICAgICAgc3Ryb2tlV2lkdGgsXHJcbiAgICAgICAgICAgIGRpYW1ldGVyXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25maWd1cmF0aW9uLndpZHRoID0gJzEzZW0nO1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24uZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuICAgICAgICBjb25maWd1cmF0aW9uLmhhc0JhY2tkcm9wID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFNwaW5uZXJEaWFsb2dDb21wb25lbnQ+ID0gdGhpcy5kaWFsb2cub3BlbihTcGlubmVyRGlhbG9nQ29tcG9uZW50LCBjb25maWd1cmF0aW9uKTtcclxuXHJcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fc3Bpbm5lckRpYWxvZ0lzT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnNwaW5uZXJEaWFsb2dSZWZzLnB1c2goZGlhbG9nUmVmKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGRpYWxvZ1JlZjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBMZXQgdGhlcmUgYmUgYW4gYWx0ZXJuYXRpdmUsIGdsb2JhbCB3YXkgdG8gc3RvcCBhbGwgYWN0aXZlIHNwaW5uZXIgZGlhbG9ncy5cclxuICAgIHB1YmxpYyBzdG9wQWxsU3Bpbm5lckRpYWxvZ3MoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyV29ya0l0ZW1Db3VudCA9IDA7XHJcbiAgICAgICAgZm9yIChjb25zdCBkaWFsb2dSZWYgb2YgdGhpcy5zcGlubmVyRGlhbG9nUmVmcykge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zcGlubmVyRGlhbG9nUmVmcyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGRTcGlubmVyV29ya0l0ZW0oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyV29ya0l0ZW1Db3VudCsrO1xyXG4gICAgICAgIGlmICghdGhpcy5jaGVja2luZ1NwaW5uZXJXb3JrSXRlbXMpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2luZ1NwaW5uZXJXb3JrSXRlbXMgPSB0cnVlO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tTcGlubmVyV29ya0l0ZW1zKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVtb3ZlU3Bpbm5lcldvcmtJdGVtKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lcldvcmtJdGVtQ291bnQtLTtcclxuICAgICAgICBpZiAodGhpcy5zcGlubmVyV29ya0l0ZW1Db3VudCA8IDApIHtcclxuICAgICAgICAgICAgdGhpcy5zcGlubmVyV29ya0l0ZW1Db3VudCA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5jaGVja2luZ1NwaW5uZXJXb3JrSXRlbXMpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja2luZ1NwaW5uZXJXb3JrSXRlbXMgPSB0cnVlO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tTcGlubmVyV29ya0l0ZW1zKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrU3Bpbm5lcldvcmtJdGVtcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNoZWNraW5nU3Bpbm5lcldvcmtJdGVtcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnNwaW5uZXJXb3JrSXRlbUNvdW50KSB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5fc3Bpbm5lckRpYWxvZ0lzT3Blbikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydERlZmF1bHRTcGlubmVyRGlhbG9nKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX3NwaW5uZXJEaWFsb2dJc09wZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9wQWxsU3Bpbm5lckRpYWxvZ3MoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdlbmVyaWNEaWFsb2dDb250YWluZXIoZGlhbG9nQ29udGVudDogYW55LCB0aXRsZTogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj86IHN0cmluZywgY29uZmlnPzogTWF0RGlhbG9nQ29uZmlnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uQ29uZmlnPzogR0RBY3Rpb25Db25maWcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGxldCBjb25maWd1cmF0aW9uOiBNYXREaWFsb2dDb25maWcgPSBudWxsO1xyXG5cclxuXHJcbiAgICAgICAgaWYgKCFjb25maWcpIHtcclxuICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uID0gY29uZmlnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25maWd1cmF0aW9uLmRhdGEgPSBjb25maWd1cmF0aW9uLmRhdGEgPyBjb25maWd1cmF0aW9uLmRhdGEgOiB7fTtcclxuICAgICAgICBjb25maWd1cmF0aW9uLmRhdGEuZGlhbG9nQ29udGVudCA9IGRpYWxvZ0NvbnRlbnQ7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5kYXRhLnRpdGxlID0gdGl0bGU7XHJcbiAgICAgICAgaWYgKGljb24pIHtcclxuICAgICAgICAgICAgY29uZmlndXJhdGlvbi5kYXRhLmljb24gPSBpY29uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYWN0aW9uQ29uZmlnKSB7XHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uZGF0YS5hY3Rpb25Db25maWcgPSBhY3Rpb25Db25maWc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24ucGFuZWxDbGFzcyA9IFsnbXgtc2l6ZWQtZGlhbG9nJywgJ25vLXBhZGRpbmcnXTtcclxuICAgICAgICBjb25maWd1cmF0aW9uLmRpc2FibGVDbG9zZSA9IHRydWU7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5oYXNCYWNrZHJvcCA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihHZW5lcmljQ29udGFpbmVyRGlhbG9nQ29tcG9uZW50LCBjb25maWd1cmF0aW9uKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb3BlbkRpYWxvZyhtZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSwgdGl0bGU/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZT86IERpYWxvZ1R5cGUsIGljb24/OiBzdHJpbmcsIGNvbmZpZz86IE1hdERpYWxvZ0NvbmZpZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgbGV0IGNvbmZpZ3VyYXRpb246IE1hdERpYWxvZ0NvbmZpZyA9IG51bGw7XHJcbiAgICAgICAgaWYgKCFjb25maWcpIHtcclxuICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25maWd1cmF0aW9uID0gY29uZmlnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5kYXRhID0gY29uZmlndXJhdGlvbi5kYXRhID8gY29uZmlndXJhdGlvbi5kYXRhIDoge307XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5kYXRhLm1lc3NhZ2UgPSBtZXNzYWdlO1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24uZGF0YS50aXRsZSA9IHRpdGxlID8gdGl0bGUgOiAnJztcclxuICAgICAgICBjb25maWd1cmF0aW9uLmRhdGEuaWNvbiA9IGljb24gPyBpY29uIDogJyc7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5kYXRhLmRpYWxvZ1R5cGUgPSB0eXBlID8gdHlwZSA6ICcnO1xyXG5cclxuICAgICAgICBjb25maWd1cmF0aW9uLm1heFdpZHRoID0gY29uZmlndXJhdGlvbi5tYXhXaWR0aCA/IGNvbmZpZ3VyYXRpb24ubWF4V2lkdGggOiAnODB2dyc7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5tYXhIZWlnaHQgPSBjb25maWd1cmF0aW9uLm1heEhlaWdodCA/IGNvbmZpZ3VyYXRpb24ubWF4SGVpZ2h0IDogJzgwdmgnO1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24ubWluV2lkdGggPSBjb25maWd1cmF0aW9uLm1pbldpZHRoID8gY29uZmlndXJhdGlvbi5taW5XaWR0aCA6ICczMGVtJztcclxuXHJcbiAgICAgICAgY29uZmlndXJhdGlvbi5wYW5lbENsYXNzID0gJ25vLXBhZGRpbmcnO1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24uZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuICAgICAgICBjb25maWd1cmF0aW9uLmF1dG9Gb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbmZpZ3VyYXRpb24uaGFzQmFja2Ryb3AgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgbGV0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEFsZXJ0RGlhbG9nQ29tcG9uZW50PjtcclxuXHJcbiAgICAgICAgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihBbGVydERpYWxvZ0NvbXBvbmVudCwgY29uZmlndXJhdGlvbik7XHJcblxyXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKTtcclxuICAgIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { Component, Inject, Input } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/dialog";
5
+ import * as i2 from "@angular/material/progress-spinner";
6
+ var SpinnerDialogComponent = /** @class */ (function () {
7
+ function SpinnerDialogComponent(dialogRef, data) {
8
+ this.dialogRef = dialogRef;
9
+ this.data = data;
10
+ this.strokeWidth = 3;
11
+ this.diameter = 30;
12
+ this.message = 'Loading...';
13
+ if (this.data) {
14
+ if (!!this.data.message) {
15
+ this.message = this.data.message;
16
+ }
17
+ if (!!this.data.diameter) {
18
+ this.diameter = this.data.diameter;
19
+ }
20
+ if (!!this.data.strokeWidth) {
21
+ this.strokeWidth = this.data.strokeWidth;
22
+ }
23
+ }
24
+ }
25
+ SpinnerDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SpinnerDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
26
+ SpinnerDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SpinnerDialogComponent, selector: "hci-spinner-dialog", inputs: { strokeWidth: "strokeWidth", diameter: "diameter", message: "message" }, ngImport: i0, template: "<div mat-dialog-title class=\"not-rendered\">\r\n<!--<div mat-dialog-title>-->\r\n</div>\r\n<div mat-dialog-content class=\"full-height padded\">\r\n <div class=\"full-width full-height t\">\r\n <div class=\"tr\">\r\n <div class=\"td vertical-center\" [style.height.px]=\"diameter + 5\">\r\n <mat-spinner [hidden]=\"false\" strokeWidth=\"{{strokeWidth}}\" [diameter]=\"diameter\"></mat-spinner>\r\n </div>\r\n <div class=\"td vertical-center\">\r\n {{message}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-actions class=\"not-rendered\">\r\n<!--<div mat-dialog-actions>-->\r\n</div>\r\n", styles: ["\n .t { display: table; }\n .tr { display: table-row; }\n .td { display: table-cell; }\n\n .full-height { height: 100%; }\n .full-width { width: 100%; }\n\n .vertical-center { vertical-align: middle; }\n\n .padded {\n padding-top: 0.4em;\n padding-bottom: 0.4em;\n }\n\n .not-rendered {\n padding: 0;\n margin: 0;\n\n min-height: 0;\n max-height: 0;\n height: 0;\n }\n\n "], components: [{ type: i2.MatSpinner, selector: "mat-spinner", inputs: ["color"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
27
+ return SpinnerDialogComponent;
28
+ }());
29
+ export { SpinnerDialogComponent };
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SpinnerDialogComponent, decorators: [{
31
+ type: Component,
32
+ args: [{
33
+ selector: 'hci-spinner-dialog',
34
+ templateUrl: 'spinner-dialog.component.html',
35
+ styles: ["\n .t { display: table; }\n .tr { display: table-row; }\n .td { display: table-cell; }\n\n .full-height { height: 100%; }\n .full-width { width: 100%; }\n\n .vertical-center { vertical-align: middle; }\n\n .padded {\n padding-top: 0.4em;\n padding-bottom: 0.4em;\n }\n\n .not-rendered {\n padding: 0;\n margin: 0;\n\n min-height: 0;\n max-height: 0;\n height: 0;\n }\n\n "]
36
+ }]
37
+ }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
38
+ type: Inject,
39
+ args: [MAT_DIALOG_DATA]
40
+ }] }]; }, propDecorators: { strokeWidth: [{
41
+ type: Input
42
+ }], diameter: [{
43
+ type: Input
44
+ }], message: [{
45
+ type: Input
46
+ }] } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpbm5lci1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGh1bnRzbWFuLWNhbmNlci1pbnN0aXR1dGUvZGlhbG9nLyIsInNvdXJjZXMiOlsic3Bpbm5lci9zcGlubmVyLWRpYWxvZy5jb21wb25lbnQudHMiLCJzcGlubmVyL3NwaW5uZXItZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUMsZUFBZSxFQUFFLFlBQVksRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7O0FBRXZFO0lBbUNJLGdDQUFvQixTQUErQyxFQUN0QixJQUFJO1FBRDdCLGNBQVMsR0FBVCxTQUFTLENBQXNDO1FBQ3RCLFNBQUksR0FBSixJQUFJLENBQUE7UUFOeEMsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDaEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVkLFlBQU8sR0FBRyxZQUFZLENBQUM7UUFJNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1gsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDcEM7WUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUN0QztZQUNELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQzVDO1NBQ0o7SUFDTCxDQUFDO3dIQW5CUSxzQkFBc0IsOENBT1gsZUFBZTs0R0FQMUIsc0JBQXNCLDRJQ2hDbkMsMnJCQWtCQTtpQ0RsQkE7Q0FzREMsQUFuREQsSUFtREM7U0F0Qlksc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBN0JsQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLE1BQU0sRUFBRSxDQUFDLG1oQkF3QlIsQ0FBQztpQkFDTDs7MEJBUWdCLE1BQU07MkJBQUMsZUFBZTs0Q0FOMUIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdoY2ktc3Bpbm5lci1kaWFsb2cnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICdzcGlubmVyLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZXM6IFtgXHJcbiAgICAgICAgLnQgIHsgZGlzcGxheTogdGFibGU7IH1cclxuICAgICAgICAudHIgeyBkaXNwbGF5OiB0YWJsZS1yb3c7IH1cclxuICAgICAgICAudGQgeyBkaXNwbGF5OiB0YWJsZS1jZWxsOyB9XHJcblxyXG4gICAgICAgIC5mdWxsLWhlaWdodCB7IGhlaWdodDogMTAwJTsgfVxyXG4gICAgICAgIC5mdWxsLXdpZHRoICB7IHdpZHRoOiAgMTAwJTsgfVxyXG5cclxuICAgICAgICAudmVydGljYWwtY2VudGVyIHsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxyXG5cclxuICAgICAgICAucGFkZGVkIHtcclxuICAgICAgICAgICAgcGFkZGluZy10b3A6IDAuNGVtO1xyXG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMC40ZW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAubm90LXJlbmRlcmVkIHtcclxuICAgICAgICAgICAgcGFkZGluZzogMDtcclxuICAgICAgICAgICAgbWFyZ2luOiAgMDtcclxuXHJcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XHJcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDA7XHJcbiAgICAgICAgICAgIGhlaWdodDogICAgIDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTcGlubmVyRGlhbG9nQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIHN0cm9rZVdpZHRoID0gMztcclxuICAgIEBJbnB1dCgpIGRpYW1ldGVyID0gMzA7XHJcblxyXG4gICAgQElucHV0KCkgbWVzc2FnZSA9ICdMb2FkaW5nLi4uJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFNwaW5uZXJEaWFsb2dDb21wb25lbnQ+LFxyXG4gICAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgZGF0YSkge1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgICAgICAgaWYgKCEhdGhpcy5kYXRhLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuZGF0YS5tZXNzYWdlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghIXRoaXMuZGF0YS5kaWFtZXRlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFtZXRlciA9IHRoaXMuZGF0YS5kaWFtZXRlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoISF0aGlzLmRhdGEuc3Ryb2tlV2lkdGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3Ryb2tlV2lkdGggPSB0aGlzLmRhdGEuc3Ryb2tlV2lkdGg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJub3QtcmVuZGVyZWRcIj5cclxuPCEtLTxkaXYgbWF0LWRpYWxvZy10aXRsZT4tLT5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiZnVsbC1oZWlnaHQgcGFkZGVkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZnVsbC13aWR0aCBmdWxsLWhlaWdodCB0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZCB2ZXJ0aWNhbC1jZW50ZXJcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImRpYW1ldGVyICsgNVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyIFtoaWRkZW5dPVwiZmFsc2VcIiBzdHJva2VXaWR0aD1cInt7c3Ryb2tlV2lkdGh9fVwiIFtkaWFtZXRlcl09XCJkaWFtZXRlclwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGQgdmVydGljYWwtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICB7e21lc3NhZ2V9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJub3QtcmVuZGVyZWRcIj5cclxuPCEtLTxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPi0tPlxyXG48L2Rpdj5cclxuIl19