@igo2/geo 1.14.1 → 1.15.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 (502) hide show
  1. package/assets/icons/cross_black_18px.svg +88 -88
  2. package/assets/icons/place_blue_36px.svg +55 -55
  3. package/assets/icons/place_green_36px.svg +55 -55
  4. package/assets/icons/place_red_36px.svg +55 -55
  5. package/assets/icons/place_yellow_36px.svg +55 -55
  6. package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +18 -14
  7. package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +67 -29
  8. package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +25 -22
  9. package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +1 -1
  10. package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +2 -2
  11. package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +2 -2
  12. package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +7 -12
  13. package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +1 -1
  14. package/esm2020/lib/catalog/catalog.module.mjs +1 -1
  15. package/esm2020/lib/catalog/shared/catalog.abstract.mjs +1 -1
  16. package/esm2020/lib/catalog/shared/catalog.enum.mjs +1 -1
  17. package/esm2020/lib/catalog/shared/catalog.interface.mjs +1 -1
  18. package/esm2020/lib/catalog/shared/catalog.service.mjs +3 -5
  19. package/esm2020/lib/datasource/datasource.module.mjs +1 -1
  20. package/esm2020/lib/datasource/shared/capabilities.service.mjs +2 -2
  21. package/esm2020/lib/datasource/shared/datasource.service.mjs +27 -31
  22. package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  23. package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
  24. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +1 -1
  25. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
  26. package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
  27. package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
  28. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  29. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
  30. package/esm2020/lib/datasource/shared/datasources/data.service.mjs +1 -1
  31. package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  32. package/esm2020/lib/datasource/shared/datasources/datasource.mjs +1 -1
  33. package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  34. package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
  35. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  36. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
  37. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
  38. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
  39. package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
  40. package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
  41. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
  42. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
  43. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  44. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
  45. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
  46. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  47. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  48. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
  49. package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +1 -1
  50. package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  51. package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
  52. package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  53. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  54. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  55. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  56. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  57. package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +1 -1
  58. package/esm2020/lib/datasource/shared/options/options-api.service.mjs +1 -1
  59. package/esm2020/lib/datasource/shared/options/options.service.mjs +1 -1
  60. package/esm2020/lib/datasource/utils/index.mjs +1 -2
  61. package/esm2020/lib/datasource/utils/tilegrid.mjs +1 -1
  62. package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +4 -10
  63. package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +2 -2
  64. package/esm2020/lib/directions/directions-results/directions-results.component.mjs +2 -2
  65. package/esm2020/lib/directions/directions-sources/directions-source.mjs +1 -1
  66. package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +1 -1
  67. package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
  68. package/esm2020/lib/directions/directions.component.mjs +2 -2
  69. package/esm2020/lib/directions/directions.module.mjs +1 -1
  70. package/esm2020/lib/directions/shared/directions-source.service.mjs +1 -1
  71. package/esm2020/lib/directions/shared/directions.interface.mjs +1 -1
  72. package/esm2020/lib/directions/shared/directions.service.mjs +1 -1
  73. package/esm2020/lib/directions/shared/directions.utils.mjs +2 -2
  74. package/esm2020/lib/directions/shared/store.mjs +1 -1
  75. package/esm2020/lib/download/download-button/download-button.component.mjs +2 -2
  76. package/esm2020/lib/download/download.module.mjs +1 -1
  77. package/esm2020/lib/download/shared/download.interface.mjs +1 -1
  78. package/esm2020/lib/download/shared/download.service.mjs +5 -8
  79. package/esm2020/lib/draw/draw/draw-layer-popup.component.mjs +2 -2
  80. package/esm2020/lib/draw/draw/draw-popup.component.mjs +3 -3
  81. package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +2 -2
  82. package/esm2020/lib/draw/draw/draw.component.mjs +11 -10
  83. package/esm2020/lib/draw/draw/draw.module.mjs +1 -1
  84. package/esm2020/lib/draw/drawingTool.module.mjs +1 -1
  85. package/esm2020/lib/draw/shared/draw-icon.service.mjs +1 -1
  86. package/esm2020/lib/draw/shared/draw.enum.mjs +1 -17
  87. package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
  88. package/esm2020/lib/draw/shared/draw.utils.mjs +1 -1
  89. package/esm2020/lib/draw/shared/index.mjs +1 -2
  90. package/esm2020/lib/feature/feature-details/feature-details.component.mjs +4 -5
  91. package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +1 -1
  92. package/esm2020/lib/feature/feature-details/feature-details.module.mjs +1 -1
  93. package/esm2020/lib/feature/feature-form/feature-form.component.mjs +2 -2
  94. package/esm2020/lib/feature/feature-form/feature-form.module.mjs +1 -1
  95. package/esm2020/lib/feature/feature.module.mjs +1 -1
  96. package/esm2020/lib/feature/shared/feature.interfaces.mjs +1 -1
  97. package/esm2020/lib/feature/shared/feature.utils.mjs +7 -5
  98. package/esm2020/lib/feature/shared/store.mjs +10 -1
  99. package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
  100. package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +1 -1
  101. package/esm2020/lib/feature/shared/strategies/index.mjs +2 -1
  102. package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +1 -1
  103. package/esm2020/lib/feature/shared/strategies/loading.mjs +1 -1
  104. package/esm2020/lib/feature/shared/strategies/search.mjs +150 -0
  105. package/esm2020/lib/feature/shared/strategies/selection.mjs +1 -1
  106. package/esm2020/lib/feature/shared/strategies.utils.mjs +1 -1
  107. package/esm2020/lib/filter/filter.module.mjs +1 -1
  108. package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +2 -2
  109. package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +2 -2
  110. package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +2 -2
  111. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +2 -2
  112. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +2 -2
  113. package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +2 -2
  114. package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +2 -2
  115. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +1 -1
  116. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +2 -2
  117. package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +1 -1
  118. package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +1 -1
  119. package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +1 -1
  120. package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  121. package/esm2020/lib/filter/shared/ogc-filter.mjs +1 -1
  122. package/esm2020/lib/filter/shared/ogc-filter.service.mjs +1 -1
  123. package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +1 -1
  124. package/esm2020/lib/filter/shared/spatial-filter.service.mjs +1 -1
  125. package/esm2020/lib/filter/shared/time-filter.enum.mjs +1 -1
  126. package/esm2020/lib/filter/shared/time-filter.interface.mjs +1 -1
  127. package/esm2020/lib/filter/shared/time-filter.service.mjs +1 -1
  128. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +5 -5
  129. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +6 -7
  130. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +2 -2
  131. package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
  132. package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +2 -2
  133. package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
  134. package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +1 -1
  135. package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +2 -2
  136. package/esm2020/lib/geo.module.mjs +5 -1
  137. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +13 -12
  138. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +2 -2
  139. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +1 -1
  140. package/esm2020/lib/geometry/geometry.module.mjs +1 -1
  141. package/esm2020/lib/geometry/shared/controls/draw.mjs +1 -1
  142. package/esm2020/lib/geometry/shared/controls/modify.mjs +1 -1
  143. package/esm2020/lib/geometry/shared/controls/slice.mjs +1 -1
  144. package/esm2020/lib/geometry/shared/geometry.errors.mjs +1 -1
  145. package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +1 -1
  146. package/esm2020/lib/geometry/shared/geometry.utils.mjs +1 -1
  147. package/esm2020/lib/import-export/export-button/export-button.component.mjs +2 -2
  148. package/esm2020/lib/import-export/import-export/import-export.component.mjs +53 -45
  149. package/esm2020/lib/import-export/import-export.module.mjs +5 -9
  150. package/esm2020/lib/import-export/index.mjs +1 -2
  151. package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +31 -14
  152. package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
  153. package/esm2020/lib/import-export/shared/export.service.mjs +3 -3
  154. package/esm2020/lib/import-export/shared/export.type.mjs +1 -1
  155. package/esm2020/lib/import-export/shared/export.utils.mjs +8 -17
  156. package/esm2020/lib/import-export/shared/import.errors.mjs +1 -1
  157. package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
  158. package/esm2020/lib/import-export/shared/import.service.mjs +1 -1
  159. package/esm2020/lib/import-export/shared/import.utils.mjs +58 -91
  160. package/esm2020/lib/layer/index.mjs +1 -2
  161. package/esm2020/lib/layer/layer-item/layer-item.component.mjs +2 -2
  162. package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +3 -3
  163. package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +2 -2
  164. package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +1 -1
  165. package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +2 -2
  166. package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +1 -1
  167. package/esm2020/lib/layer/layer-list/layer-list.component.mjs +2 -2
  168. package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +1 -1
  169. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +2 -2
  170. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +1 -1
  171. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +1 -1
  172. package/esm2020/lib/layer/layer.module.mjs +6 -11
  173. package/esm2020/lib/layer/shared/clusterParam.mjs +1 -1
  174. package/esm2020/lib/layer/shared/index.mjs +1 -3
  175. package/esm2020/lib/layer/shared/layer.service.mjs +80 -29
  176. package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  177. package/esm2020/lib/layer/shared/layers/any-layer.mjs +1 -1
  178. package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  179. package/esm2020/lib/layer/shared/layers/image-layer.mjs +6 -7
  180. package/esm2020/lib/layer/shared/layers/layer.interface.mjs +1 -1
  181. package/esm2020/lib/layer/shared/layers/layer.mjs +5 -3
  182. package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
  183. package/esm2020/lib/layer/shared/layers/tile-layer.mjs +1 -1
  184. package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
  185. package/esm2020/lib/layer/shared/layers/vector-layer.mjs +153 -6
  186. package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
  187. package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
  188. package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +2 -2
  189. package/esm2020/lib/layer/utils/image-watcher.mjs +3 -6
  190. package/esm2020/lib/layer/utils/layer.utils.mjs +2 -2
  191. package/esm2020/lib/layer/utils/outputLegend.mjs +3 -2
  192. package/esm2020/lib/layer/utils/tile-watcher.mjs +1 -1
  193. package/esm2020/lib/layer/utils/vector-watcher.mjs +1 -1
  194. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +1 -1
  195. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +2 -2
  196. package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +17 -8
  197. package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +2 -2
  198. package/esm2020/lib/map/info-section/info-section.component.mjs +2 -2
  199. package/esm2020/lib/map/map-browser/map-browser.component.mjs +3 -3
  200. package/esm2020/lib/map/map-center/map-center.component.mjs +2 -2
  201. package/esm2020/lib/map/map.module.mjs +1 -1
  202. package/esm2020/lib/map/menu-button/menu-button.component.mjs +3 -3
  203. package/esm2020/lib/map/offline-button/offline-button.component.mjs +34 -57
  204. package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +2 -2
  205. package/esm2020/lib/map/shared/controllers/controller.mjs +1 -1
  206. package/esm2020/lib/map/shared/controllers/geolocation.mjs +151 -36
  207. package/esm2020/lib/map/shared/controllers/view.mjs +1 -1
  208. package/esm2020/lib/map/shared/hover-feature.directive.mjs +24 -73
  209. package/esm2020/lib/map/shared/linkedLayers.utils.mjs +3 -3
  210. package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +1 -1
  211. package/esm2020/lib/map/shared/map.interface.mjs +1 -1
  212. package/esm2020/lib/map/shared/map.mjs +7 -5
  213. package/esm2020/lib/map/shared/map.service.mjs +1 -1
  214. package/esm2020/lib/map/shared/map.utils.mjs +2 -1
  215. package/esm2020/lib/map/shared/mapOffline.directive.mjs +50 -115
  216. package/esm2020/lib/map/shared/projection.interfaces.mjs +1 -1
  217. package/esm2020/lib/map/shared/projection.service.mjs +1 -1
  218. package/esm2020/lib/map/shared/projection.utils.mjs +1 -1
  219. package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +3 -3
  220. package/esm2020/lib/map/utils/layer-watcher.mjs +1 -1
  221. package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +24 -35
  222. package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +2 -2
  223. package/esm2020/lib/measure/measure.module.mjs +1 -1
  224. package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +1 -1
  225. package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +2 -2
  226. package/esm2020/lib/measure/measurer/measurer-item.component.mjs +2 -2
  227. package/esm2020/lib/measure/measurer/measurer.component.mjs +2 -2
  228. package/esm2020/lib/measure/measurer/measurer.module.mjs +1 -1
  229. package/esm2020/lib/measure/shared/measure.enum.mjs +1 -1
  230. package/esm2020/lib/measure/shared/measure.interfaces.mjs +1 -1
  231. package/esm2020/lib/measure/shared/measure.utils.mjs +1 -1
  232. package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +3 -3
  233. package/esm2020/lib/metadata/metadata.module.mjs +1 -1
  234. package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
  235. package/esm2020/lib/metadata/shared/metadata.service.mjs +1 -1
  236. package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +4 -4
  237. package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +1 -1
  238. package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
  239. package/esm2020/lib/offline/geoDB/geoDB.service.mjs +2 -2
  240. package/esm2020/lib/offline/index.mjs +2 -1
  241. package/esm2020/lib/offline/layerDB/index.mjs +3 -0
  242. package/esm2020/lib/offline/layerDB/layerDB.interface.mjs +2 -0
  243. package/esm2020/lib/offline/layerDB/layerDB.service.mjs +76 -0
  244. package/esm2020/lib/offline/shared/geo-network.service.mjs +1 -1
  245. package/esm2020/lib/overlay/overlay.module.mjs +1 -1
  246. package/esm2020/lib/overlay/shared/index.mjs +1 -2
  247. package/esm2020/lib/overlay/shared/overlay.directive.mjs +1 -1
  248. package/esm2020/lib/overlay/shared/overlay.enum.mjs +1 -1
  249. package/esm2020/lib/overlay/shared/overlay.mjs +1 -1
  250. package/esm2020/lib/overlay/shared/overlay.service.mjs +1 -1
  251. package/esm2020/lib/overlay/shared/overlay.utils.mjs +2 -88
  252. package/esm2020/lib/print/print/print.component.mjs +7 -18
  253. package/esm2020/lib/print/print-form/print-form.component.mjs +210 -101
  254. package/esm2020/lib/print/print.module.mjs +1 -1
  255. package/esm2020/lib/print/shared/geopdf.mjs +1 -1
  256. package/esm2020/lib/print/shared/index.mjs +1 -1
  257. package/esm2020/lib/print/shared/print.interface.mjs +1 -1
  258. package/esm2020/lib/print/shared/print.service.mjs +179 -56
  259. package/esm2020/lib/print/shared/print.type.mjs +1 -1
  260. package/esm2020/lib/query/query.module.mjs +1 -1
  261. package/esm2020/lib/query/shared/query-search-source.mjs +1 -1
  262. package/esm2020/lib/query/shared/query-search-source.providers.mjs +1 -1
  263. package/esm2020/lib/query/shared/query.directive.mjs +1 -1
  264. package/esm2020/lib/query/shared/query.interfaces.mjs +1 -1
  265. package/esm2020/lib/query/shared/query.service.mjs +144 -32
  266. package/esm2020/lib/query/shared/query.utils.mjs +1 -1
  267. package/esm2020/lib/search/search-bar/search-bar.component.mjs +28 -9
  268. package/esm2020/lib/search/search-bar/search-bar.module.mjs +1 -1
  269. package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +1 -1
  270. package/esm2020/lib/search/search-results/save-feature-dialog.component.mjs +118 -0
  271. package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +269 -34
  272. package/esm2020/lib/search/search-results/search-results-item.component.mjs +37 -14
  273. package/esm2020/lib/search/search-results/search-results.component.mjs +172 -58
  274. package/esm2020/lib/search/search-results/search-results.module.mjs +36 -5
  275. package/esm2020/lib/search/search-selector/search-selector.component.mjs +2 -2
  276. package/esm2020/lib/search/search-selector/search-selector.module.mjs +1 -1
  277. package/esm2020/lib/search/search-settings/search-settings.component.mjs +33 -9
  278. package/esm2020/lib/search/search-settings/search-settings.module.mjs +1 -1
  279. package/esm2020/lib/search/search.module.mjs +1 -1
  280. package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +3 -30
  281. package/esm2020/lib/search/shared/search-source-service.providers.mjs +1 -1
  282. package/esm2020/lib/search/shared/search-source.service.mjs +9 -1
  283. package/esm2020/lib/search/shared/search.enums.mjs +1 -1
  284. package/esm2020/lib/search/shared/search.interfaces.mjs +1 -1
  285. package/esm2020/lib/search/shared/search.service.mjs +10 -7
  286. package/esm2020/lib/search/shared/search.utils.mjs +3 -3
  287. package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
  288. package/esm2020/lib/search/shared/sources/coordinates.mjs +17 -11
  289. package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +4 -4
  290. package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
  291. package/esm2020/lib/search/shared/sources/icherche.mjs +7 -7
  292. package/esm2020/lib/search/shared/sources/icherche.providers.mjs +1 -1
  293. package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  294. package/esm2020/lib/search/shared/sources/ilayer.mjs +4 -4
  295. package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +1 -1
  296. package/esm2020/lib/search/shared/sources/index.mjs +4 -1
  297. package/esm2020/lib/search/shared/sources/nominatim.mjs +2 -2
  298. package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +1 -1
  299. package/esm2020/lib/search/shared/sources/source.interfaces.mjs +1 -1
  300. package/esm2020/lib/search/shared/sources/source.mjs +31 -1
  301. package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
  302. package/esm2020/lib/search/shared/sources/storedqueries.mjs +1 -1
  303. package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +1 -1
  304. package/esm2020/lib/search/shared/sources/workspace.interfaces.mjs +2 -0
  305. package/esm2020/lib/search/shared/sources/workspace.mjs +186 -0
  306. package/esm2020/lib/search/shared/sources/workspace.providers.mjs +26 -0
  307. package/esm2020/lib/style/index.mjs +5 -0
  308. package/esm2020/lib/style/shared/datasource/esri-style-generator.mjs +357 -0
  309. package/esm2020/lib/style/shared/datasource/index.mjs +2 -0
  310. package/esm2020/lib/style/shared/feature/feature-style.mjs +141 -0
  311. package/esm2020/lib/style/shared/feature/index.mjs +2 -0
  312. package/esm2020/lib/style/shared/font.enum.mjs +17 -0
  313. package/esm2020/lib/style/shared/index.mjs +5 -0
  314. package/esm2020/lib/style/shared/overlay/index.mjs +3 -0
  315. package/esm2020/lib/style/shared/overlay/overlay-marker-style.utils.mjs +43 -0
  316. package/esm2020/lib/style/shared/overlay/overlay-style.utils.mjs +88 -0
  317. package/esm2020/lib/style/shared/vector/commonVectorStyle.mjs +75 -0
  318. package/esm2020/lib/style/shared/vector/conversion.utils.mjs +27 -0
  319. package/esm2020/lib/style/shared/vector/index.mjs +4 -0
  320. package/esm2020/lib/style/shared/vector/vector-style.interface.mjs +2 -0
  321. package/esm2020/lib/style/style-list/index.mjs +5 -0
  322. package/esm2020/lib/style/style-list/style-list.interface.mjs +2 -0
  323. package/esm2020/lib/style/style-list/style-list.module.mjs +23 -0
  324. package/esm2020/lib/style/style-list/style-list.provider.mjs +21 -0
  325. package/esm2020/lib/style/style-list/style-list.service.mjs +51 -0
  326. package/esm2020/lib/style/style-modal/drawing/index.mjs +2 -0
  327. package/esm2020/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +288 -0
  328. package/esm2020/lib/style/style-modal/index.mjs +5 -0
  329. package/esm2020/lib/style/style-modal/layer/index.mjs +2 -0
  330. package/esm2020/lib/style/style-modal/layer/style-modal-layer.component.mjs +187 -0
  331. package/esm2020/lib/style/style-modal/layer-button/index.mjs +2 -0
  332. package/esm2020/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +44 -0
  333. package/esm2020/lib/style/style-modal/shared/index.mjs +2 -0
  334. package/esm2020/lib/style/style-modal/shared/style-modal.interface.mjs +2 -0
  335. package/esm2020/lib/style/style-service/draw-style.service.mjs +187 -0
  336. package/esm2020/lib/style/style-service/index.mjs +3 -0
  337. package/esm2020/lib/style/style-service/style.service.mjs +356 -0
  338. package/esm2020/lib/style/style.module.mjs +74 -0
  339. package/esm2020/lib/toast/toast.component.mjs +3 -3
  340. package/esm2020/lib/toast/toast.module.mjs +1 -1
  341. package/esm2020/lib/utils/id-generator.mjs +1 -1
  342. package/esm2020/lib/utils/index.mjs +1 -3
  343. package/esm2020/lib/wkt/shared/wkt.service.mjs +15 -15
  344. package/esm2020/lib/wkt/wkt.module.mjs +1 -1
  345. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +2 -2
  346. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +1 -1
  347. package/esm2020/lib/workspace/confirmation-popup/index.mjs +1 -1
  348. package/esm2020/lib/workspace/shared/edition-workspace.mjs +1 -1
  349. package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +19 -34
  350. package/esm2020/lib/workspace/shared/feature-workspace.mjs +1 -1
  351. package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +10 -3
  352. package/esm2020/lib/workspace/shared/wfs-workspace.mjs +1 -1
  353. package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +2 -2
  354. package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +3 -3
  355. package/esm2020/lib/workspace/shared/workspace.utils.mjs +1 -1
  356. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
  357. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +1 -1
  358. package/esm2020/lib/workspace/widgets/widgets.mjs +1 -1
  359. package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +1 -1
  360. package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +1 -1
  361. package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +1 -1
  362. package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +1 -1
  363. package/esm2020/lib/workspace/workspace.module.mjs +1 -1
  364. package/esm2020/public_api.mjs +3 -1
  365. package/fesm2015/igo2-geo.mjs +7502 -5529
  366. package/fesm2015/igo2-geo.mjs.map +1 -1
  367. package/fesm2020/igo2-geo.mjs +8086 -6208
  368. package/fesm2020/igo2-geo.mjs.map +1 -1
  369. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +8 -15
  370. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +11 -7
  371. package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +3 -9
  372. package/lib/catalog/catalog-library/catalog-library.component.d.ts +2 -3
  373. package/lib/catalog/shared/catalog.interface.d.ts +10 -0
  374. package/lib/datasource/shared/datasources/datasource.interface.d.ts +13 -0
  375. package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +5 -0
  376. package/lib/datasource/utils/index.d.ts +0 -1
  377. package/lib/download/shared/download.service.d.ts +2 -3
  378. package/lib/draw/draw/draw.component.d.ts +3 -2
  379. package/lib/draw/shared/draw.enum.d.ts +0 -15
  380. package/lib/draw/shared/index.d.ts +0 -1
  381. package/lib/feature/shared/feature.interfaces.d.ts +5 -0
  382. package/lib/feature/shared/feature.utils.d.ts +4 -2
  383. package/lib/feature/shared/store.d.ts +7 -0
  384. package/lib/feature/shared/strategies/index.d.ts +1 -0
  385. package/lib/feature/shared/strategies/search.d.ts +55 -0
  386. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +2 -3
  387. package/lib/geo.module.d.ts +3 -2
  388. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +5 -9
  389. package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +3 -3
  390. package/lib/import-export/import-export/import-export.component.d.ts +9 -4
  391. package/lib/import-export/import-export.module.d.ts +1 -2
  392. package/lib/import-export/index.d.ts +0 -1
  393. package/lib/import-export/shared/drop-geo-file.directive.d.ts +10 -7
  394. package/lib/import-export/shared/export.service.d.ts +1 -1
  395. package/lib/import-export/shared/export.utils.d.ts +4 -4
  396. package/lib/import-export/shared/import.interface.d.ts +2 -0
  397. package/lib/import-export/shared/import.utils.d.ts +14 -12
  398. package/lib/layer/index.d.ts +0 -1
  399. package/lib/layer/layer.module.d.ts +19 -20
  400. package/lib/layer/shared/index.d.ts +0 -2
  401. package/lib/layer/shared/layer.service.d.ts +8 -5
  402. package/lib/layer/shared/layers/image-layer.d.ts +2 -3
  403. package/lib/layer/shared/layers/layer.d.ts +5 -1
  404. package/lib/layer/shared/layers/layer.interface.d.ts +2 -0
  405. package/lib/layer/shared/layers/vector-layer.d.ts +18 -2
  406. package/lib/layer/shared/layers/vector-layer.interface.d.ts +8 -7
  407. package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +2 -4
  408. package/lib/layer/utils/image-watcher.d.ts +2 -3
  409. package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +7 -4
  410. package/lib/map/offline-button/offline-button.component.d.ts +10 -18
  411. package/lib/map/shared/controllers/geolocation.d.ts +17 -2
  412. package/lib/map/shared/hover-feature.directive.d.ts +2 -10
  413. package/lib/map/shared/map.d.ts +2 -2
  414. package/lib/map/shared/map.utils.d.ts +1 -0
  415. package/lib/map/shared/mapOffline.directive.d.ts +4 -7
  416. package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +3 -6
  417. package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
  418. package/lib/offline/index.d.ts +1 -0
  419. package/lib/offline/layerDB/index.d.ts +2 -0
  420. package/lib/offline/layerDB/layerDB.interface.d.ts +7 -0
  421. package/lib/offline/layerDB/layerDB.service.d.ts +36 -0
  422. package/lib/overlay/shared/index.d.ts +0 -1
  423. package/lib/overlay/shared/overlay.utils.d.ts +0 -11
  424. package/lib/print/print-form/print-form.component.d.ts +2 -0
  425. package/lib/print/shared/print.service.d.ts +16 -1
  426. package/lib/query/shared/query.interfaces.d.ts +8 -1
  427. package/lib/query/shared/query.service.d.ts +5 -3
  428. package/lib/search/search-bar/search-bar.component.d.ts +12 -2
  429. package/lib/search/search-results/save-feature-dialog.component.d.ts +32 -0
  430. package/lib/search/search-results/search-results-add-button.component.d.ts +28 -2
  431. package/lib/search/search-results/search-results-item.component.d.ts +5 -1
  432. package/lib/search/search-results/search-results.component.d.ts +5 -1
  433. package/lib/search/search-results/search-results.module.d.ts +18 -10
  434. package/lib/search/search-settings/search-settings.component.d.ts +7 -1
  435. package/lib/search/shared/search-pointer-summary.directive.d.ts +0 -9
  436. package/lib/search/shared/search-source.service.d.ts +7 -0
  437. package/lib/search/shared/search.interfaces.d.ts +1 -1
  438. package/lib/search/shared/search.service.d.ts +3 -1
  439. package/lib/search/shared/sources/coordinates.d.ts +1 -1
  440. package/lib/search/shared/sources/coordinates.providers.d.ts +3 -3
  441. package/lib/search/shared/sources/index.d.ts +3 -0
  442. package/lib/search/shared/sources/source.d.ts +7 -1
  443. package/lib/search/shared/sources/workspace.d.ts +33 -0
  444. package/lib/search/shared/sources/workspace.interfaces.d.ts +9 -0
  445. package/lib/search/shared/sources/workspace.providers.d.ts +17 -0
  446. package/lib/style/index.d.ts +4 -0
  447. package/lib/style/shared/datasource/index.d.ts +1 -0
  448. package/lib/style/shared/feature/feature-style.d.ts +18 -0
  449. package/lib/style/shared/feature/index.d.ts +1 -0
  450. package/lib/style/shared/font.enum.d.ts +15 -0
  451. package/lib/style/shared/index.d.ts +4 -0
  452. package/lib/style/shared/overlay/index.d.ts +2 -0
  453. package/lib/style/shared/overlay/overlay-style.utils.d.ts +19 -0
  454. package/lib/{utils → style/shared/vector}/commonVectorStyle.d.ts +4 -4
  455. package/lib/style/shared/vector/conversion.utils.d.ts +22 -0
  456. package/lib/style/shared/vector/index.d.ts +3 -0
  457. package/lib/style/shared/vector/vector-style.interface.d.ts +69 -0
  458. package/lib/style/style-modal/drawing/index.d.ts +1 -0
  459. package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +31 -0
  460. package/lib/style/style-modal/index.d.ts +4 -0
  461. package/lib/style/style-modal/layer/index.d.ts +1 -0
  462. package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +30 -0
  463. package/lib/style/style-modal/layer-button/index.d.ts +1 -0
  464. package/lib/style/style-modal/layer-button/style-modal-layer-button.component.d.ts +14 -0
  465. package/lib/style/style-modal/shared/index.d.ts +1 -0
  466. package/lib/style/style-modal/shared/style-modal.interface.d.ts +17 -0
  467. package/lib/{draw/shared → style/style-service}/draw-style.service.d.ts +3 -4
  468. package/lib/style/style-service/index.d.ts +2 -0
  469. package/lib/{layer/shared → style/style-service}/style.service.d.ts +5 -5
  470. package/lib/style/style.module.d.ts +22 -0
  471. package/lib/utils/index.d.ts +0 -2
  472. package/lib/workspace/shared/edition-workspace.service.d.ts +3 -4
  473. package/lib/workspace/shared/wms-workspace.service.d.ts +1 -1
  474. package/ngcc.config.js +3 -3
  475. package/package.json +17 -11
  476. package/public_api.d.ts +2 -0
  477. package/style/geo.theming.scss +12 -12
  478. package/esm2020/lib/datasource/utils/esri-style-generator.mjs +0 -357
  479. package/esm2020/lib/draw/shared/draw-style.service.mjs +0 -190
  480. package/esm2020/lib/import-export/style-list/index.mjs +0 -5
  481. package/esm2020/lib/import-export/style-list/style-list.interface.mjs +0 -2
  482. package/esm2020/lib/import-export/style-list/style-list.module.mjs +0 -23
  483. package/esm2020/lib/import-export/style-list/style-list.provider.mjs +0 -21
  484. package/esm2020/lib/import-export/style-list/style-list.service.mjs +0 -51
  485. package/esm2020/lib/layer/shared/style.service.mjs +0 -356
  486. package/esm2020/lib/layer/shared/vector-style.interface.mjs +0 -2
  487. package/esm2020/lib/layer/style-modal/index.mjs +0 -2
  488. package/esm2020/lib/layer/style-modal/style-modal.component.mjs +0 -288
  489. package/esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs +0 -69
  490. package/esm2020/lib/utils/commonVectorStyle.interface.mjs +0 -2
  491. package/esm2020/lib/utils/commonVectorStyle.mjs +0 -75
  492. package/lib/layer/shared/vector-style.interface.d.ts +0 -38
  493. package/lib/layer/style-modal/index.d.ts +0 -1
  494. package/lib/layer/style-modal/style-modal.component.d.ts +0 -42
  495. package/lib/utils/commonVectorStyle.interface.d.ts +0 -16
  496. /package/lib/{datasource/utils → style/shared/datasource}/esri-style-generator.d.ts +0 -0
  497. /package/lib/{overlay/shared → style/shared/overlay}/overlay-marker-style.utils.d.ts +0 -0
  498. /package/lib/{import-export → style}/style-list/index.d.ts +0 -0
  499. /package/lib/{import-export → style}/style-list/style-list.interface.d.ts +0 -0
  500. /package/lib/{import-export → style}/style-list/style-list.module.d.ts +0 -0
  501. /package/lib/{import-export → style}/style-list/style-list.provider.d.ts +0 -0
  502. /package/lib/{import-export → style}/style-list/style-list.service.d.ts +0 -0
