@c8y/ngx-components 1021.75.8 → 1021.77.0

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 (73) hide show
  1. package/branding/shared/supports-branding.service.d.ts.map +1 -1
  2. package/core/common/ApplicationOptions.d.ts +2 -2
  3. package/core/dashboard/widgets-dashboard.component.d.ts +4 -2
  4. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  5. package/core/login/login.component.d.ts.map +1 -1
  6. package/core/login/login.service.d.ts +1 -0
  7. package/core/login/login.service.d.ts.map +1 -1
  8. package/core/navigator/navigator-bottom/navigator-bottom.service.d.ts +3 -1
  9. package/core/navigator/navigator-bottom/navigator-bottom.service.d.ts.map +1 -1
  10. package/datapoint-explorer/view/datapoint-explorer.component.d.ts.map +1 -1
  11. package/echart/charts.component.d.ts.map +1 -1
  12. package/echart/models/datapoints-graph-widget.model.d.ts +10 -0
  13. package/echart/models/datapoints-graph-widget.model.d.ts.map +1 -1
  14. package/echart/services/chart-realtime.service.d.ts +2 -5
  15. package/echart/services/chart-realtime.service.d.ts.map +1 -1
  16. package/echart/services/echarts-options.service.d.ts +4 -13
  17. package/echart/services/echarts-options.service.d.ts.map +1 -1
  18. package/echart/services/y-axis.service.d.ts +1 -1
  19. package/echart/services/y-axis.service.d.ts.map +1 -1
  20. package/esm2022/branding/shared/supports-branding.service.mjs +6 -3
  21. package/esm2022/core/beta-feature/beta-preview-button.component.mjs +3 -3
  22. package/esm2022/core/beta-feature/beta-preview.component.mjs +3 -3
  23. package/esm2022/core/common/ApplicationOptions.mjs +1 -1
  24. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +9 -5
  25. package/esm2022/core/login/login.component.mjs +2 -1
  26. package/esm2022/core/login/login.service.mjs +5 -1
  27. package/esm2022/core/navigator/navigator-bottom/navigator-bottom.service.mjs +13 -6
  28. package/esm2022/datapoint-explorer/view/datapoint-explorer.component.mjs +4 -3
  29. package/esm2022/device-map/device-map.component.mjs +2 -2
  30. package/esm2022/echart/charts.component.mjs +8 -2
  31. package/esm2022/echart/models/datapoints-graph-widget.model.mjs +1 -1
  32. package/esm2022/echart/services/chart-realtime.service.mjs +1 -1
  33. package/esm2022/echart/services/echarts-options.service.mjs +23 -15
  34. package/esm2022/echart/services/y-axis.service.mjs +32 -1
  35. package/esm2022/map/cluster-map.component.mjs +6 -3
  36. package/esm2022/map/map-status.component.mjs +23 -5
  37. package/esm2022/map/map.model.mjs +5 -2
  38. package/esm2022/map/map.service.mjs +17 -1
  39. package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.mjs +4 -3
  40. package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +25 -6
  41. package/esm2022/widgets/implementations/map/map-widget.component.mjs +40 -11
  42. package/fesm2022/c8y-ngx-components-branding-shared.mjs +5 -2
  43. package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
  44. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +3 -2
  45. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  46. package/fesm2022/c8y-ngx-components-device-map.mjs +1 -1
  47. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  48. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-echart.mjs +60 -15
  50. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-map.mjs +47 -7
  52. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  53. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +3 -2
  54. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  55. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +67 -19
  56. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  57. package/fesm2022/c8y-ngx-components.mjs +26 -12
  58. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  59. package/locales/locales.pot +19 -7
  60. package/map/cluster-map.component.d.ts +2 -1
  61. package/map/cluster-map.component.d.ts.map +1 -1
  62. package/map/map-status.component.d.ts +7 -2
  63. package/map/map-status.component.d.ts.map +1 -1
  64. package/map/map.model.d.ts +1 -0
  65. package/map/map.model.d.ts.map +1 -1
  66. package/map/map.service.d.ts +1 -0
  67. package/map/map.service.d.ts.map +1 -1
  68. package/package.json +1 -1
  69. package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts.map +1 -1
  70. package/widgets/implementations/map/map-widget-config.component.d.ts +1 -0
  71. package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
  72. package/widgets/implementations/map/map-widget.component.d.ts +10 -4
  73. package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
@@ -10,6 +10,37 @@ export class YAxisService {
10
10
  }
