@igo2/geo 16.3.0 → 17.0.0-next.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 (524) hide show
  1. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +30 -14
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +35 -17
  3. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +18 -11
  4. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +8 -62
  5. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +46 -19
  6. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +22 -10
  7. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +28 -14
  8. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +8 -71
  9. package/esm2022/lib/catalog/catalog-library/index.mjs +9 -0
  10. package/esm2022/lib/catalog/catalog.module.mjs +9 -37
  11. package/esm2022/lib/catalog/index.mjs +7 -1
  12. package/esm2022/lib/catalog/shared/catalog.service.mjs +9 -6
  13. package/esm2022/lib/catalog/shared/index.mjs +1 -1
  14. package/esm2022/lib/datasource/index.mjs +1 -1
  15. package/esm2022/lib/datasource/shared/capabilities.service.mjs +5 -5
  16. package/esm2022/lib/datasource/shared/datasource.service.mjs +8 -12
  17. package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
  18. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
  19. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
  20. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  21. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
  22. package/esm2022/lib/datasource/shared/datasources/data.service.mjs +1 -1
  23. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +1 -1
  24. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  25. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
  26. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  27. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
  28. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
  29. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
  30. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
  31. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  32. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
  33. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.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 +1 -1
  37. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +5 -5
  38. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
  39. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  40. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  41. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  42. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  43. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  44. package/esm2022/lib/datasource/shared/index.mjs +1 -1
  45. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +6 -6
  46. package/esm2022/lib/datasource/shared/options/options.service.mjs +1 -1
  47. package/esm2022/lib/datasource/utils/tilegrid.mjs +1 -1
  48. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +23 -12
  49. package/esm2022/lib/directions/directions-buttons/index.mjs +1 -1
  50. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +42 -17
  51. package/esm2022/lib/directions/directions-inputs/index.mjs +1 -1
  52. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +34 -14
  53. package/esm2022/lib/directions/directions-results/index.mjs +1 -1
  54. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +1 -1
  55. package/esm2022/lib/directions/directions-sources/index.mjs +1 -1
  56. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +5 -5
  57. package/esm2022/lib/directions/directions.component.mjs +18 -10
  58. package/esm2022/lib/directions/directions.module.mjs +17 -70
  59. package/esm2022/lib/directions/index.mjs +1 -1
  60. package/esm2022/lib/directions/shared/directions-source.service.mjs +1 -1
  61. package/esm2022/lib/directions/shared/directions.enum.mjs +1 -1
  62. package/esm2022/lib/directions/shared/directions.service.mjs +6 -6
  63. package/esm2022/lib/directions/shared/directions.utils.mjs +1 -1
  64. package/esm2022/lib/directions/shared/index.mjs +1 -1
  65. package/esm2022/lib/download/download-button/download-button.component.mjs +21 -11
  66. package/esm2022/lib/download/download-button/index.mjs +1 -1
  67. package/esm2022/lib/download/download.module.mjs +10 -27
  68. package/esm2022/lib/download/index.mjs +1 -1
  69. package/esm2022/lib/download/shared/download.interface.mjs +1 -1
  70. package/esm2022/lib/download/shared/download.service.mjs +5 -5
  71. package/esm2022/lib/download/shared/index.mjs +1 -1
  72. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +21 -10
  73. package/esm2022/lib/draw/draw/draw-popup.component.mjs +39 -16
  74. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +19 -9
  75. package/esm2022/lib/draw/draw/draw.component.mjs +52 -22
  76. package/esm2022/lib/draw/draw/draw.module.mjs +7 -104
  77. package/esm2022/lib/draw/drawingTool.module.mjs +8 -7
  78. package/esm2022/lib/draw/index.mjs +1 -1
  79. package/esm2022/lib/draw/shared/draw-icon.service.mjs +5 -5
  80. package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
  81. package/esm2022/lib/draw/shared/index.mjs +1 -1
  82. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +23 -11
  83. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +8 -7
  84. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +8 -27
  85. package/esm2022/lib/feature/feature-details/index.mjs +9 -0
  86. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +8 -8
  87. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +8 -11
  88. package/esm2022/lib/feature/feature.module.mjs +9 -10
  89. package/esm2022/lib/feature/index.mjs +8 -2
  90. package/esm2022/lib/feature/shared/feature-store.utils.mjs +1 -1
  91. package/esm2022/lib/feature/shared/feature.enums.mjs +1 -1
  92. package/esm2022/lib/feature/shared/feature.utils.mjs +1 -1
  93. package/esm2022/lib/feature/shared/store.mjs +1 -1
  94. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +1 -1
  95. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
  96. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +1 -1
  97. package/esm2022/lib/feature/shared/strategies/index.mjs +1 -1
  98. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +1 -1
  99. package/esm2022/lib/feature/shared/strategies/loading.mjs +1 -1
  100. package/esm2022/lib/feature/shared/strategies/search.mjs +4 -4
  101. package/esm2022/lib/feature/shared/strategies/selection.mjs +1 -1
  102. package/esm2022/lib/feature/shared/strategies.utils.mjs +1 -1
  103. package/esm2022/lib/filter/filter.module.mjs +47 -177
  104. package/esm2022/lib/filter/index.mjs +36 -1
  105. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +29 -15
  106. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +46 -20
  107. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +52 -21
  108. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +13 -10
  109. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +45 -18
  110. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +18 -12
  111. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +42 -18
  112. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +8 -7
  113. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +21 -12
  114. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +6 -5
  115. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +5 -5
  116. package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +1 -1
  117. package/esm2022/lib/filter/shared/ogc-filter.mjs +1 -1
  118. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +5 -5
  119. package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +1 -1
  120. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +5 -5
  121. package/esm2022/lib/filter/shared/time-filter.enum.mjs +1 -1
  122. package/esm2022/lib/filter/shared/time-filter.interface.mjs +1 -1
  123. package/esm2022/lib/filter/shared/time-filter.service.mjs +5 -5
  124. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +63 -27
  125. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +32 -15
  126. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +34 -15
  127. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +28 -14
  128. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +47 -20
  129. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +31 -13
  130. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +8 -7
  131. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +16 -10
  132. package/esm2022/lib/geo.module.mjs +5 -43
  133. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +7 -7
  134. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +33 -16
  135. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +8 -43
  136. package/esm2022/lib/geometry/geometry-form-field/index.mjs +9 -0
  137. package/esm2022/lib/geometry/geometry.module.mjs +9 -10
  138. package/esm2022/lib/geometry/index.mjs +2 -3
  139. package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
  140. package/esm2022/lib/geometry/shared/controls/index.mjs +1 -1
  141. package/esm2022/lib/geometry/shared/controls/modify.mjs +1 -1
  142. package/esm2022/lib/geometry/shared/controls/slice.mjs +1 -1
  143. package/esm2022/lib/geometry/shared/geometry.utils.mjs +1 -1
  144. package/esm2022/lib/geometry/shared/index.mjs +1 -1
  145. package/esm2022/lib/import-export/export-button/export-button.component.mjs +20 -10
  146. package/esm2022/lib/import-export/export-button/index.mjs +1 -1
  147. package/esm2022/lib/import-export/import-export/import-export.component.mjs +45 -17
  148. package/esm2022/lib/import-export/import-export/index.mjs +1 -1
  149. package/esm2022/lib/import-export/import-export.module.mjs +10 -81
  150. package/esm2022/lib/import-export/index.mjs +9 -1
  151. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +7 -6
  152. package/esm2022/lib/import-export/shared/export.errors.mjs +1 -1
  153. package/esm2022/lib/import-export/shared/export.service.mjs +5 -5
  154. package/esm2022/lib/import-export/shared/export.utils.mjs +1 -1
  155. package/esm2022/lib/import-export/shared/import.service.mjs +5 -5
  156. package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
  157. package/esm2022/lib/import-export/shared/index.mjs +1 -1
  158. package/esm2022/lib/layer/index.mjs +19 -1
  159. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +33 -14
  160. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +41 -17
  161. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +11 -9
  162. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +8 -7
  163. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +28 -13
  164. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +8 -7
  165. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +48 -18
  166. package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +1 -1
  167. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +33 -14
  168. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +5 -5
  169. package/esm2022/lib/layer/layer.module.mjs +16 -93
  170. package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
  171. package/esm2022/lib/layer/shared/layer.service.mjs +6 -6
  172. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  173. package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
  174. package/esm2022/lib/layer/shared/layers/image-layer.mjs +1 -1
  175. package/esm2022/lib/layer/shared/layers/index.mjs +1 -1
  176. package/esm2022/lib/layer/shared/layers/layer.mjs +1 -1
  177. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +1 -1
  178. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +1 -1
  179. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
  180. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +21 -11
  181. package/esm2022/lib/layer/utils/image-watcher.mjs +1 -1
  182. package/esm2022/lib/layer/utils/layer.utils.mjs +1 -1
  183. package/esm2022/lib/layer/utils/outputLegend.mjs +1 -1
  184. package/esm2022/lib/layer/utils/tile-watcher.mjs +1 -1
  185. package/esm2022/lib/layer/utils/vector-watcher.mjs +1 -1
  186. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +25 -12
  187. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +8 -8
  188. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +22 -11
  189. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +13 -9
  190. package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +1 -1
  191. package/esm2022/lib/map/home-extent-button/index.mjs +1 -1
  192. package/esm2022/lib/map/index.mjs +32 -1
  193. package/esm2022/lib/map/info-section/info-section.component.mjs +7 -7
  194. package/esm2022/lib/map/map-browser/map-browser.component.mjs +6 -6
  195. package/esm2022/lib/map/map-center/map-center.component.mjs +6 -6
  196. package/esm2022/lib/map/map.module.mjs +36 -66
  197. package/esm2022/lib/map/menu-button/menu-button.component.mjs +21 -11
  198. package/esm2022/lib/map/offline-button/offline-button.component.mjs +21 -11
  199. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +23 -11
  200. package/esm2022/lib/map/shared/controllers/controller.mjs +1 -1
  201. package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
  202. package/esm2022/lib/map/shared/controllers/geolocation.mjs +1 -1
  203. package/esm2022/lib/map/shared/controllers/index.mjs +1 -1
  204. package/esm2022/lib/map/shared/controllers/view.mjs +1 -1
  205. package/esm2022/lib/map/shared/hover-feature.directive.mjs +8 -7
  206. package/esm2022/lib/map/shared/index.mjs +1 -1
  207. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +1 -1
  208. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +8 -7
  209. package/esm2022/lib/map/shared/map.interface.mjs +1 -1
  210. package/esm2022/lib/map/shared/map.mjs +1 -1
  211. package/esm2022/lib/map/shared/map.service.mjs +5 -5
  212. package/esm2022/lib/map/shared/map.utils.mjs +1 -1
  213. package/esm2022/lib/map/shared/mapOffline.directive.mjs +7 -6
  214. package/esm2022/lib/map/shared/projection.interfaces.mjs +1 -1
  215. package/esm2022/lib/map/shared/projection.service.mjs +5 -5
  216. package/esm2022/lib/map/shared/projection.utils.mjs +1 -1
  217. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +6 -6
  218. package/esm2022/lib/map/utils/layer-watcher.mjs +1 -1
  219. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +21 -11
  220. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +13 -9
  221. package/esm2022/lib/measure/index.mjs +2 -3
  222. package/esm2022/lib/measure/measure.module.mjs +8 -5
  223. package/esm2022/lib/measure/measurer/index.mjs +6 -0
  224. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +6 -5
  225. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +18 -11
  226. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +27 -13
  227. package/esm2022/lib/measure/measurer/measurer.component.mjs +35 -17
  228. package/esm2022/lib/measure/measurer/measurer.module.mjs +7 -69
  229. package/esm2022/lib/measure/shared/index.mjs +1 -1
  230. package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
  231. package/esm2022/lib/metadata/index.mjs +6 -1
  232. package/esm2022/lib/metadata/metadata-button/index.mjs +1 -1
  233. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +35 -18
  234. package/esm2022/lib/metadata/metadata.module.mjs +10 -31
  235. package/esm2022/lib/metadata/shared/index.mjs +1 -1
  236. package/esm2022/lib/metadata/shared/metadata.service.mjs +5 -5
  237. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +5 -5
  238. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +5 -5
  239. package/esm2022/lib/offline/geoDB/index.mjs +1 -1
  240. package/esm2022/lib/offline/index.mjs +1 -1
  241. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +5 -5
  242. package/esm2022/lib/offline/shared/geo-network.service.mjs +5 -5
  243. package/esm2022/lib/offline/shared/index.mjs +1 -1
  244. package/esm2022/lib/overlay/index.mjs +1 -1
  245. package/esm2022/lib/overlay/overlay.module.mjs +10 -8
  246. package/esm2022/lib/overlay/shared/index.mjs +1 -1
  247. package/esm2022/lib/overlay/shared/overlay.directive.mjs +8 -7
  248. package/esm2022/lib/overlay/shared/overlay.mjs +1 -1
  249. package/esm2022/lib/overlay/shared/overlay.service.mjs +5 -5
  250. package/esm2022/lib/print/index.mjs +1 -1
  251. package/esm2022/lib/print/print/print.component.mjs +7 -7
  252. package/esm2022/lib/print/print-form/index.mjs +1 -1
  253. package/esm2022/lib/print/print-form/print-form.component.mjs +34 -14
  254. package/esm2022/lib/print/print.module.mjs +10 -54
  255. package/esm2022/lib/print/shared/index.mjs +1 -1
  256. package/esm2022/lib/print/shared/print.service.mjs +10 -10
  257. package/esm2022/lib/query/index.mjs +1 -1
  258. package/esm2022/lib/query/query.module.mjs +7 -8
  259. package/esm2022/lib/query/shared/index.mjs +1 -1
  260. package/esm2022/lib/query/shared/query-search-source.mjs +6 -6
  261. package/esm2022/lib/query/shared/query.directive.mjs +8 -7
  262. package/esm2022/lib/query/shared/query.enums.mjs +1 -1
  263. package/esm2022/lib/query/shared/query.service.mjs +7 -9
  264. package/esm2022/lib/search/index.mjs +14 -5
  265. package/esm2022/lib/search/search-bar/search-bar.component.mjs +36 -16
  266. package/esm2022/lib/search/search-bar/search-bar.module.mjs +8 -61
  267. package/esm2022/lib/search/search-results/index.mjs +10 -0
  268. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +42 -17
  269. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +28 -14
  270. package/esm2022/lib/search/search-results/search-results-item.component.mjs +22 -12
  271. package/esm2022/lib/search/search-results/search-results.component.mjs +24 -12
  272. package/esm2022/lib/search/search-results/search-results.module.mjs +8 -91
  273. package/esm2022/lib/search/search-selector/search-selector.component.mjs +27 -12
  274. package/esm2022/lib/search/search-selector/search-selector.module.mjs +8 -44
  275. package/esm2022/lib/search/search-settings/search-settings.component.mjs +37 -14
  276. package/esm2022/lib/search/search-settings/search-settings.module.mjs +7 -47
  277. package/esm2022/lib/search/search.module.mjs +10 -13
  278. package/esm2022/lib/search/shared/index.mjs +1 -1
  279. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +8 -7
  280. package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
  281. package/esm2022/lib/search/shared/search.service.mjs +5 -5
  282. package/esm2022/lib/search/shared/search.utils.mjs +1 -1
  283. package/esm2022/lib/search/shared/sources/cadastre.mjs +8 -7
  284. package/esm2022/lib/search/shared/sources/coordinates.mjs +10 -10
  285. package/esm2022/lib/search/shared/sources/icherche.mjs +16 -16
  286. package/esm2022/lib/search/shared/sources/ilayer.mjs +10 -10
  287. package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
  288. package/esm2022/lib/search/shared/sources/nominatim.mjs +6 -6
  289. package/esm2022/lib/search/shared/sources/source.mjs +1 -1
  290. package/esm2022/lib/search/shared/sources/storedqueries.mjs +11 -11
  291. package/esm2022/lib/search/shared/sources/workspace.mjs +7 -8
  292. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +1 -1
  293. package/esm2022/lib/style/shared/datasource/index.mjs +1 -1
  294. package/esm2022/lib/style/shared/feature/feature-style.mjs +1 -1
  295. package/esm2022/lib/style/shared/feature/index.mjs +1 -1
  296. package/esm2022/lib/style/shared/overlay/index.mjs +1 -1
  297. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +1 -1
  298. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
  299. package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +1 -1
  300. package/esm2022/lib/style/shared/vector/conversion.utils.mjs +1 -1
  301. package/esm2022/lib/style/shared/vector/index.mjs +1 -1
  302. package/esm2022/lib/style/style-list/index.mjs +1 -1
  303. package/esm2022/lib/style/style-list/style-list.interface.mjs +1 -1
  304. package/esm2022/lib/style/style-list/style-list.module.mjs +5 -5
  305. package/esm2022/lib/style/style-list/style-list.service.mjs +5 -5
  306. package/esm2022/lib/style/style-modal/drawing/index.mjs +1 -1
  307. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +40 -17
  308. package/esm2022/lib/style/style-modal/index.mjs +1 -1
  309. package/esm2022/lib/style/style-modal/layer/index.mjs +1 -1
  310. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +28 -14
  311. package/esm2022/lib/style/style-modal/layer-button/index.mjs +1 -1
  312. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +13 -9
  313. package/esm2022/lib/style/style-modal/shared/index.mjs +1 -1
  314. package/esm2022/lib/style/style-service/draw-style.service.mjs +5 -5
  315. package/esm2022/lib/style/style-service/index.mjs +1 -1
  316. package/esm2022/lib/style/style-service/style.service.mjs +4 -4
  317. package/esm2022/lib/style/style.module.mjs +12 -57
  318. package/esm2022/lib/toast/index.mjs +1 -1
  319. package/esm2022/lib/toast/toast.component.mjs +19 -11
  320. package/esm2022/lib/toast/toast.module.mjs +10 -30
  321. package/esm2022/lib/utils/id-generator.mjs +1 -1
  322. package/esm2022/lib/utils/index.mjs +1 -1
  323. package/esm2022/lib/utils/propertyTypeDetector/index.mjs +1 -1
  324. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +5 -5
  325. package/esm2022/lib/wkt/index.mjs +1 -1
  326. package/esm2022/lib/wkt/shared/index.mjs +1 -1
  327. package/esm2022/lib/wkt/shared/wkt.service.mjs +5 -5
  328. package/esm2022/lib/wkt/wkt.module.mjs +8 -5
  329. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +9 -8
  330. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +8 -24
  331. package/esm2022/lib/workspace/index.mjs +1 -1
  332. package/esm2022/lib/workspace/shared/edition-workspace.mjs +1 -1
  333. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +5 -5
  334. package/esm2022/lib/workspace/shared/feature-workspace.mjs +1 -1
  335. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +5 -5
  336. package/esm2022/lib/workspace/shared/index.mjs +1 -1
  337. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +1 -1
  338. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +5 -5
  339. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +5 -5
  340. package/esm2022/lib/workspace/shared/workspace.utils.mjs +1 -1
  341. package/esm2022/lib/workspace/widgets/index.mjs +1 -1
  342. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +7 -7
  343. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +8 -13
  344. package/esm2022/lib/workspace/widgets/widgets.mjs +1 -1
  345. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +7 -6
  346. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +8 -10
  347. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +7 -6
  348. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +8 -10
  349. package/esm2022/lib/workspace/workspace.module.mjs +10 -35
  350. package/esm2022/public_api.mjs +11 -12
  351. package/fesm2022/igo2-geo.mjs +34458 -34603
  352. package/fesm2022/igo2-geo.mjs.map +1 -1
  353. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +1 -1
  354. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +1 -1
  355. package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +1 -1
  356. package/lib/catalog/catalog-browser/catalog-browser.module.d.ts +2 -14
  357. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +1 -1
  358. package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +1 -1
  359. package/lib/catalog/catalog-library/catalog-library.component.d.ts +1 -1
  360. package/lib/catalog/catalog-library/catalog-library.module.d.ts +3 -18
  361. package/lib/catalog/catalog-library/index.d.ts +5 -0
  362. package/lib/catalog/catalog.module.d.ts +6 -9
  363. package/lib/catalog/index.d.ts +2 -0
  364. package/lib/datasource/shared/datasource.service.d.ts +2 -4
  365. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +1 -1
  366. package/lib/directions/directions-inputs/directions-inputs.component.d.ts +1 -1
  367. package/lib/directions/directions-results/directions-results.component.d.ts +1 -1
  368. package/lib/directions/directions.component.d.ts +1 -1
  369. package/lib/directions/directions.module.d.ts +9 -20
  370. package/lib/download/download-button/download-button.component.d.ts +1 -1
  371. package/lib/download/download.module.d.ts +4 -6
  372. package/lib/draw/draw/draw-layer-popup.component.d.ts +1 -1
  373. package/lib/draw/draw/draw-popup.component.d.ts +4 -4
  374. package/lib/draw/draw/draw-shorcuts.component.d.ts +1 -1
  375. package/lib/draw/draw/draw.component.d.ts +1 -1
  376. package/lib/draw/draw/draw.module.d.ts +2 -25
  377. package/lib/draw/drawingTool.module.d.ts +3 -0
  378. package/lib/feature/feature-details/feature-details.component.d.ts +4 -2
  379. package/lib/feature/feature-details/feature-details.directive.d.ts +1 -1
  380. package/lib/feature/feature-details/feature-details.module.d.ts +2 -6
  381. package/lib/feature/feature-details/index.d.ts +5 -0
  382. package/lib/feature/feature-form/feature-form.component.d.ts +2 -2
  383. package/lib/feature/feature-form/feature-form.module.d.ts +2 -4
  384. package/lib/feature/feature.module.d.ts +6 -4
  385. package/lib/feature/index.d.ts +3 -1
  386. package/lib/filter/filter.module.d.ts +4 -28
  387. package/lib/filter/index.d.ts +16 -0
  388. package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +3 -3
  389. package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +3 -3
  390. package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +3 -3
  391. package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +1 -1
  392. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +2 -2
  393. package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +3 -3
  394. package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +3 -3
  395. package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +1 -1
  396. package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +3 -3
  397. package/lib/filter/shared/filterable-datasource.pipe.d.ts +1 -1
  398. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +4 -4
  399. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +1 -1
  400. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +1 -1
  401. package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
  402. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +3 -3
  403. package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
  404. package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +1 -1
  405. package/lib/filter/time-filter-list/time-filter-list.component.d.ts +1 -1
  406. package/lib/geo.module.d.ts +14 -24
  407. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +1 -1
  408. package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +1 -1
  409. package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +2 -10
  410. package/lib/geometry/geometry-form-field/index.d.ts +5 -0
  411. package/lib/geometry/geometry.module.d.ts +5 -3
  412. package/lib/geometry/index.d.ts +1 -2
  413. package/lib/import-export/export-button/export-button.component.d.ts +1 -1
  414. package/lib/import-export/import-export/import-export.component.d.ts +1 -1
  415. package/lib/import-export/import-export.module.d.ts +4 -15
  416. package/lib/import-export/index.d.ts +4 -0
  417. package/lib/import-export/shared/drop-geo-file.directive.d.ts +1 -1
  418. package/lib/layer/index.d.ts +8 -0
  419. package/lib/layer/layer-item/layer-item.component.d.ts +1 -1
  420. package/lib/layer/layer-legend/layer-legend.component.d.ts +1 -1
  421. package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +1 -1
  422. package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +1 -1
  423. package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +1 -1
  424. package/lib/layer/layer-list/layer-list-binding.directive.d.ts +1 -1
  425. package/lib/layer/layer-list/layer-list.component.d.ts +1 -1
  426. package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +1 -1
  427. package/lib/layer/layer.module.d.ts +4 -18
  428. package/lib/layer/track-feature-button/track-feature-button.component.d.ts +1 -1
  429. package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +1 -1
  430. package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +1 -1
  431. package/lib/map/geolocate-button/geolocate-button.component.d.ts +1 -1
  432. package/lib/map/home-extent-button/home-extent-button.component.d.ts +1 -1
  433. package/lib/map/index.d.ts +14 -0
  434. package/lib/map/info-section/info-section.component.d.ts +1 -1
  435. package/lib/map/map-browser/map-browser.component.d.ts +1 -1
  436. package/lib/map/map-center/map-center.component.d.ts +1 -1
  437. package/lib/map/map.module.d.ts +4 -7
  438. package/lib/map/menu-button/menu-button.component.d.ts +1 -1
  439. package/lib/map/offline-button/offline-button.component.d.ts +2 -2
  440. package/lib/map/rotation-button/rotation-button.component.d.ts +1 -1
  441. package/lib/map/shared/hover-feature.directive.d.ts +1 -1
  442. package/lib/map/shared/map-pointer-position.directive.d.ts +1 -1
  443. package/lib/map/shared/mapOffline.directive.d.ts +1 -1
  444. package/lib/map/swipe-control/swipe-control.component.d.ts +1 -1
  445. package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +1 -1
  446. package/lib/map/zoom-button/zoom-button.component.d.ts +1 -1
  447. package/lib/measure/index.d.ts +1 -2
  448. package/lib/measure/measure.module.d.ts +3 -0
  449. package/lib/measure/measurer/index.d.ts +5 -0
  450. package/lib/measure/measurer/measure-format.pipe.d.ts +1 -1
  451. package/lib/measure/measurer/measurer-dialog.component.d.ts +1 -1
  452. package/lib/measure/measurer/measurer-item.component.d.ts +1 -1
  453. package/lib/measure/measurer/measurer.component.d.ts +2 -3
  454. package/lib/measure/measurer/measurer.module.d.ts +3 -18
  455. package/lib/metadata/index.d.ts +2 -0
  456. package/lib/metadata/metadata-button/metadata-button.component.d.ts +2 -2
  457. package/lib/metadata/metadata.module.d.ts +4 -7
  458. package/lib/overlay/overlay.module.d.ts +4 -1
  459. package/lib/overlay/shared/overlay.directive.d.ts +1 -1
  460. package/lib/print/print/print.component.d.ts +1 -1
  461. package/lib/print/print-form/print-form.component.d.ts +1 -1
  462. package/lib/print/print.module.d.ts +4 -12
  463. package/lib/query/query.module.d.ts +4 -4
  464. package/lib/query/shared/query.directive.d.ts +1 -1
  465. package/lib/query/shared/query.service.d.ts +2 -3
  466. package/lib/search/index.d.ts +6 -4
  467. package/lib/search/search-bar/search-bar.component.d.ts +1 -1
  468. package/lib/search/search-bar/search-bar.module.d.ts +2 -16
  469. package/lib/search/search-results/index.d.ts +6 -0
  470. package/lib/search/search-results/save-feature-dialog.component.d.ts +1 -1
  471. package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
  472. package/lib/search/search-results/search-results-item.component.d.ts +1 -1
  473. package/lib/search/search-results/search-results.component.d.ts +1 -1
  474. package/lib/search/search-results/search-results.module.d.ts +3 -21
  475. package/lib/search/search-selector/search-selector.component.d.ts +1 -1
  476. package/lib/search/search-selector/search-selector.module.d.ts +2 -11
  477. package/lib/search/search-settings/search-settings.component.d.ts +1 -1
  478. package/lib/search/search-settings/search-settings.module.d.ts +2 -12
  479. package/lib/search/search.module.d.ts +6 -7
  480. package/lib/search/shared/search-pointer-summary.directive.d.ts +1 -1
  481. package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
  482. package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
  483. package/lib/search/shared/sources/icherche.providers.d.ts +2 -2
  484. package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
  485. package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
  486. package/lib/search/shared/sources/storedqueries.providers.d.ts +2 -2
  487. package/lib/search/shared/sources/workspace.providers.d.ts +1 -1
  488. package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +1 -1
  489. package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +1 -1
  490. package/lib/style/style-modal/layer-button/style-modal-layer-button.component.d.ts +1 -1
  491. package/lib/style/style.module.d.ts +5 -16
  492. package/lib/toast/toast.component.d.ts +1 -1
  493. package/lib/toast/toast.module.d.ts +4 -6
  494. package/lib/wkt/wkt.module.d.ts +3 -0
  495. package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +1 -1
  496. package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +2 -6
  497. package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
  498. package/lib/workspace/widgets/ogc-filter/ogc-filter.module.d.ts +2 -6
  499. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +1 -1
  500. package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +2 -3
  501. package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +1 -1
  502. package/lib/workspace/workspace-updator/workspace-updator.module.d.ts +2 -3
  503. package/lib/workspace/workspace.module.d.ts +5 -9
  504. package/locale/en.geo.json +3 -3
  505. package/locale/fr.geo.json +3 -3
  506. package/package.json +14 -12
  507. package/public_api.d.ts +10 -11
  508. package/src/geo-theme.scss +23 -23
  509. package/src/lib/filter/filter.theming.scss +13 -13
  510. package/src/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +18 -18
  511. package/src/lib/filter/time-filter-form/time-filter-form.theming.scss +5 -5
  512. package/src/lib/layer/layer-item/layer-item.theme.scss +33 -33
  513. package/src/lib/layer/layer-legend/layer-legend.theming.scss +10 -10
  514. package/src/lib/layer/layer-list-tool/layer-list-tool.theming.scss +34 -34
  515. package/src/lib/layer/layer.theming.scss +10 -10
  516. package/src/lib/map/map-browser/map-browser.theming.scss +46 -46
  517. package/src/lib/map/map.theming.scss +9 -9
  518. package/src/lib/map/menu-button/menu-button.theming.scss +20 -20
  519. package/src/lib/map/zoom-button/zoom-button.theming.scss +32 -32
  520. package/src/style/style.scss +1 -1
  521. package/esm2022/lib/datasource/datasource.module.mjs +0 -22
  522. package/esm2022/lib/search/search-bar/search-url-param.directive.mjs +0 -40
  523. package/lib/datasource/datasource.module.d.ts +0 -8
  524. package/lib/search/search-bar/search-url-param.directive.d.ts +0 -13