@@ -33,7 +33,7 @@ function CatalogBrowserGroupComponent_ng_container_5_Template(rf, ctx) { if (rf
33
33
  const _r9 = i0.ɵɵgetCurrentView();
34
34
  i0.ɵɵelementContainerStart(0);
35
35
  i0.ɵɵelementStart(1, "button", 10);
36
- i0.ɵɵlistener("click", function CatalogBrowserGroupComponent_ng_container_5_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.onToggleClick()); });
36
+ i0.ɵɵlistener("click", function CatalogBrowserGroupComponent_ng_container_5_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.onToggleClick($event)); });
37
37
  i0.ɵɵpipe(2, "translate");
38
38
  i0.ɵɵpipe(3, "async");
39
39
  i0.ɵɵelement(4, "mat-icon", 11);
@@ -47,7 +47,7 @@ function CatalogBrowserGroupComponent_ng_container_5_Template(rf, ctx) { if (rf
47
47
  function CatalogBrowserGroupComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
48
48
  const _r11 = i0.ɵɵgetCurrentView();
49
49
  i0.ɵɵelementStart(0, "button", 12);
50
- i0.ɵɵlistener("click", function CatalogBrowserGroupComponent_ng_template_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.onToggleClick()); });
50
+ i0.ɵɵlistener("click", function CatalogBrowserGroupComponent_ng_template_8_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.onToggleClick($event)); });
51
51
  i0.ɵɵpipe(1, "translate");
52
52
  i0.ɵɵpipe(2, "async");
53
53
  i0.ɵɵelement(3, "mat-icon", 13);
@@ -70,11 +70,11 @@ function CatalogBrowserGroupComponent_ng_template_12_ng_container_1_Template(rf,
70
70
  const item_r12 = i0.ɵɵnextContext().$implicit;
71
71
  const ctx_r14 = i0.ɵɵnextContext();
72
72
  i0.ɵɵadvance(1);
73
- i0.ɵɵproperty("layer", item_r12)("resolution", ctx_r14.resolution)("catalogAllowLegend", ctx_r14.catalogAllowLegend)("added", ctx_r14.state.get(item_r12).added);
73
+ i0.ɵɵproperty("layer", item_r12)("resolution", ctx_r14.resolution)("map", ctx_r14.map)("catalogAllowLegend", ctx_r14.catalogAllowLegend)("added", ctx_r14.state.get(item_r12).added);
74
74
  } }
