@igo2/geo 17.0.0 → 17.0.1-next.2

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 (366) hide show
  1. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +4 -4
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +6 -6
  3. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +4 -4
  4. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +4 -4
  5. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +3 -3
  6. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +3 -3
  7. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +4 -4
  8. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +4 -4
  9. package/esm2022/lib/catalog/catalog.module.mjs +4 -4
  10. package/esm2022/lib/catalog/shared/catalog.abstract.mjs +1 -1
  11. package/esm2022/lib/catalog/shared/catalog.interface.mjs +1 -1
  12. package/esm2022/lib/catalog/shared/catalog.service.mjs +17 -21
  13. package/esm2022/lib/datasource/shared/capabilities.interface.mjs +3 -1
  14. package/esm2022/lib/datasource/shared/capabilities.service.mjs +3 -3
  15. package/esm2022/lib/datasource/shared/datasource.service.mjs +6 -5
  16. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +5 -3
  17. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +4 -2
  18. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  19. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +4 -2
  20. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  21. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +2 -2
  22. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  23. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +4 -2
  24. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +4 -2
  25. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
  26. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -2
  27. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +4 -2
  28. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +4 -2
  29. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +4 -2
  30. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +6 -5
  31. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +4 -2
  32. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +7 -6
  33. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  34. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +4 -2
  35. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  36. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +4 -2
  37. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  38. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +4 -2
  39. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +4 -4
  40. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +4 -4
  41. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +4 -4
  42. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +3 -3
  43. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +3 -3
  44. package/esm2022/lib/directions/directions.component.mjs +6 -7
  45. package/esm2022/lib/directions/directions.module.mjs +4 -4
  46. package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
  47. package/esm2022/lib/directions/shared/directions.service.mjs +12 -11
  48. package/esm2022/lib/directions/shared/directions.utils.mjs +3 -3
  49. package/esm2022/lib/directions/shared/store.mjs +1 -1
  50. package/esm2022/lib/download/download-button/download-button.component.mjs +3 -3
  51. package/esm2022/lib/download/download.module.mjs +4 -4
  52. package/esm2022/lib/download/shared/download.service.mjs +3 -3
  53. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +4 -4
  54. package/esm2022/lib/draw/draw/draw-popup.component.mjs +9 -9
  55. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +3 -3
  56. package/esm2022/lib/draw/draw/draw.component.mjs +15 -19
  57. package/esm2022/lib/draw/draw/draw.module.mjs +4 -4
  58. package/esm2022/lib/draw/drawingTool.module.mjs +4 -4
  59. package/esm2022/lib/draw/shared/draw-icon.service.mjs +4 -4
  60. package/esm2022/lib/draw/shared/draw.interface.mjs +1 -1
  61. package/esm2022/lib/draw/shared/draw.utils.mjs +3 -3
  62. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +6 -6
  63. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +3 -3
  64. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +4 -4
  65. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +5 -6
  66. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +4 -4
  67. package/esm2022/lib/feature/feature.module.mjs +4 -4
  68. package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
  69. package/esm2022/lib/feature/shared/feature.utils.mjs +1 -2
  70. package/esm2022/lib/feature/shared/store.mjs +4 -4
  71. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +2 -2
  72. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +2 -3
  73. package/esm2022/lib/feature/shared/strategies/search.mjs +2 -3
  74. package/esm2022/lib/feature/shared/strategies/selection.mjs +1 -1
  75. package/esm2022/lib/filter/filter.module.mjs +4 -4
  76. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +5 -6
  77. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +5 -5
  78. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +9 -29
  79. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +8 -9
  80. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +5 -5
  81. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +5 -6
  82. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +4 -4
  83. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +3 -3
  84. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +5 -6
  85. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +3 -3
  86. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +5 -6
  87. package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  88. package/esm2022/lib/filter/shared/ogc-filter.mjs +3 -2
  89. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +5 -6
  90. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +7 -7
  91. package/esm2022/lib/filter/shared/time-filter.service.mjs +5 -6
  92. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +5 -5
  93. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +3 -3
  94. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +7 -8
  95. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +5 -6
  96. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +17 -17
  97. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +4 -4
  98. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +3 -3
  99. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +3 -3
  100. package/esm2022/lib/geo.module.mjs +5 -9
  101. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +7 -8
  102. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +4 -4
  103. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +4 -4
  104. package/esm2022/lib/geometry/geometry.module.mjs +4 -4
  105. package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
  106. package/esm2022/lib/geometry/shared/controls/modify.mjs +1 -4
  107. package/esm2022/lib/geometry/shared/controls/slice.mjs +3 -3
  108. package/esm2022/lib/geometry/shared/geometry.errors.mjs +1 -3
  109. package/esm2022/lib/geometry/shared/geometry.utils.mjs +2 -11
  110. package/esm2022/lib/import-export/export-button/export-button.component.mjs +5 -6
  111. package/esm2022/lib/import-export/import-export/import-export.component.mjs +25 -18
  112. package/esm2022/lib/import-export/import-export.module.mjs +4 -4
  113. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +4 -4
  114. package/esm2022/lib/import-export/shared/export.service.mjs +5 -4
  115. package/esm2022/lib/import-export/shared/export.utils.mjs +2 -2
  116. package/esm2022/lib/import-export/shared/import.service.mjs +6 -6
  117. package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
  118. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +4 -4
  119. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +7 -7
  120. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +4 -4
  121. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +5 -5
  122. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +5 -6
  123. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +3 -3
  124. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +4 -4
  125. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +4 -4
  126. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +5 -6
  127. package/esm2022/lib/layer/layer.module.mjs +4 -4
  128. package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
  129. package/esm2022/lib/layer/shared/layer.service.mjs +6 -5
  130. package/esm2022/lib/layer/shared/layers/image-layer.mjs +2 -2
  131. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -1
  132. package/esm2022/lib/layer/shared/layers/layer.mjs +1 -3
  133. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +2 -2
  134. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +5 -5
  135. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +3 -3
  136. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +6 -7
  137. package/esm2022/lib/layer/utils/outputLegend.mjs +3 -3
  138. package/esm2022/lib/layer/utils/vector-watcher.mjs +9 -9
  139. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +3 -3
  140. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +3 -3
  141. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +7 -7
  142. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +3 -3
  143. package/esm2022/lib/map/info-section/info-section.component.mjs +5 -6
  144. package/esm2022/lib/map/map-browser/map-browser.component.mjs +3 -3
  145. package/esm2022/lib/map/map-center/map-center.component.mjs +9 -9
  146. package/esm2022/lib/map/map.module.mjs +4 -4
  147. package/esm2022/lib/map/menu-button/menu-button.component.mjs +3 -3
  148. package/esm2022/lib/map/offline-button/offline-button.component.mjs +5 -6
  149. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +5 -6
  150. package/esm2022/lib/map/shared/controllers/geolocation.mjs +10 -10
  151. package/esm2022/lib/map/shared/controllers/view.mjs +3 -3
  152. package/esm2022/lib/map/shared/hover-feature.directive.mjs +8 -11
  153. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +5 -5
  154. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +4 -4
  155. package/esm2022/lib/map/shared/map.mjs +4 -4
  156. package/esm2022/lib/map/shared/map.service.mjs +5 -6
  157. package/esm2022/lib/map/shared/map.utils.mjs +2 -3
  158. package/esm2022/lib/map/shared/mapOffline.directive.mjs +3 -3
  159. package/esm2022/lib/map/shared/projection.service.mjs +3 -3
  160. package/esm2022/lib/map/shared/projection.utils.mjs +2 -3
  161. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +7 -6
  162. package/esm2022/lib/map/utils/layer-watcher.mjs +4 -2
  163. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +5 -4
  164. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +5 -6
  165. package/esm2022/lib/measure/measure.module.mjs +4 -4
  166. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +5 -5
  167. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +3 -3
  168. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +5 -6
  169. package/esm2022/lib/measure/measurer/measurer.component.mjs +8 -16
  170. package/esm2022/lib/measure/measurer/measurer.module.mjs +4 -4
  171. package/esm2022/lib/measure/shared/measure.interfaces.mjs +1 -1
  172. package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
  173. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +6 -6
  174. package/esm2022/lib/metadata/metadata.module.mjs +4 -4
  175. package/esm2022/lib/metadata/shared/metadata.service.mjs +5 -6
  176. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +3 -3
  177. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +6 -6
  178. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +4 -4
  179. package/esm2022/lib/offline/shared/geo-network.service.mjs +4 -4
  180. package/esm2022/lib/overlay/shared/index.mjs +1 -3
  181. package/esm2022/lib/print/print/print.component.mjs +3 -3
  182. package/esm2022/lib/print/print-form/print-form.component.mjs +5 -5
  183. package/esm2022/lib/print/print.module.mjs +4 -4
  184. package/esm2022/lib/print/shared/print.service.mjs +32 -44
  185. package/esm2022/lib/query/query.module.mjs +4 -4
  186. package/esm2022/lib/query/shared/query-search-source.mjs +3 -3
  187. package/esm2022/lib/query/shared/query.directive.mjs +4 -4
  188. package/esm2022/lib/query/shared/query.enums.mjs +3 -1
  189. package/esm2022/lib/query/shared/query.service.mjs +23 -21
  190. package/esm2022/lib/search/search-bar/search-bar.component.mjs +4 -4
  191. package/esm2022/lib/search/search-bar/search-bar.module.mjs +4 -4
  192. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +3 -3
  193. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +7 -9
  194. package/esm2022/lib/search/search-results/search-results-item.component.mjs +10 -12
  195. package/esm2022/lib/search/search-results/search-results.component.mjs +4 -4
  196. package/esm2022/lib/search/search-results/search-results.module.mjs +4 -4
  197. package/esm2022/lib/search/search-selector/search-selector.component.mjs +4 -4
  198. package/esm2022/lib/search/search-selector/search-selector.module.mjs +4 -4
  199. package/esm2022/lib/search/search-settings/search-settings.component.mjs +4 -4
  200. package/esm2022/lib/search/search-settings/search-settings.module.mjs +4 -4
  201. package/esm2022/lib/search/search.module.mjs +4 -4
  202. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +5 -4
  203. package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
  204. package/esm2022/lib/search/shared/search.service.mjs +4 -4
  205. package/esm2022/lib/search/shared/search.utils.mjs +1 -1
  206. package/esm2022/lib/search/shared/sources/cadastre.mjs +3 -3
  207. package/esm2022/lib/search/shared/sources/coordinates.mjs +6 -6
  208. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +2 -2
  209. package/esm2022/lib/search/shared/sources/icherche-icons.mjs +1 -1
  210. package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
  211. package/esm2022/lib/search/shared/sources/icherche.mjs +14 -13
  212. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  213. package/esm2022/lib/search/shared/sources/ilayer.mjs +10 -10
  214. package/esm2022/lib/search/shared/sources/nominatim.mjs +4 -4
  215. package/esm2022/lib/search/shared/sources/source.interfaces.mjs +1 -1
  216. package/esm2022/lib/search/shared/sources/source.mjs +3 -2
  217. package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
  218. package/esm2022/lib/search/shared/sources/storedqueries.mjs +7 -10
  219. package/esm2022/lib/search/shared/sources/workspace.mjs +8 -8
  220. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +2 -1
  221. package/esm2022/lib/style/shared/feature/feature-style.mjs +3 -3
  222. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +10 -16
  223. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
  224. package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +1 -1
  225. package/esm2022/lib/style/style-list/style-list.interface.mjs +1 -1
  226. package/esm2022/lib/style/style-list/style-list.module.mjs +4 -4
  227. package/esm2022/lib/style/style-list/style-list.provider.mjs +2 -2
  228. package/esm2022/lib/style/style-list/style-list.service.mjs +5 -5
  229. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +4 -4
  230. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +4 -4
  231. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +5 -5
  232. package/esm2022/lib/style/style-service/draw-style.service.mjs +5 -6
  233. package/esm2022/lib/style/style-service/style.service.mjs +4 -4
  234. package/esm2022/lib/style/style.module.mjs +4 -4
  235. package/esm2022/lib/toast/toast.component.mjs +5 -6
  236. package/esm2022/lib/toast/toast.module.mjs +4 -4
  237. package/esm2022/lib/utils/id-generator.mjs +6 -4
  238. package/esm2022/lib/utils/osmLinks.mjs +1 -1
  239. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +3 -3
  240. package/esm2022/lib/wkt/shared/wkt.service.mjs +7 -8
  241. package/esm2022/lib/wkt/wkt.module.mjs +4 -4
  242. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +3 -3
  243. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +4 -4
  244. package/esm2022/lib/workspace/shared/edition-workspace.mjs +1 -1
  245. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +11 -9
  246. package/esm2022/lib/workspace/shared/feature-workspace.mjs +1 -1
  247. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +3 -3
  248. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +1 -1
  249. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +3 -3
  250. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +7 -5
  251. package/esm2022/lib/workspace/shared/workspace.utils.mjs +2 -2
  252. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +3 -3
  253. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +4 -4
  254. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +3 -3
  255. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +4 -4
  256. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +3 -3
  257. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +4 -4
  258. package/esm2022/lib/workspace/workspace.module.mjs +4 -4
  259. package/esm2022/public_api.mjs +1 -2
  260. package/fesm2022/igo2-geo.mjs +943 -1071
  261. package/fesm2022/igo2-geo.mjs.map +1 -1
  262. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +1 -1
  263. package/lib/catalog/shared/catalog.abstract.d.ts +2 -6
  264. package/lib/catalog/shared/catalog.interface.d.ts +2 -6
  265. package/lib/catalog/shared/catalogs.d.ts +2 -2
  266. package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +2 -2
  267. package/lib/datasource/shared/datasources/datasource.d.ts +2 -2
  268. package/lib/datasource/shared/datasources/datasource.interface.d.ts +4 -12
  269. package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +2 -2
  270. package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +2 -2
  271. package/lib/datasource/shared/datasources/websocket-datasource.d.ts +3 -3
  272. package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +1 -1
  273. package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +2 -2
  274. package/lib/directions/shared/directions.interface.d.ts +4 -9
  275. package/lib/directions/shared/directions.utils.d.ts +2 -2
  276. package/lib/draw/draw/draw.component.d.ts +1 -1
  277. package/lib/draw/shared/draw-icon.service.d.ts +1 -1
  278. package/lib/draw/shared/draw.interface.d.ts +1 -2
  279. package/lib/draw/shared/draw.utils.d.ts +1 -1
  280. package/lib/feature/feature-details/feature-details.component.d.ts +1 -3
  281. package/lib/feature/feature-details/feature-details.directive.d.ts +1 -3
  282. package/lib/feature/feature-form/feature-form.component.d.ts +3 -8
  283. package/lib/feature/shared/feature.interfaces.d.ts +11 -17
  284. package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +0 -1
  285. package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +1 -3
  286. package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +2 -4
  287. package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +2 -2
  288. package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +0 -1
  289. package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +0 -1
  290. package/lib/filter/shared/ogc-filter-time.service.d.ts +0 -1
  291. package/lib/filter/shared/ogc-filter.interface.d.ts +2 -4
  292. package/lib/filter/shared/ogc-filter.service.d.ts +0 -1
  293. package/lib/filter/shared/spatial-filter.service.d.ts +1 -3
  294. package/lib/filter/shared/time-filter.service.d.ts +0 -1
  295. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +2 -6
  296. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +2 -6
  297. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -8
  298. package/lib/filter/time-filter-button/time-filter-button.component.d.ts +0 -1
  299. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +10 -10
  300. package/lib/geo.module.d.ts +8 -9
  301. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +3 -5
  302. package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +1 -3
  303. package/lib/geometry/shared/geometry.utils.d.ts +1 -8
  304. package/lib/import-export/export-button/export-button.component.d.ts +0 -1
  305. package/lib/layer/layer-legend/layer-legend.component.d.ts +1 -3
  306. package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +0 -1
  307. package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +0 -1
  308. package/lib/layer/shared/clusterParam.d.ts +1 -3
  309. package/lib/layer/shared/layers/layer.interface.d.ts +1 -3
  310. package/lib/layer/shared/layers/vector-layer.d.ts +1 -1
  311. package/lib/layer/track-feature-button/track-feature-button.component.d.ts +0 -1
  312. package/lib/layer/utils/outputLegend.d.ts +2 -2
  313. package/lib/map/info-section/info-section.component.d.ts +0 -1
  314. package/lib/map/map-center/map-center.component.d.ts +0 -1
  315. package/lib/map/offline-button/offline-button.component.d.ts +0 -1
  316. package/lib/map/rotation-button/rotation-button.component.d.ts +3 -2
  317. package/lib/map/shared/map.d.ts +2 -2
  318. package/lib/map/shared/map.service.d.ts +0 -1
  319. package/lib/map/swipe-control/swipe-control.component.d.ts +0 -1
  320. package/lib/map/zoom-button/zoom-button.component.d.ts +0 -1
  321. package/lib/measure/measurer/measure-format.pipe.d.ts +1 -1
  322. package/lib/measure/measurer/measurer-item.component.d.ts +0 -1
  323. package/lib/measure/shared/measure.interfaces.d.ts +1 -2
  324. package/lib/metadata/shared/metadata.service.d.ts +0 -1
  325. package/lib/overlay/shared/index.d.ts +0 -2
  326. package/lib/print/shared/print.service.d.ts +7 -8
  327. package/lib/query/shared/query.service.d.ts +0 -1
  328. package/lib/search/search-results/search-results.component.d.ts +5 -15
  329. package/lib/search/shared/search.interfaces.d.ts +1 -3
  330. package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
  331. package/lib/search/shared/sources/icherche-icons.d.ts +1 -3
  332. package/lib/search/shared/sources/icherche.interfaces.d.ts +2 -6
  333. package/lib/search/shared/sources/ilayer.interfaces.d.ts +4 -8
  334. package/lib/search/shared/sources/source.interfaces.d.ts +2 -6
  335. package/lib/search/shared/sources/storedqueries.interfaces.d.ts +2 -6
  336. package/lib/style/shared/feature/feature-style.d.ts +2 -2
  337. package/lib/style/shared/vector/vector-style.interface.d.ts +12 -20
  338. package/lib/style/style-list/style-list.interface.d.ts +1 -3
  339. package/lib/style/style-list/style-list.provider.d.ts +2 -2
  340. package/lib/style/style-service/draw-style.service.d.ts +0 -1
  341. package/lib/style/style-service/style.service.d.ts +1 -3
  342. package/lib/toast/toast.component.d.ts +0 -1
  343. package/lib/utils/id-generator.d.ts +1 -2
  344. package/lib/wkt/shared/wkt.service.d.ts +0 -1
  345. package/lib/workspace/shared/edition-workspace.service.d.ts +2 -6
  346. package/package.json +18 -19
  347. package/public_api.d.ts +0 -1
  348. package/src/lib/catalog/catalog-browser/catalog-browser.theming.scss +1 -1
  349. package/src/lib/directions/directions-results/directions-results.theming.scss +1 -1
  350. package/src/lib/draw/draw.theming.scss +4 -4
  351. package/src/lib/feature/feature-details/feature-details.theming.scss +1 -1
  352. package/src/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +3 -3
  353. package/src/lib/layer/layer-item/layer-item.theme.scss +4 -4
  354. package/src/lib/layer/layer-legend/layer-legend.theming.scss +1 -1
  355. package/src/lib/layer/layer-list-tool/layer-list-tool.theming.scss +1 -1
  356. package/src/lib/map/map-browser/map-browser.theming.scss +5 -5
  357. package/src/lib/map/menu-button/menu-button.theming.scss +2 -2
  358. package/src/lib/map/zoom-button/zoom-button.theming.scss +4 -4
  359. package/src/lib/measure/measurer/measurer.theming.scss +2 -2
  360. package/src/lib/workspace/confirmation-popup/confirmation-popup.theming.scss +2 -2
  361. package/esm2022/lib/overlay/overlay.module.mjs +0 -24
  362. package/esm2022/lib/overlay/shared/overlay.directive.mjs +0 -39
  363. package/esm2022/lib/overlay/shared/overlay.service.mjs +0 -26
  364. package/lib/overlay/overlay.module.d.ts +0 -12
  365. package/lib/overlay/shared/overlay.directive.d.ts +0 -18
  366. package/lib/overlay/shared/overlay.service.d.ts +0 -14
