@eo-sdk/client 11.0.0-rc.1 → 11.0.0-rc.3

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 (101) hide show
  1. package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
  2. package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +24 -5
  3. package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts.map +1 -1
  4. package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts +10 -0
  5. package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts.map +1 -1
  6. package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts +7 -0
  7. package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts.map +1 -1
  8. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts +3 -2
  9. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts.map +1 -1
  10. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts +2 -0
  11. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts.map +1 -1
  12. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.d.ts +1 -0
  13. package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.d.ts.map +1 -1
  14. package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts +7 -0
  15. package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts.map +1 -1
  16. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts +6 -4
  17. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts.map +1 -1
  18. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts +2 -2
  19. package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts.map +1 -1
  20. package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts +3 -2
  21. package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts.map +1 -1
  22. package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts +3 -2
  23. package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts.map +1 -1
  24. package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts +3 -2
  25. package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts.map +1 -1
  26. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.d.ts +3 -2
  27. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.d.ts.map +1 -1
  28. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts +2 -3
  29. package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts.map +1 -1
  30. package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts +1 -2
  31. package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts.map +1 -1
  32. package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
  33. package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts.map +1 -1
  34. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  35. package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts.map +1 -1
  36. package/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.d.ts.map +1 -1
  37. package/app/eo-framework/grid/filters/codesystem-filter.component.d.ts.map +1 -1
  38. package/app/eo-framework/grid/filters/datetime-filter.component.d.ts +0 -8
  39. package/app/eo-framework/grid/filters/datetime-filter.component.d.ts.map +1 -1
  40. package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts.map +1 -1
  41. package/app/eo-framework/grid/grid.component.d.ts +1 -1
  42. package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
  43. package/app/eo-framework/object-details/object-details.component.d.ts +6 -2
  44. package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
  45. package/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.d.ts.map +1 -1
  46. package/app/eo-framework/util/services/utilities.service.d.ts +190 -0
  47. package/app/eo-framework/util/services/utilities.service.d.ts.map +1 -1
  48. package/app/eo-framework-core/api/grid.service.d.ts +1 -5
  49. package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
  50. package/assets/_default/i18n/de.json +16 -3
  51. package/assets/_default/i18n/en.json +20 -7
  52. package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
  53. package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +161 -42
  54. package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +78 -15
  55. package/esm2022/app/eo-client/dashboard/widgets/charts-widget/icharts.mjs +1 -1
  56. package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +20 -12
  57. package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +7 -3
  58. package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.mjs +1 -1
  59. package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.mjs +1 -1
  60. package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +35 -23
  61. package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +7 -8
  62. package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +16 -10
  63. package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.mjs +3 -4
  64. package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +15 -9
  65. package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +16 -10
  66. package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.mjs +15 -9
  67. package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +11 -13
  68. package/esm2022/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +4 -7
  69. package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +3 -3
  70. package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +7 -10
  71. package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +4 -4
  72. package/esm2022/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +6 -6
  73. package/esm2022/app/eo-client/process-state/process-state.component.mjs +3 -3
  74. package/esm2022/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +4 -4
  75. package/esm2022/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +4 -5
  76. package/esm2022/app/eo-client/version-state/version-state.component.mjs +3 -3
  77. package/esm2022/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +3 -3
  78. package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +3 -2
  79. package/esm2022/app/eo-framework/app-shell/license-warning/license-warning.component.mjs +3 -3
  80. package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +7 -5
  81. package/esm2022/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +2 -2
  82. package/esm2022/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +3 -3
  83. package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +1 -14
  84. package/esm2022/app/eo-framework/grid/filters/datetime-filter.component.mjs +6 -33
  85. package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +1 -17
  86. package/esm2022/app/eo-framework/grid/filters/filesize-filter.component.mjs +2 -2
  87. package/esm2022/app/eo-framework/grid/grid.component.mjs +11 -12
  88. package/esm2022/app/eo-framework/object-details/object-details.component.mjs +40 -12
  89. package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +3 -3
  90. package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +4 -4
  91. package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +7 -7
  92. package/esm2022/app/eo-framework/object-form/object-form/object-form.component.mjs +3 -3
  93. package/esm2022/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +3 -3
  94. package/esm2022/app/eo-framework/result-list/result-list.component.mjs +4 -4
  95. package/esm2022/app/eo-framework/util/services/utilities.service.mjs +4 -1
  96. package/esm2022/app/eo-framework-core/api/grid.service.mjs +12 -24
  97. package/fesm2022/eo-sdk-client.mjs +636 -443
  98. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  99. package/misc/scripts/exclude-core-ng-package.js +11 -0
  100. package/misc/scripts/prebuild-about-state.js +2 -3
  101. package/package.json +6 -6
@@ -7,12 +7,11 @@ import * as i0 from "@angular/core";
7
7
  import * as i1 from "@angular/router";
8
8
  import * as i2 from "@eo-sdk/core";
9
9
  import * as i3 from "../../../../eo-framework-core";
10
- import * as i4 from "@angular/common";
11
- import * as i5 from "../../../../eo-framework/ui/eo-icon/eo-icon.component";
12
- import * as i6 from "../../../../eo-framework/ui/loading-spinner/loading-spinner.component";
13
- import * as i7 from "../../../../eo-framework/ui/error-message/error-message.component";
14
- import * as i8 from "@carbon/charts-angular";
15
- import * as i9 from "@ngx-translate/core";
10
+ import * as i4 from "../../../../eo-framework/ui/eo-icon/eo-icon.component";
11
+ import * as i5 from "../../../../eo-framework/ui/loading-spinner/loading-spinner.component";
12
+ import * as i6 from "../../../../eo-framework/ui/error-message/error-message.component";
13
+ import * as i7 from "@carbon/charts-angular";
14
+ import * as i8 from "@ngx-translate/core";
16
15
  let ChartsWidgetComponent = class ChartsWidgetComponent {
17
16
  set widgetConfig(c) {
18
17
  this._widgetConfig = c;
@@ -24,7 +23,7 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
24
23
  if (this._widgetConfig?.formValue?.interval) {
25
24
  this.rangeValues = this.generateRange(this._widgetConfig?.formValue?.interval, this._widgetConfig?.formValue?.startingpoint, this._widgetConfig?.formValue?.size);
26
25
  }
27
- this.generateChartData(this._widgetConfig?.formValue?.aggregation, this._widgetConfig?.aggregationType, this._widgetConfig?.formValue?.histogramType, this.rangeValues);
26
+ this.generateChartData(this._widgetConfig?.formValue?.aggregation, this._widgetConfig?.aggregationType, this._widgetConfig?.formValue?.histogramType, this.rangeValues, this._widgetConfig?.formValue?.sortRevert, this._widgetConfig?.formValue?.attributMetric, this._widgetConfig?.formValue?.metric, this._widgetConfig?.formValue?.minDocCount);
28
27
  }
29
28
  }, (error) => {
30
29
  if (error.status === 404) {
@@ -32,6 +31,9 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
32
31
  }
33
32
  throw error;
34
33
  });
34
+ if (this.widgetConfig?.formValue?.title || this.widgetConfig?.formValue?.xAxe || this.widgetConfig?.formValue?.yAxe) {
35
+ this.setLegendDiagramm();
36
+ }
35
37
  }
36
38
  }
37
39
  get widgetConfig() {
@@ -45,6 +47,7 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
45
47
  this.translate = translate;
46
48
  this.systemService = systemService;
47
49
  this.sharedOptions = {
50
+ title: '',
48
51
  color: {
49
52
  text: '#925699',
50
53
  label: '#925699'
@@ -65,10 +68,12 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
65
68
  bottom: {
66
69
  mapsTo: 'date',
67
70
  scaleType: 'time',
71
+ title: ''
68
72
  },
69
73
  left: {
70
74
  mapsTo: 'value',
71
75
  scaleType: 'linear',
76
+ title: ''
72
77
  },
73
78
  },
74
79
  };
@@ -84,10 +89,12 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
84
89
  axes: {
85
90
  left: {
86
91
  mapsTo: 'value',
92
+ title: ''
87
93
  },
88
94
  bottom: {
89
95
  mapsTo: 'group',
90
96
  scaleType: 'labels',
97
+ title: ''
91
98
  },
92
99
  },
93
100
  legend: {
@@ -114,7 +121,7 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
114
121
  }
115
122
  return rangeValues;
116
123
  }
117
- generateChartData(field, type, histogramType, rangeValues) {
124
+ generateChartData(field, type, histogramType, rangeValues, sort, attributMetric, metric, minDocCount) {
118
125
  this.refreshingRequest = true;
119
126
  const queryName = this._query.name;
120
127
  delete this._query.name;
@@ -163,20 +170,65 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
163
170
  this.refreshingRequest = false;
164
171
  }
165
172
  }