@@ -1,11 +1,17 @@
1
+ import { AsyncPipe, NgIf } from '@angular/common';
1
2
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
3
+ import { MatBadgeModule } from '@angular/material/badge';
4
+ import { MatButtonModule } from '@angular/material/button';
2
5
  import { MatDialog } from '@angular/material/dialog';
3
- import { EntityStore } from '@igo2/common';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import { MatTooltipModule } from '@angular/material/tooltip';
8
+ import { EntityStore, IgoBadgeIconDirective, StopPropagationDirective } from '@igo2/common';
4
9
  import { Media, MediaService } from '@igo2/core';
5
10
  import Circle from 'ol/style/Circle';
6
11
  import Fill from 'ol/style/Fill';
7
12
  import Stroke from 'ol/style/Stroke';
8
13
  import Style from 'ol/style/Style';
14
+ import { TranslateModule } from '@ngx-translate/core';
9
15
  import { BehaviorSubject, take } from 'rxjs';
10
16
  import { DataSourceService } from '../../datasource/shared/datasource.service';
11
17
  import { FeatureMotion, FeatureStore, FeatureStoreLoadingStrategy, FeatureStoreSelectionStrategy, tryAddLoadingStrategy, tryAddSelectionStrategy, tryBindStoreLayer } from '../../feature';
@@ -20,13 +26,11 @@ import * as i1 from "../../layer/shared/layer.service";
20
26
  import * as i2 from "@angular/material/dialog";
21
27
  import * as i3 from "../../datasource/shared/datasource.service";
22
28
  import * as i4 from "@igo2/core";
23
- import * as i5 from "@angular/common";
24
- import * as i6 from "@angular/material/badge";
25
- import * as i7 from "@igo2/common";
26
- import * as i8 from "@angular/material/button";
27
- import * as i9 from "@angular/material/icon";
28
- import * as i10 from "@angular/material/tooltip";
29
- import * as i11 from "@ngx-translate/core";
29
+ import * as i5 from "@angular/material/button";
30
+ import * as i6 from "@angular/material/tooltip";
31
+ import * as i7 from "@angular/material/icon";
32
+ import * as i8 from "@angular/material/badge";
33
+ import * as i9 from "@ngx-translate/core";
30
34
  export class SearchResultAddButtonComponent {
31
35
  layerService;
32
36
  dialog;
@@ -389,13 +393,23 @@ export class SearchResultAddButtonComponent {
389
393
  }
390
394
  });
391
395
  }