11
11
  getYAxis(datapointsWithValues, YAxisOptions) {
12
12
  const YAxisPlacement = this.getYAxisPlacement(datapointsWithValues);
13
+ if (YAxisOptions.forceMergeDatapoints) {
14
+ return {
15
+ nameLocation: 'middle',
16
+ nameGap: 20,
17
+ type: 'value',
18
+ animation: true,
19
+ axisLabel: {
20
+ fontSize: 10,
21
+ show: true
22
+ },
23
+ axisLine: {
24
+ show: true,
25
+ lineStyle: {
26
+ color: 'black'
27
+ },
28
+ onZero: false
29
+ },
30
+ splitLine: {
31
+ show: YAxisOptions.showSplitLines
32
+ },
33
+ axisTick: {
34
+ show: true
35
+ },
36
+ axisPointer: {
37
+ show: false,
38
+ label: {
39
+ show: false
40
+ }
41
+ }
42
+ };
43
+ }
13
44
  const matchingDpSet = new Set();
14
45
  const firstOccurrence = new Set();
15
46
  return datapointsWithValues.map((dp, index) => {
@@ -147,4 +178,4 @@ export class YAxisService {
147
178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: YAxisService, decorators: [{
148
179
  type: Injectable
149
180
  }], ctorParameters: () => [{ type: i1.AppStateService }] });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieS1heGlzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY2hhcnQvc2VydmljZXMveS1heGlzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUd0RCxNQUFNLE9BQU8sWUFBWTtJQUl2QixZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFIcEQsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFJakIsSUFBSSxDQUFDLCtCQUErQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxRQUFRLENBQUMsb0JBQW9DLEVBQUUsWUFBMEI7UUFDdkUsTUFBTSxjQUFjLEdBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO1FBQzlDLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO1FBRWhELE9BQU8sb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzVDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBeUIsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO1lBQ3ZGLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBaUIsRUFBRSxHQUFpQixFQUFFLEVBQUUsQ0FDNUQsR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRztnQkFDbkIsR0FBRyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBRztnQkFD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QUUsQ0FBQyxFQUFFLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLENBQ3JFLENBQUM7UUFDRixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUMsSUFBSSxjQUFjLEdBQUcsWUFBWSxFQUFFLENBQUM7WUFDekQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQzsrR0F6S1UsWUFBWTttSEFBWixZQUFZOzs0RkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YXBvaW50QXhpc1R5cGUsIERwV2l0aFZhbHVlcywgWUF4aXNPcHRpb25zIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB0eXBlIHsgWUFYaXNPcHRpb24gfSBmcm9tICdlY2hhcnRzL3R5cGVzL3NyYy9jb29yZC9jYXJ0ZXNpYW4vQXhpc01vZGVsJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgWUF4aXNTZXJ2aWNlIHtcbiAgWV9BWElTX09GRlNFVCA9IDQ4O1xuICBwcml2YXRlIGludGxOdW1iZXJGb3JtYXRDb21wbGlhbnRMb2NhbGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlKSB7XG4gICAgdGhpcy5pbnRsTnVtYmVyRm9ybWF0Q29tcGxpYW50TG9jYWxlID0gdGhpcy5hcHBTdGF0ZVNlcnZpY2Uuc3RhdGUubGFuZy5yZXBsYWNlKCdfJywgJy0nKTtcbiAgfVxuXG4gIGdldFlBeGlzKGRhdGFwb2ludHNXaXRoVmFsdWVzOiBEcFdpdGhWYWx1ZXNbXSwgWUF4aXNPcHRpb25zOiBZQXhpc09wdGlvbnMpOiBZQVhpc09wdGlvbltdIHtcbiAgICBjb25zdCBZQXhpc1BsYWNlbWVudDogTWFwPERwV2l0aFZhbHVlcywgeyBwb3NpdGlvbjogRGF0YXBvaW50QXhpc1R5cGU7IG9mZnNldDogbnVtYmVyIH0+ID1cbiAgICAgIHRoaXMuZ2V0WUF4aXNQbGFjZW1lbnQoZGF0YXBvaW50c1dpdGhWYWx1ZXMpO1xuXG4gICAgY29uc3QgbWF0Y2hpbmdEcFNldCA9IG5ldyBTZXQ8RHBXaXRoVmFsdWVzPigpO1xuICAgIGNvbnN0IGZpcnN0T2NjdXJyZW5jZSA9IG5ldyBTZXQ8RHBXaXRoVmFsdWVzPigpO1xuXG4gICAgcmV0dXJuIGRhdGFwb2ludHNXaXRoVmFsdWVzLm1hcCgoZHAsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpc0RlZmluZWQgPSAodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGlzTWF0Y2hpbmdEcCA9IChkcDE6IERwV2l0aFZhbHVlcywgZHAyOiBEcFdpdGhWYWx1ZXMpID0+XG4gICAgICAgIGRwMS5taW4gPT09IGRwMi5taW4gJiZcbiAgICAgICAgZHAxLm1heCA9PT0gZHAyLm1heCAmJlxuICAgICAgICBpc0RlZmluZWQoZHAxLm1pbikgJiZcbiAgICAgICAgaXNEZWZpbmVkKGRwMS5tYXgpICYmXG4gICAgICAgIGlzRGVmaW5lZChkcDIubWluKSAmJlxuICAgICAgICBpc0RlZmluZWQoZHAyLm1heCk7XG5cbiAgICAgIGNvbnN0IG1hdGNoaW5nRHBSYW5nZSA9IGRhdGFwb2ludHNXaXRoVmFsdWVzLnNvbWUoXG4gICAgICAgIChkcDIsIGluZGV4MikgPT4gaXNNYXRjaGluZ0RwKGRwLCBkcDIpICYmIGluZGV4MiA8IGluZGV4XG4gICAgICApO1xuXG4gICAgICBjb25zdCBhbnlNYXRjaGluZ0RwID0gZGF0YXBvaW50c1dpdGhWYWx1ZXMuc29tZShcbiAgICAgICAgKGRwMiwgaW5kZXgyKSA9PiBpc01hdGNoaW5nRHAoZHAsIGRwMikgJiYgaW5kZXgyICE9PSBpbmRleFxuICAgICAgKTtcblxuICAgICAgaWYgKFxuICAgICAgICBhbnlNYXRjaGluZ0RwICYmXG4gICAgICAgICFtYXRjaGluZ0RwUmFuZ2UgJiZcbiAgICAgICAgWUF4aXNPcHRpb25zLm1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzICYmXG4gICAgICAgICFmaXJzdE9jY3VycmVuY2UuaGFzKGRwKVxuICAgICAgKSB7XG4gICAgICAgIGZpcnN0T2NjdXJyZW5jZS5hZGQoZHApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlyc3RPY2N1cnJlbmNlLmhhcyhkcCkpIHtcbiAgICAgICAgZGF0YXBvaW50c1dpdGhWYWx1ZXMuZm9yRWFjaChkcDIgPT4ge1xuICAgICAgICAgIGlmIChpc01hdGNoaW5nRHAoZHAsIGRwMikpIHtcbiAgICAgICAgICAgIG1hdGNoaW5nRHBTZXQuYWRkKGRwMik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogWUF4aXNPcHRpb25zLnNob3dMYWJlbEFuZFVuaXRcbiAgICAgICAgICA/IFlBeGlzT3B0aW9ucy5tZXJnZU1hdGNoaW5nRGF0YXBvaW50c1xuICAgICAgICAgICAgPyBmaXJzdE9jY3VycmVuY2UuaGFzKGRwKVxuICAgICAgICAgICAgICA/IEFycmF5LmZyb20obWF0Y2hpbmdEcFNldClcbiAgICAgICAgICAgICAgICAgIC5tYXAoZHAgPT4gYHske2RwLl9fdGFyZ2V0Py5pZH18JHtkcC51bml0fX1gKVxuICAgICAgICAgICAgICAgICAgLmpvaW4oJyAvJylcbiAgICAgICAgICAgICAgOiBtYXRjaGluZ0RwUmFuZ2VcbiAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgOiBgJHtkcC5sYWJlbH0gWyR7ZHAudW5pdH1dYFxuICAgICAgICAgICAgOiBgJHtkcC5sYWJlbH0gWyR7ZHAudW5pdH1dYFxuICAgICAgICAgIDogJycsXG4gICAgICAgIG5hbWVMb2NhdGlvbjogJ21pZGRsZScsXG4gICAgICAgIG5hbWVHYXA6IDIwLFxuICAgICAgICBuYW1lVGV4dFN0eWxlOiB7XG4gICAgICAgICAgLy8gYWRkIHJpY2ggdGV4dCB0byBzdXBwb3J0IG11bHRpcGxlIGNvbG9ycyBmb3IgZGlmZmVyZW50IGRwIHVuaXRzXG4gICAgICAgICAgcmljaDoge1xuICAgICAgICAgICAgLi4uQXJyYXkuZnJvbShtYXRjaGluZ0RwU2V0KS5yZWR1Y2UoKGFjYywgZHApID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgYWNjS2V5ID0gYCR7ZHAuX190YXJnZXQ/LmlkfWA7XG4gICAgICAgICAgICAgIGFjY1thY2NLZXldID0ge1xuICAgICAgICAgICAgICAgIGNvbG9yOiBkcC5jb2xvclxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiAndmFsdWUnLFxuICAgICAgICBhbmltYXRpb246IHRydWUsXG4gICAgICAgIGF4aXNMaW5lOiB7XG4gICAgICAgICAgc2hvdzogbWF0Y2hpbmdEcFJhbmdlICYmIFlBeGlzT3B0aW9ucy5tZXJnZU1hdGNoaW5nRGF0YXBvaW50cyA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgICAgICBsaW5lU3R5bGU6IHtcbiAgICAgICAgICAgIGNvbG9yOiBmaXJzdE9jY3VycmVuY2UuaGFzKGRwKSA/ICdibGFjaycgOiBkcC5jb2xvclxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25aZXJvOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBheGlzTGFiZWw6IHtcbiAgICAgICAgICBmb250U2l6ZTogMTAsXG4gICAgICAgICAgc2hvdzogIW1hdGNoaW5nRHBSYW5nZSB8fCAhWUF4aXNPcHRpb25zLm1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzLFxuICAgICAgICAgIGZvcm1hdHRlcjogdmFsID0+IHtcbiAgICAgICAgICAgIGlmIChkcC5taW4gIT0gdW5kZWZpbmVkICYmIGRwLm1heCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBkcC5tYXggLSBkcC5taW47XG4gICAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxQbGFjZXMgPSB0aGlzLmdldERlY2ltYWxQbGFjZXMocmFuZ2UpO1xuICAgICAgICAgICAgICByZXR1cm4gdmFsLnRvRml4ZWQoZGVjaW1hbFBsYWNlcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5pbnRsTnVtYmVyRm9ybWF0Q29tcGxpYW50TG9jYWxlLCB7XG4gICAgICAgICAgICAgIG5vdGF0aW9uOiAnY29tcGFjdCcsXG4gICAgICAgICAgICAgIGNvbXBhY3REaXNwbGF5OiAnc2hvcnQnXG4gICAgICAgICAgICB9KS5mb3JtYXQodmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNwbGl0TGluZToge1xuICAgICAgICAgIHNob3c6IFlBeGlzT3B0aW9ucy5zaG93U3BsaXRMaW5lcyAmJiAhbWF0Y2hpbmdEcFJhbmdlLFxuICAgICAgICAgIGxpbmVTdHlsZTogeyBjb2xvcjogZHAuY29sb3IsIG9wYWNpdHk6IDAuNCwgdHlwZTogJ2Rhc2hlZCcgfVxuICAgICAgICB9LFxuICAgICAgICBwb3NpdGlvbjogWUF4aXNQbGFjZW1lbnQuZ2V0KGRwKT8ucG9zaXRpb24sXG4gICAgICAgIG9mZnNldDogWUF4aXNQbGFjZW1lbnQuZ2V0KGRwKT8ub2Zmc2V0LFxuICAgICAgICBheGlzVGljazoge1xuICAgICAgICAgIHNob3c6ICFtYXRjaGluZ0RwUmFuZ2UgfHwgIVlBeGlzT3B0aW9ucy5tZXJnZU1hdGNoaW5nRGF0YXBvaW50c1xuICAgICAgICB9LFxuICAgICAgICBheGlzUG9pbnRlcjoge1xuICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgIGxhYmVsOiB7XG4gICAgICAgICAgICBzaG93OiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uKGRwLm1pbiAmJiB7IG1pbjogZHAubWluIH0pLFxuICAgICAgICAuLi4oZHAubWF4ICYmIHsgbWF4OiBkcC5tYXggfSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldERlY2ltYWxQbGFjZXMobnVtOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG51bVN0ciA9IG51bS50b1N0cmluZygpO1xuICAgIGNvbnN0IGRlY2ltYWxJbmRleCA9IG51bVN0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYgKGRlY2ltYWxJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gbnVtU3RyLmxlbmd0aCAtIGRlY2ltYWxJbmRleCAtIDE7XG4gIH1cblxuICBwcml2YXRlIGdldFlBeGlzUGxhY2VtZW50KFxuICAgIGRhdGFwb2ludHNXaXRoVmFsdWVzOiBEcFdpdGhWYWx1ZXNbXVxuICApOiBNYXA8RHBXaXRoVmFsdWVzLCB7IHBvc2l0aW9uOiBEYXRhcG9pbnRBeGlzVHlwZTsgb2Zmc2V0OiBudW1iZXIgfT4ge1xuICAgIGNvbnN0IFlBeGlzUG9zaXRpb25zID0gbmV3IE1hcDxEcFdpdGhWYWx1ZXMsIHsgcG9zaXRpb246IERhdGFwb2ludEF4aXNUeXBlIH0+KCk7XG5cbiAgICBkYXRhcG9pbnRzV2l0aFZhbHVlcy5mb3JFYWNoKGRwID0+IHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRZQXhpc1Bvc2l0aW9uKGRwLCBkYXRhcG9pbnRzV2l0aFZhbHVlcyk7XG4gICAgICBZQXhpc1Bvc2l0aW9ucy5zZXQoZHAsIHsgcG9zaXRpb24gfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBkcExlZnQgPSBkYXRhcG9pbnRzV2l0aFZhbHVlcy5maWx0ZXIoZHAgPT4gWUF4aXNQb3NpdGlvbnMuZ2V0KGRwKS5wb3NpdGlvbiA9PT0gJ2xlZnQnKTtcbiAgICBjb25zdCBkcFJpZ2h0ID0gZGF0YXBvaW50c1dpdGhWYWx1ZXMuZmlsdGVyKGRwID0+IFlBeGlzUG9zaXRpb25zLmdldChkcCkucG9zaXRpb24gPT09ICdyaWdodCcpO1xuXG4gICAgY29uc3QgWUF4aXNQbGFjZW1lbnQgPSBuZXcgTWFwPERwV2l0aFZhbHVlcywgeyBwb3NpdGlvbjogRGF0YXBvaW50QXhpc1R5cGU7IG9mZnNldDogbnVtYmVyIH0+KCk7XG4gICAgWUF4aXNQb3NpdGlvbnMuZm9yRWFjaCgoeyBwb3NpdGlvbiB9LCBrZXkpID0+IHtcbiAgICAgIGNvbnN0IG9mZnNldCA9IChwb3NpdGlvbiA9PT0gJ2xlZnQnID8gZHBMZWZ0IDogZHBSaWdodCkuaW5kZXhPZihrZXkpICogdGhpcy5ZX0FYSVNfT0ZGU0VUO1xuICAgICAgWUF4aXNQbGFjZW1lbnQuc2V0KGtleSwgeyBwb3NpdGlvbjogcG9zaXRpb24sIG9mZnNldCB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBZQXhpc1BsYWNlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0WUF4aXNQb3NpdGlvbihcbiAgICBkYXRhcG9pbnQ6IERhdGFwb2ludEF4aXNUeXBlLFxuICAgIGRhdGFwb2ludHNXaXRoVmFsdWVzOiBEcFdpdGhWYWx1ZXNbXVxuICApOiBEYXRhcG9pbnRBeGlzVHlwZSB7XG4gICAgaWYgKGRhdGFwb2ludC55QXhpc1R5cGUpIHtcbiAgICAgIHJldHVybiBkYXRhcG9pbnQueUF4aXNUeXBlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSBkYXRhcG9pbnRzV2l0aFZhbHVlcy5pbmRleE9mKGRhdGFwb2ludCk7XG4gICAgY29uc3Qgb3RoZXJJbmRleExlZnQgPSBkYXRhcG9pbnRzV2l0aFZhbHVlcy5maW5kSW5kZXgoXG4gICAgICBkcCA9PiBkcCAhPT0gZGF0YXBvaW50ICYmICghZHAueUF4aXNUeXBlIHx8IGRwLnlBeGlzVHlwZSA9PT0gJ2xlZnQnKVxuICAgICk7XG4gICAgaWYgKG90aGVySW5kZXhMZWZ0ID4gLTEgJiYgb3RoZXJJbmRleExlZnQgPCBjdXJyZW50SW5kZXgpIHtcbiAgICAgIHJldHVybiAncmlnaHQnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2xlZnQnO1xuICAgIH1cbiAgfVxufVxuIl19
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieS1heGlzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY2hhcnQvc2VydmljZXMveS1heGlzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQUd0RCxNQUFNLE9BQU8sWUFBWTtJQUl2QixZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFIcEQsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFJakIsSUFBSSxDQUFDLCtCQUErQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxRQUFRLENBQ04sb0JBQW9DLEVBQ3BDLFlBQTBCO1FBRTFCLE1BQU0sY0FBYyxHQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUUvQyxJQUFJLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3RDLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLFFBQVE7Z0JBQ3RCLE9BQU8sRUFBRSxFQUFFO2dCQUNYLElBQUksRUFBRSxPQUFPO2dCQUNiLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFNBQVMsRUFBRTtvQkFDVCxRQUFRLEVBQUUsRUFBRTtvQkFDWixJQUFJLEVBQUUsSUFBSTtpQkFDWDtnQkFDRCxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLElBQUk7b0JBQ1YsU0FBUyxFQUFFO3dCQUNULEtBQUssRUFBRSxPQUFPO3FCQUNmO29CQUNELE1BQU0sRUFBRSxLQUFLO2lCQUNkO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsWUFBWSxDQUFDLGNBQWM7aUJBQ2xDO2dCQUNELFFBQVEsRUFB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LEVBQUUsRUFBRTtZQUMzQyxNQUFNLE1BQU0sR0FBRyxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDMUYsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRU8sZ0JBQWdCLENBQ3RCLFNBQTRCLEVBQzVCLG9CQUFvQztRQUVwQyxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN4QixPQUFPLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDN0IsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RCxNQUFNLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxTQUFTLENBQ25ELEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUNyRSxDQUFDO1FBQ0YsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDLElBQUksY0FBYyxHQUFHLFlBQVksRUFBRSxDQUFDO1lBQ3pELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7K0dBM01VLFlBQVk7bUhBQVosWUFBWTs7NEZBQVosWUFBWTtrQkFEeEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGFwb2ludEF4aXNUeXBlLCBEcFdpdGhWYWx1ZXMsIFlBeGlzT3B0aW9ucyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgdHlwZSB7IFlBWGlzT3B0aW9uIH0gZnJvbSAnZWNoYXJ0cy90eXBlcy9zcmMvY29vcmQvY2FydGVzaWFuL0F4aXNNb2RlbCc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFlBeGlzU2VydmljZSB7XG4gIFlfQVhJU19PRkZTRVQgPSA0ODtcbiAgcHJpdmF0ZSBpbnRsTnVtYmVyRm9ybWF0Q29tcGxpYW50TG9jYWxlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBTdGF0ZVNlcnZpY2U6IEFwcFN0YXRlU2VydmljZSkge1xuICAgIHRoaXMuaW50bE51bWJlckZvcm1hdENvbXBsaWFudExvY2FsZSA9IHRoaXMuYXBwU3RhdGVTZXJ2aWNlLnN0YXRlLmxhbmcucmVwbGFjZSgnXycsICctJyk7XG4gIH1cblxuICBnZXRZQXhpcyhcbiAgICBkYXRhcG9pbnRzV2l0aFZhbHVlczogRHBXaXRoVmFsdWVzW10sXG4gICAgWUF4aXNPcHRpb25zOiBZQXhpc09wdGlvbnNcbiAgKTogWUFYaXNPcHRpb25bXSB8IFlBWGlzT3B0aW9uIHtcbiAgICBjb25zdCBZQXhpc1BsYWNlbWVudDogTWFwPERwV2l0aFZhbHVlcywgeyBwb3NpdGlvbjogRGF0YXBvaW50QXhpc1R5cGU7IG9mZnNldDogbnVtYmVyIH0+ID1cbiAgICAgIHRoaXMuZ2V0WUF4aXNQbGFjZW1lbnQoZGF0YXBvaW50c1dpdGhWYWx1ZXMpO1xuXG4gICAgaWYgKFlBeGlzT3B0aW9ucy5mb3JjZU1lcmdlRGF0YXBvaW50cykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZUxvY2F0aW9uOiAnbWlkZGxlJyxcbiAgICAgICAgbmFtZUdhcDogMjAsXG4gICAgICAgIHR5cGU6ICd2YWx1ZScsXG4gICAgICAgIGFuaW1hdGlvbjogdHJ1ZSxcbiAgICAgICAgYXhpc0xhYmVsOiB7XG4gICAgICAgICAgZm9udFNpemU6IDEwLFxuICAgICAgICAgIHNob3c6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgYXhpc0xpbmU6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIGxpbmVTdHlsZToge1xuICAgICAgICAgICAgY29sb3I6ICdibGFjaydcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uWmVybzogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgc3BsaXRMaW5lOiB7XG4gICAgICAgICAgc2hvdzogWUF4aXNPcHRpb25zLnNob3dTcGxpdExpbmVzXG4gICAgICAgIH0sXG4gICAgICAgIGF4aXNUaWNrOiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBheGlzUG9pbnRlcjoge1xuICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgIGxhYmVsOiB7XG4gICAgICAgICAgICBzaG93OiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hpbmdEcFNldCA9IG5ldyBTZXQ8RHBXaXRoVmFsdWVzPigpO1xuICAgIGNvbnN0IGZpcnN0T2NjdXJyZW5jZSA9IG5ldyBTZXQ8RHBXaXRoVmFsdWVzPigpO1xuXG4gICAgcmV0dXJuIGRhdGFwb2ludHNXaXRoVmFsdWVzLm1hcCgoZHAsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpc0RlZmluZWQgPSAodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGlzTWF0Y2hpbmdEcCA9IChkcDE6IERwV2l0aFZhbHVlcywgZHAyOiBEcFdpdGhWYWx1ZXMpID0+XG4gICAgICAgIGRwMS5taW4gPT09IGRwMi5taW4gJiZcbiAgICAgICAgZHAxLm1heCA9PT0gZHAyLm1heCAmJlxuICAgICAgICBpc0RlZmluZWQoZHAxLm1pbikgJiZcbiAgICAgICAgaXNEZWZpbmVkKGRwMS5tYXgpICYmXG4gICAgICAgIGlzRGVmaW5lZChkcDIubWluKSAmJlxuICAgICAgICBpc0RlZmluZWQoZHAyLm1heCk7XG5cbiAgICAgIGNvbnN0IG1hdGNoaW5nRHBSYW5nZSA9IGRhdGFwb2ludHNXaXRoVmFsdWVzLnNvbWUoXG4gICAgICAgIChkcDIsIGluZGV4MikgPT4gaXNNYXRjaGluZ0RwKGRwLCBkcDIpICYmIGluZGV4MiA8IGluZGV4XG4gICAgICApO1xuXG4gICAgICBjb25zdCBhbnlNYXRjaGluZ0RwID0gZGF0YXBvaW50c1dpdGhWYWx1ZXMuc29tZShcbiAgICAgICAgKGRwMiwgaW5kZXgyKSA9PiBpc01hdGNoaW5nRHAoZHAsIGRwMikgJiYgaW5kZXgyICE9PSBpbmRleFxuICAgICAgKTtcblxuICAgICAgaWYgKFxuICAgICAgICBhbnlNYXRjaGluZ0RwICYmXG4gICAgICAgICFtYXRjaGluZ0RwUmFuZ2UgJiZcbiAgICAgICAgWUF4aXNPcHRpb25zLm1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzICYmXG4gICAgICAgICFmaXJzdE9jY3VycmVuY2UuaGFzKGRwKVxuICAgICAgKSB7XG4gICAgICAgIGZpcnN0T2NjdXJyZW5jZS5hZGQoZHApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlyc3RPY2N1cnJlbmNlLmhhcyhkcCkpIHtcbiAgICAgICAgZGF0YXBvaW50c1dpdGhWYWx1ZXMuZm9yRWFjaChkcDIgPT4ge1xuICAgICAgICAgIGlmIChpc01hdGNoaW5nRHAoZHAsIGRwMikpIHtcbiAgICAgICAgICAgIG1hdGNoaW5nRHBTZXQuYWRkKGRwMik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogWUF4aXNPcHRpb25zLnNob3dMYWJlbEFuZFVuaXRcbiAgICAgICAgICA/IFlBeGlzT3B0aW9ucy5tZXJnZU1hdGNoaW5nRGF0YXBvaW50c1xuICAgICAgICAgICAgPyBmaXJzdE9jY3VycmVuY2UuaGFzKGRwKVxuICAgICAgICAgICAgICA/IEFycmF5LmZyb20obWF0Y2hpbmdEcFNldClcbiAgICAgICAgICAgICAgICAgIC5tYXAoZHAgPT4gYHske2RwLl9fdGFyZ2V0Py5pZH18JHtkcC51bml0fX1gKVxuICAgICAgICAgICAgICAgICAgLmpvaW4oJyAvJylcbiAgICAgICAgICAgICAgOiBtYXRjaGluZ0RwUmFuZ2VcbiAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgOiBgJHtkcC5sYWJlbH0gWyR7ZHAudW5pdH1dYFxuICAgICAgICAgICAgOiBgJHtkcC5sYWJlbH0gWyR7ZHAudW5pdH1dYFxuICAgICAgICAgIDogJycsXG4gICAgICAgIG5hbWVMb2NhdGlvbjogJ21pZGRsZScsXG4gICAgICAgIG5hbWVHYXA6IDIwLFxuICAgICAgICBuYW1lVGV4dFN0eWxlOiB7XG4gICAgICAgICAgLy8gYWRkIHJpY2ggdGV4dCB0byBzdXBwb3J0IG11bHRpcGxlIGNvbG9ycyBmb3IgZGlmZmVyZW50IGRwIHVuaXRzXG4gICAgICAgICAgcmljaDoge1xuICAgICAgICAgICAgLi4uQXJyYXkuZnJvbShtYXRjaGluZ0RwU2V0KS5yZWR1Y2UoKGFjYywgZHApID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgYWNjS2V5ID0gYCR7ZHAuX190YXJnZXQ/LmlkfWA7XG4gICAgICAgICAgICAgIGFjY1thY2NLZXldID0ge1xuICAgICAgICAgICAgICAgIGNvbG9yOiBkcC5jb2xvclxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiAndmFsdWUnLFxuICAgICAgICBhbmltYXRpb246IHRydWUsXG4gICAgICAgIGF4aXNMaW5lOiB7XG4gICAgICAgICAgc2hvdzogbWF0Y2hpbmdEcFJhbmdlICYmIFlBeGlzT3B0aW9ucy5tZXJnZU1hdGNoaW5nRGF0YXBvaW50cyA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgICAgICBsaW5lU3R5bGU6IHtcbiAgICAgICAgICAgIGNvbG9yOiBmaXJzdE9jY3VycmVuY2UuaGFzKGRwKSA/ICdibGFjaycgOiBkcC5jb2xvclxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25aZXJvOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBheGlzTGFiZWw6IHtcbiAgICAgICAgICBmb250U2l6ZTogMTAsXG4gICAgICAgICAgc2hvdzogIW1hdGNoaW5nRHBSYW5nZSB8fCAhWUF4aXNPcHRpb25zLm1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzLFxuICAgICAgICAgIGZvcm1hdHRlcjogdmFsID0+IHtcbiAgICAgICAgICAgIGlmIChkcC5taW4gIT0gdW5kZWZpbmVkICYmIGRwLm1heCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBkcC5tYXggLSBkcC5taW47XG4gICAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxQbGFjZXMgPSB0aGlzLmdldERlY2ltYWxQbGFjZXMocmFuZ2UpO1xuICAgICAgICAgICAgICByZXR1cm4gdmFsLnRvRml4ZWQoZGVjaW1hbFBsYWNlcyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQodGhpcy5pbnRsTnVtYmVyRm9ybWF0Q29tcGxpYW50TG9jYWxlLCB7XG4gICAgICAgICAgICAgIG5vdGF0aW9uOiAnY29tcGFjdCcsXG4gICAgICAgICAgICAgIGNvbXBhY3REaXNwbGF5OiAnc2hvcnQnXG4gICAgICAgICAgICB9KS5mb3JtYXQodmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHNwbGl0TGluZToge1xuICAgICAgICAgIHNob3c6IFlBeGlzT3B0aW9ucy5zaG93U3BsaXRMaW5lcyAmJiAhbWF0Y2hpbmdEcFJhbmdlLFxuICAgICAgICAgIGxpbmVTdHlsZTogeyBjb2xvcjogZHAuY29sb3IsIG9wYWNpdHk6IDAuNCwgdHlwZTogJ2Rhc2hlZCcgfVxuICAgICAgICB9LFxuICAgICAgICBwb3NpdGlvbjogWUF4aXNQbGFjZW1lbnQuZ2V0KGRwKT8ucG9zaXRpb24sXG4gICAgICAgIG9mZnNldDogWUF4aXNQbGFjZW1lbnQuZ2V0KGRwKT8ub2Zmc2V0LFxuICAgICAgICBheGlzVGljazoge1xuICAgICAgICAgIHNob3c6ICFtYXRjaGluZ0RwUmFuZ2UgfHwgIVlBeGlzT3B0aW9ucy5tZXJnZU1hdGNoaW5nRGF0YXBvaW50c1xuICAgICAgICB9LFxuICAgICAgICBheGlzUG9pbnRlcjoge1xuICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgIGxhYmVsOiB7XG4gICAgICAgICAgICBzaG93OiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uKGRwLm1pbiAmJiB7IG1pbjogZHAubWluIH0pLFxuICAgICAgICAuLi4oZHAubWF4ICYmIHsgbWF4OiBkcC5tYXggfSlcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldERlY2ltYWxQbGFjZXMobnVtOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG51bVN0ciA9IG51bS50b1N0cmluZygpO1xuICAgIGNvbnN0IGRlY2ltYWxJbmRleCA9IG51bVN0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYgKGRlY2ltYWxJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gbnVtU3RyLmxlbmd0aCAtIGRlY2ltYWxJbmRleCAtIDE7XG4gIH1cblxuICBwcml2YXRlIGdldFlBeGlzUGxhY2VtZW50KFxuICAgIGRhdGFwb2ludHNXaXRoVmFsdWVzOiBEcFdpdGhWYWx1ZXNbXVxuICApOiBNYXA8RHBXaXRoVmFsdWVzLCB7IHBvc2l0aW9uOiBEYXRhcG9pbnRBeGlzVHlwZTsgb2Zmc2V0OiBudW1iZXIgfT4ge1xuICAgIGNvbnN0IFlBeGlzUG9zaXRpb25zID0gbmV3IE1hcDxEcFdpdGhWYWx1ZXMsIHsgcG9zaXRpb246IERhdGFwb2ludEF4aXNUeXBlIH0+KCk7XG5cbiAgICBkYXRhcG9pbnRzV2l0aFZhbHVlcy5mb3JFYWNoKGRwID0+IHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5nZXRZQXhpc1Bvc2l0aW9uKGRwLCBkYXRhcG9pbnRzV2l0aFZhbHVlcyk7XG4gICAgICBZQXhpc1Bvc2l0aW9ucy5zZXQoZHAsIHsgcG9zaXRpb24gfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBkcExlZnQgPSBkYXRhcG9pbnRzV2l0aFZhbHVlcy5maWx0ZXIoZHAgPT4gWUF4aXNQb3NpdGlvbnMuZ2V0KGRwKS5wb3NpdGlvbiA9PT0gJ2xlZnQnKTtcbiAgICBjb25zdCBkcFJpZ2h0ID0gZGF0YXBvaW50c1dpdGhWYWx1ZXMuZmlsdGVyKGRwID0+IFlBeGlzUG9zaXRpb25zLmdldChkcCkucG9zaXRpb24gPT09ICdyaWdodCcpO1xuXG4gICAgY29uc3QgWUF4aXNQbGFjZW1lbnQgPSBuZXcgTWFwPERwV2l0aFZhbHVlcywgeyBwb3NpdGlvbjogRGF0YXBvaW50QXhpc1R5cGU7IG9mZnNldDogbnVtYmVyIH0+KCk7XG4gICAgWUF4aXNQb3NpdGlvbnMuZm9yRWFjaCgoeyBwb3NpdGlvbiB9LCBrZXkpID0+IHtcbiAgICAgIGNvbnN0IG9mZnNldCA9IChwb3NpdGlvbiA9PT0gJ2xlZnQnID8gZHBMZWZ0IDogZHBSaWdodCkuaW5kZXhPZihrZXkpICogdGhpcy5ZX0FYSVNfT0ZGU0VUO1xuICAgICAgWUF4aXNQbGFjZW1lbnQuc2V0KGtleSwgeyBwb3NpdGlvbjogcG9zaXRpb24sIG9mZnNldCB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiBZQXhpc1BsYWNlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0WUF4aXNQb3NpdGlvbihcbiAgICBkYXRhcG9pbnQ6IERhdGFwb2ludEF4aXNUeXBlLFxuICAgIGRhdGFwb2ludHNXaXRoVmFsdWVzOiBEcFdpdGhWYWx1ZXNbXVxuICApOiBEYXRhcG9pbnRBeGlzVHlwZSB7XG4gICAgaWYgKGRhdGFwb2ludC55QXhpc1R5cGUpIHtcbiAgICAgIHJldHVybiBkYXRhcG9pbnQueUF4aXNUeXBlO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSBkYXRhcG9pbnRzV2l0aFZhbHVlcy5pbmRleE9mKGRhdGFwb2ludCk7XG4gICAgY29uc3Qgb3RoZXJJbmRleExlZnQgPSBkYXRhcG9pbnRzV2l0aFZhbHVlcy5maW5kSW5kZXgoXG4gICAgICBkcCA9PiBkcCAhPT0gZGF0YXBvaW50ICYmICghZHAueUF4aXNUeXBlIHx8IGRwLnlBeGlzVHlwZSA9PT0gJ2xlZnQnKVxuICAgICk7XG4gICAgaWYgKG90aGVySW5kZXhMZWZ0ID4gLTEgJiYgb3RoZXJJbmRleExlZnQgPCBjdXJyZW50SW5kZXgpIHtcbiAgICAgIHJldHVybiAncmlnaHQnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2xlZnQnO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, Inject, Input, IterableDiffers, Output, SimpleChange } from '@angular/core';
1
+ import { Component, ElementRef, EventEmitter, Inject, Input, IterableDiffers, Output, SimpleChange, ViewChild } from '@angular/core';
2
2
  import { ColorService, DatePipe, GeoService, ManagedObjectRealtimeService, WidgetGlobalAutoRefreshService, globalAutoRefreshLoading } from '@c8y/ngx-components';
3
3
  import { TranslateService } from '@ngx-translate/core';
4
4
  import { BehaviorSubject, EMPTY, Observable, combineLatest, from, fromEvent, merge, of } from 'rxjs';
@@ -239,7 +239,7 @@ export class ClusterMapComponent extends MapComponent {
239
239
  });