173
+ else if (attributMetric && metric) {
174
+ const fieldKey = field.replace('sysobject.', '').replace('sysdocument.', '');
175
+ const attributMetricKey = attributMetric.replace('sysobject.', '').replace('sysdocument.', '');
176
+ let aggsQquery;
177
+ aggsQquery = {
178
+ [fieldKey]: {
179
+ size: this._widgetConfig?.formValue?.size || 10,
180
+ order: sort ? 'asc' : 'desc',
181
+ sort: attributMetricKey + '.value',
182
+ sub: {
183
+ [attributMetricKey]: {
184
+ metrics: this._widgetConfig?.formValue?.metric
185
+ }
186
+ }
187
+ }
188
+ };
189
+ this.searchService.executeQuery({
190
+ aggs: aggsQquery,
191
+ ...this._query.getQueryJson()
192
+ }, true).subscribe((res) => {
193
+ this.refreshingRequest = false;
194
+ this._query.name = queryName;
195
+ if (res.aggregations[Object.keys(res.aggregations)[0]].buckets.length > 0) {
196
+ this.chartData = res.aggregations[Object.keys(res.aggregations)[0]].buckets.map((e) => {
197
+ return {
198
+ group: e.key.replace('_', '-'),
199
+ value: e[metric + '#' + attributMetric].value,
200
+ };
201
+ });
202
+ }
203
+ else {
204
+ this.chartData = [];
205
+ this.refreshingRequest = false;
206
+ }
207
+ }, (error) => {
208
+ this.chartData = [];
209
+ this.refreshingRequest = false;
210
+ });
211
+ }
166
212
  else {
167
213
  const fieldKey = field.replace('sysobject.', '').replace('sysdocument.', '');
168
214
  let aggsQquery;
169
- if (Object.keys(rangeValues).length !== 0) {
215
+ if (Object.keys(rangeValues).length !== 0 && type === 'NUMBER') {
170
216
  aggsQquery = {
171
217
  [fieldKey]: {
172
218
  size: this._widgetConfig?.formValue?.size || 10,
173
- rg: rangeValues
219
+ rg: rangeValues,
220
+ order: sort ? 'asc' : 'desc',
221
+ sort: '_count',
222
+ min_doc_count: minDocCount
174
223
  }
175
224
  };
176
225
  }
177
226
  else {
178
227
  aggsQquery = {
179
228
  [fieldKey]: {
229
+ order: sort ? 'asc' : 'desc',
230
+ sort: '_count',
231
+ min_doc_count: minDocCount,
180
232
  size: this._widgetConfig?.formValue?.size || 10,
181
233
  }
182
234
  };
@@ -198,7 +250,7 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
198
250
  }
199
251
  else {
200
252
  return {
201
- group: e.key,
253
+ group: e.key.replace('_', '-'),
202
254
  value: e.doc_count,
203
255
  };
204
256
  }
@@ -258,12 +310,23 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
258
310
  this.appSearchService.setQuery(this.storedQuery);
259
311
  this.router.navigate([{ outlets: { modal: 'search' } }]);
260
312
  }
313
+ setLegendDiagramm() {
314
+ this.sharedOptions.title = this.widgetConfig?.formValue.title;
315
+ this.sharedOptions.axes.bottom.title = this.widgetConfig?.formValue.xAxe;
316
+ this.sharedOptions.axes.left.title = this.widgetConfig?.formValue.yAxe;
317
+ this.chartOptions.title = this.widgetConfig?.formValue.title;
318
+ this.chartOptions.axes.bottom.title = this.widgetConfig?.formValue.xAxe;
319
+ this.chartOptions.axes.left.title = this.widgetConfig?.formValue.yAxe;
320
+ this.chartOptions2.title = this.widgetConfig?.formValue.title;
321
+ this.chartOptions2.axes.bottom.title = this.widgetConfig?.formValue.xAxe;
322
+ this.chartOptions2.axes.left.title = this._widgetConfig?.formValue.yAxe;
323
+ }
261
324
  refresh() {
262
325
  this.getStoredQuery(this._widgetConfig.storedQuery).subscribe(() => {
263
326
  this._query = this.searchService.buildQuery(this.storedQuery);
264
327
  this._widgetConfig.formValue.storedQuery = this.storedQuery.name;
265
328
  if (this._widgetConfig?.formValue?.aggregation) {
266
- this.generateChartData(this._widgetConfig?.formValue?.aggregation, this._widgetConfig?.aggregationType, this._widgetConfig?.formValue?.histogramType, this.rangeValues);
329
+ this.generateChartData(this._widgetConfig?.formValue?.aggregation, this._widgetConfig?.aggregationType, this._widgetConfig?.formValue?.histogramType, this.rangeValues, this._widgetConfig?.formValue?.sortRevert, this._widgetConfig?.formValue?.attributMetric, this._widgetConfig?.formValue?.metric, this._widgetConfig?.formValue?.minDocCount);
267
330
  }
268
331
  }, (error) => {
269
332
  this.chartData = [];
@@ -279,7 +342,7 @@ let ChartsWidgetComponent = class ChartsWidgetComponent {
279
342
  window.open(url, event?.ctrlKey || this.editMode ? '_blank' : '_self');
280
343
  }
281
344
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ChartsWidgetComponent, deps: [{ token: i1.Router }, { token: i2.SearchService }, { token: i3.AppSearchService }, { token: i2.StoredQueriesService }, { token: i2.TranslateService }, { token: i2.SystemService }], target: i0.ɵɵFactoryTarget.Component }); }
282
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: ChartsWidgetComponent, selector: "eo-charts-widget", inputs: { editMode: "editMode", widgetConfig: "widgetConfig" }, ngImport: i0, template: "<header>\n <div class=\"header-title\">\n <div class=\"title\" *ngIf=\"widgetConfig?.formValue?.storedQuery\">\n {{widgetConfig?.formValue?.storedQuery}}</div>\n <div class=\"icons-title\" *ngIf=\"this.widgetConfig?.storedQuery\">\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\" (click)=\"setQueryToAppSearch()\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.savedSearchIcon'| translate)\"></eo-icon>\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_open_tab.svg'\"\n (click)=\"onEmitQueryClick($event)\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.openinresultlist'| translate)\"></eo-icon>\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"refresh()\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.refresh'| translate)\"></eo-icon>\n </div>\n </div>\n</header>\n\n<main class=\"loader-overlay__mask\" *ngIf=\"refreshingRequest\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n</main>\n\n<main class=\"chart\" *ngIf=\"chartData.length > 0 && !refreshingRequest; else tplEmpty\">\n <div class=\"item\" [ngSwitch]=\"widgetConfig!.formValue.chartType\">\n <ibm-simple-bar-chart *ngSwitchCase=\"'bar'\" [data]=\"chartData\" [options]=\"chartOptions\"></ibm-simple-bar-chart>\n <ibm-pie-chart *ngSwitchCase=\"'pie'\" [data]=\"chartData\" [options]=\"chartOptions\"></ibm-pie-chart>\n <ibm-donut-chart *ngSwitchCase=\"'donut'\" [data]=\"chartData\" [options]=\"chartOptions\"></ibm-donut-chart>\n <ibm-line-chart *ngSwitchCase=\"'lineStraight'\" [data]=\"chartData\" [options]=\"chartOptions2\"></ibm-line-chart>\n <ibm-line-chart *ngSwitchCase=\"'lineCurve'\" [data]=\"chartData\" [options]=\"sharedOptions\"></ibm-line-chart>\n </div>\n</main>\n<ng-template #tplEmpty>\n <div class=\"empty\" *ngIf=\"!refreshingRequest\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n</ng-template>\n", styles: [":host{height:100%;display:grid;grid-template-rows:auto 1fr;grid-template-areas:\"header\" \"main\";background-color:var(--panel-background);color:var(--text-color-body)}:host header{height:40px;display:inline-grid;color:#fff}:host header .header-title{background-color:var(--color-primary-2);display:flex;justify-content:space-between;align-items:center}:host header .title{text-align:center;flex-grow:1;justify-content:center}:host header .icons-title{justify-content:flex-end;display:flex;gap:3px;position:relative;align-items:center;right:13px}:host header .icons-title eo-icon.button.primary{color:rgba(var(--color-white-rgb),.5)}:host header .icons-title eo-icon.button.primary:hover{cursor:pointer;color:var(--color-white)}:host main{grid-area:main}:host main.loader-overlay__mask{display:flex;width:100%;height:100%;flex-flow:column;align-items:center;justify-content:center;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .2s;animation:eoFadeIn .2s}:host main.chart{overflow-y:auto}:host main.chart .item{padding:calc(var(--app-pane-padding) / 2)}:host .empty{display:contents}::ng-deep .cds--cc--chart-wrapper text{fill:#000}::ng-deep .cds--cc--chart-wrapper p{color:#000}::ng-deep .cds--cc--axes g.axis g.tick text{fill:#000}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i5.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i6.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i7.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i8.SimpleBarChartComponent, selector: "ibm-simple-bar-chart" }, { kind: "component", type: i8.DonutChartComponent, selector: "ibm-donut-chart" }, { kind: "component", type: i8.LineChartComponent, selector: "ibm-line-chart" }, { kind: "component", type: i8.PieChartComponent, selector: "ibm-pie-chart" }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
345
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ChartsWidgetComponent, selector: "eo-charts-widget", inputs: { editMode: "editMode", widgetConfig: "widgetConfig" }, ngImport: i0, template: "<header>\n <div class=\"header-title\">\n @if (widgetConfig?.formValue?.storedQuery) {\n <div class=\"title\">{{ widgetConfig?.formValue?.storedQuery }}</div>\n <div class=\"icons-title\">\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\"\n (click)=\"setQueryToAppSearch()\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.savedSearchIcon'| translate)\"></eo-icon>\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_open_tab.svg'\"\n (click)=\"onEmitQueryClick($event)\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.openinresultlist'| translate)\"></eo-icon>\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"refresh()\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.refresh'| translate)\"></eo-icon>\n </div>\n }\n </div>\n</header>\n\n@if (refreshingRequest) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n} @else if (chartData.length > 0 && !refreshingRequest) {\n <main class=\"chart\">\n <div class=\"item\">\n @switch (widgetConfig!.formValue.chartType) {\n @case ('bar') {\n <ibm-simple-bar-chart [data]=\"chartData\" [options]=\"chartOptions\"></ibm-simple-bar-chart>\n }\n @case ('pie') {\n <ibm-pie-chart [data]=\"chartData\" [options]=\"chartOptions\"></ibm-pie-chart>\n }\n @case ('donut') {\n <ibm-donut-chart [data]=\"chartData\" [options]=\"chartOptions\"></ibm-donut-chart>\n }\n @case ('lineStraight') {\n <ibm-line-chart [data]=\"chartData\" [options]=\"chartOptions2\"></ibm-line-chart>\n }\n @case ('lineCurve') {\n <ibm-line-chart [data]=\"chartData\" [options]=\"sharedOptions\"></ibm-line-chart>\n }\n }\n </div>\n </main>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n}\n", styles: [":host{height:100%;display:grid;grid-template-rows:auto 1fr;grid-template-areas:\"header\" \"main\";background-color:var(--panel-background);color:var(--text-color-body)}:host header{height:40px;display:inline-grid;color:#fff}:host header .header-title{background-color:var(--color-primary-2);display:flex;justify-content:space-between;align-items:center}:host header .title{text-align:center;flex-grow:1;justify-content:center}:host header .icons-title{justify-content:flex-end;display:flex;gap:3px;position:relative;align-items:center;right:13px}:host header .icons-title eo-icon.button.primary{color:rgba(var(--color-white-rgb),.5)}:host header .icons-title eo-icon.button.primary:hover{cursor:pointer;color:var(--color-white)}:host main{grid-area:main}:host main.loader-overlay__mask{display:flex;width:100%;height:100%;flex-flow:column;align-items:center;justify-content:center;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .2s;animation:eoFadeIn .2s}:host main.chart{overflow-y:hidden}:host main.chart .item{height:92%;padding:calc(var(--app-pane-padding) / 2)}:host .empty{display:contents}::ng-deep .cds--cc--chart-wrapper text{fill:#000}::ng-deep .cds--chart-holder{height:100%!important}::ng-deep .cds--cc--chart-wrapper p{color:#000}::ng-deep .cds--cc--axes g.axis g.tick text{fill:#000}::ng-deep .cds--cc--title p.title,::ng-deep .yuv-widget-headline{font-size:var(--font-title)}::ng-deep .cds--cc--axes g.axis .axis-title{font-size:var(--font-subhead)}\n"], dependencies: [{ kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i5.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i6.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i7.SimpleBarChartComponent, selector: "ibm-simple-bar-chart" }, { kind: "component", type: i7.DonutChartComponent, selector: "ibm-donut-chart" }, { kind: "component", type: i7.LineChartComponent, selector: "ibm-line-chart" }, { kind: "component", type: i7.PieChartComponent, selector: "ibm-pie-chart" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
283
346
  };