392
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchResultAddButtonComponent, deps: [{ token: i1.LayerService }, { token: i2.MatDialog }, { token: i3.DataSourceService }, { token: i4.MediaService }], target: i0.ɵɵFactoryTarget.Component });
393
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SearchResultAddButtonComponent, selector: "igo-search-add-button", inputs: { layer: "layer", store: "store", added: "added", map: "map", saveSearchResultInLayer: "saveSearchResultInLayer", color: "color", stores: "stores" }, ngImport: i0, template: "<button\r\n igoStopPropagation\r\n (mouseenter)=\"onMouseEvent($event)\"\r\n (mouseleave)=\"onMouseEvent($event)\"\r\n *ngIf=\"layer.meta.dataType === 'Layer'\"\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>\r\n <mat-icon\r\n aria-hidden=\"false\"\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]=\"\r\n ((inRange$ | async) && (isVisible$ | async) === true) ||\r\n ((inRange$ | async) && !added) ||\r\n ((inRange$ | async) && (isPreview$ | async))\r\n \"\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 >\r\n </mat-icon>\r\n</button>\r\n\r\n<button\r\n [id]=\"!isMobile ? 'hide-save-search-result-btn' : ''\"\r\n igoStopPropagation\r\n *ngIf=\"layer.meta.dataType === 'Feature' && saveSearchResultInLayer\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"addFeatureToLayerTooltip$ | async | translate\"\r\n (click)=\"addFeatureToLayer()\"\r\n>\r\n <mat-icon\r\n aria-hidden=\"false\"\r\n matBadge=\"icon\"\r\n igoMatBadgeIcon=\"eye-off\"\r\n igoMatBadgeInverseColor=\"true\"\r\n [matBadgeHidden]=\"inRange$ | async\"\r\n matBadgeDisabled=\"true\"\r\n matBadgeSize=\"small\"\r\n matBadgePosition=\"after\"\r\n svgIcon=\"file-plus-outline\"\r\n >\r\n </mat-icon>\r\n</button>\r\n", styles: [":host #hide-save-search-result-btn{display:none}:host #show-save-search-result-btn{display:block}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i7.IgoBadgeIconDirective, selector: "[igoMatBadgeIcon]", inputs: ["igoMatBadgeIcon", "matBadgeHidden", "matBadgeDisabled", "igoMatBadgeInverseColor", "igoMatBadgeInheritColor", "igoMatBadgeColor", "igoMatBadgeBackgroundColor"] }, { kind: "directive", type: i7.StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "component", type: i8.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
396
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SearchResultAddButtonComponent, deps: [{ token: i1.LayerService }, { token: i2.MatDialog }, { token: i3.DataSourceService }, { token: i4.MediaService }], target: i0.ɵɵFactoryTarget.Component });
397
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: SearchResultAddButtonComponent, isStandalone: true, selector: "igo-search-add-button", inputs: { layer: "layer", store: "store", added: "added", map: "map", saveSearchResultInLayer: "saveSearchResultInLayer", color: "color", stores: "stores" }, ngImport: i0, template: "<button\r\n igoStopPropagation\r\n (mouseenter)=\"onMouseEvent($event)\"\r\n (mouseleave)=\"onMouseEvent($event)\"\r\n *ngIf=\"layer.meta.dataType === 'Layer'\"\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>\r\n <mat-icon\r\n aria-hidden=\"false\"\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]=\"\r\n ((inRange$ | async) && (isVisible$ | async) === true) ||\r\n ((inRange$ | async) && !added) ||\r\n ((inRange$ | async) && (isPreview$ | async))\r\n \"\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 >\r\n </mat-icon>\r\n</button>\r\n\r\n<button\r\n [id]=\"!isMobile ? 'hide-save-search-result-btn' : ''\"\r\n igoStopPropagation\r\n *ngIf=\"layer.meta.dataType === 'Feature' && saveSearchResultInLayer\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"addFeatureToLayerTooltip$ | async | translate\"\r\n (click)=\"addFeatureToLayer()\"\r\n>\r\n <mat-icon\r\n aria-hidden=\"false\"\r\n matBadge=\"icon\"\r\n igoMatBadgeIcon=\"eye-off\"\r\n [igoMatBadgeInverseColor]=\"true\"\r\n [matBadgeHidden]=\"inRange$ | async\"\r\n [matBadgeDisabled]=\"true\"\r\n matBadgeSize=\"small\"\r\n matBadgePosition=\"after\"\r\n svgIcon=\"file-plus-outline\"\r\n >\r\n </mat-icon>\r\n</button>\r\n", styles: [":host #hide-save-search-result-btn{display:none}:host #show-save-search-result-btn{display:block}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: IgoBadgeIconDirective, selector: "[igoMatBadgeIcon]", inputs: ["igoMatBadgeIcon", "matBadgeHidden", "matBadgeDisabled", "igoMatBadgeInverseColor", "igoMatBadgeInheritColor", "igoMatBadgeColor", "igoMatBadgeBackgroundColor"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
394
398
  }