240
240
  }
241
241
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClusterMapComponent, deps: [{ token: i1.ManagedObjectRealtimeService }, { token: i2.MapService }, { token: MAP_TILE_LAYER }, { token: MAP_DEFAULT_CONFIG }, { token: i3.TranslateService }, { token: i1.WidgetGlobalAutoRefreshService }, { token: i0.IterableDiffers }, { token: i1.ColorService }, { token: i1.GeoService }, { token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
242
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ClusterMapComponent, selector: "c8y-cluster-map", inputs: { config: "config", rootNode: "rootNode", assets: ["asset", "assets"], showClusterColor: "showClusterColor" }, outputs: { mapChange: "mapChange" }, providers: [ManagedObjectRealtimeService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-map\">\n <div #map></div>\n</div>\n<ng-content></ng-content>\n" }); }
242
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ClusterMapComponent, selector: "c8y-cluster-map", inputs: { config: "config", rootNode: "rootNode", assets: ["asset", "assets"], showClusterColor: "showClusterColor" }, outputs: { mapChange: "mapChange" }, providers: [ManagedObjectRealtimeService], viewQueries: [{ propertyName: "mapElement", first: true, predicate: ["map"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-map\">\n <div #map></div>\n</div>\n<ng-content></ng-content>\n" }); }
243
243
  }
244
244
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ClusterMapComponent, decorators: [{
245
245
  type: Component,
@@ -261,5 +261,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
261
261
  type: Input
262
262
  }], mapChange: [{
263
263
  type: Output
264
+ }], mapElement: [{
265
+ type: ViewChild,
266
+ args: ['map']
264
267
  }] } });
