@igo2/geo 17.0.1-next.2 → 18.0.0-next.10

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 (418) hide show
  1. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +4 -4
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +7 -9
  3. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +16 -13
  4. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +5 -5
  5. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +4 -4
  6. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +4 -4
  7. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +4 -4
  8. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +5 -5
  9. package/esm2022/lib/catalog/catalog.module.mjs +5 -5
  10. package/esm2022/lib/catalog/shared/catalog.enum.mjs +1 -1
  11. package/esm2022/lib/catalog/shared/catalog.service.mjs +4 -4
  12. package/esm2022/lib/datasource/shared/capabilities.service.mjs +4 -4
  13. package/esm2022/lib/datasource/shared/datasource.service.mjs +4 -4
  14. package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  15. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +9 -1
  16. package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
  17. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +8 -1
  18. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  19. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +8 -1
  20. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  21. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +8 -1
  22. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  23. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +8 -1
  24. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  25. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +8 -1
  26. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
  27. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -1
  28. package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
  29. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
  30. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
  31. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +8 -1
  32. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  33. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
  34. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  35. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  36. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +73 -2
  37. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +4 -4
  38. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  39. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +8 -1
  40. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +7 -5
  41. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  42. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  43. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  44. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  45. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +4 -4
  46. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +4 -4
  47. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +4 -4
  48. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +4 -4
  49. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +4 -4
  50. package/esm2022/lib/directions/directions.component.mjs +10 -4
  51. package/esm2022/lib/directions/directions.module.mjs +5 -5
  52. package/esm2022/lib/directions/shared/directions.service.mjs +4 -4
  53. package/esm2022/lib/download/download-button/download-button.component.mjs +10 -22
  54. package/esm2022/lib/download/download.module.mjs +5 -5
  55. package/esm2022/lib/download/shared/download.service.mjs +4 -4
  56. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +4 -4
  57. package/esm2022/lib/draw/draw/draw-popup.component.mjs +4 -4
  58. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +4 -4
  59. package/esm2022/lib/draw/draw/draw.component.mjs +8 -15
  60. package/esm2022/lib/draw/draw/draw.module.mjs +5 -5
  61. package/esm2022/lib/draw/drawingTool.module.mjs +5 -5
  62. package/esm2022/lib/draw/shared/draw-icon.service.mjs +4 -4
  63. package/esm2022/lib/environment/environment.interface.mjs +1 -1
  64. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +5 -5
  65. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +4 -4
  66. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +5 -5
  67. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +4 -4
  68. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +5 -5
  69. package/esm2022/lib/feature/feature.module.mjs +5 -5
  70. package/esm2022/lib/feature/shared/feature-store.utils.mjs +7 -6
  71. package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
  72. package/esm2022/lib/feature/shared/store.mjs +1 -1
  73. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +3 -3
  74. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +7 -4
  75. package/esm2022/lib/feature/shared/strategies/selection.mjs +5 -4
  76. package/esm2022/lib/filter/filter.module.mjs +5 -5
  77. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +6 -6
  78. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +4 -4
  79. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +4 -4
  80. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +4 -4
  81. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +4 -4
  82. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +4 -4
  83. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +5 -5
  84. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +8 -6
  85. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +4 -4
  86. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +11 -4
  87. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +4 -4
  88. package/esm2022/lib/filter/shared/ogc-filter.mjs +7 -2
  89. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +4 -4
  90. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +4 -4
  91. package/esm2022/lib/filter/shared/time-filter.service.mjs +4 -4
  92. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +4 -4
  93. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +5 -11
  94. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +5 -11
  95. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +5 -5
  96. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +15 -12
  97. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +5 -5
  98. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +7 -5
  99. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +7 -18
  100. package/esm2022/lib/geo.module.mjs +5 -5
  101. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +4 -4
  102. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +4 -4
  103. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +5 -5
  104. package/esm2022/lib/geometry/geometry.module.mjs +5 -5
  105. package/esm2022/lib/import-export/export-button/export-button.component.mjs +7 -20
  106. package/esm2022/lib/import-export/import-export/import-export.component.mjs +215 -323
  107. package/esm2022/lib/import-export/import-export.module.mjs +5 -5
  108. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +4 -4
  109. package/esm2022/lib/import-export/shared/export.interface.mjs +1 -1
  110. package/esm2022/lib/import-export/shared/export.service.mjs +257 -91
  111. package/esm2022/lib/import-export/shared/export.type.mjs +9 -9
  112. package/esm2022/lib/import-export/shared/export.utils.mjs +5 -1
  113. package/esm2022/lib/import-export/shared/import.service.mjs +4 -4
  114. package/esm2022/lib/import-export/shared/import.utils.mjs +3 -3
  115. package/esm2022/lib/layer/index.mjs +10 -5
  116. package/esm2022/lib/layer/layer-group/index.mjs +2 -0
  117. package/esm2022/lib/layer/layer-group/layer-group.component.mjs +103 -0
  118. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +62 -129
  119. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +7 -10
  120. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +4 -4
  121. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +8 -9
  122. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +16 -23
  123. package/esm2022/lib/layer/layer-list/index.mjs +1 -3
  124. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +177 -776
  125. package/esm2022/lib/layer/layer-list-tool/index.mjs +1 -2
  126. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +52 -85
  127. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -2
  128. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +57 -17
  129. package/esm2022/lib/layer/layer-search/index.mjs +2 -0
  130. package/esm2022/lib/layer/layer-search/layer-search.component.mjs +65 -0
  131. package/esm2022/lib/layer/layer-unavailable/index.mjs +3 -0
  132. package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +25 -0
  133. package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +35 -0
  134. package/esm2022/lib/layer/layer-viewer/index.mjs +3 -0
  135. package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +226 -0
  136. package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +2 -0
  137. package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +2 -0
  138. package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +207 -0
  139. package/esm2022/lib/layer/layer-visibility-button/index.mjs +2 -0
  140. package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +83 -0
  141. package/esm2022/lib/layer/layer.module.mjs +54 -36
  142. package/esm2022/lib/layer/shared/index.mjs +2 -1
  143. package/esm2022/lib/layer/shared/layer-controller.mjs +316 -0
  144. package/esm2022/lib/layer/shared/layer-selection.mjs +38 -0
  145. package/esm2022/lib/layer/shared/layer.service.mjs +73 -27
  146. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  147. package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
  148. package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  149. package/esm2022/lib/layer/shared/layers/image-layer.mjs +8 -3
  150. package/esm2022/lib/layer/shared/layers/index.mjs +6 -1
  151. package/esm2022/lib/layer/shared/layers/layer-base.mjs +199 -0
  152. package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +2 -0
  153. package/esm2022/lib/layer/shared/layers/layer-group.mjs +120 -0
  154. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -11
  155. package/esm2022/lib/layer/shared/layers/layer.mjs +114 -118
  156. package/esm2022/lib/layer/shared/layers/linked/index.mjs +4 -0
  157. package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +12 -0
  158. package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +242 -0
  159. package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +70 -0
  160. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +8 -3
  161. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +22 -19
  162. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +8 -3
  163. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +4 -4
  164. package/esm2022/lib/layer/utils/layer.utils.mjs +47 -1
  165. package/esm2022/lib/layer/utils/outputLegend.mjs +5 -1
  166. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +6 -6
  167. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +11 -9
  168. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +4 -4
  169. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +4 -4
  170. package/esm2022/lib/map/info-section/info-section.component.mjs +4 -4
  171. package/esm2022/lib/map/map-browser/map-browser.component.mjs +4 -4
  172. package/esm2022/lib/map/map-center/map-center.component.mjs +4 -4
  173. package/esm2022/lib/map/map.module.mjs +5 -5
  174. package/esm2022/lib/map/menu-button/menu-button.component.mjs +4 -4
  175. package/esm2022/lib/map/offline-button/offline-button.component.mjs +4 -4
  176. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +4 -4
  177. package/esm2022/lib/map/shared/hover-feature.directive.mjs +5 -13
  178. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +113 -123
  179. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +4 -4
  180. package/esm2022/lib/map/shared/map.abstract.mjs +4 -3
  181. package/esm2022/lib/map/shared/map.mjs +7 -243
  182. package/esm2022/lib/map/shared/map.service.mjs +4 -4
  183. package/esm2022/lib/map/shared/mapOffline.directive.mjs +12 -8
  184. package/esm2022/lib/map/shared/projection.service.mjs +4 -4
  185. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +4 -4
  186. package/esm2022/lib/map/utils/index.mjs +2 -0
  187. package/esm2022/lib/map/utils/layer-watcher.mjs +45 -13
  188. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +4 -5
  189. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +4 -4
  190. package/esm2022/lib/measure/measure.module.mjs +5 -5
  191. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +4 -4
  192. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +4 -4
  193. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +4 -4
  194. package/esm2022/lib/measure/measurer/measurer.component.mjs +10 -28
  195. package/esm2022/lib/measure/measurer/measurer.module.mjs +5 -5
  196. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +11 -23
  197. package/esm2022/lib/metadata/metadata.module.mjs +5 -5
  198. package/esm2022/lib/metadata/shared/metadata.service.mjs +4 -4
  199. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +5 -8
  200. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +21 -22
  201. package/esm2022/lib/offline/index.mjs +3 -1
  202. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +16 -17
  203. package/esm2022/lib/offline/offline.interface.mjs +2 -0
  204. package/esm2022/lib/offline/offline.provider.mjs +51 -0
  205. package/esm2022/lib/offline/shared/geo-network.service.mjs +15 -16
  206. package/esm2022/lib/overlay/shared/overlay.mjs +3 -2
  207. package/esm2022/lib/print/print/print.component.mjs +4 -4
  208. package/esm2022/lib/print/print-form/print-form.component.mjs +4 -4
  209. package/esm2022/lib/print/print.module.mjs +5 -5
  210. package/esm2022/lib/print/shared/print.service.mjs +6 -6
  211. package/esm2022/lib/query/query.module.mjs +5 -5
  212. package/esm2022/lib/query/shared/query-search-source.mjs +4 -4
  213. package/esm2022/lib/query/shared/query.directive.mjs +12 -8
  214. package/esm2022/lib/query/shared/query.service.mjs +10 -10
  215. package/esm2022/lib/query/shared/query.utils.mjs +5 -1
  216. package/esm2022/lib/search/search-bar/search-bar.component.mjs +4 -4
  217. package/esm2022/lib/search/search-bar/search-bar.module.mjs +5 -5
  218. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +4 -4
  219. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +18 -12
  220. package/esm2022/lib/search/search-results/search-results-item.component.mjs +4 -4
  221. package/esm2022/lib/search/search-results/search-results.component.mjs +4 -4
  222. package/esm2022/lib/search/search-results/search-results.module.mjs +5 -5
  223. package/esm2022/lib/search/search-selector/search-selector.component.mjs +4 -4
  224. package/esm2022/lib/search/search-selector/search-selector.module.mjs +5 -5
  225. package/esm2022/lib/search/search-settings/search-settings.component.mjs +4 -4
  226. package/esm2022/lib/search/search-settings/search-settings.module.mjs +5 -5
  227. package/esm2022/lib/search/search.module.mjs +5 -5
  228. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +5 -14
  229. package/esm2022/lib/search/shared/search.service.mjs +4 -4
  230. package/esm2022/lib/search/shared/sources/cadastre.mjs +4 -4
  231. package/esm2022/lib/search/shared/sources/coordinates.mjs +7 -7
  232. package/esm2022/lib/search/shared/sources/icherche.mjs +10 -10
  233. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  234. package/esm2022/lib/search/shared/sources/ilayer.mjs +7 -7
  235. package/esm2022/lib/search/shared/sources/nominatim.mjs +4 -4
  236. package/esm2022/lib/search/shared/sources/storedqueries.mjs +7 -7
  237. package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
  238. package/esm2022/lib/search/shared/sources/workspace.mjs +4 -4
  239. package/esm2022/lib/style/style-list/style-list.module.mjs +5 -5
  240. package/esm2022/lib/style/style-list/style-list.service.mjs +4 -4
  241. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +4 -4
  242. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +4 -4
  243. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +4 -4
  244. package/esm2022/lib/style/style-service/draw-style.service.mjs +4 -4
  245. package/esm2022/lib/style/style-service/style.service.mjs +4 -4
  246. package/esm2022/lib/style/style.module.mjs +5 -5
  247. package/esm2022/lib/toast/toast.component.mjs +4 -4
  248. package/esm2022/lib/toast/toast.module.mjs +5 -5
  249. package/esm2022/lib/utils/id-generator.mjs +1 -1
  250. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +4 -4
  251. package/esm2022/lib/wkt/shared/wkt.service.mjs +4 -4
  252. package/esm2022/lib/wkt/wkt.module.mjs +5 -5
  253. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +4 -4
  254. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +5 -5
  255. package/esm2022/lib/workspace/shared/edition-workspace.mjs +6 -4
  256. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +22 -20
  257. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +4 -4
  258. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +20 -5
  259. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +25 -7
  260. package/esm2022/lib/workspace/shared/workspace.utils.mjs +6 -3
  261. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +5 -5
  262. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +5 -5
  263. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +9 -5
  264. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +5 -5
  265. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +7 -6
  266. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +5 -5
  267. package/esm2022/lib/workspace/workspace.module.mjs +5 -5
  268. package/fesm2022/igo2-geo.mjs +19275 -18300
  269. package/fesm2022/igo2-geo.mjs.map +1 -1
  270. package/lib/catalog/shared/catalog.enum.d.ts +1 -3
  271. package/lib/datasource/shared/capabilities.service.d.ts +7 -2
  272. package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +1 -0
  273. package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +1 -0
  274. package/lib/datasource/shared/datasources/carto-datasource.d.ts +1 -0
  275. package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +0 -2
  276. package/lib/datasource/shared/datasources/cluster-datasource.d.ts +1 -0
  277. package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +0 -1
  278. package/lib/datasource/shared/datasources/datasource.d.ts +1 -0
  279. package/lib/datasource/shared/datasources/datasource.interface.d.ts +1 -2
  280. package/lib/datasource/shared/datasources/feature-datasource.d.ts +1 -0
  281. package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +0 -3
  282. package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +1 -0
  283. package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +0 -2
  284. package/lib/datasource/shared/datasources/mvt-datasource.d.ts +1 -0
  285. package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +0 -2
  286. package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +0 -2
  287. package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +1 -0
  288. package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +0 -2
  289. package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +0 -2
  290. package/lib/datasource/shared/datasources/wfs-datasource.d.ts +16 -0
  291. package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +3 -4
  292. package/lib/datasource/shared/datasources/wms-datasource.d.ts +1 -0
  293. package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +7 -7
  294. package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +0 -2
  295. package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +0 -2
  296. package/lib/download/download-button/download-button.component.d.ts +4 -8
  297. package/lib/download/shared/download.service.d.ts +1 -1
  298. package/lib/draw/draw/draw.component.d.ts +2 -2
  299. package/lib/environment/environment.interface.d.ts +2 -0
  300. package/lib/feature/shared/feature-store.utils.d.ts +2 -2
  301. package/lib/feature/shared/feature.interfaces.d.ts +1 -1
  302. package/lib/feature/shared/store.d.ts +2 -2
  303. package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +1 -1
  304. package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +1 -1
  305. package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +2 -2
  306. package/lib/filter/shared/filterable-datasource.pipe.d.ts +2 -2
  307. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +3 -3
  308. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +3 -5
  309. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -5
  310. package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
  311. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +5 -5
  312. package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
  313. package/lib/filter/time-filter-list/time-filter-list.component.d.ts +2 -7
  314. package/lib/import-export/export-button/export-button.component.d.ts +3 -7
  315. package/lib/import-export/import-export/import-export.component.d.ts +23 -16
  316. package/lib/import-export/shared/export.interface.d.ts +10 -3
  317. package/lib/import-export/shared/export.service.d.ts +28 -15
  318. package/lib/import-export/shared/export.type.d.ts +8 -16
  319. package/lib/import-export/shared/export.utils.d.ts +2 -0
  320. package/lib/layer/index.d.ts +9 -4
  321. package/lib/layer/layer-group/index.d.ts +1 -0
  322. package/lib/layer/layer-group/layer-group.component.d.ts +30 -0
  323. package/lib/layer/layer-item/layer-item.component.d.ts +19 -38
  324. package/lib/layer/layer-legend/layer-legend.component.d.ts +2 -5
  325. package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +6 -7
  326. package/lib/layer/layer-list/index.d.ts +0 -2
  327. package/lib/layer/layer-list/layer-list.component.d.ts +51 -123
  328. package/lib/layer/layer-list-tool/index.d.ts +0 -1
  329. package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +19 -26
  330. package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +5 -1
  331. package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +9 -8
  332. package/lib/layer/layer-search/index.d.ts +1 -0
  333. package/lib/layer/layer-search/layer-search.component.d.ts +16 -0
  334. package/lib/layer/layer-unavailable/index.d.ts +2 -0
  335. package/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.d.ts +10 -0
  336. package/lib/layer/layer-unavailable/layer-unavailable.component.d.ts +11 -0
  337. package/lib/layer/layer-viewer/index.d.ts +2 -0
  338. package/lib/layer/layer-viewer/layer-viewer.component.d.ts +52 -0
  339. package/lib/layer/layer-viewer/layer-viewer.interface.d.ts +22 -0
  340. package/lib/layer/layer-viewer-bottom-actions/index.d.ts +1 -0
  341. package/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.d.ts +44 -0
  342. package/lib/layer/layer-visibility-button/index.d.ts +1 -0
  343. package/lib/layer/layer-visibility-button/layer-visibility-button.component.d.ts +22 -0
  344. package/lib/layer/layer.module.d.ts +18 -6
  345. package/lib/layer/shared/index.d.ts +1 -0
  346. package/lib/layer/shared/layer-controller.d.ts +81 -0
  347. package/lib/layer/shared/layer-selection.d.ts +14 -0
  348. package/lib/layer/shared/layer.service.d.ts +17 -8
  349. package/lib/layer/shared/layers/any-layer.d.ts +3 -6
  350. package/lib/layer/shared/layers/any-layer.interface.d.ts +8 -6
  351. package/lib/layer/shared/layers/image-layer.d.ts +5 -2
  352. package/lib/layer/shared/layers/image-layer.interface.d.ts +1 -4
  353. package/lib/layer/shared/layers/index.d.ts +5 -0
  354. package/lib/layer/shared/layers/layer-base.d.ts +75 -0
  355. package/lib/layer/shared/layers/layer-group.d.ts +32 -0
  356. package/lib/layer/shared/layers/layer-group.interface.d.ts +8 -0
  357. package/lib/layer/shared/layers/layer.d.ts +28 -49
  358. package/lib/layer/shared/layers/layer.interface.d.ts +23 -41
  359. package/lib/layer/shared/layers/linked/index.d.ts +3 -0
  360. package/lib/layer/shared/layers/linked/linked-layer.d.ts +35 -0
  361. package/lib/layer/shared/layers/linked/linked-layer.interface.d.ts +32 -0
  362. package/lib/layer/shared/layers/linked/linked-layer.utils.d.ts +9 -0
  363. package/lib/layer/shared/layers/tile-layer.d.ts +5 -2
  364. package/lib/layer/shared/layers/vector-layer.d.ts +8 -7
  365. package/lib/layer/shared/layers/vectortile-layer.d.ts +5 -2
  366. package/lib/layer/utils/layer.utils.d.ts +12 -2
  367. package/lib/layer/utils/outputLegend.d.ts +2 -2
  368. package/lib/map/shared/hover-feature.directive.d.ts +0 -1
  369. package/lib/map/shared/linkedLayers.utils.d.ts +13 -17
  370. package/lib/map/shared/map.abstract.d.ts +12 -29
  371. package/lib/map/shared/map.d.ts +10 -85
  372. package/lib/map/shared/map.service.d.ts +1 -1
  373. package/lib/map/utils/index.d.ts +1 -0
  374. package/lib/map/utils/layer-watcher.d.ts +18 -8
  375. package/lib/measure/measurer/measurer.component.d.ts +0 -8
  376. package/lib/metadata/metadata-button/metadata-button.component.d.ts +3 -7
  377. package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
  378. package/lib/offline/index.d.ts +2 -0
  379. package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
  380. package/lib/offline/offline.interface.d.ts +3 -0
  381. package/lib/offline/offline.provider.d.ts +3 -0
  382. package/lib/offline/shared/geo-network.service.d.ts +3 -3
  383. package/lib/overlay/shared/overlay.d.ts +2 -1
  384. package/lib/query/shared/query.service.d.ts +1 -1
  385. package/lib/query/shared/query.utils.d.ts +2 -1
  386. package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
  387. package/lib/search/shared/search-pointer-summary.directive.d.ts +0 -1
  388. package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
  389. package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
  390. package/lib/search/shared/sources/icherche.providers.d.ts +1 -1
  391. package/lib/search/shared/sources/ilayer.interfaces.d.ts +1 -1
  392. package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
  393. package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
  394. package/lib/search/shared/sources/storedqueries.providers.d.ts +2 -2
  395. package/lib/search/shared/sources/workspace.interfaces.d.ts +1 -1
  396. package/lib/search/shared/sources/workspace.providers.d.ts +1 -1
  397. package/lib/utils/id-generator.d.ts +5 -5
  398. package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
  399. package/locale/en.geo.json +27 -3
  400. package/locale/fr.geo.json +26 -3
  401. package/package.json +6 -7
  402. package/src/_index.scss +2 -1
  403. package/src/geo-theme.scss +1 -1
  404. package/src/lib/layer/layer-group/layer-group.theme.scss +28 -0
  405. package/src/lib/layer/layer-item/layer-item.theme.scss +12 -9
  406. package/src/lib/layer/layer-legend/layer-legend.theme.scss +30 -0
  407. package/src/lib/layer/layer-list/layer-list.theme.scss +50 -0
  408. package/src/lib/layer/layer-unavailable/layer-unavailable.theme.scss +19 -0
  409. package/src/lib/layer/layer-viewer/_layer-viewer.theme.scss +16 -0
  410. package/src/lib/layer/layer-visibility-button/layer-visibility-button.theme.scss +27 -0
  411. package/src/lib/layer/layer.theming.scss +14 -3
  412. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +0 -70
  413. package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +0 -19
  414. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +0 -7
  415. package/lib/layer/layer-list/layer-list-binding.directive.d.ts +0 -19
  416. package/lib/layer/layer-list/layer-list.enum.d.ts +0 -15
  417. package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +0 -5
  418. package/src/lib/layer/layer-legend/layer-legend.theming.scss +0 -10