395
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchResultAddButtonComponent, decorators: [{
399
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SearchResultAddButtonComponent, decorators: [{
396
400
  type: Component,
397
- args: [{ selector: 'igo-search-add-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n igoStopPropagation\r\n (mouseenter)=\"onMouseEvent($event)\"\r\n (mouseleave)=\"onMouseEvent($event)\"\r\n *ngIf=\"layer.meta.dataType === 'Layer'\"\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>\r\n <mat-icon\r\n aria-hidden=\"false\"\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]=\"\r\n ((inRange$ | async) && (isVisible$ | async) === true) ||\r\n ((inRange$ | async) && !added) ||\r\n ((inRange$ | async) && (isPreview$ | async))\r\n \"\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 >\r\n </mat-icon>\r\n</button>\r\n\r\n<button\r\n [id]=\"!isMobile ? 'hide-save-search-result-btn' : ''\"\r\n igoStopPropagation\r\n *ngIf=\"layer.meta.dataType === 'Feature' && saveSearchResultInLayer\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"addFeatureToLayerTooltip$ | async | translate\"\r\n (click)=\"addFeatureToLayer()\"\r\n>\r\n <mat-icon\r\n aria-hidden=\"false\"\r\n matBadge=\"icon\"\r\n igoMatBadgeIcon=\"eye-off\"\r\n igoMatBadgeInverseColor=\"true\"\r\n [matBadgeHidden]=\"inRange$ | async\"\r\n matBadgeDisabled=\"true\"\r\n matBadgeSize=\"small\"\r\n matBadgePosition=\"after\"\r\n svgIcon=\"file-plus-outline\"\r\n >\r\n </mat-icon>\r\n</button>\r\n", styles: [":host #hide-save-search-result-btn{display:none}:host #show-save-search-result-btn{display:block}\n"] }]
398
- }], ctorParameters: function () { return [{ type: i1.LayerService }, { type: i2.MatDialog }, { type: i3.DataSourceService }, { type: i4.MediaService }]; }, propDecorators: { layer: [{
401
+ args: [{ selector: 'igo-search-add-button', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
402
+ NgIf,
403
+ MatButtonModule,
404
+ StopPropagationDirective,
405
+ MatTooltipModule,
406
+ MatIconModule,
407
+ MatBadgeModule,
408
+ IgoBadgeIconDirective,
409
+ AsyncPipe,
410
+ TranslateModule
411
+ ], template: "<button\r\n igoStopPropagation\r\n (mouseenter)=\"onMouseEvent($event)\"\r\n (mouseleave)=\"onMouseEvent($event)\"\r\n *ngIf=\"layer.meta.dataType === 'Layer'\"\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>\r\n <mat-icon\r\n aria-hidden=\"false\"\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]=\"\r\n ((inRange$ | async) && (isVisible$ | async) === true) ||\r\n ((inRange$ | async) && !added) ||\r\n ((inRange$ | async) && (isPreview$ | async))\r\n \"\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 >\r\n </mat-icon>\r\n</button>\r\n\r\n<button\r\n [id]=\"!isMobile ? 'hide-save-search-result-btn' : ''\"\r\n igoStopPropagation\r\n *ngIf=\"layer.meta.dataType === 'Feature' && saveSearchResultInLayer\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"addFeatureToLayerTooltip$ | async | translate\"\r\n (click)=\"addFeatureToLayer()\"\r\n>\r\n <mat-icon\r\n aria-hidden=\"false\"\r\n matBadge=\"icon\"\r\n igoMatBadgeIcon=\"eye-off\"\r\n [igoMatBadgeInverseColor]=\"true\"\r\n [matBadgeHidden]=\"inRange$ | async\"\r\n [matBadgeDisabled]=\"true\"\r\n matBadgeSize=\"small\"\r\n matBadgePosition=\"after\"\r\n svgIcon=\"file-plus-outline\"\r\n >\r\n </mat-icon>\r\n</button>\r\n", styles: [":host #hide-save-search-result-btn{display:none}:host #show-save-search-result-btn{display:block}\n"] }]
412
+ }], ctorParameters: () => [{ type: i1.LayerService }, { type: i2.MatDialog }, { type: i3.DataSourceService }, { type: i4.MediaService }], propDecorators: { layer: [{
399
413
  type: Input
400
414
  }], store: [{
401
415
  type: Input
@@ -410,4 +424,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
410
424
  }], stores: [{
411
425
  type: Input
412
426
  }] } });
413
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFLakQsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDckMsT0FBTyxJQUFJLE1BQU0sZUFBZSxDQUFDO0FBQ2pDLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8sS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxlQUFlLEVBQWdCLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUUvRSxPQUFPLEVBRUwsYUFBYSxFQUNiLFlBQVksRUFDWiwyQkFBMkIsRUFDM0IsNkJBQTZCLEVBQzdCLHFCQUFxQixFQUNyQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FB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QUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9CLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3QixXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRU8sdUJBQXVCLENBQUMsVUFBVTtRQUN4Qyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQ3pDLENBQUMsU0FBZ0MsRUFBRSxFQUFFO1lBQ25DLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3RDO1FBQ0gsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO3dHQXhhVSw4QkFBOEI7NEZBQTlCLDhCQUE4QiwyTkNsRDNDLG95REF1REE7OzRGRExhLDhCQUE4QjtrQkFOMUMsU0FBUzsrQkFDRSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU07c0xBeUJ0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUdGLEtBQUs7c0JBRFIsS0FBSztnQkFTRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IE1lZGlhLCBNZWRpYVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcclxuXHJcbmltcG9ydCBPbE92ZXJsYXkgZnJvbSAnb2wvT3ZlcmxheSc7XHJcbmltcG9ydCB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xyXG5pbXBvcnQgeyBWZWN0b3JTb3VyY2VFdmVudCBhcyBPbFZlY3RvclNvdXJjZUV2ZW50IH0gZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XHJcbmltcG9ydCBDaXJjbGUgZnJvbSAnb2wvc3R5bGUvQ2lyY2xlJztcclxuaW1wb3J0IEZpbGwgZnJvbSAnb2wvc3R5bGUvRmlsbCc7XHJcbmltcG9ydCBTdHJva2UgZnJvbSAnb2wvc3R5bGUvU3Ryb2tlJztcclxuaW1wb3J0IFN0eWxlIGZyb20gJ29sL3N0eWxlL1N0eWxlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBEYXRhU291cmNlU2VydmljZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMnO1xyXG5pbXBvcnQge1xyXG4gIEZlYXR1cmUsXHJcbiAgRmVhdHVyZU1vdGlvbixcclxuICBGZWF0dXJlU3RvcmUsXHJcbiAgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5LFxyXG4gIHRyeUFkZExvYWRpbmdTdHJhdGVneSxcclxuICB0cnlBZGRTZWxlY3Rpb25TdHJhdGVneSxcclxuICB0cnlCaW5kU3RvcmVMYXllclxyXG59IGZyb20gJy4uLy4uL2ZlYXR1cmUnO1xyXG5pbXBvcnQgeyBMQVlFUiB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllci5lbnVtcyc7XHJcbmltcG9ydCB7IExheWVyU2VydmljZSB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGF5ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBWZWN0b3JMYXllciB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMvdmVjdG9yLWxheWVyJztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5pbXBvcnQgeyBnZXRUb29sdGlwc09mT2xHZW9tZXRyeSB9IGZyb20gJy4uLy4uL21lYXN1cmUnO1xyXG5pbXBvcnQgeyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL3F1ZXJ5L3NoYXJlZCc7XHJcbmltcG9ydCB7IFNlYXJjaFJlc3VsdCB9IGZyb20gJy4uL3NoYXJlZC9zZWFyY2guaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFNhdmVGZWF0dXJlRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9zYXZlLWZlYXR1cmUtZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2lnby1zZWFyY2gtYWRkLWJ1dHRvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1yZXN1bHRzLWFkZC1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1yZXN1bHRzLWFkZC1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoUmVzdWx0QWRkQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyB0b29sdGlwJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFxyXG4gICAgJ2lnby5nZW8uY2F0YWxvZy5sYXllci5hZGRUb01hcCdcclxuICApO1xyXG5cclxuICBwdWJsaWMgYWRkRmVhdHVyZVRvTGF5ZXJUb29sdGlwJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPVxyXG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdCgnaWdvLmdlby5zZWFyY2guYWRkVG9MYXllcicpO1xyXG5cclxuICBwcml2YXRlIHJlc29sdXRpb24kJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgbGF5ZXJzJCQ6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgcHVibGljIGluUmFuZ2UkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xyXG5cclxuICBwdWJsaWMgaXNWaXNpYmxlJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcblxyXG4gIHB1YmxpYyBpc1ByZXZpZXckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuXHJcbiAgcHJpdmF0ZSBsYXllcnNTdWJjcmlwdGlvbnMgPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBsYXN0VGltZW91dFJlcXVlc3Q7XHJcblxyXG4gIHByaXZhdGUgbW91c2VJbnNpZGVBZGQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgbGF5ZXI6IFNlYXJjaFJlc3VsdDtcclxuXHJcbiAgQElucHV0KCkgc3RvcmU6IEVudGl0eVN0b3JlPFNlYXJjaFJlc3VsdD47XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgdGhlIGxheWVyIGlzIGFscmVhZHkgYWRkZWQgdG8gdGhlIG1hcFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFkZGVkOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbWFwIHRvIGFkZCB0aGUgc2VhcmNoIHJlc3VsdCBsYXllciB0b1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xyXG5cclxuICAvKipcclxuICAgKiBzaG93IGhpZGUgc2F2ZSBzZWFyY2ggcmVzdWx0IGluIGxheWVyIGJ1dHRvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNhdmVTZWFyY2hSZXN1bHRJbkxheWVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGNvbG9yKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbG9yO1xyXG4gIH1cclxuICBzZXQgY29sb3IodmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5fY29sb3IgPSB2YWx1ZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY29sb3IgPSAncHJpbWFyeSc7XHJcblxyXG4gIEBJbnB1dCgpIHN0b3JlczogRmVhdHVyZVN0b3JlPEZlYXR1cmU+W10gPSBbXTtcclxuXHJcbiAgZ2V0IGFsbExheWVycygpIHtcclxuICAgIHJldHVybiB0aGlzLm1hcC5sYXllcnMuZmlsdGVyKChsYXllcikgPT5cclxuICAgICAgU3RyaW5nKGxheWVyLmlkKS5pbmNsdWRlcygnaWdvLXNlYXJjaC1sYXllcicpXHJcbiAgICApO1xyXG4gIH1cclxuICBwcml2YXRlIG1lZGlhU2VydmljZSQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHVibGljIGlzTW9iaWxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgZGF0YVNvdXJjZVNlcnZpY2U6IERhdGFTb3VyY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtZWRpYVNlcnZpY2U6IE1lZGlhU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBjaGVjayB0aGUgdmlldyBpZiBpcyBtb2JpbGUgb3Igbm90XHJcbiAgICB0aGlzLm1lZGlhU2VydmljZSQkID0gdGhpcy5tZWRpYVNlcnZpY2UubWVkaWEkLnN1YnNjcmliZSgobWVkaWE6IE1lZGlhKSA9PiB7XHJcbiAgICAgIGlmIChtZWRpYSA9PT0gTWVkaWEuTW9iaWxlKSB7XHJcbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMubGF5ZXIubWV0YS5kYXRhVHlwZSA9PT0gJ0xheWVyJykge1xyXG4gICAgICB0aGlzLmFkZGVkID1cclxuICAgICAgICB0aGlzLm1hcC5sYXllcnMuZmluZEluZGV4KFxyXG4gICAgICAgICAgKGxheSkgPT4gbGF5LmlkID09PSB0aGlzLmxheWVyLmRhdGEuc291cmNlT3B0aW9ucy5pZFxyXG4gICAgICAgICkgIT09IC0xO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sYXllcnMkJCA9IHRoaXMubWFwLmxheWVycyQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5pc1Zpc2libGUoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZXNvbHV0aW9uJCQgPSB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJC5zdWJzY3JpYmUoXHJcbiAgICAgICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNJblJlc29sdXRpb25zUmFuZ2UodmFsdWUpO1xyXG4gICAgICAgIHRoaXMuaXNWaXNpYmxlKCk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMucmVzb2x1dGlvbiQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmxheWVycyQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICBpZiAodGhpcy5tZWRpYVNlcnZpY2UkJCkge1xyXG4gICAgICB0aGlzLm1lZGlhU2VydmljZSQkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBtb3VzZSBldmVudCwgbW91c2VlbnRlciAvbW91c2VsZWF2ZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG9uTW91c2VFdmVudChldmVudCkge1xyXG4gICAgdGhpcy5vblRvZ2dsZUNsaWNrKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIHRvZ2dsZSBidXR0b24gY2xpY2ssIGVtaXQgdGhlIGFkZGVkIGNoYW5nZSBldmVudFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG9uVG9nZ2xlQ2xpY2soY3VyckV2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGV2ZW50ID0gY3VyckV2ZW50ID8gY3VyckV2ZW50IDogKHt9IGFzIEV2ZW50KTtcclxuXHJcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21vdXNlZW50ZXInICYmIHRoaXMubW91c2VJbnNpZGVBZGQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2NsaWNrJzpcclxuICAgICAgICBpZiAoIXRoaXMuaXNQcmV2aWV3JC52YWx1ZSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuYWRkZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmUoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkKGV2ZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc1ByZXZpZXckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb3VzZWVudGVyJzpcclxuICAgICAgICBpZiAoIXRoaXMuaXNQcmV2aWV3JC52YWx1ZSAmJiAhdGhpcy5hZGRlZCkge1xyXG4gICAgICAgICAgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hZGQoZXZlbnQpO1xyXG4gICAgICAgICAgICB0aGlzLmlzUHJldmlldyQubmV4dCh0cnVlKTtcclxuICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubW91c2VJbnNpZGVBZGQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb3VzZWxlYXZlJzpcclxuICAgICAgICBpZiAodGhpcy5pc1ByZXZpZXckLnZhbHVlKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbW92ZSgpO1xyXG4gICAgICAgICAgdGhpcy5pc1ByZXZpZXckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1vdXNlSW5zaWRlQWRkID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZChldmVudDogRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5hZGRlZCkge1xyXG4gICAgICB0aGlzLmFkZGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hZGRMYXllclRvTWFwKGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlKCkge1xyXG4gICAgaWYgKHRoaXMuYWRkZWQpIHtcclxuICAgICAgdGhpcy5hZGRlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlbW92ZUxheWVyRnJvbU1hcCgpO1xyXG4gICAgICB0aGlzLmxheWVyc1N1YmNyaXB0aW9ucy5tYXAoKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICAgIHRoaXMubGF5ZXJzU3ViY3JpcHRpb25zID0gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0IGFkZGVkIGNoYW5nZSBldmVudCB3aXRoIGFkZGVkID0gdHJ1ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkTGF5ZXJUb01hcChldmVudD86IEV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5tYXAgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubGF5ZXIubWV0YS5kYXRhVHlwZSAhPT0gTEFZRVIpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsYXllck9wdGlvbnMgPSAodGhpcy5sYXllciBhcyBTZWFyY2hSZXN1bHQ8TGF5ZXJPcHRpb25zPikuZGF0YTtcclxuICAgIGlmIChsYXllck9wdGlvbnMuc291cmNlT3B0aW9ucy5vcHRpb25zRnJvbUFwaSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGxheWVyT3B0aW9ucy5zb3VyY2VPcHRpb25zLm9wdGlvbnNGcm9tQXBpID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMubGF5ZXJzU3ViY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMubGF5ZXJTZXJ2aWNlLmNyZWF0ZUFzeW5jTGF5ZXIobGF5ZXJPcHRpb25zKS5zdWJzY3JpYmUoKGxheWVyKSA9PiB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjbGljaycpIHtcclxuICAgICAgICAgIHRoaXMubWFwLmxheWVyc0FkZGVkQnlDbGljayQubmV4dChbbGF5ZXJdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tYXAuYWRkTGF5ZXIobGF5ZXIpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXQgYWRkZWQgY2hhbmdlIGV2ZW50IHdpdGggYWRkZWQgPSBmYWxzZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVtb3ZlTGF5ZXJGcm9tTWFwKCkge1xyXG4gICAgaWYgKHRoaXMubWFwID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmxheWVyLm1ldGEuZGF0YVR5cGUgIT09IExBWUVSKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb0xheWVyID0gdGhpcy5tYXAuZ2V0TGF5ZXJCeUlkKHRoaXMubGF5ZXIuZGF0YS5zb3VyY2VPcHRpb25zLmlkKTtcclxuICAgIHRoaXMubWFwLnJlbW92ZUxheWVyKG9MYXllcik7XHJcbiAgfVxyXG5cclxuICBpc0luUmVzb2x1dGlvbnNSYW5nZShyZXNvbHV0aW9uOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IG1pblJlc29sdXRpb24gPSB0aGlzLmxheWVyLmRhdGEubWluUmVzb2x1dGlvbiB8fCAwO1xyXG4gICAgY29uc3QgbWF4UmVzb2x1dGlvbiA9IHRoaXMubGF5ZXIuZGF0YS5tYXhSZXNvbHV0aW9uIHx8IEluZmluaXR5O1xyXG4gICAgdGhpcy5pblJhbmdlJC5uZXh0KFxyXG4gICAgICByZXNvbHV0aW9uID49IG1pblJlc29sdXRpb24gJiYgcmVzb2x1dGlvbiA8PSBtYXhSZXNvbHV0aW9uXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNWaXNpYmxlKCkge1xyXG4gICAgaWYgKHRoaXMubGF5ZXI/LmRhdGE/LnNvdXJjZU9wdGlvbnM/LmlkKSB7XHJcbiAgICAgIGNvbnN0IG9MYXllciA9IHRoaXMubWFwLmdldExheWVyQnlJZCh0aGlzLmxheWVyLmRhdGEuc291cmNlT3B0aW9ucy5pZCk7XHJcbiAgICAgIG9MYXllclxyXG4gICAgICAgID8gdGhpcy5pc1Zpc2libGUkLm5leHQob0xheWVyLnZpc2libGUpXHJcbiAgICAgICAgOiB0aGlzLmlzVmlzaWJsZSQubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRCYWRnZUljb24oKSB7XHJcbiAgICBpZiAodGhpcy5pblJhbmdlJC52YWx1ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5pc1Zpc2libGUkLnZhbHVlID8gJycgOiAnZXllLW9mZic7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ2V5ZS1vZmYnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcHV0ZVRvb2x0aXAoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmFkZGVkKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzUHJldmlldyQudmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gJ2lnby5nZW8uY2F0YWxvZy5sYXllci5hZGRUb01hcCc7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pblJhbmdlJC52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZSQudmFsdWVcclxuICAgICAgICAgID8gJ2lnby5nZW8uY2F0YWxvZy5sYXllci5yZW1vdmVGcm9tTWFwJ1xyXG4gICAgICAgICAgOiAnaWdvLmdlby5jYXRhbG9nLmxheWVyLnJlbW92ZUZyb21NYXBOb3RWaXNpYmxlJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ2lnby5nZW8uY2F0YWxvZy5sYXllci5yZW1vdmVGcm9tTWFwT3V0UmFuZ2UnO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5pblJhbmdlJC52YWx1ZVxyXG4gICAgICAgID8gJ2lnby5nZW8uY2F0YWxvZy5sYXllci5hZGRUb01hcCdcclxuICAgICAgICA6ICdpZ28uZ2VvLmNhdGFsb2cubGF5ZXIuYWRkVG9NYXBPdXRSYW5nZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRGZWF0dXJlVG9MYXllcigpIHtcclxuICAgIGlmICh0aGlzLmxheWVyLm1ldGEuZGF0YVR5cGUgIT09ICdGZWF0dXJlJykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRGZWF0dXJlID0gdGhpcy5sYXllcjtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oU2F2ZUZlYXR1cmVEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc3MDBweCcsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBmZWF0dXJlOiBzZWxlY3RlZEZlYXR1cmUsXHJcbiAgICAgICAgbGF5ZXJzOiB0aGlzLmFsbExheWVyc1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBkaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogeyBsYXllcjogc3RyaW5nIHwgYW55OyBmZWF0dXJlOiBTZWFyY2hSZXN1bHQgfSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zdG9yZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnN0b3Jlcy5tYXAoKHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgICAgc3RvcmUuc3RhdGUudXBkYXRlQWxsKHsgc2VsZWN0ZWQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgIGlmIChzdG9yZT8ubGF5ZXIpIHtcclxuICAgICAgICAgICAgICAgIHN0b3JlLmxheWVyLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIGNoZWNrIGlmIGlzIG5ldyBsYXllclxyXG4gICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmxheWVyID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUxheWVyKGRhdGEubGF5ZXIsIGRhdGEuZmVhdHVyZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBhY3RpdmVTdG9yZSA9IHRoaXMuc3RvcmVzLmZpbmQoXHJcbiAgICAgICAgICAgICAgKHN0b3JlKSA9PiBzdG9yZS5sYXllci5pZCA9PT0gZGF0YS5sYXllci5pZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBhY3RpdmVTdG9yZS5sYXllci52aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgYWN0aXZlU3RvcmUubGF5ZXIub3BhY2l0eSA9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkRmVhdHVyZShkYXRhLmZlYXR1cmUsIGFjdGl2ZVN0b3JlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlTGF5ZXIobGF5ZXJUaXRsZTogc3RyaW5nLCBzZWxlY3RlZEZlYXR1cmU6IFNlYXJjaFJlc3VsdCkge1xyXG4gICAgY29uc3QgYWN0aXZlU3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPiA9IG5ldyBGZWF0dXJlU3RvcmU8RmVhdHVyZT4oW10sIHtcclxuICAgICAgbWFwOiB0aGlzLm1hcFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgc3R5bGVzID0gW1xyXG4gICAgICBuZXcgU3R5bGUoe1xyXG4gICAgICAgIGltYWdlOiBuZXcgQ2lyY2xlKHtcclxuICAgICAgICAgIHJhZGl1czogNSxcclxuICAgICAgICAgIHN0cm9rZTogbmV3IFN0cm9rZSh7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxLFxyXG4gICAgICAgICAgICBjb2xvcjogJ3JnYmEoMTQzLDcsNywxKSdcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgZmlsbDogbmV3IEZpbGwoe1xyXG4gICAgICAgICAgICBjb2xvcjogJ3JnYmEoMTQzLDcsNywxKSdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgfSksXHJcbiAgICAgIG5ldyBTdHlsZSh7XHJcbiAgICAgICAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHtcclxuICAgICAgICAgIHdpZHRoOiAxLFxyXG4gICAgICAgICAgY29sb3I6ICdyZ2JhKDE0Myw3LDcsMSknXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgZmlsbDogbmV3IEZpbGwoe1xyXG4gICAgICAgICAgY29sb3I6ICdyZ2JhKDAsIDAsIDI1NSwgMC4xKSdcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgXTtcclxuXHJcbiAgICAvLyBzZXQgbGF5ZXIgaWRcclxuICAgIGxldCBsYXllckNvdW50ZXJJRDogbnVtYmVyID0gMDtcclxuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgdGhpcy5hbGxMYXllcnMpIHtcclxuICAgICAgbGV0IG51bWJlcklkID0gTnVtYmVyKGxheWVyLmlkLnJlcGxhY2UoJ2lnby1zZWFyY2gtbGF5ZXInLCAnJykpO1xyXG4gICAgICBsYXllckNvdW50ZXJJRCA9IE1hdGgubWF4KG51bWJlcklkLCBsYXllckNvdW50ZXJJRCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhU291cmNlU2VydmljZVxyXG4gICAgICAuY3JlYXRlQXN5bmNEYXRhU291cmNlKHtcclxuICAgICAgICB0eXBlOiAndmVjdG9yJyxcclxuICAgICAgICBxdWVyeWFibGU6IHRydWVcclxuICAgICAgfSBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucylcclxuICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YVNvdXJjZTogRmVhdHVyZURhdGFTb3VyY2UpID0+IHtcclxuICAgICAgICBsZXQgc2VhcmNoTGF5ZXI6IFZlY3RvckxheWVyID0gbmV3IFZlY3RvckxheWVyKHtcclxuICAgICAgICAgIGlzSWdvSW50ZXJuYWxMYXllcjogdHJ1ZSxcclxuICAgICAgICAgIGlkOiAnaWdvLXNlYXJjaC1sYXllcicgKyArK2xheWVyQ291bnRlcklELFxyXG4gICAgICAgICAgdGl0bGU6IGxheWVyVGl0bGUsXHJcbiAgICAgICAgICBzb3VyY2U6IGRhdGFTb3VyY2UsXHJcbiAgICAgICAgICBpZ29TdHlsZToge1xyXG4gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGlnb1N0eWxlT2JqZWN0OiB7XHJcbiAgICAgICAgICAgICAgZmlsbDogeyBjb2xvcjogJ3JnYmEoMjU1LDI1NSwyNTUsMC40KScgfSxcclxuICAgICAgICAgICAgICBzdHJva2U6IHsgY29sb3I6ICdyZ2JhKDE0Myw3LDcsMSknLCB3aWR0aDogMSB9LFxyXG4gICAgICAgICAgICAgIGNpcmNsZToge1xyXG4gICAgICAgICAgICAgICAgZmlsbDogeyBjb2xvcjogJ3JnYmEoMjU1LDI1NSwyNTUsMC40KScgfSxcclxuICAgICAgICAgICAgICAgIHN0cm9rZTogeyBjb2xvcjogJ3JnYmEoMTQzLDcsNywxKScsIHdpZHRoOiAxIH0sXHJcbiAgICAgICAgICAgICAgICByYWRpdXM6IDVcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzdHlsZTogc3R5bGVzLFxyXG4gICAgICAgICAgc2hvd0luTGF5ZXJMaXN0OiB0cnVlLFxyXG4gICAgICAgICAgZXhwb3J0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIHdvcmtzcGFjZToge1xyXG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRyeUJpbmRTdG9yZUxheWVyKGFjdGl2ZVN0b3JlLCBzZWFyY2hMYXllcik7XHJcbiAgICAgICAgdHJ5QWRkTG9hZGluZ1N0cmF0ZWd5KFxyXG4gICAgICAgICAgYWN0aXZlU3RvcmUsXHJcbiAgICAgICAgICBuZXcgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5KHtcclxuICAgICAgICAgICAgbW90aW9uOiBGZWF0dXJlTW90aW9uLk5vbmVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdHJ5QWRkU2VsZWN0aW9uU3RyYXRlZ3koXHJcbiAgICAgICAgICBhY3RpdmVTdG9yZSxcclxuICAgICAgICAgIG5ldyBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSh7XHJcbiAgICAgICAgICAgIG1hcDogdGhpcy5tYXAsXHJcbiAgICAgICAgICAgIG1vdGlvbjogRmVhdHVyZU1vdGlvbi5Ob25lLFxyXG4gICAgICAgICAgICBtYW55OiB0cnVlXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGFjdGl2ZVN0b3JlLmxheWVyLnZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgIGFjdGl2ZVN0b3JlLnNvdXJjZS5vbC5vbihcclxuICAgICAgICAgICdyZW1vdmVmZWF0dXJlJyxcclxuICAgICAgICAgIChldmVudDogT2xWZWN0b3JTb3VyY2VFdmVudDxPbEdlb21ldHJ5PikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBvbEdlb21ldHJ5ID0gZXZlbnQuZmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyTGFiZWxzT2ZPbEdlb21ldHJ5KG9sR2VvbWV0cnkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkRmVhdHVyZShzZWxlY3RlZEZlYXR1cmUsIGFjdGl2ZVN0b3JlKTtcclxuICAgICAgICB0aGlzLnN0b3Jlcy5wdXNoKGFjdGl2ZVN0b3JlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGRGZWF0dXJlKGZlYXR1cmU6IFNlYXJjaFJlc3VsdCwgYWN0aXZlU3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPikge1xyXG4gICAgY29uc3QgbmV3RmVhdHVyZSA9IHtcclxuICAgICAgdHlwZTogZmVhdHVyZS5kYXRhLnR5cGUsXHJcbiAgICAgIGdlb21ldHJ5OiB7XHJcbiAgICAgICAgY29vcmRpbmF0ZXM6IGZlYXR1cmUuZGF0YS5nZW9tZXRyeS5jb29yZGluYXRlcyxcclxuICAgICAgICB0eXBlOiBmZWF0dXJlLmRhdGEuZ2VvbWV0cnkudHlwZVxyXG4gICAgICB9LFxyXG4gICAgICBwcm9qZWN0aW9uOiBmZWF0dXJlLmRhdGEucHJvamVjdGlvbixcclxuICAgICAgcHJvcGVydGllczogZmVhdHVyZS5kYXRhLnByb3BlcnRpZXMsXHJcbiAgICAgIG1ldGE6IHtcclxuICAgICAgICBpZDogZmVhdHVyZS5tZXRhLmlkXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBkZWxldGUgbmV3RmVhdHVyZS5wcm9wZXJ0aWVzLlJvdXRlO1xyXG4gICAgYWN0aXZlU3RvcmUudXBkYXRlKG5ld0ZlYXR1cmUpO1xyXG4gICAgYWN0aXZlU3RvcmUuc2V0TGF5ZXJFeHRlbnQoKTtcclxuICAgIGFjdGl2ZVN0b3JlLmxheWVyLm9sLmdldFNvdXJjZSgpLnJlZnJlc2goKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXJMYWJlbHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSkge1xyXG4gICAgZ2V0VG9vbHRpcHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSkuZm9yRWFjaChcclxuICAgICAgKG9sVG9vbHRpcDogT2xPdmVybGF5IHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgICAgaWYgKG9sVG9vbHRpcCAmJiBvbFRvb2x0aXAuZ2V0TWFwKCkpIHtcclxuICAgICAgICAgIHRoaXMubWFwLm9sLnJlbW92ZU92ZXJsYXkob2xUb29sdGlwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiIsIjxidXR0b25cclxuICBpZ29TdG9wUHJvcGFnYXRpb25cclxuICAobW91c2VlbnRlcik9XCJvbk1vdXNlRXZlbnQoJGV2ZW50KVwiXHJcbiAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUV2ZW50KCRldmVudClcIlxyXG4gICpuZ0lmPVwibGF5ZXIubWV0YS5kYXRhVHlwZSA9PT0gJ0xheWVyJ1wiXHJcbiAgbWF0LWljb24tYnV0dG9uXHJcbiAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcclxuICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICBbbWF0VG9vbHRpcF09XCJjb21wdXRlVG9vbHRpcCgpIHwgdHJhbnNsYXRlXCJcclxuICBbY29sb3JdPVwiKGlzUHJldmlldyQgfCBhc3luYykgPyAnJyA6IGFkZGVkID8gJ3dhcm4nIDogJydcIlxyXG4gIChjbGljayk9XCJvblRvZ2dsZUNsaWNrKCRldmVudClcIlxyXG4+XHJcbiAgPG1hdC1pY29uXHJcbiAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcclxuICAgIG1hdEJhZGdlPVwiaWNvblwiXHJcbiAgICBbaWdvTWF0QmFkZ2VJY29uXT1cImdldEJhZGdlSWNvbigpXCJcclxuICAgIGlnb01hdEJhZGdlQ29sb3I9XCJyZ2JhKDAsMCwwLDAuODcpXCJcclxuICAgIGlnb01hdEJhZGdlQmFja2dyb3VuZENvbG9yPVwibm9uZVwiXHJcbiAgICBpZ29NYXRCYWRnZUludmVyc2VDb2xvcj1cInRydWVcIlxyXG4gICAgW21hdEJhZGdlSGlkZGVuXT1cIlxyXG4gICAgICAoKGluUmFuZ2UkIHwgYXN5bmMpICYmIChpc1Zpc2libGUkIHwgYXN5bmMpID09PSB0cnVlKSB8fFxyXG4gICAgICAoKGluUmFuZ2UkIHwgYXN5bmMpICYmICFhZGRlZCkgfHxcclxuICAgICAgKChpblJhbmdlJCB8IGFzeW5jKSAmJiAoaXNQcmV2aWV3JCB8IGFzeW5jKSlcclxuICAgIFwiXHJcbiAgICBbbWF0QmFkZ2VEaXNhYmxlZF09XCIoaW5SYW5nZSQgfCBhc3luYykgPT09IGZhbHNlXCJcclxuICAgIG1hdEJhZGdlU2l6ZT1cInNtYWxsXCJcclxuICAgIG1hdEJhZGdlUG9zaXRpb249XCJhZnRlclwiXHJcbiAgICBbc3ZnSWNvbl09XCIoaXNQcmV2aWV3JCB8IGFzeW5jKSA/ICdwbHVzJyA6IGFkZGVkID8gJ2RlbGV0ZScgOiAncGx1cydcIlxyXG4gID5cclxuICA8L21hdC1pY29uPlxyXG48L2J1dHRvbj5cclxuXHJcbjxidXR0b25cclxuICBbaWRdPVwiIWlzTW9iaWxlID8gJ2hpZGUtc2F2ZS1zZWFyY2gtcmVzdWx0LWJ0bicgOiAnJ1wiXHJcbiAgaWdvU3RvcFByb3BhZ2F0aW9uXHJcbiAgKm5nSWY9XCJsYXllci5tZXRhLmRhdGFUeXBlID09PSAnRmVhdHVyZScgJiYgc2F2ZVNlYXJjaFJlc3VsdEluTGF5ZXJcIlxyXG4gIG1hdC1pY29uLWJ1dHRvblxyXG4gIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXHJcbiAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXHJcbiAgW21hdFRvb2x0aXBdPVwiYWRkRmVhdHVyZVRvTGF5ZXJUb29sdGlwJCB8IGFzeW5jIHwgdHJhbnNsYXRlXCJcclxuICAoY2xpY2spPVwiYWRkRmVhdHVyZVRvTGF5ZXIoKVwiXHJcbj5cclxuICA8bWF0LWljb25cclxuICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxyXG4gICAgbWF0QmFkZ2U9XCJpY29uXCJcclxuICAgIGlnb01hdEJhZGdlSWNvbj1cImV5ZS1vZmZcIlxyXG4gICAgaWdvTWF0QmFkZ2VJbnZlcnNlQ29sb3I9XCJ0cnVlXCJcclxuICAgIFttYXRCYWRnZUhpZGRlbl09XCJpblJhbmdlJCB8IGFzeW5jXCJcclxuICAgIG1hdEJhZGdlRGlzYWJsZWQ9XCJ0cnVlXCJcclxuICAgIG1hdEJhZGdlU2l6ZT1cInNtYWxsXCJcclxuICAgIG1hdEJhZGdlUG9zaXRpb249XCJhZnRlclwiXHJcbiAgICBzdmdJY29uPVwiZmlsZS1wbHVzLW91dGxpbmVcIlxyXG4gID5cclxuICA8L21hdC1pY29uPlxyXG48L2J1dHRvbj5cclxuIl19
427
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3pCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBS2pELE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8sSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUNqQyxPQUFPLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQztB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LEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7dUdBeGFVLDhCQUE4QjsyRkFBOUIsOEJBQThCLCtPQ3hFM0MsMHlEQXVEQSw2SkRNSSxJQUFJLDRGQUNKLGVBQWUsNElBQ2Ysd0JBQXdCLGdFQUN4QixnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2IsY0FBYyw0UEFDZCxxQkFBcUIsb09BQ3JCLFNBQVMsNkNBQ1QsZUFBZTs7MkZBR04sOEJBQThCO2tCQWxCMUMsU0FBUzsrQkFDRSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osZUFBZTt3QkFDZix3QkFBd0I7d0JBQ3hCLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsU0FBUzt3QkFDVCxlQUFlO3FCQUNoQjtvS0F5QlEsS0FBSztzQkFBYixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csR0FBRztzQkFBWCxLQUFLO2dCQUtHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFHRixLQUFLO3NCQURSLEtBQUs7Z0JBU0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEVudGl0eVN0b3JlLFxyXG4gIElnb0JhZGdlSWNvbkRpcmVjdGl2ZSxcclxuICBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmVcclxufSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBNZWRpYSwgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcblxyXG5pbXBvcnQgT2xPdmVybGF5IGZyb20gJ29sL092ZXJsYXknO1xyXG5pbXBvcnQgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IHsgVmVjdG9yU291cmNlRXZlbnQgYXMgT2xWZWN0b3JTb3VyY2VFdmVudCB9IGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xyXG5pbXBvcnQgQ2lyY2xlIGZyb20gJ29sL3N0eWxlL0NpcmNsZSc7XHJcbmltcG9ydCBGaWxsIGZyb20gJ29sL3N0eWxlL0ZpbGwnO1xyXG5pbXBvcnQgU3Ryb2tlIGZyb20gJ29sL3N0eWxlL1N0cm9rZSc7XHJcbmltcG9ydCBTdHlsZSBmcm9tICdvbC9zdHlsZS9TdHlsZSc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2UgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IERhdGFTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcyc7XHJcbmltcG9ydCB7XHJcbiAgRmVhdHVyZSxcclxuICBGZWF0dXJlTW90aW9uLFxyXG4gIEZlYXR1cmVTdG9yZSxcclxuICBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3ksXHJcbiAgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3ksXHJcbiAgdHJ5QWRkTG9hZGluZ1N0cmF0ZWd5LFxyXG4gIHRyeUFkZFNlbGVjdGlvblN0cmF0ZWd5LFxyXG4gIHRyeUJpbmRTdG9yZUxheWVyXHJcbn0gZnJvbSAnLi4vLi4vZmVhdHVyZSc7XHJcbmltcG9ydCB7IExBWUVSIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVyLmVudW1zJztcclxuaW1wb3J0IHsgTGF5ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMYXllck9wdGlvbnMgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2xheWVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy92ZWN0b3ItbGF5ZXInO1xyXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XHJcbmltcG9ydCB7IGdldFRvb2x0aXBzT2ZPbEdlb21ldHJ5IH0gZnJvbSAnLi4vLi4vbWVhc3VyZSc7XHJcbmltcG9ydCB7IFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vcXVlcnkvc2hhcmVkJztcclxuaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSAnLi4vc2hhcmVkL3NlYXJjaC5pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgU2F2ZUZlYXR1cmVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL3NhdmUtZmVhdHVyZS1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWdvLXNlYXJjaC1hZGQtYnV0dG9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdJZixcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0QmFkZ2VNb2R1bGUsXHJcbiAgICBJZ29CYWRnZUljb25EaXJlY3RpdmUsXHJcbiAgICBBc3luY1BpcGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hSZXN1bHRBZGRCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgcHVibGljIHRvb2x0aXAkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXHJcbiAgICAnaWdvLmdlby5jYXRhbG9nLmxheWVyLmFkZFRvTWFwJ1xyXG4gICk7XHJcblxyXG4gIHB1YmxpYyBhZGRGZWF0dXJlVG9MYXllclRvb2x0aXAkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9XHJcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0KCdpZ28uZ2VvLnNlYXJjaC5hZGRUb0xheWVyJyk7XHJcblxyXG4gIHByaXZhdGUgcmVzb2x1dGlvbiQkOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBsYXllcnMkJDogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwdWJsaWMgaW5SYW5nZSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QodHJ1ZSk7XHJcblxyXG4gIHB1YmxpYyBpc1Zpc2libGUkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuXHJcbiAgcHVibGljIGlzUHJldmlldyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xyXG5cclxuICBwcml2YXRlIGxheWVyc1N1YmNyaXB0aW9ucyA9IFtdO1xyXG5cclxuICBwcml2YXRlIGxhc3RUaW1lb3V0UmVxdWVzdDtcclxuXHJcbiAgcHJpdmF0ZSBtb3VzZUluc2lkZUFkZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBsYXllcjogU2VhcmNoUmVzdWx0O1xyXG5cclxuICBASW5wdXQoKSBzdG9yZTogRW50aXR5U3RvcmU8U2VhcmNoUmVzdWx0PjtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgbGF5ZXIgaXMgYWxyZWFkeSBhZGRlZCB0byB0aGUgbWFwXHJcbiAgICovXHJcbiAgQElucHV0KCkgYWRkZWQ6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBtYXAgdG8gYWRkIHRoZSBzZWFyY2ggcmVzdWx0IGxheWVyIHRvXHJcbiAgICovXHJcbiAgQElucHV0KCkgbWFwOiBJZ29NYXA7XHJcblxyXG4gIC8qKlxyXG4gICAqIHNob3cgaGlkZSBzYXZlIHNlYXJjaCByZXN1bHQgaW4gbGF5ZXIgYnV0dG9uXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2F2ZVNlYXJjaFJlc3VsdEluTGF5ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBnZXQgY29sb3IoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29sb3I7XHJcbiAgfVxyXG4gIHNldCBjb2xvcih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jb2xvciA9IHZhbHVlO1xyXG4gIH1cclxuICBwcml2YXRlIF9jb2xvciA9ICdwcmltYXJ5JztcclxuXHJcbiAgQElucHV0KCkgc3RvcmVzOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT5bXSA9IFtdO1xyXG5cclxuICBnZXQgYWxsTGF5ZXJzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwLmxheWVycy5maWx0ZXIoKGxheWVyKSA9PlxyXG4gICAgICBTdHJpbmcobGF5ZXIuaWQpLmluY2x1ZGVzKCdpZ28tc2VhcmNoLWxheWVyJylcclxuICAgICk7XHJcbiAgfVxyXG4gIHByaXZhdGUgbWVkaWFTZXJ2aWNlJCQ6IFN1YnNjcmlwdGlvbjtcclxuICBwdWJsaWMgaXNNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbGF5ZXJTZXJ2aWNlOiBMYXllclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBkYXRhU291cmNlU2VydmljZTogRGF0YVNvdXJjZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIGNoZWNrIHRoZSB2aWV3IGlmIGlzIG1vYmlsZSBvciBub3RcclxuICAgIHRoaXMubWVkaWFTZXJ2aWNlJCQgPSB0aGlzLm1lZGlhU2VydmljZS5tZWRpYSQuc3Vic2NyaWJlKChtZWRpYTogTWVkaWEpID0+IHtcclxuICAgICAgaWYgKG1lZGlhID09PSBNZWRpYS5Nb2JpbGUpIHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5sYXllci5tZXRhLmRhdGFUeXBlID09PSAnTGF5ZXInKSB7XHJcbiAgICAgIHRoaXMuYWRkZWQgPVxyXG4gICAgICAgIHRoaXMubWFwLmxheWVycy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAobGF5KSA9PiBsYXkuaWQgPT09IHRoaXMubGF5ZXIuZGF0YS5zb3VyY2VPcHRpb25zLmlkXHJcbiAgICAgICAgKSAhPT0gLTE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmxheWVycyQkID0gdGhpcy5tYXAubGF5ZXJzJC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLmlzVmlzaWJsZSgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlc29sdXRpb24kJCA9IHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kLnN1YnNjcmliZShcclxuICAgICAgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0luUmVzb2x1dGlvbnNSYW5nZSh2YWx1ZSk7XHJcbiAgICAgICAgdGhpcy5pc1Zpc2libGUoKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5yZXNvbHV0aW9uJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMubGF5ZXJzJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIGlmICh0aGlzLm1lZGlhU2VydmljZSQkKSB7XHJcbiAgICAgIHRoaXMubWVkaWFTZXJ2aWNlJCQudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIG1vdXNlIGV2ZW50LCBtb3VzZWVudGVyIC9tb3VzZWxlYXZlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgb25Nb3VzZUV2ZW50KGV2ZW50KSB7XHJcbiAgICB0aGlzLm9uVG9nZ2xlQ2xpY2soZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT24gdG9nZ2xlIGJ1dHRvbiBjbGljaywgZW1pdCB0aGUgYWRkZWQgY2hhbmdlIGV2ZW50XHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgb25Ub2dnbGVDbGljayhjdXJyRXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5sYXN0VGltZW91dFJlcXVlc3QpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZXZlbnQgPSBjdXJyRXZlbnQgPyBjdXJyRXZlbnQgOiAoe30gYXMgRXZlbnQpO1xyXG5cclxuICAgIGlmIChldmVudC50eXBlID09PSAnbW91c2VlbnRlcicgJiYgdGhpcy5tb3VzZUluc2lkZUFkZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSAnY2xpY2snOlxyXG4gICAgICAgIGlmICghdGhpcy5pc1ByZXZpZXckLnZhbHVlKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5hZGRlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZSgpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hZGQoZXZlbnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzUHJldmlldyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21vdXNlZW50ZXInOlxyXG4gICAgICAgIGlmICghdGhpcy5pc1ByZXZpZXckLnZhbHVlICYmICF0aGlzLmFkZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFkZChldmVudCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNQcmV2aWV3JC5uZXh0KHRydWUpO1xyXG4gICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tb3VzZUluc2lkZUFkZCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21vdXNlbGVhdmUnOlxyXG4gICAgICAgIGlmICh0aGlzLmlzUHJldmlldyQudmFsdWUpIHtcclxuICAgICAgICAgIHRoaXMucmVtb3ZlKCk7XHJcbiAgICAgICAgICB0aGlzLmlzUHJldmlldyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubW91c2VJbnNpZGVBZGQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkKGV2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmFkZGVkKSB7XHJcbiAgICAgIHRoaXMuYWRkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFkZExheWVyVG9NYXAoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmUoKSB7XHJcbiAgICBpZiAodGhpcy5hZGRlZCkge1xyXG4gICAgICB0aGlzLmFkZGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVtb3ZlTGF5ZXJGcm9tTWFwKCk7XHJcbiAgICAgIHRoaXMubGF5ZXJzU3ViY3JpcHRpb25zLm1hcCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICAgICAgdGhpcy5sYXllcnNTdWJjcmlwdGlvbnMgPSBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXQgYWRkZWQgY2hhbmdlIGV2ZW50IHdpdGggYWRkZWQgPSB0cnVlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRMYXllclRvTWFwKGV2ZW50PzogRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLm1hcCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5sYXllci5tZXRhLmRhdGFUeXBlICE9PSBMQVlFUikge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxheWVyT3B0aW9ucyA9ICh0aGlzLmxheWVyIGFzIFNlYXJjaFJlc3VsdDxMYXllck9wdGlvbnM+KS5kYXRhO1xyXG4gICAgaWYgKGxheWVyT3B0aW9ucy5zb3VyY2VPcHRpb25zLm9wdGlvbnNGcm9tQXBpID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgbGF5ZXJPcHRpb25zLnNvdXJjZU9wdGlvbnMub3B0aW9uc0Zyb21BcGkgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sYXllcnNTdWJjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5sYXllclNlcnZpY2UuY3JlYXRlQXN5bmNMYXllcihsYXllck9wdGlvbnMpLnN1YnNjcmliZSgobGF5ZXIpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NsaWNrJykge1xyXG4gICAgICAgICAgdGhpcy5tYXAubGF5ZXJzQWRkZWRCeUNsaWNrJC5uZXh0KFtsYXllcl0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1hcC5hZGRMYXllcihsYXllcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdCBhZGRlZCBjaGFuZ2UgZXZlbnQgd2l0aCBhZGRlZCA9IGZhbHNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZW1vdmVMYXllckZyb21NYXAoKSB7XHJcbiAgICBpZiAodGhpcy5tYXAgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubGF5ZXIubWV0YS5kYXRhVHlwZSAhPT0gTEFZRVIpIHtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvTGF5ZXIgPSB0aGlzLm1hcC5nZXRMYXllckJ5SWQodGhpcy5sYXllci5kYXRhLnNvdXJjZU9wdGlvbnMuaWQpO1xyXG4gICAgdGhpcy5tYXAucmVtb3ZlTGF5ZXIob0xheWVyKTtcclxuICB9XHJcblxyXG4gIGlzSW5SZXNvbHV0aW9uc1JhbmdlKHJlc29sdXRpb246IG51bWJlcikge1xyXG4gICAgY29uc3QgbWluUmVzb2x1dGlvbiA9IHRoaXMubGF5ZXIuZGF0YS5taW5SZXNvbHV0aW9uIHx8IDA7XHJcbiAgICBjb25zdCBtYXhSZXNvbHV0aW9uID0gdGhpcy5sYXllci5kYXRhLm1heFJlc29sdXRpb24gfHwgSW5maW5pdHk7XHJcbiAgICB0aGlzLmluUmFuZ2UkLm5leHQoXHJcbiAgICAgIHJlc29sdXRpb24gPj0gbWluUmVzb2x1dGlvbiAmJiByZXNvbHV0aW9uIDw9IG1heFJlc29sdXRpb25cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpc1Zpc2libGUoKSB7XHJcbiAgICBpZiAodGhpcy5sYXllcj8uZGF0YT8uc291cmNlT3B0aW9ucz8uaWQpIHtcclxuICAgICAgY29uc3Qgb0xheWVyID0gdGhpcy5tYXAuZ2V0TGF5ZXJCeUlkKHRoaXMubGF5ZXIuZGF0YS5zb3VyY2VPcHRpb25zLmlkKTtcclxuICAgICAgb0xheWVyXHJcbiAgICAgICAgPyB0aGlzLmlzVmlzaWJsZSQubmV4dChvTGF5ZXIudmlzaWJsZSlcclxuICAgICAgICA6IHRoaXMuaXNWaXNpYmxlJC5uZXh0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEJhZGdlSWNvbigpIHtcclxuICAgIGlmICh0aGlzLmluUmFuZ2UkLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZSQudmFsdWUgPyAnJyA6ICdleWUtb2ZmJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnZXllLW9mZic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wdXRlVG9vbHRpcCgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuYWRkZWQpIHtcclxuICAgICAgaWYgKHRoaXMuaXNQcmV2aWV3JC52YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiAnaWdvLmdlby5jYXRhbG9nLmxheWVyLmFkZFRvTWFwJztcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLmluUmFuZ2UkLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWaXNpYmxlJC52YWx1ZVxyXG4gICAgICAgICAgPyAnaWdvLmdlby5jYXRhbG9nLmxheWVyLnJlbW92ZUZyb21NYXAnXHJcbiAgICAgICAgICA6ICdpZ28uZ2VvLmNhdGFsb2cubGF5ZXIucmVtb3ZlRnJvbU1hcE5vdFZpc2libGUnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAnaWdvLmdlby5jYXRhbG9nLmxheWVyLnJlbW92ZUZyb21NYXBPdXRSYW5nZSc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmluUmFuZ2UkLnZhbHVlXHJcbiAgICAgICAgPyAnaWdvLmdlby5jYXRhbG9nLmxheWVyLmFkZFRvTWFwJ1xyXG4gICAgICAgIDogJ2lnby5nZW8uY2F0YWxvZy5sYXllci5hZGRUb01hcE91dFJhbmdlJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZEZlYXR1cmVUb0xheWVyKCkge1xyXG4gICAgaWYgKHRoaXMubGF5ZXIubWV0YS5kYXRhVHlwZSAhPT0gJ0ZlYXR1cmUnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZWxlY3RlZEZlYXR1cmUgPSB0aGlzLmxheWVyO1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihTYXZlRmVhdHVyZURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzcwMHB4JyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGZlYXR1cmU6IHNlbGVjdGVkRmVhdHVyZSxcclxuICAgICAgICBsYXllcnM6IHRoaXMuYWxsTGF5ZXJzXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiB7IGxheWVyOiBzdHJpbmcgfCBhbnk7IGZlYXR1cmU6IFNlYXJjaFJlc3VsdCB9KSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnN0b3Jlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmVzLm1hcCgoc3RvcmUpID0+IHtcclxuICAgICAgICAgICAgICBzdG9yZS5zdGF0ZS51cGRhdGVBbGwoeyBzZWxlY3RlZDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgaWYgKHN0b3JlPy5sYXllcikge1xyXG4gICAgICAgICAgICAgICAgc3RvcmUubGF5ZXIudmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gc3RvcmU7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gY2hlY2sgaWYgaXMgbmV3IGxheWVyXHJcbiAgICAgICAgICBpZiAodHlwZW9mIGRhdGEubGF5ZXIgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTGF5ZXIoZGF0YS5sYXllciwgZGF0YS5mZWF0dXJlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZVN0b3JlID0gdGhpcy5zdG9yZXMuZmluZChcclxuICAgICAgICAgICAgICAoc3RvcmUpID0+IHN0b3JlLmxheWVyLmlkID09PSBkYXRhLmxheWVyLmlkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGFjdGl2ZVN0b3JlLmxheWVyLnZpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBhY3RpdmVTdG9yZS5sYXllci5vcGFjaXR5ID0gMTtcclxuICAgICAgICAgICAgdGhpcy5hZGRGZWF0dXJlKGRhdGEuZmVhdHVyZSwgYWN0aXZlU3RvcmUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVMYXllcihsYXllclRpdGxlOiBzdHJpbmcsIHNlbGVjdGVkRmVhdHVyZTogU2VhcmNoUmVzdWx0KSB7XHJcbiAgICBjb25zdCBhY3RpdmVTdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmU+ID0gbmV3IEZlYXR1cmVTdG9yZTxGZWF0dXJlPihbXSwge1xyXG4gICAgICBtYXA6IHRoaXMubWFwXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBzdHlsZXMgPSBbXHJcbiAgICAgIG5ldyBTdHlsZSh7XHJcbiAgICAgICAgaW1hZ2U6IG5ldyBDaXJjbGUoe1xyXG4gICAgICAgICAgcmFkaXVzOiA1LFxyXG4gICAgICAgICAgc3Ryb2tlOiBuZXcgU3Ryb2tlKHtcclxuICAgICAgICAgICAgd2lkdGg6IDEsXHJcbiAgICAgICAgICAgIGNvbG9yOiAncmdiYSgxNDMsNyw3LDEpJ1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBmaWxsOiBuZXcgRmlsbCh7XHJcbiAgICAgICAgICAgIGNvbG9yOiAncmdiYSgxNDMsNyw3LDEpJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICB9KSxcclxuICAgICAgbmV3IFN0eWxlKHtcclxuICAgICAgICBzdHJva2U6IG5ldyBTdHJva2Uoe1xyXG4gICAgICAgICAgd2lkdGg6IDEsXHJcbiAgICAgICAgICBjb2xvcjogJ3JnYmEoMTQzLDcsNywxKSdcclxuICAgICAgICB9KSxcclxuICAgICAgICBmaWxsOiBuZXcgRmlsbCh7XHJcbiAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMCwgMjU1LCAwLjEpJ1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICBdO1xyXG5cclxuICAgIC8vIHNldCBsYXllciBpZFxyXG4gICAgbGV0IGxheWVyQ291bnRlcklEOiBudW1iZXIgPSAwO1xyXG4gICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLmFsbExheWVycykge1xyXG4gICAgICBsZXQgbnVtYmVySWQgPSBOdW1iZXIobGF5ZXIuaWQucmVwbGFjZSgnaWdvLXNlYXJjaC1sYXllcicsICcnKSk7XHJcbiAgICAgIGxheWVyQ291bnRlcklEID0gTWF0aC5tYXgobnVtYmVySWQsIGxheWVyQ291bnRlcklEKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFTb3VyY2VTZXJ2aWNlXHJcbiAgICAgIC5jcmVhdGVBc3luY0RhdGFTb3VyY2Uoe1xyXG4gICAgICAgIHR5cGU6ICd2ZWN0b3InLFxyXG4gICAgICAgIHF1ZXJ5YWJsZTogdHJ1ZVxyXG4gICAgICB9IGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zKVxyXG4gICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhU291cmNlOiBGZWF0dXJlRGF0YVNvdXJjZSkgPT4ge1xyXG4gICAgICAgIGxldCBzZWFyY2hMYXllcjogVmVjdG9yTGF5ZXIgPSBuZXcgVmVjdG9yTGF5ZXIoe1xyXG4gICAgICAgICAgaXNJZ29JbnRlcm5hbExheWVyOiB0cnVlLFxyXG4gICAgICAgICAgaWQ6ICdpZ28tc2VhcmNoLWxheWVyJyArICsrbGF5ZXJDb3VudGVySUQsXHJcbiAgICAgICAgICB0aXRsZTogbGF5ZXJUaXRsZSxcclxuICAgICAgICAgIHNvdXJjZTogZGF0YVNvdXJjZSxcclxuICAgICAgICAgIGlnb1N0eWxlOiB7XHJcbiAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcclxuICAgICAgICAgICAgaWdvU3R5bGVPYmplY3Q6IHtcclxuICAgICAgICAgICAgICBmaWxsOiB7IGNvbG9yOiAncmdiYSgyNTUsMjU1LDI1NSwwLjQpJyB9LFxyXG4gICAgICAgICAgICAgIHN0cm9rZTogeyBjb2xvcjogJ3JnYmEoMTQzLDcsNywxKScsIHdpZHRoOiAxIH0sXHJcbiAgICAgICAgICAgICAgY2lyY2xlOiB7XHJcbiAgICAgICAgICAgICAgICBmaWxsOiB7IGNvbG9yOiAncmdiYSgyNTUsMjU1LDI1NSwwLjQpJyB9LFxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlOiB7IGNvbG9yOiAncmdiYSgxNDMsNyw3LDEpJywgd2lkdGg6IDEgfSxcclxuICAgICAgICAgICAgICAgIHJhZGl1czogNVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHN0eWxlOiBzdHlsZXMsXHJcbiAgICAgICAgICBzaG93SW5MYXllckxpc3Q6IHRydWUsXHJcbiAgICAgICAgICBleHBvcnRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgd29ya3NwYWNlOiB7XHJcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdHJ5QmluZFN0b3JlTGF5ZXIoYWN0aXZlU3RvcmUsIHNlYXJjaExheWVyKTtcclxuICAgICAgICB0cnlBZGRMb2FkaW5nU3RyYXRlZ3koXHJcbiAgICAgICAgICBhY3RpdmVTdG9yZSxcclxuICAgICAgICAgIG5ldyBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3koe1xyXG4gICAgICAgICAgICBtb3Rpb246IEZlYXR1cmVNb3Rpb24uTm9uZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0cnlBZGRTZWxlY3Rpb25TdHJhdGVneShcclxuICAgICAgICAgIGFjdGl2ZVN0b3JlLFxyXG4gICAgICAgICAgbmV3IEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KHtcclxuICAgICAgICAgICAgbWFwOiB0aGlzLm1hcCxcclxuICAgICAgICAgICAgbW90aW9uOiBGZWF0dXJlTW90aW9uLk5vbmUsXHJcbiAgICAgICAgICAgIG1hbnk6IHRydWVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgYWN0aXZlU3RvcmUubGF5ZXIudmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgYWN0aXZlU3RvcmUuc291cmNlLm9sLm9uKFxyXG4gICAgICAgICAgJ3JlbW92ZWZlYXR1cmUnLFxyXG4gICAgICAgICAgKGV2ZW50OiBPbFZlY3RvclNvdXJjZUV2ZW50PE9sR2VvbWV0cnk+KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBldmVudC5mZWF0dXJlLmdldEdlb21ldHJ5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJMYWJlbHNPZk9sR2VvbWV0cnkob2xHZW9tZXRyeSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRGZWF0dXJlKHNlbGVjdGVkRmVhdHVyZSwgYWN0aXZlU3RvcmUpO1xyXG4gICAgICAgIHRoaXMuc3RvcmVzLnB1c2goYWN0aXZlU3RvcmUpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGFkZEZlYXR1cmUoZmVhdHVyZTogU2VhcmNoUmVzdWx0LCBhY3RpdmVTdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmU+KSB7XHJcbiAgICBjb25zdCBuZXdGZWF0dXJlID0ge1xyXG4gICAgICB0eXBlOiBmZWF0dXJlLmRhdGEudHlwZSxcclxuICAgICAgZ2VvbWV0cnk6IHtcclxuICAgICAgICBjb29yZGluYXRlczogZmVhdHVyZS5kYXRhLmdlb21ldHJ5LmNvb3JkaW5hdGVzLFxyXG4gICAgICAgIHR5cGU6IGZlYXR1cmUuZGF0YS5nZW9tZXRyeS50eXBlXHJcbiAgICAgIH0sXHJcbiAgICAgIHByb2plY3Rpb246IGZlYXR1cmUuZGF0YS5wcm9qZWN0aW9uLFxyXG4gICAgICBwcm9wZXJ0aWVzOiBmZWF0dXJlLmRhdGEucHJvcGVydGllcyxcclxuICAgICAgbWV0YToge1xyXG4gICAgICAgIGlkOiBmZWF0dXJlLm1ldGEuaWRcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGRlbGV0ZSBuZXdGZWF0dXJlLnByb3BlcnRpZXMuUm91dGU7XHJcbiAgICBhY3RpdmVTdG9yZS51cGRhdGUobmV3RmVhdHVyZSk7XHJcbiAgICBhY3RpdmVTdG9yZS5zZXRMYXllckV4dGVudCgpO1xyXG4gICAgYWN0aXZlU3RvcmUubGF5ZXIub2wuZ2V0U291cmNlKCkucmVmcmVzaCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhckxhYmVsc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KSB7XHJcbiAgICBnZXRUb29sdGlwc09mT2xHZW9tZXRyeShvbEdlb21ldHJ5KS5mb3JFYWNoKFxyXG4gICAgICAob2xUb29sdGlwOiBPbE92ZXJsYXkgfCB1bmRlZmluZWQpID0+IHtcclxuICAgICAgICBpZiAob2xUb29sdGlwICYmIG9sVG9vbHRpcC5nZXRNYXAoKSkge1xyXG4gICAgICAgICAgdGhpcy5tYXAub2wucmVtb3ZlT3ZlcmxheShvbFRvb2x0aXApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvblxyXG4gIGlnb1N0b3BQcm9wYWdhdGlvblxyXG4gIChtb3VzZWVudGVyKT1cIm9uTW91c2VFdmVudCgkZXZlbnQpXCJcclxuICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlRXZlbnQoJGV2ZW50KVwiXHJcbiAgKm5nSWY9XCJsYXllci5tZXRhLmRhdGFUeXBlID09PSAnTGF5ZXInXCJcclxuICBtYXQtaWNvbi1idXR0b25cclxuICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gIFttYXRUb29sdGlwXT1cImNvbXB1dGVUb29sdGlwKCkgfCB0cmFuc2xhdGVcIlxyXG4gIFtjb2xvcl09XCIoaXNQcmV2aWV3JCB8IGFzeW5jKSA/ICcnIDogYWRkZWQgPyAnd2FybicgOiAnJ1wiXHJcbiAgKGNsaWNrKT1cIm9uVG9nZ2xlQ2xpY2soJGV2ZW50KVwiXHJcbj5cclxuICA8bWF0LWljb25cclxuICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxyXG4gICAgbWF0QmFkZ2U9XCJpY29uXCJcclxuICAgIFtpZ29NYXRCYWRnZUljb25dPVwiZ2V0QmFkZ2VJY29uKClcIlxyXG4gICAgaWdvTWF0QmFkZ2VDb2xvcj1cInJnYmEoMCwwLDAsMC44NylcIlxyXG4gICAgaWdvTWF0QmFkZ2VCYWNrZ3JvdW5kQ29sb3I9XCJub25lXCJcclxuICAgIFtpZ29NYXRCYWRnZUludmVyc2VDb2xvcl09XCJ0cnVlXCJcclxuICAgIFttYXRCYWRnZUhpZGRlbl09XCJcclxuICAgICAgKChpblJhbmdlJCB8IGFzeW5jKSAmJiAoaXNWaXNpYmxlJCB8IGFzeW5jKSA9PT0gdHJ1ZSkgfHxcclxuICAgICAgKChpblJhbmdlJCB8IGFzeW5jKSAmJiAhYWRkZWQpIHx8XHJcbiAgICAgICgoaW5SYW5nZSQgfCBhc3luYykgJiYgKGlzUHJldmlldyQgfCBhc3luYykpXHJcbiAgICBcIlxyXG4gICAgW21hdEJhZGdlRGlzYWJsZWRdPVwiKGluUmFuZ2UkIHwgYXN5bmMpID09PSBmYWxzZVwiXHJcbiAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXHJcbiAgICBtYXRCYWRnZVBvc2l0aW9uPVwiYWZ0ZXJcIlxyXG4gICAgW3N2Z0ljb25dPVwiKGlzUHJldmlldyQgfCBhc3luYykgPyAncGx1cycgOiBhZGRlZCA/ICdkZWxldGUnIDogJ3BsdXMnXCJcclxuICA+XHJcbiAgPC9tYXQtaWNvbj5cclxuPC9idXR0b24+XHJcblxyXG48YnV0dG9uXHJcbiAgW2lkXT1cIiFpc01vYmlsZSA/ICdoaWRlLXNhdmUtc2VhcmNoLXJlc3VsdC1idG4nIDogJydcIlxyXG4gIGlnb1N0b3BQcm9wYWdhdGlvblxyXG4gICpuZ0lmPVwibGF5ZXIubWV0YS5kYXRhVHlwZSA9PT0gJ0ZlYXR1cmUnICYmIHNhdmVTZWFyY2hSZXN1bHRJbkxheWVyXCJcclxuICBtYXQtaWNvbi1idXR0b25cclxuICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxyXG4gIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gIFttYXRUb29sdGlwXT1cImFkZEZlYXR1cmVUb0xheWVyVG9vbHRpcCQgfCBhc3luYyB8IHRyYW5zbGF0ZVwiXHJcbiAgKGNsaWNrKT1cImFkZEZlYXR1cmVUb0xheWVyKClcIlxyXG4+XHJcbiAgPG1hdC1pY29uXHJcbiAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcclxuICAgIG1hdEJhZGdlPVwiaWNvblwiXHJcbiAgICBpZ29NYXRCYWRnZUljb249XCJleWUtb2ZmXCJcclxuICAgIFtpZ29NYXRCYWRnZUludmVyc2VDb2xvcl09XCJ0cnVlXCJcclxuICAgIFttYXRCYWRnZUhpZGRlbl09XCJpblJhbmdlJCB8IGFzeW5jXCJcclxuICAgIFttYXRCYWRnZURpc2FibGVkXT1cInRydWVcIlxyXG4gICAgbWF0QmFkZ2VTaXplPVwic21hbGxcIlxyXG4gICAgbWF0QmFkZ2VQb3NpdGlvbj1cImFmdGVyXCJcclxuICAgIHN2Z0ljb249XCJmaWxlLXBsdXMtb3V0bGluZVwiXHJcbiAgPlxyXG4gIDwvbWF0LWljb24+XHJcbjwvYnV0dG9uPlxyXG4iXX0=
@@ -1,15 +1,18 @@
1
+ import { NgIf } from '@angular/common';
1
2
  import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { getEntityIcon, getEntityTitle, getEntityTitleHtml } from '@igo2/common';
3
+ import { MatButtonModule } from '@angular/material/button';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MatListModule } from '@angular/material/list';
6
+ import { MatTooltipModule } from '@angular/material/tooltip';
7
+ import { StopPropagationDirective, getEntityIcon, getEntityTitle, getEntityTitleHtml } from '@igo2/common';
3
8
  import olFormatGeoJSON from 'ol/format/GeoJSON';
4
9
  import { FeatureMotion, moveToOlFeatures } from '../../feature';
5
10
  import { IgoMap } from '../../map/shared/map';
6
11
  import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
8
- import * as i2 from "@igo2/common";
9
- import * as i3 from "@angular/material/button";
10
- import * as i4 from "@angular/material/icon";
11
- import * as i5 from "@angular/material/list";
12
- import * as i6 from "@angular/material/tooltip";
12
+ import * as i1 from "@angular/material/list";
13
+ import * as i2 from "@angular/material/icon";
14
+ import * as i3 from "@angular/material/tooltip";
15
+ import * as i4 from "@angular/material/button";
13
16
  /**
14
17
  * Search results list item
15
18
  */
@@ -90,12 +93,19 @@ export class SearchResultsItemComponent {
90
93
  break;
91
94
  }
92
95
  }