284
347
  ChartsWidgetComponent = __decorate([
285
348
  UntilDestroy()
@@ -287,10 +350,10 @@ ChartsWidgetComponent = __decorate([
287
350
  export { ChartsWidgetComponent };
288
351
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ChartsWidgetComponent, decorators: [{
289
352
  type: Component,
290
- args: [{ selector: 'eo-charts-widget', template: "<header>\n <div class=\"header-title\">\n <div class=\"title\" *ngIf=\"widgetConfig?.formValue?.storedQuery\">\n {{widgetConfig?.formValue?.storedQuery}}</div>\n <div class=\"icons-title\" *ngIf=\"this.widgetConfig?.storedQuery\">\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\" (click)=\"setQueryToAppSearch()\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.savedSearchIcon'| translate)\"></eo-icon>\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_open_tab.svg'\"\n (click)=\"onEmitQueryClick($event)\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.openinresultlist'| translate)\"></eo-icon>\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"refresh()\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.refresh'| translate)\"></eo-icon>\n </div>\n </div>\n</header>\n\n<main class=\"loader-overlay__mask\" *ngIf=\"refreshingRequest\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n</main>\n\n<main class=\"chart\" *ngIf=\"chartData.length > 0 && !refreshingRequest; else tplEmpty\">\n <div class=\"item\" [ngSwitch]=\"widgetConfig!.formValue.chartType\">\n <ibm-simple-bar-chart *ngSwitchCase=\"'bar'\" [data]=\"chartData\" [options]=\"chartOptions\"></ibm-simple-bar-chart>\n <ibm-pie-chart *ngSwitchCase=\"'pie'\" [data]=\"chartData\" [options]=\"chartOptions\"></ibm-pie-chart>\n <ibm-donut-chart *ngSwitchCase=\"'donut'\" [data]=\"chartData\" [options]=\"chartOptions\"></ibm-donut-chart>\n <ibm-line-chart *ngSwitchCase=\"'lineStraight'\" [data]=\"chartData\" [options]=\"chartOptions2\"></ibm-line-chart>\n <ibm-line-chart *ngSwitchCase=\"'lineCurve'\" [data]=\"chartData\" [options]=\"sharedOptions\"></ibm-line-chart>\n </div>\n</main>\n<ng-template #tplEmpty>\n <div class=\"empty\" *ngIf=\"!refreshingRequest\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n</ng-template>\n", styles: [":host{height:100%;display:grid;grid-template-rows:auto 1fr;grid-template-areas:\"header\" \"main\";background-color:var(--panel-background);color:var(--text-color-body)}:host header{height:40px;display:inline-grid;color:#fff}:host header .header-title{background-color:var(--color-primary-2);display:flex;justify-content:space-between;align-items:center}:host header .title{text-align:center;flex-grow:1;justify-content:center}:host header .icons-title{justify-content:flex-end;display:flex;gap:3px;position:relative;align-items:center;right:13px}:host header .icons-title eo-icon.button.primary{color:rgba(var(--color-white-rgb),.5)}:host header .icons-title eo-icon.button.primary:hover{cursor:pointer;color:var(--color-white)}:host main{grid-area:main}:host main.loader-overlay__mask{display:flex;width:100%;height:100%;flex-flow:column;align-items:center;justify-content:center;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .2s;animation:eoFadeIn .2s}:host main.chart{overflow-y:auto}:host main.chart .item{padding:calc(var(--app-pane-padding) / 2)}:host .empty{display:contents}::ng-deep .cds--cc--chart-wrapper text{fill:#000}::ng-deep .cds--cc--chart-wrapper p{color:#000}::ng-deep .cds--cc--axes g.axis g.tick text{fill:#000}\n"] }]
353
+ args: [{ selector: 'eo-charts-widget', template: "<header>\n <div class=\"header-title\">\n @if (widgetConfig?.formValue?.storedQuery) {\n <div class=\"title\">{{ widgetConfig?.formValue?.storedQuery }}</div>\n <div class=\"icons-title\">\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_saved_search.svg'\"\n (click)=\"setQueryToAppSearch()\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.savedSearchIcon'| translate)\"></eo-icon>\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_open_tab.svg'\"\n (click)=\"onEmitQueryClick($event)\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.openinresultlist'| translate)\"></eo-icon>\n <eo-icon class=\"button primary\" [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" (click)=\"refresh()\"\n [iconTitle]=\"('eo.widget.hitlist.tooltip.refresh'| translate)\"></eo-icon>\n </div>\n }\n </div>\n</header>\n\n@if (refreshingRequest) {\n <main class=\"loader-overlay__mask\">\n <eo-loading-spinner [size]=\"'large'\"></eo-loading-spinner>\n </main>\n} @else if (chartData.length > 0 && !refreshingRequest) {\n <main class=\"chart\">\n <div class=\"item\">\n @switch (widgetConfig!.formValue.chartType) {\n @case ('bar') {\n <ibm-simple-bar-chart [data]=\"chartData\" [options]=\"chartOptions\"></ibm-simple-bar-chart>\n }\n @case ('pie') {\n <ibm-pie-chart [data]=\"chartData\" [options]=\"chartOptions\"></ibm-pie-chart>\n }\n @case ('donut') {\n <ibm-donut-chart [data]=\"chartData\" [options]=\"chartOptions\"></ibm-donut-chart>\n }\n @case ('lineStraight') {\n <ibm-line-chart [data]=\"chartData\" [options]=\"chartOptions2\"></ibm-line-chart>\n }\n @case ('lineCurve') {\n <ibm-line-chart [data]=\"chartData\" [options]=\"sharedOptions\"></ibm-line-chart>\n }\n }\n </div>\n </main>\n} @else {\n <div class=\"empty\">\n <eo-error-message\n [emptyState]=\"{icon: 'ic_saved_search.svg', text: 'eo.workspace.widget.configuration.notOk'}\"></eo-error-message>\n </div>\n}\n", styles: [":host{height:100%;display:grid;grid-template-rows:auto 1fr;grid-template-areas:\"header\" \"main\";background-color:var(--panel-background);color:var(--text-color-body)}:host header{height:40px;display:inline-grid;color:#fff}:host header .header-title{background-color:var(--color-primary-2);display:flex;justify-content:space-between;align-items:center}:host header .title{text-align:center;flex-grow:1;justify-content:center}:host header .icons-title{justify-content:flex-end;display:flex;gap:3px;position:relative;align-items:center;right:13px}:host header .icons-title eo-icon.button.primary{color:rgba(var(--color-white-rgb),.5)}:host header .icons-title eo-icon.button.primary:hover{cursor:pointer;color:var(--color-white)}:host main{grid-area:main}:host main.loader-overlay__mask{display:flex;width:100%;height:100%;flex-flow:column;align-items:center;justify-content:center;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .2s;animation:eoFadeIn .2s}:host main.chart{overflow-y:hidden}:host main.chart .item{height:92%;padding:calc(var(--app-pane-padding) / 2)}:host .empty{display:contents}::ng-deep .cds--cc--chart-wrapper text{fill:#000}::ng-deep .cds--chart-holder{height:100%!important}::ng-deep .cds--cc--chart-wrapper p{color:#000}::ng-deep .cds--cc--axes g.axis g.tick text{fill:#000}::ng-deep .cds--cc--title p.title,::ng-deep .yuv-widget-headline{font-size:var(--font-title)}::ng-deep .cds--cc--axes g.axis .axis-title{font-size:var(--font-subhead)}\n"] }]
291
354
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.SearchService }, { type: i3.AppSearchService }, { type: i2.StoredQueriesService }, { type: i2.TranslateService }, { type: i2.SystemService }], propDecorators: { editMode: [{
292
355
  type: Input
293
356
  }], widgetConfig: [{
294
357
  type: Input
295
358
  }] } });
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRzLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWNsaWVudC9kYXNoYm9hcmQvd2lkZ2V0cy9jaGFydHMtd2lkZ2V0L2NoYXJ0cy13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvZGFzaGJvYXJkL3dpZGdldHMvY2hhcnRzLXdpZGdldC9jaGFydHMtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQWlHLEtBQUssRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUluSSxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRW5FLE9BQU8sRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7OztBQVF6QixJQUFNLHFCQUFxQixHQUEzQixNQUFNLHFCQUFxQjtJQWlFaEMsSUFBYSxZQUFZLENBQUMsQ0FBc0I7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztZQUNsRixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDakUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxhQUFhLENBQUMsU0FB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QUM7UUFDbkYsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OEdBN1JVLHFCQUFxQjtrR0FBckIscUJBQXFCLHdIQ2ZsQyxncUVBbUNBOztBRHBCYSxxQkFBcUI7SUFOakMsWUFBWSxFQUFFO0dBTUYscUJBQXFCLENBOFJqQzs7MkZBOVJZLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxrQkFBa0I7b09BbUVuQixRQUFRO3NCQUFoQixLQUFLO2dCQUVPLFlBQVk7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTZWFyY2hRdWVyeSwgU2VhcmNoU2VydmljZSwgU3RvcmVkUXVlcmllc1NlcnZpY2UsIFN0b3JlZFF1ZXJ5LCBTeXN0ZW1TZXJ2aWNlLCBUcmFuc2xhdGVTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7SVdpZGdldENvbXBvbmVudH0gZnJvbSAnQHl1dXZpcy93aWRnZXQtZ3JpZCc7XG5pbXBvcnQge0ljaGFydHN9IGZyb20gJy4vaWNoYXJ0cyc7XG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtFTVBUWSwgdGFwfSBmcm9tICdyeGpzJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1jaGFydHMtd2lkZ2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0cy13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydHMtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRzV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgSVdpZGdldENvbXBvbmVudCB7XG4gIGhpc3RvZ3JhbTogYW55O1xuICBzaGFyZWRPcHRpb25zID0ge1xuICAgIGNvbG9yOiB7XG4gICAgICB0ZXh0OiAnIzkyNTY5OScsXG4gICAgICBsYWJlbDogJyM5MjU2OTknXG4gICAgfSxcbiAgICBsZWdlbmQ6IHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAgcmVzaXphYmxlOiB0cnVlLFxuICAgIGRvbnV0OiB7XG4gICAgICAnYWxpZ25tZW50JzogJ2NlbnRlcidcbiAgICB9LFxuXG4gICAgdG9vbGJhcjoge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgfSxcbiAgICBoZWlnaHQ6ICc0MDBweCcsXG4gICAgY3VydmU6ICdjdXJ2ZU1vbm90b25lWCcsXG4gICAgYXhlczoge1xuICAgICAgYm90dG9tOiB7XG4gICAgICAgIG1hcHNUbzogJ2RhdGUnLFxuICAgICAgICBzY2FsZVR5cGU6ICd0aW1lJyxcbiAgICAgIH0sXG4gICAgICBsZWZ0OiB7XG4gICAgICAgIG1hcHNUbzogJ3ZhbHVlJyxcbiAgICAgICAgc2NhbGVUeXBlOiAnbGluZWFyJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICBjaGFydE9wdGlvbnMyID0ge1xuICAgIC4uLnRoaXMuc2hhcmVkT3B0aW9ucyxcbiAgICBjdXJ2ZTogdW5kZWZpbmVkLFxuICAgIGxlZ2VuZDoge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgfSxcbiAgfTtcblxuICBjaGFydE9wdGlvbnMgPSB7XG4gICAgLi4udGhpcy5zaGFyZWRPcHRpb25zLFxuICAgIGF4ZXM6IHtcbiAgICAgIGxlZnQ6IHtcbiAgICAgICAgbWFwc1RvOiAndmFsdWUnLFxuICAgICAgfSxcbiAgICAgIGJvdHRvbToge1xuICAgICAgICBtYXBzVG86ICdncm91cCcsXG4gICAgICAgIHNjYWxlVHlwZTogJ2xhYmVscycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgbGVnZW5kOiB7XG4gICAgICAnYWxpZ25tZW50JzogJ2NlbnRlcidcbiAgICB9LFxuICB9O1xuXG4gIGNoYXJ0RGF0YToge2dyb3VwOiBzdHJpbmc7IHZhbHVlOiBhbnk7IGRhdGU6IHN0cmluZ31bXSA9IFtdO1xuICBwcml2YXRlIF9xdWVyeTogU2VhcmNoUXVlcnk7XG4gIHJlZnJlc2hpbmdSZXF1ZXN0OiBib29sZWFuO1xuICBzdG9yZWRRdWVyeTogU3RvcmVkUXVlcnk7XG4gIHByaXZhdGUgX3dpZGdldENvbmZpZzogSWNoYXJ0cyB8IHVuZGVmaW5lZDtcbiAgcmFuZ2VWYWx1ZXMgPSBbXTtcblxuICBASW5wdXQoKSBlZGl0TW9kZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNldCB3aWRnZXRDb25maWcoYzogSWNoYXJ0cyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3dpZGdldENvbmZpZyA9IGM7XG4gICAgaWYgKHRoaXMuX3dpZGdldENvbmZpZz8uc3RvcmVkUXVlcnkgJiYgdGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LmFnZ3JlZ2F0aW9uKSB7XG4gICAgICB0aGlzLmdldFN0b3JlZFF1ZXJ5KHRoaXMuX3dpZGdldENvbmZpZy5zdG9yZWRRdWVyeSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fcXVlcnkgPSB0aGlzLnNlYXJjaFNlcnZpY2UuYnVpbGRRdWVyeSh0aGlzLnN0b3JlZFF1ZXJ5KTtcbiAgICAgICAgdGhpcy5fd2lkZ2V0Q29uZmlnLmZvcm1WYWx1ZS5zdG9yZWRRdWVyeSA9IHRoaXMuc3RvcmVkUXVlcnkubmFtZTtcbiAgICAgICAgaWYgKHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5hZ2dyZWdhdGlvbikge1xuICAgICAgICAgIGlmKHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5pbnRlcnZhbCkge1xuICAgICAgICAgICAgdGhpcy5yYW5nZVZhbHVlcyA9IHRoaXMuZ2VuZXJhdGVSYW5nZSh0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uaW50ZXJ2YWwsIHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5zdGFydGluZ3BvaW50LCB0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uc2l6ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVDaGFydERhdGEodGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LmFnZ3JlZ2F0aW9uLCB0aGlzLl93aWRnZXRDb25maWc/LmFnZ3JlZ2F0aW9uVHlwZSwgdGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/Lmhpc3RvZ3JhbVR5cGUsIHRoaXMucmFuZ2VWYWx1ZXMpO1xuICAgICAgICB9XG4gICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHdpZGdldENvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5fd2lkZ2V0Q29uZmlnO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcHBTZWFyY2hTZXJ2aWNlOiBBcHBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmVkUXVlcmllc1NlcnZpY2U6IFN0b3JlZFF1ZXJpZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZVxuICApIHsgfVxuXG4gIGdldFN0b3JlZFF1ZXJ5KGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZWRRdWVyaWVzU2VydmljZS5nZXRTdG9yZWRRdWVyeShpZCkucGlwZShcbiAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpLFxuICAgICAgdGFwKHN0b3JlZFF1ZXJ5ID0+IHtcbiAgICAgICAgdGhpcy5zdG9yZWRRdWVyeSA9IHN0b3JlZFF1ZXJ5O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVJhbmdlKGludGVydmFsLCBzdGFydCwgc2l6ZSkge1xuICAgIGNvbnN0IHJhbmdlVmFsdWVzID0gW107XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBzaXplOyBqKyspIHtcbiAgICAgIGNvbnN0IHJhbmdlSXRlbSA9IHtcbiAgICAgICAgbzE6IHBhcnNlRmxvYXQoc3RhcnQgKyBqICogaW50ZXJ2YWwpLFxuICAgICAgICBvMjogcGFyc2VGbG9hdChzdGFydCArIChqICsgMSkgKmludGVydmFsKSxcbiAgICAgIH07XG4gICAgICByYW5nZVZhbHVlcy5wdXNoKHJhbmdlSXRlbSk7XG4gICAgfVxuICAgIHJldHVybiByYW5nZVZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVDaGFydERhdGEoZmllbGQsIHR5cGUsIGhpc3RvZ3JhbVR5cGUsIHJhbmdlVmFsdWVzKSB7XG4gICAgdGhpcy5yZWZyZXNoaW5nUmVxdWVzdCA9IHRydWU7XG4gICAgY29uc3QgcXVlcnlOYW1lID0gdGhpcy5fcXVlcnkubmFtZTtcbiAgICBkZWxldGUgdGhpcy5fcXVlcnkubmFtZTtcbiAgICB0aGlzLl9xdWVyeSA9IHRoaXMuc2VhcmNoU2VydmljZS5idWlsZFF1ZXJ5KHRoaXMuX3F1ZXJ5KTtcbiAgICBcbiAgICBpZiAodHlwZSA9PT0gJ0RBVEVUSU1FJyAmJiBoaXN0b2dyYW1UeXBlKSB7XG4gICAgICBjb25zdCBoaXN0b2dyYW1Db25maWcgPSB7XG4gICAgICAgICd5ZWFybHknOiB7Y2FsZW5kYXJfaW50ZXJ2YWw6ICd5ZWFyJywgZm9ybWF0OiAneXl5eSd9LFxuICAgICAgICAnd2Vla2x5Jzoge2NhbGVuZGFyX2ludGVydmFsOiAnd2VlaycsIGZvcm1hdDogJ3l5eXktd3cnfSxcbiAgICAgICAgJ21vbnRobHknOiB7Y2FsZW5kYXJfaW50ZXJ2YWw6ICdtb250aCcsIGZvcm1hdDogJ3l5eXktTU0nfSxcbiAgICAgICAgJ2RhaWx5Jzoge2NhbGVuZGFyX2ludGVydmFsOiAnZGF5JywgZm9ybWF0OiAneXl5eS1NTS1kZCd9XG4gICAgICB9O1xuICAgICAgaWYgKGhpc3RvZ3JhbUNvbmZpZy5oYXNPd25Qcm9wZXJ0eShoaXN0b2dyYW1UeXBlKSkge1xuICAgICAgICB0aGlzLmhpc3RvZ3JhbSA9IGhpc3RvZ3JhbUNvbmZpZ1toaXN0b2dyYW1UeXBlXTtcbiAgICAgICAgdGhpcy5oaXN0b2dyYW0uc2l6ZSA9IHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5zaXplID8gdGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LnNpemUgOiAxMDtcbiAgICAgICAgY29uc3QgcXVlcnkgPSB7XG4gICAgICAgICAgYWdnczoge1xuICAgICAgICAgICAgW2ZpZWxkLnJlcGxhY2UoJ3N5c29iamVjdC4nLCAnJyldOiB7XG4gICAgICAgICAgICAgIGhpc3RvZ3JhbTogdGhpcy5oaXN0b2dyYW1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnRoaXMuX3F1ZXJ5LmdldFF1ZXJ5SnNvbigpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5leGVjdXRlUXVlcnkocXVlcnksIHRydWUpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoaW5nUmVxdWVzdCA9IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9uS2V5ID0gT2JqZWN0LmtleXMocmVzLmFnZ3JlZ2F0aW9ucylbMF07XG4gICAgICAgICAgdGhpcy5fcXVlcnkubmFtZSA9IHF1ZXJ5TmFtZTtcbiAgICAgICAgICBpZiAodGhpcy53aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uY2hhcnRUeXBlID09PSAnbGluZUN1cnZlJyB8fCB0aGlzLndpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5jaGFydFR5cGUgPT09ICdsaW5lU3RyYWlnaHQnKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0RGF0YSA9IHJlcy5hZ2dyZWdhdGlvbnNbYWdncmVnYXRpb25LZXldLmJ1Y2tldHMubWFwKChlKSA9PiAoe1xuICAgICAgICAgICAgICBncm91cDogJ2RhdGFzZXQxJyxcbiAgICAgICAgICAgICAgdmFsdWU6IGUuZG9jX2NvdW50LFxuICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShlLmtleSkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGFydERhdGEgPSByZXMuYWdncmVnYXRpb25zW2FnZ3JlZ2F0aW9uS2V5XS5idWNrZXRzLm1hcCgoZSkgPT4gKHtcbiAgICAgICAgICAgICAgZ3JvdXA6IGUua2V5X2FzX3N0cmluZyxcbiAgICAgICAgICAgICAgdmFsdWU6IGUuZG9jX2NvdW50LFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnREYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hpbmdSZXF1ZXN0ID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlZnJlc2hpbmdSZXF1ZXN0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpZWxkS2V5ID0gZmllbGQucmVwbGFjZSgnc3lzb2JqZWN0LicsICcnKS5yZXBsYWNlKCdzeXNkb2N1bWVudC4nLCAnJyk7XG4gICAgICBsZXQgYWdnc1FxdWVyeTtcbiAgICAgIFxuICAgICAgaWYgKE9iamVjdC5rZXlzKHJhbmdlVmFsdWVzKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgYWdnc1FxdWVyeSA9IHtcbiAgICAgICAgICBbZmllbGRLZXldOiB7XG4gICAgICAgICAgICBzaXplOiB0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uc2l6ZSB8fCAxMCxcbiAgICAgICAgICAgIHJnOiByYW5nZVZhbHVlc1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFnZ3NRcXVlcnkgPSB7XG4gICAgICAgICAgW2ZpZWxkS2V5XToge1xuICAgICAgICAgICAgc2l6ZTogdGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LnNpemUgfHwgMTAsXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmV4ZWN1dGVRdWVyeShcbiAgICAgICAge1xuICAgICAgICAgICAgYWdnczogYWdnc1FxdWVyeVxuICAgICAgICAgICwgLi4udGhpcy5fcXVlcnkuZ2V0UXVlcnlKc29uKClcbiAgICAgICAgfSwgdHJ1ZSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoaW5nUmVxdWVzdCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX3F1ZXJ5Lm5hbWUgPSBxdWVyeU5hbWU7XG4gICAgICAgICAgaWYgKHJlcy5hZ2dyZWdhdGlvbnNbT2JqZWN0LmtleXMocmVzLmFnZ3JlZ2F0aW9ucylbMF1dLmJ1Y2tldHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jaGFydERhdGEgPSByZXMuYWdncmVnYXRpb25zW09iamVjdC5rZXlzKHJlcy5hZ2dyZWdhdGlvbnMpWzBdXS5idWNrZXRzLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ0JPT0xFQU4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGdyb3VwOiBlLmtleSA9PT0gMCA/ICdcXHUyNjEwJyA6ICdcXHUyNjExJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLmRvY19jb3VudCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBncm91cDogZS5rZXksXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogZS5kb2NfY291bnQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnREYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hpbmdSZXF1ZXN0ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uYWdncmVnYXRpb24gPT09ICdzeXNvYmplY3QubW9kaWZpZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0RGF0YSA9IHJlcy5hZ2dyZWdhdGlvbnMubW9kaWZpZWQuYnVja2V0cy5tYXAoKGUpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBncm91cDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLmFnZy50aW1lLicgKyBlLmtleSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGUuZG9jX2NvdW50LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uYWdncmVnYXRpb24gPT09ICdzeXNvYmplY3QuY3JlYXRlZCcpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnREYXRhID0gcmVzLmFnZ3JlZ2F0aW9ucy5jcmVhdGVkLmJ1Y2tldHMubWFwKChlKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5hZ2cudGltZS4nICsgZS5rZXkpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBlLmRvY19jb3VudCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LmFnZ3JlZ2F0aW9uID09PSAnc3lzZG9jdW1lbnQubWltZXR5cGVncm91cCcpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnREYXRhID0gcmVzLmFnZ3JlZ2F0aW9ucy5taW1ldHlwZWdyb3VwLmJ1Y2tldHMubWFwKChlKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZ3JvdXA6IGUua2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBlLmRvY19jb3VudCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LmFnZ3JlZ2F0aW9uID09PSAnc3lzb2JqZWN0LnR5cGUnKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0RGF0YSA9IHJlcy5hZ2dyZWdhdGlvbnMudHlwZS5idWNrZXRzLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShlLmtleSkubGFiZWwsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGUuZG9jX2NvdW50LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uYWdncmVnYXRpb24gPT09ICdzeXNkb2N1bWVudC5maWxlc2l6ZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnREYXRhID0gcmVzLmFnZ3JlZ2F0aW9ucy5maWxlc2l6ZS5idWNrZXRzLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guYWdnLmZpbGVzaXplLicgKyBlLmtleSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGUuZG9jX2NvdW50LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGFydERhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaGluZ1JlcXVlc3QgPSBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRRdWVyeVRvQXBwU2VhcmNoKCkge1xuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRRdWVyeSh0aGlzLnN0b3JlZFF1ZXJ5KTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbe291dGxldHM6IHttb2RhbDogJ3NlYXJjaCd9fV0pO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmdldFN0b3JlZFF1ZXJ5KHRoaXMuX3dpZGdldENvbmZpZy5zdG9yZWRRdWVyeSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3F1ZXJ5ID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmJ1aWxkUXVlcnkodGhpcy5zdG9yZWRRdWVyeSk7XG4gICAgICB0aGlzLl93aWRnZXRDb25maWcuZm9ybVZhbHVlLnN0b3JlZFF1ZXJ5ID0gdGhpcy5zdG9yZWRRdWVyeS5uYW1lO1xuICAgICAgaWYgKHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5hZ2dyZWdhdGlvbikge1xuICAgICAgICB0aGlzLmdlbmVyYXRlQ2hhcnREYXRhKHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5hZ2dyZWdhdGlvbiwgdGhpcy5fd2lkZ2V0Q29uZmlnPy5hZ2dyZWdhdGlvblR5cGUsIHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5oaXN0b2dyYW1UeXBlLCB0aGlzLnJhbmdlVmFsdWVzKTtcbiAgICAgIH1cbiAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgIHRoaXMuY2hhcnREYXRhID0gW107XG4gICAgICB0aGlzLnJlZnJlc2hpbmdSZXF1ZXN0ID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBvbkVtaXRRdWVyeUNsaWNrKGV2ZW50KSB7XG4gICAgZGVsZXRlIHRoaXMuX3F1ZXJ5LmZpZWxkcztcbiAgICBjb25zdCB1cmlQYXJhbSA9IGVuY29kZVVSSUNvbXBvbmVudChVdGlscy5mb3JtRGF0YVN0cmluZ2lmeSh0aGlzLl9xdWVyeS5nZXRRdWVyeUpzb24oKSkpO1xuICAgIGNvbnN0IHVyaVBhcmFtUXVlcnk6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHsncXVlcnknOiB1cmlQYXJhbX19O1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh1cmlQYXJhbVF1ZXJ5LnF1ZXJ5UGFyYW1zKS50b1N0cmluZygpO1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCcvZGFzaGJvYXJkJylbMF0gKyAnL3Jlc3VsdD8nICsgcXVlcnlQYXJhbXM7XG4gICAgd2luZG93Lm9wZW4odXJsLCBldmVudD8uY3RybEtleSB8fCB0aGlzLmVkaXRNb2RlID8gJ19ibGFuaycgOiAnX3NlbGYnKTtcbiAgfVxufVxuIiwiPGhlYWRlcj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiICpuZ0lmPVwid2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LnN0b3JlZFF1ZXJ5XCI+XG4gICAgICAgICAgICB7e3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5zdG9yZWRRdWVyeX19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpY29ucy10aXRsZVwiICpuZ0lmPVwidGhpcy53aWRnZXRDb25maWc/LnN0b3JlZFF1ZXJ5XCI+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2F2ZWRfc2VhcmNoLnN2ZydcIiAoY2xpY2spPVwic2V0UXVlcnlUb0FwcFNlYXJjaCgpXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby53aWRnZXQuaGl0bGlzdC50b29sdGlwLnNhdmVkU2VhcmNoSWNvbid8IHRyYW5zbGF0ZSlcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfb3Blbl90YWIuc3ZnJ1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRW1pdFF1ZXJ5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLndpZGdldC5oaXRsaXN0LnRvb2x0aXAub3BlbmlucmVzdWx0bGlzdCd8IHRyYW5zbGF0ZSlcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfcmVmcmVzaC5zdmcnXCIgKGNsaWNrKT1cInJlZnJlc2goKVwiXG4gICAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLndpZGdldC5oaXRsaXN0LnRvb2x0aXAucmVmcmVzaCd8IHRyYW5zbGF0ZSlcIj48L2VvLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9oZWFkZXI+XG5cbjxtYWluIGNsYXNzPVwibG9hZGVyLW92ZXJsYXlfX21hc2tcIiAqbmdJZj1cInJlZnJlc2hpbmdSZXF1ZXN0XCI+XG4gICAgPGVvLWxvYWRpbmctc3Bpbm5lciBbc2l6ZV09XCInbGFyZ2UnXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG48L21haW4+XG5cbjxtYWluIGNsYXNzPVwiY2hhcnRcIiAqbmdJZj1cImNoYXJ0RGF0YS5sZW5ndGggPiAwICYmICFyZWZyZXNoaW5nUmVxdWVzdDsgZWxzZSB0cGxFbXB0eVwiPlxuICAgIDxkaXYgY2xhc3M9XCJpdGVtXCIgW25nU3dpdGNoXT1cIndpZGdldENvbmZpZyEuZm9ybVZhbHVlLmNoYXJ0VHlwZVwiPlxuICAgICAgICA8aWJtLXNpbXBsZS1iYXItY2hhcnQgKm5nU3dpdGNoQ2FzZT1cIidiYXInXCIgW2RhdGFdPVwiY2hhcnREYXRhXCIgW29wdGlvbnNdPVwiY2hhcnRPcHRpb25zXCI+PC9pYm0tc2ltcGxlLWJhci1jaGFydD5cbiAgICAgICAgPGlibS1waWUtY2hhcnQgKm5nU3dpdGNoQ2FzZT1cIidwaWUnXCIgW2RhdGFdPVwiY2hhcnREYXRhXCIgW29wdGlvbnNdPVwiY2hhcnRPcHRpb25zXCI+PC9pYm0tcGllLWNoYXJ0PlxuICAgICAgICA8aWJtLWRvbnV0LWNoYXJ0ICpuZ1N3aXRjaENhc2U9XCInZG9udXQnXCIgW2RhdGFdPVwiY2hhcnREYXRhXCIgW29wdGlvbnNdPVwiY2hhcnRPcHRpb25zXCI+PC9pYm0tZG9udXQtY2hhcnQ+XG4gICAgICAgIDxpYm0tbGluZS1jaGFydCAqbmdTd2l0Y2hDYXNlPVwiJ2xpbmVTdHJhaWdodCdcIiBbZGF0YV09XCJjaGFydERhdGFcIiBbb3B0aW9uc109XCJjaGFydE9wdGlvbnMyXCI+PC9pYm0tbGluZS1jaGFydD5cbiAgICAgICAgPGlibS1saW5lLWNoYXJ0ICpuZ1N3aXRjaENhc2U9XCInbGluZUN1cnZlJ1wiIFtkYXRhXT1cImNoYXJ0RGF0YVwiIFtvcHRpb25zXT1cInNoYXJlZE9wdGlvbnNcIj48L2libS1saW5lLWNoYXJ0PlxuICAgIDwvZGl2PlxuPC9tYWluPlxuPG5nLXRlbXBsYXRlICN0cGxFbXB0eT5cbiAgICA8ZGl2IGNsYXNzPVwiZW1wdHlcIiAqbmdJZj1cIiFyZWZyZXNoaW5nUmVxdWVzdFwiPlxuICAgICAgICA8ZW8tZXJyb3ItbWVzc2FnZVxuICAgICAgICAgICAgW2VtcHR5U3RhdGVdPVwie2ljb246ICdpY19zYXZlZF9zZWFyY2guc3ZnJywgdGV4dDogJ2VvLndvcmtzcGFjZS53aWRnZXQuY29uZmlndXJhdGlvbi5ub3RPayd9XCI+PC9lby1lcnJvci1tZXNzYWdlPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRzLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWNsaWVudC9kYXNoYm9hcmQvd2lkZ2V0cy9jaGFydHMtd2lkZ2V0L2NoYXJ0cy13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvZGFzaGJvYXJkL3dpZGdldHMvY2hhcnRzLXdpZGdldC9jaGFydHMtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQWlHLEtBQUssRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUluSSxPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRW5FLE9BQU8sRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBUXpCLElBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXFCO0lBc0VoQyxJQUFhLFlBQVksQ0FBQyxDQUFzQjtRQUM5QyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ2xGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNqRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFT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Q29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtTZWFyY2hRdWVyeSwgU2VhcmNoU2VydmljZSwgU3RvcmVkUXVlcmllc1NlcnZpY2UsIFN0b3JlZFF1ZXJ5LCBTeXN0ZW1TZXJ2aWNlLCBUcmFuc2xhdGVTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7SVdpZGdldENvbXBvbmVudH0gZnJvbSAnQHl1dXZpcy93aWRnZXQtZ3JpZCc7XG5pbXBvcnQge0ljaGFydHN9IGZyb20gJy4vaWNoYXJ0cyc7XG5pbXBvcnQge0FwcFNlYXJjaFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtFTVBUWSwgdGFwfSBmcm9tICdyeGpzJztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1jaGFydHMtd2lkZ2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0cy13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGFydHMtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRzV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgSVdpZGdldENvbXBvbmVudCB7XG4gIGhpc3RvZ3JhbTogYW55O1xuICBzaGFyZWRPcHRpb25zID0ge1xuICAgIHRpdGxlOiAnJyxcbiAgICBjb2xvcjoge1xuICAgICAgdGV4dDogJyM5MjU2OTknLFxuICAgICAgbGFiZWw6ICcjOTI1Njk5J1xuICAgIH0sXG4gICAgbGVnZW5kOiB7XG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICB9LFxuICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICBkb251dDoge1xuICAgICAgJ2FsaWdubWVudCc6ICdjZW50ZXInXG4gICAgfSxcblxuICAgIHRvb2xiYXI6IHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAgaGVpZ2h0OiAnNDAwcHgnLFxuICAgIGN1cnZlOiAnY3VydmVNb25vdG9uZVgnLFxuICAgIGF4ZXM6IHtcbiAgICAgIGJvdHRvbToge1xuICAgICAgICBtYXBzVG86ICdkYXRlJyxcbiAgICAgICAgc2NhbGVUeXBlOiAndGltZScsXG4gICAgICAgIHRpdGxlOiAnJ1xuICAgICAgfSxcbiAgICAgIGxlZnQ6IHtcbiAgICAgICAgbWFwc1RvOiAndmFsdWUnLFxuICAgICAgICBzY2FsZVR5cGU6ICdsaW5lYXInLFxuICAgICAgICB0aXRsZTogJydcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICBjaGFydE9wdGlvbnMyID0ge1xuICAgIC4uLnRoaXMuc2hhcmVkT3B0aW9ucyxcbiAgICBjdXJ2ZTogdW5kZWZpbmVkLFxuICAgIGxlZ2VuZDoge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgfSxcbiAgfTtcblxuICBjaGFydE9wdGlvbnMgPSB7XG4gICAgLi4udGhpcy5zaGFyZWRPcHRpb25zLFxuICAgIGF4ZXM6IHtcbiAgICAgIGxlZnQ6IHtcbiAgICAgICAgbWFwc1RvOiAndmFsdWUnLFxuICAgICAgICB0aXRsZTogJydcbiAgICAgIH0sXG4gICAgICBib3R0b206IHtcbiAgICAgICAgbWFwc1RvOiAnZ3JvdXAnLFxuICAgICAgICBzY2FsZVR5cGU6ICdsYWJlbHMnLFxuICAgICAgICB0aXRsZTogJydcbiAgICAgIH0sXG4gICAgfSxcbiAgICBsZWdlbmQ6IHtcbiAgICAgICdhbGlnbm1lbnQnOiAnY2VudGVyJ1xuICAgIH0sXG4gIH07XG5cbiAgY2hhcnREYXRhOiB7Z3JvdXA6IHN0cmluZzsgdmFsdWU6IGFueTsgZGF0ZTogc3RyaW5nfVtdID0gW107XG4gIHByaXZhdGUgX3F1ZXJ5OiBTZWFyY2hRdWVyeTtcbiAgcmVmcmVzaGluZ1JlcXVlc3Q6IGJvb2xlYW47XG4gIHN0b3JlZFF1ZXJ5OiBTdG9yZWRRdWVyeTtcbiAgcHJpdmF0ZSBfd2lkZ2V0Q29uZmlnOiBJY2hhcnRzIHwgdW5kZWZpbmVkO1xuICByYW5nZVZhbHVlcyA9IFtdO1xuXG4gIEBJbnB1dCgpIGVkaXRNb2RlID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IHdpZGdldENvbmZpZyhjOiBJY2hhcnRzIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fd2lkZ2V0Q29uZmlnID0gYztcbiAgICBpZiAodGhpcy5fd2lkZ2V0Q29uZmlnPy5zdG9yZWRRdWVyeSAmJiB0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uYWdncmVnYXRpb24pIHtcbiAgICAgIHRoaXMuZ2V0U3RvcmVkUXVlcnkodGhpcy5fd2lkZ2V0Q29uZmlnLnN0b3JlZFF1ZXJ5KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9xdWVyeSA9IHRoaXMuc2VhcmNoU2VydmljZS5idWlsZFF1ZXJ5KHRoaXMuc3RvcmVkUXVlcnkpO1xuICAgICAgICB0aGlzLl93aWRnZXRDb25maWcuZm9ybVZhbHVlLnN0b3JlZFF1ZXJ5ID0gdGhpcy5zdG9yZWRRdWVyeS5uYW1lO1xuICAgICAgICBpZiAodGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LmFnZ3JlZ2F0aW9uKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5pbnRlcnZhbCkge1xuICAgICAgICAgICAgdGhpcy5yYW5nZVZhbHVlcyA9IHRoaXMuZ2VuZXJhdGVSYW5nZSh0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uaW50ZXJ2YWwsIHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5zdGFydGluZ3BvaW50LCB0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uc2l6ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVDaGFydERhdGEodGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LmFnZ3JlZ2F0aW9uLCB0aGlzLl93aWRnZXRDb25maWc/LmFnZ3JlZ2F0aW9uVHlwZSxcbiAgICAgICAgICAgIHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5oaXN0b2dyYW1UeXBlLFxuICAgICAgICAgICAgdGhpcy5yYW5nZVZhbHVlcywgdGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LnNvcnRSZXZlcnQsXG4gICAgICAgICAgICB0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uYXR0cmlidXRNZXRyaWMsXG4gICAgICAgICAgICB0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8ubWV0cmljLCB0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8ubWluRG9jQ291bnRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSk7XG4gICAgICBpZiAodGhpcy53aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8udGl0bGUgfHwgdGhpcy53aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8ueEF4ZSB8fCB0aGlzLndpZGdldENvbmZpZz8uZm9ybVZhbHVlPy55QXhlKSB7XG4gICAgICAgIHRoaXMuc2V0TGVnZW5kRGlhZ3JhbW0oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgd2lkZ2V0Q29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLl93aWRnZXRDb25maWc7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFNlYXJjaFNlcnZpY2U6IEFwcFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yZWRRdWVyaWVzU2VydmljZTogU3RvcmVkUXVlcmllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlXG4gICkgeyB9XG5cbiAgZ2V0U3RvcmVkUXVlcnkoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnN0b3JlZFF1ZXJpZXNTZXJ2aWNlLmdldFN0b3JlZFF1ZXJ5KGlkKS5waXBlKFxuICAgICAgdW50aWxEZXN0cm95ZWQodGhpcyksXG4gICAgICB0YXAoc3RvcmVkUXVlcnkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlZFF1ZXJ5ID0gc3RvcmVkUXVlcnk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlUmFuZ2UoaW50ZXJ2YWwsIHN0YXJ0LCBzaXplKSB7XG4gICAgY29uc3QgcmFuZ2VWYWx1ZXMgPSBbXTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNpemU7IGorKykge1xuICAgICAgY29uc3QgcmFuZ2VJdGVtID0ge1xuICAgICAgICBvMTogcGFyc2VGbG9hdChzdGFydCArIGogKiBpbnRlcnZhbCksXG4gICAgICAgIG8yOiBwYXJzZUZsb2F0KHN0YXJ0ICsgKGogKyAxKSAqIGludGVydmFsKSxcbiAgICAgIH07XG4gICAgICByYW5nZVZhbHVlcy5wdXNoKHJhbmdlSXRlbSk7XG4gICAgfVxuICAgIHJldHVybiByYW5nZVZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVDaGFydERhdGEoZmllbGQsIHR5cGUsIGhpc3RvZ3JhbVR5cGUsIHJhbmdlVmFsdWVzLCBzb3J0LCBhdHRyaWJ1dE1ldHJpYywgbWV0cmljLCBtaW5Eb2NDb3VudCkge1xuICAgIHRoaXMucmVmcmVzaGluZ1JlcXVlc3QgPSB0cnVlO1xuICAgIGNvbnN0IHF1ZXJ5TmFtZSA9IHRoaXMuX3F1ZXJ5Lm5hbWU7XG4gICAgZGVsZXRlIHRoaXMuX3F1ZXJ5Lm5hbWU7XG4gICAgdGhpcy5fcXVlcnkgPSB0aGlzLnNlYXJjaFNlcnZpY2UuYnVpbGRRdWVyeSh0aGlzLl9xdWVyeSk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ0RBVEVUSU1FJyAmJiBoaXN0b2dyYW1UeXBlKSB7XG4gICAgICBjb25zdCBoaXN0b2dyYW1Db25maWcgPSB7XG4gICAgICAgICd5ZWFybHknOiB7Y2FsZW5kYXJfaW50ZXJ2YWw6ICd5ZWFyJywgZm9ybWF0OiAneXl5eSd9LFxuICAgICAgICAnd2Vla2x5Jzoge2NhbGVuZGFyX2ludGVydmFsOiAnd2VlaycsIGZvcm1hdDogJ3l5eXktd3cnfSxcbiAgICAgICAgJ21vbnRobHknOiB7Y2FsZW5kYXJfaW50ZXJ2YWw6ICdtb250aCcsIGZvcm1hdDogJ3l5eXktTU0nfSxcbiAgICAgICAgJ2RhaWx5Jzoge2NhbGVuZGFyX2ludGVydmFsOiAnZGF5JywgZm9ybWF0OiAneXl5eS1NTS1kZCd9XG4gICAgICB9O1xuICAgICAgaWYgKGhpc3RvZ3JhbUNvbmZpZy5oYXNPd25Qcm9wZXJ0eShoaXN0b2dyYW1UeXBlKSkge1xuICAgICAgICB0aGlzLmhpc3RvZ3JhbSA9IGhpc3RvZ3JhbUNvbmZpZ1toaXN0b2dyYW1UeXBlXTtcbiAgICAgICAgdGhpcy5oaXN0b2dyYW0uc2l6ZSA9IHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5zaXplID8gdGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LnNpemUgOiAxMDtcbiAgICAgICAgY29uc3QgcXVlcnkgPSB7XG4gICAgICAgICAgYWdnczoge1xuICAgICAgICAgICAgW2ZpZWxkLnJlcGxhY2UoJ3N5c29iamVjdC4nLCAnJyldOiB7XG4gICAgICAgICAgICAgIGhpc3RvZ3JhbTogdGhpcy5oaXN0b2dyYW1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnRoaXMuX3F1ZXJ5LmdldFF1ZXJ5SnNvbigpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5leGVjdXRlUXVlcnkocXVlcnksIHRydWUpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoaW5nUmVxdWVzdCA9IGZhbHNlO1xuICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9uS2V5ID0gT2JqZWN0LmtleXMocmVzLmFnZ3JlZ2F0aW9ucylbMF07XG4gICAgICAgICAgdGhpcy5fcXVlcnkubmFtZSA9IHF1ZXJ5TmFtZTtcbiAgICAgICAgICBpZiAodGhpcy53aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uY2hhcnRUeXBlID09PSAnbGluZUN1cnZlJyB8fCB0aGlzLndpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5jaGFydFR5cGUgPT09ICdsaW5lU3RyYWlnaHQnKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0RGF0YSA9IHJlcy5hZ2dyZWdhdGlvbnNbYWdncmVnYXRpb25LZXldLmJ1Y2tldHMubWFwKChlKSA9PiAoe1xuICAgICAgICAgICAgICBncm91cDogJ2RhdGFzZXQxJyxcbiAgICAgICAgICAgICAgdmFsdWU6IGUuZG9jX2NvdW50LFxuICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShlLmtleSkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGFydERhdGEgPSByZXMuYWdncmVnYXRpb25zW2FnZ3JlZ2F0aW9uS2V5XS5idWNrZXRzLm1hcCgoZSkgPT4gKHtcbiAgICAgICAgICAgICAgZ3JvdXA6IGUua2V5X2FzX3N0cmluZyxcbiAgICAgICAgICAgICAgdmFsdWU6IGUuZG9jX2NvdW50LFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnREYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hpbmdSZXF1ZXN0ID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlZnJlc2hpbmdSZXF1ZXN0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhdHRyaWJ1dE1ldHJpYyAmJiBtZXRyaWMpIHtcbiAgICAgIGNvbnN0IGZpZWxkS2V5ID0gZmllbGQucmVwbGFjZSgnc3lzb2JqZWN0LicsICcnKS5yZXBsYWNlKCdzeXNkb2N1bWVudC4nLCAnJyk7XG4gICAgICBjb25zdCBhdHRyaWJ1dE1ldHJpY0tleSA9IGF0dHJpYnV0TWV0cmljLnJlcGxhY2UoJ3N5c29iamVjdC4nLCAnJykucmVwbGFjZSgnc3lzZG9jdW1lbnQuJywgJycpO1xuICAgICAgbGV0IGFnZ3NRcXVlcnk7XG4gICAgICBhZ2dzUXF1ZXJ5ID0ge1xuICAgICAgICBbZmllbGRLZXldOiB7XG4gICAgICAgICAgc2l6ZTogdGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LnNpemUgfHwgMTAsXG4gICAgICAgICAgb3JkZXI6IHNvcnQgPyAnYXNjJyA6ICdkZXNjJyxcbiAgICAgICAgICBzb3J0OiBhdHRyaWJ1dE1ldHJpY0tleSArICcudmFsdWUnLFxuICAgICAgICAgIHN1Yjoge1xuICAgICAgICAgICAgW2F0dHJpYnV0TWV0cmljS2V5XToge1xuICAgICAgICAgICAgICBtZXRyaWNzOiB0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8ubWV0cmljXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmV4ZWN1dGVRdWVyeShcbiAgICAgICAge1xuICAgICAgICAgIGFnZ3M6IGFnZ3NRcXVlcnlcbiAgICAgICAgICAsIC4uLnRoaXMuX3F1ZXJ5LmdldFF1ZXJ5SnNvbigpXG4gICAgICAgIH0sIHRydWUpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoaW5nUmVxdWVzdCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX3F1ZXJ5Lm5hbWUgPSBxdWVyeU5hbWU7XG4gICAgICAgICAgaWYgKHJlcy5hZ2dyZWdhdGlvbnNbT2JqZWN0LmtleXMocmVzLmFnZ3JlZ2F0aW9ucylbMF1dLmJ1Y2tldHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jaGFydERhdGEgPSByZXMuYWdncmVnYXRpb25zW09iamVjdC5rZXlzKHJlcy5hZ2dyZWdhdGlvbnMpWzBdXS5idWNrZXRzLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGdyb3VwOiBlLmtleS5yZXBsYWNlKCdfJywgJy0nKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZVttZXRyaWMgKyAnIycgKyBhdHRyaWJ1dE1ldHJpY10udmFsdWUsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGFydERhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaGluZ1JlcXVlc3QgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0RGF0YSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoaW5nUmVxdWVzdCA9IGZhbHNlO1xuICAgICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaWVsZEtleSA9IGZpZWxkLnJlcGxhY2UoJ3N5c29iamVjdC4nLCAnJykucmVwbGFjZSgnc3lzZG9jdW1lbnQuJywgJycpO1xuICAgICAgbGV0IGFnZ3NRcXVlcnk7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyhyYW5nZVZhbHVlcykubGVuZ3RoICE9PSAwICYmIHR5cGUgPT09ICdOVU1CRVInKSB7XG4gICAgICAgIGFnZ3NRcXVlcnkgPSB7XG4gICAgICAgICAgW2ZpZWxkS2V5XToge1xuICAgICAgICAgICAgc2l6ZTogdGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LnNpemUgfHwgMTAsXG4gICAgICAgICAgICByZzogcmFuZ2VWYWx1ZXMsXG4gICAgICAgICAgICBvcmRlcjogc29ydCA/ICdhc2MnIDogJ2Rlc2MnLFxuICAgICAgICAgICAgc29ydDogJ19jb3VudCcsXG4gICAgICAgICAgICBtaW5fZG9jX2NvdW50OiBtaW5Eb2NDb3VudFxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFnZ3NRcXVlcnkgPSB7XG4gICAgICAgICAgW2ZpZWxkS2V5XToge1xuICAgICAgICAgICAgb3JkZXI6IHNvcnQgPyAnYXNjJyA6ICdkZXNjJyxcbiAgICAgICAgICAgIHNvcnQ6ICdfY291bnQnLFxuICAgICAgICAgICAgbWluX2RvY19jb3VudDogbWluRG9jQ291bnQsXG4gICAgICAgICAgICBzaXplOiB0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uc2l6ZSB8fCAxMCxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2UuZXhlY3V0ZVF1ZXJ5KFxuICAgICAgICB7XG4gICAgICAgICAgYWdnczogYWdnc1FxdWVyeVxuICAgICAgICAgICwgLi4udGhpcy5fcXVlcnkuZ2V0UXVlcnlKc29uKClcbiAgICAgICAgfSwgdHJ1ZSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoaW5nUmVxdWVzdCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX3F1ZXJ5Lm5hbWUgPSBxdWVyeU5hbWU7XG4gICAgICAgICAgaWYgKHJlcy5hZ2dyZWdhdGlvbnNbT2JqZWN0LmtleXMocmVzLmFnZ3JlZ2F0aW9ucylbMF1dLmJ1Y2tldHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jaGFydERhdGEgPSByZXMuYWdncmVnYXRpb25zW09iamVjdC5rZXlzKHJlcy5hZ2dyZWdhdGlvbnMpWzBdXS5idWNrZXRzLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ0JPT0xFQU4nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGdyb3VwOiBlLmtleSA9PT0gMCA/ICdcXHUyNjEwJyA6ICdcXHUyNjExJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLmRvY19jb3VudCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBncm91cDogZS5rZXkucmVwbGFjZSgnXycsICctJyksXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogZS5kb2NfY291bnQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnREYXRhID0gW107XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hpbmdSZXF1ZXN0ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uYWdncmVnYXRpb24gPT09ICdzeXNvYmplY3QubW9kaWZpZWQnKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0RGF0YSA9IHJlcy5hZ2dyZWdhdGlvbnMubW9kaWZpZWQuYnVja2V0cy5tYXAoKGUpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBncm91cDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc2VhcmNoLmFnZy50aW1lLicgKyBlLmtleSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGUuZG9jX2NvdW50LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uYWdncmVnYXRpb24gPT09ICdzeXNvYmplY3QuY3JlYXRlZCcpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnREYXRhID0gcmVzLmFnZ3JlZ2F0aW9ucy5jcmVhdGVkLmJ1Y2tldHMubWFwKChlKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZ3JvdXA6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnNlYXJjaC5hZ2cudGltZS4nICsgZS5rZXkpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBlLmRvY19jb3VudCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LmFnZ3JlZ2F0aW9uID09PSAnc3lzZG9jdW1lbnQubWltZXR5cGVncm91cCcpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnREYXRhID0gcmVzLmFnZ3JlZ2F0aW9ucy5taW1ldHlwZWdyb3VwLmJ1Y2tldHMubWFwKChlKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZ3JvdXA6IGUua2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBlLmRvY19jb3VudCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LmFnZ3JlZ2F0aW9uID09PSAnc3lzb2JqZWN0LnR5cGUnKSB7XG4gICAgICAgICAgICB0aGlzLmNoYXJ0RGF0YSA9IHJlcy5hZ2dyZWdhdGlvbnMudHlwZS5idWNrZXRzLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZShlLmtleSkubGFiZWwsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGUuZG9jX2NvdW50LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8uYWdncmVnYXRpb24gPT09ICdzeXNkb2N1bWVudC5maWxlc2l6ZScpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnREYXRhID0gcmVzLmFnZ3JlZ2F0aW9ucy5maWxlc2l6ZS5idWNrZXRzLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGdyb3VwOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zZWFyY2guYWdnLmZpbGVzaXplLicgKyBlLmtleSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGUuZG9jX2NvdW50LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGFydERhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaGluZ1JlcXVlc3QgPSBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRRdWVyeVRvQXBwU2VhcmNoKCkge1xuICAgIHRoaXMuYXBwU2VhcmNoU2VydmljZS5zZXRRdWVyeSh0aGlzLnN0b3JlZFF1ZXJ5KTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbe291dGxldHM6IHttb2RhbDogJ3NlYXJjaCd9fV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMZWdlbmREaWFncmFtbSgpIHtcbiAgICB0aGlzLnNoYXJlZE9wdGlvbnMudGl0bGUgPSB0aGlzLndpZGdldENvbmZpZz8uZm9ybVZhbHVlLnRpdGxlO1xuICAgIHRoaXMuc2hhcmVkT3B0aW9ucy5heGVzLmJvdHRvbS50aXRsZSA9IHRoaXMud2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWUueEF4ZTtcbiAgICB0aGlzLnNoYXJlZE9wdGlvbnMuYXhlcy5sZWZ0LnRpdGxlID0gdGhpcy53aWRnZXRDb25maWc/LmZvcm1WYWx1ZS55QXhlO1xuXG4gICAgdGhpcy5jaGFydE9wdGlvbnMudGl0bGUgPSB0aGlzLndpZGdldENvbmZpZz8uZm9ybVZhbHVlLnRpdGxlO1xuICAgIHRoaXMuY2hhcnRPcHRpb25zLmF4ZXMuYm90dG9tLnRpdGxlID0gdGhpcy53aWRnZXRDb25maWc/LmZvcm1WYWx1ZS54QXhlO1xuICAgIHRoaXMuY2hhcnRPcHRpb25zLmF4ZXMubGVmdC50aXRsZSA9IHRoaXMud2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWUueUF4ZTtcblxuICAgIHRoaXMuY2hhcnRPcHRpb25zMi50aXRsZSA9IHRoaXMud2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWUudGl0bGU7XG4gICAgdGhpcy5jaGFydE9wdGlvbnMyLmF4ZXMuYm90dG9tLnRpdGxlID0gdGhpcy53aWRnZXRDb25maWc/LmZvcm1WYWx1ZS54QXhlO1xuICAgIHRoaXMuY2hhcnRPcHRpb25zMi5heGVzLmxlZnQudGl0bGUgPSB0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZS55QXhlO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmdldFN0b3JlZFF1ZXJ5KHRoaXMuX3dpZGdldENvbmZpZy5zdG9yZWRRdWVyeSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3F1ZXJ5ID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmJ1aWxkUXVlcnkodGhpcy5zdG9yZWRRdWVyeSk7XG4gICAgICB0aGlzLl93aWRnZXRDb25maWcuZm9ybVZhbHVlLnN0b3JlZFF1ZXJ5ID0gdGhpcy5zdG9yZWRRdWVyeS5uYW1lO1xuICAgICAgaWYgKHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5hZ2dyZWdhdGlvbikge1xuICAgICAgICB0aGlzLmdlbmVyYXRlQ2hhcnREYXRhKHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5hZ2dyZWdhdGlvbiwgdGhpcy5fd2lkZ2V0Q29uZmlnPy5hZ2dyZWdhdGlvblR5cGUsXG4gICAgICAgICAgdGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/Lmhpc3RvZ3JhbVR5cGUsIHRoaXMucmFuZ2VWYWx1ZXMsIHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5zb3J0UmV2ZXJ0LFxuICAgICAgICAgIHRoaXMuX3dpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5hdHRyaWJ1dE1ldHJpYywgdGhpcy5fd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/Lm1ldHJpYyxcbiAgICAgICAgICB0aGlzLl93aWRnZXRDb25maWc/LmZvcm1WYWx1ZT8ubWluRG9jQ291bnQsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICB0aGlzLmNoYXJ0RGF0YSA9IFtdO1xuICAgICAgdGhpcy5yZWZyZXNoaW5nUmVxdWVzdCA9IGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgb25FbWl0UXVlcnlDbGljayhldmVudCkge1xuICAgIGRlbGV0ZSB0aGlzLl9xdWVyeS5maWVsZHM7XG4gICAgY29uc3QgdXJpUGFyYW0gPSBlbmNvZGVVUklDb21wb25lbnQoVXRpbHMuZm9ybURhdGFTdHJpbmdpZnkodGhpcy5fcXVlcnkuZ2V0UXVlcnlKc29uKCkpKTtcbiAgICBjb25zdCB1cmlQYXJhbVF1ZXJ5OiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7J3F1ZXJ5JzogdXJpUGFyYW19fTtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXModXJpUGFyYW1RdWVyeS5xdWVyeVBhcmFtcykudG9TdHJpbmcoKTtcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnL2Rhc2hib2FyZCcpWzBdICsgJy9yZXN1bHQ/JyArIHF1ZXJ5UGFyYW1zO1xuICAgIHdpbmRvdy5vcGVuKHVybCwgZXZlbnQ/LmN0cmxLZXkgfHwgdGhpcy5lZGl0TW9kZSA/ICdfYmxhbmsnIDogJ19zZWxmJyk7XG4gIH1cbn1cbiIsIjxoZWFkZXI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItdGl0bGVcIj5cbiAgICBAaWYgKHdpZGdldENvbmZpZz8uZm9ybVZhbHVlPy5zdG9yZWRRdWVyeSkge1xuICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3sgd2lkZ2V0Q29uZmlnPy5mb3JtVmFsdWU/LnN0b3JlZFF1ZXJ5IH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvbnMtdGl0bGVcIj5cbiAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NhdmVkX3NlYXJjaC5zdmcnXCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFF1ZXJ5VG9BcHBTZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby53aWRnZXQuaGl0bGlzdC50b29sdGlwLnNhdmVkU2VhcmNoSWNvbid8IHRyYW5zbGF0ZSlcIj48L2VvLWljb24+XG4gICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19vcGVuX3RhYi5zdmcnXCJcbiAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRW1pdFF1ZXJ5Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby53aWRnZXQuaGl0bGlzdC50b29sdGlwLm9wZW5pbnJlc3VsdGxpc3QnfCB0cmFuc2xhdGUpXCI+PC9lby1pY29uPlxuICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfcmVmcmVzaC5zdmcnXCIgKGNsaWNrKT1cInJlZnJlc2goKVwiXG4gICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby53aWRnZXQuaGl0bGlzdC50b29sdGlwLnJlZnJlc2gnfCB0cmFuc2xhdGUpXCI+PC9lby1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvaGVhZGVyPlxuXG5AaWYgKHJlZnJlc2hpbmdSZXF1ZXN0KSB7XG4gIDxtYWluIGNsYXNzPVwibG9hZGVyLW92ZXJsYXlfX21hc2tcIj5cbiAgICA8ZW8tbG9hZGluZy1zcGlubmVyIFtzaXplXT1cIidsYXJnZSdcIj48L2VvLWxvYWRpbmctc3Bpbm5lcj5cbiAgPC9tYWluPlxufSBAZWxzZSBpZiAoY2hhcnREYXRhLmxlbmd0aCA+IDAgJiYgIXJlZnJlc2hpbmdSZXF1ZXN0KSB7XG4gIDxtYWluIGNsYXNzPVwiY2hhcnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiPlxuICAgICAgQHN3aXRjaCAod2lkZ2V0Q29uZmlnIS5mb3JtVmFsdWUuY2hhcnRUeXBlKSB7XG4gICAgICAgIEBjYXNlICgnYmFyJykge1xuICAgICAgICAgIDxpYm0tc2ltcGxlLWJhci1jaGFydCBbZGF0YV09XCJjaGFydERhdGFcIiBbb3B0aW9uc109XCJjaGFydE9wdGlvbnNcIj48L2libS1zaW1wbGUtYmFyLWNoYXJ0PlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgncGllJykge1xuICAgICAgICAgIDxpYm0tcGllLWNoYXJ0IFtkYXRhXT1cImNoYXJ0RGF0YVwiIFtvcHRpb25zXT1cImNoYXJ0T3B0aW9uc1wiPjwvaWJtLXBpZS1jaGFydD5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoJ2RvbnV0Jykge1xuICAgICAgICAgIDxpYm0tZG9udXQtY2hhcnQgW2RhdGFdPVwiY2hhcnREYXRhXCIgW29wdGlvbnNdPVwiY2hhcnRPcHRpb25zXCI+PC9pYm0tZG9udXQtY2hhcnQ+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdsaW5lU3RyYWlnaHQnKSB7XG4gICAgICAgICAgPGlibS1saW5lLWNoYXJ0IFtkYXRhXT1cImNoYXJ0RGF0YVwiIFtvcHRpb25zXT1cImNoYXJ0T3B0aW9uczJcIj48L2libS1saW5lLWNoYXJ0PlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlICgnbGluZUN1cnZlJykge1xuICAgICAgICAgIDxpYm0tbGluZS1jaGFydCBbZGF0YV09XCJjaGFydERhdGFcIiBbb3B0aW9uc109XCJzaGFyZWRPcHRpb25zXCI+PC9pYm0tbGluZS1jaGFydD5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L21haW4+XG59IEBlbHNlIHtcbiAgPGRpdiBjbGFzcz1cImVtcHR5XCI+XG4gICAgPGVvLWVycm9yLW1lc3NhZ2VcbiAgICAgIFtlbXB0eVN0YXRlXT1cIntpY29uOiAnaWNfc2F2ZWRfc2VhcmNoLnN2ZycsIHRleHQ6ICdlby53b3Jrc3BhY2Uud2lkZ2V0LmNvbmZpZ3VyYXRpb24ubm90T2snfVwiPjwvZW8tZXJyb3ItbWVzc2FnZT5cbiAgPC9kaXY+XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNoYXJ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tY2xpZW50L2Rhc2hib2FyZC93aWRnZXRzL2NoYXJ0cy13aWRnZXQvaWNoYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJY2hhcnRzIHtcbiAgICBzdG9yZWRRdWVyeTogc3RyaW5nO1xuICAgIGZvcm1WYWx1ZToge1xuICAgICAgICBjaGFydFR5cGU6ICBzdHJpbmc7XG4gICAgICAgIC8vIG51bWJlciBvZiBpdGVtcyB0byBiZSBmZXRjaGVkXG4gICAgICAgIHNpemU6IG51bWJlcjtcbiAgICAgICAgYWdncmVnYXRpb246IHN0cmluZztcbiAgICAgICAgc3RvcmVkUXVlcnk6IHN0cmluZztcbiAgICAgICAgaGlzdG9ncmFtVHlwZTogc3RyaW5nO1xuICAgICAgICBpbnRlcnZhbDogbnVtYmVyO1xuICAgICAgICBzdGFydGluZ3BvaW50OiBudW1iZXI7XG4gICAgfTtcbiAgICBhZ2dyZWdhdGlvblR5cGU6IHN0cmluZztcbn1cblxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNoYXJ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tY2xpZW50L2Rhc2hib2FyZC93aWRnZXRzL2NoYXJ0cy13aWRnZXQvaWNoYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJY2hhcnRzIHtcbiAgICBzdG9yZWRRdWVyeTogc3RyaW5nO1xuICAgIGZvcm1WYWx1ZToge1xuICAgICAgICBjaGFydFR5cGU6IHN0cmluZztcbiAgICAgICAgLy8gbnVtYmVyIG9mIGl0ZW1zIHRvIGJlIGZldGNoZWRcbiAgICAgICAgc2l6ZTogbnVtYmVyO1xuICAgICAgICBhZ2dyZWdhdGlvbjogc3RyaW5nO1xuICAgICAgICBzdG9yZWRRdWVyeTogc3RyaW5nO1xuICAgICAgICBoaXN0b2dyYW1UeXBlOiBzdHJpbmc7XG4gICAgICAgIGF0dHJpYnV0TWV0cmljOiBzdHJpbmc7XG4gICAgICAgIG1ldHJpYzogc3RyaW5nO1xuICAgICAgICAvLyByZXZlcnQgc29ydCBkaXJlY3Rpb24gZnJvbSBBU0MgdG8gREVTQ1xuICAgICAgICBzb3J0UmV2ZXJ0PzogYm9vbGVhbjtcbiAgICAgICAgaW50ZXJ2YWw6IG51bWJlcjtcbiAgICAgICAgbWluRG9jQ291bnQ6IG51bWJlcjtcbiAgICAgICAgc3RhcnRpbmdwb2ludDogbnVtYmVyO1xuICAgICAgICB0aXRsZTogc3RyaW5nO1xuICAgICAgICB4QXhlOiBzdHJpbmc7XG4gICAgICAgIHlBeGU6IHN0cmluZztcbiAgICB9O1xuICAgIGFnZ3JlZ2F0aW9uVHlwZTogc3RyaW5nO1xufVxuXG4iXX0=