@@ -12,11 +12,11 @@ export class IgoQueryModule {
12
12
  providers: [provideQuerySearchSource()]
13
13
  };
14
14
  }
15
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: IgoQueryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: IgoQueryModule, imports: [CommonModule, IgoMessageModule, QueryDirective], exports: [QueryDirective] });
17
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: IgoQueryModule, providers: [QueryService], imports: [CommonModule, IgoMessageModule] });
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoQueryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: IgoQueryModule, imports: [CommonModule, IgoMessageModule, QueryDirective], exports: [QueryDirective] });
17
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoQueryModule, providers: [QueryService], imports: [CommonModule, IgoMessageModule] });
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: IgoQueryModule, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoQueryModule, decorators: [{
20
20
  type: NgModule,
21
21
  args: [{
22
22
  imports: [CommonModule, IgoMessageModule, QueryDirective],
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
24
24
  providers: [QueryService]
25
25
  }]
26
26
  }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcXVlcnkvcXVlcnkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQU90RCxNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYztZQUN4QixTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ3hDLENBQUM7SUFDSixDQUFDO3VHQU5VLGNBQWM7d0dBQWQsY0FBYyxZQUpmLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLGFBQzlDLGNBQWM7d0dBR2IsY0FBYyxhQUZkLENBQUMsWUFBWSxDQUFDLFlBRmYsWUFBWSxFQUFFLGdCQUFnQjs7MkZBSTdCLGNBQWM7a0JBTDFCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsQ0FBQztvQkFDekQsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUN6QixTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElnb01lc3NhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBwcm92aWRlUXVlcnlTZWFyY2hTb3VyY2UgfSBmcm9tICcuL3NoYXJlZC9xdWVyeS1zZWFyY2gtc291cmNlLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBRdWVyeURpcmVjdGl2ZSB9IGZyb20gJy4vc2hhcmVkL3F1ZXJ5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBRdWVyeVNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9xdWVyeS5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSWdvTWVzc2FnZU1vZHVsZSwgUXVlcnlEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbUXVlcnlEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtRdWVyeVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIElnb1F1ZXJ5TW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxJZ29RdWVyeU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSWdvUXVlcnlNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtwcm92aWRlUXVlcnlTZWFyY2hTb3VyY2UoKV1cbiAgICB9O1xuICB9XG59XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcXVlcnkvcXVlcnkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQU90RCxNQUFNLE9BQU8sY0FBYztJQUN6QixNQUFNLENBQUMsT0FBTztRQUNaLE9BQU87WUFDTCxRQUFRLEVBQUUsY0FBYztZQUN4QixTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ3hDLENBQUM7SUFDSixDQUFDO3dHQU5VLGNBQWM7eUdBQWQsY0FBYyxZQUpmLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLGFBQzlDLGNBQWM7eUdBR2IsY0FBYyxhQUZkLENBQUMsWUFBWSxDQUFDLFlBRmYsWUFBWSxFQUFFLGdCQUFnQjs7NEZBSTdCLGNBQWM7a0JBTDFCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsQ0FBQztvQkFDekQsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUN6QixTQUFTLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IElnb01lc3NhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBwcm92aWRlUXVlcnlTZWFyY2hTb3VyY2UgfSBmcm9tICcuL3NoYXJlZC9xdWVyeS1zZWFyY2gtc291cmNlLnByb3ZpZGVycyc7XG5pbXBvcnQgeyBRdWVyeURpcmVjdGl2ZSB9IGZyb20gJy4vc2hhcmVkL3F1ZXJ5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBRdWVyeVNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9xdWVyeS5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSWdvTWVzc2FnZU1vZHVsZSwgUXVlcnlEaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbUXVlcnlEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtRdWVyeVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIElnb1F1ZXJ5TW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxJZ29RdWVyeU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogSWdvUXVlcnlNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtwcm92aWRlUXVlcnlTZWFyY2hTb3VyY2UoKV1cbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -23,13 +23,13 @@ export class QuerySearchSource extends SearchSource {
23
23
  title: 'Carte'
24
24
  };
25
25
  }