@@ -198,7 +198,7 @@ export class HoverFeatureDirective {
198
198
  * On map singleclick
199
199
  */
200
200
  listenToMapClick() {
201
- this.singleClickMapListener = this.map.ol.on('singleclick', (event) => this.onMapSingleClickEvent(event));
201
+ this.singleClickMapListener = this.map.ol.on('singleclick', () => this.onMapSingleClickEvent());
202
202
  }
203
203
  /**
204
204
  * Unsubscribe to pointer store.
@@ -227,7 +227,7 @@ export class HoverFeatureDirective {
227
227
  * Trigger clear layer on singleclick.
228
228
  * @param event OL map browser singleclick event
229
229
  */
230
- onMapSingleClickEvent(event) {
230
+ onMapSingleClickEvent() {
231
231
  this.clearLayer();
232
232
  }
233
233
  /**
@@ -280,13 +280,12 @@ export class HoverFeatureDirective {
280
280
  mapFeature.getProperties() !==
281
281
  this.pointerHoverFeatureStore.all()[0]?.getProperties()) {
282
282
  this.clearLayer();
283
- let igoLayer;
284
283
  if (layerOL instanceof olLayerVector) {
285
284
  const myLayerVector = this.map.getLayerByOlUId(layerOL.ol_uid);
286
285
  if (!this.canProcessHover(myLayerVector)) {
287
286
  return;
288
287
  }
289
- let localOlFeature = this.handleRenderFeature(mapFeature);
288
+ const localOlFeature = this.handleRenderFeature(mapFeature);
290
289
  this.setLayerStyleFromOptions(myLayerVector, localOlFeature);
291
290
  const featuresToLoad = [localOlFeature];
292
291
  localOlFeature.set('_isLabel', false);
@@ -301,7 +300,6 @@ export class HoverFeatureDirective {
301
300
  this.setLayerStyleFromOptions(myLayerVector, myLabelOlFeature);
302
301
  featuresToLoad.push(myLabelOlFeature);
303
302
  this.pointerHoverFeatureStore.load(featuresToLoad);
304
- igoLayer = myLayerVector;
305
303
  return true;
306
304
  }
307
305
  if (layerOL instanceof olLayerVectorTile) {
@@ -333,7 +331,7 @@ export class HoverFeatureDirective {
333
331
  this.clearLayer();
334
332
  return;
335
333
  }
336
- let localOlFeature = this.handleRenderFeature(feature);
334
+ const localOlFeature = this.handleRenderFeature(feature);
337
335
  localOlFeature.set('_isLabel', false);
338
336
  const myLabelOlFeature = new OlFeature();
339
337
  myLabelOlFeature.setProperties(localOlFeature.getProperties());
@@ -348,7 +346,6 @@ export class HoverFeatureDirective {
348
346
  this.selectionMVT[feature.getId()] = localOlFeature;
349
347
  this.selectionLayer.changed();
350
348
  });
351
- igoLayer = myLayerVectorTile;
352
349
  }
353
350
  }
354
351
  }, {
@@ -470,10 +467,10 @@ export class HoverFeatureDirective {
470
467
  this.store.clearLayer();
471
468
  }
472
469
  }
473
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: HoverFeatureDirective, deps: [{ token: i1.MapBrowserComponent, self: true }, { token: i2.MediaService }, { token: i3.StyleService }], target: i0.ɵɵFactoryTarget.Directive });
474
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: HoverFeatureDirective, isStandalone: true, selector: "[igoHoverFeature]", inputs: { igoHoverFeatureDelay: "igoHoverFeatureDelay", igoHoverFeatureEnabled: "igoHoverFeatureEnabled" }, host: { listeners: { "mouseout": "mouseout()" } }, ngImport: i0 });
470
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HoverFeatureDirective, deps: [{ token: i1.MapBrowserComponent, self: true }, { token: i2.MediaService }, { token: i3.StyleService }], target: i0.ɵɵFactoryTarget.Directive });
471
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: HoverFeatureDirective, isStandalone: true, selector: "[igoHoverFeature]", inputs: { igoHoverFeatureDelay: "igoHoverFeatureDelay", igoHoverFeatureEnabled: "igoHoverFeatureEnabled" }, host: { listeners: { "mouseout": "mouseout()" } }, ngImport: i0 });
475
472
  }
476
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: HoverFeatureDirective, decorators: [{
473
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: HoverFeatureDirective, decorators: [{
477
474
  type: Directive,
478
475
  args: [{
479
476
  selector: '[igoHoverFeature]',
@@ -489,4 +486,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
489
486
  type: HostListener,
490
487
  args: ['mouseout']
491
488
  }] } });
492
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItZmVhdHVyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2hvdmVyLWZlYXR1cmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUVuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8saUJBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxhQUFhLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxrQkFBa0IsTUFBTSxzQkFBc0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQVMsV0FBVyxFQUFtQixNQUFNLDJCQUEyQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxt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OytGQTFCRSxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBS0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUdOLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2VsZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRW50aXR5U3RvcmUgfSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcbmltcG9ydCB7IE1lZGlhU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVkaWEnO1xuaW1wb3J0IHsgU3ViamVjdFN0YXR1cyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IE9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbE1hcEJyb3dzZXJFdmVudCB9IGZyb20gJ29sL01hcEJyb3dzZXJFdmVudCc7XG5pbXBvcnQgeyB1bkJ5S2V5IH0gZnJvbSAnb2wvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgKiBhcyBPbEdlb20gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IG9sTGF5ZXJWZWN0b3IgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yJztcbmltcG9ydCBvbExheWVyVmVjdG9yVGlsZSBmcm9tICdvbC9sYXllci9WZWN0b3JUaWxlJztcbmltcG9ydCBSZW5kZXJGZWF0dXJlIGZyb20gJ29sL3JlbmRlci9GZWF0dXJlJztcbmltcG9ydCBvbFZlY3RvclRpbGVTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3RvclRpbGUnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2ZlYXR1cmUtZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyB0cnlCaW5kU3RvcmVMYXllciB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUtc3RvcmUudXRpbHMnO1xuaW1wb3J0IHsgRmVhdHVyZU1vdGlvbiB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuZW51bXMnO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGZWF0dXJlU3RvcmUgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9zdG9yZSc7XG5pbXBvcnQgeyBMYXllciwgVmVjdG9yTGF5ZXIsIFZlY3RvclRpbGVMYXllciB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMnO1xuaW1wb3J0IHsgTWFwQnJvd3NlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21hcC9tYXAtYnJvd3Nlci9tYXAtYnJvd3Nlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xuaW1wb3J0IHsgaG92ZXJGZWF0dXJlTWFya2VyU3R5bGUgfSBmcm9tICcuLi8uLi9zdHlsZS9zaGFyZWQvZmVhdHVyZS9mZWF0dXJlLXN0eWxlJztcbmltcG9ydCB7IFN0eWxlQnlBdHRyaWJ1dGUgfSBmcm9tICcuLi8uLi9zdHlsZS9zaGFyZWQvdmVjdG9yL3ZlY3Rvci1zdHlsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc3R5bGUtc2VydmljZS9zdHlsZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSBtYWtlcyB0aGUgbW91c2UgY29vcmRpbmF0ZSB0cmlnZ2VyIGEgcmV2ZXJzZSBzZWFyY2ggb24gYXZhaWxhYmxlIHNlYXJjaCBzb3VyY2VzLlxuICogVGhlIHNlYXJjaCByZXN1bHRzIGFyZSBwbGFjZWQgaW50byBhIGxhYmVsLCBvbiBhIGNyb3NzIGljb24sIHJlcHJlc2VudGluZyB0aGUgbW91c2UgY29vcmRpbmF0ZS5cbiAqIEJ5IGRlZmF1bHQsIG5vIHNlYXJjaCBzb3VyY2VzLiBDb25maWcgaW4gY29uZmlnIGZpbGUgbXVzdCBiZSBkZWZpbmVkLlxuICogdGhlIGxheWVyIGxldmVsLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaWdvSG92ZXJGZWF0dXJlXScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSG92ZXJGZWF0dXJlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgc3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPjtcbiAgcHJpdmF0ZSBwb2ludGVySG92ZXJGZWF0dXJlU3RvcmU6IEVudGl0eVN0b3JlPE9sRmVhdHVyZTxPbEdlb21ldHJ5Pj4gPVxuICAgIG5ldyBFbnRpdHlTdG9yZTxPbEZlYXR1cmU8T2xHZW9tZXRyeT4+KFtdKTtcbiAgcHJpdmF0ZSBsYXN0VGltZW91dFJlcXVlc3Q7XG4gIHByaXZhdGUgc3RvcmUkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGxheWVycyQkOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBzZWxlY3Rpb25MYXllcjogb2xMYXllclZlY3RvclRpbGU7XG4gIHByaXZhdGUgc2VsZWN0aW9uTVZUID0ge307XG4gIHByaXZhdGUgbXZ0U3R5bGVPcHRpb25zOiBTdHlsZUJ5QXR0cmlidXRlO1xuXG4gIC8qKlxuICAgKiBMaXN0ZW5lciB0byB0aGUgcG9pbnRlciBtb3ZlIGV2ZW50XG4gICAqL1xuICBwcml2YXRlIHBvaW50ZXJNb3ZlTGlzdGVuZXI7XG5cbiAgcHJpdmF0ZSBzaW5nbGVDbGlja01hcExpc3RlbmVyO1xuXG4gIHByaXZhdGUgaG92ZXJGZWF0dXJlSWQ6IHN0cmluZyA9ICdob3ZlckZlYXR1cmVJZCc7XG4gIC8qKlxuICAgKiBUaGUgZGVsYXkgd2hlcmUgdGhlIG1vdXNlIG11c3QgYmUgbW90aW9ubGVzcyBiZWZvcmUgdHJpZ2dlciB0aGUgcmV2ZXJzZSBzZWFyY2hcbiAgICovXG4gIEBJbnB1dCgpIGlnb0hvdmVyRmVhdHVyZURlbGF5OiBudW1iZXIgPSAxMDAwO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgdXNlciBoYXMgZW5hYmxlZCBvciBub3QgdGhlIGRpcmVjdGl2ZVxuICAgKi9cbiAgQElucHV0KCkgaWdvSG92ZXJGZWF0dXJlRW5hYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlb3V0JylcbiAgbW91c2VvdXQoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0KTtcbiAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJR08gbWFwXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5tYXA7XG4gIH1cblxuICBnZXQgbWFwUHJvamVjdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5jb21wb25lbnQubWFwIGFzIElnb01hcCkucHJvamVjdGlvbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgcHJpdmF0ZSBjb21wb25lbnQ6IE1hcEJyb3dzZXJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBtZWRpYVNlcnZpY2U6IE1lZGlhU2VydmljZSxcbiAgICBwcml2YXRlIHN0eWxlU2VydmljZTogU3R5bGVTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogU3RhcnQgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlIGFuZCByZXZlcnNlIHNlYXJjaCByZXN1bHRzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubWFwLnN0YXR1cyRcbiAgICAgIC5waXBlKGZpcnN0KChzdGF0dXMpID0+IHN0YXR1cyA9PT0gU3ViamVjdFN0YXR1cy5Eb25lKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnN0b3JlID0gbmV3IEZlYXR1cmVTdG9yZTxGZWF0dXJlPihbXSwgeyBtYXA6IHRoaXMubWFwIH0pO1xuICAgICAgICB0aGlzLmluaXRTdG9yZSgpO1xuICAgICAgICB0aGlzLmxpc3RlblRvTWFwUG9pbnRlck1vdmUoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1BvaW50ZXJTdG9yZSgpO1xuICAgICAgICB0aGlzLmxpc3RlblRvTWFwQ2xpY2soKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gVG8gaGFuZGxlIGNvbnRleHQgY2hhbmdlIHdpdGhvdXQgdXNpbmcgdGhlIGNvbnRleHRTZXJ2aWNlLlxuICAgIHRoaXMubGF5ZXJzJCQgPSB0aGlzLm1hcC5sYXllcnMkLnN1YnNjcmliZSgobGF5ZXJzOiBMYXllcltdKSA9PiB7XG4gICAgICBpZiAodGhpcy5zdG9yZSAmJiAhbGF5ZXJzLmZpbmQoKGwpID0+IGwuaWQgPT09ICdob3ZlckZlYXR1cmVJZCcpKSB7XG4gICAgICAgIHRoaXMuaW5pdFN0b3JlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgcG9pbnRlciBwb3NpdGlvbiBzdG9yZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgaW5pdFN0b3JlKCkge1xuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5zdG9yZTtcblxuICAgIGNvbnN0IGxheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICAgIGlzSWdvSW50ZXJuYWxMYXllcjogdHJ1ZSxcbiAgICAgIGlkOiAnaG92ZXJGZWF0dXJlSWQnLFxuICAgICAgdGl0bGU6ICdob3ZlckZlYXR1cmUnLFxuICAgICAgekluZGV4OiA5MDAsXG4gICAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxuICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcbiAgICAgIGV4cG9ydGFibGU6IGZhbHNlLFxuICAgICAgYnJvd3NhYmxlOiBmYWxzZSxcbiAgICAgIHN0eWxlOiBob3ZlckZlYXR1cmVNYXJrZXJTdHlsZVxuICAgIH0pO1xuICAgIHRyeUJpbmRTdG9yZUxheWVyKHN0b3JlLCBsYXllcik7XG5cbiAgICB0aGlzLnNlbGVjdGlvbkxheWVyID0gbmV3IG9sTGF5ZXJWZWN0b3JUaWxlKHtcbiAgICAgIG1hcDogdGhpcy5tYXAub2wsXG4gICAgICB6SW5kZXg6IDkwMSxcbiAgICAgIHJlbmRlck1vZGU6ICd2ZWN0b3InLFxuICAgICAgZGVjbHV0dGVyOiB0cnVlLFxuICAgICAgc291cmNlOiBuZXcgb2xWZWN0b3JUaWxlU291cmNlKHsgcHJvamVjdGlvbjogdGhpcy5tYXAucHJvamVjdGlvbiB9KSxcbiAgICAgIHN0eWxlOiAoZmVhdHVyZSwgcmVzb2x1dGlvbikgPT4ge1xuICAgICAgICBpZiAodGhpcy5tdnRTdHlsZU9wdGlvbnMgJiYgZmVhdHVyZS5nZXRJZCgpIGluIHRoaXMuc2VsZWN0aW9uTVZUKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSG92ZXJTdHlsZShcbiAgICAgICAgICAgIGZlYXR1cmUsXG4gICAgICAgICAgICB0aGlzLm12dFN0eWxlT3B0aW9ucyxcbiAgICAgICAgICAgIHJlc29sdXRpb25cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVIb3ZlclN0eWxlKFxuICAgIGZlYXR1cmU6IFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4sXG4gICAgaG92ZXJTdHlsZTogU3R5bGVCeUF0dHJpYnV0ZSxcbiAgICByZXNvbHV0aW9uOiBudW1iZXJcbiAgKSB7XG4gICAgY29uc3QgbG9jYWxIb3ZlclN0eWxlID0geyAuLi5ob3ZlclN0eWxlIH07XG4gICAgbGV0IGxhYmVsID0gaG92ZXJTdHlsZS5sYWJlbCA/IGhvdmVyU3R5bGUubGFiZWwuYXR0cmlidXRlIDogdW5kZWZpbmVkO1xuICAgIGxldCBoYXNMYWJlbFN0eWxlID0gaG92ZXJTdHlsZS5sYWJlbD8uc3R5bGUgPyB0cnVlIDogZmFsc2U7XG5cbiAgICBpZiAoIWZlYXR1cmUuZ2V0KCdfaXNMYWJlbCcpKSB7XG4gICAgICBsb2NhbEhvdmVyU3R5bGUubGFiZWwgPSB1bmRlZmluZWQ7XG4gICAgICBoYXNMYWJlbFN0eWxlID0gZmFsc2U7XG4gICAgICBsYWJlbCA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2xlYXIgdGhlIHN0eWxlIGZvciBsYWJlbC4uLi5cbiAgICAgIGNvbnN0IHNpemUgPSBsb2NhbEhvdmVyU3R5bGUuZGF0YSA/IGxvY2FsSG92ZXJTdHlsZS5kYXRhLmxlbmd0aCA6IDA7XG4gICAgICBjb25zdCByYWRpdXMgPSBbXTtcbiAgICAgIGNvbnN0IHN0cm9rZSA9IFtdO1xuICAgICAgY29uc3Qgd2lkdGggPSBbXTtcbiAgICAgIGNvbnN0IGZpbGwgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgIHJhZGl1cy5wdXNoKDApO1xuICAgICAgICBzdHJva2UucHVzaCgncmdiYSgyNTUsIDI1NSwgMjU1LCAwKScpO1xuICAgICAgICB3aWR0aC5wdXNoKDApO1xuICAgICAgICBmaWxsLnB1c2goJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKTtcbiAgICAgIH1cbiAgICAgIGxvY2FsSG92ZXJTdHlsZS5yYWRpdXMgPSByYWRpdXM7XG4gICAgICBsb2NhbEhvdmVyU3R5bGUuc3Ryb2tlID0gc3Ryb2tlO1xuICAgICAgbG9jYWxIb3ZlclN0eWxlLndpZHRoID0gd2lkdGg7XG4gICAgICBsb2NhbEhvdmVyU3R5bGUuZmlsbCA9IGZpbGw7XG4gICAgfVxuICAgIGlmICghaGFzTGFiZWxTdHlsZSAmJiBsYWJlbCkge1xuICAgICAgbG9jYWxIb3ZlclN0eWxlLmxhYmVsLnN0eWxlID0ge1xuICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcbiAgICAgICAgdGV4dEJhc2VsaW5lOiAndG9wJyxcbiAgICAgICAgZm9udDogJzEycHggQ2FsaWJyaSxzYW5zLXNlcmlmJyxcbiAgICAgICAgZmlsbDogeyBjb2xvcjogJyMwMDAnIH0sXG4gICAgICAgIGJhY2tncm91bmRGaWxsOiB7IGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJyB9LFxuICAgICAgICBiYWNrZ3JvdW5kU3Ryb2tlOiB7IGNvbG9yOiAncmdiYSgyMDAsIDIwMCwgMjAwLCAwLjc1KScsIHdpZHRoOiAyIH0sXG4gICAgICAgIHN0cm9rZTogeyBjb2xvcjogJyNmZmYnLCB3aWR0aDogMyB9LFxuICAgICAgICBvdmVyZmxvdzogdHJ1ZSxcbiAgICAgICAgb2Zmc2V0WDogMTAsXG4gICAgICAgIG9mZnNldFk6IDIwLFxuICAgICAgICBwYWRkaW5nOiBbMi41LCAyLjUsIDIuNSwgMi41XVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3R5bGVTZXJ2aWNlLmNyZWF0ZVN0eWxlQnlBdHRyaWJ1dGUoXG4gICAgICBmZWF0dXJlLFxuICAgICAgbG9jYWxIb3ZlclN0eWxlLFxuICAgICAgcmVzb2x1dGlvblxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBsaXN0ZW5pbmcgdG8gcG9pbnRlcm1vdmUgYW5kIHJldmVyc2Ugc2VhcmNoIHJlc3VsdHMuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy51bmxpc3RlblRvTWFwUG9pbnRlck1vdmUoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlVG9Qb2ludGVyU3RvcmUoKTtcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBTaW5nbGVDbGljaygpO1xuICAgIHRoaXMubGF5ZXJzJCQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gcG9pbnRlcm1vdmUgcmVzdWx0IHN0b3JlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgc3Vic2NyaWJlVG9Qb2ludGVyU3RvcmUoKSB7XG4gICAgdGhpcy5zdG9yZSQkID0gdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUuZW50aXRpZXMkLnN1YnNjcmliZShcbiAgICAgIChyZXN1bHRzVW5kZXJQb2ludGVyUG9zaXRpb24pID0+IHtcbiAgICAgICAgdGhpcy5hZGRGZWF0dXJlT3ZlcmxheShyZXN1bHRzVW5kZXJQb2ludGVyUG9zaXRpb24pO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogT24gbWFwIHBvaW50ZXJtb3ZlXG4gICAqL1xuICBwcml2YXRlIGxpc3RlblRvTWFwUG9pbnRlck1vdmUoKSB7XG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdGhpcy5tYXAub2wub24oXG4gICAgICAncG9pbnRlcm1vdmUnLFxuICAgICAgKGV2ZW50OiBPbE1hcEJyb3dzZXJFdmVudDxhbnk+KSA9PiB0aGlzLm9uTWFwRXZlbnQoZXZlbnQpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBtYXAgc2luZ2xlY2xpY2tcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9NYXBDbGljaygpIHtcbiAgICB0aGlzLnNpbmdsZUNsaWNrTWFwTGlzdGVuZXIgPSB0aGlzLm1hcC5vbC5vbihcbiAgICAgICdzaW5nbGVjbGljaycsXG4gICAgICAoZXZlbnQ6IE9sTWFwQnJvd3NlckV2ZW50PGFueT4pID0+IHRoaXMub25NYXBTaW5nbGVDbGlja0V2ZW50KGV2ZW50KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVW5zdWJzY3JpYmUgdG8gcG9pbnRlciBzdG9yZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB1bnN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCkge1xuICAgIHRoaXMuc3RvcmUkJC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgcG9pbnRlcm1vdmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHVubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpIHtcbiAgICB1bkJ5S2V5KHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lcik7XG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgc2luZ2xlY2xpY2tcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHVubGlzdGVuVG9NYXBTaW5nbGVDbGljaygpIHtcbiAgICB1bkJ5S2V5KHRoaXMuc2luZ2xlQ2xpY2tNYXBMaXN0ZW5lcik7XG4gICAgdGhpcy5zaW5nbGVDbGlja01hcExpc3RlbmVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXIgY2xlYXIgbGF5ZXIgb24gc2luZ2xlY2xpY2suXG4gICAqIEBwYXJhbSBldmVudCBPTCBtYXAgYnJvd3NlciBzaW5nbGVjbGljayBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBvbk1hcFNpbmdsZUNsaWNrRXZlbnQoZXZlbnQ6IE9sTWFwQnJvd3NlckV2ZW50PGFueT4pIHtcbiAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIGhvdmVyIHdoZW4gdGhlIG1vdXNlIGlzIG1vdGlvbmxlc3MgZHVyaW5nIHRoZSBkZWZpbmVkIGRlbGF5IChwb2ludGVyTW92ZURlbGF5KS5cbiAgICogQHBhcmFtIGV2ZW50IE9MIG1hcCBicm93c2VyIHBvaW50ZXIgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25NYXBFdmVudChldmVudDogT2xNYXBCcm93c2VyRXZlbnQ8YW55Pikge1xuICAgIGlmIChcbiAgICAgIGV2ZW50LmRyYWdnaW5nIHx8XG4gICAgICAhdGhpcy5pZ29Ib3ZlckZlYXR1cmVFbmFibGVkIHx8XG4gICAgICB0aGlzLm1lZGlhU2VydmljZS5pc1RvdWNoU2NyZWVuKClcbiAgICApIHtcbiAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gY2FuY2VsIHRpbWVvdXQgd2hlbiB0aGUgbW91c2UgbW92ZXNcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCk7XG4gICAgfVxuICAgIGxldCBtYXhpbXVtWmluZGV4ID0gLUluZmluaXR5O1xuICAgIGxldCB0b3BNb3N0T2xMYXllcjtcbiAgICBjb25zdCBwaXhlbCA9IHRoaXMubWFwLm9sLmdldFBpeGVsRnJvbUNvb3JkaW5hdGUoZXZlbnQuY29vcmRpbmF0ZSk7XG4gICAgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIHJldHJpZXZlIHRoZSB0b3Btb3N0IGxheWVyIHdpdGggZmVhdHVyZSB0byBvbmx5IGFwcGx5IHRoZSBob3ZlciBvbiB0aGlzIGxheWVyLlxuICAgICAgdGhpcy5tYXAub2wuZm9yRWFjaEZlYXR1cmVBdFBpeGVsKFxuICAgICAgICBwaXhlbCxcbiAgICAgICAgKG1hcEZlYXR1cmU6IFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4sIGxheWVyT0w6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICghbGF5ZXJPTCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpZ29MYXllciA9IHRoaXMubWFwLmdldExheWVyQnlPbFVJZCgobGF5ZXJPTCBhcyBhbnkpLm9sX3VpZCk7XG4gICAgICAgICAgaWYgKCF0aGlzLmNhblByb2Nlc3NIb3ZlcihpZ29MYXllciBhcyBhbnkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpZ29MYXllci56SW5kZXggPD0gbWF4aW11bVppbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXhpbXVtWmluZGV4ID0gaWdvTGF5ZXIuekluZGV4O1xuICAgICAgICAgIHRvcE1vc3RPbExheWVyID0gbGF5ZXJPTDtcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGhpdFRvbGVyYW5jZTogMTAsXG4gICAgICAgICAgbGF5ZXJGaWx0ZXI6IChvbExheWVyKSA9PlxuICAgICAgICAgICAgb2xMYXllciBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IgfHxcbiAgICAgICAgICAgIG9sTGF5ZXIgaW5zdGFuY2VvZiBvbExheWVyVmVjdG9yVGlsZVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgaWYgKCF0b3BNb3N0T2xMYXllcikge1xuICAgICAgICAvLyBUbyBjbGVhciBsYWJlbFxuICAgICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcbiAgICAgICAgdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUuY2xlYXIoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm1hcC5vbC5mb3JFYWNoRmVhdHVyZUF0UGl4ZWwoXG4gICAgICAgIHBpeGVsLFxuICAgICAgICAobWFwRmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiwgbGF5ZXJPTDogYW55KSA9PiB7XG4gICAgICAgICAgLy8gVG8gYXZvaWQgZmxhc2hpbmcgZmVhdHVyZVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG1hcEZlYXR1cmUuZ2V0KCdob3ZlclN1bW1hcnknKSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBtYXBGZWF0dXJlLmdldFByb3BlcnRpZXMoKSAhPT1cbiAgICAgICAgICAgICAgdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUuYWxsKClbMF0/LmdldFByb3BlcnRpZXMoKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5jbGVhckxheWVyKCk7XG4gICAgICAgICAgICBsZXQgaWdvTGF5ZXI7XG4gICAgICAgICAgICBpZiAobGF5ZXJPTCBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IpIHtcbiAgICAgICAgICAgICAgY29uc3QgbXlMYXllclZlY3RvciA9IHRoaXMubWFwLmdldExheWVyQnlPbFVJZChcbiAgICAgICAgICAgICAgICAobGF5ZXJPTCBhcyBhbnkpLm9sX3VpZFxuICAgICAgICAgICAgICApIGFzIFZlY3RvckxheWVyO1xuICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0hvdmVyKG15TGF5ZXJWZWN0b3IpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxldCBsb2NhbE9sRmVhdHVyZSA9IHRoaXMuaGFuZGxlUmVuZGVyRmVhdHVyZShtYXBGZWF0dXJlKTtcbiAgICAgICAgICAgICAgdGhpcy5zZXRMYXllclN0eWxlRnJvbU9wdGlvbnMobXlMYXllclZlY3RvciwgbG9jYWxPbEZlYXR1cmUpO1xuICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlc1RvTG9hZCA9IFtsb2NhbE9sRmVhdHVyZV07XG4gICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLnNldCgnX2lzTGFiZWwnLCBmYWxzZSk7XG4gICAgICAgICAgICAgIGNvbnN0IG15TGFiZWxPbEZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKCk7XG4gICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0UHJvcGVydGllcyhsb2NhbE9sRmVhdHVyZS5nZXRQcm9wZXJ0aWVzKCkpO1xuICAgICAgICAgICAgICBjb25zdCBsYWJlbEdlb20gPVxuICAgICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLmdldEdlb21ldHJ5KCkuZ2V0VHlwZSgpID09PSAnUG9pbnQnXG4gICAgICAgICAgICAgICAgICA/IGxvY2FsT2xGZWF0dXJlLmdldEdlb21ldHJ5KClcbiAgICAgICAgICAgICAgICAgIDogbmV3IE9sR2VvbS5Qb2ludChldmVudC5jb29yZGluYXRlKTtcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRHZW9tZXRyeShsYWJlbEdlb20pO1xuICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldElkKGxvY2FsT2xGZWF0dXJlLmdldElkKCkpO1xuICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldCgnX2lzTGFiZWwnLCB0cnVlKTtcbiAgICAgICAgICAgICAgdGhpcy5zZXRMYXllclN0eWxlRnJvbU9wdGlvbnMobXlMYXllclZlY3RvciwgbXlMYWJlbE9sRmVhdHVyZSk7XG4gICAgICAgICAgICAgIGZlYXR1cmVzVG9Mb2FkLnB1c2gobXlMYWJlbE9sRmVhdHVyZSk7XG4gICAgICAgICAgICAgIHRoaXMucG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlLmxvYWQoZmVhdHVyZXNUb0xvYWQpO1xuICAgICAgICAgICAgICBpZ29MYXllciA9IG15TGF5ZXJWZWN0b3I7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxheWVyT0wgaW5zdGFuY2VvZiBvbExheWVyVmVjdG9yVGlsZSkge1xuICAgICAgICAgICAgICBjb25zdCBteUxheWVyVmVjdG9yVGlsZSA9IHRoaXMubWFwLmdldExheWVyQnlPbFVJZChcbiAgICAgICAgICAgICAgICAobGF5ZXJPTCBhcyBhbnkpLm9sX3VpZFxuICAgICAgICAgICAgICApIGFzIFZlY3RvclRpbGVMYXllcjtcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhblByb2Nlc3NIb3ZlcihteUxheWVyVmVjdG9yVGlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIG15TGF5ZXJWZWN0b3JUaWxlPy5vcHRpb25zPy5pZ29TdHlsZT8uc3R5bGVCeUF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgICAgPy5ob3ZlclN0eWxlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMubXZ0U3R5bGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgIG15TGF5ZXJWZWN0b3JUaWxlLm9wdGlvbnMuaWdvU3R5bGUuc3R5bGVCeUF0dHJpYnV0ZS5ob3ZlclN0eWxlO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKG15TGF5ZXJWZWN0b3JUaWxlPy5vcHRpb25zPy5pZ29TdHlsZT8uaG92ZXJTdHlsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubXZ0U3R5bGVPcHRpb25zID1cbiAgICAgICAgICAgICAgICAgIG15TGF5ZXJWZWN0b3JUaWxlLm9wdGlvbnMuaWdvU3R5bGUuaG92ZXJTdHlsZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkxheWVyLnNldFNvdXJjZShsYXllck9MLmdldFNvdXJjZSgpKTtcbiAgICAgICAgICAgICAgbGF5ZXJPTFxuICAgICAgICAgICAgICAgIC5nZXRGZWF0dXJlcyhldmVudC5waXhlbClcbiAgICAgICAgICAgICAgICAudGhlbihcbiAgICAgICAgICAgICAgICAgIChtdnRGZWF0dXJlczogKFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT4pW10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFtdnRGZWF0dXJlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1WVCA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTGF5ZXIuY2hhbmdlZCgpO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlID0gbXZ0RmVhdHVyZXNbMF07XG4gICAgICAgICAgICAgICAgICAgIGlmICghZmVhdHVyZSkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9jYWxPbEZlYXR1cmUgPSB0aGlzLmhhbmRsZVJlbmRlckZlYXR1cmUoZmVhdHVyZSk7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsT2xGZWF0dXJlLnNldCgnX2lzTGFiZWwnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG15TGFiZWxPbEZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKCk7XG4gICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0UHJvcGVydGllcyhcbiAgICAgICAgICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5nZXRQcm9wZXJ0aWVzKClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxHZW9tID1cbiAgICAgICAgICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKSA9PT0gJ1BvaW50J1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBsb2NhbE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG5ldyBPbEdlb20uUG9pbnQoZXZlbnQuY29vcmRpbmF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0R2VvbWV0cnkobGFiZWxHZW9tKTtcbiAgICAgICAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRJZChsb2NhbE9sRmVhdHVyZS5nZXRJZCgpKTtcbiAgICAgICAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXQoJ19pc0xhYmVsJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TGF5ZXJTdHlsZUZyb21PcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICAgIG15TGF5ZXJWZWN0b3JUaWxlLFxuICAgICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludGVySG92ZXJGZWF0dXJlU3RvcmUubG9hZChbbXlMYWJlbE9sRmVhdHVyZV0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbk1WVFtmZWF0dXJlLmdldElkKCldID0gbG9jYWxPbEZlYXR1cmU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTGF5ZXIuY2hhbmdlZCgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlnb0xheWVyID0gbXlMYXllclZlY3RvclRpbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaGl0VG9sZXJhbmNlOiAxMCxcbiAgICAgICAgICBsYXllckZpbHRlcjogKG9sTGF5ZXIpID0+IG9sTGF5ZXIgPT09IHRvcE1vc3RPbExheWVyXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSwgdGhpcy5pZ29Ib3ZlckZlYXR1cmVEZWxheSk7XG4gIH1cblxuICBjYW5Qcm9jZXNzSG92ZXIoaWdvTGF5ZXI6IFZlY3RvckxheWVyIHwgVmVjdG9yVGlsZUxheWVyKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpZ29MYXllcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWlnb0xheWVyLnZpc2libGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFpZ29MYXllci5vcHRpb25zKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIWlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGUgJiZcbiAgICAgICFpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlPy5ob3ZlclN0eWxlXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZT8uc3R5bGVCeUF0dHJpYnV0ZSAmJlxuICAgICAgIWlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGUuaG92ZXJTdHlsZSAmJlxuICAgICAgIWlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGU/LmhvdmVyU3R5bGVcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBoYW5kbGVSZW5kZXJGZWF0dXJlKFxuICAgIGZlYXR1cmU6IFJlbmRlckZlYXR1cmUgfCBPbEZlYXR1cmU8T2xHZW9tZXRyeT5cbiAgKTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+IHtcbiAgICBsZXQgbG9jYWxGZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT47XG4gICAgaWYgKGZlYXR1cmUgaW5zdGFuY2VvZiBSZW5kZXJGZWF0dXJlKSB7XG4gICAgICBsb2NhbEZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKHtcbiAgICAgICAgZ2VvbWV0cnk6IHRoaXMuZ2V0R2VvbWV0cnkoZmVhdHVyZSlcbiAgICAgIH0pO1xuICAgICAgbG9jYWxGZWF0dXJlLnNldElkKGZlYXR1cmUuZ2V0SWQoKSk7XG4gICAgfSBlbHNlIGlmIChmZWF0dXJlIGluc3RhbmNlb2YgT2xGZWF0dXJlKSB7XG4gICAgICBsb2NhbEZlYXR1cmUgPSBmZWF0dXJlO1xuICAgIH1cbiAgICBsb2NhbEZlYXR1cmUuc2V0UHJvcGVydGllcyhmZWF0dXJlLmdldFByb3BlcnRpZXMoKSk7XG4gICAgcmV0dXJuIGxvY2FsRmVhdHVyZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBmZWF0dXJlIHRvIHRoZSBwb2ludGVyIHN0b3JlXG4gICAqIEBwYXJhbSB0ZXh0IHN0cmluZ1xuICAgKi9cbiAgcHJpdmF0ZSBhZGRGZWF0dXJlT3ZlcmxheShob3ZlckVudGl0eTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+W10pIHtcbiAgICBpZiAoaG92ZXJFbnRpdHkubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaG92ZXJFbnRpdHlbMF07XG4gICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcbiAgICAgIGNvbnN0IGZlYXR1cmUgPSBuZXcgT2xGZWF0dXJlKHtcbiAgICAgICAgZ2VvbWV0cnk6IHJlc3VsdC5nZXRHZW9tZXRyeSgpLFxuICAgICAgICBtZXRhOiB7IGlkOiB0aGlzLmhvdmVyRmVhdHVyZUlkIH0sXG4gICAgICAgIGhvdmVyU3VtbWFyeTogdGhpcy5nZXRIb3ZlclN1bW1hcnkocmVzdWx0LmdldFByb3BlcnRpZXMoKSlcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN0b3JlLnNldExheWVyT2xGZWF0dXJlcyhbZmVhdHVyZV0sIEZlYXR1cmVNb3Rpb24uTm9uZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRMYXllclN0eWxlRnJvbU9wdGlvbnMoXG4gICAgaWdvTGF5ZXI6IFZlY3RvckxheWVyIHwgVmVjdG9yVGlsZUxheWVyLFxuICAgIGZlYXR1cmU6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PlxuICApIHtcbiAgICBjb25zdCByZXNvbHV0aW9uID0gdGhpcy5zdG9yZS5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0UmVzb2x1dGlvbigpO1xuICAgIGlmIChpZ29MYXllcj8ub3B0aW9ucz8uaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGU/LmhvdmVyU3R5bGUpIHtcbiAgICAgIHRoaXMuc3RvcmUubGF5ZXIub2wuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuY3JlYXRlSG92ZXJTdHlsZShcbiAgICAgICAgICBmZWF0dXJlLFxuICAgICAgICAgIGlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGUuc3R5bGVCeUF0dHJpYnV0ZS5ob3ZlclN0eWxlLFxuICAgICAgICAgIHJlc29sdXRpb25cbiAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlnb0xheWVyPy5vcHRpb25zPy5pZ29TdHlsZT8uaG92ZXJTdHlsZSkge1xuICAgICAgdGhpcy5zdG9yZS5sYXllci5vbC5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5jcmVhdGVIb3ZlclN0eWxlKFxuICAgICAgICAgIGZlYXR1cmUsXG4gICAgICAgICAgaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZS5ob3ZlclN0eWxlLFxuICAgICAgICAgIHJlc29sdXRpb25cbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEhvdmVyU3VtbWFyeShwcm9wZXJ0aWVzKTogc3RyaW5nIHtcbiAgICBsZXQgc3VtbWFyeSA9ICcnO1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHByb3BlcnRpZXMpKSB7XG4gICAgICBpZiAoIWtleS5zdGFydHNXaXRoKCdfJykgJiYga2V5ICE9PSAnZ2VvbWV0cnknKSB7XG4gICAgICAgIHN1bW1hcnkgKz0gYCR7a2V5fTogJHt2YWx1ZX1gICsgJ1xcbic7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdW1tYXJ5Lmxlbmd0aCA+PSAyID8gc3VtbWFyeS5zbGljZSgwLCAtMikgOiBzdW1tYXJ5O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRHZW9tZXRyeShmZWF0dXJlKTogT2xHZW9tLkdlb21ldHJ5IHtcbiAgICBsZXQgZ2VvbTtcbiAgICBpZiAoIWZlYXR1cmUuZ2V0T3JpZW50ZWRGbGF0Q29vcmRpbmF0ZXMpIHtcbiAgICAgIGdlb20gPSBmZWF0dXJlLmdldEdlb21ldHJ5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IGZlYXR1cmUuZ2V0T3JpZW50ZWRGbGF0Q29vcmRpbmF0ZXMoKTtcbiAgICAgIGNvbnN0IGZsYXRDb29yZHMgPSBbXTtcblxuICAgICAgY29vcmRzLmZvckVhY2goKGMsIGlkeCkgPT4ge1xuICAgICAgICBpZiAoaWR4ICUgMiA9PT0gMCkge1xuICAgICAgICAgIGZsYXRDb29yZHMucHVzaChbXG4gICAgICAgICAgICBwYXJzZUZsb2F0KGNvb3Jkc1tpZHhdKSxcbiAgICAgICAgICAgIHBhcnNlRmxvYXQoY29vcmRzW2lkeCArIDFdKVxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gVE9ETzogdGVzdCBNdWx0aVhcbiAgICAgIHN3aXRjaCAoZmVhdHVyZS5nZXRUeXBlKCkpIHtcbiAgICAgICAgY2FzZSAnUG9pbnQnOlxuICAgICAgICAgIGdlb20gPSBuZXcgT2xHZW9tLlBvaW50KGZsYXRDb29yZHMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQb2x5Z29uJzpcbiAgICAgICAgICBnZW9tID0gbmV3IE9sR2VvbS5Qb2x5Z29uKFtmbGF0Q29vcmRzXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0xpbmVTdHJpbmcnOlxuICAgICAgICAgIGdlb20gPSBuZXcgT2xHZW9tLkxpbmVTdHJpbmcoW2ZsYXRDb29yZHNdKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZ2VvbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgcG9pbnRlciBzdG9yZSBmZWF0dXJlc1xuICAgKi9cbiAgcHJpdmF0ZSBjbGVhckxheWVyKCkge1xuICAgIHRoaXMuc2VsZWN0aW9uTVZUID0ge307XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTGF5ZXIpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTGF5ZXIuY2hhbmdlZCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdG9yZSkge1xuICAgICAgdGhpcy5zdG9yZS5jbGVhckxheWVyKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
489
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG92ZXItZmVhdHVyZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2hvdmVyLWZlYXR1cmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFHTCxJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUVuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sYUFBYSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8saUJBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxhQUFhLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxrQkFBa0IsTUFBTSxzQkFBc0IsQ0FBQztBQUd0RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQVMsV0FBVyxFQUFtQixNQUFNLDJCQUEyQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxt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cnQge1xuICBEaXJlY3RpdmUsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTZWxmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZWRpYSc7XG5pbXBvcnQgeyBTdWJqZWN0U3RhdHVzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgT2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sTWFwQnJvd3NlckV2ZW50IH0gZnJvbSAnb2wvTWFwQnJvd3NlckV2ZW50JztcbmltcG9ydCB7IHVuQnlLZXkgfSBmcm9tICdvbC9PYnNlcnZhYmxlJztcbmltcG9ydCAqIGFzIE9sR2VvbSBmcm9tICdvbC9nZW9tJztcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgb2xMYXllclZlY3RvciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xuaW1wb3J0IG9sTGF5ZXJWZWN0b3JUaWxlIGZyb20gJ29sL2xheWVyL1ZlY3RvclRpbGUnO1xuaW1wb3J0IFJlbmRlckZlYXR1cmUgZnJvbSAnb2wvcmVuZGVyL0ZlYXR1cmUnO1xuaW1wb3J0IG9sVmVjdG9yVGlsZVNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yVGlsZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZmVhdHVyZS1kYXRhc291cmNlJztcbmltcG9ydCB7IHRyeUJpbmRTdG9yZUxheWVyIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS1zdG9yZS51dGlscyc7XG5pbXBvcnQgeyBGZWF0dXJlTW90aW9uIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5lbnVtcyc7XG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZlYXR1cmVTdG9yZSB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL3N0b3JlJztcbmltcG9ydCB7IExheWVyLCBWZWN0b3JMYXllciwgVmVjdG9yVGlsZUxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycyc7XG5pbXBvcnQgeyBNYXBCcm93c2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbWFwL21hcC1icm93c2VyL21hcC1icm93c2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XG5pbXBvcnQgeyBob3ZlckZlYXR1cmVNYXJrZXJTdHlsZSB9IGZyb20gJy4uLy4uL3N0eWxlL3NoYXJlZC9mZWF0dXJlL2ZlYXR1cmUtc3R5bGUnO1xuaW1wb3J0IHsgU3R5bGVCeUF0dHJpYnV0ZSB9IGZyb20gJy4uLy4uL3N0eWxlL3NoYXJlZC92ZWN0b3IvdmVjdG9yLXN0eWxlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTdHlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zdHlsZS9zdHlsZS1zZXJ2aWNlL3N0eWxlLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoaXMgZGlyZWN0aXZlIG1ha2VzIHRoZSBtb3VzZSBjb29yZGluYXRlIHRyaWdnZXIgYSByZXZlcnNlIHNlYXJjaCBvbiBhdmFpbGFibGUgc2VhcmNoIHNvdXJjZXMuXG4gKiBUaGUgc2VhcmNoIHJlc3VsdHMgYXJlIHBsYWNlZCBpbnRvIGEgbGFiZWwsIG9uIGEgY3Jvc3MgaWNvbiwgcmVwcmVzZW50aW5nIHRoZSBtb3VzZSBjb29yZGluYXRlLlxuICogQnkgZGVmYXVsdCwgbm8gc2VhcmNoIHNvdXJjZXMuIENvbmZpZyBpbiBjb25maWcgZmlsZSBtdXN0IGJlIGRlZmluZWQuXG4gKiB0aGUgbGF5ZXIgbGV2ZWwuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tpZ29Ib3ZlckZlYXR1cmVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBIb3ZlckZlYXR1cmVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBzdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmU+O1xuICBwcml2YXRlIHBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZTogRW50aXR5U3RvcmU8T2xGZWF0dXJlPE9sR2VvbWV0cnk+PiA9XG4gICAgbmV3IEVudGl0eVN0b3JlPE9sRmVhdHVyZTxPbEdlb21ldHJ5Pj4oW10pO1xuICBwcml2YXRlIGxhc3RUaW1lb3V0UmVxdWVzdDtcbiAgcHJpdmF0ZSBzdG9yZSQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgbGF5ZXJzJCQ6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHNlbGVjdGlvbkxheWVyOiBvbExheWVyVmVjdG9yVGlsZTtcbiAgcHJpdmF0ZSBzZWxlY3Rpb25NVlQgPSB7fTtcbiAgcHJpdmF0ZSBtdnRTdHlsZU9wdGlvbnM6IFN0eWxlQnlBdHRyaWJ1dGU7XG5cbiAgLyoqXG4gICAqIExpc3RlbmVyIHRvIHRoZSBwb2ludGVyIG1vdmUgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgcG9pbnRlck1vdmVMaXN0ZW5lcjtcblxuICBwcml2YXRlIHNpbmdsZUNsaWNrTWFwTGlzdGVuZXI7XG5cbiAgcHJpdmF0ZSBob3ZlckZlYXR1cmVJZCA9ICdob3ZlckZlYXR1cmVJZCc7XG4gIC8qKlxuICAgKiBUaGUgZGVsYXkgd2hlcmUgdGhlIG1vdXNlIG11c3QgYmUgbW90aW9ubGVzcyBiZWZvcmUgdHJpZ2dlciB0aGUgcmV2ZXJzZSBzZWFyY2hcbiAgICovXG4gIEBJbnB1dCgpIGlnb0hvdmVyRmVhdHVyZURlbGF5ID0gMTAwMDtcblxuICAvKipcbiAgICogSWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgb3Igbm90IHRoZSBkaXJlY3RpdmVcbiAgICovXG4gIEBJbnB1dCgpIGlnb0hvdmVyRmVhdHVyZUVuYWJsZWQgPSBmYWxzZTtcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZW91dCcpXG4gIG1vdXNlb3V0KCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCk7XG4gICAgdGhpcy5jbGVhckxheWVyKCk7XG4gIH1cblxuICAvKipcbiAgICogSUdPIG1hcFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnQubWFwO1xuICB9XG5cbiAgZ2V0IG1hcFByb2plY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY29tcG9uZW50Lm1hcCBhcyBJZ29NYXApLnByb2plY3Rpb247XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAU2VsZigpIHByaXZhdGUgY29tcG9uZW50OiBNYXBCcm93c2VyQ29tcG9uZW50LFxuICAgIHByaXZhdGUgbWVkaWFTZXJ2aWNlOiBNZWRpYVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdHlsZVNlcnZpY2U6IFN0eWxlU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGxpc3RlbmluZyB0byBwb2ludGVybW92ZSBhbmQgcmV2ZXJzZSBzZWFyY2ggcmVzdWx0cy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm1hcC5zdGF0dXMkXG4gICAgICAucGlwZShmaXJzdCgoc3RhdHVzKSA9PiBzdGF0dXMgPT09IFN1YmplY3RTdGF0dXMuRG9uZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdG9yZSA9IG5ldyBGZWF0dXJlU3RvcmU8RmVhdHVyZT4oW10sIHsgbWFwOiB0aGlzLm1hcCB9KTtcbiAgICAgICAgdGhpcy5pbml0U3RvcmUoKTtcbiAgICAgICAgdGhpcy5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9Qb2ludGVyU3RvcmUoKTtcbiAgICAgICAgdGhpcy5saXN0ZW5Ub01hcENsaWNrKCk7XG4gICAgICB9KTtcblxuICAgIC8vIFRvIGhhbmRsZSBjb250ZXh0IGNoYW5nZSB3aXRob3V0IHVzaW5nIHRoZSBjb250ZXh0U2VydmljZS5cbiAgICB0aGlzLmxheWVycyQkID0gdGhpcy5tYXAubGF5ZXJzJC5zdWJzY3JpYmUoKGxheWVyczogTGF5ZXJbXSkgPT4ge1xuICAgICAgaWYgKHRoaXMuc3RvcmUgJiYgIWxheWVycy5maW5kKChsKSA9PiBsLmlkID09PSAnaG92ZXJGZWF0dXJlSWQnKSkge1xuICAgICAgICB0aGlzLmluaXRTdG9yZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHBvaW50ZXIgcG9zaXRpb24gc3RvcmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGluaXRTdG9yZSgpIHtcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMuc3RvcmU7XG5cbiAgICBjb25zdCBsYXllciA9IG5ldyBWZWN0b3JMYXllcih7XG4gICAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXG4gICAgICBpZDogJ2hvdmVyRmVhdHVyZUlkJyxcbiAgICAgIHRpdGxlOiAnaG92ZXJGZWF0dXJlJyxcbiAgICAgIHpJbmRleDogOTAwLFxuICAgICAgc291cmNlOiBuZXcgRmVhdHVyZURhdGFTb3VyY2UoKSxcbiAgICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXG4gICAgICBleHBvcnRhYmxlOiBmYWxzZSxcbiAgICAgIGJyb3dzYWJsZTogZmFsc2UsXG4gICAgICBzdHlsZTogaG92ZXJGZWF0dXJlTWFya2VyU3R5bGVcbiAgICB9KTtcbiAgICB0cnlCaW5kU3RvcmVMYXllcihzdG9yZSwgbGF5ZXIpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25MYXllciA9IG5ldyBvbExheWVyVmVjdG9yVGlsZSh7XG4gICAgICBtYXA6IHRoaXMubWFwLm9sLFxuICAgICAgekluZGV4OiA5MDEsXG4gICAgICByZW5kZXJNb2RlOiAndmVjdG9yJyxcbiAgICAgIGRlY2x1dHRlcjogdHJ1ZSxcbiAgICAgIHNvdXJjZTogbmV3IG9sVmVjdG9yVGlsZVNvdXJjZSh7IHByb2plY3Rpb246IHRoaXMubWFwLnByb2plY3Rpb24gfSksXG4gICAgICBzdHlsZTogKGZlYXR1cmUsIHJlc29sdXRpb24pID0+IHtcbiAgICAgICAgaWYgKHRoaXMubXZ0U3R5bGVPcHRpb25zICYmIGZlYXR1cmUuZ2V0SWQoKSBpbiB0aGlzLnNlbGVjdGlvbk1WVCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUhvdmVyU3R5bGUoXG4gICAgICAgICAgICBmZWF0dXJlLFxuICAgICAgICAgICAgdGhpcy5tdnRTdHlsZU9wdGlvbnMsXG4gICAgICAgICAgICByZXNvbHV0aW9uXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlSG92ZXJTdHlsZShcbiAgICBmZWF0dXJlOiBSZW5kZXJGZWF0dXJlIHwgT2xGZWF0dXJlPE9sR2VvbWV0cnk+LFxuICAgIGhvdmVyU3R5bGU6IFN0eWxlQnlBdHRyaWJ1dGUsXG4gICAgcmVzb2x1dGlvbjogbnVtYmVyXG4gICkge1xuICAgIGNvbnN0IGxvY2FsSG92ZXJTdHlsZSA9IHsgLi4uaG92ZXJTdHlsZSB9O1xuICAgIGxldCBsYWJlbCA9IGhvdmVyU3R5bGUubGFiZWwgPyBob3ZlclN0eWxlLmxhYmVsLmF0dHJpYnV0ZSA6IHVuZGVmaW5lZDtcbiAgICBsZXQgaGFzTGFiZWxTdHlsZSA9IGhvdmVyU3R5bGUubGFiZWw/LnN0eWxlID8gdHJ1ZSA6IGZhbHNlO1xuXG4gICAgaWYgKCFmZWF0dXJlLmdldCgnX2lzTGFiZWwnKSkge1xuICAgICAgbG9jYWxIb3ZlclN0eWxlLmxhYmVsID0gdW5kZWZpbmVkO1xuICAgICAgaGFzTGFiZWxTdHlsZSA9IGZhbHNlO1xuICAgICAgbGFiZWwgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNsZWFyIHRoZSBzdHlsZSBmb3IgbGFiZWwuLi4uXG4gICAgICBjb25zdCBzaXplID0gbG9jYWxIb3ZlclN0eWxlLmRhdGEgPyBsb2NhbEhvdmVyU3R5bGUuZGF0YS5sZW5ndGggOiAwO1xuICAgICAgY29uc3QgcmFkaXVzID0gW107XG4gICAgICBjb25zdCBzdHJva2UgPSBbXTtcbiAgICAgIGNvbnN0IHdpZHRoID0gW107XG4gICAgICBjb25zdCBmaWxsID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICByYWRpdXMucHVzaCgwKTtcbiAgICAgICAgc3Ryb2tlLnB1c2goJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKTtcbiAgICAgICAgd2lkdGgucHVzaCgwKTtcbiAgICAgICAgZmlsbC5wdXNoKCdyZ2JhKDI1NSwgMjU1LCAyNTUsIDApJyk7XG4gICAgICB9XG4gICAgICBsb2NhbEhvdmVyU3R5bGUucmFkaXVzID0gcmFkaXVzO1xuICAgICAgbG9jYWxIb3ZlclN0eWxlLnN0cm9rZSA9IHN0cm9rZTtcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS53aWR0aCA9IHdpZHRoO1xuICAgICAgbG9jYWxIb3ZlclN0eWxlLmZpbGwgPSBmaWxsO1xuICAgIH1cbiAgICBpZiAoIWhhc0xhYmVsU3R5bGUgJiYgbGFiZWwpIHtcbiAgICAgIGxvY2FsSG92ZXJTdHlsZS5sYWJlbC5zdHlsZSA9IHtcbiAgICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgICAgIHRleHRCYXNlbGluZTogJ3RvcCcsXG4gICAgICAgIGZvbnQ6ICcxMnB4IENhbGlicmksc2Fucy1zZXJpZicsXG4gICAgICAgIGZpbGw6IHsgY29sb3I6ICcjMDAwJyB9LFxuICAgICAgICBiYWNrZ3JvdW5kRmlsbDogeyBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC41KScgfSxcbiAgICAgICAgYmFja2dyb3VuZFN0cm9rZTogeyBjb2xvcjogJ3JnYmEoMjAwLCAyMDAsIDIwMCwgMC43NSknLCB3aWR0aDogMiB9LFxuICAgICAgICBzdHJva2U6IHsgY29sb3I6ICcjZmZmJywgd2lkdGg6IDMgfSxcbiAgICAgICAgb3ZlcmZsb3c6IHRydWUsXG4gICAgICAgIG9mZnNldFg6IDEwLFxuICAgICAgICBvZmZzZXRZOiAyMCxcbiAgICAgICAgcGFkZGluZzogWzIuNSwgMi41LCAyLjUsIDIuNV1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0eWxlU2VydmljZS5jcmVhdGVTdHlsZUJ5QXR0cmlidXRlKFxuICAgICAgZmVhdHVyZSxcbiAgICAgIGxvY2FsSG92ZXJTdHlsZSxcbiAgICAgIHJlc29sdXRpb25cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlIGFuZCByZXZlcnNlIHNlYXJjaCByZXN1bHRzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCk7XG4gICAgdGhpcy51bmxpc3RlblRvTWFwU2luZ2xlQ2xpY2soKTtcbiAgICB0aGlzLmxheWVycyQkLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHBvaW50ZXJtb3ZlIHJlc3VsdCBzdG9yZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHN1YnNjcmliZVRvUG9pbnRlclN0b3JlKCkge1xuICAgIHRoaXMuc3RvcmUkJCA9IHRoaXMucG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlLmVudGl0aWVzJC5zdWJzY3JpYmUoXG4gICAgICAocmVzdWx0c1VuZGVyUG9pbnRlclBvc2l0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMuYWRkRmVhdHVyZU92ZXJsYXkocmVzdWx0c1VuZGVyUG9pbnRlclBvc2l0aW9uKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIG1hcCBwb2ludGVybW92ZVxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xuICAgIHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lciA9IHRoaXMubWFwLm9sLm9uKFxuICAgICAgJ3BvaW50ZXJtb3ZlJyxcbiAgICAgIChldmVudDogT2xNYXBCcm93c2VyRXZlbnQ8YW55PikgPT4gdGhpcy5vbk1hcEV2ZW50KGV2ZW50KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogT24gbWFwIHNpbmdsZWNsaWNrXG4gICAqL1xuICBwcml2YXRlIGxpc3RlblRvTWFwQ2xpY2soKSB7XG4gICAgdGhpcy5zaW5nbGVDbGlja01hcExpc3RlbmVyID0gdGhpcy5tYXAub2wub24oJ3NpbmdsZWNsaWNrJywgKCkgPT5cbiAgICAgIHRoaXMub25NYXBTaW5nbGVDbGlja0V2ZW50KClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc3Vic2NyaWJlIHRvIHBvaW50ZXIgc3RvcmUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdW5zdWJzY3JpYmVUb1BvaW50ZXJTdG9yZSgpIHtcbiAgICB0aGlzLnN0b3JlJCQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGxpc3RlbmluZyBmb3IgbWFwIHBvaW50ZXJtb3ZlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB1bmxpc3RlblRvTWFwUG9pbnRlck1vdmUoKSB7XG4gICAgdW5CeUtleSh0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIpO1xuICAgIHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGxpc3RlbmluZyBmb3IgbWFwIHNpbmdsZWNsaWNrXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSB1bmxpc3RlblRvTWFwU2luZ2xlQ2xpY2soKSB7XG4gICAgdW5CeUtleSh0aGlzLnNpbmdsZUNsaWNrTWFwTGlzdGVuZXIpO1xuICAgIHRoaXMuc2luZ2xlQ2xpY2tNYXBMaXN0ZW5lciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIGNsZWFyIGxheWVyIG9uIHNpbmdsZWNsaWNrLlxuICAgKiBAcGFyYW0gZXZlbnQgT0wgbWFwIGJyb3dzZXIgc2luZ2xlY2xpY2sgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25NYXBTaW5nbGVDbGlja0V2ZW50KCkge1xuICAgIHRoaXMuY2xlYXJMYXllcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXIgaG92ZXIgd2hlbiB0aGUgbW91c2UgaXMgbW90aW9ubGVzcyBkdXJpbmcgdGhlIGRlZmluZWQgZGVsYXkgKHBvaW50ZXJNb3ZlRGVsYXkpLlxuICAgKiBAcGFyYW0gZXZlbnQgT0wgbWFwIGJyb3dzZXIgcG9pbnRlciBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBvbk1hcEV2ZW50KGV2ZW50OiBPbE1hcEJyb3dzZXJFdmVudDxhbnk+KSB7XG4gICAgaWYgKFxuICAgICAgZXZlbnQuZHJhZ2dpbmcgfHxcbiAgICAgICF0aGlzLmlnb0hvdmVyRmVhdHVyZUVuYWJsZWQgfHxcbiAgICAgIHRoaXMubWVkaWFTZXJ2aWNlLmlzVG91Y2hTY3JlZW4oKVxuICAgICkge1xuICAgICAgdGhpcy5jbGVhckxheWVyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdGhpcy5sYXN0VGltZW91dFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBjYW5jZWwgdGltZW91dCB3aGVuIHRoZSBtb3VzZSBtb3Zlc1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0KTtcbiAgICB9XG4gICAgbGV0IG1heGltdW1aaW5kZXggPSAtSW5maW5pdHk7XG4gICAgbGV0IHRvcE1vc3RPbExheWVyO1xuICAgIGNvbnN0IHBpeGVsID0gdGhpcy5tYXAub2wuZ2V0UGl4ZWxGcm9tQ29vcmRpbmF0ZShldmVudC5jb29yZGluYXRlKTtcbiAgICB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gcmV0cmlldmUgdGhlIHRvcG1vc3QgbGF5ZXIgd2l0aCBmZWF0dXJlIHRvIG9ubHkgYXBwbHkgdGhlIGhvdmVyIG9uIHRoaXMgbGF5ZXIuXG4gICAgICB0aGlzLm1hcC5vbC5mb3JFYWNoRmVhdHVyZUF0UGl4ZWwoXG4gICAgICAgIHBpeGVsLFxuICAgICAgICAobWFwRmVhdHVyZTogUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiwgbGF5ZXJPTDogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKCFsYXllck9MKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGlnb0xheWVyID0gdGhpcy5tYXAuZ2V0TGF5ZXJCeU9sVUlkKChsYXllck9MIGFzIGFueSkub2xfdWlkKTtcbiAgICAgICAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0hvdmVyKGlnb0xheWVyIGFzIGFueSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGlnb0xheWVyLnpJbmRleCA8PSBtYXhpbXVtWmluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIG1heGltdW1aaW5kZXggPSBpZ29MYXllci56SW5kZXg7XG4gICAgICAgICAgdG9wTW9zdE9sTGF5ZXIgPSBsYXllck9MO1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaGl0VG9sZXJhbmNlOiAxMCxcbiAgICAgICAgICBsYXllckZpbHRlcjogKG9sTGF5ZXIpID0+XG4gICAgICAgICAgICBvbExheWVyIGluc3RhbmNlb2Ygb2xMYXllclZlY3RvciB8fFxuICAgICAgICAgICAgb2xMYXllciBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3JUaWxlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICBpZiAoIXRvcE1vc3RPbExheWVyKSB7XG4gICAgICAgIC8vIFRvIGNsZWFyIGxhYmVsXG4gICAgICAgIHRoaXMuY2xlYXJMYXllcigpO1xuICAgICAgICB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5jbGVhcigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubWFwLm9sLmZvckVhY2hGZWF0dXJlQXRQaXhlbChcbiAgICAgICAgcGl4ZWwsXG4gICAgICAgIChtYXBGZWF0dXJlOiBSZW5kZXJGZWF0dXJlIHwgT2xGZWF0dXJlPE9sR2VvbWV0cnk+LCBsYXllck9MOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBUbyBhdm9pZCBmbGFzaGluZyBmZWF0dXJlXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbWFwRmVhdHVyZS5nZXQoJ2hvdmVyU3VtbWFyeScpID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIG1hcEZlYXR1cmUuZ2V0UHJvcGVydGllcygpICE9PVxuICAgICAgICAgICAgICB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5hbGwoKVswXT8uZ2V0UHJvcGVydGllcygpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyTGF5ZXIoKTtcbiAgICAgICAgICAgIGlmIChsYXllck9MIGluc3RhbmNlb2Ygb2xMYXllclZlY3Rvcikge1xuICAgICAgICAgICAgICBjb25zdCBteUxheWVyVmVjdG9yID0gdGhpcy5tYXAuZ2V0TGF5ZXJCeU9sVUlkKFxuICAgICAgICAgICAgICAgIChsYXllck9MIGFzIGFueSkub2xfdWlkXG4gICAgICAgICAgICAgICkgYXMgVmVjdG9yTGF5ZXI7XG4gICAgICAgICAgICAgIGlmICghdGhpcy5jYW5Qcm9jZXNzSG92ZXIobXlMYXllclZlY3RvcikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgbG9jYWxPbEZlYXR1cmUgPSB0aGlzLmhhbmRsZVJlbmRlckZlYXR1cmUobWFwRmVhdHVyZSk7XG4gICAgICAgICAgICAgIHRoaXMuc2V0TGF5ZXJTdHlsZUZyb21PcHRpb25zKG15TGF5ZXJWZWN0b3IsIGxvY2FsT2xGZWF0dXJlKTtcbiAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZXNUb0xvYWQgPSBbbG9jYWxPbEZlYXR1cmVdO1xuICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5zZXQoJ19pc0xhYmVsJywgZmFsc2UpO1xuICAgICAgICAgICAgICBjb25zdCBteUxhYmVsT2xGZWF0dXJlID0gbmV3IE9sRmVhdHVyZSgpO1xuICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldFByb3BlcnRpZXMobG9jYWxPbEZlYXR1cmUuZ2V0UHJvcGVydGllcygpKTtcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWxHZW9tID1cbiAgICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKSA9PT0gJ1BvaW50J1xuICAgICAgICAgICAgICAgICAgPyBsb2NhbE9sRmVhdHVyZS5nZXRHZW9tZXRyeSgpXG4gICAgICAgICAgICAgICAgICA6IG5ldyBPbEdlb20uUG9pbnQoZXZlbnQuY29vcmRpbmF0ZSk7XG4gICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0R2VvbWV0cnkobGFiZWxHZW9tKTtcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXRJZChsb2NhbE9sRmVhdHVyZS5nZXRJZCgpKTtcbiAgICAgICAgICAgICAgbXlMYWJlbE9sRmVhdHVyZS5zZXQoJ19pc0xhYmVsJywgdHJ1ZSk7XG4gICAgICAgICAgICAgIHRoaXMuc2V0TGF5ZXJTdHlsZUZyb21PcHRpb25zKG15TGF5ZXJWZWN0b3IsIG15TGFiZWxPbEZlYXR1cmUpO1xuICAgICAgICAgICAgICBmZWF0dXJlc1RvTG9hZC5wdXNoKG15TGFiZWxPbEZlYXR1cmUpO1xuICAgICAgICAgICAgICB0aGlzLnBvaW50ZXJIb3ZlckZlYXR1cmVTdG9yZS5sb2FkKGZlYXR1cmVzVG9Mb2FkKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGF5ZXJPTCBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3JUaWxlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG15TGF5ZXJWZWN0b3JUaWxlID0gdGhpcy5tYXAuZ2V0TGF5ZXJCeU9sVUlkKFxuICAgICAgICAgICAgICAgIChsYXllck9MIGFzIGFueSkub2xfdWlkXG4gICAgICAgICAgICAgICkgYXMgVmVjdG9yVGlsZUxheWVyO1xuICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FuUHJvY2Vzc0hvdmVyKG15TGF5ZXJWZWN0b3JUaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbXlMYXllclZlY3RvclRpbGU/Lm9wdGlvbnM/Lmlnb1N0eWxlPy5zdHlsZUJ5QXR0cmlidXRlXG4gICAgICAgICAgICAgICAgICA/LmhvdmVyU3R5bGVcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tdnRTdHlsZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgbXlMYXllclZlY3RvclRpbGUub3B0aW9ucy5pZ29TdHlsZS5zdHlsZUJ5QXR0cmlidXRlLmhvdmVyU3R5bGU7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAobXlMYXllclZlY3RvclRpbGU/Lm9wdGlvbnM/Lmlnb1N0eWxlPy5ob3ZlclN0eWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tdnRTdHlsZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgbXlMYXllclZlY3RvclRpbGUub3B0aW9ucy5pZ29TdHlsZS5ob3ZlclN0eWxlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTGF5ZXIuc2V0U291cmNlKGxheWVyT0wuZ2V0U291cmNlKCkpO1xuICAgICAgICAgICAgICBsYXllck9MXG4gICAgICAgICAgICAgICAgLmdldEZlYXR1cmVzKGV2ZW50LnBpeGVsKVxuICAgICAgICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgICAgICAgKG12dEZlYXR1cmVzOiAoUmVuZGVyRmVhdHVyZSB8IE9sRmVhdHVyZTxPbEdlb21ldHJ5PilbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW12dEZlYXR1cmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTVZUID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MYXllci5jaGFuZ2VkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckxheWVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmUgPSBtdnRGZWF0dXJlc1swXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFmZWF0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckxheWVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsT2xGZWF0dXJlID0gdGhpcy5oYW5kbGVSZW5kZXJGZWF0dXJlKGZlYXR1cmUpO1xuICAgICAgICAgICAgICAgICAgICBsb2NhbE9sRmVhdHVyZS5zZXQoJ19pc0xhYmVsJywgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBteUxhYmVsT2xGZWF0dXJlID0gbmV3IE9sRmVhdHVyZSgpO1xuICAgICAgICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldFByb3BlcnRpZXMoXG4gICAgICAgICAgICAgICAgICAgICAgbG9jYWxPbEZlYXR1cmUuZ2V0UHJvcGVydGllcygpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsR2VvbSA9XG4gICAgICAgICAgICAgICAgICAgICAgbG9jYWxPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKS5nZXRUeXBlKCkgPT09ICdQb2ludCdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gbG9jYWxPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBuZXcgT2xHZW9tLlBvaW50KGV2ZW50LmNvb3JkaW5hdGUpO1xuICAgICAgICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlLnNldEdlb21ldHJ5KGxhYmVsR2VvbSk7XG4gICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0SWQobG9jYWxPbEZlYXR1cmUuZ2V0SWQoKSk7XG4gICAgICAgICAgICAgICAgICAgIG15TGFiZWxPbEZlYXR1cmUuc2V0KCdfaXNMYWJlbCcsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldExheWVyU3R5bGVGcm9tT3B0aW9ucyhcbiAgICAgICAgICAgICAgICAgICAgICBteUxheWVyVmVjdG9yVGlsZSxcbiAgICAgICAgICAgICAgICAgICAgICBteUxhYmVsT2xGZWF0dXJlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9pbnRlckhvdmVyRmVhdHVyZVN0b3JlLmxvYWQoW215TGFiZWxPbEZlYXR1cmVdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25NVlRbZmVhdHVyZS5nZXRJZCgpXSA9IGxvY2FsT2xGZWF0dXJlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkxheWVyLmNoYW5nZWQoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGhpdFRvbGVyYW5jZTogMTAsXG4gICAgICAgICAgbGF5ZXJGaWx0ZXI6IChvbExheWVyKSA9PiBvbExheWVyID09PSB0b3BNb3N0T2xMYXllclxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sIHRoaXMuaWdvSG92ZXJGZWF0dXJlRGVsYXkpO1xuICB9XG5cbiAgY2FuUHJvY2Vzc0hvdmVyKGlnb0xheWVyOiBWZWN0b3JMYXllciB8IFZlY3RvclRpbGVMYXllcik6IGJvb2xlYW4ge1xuICAgIGlmICghaWdvTGF5ZXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFpZ29MYXllci52aXNpYmxlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghaWdvTGF5ZXIub3B0aW9ucykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICFpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlPy5zdHlsZUJ5QXR0cmlidXRlICYmXG4gICAgICAhaWdvTGF5ZXIub3B0aW9ucy5pZ29TdHlsZT8uaG92ZXJTdHlsZVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGUgJiZcbiAgICAgICFpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlPy5zdHlsZUJ5QXR0cmlidXRlLmhvdmVyU3R5bGUgJiZcbiAgICAgICFpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlPy5ob3ZlclN0eWxlXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaGFuZGxlUmVuZGVyRmVhdHVyZShcbiAgICBmZWF0dXJlOiBSZW5kZXJGZWF0dXJlIHwgT2xGZWF0dXJlPE9sR2VvbWV0cnk+XG4gICk6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PiB7XG4gICAgbGV0IGxvY2FsRmVhdHVyZTogT2xGZWF0dXJlPE9sR2VvbWV0cnk+O1xuICAgIGlmIChmZWF0dXJlIGluc3RhbmNlb2YgUmVuZGVyRmVhdHVyZSkge1xuICAgICAgbG9jYWxGZWF0dXJlID0gbmV3IE9sRmVhdHVyZSh7XG4gICAgICAgIGdlb21ldHJ5OiB0aGlzLmdldEdlb21ldHJ5KGZlYXR1cmUpXG4gICAgICB9KTtcbiAgICAgIGxvY2FsRmVhdHVyZS5zZXRJZChmZWF0dXJlLmdldElkKCkpO1xuICAgIH0gZWxzZSBpZiAoZmVhdHVyZSBpbnN0YW5jZW9mIE9sRmVhdHVyZSkge1xuICAgICAgbG9jYWxGZWF0dXJlID0gZmVhdHVyZTtcbiAgICB9XG4gICAgbG9jYWxGZWF0dXJlLnNldFByb3BlcnRpZXMoZmVhdHVyZS5nZXRQcm9wZXJ0aWVzKCkpO1xuICAgIHJldHVybiBsb2NhbEZlYXR1cmU7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgZmVhdHVyZSB0byB0aGUgcG9pbnRlciBzdG9yZVxuICAgKiBAcGFyYW0gdGV4dCBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgYWRkRmVhdHVyZU92ZXJsYXkoaG92ZXJFbnRpdHk6IE9sRmVhdHVyZTxPbEdlb21ldHJ5PltdKSB7XG4gICAgaWYgKGhvdmVyRW50aXR5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGhvdmVyRW50aXR5WzBdO1xuICAgICAgdGhpcy5jbGVhckxheWVyKCk7XG4gICAgICBjb25zdCBmZWF0dXJlID0gbmV3IE9sRmVhdHVyZSh7XG4gICAgICAgIGdlb21ldHJ5OiByZXN1bHQuZ2V0R2VvbWV0cnkoKSxcbiAgICAgICAgbWV0YTogeyBpZDogdGhpcy5ob3ZlckZlYXR1cmVJZCB9LFxuICAgICAgICBob3ZlclN1bW1hcnk6IHRoaXMuZ2V0SG92ZXJTdW1tYXJ5KHJlc3VsdC5nZXRQcm9wZXJ0aWVzKCkpXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zdG9yZS5zZXRMYXllck9sRmVhdHVyZXMoW2ZlYXR1cmVdLCBGZWF0dXJlTW90aW9uLk5vbmUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0TGF5ZXJTdHlsZUZyb21PcHRpb25zKFxuICAgIGlnb0xheWVyOiBWZWN0b3JMYXllciB8IFZlY3RvclRpbGVMYXllcixcbiAgICBmZWF0dXJlOiBPbEZlYXR1cmU8T2xHZW9tZXRyeT5cbiAgKSB7XG4gICAgY29uc3QgcmVzb2x1dGlvbiA9IHRoaXMuc3RvcmUubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLmdldFJlc29sdXRpb24oKTtcbiAgICBpZiAoaWdvTGF5ZXI/Lm9wdGlvbnM/Lmlnb1N0eWxlPy5zdHlsZUJ5QXR0cmlidXRlPy5ob3ZlclN0eWxlKSB7XG4gICAgICB0aGlzLnN0b3JlLmxheWVyLm9sLnNldFN0eWxlKFxuICAgICAgICB0aGlzLmNyZWF0ZUhvdmVyU3R5bGUoXG4gICAgICAgICAgZmVhdHVyZSxcbiAgICAgICAgICBpZ29MYXllci5vcHRpb25zLmlnb1N0eWxlLnN0eWxlQnlBdHRyaWJ1dGUuaG92ZXJTdHlsZSxcbiAgICAgICAgICByZXNvbHV0aW9uXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpZ29MYXllcj8ub3B0aW9ucz8uaWdvU3R5bGU/LmhvdmVyU3R5bGUpIHtcbiAgICAgIHRoaXMuc3RvcmUubGF5ZXIub2wuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuY3JlYXRlSG92ZXJTdHlsZShcbiAgICAgICAgICBmZWF0dXJlLFxuICAgICAgICAgIGlnb0xheWVyLm9wdGlvbnMuaWdvU3R5bGUuaG92ZXJTdHlsZSxcbiAgICAgICAgICByZXNvbHV0aW9uXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRIb3ZlclN1bW1hcnkocHJvcGVydGllcyk6IHN0cmluZyB7XG4gICAgbGV0IHN1bW1hcnkgPSAnJztcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSkge1xuICAgICAgaWYgKCFrZXkuc3RhcnRzV2l0aCgnXycpICYmIGtleSAhPT0gJ2dlb21ldHJ5Jykge1xuICAgICAgICBzdW1tYXJ5ICs9IGAke2tleX06ICR7dmFsdWV9YCArICdcXG4nO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3VtbWFyeS5sZW5ndGggPj0gMiA/IHN1bW1hcnkuc2xpY2UoMCwgLTIpIDogc3VtbWFyeTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0R2VvbWV0cnkoZmVhdHVyZSk6IE9sR2VvbS5HZW9tZXRyeSB7XG4gICAgbGV0IGdlb207XG4gICAgaWYgKCFmZWF0dXJlLmdldE9yaWVudGVkRmxhdENvb3JkaW5hdGVzKSB7XG4gICAgICBnZW9tID0gZmVhdHVyZS5nZXRHZW9tZXRyeSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb29yZHMgPSBmZWF0dXJlLmdldE9yaWVudGVkRmxhdENvb3JkaW5hdGVzKCk7XG4gICAgICBjb25zdCBmbGF0Q29vcmRzID0gW107XG5cbiAgICAgIGNvb3Jkcy5mb3JFYWNoKChjLCBpZHgpID0+IHtcbiAgICAgICAgaWYgKGlkeCAlIDIgPT09IDApIHtcbiAgICAgICAgICBmbGF0Q29vcmRzLnB1c2goW1xuICAgICAgICAgICAgcGFyc2VGbG9hdChjb29yZHNbaWR4XSksXG4gICAgICAgICAgICBwYXJzZUZsb2F0KGNvb3Jkc1tpZHggKyAxXSlcbiAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIFRPRE86IHRlc3QgTXVsdGlYXG4gICAgICBzd2l0Y2ggKGZlYXR1cmUuZ2V0VHlwZSgpKSB7XG4gICAgICAgIGNhc2UgJ1BvaW50JzpcbiAgICAgICAgICBnZW9tID0gbmV3IE9sR2VvbS5Qb2ludChmbGF0Q29vcmRzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUG9seWdvbic6XG4gICAgICAgICAgZ2VvbSA9IG5ldyBPbEdlb20uUG9seWdvbihbZmxhdENvb3Jkc10pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdMaW5lU3RyaW5nJzpcbiAgICAgICAgICBnZW9tID0gbmV3IE9sR2VvbS5MaW5lU3RyaW5nKFtmbGF0Q29vcmRzXSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGdlb207XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIHBvaW50ZXIgc3RvcmUgZmVhdHVyZXNcbiAgICovXG4gIHByaXZhdGUgY2xlYXJMYXllcigpIHtcbiAgICB0aGlzLnNlbGVjdGlvbk1WVCA9IHt9O1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbkxheWVyKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkxheWVyLmNoYW5nZWQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RvcmUpIHtcbiAgICAgIHRoaXMuc3RvcmUuY2xlYXJMYXllcigpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -45,7 +45,7 @@ export function getRootParentByProperty(map, layer, property) {
45
45
  export function getDirectParentLayerByProperty(map, layer, property) {
46
46
  if (layer?.options.linkedLayers?.linkId) {
47
47
  const currentLinkId = layer.options.linkedLayers.linkId;
48
- let parents = map.layers.filter((pl) => {
48
+ const parents = map.layers.filter((pl) => {
49
49
  const linkedLayers = pl.options.linkedLayers;
50
50
  if (linkedLayers && linkedLayers.links) {
51
51
  const a = linkedLayers.links.find((l) => l.linkedIds.includes(currentLinkId) &&
@@ -72,7 +72,7 @@ export function getDirectChildLayersByProperty(map, layer, property) {
72
72
  return linkedIds.map((lid) => getIgoLayerByLinkId(map, lid));
73
73
  }
74
74
  export function getAllChildLayersByProperty(map, layer, knownChildLayers, property) {
75
- let childLayers = getDirectChildLayersByProperty(map, layer, property);
75
+ const childLayers = getDirectChildLayersByProperty(map, layer, property);
76
76
  childLayers.map((cl) => {
77
77
  knownChildLayers.push(cl);
78
78
  const directChildLayers = getDirectChildLayersByProperty(map, cl, property);
@@ -101,7 +101,7 @@ export function getRootParentByDeletion(map, layer) {
101
101
  export function getDirectParentLayerByDeletion(map, layer) {
102
102
  if (layer.options.linkedLayers?.linkId) {
103
103
  const currentLinkId = layer.options.linkedLayers.linkId;
104
- let parents = map.layers.filter((pl) => {
104
+ const parents = map.layers.filter((pl) => {
105
105
  const linkedLayers = pl.options.linkedLayers;
106
106
  if (linkedLayers && linkedLayers.links) {
107
107
  const a = linkedLayers.links.find((l) => l.linkedIds.includes(currentLinkId) && l.syncedDelete);
@@ -127,7 +127,7 @@ export function getDirectChildLayersByDeletion(map, layer) {
127
127
  return linkedIds.map((lid) => getIgoLayerByLinkId(map, lid));
128
128
  }
129
129
  export function getAllChildLayersByDeletion(map, layer, knownChildLayers) {
130
- let childLayers = getDirectChildLayersByDeletion(map, layer);
130
+ const childLayers = getDirectChildLayersByDeletion(map, layer);
131
131
  childLayers.map((cl) => {
132
132
  knownChildLayers.push(cl);
133
133
  const directChildLayers = getDirectChildLayersByDeletion(map, cl);
@@ -245,4 +245,4 @@ export function handleLayerPropertyChange(map, propertyChange, initiatorIgoLayer
245
245
  }
246
246
  }
247
247
  }
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkTGF5ZXJzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9saW5rZWRMYXllcnMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU1qQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS2pFLE9BQU8sRUFBUyxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3BFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFZO0lBQ2pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFZLEVBQUUsRUFBVTtJQUMxRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsS0FBWSxFQUNaLFFBQTBCO0lBRTFCLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELElBQUksY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDM0MsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQ2hDLENBQUM7UUFDRixtQkFBbUIs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SSxDQUFDO3dCQUNuQixDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLDRCQUE0QixFQUFFLENBQUM7WUFDakMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdEV2ZW50IH0gZnJvbSAnb2wvT2JqZWN0JztcbmltcG9ydCBvbFNvdXJjZUltYWdlV01TIGZyb20gJ29sL3NvdXJjZS9JbWFnZVdNUyc7XG5pbXBvcnQgeyBnZXRVaWQgfSBmcm9tICdvbC91dGlsJztcblxuaW1wb3J0IHtcbiAgVGltZUZpbHRlcmFibGVEYXRhU291cmNlLFxuICBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXG59IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzJztcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93bXMtZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJXcml0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXInO1xuaW1wb3J0IHtcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xufSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IExheWVyLCBMaW5rZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycyc7XG5pbXBvcnQgdHlwZSB7IE1hcEJhc2UgfSBmcm9tICcuLi9zaGFyZWQvbWFwLmFic3RyYWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmtlZExheWVyc09wdGlvbnMobGF5ZXI6IExheWVyKSB7XG4gIHJldHVybiBsYXllci5vcHRpb25zLmxpbmtlZExheWVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElnb0xheWVyQnlMaW5rSWQobWFwOiBNYXBCYXNlLCBpZDogc3RyaW5nKSB7XG4gIHJldHVybiBtYXAubGF5ZXJzLmZpbmQoKGwpID0+IGwub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCA9PT0gaWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJIYXNMaW5rV2l0aFByb3BlcnR5KFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBib29sZWFuIHtcbiAgbGV0IGhhc0xpbmtXaXRoUHJvcGVydHkgPSBmYWxzZTtcbiAgY29uc3QgbGF5ZXJMTE9wdGlvbnMgPSBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyKTtcbiAgaWYgKGxheWVyTExPcHRpb25zPy5saW5rcykge1xuICAgIGNvbnN0IGxpbmsgPSBsYXllckxMT3B0aW9ucy5saW5rcy5maW5kKChsKSA9PlxuICAgICAgbC5wcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KVxuICAgICk7XG4gICAgaGFzTGlua1dpdGhQcm9wZXJ0eSA9IGxpbmsgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGhhc0xpbmtXaXRoUHJvcGVydHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXllckhhc0xpbmtEZWxldGlvbihsYXllcjogTGF5ZXIpOiBib29sZWFuIHtcbiAgbGV0IGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlID0gZmFsc2U7XG4gIGNvbnN0IGxheWVyTExPcHRpb25zID0gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhsYXllcik7XG4gIGlmIChsYXllckxMT3B0aW9ucz8ubGlua3MpIHtcbiAgICBjb25zdCBsaW5rID0gbGF5ZXJMTE9wdGlvbnMubGlua3MuZmluZCgobCkgPT4gbC5zeW5jZWREZWxldGUpO1xuICAgIGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlID0gbGluayA/IHRydWUgOiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaGFzTGlua1dpdGhTeW5jZWREZWxldGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290UGFyZW50QnlQcm9wZXJ0eShcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllciB7XG4gIGxldCBsYXllclRvVXNlID0gbGF5ZXI7XG4gIGxldCBwYXJlbnRMYXllciA9IGxheWVyVG9Vc2U7XG4gIGxldCBoYXNQYXJlbnRMYXllciA9IHRydWU7XG4gIHdoaWxlIChoYXNQYXJlbnRMYXllcikge1xuICAgIGxheWVyVG9Vc2UgPSBwYXJlbnRMYXllcjtcbiAgICBwYXJlbnRMYXllciA9IGdldERpcmVjdFBhcmVudExheWVyQnlQcm9wZXJ0eShtYXAsIGxheWVyVG9Vc2UsIHByb3BlcnR5KTtcbiAgICBoYXNQYXJlbnRMYXllciA9IHBhcmVudExheWVyID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG4gIGlmICghaGFzUGFyZW50TGF5ZXIpIHtcbiAgICBpZiAoIWxheWVySGFzTGlua1dpdGhQcm9wZXJ0eShsYXllclRvVXNlLCBwcm9wZXJ0eSkpIHtcbiAgICAgIGxheWVyVG9Vc2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBoYXNQYXJlbnRMYXllciA/IHBhcmVudExheWVyIDogbGF5ZXJUb1VzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdFBhcmVudExheWVyQnlQcm9wZXJ0eShcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllciB7XG4gIGlmIChsYXllcj8ub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCkge1xuICAgIGNvbnN0IGN1cnJlbnRMaW5rSWQgPSBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWQ7XG4gICAgbGV0IHBhcmVudHMgPSBtYXAubGF5ZXJzLmZpbHRlcigocGwpID0+IHtcbiAgICAgIGNvbnN0IGxpbmtlZExheWVycyA9IHBsLm9wdGlvbnMubGlua2VkTGF5ZXJzO1xuICAgICAgaWYgKGxpbmtlZExheWVycyAmJiBsaW5rZWRMYXllcnMubGlua3MpIHtcbiAgICAgICAgY29uc3QgYSA9IGxpbmtlZExheWVycy5saW5rcy5maW5kKFxuICAgICAgICAgIChsKSA9PlxuICAgICAgICAgICAgbC5saW5rZWRJZHMuaW5jbHVkZXMoY3VycmVudExpbmtJZCkgJiZcbiAgICAgICAgICAgIGwucHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSlcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHBhcmVudHMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc29sZS53YXJuKGBZb3VyIGxheWVyICR7XG4gICAgICAgIGxheWVyLnRpdGxlIHx8IGxheWVyLmlkXG4gICAgICB9IG11c3Qgb25seSBoYXZlIDEgcGFyZW50ICgke3BhcmVudHMubWFwKChwKSA9PiBwLnRpdGxlIHx8IHAuaWQpfSlcbiAgICAgICAgICAgICwgVGhlIGZpcnN0IHBhcmVudCAoJHtcbiAgICAgICAgICAgICAgcGFyZW50c1swXS50aXRsZSB8fCBwYXJlbnRzWzBdLmlkXG4gICAgICAgICAgICB9KSB3aWxsIGJlIHVzZSB0byBzeW5jIHByb3BlcnRpZXNgKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHNbMF07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllcltdIHtcbiAgbGV0IGxpbmtlZElkcyA9IFtdO1xuICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xuICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzXG4gICAgICAuZmlsdGVyKChsKSA9PiBsLnByb3BlcnRpZXMuaW5jbHVkZXMocHJvcGVydHkpKVxuICAgICAgLm1hcCgobGluaykgPT4ge1xuICAgICAgICBsaW5rZWRJZHMgPSBsaW5rZWRJZHMuY29uY2F0KGxpbmsubGlua2VkSWRzKTtcbiAgICAgIH0pO1xuICB9XG4gIHJldHVybiBsaW5rZWRJZHMubWFwKChsaWQpID0+IGdldElnb0xheWVyQnlMaW5rSWQobWFwLCBsaWQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcjogTGF5ZXIsXG4gIGtub3duQ2hpbGRMYXllcnM6IExheWVyW10sXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllcltdIHtcbiAgbGV0IGNoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcCwgbGF5ZXIsIHByb3BlcnR5KTtcbiAgY2hpbGRMYXllcnMubWFwKChjbCkgPT4ge1xuICAgIGtub3duQ2hpbGRMYXllcnMucHVzaChjbCk7XG4gICAgY29uc3QgZGlyZWN0Q2hpbGRMYXllcnMgPSBnZXREaXJlY3RDaGlsZExheWVyc0J5UHJvcGVydHkobWFwLCBjbCwgcHJvcGVydHkpO1xuICAgIGlmIChkaXJlY3RDaGlsZExheWVycykge1xuICAgICAgZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcCwgY2wsIGtub3duQ2hpbGRMYXllcnMsIHByb3BlcnR5KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ga25vd25DaGlsZExheWVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJvb3RQYXJlbnRCeURlbGV0aW9uKG1hcDogTWFwQmFzZSwgbGF5ZXI6IExheWVyKTogTGF5ZXIge1xuICBsZXQgbGF5ZXJUb1VzZSA9IGxheWVyO1xuICBsZXQgcGFyZW50TGF5ZXIgPSBsYXllclRvVXNlO1xuICBsZXQgaGFzUGFyZW50TGF5ZXIgPSB0cnVlO1xuICB3aGlsZSAoaGFzUGFyZW50TGF5ZXIpIHtcbiAgICBsYXllclRvVXNlID0gcGFyZW50TGF5ZXI7XG4gICAgcGFyZW50TGF5ZXIgPSBnZXREaXJlY3RQYXJlbnRMYXllckJ5RGVsZXRpb24obWFwLCBsYXllclRvVXNlKTtcbiAgICBoYXNQYXJlbnRMYXllciA9IHBhcmVudExheWVyID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG4gIGlmICghaGFzUGFyZW50TGF5ZXIpIHtcbiAgICBpZiAoIWxheWVySGFzTGlua0RlbGV0aW9uKGxheWVyVG9Vc2UpKSB7XG4gICAgICBsYXllclRvVXNlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaGFzUGFyZW50TGF5ZXIgPyBwYXJlbnRMYXllciA6IGxheWVyVG9Vc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RQYXJlbnRMYXllckJ5RGVsZXRpb24oXG4gIG1hcDogTWFwQmFzZSxcbiAgbGF5ZXI6IExheWVyXG4pOiBMYXllciB7XG4gIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkKSB7XG4gICAgY29uc3QgY3VycmVudExpbmtJZCA9IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZDtcbiAgICBsZXQgcGFyZW50cyA9IG1hcC5sYXllcnMuZmlsdGVyKChwbCkgPT4ge1xuICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gcGwub3B0aW9ucy5saW5rZWRMYXllcnM7XG4gICAgICBpZiAobGlua2VkTGF5ZXJzICYmIGxpbmtlZExheWVycy5saW5rcykge1xuICAgICAgICBjb25zdCBhID0gbGlua2VkTGF5ZXJzLmxpbmtzLmZpbmQoXG4gICAgICAgICAgKGwpID0+IGwubGlua2VkSWRzLmluY2x1ZGVzKGN1cnJlbnRMaW5rSWQpICYmIGwuc3luY2VkRGVsZXRlXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChwYXJlbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihgWW91ciBsYXllciAke1xuICAgICAgICBsYXllci50aXRsZSB8fCBsYXllci5pZFxuICAgICAgfSBtdXN0IG9ubHkgaGF2ZSAxIHBhcmVudCAoJHtwYXJlbnRzLm1hcCgocCkgPT4gcC50aXRsZSB8fCBwLmlkKX0pXG4gICAgICAgICAgLCBUaGUgZmlyc3QgcGFyZW50ICgke1xuICAgICAgICAgICAgcGFyZW50c1swXS50aXRsZSB8fCBwYXJlbnRzWzBdLmlkXG4gICAgICAgICAgfSkgd2lsbCBiZSB1c2UgdG8gc3luYyBwcm9wZXJ0aWVzYCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRzWzBdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RDaGlsZExheWVyc0J5RGVsZXRpb24oXG4gIG1hcDogTWFwQmFzZSxcbiAgbGF5ZXI6IExheWVyXG4pOiBMYXllcltdIHtcbiAgbGV0IGxpbmtlZElkcyA9IFtdO1xuICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xuICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzXG4gICAgICAuZmlsdGVyKChsKSA9PiBsLnN5bmNlZERlbGV0ZSlcbiAgICAgIC5tYXAoKGxpbmspID0+IHtcbiAgICAgICAgbGlua2VkSWRzID0gbGlua2VkSWRzLmNvbmNhdChsaW5rLmxpbmtlZElkcyk7XG4gICAgICB9KTtcbiAgfVxuICByZXR1cm4gbGlua2VkSWRzLm1hcCgobGlkKSA9PiBnZXRJZ29MYXllckJ5TGlua0lkKG1hcCwgbGlkKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24oXG4gIG1hcDogTWFwQmFzZSxcbiAgbGF5ZXI6IExheWVyLFxuICBrbm93bkNoaWxkTGF5ZXJzOiBMYXllcltdXG4pOiBMYXllcltdIHtcbiAgbGV0IGNoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeURlbGV0aW9uKG1hcCwgbGF5ZXIpO1xuICBjaGlsZExheWVycy5tYXAoKGNsKSA9PiB7XG4gICAga25vd25DaGlsZExheWVycy5wdXNoKGNsKTtcbiAgICBjb25zdCBkaXJlY3RDaGlsZExheWVycyA9IGdldERpcmVjdENoaWxkTGF5ZXJzQnlEZWxldGlvbihtYXAsIGNsKTtcbiAgICBpZiAoZGlyZWN0Q2hpbGRMYXllcnMpIHtcbiAgICAgIGdldEFsbENoaWxkTGF5ZXJzQnlEZWxldGlvbihtYXAsIGNsLCBrbm93bkNoaWxkTGF5ZXJzKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ga25vd25DaGlsZExheWVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRMYXllclN5bmNGcm9tUm9vdFBhcmVudExheWVycyhcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcnM6IExheWVyW11cbikge1xuICBjb25zdCByb290TGF5ZXJzQnlQcm9wZXJ0eSA9IHt9O1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoTGlua2VkUHJvcGVydGllcyk7XG4gIGtleXMubWFwKChrKSA9PiB7XG4gICAgcm9vdExheWVyc0J5UHJvcGVydHlbTGlua2VkUHJvcGVydGllc1trXV0gPSBbXTtcbiAgfSk7XG4gIGxheWVyc1xuICAgIC5maWx0ZXIoKGwpID0+IGdldExpbmtlZExheWVyc09wdGlvbnMobCkpXG4gICAgLm1hcCgobCkgPT4ge1xuICAgICAga2V5cy5tYXAoKGtleSkgPT4ge1xuICAgICAgICBjb25zdCBrID0gTGlua2VkUHJvcGVydGllc1trZXldO1xuICAgICAgICBjb25zdCBwbGJwID0gZ2V0Um9vdFBhcmVudEJ5UHJvcGVydHkobWFwLCBsLCBrIGFzIExpbmtlZFByb3BlcnRpZXMpO1xuICAgICAgICBjb25zdCBsYXllcnMgPSByb290TGF5ZXJzQnlQcm9wZXJ0eVtrXTtcbiAgICAgICAgY29uc3QgbGF5ZXJzSWQgPSBsYXllcnMubWFwKChsKSA9PiBsLmlkKTtcbiAgICAgICAgaWYgKHBsYnAgJiYgIWxheWVyc0lkLmluY2x1ZGVzKHBsYnAuaWQpKSB7XG4gICAgICAgICAgcm9vdExheWVyc0J5UHJvcGVydHlba10ucHVzaChwbGJwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIE9iamVjdC5rZXlzKHJvb3RMYXllcnNCeVByb3BlcnR5KS5tYXAoKGspID0+IHtcbiAgICBjb25zdCBsYXllcnMgPSByb290TGF5ZXJzQnlQcm9wZXJ0eVtrXTtcbiAgICBsYXllcnMubWFwKChsOiBMYXllcikgPT4gbC5vbC5ub3RpZnkoaywgdW5kZWZpbmVkKSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlTGF5ZXJQcm9wZXJ0eUNoYW5nZShcbiAgbWFwOiBNYXBCYXNlLFxuICBwcm9wZXJ0eUNoYW5nZTogT2JqZWN0RXZlbnQsXG4gIGluaXRpYXRvcklnb0xheWVyOiBMYXllclxuKSB7XG4gIGlmICghcHJvcGVydHlDaGFuZ2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgb2djRmlsdGVyV3JpdGVyID0gbmV3IE9nY0ZpbHRlcldyaXRlcigpO1xuICBsZXQgaXNMYXllclByb3BlcnR5ID0gdHJ1ZTtcbiAgbGV0IGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gdHJ1ZTtcbiAgY29uc3Qga2V5ID0gcHJvcGVydHlDaGFuZ2Uua2V5O1xuICBsZXQgbmV3VmFsdWU7XG4gIGlmIChrZXkgPT09ICdvZ2NGaWx0ZXJzJykge1xuICAgIGlzTGF5ZXJQcm9wZXJ0eSA9IGZhbHNlO1xuICAgIGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gdHJ1ZTtcbiAgICBuZXdWYWx1ZSA9IChcbiAgICAgIGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcbiAgICApLm9nY0ZpbHRlcnM7XG4gIH0gZWxzZSBpZiAoa2V5ID09PSAndGltZUZpbHRlcicpIHtcbiAgICBpc0xheWVyUHJvcGVydHkgPSBmYWxzZTtcbiAgICBpc0RhdGFzb3VyY2VQcm9wZXJ0eSA9IHRydWU7XG4gICAgbmV3VmFsdWUgPSAoXG4gICAgICBpbml0aWF0b3JJZ29MYXllci5kYXRhU291cmNlLm9wdGlvbnMgYXMgVGltZUZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICAgICkudGltZUZpbHRlcjtcbiAgfSBlbHNlIHtcbiAgICBpc0xheWVyUHJvcGVydHkgPSB0cnVlO1xuICAgIGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gZmFsc2U7XG4gICAgbmV3VmFsdWUgPSBpbml0aWF0b3JJZ29MYXllci5vbC5nZXQoa2V5KTtcbiAgfVxuXG4gIGNvbnN0IGluaXRpYXRvckxpbmtlZExheWVyc09wdGlvbnMgPVxuICAgIGdldExpbmtlZExheWVyc09wdGlvbnMoaW5pdGlhdG9ySWdvTGF5ZXIpO1xuICBpZiAoaW5pdGlhdG9yTGlua2VkTGF5ZXJzT3B0aW9ucykge1xuICAgIGxldCByb290UGFyZW50QnlQcm9wZXJ0eSA9IGdldFJvb3RQYXJlbnRCeVByb3BlcnR5KFxuICAgICAgbWFwLFxuICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIsXG4gICAgICBrZXkgYXMgTGlua2VkUHJvcGVydGllc1xuICAgICk7XG4gICAgaWYgKCFyb290UGFyZW50QnlQcm9wZXJ0eSkge1xuICAgICAgcm9vdFBhcmVudEJ5UHJvcGVydHkgPSBpbml0aWF0b3JJZ29MYXllcjtcbiAgICB9XG5cbiAgICBjb25zdCBjbGJwID0gW3Jvb3RQYXJlbnRCeVByb3BlcnR5XTtcbiAgICBnZXRBbGxDaGlsZExheWVyc0J5UHJvcGVydHkoXG4gICAgICBtYXAsXG4gICAgICByb290UGFyZW50QnlQcm9wZXJ0eSxcbiAgICAgIGNsYnAsXG4gICAgICBrZXkgYXMgTGlua2VkUHJvcGVydGllc1xuICAgICk7XG5cbiAgICBsZXQgcmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGluaXRpYXRvcklnb0xheWVyU291cmNlVHlwZSA9XG4gICAgICBpbml0aWF0b3JJZ29MYXllci5vcHRpb25zLnNvdXJjZS5vcHRpb25zLnR5cGU7XG4gICAgY29uc3QgaW5pdGlhdG9ySWdvTGF5ZXJPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMgPSBpbml0aWF0b3JJZ29MYXllclxuICAgICAgLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnM7XG4gICAgY2xicC5tYXAoKGwpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIgJiZcbiAgICAgICAgbCAmJlxuICAgICAgICBnZXRVaWQoaW5pdGlhdG9ySWdvTGF5ZXIub2wpICE9PSBnZXRVaWQobD8ub2wpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgbExheWVyVHlwZSA9IGwub3B0aW9ucy5zb3VyY2Uub3B0aW9ucy50eXBlO1xuICAgICAgICBpZiAoaXNMYXllclByb3BlcnR5KSB7XG4gICAgICAgICAgbC5vbC5zZXQoa2V5LCBuZXdWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3Zpc2libGUnKSB7XG4gICAgICAgICAgICBsLnZpc2libGUkLm5leHQobmV3VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoa2V5ID09PSAnbWluUmVzb2x1dGlvbicgfHwga2V5ID09PSAnbWF4UmVzb2x1dGlvbicpIHtcbiAgICAgICAgICAgIHJlc29sdXRpb25Qcm9wZXJ0eUhhc0NoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpc0RhdGFzb3VyY2VQcm9wZXJ0eSkge1xuICAgICAgICAgIGlmIChrZXkgPT09ICdvZ2NGaWx0ZXJzJykge1xuICAgICAgICAgICAgKGwuZGF0YVNvdXJjZSBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZSkuc2V0T2djRmlsdGVycyhcbiAgICAgICAgICAgICAgbmV3VmFsdWUsXG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGxMYXllclR5cGUgPT09ICd3ZnMnKSB7XG4gICAgICAgICAgICAgIGwub2wuZ2V0U291cmNlKCkucmVmcmVzaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxMYXllclR5cGUgPT09ICd3bXMnKSB7XG4gICAgICAgICAgICAgIGxldCBhcHBsaWVkT2djRmlsdGVyO1xuICAgICAgICAgICAgICBpZiAoaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID09PSAnd2ZzJykge1xuICAgICAgICAgICAgICAgIGFwcGxpZWRPZ2NGaWx0ZXIgPSBvZ2NGaWx0ZXJXcml0ZXIuaGFuZGxlT2djRmlsdGVyc0FwcGxpZWRWYWx1ZShcbiAgICAgICAgICAgICAgICAgIGluaXRpYXRvcklnb0xheWVyT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgKGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBhbnkpXG4gICAgICAgICAgICAgICAgICAgIC5maWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIG1hcC52aWV3Q29udHJvbGxlci5nZXRPbFByb2plY3Rpb24oKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID09PSAnd21zJykge1xuICAgICAgICAgICAgICAgIGFwcGxpZWRPZ2NGaWx0ZXIgPSAoXG4gICAgICAgICAgICAgICAgICBpbml0aWF0b3JJZ29MYXllci5kYXRhU291cmNlIGFzIFdNU0RhdGFTb3VyY2VcbiAgICAgICAgICAgICAgICApLm9sLmdldFBhcmFtcygpLkZJTFRFUjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAobC5kYXRhU291cmNlIGFzIFdNU0RhdGFTb3VyY2UpLm9sLnVwZGF0ZVBhcmFtcyh7XG4gICAgICAgICAgICAgICAgRklMVEVSOiBhcHBsaWVkT2djRmlsdGVyXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBsLmRhdGFTb3VyY2UgaW5zdGFuY2VvZiBXTVNEYXRhU291cmNlICYmXG4gICAgICAgICAgICBrZXkgPT09ICd0aW1lRmlsdGVyJ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgKGwuZGF0YVNvdXJjZSBhcyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2UpLnNldFRpbWVGaWx0ZXIoXG4gICAgICAgICAgICAgIG5ld1ZhbHVlLFxuICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGFwcGxpZWRUaW1lRmlsdGVyID0gKFxuICAgICAgICAgICAgICBpbml0aWF0b3JJZ29MYXllci5vbC5nZXRTb3VyY2UoKSBhcyBvbFNvdXJjZUltYWdlV01TXG4gICAgICAgICAgICApLmdldFBhcmFtcygpLlRJTUU7XG4gICAgICAgICAgICBsLmRhdGFTb3VyY2Uub2wudXBkYXRlUGFyYW1zKHsgVElNRTogYXBwbGllZFRpbWVGaWx0ZXIgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKHJlc29sdXRpb25Qcm9wZXJ0eUhhc0NoYW5nZWQpIHtcbiAgICAgIG1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJC5uZXh0KG1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJC52YWx1ZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkTGF5ZXJzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9saW5rZWRMYXllcnMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU1qQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBS2pFLE9BQU8sRUFBUyxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3BFLE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxLQUFZO0lBQ2pELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFZLEVBQUUsRUFBVTtJQUMxRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsS0FBWSxFQUNaLFFBQTBCO0lBRTFCLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JELElBQUksY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDM0MsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQ2hDLENBQUM7UUFDRixtQkFBbUIs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SSxDQUFDO3dCQUNuQixDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLDRCQUE0QixFQUFFLENBQUM7WUFDakMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9iamVjdEV2ZW50IH0gZnJvbSAnb2wvT2JqZWN0JztcbmltcG9ydCBvbFNvdXJjZUltYWdlV01TIGZyb20gJ29sL3NvdXJjZS9JbWFnZVdNUyc7XG5pbXBvcnQgeyBnZXRVaWQgfSBmcm9tICdvbC91dGlsJztcblxuaW1wb3J0IHtcbiAgVGltZUZpbHRlcmFibGVEYXRhU291cmNlLFxuICBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXG59IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzJztcbmltcG9ydCB7IFdNU0RhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93bXMtZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJXcml0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXInO1xuaW1wb3J0IHtcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xufSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IExheWVyLCBMaW5rZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycyc7XG5pbXBvcnQgdHlwZSB7IE1hcEJhc2UgfSBmcm9tICcuLi9zaGFyZWQvbWFwLmFic3RyYWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmtlZExheWVyc09wdGlvbnMobGF5ZXI6IExheWVyKSB7XG4gIHJldHVybiBsYXllci5vcHRpb25zLmxpbmtlZExheWVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElnb0xheWVyQnlMaW5rSWQobWFwOiBNYXBCYXNlLCBpZDogc3RyaW5nKSB7XG4gIHJldHVybiBtYXAubGF5ZXJzLmZpbmQoKGwpID0+IGwub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCA9PT0gaWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJIYXNMaW5rV2l0aFByb3BlcnR5KFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBib29sZWFuIHtcbiAgbGV0IGhhc0xpbmtXaXRoUHJvcGVydHkgPSBmYWxzZTtcbiAgY29uc3QgbGF5ZXJMTE9wdGlvbnMgPSBnZXRMaW5rZWRMYXllcnNPcHRpb25zKGxheWVyKTtcbiAgaWYgKGxheWVyTExPcHRpb25zPy5saW5rcykge1xuICAgIGNvbnN0IGxpbmsgPSBsYXllckxMT3B0aW9ucy5saW5rcy5maW5kKChsKSA9PlxuICAgICAgbC5wcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KVxuICAgICk7XG4gICAgaGFzTGlua1dpdGhQcm9wZXJ0eSA9IGxpbmsgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGhhc0xpbmtXaXRoUHJvcGVydHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXllckhhc0xpbmtEZWxldGlvbihsYXllcjogTGF5ZXIpOiBib29sZWFuIHtcbiAgbGV0IGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlID0gZmFsc2U7XG4gIGNvbnN0IGxheWVyTExPcHRpb25zID0gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhsYXllcik7XG4gIGlmIChsYXllckxMT3B0aW9ucz8ubGlua3MpIHtcbiAgICBjb25zdCBsaW5rID0gbGF5ZXJMTE9wdGlvbnMubGlua3MuZmluZCgobCkgPT4gbC5zeW5jZWREZWxldGUpO1xuICAgIGhhc0xpbmtXaXRoU3luY2VkRGVsZXRlID0gbGluayA/IHRydWUgOiBmYWxzZTtcbiAgfVxuICByZXR1cm4gaGFzTGlua1dpdGhTeW5jZWREZWxldGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290UGFyZW50QnlQcm9wZXJ0eShcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllciB7XG4gIGxldCBsYXllclRvVXNlID0gbGF5ZXI7XG4gIGxldCBwYXJlbnRMYXllciA9IGxheWVyVG9Vc2U7XG4gIGxldCBoYXNQYXJlbnRMYXllciA9IHRydWU7XG4gIHdoaWxlIChoYXNQYXJlbnRMYXllcikge1xuICAgIGxheWVyVG9Vc2UgPSBwYXJlbnRMYXllcjtcbiAgICBwYXJlbnRMYXllciA9IGdldERpcmVjdFBhcmVudExheWVyQnlQcm9wZXJ0eShtYXAsIGxheWVyVG9Vc2UsIHByb3BlcnR5KTtcbiAgICBoYXNQYXJlbnRMYXllciA9IHBhcmVudExheWVyID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG4gIGlmICghaGFzUGFyZW50TGF5ZXIpIHtcbiAgICBpZiAoIWxheWVySGFzTGlua1dpdGhQcm9wZXJ0eShsYXllclRvVXNlLCBwcm9wZXJ0eSkpIHtcbiAgICAgIGxheWVyVG9Vc2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBoYXNQYXJlbnRMYXllciA/IHBhcmVudExheWVyIDogbGF5ZXJUb1VzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdFBhcmVudExheWVyQnlQcm9wZXJ0eShcbiAgbWFwOiBNYXBCYXNlLFxuICBsYXllcjogTGF5ZXIsXG4gIHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzXG4pOiBMYXllciB7XG4gIGlmIChsYXllcj8ub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCkge1xuICAgIGNvbnN0IGN1cnJlbnRMaW5rSWQgPSBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWQ7XG4gICAgY29uc3QgcGFyZW50cyA9IG1hcC5sYXllcnMuZmlsdGVyKChwbCkgPT4ge1xuICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gcGwub3B0aW9ucy5saW5rZWRMYXllcnM7XG4gICAgICBpZiAobGlua2VkTGF5ZXJzICYmIGxpbmtlZExheWVycy5saW5rcykge1xuICAgICAgICBjb25zdCBhID0gbGlua2VkTGF5ZXJzLmxpbmtzLmZpbmQoXG4gICAgICAgICAgKGwpID0+XG4gICAgICAgICAgICBsLmxpbmtlZElkcy5pbmNsdWRlcyhjdXJyZW50TGlua0lkKSAmJlxuICAgICAgICAgICAgbC5wcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocGFyZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFlvdXIgbGF5ZXIgJHtcbiAgICAgICAgbGF5ZXIudGl0bGUgfHwgbGF5ZXIuaWRcbiAgICAgIH0gbXVzdCBvbmx5IGhhdmUgMSBwYXJlbnQgKCR7cGFyZW50cy5tYXAoKHApID0+IHAudGl0bGUgfHwgcC5pZCl9KVxuICAgICAgICAgICAgLCBUaGUgZmlyc3QgcGFyZW50ICgke1xuICAgICAgICAgICAgICBwYXJlbnRzWzBdLnRpdGxlIHx8IHBhcmVudHNbMF0uaWRcbiAgICAgICAgICAgIH0pIHdpbGwgYmUgdXNlIHRvIHN5bmMgcHJvcGVydGllc2ApO1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50c1swXTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KFxuICBtYXA6IE1hcEJhc2UsXG4gIGxheWVyOiBMYXllcixcbiAgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXNcbik6IExheWVyW10ge1xuICBsZXQgbGlua2VkSWRzID0gW107XG4gIGlmIChsYXllcj8ub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtzKSB7XG4gICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3NcbiAgICAgIC5maWx0ZXIoKGwpID0+IGwucHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpXG4gICAgICAubWFwKChsaW5rKSA9PiB7XG4gICAgICAgIGxpbmtlZElkcyA9IGxpbmtlZElkcy5jb25jYXQobGluay5saW5rZWRJZHMpO1xuICAgICAgfSk7XG4gIH1cbiAgcmV0dXJuIGxpbmtlZElkcy5tYXAoKGxpZCkgPT4gZ2V0SWdvTGF5ZXJCeUxpbmtJZChtYXAsIGxpZCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsQ2hpbGRMYXllcnNCeVByb3BlcnR5KFxuICBtYXA6IE1hcEJhc2UsXG4gIGxheWVyOiBMYXllcixcbiAga25vd25DaGlsZExheWVyczogTGF5ZXJbXSxcbiAgcHJvcGVydHk6IExpbmtlZFByb3BlcnRpZXNcbik6IExheWVyW10ge1xuICBjb25zdCBjaGlsZExheWVycyA9IGdldERpcmVjdENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShtYXAsIGxheWVyLCBwcm9wZXJ0eSk7XG4gIGNoaWxkTGF5ZXJzLm1hcCgoY2wpID0+IHtcbiAgICBrbm93bkNoaWxkTGF5ZXJzLnB1c2goY2wpO1xuICAgIGNvbnN0IGRpcmVjdENoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeVByb3BlcnR5KG1hcCwgY2wsIHByb3BlcnR5KTtcbiAgICBpZiAoZGlyZWN0Q2hpbGRMYXllcnMpIHtcbiAgICAgIGdldEFsbENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShtYXAsIGNsLCBrbm93bkNoaWxkTGF5ZXJzLCBwcm9wZXJ0eSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGtub3duQ2hpbGRMYXllcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb290UGFyZW50QnlEZWxldGlvbihtYXA6IE1hcEJhc2UsIGxheWVyOiBMYXllcik6IExheWVyIHtcbiAgbGV0IGxheWVyVG9Vc2UgPSBsYXllcjtcbiAgbGV0IHBhcmVudExheWVyID0gbGF5ZXJUb1VzZTtcbiAgbGV0IGhhc1BhcmVudExheWVyID0gdHJ1ZTtcbiAgd2hpbGUgKGhhc1BhcmVudExheWVyKSB7XG4gICAgbGF5ZXJUb1VzZSA9IHBhcmVudExheWVyO1xuICAgIHBhcmVudExheWVyID0gZ2V0RGlyZWN0UGFyZW50TGF5ZXJCeURlbGV0aW9uKG1hcCwgbGF5ZXJUb1VzZSk7XG4gICAgaGFzUGFyZW50TGF5ZXIgPSBwYXJlbnRMYXllciA/IHRydWUgOiBmYWxzZTtcbiAgfVxuICBpZiAoIWhhc1BhcmVudExheWVyKSB7XG4gICAgaWYgKCFsYXllckhhc0xpbmtEZWxldGlvbihsYXllclRvVXNlKSkge1xuICAgICAgbGF5ZXJUb1VzZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGhhc1BhcmVudExheWVyID8gcGFyZW50TGF5ZXIgOiBsYXllclRvVXNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlyZWN0UGFyZW50TGF5ZXJCeURlbGV0aW9uKFxuICBtYXA6IE1hcEJhc2UsXG4gIGxheWVyOiBMYXllclxuKTogTGF5ZXIge1xuICBpZiAobGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZCkge1xuICAgIGNvbnN0IGN1cnJlbnRMaW5rSWQgPSBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWQ7XG4gICAgY29uc3QgcGFyZW50cyA9IG1hcC5sYXllcnMuZmlsdGVyKChwbCkgPT4ge1xuICAgICAgY29uc3QgbGlua2VkTGF5ZXJzID0gcGwub3B0aW9ucy5saW5rZWRMYXllcnM7XG4gICAgICBpZiAobGlua2VkTGF5ZXJzICYmIGxpbmtlZExheWVycy5saW5rcykge1xuICAgICAgICBjb25zdCBhID0gbGlua2VkTGF5ZXJzLmxpbmtzLmZpbmQoXG4gICAgICAgICAgKGwpID0+IGwubGlua2VkSWRzLmluY2x1ZGVzKGN1cnJlbnRMaW5rSWQpICYmIGwuc3luY2VkRGVsZXRlXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChwYXJlbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihgWW91ciBsYXllciAke1xuICAgICAgICBsYXllci50aXRsZSB8fCBsYXllci5pZFxuICAgICAgfSBtdXN0IG9ubHkgaGF2ZSAxIHBhcmVudCAoJHtwYXJlbnRzLm1hcCgocCkgPT4gcC50aXRsZSB8fCBwLmlkKX0pXG4gICAgICAgICAgLCBUaGUgZmlyc3QgcGFyZW50ICgke1xuICAgICAgICAgICAgcGFyZW50c1swXS50aXRsZSB8fCBwYXJlbnRzWzBdLmlkXG4gICAgICAgICAgfSkgd2lsbCBiZSB1c2UgdG8gc3luYyBwcm9wZXJ0aWVzYCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRzWzBdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RDaGlsZExheWVyc0J5RGVsZXRpb24oXG4gIG1hcDogTWFwQmFzZSxcbiAgbGF5ZXI6IExheWVyXG4pOiBMYXllcltdIHtcbiAgbGV0IGxpbmtlZElkcyA9IFtdO1xuICBpZiAobGF5ZXI/Lm9wdGlvbnMubGlua2VkTGF5ZXJzPy5saW5rcykge1xuICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzXG4gICAgICAuZmlsdGVyKChsKSA9PiBsLnN5bmNlZERlbGV0ZSlcbiAgICAgIC5tYXAoKGxpbmspID0+IHtcbiAgICAgICAgbGlua2VkSWRzID0gbGlua2VkSWRzLmNvbmNhdChsaW5rLmxpbmtlZElkcyk7XG4gICAgICB9KTtcbiAgfVxuICByZXR1cm4gbGlua2VkSWRzLm1hcCgobGlkKSA9PiBnZXRJZ29MYXllckJ5TGlua0lkKG1hcCwgbGlkKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxDaGlsZExheWVyc0J5RGVsZXRpb24oXG4gIG1hcDogTWFwQmFzZSxcbiAgbGF5ZXI6IExheWVyLFxuICBrbm93bkNoaWxkTGF5ZXJzOiBMYXllcltdXG4pOiBMYXllcltdIHtcbiAgY29uc3QgY2hpbGRMYXllcnMgPSBnZXREaXJlY3RDaGlsZExheWVyc0J5RGVsZXRpb24obWFwLCBsYXllcik7XG4gIGNoaWxkTGF5ZXJzLm1hcCgoY2wpID0+IHtcbiAgICBrbm93bkNoaWxkTGF5ZXJzLnB1c2goY2wpO1xuICAgIGNvbnN0IGRpcmVjdENoaWxkTGF5ZXJzID0gZ2V0RGlyZWN0Q2hpbGRMYXllcnNCeURlbGV0aW9uKG1hcCwgY2wpO1xuICAgIGlmIChkaXJlY3RDaGlsZExheWVycykge1xuICAgICAgZ2V0QWxsQ2hpbGRMYXllcnNCeURlbGV0aW9uKG1hcCwgY2wsIGtub3duQ2hpbGRMYXllcnMpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBrbm93bkNoaWxkTGF5ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdExheWVyU3luY0Zyb21Sb290UGFyZW50TGF5ZXJzKFxuICBtYXA6IE1hcEJhc2UsXG4gIGxheWVyczogTGF5ZXJbXVxuKSB7XG4gIGNvbnN0IHJvb3RMYXllcnNCeVByb3BlcnR5ID0ge307XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhMaW5rZWRQcm9wZXJ0aWVzKTtcbiAga2V5cy5tYXAoKGspID0+IHtcbiAgICByb290TGF5ZXJzQnlQcm9wZXJ0eVtMaW5rZWRQcm9wZXJ0aWVzW2tdXSA9IFtdO1xuICB9KTtcbiAgbGF5ZXJzXG4gICAgLmZpbHRlcigobCkgPT4gZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhsKSlcbiAgICAubWFwKChsKSA9PiB7XG4gICAgICBrZXlzLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IGsgPSBMaW5rZWRQcm9wZXJ0aWVzW2tleV07XG4gICAgICAgIGNvbnN0IHBsYnAgPSBnZXRSb290UGFyZW50QnlQcm9wZXJ0eShtYXAsIGwsIGsgYXMgTGlua2VkUHJvcGVydGllcyk7XG4gICAgICAgIGNvbnN0IGxheWVycyA9IHJvb3RMYXllcnNCeVByb3BlcnR5W2tdO1xuICAgICAgICBjb25zdCBsYXllcnNJZCA9IGxheWVycy5tYXAoKGwpID0+IGwuaWQpO1xuICAgICAgICBpZiAocGxicCAmJiAhbGF5ZXJzSWQuaW5jbHVkZXMocGxicC5pZCkpIHtcbiAgICAgICAgICByb290TGF5ZXJzQnlQcm9wZXJ0eVtrXS5wdXNoKHBsYnApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgT2JqZWN0LmtleXMocm9vdExheWVyc0J5UHJvcGVydHkpLm1hcCgoaykgPT4ge1xuICAgIGNvbnN0IGxheWVycyA9IHJvb3RMYXllcnNCeVByb3BlcnR5W2tdO1xuICAgIGxheWVycy5tYXAoKGw6IExheWVyKSA9PiBsLm9sLm5vdGlmeShrLCB1bmRlZmluZWQpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVMYXllclByb3BlcnR5Q2hhbmdlKFxuICBtYXA6IE1hcEJhc2UsXG4gIHByb3BlcnR5Q2hhbmdlOiBPYmplY3RFdmVudCxcbiAgaW5pdGlhdG9ySWdvTGF5ZXI6IExheWVyXG4pIHtcbiAgaWYgKCFwcm9wZXJ0eUNoYW5nZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBvZ2NGaWx0ZXJXcml0ZXIgPSBuZXcgT2djRmlsdGVyV3JpdGVyKCk7XG4gIGxldCBpc0xheWVyUHJvcGVydHkgPSB0cnVlO1xuICBsZXQgaXNEYXRhc291cmNlUHJvcGVydHkgPSB0cnVlO1xuICBjb25zdCBrZXkgPSBwcm9wZXJ0eUNoYW5nZS5rZXk7XG4gIGxldCBuZXdWYWx1ZTtcbiAgaWYgKGtleSA9PT0gJ29nY0ZpbHRlcnMnKSB7XG4gICAgaXNMYXllclByb3BlcnR5ID0gZmFsc2U7XG4gICAgaXNEYXRhc291cmNlUHJvcGVydHkgPSB0cnVlO1xuICAgIG5ld1ZhbHVlID0gKFxuICAgICAgaW5pdGlhdG9ySWdvTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICAgICkub2djRmlsdGVycztcbiAgfSBlbHNlIGlmIChrZXkgPT09ICd0aW1lRmlsdGVyJykge1xuICAgIGlzTGF5ZXJQcm9wZXJ0eSA9IGZhbHNlO1xuICAgIGlzRGF0YXNvdXJjZVByb3BlcnR5ID0gdHJ1ZTtcbiAgICBuZXdWYWx1ZSA9IChcbiAgICAgIGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBUaW1lRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXG4gICAgKS50aW1lRmlsdGVyO1xuICB9IGVsc2Uge1xuICAgIGlzTGF5ZXJQcm9wZXJ0eSA9IHRydWU7XG4gICAgaXNEYXRhc291cmNlUHJvcGVydHkgPSBmYWxzZTtcbiAgICBuZXdWYWx1ZSA9IGluaXRpYXRvcklnb0xheWVyLm9sLmdldChrZXkpO1xuICB9XG5cbiAgY29uc3QgaW5pdGlhdG9yTGlua2VkTGF5ZXJzT3B0aW9ucyA9XG4gICAgZ2V0TGlua2VkTGF5ZXJzT3B0aW9ucyhpbml0aWF0b3JJZ29MYXllcik7XG4gIGlmIChpbml0aWF0b3JMaW5rZWRMYXllcnNPcHRpb25zKSB7XG4gICAgbGV0IHJvb3RQYXJlbnRCeVByb3BlcnR5ID0gZ2V0Um9vdFBhcmVudEJ5UHJvcGVydHkoXG4gICAgICBtYXAsXG4gICAgICBpbml0aWF0b3JJZ29MYXllcixcbiAgICAgIGtleSBhcyBMaW5rZWRQcm9wZXJ0aWVzXG4gICAgKTtcbiAgICBpZiAoIXJvb3RQYXJlbnRCeVByb3BlcnR5KSB7XG4gICAgICByb290UGFyZW50QnlQcm9wZXJ0eSA9IGluaXRpYXRvcklnb0xheWVyO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYnAgPSBbcm9vdFBhcmVudEJ5UHJvcGVydHldO1xuICAgIGdldEFsbENoaWxkTGF5ZXJzQnlQcm9wZXJ0eShcbiAgICAgIG1hcCxcbiAgICAgIHJvb3RQYXJlbnRCeVByb3BlcnR5LFxuICAgICAgY2xicCxcbiAgICAgIGtleSBhcyBMaW5rZWRQcm9wZXJ0aWVzXG4gICAgKTtcblxuICAgIGxldCByZXNvbHV0aW9uUHJvcGVydHlIYXNDaGFuZ2VkID0gZmFsc2U7XG4gICAgY29uc3QgaW5pdGlhdG9ySWdvTGF5ZXJTb3VyY2VUeXBlID1cbiAgICAgIGluaXRpYXRvcklnb0xheWVyLm9wdGlvbnMuc291cmNlLm9wdGlvbnMudHlwZTtcbiAgICBjb25zdCBpbml0aWF0b3JJZ29MYXllck9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyA9IGluaXRpYXRvcklnb0xheWVyXG4gICAgICAuZGF0YVNvdXJjZS5vcHRpb25zIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucztcbiAgICBjbGJwLm1hcCgobCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBpbml0aWF0b3JJZ29MYXllciAmJlxuICAgICAgICBsICYmXG4gICAgICAgIGdldFVpZChpbml0aWF0b3JJZ29MYXllci5vbCkgIT09IGdldFVpZChsPy5vbClcbiAgICAgICkge1xuICAgICAgICBjb25zdCBsTGF5ZXJUeXBlID0gbC5vcHRpb25zLnNvdXJjZS5vcHRpb25zLnR5cGU7XG4gICAgICAgIGlmIChpc0xheWVyUHJvcGVydHkpIHtcbiAgICAgICAgICBsLm9sLnNldChrZXksIG5ld1ZhbHVlLCB0cnVlKTtcbiAgICAgICAgICBpZiAoa2V5ID09PSAndmlzaWJsZScpIHtcbiAgICAgICAgICAgIGwudmlzaWJsZSQubmV4dChuZXdWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChrZXkgPT09ICdtaW5SZXNvbHV0aW9uJyB8fCBrZXkgPT09ICdtYXhSZXNvbHV0aW9uJykge1xuICAgICAgICAgICAgcmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0YXNvdXJjZVByb3BlcnR5KSB7XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ29nY0ZpbHRlcnMnKSB7XG4gICAgICAgICAgICAobC5kYXRhU291cmNlIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlKS5zZXRPZ2NGaWx0ZXJzKFxuICAgICAgICAgICAgICBuZXdWYWx1ZSxcbiAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAobExheWVyVHlwZSA9PT0gJ3dmcycpIHtcbiAgICAgICAgICAgICAgbC5vbC5nZXRTb3VyY2UoKS5yZWZyZXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobExheWVyVHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgICAgICAgICAgbGV0IGFwcGxpZWRPZ2NGaWx0ZXI7XG4gICAgICAgICAgICAgIGlmIChpbml0aWF0b3JJZ29MYXllclNvdXJjZVR5cGUgPT09ICd3ZnMnKSB7XG4gICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9IG9nY0ZpbHRlcldyaXRlci5oYW5kbGVPZ2NGaWx0ZXJzQXBwbGllZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgaW5pdGlhdG9ySWdvTGF5ZXJPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAoaW5pdGlhdG9ySWdvTGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zIGFzIGFueSlcbiAgICAgICAgICAgICAgICAgICAgLmZpZWxkTmFtZUdlb21ldHJ5LFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgbWFwLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbml0aWF0b3JJZ29MYXllclNvdXJjZVR5cGUgPT09ICd3bXMnKSB7XG4gICAgICAgICAgICAgICAgYXBwbGllZE9nY0ZpbHRlciA9IChcbiAgICAgICAgICAgICAgICAgIGluaXRpYXRvcklnb0xheWVyLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZVxuICAgICAgICAgICAgICAgICkub2wuZ2V0UGFyYW1zKCkuRklMVEVSO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIChsLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZSkub2wudXBkYXRlUGFyYW1zKHtcbiAgICAgICAgICAgICAgICBGSUxURVI6IGFwcGxpZWRPZ2NGaWx0ZXJcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGwuZGF0YVNvdXJjZSBpbnN0YW5jZW9mIFdNU0RhdGFTb3VyY2UgJiZcbiAgICAgICAgICAgIGtleSA9PT0gJ3RpbWVGaWx0ZXInXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAobC5kYXRhU291cmNlIGFzIFRpbWVGaWx0ZXJhYmxlRGF0YVNvdXJjZSkuc2V0VGltZUZpbHRlcihcbiAgICAgICAgICAgICAgbmV3VmFsdWUsXG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgYXBwbGllZFRpbWVGaWx0ZXIgPSAoXG4gICAgICAgICAgICAgIGluaXRpYXRvcklnb0xheWVyLm9sLmdldFNvdXJjZSgpIGFzIG9sU291cmNlSW1hZ2VXTVNcbiAgICAgICAgICAgICkuZ2V0UGFyYW1zKCkuVElNRTtcbiAgICAgICAgICAgIGwuZGF0YVNvdXJjZS5vbC51cGRhdGVQYXJhbXMoeyBUSU1FOiBhcHBsaWVkVGltZUZpbHRlciB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocmVzb2x1dGlvblByb3BlcnR5SGFzQ2hhbmdlZCkge1xuICAgICAgbWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kLm5leHQobWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kLnZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -103,10 +103,10 @@ export class PointerPositionDirective {
103
103
  this.pointerPositionCoord.emit(lonlat);
104
104
  }, delay);
105
105
  }
106
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: PointerPositionDirective, deps: [{ token: i1.MapBrowserComponent, self: true }, { token: i2.MediaService }], target: i0.ɵɵFactoryTarget.Directive });
107
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: PointerPositionDirective, isStandalone: true, selector: "[igoPointerPosition]", inputs: { pointerPositionDelay: "pointerPositionDelay" }, outputs: { pointerPositionCoord: "pointerPositionCoord" }, ngImport: i0 });
106
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PointerPositionDirective, deps: [{ token: i1.MapBrowserComponent, self: true }, { token: i2.MediaService }], target: i0.ɵɵFactoryTarget.Directive });
107
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: PointerPositionDirective, isStandalone: true, selector: "[igoPointerPosition]", inputs: { pointerPositionDelay: "pointerPositionDelay" }, outputs: { pointerPositionCoord: "pointerPositionCoord" }, ngImport: i0 });
108
108
  }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: PointerPositionDirective, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: PointerPositionDirective, decorators: [{
110
110
  type: Directive,
111
111
  args: [{
112
112
  selector: '[igoPointerPosition]',
@@ -119,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
119
119
  }], pointerPositionCoord: [{
120
120
  type: Output
121
121
  }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXBvaW50ZXItcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAtcG9pbnRlci1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUdsRjs7OztHQUlHO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQW9DakI7SUFDUjtJQXBDRixrQkFBa0IsQ0FBQztJQUUzQjs7T0FFRztJQUNLLG1CQUFtQixDQUFDO0lBRTVCOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUM7SUFFekI7O09BRUc7SUFDTSxvQkFBb0IsR0FBVyxJQUFJLENBQUM7SUFFN0M7O09BRUc7SUFDTyxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQUV0RTs7O09BR0c7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBYyxDQUFDLFVBQVUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFDa0IsU0FBOEIsRUFDdEMsWUFBMEI7UUFEbEIsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDakMsQ0FBQztJQUVKOzs7T0FHRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNLLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUN2QyxhQUFhLEVBQ2IsQ0FBQyxLQUFrQyxFQUFFLEVBQUUsQ0FDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQ3hELENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDcEMsYUFBYSxFQUNiLENBQUMsS0FBa0MsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyx3QkFBd0I7UUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxLQUFrQyxFQUFFLEtBQWE7UUFDdEUsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUN4RCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDbkQsc0NBQXNDO1lBQ3RDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUN0QixLQUFLLENBQUMsVUFBVSxFQUNoQixJQUFJLENBQUMsYUFBYSxFQUNsQixXQUFXLENBQ1EsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7dUdBbkhVLHdCQUF3QjsyRkFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBcUNJLElBQUk7b0VBcEJFLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFLSSxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1lZGlhU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVkaWEnO1xuXG5pbXBvcnQgTWFwQnJvd3NlclBvaW50ZXJFdmVudCBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnb2wvcHJvaic7XG5cbmltcG9ydCB7IE1hcEJyb3dzZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tYXAvbWFwLWJyb3dzZXIvbWFwLWJyb3dzZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcblxuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSByZXR1cm4gdGhlIHBvaW50ZXIgY29vcmRpbmF0ZSAob24gY2xpY2sgb3IgcG9pbnRlcm1vdmUpXG4gKiBpbiBbbG9uZ2l0dWRlLCBsYXRpdHVkZV0sIGRlbGF5ZWQgYnkgaW4gaW5wdXQgKHBvaW50ZXJNb3ZlRGVsYXkpXG4gKiB0byBhdm9pZCB0b28gbWFueSBlbWl0dGVkIHZhbHVlcy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2lnb1BvaW50ZXJQb3NpdGlvbl0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFBvaW50ZXJQb3NpdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBsYXN0VGltZW91dFJlcXVlc3Q7XG5cbiAgLyoqXG4gICAqIExpc3RlbmVyIHRvIHRoZSBwb2ludGVyIG1vdmUgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgcG9pbnRlck1vdmVMaXN0ZW5lcjtcblxuICAvKipcbiAgICogTGlzdGVuZXIgdG8gdGhlIG1hcCBjbGljayBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBtYXBDbGlja0xpc3RlbmVyO1xuXG4gIC8qKlxuICAgKiBEZWxheSBiZWZvcmUgZW1pdHRpbmcgYW4gZXZlbnRcbiAgICovXG4gIEBJbnB1dCgpIHBvaW50ZXJQb3NpdGlvbkRlbGF5OiBudW1iZXIgPSAxMDAwO1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBvaW50ZXIgbW92ZSwgZGVsYXllZCBieSBwb2ludGVyTW92ZURlbGF5XG4gICAqL1xuICBAT3V0cHV0KCkgcG9pbnRlclBvc2l0aW9uQ29vcmQgPSBuZXcgRXZlbnRFbWl0dGVyPFtudW1iZXIsIG51bWJlcl0+KCk7XG5cbiAgLyoqXG4gICAqIElHTyBtYXBcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Lm1hcDtcbiAgfVxuXG4gIGdldCBtYXBQcm9qZWN0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNvbXBvbmVudC5tYXAgYXMgSWdvTWFwKS5wcm9qZWN0aW9uO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKSBwcml2YXRlIGNvbXBvbmVudDogTWFwQnJvd3NlckNvbXBvbmVudCxcbiAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogU3RhcnQgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCk7XG4gICAgdGhpcy5saXN0ZW5Ub01hcENsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBsaXN0ZW5pbmcgdG8gcG9pbnRlcm1vdmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpO1xuICAgIHRoaXMudW5saXN0ZW5Ub01hcENsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogT24gbWFwIHBvaW50ZXJtb3ZlXG4gICAqL1xuICBwcml2YXRlIGxpc3RlblRvTWFwUG9pbnRlck1vdmUoKSB7XG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdGhpcy5tYXAub2wub24oXG4gICAgICAncG9pbnRlcm1vdmUnLFxuICAgICAgKGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4pID0+XG4gICAgICAgIHRoaXMub25Qb2ludGVyRXZlbnQoZXZlbnQsIHRoaXMucG9pbnRlclBvc2l0aW9uRGVsYXkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBtYXAgY2xpY2tcbiAgICovXG4gIHByaXZhdGUgbGlzdGVuVG9NYXBDbGljaygpIHtcbiAgICB0aGlzLm1hcENsaWNrTGlzdGVuZXIgPSB0aGlzLm1hcC5vbC5vbihcbiAgICAgICdzaW5nbGVjbGljaycsXG4gICAgICAoZXZlbnQ6IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQ8YW55PikgPT4gdGhpcy5vblBvaW50ZXJFdmVudChldmVudCwgMClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgcG9pbnRlcm1vdmVcbiAgICovXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xuICAgIHVuQnlLZXkodGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyKTtcbiAgICB0aGlzLnBvaW50ZXJNb3ZlTGlzdGVuZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCBsaXN0ZW5pbmcgZm9yIG1hcCBjbGlja3NcbiAgICovXG4gIHByaXZhdGUgdW5saXN0ZW5Ub01hcENsaWNrKCkge1xuICAgIHRoaXMubWFwQ2xpY2tMaXN0ZW5lciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBlbWl0IGRlbGF5ZWQgY29vcmRpbmF0ZSAobG9uZ2l0dWRlLCBsYXRpdHVkZSBhcnJheSkgYmFzZWQgb24gcG9pbnRlck1vdmVEZWxheSBvciBvbiBjbGlja1xuICAgKiBAcGFyYW0gZXZlbnQgT0wgbWFwIGJyb3dzZXIgcG9pbnRlciBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBvblBvaW50ZXJFdmVudChldmVudDogTWFwQnJvd3NlclBvaW50ZXJFdmVudDxhbnk+LCBkZWxheTogbnVtYmVyKSB7XG4gICAgaWYgKGV2ZW50LmRyYWdnaW5nIHx8IHRoaXMubWVkaWFTZXJ2aWNlLmlzVG91Y2hTY3JlZW4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gY2FuY2VsIHRpbWVvdXQgd2hlbiB0aGUgbW91c2UgbW92ZXNcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9ubGF0ID0gdHJhbnNmb3JtKFxuICAgICAgZXZlbnQuY29vcmRpbmF0ZSxcbiAgICAgIHRoaXMubWFwUHJvamVjdGlvbixcbiAgICAgICdFUFNHOjQzMjYnXG4gICAgKSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgIHRoaXMubGFzdFRpbWVvdXRSZXF1ZXN0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnBvaW50ZXJQb3NpdGlvbkNvb3JkLmVtaXQobG9ubGF0KTtcbiAgICB9LCBkZWxheSk7XG4gIH1cbn1cbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXBvaW50ZXItcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3NoYXJlZC9tYXAtcG9pbnRlci1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7OztBQUdsRjs7OztHQUlHO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQW9DakI7SUFDUjtJQXBDRixrQkFBa0IsQ0FBQztJQUUzQjs7T0FFRztJQUNLLG1CQUFtQixDQUFDO0lBRTVCOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUM7SUFFekI7O09BRUc7SUFDTSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFFckM7O09BRUc7SUFDTyxvQkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQUV0RTs7O09BR0c7SUFDSCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBYyxDQUFDLFVBQVUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFDa0IsU0FBOEIsRUFDdEMsWUFBMEI7UUFEbEIsY0FBUyxHQUFULFNBQVMsQ0FBcUI7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWM7SUFDakMsQ0FBQztJQUVKOzs7T0FHRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNLLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUN2QyxhQUFhLEVBQ2IsQ0FBQyxLQUFrQyxFQUFFLEVBQUUsQ0FDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQ3hELENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FDcEMsYUFBYSxFQUNiLENBQUMsS0FBa0MsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyx3QkFBd0I7UUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGNBQWMsQ0FBQyxLQUFrQyxFQUFFLEtBQWE7UUFDdEUsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUN4RCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksT0FBTyxJQUFJLENBQUMsa0JBQWtCLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDbkQsc0NBQXNDO1lBQ3RDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUN0QixLQUFLLENBQUMsVUFBVSxFQUNoQixJQUFJLENBQUMsYUFBYSxFQUNsQixXQUFXLENBQ1EsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7dUdBbkhVLHdCQUF3QjsyRkFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBcUNJLElBQUk7b0VBcEJFLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFLSSxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1lZGlhU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVkaWEnO1xuXG5pbXBvcnQgTWFwQnJvd3NlclBvaW50ZXJFdmVudCBmcm9tICdvbC9NYXBCcm93c2VyRXZlbnQnO1xuaW1wb3J0IHsgdW5CeUtleSB9IGZyb20gJ29sL09ic2VydmFibGUnO1xuaW1wb3J0IHsgdHJhbnNmb3JtIH0gZnJvbSAnb2wvcHJvaic7XG5cbmltcG9ydCB7IE1hcEJyb3dzZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tYXAvbWFwLWJyb3dzZXIvbWFwLWJyb3dzZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElnb01hcCB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwJztcblxuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSByZXR1cm4gdGhlIHBvaW50ZXIgY29vcmRpbmF0ZSAob24gY2xpY2sgb3IgcG9pbnRlcm1vdmUpXG4gKiBpbiBbbG9uZ2l0dWRlLCBsYXRpdHVkZV0sIGRlbGF5ZWQgYnkgaW4gaW5wdXQgKHBvaW50ZXJNb3ZlRGVsYXkpXG4gKiB0byBhdm9pZCB0b28gbWFueSBlbWl0dGVkIHZhbHVlcy5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2lnb1BvaW50ZXJQb3NpdGlvbl0nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFBvaW50ZXJQb3NpdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBsYXN0VGltZW91dFJlcXVlc3Q7XG5cbiAgLyoqXG4gICAqIExpc3RlbmVyIHRvIHRoZSBwb2ludGVyIG1vdmUgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgcG9pbnRlck1vdmVMaXN0ZW5lcjtcblxuICAvKipcbiAgICogTGlzdGVuZXIgdG8gdGhlIG1hcCBjbGljayBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBtYXBDbGlja0xpc3RlbmVyO1xuXG4gIC8qKlxuICAgKiBEZWxheSBiZWZvcmUgZW1pdHRpbmcgYW4gZXZlbnRcbiAgICovXG4gIEBJbnB1dCgpIHBvaW50ZXJQb3NpdGlvbkRlbGF5ID0gMTAwMDtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb2ludGVyIG1vdmUsIGRlbGF5ZWQgYnkgcG9pbnRlck1vdmVEZWxheVxuICAgKi9cbiAgQE91dHB1dCgpIHBvaW50ZXJQb3NpdGlvbkNvb3JkID0gbmV3IEV2ZW50RW1pdHRlcjxbbnVtYmVyLCBudW1iZXJdPigpO1xuXG4gIC8qKlxuICAgKiBJR08gbWFwXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5tYXA7XG4gIH1cblxuICBnZXQgbWFwUHJvamVjdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5jb21wb25lbnQubWFwIGFzIElnb01hcCkucHJvamVjdGlvbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgcHJpdmF0ZSBjb21wb25lbnQ6IE1hcEJyb3dzZXJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBtZWRpYVNlcnZpY2U6IE1lZGlhU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IGxpc3RlbmluZyB0byBwb2ludGVybW92ZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpO1xuICAgIHRoaXMubGlzdGVuVG9NYXBDbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgbGlzdGVuaW5nIHRvIHBvaW50ZXJtb3ZlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy51bmxpc3RlblRvTWFwUG9pbnRlck1vdmUoKTtcbiAgICB0aGlzLnVubGlzdGVuVG9NYXBDbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIG1hcCBwb2ludGVybW92ZVxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Ub01hcFBvaW50ZXJNb3ZlKCkge1xuICAgIHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lciA9IHRoaXMubWFwLm9sLm9uKFxuICAgICAgJ3BvaW50ZXJtb3ZlJyxcbiAgICAgIChldmVudDogTWFwQnJvd3NlclBvaW50ZXJFdmVudDxhbnk+KSA9PlxuICAgICAgICB0aGlzLm9uUG9pbnRlckV2ZW50KGV2ZW50LCB0aGlzLnBvaW50ZXJQb3NpdGlvbkRlbGF5KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogT24gbWFwIGNsaWNrXG4gICAqL1xuICBwcml2YXRlIGxpc3RlblRvTWFwQ2xpY2soKSB7XG4gICAgdGhpcy5tYXBDbGlja0xpc3RlbmVyID0gdGhpcy5tYXAub2wub24oXG4gICAgICAnc2luZ2xlY2xpY2snLFxuICAgICAgKGV2ZW50OiBNYXBCcm93c2VyUG9pbnRlckV2ZW50PGFueT4pID0+IHRoaXMub25Qb2ludGVyRXZlbnQoZXZlbnQsIDApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGxpc3RlbmluZyBmb3IgbWFwIHBvaW50ZXJtb3ZlXG4gICAqL1xuICBwcml2YXRlIHVubGlzdGVuVG9NYXBQb2ludGVyTW92ZSgpIHtcbiAgICB1bkJ5S2V5KHRoaXMucG9pbnRlck1vdmVMaXN0ZW5lcik7XG4gICAgdGhpcy5wb2ludGVyTW92ZUxpc3RlbmVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3AgbGlzdGVuaW5nIGZvciBtYXAgY2xpY2tzXG4gICAqL1xuICBwcml2YXRlIHVubGlzdGVuVG9NYXBDbGljaygpIHtcbiAgICB0aGlzLm1hcENsaWNrTGlzdGVuZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogZW1pdCBkZWxheWVkIGNvb3JkaW5hdGUgKGxvbmdpdHVkZSwgbGF0aXR1ZGUgYXJyYXkpIGJhc2VkIG9uIHBvaW50ZXJNb3ZlRGVsYXkgb3Igb24gY2xpY2tcbiAgICogQHBhcmFtIGV2ZW50IE9MIG1hcCBicm93c2VyIHBvaW50ZXIgZXZlbnRcbiAgICovXG4gIHByaXZhdGUgb25Qb2ludGVyRXZlbnQoZXZlbnQ6IE1hcEJyb3dzZXJQb2ludGVyRXZlbnQ8YW55PiwgZGVsYXk6IG51bWJlcikge1xuICAgIGlmIChldmVudC5kcmFnZ2luZyB8fCB0aGlzLm1lZGlhU2VydmljZS5pc1RvdWNoU2NyZWVuKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIGNhbmNlbCB0aW1lb3V0IHdoZW4gdGhlIG1vdXNlIG1vdmVzXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5sYXN0VGltZW91dFJlcXVlc3QpO1xuICAgIH1cblxuICAgIGNvbnN0IGxvbmxhdCA9IHRyYW5zZm9ybShcbiAgICAgIGV2ZW50LmNvb3JkaW5hdGUsXG4gICAgICB0aGlzLm1hcFByb2plY3Rpb24sXG4gICAgICAnRVBTRzo0MzI2J1xuICAgICkgYXMgW251bWJlciwgbnVtYmVyXTtcbiAgICB0aGlzLmxhc3RUaW1lb3V0UmVxdWVzdCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5wb2ludGVyUG9zaXRpb25Db29yZC5lbWl0KGxvbmxhdCk7XG4gICAgfSwgZGVsYXkpO1xuICB9XG59XG4iXX0=