@igo2/geo 1.9.3 → 1.11.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 (158) hide show
  1. package/bundles/igo2-geo.umd.js +3569 -1190
  2. package/bundles/igo2-geo.umd.js.map +1 -1
  3. package/esm2015/lib/catalog/catalog-browser/catalog-browser.component.js +2 -2
  4. package/esm2015/lib/catalog/catalog-library/add-catalog-dialog.component.js +72 -53
  5. package/esm2015/lib/catalog/catalog-library/catalog-library.component.js +7 -6
  6. package/esm2015/lib/catalog/shared/catalog.service.js +5 -2
  7. package/esm2015/lib/datasource/shared/capabilities.service.js +26 -12
  8. package/esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.js +84 -14
  9. package/esm2015/lib/datasource/shared/datasources/datasource.interface.js +1 -1
  10. package/esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.js +7 -10
  11. package/esm2015/lib/datasource/shared/datasources/mvt-datasource.js +2 -2
  12. package/esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.js +7 -9
  13. package/esm2015/lib/datasource/shared/datasources/wfs-datasource.js +3 -1
  14. package/esm2015/lib/datasource/shared/datasources/wms-datasource.js +7 -1
  15. package/esm2015/lib/datasource/shared/datasources/wms-wfs.utils.js +5 -2
  16. package/esm2015/lib/directions/directions-buttons/directions-buttons.component.js +15 -8
  17. package/esm2015/lib/directions/directions-inputs/directions-inputs.component.js +12 -4
  18. package/esm2015/lib/directions/directions-sources/osrm-directions-source.js +3 -1
  19. package/esm2015/lib/directions/directions.component.js +66 -15
  20. package/esm2015/lib/directions/shared/directions.enum.js +6 -1
  21. package/esm2015/lib/directions/shared/directions.interface.js +1 -1
  22. package/esm2015/lib/directions/shared/directions.utils.js +4 -37
  23. package/esm2015/lib/draw/draw/draw.component.js +2 -1
  24. package/esm2015/lib/feature/shared/feature.utils.js +2 -1
  25. package/esm2015/lib/feature/shared/strategies/in-map-extent.js +17 -4
  26. package/esm2015/lib/filter/filter.module.js +7 -4
  27. package/esm2015/lib/filter/ogc-filter-button/ogc-filter-button.component.js +15 -1
  28. package/esm2015/lib/filter/ogc-filter-selection/ogc-filter-selection.component.js +31 -13
  29. package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time.component.js +296 -161
  30. package/esm2015/lib/filter/shared/ogc-filter.interface.js +1 -1
  31. package/esm2015/lib/filter/shared/ogc-filter.js +8 -1
  32. package/esm2015/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.js +185 -95
  33. package/esm2015/lib/geometry/shared/controls/draw.js +7 -2
  34. package/esm2015/lib/geometry/shared/controls/modify.js +1 -1
  35. package/esm2015/lib/geometry/shared/controls/slice.js +1 -1
  36. package/esm2015/lib/import-export/import-export/import-export.component.js +226 -66
  37. package/esm2015/lib/import-export/shared/export.interface.js +1 -1
  38. package/esm2015/lib/layer/layer-legend/layer-legend.component.js +32 -26
  39. package/esm2015/lib/layer/layer.module.js +8 -5
  40. package/esm2015/lib/layer/shared/layer.service.js +20 -17
  41. package/esm2015/lib/layer/shared/layers/image-layer.js +9 -4
  42. package/esm2015/lib/layer/shared/layers/layer.interface.js +1 -1
  43. package/esm2015/lib/layer/shared/layers/layer.js +23 -5
  44. package/esm2015/lib/layer/shared/layers/tile-layer.js +23 -3
  45. package/esm2015/lib/layer/shared/layers/vector-layer.interface.js +1 -1
  46. package/esm2015/lib/layer/shared/layers/vector-layer.js +32 -14
  47. package/esm2015/lib/layer/shared/layers/vectortile-layer.interface.js +1 -1
  48. package/esm2015/lib/layer/shared/layers/vectortile-layer.js +13 -3
  49. package/esm2015/lib/layer/shared/style.service.js +21 -16
  50. package/esm2015/lib/layer/shared/vector-style.interface.js +1 -1
  51. package/esm2015/lib/layer/utils/index.js +2 -1
  52. package/esm2015/lib/layer/utils/layer.utils.js +11 -0
  53. package/esm2015/lib/layer/utils/layerSync-watcher.js +10 -6
  54. package/esm2015/lib/map/home-extent-button/home-extent-button.component.js +69 -0
  55. package/esm2015/lib/map/home-extent-button/index.js +2 -0
  56. package/esm2015/lib/map/index.js +3 -1
  57. package/esm2015/lib/map/info-section/index.js +2 -0
  58. package/esm2015/lib/map/info-section/info-section.component.js +36 -0
  59. package/esm2015/lib/map/map-browser/map-browser.component.js +1 -1
  60. package/esm2015/lib/map/map-center/map-center.component.js +1 -1
  61. package/esm2015/lib/map/map.module.js +11 -1
  62. package/esm2015/lib/map/shared/hover-feature.directive.js +229 -78
  63. package/esm2015/lib/map/shared/map.js +2 -2
  64. package/esm2015/lib/map/shared/mapOffline.directive.js +17 -6
  65. package/esm2015/lib/measure/measurer/measurer.component.js +8 -2
  66. package/esm2015/lib/query/shared/query.directive.js +6 -3
  67. package/esm2015/lib/query/shared/query.interfaces.js +1 -1
  68. package/esm2015/lib/query/shared/query.service.js +57 -14
  69. package/esm2015/lib/query/shared/query.utils.js +19 -1
  70. package/esm2015/lib/search/search-bar/search-bar.component.js +4 -2
  71. package/esm2015/lib/search/search-results/search-results-add-button.component.js +7 -7
  72. package/esm2015/lib/search/shared/search-pointer-summary.directive.js +16 -5
  73. package/esm2015/lib/search/shared/search.interfaces.js +1 -1
  74. package/esm2015/lib/search/shared/sources/icherche.js +3 -2
  75. package/esm2015/lib/search/shared/sources/source.js +2 -2
  76. package/esm2015/lib/search/shared/sources/storedqueries.js +3 -7
  77. package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.component.js +56 -0
  78. package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.module.js +38 -0
  79. package/esm2015/lib/workspace/confirmation-popup/index.js +3 -0
  80. package/esm2015/lib/workspace/index.js +2 -1
  81. package/esm2015/lib/workspace/shared/edition-workspace.js +271 -0
  82. package/esm2015/lib/workspace/shared/edition-workspace.service.js +619 -0
  83. package/esm2015/lib/workspace/shared/feature-workspace.js +18 -1
  84. package/esm2015/lib/workspace/shared/feature-workspace.service.js +27 -6
  85. package/esm2015/lib/workspace/shared/index.js +3 -1
  86. package/esm2015/lib/workspace/shared/wfs-workspace.js +18 -1
  87. package/esm2015/lib/workspace/shared/wfs-workspace.service.js +27 -5
  88. package/esm2015/lib/workspace/shared/wms-workspace.service.js +59 -15
  89. package/esm2015/lib/workspace/shared/workspace.utils.js +1 -1
  90. package/esm2015/lib/workspace/workspace-selector/workspace-selector.directive.js +40 -10
  91. package/esm2015/lib/workspace/workspace-updator/workspace-updator.directive.js +22 -8
  92. package/esm2015/lib/workspace/workspace.module.js +19 -7
  93. package/fesm2015/igo2-geo.js +2946 -794
  94. package/fesm2015/igo2-geo.js.map +1 -1
  95. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +1 -1
  96. package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +2 -0
  97. package/lib/datasource/shared/datasources/datasource.interface.d.ts +45 -0
  98. package/lib/datasource/shared/datasources/wfs-datasource.d.ts +1 -0
  99. package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +1 -1
  100. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +2 -1
  101. package/lib/directions/directions-inputs/directions-inputs.component.d.ts +1 -0
  102. package/lib/directions/directions.component.d.ts +7 -3
  103. package/lib/directions/shared/directions.enum.d.ts +4 -0
  104. package/lib/directions/shared/directions.interface.d.ts +3 -1
  105. package/lib/directions/shared/directions.utils.d.ts +0 -4
  106. package/lib/filter/filter.module.d.ts +1 -1
  107. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +6 -0
  108. package/lib/filter/shared/ogc-filter.interface.d.ts +1 -0
  109. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +7 -2
  110. package/lib/geometry/shared/controls/draw.d.ts +8 -4
  111. package/lib/geometry/shared/controls/modify.d.ts +3 -4
  112. package/lib/geometry/shared/controls/slice.d.ts +3 -4
  113. package/lib/import-export/import-export/import-export.component.d.ts +2 -0
  114. package/lib/import-export/shared/export.interface.d.ts +2 -1
  115. package/lib/layer/layer-legend/layer-legend.component.d.ts +0 -1
  116. package/lib/layer/layer.module.d.ts +1 -1
  117. package/lib/layer/shared/layer.service.d.ts +1 -1
  118. package/lib/layer/shared/layers/layer.d.ts +7 -0
  119. package/lib/layer/shared/layers/layer.interface.d.ts +8 -0
  120. package/lib/layer/shared/layers/tile-layer.d.ts +10 -1
  121. package/lib/layer/shared/layers/vector-layer.d.ts +2 -1
  122. package/lib/layer/shared/layers/vector-layer.interface.d.ts +1 -0
  123. package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +1 -0
  124. package/lib/layer/shared/style.service.d.ts +4 -1
  125. package/lib/layer/shared/vector-style.interface.d.ts +9 -5
  126. package/lib/layer/utils/index.d.ts +1 -0
  127. package/lib/layer/utils/layer.utils.d.ts +2 -0
  128. package/lib/map/home-extent-button/home-extent-button.component.d.ts +20 -0
  129. package/lib/map/home-extent-button/index.d.ts +1 -0
  130. package/lib/map/index.d.ts +2 -0
  131. package/lib/map/info-section/index.d.ts +1 -0
  132. package/lib/map/info-section/info-section.component.d.ts +7 -0
  133. package/lib/map/map.module.d.ts +19 -17
  134. package/lib/map/shared/hover-feature.directive.d.ts +14 -5
  135. package/lib/map/shared/mapOffline.directive.d.ts +1 -0
  136. package/lib/query/shared/query.interfaces.d.ts +3 -0
  137. package/lib/query/shared/query.service.d.ts +9 -1
  138. package/lib/query/shared/query.utils.d.ts +12 -0
  139. package/lib/search/shared/search-pointer-summary.directive.d.ts +6 -0
  140. package/lib/search/shared/search.interfaces.d.ts +1 -0
  141. package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +23 -0
  142. package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +14 -0
  143. package/lib/workspace/confirmation-popup/index.d.ts +2 -0
  144. package/lib/workspace/index.d.ts +1 -0
  145. package/lib/workspace/shared/edition-workspace.d.ts +81 -0
  146. package/lib/workspace/shared/edition-workspace.service.d.ts +45 -0
  147. package/lib/workspace/shared/feature-workspace.d.ts +3 -0
  148. package/lib/workspace/shared/feature-workspace.service.d.ts +2 -0
  149. package/lib/workspace/shared/index.d.ts +2 -0
  150. package/lib/workspace/shared/wfs-workspace.d.ts +3 -0
  151. package/lib/workspace/shared/wfs-workspace.service.d.ts +2 -0
  152. package/lib/workspace/shared/wms-workspace.service.d.ts +2 -0
  153. package/lib/workspace/shared/workspace.utils.d.ts +3 -2
  154. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +10 -3
  155. package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +3 -1
  156. package/lib/workspace/workspace.module.d.ts +8 -5
  157. package/package.json +4 -4
  158. package/style/geo.theming.scss +1 -0
@@ -54,6 +54,7 @@ export class StyleService {
54
54
  return olCls;
55
55
  }