26
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: QuerySearchSource, deps: [{ token: 'options' }], target: i0.ɵɵFactoryTarget.Injectable });
27
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: QuerySearchSource });
26
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QuerySearchSource, deps: [{ token: 'options' }], target: i0.ɵɵFactoryTarget.Injectable });
27
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QuerySearchSource });
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: QuerySearchSource, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QuerySearchSource, decorators: [{
30
30
  type: Injectable
31
31
  }], ctorParameters: () => [{ type: undefined, decorators: [{
32
32
  type: Inject,
33
33
  args: ['options']
34
34
  }] }] });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc2VhcmNoLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3F1ZXJ5L3NoYXJlZC9xdWVyeS1zZWFyY2gtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBR2xFOzs7R0FHRztBQUVILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBQ2pELE1BQU0sQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBRXRCLFlBQStCLE9BQTRCO1FBQ3pELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8saUJBQWlCLENBQUMsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVTLGlCQUFpQjtRQUN6QixPQUFPO1lBQ0wsS0FBSyxFQUFFLE9BQU87U0FDZixDQUFDO0lBQ0osQ0FBQzt1R0FwQlUsaUJBQWlCLGtCQUlSLFNBQVM7MkdBSmxCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBS0ksTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZFQVRVUkUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmVudW1zJztcbmltcG9ydCB7IFNlYXJjaFNvdXJjZSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zaGFyZWQvc291cmNlcy9zb3VyY2UnO1xuaW1wb3J0IHsgU2VhcmNoU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL3NlYXJjaC9zaGFyZWQvc291cmNlcy9zb3VyY2UuaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogTWFwIHNlYXJjaCBzb3VyY2UuIEZvciBub3cgaXQgaGFzIG5vIHNlYXJjaCBjYXBhYmlsaXR5LiBBbGwgaXQgZG9lc1xuICogaXMgYWN0IGFzIGEgcGxhY2Vob2xkZXIgZm9yIHRoZSBtYXAgcXVlcnkgcmVzdWx0cycgXCJzZWFyY2ggc291cmNlXCIuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBRdWVyeVNlYXJjaFNvdXJjZSBleHRlbmRzIFNlYXJjaFNvdXJjZSB7XG4gIHN0YXRpYyBpZCA9ICdtYXAnO1xuICBzdGF0aWMgdHlwZSA9IEZFQVRVUkU7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdCgnb3B0aW9ucycpIG9wdGlvbnM6IFNlYXJjaFNvdXJjZU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgfVxuXG4gIGdldElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFF1ZXJ5U2VhcmNoU291cmNlLmlkO1xuICB9XG5cbiAgZ2V0VHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBRdWVyeVNlYXJjaFNvdXJjZS50eXBlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERlZmF1bHRPcHRpb25zKCk6IFNlYXJjaFNvdXJjZU9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0NhcnRlJ1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc2VhcmNoLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3F1ZXJ5L3NoYXJlZC9xdWVyeS1zZWFyY2gtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7O0FBR2xFOzs7R0FHRztBQUVILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBQ2pELE1BQU0sQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ2xCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBRXRCLFlBQStCLE9BQTRCO1FBQ3pELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8saUJBQWlCLENBQUMsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVTLGlCQUFpQjtRQUN6QixPQUFPO1lBQ0wsS0FBSyxFQUFFLE9BQU87U0FDZixDQUFDO0lBQ0osQ0FBQzt3R0FwQlUsaUJBQWlCLGtCQUlSLFNBQVM7NEdBSmxCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBS0ksTUFBTTsyQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEZFQVRVUkUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmVudW1zJztcbmltcG9ydCB7IFNlYXJjaFNvdXJjZSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zaGFyZWQvc291cmNlcy9zb3VyY2UnO1xuaW1wb3J0IHsgU2VhcmNoU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL3NlYXJjaC9zaGFyZWQvc291cmNlcy9zb3VyY2UuaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogTWFwIHNlYXJjaCBzb3VyY2UuIEZvciBub3cgaXQgaGFzIG5vIHNlYXJjaCBjYXBhYmlsaXR5LiBBbGwgaXQgZG9lc1xuICogaXMgYWN0IGFzIGEgcGxhY2Vob2xkZXIgZm9yIHRoZSBtYXAgcXVlcnkgcmVzdWx0cycgXCJzZWFyY2ggc291cmNlXCIuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBRdWVyeVNlYXJjaFNvdXJjZSBleHRlbmRzIFNlYXJjaFNvdXJjZSB7XG4gIHN0YXRpYyBpZCA9ICdtYXAnO1xuICBzdGF0aWMgdHlwZSA9IEZFQVRVUkU7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdCgnb3B0aW9ucycpIG9wdGlvbnM6IFNlYXJjaFNvdXJjZU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgfVxuXG4gIGdldElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFF1ZXJ5U2VhcmNoU291cmNlLmlkO1xuICB9XG5cbiAgZ2V0VHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBRdWVyeVNlYXJjaFNvdXJjZS50eXBlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERlZmF1bHRPcHRpb25zKCk6IFNlYXJjaFNvdXJjZU9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0NhcnRlJ1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -5,6 +5,7 @@ import { of, zip } from 'rxjs';