93
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchResultsItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
94
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SearchResultsItemComponent, selector: "igo-search-results-item", inputs: { result: "result", map: "map", showIcons: "showIcons", withZoomButton: "withZoomButton" }, outputs: { zoomEvent: "zoomEvent" }, ngImport: i0, template: "<mat-list-item\r\n (mouseenter)=\"onMouseEvent($event)\"\r\n (mouseleave)=\"onMouseEvent($event)\"\r\n>\r\n <mat-icon\r\n *ngIf=\"icon\"\r\n matListItemIcon\r\n [svgIcon]=\"showIcons ? icon : 'blank'\"\r\n ></mat-icon>\r\n\r\n <div\r\n matListItemTitle\r\n *ngIf=\"titleHtml; else normalTitle\"\r\n [innerHtml]=\"titleHtml\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"tooltipHtml\"\r\n matTooltipClass=\"search-result-tooltip\"\r\n ></div>\r\n <ng-template #normalTitle>\r\n <span\r\n matListItemTitle\r\n *ngIf=\"!titleHtml\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"title\"\r\n >{{ title }}</span\r\n >\r\n </ng-template>\r\n\r\n <div matListItemMeta>\r\n <button\r\n *ngIf=\"withZoomButton\"\r\n igoStopPropagation\r\n mat-icon-button\r\n (click)=\"onZoomHandler()\"\r\n >\r\n <mat-icon svgIcon=\"magnify\"></mat-icon>\r\n </button>\r\n\r\n <ng-content select=\"[igoSearchItemToolbar]\"> </ng-content>\r\n </div>\r\n</mat-list-item>\r\n", styles: [":host ::ng-deep small{color:#8c8c8c}:host div[matlistitemmeta]:empty{display:none}:host ::ng-deep .search-result-tooltip{white-space:pre-line}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i5.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
96
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SearchResultsItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
97
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: SearchResultsItemComponent, isStandalone: true, selector: "igo-search-results-item", inputs: { result: "result", map: "map", showIcons: "showIcons", withZoomButton: "withZoomButton" }, outputs: { zoomEvent: "zoomEvent" }, ngImport: i0, template: "<mat-list-item\r\n (mouseenter)=\"onMouseEvent($event)\"\r\n (mouseleave)=\"onMouseEvent($event)\"\r\n>\r\n <mat-icon\r\n *ngIf=\"icon\"\r\n matListItemIcon\r\n [svgIcon]=\"showIcons ? icon : 'blank'\"\r\n ></mat-icon>\r\n\r\n <div\r\n matListItemTitle\r\n *ngIf=\"titleHtml; else normalTitle\"\r\n [innerHtml]=\"titleHtml\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"tooltipHtml\"\r\n matTooltipClass=\"search-result-tooltip\"\r\n ></div>\r\n <ng-template #normalTitle>\r\n <span\r\n matListItemTitle\r\n *ngIf=\"!titleHtml\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"title\"\r\n >{{ title }}</span\r\n >\r\n </ng-template>\r\n\r\n <div matListItemMeta>\r\n <button\r\n *ngIf=\"withZoomButton\"\r\n igoStopPropagation\r\n mat-icon-button\r\n (click)=\"onZoomHandler()\"\r\n >\r\n <mat-icon svgIcon=\"magnify\"></mat-icon>\r\n </button>\r\n\r\n <ng-content select=\"[igoSearchItemToolbar]\"> </ng-content>\r\n </div>\r\n</mat-list-item>\r\n", styles: [":host ::ng-deep small{color:#8c8c8c}:host div[matlistitemmeta]:empty{display:none}:host ::ng-deep .search-result-tooltip{white-space:pre-line}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "component", type: i1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i1.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i1.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i1.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
95
98
  }
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchResultsItemComponent, decorators: [{
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SearchResultsItemComponent, decorators: [{
97
100
  type: Component,
98
- args: [{ selector: 'igo-search-results-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item\r\n (mouseenter)=\"onMouseEvent($event)\"\r\n (mouseleave)=\"onMouseEvent($event)\"\r\n>\r\n <mat-icon\r\n *ngIf=\"icon\"\r\n matListItemIcon\r\n [svgIcon]=\"showIcons ? icon : 'blank'\"\r\n ></mat-icon>\r\n\r\n <div\r\n matListItemTitle\r\n *ngIf=\"titleHtml; else normalTitle\"\r\n [innerHtml]=\"titleHtml\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"tooltipHtml\"\r\n matTooltipClass=\"search-result-tooltip\"\r\n ></div>\r\n <ng-template #normalTitle>\r\n <span\r\n matListItemTitle\r\n *ngIf=\"!titleHtml\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"title\"\r\n >{{ title }}</span\r\n >\r\n </ng-template>\r\n\r\n <div matListItemMeta>\r\n <button\r\n *ngIf=\"withZoomButton\"\r\n igoStopPropagation\r\n mat-icon-button\r\n (click)=\"onZoomHandler()\"\r\n >\r\n <mat-icon svgIcon=\"magnify\"></mat-icon>\r\n </button>\r\n\r\n <ng-content select=\"[igoSearchItemToolbar]\"> </ng-content>\r\n </div>\r\n</mat-list-item>\r\n", styles: [":host ::ng-deep small{color:#8c8c8c}:host div[matlistitemmeta]:empty{display:none}:host ::ng-deep .search-result-tooltip{white-space:pre-line}\n"] }]
101
+ args: [{ selector: 'igo-search-results-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
102
+ MatListModule,
103
+ NgIf,
104
+ MatIconModule,
105
+ MatTooltipModule,
106
+ MatButtonModule,
107
+ StopPropagationDirective
108
+ ], template: "<mat-list-item\r\n (mouseenter)=\"onMouseEvent($event)\"\r\n (mouseleave)=\"onMouseEvent($event)\"\r\n>\r\n <mat-icon\r\n *ngIf=\"icon\"\r\n matListItemIcon\r\n [svgIcon]=\"showIcons ? icon : 'blank'\"\r\n ></mat-icon>\r\n\r\n <div\r\n matListItemTitle\r\n *ngIf=\"titleHtml; else normalTitle\"\r\n [innerHtml]=\"titleHtml\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"tooltipHtml\"\r\n matTooltipClass=\"search-result-tooltip\"\r\n ></div>\r\n <ng-template #normalTitle>\r\n <span\r\n matListItemTitle\r\n *ngIf=\"!titleHtml\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"title\"\r\n >{{ title }}</span\r\n >\r\n </ng-template>\r\n\r\n <div matListItemMeta>\r\n <button\r\n *ngIf=\"withZoomButton\"\r\n igoStopPropagation\r\n mat-icon-button\r\n (click)=\"onZoomHandler()\"\r\n >\r\n <mat-icon svgIcon=\"magnify\"></mat-icon>\r\n </button>\r\n\r\n <ng-content select=\"[igoSearchItemToolbar]\"> </ng-content>\r\n </div>\r\n</mat-list-item>\r\n", styles: [":host ::ng-deep small{color:#8c8c8c}:host div[matlistitemmeta]:empty{display:none}:host ::ng-deep .search-result-tooltip{white-space:pre-line}\n"] }]
99
109
  }], propDecorators: { result: [{
100
110
  type: Input
101
111
  }], map: [{
@@ -107,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
107
117
  }], zoomEvent: [{
108
118
  type: Output
109
119
  }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLGNBQWMsRUFDZCxrQkFBa0IsRUFDbkIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxlQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7O0FBRzlDOztHQUVHO0FBT0gsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQzs7T0FFRztJQUNNLE1BQU0sQ0FBZTtJQUVyQixHQUFHLENBQVM7SUFFckI7OztPQUdHO0lBRUg7O09BRUc7SUFDTSxTQUFTLENBQVU7SUFFNUI7O09BRUc7SUFDTSxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBRXRCLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBRTFDLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO0lBRXZDLElBQUksS0FBSztRQUNQLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxTQUFTO1FBQ1gsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVM7YUFDbEIsT0FBTyxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQzthQUNuQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQzFELGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVO1lBQzNDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVTtTQUN2QyxDQUFDLENBQUM7UUFDSCxnQkFBZ0IsQ0FDZCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFDdkIsQ0FBQyxTQUFTLENBQUMsRUFDWCxhQUFhLENBQUMsT0FBTyxDQUN0QixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVksQ0FBQyxLQUFLO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDN0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN4QixRQUFRLElBQUksRUFBRTtZQUNaLEtBQUssWUFBWTtnQkFDZixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLDhCQUE4QixDQUFDLENBQUM7Z0JBQ3RFLE9BQU87b0JBQ0wsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLDZCQUE2QixDQUFDO29CQUMzRCxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNULE1BQU07WUFDUixLQUFLLFlBQVk7Z0JBQ2YsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO2dCQUN0RSxPQUFPO29CQUNMLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSw2QkFBNkIsQ0FBQztvQkFDM0QsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDVCxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTTtTQUNUO0lBQ0gsQ0FBQzt3R0E1RlUsMEJBQTBCOzRGQUExQiwwQkFBMEIsd01DN0J2Qyx3aUNBeUNBOzs0RkRaYSwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNOzhCQU10QyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsR0FBRztzQkFBWCxLQUFLO2dCQVVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICBnZXRFbnRpdHlJY29uLFxyXG4gIGdldEVudGl0eVRpdGxlLFxyXG4gIGdldEVudGl0eVRpdGxlSHRtbFxyXG59IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgb2xGb3JtYXRHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcclxuXHJcbmltcG9ydCB7IEZlYXR1cmVNb3Rpb24sIG1vdmVUb09sRmVhdHVyZXMgfSBmcm9tICcuLi8uLi9mZWF0dXJlJztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5pbXBvcnQgeyBTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvc2VhcmNoLmludGVyZmFjZXMnO1xyXG5cclxuLyoqXHJcbiAqIFNlYXJjaCByZXN1bHRzIGxpc3QgaXRlbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tc2VhcmNoLXJlc3VsdHMtaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1yZXN1bHRzLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1yZXN1bHRzLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoUmVzdWx0c0l0ZW1Db21wb25lbnQge1xyXG4gIC8qKlxyXG4gICAqIFNlYXJjaCByZXN1bHQgaXRlbVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHJlc3VsdDogU2VhcmNoUmVzdWx0O1xyXG5cclxuICBASW5wdXQoKSBtYXA6IElnb01hcDtcclxuXHJcbiAgLyoqXHJcbiAgICogU2VhcmNoIHJlc3VsdCB0aXRsZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG5cclxuICAvKipcclxuICAgKiB0byBzaG93IGhpZGUgcmVzdWx0cyBpY29uc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNob3dJY29uczogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGVyZSBzaG91bGQgYmUgYSB6b29tIGJ1dHRvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHdpdGhab29tQnV0dG9uID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSB6b29tRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0ID0gbmV3IG9sRm9ybWF0R2VvSlNPTigpO1xyXG5cclxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBnZXRFbnRpdHlUaXRsZSh0aGlzLnJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWFyY2ggcmVzdWx0IEhUTUwgdGl0bGVcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgdGl0bGVIdG1sKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZ2V0RW50aXR5VGl0bGVIdG1sKHRoaXMucmVzdWx0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlYXJjaCByZXN1bHQgdG9vbHRpcFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCB0b29sdGlwSHRtbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMudGl0bGVIdG1sXHJcbiAgICAgIC5yZXBsYWNlKC88c21hbGw/W14+XSsoPnwkKS9nLCAnXFxuJylcclxuICAgICAgLnJlcGxhY2UoLzxcXC8/W14+XSsoPnwkKS9nLCAnJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWFyY2ggcmVzdWx0IGljb25cclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBnZXQgaWNvbigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGdldEVudGl0eUljb24odGhpcy5yZXN1bHQpO1xyXG4gIH1cclxuXHJcbiAgb25ab29tSGFuZGxlcigpIHtcclxuICAgIGNvbnN0IG9sRmVhdHVyZSA9IHRoaXMuZm9ybWF0LnJlYWRGZWF0dXJlKHRoaXMucmVzdWx0LmRhdGEsIHtcclxuICAgICAgZGF0YVByb2plY3Rpb246IHRoaXMucmVzdWx0LmRhdGEucHJvamVjdGlvbixcclxuICAgICAgZmVhdHVyZVByb2plY3Rpb246IHRoaXMubWFwLnByb2plY3Rpb25cclxuICAgIH0pO1xyXG4gICAgbW92ZVRvT2xGZWF0dXJlcyhcclxuICAgICAgdGhpcy5tYXAudmlld0NvbnRyb2xsZXIsXHJcbiAgICAgIFtvbEZlYXR1cmVdLFxyXG4gICAgICBGZWF0dXJlTW90aW9uLkRlZmF1bHRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPbiBtb3VzZSBldmVudCwgbW91c2VlbnRlciAvbW91c2VsZWF2ZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIG9uTW91c2VFdmVudChldmVudCkge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IGV2ZW50LnRhcmdldDtcclxuICAgIGNvbnN0IHR5cGUgPSBldmVudC50eXBlO1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ21vdXNlZW50ZXInOlxyXG4gICAgICAgIGNvbnN0IGhpZGVCdG4gPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyNoaWRlLXNhdmUtc2VhcmNoLXJlc3VsdC1idG4nKTtcclxuICAgICAgICBoaWRlQnRuXHJcbiAgICAgICAgICA/IGhpZGVCdG4uc2V0QXR0cmlidXRlKCdpZCcsICdzaG93LXNhdmUtc2VhcmNoLXJlc3VsdC1idG4nKVxyXG4gICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb3VzZWxlYXZlJzpcclxuICAgICAgICBjb25zdCBzaG93QnRuID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjc2hvdy1zYXZlLXNlYXJjaC1yZXN1bHQtYnRuJyk7XHJcbiAgICAgICAgc2hvd0J0blxyXG4gICAgICAgICAgPyBzaG93QnRuLnNldEF0dHJpYnV0ZSgnaWQnLCAnaGlkZS1zYXZlLXNlYXJjaC1yZXN1bHQtYnRuJylcclxuICAgICAgICAgIDogbnVsbDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPG1hdC1saXN0LWl0ZW1cclxuICAobW91c2VlbnRlcik9XCJvbk1vdXNlRXZlbnQoJGV2ZW50KVwiXHJcbiAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUV2ZW50KCRldmVudClcIlxyXG4+XHJcbiAgPG1hdC1pY29uXHJcbiAgICAqbmdJZj1cImljb25cIlxyXG4gICAgbWF0TGlzdEl0ZW1JY29uXHJcbiAgICBbc3ZnSWNvbl09XCJzaG93SWNvbnMgPyBpY29uIDogJ2JsYW5rJ1wiXHJcbiAgPjwvbWF0LWljb24+XHJcblxyXG4gIDxkaXZcclxuICAgIG1hdExpc3RJdGVtVGl0bGVcclxuICAgICpuZ0lmPVwidGl0bGVIdG1sOyBlbHNlIG5vcm1hbFRpdGxlXCJcclxuICAgIFtpbm5lckh0bWxdPVwidGl0bGVIdG1sXCJcclxuICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxyXG4gICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcEh0bWxcIlxyXG4gICAgbWF0VG9vbHRpcENsYXNzPVwic2VhcmNoLXJlc3VsdC10b29sdGlwXCJcclxuICA+PC9kaXY+XHJcbiAgPG5nLXRlbXBsYXRlICNub3JtYWxUaXRsZT5cclxuICAgIDxzcGFuXHJcbiAgICAgIG1hdExpc3RJdGVtVGl0bGVcclxuICAgICAgKm5nSWY9XCIhdGl0bGVIdG1sXCJcclxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXHJcbiAgICAgIFttYXRUb29sdGlwXT1cInRpdGxlXCJcclxuICAgICAgPnt7IHRpdGxlIH19PC9zcGFuXHJcbiAgICA+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPGRpdiBtYXRMaXN0SXRlbU1ldGE+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICpuZ0lmPVwid2l0aFpvb21CdXR0b25cIlxyXG4gICAgICBpZ29TdG9wUHJvcGFnYXRpb25cclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIChjbGljayk9XCJvblpvb21IYW5kbGVyKClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm1hZ25pZnlcIj48L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2lnb1NlYXJjaEl0ZW1Ub29sYmFyXVwiPiA8L25nLWNvbnRlbnQ+XHJcbiAgPC9kaXY+XHJcbjwvbWF0LWxpc3QtaXRlbT5cclxuIl19
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixhQUFhLEVBQ2IsY0FBYyxFQUNkLGtCQUFrQixFQUNuQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLGVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBRzlDOztHQUVHO0FBZ0JILE1BQU0sT0FBTywwQkFBMEI7SUFDckM7O09BRUc7SUFDTSxNQUFNLENBQWU7SUFFckIsR0FBRyxDQUFTO0lBRXJCOzs7T0FH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b21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSxcclxuICBnZXRFbnRpdHlJY29uLFxyXG4gIGdldEVudGl0eVRpdGxlLFxyXG4gIGdldEVudGl0eVRpdGxlSHRtbFxyXG59IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcblxyXG5pbXBvcnQgb2xGb3JtYXRHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcclxuXHJcbmltcG9ydCB7IEZlYXR1cmVNb3Rpb24sIG1vdmVUb09sRmVhdHVyZXMgfSBmcm9tICcuLi8uLi9mZWF0dXJlJztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5pbXBvcnQgeyBTZWFyY2hSZXN1bHQgfSBmcm9tICcuLi9zaGFyZWQvc2VhcmNoLmludGVyZmFjZXMnO1xyXG5cclxuLyoqXHJcbiAqIFNlYXJjaCByZXN1bHRzIGxpc3QgaXRlbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZ28tc2VhcmNoLXJlc3VsdHMtaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1yZXN1bHRzLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1yZXN1bHRzLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdExpc3RNb2R1bGUsXHJcbiAgICBOZ0lmLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmVcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWFyY2hSZXN1bHRzSXRlbUNvbXBvbmVudCB7XHJcbiAgLyoqXHJcbiAgICogU2VhcmNoIHJlc3VsdCBpdGVtXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmVzdWx0OiBTZWFyY2hSZXN1bHQ7XHJcblxyXG4gIEBJbnB1dCgpIG1hcDogSWdvTWFwO1xyXG5cclxuICAvKipcclxuICAgKiBTZWFyY2ggcmVzdWx0IHRpdGxlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcblxyXG4gIC8qKlxyXG4gICAqIHRvIHNob3cgaGlkZSByZXN1bHRzIGljb25zXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2hvd0ljb25zOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZXJlIHNob3VsZCBiZSBhIHpvb20gYnV0dG9uXHJcbiAgICovXHJcbiAgQElucHV0KCkgd2l0aFpvb21CdXR0b24gPSBmYWxzZTtcclxuXHJcbiAgQE91dHB1dCgpIHpvb21FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXQgPSBuZXcgb2xGb3JtYXRHZW9KU09OKCk7XHJcblxyXG4gIGdldCB0aXRsZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGdldEVudGl0eVRpdGxlKHRoaXMucmVzdWx0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlYXJjaCByZXN1bHQgSFRNTCB0aXRsZVxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCB0aXRsZUh0bWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBnZXRFbnRpdHlUaXRsZUh0bWwodGhpcy5yZXN1bHQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VhcmNoIHJlc3VsdCB0b29sdGlwXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgZ2V0IHRvb2x0aXBIdG1sKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50aXRsZUh0bWxcclxuICAgICAgLnJlcGxhY2UoLzxzbWFsbD9bXj5dKyg+fCQpL2csICdcXG4nKVxyXG4gICAgICAucmVwbGFjZSgvPFxcLz9bXj5dKyg+fCQpL2csICcnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlYXJjaCByZXN1bHQgaWNvblxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIGdldCBpY29uKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZ2V0RW50aXR5SWNvbih0aGlzLnJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICBvblpvb21IYW5kbGVyKCkge1xyXG4gICAgY29uc3Qgb2xGZWF0dXJlID0gdGhpcy5mb3JtYXQucmVhZEZlYXR1cmUodGhpcy5yZXN1bHQuZGF0YSwge1xyXG4gICAgICBkYXRhUHJvamVjdGlvbjogdGhpcy5yZXN1bHQuZGF0YS5wcm9qZWN0aW9uLFxyXG4gICAgICBmZWF0dXJlUHJvamVjdGlvbjogdGhpcy5tYXAucHJvamVjdGlvblxyXG4gICAgfSk7XHJcbiAgICBtb3ZlVG9PbEZlYXR1cmVzKFxyXG4gICAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlcixcclxuICAgICAgW29sRmVhdHVyZV0sXHJcbiAgICAgIEZlYXR1cmVNb3Rpb24uRGVmYXVsdFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uIG1vdXNlIGV2ZW50LCBtb3VzZWVudGVyIC9tb3VzZWxlYXZlXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgb25Nb3VzZUV2ZW50KGV2ZW50KSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgY29uc3QgdHlwZSA9IGV2ZW50LnR5cGU7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnbW91c2VlbnRlcic6XHJcbiAgICAgICAgY29uc3QgaGlkZUJ0biA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcignI2hpZGUtc2F2ZS1zZWFyY2gtcmVzdWx0LWJ0bicpO1xyXG4gICAgICAgIGhpZGVCdG5cclxuICAgICAgICAgID8gaGlkZUJ0bi5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3Nob3ctc2F2ZS1zZWFyY2gtcmVzdWx0LWJ0bicpXHJcbiAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ21vdXNlbGVhdmUnOlxyXG4gICAgICAgIGNvbnN0IHNob3dCdG4gPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJyNzaG93LXNhdmUtc2VhcmNoLXJlc3VsdC1idG4nKTtcclxuICAgICAgICBzaG93QnRuXHJcbiAgICAgICAgICA/IHNob3dCdG4uc2V0QXR0cmlidXRlKCdpZCcsICdoaWRlLXNhdmUtc2VhcmNoLXJlc3VsdC1idG4nKVxyXG4gICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8bWF0LWxpc3QtaXRlbVxyXG4gIChtb3VzZWVudGVyKT1cIm9uTW91c2VFdmVudCgkZXZlbnQpXCJcclxuICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlRXZlbnQoJGV2ZW50KVwiXHJcbj5cclxuICA8bWF0LWljb25cclxuICAgICpuZ0lmPVwiaWNvblwiXHJcbiAgICBtYXRMaXN0SXRlbUljb25cclxuICAgIFtzdmdJY29uXT1cInNob3dJY29ucyA/IGljb24gOiAnYmxhbmsnXCJcclxuICA+PC9tYXQtaWNvbj5cclxuXHJcbiAgPGRpdlxyXG4gICAgbWF0TGlzdEl0ZW1UaXRsZVxyXG4gICAgKm5nSWY9XCJ0aXRsZUh0bWw7IGVsc2Ugbm9ybWFsVGl0bGVcIlxyXG4gICAgW2lubmVySHRtbF09XCJ0aXRsZUh0bWxcIlxyXG4gICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXHJcbiAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwSHRtbFwiXHJcbiAgICBtYXRUb29sdGlwQ2xhc3M9XCJzZWFyY2gtcmVzdWx0LXRvb2x0aXBcIlxyXG4gID48L2Rpdj5cclxuICA8bmctdGVtcGxhdGUgI25vcm1hbFRpdGxlPlxyXG4gICAgPHNwYW5cclxuICAgICAgbWF0TGlzdEl0ZW1UaXRsZVxyXG4gICAgICAqbmdJZj1cIiF0aXRsZUh0bWxcIlxyXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcclxuICAgICAgW21hdFRvb2x0aXBdPVwidGl0bGVcIlxyXG4gICAgICA+e3sgdGl0bGUgfX08L3NwYW5cclxuICAgID5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8ZGl2IG1hdExpc3RJdGVtTWV0YT5cclxuICAgIDxidXR0b25cclxuICAgICAgKm5nSWY9XCJ3aXRoWm9vbUJ1dHRvblwiXHJcbiAgICAgIGlnb1N0b3BQcm9wYWdhdGlvblxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgKGNsaWNrKT1cIm9uWm9vbUhhbmRsZXIoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwibWFnbmlmeVwiPjwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaWdvU2VhcmNoSXRlbVRvb2xiYXJdXCI+IDwvbmctY29udGVudD5cclxuICA8L2Rpdj5cclxuPC9tYXQtbGlzdC1pdGVtPlxyXG4iXX0=