265
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWFwL2NsdXN0ZXItbWFwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL21hcC9jbHVzdGVyLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLGVBQWUsRUFDZixNQUFNLEVBQ04sWUFBWSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDTCxZQUFZLEVBRVosUUFBUSxFQUNSLFVBQVUsRUFDViw0QkFBNEIsRUFDNUIsOEJBQThCLEVBQzlCLHdCQUF3QixFQUd6QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFDTCxlQUFlLEVBQ2YsS0FBSyxFQUNMLFVBQVUsRUFDVixhQUFhLEVBQ2IsSUFBSSxFQUNKLFNBQVMsRUFDVCxLQUFLLEVBQ0wsRUFBRSxFQUNILE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsRUFDSixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPM0MsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFlBQVk7SUEwQm5ELFlBQ1ksaUJBQStDLEVBQy9DLFVBQXNCLEVB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RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgSXRlcmFibGVEaWZmZXJzLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHR5cGUgeyBNYXBEZWZhdWx0Q29uZmlnLCBNYXBUaWxlTGF5ZXIgfSBmcm9tICdAYzh5L29wdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ29sb3JTZXJ2aWNlLFxuICBDb3VudGRvd25JbnRlcnZhbENvbXBvbmVudCxcbiAgRGF0ZVBpcGUsXG4gIEdlb1NlcnZpY2UsXG4gIE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UsXG4gIFdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZSxcbiAgZ2xvYmFsQXV0b1JlZnJlc2hMb2FkaW5nLFxuICBEeW5hbWljQ29tcG9uZW50LFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHR5cGUgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBFTVBUWSxcbiAgT2JzZXJ2YWJsZSxcbiAgY29tYmluZUxhdGVzdCxcbiAgZnJvbSxcbiAgZnJvbUV2ZW50LFxuICBtZXJnZSxcbiAgb2Zcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBkZWJvdW5jZVRpbWUsXG4gIG1lcmdlTWFwLFxuICBza2lwLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbiAgdGFwXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENsdXN0ZXJNYXAgfSBmcm9tICcuL2NsdXN0ZXItbWFwJztcbmltcG9ydCB7IE1hcENvbXBvbmVudCB9IGZyb20gJy4vbWFwLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDbHVzdGVyTWFwQ29uZmlnLFxuICBDbHVzdGVyU2l6ZSxcbiAgTUFQX0RFRkFVTFRfQ09ORklHLFxuICBNQVBfVElMRV9MQVlFUixcbiAgUG9zaXRpb25NYW5hZ2VkT2JqZWN0XG59IGZyb20gJy4vbWFwLm1vZGVsJztcbmltcG9ydCB7IE1hcFNlcnZpY2UgfSBmcm9tICcuL21hcC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWNsdXN0ZXItbWFwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NsdXN0ZXItbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQ2x1c3Rlck1hcENvbXBvbmVudCBleHRlbmRzIE1hcENvbXBvbmVudCBpbXBsZW1lbnRzIER5bmFtaWNDb21wb25lbnQge1xuICBpc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIGNvdW50ZG93bkludGVydmFsQ29tcDogQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgY29uZmlnOiBDbHVzdGVyTWFwQ29uZmlnO1xuXG4gIEBJbnB1dCgpXG4gIHJvb3ROb2RlOiBJTWFuYWdlZE9iamVjdDtcblxuICBASW5wdXQoJ2Fzc2V0JylcbiAgYXNzZXRzOiBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG5cbiAgQElucHV0KClcbiAgc2hvd0NsdXN0ZXJDb2xvciA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBtYXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEwuTGVhZmxldEV2ZW50PigpO1xuXG4gIGFsZXJ0czogRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcjtcblxuICBlcnJvck5vdGlmaWVyID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcHJpdmF0ZSByZWxvYWRUcmlnZ2VyJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIGNsdXN0ZXJzOiBDbHVzdGVyTWFwW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBFVkVOVF9USFJPVFRMRV9USU1FID0gNzUwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBtb1JlYWx0aW1lU2VydmljZTogTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbWFwU2VydmljZTogTWFwU2VydmljZSxcbiAgICBASW5qZWN0KE1BUF9USUxFX0xBWUVSKSBwcm90ZWN0ZWQgbGF5ZXJzJDogT2JzZXJ2YWJsZTxNYXBUaWxlTGF5ZXJbXT4sXG4gICAgQEluamVjdChNQVBfREVGQVVMVF9DT05GSUcpXG4gICAgcHJvdGVjdGVkIGRlZmF1bHRDb25maWckOiBPYnNlcnZhYmxlPE1hcERlZmF1bHRDb25maWc+LFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB3aWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2U6IFdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZSxcbiAgICBwcml2YXRlIGl0ZXJhYmxlOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgcHJpdmF0ZSBjb2xvclNlcnZpY2U6IENvbG9yU2VydmljZSxcbiAgICBnZW86IEdlb1NlcnZpY2UsXG4gICAgZGF0ZVBpcGU6IERhdGVQaXBlXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgbW9SZWFsdGltZVNlcnZpY2UsXG4gICAgICBtYXBTZXJ2aWNlLFxuICAgICAgbGF5ZXJzJCxcbiAgICAgIGRlZmF1bHRDb25maWckLFxuICAgICAgdHJhbnNsYXRlU2VydmljZSxcbiAgICAgIGdlbyxcbiAgICAgIGRhdGVQaXBlLFxuICAgICAgd2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5jb25maWc/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMucm9vdE5vZGU/LnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZXMucm9vdE5vZGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5jaGFuZ2VSb290Tm9kZShjaGFuZ2VzLnJvb3ROb2RlLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuY2hhbmdlQ29uZmlnKGNoYW5nZXMuY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VDb25maWcoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpIHtcbiAgICAvLyBvbiBmb2xsb3dpbmcsIGNhbmNlbCByZWxvYWQgdG8gYXZvaWQgc3RhbGUgc3RhdGVcbiAgICBpZiAoY2hhbmdlLmN1cnJlbnRWYWx1ZS5mb2xsb3cgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuY2FuY2VsUmVsb2FkKCk7XG4gICAgICB0aGlzLmlzTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZS5jdXJyZW50VmFsdWUucmVmcmVzaEludGVydmFsICE9PSBjaGFuZ2UucHJldmlvdXNWYWx1ZS5yZWZyZXNoSW50ZXJ2YWwpIHtcbiAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgfVxuICAgIHN1cGVyLmNoYW5nZUNvbmZpZyhjaGFuZ2UpO1xuICB9XG5cbiAgYXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5sZWFmbGV0KSB7XG4gICAgICB0aGlzLmxlYWZsZXQgPSBhd2FpdCB0aGlzLm1hcFNlcnZpY2UuZ2V0TGVhZmxldCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCkge1xuICAgICAgdGhpcy5oYW5kbGVHbG9iYWxSZWZyZXNoTG9hZGluZygpO1xuICAgIH1cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmxheWVycyQsIHRoaXMuZGVmYXVsdENvbmZpZyRdKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJCkpXG4gICAgICAuc3Vic2NyaWJlKChbbGF5ZXJzLCBkZWZhdWx0Q29uZmlnXSkgPT4ge1xuICAgICAgICB0aGlzLmluaXRNYXAobGF5ZXJzLCBkZWZhdWx0Q29uZmlnKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VSb290Tm9kZSh0aGlzLnJvb3ROb2RlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VDb25maWcobmV3IFNpbXBsZUNoYW5nZSh7fSwgdGhpcy5jb25maWcsIGZhbHNlKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlc2V0KCkge1xuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgICBhd2FpdCB0aGlzLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMucmVsb2FkVHJpZ2dlciQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIGNhbmNlbFJlbG9hZCgpIHtcbiAgICB0aGlzLnJlbG9hZFRyaWdnZXIkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgbGlzdGVuVG9DbHVzdGVyQW5kSW50ZXJ2YWxDaGFuZ2VzKCkge1xuICAgIGNvbnN0IGNvdW50ZG93bkVuZGVkJCA9IHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0XG4gICAgICA/IHRoaXMud2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlLmNvdW50ZG93bkFjdGlvbnMuY291bnRkb3duRW5kZWQkLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgIDogdGhpcy5jb3VudGRvd25JbnRlcnZhbENvbXBcbiAgICAgICAgPyB0aGlzLmNvdW50ZG93bkludGVydmFsQ29tcC5jb3VudGRvd25FbmRlZC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlciQpKVxuICAgICAgICA6IEVNUFRZO1xuXG4gICAgY29uc3QgbWFwQ2hhbmdlJCA9IHRoaXMuZ2V0TWFwQ2hhbmdlT2JzZXJ2YWJsZSgpO1xuICAgIG1lcmdlKHRoaXMucmVsb2FkVHJpZ2dlciQsIG1hcENoYW5nZSQsIGNvdW50ZG93bkVuZGVkJClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAodmFsdWUgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCkge1xuICAgICAgICAgICAgIXRoaXMuaXNMZWFmbGV0RXZlbnRJbnRlcmZhY2UodmFsdWUpICYmIHRoaXMuaXNMb2FkaW5nJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICAgICAgICB0aGlzLmNvdW50ZG93bkludGVydmFsQ29tcD8uc3RvcCh0cnVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PlxuICAgICAgICAgIHZhbHVlID09PSBmYWxzZVxuICAgICAgICAgICAgPyBvZihbXSlcbiAgICAgICAgICAgIDogZnJvbSh0aGlzLm1hcFNlcnZpY2UuZ2V0Q2x1c3RlclNpemUodGhpcy5tYXAuZ2V0Qm91bmRzKCkpKS5waXBlKFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKChjbHVzdGVyU2l6ZTogQ2x1c3RlclNpemUpID0+XG4gICAgICAgICAgICAgICAgICB0aGlzLmdldENsdXN0ZXJSZWN0cyhjbHVzdGVyU2l6ZSwgdGhpcy5tYXAuZ2V0Qm91bmRzKCkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtZXJnZU1hcChyZWN0cyA9PiB0aGlzLmNyZWF0ZU9yVXBkYXRlQ2x1c3RlcihyZWN0cykpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck5vdGlmaWVyLm5leHQoZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGNsdXN0ZXJzOiBDbHVzdGVyTWFwW10pID0+IHtcbiAgICAgICAgY2x1c3RlcnMuZm9yRWFjaChjbHVzdGVyID0+IGNsdXN0ZXIucmVuZGVyKHRoaXMubWFwKSk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY291bnRkb3duSW50ZXJ2YWxDb21wPy5zdGFydCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBsaXN0ZW5Ub0NsdXN0ZXJNYXBDaGFuZ2VzKCkge1xuICAgIHRoaXMuZ2V0TWFwQ2hhbmdlT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcmVmcmVzaE1hcmtlcnMoKSB7XG4gICAgaWYgKHRoaXMuYXNzZXRzKSB7XG4gICAgICBzdXBlci5yZWZyZXNoTWFya2VycygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsdXN0ZXJzLmZvckVhY2goY2x1c3RlciA9PiB7XG4gICAgICBjbHVzdGVyLmNsZWFyKHRoaXMubWFwKTtcbiAgICB9KTtcbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VSb290Tm9kZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5jbGVhck1hcmtlcnMoKTtcbiAgICB0aGlzLmNsZWFyQ2x1c3RlcnMoKTtcblxuICAgIGNvbnN0IGlzUG9zaXRpb25EZXZpY2UgPSBtbz8uYzh5X1Bvc2l0aW9uICYmIG1vPy5jOHlfSXNEZXZpY2U7XG4gICAgaWYgKGlzUG9zaXRpb25EZXZpY2UpIHtcbiAgICAgIHRoaXMuYXNzZXRzID0gbW8gYXMgUG9zaXRpb25NYW5hZ2VkT2JqZWN0O1xuICAgICAgdGhpcy5yZWZyZXNoTWFya2VycygpO1xuICAgICAgdGhpcy5saXN0ZW5Ub0NsdXN0ZXJNYXBDaGFuZ2VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXNzZXRzID0gbnVsbDtcbiAgICAgIHRoaXMubGlzdGVuVG9DbHVzdGVyQW5kSW50ZXJ2YWxDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnJlbG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q2x1c3RlclJlY3RzKFxuICAgIGxldmVsVGhyZXNob2xkOiBDbHVzdGVyU2l6ZSA9IENsdXN0ZXJTaXplLkZPVVIsXG4gICAgdmlld0JvdW5kczogTC5MYXRMbmdCb3VuZHMsXG4gICAgbGV2ZWwgPSAwXG4gICk6IFByb21pc2U8TC5SZWN0YW5nbGVbXT4ge1xuICAgIGxldCByZWN0cyA9IFtdO1xuXG4gICAgaWYgKGxldmVsVGhyZXNob2xkID09PSBDbHVzdGVyU2l6ZS5OT05FKSB7XG4gICAgICBjb25zdCByZWN0ID0gYXdhaXQgdGhpcy5nZXRSZWN0KHZpZXdCb3VuZHMpO1xuICAgICAgcmVjdHMucHVzaChyZWN0KTtcbiAgICAgIHJldHVybiByZWN0cztcbiAgICB9XG5cbiAgICBpZiAobGV2ZWwgPj0gbGV2ZWxUaHJlc2hvbGQpIHtcbiAgICAgIHJldHVybiByZWN0cztcbiAgICB9XG4gICAgbGV2ZWwrKztcblxuICAgIGNvbnN0IHsgbGF0OiB4MSwgbG5nOiB5MSB9ID0gdmlld0JvdW5kcy5nZXRTb3V0aFdlc3QoKTtcbiAgICBjb25zdCB7IGxhdDogeDIsIGxuZzogeTIgfSA9IHZpZXdCb3VuZHMuZ2V0Tm9ydGhFYXN0KCk7XG4gICAgY29uc3QgbmV3WDIgPSAoeDEgKyB4MikgLyAyO1xuICAgIGNvbnN0IG5ld1kyID0gKHkxICsgeTIpIC8gMjtcblxuICAgIGNvbnN0IGJvdW5kczogW1tudW1iZXIsIG51bWJlcl0sIFtudW1iZXIsIG51bWJlcl1dW10gPSBbXG4gICAgICBbXG4gICAgICAgIFt4MSwgeTFdLFxuICAgICAgICBbbmV3WDIsIG5ld1kyXVxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgW25ld1gyLCBuZXdZMl0sXG4gICAgICAgIFt4MiwgeTJdXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICBbeDEsIG5ld1kyXSxcbiAgICAgICAgW25ld1gyLCB5Ml1cbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIFtuZXdYMiwgeTFdLFxuICAgICAgICBbeDIsIG5ld1kyXVxuICAgICAgXVxuICAgIF07XG4gICAgZm9yIChjb25zdCBib3VuZCBvZiBib3VuZHMpIHtcbiAgICAgIGNvbnN0IGxhdExuZ0JvdW5kID0gdGhpcy5sZWFmbGV0LmxhdExuZ0JvdW5kcyhib3VuZCk7XG4gICAgICBjb25zdCByZWN0ID0gYXdhaXQgdGhpcy5nZXRSZWN0KGxhdExuZ0JvdW5kKTtcbiAgICAgIHJlY3RzID0gWy4uLnJlY3RzLCAuLi4oYXdhaXQgdGhpcy5nZXRDbHVzdGVyUmVjdHMobGV2ZWxUaHJlc2hvbGQsIGxhdExuZ0JvdW5kLCBsZXZlbCkpXTtcblxuICAgICAgaWYgKGxldmVsID09PSBsZXZlbFRocmVzaG9sZCkge1xuICAgICAgICByZWN0cy5wdXNoKHJlY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZWN0cztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UmVjdChsYXRMbmdCb3VuZDogTC5MYXRMbmdCb3VuZHMpIHtcbiAgICBsZXQgY29sb3IgPSAnbm9uZSc7XG4gICAgaWYgKHRoaXMuc2hvd0NsdXN0ZXJDb2xvcikge1xuICAgICAgY29sb3IgPSBhd2FpdCB0aGlzLmNvbG9yU2VydmljZS5nZW5lcmF0ZUNvbG9yKGxhdExuZ0JvdW5kLnRvQkJveFN0cmluZygpKTtcbiAgICB9XG4gICAgY29uc3QgcmVjdCA9IHRoaXMubGVhZmxldC5yZWN0YW5nbGUobGF0TG5nQm91bmQsIHtcbiAgICAgIGNvbG9yLFxuICAgICAgd2VpZ2h0OiBjb2xvciA9PT0gJ25vbmUnID8gMCA6IDEsXG4gICAgICBpbnRlcmFjdGl2ZTogZmFsc2VcbiAgICB9KTtcbiAgICByZXR1cm4gcmVjdDtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJDbHVzdGVycygpIHtcbiAgICB0aGlzLmNsdXN0ZXJzLmZvckVhY2goY2x1c3RlciA9PiB7XG4gICAgICBjbHVzdGVyLmNsZWFyKHRoaXMubWFwKTtcbiAgICB9KTtcbiAgICB0aGlzLmNsdXN0ZXJzID0gW107XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUNsdXN0ZXIoY2x1c3RlcjogQ2x1c3Rlck1hcCkge1xuICAgIGNvbnN0IGNsdXN0ZXJDb3VudCA9IGF3YWl0IHRoaXMubWFwU2VydmljZS5nZXRQb3NpdGlvbk1Pc0Zyb21Cb3VuZENvdW50KFxuICAgICAgY2x1c3Rlci5yZWN0LmdldEJvdW5kcygpLFxuICAgICAgdGhpcy5yb290Tm9kZVxuICAgICk7XG4gICAgaWYgKGNsdXN0ZXJDb3VudCA+IHRoaXMubWFwU2VydmljZS5NQVhfREVWSUNFX1BFUl9DTFVTVEVSKSB7XG4gICAgICBjbHVzdGVyLnNldENsdXN0ZXJUb0JpZ01hcmtlcih0aGlzLm1hcCwgY2x1c3RlckNvdW50LCB0aGlzLmxlYWZsZXQpO1xuICAgICAgY2x1c3Rlci5wb3NpdGlvbnMgPSBbXTtcbiAgICAgIHJldHVybiBjbHVzdGVyO1xuICAgIH1cblxuICAgIGNsdXN0ZXIucmVtb3ZlQ2x1c3RlclRvQmlnTWFya2VyKCk7XG4gICAgY2x1c3Rlci5wb3NpdGlvbnMgPSBhd2FpdCB0aGlzLm1hcFNlcnZpY2UuZ2V0UG9zaXRpb25NT3NGcm9tQm91bmQoXG4gICAgICBjbHVzdGVyLnJlY3QuZ2V0Qm91bmRzKCksXG4gICAgICB0aGlzLnJvb3ROb2RlXG4gICAgKTtcbiAgICByZXR1cm4gY2x1c3RlcjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3JVcGRhdGVDbHVzdGVyKHJlY3RzOiBMLlJlY3RhbmdsZTx1bmtub3duPltdKSB7XG4gICAgY29uc3QgaXNOZXcgPSByZWN0cy5sZW5ndGggIT09IHRoaXMuY2x1c3RlcnMubGVuZ3RoO1xuICAgIGlmIChpc05ldykge1xuICAgICAgdGhpcy5jbGVhckNsdXN0ZXJzKCk7XG4gICAgfVxuICAgIGNvbnN0IHVwZGF0ZVByb21pc2UgPSByZWN0cy5tYXAoKHJlY3QsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaXNOZXcpIHtcbiAgICAgICAgY29uc3QgY2x1c3RlciA9IG5ldyBDbHVzdGVyTWFwKFxuICAgICAgICAgIHRoaXMuaXRlcmFibGUsXG4gICAgICAgICAgYXNzZXQgPT4gdGhpcy5nZXRBc3NldE1hcmtlcihhc3NldCksXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2x1c3RlcnMucHVzaChjbHVzdGVyKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2x1c3RlcnNbaW5kZXhdLnJlY3QgPSByZWN0O1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQ2x1c3Rlcih0aGlzLmNsdXN0ZXJzW2luZGV4XSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwodXBkYXRlUHJvbWlzZSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1hcENoYW5nZU9ic2VydmFibGUoKSB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgZnJvbUV2ZW50PEwuTGVhZmxldEV2ZW50Pih0aGlzLm1hcCwgJ21vdmUnKSxcbiAgICAgIGZyb21FdmVudDxMLkxlYWZsZXRFdmVudD4odGhpcy5tYXAsICdtb3ZlZW5kJylcbiAgICApLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5FVkVOVF9USFJPVFRMRV9USU1FKSxcbiAgICAgIHRhcChldmVudCA9PiB0aGlzLm1hcENoYW5nZS5lbWl0KGV2ZW50KSksXG4gICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZVRyaWdnZXIkKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzTGVhZmxldEV2ZW50SW50ZXJmYWNlKFxuICAgIExlYWZsZXRFdmVudE9iamVjdDogTC5MZWFmbGV0RXZlbnQgfCBib29sZWFuIHwgdm9pZFxuICApOiBMZWFmbGV0RXZlbnRPYmplY3QgaXMgTC5MZWFmbGV0RXZlbnQge1xuICAgIHJldHVybiAoTGVhZmxldEV2ZW50T2JqZWN0IGFzIEwuTGVhZmxldEV2ZW50KT8udHlwZSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVHbG9iYWxSZWZyZXNoTG9hZGluZygpOiB2b2lkIHtcbiAgICB0aGlzLmlzTG9hZGluZyRcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBnbG9iYWxBdXRvUmVmcmVzaExvYWRpbmcodGhpcy53aWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2UpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuZGVzdHJveSQuc3Vic2NyaWJlKHtcbiAgICAgIGNvbXBsZXRlOiAoKSA9PlxuICAgICAgICB0aGlzLmlzTG9hZGluZyQudmFsdWUgJiYgdGhpcy53aWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2UuZGVjcmVtZW50TG9hZGluZygpXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjOHktbWFwXCI+XG4gIDxkaXYgI21hcD48L2Rpdj5cbjwvZGl2PlxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWFwL2NsdXN0ZXItbWFwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL21hcC9jbHVzdGVyLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxlQUFlLEVBQ2YsTUFBTSxFQUNOLFlBQVksRUFFWixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLFlBQVksRUFFWixRQUFRLEVBQ1IsVUFBVSxFQUNWLDRCQUE0QixFQUM1Qiw4QkFBOEIsRUFDOUIsd0JBQXdCLEVBR3pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUNMLGVBQWUsRUFDZixLQUFLLEVBQ0wsVUFBVSxFQUNWLGFBQWEsRUFDYixJQUFJLEVBQ0osU0FBUyxFQUNULEtBQUssRUFDTCxFQUFFLEVBQ0gsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsR0FBRyxFQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsY0FBYyxFQUVmLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQU8zQyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsWUFBWTtJQTZCbkQsWUFDWSxp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SyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBJdGVyYWJsZURpZmZlcnMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB0eXBlIHsgTWFwRGVmYXVsdENvbmZpZywgTWFwVGlsZUxheWVyIH0gZnJvbSAnQGM4eS9vcHRpb25zJztcbmltcG9ydCB7XG4gIENvbG9yU2VydmljZSxcbiAgQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQsXG4gIERhdGVQaXBlLFxuICBHZW9TZXJ2aWNlLFxuICBNYW5hZ2VkT2JqZWN0UmVhbHRpbWVTZXJ2aWNlLFxuICBXaWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2UsXG4gIGdsb2JhbEF1dG9SZWZyZXNoTG9hZGluZyxcbiAgRHluYW1pY0NvbXBvbmVudCxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvclxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB0eXBlICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgRU1QVFksXG4gIE9ic2VydmFibGUsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZyb20sXG4gIGZyb21FdmVudCxcbiAgbWVyZ2UsXG4gIG9mXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZGVib3VuY2VUaW1lLFxuICBtZXJnZU1hcCxcbiAgc2tpcCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDbHVzdGVyTWFwIH0gZnJvbSAnLi9jbHVzdGVyLW1hcCc7XG5pbXBvcnQgeyBNYXBDb21wb25lbnQgfSBmcm9tICcuL21hcC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQ2x1c3Rlck1hcENvbmZpZyxcbiAgQ2x1c3RlclNpemUsXG4gIE1BUF9ERUZBVUxUX0NPTkZJRyxcbiAgTUFQX1RJTEVfTEFZRVIsXG4gIFBvc2l0aW9uTWFuYWdlZE9iamVjdFxufSBmcm9tICcuL21hcC5tb2RlbCc7XG5pbXBvcnQgeyBNYXBTZXJ2aWNlIH0gZnJvbSAnLi9tYXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jbHVzdGVyLW1hcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jbHVzdGVyLW1hcC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW01hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIENsdXN0ZXJNYXBDb21wb25lbnQgZXh0ZW5kcyBNYXBDb21wb25lbnQgaW1wbGVtZW50cyBEeW5hbWljQ29tcG9uZW50IHtcbiAgaXNMb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBjb3VudGRvd25JbnRlcnZhbENvbXA6IENvdW50ZG93bkludGVydmFsQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogQ2x1c3Rlck1hcENvbmZpZztcblxuICBASW5wdXQoKVxuICByb290Tm9kZTogSU1hbmFnZWRPYmplY3Q7XG5cbiAgQElucHV0KCdhc3NldCcpXG4gIGFzc2V0czogUG9zaXRpb25NYW5hZ2VkT2JqZWN0O1xuXG4gIEBJbnB1dCgpXG4gIHNob3dDbHVzdGVyQ29sb3IgPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgbWFwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxMLkxlYWZsZXRFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKCdtYXAnKVxuICBtYXBFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIGFsZXJ0czogRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcjtcblxuICBlcnJvck5vdGlmaWVyID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcHJpdmF0ZSByZWxvYWRUcmlnZ2VyJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcml2YXRlIGNsdXN0ZXJzOiBDbHVzdGVyTWFwW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBFVkVOVF9USFJPVFRMRV9USU1FID0gNzUwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBtb1JlYWx0aW1lU2VydmljZTogTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbWFwU2VydmljZTogTWFwU2VydmljZSxcbiAgICBASW5qZWN0KE1BUF9USUxFX0xBWUVSKSBwcm90ZWN0ZWQgbGF5ZXJzJDogT2JzZXJ2YWJsZTxNYXBUaWxlTGF5ZXJbXT4sXG4gICAgQEluamVjdChNQVBfREVGQVVMVF9DT05GSUcpXG4gICAgcHJvdGVjdGVkIGRlZmF1bHRDb25maWckOiBPYnNlcnZhYmxlPE1hcERlZmF1bHRDb25maWc+LFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB3aWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2U6IFdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZSxcbiAgICBwcml2YXRlIGl0ZXJhYmxlOiBJdGVyYWJsZURpZmZlcnMsXG4gICAgcHJpdmF0ZSBjb2xvclNlcnZpY2U6IENvbG9yU2VydmljZSxcbiAgICBnZW86IEdlb1NlcnZpY2UsXG4gICAgZGF0ZVBpcGU6IERhdGVQaXBlXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgbW9SZWFsdGltZVNlcnZpY2UsXG4gICAgICBtYXBTZXJ2aWNlLFxuICAgICAgbGF5ZXJzJCxcbiAgICAgIGRlZmF1bHRDb25maWckLFxuICAgICAgdHJhbnNsYXRlU2VydmljZSxcbiAgICAgIGdlbyxcbiAgICAgIGRhdGVQaXBlLFxuICAgICAgd2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5jb25maWc/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMucm9vdE5vZGU/LnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZXMucm9vdE5vZGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5jaGFuZ2VSb290Tm9kZShjaGFuZ2VzLnJvb3ROb2RlLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuY2hhbmdlQ29uZmlnKGNoYW5nZXMuY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VDb25maWcoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpIHtcbiAgICAvLyBvbiBmb2xsb3dpbmcsIGNhbmNlbCByZWxvYWQgdG8gYXZvaWQgc3RhbGUgc3RhdGVcbiAgICBpZiAoY2hhbmdlLmN1cnJlbnRWYWx1ZS5mb2xsb3cgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuY2FuY2VsUmVsb2FkKCk7XG4gICAgICB0aGlzLmlzTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZS5jdXJyZW50VmFsdWUucmVmcmVzaEludGVydmFsICE9PSBjaGFuZ2UucHJldmlvdXNWYWx1ZS5yZWZyZXNoSW50ZXJ2YWwpIHtcbiAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgfVxuICAgIHN1cGVyLmNoYW5nZUNvbmZpZyhjaGFuZ2UpO1xuICB9XG5cbiAgYXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICghdGhpcy5sZWFmbGV0KSB7XG4gICAgICB0aGlzLmxlYWZsZXQgPSBhd2FpdCB0aGlzLm1hcFNlcnZpY2UuZ2V0TGVhZmxldCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCkge1xuICAgICAgdGhpcy5oYW5kbGVHbG9iYWxSZWZyZXNoTG9hZGluZygpO1xuICAgIH1cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmxheWVycyQsIHRoaXMuZGVmYXVsdENvbmZpZyRdKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJCkpXG4gICAgICAuc3Vic2NyaWJlKChbbGF5ZXJzLCBkZWZhdWx0Q29uZmlnXSkgPT4ge1xuICAgICAgICB0aGlzLmluaXRNYXAobGF5ZXJzLCBkZWZhdWx0Q29uZmlnKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VSb290Tm9kZSh0aGlzLnJvb3ROb2RlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VDb25maWcobmV3IFNpbXBsZUNoYW5nZSh7fSwgdGhpcy5jb25maWcsIGZhbHNlKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlc2V0KCkge1xuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgICBhd2FpdCB0aGlzLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMucmVsb2FkVHJpZ2dlciQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIGNhbmNlbFJlbG9hZCgpIHtcbiAgICB0aGlzLnJlbG9hZFRyaWdnZXIkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgbGlzdGVuVG9DbHVzdGVyQW5kSW50ZXJ2YWxDaGFuZ2VzKCkge1xuICAgIGNvbnN0IGNvdW50ZG93bkVuZGVkJCA9IHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0XG4gICAgICA/IHRoaXMud2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlLmNvdW50ZG93bkFjdGlvbnMuY291bnRkb3duRW5kZWQkLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgIDogdGhpcy5jb3VudGRvd25JbnRlcnZhbENvbXBcbiAgICAgICAgPyB0aGlzLmNvdW50ZG93bkludGVydmFsQ29tcC5jb3VudGRvd25FbmRlZC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlciQpKVxuICAgICAgICA6IEVNUFRZO1xuXG4gICAgY29uc3QgbWFwQ2hhbmdlJCA9IHRoaXMuZ2V0TWFwQ2hhbmdlT2JzZXJ2YWJsZSgpO1xuICAgIG1lcmdlKHRoaXMucmVsb2FkVHJpZ2dlciQsIG1hcENoYW5nZSQsIGNvdW50ZG93bkVuZGVkJClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAodmFsdWUgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCkge1xuICAgICAgICAgICAgIXRoaXMuaXNMZWFmbGV0RXZlbnRJbnRlcmZhY2UodmFsdWUpICYmIHRoaXMuaXNMb2FkaW5nJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICAgICAgICB0aGlzLmNvdW50ZG93bkludGVydmFsQ29tcD8uc3RvcCh0cnVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PlxuICAgICAgICAgIHZhbHVlID09PSBmYWxzZVxuICAgICAgICAgICAgPyBvZihbXSlcbiAgICAgICAgICAgIDogZnJvbSh0aGlzLm1hcFNlcnZpY2UuZ2V0Q2x1c3RlclNpemUodGhpcy5tYXAuZ2V0Qm91bmRzKCkpKS5waXBlKFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKChjbHVzdGVyU2l6ZTogQ2x1c3RlclNpemUpID0+XG4gICAgICAgICAgICAgICAgICB0aGlzLmdldENsdXN0ZXJSZWN0cyhjbHVzdGVyU2l6ZSwgdGhpcy5tYXAuZ2V0Qm91bmRzKCkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBtZXJnZU1hcChyZWN0cyA9PiB0aGlzLmNyZWF0ZU9yVXBkYXRlQ2x1c3RlcihyZWN0cykpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck5vdGlmaWVyLm5leHQoZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGNsdXN0ZXJzOiBDbHVzdGVyTWFwW10pID0+IHtcbiAgICAgICAgY2x1c3RlcnMuZm9yRWFjaChjbHVzdGVyID0+IGNsdXN0ZXIucmVuZGVyKHRoaXMubWFwKSk7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY291bnRkb3duSW50ZXJ2YWxDb21wPy5zdGFydCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBsaXN0ZW5Ub0NsdXN0ZXJNYXBDaGFuZ2VzKCkge1xuICAgIHRoaXMuZ2V0TWFwQ2hhbmdlT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcmVmcmVzaE1hcmtlcnMoKSB7XG4gICAgaWYgKHRoaXMuYXNzZXRzKSB7XG4gICAgICBzdXBlci5yZWZyZXNoTWFya2VycygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsdXN0ZXJzLmZvckVhY2goY2x1c3RlciA9PiB7XG4gICAgICBjbHVzdGVyLmNsZWFyKHRoaXMubWFwKTtcbiAgICB9KTtcbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VSb290Tm9kZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5jbGVhck1hcmtlcnMoKTtcbiAgICB0aGlzLmNsZWFyQ2x1c3RlcnMoKTtcblxuICAgIGNvbnN0IGlzUG9zaXRpb25EZXZpY2UgPSBtbz8uYzh5X1Bvc2l0aW9uICYmIG1vPy5jOHlfSXNEZXZpY2U7XG4gICAgaWYgKGlzUG9zaXRpb25EZXZpY2UpIHtcbiAgICAgIHRoaXMuYXNzZXRzID0gbW8gYXMgUG9zaXRpb25NYW5hZ2VkT2JqZWN0O1xuICAgICAgdGhpcy5yZWZyZXNoTWFya2VycygpO1xuICAgICAgdGhpcy5saXN0ZW5Ub0NsdXN0ZXJNYXBDaGFuZ2VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXNzZXRzID0gbnVsbDtcbiAgICAgIHRoaXMubGlzdGVuVG9DbHVzdGVyQW5kSW50ZXJ2YWxDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnJlbG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q2x1c3RlclJlY3RzKFxuICAgIGxldmVsVGhyZXNob2xkOiBDbHVzdGVyU2l6ZSA9IENsdXN0ZXJTaXplLkZPVVIsXG4gICAgdmlld0JvdW5kczogTC5MYXRMbmdCb3VuZHMsXG4gICAgbGV2ZWwgPSAwXG4gICk6IFByb21pc2U8TC5SZWN0YW5nbGVbXT4ge1xuICAgIGxldCByZWN0cyA9IFtdO1xuXG4gICAgaWYgKGxldmVsVGhyZXNob2xkID09PSBDbHVzdGVyU2l6ZS5OT05FKSB7XG4gICAgICBjb25zdCByZWN0ID0gYXdhaXQgdGhpcy5nZXRSZWN0KHZpZXdCb3VuZHMpO1xuICAgICAgcmVjdHMucHVzaChyZWN0KTtcbiAgICAgIHJldHVybiByZWN0cztcbiAgICB9XG5cbiAgICBpZiAobGV2ZWwgPj0gbGV2ZWxUaHJlc2hvbGQpIHtcbiAgICAgIHJldHVybiByZWN0cztcbiAgICB9XG4gICAgbGV2ZWwrKztcblxuICAgIGNvbnN0IHsgbGF0OiB4MSwgbG5nOiB5MSB9ID0gdmlld0JvdW5kcy5nZXRTb3V0aFdlc3QoKTtcbiAgICBjb25zdCB7IGxhdDogeDIsIGxuZzogeTIgfSA9IHZpZXdCb3VuZHMuZ2V0Tm9ydGhFYXN0KCk7XG4gICAgY29uc3QgbmV3WDIgPSAoeDEgKyB4MikgLyAyO1xuICAgIGNvbnN0IG5ld1kyID0gKHkxICsgeTIpIC8gMjtcblxuICAgIGNvbnN0IGJvdW5kczogW1tudW1iZXIsIG51bWJlcl0sIFtudW1iZXIsIG51bWJlcl1dW10gPSBbXG4gICAgICBbXG4gICAgICAgIFt4MSwgeTFdLFxuICAgICAgICBbbmV3WDIsIG5ld1kyXVxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgW25ld1gyLCBuZXdZMl0sXG4gICAgICAgIFt4MiwgeTJdXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICBbeDEsIG5ld1kyXSxcbiAgICAgICAgW25ld1gyLCB5Ml1cbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIFtuZXdYMiwgeTFdLFxuICAgICAgICBbeDIsIG5ld1kyXVxuICAgICAgXVxuICAgIF07XG4gICAgZm9yIChjb25zdCBib3VuZCBvZiBib3VuZHMpIHtcbiAgICAgIGNvbnN0IGxhdExuZ0JvdW5kID0gdGhpcy5sZWFmbGV0LmxhdExuZ0JvdW5kcyhib3VuZCk7XG4gICAgICBjb25zdCByZWN0ID0gYXdhaXQgdGhpcy5nZXRSZWN0KGxhdExuZ0JvdW5kKTtcbiAgICAgIHJlY3RzID0gWy4uLnJlY3RzLCAuLi4oYXdhaXQgdGhpcy5nZXRDbHVzdGVyUmVjdHMobGV2ZWxUaHJlc2hvbGQsIGxhdExuZ0JvdW5kLCBsZXZlbCkpXTtcblxuICAgICAgaWYgKGxldmVsID09PSBsZXZlbFRocmVzaG9sZCkge1xuICAgICAgICByZWN0cy5wdXNoKHJlY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZWN0cztcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UmVjdChsYXRMbmdCb3VuZDogTC5MYXRMbmdCb3VuZHMpIHtcbiAgICBsZXQgY29sb3IgPSAnbm9uZSc7XG4gICAgaWYgKHRoaXMuc2hvd0NsdXN0ZXJDb2xvcikge1xuICAgICAgY29sb3IgPSBhd2FpdCB0aGlzLmNvbG9yU2VydmljZS5nZW5lcmF0ZUNvbG9yKGxhdExuZ0JvdW5kLnRvQkJveFN0cmluZygpKTtcbiAgICB9XG4gICAgY29uc3QgcmVjdCA9IHRoaXMubGVhZmxldC5yZWN0YW5nbGUobGF0TG5nQm91bmQsIHtcbiAgICAgIGNvbG9yLFxuICAgICAgd2VpZ2h0OiBjb2xvciA9PT0gJ25vbmUnID8gMCA6IDEsXG4gICAgICBpbnRlcmFjdGl2ZTogZmFsc2VcbiAgICB9KTtcbiAgICByZXR1cm4gcmVjdDtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJDbHVzdGVycygpIHtcbiAgICB0aGlzLmNsdXN0ZXJzLmZvckVhY2goY2x1c3RlciA9PiB7XG4gICAgICBjbHVzdGVyLmNsZWFyKHRoaXMubWFwKTtcbiAgICB9KTtcbiAgICB0aGlzLmNsdXN0ZXJzID0gW107XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZUNsdXN0ZXIoY2x1c3RlcjogQ2x1c3Rlck1hcCkge1xuICAgIGNvbnN0IGNsdXN0ZXJDb3VudCA9IGF3YWl0IHRoaXMubWFwU2VydmljZS5nZXRQb3NpdGlvbk1Pc0Zyb21Cb3VuZENvdW50KFxuICAgICAgY2x1c3Rlci5yZWN0LmdldEJvdW5kcygpLFxuICAgICAgdGhpcy5yb290Tm9kZVxuICAgICk7XG4gICAgaWYgKGNsdXN0ZXJDb3VudCA+IHRoaXMubWFwU2VydmljZS5NQVhfREVWSUNFX1BFUl9DTFVTVEVSKSB7XG4gICAgICBjbHVzdGVyLnNldENsdXN0ZXJUb0JpZ01hcmtlcih0aGlzLm1hcCwgY2x1c3RlckNvdW50LCB0aGlzLmxlYWZsZXQpO1xuICAgICAgY2x1c3Rlci5wb3NpdGlvbnMgPSBbXTtcbiAgICAgIHJldHVybiBjbHVzdGVyO1xuICAgIH1cblxuICAgIGNsdXN0ZXIucmVtb3ZlQ2x1c3RlclRvQmlnTWFya2VyKCk7XG4gICAgY2x1c3Rlci5wb3NpdGlvbnMgPSBhd2FpdCB0aGlzLm1hcFNlcnZpY2UuZ2V0UG9zaXRpb25NT3NGcm9tQm91bmQoXG4gICAgICBjbHVzdGVyLnJlY3QuZ2V0Qm91bmRzKCksXG4gICAgICB0aGlzLnJvb3ROb2RlXG4gICAgKTtcbiAgICByZXR1cm4gY2x1c3RlcjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3JVcGRhdGVDbHVzdGVyKHJlY3RzOiBMLlJlY3RhbmdsZTx1bmtub3duPltdKSB7XG4gICAgY29uc3QgaXNOZXcgPSByZWN0cy5sZW5ndGggIT09IHRoaXMuY2x1c3RlcnMubGVuZ3RoO1xuICAgIGlmIChpc05ldykge1xuICAgICAgdGhpcy5jbGVhckNsdXN0ZXJzKCk7XG4gICAgfVxuICAgIGNvbnN0IHVwZGF0ZVByb21pc2UgPSByZWN0cy5tYXAoKHJlY3QsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaXNOZXcpIHtcbiAgICAgICAgY29uc3QgY2x1c3RlciA9IG5ldyBDbHVzdGVyTWFwKFxuICAgICAgICAgIHRoaXMuaXRlcmFibGUsXG4gICAgICAgICAgYXNzZXQgPT4gdGhpcy5nZXRBc3NldE1hcmtlcihhc3NldCksXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY2x1c3RlcnMucHVzaChjbHVzdGVyKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2x1c3RlcnNbaW5kZXhdLnJlY3QgPSByZWN0O1xuICAgICAgcmV0dXJuIHRoaXMudXBkYXRlQ2x1c3Rlcih0aGlzLmNsdXN0ZXJzW2luZGV4XSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwodXBkYXRlUHJvbWlzZSk7XG4gIH1cblxuICBwcml2YXRlIGdldE1hcENoYW5nZU9ic2VydmFibGUoKSB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgZnJvbUV2ZW50PEwuTGVhZmxldEV2ZW50Pih0aGlzLm1hcCwgJ21vdmUnKSxcbiAgICAgIGZyb21FdmVudDxMLkxlYWZsZXRFdmVudD4odGhpcy5tYXAsICdtb3ZlZW5kJylcbiAgICApLnBpcGUoXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5FVkVOVF9USFJPVFRMRV9USU1FKSxcbiAgICAgIHRhcChldmVudCA9PiB0aGlzLm1hcENoYW5nZS5lbWl0KGV2ZW50KSksXG4gICAgICB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZVRyaWdnZXIkKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzTGVhZmxldEV2ZW50SW50ZXJmYWNlKFxuICAgIExlYWZsZXRFdmVudE9iamVjdDogTC5MZWFmbGV0RXZlbnQgfCBib29sZWFuIHwgdm9pZFxuICApOiBMZWFmbGV0RXZlbnRPYmplY3QgaXMgTC5MZWFmbGV0RXZlbnQge1xuICAgIHJldHVybiAoTGVhZmxldEV2ZW50T2JqZWN0IGFzIEwuTGVhZmxldEV2ZW50KT8udHlwZSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVHbG9iYWxSZWZyZXNoTG9hZGluZygpOiB2b2lkIHtcbiAgICB0aGlzLmlzTG9hZGluZyRcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICBnbG9iYWxBdXRvUmVmcmVzaExvYWRpbmcodGhpcy53aWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2UpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuZGVzdHJveSQuc3Vic2NyaWJlKHtcbiAgICAgIGNvbXBsZXRlOiAoKSA9PlxuICAgICAgICB0aGlzLmlzTG9hZGluZyQudmFsdWUgJiYgdGhpcy53aWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2UuZGVjcmVtZW50TG9hZGluZygpXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjOHktbWFwXCI+XG4gIDxkaXYgI21hcD48L2Rpdj5cbjwvZGl2PlxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
@@ -12,6 +12,7 @@ export class MapStatusComponent {
12
12
  constructor() {
13
13
  this.configChange = new EventEmitter();
14
14
  this.onUnfollow = new EventEmitter();
15
+ this.fitAssetsToBounds = new EventEmitter();
15
16
  this.buttonsConfig = {};
16
17
  this.centerMapButtonDisabled = true;
17
18
  this.refreshPaused = false;
@@ -34,6 +35,10 @@ export class MapStatusComponent {
34
35
  center() {
35
36
  this.clusterMap.center();
36
37
  }
38
+ fitToBounds() {
39
+ this.fitToBoundsButtonDisabled = true;
40
+ this.fitAssetsToBounds.emit();
41
+ }
37
42
  reload() {
38
43
  this.clusterMap.reload();
39
44
  }
@@ -78,9 +83,12 @@ export class MapStatusComponent {
78
83
  }
79
84
  checkIfMapIsAlreadyCentered() {
80
85
  this.clusterMap.mapChange.pipe(takeUntil(this.destroy$)).subscribe((event) => {
81
- if (this.config?.center && event.sourceTarget?.getBounds) {
86
+ if (event.sourceTarget?.getBounds) {
82
87
  const bounds = event.sourceTarget.getBounds();
83
- this.centerMapButtonDisabled = this.shouldDisableCenterButton(bounds);
88
+ this.fitToBoundsButtonDisabled = this.shouldDisableFitToBoundsButton(bounds);
89
+ if (this.config?.center) {
90
+ this.centerMapButtonDisabled = this.shouldDisableCenterButton(bounds);
91
+ }
84
92
  }
85
93
  });
86
94
  }
@@ -98,23 +106,33 @@ export class MapStatusComponent {
98
106
  const shrunkBounds = bounds.pad(-0.25);
99
107
  return shrunkBounds.contains(this.config.center);
100
108
  }
109
+ shouldDisableFitToBoundsButton(bounds) {
110
+ if (!this.assets) {
111
+ return true;
112
+ }
113
+ return this.assets.every(({ c8y_Position }) => bounds.contains([c8y_Position.lat, c8y_Position.lng]));
114
+ }
101
115
  defaultButtonsConfig() {
102
116
  return {
103
117
  realtime: { show: this.config.realtime || this.clusterMap.config.follow, disabled: false }
104
118
  };
105
119
  }
106
120
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
107
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapStatusComponent, selector: "c8y-map-status", inputs: { config: "config", clusterMap: "clusterMap", buttonsConfig: "buttonsConfig" }, outputs: { configChange: "configChange", onUnfollow: "onUnfollow" }, viewQueries: [{ propertyName: "countdownIntervalComp", first: true, predicate: CountdownIntervalComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-map-status\">\n <div class=\"leaflet-touch\">\n <div\n class=\"leaflet-bar\"\n role=\"group\"\n >\n <button\n class=\"c8y-realtime\"\n title=\"{{ 'Realtime' | translate }}\"\n type=\"button\"\n *ngIf=\"buttonsConfig.realtime.show\"\n (click)=\"toggleRealtime()\"\n [disabled]=\"buttonsConfig.realtime.disabled\"\n >\n <span\n class=\"c8y-pulse\"\n [ngClass]=\"{\n active: clusterMap?.config.realtime,\n inactive: !clusterMap?.config.realtime\n }\"\n ></span>\n </button>\n\n <label\n class=\"toggle-countdown vertical\"\n [attr.aria-label]=\"\n refreshPaused ? ('Enable auto refresh' | translate) : ('Disable auto refresh' | translate)\n \"\n [tooltip]=\"\n refreshPaused ? ('Enable auto refresh' | translate) : ('Disable auto refresh' | translate)\n \"\n placement=\"left\"\n *ngIf=\"\n !config.widgetInstanceGlobalAutoRefreshContext &&\n clusterMap?.config.refreshInterval &&\n !clusterMap?.config.follow\n \"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"1000\"\n >\n <input\n type=\"checkbox\"\n (click)=\"toggleAutoRefresh($event)\"\n />\n <c8y-countdown-interval\n [hidden]=\"refreshPaused\"\n [countdownInterval]=\"clusterMap?.config.refreshInterval\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"refreshPaused\"\n ></i>\n </label>\n\n <button\n title=\"{{ 'Cancel reload' | translate }}\"\n type=\"button\"\n *ngIf=\"(clusterMap?.isLoading$ | async) && !config.widgetInstanceGlobalAutoRefreshContext\"\n (click)=\"cancelReload()\"\n >\n <i\n class=\"icon-spin\"\n c8yIcon=\"refresh\"\n ></i>\n </button>\n <button\n [title]=\"'Reload' | translate\"\n type=\"button\"\n *ngIf=\"\n !clusterMap?.config.realtime &&\n !clusterMap?.assets &&\n !(clusterMap?.isLoading$ | async) &&\n !config.widgetInstanceGlobalAutoRefreshContext\n \"\n (click)=\"reload()\"\n >\n <i c8yIcon=\"refresh\"></i>\n </button>\n <button\n title=\"{{ 'Center map' | translate }}\"\n type=\"button\"\n (click)=\"center()\"\n [disabled]=\"centerMapButtonDisabled || clusterMap?.config.follow\"\n >\n <i c8yIcon=\"target1\"></i>\n </button>\n <button\n title=\"{{ 'Unfollow' | translate }}\"\n type=\"button\"\n *ngIf=\"clusterMap?.config.follow\"\n (click)=\"unfollow()\"\n >\n <i c8yIcon=\"marker-off\"></i>\n </button>\n\n <button\n title=\"{{ 'Follow' | translate }}\"\n type=\"button\"\n *ngIf=\"initConfig.follow && !clusterMap?.config.follow\"\n (click)=\"follow()\"\n >\n <i c8yIcon=\"marker\"></i>\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: i2.CountdownIntervalComponent, selector: "c8y-countdown-interval", inputs: ["countdownInterval"], outputs: ["countdownEnded"] }, { kind: "directive", type: i3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapStatusComponent, selector: "c8y-map-status", inputs: { config: "config", assets: "assets", clusterMap: "clusterMap", buttonsConfig: "buttonsConfig" }, outputs: { configChange: "configChange", onUnfollow: "onUnfollow", fitAssetsToBounds: "fitAssetsToBounds" }, viewQueries: [{ propertyName: "countdownIntervalComp", first: true, predicate: CountdownIntervalComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-map-status\">\n <div class=\"leaflet-touch\">\n <div\n class=\"leaflet-bar\"\n role=\"group\"\n >\n <button\n class=\"c8y-realtime\"\n title=\"{{ 'Realtime' | translate }}\"\n type=\"button\"\n *ngIf=\"buttonsConfig.realtime.show\"\n (click)=\"toggleRealtime()\"\n [disabled]=\"buttonsConfig.realtime.disabled\"\n >\n <span\n class=\"c8y-pulse\"\n [ngClass]=\"{\n active: clusterMap?.config.realtime,\n inactive: !clusterMap?.config.realtime\n }\"\n ></span>\n </button>\n\n <label\n class=\"toggle-countdown vertical\"\n [attr.aria-label]=\"\n refreshPaused ? ('Enable auto refresh' | translate) : ('Disable auto refresh' | translate)\n \"\n [tooltip]=\"\n refreshPaused ? ('Enable auto refresh' | translate) : ('Disable auto refresh' | translate)\n \"\n placement=\"left\"\n *ngIf=\"\n !config.widgetInstanceGlobalAutoRefreshContext &&\n clusterMap?.config.refreshInterval &&\n !clusterMap?.config.follow\n \"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"1000\"\n >\n <input\n type=\"checkbox\"\n (click)=\"toggleAutoRefresh($event)\"\n />\n <c8y-countdown-interval\n [hidden]=\"refreshPaused\"\n [countdownInterval]=\"clusterMap?.config.refreshInterval\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"refreshPaused\"\n ></i>\n </label>\n\n <button\n title=\"{{ 'Cancel reload' | translate }}\"\n type=\"button\"\n *ngIf=\"(clusterMap?.isLoading$ | async) && !config.widgetInstanceGlobalAutoRefreshContext\"\n (click)=\"cancelReload()\"\n >\n <i\n class=\"icon-spin\"\n c8yIcon=\"refresh\"\n ></i>\n </button>\n <button\n [title]=\"'Reload' | translate\"\n type=\"button\"\n *ngIf=\"\n !clusterMap?.config.realtime &&\n !clusterMap?.assets &&\n !(clusterMap?.isLoading$ | async) &&\n !config.widgetInstanceGlobalAutoRefreshContext\n \"\n (click)=\"reload()\"\n >\n <i c8yIcon=\"refresh\"></i>\n </button>\n <button\n title=\"{{ 'Center map' | translate }}\"\n type=\"button\"\n (click)=\"center()\"\n [disabled]=\"centerMapButtonDisabled || clusterMap?.config.follow\"\n >\n <i c8yIcon=\"target1\"></i>\n </button>\n <button\n title=\"{{ 'Fit to assets bounds' | translate }}\"\n type=\"button\"\n (click)=\"fitToBounds()\"\n [disabled]=\"fitToBoundsButtonDisabled || clusterMap?.config.follow\"\n >\n <i c8yIcon=\"waypoint-map\"></i>\n </button>\n <button\n title=\"{{ 'Unfollow' | translate }}\"\n type=\"button\"\n *ngIf=\"clusterMap?.config.follow\"\n (click)=\"unfollow()\"\n >\n <i c8yIcon=\"marker-off\"></i>\n </button>\n\n <button\n title=\"{{ 'Follow' | translate }}\"\n type=\"button\"\n *ngIf=\"initConfig.follow && !clusterMap?.config.follow\"\n (click)=\"follow()\"\n >\n <i c8yIcon=\"marker\"></i>\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: i2.CountdownIntervalComponent, selector: "c8y-countdown-interval", inputs: ["countdownInterval"], outputs: ["countdownEnded"] }, { kind: "directive", type: i3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
108
122
  }
109
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapStatusComponent, decorators: [{
110
124
  type: Component,
111
- args: [{ selector: 'c8y-map-status', template: "<div class=\"c8y-map-status\">\n <div class=\"leaflet-touch\">\n <div\n class=\"leaflet-bar\"\n role=\"group\"\n >\n <button\n class=\"c8y-realtime\"\n title=\"{{ 'Realtime' | translate }}\"\n type=\"button\"\n *ngIf=\"buttonsConfig.realtime.show\"\n (click)=\"toggleRealtime()\"\n [disabled]=\"buttonsConfig.realtime.disabled\"\n >\n <span\n class=\"c8y-pulse\"\n [ngClass]=\"{\n active: clusterMap?.config.realtime,\n inactive: !clusterMap?.config.realtime\n }\"\n ></span>\n </button>\n\n <label\n class=\"toggle-countdown vertical\"\n [attr.aria-label]=\"\n refreshPaused ? ('Enable auto refresh' | translate) : ('Disable auto refresh' | translate)\n \"\n [tooltip]=\"\n refreshPaused ? ('Enable auto refresh' | translate) : ('Disable auto refresh' | translate)\n \"\n placement=\"left\"\n *ngIf=\"\n !config.widgetInstanceGlobalAutoRefreshContext &&\n clusterMap?.config.refreshInterval &&\n !clusterMap?.config.follow\n \"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"1000\"\n >\n <input\n type=\"checkbox\"\n (click)=\"toggleAutoRefresh($event)\"\n />\n <c8y-countdown-interval\n [hidden]=\"refreshPaused\"\n [countdownInterval]=\"clusterMap?.config.refreshInterval\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"refreshPaused\"\n ></i>\n </label>\n\n <button\n title=\"{{ 'Cancel reload' | translate }}\"\n type=\"button\"\n *ngIf=\"(clusterMap?.isLoading$ | async) && !config.widgetInstanceGlobalAutoRefreshContext\"\n (click)=\"cancelReload()\"\n >\n <i\n class=\"icon-spin\"\n c8yIcon=\"refresh\"\n ></i>\n </button>\n <button\n [title]=\"'Reload' | translate\"\n type=\"button\"\n *ngIf=\"\n !clusterMap?.config.realtime &&\n !clusterMap?.assets &&\n !(clusterMap?.isLoading$ | async) &&\n !config.widgetInstanceGlobalAutoRefreshContext\n \"\n (click)=\"reload()\"\n >\n <i c8yIcon=\"refresh\"></i>\n </button>\n <button\n title=\"{{ 'Center map' | translate }}\"\n type=\"button\"\n (click)=\"center()\"\n [disabled]=\"centerMapButtonDisabled || clusterMap?.config.follow\"\n >\n <i c8yIcon=\"target1\"></i>\n </button>\n <button\n title=\"{{ 'Unfollow' | translate }}\"\n type=\"button\"\n *ngIf=\"clusterMap?.config.follow\"\n (click)=\"unfollow()\"\n >\n <i c8yIcon=\"marker-off\"></i>\n </button>\n\n <button\n title=\"{{ 'Follow' | translate }}\"\n type=\"button\"\n *ngIf=\"initConfig.follow && !clusterMap?.config.follow\"\n (click)=\"follow()\"\n >\n <i c8yIcon=\"marker\"></i>\n </button>\n </div>\n </div>\n</div>\n" }]
125
+ args: [{ selector: 'c8y-map-status', template: "<div class=\"c8y-map-status\">\n <div class=\"leaflet-touch\">\n <div\n class=\"leaflet-bar\"\n role=\"group\"\n >\n <button\n class=\"c8y-realtime\"\n title=\"{{ 'Realtime' | translate }}\"\n type=\"button\"\n *ngIf=\"buttonsConfig.realtime.show\"\n (click)=\"toggleRealtime()\"\n [disabled]=\"buttonsConfig.realtime.disabled\"\n >\n <span\n class=\"c8y-pulse\"\n [ngClass]=\"{\n active: clusterMap?.config.realtime,\n inactive: !clusterMap?.config.realtime\n }\"\n ></span>\n </button>\n\n <label\n class=\"toggle-countdown vertical\"\n [attr.aria-label]=\"\n refreshPaused ? ('Enable auto refresh' | translate) : ('Disable auto refresh' | translate)\n \"\n [tooltip]=\"\n refreshPaused ? ('Enable auto refresh' | translate) : ('Disable auto refresh' | translate)\n \"\n placement=\"left\"\n *ngIf=\"\n !config.widgetInstanceGlobalAutoRefreshContext &&\n clusterMap?.config.refreshInterval &&\n !clusterMap?.config.follow\n \"\n [adaptivePosition]=\"false\"\n [container]=\"'body'\"\n [delay]=\"1000\"\n >\n <input\n type=\"checkbox\"\n (click)=\"toggleAutoRefresh($event)\"\n />\n <c8y-countdown-interval\n [hidden]=\"refreshPaused\"\n [countdownInterval]=\"clusterMap?.config.refreshInterval\"\n ></c8y-countdown-interval>\n <i\n c8yIcon=\"pause\"\n *ngIf=\"refreshPaused\"\n ></i>\n </label>\n\n <button\n title=\"{{ 'Cancel reload' | translate }}\"\n type=\"button\"\n *ngIf=\"(clusterMap?.isLoading$ | async) && !config.widgetInstanceGlobalAutoRefreshContext\"\n (click)=\"cancelReload()\"\n >\n <i\n class=\"icon-spin\"\n c8yIcon=\"refresh\"\n ></i>\n </button>\n <button\n [title]=\"'Reload' | translate\"\n type=\"button\"\n *ngIf=\"\n !clusterMap?.config.realtime &&\n !clusterMap?.assets &&\n !(clusterMap?.isLoading$ | async) &&\n !config.widgetInstanceGlobalAutoRefreshContext\n \"\n (click)=\"reload()\"\n >\n <i c8yIcon=\"refresh\"></i>\n </button>\n <button\n title=\"{{ 'Center map' | translate }}\"\n type=\"button\"\n (click)=\"center()\"\n [disabled]=\"centerMapButtonDisabled || clusterMap?.config.follow\"\n >\n <i c8yIcon=\"target1\"></i>\n </button>\n <button\n title=\"{{ 'Fit to assets bounds' | translate }}\"\n type=\"button\"\n (click)=\"fitToBounds()\"\n [disabled]=\"fitToBoundsButtonDisabled || clusterMap?.config.follow\"\n >\n <i c8yIcon=\"waypoint-map\"></i>\n </button>\n <button\n title=\"{{ 'Unfollow' | translate }}\"\n type=\"button\"\n *ngIf=\"clusterMap?.config.follow\"\n (click)=\"unfollow()\"\n >\n <i c8yIcon=\"marker-off\"></i>\n </button>\n\n <button\n title=\"{{ 'Follow' | translate }}\"\n type=\"button\"\n *ngIf=\"initConfig.follow && !clusterMap?.config.follow\"\n (click)=\"follow()\"\n >\n <i c8yIcon=\"marker\"></i>\n </button>\n </div>\n </div>\n</div>\n" }]
112
126
  }], propDecorators: { config: [{
113
127
  type: Input
128
+ }], assets: [{
129
+ type: Input
114
130
  }], configChange: [{
115
131
  type: Output
116
132
  }], onUnfollow: [{
117
133
  type: Output
134
+ }], fitAssetsToBounds: [{
135
+ type: Output
118
136
  }], clusterMap: [{
119
137
  type: Input
120
138
  }], buttonsConfig: [{
@@ -123,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
123
141
  type: ViewChild,
124
142
  args: [CountdownIntervalComponent]
125
143
  }] } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tYXAvbWFwLXN0YXR1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9tYXAvbWFwLXN0YXR1cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFPOUQsTUFBTSxPQUFPLGtCQUFrQjtJQUovQjtRQVNFLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFHcEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBS3pDLGtCQUFhLEdBQW9DLEVBQUUsQ0FBQztRQUU3RCw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFJL0Isa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDZCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztLQW9HeEM7SUFsR0MsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxlQUFlO1FBQ2Is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O0lBQ0sseUJBQXlCLENBQUMsTUFBc0I7UUFDdEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsT0FBTztZQUNMLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtTQUMzRixDQUFDO0lBQ0osQ0FBQzsrR0F2SFUsa0JBQWtCO21HQUFsQixrQkFBa0IsMFFBZ0JsQiwwQkFBMEIscUVDNUJ2QyxzbUdBMkdBOzs0RkQvRmEsa0JBQWtCO2tCQUo5QixTQUFTOytCQUNFLGdCQUFnQjs4QkFLMUIsTUFBTTtzQkFETCxLQUFLO2dCQUlOLFlBQVk7c0JBRFgsTUFBTTtnQkFJUCxVQUFVO3NCQURULE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR2lDLHFCQUFxQjtzQkFBM0QsU0FBUzt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3VudGRvd25JbnRlcnZhbENvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENsdXN0ZXJNYXBDb21wb25lbnQgfSBmcm9tICcuL2NsdXN0ZXItbWFwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDbHVzdGVyTWFwQ29uZmlnLCBNYXBTdGF0dXNCdXR0b25zQ29uZmlnIH0gZnJvbSAnLi9tYXAubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbWFwLXN0YXR1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtc3RhdHVzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBNYXBTdGF0dXNDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBjb25maWc6IENsdXN0ZXJNYXBDb25maWc7XG5cbiAgQE91dHB1dCgpXG4gIGNvbmZpZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2x1c3Rlck1hcENvbmZpZz4oKTtcblxuICBAT3V0cHV0KClcbiAgb25VbmZvbGxvdyA9IG5ldyBFdmVudEVtaXR0ZXI8Q2x1c3Rlck1hcENvbmZpZz4oKTtcblxuICBASW5wdXQoKVxuICBjbHVzdGVyTWFwOiBDbHVzdGVyTWFwQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpIGJ1dHRvbnNDb25maWc6IFBhcnRpYWw8TWFwU3RhdHVzQnV0dG9uc0NvbmZpZz4gPSB7fTtcblxuICBjZW50ZXJNYXBCdXR0b25EaXNhYmxlZCA9IHRydWU7XG4gIEBWaWV3Q2hpbGQoQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQpIGNvdW50ZG93bkludGVydmFsQ29tcDogQ291bnRkb3duSW50ZXJ2YWxDb21wb25lbnQ7XG5cbiAgaW5pdENvbmZpZzogQ2x1c3Rlck1hcENvbmZpZztcbiAgcmVmcmVzaFBhdXNlZCA9IGZhbHNlO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRDb25maWcgPSBjbG9uZURlZXAodGhpcy5jb25maWcpO1xuICAgIHRoaXMuYnV0dG9uc0NvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5kZWZhdWx0QnV0dG9uc0NvbmZpZygpLCB0aGlzLmJ1dHRvbnNDb25maWcpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQpIHtcbiAgICAgIHRoaXMuY2x1c3Rlck1hcC5jb3VudGRvd25JbnRlcnZhbENvbXAgPSB0aGlzLmNvdW50ZG93bkludGVydmFsQ29tcDtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuY2x1c3Rlck1hcD8ucHJldmlvdXNWYWx1ZSAhPT0gY2hhbmdlcy5jbHVzdGVyTWFwPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuY2hlY2tJZk1hcElzQWxyZWFkeUNlbnRlcmVkKCk7XG4gICAgfVxuICB9XG5cbiAgY2VudGVyKCkge1xuICAgIHRoaXMuY2x1c3Rlck1hcC5jZW50ZXIoKTtcbiAgfVxuXG4gIHJlbG9hZCgpIHtcbiAgICB0aGlzLmNsdXN0ZXJNYXAucmVsb2FkKCk7XG4gIH1cblxuICBjYW5jZWxSZWxvYWQoKSB7XG4gICAgdGhpcy5jbHVzdGVyTWFwLmNhbmNlbFJlbG9hZCgpO1xuICB9XG5cbiAgdG9nZ2xlUmVhbHRpbWUoKSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgIHJlYWx0aW1lOiAhdGhpcy5jb25maWcucmVhbHRpbWVcbiAgICB9O1xuICAgIHRoaXMuY29uZmlnQ2hhbmdlLmVtaXQodGhpcy5jb25maWcpO1xuICB9XG5cbiAgdG9nZ2xlQXV0b1JlZnJlc2goJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMucmVmcmVzaFBhdXNlZCA9ICF0aGlzLnJlZnJlc2hQYXVzZWQ7XG4gICAgaWYgKHRoaXMucmVmcmVzaFBhdXNlZCkge1xuICAgICAgdGhpcy5jb3VudGRvd25JbnRlcnZhbENvbXAuc3RvcCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb3VudGRvd25JbnRlcnZhbENvbXAuc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICB1bmZvbGxvdygpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuY2x1c3Rlck1hcC5jb25maWcsXG4gICAgICBmb2xsb3c6IGZhbHNlXG4gICAgfTtcbiAgICB0aGlzLmNvbmZpZ0NoYW5nZS5lbWl0KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLm9uVW5mb2xsb3cuZW1pdCh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBmb2xsb3coKSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgIGZvbGxvdzogdHJ1ZVxuICAgIH07XG4gICAgdGhpcy5jb25maWdDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJZk1hcElzQWxyZWFkeUNlbnRlcmVkKCkge1xuICAgIHRoaXMuY2x1c3Rlck1hcC5tYXBDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQ6IEwuTGVhZmxldEV2ZW50KSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWc/LmNlbnRlciAmJiBldmVudC5zb3VyY2VUYXJnZXQ/LmdldEJvdW5kcykge1xuICAgICAgICBjb25zdCBib3VuZHM6IEwuTGF0TG5nQm91bmRzID0gZXZlbnQuc291cmNlVGFyZ2V0LmdldEJvdW5kcygpO1xuICAgICAgICB0aGlzLmNlbnRlck1hcEJ1dHRvbkRpc2FibGVkID0gdGhpcy5zaG91bGREaXNhYmxlQ2VudGVyQnV0dG9uKGJvdW5kcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIENlbnRlciBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkIGFjY29yZGluZyB0byBwcm92aWRlZCBib3VuZHMuXG4gICAqIFByb3ZpZGVkIGJvdW5kcyBjb250YWluIGNvb3JkaW5hdGVzIG9mIGN1cnJlbnQgbWFwIHJlY3RhbmdsZSBjb3JuZXJzLlxuICAgKiBDZW50ZXIgYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZCBpZiBkaXN0YW5jZSBiZXR3ZWVuIGNlbnRlciBjb29yZGluYXRlcyAoZnJvbSBjb25maWcpIGFuZCBjZW50ZXIgb2YgY3VycmVudCBib3VuZHNcbiAgICogaXMgbGVzcyB0aGFuIDEvNCBvZiBib3VuZHMgZGltZW5zaW9ucy5cbiAgICogVG8gYWNoaWV2ZSBpdCB3ZSBqdXN0IG5lZWQgdG8gY2hlY2sgaWYgY2VudGVyIGNvb3JkaW5hdGVzIChmcm9tIGNvbmZpZykgYXJlIGNvbnRhaW5lZCBpbiB0aGUgYm91bmRhcmllcyBvZlxuICAgKiBjdXJyZW50IGJvdW5kcyBzaHJ1bmsgYnkgMjUlLlxuICAgKiBAcGFyYW0gYm91bmRzIEN1cnJlbnQgbWFwIHZpZXcgYm91bmRhcmllcy5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiBkaXN0YW5jZSBiZXR3ZWVuIGNvbmZpZyBjZW50ZXIgYW5kIGN1cnJlbnQgYm91bmRhcmllcyBjZW50ZXIgaXMgYmlnZ2VyIHRoYW4gMS80IG9mIGJvdW5kYXJpZXMgZGltZW5zaW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGREaXNhYmxlQ2VudGVyQnV0dG9uKGJvdW5kczogTC5MYXRMbmdCb3VuZHMpOiBib29sZWFuIHtcbiAgICBjb25zdCBzaHJ1bmtCb3VuZHMgPSBib3VuZHMucGFkKC0wLjI1KTtcbiAgICByZXR1cm4gc2hydW5rQm91bmRzLmNvbnRhaW5zKHRoaXMuY29uZmlnLmNlbnRlcik7XG4gIH1cblxuICBwcml2YXRlIGRlZmF1bHRCdXR0b25zQ29uZmlnKCk6IE1hcFN0YXR1c0J1dHRvbnNDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICByZWFsdGltZTogeyBzaG93OiB0aGlzLmNvbmZpZy5yZWFsdGltZSB8fCB0aGlzLmNsdXN0ZXJNYXAuY29uZmlnLmZvbGxvdywgZGlzYWJsZWQ6IGZhbHNlIH1cbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYzh5LW1hcC1zdGF0dXNcIj5cbiAgPGRpdiBjbGFzcz1cImxlYWZsZXQtdG91Y2hcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxlYWZsZXQtYmFyXCJcbiAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImM4eS1yZWFsdGltZVwiXG4gICAgICAgIHRpdGxlPVwie3sgJ1JlYWx0aW1lJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cImJ1dHRvbnNDb25maWcucmVhbHRpbWUuc2hvd1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVSZWFsdGltZSgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbnNDb25maWcucmVhbHRpbWUuZGlzYWJsZWRcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYzh5LXB1bHNlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICBhY3RpdmU6IGNsdXN0ZXJNYXA/LmNvbmZpZy5yZWFsdGltZSxcbiAgICAgICAgICAgIGluYWN0aXZlOiAhY2x1c3Rlck1hcD8uY29uZmlnLnJlYWx0aW1lXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwidG9nZ2xlLWNvdW50ZG93biB2ZXJ0aWNhbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgcmVmcmVzaFBhdXNlZCA/ICgnRW5hYmxlIGF1dG8gcmVmcmVzaCcgfCB0cmFuc2xhdGUpIDogKCdEaXNhYmxlIGF1dG8gcmVmcmVzaCcgfCB0cmFuc2xhdGUpXG4gICAgICAgIFwiXG4gICAgICAgIFt0b29sdGlwXT1cIlxuICAgICAgICAgIHJlZnJlc2hQYXVzZWQgPyAoJ0VuYWJsZSBhdXRvIHJlZnJlc2gnIHwgdHJhbnNsYXRlKSA6ICgnRGlzYWJsZSBhdXRvIHJlZnJlc2gnIHwgdHJhbnNsYXRlKVxuICAgICAgICBcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAhY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0ICYmXG4gICAgICAgICAgY2x1c3Rlck1hcD8uY29uZmlnLnJlZnJlc2hJbnRlcnZhbCAmJlxuICAgICAgICAgICFjbHVzdGVyTWFwPy5jb25maWcuZm9sbG93XG4gICAgICAgIFwiXG4gICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICBbZGVsYXldPVwiMTAwMFwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUF1dG9SZWZyZXNoKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8Yzh5LWNvdW50ZG93bi1pbnRlcnZhbFxuICAgICAgICAgIFtoaWRkZW5dPVwicmVmcmVzaFBhdXNlZFwiXG4gICAgICAgICAgW2NvdW50ZG93bkludGVydmFsXT1cImNsdXN0ZXJNYXA/LmNvbmZpZy5yZWZyZXNoSW50ZXJ2YWxcIlxuICAgICAgICA+PC9jOHktY291bnRkb3duLWludGVydmFsPlxuICAgICAgICA8aVxuICAgICAgICAgIGM4eUljb249XCJwYXVzZVwiXG4gICAgICAgICAgKm5nSWY9XCJyZWZyZXNoUGF1c2VkXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsIHJlbG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCIoY2x1c3Rlck1hcD8uaXNMb2FkaW5nJCB8IGFzeW5jKSAmJiAhY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0XCJcbiAgICAgICAgKGNsaWNrKT1cImNhbmNlbFJlbG9hZCgpXCJcbiAgICAgID5cbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb24tc3BpblwiXG4gICAgICAgICAgYzh5SWNvbj1cInJlZnJlc2hcIlxuICAgICAgICA+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFt0aXRsZV09XCInUmVsb2FkJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICFjbHVzdGVyTWFwPy5jb25maWcucmVhbHRpbWUgJiZcbiAgICAgICAgICAhY2x1c3Rlck1hcD8uYXNzZXRzICYmXG4gICAgICAgICAgIShjbHVzdGVyTWFwPy5pc0xvYWRpbmckIHwgYXN5bmMpICYmXG4gICAgICAgICAgIWNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dFxuICAgICAgICBcIlxuICAgICAgICAoY2xpY2spPVwicmVsb2FkKClcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwicmVmcmVzaFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0aXRsZT1cInt7ICdDZW50ZXIgbWFwJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY2VudGVyKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY2VudGVyTWFwQnV0dG9uRGlzYWJsZWQgfHwgY2x1c3Rlck1hcD8uY29uZmlnLmZvbGxvd1wiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJ0YXJnZXQxXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHRpdGxlPVwie3sgJ1VuZm9sbG93JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cImNsdXN0ZXJNYXA/LmNvbmZpZy5mb2xsb3dcIlxuICAgICAgICAoY2xpY2spPVwidW5mb2xsb3coKVwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJtYXJrZXItb2ZmXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdGl0bGU9XCJ7eyAnRm9sbG93JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cImluaXRDb25maWcuZm9sbG93ICYmICFjbHVzdGVyTWFwPy5jb25maWcuZm9sbG93XCJcbiAgICAgICAgKGNsaWNrKT1cImZvbGxvdygpXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cIm1hcmtlclwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tYXAvbWFwLXN0YXR1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9tYXAvbWFwLXN0YXR1cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFPOUQsTUFBTSxPQUFPLGtCQUFrQjtJQUovQjtRQVdFLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFHcEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRXhDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFLOUMsa0JBQWEsR0FBb0MsRUFBRSxDQUFDO1FBRTdELDRCQUF1QixHQUFHLElBQUksQ0FBQztRQUkvQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUVkLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBcUh4QztJQW5IQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQ0FBc0MsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQ3JFLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxhQUFhLEtBQUssT0FBTyxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUMzRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixHQUFHLElBQUksQ0FBQyxNQUFNO1lBQ2QsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1NBQ2hDLENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWtCO1FBQ2xDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU07WUFDekIsTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixHQUFHLElBQUksQ0FBQyxNQUFNO1lBQ2QsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBcUIsRUFBRSxFQUFFO1lBQzNGLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxNQUFNLEdBQW1CLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzlELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSyx5QkFBeUIsQ0FBQyxNQUFzQjtRQUN0RCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLDhCQUE4QixDQUFDLE1BQXNCO1FBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUM1QyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDdEQsQ0FBQztJQUNKLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsT0FBTztZQUNMLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtTQUMzRixDQUFDO0lBQ0osQ0FBQzsrR0E3SVUsa0JBQWtCO21HQUFsQixrQkFBa0Isb1VBb0JsQiwwQkFBMEIscUVDaEN2QyxrM0dBbUhBOzs0RkR2R2Esa0JBQWtCO2tCQUo5QixTQUFTOytCQUNFLGdCQUFnQjs4QkFLMUIsTUFBTTtzQkFETCxLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSztnQkFHTixZQUFZO3NCQURYLE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxNQUFNO2dCQUdHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFHUCxVQUFVO3NCQURULEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHaUMscUJBQXFCO3NCQUEzRCxTQUFTO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvdW50ZG93bkludGVydmFsQ29tcG9uZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2x1c3Rlck1hcENvbXBvbmVudCB9IGZyb20gJy4vY2x1c3Rlci1tYXAuY29tcG9uZW50JztcbmltcG9ydCB7IENsdXN0ZXJNYXBDb25maWcsIE1hcFN0YXR1c0J1dHRvbnNDb25maWcsIFBvc2l0aW9uTWFuYWdlZE9iamVjdCB9IGZyb20gJy4vbWFwLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LW1hcC1zdGF0dXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFwLXN0YXR1cy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTWFwU3RhdHVzQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgY29uZmlnOiBDbHVzdGVyTWFwQ29uZmlnO1xuXG4gIEBJbnB1dCgpIGFzc2V0czogUG9zaXRpb25NYW5hZ2VkT2JqZWN0W107XG5cbiAgQE91dHB1dCgpXG4gIGNvbmZpZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2x1c3Rlck1hcENvbmZpZz4oKTtcblxuICBAT3V0cHV0KClcbiAgb25VbmZvbGxvdyA9IG5ldyBFdmVudEVtaXR0ZXI8Q2x1c3Rlck1hcENvbmZpZz4oKTtcblxuICBAT3V0cHV0KCkgZml0QXNzZXRzVG9Cb3VuZHMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQElucHV0KClcbiAgY2x1c3Rlck1hcDogQ2x1c3Rlck1hcENvbXBvbmVudDtcblxuICBASW5wdXQoKSBidXR0b25zQ29uZmlnOiBQYXJ0aWFsPE1hcFN0YXR1c0J1dHRvbnNDb25maWc+ID0ge307XG5cbiAgY2VudGVyTWFwQnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICBAVmlld0NoaWxkKENvdW50ZG93bkludGVydmFsQ29tcG9uZW50KSBjb3VudGRvd25JbnRlcnZhbENvbXA6IENvdW50ZG93bkludGVydmFsQ29tcG9uZW50O1xuXG4gIGluaXRDb25maWc6IENsdXN0ZXJNYXBDb25maWc7XG4gIHJlZnJlc2hQYXVzZWQgPSBmYWxzZTtcbiAgZml0VG9Cb3VuZHNCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Q29uZmlnID0gY2xvbmVEZWVwKHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLmJ1dHRvbnNDb25maWcgPSBPYmplY3QuYXNzaWduKHRoaXMuZGVmYXVsdEJ1dHRvbnNDb25maWcoKSwgdGhpcy5idXR0b25zQ29uZmlnKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0KSB7XG4gICAgICB0aGlzLmNsdXN0ZXJNYXAuY291bnRkb3duSW50ZXJ2YWxDb21wID0gdGhpcy5jb3VudGRvd25JbnRlcnZhbENvbXA7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmNsdXN0ZXJNYXA/LnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZXMuY2x1c3Rlck1hcD8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmNoZWNrSWZNYXBJc0FscmVhZHlDZW50ZXJlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGNlbnRlcigpIHtcbiAgICB0aGlzLmNsdXN0ZXJNYXAuY2VudGVyKCk7XG4gIH1cblxuICBmaXRUb0JvdW5kcygpIHtcbiAgICB0aGlzLmZpdFRvQm91bmRzQnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuZml0QXNzZXRzVG9Cb3VuZHMuZW1pdCgpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMuY2x1c3Rlck1hcC5yZWxvYWQoKTtcbiAgfVxuXG4gIGNhbmNlbFJlbG9hZCgpIHtcbiAgICB0aGlzLmNsdXN0ZXJNYXAuY2FuY2VsUmVsb2FkKCk7XG4gIH1cblxuICB0b2dnbGVSZWFsdGltZSgpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgcmVhbHRpbWU6ICF0aGlzLmNvbmZpZy5yZWFsdGltZVxuICAgIH07XG4gICAgdGhpcy5jb25maWdDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICB0b2dnbGVBdXRvUmVmcmVzaCgkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5yZWZyZXNoUGF1c2VkID0gIXRoaXMucmVmcmVzaFBhdXNlZDtcbiAgICBpZiAodGhpcy5yZWZyZXNoUGF1c2VkKSB7XG4gICAgICB0aGlzLmNvdW50ZG93bkludGVydmFsQ29tcC5zdG9wKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvdW50ZG93bkludGVydmFsQ29tcC5zdGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIHVuZm9sbG93KCkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4udGhpcy5jbHVzdGVyTWFwLmNvbmZpZyxcbiAgICAgIGZvbGxvdzogZmFsc2VcbiAgICB9O1xuICAgIHRoaXMuY29uZmlnQ2hhbmdlLmVtaXQodGhpcy5jb25maWcpO1xuICAgIHRoaXMub25VbmZvbGxvdy5lbWl0KHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIGZvbGxvdygpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgZm9sbG93OiB0cnVlXG4gICAgfTtcbiAgICB0aGlzLmNvbmZpZ0NoYW5nZS5lbWl0KHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0lmTWFwSXNBbHJlYWR5Q2VudGVyZWQoKSB7XG4gICAgdGhpcy5jbHVzdGVyTWFwLm1hcENoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChldmVudDogTC5MZWFmbGV0RXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5zb3VyY2VUYXJnZXQ/LmdldEJvdW5kcykge1xuICAgICAgICBjb25zdCBib3VuZHM6IEwuTGF0TG5nQm91bmRzID0gZXZlbnQuc291cmNlVGFyZ2V0LmdldEJvdW5kcygpO1xuICAgICAgICB0aGlzLmZpdFRvQm91bmRzQnV0dG9uRGlzYWJsZWQgPSB0aGlzLnNob3VsZERpc2FibGVGaXRUb0JvdW5kc0J1dHRvbihib3VuZHMpO1xuICAgICAgICBpZiAodGhpcy5jb25maWc/LmNlbnRlcikge1xuICAgICAgICAgIHRoaXMuY2VudGVyTWFwQnV0dG9uRGlzYWJsZWQgPSB0aGlzLnNob3VsZERpc2FibGVDZW50ZXJCdXR0b24oYm91bmRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBDZW50ZXIgYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZCBhY2NvcmRpbmcgdG8gcHJvdmlkZWQgYm91bmRzLlxuICAgKiBQcm92aWRlZCBib3VuZHMgY29udGFpbiBjb29yZGluYXRlcyBvZiBjdXJyZW50IG1hcCByZWN0YW5nbGUgY29ybmVycy5cbiAgICogQ2VudGVyIGJ1dHRvbiBzaG91bGQgYmUgZGlzYWJsZWQgaWYgZGlzdGFuY2UgYmV0d2VlbiBjZW50ZXIgY29vcmRpbmF0ZXMgKGZyb20gY29uZmlnKSBhbmQgY2VudGVyIG9mIGN1cnJlbnQgYm91bmRzXG4gICAqIGlzIGxlc3MgdGhhbiAxLzQgb2YgYm91bmRzIGRpbWVuc2lvbnMuXG4gICAqIFRvIGFjaGlldmUgaXQgd2UganVzdCBuZWVkIHRvIGNoZWNrIGlmIGNlbnRlciBjb29yZGluYXRlcyAoZnJvbSBjb25maWcpIGFyZSBjb250YWluZWQgaW4gdGhlIGJvdW5kYXJpZXMgb2ZcbiAgICogY3VycmVudCBib3VuZHMgc2hydW5rIGJ5IDI1JS5cbiAgICogQHBhcmFtIGJvdW5kcyBDdXJyZW50IG1hcCB2aWV3IGJvdW5kYXJpZXMuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgZGlzdGFuY2UgYmV0d2VlbiBjb25maWcgY2VudGVyIGFuZCBjdXJyZW50IGJvdW5kYXJpZXMgY2VudGVyIGlzIGJpZ2dlciB0aGFuIDEvNCBvZiBib3VuZGFyaWVzIGRpbWVuc2lvbnNcbiAgICovXG4gIHByaXZhdGUgc2hvdWxkRGlzYWJsZUNlbnRlckJ1dHRvbihib3VuZHM6IEwuTGF0TG5nQm91bmRzKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2hydW5rQm91bmRzID0gYm91bmRzLnBhZCgtMC4yNSk7XG4gICAgcmV0dXJuIHNocnVua0JvdW5kcy5jb250YWlucyh0aGlzLmNvbmZpZy5jZW50ZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG91bGREaXNhYmxlRml0VG9Cb3VuZHNCdXR0b24oYm91bmRzOiBMLkxhdExuZ0JvdW5kcyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5hc3NldHMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hc3NldHMuZXZlcnkoKHsgYzh5X1Bvc2l0aW9uIH0pID0+XG4gICAgICBib3VuZHMuY29udGFpbnMoW2M4eV9Qb3NpdGlvbi5sYXQsIGM4eV9Qb3NpdGlvbi5sbmddKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRlZmF1bHRCdXR0b25zQ29uZmlnKCk6IE1hcFN0YXR1c0J1dHRvbnNDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICByZWFsdGltZTogeyBzaG93OiB0aGlzLmNvbmZpZy5yZWFsdGltZSB8fCB0aGlzLmNsdXN0ZXJNYXAuY29uZmlnLmZvbGxvdywgZGlzYWJsZWQ6IGZhbHNlIH1cbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYzh5LW1hcC1zdGF0dXNcIj5cbiAgPGRpdiBjbGFzcz1cImxlYWZsZXQtdG91Y2hcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxlYWZsZXQtYmFyXCJcbiAgICAgIHJvbGU9XCJncm91cFwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImM4eS1yZWFsdGltZVwiXG4gICAgICAgIHRpdGxlPVwie3sgJ1JlYWx0aW1lJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cImJ1dHRvbnNDb25maWcucmVhbHRpbWUuc2hvd1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVSZWFsdGltZSgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbnNDb25maWcucmVhbHRpbWUuZGlzYWJsZWRcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiYzh5LXB1bHNlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICBhY3RpdmU6IGNsdXN0ZXJNYXA/LmNvbmZpZy5yZWFsdGltZSxcbiAgICAgICAgICAgIGluYWN0aXZlOiAhY2x1c3Rlck1hcD8uY29uZmlnLnJlYWx0aW1lXG4gICAgICAgICAgfVwiXG4gICAgICAgID48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwidG9nZ2xlLWNvdW50ZG93biB2ZXJ0aWNhbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgcmVmcmVzaFBhdXNlZCA/ICgnRW5hYmxlIGF1dG8gcmVmcmVzaCcgfCB0cmFuc2xhdGUpIDogKCdEaXNhYmxlIGF1dG8gcmVmcmVzaCcgfCB0cmFuc2xhdGUpXG4gICAgICAgIFwiXG4gICAgICAgIFt0b29sdGlwXT1cIlxuICAgICAgICAgIHJlZnJlc2hQYXVzZWQgPyAoJ0VuYWJsZSBhdXRvIHJlZnJlc2gnIHwgdHJhbnNsYXRlKSA6ICgnRGlzYWJsZSBhdXRvIHJlZnJlc2gnIHwgdHJhbnNsYXRlKVxuICAgICAgICBcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAhY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0ICYmXG4gICAgICAgICAgY2x1c3Rlck1hcD8uY29uZmlnLnJlZnJlc2hJbnRlcnZhbCAmJlxuICAgICAgICAgICFjbHVzdGVyTWFwPy5jb25maWcuZm9sbG93XG4gICAgICAgIFwiXG4gICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICBbZGVsYXldPVwiMTAwMFwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUF1dG9SZWZyZXNoKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8Yzh5LWNvdW50ZG93bi1pbnRlcnZhbFxuICAgICAgICAgIFtoaWRkZW5dPVwicmVmcmVzaFBhdXNlZFwiXG4gICAgICAgICAgW2NvdW50ZG93bkludGVydmFsXT1cImNsdXN0ZXJNYXA/LmNvbmZpZy5yZWZyZXNoSW50ZXJ2YWxcIlxuICAgICAgICA+PC9jOHktY291bnRkb3duLWludGVydmFsPlxuICAgICAgICA8aVxuICAgICAgICAgIGM4eUljb249XCJwYXVzZVwiXG4gICAgICAgICAgKm5nSWY9XCJyZWZyZXNoUGF1c2VkXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvbGFiZWw+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsIHJlbG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCIoY2x1c3Rlck1hcD8uaXNMb2FkaW5nJCB8IGFzeW5jKSAmJiAhY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0XCJcbiAgICAgICAgKGNsaWNrKT1cImNhbmNlbFJlbG9hZCgpXCJcbiAgICAgID5cbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb24tc3BpblwiXG4gICAgICAgICAgYzh5SWNvbj1cInJlZnJlc2hcIlxuICAgICAgICA+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFt0aXRsZV09XCInUmVsb2FkJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICFjbHVzdGVyTWFwPy5jb25maWcucmVhbHRpbWUgJiZcbiAgICAgICAgICAhY2x1c3Rlck1hcD8uYXNzZXRzICYmXG4gICAgICAgICAgIShjbHVzdGVyTWFwPy5pc0xvYWRpbmckIHwgYXN5bmMpICYmXG4gICAgICAgICAgIWNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dFxuICAgICAgICBcIlxuICAgICAgICAoY2xpY2spPVwicmVsb2FkKClcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwicmVmcmVzaFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0aXRsZT1cInt7ICdDZW50ZXIgbWFwJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY2VudGVyKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY2VudGVyTWFwQnV0dG9uRGlzYWJsZWQgfHwgY2x1c3Rlck1hcD8uY29uZmlnLmZvbGxvd1wiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJ0YXJnZXQxXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICB0aXRsZT1cInt7ICdGaXQgdG8gYXNzZXRzIGJvdW5kcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwiZml0VG9Cb3VuZHMoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZml0VG9Cb3VuZHNCdXR0b25EaXNhYmxlZCB8fCBjbHVzdGVyTWFwPy5jb25maWcuZm9sbG93XCJcbiAgICA+XG4gICAgICA8aSBjOHlJY29uPVwid2F5cG9pbnQtbWFwXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0aXRsZT1cInt7ICdVbmZvbGxvdycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCJjbHVzdGVyTWFwPy5jb25maWcuZm9sbG93XCJcbiAgICAgICAgKGNsaWNrKT1cInVuZm9sbG93KClcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwibWFya2VyLW9mZlwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHRpdGxlPVwie3sgJ0ZvbGxvdycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCJpbml0Q29uZmlnLmZvbGxvdyAmJiAhY2x1c3Rlck1hcD8uY29uZmlnLmZvbGxvd1wiXG4gICAgICAgIChjbGljayk9XCJmb2xsb3coKVwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJtYXJrZXJcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -23,7 +23,7 @@ export const defaultLayer = {
23
23
  priority: 1000,
24
24
  options: {
25
25
  maxZoom: 18,
26
- minZoom: 2,
26
+ minZoom: 0,
27
27
  attribution: '&copy;<a href="http://www.openstreetmap.org/copyright" rel="noreferrer nofollow">OpenStreetMap</a>',
28
28
  noWrap: false
29
29
  }
@@ -32,4 +32,7 @@ export const defaultMapConfig = {
32
32
  center: [51.23544, 6.79599], // Düsseldorf
33
33
  zoomLevel: 2
34
34
  };
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWFwL21hcC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTy9DLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBZ0IsRUFBRSxLQUE2QixFQUFFLEtBQWM7SUFDekYsTUFBb0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ25DLE1BQW9CLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNwQyxPQUFPLE1BQW1CLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBNkIsZ0JBQWdCLENBQUMsQ0FBQztBQWMvRixNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3JCLDZDQUFRLENBQUE7SUFDUiw2Q0FBUSxDQUFBO0lBQ1IsbURBQVcsQ0FBQTtBQUNiLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQUdYO0FBSEQsV0FBWSxtQkFBbUI7SUFDN0IsNENBQXFCLENBQUE7SUFDckIsNENBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUhXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFHOUI7QUFxQ0QsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2xELG9CQUFvQixDQUNyQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQjtJQUN4QyxRQUFRLEVBQUUsb0RBQW9EO0lBQzlELEtBQUssRUFBRSxlQUFlO0lBQ3RCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsT0FBTyxFQUFFO1FBQ1AsT0FBTyxFQUFFLEVBQUU7UUFDWCxPQUFPLEVBQUUsQ0FBQztRQUNWLFdBQVcsRUFDVCxvR0FBb0c7UUFDdEcsTUFBTSxFQUFFLEtBQUs7S0FDZDtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBcUI7SUFDaEQsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLGFBQWE7SUFDMUMsU0FBUyxFQUFFLENBQUM7Q0FDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElFdmVudCwgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7IE1hcERlZmF1bHRDb25maWcsIE1hcFRpbGVMYXllciB9IGZyb20gJ0BjOHkvb3B0aW9ucyc7XG5pbXBvcnQgdHlwZSAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHbG9iYWxBdXRvUmVmcmVzaFdpZGdldENvbmZpZyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qzh5TWFya2VyKG1hcmtlcjogTC5NYXJrZXIsIGFzc2V0PzogUG9zaXRpb25NYW5hZ2VkT2JqZWN0LCBldmVudD86IElFdmVudCkge1xuICAobWFya2VyIGFzIEM4eU1hcmtlcikuYXNzZXQgPSBhc3NldDtcbiAgKG1hcmtlciBhcyBDOHlNYXJrZXIpLmV2ZW50ID0gZXZlbnQ7XG4gIHJldHVybiBtYXJrZXIgYXMgQzh5TWFya2VyO1xufVxuXG5leHBvcnQgY29uc3QgTUFQX1RJTEVfTEFZRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTxNYXBUaWxlTGF5ZXJbXT4+KCdNQVBfVElMRV9MQVlFUicpO1xuXG50eXBlIFJlcXVpcmVPbmx5T25lPFQsIEtleXMgZXh0ZW5kcyBrZXlvZiBUID0ga2V5b2YgVD4gPSBQaWNrPFQsIEV4Y2x1ZGU8a2V5b2YgVCwgS2V5cz4+ICZcbiAgeyBbSyBpbiBLZXlzXS0/OiBSZXF1aXJlZDxQaWNrPFQsIEs+PiAmIFBhcnRpYWw8UmVjb3JkPEV4Y2x1ZGU8S2V5cywgSz4sIHVuZGVmaW5lZD4+IH1bS2V5c107XG5cbmludGVyZmFjZSBDOHlNYXJrZXJBdHRyIHtcbiAgYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdDtcbiAgZXZlbnQ6IElFdmVudDtcbn1cblxuZXhwb3J0IHR5cGUgQzh5TWFya2VyQXR0cmlidXRlcyA9IGtleW9mIEM4eU1hcmtlckF0dHI7XG5cbmV4cG9ydCB0eXBlIEM4eU1hcmtlciA9IEwuTWFya2VyICYgUmVxdWlyZU9ubHlPbmU8Qzh5TWFya2VyQXR0ciwgJ2Fzc2V0JyB8ICdldmVudCc+O1xuXG5leHBvcnQgZW51bSBDbHVzdGVyU2l6ZSB7XG4gIE5PTkUgPSAwLFxuICBGT1VSID0gMSxcbiAgU0lYVEVFTiA9IDJcbn1cblxuZXhwb3J0IGVudW0gTWFwVGVuYW50T3B0aW9uS2V5cyB7XG4gIENPTkZJRyA9ICdtYXAtY29uZmlnJyxcbiAgTEFZRVJTID0gJ21hcC1sYXllcnMnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpb25NYW5hZ2VkT2JqZWN0IGV4dGVuZHMgSU1hbmFnZWRPYmplY3Qge1xuICBjOHlfUG9zaXRpb246IHtcbiAgICBsYXQ6IG51bWJlcjtcbiAgICBsbmc6IG51bWJlcjtcbiAgICBhbHQ/OiBudW1iZXI7XG4gIH07XG5cbiAgYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cz86IHtcbiAgICBtaW5vcjogbnVtYmVyO1xuICAgIG1ham9yOiBudW1iZXI7XG4gICAgd2FybmluZzogbnVtYmVyO1xuICAgIGNyaXRpY2FsOiBudW1iZXI7XG4gIH07XG5cbiAgaWNvbj86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIENsdXN0ZXJNYXBDb25maWcgPSBNYXBDb25maWcgJiB7XG4gIGNlbnRlcjogW251bWJlciwgbnVtYmVyXTtcbiAgcmVmcmVzaEludGVydmFsPzogbnVtYmVyIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIE1hcENvbmZpZyA9IE1hcERlZmF1bHRDb25maWcgJiB7XG4gIGZvbGxvdz86IGJvb2xlYW47XG4gIHJlYWx0aW1lPzogYm9vbGVhbjtcbiAgaWNvbj86IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG4gIGRpc2FibGVab29tPzogYm9vbGVhbjtcbiAgZGlzYWJsZVBhbj86IGJvb2xlYW47XG4gIGJvdW5kcz86IEwuTGF0TG5nQm91bmRzO1xuICBmaXRCb3VuZHNPcHRpb25zPzogTC5GaXRCb3VuZHNPcHRpb25zO1xufSAmIEdsb2JhbEF1dG9SZWZyZXNoV2lkZ2V0Q29uZmlnO1xuXG5leHBvcnQgY29uc3QgTUFQX0RFRkFVTFRfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPE9ic2VydmFibGU8TWFwRGVmYXVsdENvbmZpZz4+KFxuICAnTUFQX0RFRkFVTFRfQ09ORklHJ1xuKTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRMYXllcjogTWFwVGlsZUxheWVyID0ge1xuICBsYXllclVybDogJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nJyxcbiAgbGFiZWw6ICdPcGVuU3RyZWV0TWFwJyxcbiAgcHJpb3JpdHk6IDEwMDAsXG4gIG9wdGlvbnM6IHtcbiAgICBtYXhab29tOiAxOCxcbiAgICBtaW5ab29tOiAyLFxuICAgIGF0dHJpYnV0aW9uOlxuICAgICAgJyZjb3B5OzxhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiIHJlbD1cIm5vcmVmZXJyZXIgbm9mb2xsb3dcIj5PcGVuU3RyZWV0TWFwPC9hPicsXG4gICAgbm9XcmFwOiBmYWxzZVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdE1hcENvbmZpZzogTWFwRGVmYXVsdENvbmZpZyA9IHtcbiAgY2VudGVyOiBbNTEuMjM1NDQsIDYuNzk1OTldLCAvLyBEw7xzc2VsZG9yZlxuICB6b29tTGV2ZWw6IDJcbn07XG5cbmV4cG9ydCB0eXBlIE1hcFN0YXR1c0J1dHRvbnNDb25maWcgPSBSZWNvcmQ8J3JlYWx0aW1lJywgeyBzaG93OiBib29sZWFuOyBkaXNhYmxlZD86IGJvb2xlYW4gfT47XG4iXX0=
35
+ export const defaultFitBoundsOptions = {
36
+ padding: [50, 50]
37
+ };
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWFwL21hcC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTy9DLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBZ0IsRUFBRSxLQUE2QixFQUFFLEtBQWM7SUFDekYsTUFBb0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ25DLE1BQW9CLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNwQyxPQUFPLE1BQW1CLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBNkIsZ0JBQWdCLENBQUMsQ0FBQztBQWMvRixNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3JCLDZDQUFRLENBQUE7SUFDUiw2Q0FBUSxDQUFBO0lBQ1IsbURBQVcsQ0FBQTtBQUNiLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQUdYO0FBSEQsV0FBWSxtQkFBbUI7SUFDN0IsNENBQXFCLENBQUE7SUFDckIsNENBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUhXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFHOUI7QUFxQ0QsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2xELG9CQUFvQixDQUNyQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQjtJQUN4QyxRQUFRLEVBQUUsb0RBQW9EO0lBQzlELEtBQUssRUFBRSxlQUFlO0lBQ3RCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsT0FBTyxFQUFFO1FBQ1AsT0FBTyxFQUFFLEVBQUU7UUFDWCxPQUFPLEVBQUUsQ0FBQztRQUNWLFdBQVcsRUFDVCxvR0FBb0c7UUFDdEcsTUFBTSxFQUFFLEtBQUs7S0FDZDtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBcUI7SUFDaEQsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLGFBQWE7SUFDMUMsU0FBUyxFQUFFLENBQUM7Q0FDYixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXVCO0lBQ3pELE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7Q0FDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRXZlbnQsIElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHR5cGUgeyBNYXBEZWZhdWx0Q29uZmlnLCBNYXBUaWxlTGF5ZXIgfSBmcm9tICdAYzh5L29wdGlvbnMnO1xuaW1wb3J0IHR5cGUgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR2xvYmFsQXV0b1JlZnJlc2hXaWRnZXRDb25maWcgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEM4eU1hcmtlcihtYXJrZXI6IEwuTWFya2VyLCBhc3NldD86IFBvc2l0aW9uTWFuYWdlZE9iamVjdCwgZXZlbnQ/OiBJRXZlbnQpIHtcbiAgKG1hcmtlciBhcyBDOHlNYXJrZXIpLmFzc2V0ID0gYXNzZXQ7XG4gIChtYXJrZXIgYXMgQzh5TWFya2VyKS5ldmVudCA9IGV2ZW50O1xuICByZXR1cm4gbWFya2VyIGFzIEM4eU1hcmtlcjtcbn1cblxuZXhwb3J0IGNvbnN0IE1BUF9USUxFX0xBWUVSID0gbmV3IEluamVjdGlvblRva2VuPE9ic2VydmFibGU8TWFwVGlsZUxheWVyW10+PignTUFQX1RJTEVfTEFZRVInKTtcblxudHlwZSBSZXF1aXJlT25seU9uZTxULCBLZXlzIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQ+ID0gUGljazxULCBFeGNsdWRlPGtleW9mIFQsIEtleXM+PiAmXG4gIHsgW0sgaW4gS2V5c10tPzogUmVxdWlyZWQ8UGljazxULCBLPj4gJiBQYXJ0aWFsPFJlY29yZDxFeGNsdWRlPEtleXMsIEs+LCB1bmRlZmluZWQ+PiB9W0tleXNdO1xuXG5pbnRlcmZhY2UgQzh5TWFya2VyQXR0ciB7XG4gIGFzc2V0OiBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG4gIGV2ZW50OiBJRXZlbnQ7XG59XG5cbmV4cG9ydCB0eXBlIEM4eU1hcmtlckF0dHJpYnV0ZXMgPSBrZXlvZiBDOHlNYXJrZXJBdHRyO1xuXG5leHBvcnQgdHlwZSBDOHlNYXJrZXIgPSBMLk1hcmtlciAmIFJlcXVpcmVPbmx5T25lPEM4eU1hcmtlckF0dHIsICdhc3NldCcgfCAnZXZlbnQnPjtcblxuZXhwb3J0IGVudW0gQ2x1c3RlclNpemUge1xuICBOT05FID0gMCxcbiAgRk9VUiA9IDEsXG4gIFNJWFRFRU4gPSAyXG59XG5cbmV4cG9ydCBlbnVtIE1hcFRlbmFudE9wdGlvbktleXMge1xuICBDT05GSUcgPSAnbWFwLWNvbmZpZycsXG4gIExBWUVSUyA9ICdtYXAtbGF5ZXJzJ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uTWFuYWdlZE9iamVjdCBleHRlbmRzIElNYW5hZ2VkT2JqZWN0IHtcbiAgYzh5X1Bvc2l0aW9uOiB7XG4gICAgbGF0OiBudW1iZXI7XG4gICAgbG5nOiBudW1iZXI7XG4gICAgYWx0PzogbnVtYmVyO1xuICB9O1xuXG4gIGM4eV9BY3RpdmVBbGFybXNTdGF0dXM/OiB7XG4gICAgbWlub3I6IG51bWJlcjtcbiAgICBtYWpvcjogbnVtYmVyO1xuICAgIHdhcm5pbmc6IG51bWJlcjtcbiAgICBjcml0aWNhbDogbnVtYmVyO1xuICB9O1xuXG4gIGljb24/OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBDbHVzdGVyTWFwQ29uZmlnID0gTWFwQ29uZmlnICYge1xuICBjZW50ZXI6IFtudW1iZXIsIG51bWJlcl07XG4gIHJlZnJlc2hJbnRlcnZhbD86IG51bWJlciB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBNYXBDb25maWcgPSBNYXBEZWZhdWx0Q29uZmlnICYge1xuICBmb2xsb3c/OiBib29sZWFuO1xuICByZWFsdGltZT86IGJvb2xlYW47XG4gIGljb24/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBkaXNhYmxlWm9vbT86IGJvb2xlYW47XG4gIGRpc2FibGVQYW4/OiBib29sZWFuO1xuICBib3VuZHM/OiBMLkxhdExuZ0JvdW5kcztcbiAgZml0Qm91bmRzT3B0aW9ucz86IEwuRml0Qm91bmRzT3B0aW9ucztcbn0gJiBHbG9iYWxBdXRvUmVmcmVzaFdpZGdldENvbmZpZztcblxuZXhwb3J0IGNvbnN0IE1BUF9ERUZBVUxUX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPE1hcERlZmF1bHRDb25maWc+PihcbiAgJ01BUF9ERUZBVUxUX0NPTkZJRydcbik7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0TGF5ZXI6IE1hcFRpbGVMYXllciA9IHtcbiAgbGF5ZXJVcmw6ICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsXG4gIGxhYmVsOiAnT3BlblN0cmVldE1hcCcsXG4gIHByaW9yaXR5OiAxMDAwLFxuICBvcHRpb25zOiB7XG4gICAgbWF4Wm9vbTogMTgsXG4gICAgbWluWm9vbTogMCxcbiAgICBhdHRyaWJ1dGlvbjpcbiAgICAgICcmY29weTs8YSBocmVmPVwiaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIiByZWw9XCJub3JlZmVycmVyIG5vZm9sbG93XCI+T3BlblN0cmVldE1hcDwvYT4nLFxuICAgIG5vV3JhcDogZmFsc2VcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRNYXBDb25maWc6IE1hcERlZmF1bHRDb25maWcgPSB7XG4gIGNlbnRlcjogWzUxLjIzNTQ0LCA2Ljc5NTk5XSwgLy8gRMO8c3NlbGRvcmZcbiAgem9vbUxldmVsOiAyXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEZpdEJvdW5kc09wdGlvbnM6IEwuRml0Qm91bmRzT3B0aW9ucyA9IHtcbiAgcGFkZGluZzogWzUwLCA1MF1cbn07XG5cbmV4cG9ydCB0eXBlIE1hcFN0YXR1c0J1dHRvbnNDb25maWcgPSBSZWNvcmQ8J3JlYWx0aW1lJywgeyBzaG93OiBib29sZWFuOyBkaXNhYmxlZD86IGJvb2xlYW4gfT47XG4iXX0=