5
5
  import { renderFeatureFromOl } from '../../feature/shared/feature.utils';
6
6
  import { featureFromOl } from '../../feature/shared/feature.utils';
7
7
  import { OlDragSelectInteraction } from '../../feature/shared/strategies/selection';
8
+ import { isLayerGroup, isLayerItem } from '../../layer';
8
9
  import { VectorLayer } from '../../layer/shared/layers/vector-layer';
9
10
  import { MapBrowserComponent } from '../../map/map-browser/map-browser.component';
10
11
  import { ctrlKeyDown } from '../../map/shared/map.utils';
@@ -112,7 +113,7 @@ export class QueryDirective {
112
113
  queries$.push(this.doQueryFeatures(event));
113
114
  }
114
115
  const resolution = this.map.ol.getView().getResolution();
115
- const queryLayers = this.map.layers.filter(layerIsQueryable);
116
+ const queryLayers = this.map.layerController.all.filter(layerIsQueryable);
116
117
  queries$.push(...this.queryService.query(queryLayers, {
117
118
  coordinates: event.coordinate,
118
119
  projection: this.map.projection,
@@ -143,7 +144,10 @@ export class QueryDirective {
143
144
  const clickedFeatures = [];
144
145
  if (event.type === 'singleclick') {
145
146
  this.map.ol.forEachFeatureAtPixel(event.pixel, (featureOL, layerOL) => {
146
- const layer = this.map.getLayerById(layerOL.values_._layer.id);
147
+ const layer = this.map.layerController.getById(layerOL.values_._layer.id);
148
+ if (isLayerGroup(layer) || !layer.displayed) {
149
+ return;
150
+ }
147
151
  if (layer.dataSource.options
148
152
  .queryFormatAsWms) {
149
153
  return;
@@ -196,9 +200,9 @@ export class QueryDirective {
196
200
  else if (event.type === 'boxend') {
197
201
  const target = event.target;
198
202
  const dragExtent = target.getGeometry().getExtent();
199
- this.map.layers
203
+ this.map.layerController.all
200
204
  .filter(layerIsQueryable)
201
- .filter((layer) => layer instanceof VectorLayer && layer.visible)
205
+ .filter((layer) => isLayerItem(layer) && layer instanceof VectorLayer && layer.visible)
202
206
  .map((layer) => {
203
207
  const featuresOL = layer.dataSource.ol;
204
208
  featuresOL.forEachFeatureIntersectingExtent(dragExtent, (olFeature) => {
@@ -261,10 +265,10 @@ export class QueryDirective {
261
265
  }
262
266
  this.olDragSelectInteraction = undefined;
263
267
  }
264
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: QueryDirective, deps: [{ token: i1.MapBrowserComponent, self: true }, { token: i2.QueryService }], target: i0.ɵɵFactoryTarget.Directive });
265
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: QueryDirective, isStandalone: true, selector: "[igoQuery]", inputs: { queryFeatures: "queryFeatures", queryFeaturesHitTolerance: "queryFeaturesHitTolerance", queryFeaturesCondition: "queryFeaturesCondition", waitForAllQueries: "waitForAllQueries" }, outputs: { query: "query" }, ngImport: i0 });
268
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryDirective, deps: [{ token: i1.MapBrowserComponent, self: true }, { token: i2.QueryService }], target: i0.ɵɵFactoryTarget.Directive });
269
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: QueryDirective, isStandalone: true, selector: "[igoQuery]", inputs: { queryFeatures: "queryFeatures", queryFeaturesHitTolerance: "queryFeaturesHitTolerance", queryFeaturesCondition: "queryFeaturesCondition", waitForAllQueries: "waitForAllQueries" }, outputs: { query: "query" }, ngImport: i0 });
266
270
  }
267
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: QueryDirective, decorators: [{
271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: QueryDirective, decorators: [{
268
272
  type: Directive,
269
273
  args: [{
270
274
  selector: '[igoQuery]',
@@ -283,4 +287,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
283
287
  }], query: [{
284
288
  type: Output
285
289
  }] } });
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcXVlcnkvc2hhcmVkL3F1ZXJ5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLElBQUksRUFDTCxNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hDLE9BQU8sZUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBSWhELE9BQU8sRUFBNEIsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRTVFOzs7O0dBSUc7QUFLSCxNQUFNLE9BQU8sY0FBYztJQTBEUDtJQUNSO0lBMURWOztPQUVHO0lBQ0ssU0FBUyxHQUFtQixFQUFFLENBQUM7SUFFdkM7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBQztJQUV6Qjs7T0FFRztJQUNLLHVCQUF1QixDQUEwQjtJQUV6RDs7T0FFRztJQUNLLDZCQUE2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UUFDRCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFNBQVMsQ0FBQztJQUMzQyxDQUFDO3VHQTlTVSxjQUFjOzJGQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBSjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBMkRJLElBQUk7b0VBbENFLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUtHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFLRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBS0ksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCBNYXBCcm93c2VyUG9pbnRlckV2ZW50IGZyb20gJ29sL01hcEJyb3dzZXJFdmVudCc7XG5pbXBvcnQgeyB1bkJ5S2V5IH0gZnJvbSAnb2wvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBFdmVudHNLZXkgfSBmcm9tICdvbC9ldmVudHMnO1xuaW1wb3J0IE9sTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvTGF5ZXInO1xuaW1wb3J0IE9sUmVuZGVyRmVhdHVyZSBmcm9tICdvbC9yZW5kZXIvRmVhdHVyZSc7XG5pbXBvcnQgT2xTb3VyY2UgZnJvbSAnb2wvc291cmNlL1NvdXJjZSc7XG5pbXBvcnQgb2xWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YsIHppcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IHJlbmRlckZlYXR1cmVGcm9tT2wgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLnV0aWxzJztcbmltcG9ydCB7IGZlYXR1cmVGcm9tT2wgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLnV0aWxzJztcbmltcG9ydCB7IE9sRHJhZ1NlbGVjdEludGVyYWN0aW9uIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvc3RyYXRlZ2llcy9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL3ZlY3Rvci1sYXllcic7XG5pbXBvcnQgeyBNYXBCcm93c2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbWFwL21hcC1icm93c2VyL21hcC1icm93c2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XG5pbXBvcnQgeyBjdHJsS2V5RG93biB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwLnV0aWxzJztcbmltcG9ydCB7IFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi9xdWVyeS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IFF1ZXJ5U2VydmljZSB9IGZyb20gJy4vcXVlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBsYXllcklzUXVlcnlhYmxlLCBvbExheWVyRmVhdHVyZUlzUXVlcnlhYmxlIH0gZnJvbSAnLi9xdWVyeS51dGlscyc7XG5cbi8qKlxuICogVGhpcyBkaXJlY3RpdmUgbWFrZXMgYSBtYXAgcXVlcnlhYmxlIHdpdGggYSBjbGljayBvZiB3aXRoIGEgZHJhZyBib3guXG4gKiBCeSBkZWZhdWx0LCBhbGwgbGF5ZXJzIGFyZSBxdWVyeWFibGUgYnV0IHRoaXMgY2FuIGJlbiBjb250cm9sbGVkIGF0XG4gKiB0aGUgbGF5ZXIgbGV2ZWwuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tpZ29RdWVyeV0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbnMgdG8gb25nb2luZyBxdWVyaWVzXG4gICAqL1xuICBwcml2YXRlIHF1ZXJpZXMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICAvKipcbiAgICogTGlzdGVuZXIgdG8gdGhlIG1hcCBjbGljayBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBtYXBDbGlja0xpc3RlbmVyO1xuXG4gIC8qKlxuICAgKiBPTCBkcmFnIGJveCBpbnRlcmFjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBvbERyYWdTZWxlY3RJbnRlcmFjdGlvbjogT2xEcmFnU2VsZWN0SW50ZXJhY3Rpb247XG5cbiAgLyoqXG4gICAqIE9sIGRyYWcgYm94IFwiZW5kXCIgZXZlbnQga2V5XG4gICAqL1xuICBwcml2YXRlIG9sRHJhZ1NlbGVjdEludGVyYWN0aW9uRW5kS2V5OiBFdmVudHNLZXkgfCBFdmVudHNLZXlbXTtcblxuICAvKipcbiAgICogV2h0ZXIgdG8gcXVlcnkgZmVhdHVyZXMgb3Igbm90XG4gICAqL1xuICBASW5wdXQoKSBxdWVyeUZlYXR1cmVzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEZlYXR1cmUgcXVlcnkgaGl0IHRvbGVyYW5jZVxuICAgKi9cbiAgQElucHV0KCkgcXVlcnlGZWF0dXJlc0hpdFRvbGVyYW5jZSA9IDA7XG5cbiAgLyoqXG4gICAqIEZlYXR1cmUgcXVlcnkgaGl0IHRvbGVyYW5jZVxuICAgKi9cbiAgQElucHV0KCkgcXVlcnlGZWF0dXJlc0NvbmRpdGlvbjogKG9sTGF5ZXI6IE9sTGF5ZXI8T2xTb3VyY2U+KSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFsbCBxdWVyeSBzaG91bGQgY29tcGxldGUgYmVmb3JlIGVtaXR0aW5nIGFuIGV2ZW50XG4gICAqL1xuICBASW5wdXQoKSB3YWl0Rm9yQWxsUXVlcmllcyA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHF1ZXJ5IChvciBhbGwgcXVlcmllcykgY29tcGxldGVcbiAgICovXG4gIEBPdXRwdXQoKSBxdWVyeSA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIGZlYXR1cmVzOiBGZWF0dXJlW10gfCBGZWF0dXJlW11bXTtcbiAgICBldmVudDogTWFwQnJvd3NlclBvaW50ZXJFdmVudDxhbnk+O1xuICB9PigpO1xuXG4gIC8qKlxuICAgKiBJR08gbWFwXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5tYXAgYXMgYW55IGFzIElnb01hcDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgcHJpdmF0ZSBjb21wb25lbnQ6IE1hcEJyb3dzZXJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBxdWVyeVNlcnZpY2U6IFF1ZXJ5U2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGxpc3RlbmluZyB0byBjbGljayBhbmQgZHJhZyBib3ggZXZlbnRzXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMubGlzdGVuVG9NYXBDbGljaygpO1xuICAgIHRoaXMuYWRkRHJhZ0JveEludGVyYWN0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBsaXN0ZW5pbmcgdG8gY2xpY2sgYW5kIGRyYWcgYm94IGV2ZW50cyBhbmQgY2FuY2VsIG9uZ29pbmQgcmVxdWVzdHNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNhbmNlbE9uZ29pbmdRdWVyaWVzKCk7XG4gICAgdGhpcy51bmxpc3RlblRvTWFwQ2xpY2soKTtcbiAgICB0aGlzLnJlbW92ZURyYWdCb3hJbnRlcmFjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIG1hcCBjbGljaywgaXNzdWUgcXVlcmllc1xuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Ub01hcENsaWNrKCkge1xuICAgIHRoaXMubWFwQ2xpY2tMaXN0ZW5lciA9IHRoaXMubWFwLm9sLm9uKFxuICAgICAgJ3NpbmdsZWNsaWNrJyxcbiAgICAgIChldmVudDogTWFwQnJvd3NlclBvaW50ZXJFdmVudDxhbnk+KSA9PiB0aGlzLm9uTWFwRXZlbnQoZXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGxpc3RlbmluZyBmb3IgbWFwIGNsaWNrc1xuICAgKi9cbiAgcHJpdmF0ZSB1bmxpc3RlblRvTWFwQ2xpY2soKSB7XG4gICAgdW5CeUtleSh0aGlzLm1hcENsaWNrTGlzdGVuZXIpO1xuICAgIHRoaXMubWFwQ2xpY2tMaXN0ZW5lciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJc3N1ZSBxdWVyaWVzIGZyb20gYSBtYXAgZXZlbnQgYW5kIGVtaXQgZXZlbnRzIHdpdGggdGhlIHJlc3VsdHNcbiAgICogQHBhcmFtIGV2ZW50IE9MIG1hcCBicm93c2VyIHBvaW50ZXIgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25NYXBFdmVudChldmVudDogTWFwQnJvd3NlclBvaW50ZXJFdmVudDxhbnk+KSB7XG4gICAgdGhpcy5jYW5jZWxPbmdvaW5nUXVlcmllcygpO1xuICAgIGlmICghdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcmllcyQgPSBbXTtcbiAgICBpZiAodGhpcy5xdWVyeUZlYXR1cmVzKSB7XG4gICAgICBxdWVyaWVzJC5wdXNoKHRoaXMuZG9RdWVyeUZlYXR1cmVzKGV2ZW50KSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb2x1dGlvbiA9IHRoaXMubWFwLm9sLmdldFZpZXcoKS5nZXRSZXNvbHV0aW9uKCk7XG4gICAgY29uc3QgcXVlcnlMYXllcnMgPSB0aGlzLm1hcC5sYXllcnMuZmlsdGVyKGxheWVySXNRdWVyeWFibGUpO1xuICAgIHF1ZXJpZXMkLnB1c2goXG4gICAgICAuLi50aGlzLnF1ZXJ5U2VydmljZS5xdWVyeShxdWVyeUxheWVycywge1xuICAgICAgICBjb29yZGluYXRlczogZXZlbnQuY29vcmRpbmF0ZSBhcyBbbnVtYmVyLCBudW1iZXJdLFxuICAgICAgICBwcm9qZWN0aW9uOiB0aGlzLm1hcC5wcm9qZWN0aW9uLFxuICAgICAgICByZXNvbHV0aW9uXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBpZiAocXVlcmllcyQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud2FpdEZvckFsbFF1ZXJpZXMpIHtcbiAgICAgIHRoaXMucXVlcmllcyQkLnB1c2goXG4gICAgICAgIHppcCguLi5xdWVyaWVzJCkuc3Vic2NyaWJlKChyZXN1bHRzOiBGZWF0dXJlW11bXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZlYXR1cmVzID0gW10uY29uY2F0KC4uLnJlc3VsdHMpO1xuICAgICAgICAgIHRoaXMucXVlcnkuZW1pdCh7IGZlYXR1cmVzLCBldmVudCB9KTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucXVlcmllcyQkID0gcXVlcmllcyQubWFwKChxdWVyeSQ6IE9ic2VydmFibGU8RmVhdHVyZVtdPikgPT4ge1xuICAgICAgICByZXR1cm4gcXVlcnkkLnN1YnNjcmliZSgoZmVhdHVyZXM6IEZlYXR1cmVbXSkgPT4ge1xuICAgICAgICAgIHRoaXMucXVlcnkuZW1pdCh7IGZlYXR1cmVzLCBldmVudCB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUXVlcnkgZmVhdHVyZXMgYWxyZWFkeSBwcmVzZW50IG9uIHRoZSBtYXBcbiAgICogQHBhcmFtIGV2ZW50IE9MIG1hcCBicm93c2VyIHBvaW50ZXIgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgZG9RdWVyeUZlYXR1cmVzKFxuICAgIGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT5cbiAgKTogT2JzZXJ2YWJsZTxGZWF0dXJlW10+IHtcbiAgICBjb25zdCBjbGlja2VkRmVhdHVyZXMgPSBbXTtcblxuICAgIGlmIChldmVudC50eXBlID09PSAnc2luZ2xlY2xpY2snKSB7XG4gICAgICB0aGlzLm1hcC5vbC5mb3JFYWNoRmVhdHVyZUF0UGl4ZWwoXG4gICAgICAgIGV2ZW50LnBpeGVsLFxuICAgICAgICAoZmVhdHVyZU9MOiBPbEZlYXR1cmUsIGxheWVyT0w6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGxheWVyID0gdGhpcy5tYXAuZ2V0TGF5ZXJCeUlkKGxheWVyT0wudmFsdWVzXy5fbGF5ZXIuaWQpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIChsYXllci5kYXRhU291cmNlLm9wdGlvbnMgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMpXG4gICAgICAgICAgICAgIC5xdWVyeUZvcm1hdEFzV21zXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmZWF0dXJlT0wpIHtcbiAgICAgICAgICAgIGlmIChmZWF0dXJlT0wuZ2V0KCdmZWF0dXJlcycpKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlT0wuZ2V0KCdmZWF0dXJlcycpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RmVhdHVyZSA9IGZlYXR1cmVGcm9tT2woZmVhdHVyZSwgdGhpcy5tYXAucHJvamVjdGlvbik7XG4gICAgICAgICAgICAgICAgbmV3RmVhdHVyZS5tZXRhID0ge1xuICAgICAgICAgICAgICAgICAgdGl0bGU6IGZlYXR1cmUudmFsdWVzXy5ub20sXG4gICAgICAgICAgICAgICAgICBpZDogbGF5ZXJPTC52YWx1ZXNfLl9sYXllci5pZCArICcuJyArIGZlYXR1cmUuaWRfLFxuICAgICAgICAgICAgICAgICAgaWNvbjogZmVhdHVyZS52YWx1ZXNfLl9pY29uLFxuICAgICAgICAgICAgICAgICAgc291cmNlVGl0bGU6IGxheWVyT0wudmFsdWVzXy50aXRsZSxcbiAgICAgICAgICAgICAgICAgIGFsaWFzOiB0aGlzLnF1ZXJ5U2VydmljZS5nZXRBbGxvd2VkRmllbGRzQW5kQWxpYXMobGF5ZXIpXG4gICAgICAgICAgICAgICAgICAvLyB0aXRsZTogdGhpcy5xdWVyeVNlcnZpY2UuZ2V0UXVlcnlUaXRsZShuZXdGZWF0dXJlLCBsYXllcikgfHwgbmV3RmVhdHVyZS5tZXRhLnRpdGxlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjbGlja2VkRmVhdHVyZXMucHVzaChuZXdGZWF0dXJlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChmZWF0dXJlT0wgaW5zdGFuY2VvZiBPbFJlbmRlckZlYXR1cmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3RmVhdHVyZSA9IHJlbmRlckZlYXR1cmVGcm9tT2woXG4gICAgICAgICAgICAgICAgZmVhdHVyZU9MLFxuICAgICAgICAgICAgICAgIHRoaXMubWFwLnByb2plY3Rpb24sXG4gICAgICAgICAgICAgICAgbGF5ZXJPTFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBuZXdGZWF0dXJlLm1ldGEgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IGxheWVyT0wudmFsdWVzXy5fbGF5ZXIuaWQgKyAnLicgKyBuZXdGZWF0dXJlLm1ldGEuaWQsXG4gICAgICAgICAgICAgICAgc291cmNlVGl0bGU6IGxheWVyT0wudmFsdWVzXy50aXRsZSxcbiAgICAgICAgICAgICAgICBhbGlhczogdGhpcy5xdWVyeVNlcnZpY2UuZ2V0QWxsb3dlZEZpZWxkc0FuZEFsaWFzKGxheWVyKSxcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlTZXJ2aWNlLmdldFF1ZXJ5VGl0bGUobmV3RmVhdHVyZSwgbGF5ZXIpIHx8XG4gICAgICAgICAgICAgICAgICBuZXdGZWF0dXJlLm1ldGEudGl0bGVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2xpY2tlZEZlYXR1cmVzLnB1c2gobmV3RmVhdHVyZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBuZXdGZWF0dXJlID0gZmVhdHVyZUZyb21PbChcbiAgICAgICAgICAgICAgICBmZWF0dXJlT0wsXG4gICAgICAgICAgICAgICAgdGhpcy5tYXAucHJvamVjdGlvbixcbiAgICAgICAgICAgICAgICBsYXllck9MXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIG5ld0ZlYXR1cmUubWV0YSA9IHtcbiAgICAgICAgICAgICAgICBpZDogbGF5ZXJPTC52YWx1ZXNfLl9sYXllci5pZCArICcuJyArIG5ld0ZlYXR1cmUubWV0YS5pZCxcbiAgICAgICAgICAgICAgICBzb3VyY2VUaXRsZTogbGF5ZXJPTC52YWx1ZXNfLnRpdGxlLFxuICAgICAgICAgICAgICAgIGFsaWFzOiB0aGlzLnF1ZXJ5U2VydmljZS5nZXRBbGxvd2VkRmllbGRzQW5kQWxpYXMobGF5ZXIpLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVNlcnZpY2UuZ2V0UXVlcnlUaXRsZShuZXdGZWF0dXJlLCBsYXllcikgfHxcbiAgICAgICAgICAgICAgICAgIG5ld0ZlYXR1cmUubWV0YS50aXRsZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjbGlja2VkRmVhdHVyZXMucHVzaChuZXdGZWF0dXJlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBoaXRUb2xlcmFuY2U6IHRoaXMucXVlcnlGZWF0dXJlc0hpdFRvbGVyYW5jZSB8fCAwLFxuICAgICAgICAgIGxheWVyRmlsdGVyOiB0aGlzLnF1ZXJ5RmVhdHVyZXNDb25kaXRpb25cbiAgICAgICAgICAgID8gdGhpcy5xdWVyeUZlYXR1cmVzQ29uZGl0aW9uXG4gICAgICAgICAgICA6IG9sTGF5ZXJGZWF0dXJlSXNRdWVyeWFibGVcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdib3hlbmQnKSB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgYW55O1xuICAgICAgY29uc3QgZHJhZ0V4dGVudCA9IHRhcmdldC5nZXRHZW9tZXRyeSgpLmdldEV4dGVudCgpO1xuICAgICAgdGhpcy5tYXAubGF5ZXJzXG4gICAgICAgIC5maWx0ZXIobGF5ZXJJc1F1ZXJ5YWJsZSlcbiAgICAgICAgLmZpbHRlcigobGF5ZXIpID0+IGxheWVyIGluc3RhbmNlb2YgVmVjdG9yTGF5ZXIgJiYgbGF5ZXIudmlzaWJsZSlcbiAgICAgICAgLm1hcCgobGF5ZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBmZWF0dXJlc09MID0gbGF5ZXIuZGF0YVNvdXJjZS5vbCBhcyBvbFZlY3RvclNvdXJjZTtcbiAgICAgICAgICBmZWF0dXJlc09MLmZvckVhY2hGZWF0dXJlSW50ZXJzZWN0aW5nRXh0ZW50KFxuICAgICAgICAgICAgZHJhZ0V4dGVudCxcbiAgICAgICAgICAgIChvbEZlYXR1cmU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdGZWF0dXJlOiBGZWF0dXJlID0gZmVhdHVyZUZyb21PbChcbiAgICAgICAgICAgICAgICBvbEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgdGhpcy5tYXAucHJvamVjdGlvbixcbiAgICAgICAgICAgICAgICBsYXllci5vbFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBuZXdGZWF0dXJlLm1ldGEgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IGxheWVyLmlkICsgJy4nICsgb2xGZWF0dXJlLmdldElkKCksXG4gICAgICAgICAgICAgICAgaWNvbjogb2xGZWF0dXJlLnZhbHVlc18uX2ljb24sXG4gICAgICAgICAgICAgICAgc291cmNlVGl0bGU6IGxheWVyLnRpdGxlLFxuICAgICAgICAgICAgICAgIGFsaWFzOiB0aGlzLnF1ZXJ5U2VydmljZS5nZXRBbGxvd2VkRmllbGRzQW5kQWxpYXMobGF5ZXIpLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVNlcnZpY2UuZ2V0UXVlcnlUaXRsZShuZXdGZWF0dXJlLCBsYXllcikgfHxcbiAgICAgICAgICAgICAgICAgIG5ld0ZlYXR1cmUubWV0YS50aXRsZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjbGlja2VkRmVhdHVyZXMucHVzaChuZXdGZWF0dXJlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2YoY2xpY2tlZEZlYXR1cmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWwgb25nb2luZyByZXF1ZXN0cywgaWYgYW55XG4gICAqL1xuICBwcml2YXRlIGNhbmNlbE9uZ29pbmdRdWVyaWVzKCkge1xuICAgIHRoaXMucXVlcmllcyQkLmZvckVhY2goKHN1YjogU3Vic2NyaXB0aW9uKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5xdWVyaWVzJCQgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBkcmFnIGJveCBpbnRlcmFjdGlvbiBhbmQsIG9uIGRyYWcgYm94IGVuZCwgc2VsZWN0IGZlYXR1cmVzXG4gICAqL1xuICBwcml2YXRlIGFkZERyYWdCb3hJbnRlcmFjdGlvbigpIHtcbiAgICBsZXQgb2xEcmFnU2VsZWN0SW50ZXJhY3Rpb25PblF1ZXJ5O1xuICAgIGNvbnN0IG9sSW50ZXJhY3Rpb25zID0gdGhpcy5tYXAub2wuZ2V0SW50ZXJhY3Rpb25zKCkuZ2V0QXJyYXkoKTtcblxuICAgIC8vIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBkcmFnYm94IGludGVyYWN0aW9uLCBzbyBmaW5kIHRoZSBjdXJyZW50IG9uZSwgaWYgYW55XG4gICAgLy8gRG9uJ3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBkcmFnYm94IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIHJlbW92ZSBpdCB3aGVuIHRoaXMgc3RhcnRlZ3kgaXMgZGVhY3RpdmF0ZWRcbiAgICBmb3IgKGNvbnN0IG9sSW50ZXJhY3Rpb24gb2Ygb2xJbnRlcmFjdGlvbnMpIHtcbiAgICAgIGlmIChvbEludGVyYWN0aW9uIGluc3RhbmNlb2YgT2xEcmFnU2VsZWN0SW50ZXJhY3Rpb24pIHtcbiAgICAgICAgb2xEcmFnU2VsZWN0SW50ZXJhY3Rpb25PblF1ZXJ5ID0gb2xJbnRlcmFjdGlvbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIG5vIGRyYWcgYm94IGludGVyYWN0aW9uIGlzIGZvdW5kLCBjcmVhdGUgYSBuZXcgb25lIGFuZCBhZGQgaXQgdG8gdGhlIG1hcFxuICAgIGlmIChvbERyYWdTZWxlY3RJbnRlcmFjdGlvbk9uUXVlcnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb2xEcmFnU2VsZWN0SW50ZXJhY3Rpb25PblF1ZXJ5ID0gbmV3IE9sRHJhZ1NlbGVjdEludGVyYWN0aW9uKHtcbiAgICAgICAgY29uZGl0aW9uOiBjdHJsS2V5RG93blxuICAgICAgfSk7XG4gICAgICB0aGlzLm1hcC5vbC5hZGRJbnRlcmFjdGlvbihvbERyYWdTZWxlY3RJbnRlcmFjdGlvbk9uUXVlcnkpO1xuICAgICAgdGhpcy5vbERyYWdTZWxlY3RJbnRlcmFjdGlvbiA9IG9sRHJhZ1NlbGVjdEludGVyYWN0aW9uT25RdWVyeTtcbiAgICB9XG5cbiAgICB0aGlzLm9sRHJhZ1NlbGVjdEludGVyYWN0aW9uRW5kS2V5ID0gb2xEcmFnU2VsZWN0SW50ZXJhY3Rpb25PblF1ZXJ5Lm9uKFxuICAgICAgJ2JveGVuZCcsXG4gICAgICAoZXZlbnQ6IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQ8YW55PikgPT4gdGhpcy5vbk1hcEV2ZW50KGV2ZW50KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGRyYWcgYm94IGludGVyYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZURyYWdCb3hJbnRlcmFjdGlvbigpIHtcbiAgICBpZiAodGhpcy5vbERyYWdTZWxlY3RJbnRlcmFjdGlvbkVuZEtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB1bkJ5S2V5KHRoaXMub2xEcmFnU2VsZWN0SW50ZXJhY3Rpb25FbmRLZXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbERyYWdTZWxlY3RJbnRlcmFjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm1hcC5vbC5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLm9sRHJhZ1NlbGVjdEludGVyYWN0aW9uKTtcbiAgICB9XG4gICAgdGhpcy5vbERyYWdTZWxlY3RJbnRlcmFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcXVlcnkvc2hhcmVkL3F1ZXJ5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLElBQUksRUFDTCxNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hDLE9BQU8sZUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBSWhELE9BQU8sRUFBNEIsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDcEYsT0FBTyxFQUFTLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBRTVFOzs7O0dBSUc7QUFLSCxNQUFNLE9BQU8sY0FBYztJQTBEUDtJQUNSO0lBMURWOztPQUVHO0lBQ0ssU0FBUyxHQUFtQixFQUFFLENBQUM7SUFFdkM7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBQztJ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LEtBQWtDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQy9ELENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyx3QkFBd0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsNkJBQTZCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFNBQVMsQ0FBQztJQUMzQyxDQUFDO3dHQXhUVSxjQUFjOzRGQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBSjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBMkRJLElBQUk7b0VBbENFLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0cseUJBQXlCO3NCQUFqQyxLQUFLO2dCQUtHLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFLRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBS0ksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCBNYXBCcm93c2VyUG9pbnRlckV2ZW50IGZyb20gJ29sL01hcEJyb3dzZXJFdmVudCc7XG5pbXBvcnQgeyB1bkJ5S2V5IH0gZnJvbSAnb2wvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgeyBFdmVudHNLZXkgfSBmcm9tICdvbC9ldmVudHMnO1xuaW1wb3J0IE9sTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvTGF5ZXInO1xuaW1wb3J0IE9sUmVuZGVyRmVhdHVyZSBmcm9tICdvbC9yZW5kZXIvRmVhdHVyZSc7XG5pbXBvcnQgT2xTb3VyY2UgZnJvbSAnb2wvc291cmNlL1NvdXJjZSc7XG5pbXBvcnQgb2xWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YsIHppcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IHJlbmRlckZlYXR1cmVGcm9tT2wgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLnV0aWxzJztcbmltcG9ydCB7IGZlYXR1cmVGcm9tT2wgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLnV0aWxzJztcbmltcG9ydCB7IE9sRHJhZ1NlbGVjdEludGVyYWN0aW9uIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvc3RyYXRlZ2llcy9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgTGF5ZXIsIGlzTGF5ZXJHcm91cCwgaXNMYXllckl0ZW0gfSBmcm9tICcuLi8uLi9sYXllcic7XG5pbXBvcnQgeyBWZWN0b3JMYXllciB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMvdmVjdG9yLWxheWVyJztcbmltcG9ydCB7IE1hcEJyb3dzZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tYXAvbWFwLWJyb3dzZXIvbWFwLWJyb3dzZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcbmltcG9ydCB7IGN0cmxLZXlEb3duIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAudXRpbHMnO1xuaW1wb3J0IHsgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuL3F1ZXJ5LmludGVyZmFjZXMnO1xuaW1wb3J0IHsgUXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi9xdWVyeS5zZXJ2aWNlJztcbmltcG9ydCB7IGxheWVySXNRdWVyeWFibGUsIG9sTGF5ZXJGZWF0dXJlSXNRdWVyeWFibGUgfSBmcm9tICcuL3F1ZXJ5LnV0aWxzJztcblxuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSBtYWtlcyBhIG1hcCBxdWVyeWFibGUgd2l0aCBhIGNsaWNrIG9mIHdpdGggYSBkcmFnIGJveC5cbiAqIEJ5IGRlZmF1bHQsIGFsbCBsYXllcnMgYXJlIHF1ZXJ5YWJsZSBidXQgdGhpcyBjYW4gYmVuIGNvbnRyb2xsZWQgYXRcbiAqIHRoZSBsYXllciBsZXZlbC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2lnb1F1ZXJ5XScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUXVlcnlEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogU3Vic2NyaXB0aW9ucyB0byBvbmdvaW5nIHF1ZXJpZXNcbiAgICovXG4gIHByaXZhdGUgcXVlcmllcyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0ZW5lciB0byB0aGUgbWFwIGNsaWNrIGV2ZW50XG4gICAqL1xuICBwcml2YXRlIG1hcENsaWNrTGlzdGVuZXI7XG5cbiAgLyoqXG4gICAqIE9MIGRyYWcgYm94IGludGVyYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIG9sRHJhZ1NlbGVjdEludGVyYWN0aW9uOiBPbERyYWdTZWxlY3RJbnRlcmFjdGlvbjtcblxuICAvKipcbiAgICogT2wgZHJhZyBib3ggXCJlbmRcIiBldmVudCBrZXlcbiAgICovXG4gIHByaXZhdGUgb2xEcmFnU2VsZWN0SW50ZXJhY3Rpb25FbmRLZXk6IEV2ZW50c0tleSB8IEV2ZW50c0tleVtdO1xuXG4gIC8qKlxuICAgKiBXaHRlciB0byBxdWVyeSBmZWF0dXJlcyBvciBub3RcbiAgICovXG4gIEBJbnB1dCgpIHF1ZXJ5RmVhdHVyZXMgPSBmYWxzZTtcblxuICAvKipcbiAgICogRmVhdHVyZSBxdWVyeSBoaXQgdG9sZXJhbmNlXG4gICAqL1xuICBASW5wdXQoKSBxdWVyeUZlYXR1cmVzSGl0VG9sZXJhbmNlID0gMDtcblxuICAvKipcbiAgICogRmVhdHVyZSBxdWVyeSBoaXQgdG9sZXJhbmNlXG4gICAqL1xuICBASW5wdXQoKSBxdWVyeUZlYXR1cmVzQ29uZGl0aW9uOiAob2xMYXllcjogT2xMYXllcjxPbFNvdXJjZT4pID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYWxsIHF1ZXJ5IHNob3VsZCBjb21wbGV0ZSBiZWZvcmUgZW1pdHRpbmcgYW4gZXZlbnRcbiAgICovXG4gIEBJbnB1dCgpIHdhaXRGb3JBbGxRdWVyaWVzID0gdHJ1ZTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIGEgcXVlcnkgKG9yIGFsbCBxdWVyaWVzKSBjb21wbGV0ZVxuICAgKi9cbiAgQE91dHB1dCgpIHF1ZXJ5ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgZmVhdHVyZXM6IEZlYXR1cmVbXSB8IEZlYXR1cmVbXVtdO1xuICAgIGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT47XG4gIH0+KCk7XG5cbiAgLyoqXG4gICAqIElHTyBtYXBcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Lm1hcCBhcyBhbnkgYXMgSWdvTWFwO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKSBwcml2YXRlIGNvbXBvbmVudDogTWFwQnJvd3NlckNvbXBvbmVudCxcbiAgICBwcml2YXRlIHF1ZXJ5U2VydmljZTogUXVlcnlTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogU3RhcnQgbGlzdGVuaW5nIHRvIGNsaWNrIGFuZCBkcmFnIGJveCBldmVudHNcbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5saXN0ZW5Ub01hcENsaWNrKCk7XG4gICAgdGhpcy5hZGREcmFnQm94SW50ZXJhY3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGxpc3RlbmluZyB0byBjbGljayBhbmQgZHJhZyBib3ggZXZlbnRzIGFuZCBjYW5jZWwgb25nb2luZCByZXF1ZXN0c1xuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY2FuY2VsT25nb2luZ1F1ZXJpZXMoKTtcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBDbGljaygpO1xuICAgIHRoaXMucmVtb3ZlRHJhZ0JveEludGVyYWN0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogT24gbWFwIGNsaWNrLCBpc3N1ZSBxdWVyaWVzXG4gICAqL1xuICBwcml2YXRlIGxpc3RlblRvTWFwQ2xpY2soKSB7XG4gICAgdGhpcy5tYXBDbGlja0xpc3RlbmVyID0gdGhpcy5tYXAub2wub24oXG4gICAgICAnc2luZ2xlY2xpY2snLFxuICAgICAgKGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4pID0+IHRoaXMub25NYXBFdmVudChldmVudClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgY2xpY2tzXG4gICAqL1xuICBwcml2YXRlIHVubGlzdGVuVG9NYXBDbGljaygpIHtcbiAgICB1bkJ5S2V5KHRoaXMubWFwQ2xpY2tMaXN0ZW5lcik7XG4gICAgdGhpcy5tYXBDbGlja0xpc3RlbmVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIElzc3VlIHF1ZXJpZXMgZnJvbSBhIG1hcCBldmVudCBhbmQgZW1pdCBldmVudHMgd2l0aCB0aGUgcmVzdWx0c1xuICAgKiBAcGFyYW0gZXZlbnQgT0wgbWFwIGJyb3dzZXIgcG9pbnRlciBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBvbk1hcEV2ZW50KGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4pIHtcbiAgICB0aGlzLmNhbmNlbE9uZ29pbmdRdWVyaWVzKCk7XG4gICAgaWYgKCF0aGlzLnF1ZXJ5U2VydmljZS5xdWVyeUVuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyaWVzJCA9IFtdO1xuICAgIGlmICh0aGlzLnF1ZXJ5RmVhdHVyZXMpIHtcbiAgICAgIHF1ZXJpZXMkLnB1c2godGhpcy5kb1F1ZXJ5RmVhdHVyZXMoZXZlbnQpKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvbHV0aW9uID0gdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFJlc29sdXRpb24oKTtcbiAgICBjb25zdCBxdWVyeUxheWVycyA9IHRoaXMubWFwLmxheWVyQ29udHJvbGxlci5hbGwuZmlsdGVyKFxuICAgICAgbGF5ZXJJc1F1ZXJ5YWJsZVxuICAgICkgYXMgTGF5ZXJbXTtcbiAgICBxdWVyaWVzJC5wdXNoKFxuICAgICAgLi4udGhpcy5xdWVyeVNlcnZpY2UucXVlcnkocXVlcnlMYXllcnMsIHtcbiAgICAgICAgY29vcmRpbmF0ZXM6IGV2ZW50LmNvb3JkaW5hdGUgYXMgW251bWJlciwgbnVtYmVyXSxcbiAgICAgICAgcHJvamVjdGlvbjogdGhpcy5tYXAucHJvamVjdGlvbixcbiAgICAgICAgcmVzb2x1dGlvblxuICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKHF1ZXJpZXMkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndhaXRGb3JBbGxRdWVyaWVzKSB7XG4gICAgICB0aGlzLnF1ZXJpZXMkJC5wdXNoKFxuICAgICAgICB6aXAoLi4ucXVlcmllcyQpLnN1YnNjcmliZSgocmVzdWx0czogRmVhdHVyZVtdW10pID0+IHtcbiAgICAgICAgICBjb25zdCBmZWF0dXJlcyA9IFtdLmNvbmNhdCguLi5yZXN1bHRzKTtcbiAgICAgICAgICB0aGlzLnF1ZXJ5LmVtaXQoeyBmZWF0dXJlcywgZXZlbnQgfSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJpZXMkJCA9IHF1ZXJpZXMkLm1hcCgocXVlcnkkOiBPYnNlcnZhYmxlPEZlYXR1cmVbXT4pID0+IHtcbiAgICAgICAgcmV0dXJuIHF1ZXJ5JC5zdWJzY3JpYmUoKGZlYXR1cmVzOiBGZWF0dXJlW10pID0+IHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5LmVtaXQoeyBmZWF0dXJlcywgZXZlbnQgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IGZlYXR1cmVzIGFscmVhZHkgcHJlc2VudCBvbiB0aGUgbWFwXG4gICAqIEBwYXJhbSBldmVudCBPTCBtYXAgYnJvd3NlciBwb2ludGVyIGV2ZW50XG4gICAqL1xuICBwcml2YXRlIGRvUXVlcnlGZWF0dXJlcyhcbiAgICBldmVudDogTWFwQnJvd3NlclBvaW50ZXJFdmVudDxhbnk+XG4gICk6IE9ic2VydmFibGU8RmVhdHVyZVtdPiB7XG4gICAgY29uc3QgY2xpY2tlZEZlYXR1cmVzID0gW107XG5cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3NpbmdsZWNsaWNrJykge1xuICAgICAgdGhpcy5tYXAub2wuZm9yRWFjaEZlYXR1cmVBdFBpeGVsKFxuICAgICAgICBldmVudC5waXhlbCxcbiAgICAgICAgKGZlYXR1cmVPTDogT2xGZWF0dXJlLCBsYXllck9MOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBsYXllciA9IHRoaXMubWFwLmxheWVyQ29udHJvbGxlci5nZXRCeUlkKFxuICAgICAgICAgICAgbGF5ZXJPTC52YWx1ZXNfLl9sYXllci5pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGlzTGF5ZXJHcm91cChsYXllcikgfHwgIWxheWVyLmRpc3BsYXllZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAobGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zKVxuICAgICAgICAgICAgICAucXVlcnlGb3JtYXRBc1dtc1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmVhdHVyZU9MKSB7XG4gICAgICAgICAgICBpZiAoZmVhdHVyZU9MLmdldCgnZmVhdHVyZXMnKSkge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmVhdHVyZU9MLmdldCgnZmVhdHVyZXMnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZlYXR1cmUgPSBmZWF0dXJlRnJvbU9sKGZlYXR1cmUsIHRoaXMubWFwLnByb2plY3Rpb24pO1xuICAgICAgICAgICAgICAgIG5ld0ZlYXR1cmUubWV0YSA9IHtcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiBmZWF0dXJlLnZhbHVlc18ubm9tLFxuICAgICAgICAgICAgICAgICAgaWQ6IGxheWVyT0wudmFsdWVzXy5fbGF5ZXIuaWQgKyAnLicgKyBmZWF0dXJlLmlkXyxcbiAgICAgICAgICAgICAgICAgIGljb246IGZlYXR1cmUudmFsdWVzXy5faWNvbixcbiAgICAgICAgICAgICAgICAgIHNvdXJjZVRpdGxlOiBsYXllck9MLnZhbHVlc18udGl0bGUsXG4gICAgICAgICAgICAgICAgICBhbGlhczogdGhpcy5xdWVyeVNlcnZpY2UuZ2V0QWxsb3dlZEZpZWxkc0FuZEFsaWFzKGxheWVyKVxuICAgICAgICAgICAgICAgICAgLy8gdGl0bGU6IHRoaXMucXVlcnlTZXJ2aWNlLmdldFF1ZXJ5VGl0bGUobmV3RmVhdHVyZSwgbGF5ZXIpIHx8IG5ld0ZlYXR1cmUubWV0YS50aXRsZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY2xpY2tlZEZlYXR1cmVzLnB1c2gobmV3RmVhdHVyZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmVhdHVyZU9MIGluc3RhbmNlb2YgT2xSZW5kZXJGZWF0dXJlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0ZlYXR1cmUgPSByZW5kZXJGZWF0dXJlRnJvbU9sKFxuICAgICAgICAgICAgICAgIGZlYXR1cmVPTCxcbiAgICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uLFxuICAgICAgICAgICAgICAgIGxheWVyT0xcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgbmV3RmVhdHVyZS5tZXRhID0ge1xuICAgICAgICAgICAgICAgIGlkOiBsYXllck9MLnZhbHVlc18uX2xheWVyLmlkICsgJy4nICsgbmV3RmVhdHVyZS5tZXRhLmlkLFxuICAgICAgICAgICAgICAgIHNvdXJjZVRpdGxlOiBsYXllck9MLnZhbHVlc18udGl0bGUsXG4gICAgICAgICAgICAgICAgYWxpYXM6IHRoaXMucXVlcnlTZXJ2aWNlLmdldEFsbG93ZWRGaWVsZHNBbmRBbGlhcyhsYXllciksXG4gICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5U2VydmljZS5nZXRRdWVyeVRpdGxlKG5ld0ZlYXR1cmUsIGxheWVyKSB8fFxuICAgICAgICAgICAgICAgICAgbmV3RmVhdHVyZS5tZXRhLnRpdGxlXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGNsaWNrZWRGZWF0dXJlcy5wdXNoKG5ld0ZlYXR1cmUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3RmVhdHVyZSA9IGZlYXR1cmVGcm9tT2woXG4gICAgICAgICAgICAgICAgZmVhdHVyZU9MLFxuICAgICAgICAgICAgICAgIHRoaXMubWFwLnByb2plY3Rpb24sXG4gICAgICAgICAgICAgICAgbGF5ZXJPTFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBuZXdGZWF0dXJlLm1ldGEgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IGxheWVyT0wudmFsdWVzXy5fbGF5ZXIuaWQgKyAnLicgKyBuZXdGZWF0dXJlLm1ldGEuaWQsXG4gICAgICAgICAgICAgICAgc291cmNlVGl0bGU6IGxheWVyT0wudmFsdWVzXy50aXRsZSxcbiAgICAgICAgICAgICAgICBhbGlhczogdGhpcy5xdWVyeVNlcnZpY2UuZ2V0QWxsb3dlZEZpZWxkc0FuZEFsaWFzKGxheWVyKSxcbiAgICAgICAgICAgICAgICB0aXRsZTpcbiAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlTZXJ2aWNlLmdldFF1ZXJ5VGl0bGUobmV3RmVhdHVyZSwgbGF5ZXIpIHx8XG4gICAgICAgICAgICAgICAgICBuZXdGZWF0dXJlLm1ldGEudGl0bGVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2xpY2tlZEZlYXR1cmVzLnB1c2gobmV3RmVhdHVyZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaGl0VG9sZXJhbmNlOiB0aGlzLnF1ZXJ5RmVhdHVyZXNIaXRUb2xlcmFuY2UgfHwgMCxcbiAgICAgICAgICBsYXllckZpbHRlcjogdGhpcy5xdWVyeUZlYXR1cmVzQ29uZGl0aW9uXG4gICAgICAgICAgICA/IHRoaXMucXVlcnlGZWF0dXJlc0NvbmRpdGlvblxuICAgICAgICAgICAgOiBvbExheWVyRmVhdHVyZUlzUXVlcnlhYmxlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnYm94ZW5kJykge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIGFueTtcbiAgICAgIGNvbnN0IGRyYWdFeHRlbnQgPSB0YXJnZXQuZ2V0R2VvbWV0cnkoKS5nZXRFeHRlbnQoKTtcbiAgICAgIHRoaXMubWFwLmxheWVyQ29udHJvbGxlci5hbGxcbiAgICAgICAgLmZpbHRlcihsYXllcklzUXVlcnlhYmxlKVxuICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgIChsYXllcikgPT5cbiAgICAgICAgICAgIGlzTGF5ZXJJdGVtKGxheWVyKSAmJiBsYXllciBpbnN0YW5jZW9mIFZlY3RvckxheWVyICYmIGxheWVyLnZpc2libGVcbiAgICAgICAgKVxuICAgICAgICAubWFwKChsYXllcjogTGF5ZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBmZWF0dXJlc09MID0gbGF5ZXIuZGF0YVNvdXJjZS5vbCBhcyBvbFZlY3RvclNvdXJjZTtcbiAgICAgICAgICBmZWF0dXJlc09MLmZvckVhY2hGZWF0dXJlSW50ZXJzZWN0aW5nRXh0ZW50KFxuICAgICAgICAgICAgZHJhZ0V4dGVudCxcbiAgICAgICAgICAgIChvbEZlYXR1cmU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdGZWF0dXJlOiBGZWF0dXJlID0gZmVhdHVyZUZyb21PbChcbiAgICAgICAgICAgICAgICBvbEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgdGhpcy5tYXAucHJvamVjdGlvbixcbiAgICAgICAgICAgICAgICBsYXllci5vbFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBuZXdGZWF0dXJlLm1ldGEgPSB7XG4gICAgICAgICAgICAgICAgaWQ6IGxheWVyLmlkICsgJy4nICsgb2xGZWF0dXJlLmdldElkKCksXG4gICAgICAgICAgICAgICAgaWNvbjogb2xGZWF0dXJlLnZhbHVlc18uX2ljb24sXG4gICAgICAgICAgICAgICAgc291cmNlVGl0bGU6IGxheWVyLnRpdGxlLFxuICAgICAgICAgICAgICAgIGFsaWFzOiB0aGlzLnF1ZXJ5U2VydmljZS5nZXRBbGxvd2VkRmllbGRzQW5kQWxpYXMobGF5ZXIpLFxuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVNlcnZpY2UuZ2V0UXVlcnlUaXRsZShuZXdGZWF0dXJlLCBsYXllcikgfHxcbiAgICAgICAgICAgICAgICAgIG5ld0ZlYXR1cmUubWV0YS50aXRsZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjbGlja2VkRmVhdHVyZXMucHVzaChuZXdGZWF0dXJlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2YoY2xpY2tlZEZlYXR1cmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWwgb25nb2luZyByZXF1ZXN0cywgaWYgYW55XG4gICAqL1xuICBwcml2YXRlIGNhbmNlbE9uZ29pbmdRdWVyaWVzKCkge1xuICAgIHRoaXMucXVlcmllcyQkLmZvckVhY2goKHN1YjogU3Vic2NyaXB0aW9uKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5xdWVyaWVzJCQgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBkcmFnIGJveCBpbnRlcmFjdGlvbiBhbmQsIG9uIGRyYWcgYm94IGVuZCwgc2VsZWN0IGZlYXR1cmVzXG4gICAqL1xuICBwcml2YXRlIGFkZERyYWdCb3hJbnRlcmFjdGlvbigpIHtcbiAgICBsZXQgb2xEcmFnU2VsZWN0SW50ZXJhY3Rpb25PblF1ZXJ5O1xuICAgIGNvbnN0IG9sSW50ZXJhY3Rpb25zID0gdGhpcy5tYXAub2wuZ2V0SW50ZXJhY3Rpb25zKCkuZ2V0QXJyYXkoKTtcblxuICAgIC8vIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBkcmFnYm94IGludGVyYWN0aW9uLCBzbyBmaW5kIHRoZSBjdXJyZW50IG9uZSwgaWYgYW55XG4gICAgLy8gRG9uJ3Qga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBkcmFnYm94IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIHJlbW92ZSBpdCB3aGVuIHRoaXMgc3RhcnRlZ3kgaXMgZGVhY3RpdmF0ZWRcbiAgICBmb3IgKGNvbnN0IG9sSW50ZXJhY3Rpb24gb2Ygb2xJbnRlcmFjdGlvbnMpIHtcbiAgICAgIGlmIChvbEludGVyYWN0aW9uIGluc3RhbmNlb2YgT2xEcmFnU2VsZWN0SW50ZXJhY3Rpb24pIHtcbiAgICAgICAgb2xEcmFnU2VsZWN0SW50ZXJhY3Rpb25PblF1ZXJ5ID0gb2xJbnRlcmFjdGlvbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIG5vIGRyYWcgYm94IGludGVyYWN0aW9uIGlzIGZvdW5kLCBjcmVhdGUgYSBuZXcgb25lIGFuZCBhZGQgaXQgdG8gdGhlIG1hcFxuICAgIGlmIChvbERyYWdTZWxlY3RJbnRlcmFjdGlvbk9uUXVlcnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb2xEcmFnU2VsZWN0SW50ZXJhY3Rpb25PblF1ZXJ5ID0gbmV3IE9sRHJhZ1NlbGVjdEludGVyYWN0aW9uKHtcbiAgICAgICAgY29uZGl0aW9uOiBjdHJsS2V5RG93blxuICAgICAgfSk7XG4gICAgICB0aGlzLm1hcC5vbC5hZGRJbnRlcmFjdGlvbihvbERyYWdTZWxlY3RJbnRlcmFjdGlvbk9uUXVlcnkpO1xuICAgICAgdGhpcy5vbERyYWdTZWxlY3RJbnRlcmFjdGlvbiA9IG9sRHJhZ1NlbGVjdEludGVyYWN0aW9uT25RdWVyeTtcbiAgICB9XG5cbiAgICB0aGlzLm9sRHJhZ1NlbGVjdEludGVyYWN0aW9uRW5kS2V5ID0gb2xEcmFnU2VsZWN0SW50ZXJhY3Rpb25PblF1ZXJ5Lm9uKFxuICAgICAgJ2JveGVuZCcsXG4gICAgICAoZXZlbnQ6IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQ8YW55PikgPT4gdGhpcy5vbk1hcEV2ZW50KGV2ZW50KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGRyYWcgYm94IGludGVyYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIHJlbW92ZURyYWdCb3hJbnRlcmFjdGlvbigpIHtcbiAgICBpZiAodGhpcy5vbERyYWdTZWxlY3RJbnRlcmFjdGlvbkVuZEtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB1bkJ5S2V5KHRoaXMub2xEcmFnU2VsZWN0SW50ZXJhY3Rpb25FbmRLZXkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbERyYWdTZWxlY3RJbnRlcmFjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm1hcC5vbC5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLm9sRHJhZ1NlbGVjdEludGVyYWN0aW9uKTtcbiAgICB9XG4gICAgdGhpcy5vbERyYWdTZWxlY3RJbnRlcmFjdGlvbiA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19