56
56
  createStyleByAttribute(feature, styleByAttribute) {
57
+ var _a;
57
58
  let style;
58
59
  const type = styleByAttribute.type ? styleByAttribute.type : this.guessTypeFeature(feature);
59
60
  const attribute = styleByAttribute.attribute;
@@ -61,35 +62,36 @@ export class StyleService {
61
62
  const stroke = styleByAttribute.stroke;
62
63
  const width = styleByAttribute.width;
63
64
  const fill = styleByAttribute.fill;
65
+ const anchor = styleByAttribute.anchor;
64
66
  const radius = styleByAttribute.radius;
65
67
  const icon = styleByAttribute.icon;
66
68
  const scale = styleByAttribute.scale;
67
69
  const size = data ? data.length : 0;
68
- const label = styleByAttribute.label;
69
- const labelStyle = label instanceof olstyle.Style ?
70
- this.parseStyle('text', styleByAttribute.label) ||
71
- new olstyle.Text() : undefined;
70
+ const label = styleByAttribute.label ? styleByAttribute.label.attribute : undefined;
71
+ let labelStyle = ((_a = styleByAttribute.label) === null || _a === void 0 ? void 0 : _a.style) ? this.parseStyle('text', styleByAttribute.label.style) : undefined;
72
+ if (!labelStyle && label) {
73
+ labelStyle = new olstyle.Text();
74
+ }
72
75
  const baseStyle = styleByAttribute.baseStyle;
73
76
  if (labelStyle) {
74
- const options = {
75
- text: this.getLabel(feature, label)
76
- };
77
- labelStyle instanceof olstyle.Style ? labelStyle.setText(new olstyle.Text(options)) :
78
- labelStyle.setText(this.getLabel(feature, label));
77
+ labelStyle.setText(this.getLabel(feature, label));
79
78
  }
80
79
  if (type === 'circle') {
81
80
  for (let i = 0; i < size; i++) {
82
- const val = typeof feature.get(attribute) !== 'undefined'
81
+ const val = typeof feature.get(attribute) !== 'undefined' && feature.get(attribute) !== null
83
82
  ? feature.get(attribute)
84
83
  : '';
85
- if (val === data[i] || val.toString().match(data[i])) {
84
+ if (val === data[i] || val.toString().match(new RegExp(data[i], 'gmi'))) {
86
85
  if (icon) {
87
86
  style = [
88
87
  new olstyle.Style({
89
88
  image: new olstyle.Icon({
89
+ color: fill ? fill[i] : undefined,
90
90
  src: icon[i],
91
- scale: scale ? scale[i] : 1
92
- })
91
+ scale: scale ? scale[i] : 1,
92
+ anchor: anchor ? anchor[i] : [0.5, 0.5]
93
+ }),
94
+ text: labelStyle instanceof olstyle.Text ? labelStyle : undefined
93
95
  })
94
96
  ];
95
97
  return style;
@@ -138,10 +140,10 @@ export class StyleService {
138
140
  }
139
141
  else if (type === 'regular') {
140
142
  for (let i = 0; i < size; i++) {
141
- const val = typeof feature.get(attribute) !== 'undefined'
143
+ const val = typeof feature.get(attribute) !== 'undefined' && feature.get(attribute) !== null
142
144
  ? feature.get(attribute)
143
145
  : '';
144
- if (val === data[i] || val.toString().match(data[i])) {
146
+ if (val === data[i] || val.toString().match(new RegExp(data[i], 'gmi'))) {
145
147
  style = [
146
148
  new olstyle.Style({
147
149
  stroke: new olstyle.Stroke({
@@ -252,6 +254,9 @@ export class StyleService {
252
254
  }
253
255
  getLabel(feature, labelMatch) {
254
256
  let label = labelMatch;
257
+ if (!label) {
258
+ return;
259
+ }
255
260
  const labelToGet = Array.from(labelMatch.matchAll(/\$\{([^\{\}]+)\}/g));
256
261
  labelToGet.forEach(v => {
257
262
  label = label.replace(v[0], feature.get(v[1]));
@@ -281,4 +286,4 @@ StyleService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: StyleServic
281
286
  providedIn: 'root'
282
287
  }]
283
288
  }], null, null); })();
284
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL3NoYXJlZC9zdHlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxLQUFLLE9BQU8sTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBSW5DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOztBQUszRixNQUFNLE9BQU8sWUFBWTtJQUd2QixXQUFXLENBQUMsT0FBK0I7UUFDekMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sd0JBQXdCLEVBQUUsQ0FBQztTQUNuQztRQUNELElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxJQUFJLE9BQU8sWUFBWSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ3JFLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sVUFBVSxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ3hDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN4QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLElBQUksS0FBSyxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7WUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFB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QUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckIsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUVILDBDQUEwQztRQUMxQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxVQUFVLEVBQUU7WUFDbkQsS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDO1NBQy9DO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FBTztRQUM5QixRQUFRLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN2QyxLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssWUFBWSxDQUFDO1lBQ2xCLEtBQUssUUFBUTtnQkFDWCxPQUFPLFFBQVEsQ0FBQztZQUNsQjtnQkFDRSxPQUFPLFNBQVMsQ0FBQztTQUNwQjtJQUNILENBQUM7O3dFQW5TVSxZQUFZO2tFQUFaLFlBQVksV0FBWixZQUFZLG1CQUZYLE1BQU07dUZBRVAsWUFBWTtjQUh4QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgKiBhcyBvbHN0eWxlIGZyb20gJ29sL3N0eWxlJztcclxuaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuaW1wb3J0IHsgU3R5bGVCeUF0dHJpYnV0ZSB9IGZyb20gJy4vdmVjdG9yLXN0eWxlLmludGVyZmFjZSc7XHJcblxyXG5pbXBvcnQgeyBDbHVzdGVyUGFyYW0gfSBmcm9tICcuL2NsdXN0ZXJQYXJhbSc7XHJcbmltcG9ydCB7IGNyZWF0ZU92ZXJsYXlNYXJrZXJTdHlsZSB9IGZyb20gJy4uLy4uL292ZXJsYXkvc2hhcmVkL292ZXJsYXktbWFya2VyLXN0eWxlLnV0aWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0eWxlU2VydmljZSB7XHJcbiAgcHVibGljIHN0eWxlOiBvbHN0eWxlLlN0eWxlO1xyXG5cclxuICBjcmVhdGVTdHlsZShvcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgICBpZiAoIW9wdGlvbnMpIHtcclxuICAgICAgcmV0dXJuIGNyZWF0ZU92ZXJsYXlNYXJrZXJTdHlsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nIHx8IG9wdGlvbnMgaW5zdGFuY2VvZiBvbHN0eWxlLlN0eWxlKSB7XHJcbiAgICAgIHJldHVybiBvcHRpb25zO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucGFyc2VTdHlsZSgnc3R5bGUnLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyc2VTdHlsZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgY29uc3Qgc3R5bGVPcHRpb25zID0ge307XHJcbiAgICBjb25zdCBvbENscyA9IHRoaXMuZ2V0T2xDbHMoa2V5KTtcclxuXHJcbiAgICBpZiAob2xDbHMgJiYgdmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goX2tleSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2xLZXkgPSB0aGlzLmdldE9sS2V5KF9rZXkpO1xyXG4gICAgICAgIHN0eWxlT3B0aW9uc1tvbEtleV0gPSB0aGlzLnBhcnNlU3R5bGUoX2tleSwgdmFsdWVbX2tleV0pO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG5ldyBvbENscyhzdHlsZU9wdGlvbnMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRPbEtleShrZXk6IGFueSkge1xyXG4gICAgbGV0IG9sS2V5O1xyXG4gICAgc3dpdGNoIChrZXkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICBjYXNlICdjaXJjbGUnOlxyXG4gICAgICBjYXNlICdyZWd1bGFyc2hhcGUnOlxyXG4gICAgICBjYXNlICdpY29uJzpcclxuICAgICAgICBvbEtleSA9ICdpbWFnZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9sS2V5IHx8IGtleTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0T2xDbHMoa2V5OiBhbnkpIHtcclxuICAgIGxldCBvbENscyA9IG9sc3R5bGVba2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpXTtcclxuICAgIGlmIChrZXkgPT09ICdyZWd1bGFyc2hhcGUnKSB7XHJcbiAgICAgIG9sQ2xzID0gb2xzdHlsZS5SZWd1bGFyU2hhcGU7XHJcbiAgICB9XHJcbiAgICBpZiAoa2V5ID09PSAnYmFja2dyb3VuZEZpbGwnKSB7XHJcbiAgICAgIG9sQ2xzID0gb2xzdHlsZS5GaWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKGtleSA9PT0gJ2JhY2tncm91bmRTdHJva2UnKSB7XHJcbiAgICAgIG9sQ2xzID0gb2xzdHlsZS5TdHJva2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9sQ2xzO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlU3R5bGVCeUF0dHJpYnV0ZShmZWF0dXJlLCBzdHlsZUJ5QXR0cmlidXRlOiBTdHlsZUJ5QXR0cmlidXRlKSB7XHJcblxyXG4gICAgbGV0IHN0eWxlO1xyXG4gICAgY29uc3QgdHlwZSA9IHN0eWxlQnlBdHRyaWJ1dGUudHlwZSA/IHN0eWxlQnlBdHRyaWJ1dGUudHlwZSA6IHRoaXMuZ3Vlc3NUeXBlRmVhdHVyZShmZWF0dXJlKTtcclxuICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHN0eWxlQnlBdHRyaWJ1dGUuYXR0cmlidXRlO1xyXG4gICAgY29uc3QgZGF0YSA9IHN0eWxlQnlBdHRyaWJ1dGUuZGF0YTtcclxuICAgIGNvbnN0IHN0cm9rZSA9IHN0eWxlQnlBdHRyaWJ1dGUuc3Ryb2tlO1xyXG4gICAgY29uc3Qgd2lkdGggPSBzdHlsZUJ5QXR0cmlidXRlLndpZHRoO1xyXG4gICAgY29uc3QgZmlsbCA9IHN0eWxlQnlBdHRyaWJ1dGUuZmlsbDtcclxuICAgIGNvbnN0IHJhZGl1cyA9IHN0eWxlQnlBdHRyaWJ1dGUucmFkaXVzO1xyXG4gICAgY29uc3QgaWNvbiA9IHN0eWxlQnlBdHRyaWJ1dGUuaWNvbjtcclxuICAgIGNvbnN0IHNjYWxlID0gc3R5bGVCeUF0dHJpYnV0ZS5zY2FsZTtcclxuICAgIGNvbnN0IHNpemUgPSBkYXRhID8gZGF0YS5sZW5ndGggOiAwO1xyXG4gICAgY29uc3QgbGFiZWwgPSBzdHlsZUJ5QXR0cmlidXRlLmxhYmVsO1xyXG4gICAgY29uc3QgbGFiZWxTdHlsZSA9IGxhYmVsIGluc3RhbmNlb2Ygb2xzdHlsZS5TdHlsZSA/XHJcbiAgICAgIHRoaXMucGFyc2VTdHlsZSgndGV4dCcsIHN0eWxlQnlBdHRyaWJ1dGUubGFiZWwpIHx8XHJcbiAgICAgIG5ldyBvbHN0eWxlLlRleHQoKSA6IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IGJhc2VTdHlsZSA9IHN0eWxlQnlBdHRyaWJ1dGUuYmFzZVN0eWxlO1xyXG5cclxuICAgIGlmIChsYWJlbFN0eWxlKSB7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgdGV4dDogdGhpcy5nZXRMYWJlbChmZWF0dXJlLCBsYWJlbClcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGxhYmVsU3R5bGUgaW5zdGFuY2VvZiBvbHN0eWxlLlN0eWxlID8gbGFiZWxTdHlsZS5zZXRUZXh0KG5ldyBvbHN0eWxlLlRleHQob3B0aW9ucykpIDpcclxuICAgICAgbGFiZWxTdHlsZS5zZXRUZXh0KHRoaXMuZ2V0TGFiZWwoZmVhdHVyZSwgbGFiZWwpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZSA9PT0gJ2NpcmNsZScpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcclxuICAgICAgICBjb25zdCB2YWwgPVxyXG4gICAgICAgICAgdHlwZW9mIGZlYXR1cmUuZ2V0KGF0dHJpYnV0ZSkgIT09ICd1bmRlZmluZWQnXHJcbiAgICAgICAgICAgID8gZmVhdHVyZS5nZXQoYXR0cmlidXRlKVxyXG4gICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgIGlmICh2YWwgPT09IGRhdGFbaV0gfHwgdmFsLnRvU3RyaW5nKCkubWF0Y2goZGF0YVtpXSkpIHtcclxuICAgICAgICAgIGlmIChpY29uKSB7XHJcbiAgICAgICAgICAgIHN0eWxlID0gW1xyXG4gICAgICAgICAgICAgIG5ldyBvbHN0eWxlLlN0eWxlKHtcclxuICAgICAgICAgICAgICAgIGltYWdlOiBuZXcgb2xzdHlsZS5JY29uKHtcclxuICAgICAgICAgICAgICAgICAgc3JjOiBpY29uW2ldLFxyXG4gICAgICAgICAgICAgICAgICBzY2FsZTogc2NhbGUgPyBzY2FsZVtpXSA6IDFcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgcmV0dXJuIHN0eWxlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc3R5bGUgPSBbXHJcbiAgICAgICAgICAgIG5ldyBvbHN0eWxlLlN0eWxlKHtcclxuICAgICAgICAgICAgICBpbWFnZTogbmV3IG9sc3R5bGUuQ2lyY2xlKHtcclxuICAgICAgICAgICAgICAgIHJhZGl1czogcmFkaXVzID8gcmFkaXVzW2ldIDogNCxcclxuICAgICAgICAgICAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcclxuICAgICAgICAgICAgICAgICAgY29sb3I6IHN0cm9rZSA/IHN0cm9rZVtpXSA6ICdibGFjaycsXHJcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCA/IHdpZHRoW2ldIDogMVxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgICAgICAgICAgY29sb3I6IGZpbGwgPyBmaWxsW2ldIDogJ2JsYWNrJ1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICB0ZXh0OiBsYWJlbFN0eWxlIGluc3RhbmNlb2Ygb2xzdHlsZS5UZXh0ID8gbGFiZWxTdHlsZSA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgXTtcclxuICAgICAgICAgIHJldHVybiBzdHlsZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFmZWF0dXJlLmdldFN0eWxlKCkpIHtcclxuICAgICAgICBpZiAoYmFzZVN0eWxlKSB7XHJcbiAgICAgICAgICBzdHlsZSA9IHRoaXMuY3JlYXRlU3R5bGUoYmFzZVN0eWxlKTtcclxuICAgICAgICAgIGlmIChsYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgICAgIHN0eWxlLnNldFRleHQobGFiZWxTdHlsZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN0eWxlID0gW1xyXG4gICAgICAgICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xyXG4gICAgICAgICAgICBpbWFnZTogbmV3IG9sc3R5bGUuQ2lyY2xlKHtcclxuICAgICAgICAgICAgICByYWRpdXM6IDQsXHJcbiAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICdibGFjaydcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAnI2JiYmJmMidcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICBdO1xyXG4gICAgICAgIHJldHVybiBzdHlsZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncmVndWxhcicpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcclxuICAgICAgICBjb25zdCB2YWwgPVxyXG4gICAgICAgICAgdHlwZW9mIGZlYXR1cmUuZ2V0KGF0dHJpYnV0ZSkgIT09ICd1bmRlZmluZWQnXHJcbiAgICAgICAgICAgID8gZmVhdHVyZS5nZXQoYXR0cmlidXRlKVxyXG4gICAgICAgICAgICA6ICcnO1xyXG4gICAgICAgIGlmICh2YWwgPT09IGRhdGFbaV0gfHwgdmFsLnRvU3RyaW5nKCkubWF0Y2goZGF0YVtpXSkpIHtcclxuICAgICAgICAgIHN0eWxlID0gW1xyXG4gICAgICAgICAgICBuZXcgb2xzdHlsZS5TdHlsZSh7XHJcbiAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHN0cm9rZSA/IHN0cm9rZVtpXSA6ICdibGFjaycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggPyB3aWR0aFtpXSA6IDFcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBmaWxsID8gZmlsbFtpXSA6ICdyZ2JhKDI1NSwyNTUsMjU1LDAuNCknXHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgdGV4dDogbGFiZWxTdHlsZSBpbnN0YW5jZW9mIG9sc3R5bGUuVGV4dCA/IGxhYmVsU3R5bGUgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChmZWF0dXJlIGluc3RhbmNlb2YgT2xGZWF0dXJlKSB7XHJcbiAgICAgICAgaWYgKCFmZWF0dXJlLmdldFN0eWxlKCkpIHtcclxuICAgICAgICAgIGlmIChiYXNlU3R5bGUpIHtcclxuICAgICAgICAgICAgc3R5bGUgPSB0aGlzLmNyZWF0ZVN0eWxlKGJhc2VTdHlsZSk7XHJcbiAgICAgICAgICAgIGlmIChsYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgICAgICAgc3R5bGUuc2V0VGV4dChsYWJlbFN0eWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzdHlsZSA9IFtcclxuICAgICAgICAgICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xyXG4gICAgICAgICAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAnYmxhY2snXHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNiYmJiZjInXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDbHVzdGVyU3R5bGUoZmVhdHVyZSwgY2x1c3RlclBhcmFtOiBDbHVzdGVyUGFyYW0gPSB7fSwgbGF5ZXJTdHlsZSkge1xyXG4gICAgbGV0IHN0eWxlO1xyXG4gICAgY29uc3Qgc2l6ZSA9IGZlYXR1cmUuZ2V0KCdmZWF0dXJlcycpLmxlbmd0aDtcclxuICAgIGlmIChzaXplICE9PSAxKSB7XHJcbiAgICAgIGlmIChjbHVzdGVyUGFyYW0uY2x1c3RlclJhbmdlcykge1xyXG4gICAgICAgIGZvciAoY29uc3QgciBvZiBjbHVzdGVyUGFyYW0uY2x1c3RlclJhbmdlcykge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAoIXIubWluUmFkaXVzIHx8IHIubWluUmFkaXVzIDw9IHNpemUpICYmXHJcbiAgICAgICAgICAgICghci5tYXhSYWRpdXMgfHwgci5tYXhSYWRpdXMgPj0gc2l6ZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBzdHlsZSA9IHRoaXMuY3JlYXRlU3R5bGUoci5zdHlsZSkgYXMgb2xzdHlsZS5DaXJjbGU7XHJcblxyXG4gICAgICAgICAgICBpZiAoci5zaG93UmFuZ2UpIHtcclxuICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gbmV3IG9sc3R5bGUuVGV4dCh7XHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBzaXplLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJ1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBzdHlsZS5zZXRUZXh0KHRleHQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoci5keW5hbWljUmFkaXVzKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNsdXN0ZXJSYWRpdXM6IG51bWJlcjtcclxuICAgICAgICAgICAgICBjb25zdCByYWRpdXNNaW4gPSBzdHlsZS5nZXRSYWRpdXMoKTtcclxuICAgICAgICAgICAgICBjbHVzdGVyUmFkaXVzID0gNSAqIE1hdGgubG9nKHNpemUpO1xyXG4gICAgICAgICAgICAgIGlmIChjbHVzdGVyUmFkaXVzIDwgcmFkaXVzTWluKSB7XHJcbiAgICAgICAgICAgICAgICBjbHVzdGVyUmFkaXVzID0gcmFkaXVzTWluO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBzdHlsZS5pbWFnZV8uc2V0UmFkaXVzKGNsdXN0ZXJSYWRpdXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFzdHlsZSkge1xyXG4gICAgICAgIGxldCBjbHVzdGVyUmFkaXVzOiBudW1iZXI7XHJcbiAgICAgICAgaWYgKGNsdXN0ZXJQYXJhbS5yYWRpdXNDYWxjKSB7XHJcbiAgICAgICAgICBjbHVzdGVyUmFkaXVzID0gY2x1c3RlclBhcmFtLnJhZGl1c0NhbGMoc2l6ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHJhZGl1c01pbiA9IDY7XHJcbiAgICAgICAgICBjbHVzdGVyUmFkaXVzID0gNSAqIE1hdGgubG9nKHNpemUpO1xyXG4gICAgICAgICAgaWYgKGNsdXN0ZXJSYWRpdXMgPCByYWRpdXNNaW4pIHtcclxuICAgICAgICAgICAgY2x1c3RlclJhZGl1cyA9IHJhZGl1c01pbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN0eWxlID0gW1xyXG4gICAgICAgICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xyXG4gICAgICAgICAgICBpbWFnZTogbmV3IG9sc3R5bGUuQ2lyY2xlKHtcclxuICAgICAgICAgICAgICByYWRpdXM6IGNsdXN0ZXJSYWRpdXMsXHJcbiAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICdibGFjaydcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyNCwgMTM0LCA0NSwgMC41KSdcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgdGV4dDogbmV3IG9sc3R5bGUuVGV4dCh7XHJcbiAgICAgICAgICAgICAgdGV4dDogc2l6ZS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJ1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0eWxlID0gdGhpcy5jcmVhdGVTdHlsZShsYXllclN0eWxlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHlsZTtcclxuICB9XHJcblxyXG4gIGdldExhYmVsKGZlYXR1cmUsIGxhYmVsTWF0Y2gpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxhYmVsID0gbGFiZWxNYXRjaDtcclxuICAgIGNvbnN0IGxhYmVsVG9HZXQgPSBBcnJheS5mcm9tKGxhYmVsTWF0Y2gubWF0Y2hBbGwoL1xcJFxceyhbXlxce1xcfV0rKVxcfS9nKSk7XHJcblxyXG4gICAgbGFiZWxUb0dldC5mb3JFYWNoKHYgPT4ge1xyXG4gICAgICBsYWJlbCA9IGxhYmVsLnJlcGxhY2UodlswXSwgZmVhdHVyZS5nZXQodlsxXSkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gTm90aGluZyBkb25lPyBjaGVjayBmZWF0dXJlJ3MgYXR0cmlidXRlXHJcbiAgICBpZiAobGFiZWxUb0dldC5sZW5ndGggPT09IDAgJiYgbGFiZWwgPT09IGxhYmVsTWF0Y2gpIHtcclxuICAgICAgbGFiZWwgPSBmZWF0dXJlLmdldChsYWJlbE1hdGNoKSB8fCBsYWJlbE1hdGNoO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBsYWJlbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ3Vlc3NUeXBlRmVhdHVyZShmZWF0dXJlKSB7XHJcbiAgICBzd2l0Y2ggKGZlYXR1cmUuZ2V0R2VvbWV0cnkoKS5nZXRUeXBlKCkpIHtcclxuICAgICAgY2FzZSAnUG9pbnQnOlxyXG4gICAgICBjYXNlICdNdWx0aVBvaW50JzpcclxuICAgICAgY2FzZSAnQ2lyY2xlJzpcclxuICAgICAgICByZXR1cm4gJ2NpcmNsZSc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICdyZWd1bGFyJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL3NoYXJlZC9zdHlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxLQUFLLE9BQU8sTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBSW5DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOztBQU0zRixNQUFNLE9BQU8sWUFBWTtJQUd2QixXQUFXLENBQUMsT0FBK0I7UUFDekMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sd0JBQXdCLEVBQUUsQ0FBQztTQUNuQztRQUNELElBQUksT0FBTyxPQUFPLEtBQUssVUFBVSxJQUFJLE9BQU8sWUFBWSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ3JFLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sVUFBVSxDQUFDLEdBQVcsRUFBRSxLQUFVO1FBQ3hDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN4QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpDLElBQUksS0FBSyxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7WUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFB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QUFRLENBQUM7WUFDbEI7Z0JBQ0UsT0FBTyxTQUFTLENBQUM7U0FDcEI7SUFDSCxDQUFDOzt3RUF0U1UsWUFBWTtrRUFBWixZQUFZLFdBQVosWUFBWSxtQkFGWCxNQUFNO3VGQUVQLFlBQVk7Y0FIeEIsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0ICogYXMgb2xzdHlsZSBmcm9tICdvbC9zdHlsZSc7XHJcbmltcG9ydCBPbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XHJcbmltcG9ydCB7IFN0eWxlQnlBdHRyaWJ1dGUgfSBmcm9tICcuL3ZlY3Rvci1zdHlsZS5pbnRlcmZhY2UnO1xyXG5cclxuaW1wb3J0IHsgQ2x1c3RlclBhcmFtIH0gZnJvbSAnLi9jbHVzdGVyUGFyYW0nO1xyXG5pbXBvcnQgeyBjcmVhdGVPdmVybGF5TWFya2VyU3R5bGUgfSBmcm9tICcuLi8uLi9vdmVybGF5L3NoYXJlZC9vdmVybGF5LW1hcmtlci1zdHlsZS51dGlscyc7XHJcbmltcG9ydCBSZW5kZXJGZWF0dXJlIGZyb20gJ29sL3JlbmRlci9GZWF0dXJlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0eWxlU2VydmljZSB7XHJcbiAgcHVibGljIHN0eWxlOiBvbHN0eWxlLlN0eWxlO1xyXG5cclxuICBjcmVhdGVTdHlsZShvcHRpb25zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XHJcbiAgICBpZiAoIW9wdGlvbnMpIHtcclxuICAgICAgcmV0dXJuIGNyZWF0ZU92ZXJsYXlNYXJrZXJTdHlsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nIHx8IG9wdGlvbnMgaW5zdGFuY2VvZiBvbHN0eWxlLlN0eWxlKSB7XHJcbiAgICAgIHJldHVybiBvcHRpb25zO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucGFyc2VTdHlsZSgnc3R5bGUnLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyc2VTdHlsZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgY29uc3Qgc3R5bGVPcHRpb25zID0ge307XHJcbiAgICBjb25zdCBvbENscyA9IHRoaXMuZ2V0T2xDbHMoa2V5KTtcclxuXHJcbiAgICBpZiAob2xDbHMgJiYgdmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goX2tleSA9PiB7XHJcbiAgICAgICAgY29uc3Qgb2xLZXkgPSB0aGlzLmdldE9sS2V5KF9rZXkpO1xyXG4gICAgICAgIHN0eWxlT3B0aW9uc1tvbEtleV0gPSB0aGlzLnBhcnNlU3R5bGUoX2tleSwgdmFsdWVbX2tleV0pO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG5ldyBvbENscyhzdHlsZU9wdGlvbnMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRPbEtleShrZXk6IGFueSkge1xyXG4gICAgbGV0IG9sS2V5O1xyXG4gICAgc3dpdGNoIChrZXkudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICBjYXNlICdjaXJjbGUnOlxyXG4gICAgICBjYXNlICdyZWd1bGFyc2hhcGUnOlxyXG4gICAgICBjYXNlICdpY29uJzpcclxuICAgICAgICBvbEtleSA9ICdpbWFnZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9sS2V5IHx8IGtleTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0T2xDbHMoa2V5OiBhbnkpIHtcclxuICAgIGxldCBvbENscyA9IG9sc3R5bGVba2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpXTtcclxuICAgIGlmIChrZXkgPT09ICdyZWd1bGFyc2hhcGUnKSB7XHJcbiAgICAgIG9sQ2xzID0gb2xzdHlsZS5SZWd1bGFyU2hhcGU7XHJcbiAgICB9XHJcbiAgICBpZiAoa2V5ID09PSAnYmFja2dyb3VuZEZpbGwnKSB7XHJcbiAgICAgIG9sQ2xzID0gb2xzdHlsZS5GaWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKGtleSA9PT0gJ2JhY2tncm91bmRTdHJva2UnKSB7XHJcbiAgICAgIG9sQ2xzID0gb2xzdHlsZS5TdHJva2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9sQ2xzO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlU3R5bGVCeUF0dHJpYnV0ZShmZWF0dXJlOiBSZW5kZXJGZWF0dXJlIHwgT2xGZWF0dXJlPE9sR2VvbWV0cnk+LCBzdHlsZUJ5QXR0cmlidXRlOiBTdHlsZUJ5QXR0cmlidXRlKSB7XHJcblxyXG4gICAgbGV0IHN0eWxlO1xyXG4gICAgY29uc3QgdHlwZSA9IHN0eWxlQnlBdHRyaWJ1dGUudHlwZSA/IHN0eWxlQnlBdHRyaWJ1dGUudHlwZSA6IHRoaXMuZ3Vlc3NUeXBlRmVhdHVyZShmZWF0dXJlKTtcclxuICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHN0eWxlQnlBdHRyaWJ1dGUuYXR0cmlidXRlO1xyXG4gICAgY29uc3QgZGF0YSA9IHN0eWxlQnlBdHRyaWJ1dGUuZGF0YTtcclxuICAgIGNvbnN0IHN0cm9rZSA9IHN0eWxlQnlBdHRyaWJ1dGUuc3Ryb2tlO1xyXG4gICAgY29uc3Qgd2lkdGggPSBzdHlsZUJ5QXR0cmlidXRlLndpZHRoO1xyXG4gICAgY29uc3QgZmlsbCA9IHN0eWxlQnlBdHRyaWJ1dGUuZmlsbDtcclxuICAgIGNvbnN0IGFuY2hvciA9IHN0eWxlQnlBdHRyaWJ1dGUuYW5jaG9yO1xyXG4gICAgY29uc3QgcmFkaXVzID0gc3R5bGVCeUF0dHJpYnV0ZS5yYWRpdXM7XHJcbiAgICBjb25zdCBpY29uID0gc3R5bGVCeUF0dHJpYnV0ZS5pY29uO1xyXG4gICAgY29uc3Qgc2NhbGUgPSBzdHlsZUJ5QXR0cmlidXRlLnNjYWxlO1xyXG4gICAgY29uc3Qgc2l6ZSA9IGRhdGEgPyBkYXRhLmxlbmd0aCA6IDA7XHJcbiAgICBjb25zdCBsYWJlbCA9IHN0eWxlQnlBdHRyaWJ1dGUubGFiZWwgPyBzdHlsZUJ5QXR0cmlidXRlLmxhYmVsLmF0dHJpYnV0ZSA6IHVuZGVmaW5lZDtcclxuICAgIGxldCBsYWJlbFN0eWxlID0gc3R5bGVCeUF0dHJpYnV0ZS5sYWJlbD8uc3R5bGUgPyB0aGlzLnBhcnNlU3R5bGUoJ3RleHQnLCBzdHlsZUJ5QXR0cmlidXRlLmxhYmVsLnN0eWxlKSA6IHVuZGVmaW5lZDtcclxuICAgIGlmICghbGFiZWxTdHlsZSAmJiBsYWJlbCkge1xyXG4gICAgICAgIGxhYmVsU3R5bGUgPSBuZXcgb2xzdHlsZS5UZXh0KCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBiYXNlU3R5bGUgPSBzdHlsZUJ5QXR0cmlidXRlLmJhc2VTdHlsZTtcclxuXHJcbiAgICBpZiAobGFiZWxTdHlsZSkge1xyXG4gICAgICBsYWJlbFN0eWxlLnNldFRleHQodGhpcy5nZXRMYWJlbChmZWF0dXJlLCBsYWJlbCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlID09PSAnY2lyY2xlJykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9XHJcbiAgICAgICAgICB0eXBlb2YgZmVhdHVyZS5nZXQoYXR0cmlidXRlKSAhPT0gJ3VuZGVmaW5lZCcgJiYgZmVhdHVyZS5nZXQoYXR0cmlidXRlKSAhPT0gbnVsbFxyXG4gICAgICAgICAgICA/IGZlYXR1cmUuZ2V0KGF0dHJpYnV0ZSlcclxuICAgICAgICAgICAgOiAnJztcclxuICAgICAgICBpZiAodmFsID09PSBkYXRhW2ldIHx8IHZhbC50b1N0cmluZygpLm1hdGNoKG5ldyBSZWdFeHAoZGF0YVtpXSwgJ2dtaScpKSkge1xyXG4gICAgICAgICAgaWYgKGljb24pIHtcclxuICAgICAgICAgICAgc3R5bGUgPSBbXHJcbiAgICAgICAgICAgICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xyXG4gICAgICAgICAgICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLkljb24oe1xyXG4gICAgICAgICAgICAgICAgICBjb2xvcjogZmlsbCA/IGZpbGxbaV0gOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHNyYzogaWNvbltpXSxcclxuICAgICAgICAgICAgICAgICAgc2NhbGU6IHNjYWxlID8gc2NhbGVbaV0gOiAxLFxyXG4gICAgICAgICAgICAgICAgICBhbmNob3I6IGFuY2hvciA/IGFuY2hvcltpXSA6IFswLjUsIDAuNV1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogbGFiZWxTdHlsZSBpbnN0YW5jZW9mIG9sc3R5bGUuVGV4dCA/IGxhYmVsU3R5bGUgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzdHlsZSA9IFtcclxuICAgICAgICAgICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xyXG4gICAgICAgICAgICAgIGltYWdlOiBuZXcgb2xzdHlsZS5DaXJjbGUoe1xyXG4gICAgICAgICAgICAgICAgcmFkaXVzOiByYWRpdXMgPyByYWRpdXNbaV0gOiA0LFxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgICAgICAgICBjb2xvcjogc3Ryb2tlID8gc3Ryb2tlW2ldIDogJ2JsYWNrJyxcclxuICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoID8gd2lkdGhbaV0gOiAxXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xyXG4gICAgICAgICAgICAgICAgICBjb2xvcjogZmlsbCA/IGZpbGxbaV0gOiAnYmxhY2snXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgIHRleHQ6IGxhYmVsU3R5bGUgaW5zdGFuY2VvZiBvbHN0eWxlLlRleHQgPyBsYWJlbFN0eWxlIDogdW5kZWZpbmVkXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgICAgcmV0dXJuIHN0eWxlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIShmZWF0dXJlIGFzIE9sRmVhdHVyZTxPbEdlb21ldHJ5PikuZ2V0U3R5bGUoKSkge1xyXG4gICAgICAgIGlmIChiYXNlU3R5bGUpIHtcclxuICAgICAgICAgIHN0eWxlID0gdGhpcy5jcmVhdGVTdHlsZShiYXNlU3R5bGUpO1xyXG4gICAgICAgICAgaWYgKGxhYmVsU3R5bGUpIHtcclxuICAgICAgICAgICAgc3R5bGUuc2V0VGV4dChsYWJlbFN0eWxlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBzdHlsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3R5bGUgPSBbXHJcbiAgICAgICAgICBuZXcgb2xzdHlsZS5TdHlsZSh7XHJcbiAgICAgICAgICAgIGltYWdlOiBuZXcgb2xzdHlsZS5DaXJjbGUoe1xyXG4gICAgICAgICAgICAgIHJhZGl1czogNCxcclxuICAgICAgICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2JsYWNrJ1xyXG4gICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICcjYmJiYmYyJ1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgcmV0dXJuIHN0eWxlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyZWd1bGFyJykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHZhbCA9XHJcbiAgICAgICAgdHlwZW9mIGZlYXR1cmUuZ2V0KGF0dHJpYnV0ZSkgIT09ICd1bmRlZmluZWQnICYmIGZlYXR1cmUuZ2V0KGF0dHJpYnV0ZSkgIT09IG51bGxcclxuICAgICAgICAgICAgPyBmZWF0dXJlLmdldChhdHRyaWJ1dGUpXHJcbiAgICAgICAgICAgIDogJyc7XHJcbiAgICAgICAgaWYgKHZhbCA9PT0gZGF0YVtpXSB8fCB2YWwudG9TdHJpbmcoKS5tYXRjaChuZXcgUmVnRXhwKGRhdGFbaV0sICdnbWknKSkpIHtcclxuICAgICAgICAgIHN0eWxlID0gW1xyXG4gICAgICAgICAgICBuZXcgb2xzdHlsZS5TdHlsZSh7XHJcbiAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgICAgICAgY29sb3I6IHN0cm9rZSA/IHN0cm9rZVtpXSA6ICdibGFjaycsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggPyB3aWR0aFtpXSA6IDFcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBmaWxsID8gZmlsbFtpXSA6ICdyZ2JhKDI1NSwyNTUsMjU1LDAuNCknXHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgdGV4dDogbGFiZWxTdHlsZSBpbnN0YW5jZW9mIG9sc3R5bGUuVGV4dCA/IGxhYmVsU3R5bGUgOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChmZWF0dXJlIGluc3RhbmNlb2YgT2xGZWF0dXJlKSB7XHJcbiAgICAgICAgaWYgKCFmZWF0dXJlLmdldFN0eWxlKCkpIHtcclxuICAgICAgICAgIGlmIChiYXNlU3R5bGUpIHtcclxuICAgICAgICAgICAgc3R5bGUgPSB0aGlzLmNyZWF0ZVN0eWxlKGJhc2VTdHlsZSk7XHJcbiAgICAgICAgICAgIGlmIChsYWJlbFN0eWxlKSB7XHJcbiAgICAgICAgICAgICAgc3R5bGUuc2V0VGV4dChsYWJlbFN0eWxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzdHlsZSA9IFtcclxuICAgICAgICAgICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xyXG4gICAgICAgICAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAnYmxhY2snXHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgZmlsbDogbmV3IG9sc3R5bGUuRmlsbCh7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogJyNiYmJiZjInXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDbHVzdGVyU3R5bGUoZmVhdHVyZSwgY2x1c3RlclBhcmFtOiBDbHVzdGVyUGFyYW0gPSB7fSwgbGF5ZXJTdHlsZSkge1xyXG4gICAgbGV0IHN0eWxlO1xyXG4gICAgY29uc3Qgc2l6ZSA9IGZlYXR1cmUuZ2V0KCdmZWF0dXJlcycpLmxlbmd0aDtcclxuICAgIGlmIChzaXplICE9PSAxKSB7XHJcbiAgICAgIGlmIChjbHVzdGVyUGFyYW0uY2x1c3RlclJhbmdlcykge1xyXG4gICAgICAgIGZvciAoY29uc3QgciBvZiBjbHVzdGVyUGFyYW0uY2x1c3RlclJhbmdlcykge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAoIXIubWluUmFkaXVzIHx8IHIubWluUmFkaXVzIDw9IHNpemUpICYmXHJcbiAgICAgICAgICAgICghci5tYXhSYWRpdXMgfHwgci5tYXhSYWRpdXMgPj0gc2l6ZSlcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBzdHlsZSA9IHRoaXMuY3JlYXRlU3R5bGUoci5zdHlsZSkgYXMgb2xzdHlsZS5DaXJjbGU7XHJcblxyXG4gICAgICAgICAgICBpZiAoci5zaG93UmFuZ2UpIHtcclxuICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gbmV3IG9sc3R5bGUuVGV4dCh7XHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBzaXplLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJ1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBzdHlsZS5zZXRUZXh0KHRleHQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoci5keW5hbWljUmFkaXVzKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGNsdXN0ZXJSYWRpdXM6IG51bWJlcjtcclxuICAgICAgICAgICAgICBjb25zdCByYWRpdXNNaW4gPSBzdHlsZS5nZXRSYWRpdXMoKTtcclxuICAgICAgICAgICAgICBjbHVzdGVyUmFkaXVzID0gNSAqIE1hdGgubG9nKHNpemUpO1xyXG4gICAgICAgICAgICAgIGlmIChjbHVzdGVyUmFkaXVzIDwgcmFkaXVzTWluKSB7XHJcbiAgICAgICAgICAgICAgICBjbHVzdGVyUmFkaXVzID0gcmFkaXVzTWluO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBzdHlsZS5pbWFnZV8uc2V0UmFkaXVzKGNsdXN0ZXJSYWRpdXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFzdHlsZSkge1xyXG4gICAgICAgIGxldCBjbHVzdGVyUmFkaXVzOiBudW1iZXI7XHJcbiAgICAgICAgaWYgKGNsdXN0ZXJQYXJhbS5yYWRpdXNDYWxjKSB7XHJcbiAgICAgICAgICBjbHVzdGVyUmFkaXVzID0gY2x1c3RlclBhcmFtLnJhZGl1c0NhbGMoc2l6ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHJhZGl1c01pbiA9IDY7XHJcbiAgICAgICAgICBjbHVzdGVyUmFkaXVzID0gNSAqIE1hdGgubG9nKHNpemUpO1xyXG4gICAgICAgICAgaWYgKGNsdXN0ZXJSYWRpdXMgPCByYWRpdXNNaW4pIHtcclxuICAgICAgICAgICAgY2x1c3RlclJhZGl1cyA9IHJhZGl1c01pbjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN0eWxlID0gW1xyXG4gICAgICAgICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xyXG4gICAgICAgICAgICBpbWFnZTogbmV3IG9sc3R5bGUuQ2lyY2xlKHtcclxuICAgICAgICAgICAgICByYWRpdXM6IGNsdXN0ZXJSYWRpdXMsXHJcbiAgICAgICAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICdibGFjaydcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyNCwgMTM0LCA0NSwgMC41KSdcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgdGV4dDogbmV3IG9sc3R5bGUuVGV4dCh7XHJcbiAgICAgICAgICAgICAgdGV4dDogc2l6ZS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZmZmJ1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIF07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0eWxlID0gdGhpcy5jcmVhdGVTdHlsZShsYXllclN0eWxlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHlsZTtcclxuICB9XHJcblxyXG4gIGdldExhYmVsKGZlYXR1cmUsIGxhYmVsTWF0Y2gpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxhYmVsID0gbGFiZWxNYXRjaDtcclxuICAgIGlmICghbGFiZWwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgbGFiZWxUb0dldCA9IEFycmF5LmZyb20obGFiZWxNYXRjaC5tYXRjaEFsbCgvXFwkXFx7KFteXFx7XFx9XSspXFx9L2cpKTtcclxuXHJcbiAgICBsYWJlbFRvR2V0LmZvckVhY2godiA9PiB7XHJcbiAgICAgIGxhYmVsID0gbGFiZWwucmVwbGFjZSh2WzBdLCBmZWF0dXJlLmdldCh2WzFdKSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBOb3RoaW5nIGRvbmU/IGNoZWNrIGZlYXR1cmUncyBhdHRyaWJ1dGVcclxuICAgIGlmIChsYWJlbFRvR2V0Lmxlbmd0aCA9PT0gMCAmJiBsYWJlbCA9PT0gbGFiZWxNYXRjaCkge1xyXG4gICAgICBsYWJlbCA9IGZlYXR1cmUuZ2V0KGxhYmVsTWF0Y2gpIHx8IGxhYmVsTWF0Y2g7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxhYmVsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBndWVzc1R5cGVGZWF0dXJlKGZlYXR1cmUpIHtcclxuICAgIHN3aXRjaCAoZmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKSkge1xyXG4gICAgICBjYXNlICdQb2ludCc6XHJcbiAgICAgIGNhc2UgJ011bHRpUG9pbnQnOlxyXG4gICAgICBjYXNlICdDaXJjbGUnOlxyXG4gICAgICAgIHJldHVybiAnY2lyY2xlJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ3JlZ3VsYXInO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLXN0eWxlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL3NoYXJlZC92ZWN0b3Itc3R5bGUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgb2xTdHlsZSBmcm9tICdvbC9zdHlsZS9TdHlsZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0eWxlQnlBdHRyaWJ1dGUge1xyXG4gICAgdHlwZT86IHN0cmluZztcclxuICAgIGF0dHJpYnV0ZT86IHN0cmluZztcclxuICAgIGRhdGE/OiBBcnJheTxhbnk+O1xyXG4gICAgZmlsbD86IEFycmF5PHN0cmluZz47XHJcbiAgICBzdHJva2U/OiBBcnJheTxzdHJpbmc+O1xyXG4gICAgd2lkdGg/OiBBcnJheTxudW1iZXI+O1xyXG4gICAgcmFkaXVzPzogQXJyYXk8bnVtYmVyPjtcclxuICAgIGljb24/OiBBcnJheTxzdHJpbmc+O1xyXG4gICAgc2NhbGU/OiBBcnJheTxudW1iZXI+O1xyXG4gICAgbGFiZWw/OiBzdHJpbmcgfCB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgb2xTdHlsZSB8IG9sU3R5bGVbXTtcclxuICAgIGJhc2VTdHlsZT86IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCBvbFN0eWxlIHwgb2xTdHlsZVtdO1xyXG4gICAgaG92ZXJTdHlsZT86IFN0eWxlQnlBdHRyaWJ1dGU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFwYm94U3R5bGUge1xyXG4gIHVybDogc3RyaW5nO1xyXG4gIHNvdXJjZTogc3RyaW5nO1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLXN0eWxlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL3NoYXJlZC92ZWN0b3Itc3R5bGUuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFN0eWxlQnlBdHRyaWJ1dGUge1xyXG4gICAgYW5jaG9yPzogQXJyYXk8W251bWJlcixudW1iZXJdPjtcclxuICAgIHR5cGU/OiBzdHJpbmc7XHJcbiAgICBhdHRyaWJ1dGU/OiBzdHJpbmc7XHJcbiAgICBkYXRhPzogQXJyYXk8YW55PjtcclxuICAgIGZpbGw/OiBBcnJheTxzdHJpbmc+O1xyXG4gICAgc3Ryb2tlPzogQXJyYXk8c3RyaW5nPjtcclxuICAgIHdpZHRoPzogQXJyYXk8bnVtYmVyPjtcclxuICAgIHJhZGl1cz86IEFycmF5PG51bWJlcj47XHJcbiAgICBpY29uPzogQXJyYXk8c3RyaW5nPjtcclxuICAgIHNjYWxlPzogQXJyYXk8bnVtYmVyPjtcclxuICAgIGxhYmVsPzogSWdvTGFiZWw7XHJcbiAgICBiYXNlU3R5bGU/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xyXG4gICAgaG92ZXJTdHlsZT86IFN0eWxlQnlBdHRyaWJ1dGU7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSWdvTGFiZWwge1xyXG4gIGF0dHJpYnV0ZTogc3RyaW5nO1xyXG4gIHN0eWxlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcclxuICAvLyBtaW5TY2FsZURlbm9tPzogbnVtYmVyOyAvLyB0b2RvXHJcbiAgLy8gbWF4U2NhbGVEZW5vbT86IG51bWJlcjsgLy8gdG9kb1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1hcGJveFN0eWxlIHtcclxuICB1cmw6IHN0cmluZztcclxuICBzb3VyY2U6IHN0cmluZztcclxufVxyXG4iXX0=
@@ -1,6 +1,7 @@
1
1
  export * from './image-watcher';
2
+ export * from './layer.utils';
2
3
  export * from './layerSync-watcher';
3
4
  export * from './tile-watcher';
4
5
  export * from './outputLegend';
5
6
  export * from './vector-watcher';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ltYWdlLXdhdGNoZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xheWVyU3luYy13YXRjaGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi90aWxlLXdhdGNoZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL291dHB1dExlZ2VuZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdmVjdG9yLXdhdGNoZXInO1xyXG4iXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ltYWdlLXdhdGNoZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xheWVyLnV0aWxzJztcclxuZXhwb3J0ICogZnJvbSAnLi9sYXllclN5bmMtd2F0Y2hlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGlsZS13YXRjaGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9vdXRwdXRMZWdlbmQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ZlY3Rvci13YXRjaGVyJztcclxuIl19
@@ -0,0 +1,11 @@
1
+ export function computeMVTOptionsOnHover(layerOptions) {
2
+ var _a, _b;
3
+ const vectorTileLayerOptions = layerOptions;
4
+ if (((_a = vectorTileLayerOptions.sourceOptions) === null || _a === void 0 ? void 0 : _a.type) === 'mvt' &&
5
+ (((_b = vectorTileLayerOptions.styleByAttribute) === null || _b === void 0 ? void 0 : _b.hoverStyle) || vectorTileLayerOptions.hoverStyle)) {
6
+ const fc = vectorTileLayerOptions.sourceOptions.featureClass;
7
+ vectorTileLayerOptions.sourceOptions.featureClass = fc ? fc : 'feature';
8
+ }
9
+ return layerOptions;
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci91dGlscy9sYXllci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLFVBQVUsd0JBQXdCLENBQUMsWUFBNkI7O0lBQ3BFLE1BQU0sc0JBQXNCLEdBQUcsWUFBc0MsQ0FBQztJQUN0RSxJQUNFLENBQUEsTUFBQSxzQkFBc0IsQ0FBQyxhQUFhLDBDQUFFLElBQUksTUFBSyxLQUFLO1FBQ3BELENBQUMsQ0FBQSxNQUFBLHNCQUFzQixDQUFDLGdCQUFnQiwwQ0FBRSxVQUFVLEtBQUksc0JBQXNCLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDNUYsTUFBTSxFQUFFLEdBQUcsc0JBQXNCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUM3RCxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7S0FDekU7SUFDRCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW55TGF5ZXJPcHRpb25zIH0gZnJvbSBcIi4uL3NoYXJlZC9sYXllcnMvYW55LWxheWVyLmludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBWZWN0b3JUaWxlTGF5ZXJPcHRpb25zIH0gZnJvbSBcIi4uL3NoYXJlZC9sYXllcnMvdmVjdG9ydGlsZS1sYXllci5pbnRlcmZhY2VcIjtcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZU1WVE9wdGlvbnNPbkhvdmVyKGxheWVyT3B0aW9uczogQW55TGF5ZXJPcHRpb25zKSB7XHJcbiAgY29uc3QgdmVjdG9yVGlsZUxheWVyT3B0aW9ucyA9IGxheWVyT3B0aW9ucyBhcyBWZWN0b3JUaWxlTGF5ZXJPcHRpb25zO1xyXG4gIGlmIChcclxuICAgIHZlY3RvclRpbGVMYXllck9wdGlvbnMuc291cmNlT3B0aW9ucz8udHlwZSA9PT0gJ212dCcgJiZcclxuICAgICh2ZWN0b3JUaWxlTGF5ZXJPcHRpb25zLnN0eWxlQnlBdHRyaWJ1dGU/LmhvdmVyU3R5bGUgfHwgdmVjdG9yVGlsZUxheWVyT3B0aW9ucy5ob3ZlclN0eWxlKSkge1xyXG4gICAgY29uc3QgZmMgPSB2ZWN0b3JUaWxlTGF5ZXJPcHRpb25zLnNvdXJjZU9wdGlvbnMuZmVhdHVyZUNsYXNzO1xyXG4gICAgdmVjdG9yVGlsZUxheWVyT3B0aW9ucy5zb3VyY2VPcHRpb25zLmZlYXR1cmVDbGFzcyA9IGZjID8gZmMgOiAnZmVhdHVyZSc7XHJcbiAgfVxyXG4gIHJldHVybiBsYXllck9wdGlvbnM7XHJcbn1cclxuIl19
@@ -152,7 +152,9 @@ export class LayerSyncWatcher extends Watcher {
152
152
  const layerType = layerToApply.ol.getProperties().sourceOptions.type;
153
153
  layerToApply.dataSource.setOgcFilters(ogcFilters, false);
154
154
  if (layerType === 'wfs') {
155
- layerToApply.ol.getSource().refresh();
155
+ if (ogcFilters !== layerToApply.dataSource.ogcFilters$.value) {
156
+ layerToApply.ol.getSource().refresh();
157
+ }
156
158
  }
157
159
  if (layerType === 'wms') {
158
160
  let appliedOgcFilter;
@@ -178,8 +180,10 @@ export class LayerSyncWatcher extends Watcher {
178
180
  l.bidirectionnal !== false && l.linkedIds.indexOf(currentLinkedId) !== -1) {
179
181
  const layerType = layer.ol.getProperties().sourceOptions.type;
180
182
  if (layerType === 'wfs') {
181
- layer.dataSource.setOgcFilters(ogcFilters, true);
182
- layer.ol.getSource().refresh();
183
+ if (ogcFilters !== layer.dataSource.ogcFilters$.value) {
184
+ layer.dataSource.setOgcFilters(ogcFilters, true);
185
+ layer.ol.getSource().refresh();
186
+ }
183
187
  }
184
188
  if (layerType === 'wms') {
185
189
  let appliedOgcFilter;
@@ -220,7 +224,7 @@ export class LayerSyncWatcher extends Watcher {
220
224
  });
221
225
  if (childLayer) {
222
226
  childLayer.dataSource.setTimeFilter(timeFilter, false);
223
- const appliedTimeFilter = this.ol.get('values_').source.getParams().TIME;
227
+ const appliedTimeFilter = this.ol.getSource().getParams().TIME;
224
228
  childLayer.dataSource.ol.updateParams({ TIME: appliedTimeFilter });
225
229
  }
226
230
  });
@@ -236,7 +240,7 @@ export class LayerSyncWatcher extends Watcher {
236
240
  parentLayer.options.linkedLayers.links.map(l => {
237
241
  if (l.properties && l.properties.indexOf(LinkedProperties.TIMEFILTER) !== -1 &&
238
242
  l.bidirectionnal !== false && l.linkedIds.indexOf(currentLinkedId) !== -1) {
239
- const appliedTimeFilter = this.ol.get('values_').source.getParams().TIME;
243
+ const appliedTimeFilter = this.ol.getSource().getParams().TIME;
240
244
  parentLayer.dataSource.ol.updateParams({ TIME: appliedTimeFilter });
241
245
  parentLayer.dataSource.setTimeFilter(timeFilter, true);
242
246
  }
@@ -246,4 +250,4 @@ export class LayerSyncWatcher extends Watcher {
246
250
  }
247
251
  }
248
252
  }
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJTeW5jLXdhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci91dGlscy9sYXllclN5bmMtd2F0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBTXRDLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHakUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxPQUFPO0lBVXpDLFlBQVksS0FBWSxFQUFFLEdBQVc7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRVMsS0FBSztRQUVYLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEUsSUFBSyxJQUFJLENBQUMsVUFBc0MsQ0FBQyxXQUFXLEVBQUU7WUFDMUQsSUFBSSxDQUFDLFlBQVksR0FBSSxJQUFJLENBQUMsVUFBc0MsQ0FBQyxX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LENBQUMsRUFBRTt3QkFDM0MsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDeEUsQ0FBQyxDQUFDLGNBQWMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7NEJBQzNFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQzs0QkFDeEUsV0FBVyxDQUFDLFVBQTRCLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7NEJBQ3RGLFdBQVcsQ0FBQyxVQUF1QyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7eUJBQ3hGO29CQUNMLENBQUMsQ0FBQyxDQUFDO2lCQUNOO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDVjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdhdGNoZXIgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vc2hhcmVkL2xheWVycy9sYXllcic7XHJcbmltcG9ydCBvbExheWVyIGZyb20gJ29sL2xheWVyL0xheWVyJztcclxuaW1wb3J0IG9sU291cmNlIGZyb20gJ29sL3NvdXJjZS9Tb3VyY2UnO1xyXG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZGF0YXNvdXJjZSc7XHJcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcclxuaW1wb3J0IHsgTGF5ZXJzTGluaywgTGlua2VkUHJvcGVydGllcyB9IGZyb20gJy4uL3NoYXJlZC9sYXllcnMvbGF5ZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBXTVNEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyBPZ2NGaWx0ZXJXcml0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXInO1xyXG5pbXBvcnQgeyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL3RpbWUtZmlsdGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBMYXllclN5bmNXYXRjaGVyIGV4dGVuZHMgV2F0Y2hlciB7XHJcbiAgICBwcml2YXRlIG9nY0ZpbHRlcnMkJDogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSB0aW1lRmlsdGVyJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBwcml2YXRlIG9sOiBvbExheWVyPG9sU291cmNlPjtcclxuICAgIHByaXZhdGUgbGF5ZXI6IExheWVyO1xyXG4gICAgcHJpdmF0ZSBkYXRhU291cmNlOiBEYXRhU291cmNlO1xyXG4gICAgcHJpdmF0ZSBtYXA6IElnb01hcDtcclxuICAgIHByaXZhdGUgb2djRmlsdGVyV3JpdGVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGxheWVyOiBMYXllciwgbWFwOiBJZ29NYXApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMub2wgPSBsYXllci5vbDtcclxuICAgICAgICB0aGlzLmxheWVyID0gbGF5ZXI7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlID0gbGF5ZXIub3B0aW9ucy5zb3VyY2U7XHJcbiAgICAgICAgdGhpcy5tYXAgPSBtYXA7XHJcbiAgICAgICAgdGhpcy5vZ2NGaWx0ZXJXcml0ZXIgPSBuZXcgT2djRmlsdGVyV3JpdGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHdhdGNoKCkge1xyXG5cclxuICAgICAgICB0aGlzLm9sLm9uKCdwcm9wZXJ0eWNoYW5nZScsIGV2dCA9PiB0aGlzLnRyYW5zZmVyQ29tbW9uUHJvcGVydGllcyhldnQpKTtcclxuICAgICAgICBpZiAoKHRoaXMuZGF0YVNvdXJjZSBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSkub2djRmlsdGVycyQpIHtcclxuICAgICAgICAgICAgdGhpcy5vZ2NGaWx0ZXJzJCQgPSAodGhpcy5kYXRhU291cmNlIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlKS5vZ2NGaWx0ZXJzJFxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShvZ2NGaWx0ZXJzID0+IHRoaXMudHJhbnNmZXJPZ2NGaWx0ZXJzUHJvcGVydGllcyhvZ2NGaWx0ZXJzKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgodGhpcy5kYXRhU291cmNlIGFzIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZSkudGltZUZpbHRlciQpIHtcclxuICAgICAgICAgICAgdGhpcy50aW1lRmlsdGVyJCQgPSAodGhpcy5kYXRhU291cmNlIGFzIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZSkudGltZUZpbHRlciRcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUodGltZUZpbHRlciA9PiB0aGlzLnRyYW5zZmVyVGltZUZpbHRlclByb3BlcnRpZXModGltZUZpbHRlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN5bmNDaGlsZExheWVycygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB1bndhdGNoKCkge1xyXG4gICAgICAgIHRoaXMub2wudW4oJ3Byb3BlcnR5Y2hhbmdlJywgZXZ0ID0+IHRoaXMudHJhbnNmZXJDb21tb25Qcm9wZXJ0aWVzKGV2dCkpO1xyXG4gICAgICAgIGlmICh0aGlzLm9nY0ZpbHRlcnMkJCkgeyB0aGlzLm9nY0ZpbHRlcnMkJC51bnN1YnNjcmliZSgpOyB9XHJcbiAgICAgICAgaWYgKHRoaXMudGltZUZpbHRlciQkKSB7IHRoaXMudGltZUZpbHRlciQkLnVuc3Vic2NyaWJlKCk7IH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBzeW5jQ2hpbGRMYXllcnMoKSB7XHJcbiAgICAgICAgLy8gRm9yY2UgdGhlIHN5bmMgdGhlIGNoaWxkIGxheWVycyB3aXRoIHBhcmVudCBvbiB0aGUgZmlyc3QgbG9hZC5cclxuICAgICAgICBpZiAoIXRoaXMubWFwKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tYXAuc3RhdHVzJFxyXG4gICAgICAgICAgICAucGlwZShmaXJzdCgpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFwLmxheWVyc1xyXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobGF5ZXIgPT4gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtzKVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAobGF5ZXIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rcy5tYXAobGluayA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluay5wcm9wZXJ0aWVzPy5pbmRleE9mKExpbmtlZFByb3BlcnRpZXMuVklTSUJMRSkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIub2wuc2V0KCd2aXNpYmxlJywgIShsYXllci52aXNpYmxlKSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLm9sLnNldCgndmlzaWJsZScsICEobGF5ZXIudmlzaWJsZSksIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci52aXNpYmxlID0gbGF5ZXIudmlzaWJsZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5rLnByb3BlcnRpZXM/LmluZGV4T2YoTGlua2VkUHJvcGVydGllcy5PUEFDSVRZKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlT3BhY2l0eSA9IGxheWVyLm9sLmdldCgnb3BhY2l0eScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLm9sLnNldCgnb3BhY2l0eScsIDAsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5vbC5zZXQoJ29wYWNpdHknLCBiYXNlT3BhY2l0eSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLm9wYWNpdHkgPSBsYXllci5vcGFjaXR5O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmsucHJvcGVydGllcz8uaW5kZXhPZihMaW5rZWRQcm9wZXJ0aWVzLk1JTlJFU09MVVRJT04pICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VNaW5SZXNvbHV0aW9uID0gbGF5ZXIub2wuZ2V0KCdtaW5SZXNvbHV0aW9uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIub2wuc2V0KCdtaW5SZXNvbHV0aW9uJywgMCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLm9sLnNldCgnbWluUmVzb2x1dGlvbicsIGJhc2VNaW5SZXNvbHV0aW9uLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIubWluUmVzb2x1dGlvbiA9IGxheWVyLm1pblJlc29sdXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluay5wcm9wZXJ0aWVzPy5pbmRleE9mKExpbmtlZFByb3BlcnRpZXMuTUFYUkVTT0xVVElPTikgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZU1heFJlc29sdXRpb24gPSBsYXllci5vbC5nZXQoJ21heFJlc29sdXRpb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5vbC5zZXQoJ21heFJlc29sdXRpb24nLCAwLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIub2wuc2V0KCdtYXhSZXNvbHV0aW9uJywgYmFzZU1heFJlc29sdXRpb24sIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5taW5SZXNvbHV0aW9uID0gbGF5ZXIubWluUmVzb2x1dGlvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5rLnByb3BlcnRpZXM/LmluZGV4T2YoTGlua2VkUHJvcGVydGllcy5PR0NGSUxURVJTKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvZ2NGaWx0ZXJzJCA9IChsYXllci5kYXRhU291cmNlIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlKS5vZ2NGaWx0ZXJzJDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZ2NGaWx0ZXJzJC5uZXh0KG9nY0ZpbHRlcnMkLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5rLnByb3BlcnRpZXM/LmluZGV4T2YoTGlua2VkUHJvcGVydGllcy5USU1FRklMVEVSKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lRmlsdGVyJCA9IChsYXllci5kYXRhU291cmNlIGFzIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZSkudGltZUZpbHRlciQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZpbHRlciQubmV4dCh0aW1lRmlsdGVyJC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRyYW5zZmVyQ29tbW9uUHJvcGVydGllcyhsYXllckNoYW5nZSkge1xyXG4gICAgICAgIGNvbnN0IGtleSA9IGxheWVyQ2hhbmdlLmtleTtcclxuICAgICAgICBjb25zdCBsYXllckNoYW5nZVByb3BlcnRpZXMgPSBsYXllckNoYW5nZS50YXJnZXQuZ2V0UHJvcGVydGllcygpO1xyXG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gbGF5ZXJDaGFuZ2VQcm9wZXJ0aWVzW2tleV07XHJcblxyXG4gICAgICAgIGlmIChbJ3Zpc2libGUnLCAnb3BhY2l0eScsICdtaW5SZXNvbHV0aW9uJywgJ21heFJlc29sdXRpb24nXS5pbmRleE9mKGtleSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gbGF5ZXJDaGFuZ2VQcm9wZXJ0aWVzLmxpbmtlZExheWVycyBhcyBMYXllcnNMaW5rO1xyXG4gICAgICAgIGlmICghbGlua2VkTGF5ZXJzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudExpbmtlZElkID0gbGlua2VkTGF5ZXJzLmxpbmtJZDtcclxuICAgICAgICBjb25zdCBjdXJyZW50TGlua3MgPSBsaW5rZWRMYXllcnMubGlua3M7XHJcbiAgICAgICAgY29uc3QgaXNQYXJlbnRMYXllciA9IGN1cnJlbnRMaW5rcyA/IHRydWUgOiBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKGlzUGFyZW50TGF5ZXIpIHtcclxuICAgICAgICAgICAgLy8gc2VhcmNoIGZvciBjaGlsZCBsYXllcnNcclxuICAgICAgICAgICAgY29uc3Qgc2lsZW50ID0gdHJ1ZTtcclxuICAgICAgICAgICAgY3VycmVudExpbmtzLm1hcChsaW5rID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghbGluay5wcm9wZXJ0aWVzIHx8IGxpbmsucHJvcGVydGllcy5pbmRleE9mKGtleSkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGluay5saW5rZWRJZHMubWFwKGxpbmtlZElkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXllclRvQXBwbHkgPSB0aGlzLm1hcC5sYXllcnMuZmluZChsYXllciA9PiBsYXllci5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkID09PSBsaW5rZWRJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxheWVyVG9BcHBseSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXllclRvQXBwbHkub2wuc2V0KGtleSwgbmV3VmFsdWUsIHNpbGVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICd2aXNpYmxlJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb0FwcGx5LnZpc2libGUkLm5leHQobmV3VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHNlYXJjaCBmb3IgcGFyZW50IGxheWVyXHJcbiAgICAgICAgICAgIGNvbnN0IHNpbGVudCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm1hcC5sYXllcnMubWFwKGxheWVyID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rcy5tYXAobCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLnByb3BlcnRpZXMgJiYgbC5wcm9wZXJ0aWVzLmluZGV4T2Yoa2V5KSAhPT0gLTEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuYmlkaXJlY3Rpb25uYWwgIT09IGZhbHNlICYmIGwubGlua2VkSWRzLmluZGV4T2YoY3VycmVudExpbmtlZElkKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLm9sLnNldChrZXksIG5ld1ZhbHVlLCBzaWxlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PT0gJ3Zpc2libGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIudmlzaWJsZSQubmV4dChuZXdWYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdHJhbnNmZXJPZ2NGaWx0ZXJzUHJvcGVydGllcyhvZ2NGaWx0ZXJzKSB7XHJcbiAgICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gdGhpcy5vbC5nZXRQcm9wZXJ0aWVzKCkubGlua2VkTGF5ZXJzIGFzIExheWVyc0xpbms7XHJcbiAgICAgICAgaWYgKCFsaW5rZWRMYXllcnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjdXJyZW50TGlua2VkSWQgPSBsaW5rZWRMYXllcnMubGlua0lkO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMaW5rcyA9IGxpbmtlZExheWVycy5saW5rcztcclxuICAgICAgICBjb25zdCBpc1BhcmVudExheWVyID0gY3VycmVudExpbmtzID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIGlmIChpc1BhcmVudExheWVyKSB7XHJcbiAgICAgICAgICAgIC8vIHNlYXJjaCBmb3IgY2hpbGQgbGF5ZXJzXHJcbiAgICAgICAgICAgIGN1cnJlbnRMaW5rcy5tYXAobGluayA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWxpbmsucHJvcGVydGllcyB8fCBsaW5rLnByb3BlcnRpZXMuaW5kZXhPZihMaW5rZWRQcm9wZXJ0aWVzLk9HQ0ZJTFRFUlMpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxpbmsubGlua2VkSWRzLm1hcChsaW5rZWRJZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5ZXJUb0FwcGx5ID0gdGhpcy5tYXAubGF5ZXJzLmZpbmQobGF5ZXIgPT4gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCA9PT0gbGlua2VkSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXllclRvQXBwbHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5ZXJUeXBlID0gbGF5ZXJUb0FwcGx5Lm9sLmdldFByb3BlcnRpZXMoKS5zb3VyY2VPcHRpb25zLnR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsYXllclRvQXBwbHkuZGF0YVNvdXJjZSBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSkuc2V0T2djRmlsdGVycyhvZ2NGaWx0ZXJzLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXllclR5cGUgPT09ICd3ZnMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllclRvQXBwbHkub2wuZ2V0U291cmNlKCkucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXllclR5cGUgPT09ICd3bXMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXBwbGllZE9nY0ZpbHRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9sLmdldFByb3BlcnRpZXMoKS5zb3VyY2VPcHRpb25zLnR5cGUgPT09ICd3ZnMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9IHRoaXMub2djRmlsdGVyV3JpdGVyLmhhbmRsZU9nY0ZpbHRlcnNBcHBsaWVkVmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuZGF0YVNvdXJjZS5vcHRpb25zIGFzIGFueSkuZmllbGROYW1lR2VvbWV0cnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIuZ2V0T2xQcm9qZWN0aW9uKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9sLmdldFByb3BlcnRpZXMoKS5zb3VyY2VPcHRpb25zLnR5cGUgPT09ICd3bXMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9ICh0aGlzLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZSkub2wuZ2V0UGFyYW1zKCkuRklMVEVSO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxheWVyVG9BcHBseS5kYXRhU291cmNlIGFzIFdNU0RhdGFTb3VyY2UpLm9sLnVwZGF0ZVBhcmFtcyh7IEZJTFRFUjogYXBwbGllZE9nY0ZpbHRlciB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBzZWFyY2ggZm9yIHBhcmVudCBsYXllclxyXG4gICAgICAgICAgICB0aGlzLm1hcC5sYXllcnMubWFwKGxheWVyID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rcy5tYXAobCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLnByb3BlcnRpZXMgJiYgbC5wcm9wZXJ0aWVzLmluZGV4T2YoTGlua2VkUHJvcGVydGllcy5PR0NGSUxURVJTKSAhPT0gLTEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuYmlkaXJlY3Rpb25uYWwgIT09IGZhbHNlICYmIGwubGlua2VkSWRzLmluZGV4T2YoY3VycmVudExpbmtlZElkKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxheWVyVHlwZSA9IGxheWVyLm9sLmdldFByb3BlcnRpZXMoKS5zb3VyY2VPcHRpb25zLnR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGF5ZXJUeXBlID09PSAnd2ZzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYXllci5kYXRhU291cmNlIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlKS5zZXRPZ2NGaWx0ZXJzKG9nY0ZpbHRlcnMsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLm9sLmdldFNvdXJjZSgpLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXllclR5cGUgPT09ICd3bXMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFwcGxpZWRPZ2NGaWx0ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub2wuZ2V0UHJvcGVydGllcygpLnNvdXJjZU9wdGlvbnMudHlwZSA9PT0gJ3dmcycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9IHRoaXMub2djRmlsdGVyV3JpdGVyLmhhbmRsZU9nY0ZpbHRlcnNBcHBsaWVkVmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5kYXRhU291cmNlLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuZGF0YVNvdXJjZS5vcHRpb25zIGFzIGFueSkuZmllbGROYW1lR2VvbWV0cnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5nZXRPbFByb2plY3Rpb24oKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub2wuZ2V0UHJvcGVydGllcygpLnNvdXJjZU9wdGlvbnMudHlwZSA9PT0gJ3dtcycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9ICh0aGlzLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZSkub2wuZ2V0UGFyYW1zKCkuRklMVEVSO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGF5ZXIuZGF0YVNvdXJjZSBhcyBXTVNEYXRhU291cmNlKS5vbC51cGRhdGVQYXJhbXMoeyBGSUxURVI6IGFwcGxpZWRPZ2NGaWx0ZXIgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxheWVyLmRhdGFTb3VyY2UgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UpLnNldE9nY0ZpbHRlcnMob2djRmlsdGVycywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdHJhbnNmZXJUaW1lRmlsdGVyUHJvcGVydGllcyh0aW1lRmlsdGVyKSB7XHJcbiAgICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gdGhpcy5vbC5nZXRQcm9wZXJ0aWVzKCkubGlua2VkTGF5ZXJzIGFzIExheWVyc0xpbms7XHJcbiAgICAgICAgaWYgKCFsaW5rZWRMYXllcnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjdXJyZW50TGlua2VkSWQgPSBsaW5rZWRMYXllcnMubGlua0lkO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMaW5rcyA9IGxpbmtlZExheWVycy5saW5rcztcclxuICAgICAgICBjb25zdCBpc1BhcmVudExheWVyID0gY3VycmVudExpbmtzID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIGlmIChpc1BhcmVudExheWVyKSB7XHJcbiAgICAgICAgICAgIC8vIHNlYXJjaCBmb3IgY2hpbGQgbGF5ZXJzXHJcbiAgICAgICAgICAgIGN1cnJlbnRMaW5rcy5tYXAobGluayA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWxpbmsucHJvcGVydGllcyB8fCBsaW5rLnByb3BlcnRpZXMuaW5kZXhPZihMaW5rZWRQcm9wZXJ0aWVzLlRJTUVGSUxURVIpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxpbmsubGlua2VkSWRzLm1hcChsaW5rZWRJZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRMYXllciA9IHRoaXMubWFwLmxheWVycy5maW5kKGxheWVyID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLmRhdGFTb3VyY2UgaW5zdGFuY2VvZiBXTVNEYXRhU291cmNlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rSWQgPT09IGxpbmtlZElkKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRMYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hpbGRMYXllci5kYXRhU291cmNlIGFzIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZSkuc2V0VGltZUZpbHRlcih0aW1lRmlsdGVyLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcGxpZWRUaW1lRmlsdGVyID0gdGhpcy5vbC5nZXQoJ3ZhbHVlc18nKS5zb3VyY2UuZ2V0UGFyYW1zKCkuVElNRTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoaWxkTGF5ZXIuZGF0YVNvdXJjZSBhcyBXTVNEYXRhU291cmNlKS5vbC51cGRhdGVQYXJhbXMoeyBUSU1FOiBhcHBsaWVkVGltZUZpbHRlciB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gc2VhcmNoIGZvciBwYXJlbnQgbGF5ZXJcclxuICAgICAgICAgICAgdGhpcy5tYXAubGF5ZXJzXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGxheWVyID0+IGxheWVyLmRhdGFTb3VyY2UgaW5zdGFuY2VvZiBXTVNEYXRhU291cmNlKVxyXG4gICAgICAgICAgICAgICAgLm1hcChwYXJlbnRMYXllciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudExheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRMYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rcy5tYXAobCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobC5wcm9wZXJ0aWVzICYmIGwucHJvcGVydGllcy5pbmRleE9mKExpbmtlZFByb3BlcnRpZXMuVElNRUZJTFRFUikgIT09IC0xICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbC5iaWRpcmVjdGlvbm5hbCAhPT0gZmFsc2UgJiYgbC5saW5rZWRJZHMuaW5kZXhPZihjdXJyZW50TGlua2VkSWQpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwcGxpZWRUaW1lRmlsdGVyID0gdGhpcy5vbC5nZXQoJ3ZhbHVlc18nKS5zb3VyY2UuZ2V0UGFyYW1zKCkuVElNRTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50TGF5ZXIuZGF0YVNvdXJjZSBhcyBXTVNEYXRhU291cmNlKS5vbC51cGRhdGVQYXJhbXMoeyBUSU1FOiBhcHBsaWVkVGltZUZpbHRlciB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyZW50TGF5ZXIuZGF0YVNvdXJjZSBhcyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2UpLnNldFRpbWVGaWx0ZXIodGltZUZpbHRlciwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXJTeW5jLXdhdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci91dGlscy9sYXllclN5bmMtd2F0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBTXRDLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHakUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3ZDLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxPQUFPO0lBVXpDLFlBQVksS0FBWSxFQUFFLEdBQVc7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUN2QyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRVMsS0FBSztRQUVYLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEUsSUFBSyxJQUFJLENBQUMsVUFBc0MsQ0FBQyxXQUFXLEVBQUU7WUFDMUQsSUFBSSxDQUFDLFlBQVksR0FBSSxJQUFJLENBQUMsVUFBc0MsQ0FBQyxX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O2dCQUNmLElBQUksTUFBQSxXQUFXLENBQUMsT0FBTyxDQUFDLFlBQVksMENBQUUsS0FBSyxFQUFFO29CQUN6QyxXQUFXLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUMzQyxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUN4RSxDQUFDLENBQUMsY0FBYyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTs0QkFDM0UsTUFBTSxpQkFBaUIsR0FBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBdUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUM7NEJBQ3BGLFdBQVcsQ0FBQyxVQUE0QixDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDOzRCQUN0RixXQUFXLENBQUMsVUFBdUMsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO3lCQUN4RjtvQkFDTCxDQUFDLENBQUMsQ0FBQztpQkFDTjtZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ1Y7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXYXRjaGVyIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xyXG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL3NoYXJlZC9sYXllcnMvbGF5ZXInO1xyXG5pbXBvcnQgb2xMYXllciBmcm9tICdvbC9sYXllci9MYXllcic7XHJcbmltcG9ydCBvbFNvdXJjZSBmcm9tICdvbC9zb3VyY2UvU291cmNlJztcclxuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2RhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XHJcbmltcG9ydCB7IExheWVyc0xpbmssIExpbmtlZFByb3BlcnRpZXMgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzL2xheWVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlLCBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgV01TRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL3dtcy1kYXRhc291cmNlJztcclxuaW1wb3J0IHsgT2djRmlsdGVyV3JpdGVyIH0gZnJvbSAnLi4vLi4vZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyJztcclxuaW1wb3J0IHsgVGltZUZpbHRlcmFibGVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZmlsdGVyL3NoYXJlZC90aW1lLWZpbHRlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCBvbFNvdXJjZUltYWdlV01TIGZyb20gJ29sL3NvdXJjZS9JbWFnZVdNUyc7XHJcblxyXG5leHBvcnQgY2xhc3MgTGF5ZXJTeW5jV2F0Y2hlciBleHRlbmRzIFdhdGNoZXIge1xyXG4gICAgcHJpdmF0ZSBvZ2NGaWx0ZXJzJCQ6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgdGltZUZpbHRlciQkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgcHJpdmF0ZSBvbDogb2xMYXllcjxvbFNvdXJjZT47XHJcbiAgICBwcml2YXRlIGxheWVyOiBMYXllcjtcclxuICAgIHByaXZhdGUgZGF0YVNvdXJjZTogRGF0YVNvdXJjZTtcclxuICAgIHByaXZhdGUgbWFwOiBJZ29NYXA7XHJcbiAgICBwcml2YXRlIG9nY0ZpbHRlcldyaXRlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihsYXllcjogTGF5ZXIsIG1hcDogSWdvTWFwKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLm9sID0gbGF5ZXIub2w7XHJcbiAgICAgICAgdGhpcy5sYXllciA9IGxheWVyO1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IGxheWVyLm9wdGlvbnMuc291cmNlO1xyXG4gICAgICAgIHRoaXMubWFwID0gbWFwO1xyXG4gICAgICAgIHRoaXMub2djRmlsdGVyV3JpdGVyID0gbmV3IE9nY0ZpbHRlcldyaXRlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCB3YXRjaCgpIHtcclxuXHJcbiAgICAgICAgdGhpcy5vbC5vbigncHJvcGVydHljaGFuZ2UnLCBldnQgPT4gdGhpcy50cmFuc2ZlckNvbW1vblByb3BlcnRpZXMoZXZ0KSk7XHJcbiAgICAgICAgaWYgKCh0aGlzLmRhdGFTb3VyY2UgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UpLm9nY0ZpbHRlcnMkKSB7XHJcbiAgICAgICAgICAgIHRoaXMub2djRmlsdGVycyQkID0gKHRoaXMuZGF0YVNvdXJjZSBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSkub2djRmlsdGVycyRcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUob2djRmlsdGVycyA9PiB0aGlzLnRyYW5zZmVyT2djRmlsdGVyc1Byb3BlcnRpZXMob2djRmlsdGVycykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHRoaXMuZGF0YVNvdXJjZSBhcyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2UpLnRpbWVGaWx0ZXIkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGltZUZpbHRlciQkID0gKHRoaXMuZGF0YVNvdXJjZSBhcyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2UpLnRpbWVGaWx0ZXIkXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHRpbWVGaWx0ZXIgPT4gdGhpcy50cmFuc2ZlclRpbWVGaWx0ZXJQcm9wZXJ0aWVzKHRpbWVGaWx0ZXIpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zeW5jQ2hpbGRMYXllcnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgdW53YXRjaCgpIHtcclxuICAgICAgICB0aGlzLm9sLnVuKCdwcm9wZXJ0eWNoYW5nZScsIGV2dCA9PiB0aGlzLnRyYW5zZmVyQ29tbW9uUHJvcGVydGllcyhldnQpKTtcclxuICAgICAgICBpZiAodGhpcy5vZ2NGaWx0ZXJzJCQpIHsgdGhpcy5vZ2NGaWx0ZXJzJCQudW5zdWJzY3JpYmUoKTsgfVxyXG4gICAgICAgIGlmICh0aGlzLnRpbWVGaWx0ZXIkJCkgeyB0aGlzLnRpbWVGaWx0ZXIkJC51bnN1YnNjcmliZSgpOyB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgc3luY0NoaWxkTGF5ZXJzKCkge1xyXG4gICAgICAgIC8vIEZvcmNlIHRoZSBzeW5jIHRoZSBjaGlsZCBsYXllcnMgd2l0aCBwYXJlbnQgb24gdGhlIGZpcnN0IGxvYWQuXHJcbiAgICAgICAgaWYgKCF0aGlzLm1hcCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWFwLnN0YXR1cyRcclxuICAgICAgICAgICAgLnBpcGUoZmlyc3QoKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hcC5sYXllcnNcclxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGxheWVyID0+IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcylcclxuICAgICAgICAgICAgICAgICAgICAubWFwKGxheWVyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3MubWFwKGxpbmsgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmsucHJvcGVydGllcz8uaW5kZXhPZihMaW5rZWRQcm9wZXJ0aWVzLlZJU0lCTEUpICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLm9sLnNldCgndmlzaWJsZScsICEobGF5ZXIudmlzaWJsZSksIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5vbC5zZXQoJ3Zpc2libGUnLCAhKGxheWVyLnZpc2libGUpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIudmlzaWJsZSA9IGxheWVyLnZpc2libGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluay5wcm9wZXJ0aWVzPy5pbmRleE9mKExpbmtlZFByb3BlcnRpZXMuT1BBQ0lUWSkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZU9wYWNpdHkgPSBsYXllci5vbC5nZXQoJ29wYWNpdHknKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5vbC5zZXQoJ29wYWNpdHknLCAwLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIub2wuc2V0KCdvcGFjaXR5JywgYmFzZU9wYWNpdHksIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5vcGFjaXR5ID0gbGF5ZXIub3BhY2l0eTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5rLnByb3BlcnRpZXM/LmluZGV4T2YoTGlua2VkUHJvcGVydGllcy5NSU5SRVNPTFVUSU9OKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlTWluUmVzb2x1dGlvbiA9IGxheWVyLm9sLmdldCgnbWluUmVzb2x1dGlvbicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLm9sLnNldCgnbWluUmVzb2x1dGlvbicsIDAsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5vbC5zZXQoJ21pblJlc29sdXRpb24nLCBiYXNlTWluUmVzb2x1dGlvbiwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLm1pblJlc29sdXRpb24gPSBsYXllci5taW5SZXNvbHV0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmsucHJvcGVydGllcz8uaW5kZXhPZihMaW5rZWRQcm9wZXJ0aWVzLk1BWFJFU09MVVRJT04pICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2VNYXhSZXNvbHV0aW9uID0gbGF5ZXIub2wuZ2V0KCdtYXhSZXNvbHV0aW9uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIub2wuc2V0KCdtYXhSZXNvbHV0aW9uJywgMCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLm9sLnNldCgnbWF4UmVzb2x1dGlvbicsIGJhc2VNYXhSZXNvbHV0aW9uLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIubWluUmVzb2x1dGlvbiA9IGxheWVyLm1pblJlc29sdXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluay5wcm9wZXJ0aWVzPy5pbmRleE9mKExpbmtlZFByb3BlcnRpZXMuT0dDRklMVEVSUykgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2djRmlsdGVycyQgPSAobGF5ZXIuZGF0YVNvdXJjZSBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSkub2djRmlsdGVycyQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2djRmlsdGVycyQubmV4dChvZ2NGaWx0ZXJzJC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluay5wcm9wZXJ0aWVzPy5pbmRleE9mKExpbmtlZFByb3BlcnRpZXMuVElNRUZJTFRFUikgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZUZpbHRlciQgPSAobGF5ZXIuZGF0YVNvdXJjZSBhcyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2UpLnRpbWVGaWx0ZXIkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVGaWx0ZXIkLm5leHQodGltZUZpbHRlciQudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB0cmFuc2ZlckNvbW1vblByb3BlcnRpZXMobGF5ZXJDaGFuZ2UpIHtcclxuICAgICAgICBjb25zdCBrZXkgPSBsYXllckNoYW5nZS5rZXk7XHJcbiAgICAgICAgY29uc3QgbGF5ZXJDaGFuZ2VQcm9wZXJ0aWVzID0gbGF5ZXJDaGFuZ2UudGFyZ2V0LmdldFByb3BlcnRpZXMoKTtcclxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGxheWVyQ2hhbmdlUHJvcGVydGllc1trZXldO1xyXG5cclxuICAgICAgICBpZiAoWyd2aXNpYmxlJywgJ29wYWNpdHknLCAnbWluUmVzb2x1dGlvbicsICdtYXhSZXNvbHV0aW9uJ10uaW5kZXhPZihrZXkpID09PSAtMSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGxpbmtlZExheWVycyA9IGxheWVyQ2hhbmdlUHJvcGVydGllcy5saW5rZWRMYXllcnMgYXMgTGF5ZXJzTGluaztcclxuICAgICAgICBpZiAoIWxpbmtlZExheWVycykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMaW5rZWRJZCA9IGxpbmtlZExheWVycy5saW5rSWQ7XHJcbiAgICAgICAgY29uc3QgY3VycmVudExpbmtzID0gbGlua2VkTGF5ZXJzLmxpbmtzO1xyXG4gICAgICAgIGNvbnN0IGlzUGFyZW50TGF5ZXIgPSBjdXJyZW50TGlua3MgPyB0cnVlIDogZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChpc1BhcmVudExheWVyKSB7XHJcbiAgICAgICAgICAgIC8vIHNlYXJjaCBmb3IgY2hpbGQgbGF5ZXJzXHJcbiAgICAgICAgICAgIGNvbnN0IHNpbGVudCA9IHRydWU7XHJcbiAgICAgICAgICAgIGN1cnJlbnRMaW5rcy5tYXAobGluayA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWxpbmsucHJvcGVydGllcyB8fCBsaW5rLnByb3BlcnRpZXMuaW5kZXhPZihrZXkpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxpbmsubGlua2VkSWRzLm1hcChsaW5rZWRJZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5ZXJUb0FwcGx5ID0gdGhpcy5tYXAubGF5ZXJzLmZpbmQobGF5ZXIgPT4gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCA9PT0gbGlua2VkSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXllclRvQXBwbHkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb0FwcGx5Lm9sLnNldChrZXksIG5ld1ZhbHVlLCBzaWxlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSAndmlzaWJsZScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyVG9BcHBseS52aXNpYmxlJC5uZXh0KG5ld1ZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBzZWFyY2ggZm9yIHBhcmVudCBsYXllclxyXG4gICAgICAgICAgICBjb25zdCBzaWxlbnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5tYXAubGF5ZXJzLm1hcChsYXllciA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3MubWFwKGwgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobC5wcm9wZXJ0aWVzICYmIGwucHJvcGVydGllcy5pbmRleE9mKGtleSkgIT09IC0xICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsLmJpZGlyZWN0aW9ubmFsICE9PSBmYWxzZSAmJiBsLmxpbmtlZElkcy5pbmRleE9mKGN1cnJlbnRMaW5rZWRJZCkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci5vbC5zZXQoa2V5LCBuZXdWYWx1ZSwgc2lsZW50KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgPT09ICd2aXNpYmxlJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLnZpc2libGUkLm5leHQobmV3VmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRyYW5zZmVyT2djRmlsdGVyc1Byb3BlcnRpZXMob2djRmlsdGVycykge1xyXG4gICAgICAgIGNvbnN0IGxpbmtlZExheWVycyA9IHRoaXMub2wuZ2V0UHJvcGVydGllcygpLmxpbmtlZExheWVycyBhcyBMYXllcnNMaW5rO1xyXG4gICAgICAgIGlmICghbGlua2VkTGF5ZXJzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudExpbmtlZElkID0gbGlua2VkTGF5ZXJzLmxpbmtJZDtcclxuICAgICAgICBjb25zdCBjdXJyZW50TGlua3MgPSBsaW5rZWRMYXllcnMubGlua3M7XHJcbiAgICAgICAgY29uc3QgaXNQYXJlbnRMYXllciA9IGN1cnJlbnRMaW5rcyA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICBpZiAoaXNQYXJlbnRMYXllcikge1xyXG4gICAgICAgICAgICAvLyBzZWFyY2ggZm9yIGNoaWxkIGxheWVyc1xyXG4gICAgICAgICAgICBjdXJyZW50TGlua3MubWFwKGxpbmsgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsaW5rLnByb3BlcnRpZXMgfHwgbGluay5wcm9wZXJ0aWVzLmluZGV4T2YoTGlua2VkUHJvcGVydGllcy5PR0NGSUxURVJTKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsaW5rLmxpbmtlZElkcy5tYXAobGlua2VkSWQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxheWVyVG9BcHBseSA9IHRoaXMubWFwLmxheWVycy5maW5kKGxheWVyID0+IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rSWQgPT09IGxpbmtlZElkKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGF5ZXJUb0FwcGx5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxheWVyVHlwZSA9IGxheWVyVG9BcHBseS5vbC5nZXRQcm9wZXJ0aWVzKCkuc291cmNlT3B0aW9ucy50eXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAobGF5ZXJUb0FwcGx5LmRhdGFTb3VyY2UgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UpLnNldE9nY0ZpbHRlcnMob2djRmlsdGVycywgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGF5ZXJUeXBlID09PSAnd2ZzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9nY0ZpbHRlcnMgIT09IChsYXllclRvQXBwbHkuZGF0YVNvdXJjZSBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSkub2djRmlsdGVycyQudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllclRvQXBwbHkub2wuZ2V0U291cmNlKCkucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXllclR5cGUgPT09ICd3bXMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXBwbGllZE9nY0ZpbHRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9sLmdldFByb3BlcnRpZXMoKS5zb3VyY2VPcHRpb25zLnR5cGUgPT09ICd3ZnMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9IHRoaXMub2djRmlsdGVyV3JpdGVyLmhhbmRsZU9nY0ZpbHRlcnNBcHBsaWVkVmFsdWUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMuZGF0YVNvdXJjZS5vcHRpb25zIGFzIGFueSkuZmllbGROYW1lR2VvbWV0cnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIuZ2V0T2xQcm9qZWN0aW9uKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9sLmdldFByb3BlcnRpZXMoKS5zb3VyY2VPcHRpb25zLnR5cGUgPT09ICd3bXMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9ICh0aGlzLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZSkub2wuZ2V0UGFyYW1zKCkuRklMVEVSO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxheWVyVG9BcHBseS5kYXRhU291cmNlIGFzIFdNU0RhdGFTb3VyY2UpLm9sLnVwZGF0ZVBhcmFtcyh7IEZJTFRFUjogYXBwbGllZE9nY0ZpbHRlciB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBzZWFyY2ggZm9yIHBhcmVudCBsYXllclxyXG4gICAgICAgICAgICB0aGlzLm1hcC5sYXllcnMubWFwKGxheWVyID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rcy5tYXAobCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsLnByb3BlcnRpZXMgJiYgbC5wcm9wZXJ0aWVzLmluZGV4T2YoTGlua2VkUHJvcGVydGllcy5PR0NGSUxURVJTKSAhPT0gLTEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuYmlkaXJlY3Rpb25uYWwgIT09IGZhbHNlICYmIGwubGlua2VkSWRzLmluZGV4T2YoY3VycmVudExpbmtlZElkKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxheWVyVHlwZSA9IGxheWVyLm9sLmdldFByb3BlcnRpZXMoKS5zb3VyY2VPcHRpb25zLnR5cGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGF5ZXJUeXBlID09PSAnd2ZzJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvZ2NGaWx0ZXJzICE9PSAobGF5ZXIuZGF0YVNvdXJjZSBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSkub2djRmlsdGVycyQudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxheWVyLmRhdGFTb3VyY2UgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UpLnNldE9nY0ZpbHRlcnMob2djRmlsdGVycywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLm9sLmdldFNvdXJjZSgpLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGF5ZXJUeXBlID09PSAnd21zJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcHBsaWVkT2djRmlsdGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9sLmdldFByb3BlcnRpZXMoKS5zb3VyY2VPcHRpb25zLnR5cGUgPT09ICd3ZnMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpZWRPZ2NGaWx0ZXIgPSB0aGlzLm9nY0ZpbHRlcldyaXRlci5oYW5kbGVPZ2NGaWx0ZXJzQXBwbGllZFZhbHVlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBhbnkpLmZpZWxkTmFtZUdlb21ldHJ5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIuZ2V0T2xQcm9qZWN0aW9uKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9sLmdldFByb3BlcnRpZXMoKS5zb3VyY2VPcHRpb25zLnR5cGUgPT09ICd3bXMnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpZWRPZ2NGaWx0ZXIgPSAodGhpcy5kYXRhU291cmNlIGFzIFdNU0RhdGFTb3VyY2UpLm9sLmdldFBhcmFtcygpLkZJTFRFUjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxheWVyLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZSkub2wudXBkYXRlUGFyYW1zKHsgRklMVEVSOiBhcHBsaWVkT2djRmlsdGVyIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYXllci5kYXRhU291cmNlIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlKS5zZXRPZ2NGaWx0ZXJzKG9nY0ZpbHRlcnMsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRyYW5zZmVyVGltZUZpbHRlclByb3BlcnRpZXModGltZUZpbHRlcikge1xyXG4gICAgICAgIGNvbnN0IGxpbmtlZExheWVycyA9IHRoaXMub2wuZ2V0UHJvcGVydGllcygpLmxpbmtlZExheWVycyBhcyBMYXllcnNMaW5rO1xyXG4gICAgICAgIGlmICghbGlua2VkTGF5ZXJzKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY3VycmVudExpbmtlZElkID0gbGlua2VkTGF5ZXJzLmxpbmtJZDtcclxuICAgICAgICBjb25zdCBjdXJyZW50TGlua3MgPSBsaW5rZWRMYXllcnMubGlua3M7XHJcbiAgICAgICAgY29uc3QgaXNQYXJlbnRMYXllciA9IGN1cnJlbnRMaW5rcyA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICBpZiAoaXNQYXJlbnRMYXllcikge1xyXG4gICAgICAgICAgICAvLyBzZWFyY2ggZm9yIGNoaWxkIGxheWVyc1xyXG4gICAgICAgICAgICBjdXJyZW50TGlua3MubWFwKGxpbmsgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsaW5rLnByb3BlcnRpZXMgfHwgbGluay5wcm9wZXJ0aWVzLmluZGV4T2YoTGlua2VkUHJvcGVydGllcy5USU1FRklMVEVSKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsaW5rLmxpbmtlZElkcy5tYXAobGlua2VkSWQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkTGF5ZXIgPSB0aGlzLm1hcC5sYXllcnMuZmluZChsYXllciA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXllci5kYXRhU291cmNlIGluc3RhbmNlb2YgV01TRGF0YVNvdXJjZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXllci5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkID09PSBsaW5rZWRJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkTGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoaWxkTGF5ZXIuZGF0YVNvdXJjZSBhcyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2UpLnNldFRpbWVGaWx0ZXIodGltZUZpbHRlciwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcHBsaWVkVGltZUZpbHRlciA9ICh0aGlzLm9sLmdldFNvdXJjZSgpIGFzIG9sU291cmNlSW1hZ2VXTVMpLmdldFBhcmFtcygpLlRJTUU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGlsZExheWVyLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZSkub2wudXBkYXRlUGFyYW1zKHsgVElNRTogYXBwbGllZFRpbWVGaWx0ZXIgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIHNlYXJjaCBmb3IgcGFyZW50IGxheWVyXHJcbiAgICAgICAgICAgIHRoaXMubWFwLmxheWVyc1xyXG4gICAgICAgICAgICAgICAgLmZpbHRlcihsYXllciA9PiBsYXllci5kYXRhU291cmNlIGluc3RhbmNlb2YgV01TRGF0YVNvdXJjZSlcclxuICAgICAgICAgICAgICAgIC5tYXAocGFyZW50TGF5ZXIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRMYXllci5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50TGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3MubWFwKGwgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwucHJvcGVydGllcyAmJiBsLnByb3BlcnRpZXMuaW5kZXhPZihMaW5rZWRQcm9wZXJ0aWVzLlRJTUVGSUxURVIpICE9PSAtMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuYmlkaXJlY3Rpb25uYWwgIT09IGZhbHNlICYmIGwubGlua2VkSWRzLmluZGV4T2YoY3VycmVudExpbmtlZElkKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcHBsaWVkVGltZUZpbHRlciA9ICh0aGlzLm9sLmdldFNvdXJjZSgpIGFzIG9sU291cmNlSW1hZ2VXTVMpLmdldFBhcmFtcygpLlRJTUU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudExheWVyLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZSkub2wudXBkYXRlUGFyYW1zKHsgVElNRTogYXBwbGllZFRpbWVGaWx0ZXIgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmVudExheWVyLmRhdGFTb3VyY2UgYXMgVGltZUZpbHRlcmFibGVEYXRhU291cmNlKS5zZXRUaW1lRmlsdGVyKHRpbWVGaWx0ZXIsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,69 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as olproj from 'ol/proj';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@igo2/core";
5
+ import * as i2 from "@angular/material/button";
6
+ import * as i3 from "@angular/material/tooltip";
7
+ import * as i4 from "@angular/material/icon";
8
+ import * as i5 from "@ngx-translate/core";
9
+ /*
10
+ Button to center the map to the home extent
11
+ */
12
+ export class HomeExtentButtonComponent {
13
+ constructor(configService) {
14
+ this.configService = configService;
15
+ this.computeHomeExtent();
16
+ }
17
+ computeHomeExtent() {
18
+ this.homeExtentButtonExtent = this.extentOverride || this.configService.getConfig('homeExtentButton.homeExtButtonExtent');
19
+ this.homeExtentButtonCenter = this.centerOverride || this.configService.getConfig('homeExtentButton.homeExtButtonCenter');
20
+ this.homeExtentButtonZoom = this.zoomOverride || this.configService.getConfig('homeExtentButton.homeExtButtonZoom');
21
+ // priority over extent if these 2 properties are defined;
22
+ if (this.centerOverride && this.zoomOverride) {
23
+ this.homeExtentButtonExtent = undefined;
24
+ }
25
+ }
26
+ onToggleClick() {
27
+ this.computeHomeExtent();
28
+ if (this.homeExtentButtonExtent) {
29
+ this.map.viewController.zoomToExtent(this.homeExtentButtonExtent);
30
+ }
31
+ else if (this.homeExtentButtonCenter && this.homeExtentButtonZoom) {
32
+ const center = olproj.fromLonLat(this.homeExtentButtonCenter, this.map.viewController.olView.getProjection().getCode());
33
+ this.map.viewController.olView.setCenter(center);
34
+ this.map.viewController.zoomTo(this.homeExtentButtonZoom);
35
+ }
36
+ }
37
+ }
38
+ HomeExtentButtonComponent.ɵfac = function HomeExtentButtonComponent_Factory(t) { return new (t || HomeExtentButtonComponent)(i0.ɵɵdirectiveInject(i1.ConfigService)); };
39
+ HomeExtentButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: HomeExtentButtonComponent, selectors: [["igo-home-extent-button"]], inputs: { map: "map", color: "color", extentOverride: "extentOverride", centerOverride: "centerOverride", zoomOverride: "zoomOverride" }, decls: 4, vars: 4, consts: [[1, "igo-home-extent-button-container"], ["mat-icon-button", "", "matTooltipPosition", "left", 3, "matTooltip", "color", "click"], ["svgIcon", "home-map-marker"]], template: function HomeExtentButtonComponent_Template(rf, ctx) { if (rf & 1) {
40
+ i0.ɵɵelementStart(0, "div", 0);
41
+ i0.ɵɵelementStart(1, "button", 1);
42
+ i0.ɵɵlistener("click", function HomeExtentButtonComponent_Template_button_click_1_listener() { return ctx.onToggleClick(); });
43
+ i0.ɵɵpipe(2, "translate");
44
+ i0.ɵɵelement(3, "mat-icon", 2);
45
+ i0.ɵɵelementEnd();
46
+ i0.ɵɵelementEnd();
47
+ } if (rf & 2) {
48
+ i0.ɵɵadvance(1);
49
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(2, 2, "igo.geo.mapButtons.home-extent"))("color", ctx.color);
50
+ } }, directives: [i2.MatButton, i3.MatTooltip, i4.MatIcon], pipes: [i5.TranslatePipe], styles: ["@charset \"UTF-8\";.igo-home-extent-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}\\a0[_ngcontent-%COMP%] .igo-home-extent-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
51
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HomeExtentButtonComponent, [{
52
+ type: Component,
53
+ args: [{
54
+ selector: 'igo-home-extent-button',
55
+ templateUrl: './home-extent-button.component.html',
56
+ styleUrls: ['./home-extent-button.component.scss'],
57
+ }]
58
+ }], function () { return [{ type: i1.ConfigService }]; }, { map: [{
59
+ type: Input
60
+ }], color: [{
61
+ type: Input
62
+ }], extentOverride: [{
63
+ type: Input
64
+ }], centerOverride: [{
65
+ type: Input
66
+ }], zoomOverride: [{
67
+ type: Input
68
+ }] }); })();
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS1leHRlbnQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9ob21lLWV4dGVudC1idXR0b24vaG9tZS1leHRlbnQtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9ob21lLWV4dGVudC1idXR0b24vaG9tZS1leHRlbnQtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pELE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDOzs7Ozs7O0FBQ2xDOztFQUVFO0FBTUYsTUFBTSxPQUFPLHlCQUF5QjtJQVdyQyxZQUFtQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMxQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUMxSCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzFILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFFcEgsMERBQTBEO1FBQzFELElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzVDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxTQUFTLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUNuRTthQUFNLElBQUksSUFBSSxDQUFDLHNCQUFzQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUNuRSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN4SCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUMzRDtJQUNILENBQUM7O2tHQW5DVSx5QkFBeUI7NEVBQXpCLHlCQUF5QjtRQ2J0Qyw4QkFBOEM7UUFBQSxpQ0FLZDtRQUExQixzR0FBUyxtQkFBZSxJQUFDOztRQUFDLDhCQUFpRDtRQUFBLGlCQUFTO1FBQUEsaUJBQU07O1FBSDFGLGVBQTJEO1FBQTNELG1GQUEyRCxvQkFBQTs7dUZEV3BELHlCQUF5QjtjQUxyQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsV0FBVyxFQUFDLHFDQUFxQztnQkFDakQsU0FBUyxFQUFFLENBQUMscUNBQXFDLENBQUM7YUFDbkQ7Z0VBRVUsR0FBRztrQkFBWCxLQUFLO1lBQ0csS0FBSztrQkFBYixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uL3NoYXJlZC9tYXAnO1xyXG5pbXBvcnQgeyBNYXBFeHRlbnQgfSBmcm9tICcuLi9zaGFyZWQvbWFwLmludGVyZmFjZSc7XHJcbmltcG9ydCAqIGFzIG9scHJvaiBmcm9tICdvbC9wcm9qJztcclxuLypcclxuQnV0dG9uIHRvIGNlbnRlciB0aGUgbWFwIHRvIHRoZSBob21lIGV4dGVudFxyXG4qL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1ob21lLWV4dGVudC1idXR0b24nLFxyXG4gIHRlbXBsYXRlVXJsOicuL2hvbWUtZXh0ZW50LWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaG9tZS1leHRlbnQtYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb21lRXh0ZW50QnV0dG9uQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBtYXA6IElnb01hcDtcclxuICBASW5wdXQoKSBjb2xvcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGV4dGVudE92ZXJyaWRlPzogTWFwRXh0ZW50XHJcbiAgQElucHV0KCkgY2VudGVyT3ZlcnJpZGU/OiBbbnVtYmVyLCBudW1iZXJdO1xyXG4gIEBJbnB1dCgpIHpvb21PdmVycmlkZT86IG51bWJlcjtcclxuXHJcbiAgcHJpdmF0ZSBob21lRXh0ZW50QnV0dG9uRXh0ZW50O1xyXG4gIHByaXZhdGUgaG9tZUV4dGVudEJ1dHRvbkNlbnRlcjtcclxuICBwcml2YXRlIGhvbWVFeHRlbnRCdXR0b25ab29tO1xyXG5cclxuIGNvbnN0cnVjdG9yKHB1YmxpYyBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMuY29tcHV0ZUhvbWVFeHRlbnQoKTtcclxuICB9XHJcblxyXG4gIGNvbXB1dGVIb21lRXh0ZW50KCkge1xyXG4gICAgdGhpcy5ob21lRXh0ZW50QnV0dG9uRXh0ZW50ID0gdGhpcy5leHRlbnRPdmVycmlkZSB8fCB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdob21lRXh0ZW50QnV0dG9uLmhvbWVFeHRCdXR0b25FeHRlbnQnKTtcclxuICAgIHRoaXMuaG9tZUV4dGVudEJ1dHRvbkNlbnRlciA9IHRoaXMuY2VudGVyT3ZlcnJpZGUgfHwgdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnaG9tZUV4dGVudEJ1dHRvbi5ob21lRXh0QnV0dG9uQ2VudGVyJyk7XHJcbiAgICB0aGlzLmhvbWVFeHRlbnRCdXR0b25ab29tID0gdGhpcy56b29tT3ZlcnJpZGUgfHwgdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnaG9tZUV4dGVudEJ1dHRvbi5ob21lRXh0QnV0dG9uWm9vbScpO1xyXG5cclxuICAgIC8vIHByaW9yaXR5IG92ZXIgZXh0ZW50IGlmIHRoZXNlIDIgcHJvcGVydGllcyBhcmUgZGVmaW5lZDtcclxuICAgIGlmICh0aGlzLmNlbnRlck92ZXJyaWRlICYmIHRoaXMuem9vbU92ZXJyaWRlKSB7XHJcbiAgICAgIHRoaXMuaG9tZUV4dGVudEJ1dHRvbkV4dGVudCA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlQ2xpY2soKSB7XHJcbiAgICB0aGlzLmNvbXB1dGVIb21lRXh0ZW50KCk7XHJcbiAgICBpZiAodGhpcy5ob21lRXh0ZW50QnV0dG9uRXh0ZW50KSB7XHJcbiAgICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnpvb21Ub0V4dGVudCh0aGlzLmhvbWVFeHRlbnRCdXR0b25FeHRlbnQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmhvbWVFeHRlbnRCdXR0b25DZW50ZXIgJiYgdGhpcy5ob21lRXh0ZW50QnV0dG9uWm9vbSkge1xyXG4gICAgICBjb25zdCBjZW50ZXIgPSBvbHByb2ouZnJvbUxvbkxhdCh0aGlzLmhvbWVFeHRlbnRCdXR0b25DZW50ZXIsIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLm9sVmlldy5nZXRQcm9qZWN0aW9uKCkuZ2V0Q29kZSgpKTtcclxuICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIub2xWaWV3LnNldENlbnRlcihjZW50ZXIpO1xyXG4gICAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlci56b29tVG8odGhpcy5ob21lRXh0ZW50QnV0dG9uWm9vbSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpZ28taG9tZS1leHRlbnQtYnV0dG9uLWNvbnRhaW5lclwiPjxidXR0b25cclxuICDCoCDCoCBtYXQtaWNvbi1idXR0b25cclxuICDCoCDCoCBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5tYXBCdXR0b25zLmhvbWUtZXh0ZW50JyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIlxyXG4gIMKgIMKgIFtjb2xvcl09XCJjb2xvclwiXHJcbiAgwqAgwqAgKGNsaWNrKT1cIm9uVG9nZ2xlQ2xpY2soKVwiPjxtYXQtaWNvbiBzdmdJY29uID0gXCJob21lLW1hcC1tYXJrZXJcIj48L21hdC1pY29uPjwvYnV0dG9uPjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './home-extent-button.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvaG9tZS1leHRlbnQtYnV0dG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2hvbWUtZXh0ZW50LWJ1dHRvbi5jb21wb25lbnQnO1xyXG4iXX0=
@@ -3,9 +3,11 @@ export * from './map-browser';
3
3
  export * from './zoom-button';
4
4
  export * from './menu-button';
5
5
  export * from './geolocate-button';
6
+ export * from './home-extent-button';
6
7
  export * from './offline-button';
7
8
  export * from './baselayers-switcher';
8
9
  export * from './rotation-button';
9
10
  export * from './swipe-control';
10
11
  export * from './map-center';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUM7QUFFekIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9tYXAtYnJvd3Nlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vem9vbS1idXR0b24nO1xyXG5leHBvcnQgKiBmcm9tICcuL21lbnUtYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9nZW9sb2NhdGUtYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9vZmZsaW5lLWJ1dHRvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vYmFzZWxheWVycy1zd2l0Y2hlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vcm90YXRpb24tYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9zd2lwZS1jb250cm9sJztcclxuZXhwb3J0ICogZnJvbSAnLi9tYXAtY2VudGVyJztcclxuIl19
12
+ export * from './info-section';
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUM7QUFFekIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2hhcmVkJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbWFwLWJyb3dzZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL3pvb20tYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9tZW51LWJ1dHRvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ2VvbG9jYXRlLWJ1dHRvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaG9tZS1leHRlbnQtYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9vZmZsaW5lLWJ1dHRvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vYmFzZWxheWVycy1zd2l0Y2hlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vcm90YXRpb24tYnV0dG9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9zd2lwZS1jb250cm9sJztcclxuZXhwb3J0ICogZnJvbSAnLi9tYXAtY2VudGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9pbmZvLXNlY3Rpb24nO1xyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './info-section.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvaW5mby1zZWN0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2luZm8tc2VjdGlvbi5jb21wb25lbnQnO1xyXG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ function InfoSectionComponent_div_0_Template(rf, ctx) { if (rf & 1) {
5
+ i0.ɵɵelementStart(0, "div", 1);
6
+ i0.ɵɵelementStart(1, "pre");
7
+ i0.ɵɵtext(2);
8
+ i0.ɵɵelementEnd();
9
+ i0.ɵɵelementEnd();
10
+ } if (rf & 2) {
11
+ const ctx_r0 = i0.ɵɵnextContext();
12
+ i0.ɵɵadvance(2);
13
+ i0.ɵɵtextInterpolate(ctx_r0.infoContent);
14
+ } }
15
+ export class InfoSectionComponent {
16
+ constructor() {
17
+ this.infoContent = '';
18
+ }
19
+ }
20
+ InfoSectionComponent.ɵfac = function InfoSectionComponent_Factory(t) { return new (t || InfoSectionComponent)(); };
21
+ InfoSectionComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: InfoSectionComponent, selectors: [["igo-info-section"]], inputs: { infoContent: "infoContent" }, decls: 1, vars: 1, consts: [["class", "infoSection", 4, "ngIf"], [1, "infoSection"]], template: function InfoSectionComponent_Template(rf, ctx) { if (rf & 1) {
22
+ i0.ɵɵtemplate(0, InfoSectionComponent_div_0_Template, 3, 1, "div", 0);
23
+ } if (rf & 2) {
24
+ i0.ɵɵproperty("ngIf", ctx.infoContent && ctx.infoContent.length);
25
+ } }, directives: [i1.NgIf], styles: [".infoSection[_ngcontent-%COMP%]{border-radius:10px;background-color:#6e6e6e66;padding:calc(5px / 2);position:absolute;text-align:center;top:5px;left:50%;text-shadow:0 0 5px white,0 0 10px white,0 0 15px white}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.infoSection[_ngcontent-%COMP%]{top:calc(40px + 5px + 5px);left:10%}}"] });
26
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoSectionComponent, [{
27
+ type: Component,
28
+ args: [{
29
+ selector: 'igo-info-section',
30
+ templateUrl: './info-section.component.html',
31
+ styleUrls: ['./info-section.component.scss']
32
+ }]
33
+ }], function () { return []; }, { infoContent: [{
34
+ type: Input
35
+ }] }); })();
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9pbmZvLXNlY3Rpb24vaW5mby1zZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC9pbmZvLXNlY3Rpb24vaW5mby1zZWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0lDQWpELDhCQUFtRTtJQUMvRCwyQkFBSztJQUFBLFlBQWU7SUFBQSxpQkFBTTtJQUM5QixpQkFBTTs7O0lBREcsZUFBZTtJQUFmLHdDQUFlOztBRE14QixNQUFNLE9BQU8sb0JBQW9CO0lBSS9CO1FBRlMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7SUFFbkIsQ0FBQzs7d0ZBSkwsb0JBQW9CO3VFQUFwQixvQkFBb0I7UUNQakMscUVBRU07O1FBRkEsZ0VBQXVDOzt1RkRPaEMsb0JBQW9CO2NBTGhDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QixXQUFXLEVBQUUsK0JBQStCO2dCQUM1QyxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQzthQUM3QztzQ0FHVSxXQUFXO2tCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28taW5mby1zZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5mby1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbmZvLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb1NlY3Rpb25Db21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBpbmZvQ29udGVudDogc3RyaW5nID0gJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cImluZm9Db250ZW50ICYmIGluZm9Db250ZW50Lmxlbmd0aFwiIGNsYXNzPVwiaW5mb1NlY3Rpb25cIj5cclxuICAgIDxwcmU+e3tpbmZvQ29udGVudH19PC9wcmU+XHJcbjwvZGl2PiJdfQ==