75
75
  function CatalogBrowserGroupComponent_ng_template_12_Template(rf, ctx) { if (rf & 1) {
76
76
  i0.ɵɵtemplate(0, CatalogBrowserGroupComponent_ng_template_12_ng_container_0_Template, 1, 0, "ng-container", 14);
77
- i0.ɵɵtemplate(1, CatalogBrowserGroupComponent_ng_template_12_ng_container_1_Template, 2, 4, "ng-container", 14);
77
+ i0.ɵɵtemplate(1, CatalogBrowserGroupComponent_ng_template_12_ng_container_1_Template, 2, 5, "ng-container", 14);
78
78
  } if (rf & 2) {
79
79
  const item_r12 = ctx.$implicit;
80
80
  const ctx_r5 = i0.ɵɵnextContext();
@@ -160,8 +160,8 @@ export class CatalogBrowserGroupComponent {
160
160
  * On toggle button click, emit the added change event
161
161
  * @internal
162
162
  */
163
- onToggleClick() {
164
- this.added$.value ? this.remove() : this.add();
163
+ onToggleClick(event) {
164
+ this.added$.value ? this.remove(event) : this.add(event);
165
165
  }
166
166
  /**
167
167
  * On toggle button click, emit the added change event
@@ -184,21 +184,23 @@ export class CatalogBrowserGroupComponent {
184
184
  /**
185
185
  * Emit added change event with added = true
186
186
  */
187
- add() {
187
+ add(event) {
188
188
  this.added$.next(true);
189
189
  this.addedChange.emit({
190
190
  added: true,
191
- group: this.group
191
+ group: this.group,
192
+ event
192
193
  });
193
194
  }
194
195
  /**
195
196
  * Emit added change event with added = true
196
197
  */
197
- remove() {
198
+ remove(event) {
198
199
  this.added$.next(false);
199
200
  this.addedChange.emit({
200
201
  added: false,
201
- group: this.group
202
+ group: this.group,
203
+ event
202
204
  });
203
205
  }
204
206
  onLayerPreview(event) {
@@ -216,7 +218,7 @@ export class CatalogBrowserGroupComponent {
216
218
  .filter((item) => item.id !== layer.id)
217
219
  .map((item) => this.state.get(item).added || false);
218
220
  if (layersAdded.every(value => value === added)) {
219
- added ? this.add() : this.remove();
221
+ added ? this.add(event.event) : this.remove(event.event);
220
222
  }
221
223
  else if (this.added$.value === true) {
222
224
  this.added$.next(false);
@@ -240,7 +242,7 @@ export class CatalogBrowserGroupComponent {
240
242
  }
241
243
  }
242
244
  CatalogBrowserGroupComponent.ɵfac = function CatalogBrowserGroupComponent_Factory(t) { return new (t || CatalogBrowserGroupComponent)(); };
243
- CatalogBrowserGroupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogBrowserGroupComponent, selectors: [["igo-catalog-browser-group"]], inputs: { catalog: "catalog", group: "group", collapsed: "collapsed", resolution: "resolution", catalogAllowLegend: "catalogAllowLegend", toggleCollapsed: "toggleCollapsed", state: "state" }, outputs: { addedChange: "addedChange", layerAddedChange: "layerAddedChange" }, decls: 14, vars: 14, consts: [["mat-list-avatar", "", "svgIcon", "chevron-up", "igoCollapse", "", 1, "igo-chevron", 3, "target", "collapsed", "toggle"], ["id", "catalog-group-title", "mat-line", "", "matTooltipShowDelay", "500", 1, "igo-catalog-group-title", 3, "matTooltip", "click"], ["disabled", "true", "mat-icon-button", "", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["notadded", ""], ["items", ""], ["ngFor", "", 3, "ngForOf"], ["disabled", "true", "mat-icon-button", ""], ["class", "igo-cataloggroup-external-icon", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 3, "matTooltip", "click", 4, "ngIf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 1, "igo-cataloggroup-external-icon", 3, "matTooltip", "click"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", "disabled", "click"], ["svgIcon", "delete"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "disabled", "click"], ["svgIcon", "plus"], [4, "ngIf"], ["igoListItem", "", 3, "layer", "resolution", "catalogAllowLegend", "added", "addedLayerIsPreview", "addedChange"]], template: function CatalogBrowserGroupComponent_Template(rf, ctx) { if (rf & 1) {
245
+ CatalogBrowserGroupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogBrowserGroupComponent, selectors: [["igo-catalog-browser-group"]], inputs: { catalog: "catalog", group: "group", map: "map", collapsed: "collapsed", resolution: "resolution", catalogAllowLegend: "catalogAllowLegend", toggleCollapsed: "toggleCollapsed", state: "state" }, outputs: { addedChange: "addedChange", layerAddedChange: "layerAddedChange" }, decls: 14, vars: 14, consts: [["mat-list-avatar", "", "svgIcon", "chevron-up", "igoCollapse", "", 1, "igo-chevron", 3, "target", "collapsed", "toggle"], ["id", "catalog-group-title", "mat-line", "", "matTooltipShowDelay", "500", 1, "igo-catalog-group-title", 3, "matTooltip", "click"], ["disabled", "true", "mat-icon-button", "", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["notadded", ""], ["items", ""], ["ngFor", "", 3, "ngForOf"], ["disabled", "true", "mat-icon-button", ""], ["class", "igo-cataloggroup-external-icon", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 3, "matTooltip", "click", 4, "ngIf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 1, "igo-cataloggroup-external-icon", 3, "matTooltip", "click"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "warn", 3, "matTooltip", "disabled", "click"], ["svgIcon", "delete"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "disabled", "click"], ["svgIcon", "plus"], [4, "ngIf"], ["igoListItem", "", 3, "layer", "resolution", "map", "catalogAllowLegend", "added", "addedLayerIsPreview", "addedChange"]], template: function CatalogBrowserGroupComponent_Template(rf, ctx) { if (rf & 1) {
244
246
  i0.ɵɵelementStart(0, "mat-list-item")(1, "mat-icon", 0);
245
247
  i0.ɵɵlistener("toggle", function CatalogBrowserGroupComponent_Template_mat_icon_toggle_1_listener($event) { return ctx.onToggleCollapsed($event); });
246
248
  i0.ɵɵelementEnd();
@@ -276,11 +278,13 @@ CatalogBrowserGroupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
276
278
  } }, dependencies: [i1.NgForOf, i1.NgIf, i2.MatButton, i3.MatIcon, i4.MatListItem, i4.MatListAvatarCssMatStyler, i5.MatLine, i6.MatTooltip, i7.ListItemDirective, i7.CollapseDirective, i8.CatalogBrowserLayerComponent, i1.AsyncPipe, i9.TranslatePipe], styles: [".igo-catalog-group-title[_ngcontent-%COMP%]{cursor:pointer;opacity:.9}#catalog-group-title[_ngcontent-%COMP%]{font-weight:700}.igo-cataloggroup-external-icon[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
277
279
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogBrowserGroupComponent, [{
278
280
  type: Component,
279
- args: [{ selector: 'igo-catalog-browser-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\n <mat-icon\n mat-list-avatar\n svgIcon=\"chevron-up\"\n igoCollapse\n class=\"igo-chevron\"\n [target]=\"items\"\n [collapsed]=\"collapsed\"\n (toggle)=\"onToggleCollapsed($event)\">\n </mat-icon>\n\n <h4 class=\"igo-catalog-group-title\" id=\"catalog-group-title\" mat-line matTooltipShowDelay=\"500\" [matTooltip]=\"title\" (click)=\"onTitleClick()\">{{title}}</h4>\n\n <button *ngIf=\"group.externalProvider\"\n disabled=\"true\"\n mat-icon-button>\n <mat-icon\n class=\"igo-cataloggroup-external-icon\"\n *ngIf=\"group.externalProvider\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.externalProvider.group' | translate\"\n color=\"primary\"\n (click)=\"$event.stopPropagation()\"\n svgIcon=\"earth-arrow-right\">\n </mat-icon>\n </button>\n\n <ng-container *ngIf=\"(added$ | async) && (preview$ | async) === false; else notadded\">\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.group.removeFromMap' | translate\"\n color=\"warn\"\n [disabled]=\"disabled$ | async\"\n (click)=\"onToggleClick()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n </ng-container>\n\n <ng-template #notadded>\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.group.addToMap' | translate\"\n [disabled]=\"disabled$ | async\"\n (click)=\"onToggleClick()\">\n <mat-icon svgIcon=\"plus\"></mat-icon>\n </button>\n </ng-template>\n</mat-list-item>\n\n<div #items>\n <ng-template ngFor let-item [ngForOf]=\"store.view.all$() | async\">\n <ng-container *ngIf=\"isGroup(item)\">\n <!-- todo: add display ans manage CatalogItemGroup -->\n </ng-container>\n <ng-container *ngIf=\"isLayer(item)\">\n <igo-catalog-browser-layer\n igoListItem\n [layer]=\"item\"\n [resolution]=\"resolution\"\n [catalogAllowLegend]=\"catalogAllowLegend\"\n [added]=\"state.get(item).added\"\n (addedLayerIsPreview)=\"onLayerPreview($event)\"\n (addedChange)=\"onLayerAddedChange($event)\">\n </igo-catalog-browser-layer>\n </ng-container>\n </ng-template>\n</div>\n", styles: [".igo-catalog-group-title{cursor:pointer;opacity:.9}#catalog-group-title{font-weight:700}.igo-cataloggroup-external-icon{cursor:help}\n"] }]
281
+ args: [{ selector: 'igo-catalog-browser-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\r\n <mat-icon\r\n mat-list-avatar\r\n svgIcon=\"chevron-up\"\r\n igoCollapse\r\n class=\"igo-chevron\"\r\n [target]=\"items\"\r\n [collapsed]=\"collapsed\"\r\n (toggle)=\"onToggleCollapsed($event)\">\r\n </mat-icon>\r\n\r\n <h4 class=\"igo-catalog-group-title\" id=\"catalog-group-title\" mat-line matTooltipShowDelay=\"500\" [matTooltip]=\"title\" (click)=\"onTitleClick()\">{{title}}</h4>\r\n\r\n <button *ngIf=\"group.externalProvider\"\r\n disabled=\"true\"\r\n mat-icon-button>\r\n <mat-icon\r\n class=\"igo-cataloggroup-external-icon\"\r\n *ngIf=\"group.externalProvider\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.catalog.externalProvider.group' | translate\"\r\n color=\"primary\"\r\n (click)=\"$event.stopPropagation()\"\r\n svgIcon=\"earth-arrow-right\">\r\n </mat-icon>\r\n </button>\r\n\r\n <ng-container *ngIf=\"(added$ | async) && (preview$ | async) === false; else notadded\">\r\n <button\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.catalog.group.removeFromMap' | translate\"\r\n color=\"warn\"\r\n [disabled]=\"disabled$ | async\"\r\n (click)=\"onToggleClick($event)\">\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-template #notadded>\r\n <button\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.catalog.group.addToMap' | translate\"\r\n [disabled]=\"disabled$ | async\"\r\n (click)=\"onToggleClick($event)\">\r\n <mat-icon svgIcon=\"plus\"></mat-icon>\r\n </button>\r\n </ng-template>\r\n</mat-list-item>\r\n\r\n<div #items>\r\n <ng-template ngFor let-item [ngForOf]=\"store.view.all$() | async\">\r\n <ng-container *ngIf=\"isGroup(item)\">\r\n <!-- todo: add display ans manage CatalogItemGroup -->\r\n </ng-container>\r\n <ng-container *ngIf=\"isLayer(item)\">\r\n <igo-catalog-browser-layer\r\n igoListItem\r\n [layer]=\"item\"\r\n [resolution]=\"resolution\"\r\n [map]=\"map\"\r\n [catalogAllowLegend]=\"catalogAllowLegend\"\r\n [added]=\"state.get(item).added\"\r\n (addedLayerIsPreview)=\"onLayerPreview($event)\"\r\n (addedChange)=\"onLayerAddedChange($event)\">\r\n </igo-catalog-browser-layer>\r\n </ng-container>\r\n </ng-template>\r\n</div>\r\n", styles: [".igo-catalog-group-title{cursor:pointer;opacity:.9}#catalog-group-title{font-weight:700}.igo-cataloggroup-external-icon{cursor:help}\n"] }]
280
282
  }], null, { catalog: [{
281
283
  type: Input
282
284
  }], group: [{
283
285
  type: Input
286
+ }], map: [{
287
+ type: Input
284
288
  }], collapsed: [{
285
289
  type: Input
286
290
  }], resolution: [{
@@ -296,4 +300,4 @@ CatalogBrowserGroupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
296
300
  }], layerAddedChange: [{
297
301
  type: Output
298
302
  }] }); })();
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1icm93c2VyLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2NhdGFsb2cvY2F0YWxvZy1icm93c2VyL2NhdGFsb2ctYnJvd3Nlci1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9jYXRhbG9nL2NhdGFsb2ctYnJvd3Nlci9jYXRhbG9nLWJyb3dzZXItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFHeEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzNDLE9BQU8sRUFNTCxlQUFlLEVBQ2hCLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7Ozs7SUNOZixtQ0FROEI7SUFENUIscUlBQVMsd0JBQXdCLElBQUM7O0lBRXBDLGlCQUFXOztJQUpULDJGQUFtRTs7O0lBUnZFLGlDQUVrQjtJQUNoQixnR0FTVztJQUNiLGlCQUFTOzs7SUFSSixlQUE0QjtJQUE1QixvREFBNEI7Ozs7SUFVakMsNkJBQXNGO0lBQ3BGLGtDQU80QjtJQUExQixrTEFBUyxlQUFBLHNCQUFlLENBQUEsSUFBQzs7O0lBQ3pCLCtCQUFzQztJQUN4QyxpQkFBUztJQUNYLDBCQUFlOzs7SUFOWCxlQUFnRTtJQUFoRSx3RkFBZ0Usb0RBQUE7Ozs7SUFTbEUsa0NBTTRCO0lBQTFCLG1MQUFTLGVBQUEsdUJBQWUsQ0FBQSxJQUFDOzs7SUFDekIsK0JBQW9DO0lBQ3RDLGlCQUFTOzs7SUFKUCxtRkFBMkQsb0RBQUE7OztJQVU3RCx3QkFFZTs7OztJ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OEhBVWM7UUFDaEIsaUJBQWdCO1FBRWhCLHFDQUFZO1FBQ1YsK0ZBZWM7O1FBQ2hCLGlCQUFNOzs7O1FBakVGLGVBQWdCO1FBQWhCLDRCQUFnQiw0QkFBQTtRQUs4RSxlQUFvQjtRQUFwQixzQ0FBb0I7UUFBMEIsZUFBUztRQUFULCtCQUFTO1FBRTlJLGVBQTRCO1FBQTVCLGlEQUE0QjtRQWV0QixlQUF3RDtRQUF4RCx3R0FBd0QsaUJBQUE7UUEyQjNDLGVBQXFDO1FBQXJDLHVFQUFxQzs7dUZEdEJ0RCw0QkFBNEI7Y0FOeEMsU0FBUzsyQkFDRSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU07Z0JBeUJ0QyxPQUFPO2tCQUFmLEtBQUs7WUFLRyxLQUFLO2tCQUFiLEtBQUs7WUFLRyxTQUFTO2tCQUFqQixLQUFLO1lBRUcsVUFBVTtrQkFBbEIsS0FBSztZQUVHLGtCQUFrQjtrQkFBMUIsS0FBSztZQUtHLGVBQWU7a0JBQXZCLEtBQUs7WUFTRyxLQUFLO2tCQUFiLEtBQUs7WUFLSSxXQUFXO2tCQUFwQixNQUFNO1lBUUcsZ0JBQWdCO2tCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcbmltcG9ydCB0eXBlIHsgRW50aXR5U3RhdGVNYW5hZ2VyIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgQ2F0YWxvZyxcbiAgQ2F0YWxvZ0l0ZW0sXG4gIENhdGFsb2dJdGVtR3JvdXAsXG4gIENhdGFsb2dJdGVtTGF5ZXIsXG4gIENhdGFsb2dJdGVtU3RhdGUsXG4gIENhdGFsb2dJdGVtVHlwZVxufSBmcm9tICcuLi9zaGFyZWQnO1xuXG4vKipcbiAqIENhdGFsb2cgYnJvd3NlciBncm91cCBpdGVtXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1jYXRhbG9nLWJyb3dzZXItZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2F0YWxvZy1icm93c2VyLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2F0YWxvZy1icm93c2VyLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhdGFsb2dCcm93c2VyR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqXG4gICAqIEdyb3VwJ3MgaXRlbXMgc3RvcmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBzdG9yZSA9IG5ldyBFbnRpdHlTdG9yZTxDYXRhbG9nSXRlbSwgQ2F0YWxvZ0l0ZW1TdGF0ZT4oW10pO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFsbCB0aGUgbGF5ZXJzIG9mIHRoZSBncm91cCBhcmUgYWRkZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBhZGRlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcmV2aWV3JDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB0b2dnbGUgYnV0dG9uIGlzIGRpc2FibGVkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZGlzYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAvKipcbiAgICogQ2F0YWxvZ1xuICAgKi9cbiAgQElucHV0KCkgY2F0YWxvZzogQ2F0YWxvZztcblxuICAvKipcbiAgICogQ2F0YWxvZyBncm91cFxuICAgKi9cbiAgQElucHV0KCkgZ3JvdXA6IENhdGFsb2dJdGVtR3JvdXA7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGdyb3VwIGlzIGNvbGxhcHNlZFxuICAgKi9cbiAgQElucHV0KCkgY29sbGFwc2VkOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKSByZXNvbHV0aW9uOiBudW1iZXI7XG5cbiAgQElucHV0KCkgY2F0YWxvZ0FsbG93TGVnZW5kID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGdyb3VwIGNhbiBiZSB0b2dnbGVkIHdoZW4gaXQncyBjb2xsYXBzZWRcbiAgICovXG4gIEBJbnB1dCgpIHRvZ2dsZUNvbGxhcHNlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFBhcmVudCBjYXRhbG9nJ3MgaXRlbXMgc3RvcmUgc3RhdGUuIEdyb3VwcyBzaGFyZSBhIHVuaXF1ZVxuICAgKiBFbnRpdHlTdGF0ZSB0aGF0IHRyYWNrcyB0aGUgZ3JvdXAgYW5kIGl0J3MgbGF5ZXJzIHN0YXRlICh3aGV0aGVyIHRoZXkgYXJlIGFkZGVkIG9yIG5vdCkuXG4gICAqIFNoYXJpbmcgYSB1bmlxdWUgc3RhdGUgd291bGQgYWxzbyBhbGxvdyB1cyB0byBleHBhbmQgdGhpcyBjb21wb25lbnQgdG8gYWxsb3dcbiAgICogdGhlIHNlbGVjdGlvbiBvZiBhIGxheWVyIHdoaWxlIHVuc2VsZWN0aW5nIGFueSBsYXllciBhbHJlYWR5IHNlbGVjdGVkIGluIGFub3RoZXIgZ3JvdXAuXG4gICAqIFRoaXMgY291bGQgYmUgdXNlZnVsIHRvIGRpc3BsYXkgc29tZSBsYXllciBpbmZvIGJlZm9yZSBhZGRpbmcgaXQsIGZvciBleGFtcGxlLlxuICAgKi9cbiAgQElucHV0KCkgc3RhdGU6IEVudGl0eVN0YXRlTWFuYWdlcjxDYXRhbG9nSXRlbSwgQ2F0YWxvZ0l0ZW1TdGF0ZT47XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYWRkL3JlbW92ZSBidXR0b24gb2YgdGhlIGdyb3VwIGlzIGNsaWNrZWRcbiAgICovXG4gIEBPdXRwdXQoKSBhZGRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIGFkZGVkOiBib29sZWFuO1xuICAgIGdyb3VwOiBDYXRhbG9nSXRlbUdyb3VwO1xuICB9PigpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFkZC9yZW1vdmUgYnV0dG9uIG9mIGEgbGF5ZXIgaXMgY2xpY2tlZFxuICAgKi9cbiAgQE91dHB1dCgpIGxheWVyQWRkZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBhZGRlZDogYm9vbGVhbjtcbiAgICBsYXllcjogQ2F0YWxvZ0l0ZW1MYXllcjtcbiAgfT4oKTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cC50aXRsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc3RvcmUubG9hZCh0aGlzLmdyb3VwLml0ZW1zKTtcbiAgICB0aGlzLmV2YWx1YXRlQWRkZWQoKTtcbiAgICB0aGlzLmV2YWx1YXRlRGlzYWJsZWQodGhpcy5jb2xsYXBzZWQpO1xuICAgIGlmICh0aGlzLmdyb3VwLnNvcnREaXJlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdG9yZS52aWV3LnNvcnQoe1xuICAgICAgICBkaXJlY3Rpb246IHRoaXMuZ3JvdXAuc29ydERpcmVjdGlvbixcbiAgICAgICAgdmFsdWVBY2Nlc3NvcjogKGl0ZW06IENhdGFsb2dJdGVtKSA9PiBpdGVtLnRpdGxlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3RvcmUuZGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgaXNHcm91cChpdGVtOiBDYXRhbG9nSXRlbSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpdGVtLnR5cGUgPT09IENhdGFsb2dJdGVtVHlwZS5Hcm91cDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGlzTGF5ZXIoaXRlbTogQ2F0YWxvZ0l0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXRlbS50eXBlID09PSBDYXRhbG9nSXRlbVR5cGUuTGF5ZXI7XG4gIH1cblxuICAvKipcbiAgICogT24gdG9nZ2xlIGJ1dHRvbiBjbGljaywgZW1pdCB0aGUgYWRkZWQgY2hhbmdlIGV2ZW50XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25Ub2dnbGVDbGljaygpIHtcbiAgICB0aGlzLmFkZGVkJC52YWx1ZSA/IHRoaXMucmVtb3ZlKCkgOiB0aGlzLmFkZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIHRvZ2dsZSBidXR0b24gY2xpY2ssIGVtaXQgdGhlIGFkZGVkIGNoYW5nZSBldmVudFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uVG9nZ2xlQ29sbGFwc2VkKGNvbGxhcHNlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZXZhbHVhdGVEaXNhYmxlZChjb2xsYXBzZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gYSBsYXllciBpcyBhZGRlZCBvciByZW1vdmVkLCBldmFsdWF0ZSBpZiBhbGwgdGhlIGxheWVycyBvZiB0aGUgZ3JvdXBcbiAgICogYXJlIG5vdyBhZGRlZCBvciByZW1vdmVkLiBJZiBzbywgY29uc2lkZXIgdGhhdCB0aGUgZ3JvdXAgaXRzZWxmIGlzIGFkZGVkXG4gICAqIG9yIHJlbW92ZWQuXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAcGFyYW0gZXZlbnQgTGF5ZXIgYWRkZWQgY2hhbmdlIGV2ZW50XG4gICAqL1xuICBvbkxheWVyQWRkZWRDaGFuZ2UoZXZlbnQ6IHsgYWRkZWQ6IGJvb2xlYW47IGxheWVyOiBDYXRhbG9nSXRlbUxheWVyIH0pIHtcbiAgICB0aGlzLmxheWVyQWRkZWRDaGFuZ2UuZW1pdChldmVudCk7XG4gICAgdGhpcy50cnlUb2dnbGVHcm91cChldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdCBhZGRlZCBjaGFuZ2UgZXZlbnQgd2l0aCBhZGRlZCA9IHRydWVcbiAgICovXG4gIHByaXZhdGUgYWRkKCkge1xuICAgIHRoaXMuYWRkZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5hZGRlZENoYW5nZS5lbWl0KHtcbiAgICAgIGFkZGVkOiB0cnVlLFxuICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXBcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IGFkZGVkIGNoYW5nZSBldmVudCB3aXRoIGFkZGVkID0gdHJ1ZVxuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmUoKSB7XG4gICAgdGhpcy5hZGRlZCQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5hZGRlZENoYW5nZS5lbWl0KHtcbiAgICAgIGFkZGVkOiBmYWxzZSxcbiAgICAgIGdyb3VwOiB0aGlzLmdyb3VwXG4gICAgfSk7XG4gIH1cblxuICBvbkxheWVyUHJldmlldyhldmVudCkge1xuICAgIHRoaXMucHJldmlldyQubmV4dChldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogSWYgYWxsIHRoZSBsYXllcnMgb2YgdGhlIGdyb3VwIGFkZGVkIG9yIHJlbW92ZWQsIGFkZCBvciByZW1vdmUgdGhlIGdyb3VwIGl0c2VsZi5cbiAgICogQHBhcmFtIGV2ZW50IFRoZSBsYXN0IGxheWVyIGFkZGVkIGNoYW5nZSBldmVudCB0byBvY2N1clxuICAgKi9cbiAgcHJpdmF0ZSB0cnlUb2dnbGVHcm91cChldmVudDogeyBhZGRlZDogYm9vbGVhbjsgbGF5ZXI6IENhdGFsb2dJdGVtTGF5ZXIgfSkge1xuICAgIGNvbnN0IGFkZGVkID0gZXZlbnQuYWRkZWQ7XG4gICAgY29uc3QgbGF5ZXIgPSBldmVudC5sYXllcjtcblxuICAgIGNvbnN0IGxheWVyc0FkZGVkID0gdGhpcy5zdG9yZS52aWV3XG4gICAgICAuYWxsKClcbiAgICAgIC5maWx0ZXIoKGl0ZW06IENhdGFsb2dJdGVtKSA9PiBpdGVtLmlkICE9PSBsYXllci5pZClcbiAgICAgIC5tYXAoKGl0ZW06IENhdGFsb2dJdGVtKSA9PiB0aGlzLnN0YXRlLmdldChpdGVtKS5hZGRlZCB8fCBmYWxzZSk7XG5cbiAgICBpZiAobGF5ZXJzQWRkZWQuZXZlcnkodmFsdWUgPT4gdmFsdWUgPT09IGFkZGVkKSkge1xuICAgICAgYWRkZWQgPyB0aGlzLmFkZCgpIDogdGhpcy5yZW1vdmUoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWRkZWQkLnZhbHVlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmFkZGVkJC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV2YWx1YXRlQWRkZWQoKSB7XG4gICAgY29uc3QgYWRkZWQgPSB0aGlzLnN0b3JlLmFsbCgpLmV2ZXJ5KChpdGVtOiBDYXRhbG9nSXRlbSkgPT4ge1xuICAgICAgcmV0dXJuICh0aGlzLnN0YXRlLmdldChpdGVtKS5hZGRlZCB8fCBmYWxzZSkgPT09IHRydWU7XG4gICAgfSk7XG4gICAgdGhpcy5hZGRlZCQubmV4dChhZGRlZCk7XG4gIH1cblxuICBwcml2YXRlIGV2YWx1YXRlRGlzYWJsZWQoY29sbGFwc2VkOiBib29sZWFuKSB7XG4gICAgbGV0IGRpc2FibGVkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMudG9nZ2xlQ29sbGFwc2VkID09PSBmYWxzZSkge1xuICAgICAgZGlzYWJsZWQgPSBjb2xsYXBzZWQ7XG4gICAgfVxuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQoZGlzYWJsZWQpO1xuICB9XG5cbiAgb25UaXRsZUNsaWNrKCkge1xuICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xuICB9XG59XG4iLCI8bWF0LWxpc3QtaXRlbT5cbiAgPG1hdC1pY29uXG4gICAgbWF0LWxpc3QtYXZhdGFyXG4gICAgc3ZnSWNvbj1cImNoZXZyb24tdXBcIlxuICAgIGlnb0NvbGxhcHNlXG4gICAgY2xhc3M9XCJpZ28tY2hldnJvblwiXG4gICAgW3RhcmdldF09XCJpdGVtc1wiXG4gICAgW2NvbGxhcHNlZF09XCJjb2xsYXBzZWRcIlxuICAgICh0b2dnbGUpPVwib25Ub2dnbGVDb2xsYXBzZWQoJGV2ZW50KVwiPlxuICA8L21hdC1pY29uPlxuXG4gIDxoNCBjbGFzcz1cImlnby1jYXRhbG9nLWdyb3VwLXRpdGxlXCIgaWQ9XCJjYXRhbG9nLWdyb3VwLXRpdGxlXCIgbWF0LWxpbmUgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiIFttYXRUb29sdGlwXT1cInRpdGxlXCIgKGNsaWNrKT1cIm9uVGl0bGVDbGljaygpXCI+e3t0aXRsZX19PC9oND5cblxuICA8YnV0dG9uICpuZ0lmPVwiZ3JvdXAuZXh0ZXJuYWxQcm92aWRlclwiXG4gICAgZGlzYWJsZWQ9XCJ0cnVlXCJcbiAgICBtYXQtaWNvbi1idXR0b24+XG4gICAgPG1hdC1pY29uXG4gICAgICBjbGFzcz1cImlnby1jYXRhbG9nZ3JvdXAtZXh0ZXJuYWwtaWNvblwiXG4gICAgICAqbmdJZj1cImdyb3VwLmV4dGVybmFsUHJvdmlkZXJcIlxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uY2F0YWxvZy5leHRlcm5hbFByb3ZpZGVyLmdyb3VwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICBzdmdJY29uPVwiZWFydGgtYXJyb3ctcmlnaHRcIj5cbiAgICA8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGFkZGVkJCB8IGFzeW5jKSAmJiAocHJldmlldyQgfCBhc3luYykgPT09IGZhbHNlOyBlbHNlIG5vdGFkZGVkXCI+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5jYXRhbG9nLmdyb3VwLnJlbW92ZUZyb21NYXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQ2xpY2soKVwiPlxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJkZWxldGVcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI25vdGFkZGVkPlxuICAgIDxidXR0b25cbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uY2F0YWxvZy5ncm91cC5hZGRUb01hcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICAgIChjbGljayk9XCJvblRvZ2dsZUNsaWNrKClcIj5cbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwicGx1c1wiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L21hdC1saXN0LWl0ZW0+XG5cbjxkaXYgI2l0ZW1zPlxuICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWl0ZW0gW25nRm9yT2ZdPVwic3RvcmUudmlldy5hbGwkKCkgfCBhc3luY1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0dyb3VwKGl0ZW0pXCI+XG4gICAgICA8IS0tIHRvZG86IGFkZCBkaXNwbGF5IGFucyBtYW5hZ2UgQ2F0YWxvZ0l0ZW1Hcm91cCAtLT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMYXllcihpdGVtKVwiPlxuICAgICAgPGlnby1jYXRhbG9nLWJyb3dzZXItbGF5ZXJcbiAgICAgICAgaWdvTGlzdEl0ZW1cbiAgICAgICAgW2xheWVyXT1cIml0ZW1cIlxuICAgICAgICBbcmVzb2x1dGlvbl09XCJyZXNvbHV0aW9uXCJcbiAgICAgICAgW2NhdGFsb2dBbGxvd0xlZ2VuZF09XCJjYXRhbG9nQWxsb3dMZWdlbmRcIlxuICAgICAgICBbYWRkZWRdPVwic3RhdGUuZ2V0KGl0ZW0pLmFkZGVkXCJcbiAgICAgICAgKGFkZGVkTGF5ZXJJc1ByZXZpZXcpPVwib25MYXllclByZXZpZXcoJGV2ZW50KVwiXG4gICAgICAgIChhZGRlZENoYW5nZSk9XCJvbkxheWVyQWRkZWRDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgPC9pZ28tY2F0YWxvZy1icm93c2VyLWxheWVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1icm93c2VyLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2NhdGFsb2cvY2F0YWxvZy1icm93c2VyL2NhdGFsb2ctYnJvd3Nlci1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9jYXRhbG9nL2NhdGFsb2ctYnJvd3Nlci9jYXRhbG9nLWJyb3dzZXItZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFHeEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzNDLE9BQU8sRUFPTCxlQUFlLEVBQ2hCLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7Ozs7SUNQZixtQ0FROEI7SUFENUIscUlBQVMsd0JBQXdCLElBQUM7O0lBRXBDLGlCQUFXOztJQUpULDJGQUFtRTs7O0lBUnZFLGlDQUVrQjtJQUNoQixnR0FTVztJQUNiLGlCQUFTOzs7SUFSSixlQUE0QjtJQUE1QixvREFBNEI7Ozs7SUFVakMsNkJBQXNGO0lBQ3BGLGtDQU9rQztJQUFoQyx3TEFBUyxlQUFBLDRCQUFxQixDQUFBLElBQUM7OztJQUMvQiwrQkFBc0M7SUFDeEMsaUJBQVM7SUFDWCwwQkFBZTs7O0lBTlgsZUFBZ0U7SUFBaEUsd0ZBQWdFLG9EQUFBOzs7O0lBU2xFLGtDQU1rQztJQUFoQyx5TEFBUyxlQUFBLDZCQUFxQixDQUFBLElBQUM7OztJQUMvQiwrQkFBb0M7SUFDdEMsaUJBQVM7OztJQUpQLG1GQUEyRCxvREFBQTs7O0lBVTdELHdCQUVlOzs7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QTtRQVFYLG1IQUFVLDZCQUF5QixJQUFDO1FBQ3RDLGlCQUFXO1FBRVgsNkJBQThJO1FBQXpCLHFHQUFTLGtCQUFjLElBQUM7UUFBQyxZQUFTO1FBQUEsaUJBQUs7UUFFNUosbUZBYVM7UUFFVCwrRkFXZTs7O1FBRWYsOEhBVWM7UUFDaEIsaUJBQWdCO1FBRWhCLHFDQUFZO1FBQ1YsK0ZBZ0JjOztRQUNoQixpQkFBTTs7OztRQWxFRixlQUFnQjtRQUFoQiw0QkFBZ0IsNEJBQUE7UUFLOEUsZUFBb0I7UUFBcEIsc0NBQW9CO1FBQTBCLGVBQVM7UUFBVCwrQkFBUztRQUU5SSxlQUE0QjtRQUE1QixpREFBNEI7UUFldEIsZUFBd0Q7UUFBeEQsd0dBQXdELGlCQUFBO1FBMkIzQyxlQUFxQztRQUFyQyx1RUFBcUM7O3VGRHBCdEQsNEJBQTRCO2NBTnhDLFNBQVM7MkJBQ0UsMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNO2dCQXlCdEMsT0FBTztrQkFBZixLQUFLO1lBS0csS0FBSztrQkFBYixLQUFLO1lBRUcsR0FBRztrQkFBWCxLQUFLO1lBS0csU0FBUztrQkFBakIsS0FBSztZQUVHLFVBQVU7a0JBQWxCLEtBQUs7WUFFRyxrQkFBa0I7a0JBQTFCLEtBQUs7WUFLRyxlQUFlO2tCQUF2QixLQUFLO1lBU0csS0FBSztrQkFBYixLQUFLO1lBS0ksV0FBVztrQkFBcEIsTUFBTTtZQUtHLGdCQUFnQjtrQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB0eXBlIHsgRW50aXR5U3RhdGVNYW5hZ2VyIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7XHJcbiAgYWRkZWRDaGFuZ2VFbWl0dGVyLFxyXG4gIGFkZGVkQ2hhbmdlR3JvdXBFbWl0dGVyLFxyXG4gIENhdGFsb2csXHJcbiAgQ2F0YWxvZ0l0ZW0sXHJcbiAgQ2F0YWxvZ0l0ZW1Hcm91cCxcclxuICBDYXRhbG9nSXRlbVN0YXRlLFxyXG4gIENhdGFsb2dJdGVtVHlwZVxyXG59IGZyb20gJy4uL3NoYXJlZCc7XHJcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcCc7XHJcblxyXG4vKipcclxuICogQ2F0YWxvZyBicm93c2VyIGdyb3VwIGl0ZW1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWNhdGFsb2ctYnJvd3Nlci1ncm91cCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhdGFsb2ctYnJvd3Nlci1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2F0YWxvZy1icm93c2VyLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIENhdGFsb2dCcm93c2VyR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIC8qKlxyXG4gICAqIEdyb3VwJ3MgaXRlbXMgc3RvcmVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBzdG9yZSA9IG5ldyBFbnRpdHlTdG9yZTxDYXRhbG9nSXRlbSwgQ2F0YWxvZ0l0ZW1TdGF0ZT4oW10pO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIGFsbCB0aGUgbGF5ZXJzIG9mIHRoZSBncm91cCBhcmUgYWRkZWRcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBhZGRlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xyXG4gIHByZXZpZXckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSB0b2dnbGUgYnV0dG9uIGlzIGRpc2FibGVkXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZGlzYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2F0YWxvZ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNhdGFsb2c6IENhdGFsb2c7XHJcblxyXG4gIC8qKlxyXG4gICAqIENhdGFsb2cgZ3JvdXBcclxuICAgKi9cclxuICBASW5wdXQoKSBncm91cDogQ2F0YWxvZ0l0ZW1Hcm91cDtcclxuXHJcbiAgQElucHV0KCkgbWFwOiBJZ29NYXA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGdyb3VwIGlzIGNvbGxhcHNlZFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNvbGxhcHNlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIHJlc29sdXRpb246IG51bWJlcjtcclxuXHJcbiAgQElucHV0KCkgY2F0YWxvZ0FsbG93TGVnZW5kID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGdyb3VwIGNhbiBiZSB0b2dnbGVkIHdoZW4gaXQncyBjb2xsYXBzZWRcclxuICAgKi9cclxuICBASW5wdXQoKSB0b2dnbGVDb2xsYXBzZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBQYXJlbnQgY2F0YWxvZydzIGl0ZW1zIHN0b3JlIHN0YXRlLiBHcm91cHMgc2hhcmUgYSB1bmlxdWVcclxuICAgKiBFbnRpdHlTdGF0ZSB0aGF0IHRyYWNrcyB0aGUgZ3JvdXAgYW5kIGl0J3MgbGF5ZXJzIHN0YXRlICh3aGV0aGVyIHRoZXkgYXJlIGFkZGVkIG9yIG5vdCkuXHJcbiAgICogU2hhcmluZyBhIHVuaXF1ZSBzdGF0ZSB3b3VsZCBhbHNvIGFsbG93IHVzIHRvIGV4cGFuZCB0aGlzIGNvbXBvbmVudCB0byBhbGxvd1xyXG4gICAqIHRoZSBzZWxlY3Rpb24gb2YgYSBsYXllciB3aGlsZSB1bnNlbGVjdGluZyBhbnkgbGF5ZXIgYWxyZWFkeSBzZWxlY3RlZCBpbiBhbm90aGVyIGdyb3VwLlxyXG4gICAqIFRoaXMgY291bGQgYmUgdXNlZnVsIHRvIGRpc3BsYXkgc29tZSBsYXllciBpbmZvIGJlZm9yZSBhZGRpbmcgaXQsIGZvciBleGFtcGxlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHN0YXRlOiBFbnRpdHlTdGF0ZU1hbmFnZXI8Q2F0YWxvZ0l0ZW0sIENhdGFsb2dJdGVtU3RhdGU+O1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFkZC9yZW1vdmUgYnV0dG9uIG9mIHRoZSBncm91cCBpcyBjbGlja2VkXHJcbiAgICovXHJcbiAgQE91dHB1dCgpIGFkZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhZGRlZENoYW5nZUdyb3VwRW1pdHRlcj4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhZGQvcmVtb3ZlIGJ1dHRvbiBvZiBhIGxheWVyIGlzIGNsaWNrZWRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgbGF5ZXJBZGRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YWRkZWRDaGFuZ2VFbWl0dGVyPigpO1xyXG5cclxuICAvKipcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmdyb3VwLnRpdGxlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnN0b3JlLmxvYWQodGhpcy5ncm91cC5pdGVtcyk7XHJcbiAgICB0aGlzLmV2YWx1YXRlQWRkZWQoKTtcclxuICAgIHRoaXMuZXZhbHVhdGVEaXNhYmxlZCh0aGlzLmNvbGxhcHNlZCk7XHJcbiAgICBpZiAodGhpcy5ncm91cC5zb3J0RGlyZWN0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5zdG9yZS52aWV3LnNvcnQoe1xyXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5ncm91cC5zb3J0RGlyZWN0aW9uLFxyXG4gICAgICAgIHZhbHVlQWNjZXNzb3I6IChpdGVtOiBDYXRhbG9nSXRlbSkgPT4gaXRlbS50aXRsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnN0b3JlLmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGlzR3JvdXAoaXRlbTogQ2F0YWxvZ0l0ZW0pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBpdGVtLnR5cGUgPT09IENhdGFsb2dJdGVtVHlwZS5Hcm91cDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGlzTGF5ZXIoaXRlbTogQ2F0YWxvZ0l0ZW0pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBpdGVtLnR5cGUgPT09IENhdGFsb2dJdGVtVHlwZS5MYXllcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIHRvZ2dsZSBidXR0b24gY2xpY2ssIGVtaXQgdGhlIGFkZGVkIGNoYW5nZSBldmVudFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG9uVG9nZ2xlQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLmFkZGVkJC52YWx1ZSA/IHRoaXMucmVtb3ZlKGV2ZW50KSA6IHRoaXMuYWRkKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIHRvZ2dsZSBidXR0b24gY2xpY2ssIGVtaXQgdGhlIGFkZGVkIGNoYW5nZSBldmVudFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG9uVG9nZ2xlQ29sbGFwc2VkKGNvbGxhcHNlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5ldmFsdWF0ZURpc2FibGVkKGNvbGxhcHNlZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBXaGVuIGEgbGF5ZXIgaXMgYWRkZWQgb3IgcmVtb3ZlZCwgZXZhbHVhdGUgaWYgYWxsIHRoZSBsYXllcnMgb2YgdGhlIGdyb3VwXHJcbiAgICogYXJlIG5vdyBhZGRlZCBvciByZW1vdmVkLiBJZiBzbywgY29uc2lkZXIgdGhhdCB0aGUgZ3JvdXAgaXRzZWxmIGlzIGFkZGVkXHJcbiAgICogb3IgcmVtb3ZlZC5cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKiBAcGFyYW0gZXZlbnQgTGF5ZXIgYWRkZWQgY2hhbmdlIGV2ZW50XHJcbiAgICovXHJcbiAgb25MYXllckFkZGVkQ2hhbmdlKGV2ZW50OiBhZGRlZENoYW5nZUVtaXR0ZXIpIHtcclxuICAgIHRoaXMubGF5ZXJBZGRlZENoYW5nZS5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMudHJ5VG9nZ2xlR3JvdXAoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdCBhZGRlZCBjaGFuZ2UgZXZlbnQgd2l0aCBhZGRlZCA9IHRydWVcclxuICAgKi9cclxuICBwcml2YXRlIGFkZChldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuYWRkZWQkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmFkZGVkQ2hhbmdlLmVtaXQoe1xyXG4gICAgICBhZGRlZDogdHJ1ZSxcclxuICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXAsXHJcbiAgICAgIGV2ZW50XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXQgYWRkZWQgY2hhbmdlIGV2ZW50IHdpdGggYWRkZWQgPSB0cnVlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZW1vdmUoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLmFkZGVkJC5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuYWRkZWRDaGFuZ2UuZW1pdCh7XHJcbiAgICAgIGFkZGVkOiBmYWxzZSxcclxuICAgICAgZ3JvdXA6IHRoaXMuZ3JvdXAsXHJcbiAgICAgIGV2ZW50XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uTGF5ZXJQcmV2aWV3KGV2ZW50KSB7XHJcbiAgICB0aGlzLnByZXZpZXckLm5leHQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSWYgYWxsIHRoZSBsYXllcnMgb2YgdGhlIGdyb3VwIGFkZGVkIG9yIHJlbW92ZWQsIGFkZCBvciByZW1vdmUgdGhlIGdyb3VwIGl0c2VsZi5cclxuICAgKiBAcGFyYW0gZXZlbnQgVGhlIGxhc3QgbGF5ZXIgYWRkZWQgY2hhbmdlIGV2ZW50IHRvIG9jY3VyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0cnlUb2dnbGVHcm91cChldmVudDogYWRkZWRDaGFuZ2VFbWl0dGVyKSB7XHJcbiAgICBjb25zdCBhZGRlZCA9IGV2ZW50LmFkZGVkO1xyXG4gICAgY29uc3QgbGF5ZXIgPSBldmVudC5sYXllcjtcclxuXHJcbiAgICBjb25zdCBsYXllcnNBZGRlZCA9IHRoaXMuc3RvcmUudmlld1xyXG4gICAgICAuYWxsKClcclxuICAgICAgLmZpbHRlcigoaXRlbTogQ2F0YWxvZ0l0ZW0pID0+IGl0ZW0uaWQgIT09IGxheWVyLmlkKVxyXG4gICAgICAubWFwKChpdGVtOiBDYXRhbG9nSXRlbSkgPT4gdGhpcy5zdGF0ZS5nZXQoaXRlbSkuYWRkZWQgfHwgZmFsc2UpO1xyXG5cclxuICAgIGlmIChsYXllcnNBZGRlZC5ldmVyeSh2YWx1ZSA9PiB2YWx1ZSA9PT0gYWRkZWQpKSB7XHJcbiAgICAgIGFkZGVkID8gdGhpcy5hZGQoZXZlbnQuZXZlbnQpIDogdGhpcy5yZW1vdmUoZXZlbnQuZXZlbnQpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmFkZGVkJC52YWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmFkZGVkJC5uZXh0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXZhbHVhdGVBZGRlZCgpIHtcclxuICAgIGNvbnN0IGFkZGVkID0gdGhpcy5zdG9yZS5hbGwoKS5ldmVyeSgoaXRlbTogQ2F0YWxvZ0l0ZW0pID0+IHtcclxuICAgICAgcmV0dXJuICh0aGlzLnN0YXRlLmdldChpdGVtKS5hZGRlZCB8fCBmYWxzZSkgPT09IHRydWU7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYWRkZWQkLm5leHQoYWRkZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBldmFsdWF0ZURpc2FibGVkKGNvbGxhcHNlZDogYm9vbGVhbikge1xyXG4gICAgbGV0IGRpc2FibGVkID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy50b2dnbGVDb2xsYXBzZWQgPT09IGZhbHNlKSB7XHJcbiAgICAgIGRpc2FibGVkID0gY29sbGFwc2VkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dChkaXNhYmxlZCk7XHJcbiAgfVxyXG5cclxuICBvblRpdGxlQ2xpY2soKSB7XHJcbiAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcclxuICB9XHJcbn1cclxuIiwiPG1hdC1saXN0LWl0ZW0+XHJcbiAgPG1hdC1pY29uXHJcbiAgICBtYXQtbGlzdC1hdmF0YXJcclxuICAgIHN2Z0ljb249XCJjaGV2cm9uLXVwXCJcclxuICAgIGlnb0NvbGxhcHNlXHJcbiAgICBjbGFzcz1cImlnby1jaGV2cm9uXCJcclxuICAgIFt0YXJnZXRdPVwiaXRlbXNcIlxyXG4gICAgW2NvbGxhcHNlZF09XCJjb2xsYXBzZWRcIlxyXG4gICAgKHRvZ2dsZSk9XCJvblRvZ2dsZUNvbGxhcHNlZCgkZXZlbnQpXCI+XHJcbiAgPC9tYXQtaWNvbj5cclxuXHJcbiAgPGg0IGNsYXNzPVwiaWdvLWNhdGFsb2ctZ3JvdXAtdGl0bGVcIiBpZD1cImNhdGFsb2ctZ3JvdXAtdGl0bGVcIiBtYXQtbGluZSBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCIgW21hdFRvb2x0aXBdPVwidGl0bGVcIiAoY2xpY2spPVwib25UaXRsZUNsaWNrKClcIj57e3RpdGxlfX08L2g0PlxyXG5cclxuICA8YnV0dG9uICpuZ0lmPVwiZ3JvdXAuZXh0ZXJuYWxQcm92aWRlclwiXHJcbiAgICBkaXNhYmxlZD1cInRydWVcIlxyXG4gICAgbWF0LWljb24tYnV0dG9uPlxyXG4gICAgPG1hdC1pY29uXHJcbiAgICAgIGNsYXNzPVwiaWdvLWNhdGFsb2dncm91cC1leHRlcm5hbC1pY29uXCJcclxuICAgICAgKm5nSWY9XCJncm91cC5leHRlcm5hbFByb3ZpZGVyXCJcclxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcclxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXHJcbiAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmNhdGFsb2cuZXh0ZXJuYWxQcm92aWRlci5ncm91cCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgc3ZnSWNvbj1cImVhcnRoLWFycm93LXJpZ2h0XCI+XHJcbiAgICA8L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGFkZGVkJCB8IGFzeW5jKSAmJiAocHJldmlldyQgfCBhc3luYykgPT09IGZhbHNlOyBlbHNlIG5vdGFkZGVkXCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uY2F0YWxvZy5ncm91cC5yZW1vdmVGcm9tTWFwJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCQgfCBhc3luY1wiXHJcbiAgICAgIChjbGljayk9XCJvblRvZ2dsZUNsaWNrKCRldmVudClcIj5cclxuICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJkZWxldGVcIj48L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjbm90YWRkZWQ+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uY2F0YWxvZy5ncm91cC5hZGRUb01hcCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxyXG4gICAgICAoY2xpY2spPVwib25Ub2dnbGVDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwicGx1c1wiPjwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L21hdC1saXN0LWl0ZW0+XHJcblxyXG48ZGl2ICNpdGVtcz5cclxuICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWl0ZW0gW25nRm9yT2ZdPVwic3RvcmUudmlldy5hbGwkKCkgfCBhc3luY1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzR3JvdXAoaXRlbSlcIj5cclxuICAgICAgPCEtLSB0b2RvOiBhZGQgZGlzcGxheSBhbnMgbWFuYWdlIENhdGFsb2dJdGVtR3JvdXAgLS0+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xheWVyKGl0ZW0pXCI+XHJcbiAgICAgIDxpZ28tY2F0YWxvZy1icm93c2VyLWxheWVyXHJcbiAgICAgICAgaWdvTGlzdEl0ZW1cclxuICAgICAgICBbbGF5ZXJdPVwiaXRlbVwiXHJcbiAgICAgICAgW3Jlc29sdXRpb25dPVwicmVzb2x1dGlvblwiXHJcbiAgICAgICAgW21hcF09XCJtYXBcIlxyXG4gICAgICAgIFtjYXRhbG9nQWxsb3dMZWdlbmRdPVwiY2F0YWxvZ0FsbG93TGVnZW5kXCJcclxuICAgICAgICBbYWRkZWRdPVwic3RhdGUuZ2V0KGl0ZW0pLmFkZGVkXCJcclxuICAgICAgICAoYWRkZWRMYXllcklzUHJldmlldyk9XCJvbkxheWVyUHJldmlldygkZXZlbnQpXCJcclxuICAgICAgICAoYWRkZWRDaGFuZ2UpPVwib25MYXllckFkZGVkQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgPC9pZ28tY2F0YWxvZy1icm93c2VyLWxheWVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -36,7 +36,7 @@ function CatalogBrowserLayerComponent_button_4_Template(rf, ctx) { if (rf & 1) {
36
36
  i0.ɵɵadvance(1);
37
37
  i0.ɵɵproperty("ngIf", ctx_r1.layer.externalProvider);
38
38
  } }
39
- function CatalogBrowserLayerComponent_igo_layer_legend_13_Template(rf, ctx) { if (rf & 1) {
39
+ function CatalogBrowserLayerComponent_igo_layer_legend_19_Template(rf, ctx) { if (rf & 1) {
40
40
  i0.ɵɵelement(0, "igo-layer-legend", 3);
41
41
  i0.ɵɵpipe(1, "async");
42
42
  } if (rf & 2) {
@@ -51,6 +51,7 @@ export class CatalogBrowserLayerComponent {
51
51
  this.layerService = layerService;
52
52
  this.inRange$ = new BehaviorSubject(true);
53
53
  this.isPreview$ = new BehaviorSubject(false);
54
+ this.isVisible$ = new BehaviorSubject(false);
54
55
  this.layerLegendShown$ = new BehaviorSubject(false);
55
56
  this.igoLayer$ = new BehaviorSubject(undefined);
56
57
  this.mouseInsideAdd = false;
@@ -78,11 +79,19 @@ export class CatalogBrowserLayerComponent {
78
79
  return getEntityIcon(this.layer) || 'layers';
79
80
  }
80
81
  ngOnInit() {
81
- this.isInResolutionsRange();
82
82
  this.isPreview$$ = this.isPreview$.subscribe(value => this.addedLayerIsPreview.emit(value));
83
+ this.layers$$ = this.map.layers$.subscribe(() => {
84
+ this.isVisible();
85
+ });
86
+ this.resolution$$ = this.map.viewController.resolution$.subscribe((resolution) => {
87
+ this.isInResolutionsRange(resolution);
88
+ this.isVisible();
89
+ });
83
90
  }
84
91
  ngOnDestroy() {
85
92
  this.isPreview$$.unsubscribe();
93
+ this.resolution$$.unsubscribe();
94
+ this.layers$$.unsubscribe();
86
95
  }
87
96
  computeTitleTooltip() {
88
97
  const layerOptions = this.layer.options;
@@ -139,10 +148,10 @@ export class CatalogBrowserLayerComponent {
139
148
  case 'click':
140
149
  if (!this.isPreview$.value) {
141
150
  if (this.added) {
142
- this.remove();
151
+ this.remove(event);
143
152
  }
144
153
  else {
145
- this.add();
154
+ this.add(event);
146
155
  }
147
156
  }
148
157
  this.isPreview$.next(false);
@@ -150,7 +159,7 @@ export class CatalogBrowserLayerComponent {
150
159
  case 'mouseenter':
151
160
  if (!this.isPreview$.value && !this.added) {
152
161
  this.lastTimeoutRequest = setTimeout(() => {
153
- this.add();
162
+ this.add(event);
154
163
  this.isPreview$.next(true);
155
164
  }, 500);
156
165
  }
@@ -158,7 +167,7 @@ export class CatalogBrowserLayerComponent {
158
167
  break;
159
168
  case 'mouseleave':
160
169
  if (this.isPreview$.value) {
161
- this.remove();
170
+ this.remove(event);
162
171
  this.isPreview$.next(false);
163
172
  }
164
173
  this.mouseInsideAdd = false;
@@ -170,37 +179,58 @@ export class CatalogBrowserLayerComponent {
170
179
  /**
171
180
  * Emit added change event with added = true
172
181
  */
173
- add() {
182
+ add(event) {
174
183
  if (!this.added) {
175
184
  this.added = true;
176
- this.addedChange.emit({ added: true, layer: this.layer });
185
+ this.addedChange.emit({ added: true, layer: this.layer, event: event });
177
186
  }
178
187
  }
179
188
  /**
180
189
  * Emit added change event with added = false
181
190
  */
182
- remove() {
191
+ remove(event) {
183
192
  if (this.added) {
184
193
  this.added = false;
185
- this.addedChange.emit({ added: false, layer: this.layer });
194
+ this.addedChange.emit({ added: false, layer: this.layer, event: event });
186
195
  }
187
196
  }
188
197
  haveGroup() {
189
198
  return !(!this.layer.address || this.layer.address.split('.').length === 1);
190
199
  }
191
- isInResolutionsRange() {
192
- const minResolution = this.layer.options.minResolution || 0;
193
- const maxResolution = this.layer.options.maxResolution || Infinity;
194
- this.inRange$.next(this.resolution >= minResolution && this.resolution <= maxResolution);
195
- return this.inRange$.value;
200
+ isInResolutionsRange(resolution) {
201
+ const minResolution = (!this.layer.options.minResolution || Number.isNaN(this.layer.options.minResolution))
202
+ ? 0 : this.layer.options.minResolution;
203
+ const maxResolution = (!this.layer.options.maxResolution || Number.isNaN(this.layer.options.maxResolution))
204
+ ? Infinity : this.layer.options.maxResolution;
205
+ this.inRange$.next(resolution >= minResolution && resolution <= maxResolution);
206
+ }
207
+ isVisible() {
208
+ if (this.layer?.id) {
209
+ const oLayer = this.map.getLayerById(this.layer?.id);
210
+ oLayer ? this.isVisible$.next(oLayer.visible) : this.isVisible$.next(false);
211
+ }
212
+ }
213
+ getBadgeIcon() {
214
+ if (this.inRange$.getValue()) {
215
+ return this.isVisible$.getValue() ? '' : 'eye-off';
216
+ }
217
+ else {
218
+ return 'eye-off';
219
+ }
196
220
  }
197
221
  computeTooltip() {
198
222
  if (this.added) {
199
- return this.isPreview$.value
200
- ? 'igo.geo.catalog.layer.addToMap'
201
- : this.inRange$.value
223
+ if (this.isPreview$.value) {
224
+ return 'igo.geo.catalog.layer.addToMap';
225
+ }
226
+ else if (this.inRange$.value) {
227
+ return this.isVisible$.value
202
228
  ? 'igo.geo.catalog.layer.removeFromMap'
203
- : 'igo.geo.catalog.layer.removeFromMapOutRange';
229
+ : 'igo.geo.catalog.layer.removeFromMapNotVisible';
230
+ }
231
+ else {
232
+ return 'igo.geo.catalog.layer.removeFromMapOutRange';
233
+ }
204
234
  }
205
235
  else {
206
236
  return this.inRange$.value
@@ -210,7 +240,7 @@ export class CatalogBrowserLayerComponent {
210
240
  }
211
241
  }
212
242
  CatalogBrowserLayerComponent.ɵfac = function CatalogBrowserLayerComponent_Factory(t) { return new (t || CatalogBrowserLayerComponent)(i0.ɵɵdirectiveInject(i1.LayerService)); };
213
- CatalogBrowserLayerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogBrowserLayerComponent, selectors: [["igo-catalog-browser-layer"]], inputs: { resolution: "resolution", catalogAllowLegend: "catalogAllowLegend", layer: "layer", added: "added" }, outputs: { addedChange: "addedChange", addedLayerIsPreview: "addedLayerIsPreview" }, decls: 16, vars: 21, consts: [["mat-list-avatar", "", "svgIcon", "blank", 4, "ngIf"], ["mat-line", "", "matTooltipShowDelay", "500", 3, "ngClass", "matTooltip", "click"], ["disabled", "true", "mat-icon-button", "", 4, "ngIf"], [3, "layer"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "mouseenter", "mouseleave", "click"], ["matBadge", "icon", "igoMatBadgeIcon", "eye-off", "igoMatBadgeInverseColor", "true", "matBadgeDisabled", "true", "matBadgeSize", "small", "matBadgePosition", "after", 3, "matBadgeHidden", "svgIcon"], [1, "igo-cataloglayer-legend-container"], ["legend", ""], [3, "layer", 4, "ngIf"], ["mat-list-avatar", "", "svgIcon", "blank"], ["disabled", "true", "mat-icon-button", ""], ["class", "igo-cataloglayer-external-icon", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 3, "matTooltip", "click", 4, "ngIf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 1, "igo-cataloglayer-external-icon", 3, "matTooltip", "click"]], template: function CatalogBrowserLayerComponent_Template(rf, ctx) { if (rf & 1) {
243
+ CatalogBrowserLayerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CatalogBrowserLayerComponent, selectors: [["igo-catalog-browser-layer"]], inputs: { resolution: "resolution", catalogAllowLegend: "catalogAllowLegend", layer: "layer", map: "map", added: "added" }, outputs: { addedChange: "addedChange", addedLayerIsPreview: "addedLayerIsPreview" }, decls: 22, vars: 35, consts: [["mat-list-avatar", "", "svgIcon", "blank", 4, "ngIf"], ["mat-line", "", "matTooltipShowDelay", "500", 3, "ngClass", "matTooltip", "click"], ["disabled", "true", "mat-icon-button", "", 4, "ngIf"], [3, "layer"], ["mat-icon-button", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "color", "mouseenter", "mouseleave", "click"], ["matBadge", "icon", "igoMatBadgeColor", "rgba(0,0,0,0.87)", "igoMatBadgeBackgroundColor", "none", "igoMatBadgeInverseColor", "true", "matBadgeSize", "small", "matBadgePosition", "after", 3, "igoMatBadgeIcon", "matBadgeHidden", "matBadgeDisabled", "svgIcon"], [1, "igo-cataloglayer-legend-container"], ["legend", ""], [3, "layer", 4, "ngIf"], ["mat-list-avatar", "", "svgIcon", "blank"], ["disabled", "true", "mat-icon-button", ""], ["class", "igo-cataloglayer-external-icon", "tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 3, "matTooltip", "click", 4, "ngIf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "color", "primary", "svgIcon", "earth-arrow-right", 1, "igo-cataloglayer-external-icon", 3, "matTooltip", "click"]], template: function CatalogBrowserLayerComponent_Template(rf, ctx) { if (rf & 1) {
214
244
  i0.ɵɵelementStart(0, "mat-list-item");
215
245
  i0.ɵɵtemplate(1, CatalogBrowserLayerComponent_mat_icon_1_Template, 1, 0, "mat-icon", 0);
216
246
  i0.ɵɵelementStart(2, "h4", 1);
@@ -225,11 +255,17 @@ CatalogBrowserLayerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
225
255
  i0.ɵɵpipe(8, "async");
226
256
  i0.ɵɵelement(9, "mat-icon", 5);
227
257
  i0.ɵɵpipe(10, "async");
228
- i0.ɵɵelementEnd()();
229
- i0.ɵɵelementStart(11, "div", 6, 7);
230
- i0.ɵɵtemplate(13, CatalogBrowserLayerComponent_igo_layer_legend_13_Template, 2, 3, "igo-layer-legend", 8);
258
+ i0.ɵɵpipe(11, "async");
259
+ i0.ɵɵpipe(12, "async");
260
+ i0.ɵɵpipe(13, "async");
231
261
  i0.ɵɵpipe(14, "async");
232
262
  i0.ɵɵpipe(15, "async");
263
+ i0.ɵɵpipe(16, "async");
264
+ i0.ɵɵelementEnd()();
265
+ i0.ɵɵelementStart(17, "div", 6, 7);
266
+ i0.ɵɵtemplate(19, CatalogBrowserLayerComponent_igo_layer_legend_19_Template, 2, 3, "igo-layer-legend", 8);
267
+ i0.ɵɵpipe(20, "async");
268
+ i0.ɵɵpipe(21, "async");
233
269
  i0.ɵɵelementEnd();
234
270
  } if (rf & 2) {
235
271
  i0.ɵɵadvance(1);
@@ -243,21 +279,23 @@ CatalogBrowserLayerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
243
279
  i0.ɵɵadvance(1);
244
280
  i0.ɵɵproperty("layer", ctx.layer);
245
281
  i0.ɵɵadvance(1);
246
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(7, 11, ctx.computeTooltip()))("color", i0.ɵɵpipeBind1(8, 13, ctx.isPreview$) ? "" : ctx.added ? "warn" : "");
282
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(7, 13, ctx.computeTooltip()))("color", i0.ɵɵpipeBind1(8, 15, ctx.isPreview$) ? "" : ctx.added ? "warn" : "");
247
283
  i0.ɵɵadvance(3);
248
- i0.ɵɵproperty("matBadgeHidden", ctx.isInResolutionsRange())("svgIcon", i0.ɵɵpipeBind1(10, 15, ctx.isPreview$) ? "plus" : ctx.added ? "delete" : "plus");
249
- i0.ɵɵadvance(4);
250
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(14, 17, ctx.layerLegendShown$) && i0.ɵɵpipeBind1(15, 19, ctx.igoLayer$) && ctx.catalogAllowLegend);
284
+ i0.ɵɵproperty("igoMatBadgeIcon", ctx.getBadgeIcon())("matBadgeHidden", i0.ɵɵpipeBind1(10, 17, ctx.inRange$) && i0.ɵɵpipeBind1(11, 19, ctx.isVisible$) === true || i0.ɵɵpipeBind1(12, 21, ctx.inRange$) && !ctx.added || i0.ɵɵpipeBind1(13, 23, ctx.inRange$) && i0.ɵɵpipeBind1(14, 25, ctx.isPreview$))("matBadgeDisabled", i0.ɵɵpipeBind1(15, 27, ctx.inRange$) === false)("svgIcon", i0.ɵɵpipeBind1(16, 29, ctx.isPreview$) ? "plus" : ctx.added ? "delete" : "plus");
285
+ i0.ɵɵadvance(10);
286
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(20, 31, ctx.layerLegendShown$) && i0.ɵɵpipeBind1(21, 33, ctx.igoLayer$) && ctx.catalogAllowLegend);
251
287
  } }, dependencies: [i2.NgClass, i2.NgIf, i3.MatBadge, i4.MatButton, i5.MatIcon, i6.MatListItem, i6.MatListAvatarCssMatStyler, i7.MatLine, i8.MatTooltip, i9.IgoBadgeIconDirective, i10.MetadataButtonComponent, i11.LayerLegendComponent, i2.AsyncPipe, i12.TranslatePipe], styles: [".igo-cataloglayer-title[_ngcontent-%COMP%]{cursor:pointer}.igo-cataloglayer-legend-container[_ngcontent-%COMP%]{padding-left:18px;width:calc(100% - 18px);margin-left:40px}.igo-cataloglayer-external-icon[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
252
288
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogBrowserLayerComponent, [{
253
289
  type: Component,
254
- args: [{ selector: 'igo-catalog-browser-layer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\n <mat-icon *ngIf=\"haveGroup()\" mat-list-avatar svgIcon=\"blank\"></mat-icon>\n <h4 mat-line matTooltipShowDelay=\"500\" [ngClass]=\"(catalogAllowLegend)?'igo-cataloglayer-title':''\" (click)=\"askForLegend($event)\" [matTooltip]=\"computeTitleTooltip()\">{{title}}</h4>\n\n <button *ngIf=\"layer.externalProvider\"\n disabled=\"true\"\n mat-icon-button>\n <mat-icon\n class=\"igo-cataloglayer-external-icon\"\n *ngIf=\"layer.externalProvider\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.externalProvider.layer' | translate\"\n color=\"primary\"\n (click)=\"$event.stopPropagation()\"\n svgIcon=\"earth-arrow-right\">\n </mat-icon>\n </button>\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n\n <button\n (mouseenter)=\"onMouseEvent($event)\" (mouseleave)=\"onMouseEvent($event)\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"computeTooltip() | translate\"\n [color]=\"(isPreview$ | async) ? '' : added ? 'warn' : ''\"\n (click)=\"onToggleClick($event)\">\n <mat-icon\n matBadge=\"icon\"\n igoMatBadgeIcon=\"eye-off\"\n igoMatBadgeInverseColor=\"true\"\n [matBadgeHidden]=\"isInResolutionsRange()\"\n matBadgeDisabled=\"true\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [svgIcon]=\"(isPreview$ | async) ? 'plus' : added ? 'delete' : 'plus'\">\n </mat-icon>\n </button>\n\n</mat-list-item>\n\n<div #legend class=\"igo-cataloglayer-legend-container\">\n <igo-layer-legend\n *ngIf=\"(layerLegendShown$ | async) && (igoLayer$ | async) && catalogAllowLegend\"\n [layer]=\"igoLayer$ | async\">\n </igo-layer-legend>\n</div>\n", styles: [".igo-cataloglayer-title{cursor:pointer}.igo-cataloglayer-legend-container{padding-left:18px;width:calc(100% - 18px);margin-left:40px}.igo-cataloglayer-external-icon{cursor:help}\n"] }]
290
+ args: [{ selector: 'igo-catalog-browser-layer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\r\n <mat-icon *ngIf=\"haveGroup()\" mat-list-avatar svgIcon=\"blank\"></mat-icon>\r\n <h4 mat-line matTooltipShowDelay=\"500\" [ngClass]=\"(catalogAllowLegend)?'igo-cataloglayer-title':''\" (click)=\"askForLegend($event)\" [matTooltip]=\"computeTitleTooltip()\">{{title}}</h4>\r\n\r\n <button *ngIf=\"layer.externalProvider\"\r\n disabled=\"true\"\r\n mat-icon-button>\r\n <mat-icon\r\n class=\"igo-cataloglayer-external-icon\"\r\n *ngIf=\"layer.externalProvider\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.catalog.externalProvider.layer' | translate\"\r\n color=\"primary\"\r\n (click)=\"$event.stopPropagation()\"\r\n svgIcon=\"earth-arrow-right\">\r\n </mat-icon>\r\n </button>\r\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\r\n\r\n <button\r\n (mouseenter)=\"onMouseEvent($event)\" (mouseleave)=\"onMouseEvent($event)\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"computeTooltip() | translate\"\r\n [color]=\"(isPreview$ | async) ? '' : added ? 'warn' : ''\"\r\n (click)=\"onToggleClick($event)\">\r\n <mat-icon\r\n matBadge=\"icon\"\r\n [igoMatBadgeIcon]=\"getBadgeIcon()\"\r\n igoMatBadgeColor=\"rgba(0,0,0,0.87)\"\r\n igoMatBadgeBackgroundColor=\"none\"\r\n igoMatBadgeInverseColor=\"true\"\r\n [matBadgeHidden]=\"((inRange$ | async) && (isVisible$ | async) === true) || ((inRange$ | async) && !added) || ((inRange$ | async) && (isPreview$ | async))\"\r\n [matBadgeDisabled]=\"(inRange$ | async) === false\"\r\n matBadgeSize=\"small\"\r\n matBadgePosition=\"after\"\r\n [svgIcon]=\"(isPreview$ | async) ? 'plus' : added ? 'delete' : 'plus'\">\r\n </mat-icon>\r\n </button>\r\n\r\n</mat-list-item>\r\n\r\n<div #legend class=\"igo-cataloglayer-legend-container\">\r\n <igo-layer-legend\r\n *ngIf=\"(layerLegendShown$ | async) && (igoLayer$ | async) && catalogAllowLegend\"\r\n [layer]=\"igoLayer$ | async\">\r\n </igo-layer-legend>\r\n</div>\r\n", styles: [".igo-cataloglayer-title{cursor:pointer}.igo-cataloglayer-legend-container{padding-left:18px;width:calc(100% - 18px);margin-left:40px}.igo-cataloglayer-external-icon{cursor:help}\n"] }]
255
291
  }], function () { return [{ type: i1.LayerService }]; }, { resolution: [{
256
292
  type: Input
257
293
  }], catalogAllowLegend: [{
258
294
  type: Input
259
295
  }], layer: [{
260
296
  type: Input
297
+ }], map: [{
298
+ type: Input
261
299
  }], added: [{
262
300
  type: Input
263
301
  }], addedChange: [{
@@ -265,4 +303,4 @@ CatalogBrowserLayerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
265
303
  }], addedLayerIsPreview: [{
266
304
  type: Output
267
305
  }] }); })();
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1icm93c2VyLWxheWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2NhdGFsb2cvY2F0YWxvZy1icm93c2VyL2NhdGFsb2ctYnJvd3Nlci1sYXllci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9jYXRhbG9nL2NhdGFsb2ctYnJvd3Nlci9jYXRhbG9nLWJyb3dzZXItbGF5ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixZQUFZLEVBR2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0QsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0lDZjdELDhCQUF5RTs7O0lBTXZFLG9DQVE4QjtJQUQ1QixxSUFBUyx3QkFBd0IsSUFBQzs7SUFFcEMsaUJBQVc7O0lBSlQsMkZBQW1FOzs7SUFSckUsa0NBRWtCO0lBQ2xCLGlHQVNXO0lBQ2IsaUJBQVM7OztJQVJKLGVBQTRCO0lBQTVCLG9EQUE0Qjs7O0lBa0NqQyxzQ0FHbUI7Ozs7SUFEakIsOERBQTJCOztBRDFCL0I7O0dBRUc7QUFPSCxNQUFNLE9BQU8sNEJBQTRCO0lBaUR2QyxZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQWhEdkMsYUFBUSxHQUE2QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxlQUFVLEdBQTZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBSWxFLHNCQUFpQixHQUE2QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RSxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVEsU0FBUyxDQUFDLENBQUM7UUFFakQsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFJL0IsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBT3BDOztXQUVHO1FBQ00sVUFBSyxHQUFHLEtBQUssQ0FBQztRQUV2Qjs7V0FFRztRQUNPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBR3BDLENBQUM7UUFFSyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBZ0JWLENBQUM7SUFkbkQ7O09BRUc7SUFDSCxJQUFJLEtBQUs7UUFDUCxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQztJQUMvQyxDQUFDO0lBSUQsUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxtQkFBbUI7UUFDZixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRTtZQUN6QixPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkM7UUFDRCxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQzFDLE1BQU0sYUFBYSxHQUFJLFlBQXFDLENBQUMsUUFBUSxDQUFDO1FBQ3RFLFFBQVEsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDakMsS0FBSyxXQUFXLENBQUMsS0FBSztnQkFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUMxQixLQUFLLFdBQVcsQ0FBQyxRQUFRO2dCQUN2QixJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFO29CQUMzQyxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUM7aUJBQy9CO3FCQUFNO29CQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7aUJBQ3pCO1lBQ0gsS0FBSyxXQUFXLENBQUMsTUFBTTtnQkFDckIsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLElBQUksRUFBRTtvQkFDckMsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDO2lCQUMxQjtxQkFBTTtvQkFDTCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2lCQUN6QjtZQUNIO2dCQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLEtBQUs7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQUs7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ25FLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWEsQ0FBQyxLQUFLO1FBQ2pCLElBQUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLEtBQUssV0FBVyxFQUFFO1lBQ2xELFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUN2QztRQUNELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRztZQUN2RCxPQUFPO1NBQ1I7UUFDRCxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbEIsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtvQkFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO3dCQUNkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztxQkFDZjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7cUJBQ1o7aUJBQ0Y7Z0JBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLE1BQU07WUFDUixLQUFLLFlBQVk7Z0JBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ3hDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDN0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2lCQUNUO2dCQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUMzQixNQUFNO1lBQ1IsS0FBSyxZQUFZO2dCQUNmLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDN0I7Z0JBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7Z0JBQzVCLE1BQU07WUFDUjtnQkFDRSxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxHQUFHO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQzNEO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssTUFBTTtRQUNaLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUM7UUFDNUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLFFBQVEsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsSUFBSSxDQUFDLFVBQVUsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxhQUFhLENBQ3JFLENBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUs7Z0JBQzFCLENBQUMsQ0FBQyxnQ0FBZ0M7Z0JBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUs7b0JBQ3JCLENBQUMsQ0FBQyxxQ0FBcUM7b0JBQ3ZDLENBQUMsQ0FBQyw2Q0FBNkMsQ0FBQztTQUNuRDthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUs7Z0JBQ3hCLENBQUMsQ0FBQyxnQ0FBZ0M7Z0JBQ2xDLENBQUMsQ0FBQyx3Q0FBd0MsQ0FBQztTQUM5QztJQUNILENBQUM7O3dHQTdMVSw0QkFBNEI7K0VBQTVCLDRCQUE0QjtRQzVCekMscUNBQWU7UUFDYix1RkFBeUU7UUFDekUsNkJBQXdLO1FBQXBFLDJHQUFTLHdCQUFvQixJQUFDO1FBQXNDLFlBQVM7UUFBQSxpQkFBSztRQUVwTCxtRkFhTztRQUNULHlDQUEyRDtRQUUzRCxpQ0FPa0M7UUFOaEMseUhBQWMsd0JBQW9CLElBQUMsNEdBQWUsd0JBQW9CLElBQW5DLGtHQU0xQix5QkFBcUIsSUFOSzs7O1FBT25DLDhCQVNXOztRQUNiLGlCQUFTLEVBQUE7UUFJWCxrQ0FBdUQ7UUFDckQseUdBR21COzs7UUFDckIsaUJBQU07O1FBOUNPLGVBQWlCO1FBQWpCLHNDQUFpQjtRQUNXLGVBQTREO1FBQTVELGdGQUE0RCx5Q0FBQTtRQUFxRSxlQUFTO1FBQVQsK0JBQVM7UUFFdEssZUFBNEI7UUFBNUIsaURBQTRCO1FBY2xCLGVBQWU7UUFBZixpQ0FBZTtRQU9sQyxlQUEyQztRQUEzQyx3RUFBMkMsK0VBQUE7UUFPeEMsZUFBeUM7UUFBekMsMkRBQXlDLDRGQUFBO1FBWTNDLGVBQThFO1FBQTlFLHVJQUE4RTs7dUZEaEJ0RSw0QkFBNEI7Y0FOeEMsU0FBUzsyQkFDRSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU07K0RBYXRDLFVBQVU7a0JBQWxCLEtBQUs7WUFFRyxrQkFBa0I7a0JBQTFCLEtBQUs7WUFLRyxLQUFLO2tCQUFiLEtBQUs7WUFLRyxLQUFLO2tCQUFiLEtBQUs7WUFLSSxXQUFXO2tCQUFwQixNQUFNO1lBS0csbUJBQW1CO2tCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgZ2V0RW50aXR5VGl0bGUsIGdldEVudGl0eUljb24gfSBmcm9tICdAaWdvMi9jb21tb24nO1xuXG5pbXBvcnQgeyBDYXRhbG9nSXRlbUxheWVyIH0gZnJvbSAnLi4vc2hhcmVkJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMYXllclNlcnZpY2UgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IExheWVyLCBUb29sdGlwVHlwZSB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMnO1xuaW1wb3J0IHsgTWV0YWRhdGFMYXllck9wdGlvbnMgfSBmcm9tICcuLi8uLi9tZXRhZGF0YS9zaGFyZWQvbWV0YWRhdGEuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBDYXRhbG9nIGJyb3dzZXIgbGF5ZXIgaXRlbVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tY2F0YWxvZy1icm93c2VyLWxheWVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhdGFsb2ctYnJvd3Nlci1sYXllci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhdGFsb2ctYnJvd3Nlci1sYXllci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBDYXRhbG9nQnJvd3NlckxheWVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgaW5SYW5nZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XG4gIHB1YmxpYyBpc1ByZXZpZXckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBpc1ByZXZpZXckJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGxhc3RUaW1lb3V0UmVxdWVzdDtcblxuICBwdWJsaWMgbGF5ZXJMZWdlbmRTaG93biQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwdWJsaWMgaWdvTGF5ZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXllcj4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIG1vdXNlSW5zaWRlQWRkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcmVzb2x1dGlvbjogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIGNhdGFsb2dBbGxvd0xlZ2VuZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBDYXRhbG9nIGxheWVyXG4gICAqL1xuICBASW5wdXQoKSBsYXllcjogQ2F0YWxvZ0l0ZW1MYXllcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbGF5ZXIgaXMgYWxyZWFkeSBhZGRlZCB0byB0aGUgbWFwXG4gICAqL1xuICBASW5wdXQoKSBhZGRlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFkZC9yZW1vdmUgYnV0dG9uIGlzIGNsaWNrZWRcbiAgICovXG4gIEBPdXRwdXQoKSBhZGRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIGFkZGVkOiBib29sZWFuO1xuICAgIGxheWVyOiBDYXRhbG9nSXRlbUxheWVyO1xuICB9PigpO1xuXG4gIEBPdXRwdXQoKSBhZGRlZExheWVySXNQcmV2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCB0aXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRFbnRpdHlUaXRsZSh0aGlzLmxheWVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBpY29uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldEVudGl0eUljb24odGhpcy5sYXllcikgfHwgJ2xheWVycyc7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzSW5SZXNvbHV0aW9uc1JhbmdlKCk7XG4gICAgdGhpcy5pc1ByZXZpZXckJCA9IHRoaXMuaXNQcmV2aWV3JC5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5hZGRlZExheWVySXNQcmV2aWV3LmVtaXQodmFsdWUpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuaXNQcmV2aWV3JCQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNvbXB1dGVUaXRsZVRvb2x0aXAoKTogc3RyaW5nIHtcbiAgICAgIGNvbnN0IGxheWVyT3B0aW9ucyA9IHRoaXMubGF5ZXIub3B0aW9ucztcbiAgICAgIGlmICghbGF5ZXJPcHRpb25zLnRvb2x0aXApIHtcbiAgICAgICAgcmV0dXJuIGdldEVudGl0eVRpdGxlKHRoaXMubGF5ZXIpO1xuICAgICAgfVxuICAgICAgY29uc3QgbGF5ZXJUb29sdGlwID0gbGF5ZXJPcHRpb25zLnRvb2x0aXA7XG4gICAgICBjb25zdCBsYXllck1ldGFkYXRhID0gKGxheWVyT3B0aW9ucyBhcyBNZXRhZGF0YUxheWVyT3B0aW9ucykubWV0YWRhdGE7XG4gICAgICBzd2l0Y2ggKGxheWVyT3B0aW9ucy50b29sdGlwLnR5cGUpIHtcbiAgICAgICAgY2FzZSBUb29sdGlwVHlwZS5USVRMRTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5sYXllci50aXRsZTtcbiAgICAgICAgY2FzZSBUb29sdGlwVHlwZS5BQlNUUkFDVDpcbiAgICAgICAgICBpZiAobGF5ZXJNZXRhZGF0YSAmJiBsYXllck1ldGFkYXRhLmFic3RyYWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gbGF5ZXJNZXRhZGF0YS5hYnN0cmFjdDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGF5ZXIudGl0bGU7XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlIFRvb2x0aXBUeXBlLkNVU1RPTTpcbiAgICAgICAgICBpZiAobGF5ZXJUb29sdGlwICYmIGxheWVyVG9vbHRpcC50ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gbGF5ZXJUb29sdGlwLnRleHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxheWVyLnRpdGxlO1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gdGhpcy5sYXllci50aXRsZTtcbiAgICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBtb3VzZSBldmVudCwgbW91c2VlbnRlciAvbW91c2VsZWF2ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG9uTW91c2VFdmVudChldmVudCkge1xuICAgIHRoaXMub25Ub2dnbGVDbGljayhldmVudCk7XG4gIH1cblxuICBhc2tGb3JMZWdlbmQoZXZlbnQpIHtcbiAgICB0aGlzLmxheWVyTGVnZW5kU2hvd24kLm5leHQoIXRoaXMubGF5ZXJMZWdlbmRTaG93biQudmFsdWUpO1xuICAgIHRoaXMubGF5ZXJTZXJ2aWNlLmNyZWF0ZUFzeW5jTGF5ZXIodGhpcy5sYXllci5vcHRpb25zKS5waXBlKGZpcnN0KCkpXG4gICAgLnN1YnNjcmliZShsYXllciA9PiB0aGlzLmlnb0xheWVyJC5uZXh0KGxheWVyKSk7XG4gIH1cblxuICAvKipcbiAgICogT24gdG9nZ2xlIGJ1dHRvbiBjbGljaywgZW1pdCB0aGUgYWRkZWQgY2hhbmdlIGV2ZW50XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgb25Ub2dnbGVDbGljayhldmVudCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5sYXN0VGltZW91dFJlcXVlc3QpO1xuICAgIH1cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlZW50ZXInICYmIHRoaXMubW91c2VJbnNpZGVBZGQgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgY2FzZSAnY2xpY2snOlxuICAgICAgICBpZiAoIXRoaXMuaXNQcmV2aWV3JC52YWx1ZSkge1xuICAgICAgICAgIGlmICh0aGlzLmFkZGVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFkZCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzUHJldmlldyQubmV4dChmYWxzZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbW91c2VlbnRlcic6XG4gICAgICAgIGlmICghdGhpcy5pc1ByZXZpZXckLnZhbHVlICYmICF0aGlzLmFkZGVkKSB7XG4gICAgICAgICAgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWRkKCk7XG4gICAgICAgICAgICB0aGlzLmlzUHJldmlldyQubmV4dCh0cnVlKTtcbiAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW91c2VJbnNpZGVBZGQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21vdXNlbGVhdmUnOlxuICAgICAgICBpZiAodGhpcy5pc1ByZXZpZXckLnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmUoKTtcbiAgICAgICAgICB0aGlzLmlzUHJldmlldyQubmV4dChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb3VzZUluc2lkZUFkZCA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0IGFkZGVkIGNoYW5nZSBldmVudCB3aXRoIGFkZGVkID0gdHJ1ZVxuICAgKi9cbiAgcHJpdmF0ZSBhZGQoKSB7XG4gICAgaWYgKCF0aGlzLmFkZGVkKSB7XG4gICAgICB0aGlzLmFkZGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWRkZWRDaGFuZ2UuZW1pdCh7IGFkZGVkOiB0cnVlLCBsYXllcjogdGhpcy5sYXllciB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW1pdCBhZGRlZCBjaGFuZ2UgZXZlbnQgd2l0aCBhZGRlZCA9IGZhbHNlXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZSgpIHtcbiAgICBpZiAodGhpcy5hZGRlZCkge1xuICAgICAgdGhpcy5hZGRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5hZGRlZENoYW5nZS5lbWl0KHsgYWRkZWQ6IGZhbHNlLCBsYXllcjogdGhpcy5sYXllciB9KTtcbiAgICB9XG4gIH1cblxuICBoYXZlR3JvdXAoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEoIXRoaXMubGF5ZXIuYWRkcmVzcyB8fCB0aGlzLmxheWVyLmFkZHJlc3Muc3BsaXQoJy4nKS5sZW5ndGggPT09IDEpO1xuICB9XG5cbiAgaXNJblJlc29sdXRpb25zUmFuZ2UoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWluUmVzb2x1dGlvbiA9IHRoaXMubGF5ZXIub3B0aW9ucy5taW5SZXNvbHV0aW9uIHx8IDA7XG4gICAgY29uc3QgbWF4UmVzb2x1dGlvbiA9IHRoaXMubGF5ZXIub3B0aW9ucy5tYXhSZXNvbHV0aW9uIHx8IEluZmluaXR5O1xuICAgIHRoaXMuaW5SYW5nZSQubmV4dChcbiAgICAgIHRoaXMucmVzb2x1dGlvbiA+PSBtaW5SZXNvbHV0aW9uICYmIHRoaXMucmVzb2x1dGlvbiA8PSBtYXhSZXNvbHV0aW9uXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5pblJhbmdlJC52YWx1ZTtcbiAgfVxuXG4gIGNvbXB1dGVUb29sdGlwKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuYWRkZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzUHJldmlldyQudmFsdWVcbiAgICAgICAgPyAnaWdvLmdlby5jYXRhbG9nLmxheWVyLmFkZFRvTWFwJ1xuICAgICAgICA6IHRoaXMuaW5SYW5nZSQudmFsdWVcbiAgICAgICAgPyAnaWdvLmdlby5jYXRhbG9nLmxheWVyLnJlbW92ZUZyb21NYXAnXG4gICAgICAgIDogJ2lnby5nZW8uY2F0YWxvZy5sYXllci5yZW1vdmVGcm9tTWFwT3V0UmFuZ2UnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5pblJhbmdlJC52YWx1ZVxuICAgICAgICA/ICdpZ28uZ2VvLmNhdGFsb2cubGF5ZXIuYWRkVG9NYXAnXG4gICAgICAgIDogJ2lnby5nZW8uY2F0YWxvZy5sYXllci5hZGRUb01hcE91dFJhbmdlJztcbiAgICB9XG4gIH1cbn1cbiIsIjxtYXQtbGlzdC1pdGVtPlxuICA8bWF0LWljb24gKm5nSWY9XCJoYXZlR3JvdXAoKVwiIG1hdC1saXN0LWF2YXRhciBzdmdJY29uPVwiYmxhbmtcIj48L21hdC1pY29uPlxuICA8aDQgbWF0LWxpbmUgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiIFtuZ0NsYXNzXT1cIihjYXRhbG9nQWxsb3dMZWdlbmQpPydpZ28tY2F0YWxvZ2xheWVyLXRpdGxlJzonJ1wiIChjbGljayk9XCJhc2tGb3JMZWdlbmQoJGV2ZW50KVwiIFttYXRUb29sdGlwXT1cImNvbXB1dGVUaXRsZVRvb2x0aXAoKVwiPnt7dGl0bGV9fTwvaDQ+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwibGF5ZXIuZXh0ZXJuYWxQcm92aWRlclwiXG4gICAgICBkaXNhYmxlZD1cInRydWVcIlxuICAgICAgbWF0LWljb24tYnV0dG9uPlxuICAgIDxtYXQtaWNvblxuICAgICAgY2xhc3M9XCJpZ28tY2F0YWxvZ2xheWVyLWV4dGVybmFsLWljb25cIlxuICAgICAgKm5nSWY9XCJsYXllci5leHRlcm5hbFByb3ZpZGVyXCJcbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmNhdGFsb2cuZXh0ZXJuYWxQcm92aWRlci5sYXllcicgfCB0cmFuc2xhdGVcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgc3ZnSWNvbj1cImVhcnRoLWFycm93LXJpZ2h0XCI+XG4gICAgPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxpZ28tbWV0YWRhdGEtYnV0dG9uIFtsYXllcl09XCJsYXllclwiPjwvaWdvLW1ldGFkYXRhLWJ1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUV2ZW50KCRldmVudClcIiAobW91c2VsZWF2ZSk9XCJvbk1vdXNlRXZlbnQoJGV2ZW50KVwiXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICBbbWF0VG9vbHRpcF09XCJjb21wdXRlVG9vbHRpcCgpIHwgdHJhbnNsYXRlXCJcbiAgICBbY29sb3JdPVwiKGlzUHJldmlldyQgfCBhc3luYykgPyAnJyA6IGFkZGVkID8gJ3dhcm4nIDogJydcIlxuICAgIChjbGljayk9XCJvblRvZ2dsZUNsaWNrKCRldmVudClcIj5cbiAgICA8bWF0LWljb25cbiAgICAgICBtYXRCYWRnZT1cImljb25cIlxuICAgICAgIGlnb01hdEJhZGdlSWNvbj1cImV5ZS1vZmZcIlxuICAgICAgIGlnb01hdEJhZGdlSW52ZXJzZUNvbG9yPVwidHJ1ZVwiXG4gICAgICAgW21hdEJhZGdlSGlkZGVuXT1cImlzSW5SZXNvbHV0aW9uc1JhbmdlKClcIlxuICAgICAgIG1hdEJhZGdlRGlzYWJsZWQ9XCJ0cnVlXCJcbiAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXG4gICAgICAgbWF0QmFkZ2VQb3NpdGlvbj1cImFmdGVyXCJcbiAgICAgICBbc3ZnSWNvbl09XCIoaXNQcmV2aWV3JCB8IGFzeW5jKSA/ICdwbHVzJyA6IGFkZGVkID8gJ2RlbGV0ZScgOiAncGx1cydcIj5cbiAgICA8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuPC9tYXQtbGlzdC1pdGVtPlxuXG48ZGl2ICNsZWdlbmQgY2xhc3M9XCJpZ28tY2F0YWxvZ2xheWVyLWxlZ2VuZC1jb250YWluZXJcIj5cbiAgPGlnby1sYXllci1sZWdlbmRcbiAgICAqbmdJZj1cIihsYXllckxlZ2VuZFNob3duJCB8IGFzeW5jKSAmJiAoaWdvTGF5ZXIkIHwgYXN5bmMpICYmIGNhdGFsb2dBbGxvd0xlZ2VuZFwiXG4gICAgW2xheWVyXT1cImlnb0xheWVyJCB8IGFzeW5jXCI+XG4gIDwvaWdvLWxheWVyLWxlZ2VuZD5cbjwvZGl2PlxuIl19
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1icm93c2VyLWxheWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2NhdGFsb2cvY2F0YWxvZy1icm93c2VyL2NhdGFsb2ctYnJvd3Nlci1sYXllci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9jYXRhbG9nL2NhdGFsb2ctYnJvd3Nlci9jYXRhbG9nLWJyb3dzZXItbGF5ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixZQUFZLEVBR2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0QsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBUyxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0lDZjdELDhCQUF5RTs7O0lBTXZFLG9DQVE4QjtJQUQ1QixxSUFBUyx3QkFBd0IsSUFBQzs7SUFFcEMsaUJBQVc7O0lBSlQsMkZBQW1FOzs7SUFSckUsa0NBRWtCO0lBQ2xCLGlHQVNXO0lBQ2IsaUJBQVM7OztJQVJKLGVBQTRCO0lBQTVCLG9EQUE0Qjs7O0lBb0NqQyxzQ0FHbUI7Ozs7SUFEakIsOERBQTJCOztBRDNCL0I7O0dBRUc7QUFPSCxNQUFNLE9BQU8sNEJBQTRCO0lBbUR2QyxZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQWxEdkMsYUFBUSxHQUE2QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxlQUFV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O1FBQ3pFLDZCQUF3SztRQUFwRSwyR0FBUyx3QkFBb0IsSUFBQztRQUFzQyxZQUFTO1FBQUEsaUJBQUs7UUFFcEwsbUZBYU87UUFDVCx5Q0FBMkQ7UUFFM0QsaUNBT2tDO1FBTmhDLHlIQUFjLHdCQUFvQixJQUFDLDRHQUFlLHdCQUFvQixJQUFuQyxrR0FNMUIseUJBQXFCLElBTks7OztRQU9uQyw4QkFXVzs7Ozs7Ozs7UUFDYixpQkFBUyxFQUFBO1FBSVgsa0NBQXVEO1FBQ3JELHlHQUdtQjs7O1FBQ3JCLGlCQUFNOztRQWhETyxlQUFpQjtRQUFqQixzQ0FBaUI7UUFDVyxlQUE0RDtRQUE1RCxnRkFBNEQseUNBQUE7UUFBcUUsZUFBUztRQUFULCtCQUFTO1FBRXRLLGVBQTRCO1FBQTVCLGlEQUE0QjtRQWNsQixlQUFlO1FBQWYsaUNBQWU7UUFPbEMsZUFBMkM7UUFBM0Msd0VBQTJDLCtFQUFBO1FBS3hDLGVBQWtDO1FBQWxDLG9EQUFrQyxtUEFBQSxvRUFBQSw0RkFBQTtRQWdCcEMsZ0JBQThFO1FBQTlFLHVJQUE4RTs7dUZEakJ0RSw0QkFBNEI7Y0FOeEMsU0FBUzsyQkFDRSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU07K0RBZ0J0QyxVQUFVO2tCQUFsQixLQUFLO1lBRUcsa0JBQWtCO2tCQUExQixLQUFLO1lBS0csS0FBSztrQkFBYixLQUFLO1lBRUcsR0FBRztrQkFBWCxLQUFLO1lBS0csS0FBSztrQkFBYixLQUFLO1lBS0ksV0FBVztrQkFBcEIsTUFBTTtZQUVHLG1CQUFtQjtrQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgZ2V0RW50aXR5VGl0bGUsIGdldEVudGl0eUljb24gfSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5cclxuaW1wb3J0IHsgYWRkZWRDaGFuZ2VFbWl0dGVyLCBDYXRhbG9nSXRlbUxheWVyIH0gZnJvbSAnLi4vc2hhcmVkJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTGF5ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTGF5ZXIsIFRvb2x0aXBUeXBlIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycyc7XHJcbmltcG9ydCB7IE1ldGFkYXRhTGF5ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vbWV0YWRhdGEvc2hhcmVkL21ldGFkYXRhLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcCc7XHJcblxyXG4vKipcclxuICogQ2F0YWxvZyBicm93c2VyIGxheWVyIGl0ZW1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLWNhdGFsb2ctYnJvd3Nlci1sYXllcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NhdGFsb2ctYnJvd3Nlci1sYXllci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY2F0YWxvZy1icm93c2VyLWxheWVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIENhdGFsb2dCcm93c2VyTGF5ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIGluUmFuZ2UkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xyXG4gIHB1YmxpYyBpc1ByZXZpZXckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuICBwdWJsaWMgaXNWaXNpYmxlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcbiAgcHJpdmF0ZSBpc1ByZXZpZXckJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgcmVzb2x1dGlvbiQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBsYXllcnMkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgbGFzdFRpbWVvdXRSZXF1ZXN0O1xyXG5cclxuICBwdWJsaWMgbGF5ZXJMZWdlbmRTaG93biQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xyXG4gIHB1YmxpYyBpZ29MYXllciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExheWVyPih1bmRlZmluZWQpO1xyXG5cclxuICBwcml2YXRlIG1vdXNlSW5zaWRlQWRkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHJlc29sdXRpb246IG51bWJlcjtcclxuXHJcbiAgQElucHV0KCkgY2F0YWxvZ0FsbG93TGVnZW5kID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIENhdGFsb2cgbGF5ZXJcclxuICAgKi9cclxuICBASW5wdXQoKSBsYXllcjogQ2F0YWxvZ0l0ZW1MYXllcjtcclxuXHJcbiAgQElucHV0KCkgbWFwOiBJZ29NYXA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGxheWVyIGlzIGFscmVhZHkgYWRkZWQgdG8gdGhlIG1hcFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFkZGVkID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYWRkL3JlbW92ZSBidXR0b24gaXMgY2xpY2tlZFxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBhZGRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YWRkZWRDaGFuZ2VFbWl0dGVyPigpO1xyXG5cclxuICBAT3V0cHV0KCkgYWRkZWRMYXllcklzUHJldmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZ2V0RW50aXR5VGl0bGUodGhpcy5sYXllcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgaWNvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGdldEVudGl0eUljb24odGhpcy5sYXllcikgfHwgJ2xheWVycyc7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzUHJldmlldyQkID0gdGhpcy5pc1ByZXZpZXckLnN1YnNjcmliZSh2YWx1ZSA9PiB0aGlzLmFkZGVkTGF5ZXJJc1ByZXZpZXcuZW1pdCh2YWx1ZSkpO1xyXG5cclxuICAgIHRoaXMubGF5ZXJzJCQgPSB0aGlzLm1hcC5sYXllcnMkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNWaXNpYmxlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlc29sdXRpb24kJCA9IHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kLnN1YnNjcmliZSgocmVzb2x1dGlvbikgPT4ge1xyXG4gICAgICB0aGlzLmlzSW5SZXNvbHV0aW9uc1JhbmdlKHJlc29sdXRpb24pO1xyXG4gICAgICB0aGlzLmlzVmlzaWJsZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuaXNQcmV2aWV3JCQudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMucmVzb2x1dGlvbiQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmxheWVycyQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBjb21wdXRlVGl0bGVUb29sdGlwKCk6IHN0cmluZyB7XHJcbiAgICAgIGNvbnN0IGxheWVyT3B0aW9ucyA9IHRoaXMubGF5ZXIub3B0aW9ucztcclxuICAgICAgaWYgKCFsYXllck9wdGlvbnMudG9vbHRpcCkge1xyXG4gICAgICAgIHJldHVybiBnZXRFbnRpdHlUaXRsZSh0aGlzLmxheWVyKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBsYXllclRvb2x0aXAgPSBsYXllck9wdGlvbnMudG9vbHRpcDtcclxuICAgICAgY29uc3QgbGF5ZXJNZXRhZGF0YSA9IChsYXllck9wdGlvbnMgYXMgTWV0YWRhdGFMYXllck9wdGlvbnMpLm1ldGFkYXRhO1xyXG4gICAgICBzd2l0Y2ggKGxheWVyT3B0aW9ucy50b29sdGlwLnR5cGUpIHtcclxuICAgICAgICBjYXNlIFRvb2x0aXBUeXBlLlRJVExFOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMubGF5ZXIudGl0bGU7XHJcbiAgICAgICAgY2FzZSBUb29sdGlwVHlwZS5BQlNUUkFDVDpcclxuICAgICAgICAgIGlmIChsYXllck1ldGFkYXRhICYmIGxheWVyTWV0YWRhdGEuYWJzdHJhY3QpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxheWVyTWV0YWRhdGEuYWJzdHJhY3Q7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sYXllci50aXRsZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICBjYXNlIFRvb2x0aXBUeXBlLkNVU1RPTTpcclxuICAgICAgICAgIGlmIChsYXllclRvb2x0aXAgJiYgbGF5ZXJUb29sdGlwLnRleHQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxheWVyVG9vbHRpcC50ZXh0O1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGF5ZXIudGl0bGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiB0aGlzLmxheWVyLnRpdGxlO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBtb3VzZSBldmVudCwgbW91c2VlbnRlciAvbW91c2VsZWF2ZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG9uTW91c2VFdmVudChldmVudCkge1xyXG4gICAgdGhpcy5vblRvZ2dsZUNsaWNrKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGFza0ZvckxlZ2VuZChldmVudCkge1xyXG4gICAgdGhpcy5sYXllckxlZ2VuZFNob3duJC5uZXh0KCF0aGlzLmxheWVyTGVnZW5kU2hvd24kLnZhbHVlKTtcclxuICAgIHRoaXMubGF5ZXJTZXJ2aWNlLmNyZWF0ZUFzeW5jTGF5ZXIodGhpcy5sYXllci5vcHRpb25zKS5waXBlKGZpcnN0KCkpXHJcbiAgICAuc3Vic2NyaWJlKGxheWVyID0+IHRoaXMuaWdvTGF5ZXIkLm5leHQobGF5ZXIpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIHRvZ2dsZSBidXR0b24gY2xpY2ssIGVtaXQgdGhlIGFkZGVkIGNoYW5nZSBldmVudFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG9uVG9nZ2xlQ2xpY2soZXZlbnQpIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlZW50ZXInICYmIHRoaXMubW91c2VJbnNpZGVBZGQgKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG4gICAgICBjYXNlICdjbGljayc6XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzUHJldmlldyQudmFsdWUpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmFkZGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlKGV2ZW50KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkKGV2ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc1ByZXZpZXckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb3VzZWVudGVyJzpcclxuICAgICAgICBpZiAoIXRoaXMuaXNQcmV2aWV3JC52YWx1ZSAmJiAhdGhpcy5hZGRlZCkge1xyXG4gICAgICAgICAgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hZGQoZXZlbnQpO1xyXG4gICAgICAgICAgICB0aGlzLmlzUHJldmlldyQubmV4dCh0cnVlKTtcclxuICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubW91c2VJbnNpZGVBZGQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb3VzZWxlYXZlJzpcclxuICAgICAgICBpZiAodGhpcy5pc1ByZXZpZXckLnZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZShldmVudCk7XHJcbiAgICAgICAgICB0aGlzLmlzUHJldmlldyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubW91c2VJbnNpZGVBZGQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXQgYWRkZWQgY2hhbmdlIGV2ZW50IHdpdGggYWRkZWQgPSB0cnVlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuYWRkZWQpIHtcclxuICAgICAgdGhpcy5hZGRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuYWRkZWRDaGFuZ2UuZW1pdCh7IGFkZGVkOiB0cnVlLCBsYXllcjogdGhpcy5sYXllciwgZXZlbnQ6IGV2ZW50IH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdCBhZGRlZCBjaGFuZ2UgZXZlbnQgd2l0aCBhZGRlZCA9IGZhbHNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZW1vdmUoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5hZGRlZCkge1xyXG4gICAgICB0aGlzLmFkZGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuYWRkZWRDaGFuZ2UuZW1pdCh7IGFkZGVkOiBmYWxzZSwgbGF5ZXI6IHRoaXMubGF5ZXIsIGV2ZW50OiBldmVudCB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhdmVHcm91cCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhKCF0aGlzLmxheWVyLmFkZHJlc3MgfHwgdGhpcy5sYXllci5hZGRyZXNzLnNwbGl0KCcuJykubGVuZ3RoID09PSAxKTtcclxuICB9XHJcblxyXG4gIGlzSW5SZXNvbHV0aW9uc1JhbmdlKHJlc29sdXRpb246IG51bWJlcikge1xyXG4gICAgY29uc3QgbWluUmVzb2x1dGlvbiA9ICghdGhpcy5sYXllci5vcHRpb25zLm1pblJlc29sdXRpb24gfHwgTnVtYmVyLmlzTmFOKHRoaXMubGF5ZXIub3B0aW9ucy5taW5SZXNvbHV0aW9uKSlcclxuICAgICAgPyAwIDogdGhpcy5sYXllci5vcHRpb25zLm1pblJlc29sdXRpb247XHJcbiAgICBjb25zdCBtYXhSZXNvbHV0aW9uID0gKCF0aGlzLmxheWVyLm9wdGlvbnMubWF4UmVzb2x1dGlvbiB8fCBOdW1iZXIuaXNOYU4odGhpcy5sYXllci5vcHRpb25zLm1heFJlc29sdXRpb24pKVxyXG4gICAgPyBJbmZpbml0eSA6IHRoaXMubGF5ZXIub3B0aW9ucy5tYXhSZXNvbHV0aW9uO1xyXG4gICAgdGhpcy5pblJhbmdlJC5uZXh0KFxyXG4gICAgICByZXNvbHV0aW9uID49IG1pblJlc29sdXRpb24gJiYgcmVzb2x1dGlvbiA8PSBtYXhSZXNvbHV0aW9uXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNWaXNpYmxlKCkge1xyXG4gICAgaWYgKHRoaXMubGF5ZXI/LmlkKSB7XHJcbiAgICAgIGNvbnN0IG9MYXllciA9IHRoaXMubWFwLmdldExheWVyQnlJZCh0aGlzLmxheWVyPy5pZCk7XHJcbiAgICAgIG9MYXllciA/IHRoaXMuaXNWaXNpYmxlJC5uZXh0KG9MYXllci52aXNpYmxlKSA6IHRoaXMuaXNWaXNpYmxlJC5uZXh0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEJhZGdlSWNvbigpIHtcclxuICAgIGlmICh0aGlzLmluUmFuZ2UkLmdldFZhbHVlKCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlJC5nZXRWYWx1ZSgpID8gJycgOiAnZXllLW9mZic7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ2V5ZS1vZmYnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcHV0ZVRvb2x0aXAoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmFkZGVkKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzUHJldmlldyQudmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gJ2lnby5nZW8uY2F0YWxvZy5sYXllci5hZGRUb01hcCc7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pblJhbmdlJC52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZSQudmFsdWVcclxuICAgICAgICA/ICdpZ28uZ2VvLmNhdGFsb2cubGF5ZXIucmVtb3ZlRnJvbU1hcCdcclxuICAgICAgICA6ICdpZ28uZ2VvLmNhdGFsb2cubGF5ZXIucmVtb3ZlRnJvbU1hcE5vdFZpc2libGUnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAnaWdvLmdlby5jYXRhbG9nLmxheWVyLnJlbW92ZUZyb21NYXBPdXRSYW5nZSc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmluUmFuZ2UkLnZhbHVlXHJcbiAgICAgICAgPyAnaWdvLmdlby5jYXRhbG9nLmxheWVyLmFkZFRvTWFwJ1xyXG4gICAgICAgIDogJ2lnby5nZW8uY2F0YWxvZy5sYXllci5hZGRUb01hcE91dFJhbmdlJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG1hdC1saXN0LWl0ZW0+XHJcbiAgPG1hdC1pY29uICpuZ0lmPVwiaGF2ZUdyb3VwKClcIiBtYXQtbGlzdC1hdmF0YXIgc3ZnSWNvbj1cImJsYW5rXCI+PC9tYXQtaWNvbj5cclxuICA8aDQgbWF0LWxpbmUgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiIFtuZ0NsYXNzXT1cIihjYXRhbG9nQWxsb3dMZWdlbmQpPydpZ28tY2F0YWxvZ2xheWVyLXRpdGxlJzonJ1wiIChjbGljayk9XCJhc2tGb3JMZWdlbmQoJGV2ZW50KVwiIFttYXRUb29sdGlwXT1cImNvbXB1dGVUaXRsZVRvb2x0aXAoKVwiPnt7dGl0bGV9fTwvaDQ+XHJcblxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cImxheWVyLmV4dGVybmFsUHJvdmlkZXJcIlxyXG4gICAgICBkaXNhYmxlZD1cInRydWVcIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b24+XHJcbiAgICA8bWF0LWljb25cclxuICAgICAgY2xhc3M9XCJpZ28tY2F0YWxvZ2xheWVyLWV4dGVybmFsLWljb25cIlxyXG4gICAgICAqbmdJZj1cImxheWVyLmV4dGVybmFsUHJvdmlkZXJcIlxyXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uY2F0YWxvZy5leHRlcm5hbFByb3ZpZGVyLmxheWVyJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICBzdmdJY29uPVwiZWFydGgtYXJyb3ctcmlnaHRcIj5cclxuICAgIDwvbWF0LWljb24+XHJcbiAgPC9idXR0b24+XHJcbiAgPGlnby1tZXRhZGF0YS1idXR0b24gW2xheWVyXT1cImxheWVyXCI+PC9pZ28tbWV0YWRhdGEtYnV0dG9uPlxyXG5cclxuICA8YnV0dG9uXHJcbiAgICAobW91c2VlbnRlcik9XCJvbk1vdXNlRXZlbnQoJGV2ZW50KVwiIChtb3VzZWxlYXZlKT1cIm9uTW91c2VFdmVudCgkZXZlbnQpXCJcclxuICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcclxuICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gICAgW21hdFRvb2x0aXBdPVwiY29tcHV0ZVRvb2x0aXAoKSB8IHRyYW5zbGF0ZVwiXHJcbiAgICBbY29sb3JdPVwiKGlzUHJldmlldyQgfCBhc3luYykgPyAnJyA6IGFkZGVkID8gJ3dhcm4nIDogJydcIlxyXG4gICAgKGNsaWNrKT1cIm9uVG9nZ2xlQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgPG1hdC1pY29uXHJcbiAgICAgICBtYXRCYWRnZT1cImljb25cIlxyXG4gICAgICAgW2lnb01hdEJhZGdlSWNvbl09XCJnZXRCYWRnZUljb24oKVwiXHJcbiAgICAgICBpZ29NYXRCYWRnZUNvbG9yPVwicmdiYSgwLDAsMCwwLjg3KVwiXHJcbiAgICAgICBpZ29NYXRCYWRnZUJhY2tncm91bmRDb2xvcj1cIm5vbmVcIlxyXG4gICAgICAgaWdvTWF0QmFkZ2VJbnZlcnNlQ29sb3I9XCJ0cnVlXCJcclxuICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIoKGluUmFuZ2UkIHwgYXN5bmMpICYmIChpc1Zpc2libGUkIHwgYXN5bmMpID09PSB0cnVlKSB8fCAoKGluUmFuZ2UkIHwgYXN5bmMpICYmICFhZGRlZCkgfHwgKChpblJhbmdlJCB8IGFzeW5jKSAmJiAoaXNQcmV2aWV3JCB8IGFzeW5jKSlcIlxyXG4gICAgICAgW21hdEJhZGdlRGlzYWJsZWRdPVwiKGluUmFuZ2UkIHwgYXN5bmMpID09PSBmYWxzZVwiXHJcbiAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXHJcbiAgICAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYWZ0ZXJcIlxyXG4gICAgICAgW3N2Z0ljb25dPVwiKGlzUHJldmlldyQgfCBhc3luYykgPyAncGx1cycgOiBhZGRlZCA/ICdkZWxldGUnIDogJ3BsdXMnXCI+XHJcbiAgICA8L21hdC1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuPC9tYXQtbGlzdC1pdGVtPlxyXG5cclxuPGRpdiAjbGVnZW5kIGNsYXNzPVwiaWdvLWNhdGFsb2dsYXllci1sZWdlbmQtY29udGFpbmVyXCI+XHJcbiAgPGlnby1sYXllci1sZWdlbmRcclxuICAgICpuZ0lmPVwiKGxheWVyTGVnZW5kU2hvd24kIHwgYXN5bmMpICYmIChpZ29MYXllciQgfCBhc3luYykgJiYgY2F0YWxvZ0FsbG93TGVnZW5kXCJcclxuICAgIFtsYXllcl09XCJpZ29MYXllciQgfCBhc3luY1wiPlxyXG4gIDwvaWdvLWxheWVyLWxlZ2VuZD5cclxuPC9kaXY+XHJcbiJdfQ==