@igo2/geo 16.3.0 → 17.0.0-next.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (663) hide show
  1. package/assets/icons/cross_black_18px.svg +88 -88
  2. package/assets/icons/place_blue_36px.svg +55 -55
  3. package/assets/icons/place_green_36px.svg +55 -55
  4. package/assets/icons/place_red_36px.svg +55 -55
  5. package/assets/icons/place_yellow_36px.svg +55 -55
  6. package/assets/images/north-direction.png +0 -0
  7. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +32 -14
  8. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +38 -19
  9. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +19 -11
  10. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +8 -62
  11. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +49 -20
  12. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +23 -11
  13. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +48 -16
  14. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +12 -71
  15. package/esm2022/lib/catalog/catalog-library/index.mjs +4 -0
  16. package/esm2022/lib/catalog/catalog.module.mjs +18 -39
  17. package/esm2022/lib/catalog/index.mjs +2 -1
  18. package/esm2022/lib/catalog/shared/catalog.abstract.mjs +1 -1
  19. package/esm2022/lib/catalog/shared/catalog.enum.mjs +1 -1
  20. package/esm2022/lib/catalog/shared/catalog.interface.mjs +1 -1
  21. package/esm2022/lib/catalog/shared/catalog.service.mjs +16 -9
  22. package/esm2022/lib/catalog/shared/catalogs.mjs +1 -1
  23. package/esm2022/lib/datasource/shared/capabilities.interface.mjs +1 -1
  24. package/esm2022/lib/datasource/shared/capabilities.service.mjs +5 -5
  25. package/esm2022/lib/datasource/shared/datasource.service.mjs +11 -13
  26. package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  27. package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
  28. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
  29. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
  30. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  31. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
  32. package/esm2022/lib/datasource/shared/datasources/data.service.mjs +1 -1
  33. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  34. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +1 -1
  35. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  36. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
  37. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  38. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
  39. package/esm2022/lib/datasource/shared/datasources/index.mjs +1 -1
  40. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
  41. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
  42. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
  43. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  44. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
  45. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
  46. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  47. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  48. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
  49. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +5 -5
  50. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  51. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
  52. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  53. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  54. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  55. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  56. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  57. package/esm2022/lib/datasource/shared/index.mjs +1 -1
  58. package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +2 -2
  59. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +6 -6
  60. package/esm2022/lib/datasource/shared/options/options.service.mjs +1 -1
  61. package/esm2022/lib/datasource/utils/tilegrid.mjs +1 -1
  62. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +28 -13
  63. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +44 -19
  64. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +36 -16
  65. package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +5 -2
  66. package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
  67. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +9 -2
  68. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +72 -41
  69. package/esm2022/lib/directions/directions.component.mjs +83 -21
  70. package/esm2022/lib/directions/directions.module.mjs +14 -73
  71. package/esm2022/lib/directions/directions.provider.mjs +16 -0
  72. package/esm2022/lib/directions/index.mjs +2 -1
  73. package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
  74. package/esm2022/lib/directions/shared/directions.service.mjs +37 -27
  75. package/esm2022/lib/directions/shared/directions.utils.mjs +22 -22
  76. package/esm2022/lib/directions/shared/store.mjs +2 -2
  77. package/esm2022/lib/download/download-button/download-button.component.mjs +21 -11
  78. package/esm2022/lib/download/download.module.mjs +10 -27
  79. package/esm2022/lib/download/shared/download.service.mjs +7 -7
  80. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +21 -10
  81. package/esm2022/lib/draw/draw/draw-popup.component.mjs +41 -18
  82. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +22 -9
  83. package/esm2022/lib/draw/draw/draw.component.mjs +55 -25
  84. package/esm2022/lib/draw/draw/draw.module.mjs +7 -104
  85. package/esm2022/lib/draw/drawingTool.module.mjs +8 -7
  86. package/esm2022/lib/draw/shared/draw-icon.service.mjs +7 -7
  87. package/esm2022/lib/draw/shared/draw.enum.mjs +1 -1
  88. package/esm2022/lib/draw/shared/draw.interface.mjs +1 -1
  89. package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
  90. package/esm2022/lib/environment/environment.interface.mjs +1 -1
  91. package/esm2022/lib/environment/index.mjs +1 -1
  92. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +29 -13
  93. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +8 -7
  94. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +14 -27
  95. package/esm2022/lib/feature/feature-details/index.mjs +4 -0
  96. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +9 -9
  97. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +8 -11
  98. package/esm2022/lib/feature/feature.module.mjs +18 -12
  99. package/esm2022/lib/feature/index.mjs +3 -2
  100. package/esm2022/lib/feature/shared/feature-store.utils.mjs +1 -1
  101. package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
  102. package/esm2022/lib/feature/shared/feature.utils.mjs +2 -2
  103. package/esm2022/lib/feature/shared/index.mjs +1 -1
  104. package/esm2022/lib/feature/shared/store.mjs +2 -2
  105. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +2 -2
  106. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +2 -2
  107. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +2 -2
  108. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +2 -2
  109. package/esm2022/lib/feature/shared/strategies/loading.mjs +2 -2
  110. package/esm2022/lib/feature/shared/strategies/search.mjs +5 -5
  111. package/esm2022/lib/feature/shared/strategies/selection.mjs +2 -2
  112. package/esm2022/lib/feature/shared/strategies.utils.mjs +1 -1
  113. package/esm2022/lib/filter/filter.module.mjs +47 -177
  114. package/esm2022/lib/filter/index.mjs +2 -1
  115. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +29 -15
  116. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +46 -20
  117. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +56 -25
  118. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +17 -14
  119. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +59 -34
  120. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +18 -12
  121. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +42 -18
  122. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +8 -7
  123. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +21 -12
  124. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +6 -5
  125. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +5 -5
  126. package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +1 -1
  127. package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  128. package/esm2022/lib/filter/shared/ogc-filter.mjs +46 -3
  129. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +5 -5
  130. package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +1 -1
  131. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +9 -7
  132. package/esm2022/lib/filter/shared/time-filter.enum.mjs +1 -1
  133. package/esm2022/lib/filter/shared/time-filter.interface.mjs +1 -1
  134. package/esm2022/lib/filter/shared/time-filter.service.mjs +5 -5
  135. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +66 -28
  136. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +35 -18
  137. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +35 -16
  138. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +28 -14
  139. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +51 -24
  140. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +31 -13
  141. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +8 -7
  142. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +16 -10
  143. package/esm2022/lib/geo.module.mjs +5 -43
  144. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +7 -7
  145. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +34 -17
  146. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +12 -43
  147. package/esm2022/lib/geometry/geometry-form-field/index.mjs +4 -0
  148. package/esm2022/lib/geometry/geometry.module.mjs +9 -10
  149. package/esm2022/lib/geometry/index.mjs +2 -3
  150. package/esm2022/lib/geometry/shared/controls/draw.mjs +1 -1
  151. package/esm2022/lib/geometry/shared/controls/modify.mjs +1 -1
  152. package/esm2022/lib/geometry/shared/controls/slice.mjs +1 -1
  153. package/esm2022/lib/geometry/shared/geometry.errors.mjs +1 -1
  154. package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +1 -1
  155. package/esm2022/lib/geometry/shared/geometry.utils.mjs +1 -1
  156. package/esm2022/lib/import-export/export-button/export-button.component.mjs +20 -10
  157. package/esm2022/lib/import-export/import-export/import-export.component.mjs +58 -22
  158. package/esm2022/lib/import-export/import-export.module.mjs +15 -81
  159. package/esm2022/lib/import-export/index.mjs +2 -1
  160. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +19 -66
  161. package/esm2022/lib/import-export/shared/export.interface.mjs +1 -1
  162. package/esm2022/lib/import-export/shared/export.service.mjs +14 -8
  163. package/esm2022/lib/import-export/shared/export.type.mjs +1 -1
  164. package/esm2022/lib/import-export/shared/export.utils.mjs +2 -2
  165. package/esm2022/lib/import-export/shared/import.errors.mjs +1 -1
  166. package/esm2022/lib/import-export/shared/import.interface.mjs +1 -1
  167. package/esm2022/lib/import-export/shared/import.service.mjs +7 -7
  168. package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
  169. package/esm2022/lib/layer/index.mjs +2 -1
  170. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +35 -16
  171. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +45 -17
  172. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +13 -11
  173. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +8 -7
  174. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +28 -13
  175. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +10 -9
  176. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +49 -18
  177. package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +1 -1
  178. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +33 -14
  179. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +5 -5
  180. package/esm2022/lib/layer/layer.module.mjs +27 -93
  181. package/esm2022/lib/layer/shared/clusterParam.mjs +1 -1
  182. package/esm2022/lib/layer/shared/layer.service.mjs +13 -13
  183. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  184. package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
  185. package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  186. package/esm2022/lib/layer/shared/layers/image-layer.mjs +1 -1
  187. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -1
  188. package/esm2022/lib/layer/shared/layers/layer.mjs +1 -1
  189. package/esm2022/lib/layer/shared/layers/legend.interface.mjs +1 -1
  190. package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
  191. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +1 -1
  192. package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
  193. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +1 -1
  194. package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
  195. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
  196. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +21 -11
  197. package/esm2022/lib/layer/utils/image-watcher.mjs +1 -1
  198. package/esm2022/lib/layer/utils/layer.utils.mjs +1 -1
  199. package/esm2022/lib/layer/utils/outputLegend.mjs +1 -1
  200. package/esm2022/lib/layer/utils/tile-watcher.mjs +1 -1
  201. package/esm2022/lib/layer/utils/vector-watcher.mjs +1 -1
  202. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +1 -1
  203. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +27 -14
  204. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +8 -8
  205. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +28 -17
  206. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +15 -11
  207. package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +1 -1
  208. package/esm2022/lib/map/home-extent-button/index.mjs +1 -1
  209. package/esm2022/lib/map/index.mjs +1 -1
  210. package/esm2022/lib/map/info-section/info-section.component.mjs +7 -7
  211. package/esm2022/lib/map/map-browser/map-browser.component.mjs +8 -8
  212. package/esm2022/lib/map/map-center/map-center.component.mjs +6 -6
  213. package/esm2022/lib/map/map.module.mjs +51 -81
  214. package/esm2022/lib/map/menu-button/menu-button.component.mjs +23 -13
  215. package/esm2022/lib/map/offline-button/offline-button.component.mjs +21 -11
  216. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +23 -11
  217. package/esm2022/lib/map/shared/controllers/controller.mjs +1 -1
  218. package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
  219. package/esm2022/lib/map/shared/controllers/geolocation.mjs +1 -1
  220. package/esm2022/lib/map/shared/controllers/index.mjs +1 -1
  221. package/esm2022/lib/map/shared/controllers/view.mjs +1 -1
  222. package/esm2022/lib/map/shared/hover-feature.directive.mjs +11 -10
  223. package/esm2022/lib/map/shared/index.mjs +1 -1
  224. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +3 -3
  225. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +10 -9
  226. package/esm2022/lib/map/shared/map.abstract.mjs +1 -1
  227. package/esm2022/lib/map/shared/map.interface.mjs +1 -1
  228. package/esm2022/lib/map/shared/map.mjs +1 -1
  229. package/esm2022/lib/map/shared/map.service.mjs +5 -5
  230. package/esm2022/lib/map/shared/map.utils.mjs +1 -1
  231. package/esm2022/lib/map/shared/mapOffline.directive.mjs +11 -8
  232. package/esm2022/lib/map/shared/projection.interfaces.mjs +1 -1
  233. package/esm2022/lib/map/shared/projection.service.mjs +7 -7
  234. package/esm2022/lib/map/shared/projection.utils.mjs +60 -1
  235. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +6 -6
  236. package/esm2022/lib/map/utils/layer-watcher.mjs +1 -1
  237. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +26 -16
  238. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +13 -9
  239. package/esm2022/lib/measure/index.mjs +2 -3
  240. package/esm2022/lib/measure/measure.module.mjs +8 -5
  241. package/esm2022/lib/measure/measurer/index.mjs +6 -0
  242. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +6 -5
  243. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +18 -11
  244. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +27 -13
  245. package/esm2022/lib/measure/measurer/measurer.component.mjs +40 -20
  246. package/esm2022/lib/measure/measurer/measurer.module.mjs +7 -69
  247. package/esm2022/lib/measure/shared/measure.enum.mjs +1 -1
  248. package/esm2022/lib/measure/shared/measure.interfaces.mjs +1 -1
  249. package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
  250. package/esm2022/lib/metadata/index.mjs +2 -1
  251. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +35 -18
  252. package/esm2022/lib/metadata/metadata.module.mjs +14 -31
  253. package/esm2022/lib/metadata/shared/metadata.interface.mjs +1 -1
  254. package/esm2022/lib/metadata/shared/metadata.service.mjs +5 -5
  255. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +7 -7
  256. package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +1 -1
  257. package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +1 -1
  258. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +8 -10
  259. package/esm2022/lib/offline/layerDB/index.mjs +1 -1
  260. package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +1 -1
  261. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +5 -5
  262. package/esm2022/lib/offline/shared/geo-network.service.mjs +7 -7
  263. package/esm2022/lib/overlay/overlay.module.mjs +10 -8
  264. package/esm2022/lib/overlay/shared/overlay.directive.mjs +8 -7
  265. package/esm2022/lib/overlay/shared/overlay.enum.mjs +1 -1
  266. package/esm2022/lib/overlay/shared/overlay.mjs +1 -1
  267. package/esm2022/lib/overlay/shared/overlay.service.mjs +5 -5
  268. package/esm2022/lib/overlay/shared/overlay.utils.mjs +1 -1
  269. package/esm2022/lib/print/print/print.component.mjs +8 -8
  270. package/esm2022/lib/print/print-form/print-form.component.mjs +49 -17
  271. package/esm2022/lib/print/print.module.mjs +10 -54
  272. package/esm2022/lib/print/shared/geopdf.mjs +1 -1
  273. package/esm2022/lib/print/shared/print.interface.mjs +1 -1
  274. package/esm2022/lib/print/shared/print.service.mjs +180 -127
  275. package/esm2022/lib/print/shared/print.type.mjs +1 -1
  276. package/esm2022/lib/query/query.module.mjs +7 -8
  277. package/esm2022/lib/query/shared/index.mjs +2 -1
  278. package/esm2022/lib/query/shared/query-search-source.mjs +6 -6
  279. package/esm2022/lib/query/shared/query-search-source.providers.mjs +2 -2
  280. package/esm2022/lib/query/shared/query.directive.mjs +8 -7
  281. package/esm2022/lib/query/shared/query.interfaces.mjs +1 -1
  282. package/esm2022/lib/query/shared/query.service.mjs +8 -10
  283. package/esm2022/lib/query/shared/query.utils.mjs +1 -1
  284. package/esm2022/lib/search/index.mjs +3 -5
  285. package/esm2022/lib/search/search-bar/search-bar.component.mjs +42 -19
  286. package/esm2022/lib/search/search-bar/search-bar.module.mjs +8 -61
  287. package/esm2022/lib/search/search-results/index.mjs +5 -0
  288. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +44 -19
  289. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +34 -18
  290. package/esm2022/lib/search/search-results/search-results-item.component.mjs +23 -12
  291. package/esm2022/lib/search/search-results/search-results.component.mjs +28 -14
  292. package/esm2022/lib/search/search-results/search-results.directive.mjs +7 -0
  293. package/esm2022/lib/search/search-results/search-results.module.mjs +8 -91
  294. package/esm2022/lib/search/search-selector/search-selector.component.mjs +27 -12
  295. package/esm2022/lib/search/search-selector/search-selector.module.mjs +8 -44
  296. package/esm2022/lib/search/search-settings/search-settings.component.mjs +40 -15
  297. package/esm2022/lib/search/search-settings/search-settings.module.mjs +7 -47
  298. package/esm2022/lib/search/search.module.mjs +24 -13
  299. package/esm2022/lib/search/shared/index.mjs +2 -1
  300. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +11 -10
  301. package/esm2022/lib/search/shared/search-source-service.providers.mjs +1 -1
  302. package/esm2022/lib/search/shared/search-source.service.mjs +1 -1
  303. package/esm2022/lib/search/shared/search.enums.mjs +1 -1
  304. package/esm2022/lib/search/shared/search.interfaces.mjs +1 -1
  305. package/esm2022/lib/search/shared/search.provider.mjs +20 -0
  306. package/esm2022/lib/search/shared/search.service.mjs +32 -13
  307. package/esm2022/lib/search/shared/search.utils.mjs +2 -2
  308. package/esm2022/lib/search/shared/sources/cadastre.mjs +13 -10
  309. package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +11 -2
  310. package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
  311. package/esm2022/lib/search/shared/sources/coordinates.mjs +16 -14
  312. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +14 -2
  313. package/esm2022/lib/search/shared/sources/icherche-icons.mjs +32 -0
  314. package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
  315. package/esm2022/lib/search/shared/sources/icherche.mjs +28 -21
  316. package/esm2022/lib/search/shared/sources/icherche.providers.mjs +23 -2
  317. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  318. package/esm2022/lib/search/shared/sources/ilayer.mjs +14 -12
  319. package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +14 -2
  320. package/esm2022/lib/search/shared/sources/index.mjs +1 -1
  321. package/esm2022/lib/search/shared/sources/nominatim.mjs +10 -10
  322. package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +10 -2
  323. package/esm2022/lib/search/shared/sources/source.interfaces.mjs +13 -2
  324. package/esm2022/lib/search/shared/sources/source.mjs +1 -1
  325. package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
  326. package/esm2022/lib/search/shared/sources/storedqueries.mjs +17 -15
  327. package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +17 -2
  328. package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
  329. package/esm2022/lib/search/shared/sources/workspace.mjs +12 -11
  330. package/esm2022/lib/search/shared/sources/workspace.providers.mjs +11 -2
  331. package/esm2022/lib/style/index.mjs +1 -1
  332. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +1 -1
  333. package/esm2022/lib/style/shared/feature/feature-style.mjs +3 -2
  334. package/esm2022/lib/style/shared/font.enum.mjs +1 -1
  335. package/esm2022/lib/style/shared/index.mjs +1 -1
  336. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +1 -1
  337. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +1 -1
  338. package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +1 -1
  339. package/esm2022/lib/style/shared/vector/conversion.utils.mjs +1 -1
  340. package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +1 -1
  341. package/esm2022/lib/style/style-list/style-list.module.mjs +5 -5
  342. package/esm2022/lib/style/style-list/style-list.provider.mjs +1 -1
  343. package/esm2022/lib/style/style-list/style-list.service.mjs +5 -5
  344. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +40 -17
  345. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +28 -14
  346. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +13 -9
  347. package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +1 -1
  348. package/esm2022/lib/style/style-service/draw-style.service.mjs +5 -5
  349. package/esm2022/lib/style/style-service/style.service.mjs +4 -4
  350. package/esm2022/lib/style/style.module.mjs +12 -57
  351. package/esm2022/lib/toast/toast.component.mjs +21 -11
  352. package/esm2022/lib/toast/toast.module.mjs +10 -30
  353. package/esm2022/lib/utils/googleLinks.mjs +1 -1
  354. package/esm2022/lib/utils/id-generator.mjs +1 -1
  355. package/esm2022/lib/utils/osmLinks.mjs +1 -1
  356. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +1 -1
  357. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +7 -7
  358. package/esm2022/lib/wkt/shared/wkt.service.mjs +19 -19
  359. package/esm2022/lib/wkt/wkt.module.mjs +8 -5
  360. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +11 -10
  361. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +8 -24
  362. package/esm2022/lib/workspace/confirmation-popup/index.mjs +1 -1
  363. package/esm2022/lib/workspace/shared/edition-workspace.mjs +2 -2
  364. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +19 -14
  365. package/esm2022/lib/workspace/shared/feature-workspace.mjs +2 -2
  366. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +14 -11
  367. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +2 -2
  368. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +14 -11
  369. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +12 -9
  370. package/esm2022/lib/workspace/shared/workspace.utils.mjs +4 -4
  371. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +7 -7
  372. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +8 -13
  373. package/esm2022/lib/workspace/widgets/widgets.mjs +2 -2
  374. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +9 -8
  375. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +8 -10
  376. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +7 -6
  377. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +8 -10
  378. package/esm2022/lib/workspace/workspace.module.mjs +11 -36
  379. package/esm2022/public_api.mjs +11 -12
  380. package/fesm2022/igo2-geo.mjs +23027 -22793
  381. package/fesm2022/igo2-geo.mjs.map +1 -1
  382. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +3 -3
  383. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +2 -2
  384. package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +2 -2
  385. package/lib/catalog/catalog-browser/catalog-browser.module.d.ts +2 -14
  386. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +4 -3
  387. package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +1 -1
  388. package/lib/catalog/catalog-library/catalog-library.component.d.ts +6 -3
  389. package/lib/catalog/catalog-library/catalog-library.module.d.ts +6 -18
  390. package/lib/catalog/catalog-library/index.d.ts +3 -0
  391. package/lib/catalog/catalog.module.d.ts +9 -9
  392. package/lib/catalog/index.d.ts +1 -0
  393. package/lib/catalog/shared/catalog.interface.d.ts +1 -1
  394. package/lib/catalog/shared/catalog.service.d.ts +3 -1
  395. package/lib/datasource/shared/datasource.service.d.ts +4 -5
  396. package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +2 -3
  397. package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +2 -3
  398. package/lib/datasource/shared/datasources/datasource.d.ts +1 -2
  399. package/lib/datasource/shared/datasources/feature-datasource.d.ts +2 -3
  400. package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +2 -3
  401. package/lib/datasource/shared/datasources/websocket-datasource.d.ts +1 -2
  402. package/lib/datasource/shared/datasources/wfs-datasource.d.ts +2 -3
  403. package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +1 -2
  404. package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +1 -2
  405. package/lib/datasource/shared/options/options-api.providers.d.ts +1 -1
  406. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +4 -2
  407. package/lib/directions/directions-inputs/directions-inputs.component.d.ts +2 -2
  408. package/lib/directions/directions-results/directions-results.component.d.ts +2 -2
  409. package/lib/directions/directions-sources/directions-source.d.ts +7 -3
  410. package/lib/directions/directions-sources/directions-source.interface.d.ts +19 -6
  411. package/lib/directions/directions-sources/directions-source.provider.d.ts +3 -1
  412. package/lib/directions/directions-sources/osrm-directions-source.d.ts +20 -11
  413. package/lib/directions/directions.component.d.ts +16 -4
  414. package/lib/directions/directions.module.d.ts +4 -16
  415. package/lib/directions/directions.provider.d.ts +3 -0
  416. package/lib/directions/index.d.ts +1 -0
  417. package/lib/directions/shared/directions.interface.d.ts +2 -9
  418. package/lib/directions/shared/directions.service.d.ts +7 -3
  419. package/lib/directions/shared/directions.utils.d.ts +2 -2
  420. package/lib/directions/shared/store.d.ts +1 -1
  421. package/lib/download/download-button/download-button.component.d.ts +1 -1
  422. package/lib/download/download.module.d.ts +4 -6
  423. package/lib/download/shared/download.service.d.ts +1 -1
  424. package/lib/draw/draw/draw-layer-popup.component.d.ts +1 -1
  425. package/lib/draw/draw/draw-popup.component.d.ts +5 -5
  426. package/lib/draw/draw/draw-shorcuts.component.d.ts +3 -1
  427. package/lib/draw/draw/draw.component.d.ts +3 -3
  428. package/lib/draw/draw/draw.module.d.ts +2 -25
  429. package/lib/draw/drawingTool.module.d.ts +3 -0
  430. package/lib/draw/shared/draw-icon.service.d.ts +1 -1
  431. package/lib/environment/environment.interface.d.ts +2 -1
  432. package/lib/feature/feature-details/feature-details.component.d.ts +8 -5
  433. package/lib/feature/feature-details/feature-details.directive.d.ts +1 -1
  434. package/lib/feature/feature-details/feature-details.module.d.ts +5 -6
  435. package/lib/feature/feature-details/index.d.ts +3 -0
  436. package/lib/feature/feature-form/feature-form.component.d.ts +2 -3
  437. package/lib/feature/feature-form/feature-form.module.d.ts +2 -4
  438. package/lib/feature/feature.module.d.ts +9 -4
  439. package/lib/feature/index.d.ts +2 -1
  440. package/lib/feature/shared/feature.interfaces.d.ts +1 -1
  441. package/lib/feature/shared/feature.utils.d.ts +1 -1
  442. package/lib/feature/shared/store.d.ts +1 -1
  443. package/lib/feature/shared/strategies/geo-properties.d.ts +1 -1
  444. package/lib/feature/shared/strategies/in-map-extent.d.ts +1 -1
  445. package/lib/feature/shared/strategies/in-map-resolution.d.ts +1 -1
  446. package/lib/feature/shared/strategies/loading-layer.d.ts +1 -1
  447. package/lib/feature/shared/strategies/loading.d.ts +1 -1
  448. package/lib/feature/shared/strategies/search.d.ts +1 -1
  449. package/lib/feature/shared/strategies/selection.d.ts +1 -1
  450. package/lib/filter/filter.module.d.ts +23 -28
  451. package/lib/filter/index.d.ts +1 -0
  452. package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +3 -3
  453. package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +3 -3
  454. package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +5 -5
  455. package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +1 -1
  456. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +5 -5
  457. package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +3 -3
  458. package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +3 -3
  459. package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +1 -1
  460. package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +3 -3
  461. package/lib/filter/shared/filterable-datasource.pipe.d.ts +1 -1
  462. package/lib/filter/shared/ogc-filter.d.ts +7 -0
  463. package/lib/filter/shared/ogc-filter.interface.d.ts +2 -3
  464. package/lib/filter/shared/spatial-filter.service.d.ts +2 -1
  465. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +7 -6
  466. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +3 -3
  467. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +2 -2
  468. package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
  469. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +3 -3
  470. package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
  471. package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +1 -1
  472. package/lib/filter/time-filter-list/time-filter-list.component.d.ts +1 -1
  473. package/lib/geo.module.d.ts +14 -24
  474. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +2 -3
  475. package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +1 -1
  476. package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +5 -10
  477. package/lib/geometry/geometry-form-field/index.d.ts +3 -0
  478. package/lib/geometry/geometry.module.d.ts +5 -3
  479. package/lib/geometry/index.d.ts +1 -2
  480. package/lib/geometry/shared/controls/draw.d.ts +4 -4
  481. package/lib/geometry/shared/controls/slice.d.ts +4 -4
  482. package/lib/geometry/shared/geometry.interfaces.d.ts +1 -1
  483. package/lib/import-export/export-button/export-button.component.d.ts +1 -1
  484. package/lib/import-export/import-export/import-export.component.d.ts +7 -4
  485. package/lib/import-export/import-export.module.d.ts +8 -15
  486. package/lib/import-export/index.d.ts +1 -0
  487. package/lib/import-export/shared/drop-geo-file.directive.d.ts +5 -5
  488. package/lib/import-export/shared/export.service.d.ts +1 -1
  489. package/lib/import-export/shared/export.utils.d.ts +2 -2
  490. package/lib/import-export/shared/import.service.d.ts +1 -1
  491. package/lib/import-export/shared/import.utils.d.ts +2 -2
  492. package/lib/layer/index.d.ts +1 -0
  493. package/lib/layer/layer-item/layer-item.component.d.ts +2 -2
  494. package/lib/layer/layer-legend/layer-legend.component.d.ts +3 -2
  495. package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +2 -2
  496. package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +1 -1
  497. package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +1 -1
  498. package/lib/layer/layer-list/layer-list-binding.directive.d.ts +2 -2
  499. package/lib/layer/layer-list/layer-list.component.d.ts +1 -1
  500. package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +1 -1
  501. package/lib/layer/layer.module.d.ts +14 -18
  502. package/lib/layer/shared/layer.service.d.ts +1 -1
  503. package/lib/layer/shared/layers/image-layer.d.ts +1 -1
  504. package/lib/layer/shared/layers/layer.d.ts +1 -1
  505. package/lib/layer/shared/layers/layer.interface.d.ts +1 -1
  506. package/lib/layer/shared/layers/tile-layer.d.ts +1 -1
  507. package/lib/layer/shared/layers/vector-layer.d.ts +4 -5
  508. package/lib/layer/shared/layers/vector-layer.interface.d.ts +1 -2
  509. package/lib/layer/shared/layers/vectortile-layer.d.ts +1 -1
  510. package/lib/layer/track-feature-button/track-feature-button.component.d.ts +1 -1
  511. package/lib/layer/utils/image-watcher.d.ts +1 -1
  512. package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +2 -2
  513. package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +1 -1
  514. package/lib/map/geolocate-button/geolocate-button.component.d.ts +2 -2
  515. package/lib/map/home-extent-button/home-extent-button.component.d.ts +2 -2
  516. package/lib/map/info-section/info-section.component.d.ts +1 -1
  517. package/lib/map/map-browser/map-browser.component.d.ts +2 -2
  518. package/lib/map/map-center/map-center.component.d.ts +1 -1
  519. package/lib/map/map.module.d.ts +35 -21
  520. package/lib/map/menu-button/menu-button.component.d.ts +2 -2
  521. package/lib/map/offline-button/offline-button.component.d.ts +2 -2
  522. package/lib/map/rotation-button/rotation-button.component.d.ts +1 -1
  523. package/lib/map/shared/controllers/geolocation.d.ts +2 -1
  524. package/lib/map/shared/hover-feature.directive.d.ts +2 -2
  525. package/lib/map/shared/map-pointer-position.directive.d.ts +2 -2
  526. package/lib/map/shared/map.d.ts +2 -1
  527. package/lib/map/shared/mapOffline.directive.d.ts +3 -2
  528. package/lib/map/shared/projection.service.d.ts +1 -1
  529. package/lib/map/shared/projection.utils.d.ts +11 -0
  530. package/lib/map/swipe-control/swipe-control.component.d.ts +1 -1
  531. package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +2 -2
  532. package/lib/map/zoom-button/zoom-button.component.d.ts +1 -1
  533. package/lib/measure/index.d.ts +1 -2
  534. package/lib/measure/measure.module.d.ts +3 -0
  535. package/lib/measure/measurer/index.d.ts +5 -0
  536. package/lib/measure/measurer/measure-format.pipe.d.ts +1 -1
  537. package/lib/measure/measurer/measurer-dialog.component.d.ts +1 -1
  538. package/lib/measure/measurer/measurer-item.component.d.ts +1 -1
  539. package/lib/measure/measurer/measurer.component.d.ts +4 -4
  540. package/lib/measure/measurer/measurer.module.d.ts +3 -18
  541. package/lib/measure/shared/measure.utils.d.ts +1 -1
  542. package/lib/metadata/index.d.ts +1 -0
  543. package/lib/metadata/metadata-button/metadata-button.component.d.ts +2 -2
  544. package/lib/metadata/metadata.module.d.ts +6 -7
  545. package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -1
  546. package/lib/offline/geoDB/geoDB.service.d.ts +2 -3
  547. package/lib/offline/shared/geo-network.service.d.ts +1 -1
  548. package/lib/overlay/overlay.module.d.ts +4 -1
  549. package/lib/overlay/shared/overlay.directive.d.ts +1 -1
  550. package/lib/print/print/print.component.d.ts +1 -1
  551. package/lib/print/print-form/print-form.component.d.ts +5 -2
  552. package/lib/print/print.module.d.ts +4 -12
  553. package/lib/print/shared/print.interface.d.ts +1 -0
  554. package/lib/print/shared/print.service.d.ts +31 -18
  555. package/lib/query/query.module.d.ts +4 -4
  556. package/lib/query/shared/index.d.ts +1 -0
  557. package/lib/query/shared/query-search-source.providers.d.ts +1 -1
  558. package/lib/query/shared/query.directive.d.ts +1 -1
  559. package/lib/query/shared/query.interfaces.d.ts +1 -2
  560. package/lib/query/shared/query.service.d.ts +2 -3
  561. package/lib/search/index.d.ts +2 -4
  562. package/lib/search/search-bar/search-bar.component.d.ts +4 -3
  563. package/lib/search/search-bar/search-bar.module.d.ts +2 -16
  564. package/lib/search/search-results/index.d.ts +4 -0
  565. package/lib/search/search-results/save-feature-dialog.component.d.ts +2 -2
  566. package/lib/search/search-results/search-results-add-button.component.d.ts +4 -4
  567. package/lib/search/search-results/search-results-item.component.d.ts +1 -1
  568. package/lib/search/search-results/search-results.component.d.ts +3 -3
  569. package/lib/search/search-results/search-results.directive.d.ts +3 -0
  570. package/lib/search/search-results/search-results.module.d.ts +3 -21
  571. package/lib/search/search-selector/search-selector.component.d.ts +1 -1
  572. package/lib/search/search-selector/search-selector.module.d.ts +2 -11
  573. package/lib/search/search-settings/search-settings.component.d.ts +3 -2
  574. package/lib/search/search-settings/search-settings.module.d.ts +2 -12
  575. package/lib/search/search.module.d.ts +14 -7
  576. package/lib/search/shared/index.d.ts +1 -0
  577. package/lib/search/shared/search-pointer-summary.directive.d.ts +2 -2
  578. package/lib/search/shared/search-source.service.d.ts +1 -1
  579. package/lib/search/shared/search.interfaces.d.ts +12 -10
  580. package/lib/search/shared/search.provider.d.ts +8 -0
  581. package/lib/search/shared/search.service.d.ts +8 -3
  582. package/lib/search/shared/sources/cadastre.d.ts +2 -1
  583. package/lib/search/shared/sources/cadastre.providers.d.ts +6 -2
  584. package/lib/search/shared/sources/coordinates.d.ts +2 -1
  585. package/lib/search/shared/sources/coordinates.providers.d.ts +6 -2
  586. package/lib/search/shared/sources/icherche-icons.d.ts +7 -0
  587. package/lib/search/shared/sources/icherche.d.ts +2 -1
  588. package/lib/search/shared/sources/icherche.providers.d.ts +10 -14
  589. package/lib/search/shared/sources/ilayer.d.ts +2 -1
  590. package/lib/search/shared/sources/ilayer.providers.d.ts +6 -2
  591. package/lib/search/shared/sources/nominatim.d.ts +1 -1
  592. package/lib/search/shared/sources/nominatim.providers.d.ts +5 -2
  593. package/lib/search/shared/sources/source.d.ts +2 -2
  594. package/lib/search/shared/sources/source.interfaces.d.ts +16 -0
  595. package/lib/search/shared/sources/storedqueries.d.ts +2 -1
  596. package/lib/search/shared/sources/storedqueries.providers.d.ts +8 -3
  597. package/lib/search/shared/sources/workspace.d.ts +2 -1
  598. package/lib/search/shared/sources/workspace.providers.d.ts +6 -2
  599. package/lib/style/shared/vector/conversion.utils.d.ts +2 -3
  600. package/lib/style/style-modal/drawing/style-modal-drawing.component.d.ts +1 -1
  601. package/lib/style/style-modal/layer/style-modal-layer.component.d.ts +1 -1
  602. package/lib/style/style-modal/layer-button/style-modal-layer-button.component.d.ts +1 -1
  603. package/lib/style/style.module.d.ts +5 -16
  604. package/lib/toast/toast.component.d.ts +2 -2
  605. package/lib/toast/toast.module.d.ts +4 -6
  606. package/lib/utils/propertyTypeDetector/propertyTypeDetector.service.d.ts +1 -1
  607. package/lib/wkt/shared/wkt.service.d.ts +1 -1
  608. package/lib/wkt/wkt.module.d.ts +3 -0
  609. package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +2 -2
  610. package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +2 -6
  611. package/lib/workspace/shared/edition-workspace.d.ts +2 -2
  612. package/lib/workspace/shared/edition-workspace.service.d.ts +5 -2
  613. package/lib/workspace/shared/feature-workspace.d.ts +1 -1
  614. package/lib/workspace/shared/feature-workspace.service.d.ts +2 -1
  615. package/lib/workspace/shared/wfs-workspace.d.ts +1 -1
  616. package/lib/workspace/shared/wfs-workspace.service.d.ts +2 -1
  617. package/lib/workspace/shared/wms-workspace.service.d.ts +2 -1
  618. package/lib/workspace/shared/workspace.utils.d.ts +2 -1
  619. package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +3 -2
  620. package/lib/workspace/widgets/ogc-filter/ogc-filter.module.d.ts +2 -6
  621. package/lib/workspace/widgets/widgets.d.ts +1 -1
  622. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +2 -2
  623. package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +2 -3
  624. package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +2 -2
  625. package/lib/workspace/workspace-updator/workspace-updator.module.d.ts +2 -3
  626. package/lib/workspace/workspace.module.d.ts +5 -9
  627. package/locale/en.geo.json +824 -818
  628. package/locale/fr.geo.json +825 -819
  629. package/package.json +14 -12
  630. package/public_api.d.ts +10 -11
  631. package/src/_index.scss +2 -2
  632. package/src/geo-theme.scss +23 -23
  633. package/src/lib/catalog/catalog-browser/catalog-browser.theming.scss +22 -22
  634. package/src/lib/catalog/catalog.theming.scss +5 -5
  635. package/src/lib/directions/directions-results/directions-results.theming.scss +10 -10
  636. package/src/lib/directions/directions.theming.scss +6 -6
  637. package/src/lib/draw/draw.theming.scss +32 -32
  638. package/src/lib/feature/feature-details/feature-details.theming.scss +16 -16
  639. package/src/lib/feature/feature.theming.scss +4 -4
  640. package/src/lib/filter/filter.theming.scss +13 -13
  641. package/src/lib/filter/ogc-filter-selection/ogc-filter-selection.theming.scss +18 -18
  642. package/src/lib/filter/time-filter-form/time-filter-form.theming.scss +5 -5
  643. package/src/lib/layer/layer-item/layer-item.theme.scss +33 -33
  644. package/src/lib/layer/layer-legend/layer-legend.theming.scss +10 -10
  645. package/src/lib/layer/layer-list-tool/layer-list-tool.theming.scss +34 -34
  646. package/src/lib/layer/layer.theming.scss +10 -10
  647. package/src/lib/map/map-browser/map-browser.theming.scss +46 -46
  648. package/src/lib/map/map.theming.scss +9 -9
  649. package/src/lib/map/menu-button/menu-button.theming.scss +20 -20
  650. package/src/lib/map/zoom-button/zoom-button.theming.scss +32 -32
  651. package/src/lib/measure/measure.theming.scss +5 -5
  652. package/src/lib/measure/measurer/measurer.theming.scss +26 -26
  653. package/src/lib/search/search-bar/search-bar.theming.scss +33 -33
  654. package/src/lib/search/search-results/search-results-item.theme.scss +20 -20
  655. package/src/lib/search/search.theming.scss +7 -7
  656. package/src/lib/workspace/confirmation-popup/confirmation-popup.theming.scss +14 -14
  657. package/src/lib/workspace/workspace.theming.scss +6 -6
  658. package/src/style/style.scss +1 -1
  659. package/style/style.css +2 -1
  660. package/esm2022/lib/datasource/datasource.module.mjs +0 -22
  661. package/esm2022/lib/search/search-bar/search-url-param.directive.mjs +0 -40
  662. package/lib/datasource/datasource.module.d.ts +0 -8
  663. package/lib/search/search-bar/search-url-param.directive.d.ts +0 -13
@@ -1,6 +1,6 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { Injectable } from '@angular/core';
3
- import { LanguageService, MessageService } from '@igo2/core';
3
+ import { MessageService } from '@igo2/core/message';
4
4
  import { uuid } from '@igo2/utils';
5
5
  import * as olextent from 'ol/extent';
6
6
  import * as olformat from 'ol/format';
@@ -16,19 +16,17 @@ import { FEATURE } from '../../feature/shared/feature.enums';
16
16
  import { QueryFormat, QueryFormatMimeType, QueryHtmlTarget } from './query.enums';
17
17
  import * as i0 from "@angular/core";
18
18
  import * as i1 from "@angular/common/http";
19
- import * as i2 from "@igo2/core";
19
+ import * as i2 from "@igo2/core/message";
20
20
  export class QueryService {
21
21
  http;
22
22
  messageService;
23
- languageService;
24
23
  queryEnabled = true;
25
24
  defaultFeatureCount = 20; // default feature count
26
25
  featureCount = 20; // feature count
27
26
  previousMessageIds = [];
28
- constructor(http, messageService, languageService) {
27
+ constructor(http, messageService) {
29
28
  this.http = http;
30
29
  this.messageService = messageService;
31
- this.languageService = languageService;
32
30
  }
33
31
  query(layers, options) {
34
32
  if (this.previousMessageIds.length) {
@@ -741,13 +739,13 @@ export class QueryService {
741
739
  return data;
742
740
  });
743
741
  }
744
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QueryService, deps: [{ token: i1.HttpClient }, { token: i2.MessageService }, { token: i2.LanguageService }], target: i0.ɵɵFactoryTarget.Injectable });
745
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QueryService, providedIn: 'root' });
742
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: QueryService, deps: [{ token: i1.HttpClient }, { token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
743
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: QueryService, providedIn: 'root' });
746
744
  }
747
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: QueryService, decorators: [{
745
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: QueryService, decorators: [{
748
746
  type: Injectable,
749
747
  args: [{
750
748
  providedIn: 'root'
751
749
  }]
752
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.MessageService }, { type: i2.LanguageService }]; } });
753
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3F1ZXJ5L3NoYXJlZC9xdWVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHbkMsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxnQkFBZ0IsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLFlBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sSUFBSSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFakQsT0FBTyxFQUNMLGVBQWUsRUFDZix5QkFBeUIsRUFDekIsd0JBQXdCLEVBQ3hCLGFBQWEsRUFFZCxNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU83RCxPQUFPLEVBQ0wsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixlQUFlLEVBQ2hCLE1BQU0sZUFBZSxDQUFDOzs7O0FBV3ZCLE1BQU0sT0FBTyxZQUFZO0lBUWI7SUFDQTtJQUNBO0lBVEgsWUFBWSxHQUFHLElBQUksQ0FBQztJQUNwQixtQkFBbUIsR0FBRyxFQUFFLENBQUMsQ0FBQyx3QkFBd0I7SUFDbEQsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQjtJQUVsQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFFaEMsWUFDVSxJQUFnQixFQUNoQixjQUE4QixFQUM5QixlQUFnQztRQUZoQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFDdkMsQ0FBQztJQUVKLEtBQUssQ0FBQyxNQUFlLEVBQUUsT0FBcUI7UUFDMUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE1BQU0sU0FBUyxHQUFHLE1BQU07YUFDckIsTUFBTSxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQzthQUNyRSxHQUFHLENBQUMsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDMUQsd0VBQXdFO1FBQ3hFLHFIQUFxSDtRQUNySCwrQkFBK0I7UUFDL0IsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxVQUFVLENBQ1IsS0FBWSxFQUNaLE9BQXFCO1FBRXJCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQzFCLEtBQUssQ0FBQyxVQUFVLEVBQ2hCLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLENBQ3JDLENBQUM7UUFDRixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1IsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDZjtRQUVELE1BQU0sVUFBVSxHQUFXLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BFLE1BQU0sS0FBSyxHQUFXLEtBQUssQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTFELElBQ0csS0FBSyxDQUFDLFVBQWtDLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDN0QsV0FBVyxDQUFDLFFBQVEsRUFDcEI7WUFDQSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtnQkFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDN0IsS0FBSyxDQUFDLFVBQVUsRUFDaEIsT0FBTyxFQUNQLElBQUksQ0FDSyxDQUFDO2dCQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN6RCxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNwRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJO3lCQUNiLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7eUJBQ2xDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNWLElBQUksQ0FBQyxXQUFXLENBQ2QsR0FBRyxFQUNILEtBQUssRUFDTCxPQUFPLEVBQ1AsR0FBRyxFQUNILFdBQVcsRUFDWCxpQkFBaUIsQ0FDbEIsQ0FDRixDQUNGLENBQUM7Z0JBQ04sQ0FBQyxDQUFDLENBQ0gsQ0FBQzthQUNIO1lBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsRSxJQUFJLFdBQVcsR0FBUSxFQUFFLENBQUM7WUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3ZDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQWlCLENBQUM7Z0JBQzNDLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQzVELFdBQVcsQ0FBQyxJQUFJLENBQ2QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQ3JFLENBQUM7aUJBQ0g7YUFDRjtZQUNELE9BQU8sV0FBVyxDQUFDO1NBQ3BCO2FBQU07WUFDTCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtnQkFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzdELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FDakIsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQ3pELENBQUM7YUFDSDtZQUNELElBQUksV0FBVyxHQUFRLEVBQUUsQ0FBQztZQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDbkMsTUFBTSxPQUFPLEdBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDNUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUNyRSxXQUFXLENBQUMsSUFBSSxDQUNkLE9BQU8sQ0FBQyxJQUFJLENBQ1YsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNqRSxDQUNGLENBQUM7aUJBQ0g7YUFDRjtZQUNELE9BQU8sV0FBVyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQixDQUM1QixNQUFjLEVBQ2QsR0FBVyxFQUNYLEtBQVksRUFDWixPQUFxQjtRQUVyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDekQsUUFBUSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJO2lCQUNiLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7aUJBQ2xDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNWLElBQUksQ0FBQyxXQUFXLENBQ2QsR0FBRyxFQUNILEtBQUssRUFDTCxPQUFPLEVBQ1AsR0FBRyxFQUNILFdBQVcsRUFDWCxpQkFBaUIsQ0FDbEIsQ0FDRixDQUNGLENBQUM7UUFDTixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLHVCQUF1QixDQUM3QixVQUFrQixFQUNsQixLQUFhLEVBQ2IsT0FBcUI7UUFFckIsSUFBSSxVQUFtQixDQUFDO1FBQ3hCLElBQUksZUFBd0IsQ0FBQztRQUU3QixJQUNFLENBQUMsT0FBTyxDQUFDLGFBQWE7WUFDdEIsQ0FBQyxPQUFPLENBQUMsYUFBYTtZQUN0QixDQUFDLE9BQU8sQ0FBQyxRQUFRO1lBQ2pCLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFDakI7WUFDQSxPQUFPLElBQUksQ0FBQztTQUNiO2FBQU07WUFDTCw2REFBNkQ7WUFDN0QsSUFBSSxPQUFPLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUU7Z0JBQ2xELDhFQUE4RTtnQkFDOUUsSUFDRSxVQUFVLElBQUksT0FBTyxDQUFDLGFBQWE7b0JBQ25DLFVBQVUsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUNuQztvQkFDQSxlQUFlLEdBQUcsSUFBSSxDQUFDO2lCQUN4QjthQUNGO2lCQUFNO2dCQUNMLHFEQUFxRDtnQkFDckQsSUFBSSxPQUFPLENBQUMsYUFBYSxJQUFJLFVBQVUsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFO29CQUNoRSxlQUFlLEdBQUcsSUFBSSxDQUFDO2lCQUN4QjtnQkFDRCxJQUFJLE9BQU8sQ0FBQyxhQUFhLElBQUksVUFBVSxJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUU7b0JBQ2hFLGVBQWUsR0FBRyxJQUFJLENBQUM7aUJBQ3hCO2FBQ0Y7WUFFRCx3REFBd0Q7WUFDeEQsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3hDLGdFQUFnRTtnQkFDaEUsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRTtvQkFDeEQsVUFBVSxHQUFHLElBQUksQ0FBQztpQkFDbkI7YUFDRjtpQkFBTTtnQkFDTCwyQ0FBMkM7Z0JBQzNDLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtvQkFDakQsVUFBVSxHQUFHLElBQUksQ0FBQztpQkFDbkI7Z0JBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLEtBQUssSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO29CQUNqRCxVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUNuQjthQUNGO1lBRUQsNERBQTREO1lBQzVELElBQUksVUFBVSxLQUFLLElBQUksSUFBSSxlQUFlLEtBQUssSUFBSSxFQUFFO2dCQUNuRCxPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNLElBQ0wsQ0FBQyxlQUFlLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUN6QyxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsRUFDekM7Z0JBQ0EsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sUUFBUSxDQUNkLE1BQU0sRUFDTixHQUFHLEVBQ0gsS0FBWTtRQUVaLE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyw2Q0FBNkM7UUFDN0MsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN6QixNQUFNLFNBQVMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ25ELFFBQVEsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLElBQUksR0FBRyxDQUFDO1FBQ1IsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQyxJQUFJLGdCQUFnQixDQUFDO1FBQ3JCLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFFbkMsbUNBQW1DO1FBQ25DLGdGQUFnRjtRQUNoRixNQUFNLFlBQVksR0FBUSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksWUFBWSxDQUFDO1FBQ2pCLElBQUksY0FBYyxDQUFDO1FBQ25CLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO1lBQ2xDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNO2lCQUMzQyxPQUFxQyxDQUFDO1lBQ3pDLElBQUksaUJBQWlCLENBQUMsVUFBVSxFQUFFO2dCQUNoQyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDO2FBQy9DO1NBQ0Y7UUFDRCxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxjQUFjLEVBQUU7Z0JBQ2xCLElBQUksaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLGlCQUFpQixFQUFFO29CQUNyQixZQUFZLEdBQUcsQ0FBQyxZQUFZO3dCQUMxQixDQUFDLENBQUMsaUJBQWlCO3dCQUNuQixDQUFDLENBQUMsR0FBRyxZQUFZLElBQUksaUJBQWlCLEVBQUUsQ0FBQztpQkFDNUM7YUFDRjtZQUNEOzs7ZUFHRztZQUNILE1BQU0sMEJBQTBCLEdBQzlCLE9BQU8sQ0FBQyxXQUFXLEVBQ3BCLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFNUQsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN2QyxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQzthQUN4QztZQUNELElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ2xCLFFBQVEsbUJBQW1CLEVBQUU7b0JBQzNCLEtBQUssT0FBTzt3QkFDVixJQUFJLFVBQVUsS0FBSyxDQUFDLEVBQUU7NEJBQ3BCLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLENBQUM7eUJBQzFEOzZCQUFNOzRCQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQzt5QkFDM0M7d0JBQ0QsTUFBTTtvQkFDUixLQUFLLFlBQVk7d0JBQ2YsT0FBTyxDQUFDLGdCQUFnQixDQUN0QixJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLENBQ3hELENBQUM7d0JBQ0YsTUFBTTtvQkFDUixLQUFLLFNBQVM7d0JBQ1osT0FBTyxDQUFDLGFBQWEsQ0FDbkIsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxDQUNyRCxDQUFDO3dCQUNGLE1BQU07b0JBQ1IsS0FBSyxjQUFjO3dCQUNqQixPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUNwRSxNQUFNO29CQUNSO3dCQUNFLE9BQU87aUJBQ1Y7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxNQUFNLENBQUM7UUFDWCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRTtZQUNoQyxNQUFNLEdBQUc7Z0JBQ1AsSUFBSSxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUU7Z0JBQ25CLFdBQVcsRUFBRSxHQUFHLENBQUMsY0FBYyxFQUFFO2FBQ2xDLENBQUM7U0FDSDthQUFNO1lBQ0wsTUFBTSxHQUFHO2dCQUNQLElBQUksRUFBRSxTQUFTO2dCQUNmLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDekMsQ0FBQztTQUNIO1FBRUQsSUFBSSxjQUFjLENBQUM7UUFDbkIsUUFBUSxnQkFBZ0IsRUFBRTtZQUN4QixLQUFLLFlBQVk7Z0JBQ2YsY0FBYyxHQUFHO29CQUNmLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUN2QixXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRTtpQkFDdEMsQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLGNBQWMsR0FBRyxNQUFNLENBQUM7Z0JBQ3hCLE1BQU07WUFDUixLQUFLLFNBQVM7Z0JBQ1osY0FBYyxHQUFHO29CQUNmLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUN2QixXQUFXLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRTtpQkFDdEMsQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSyxjQUFjO2dCQUNqQixjQUFjLEdBQUc7b0JBQ2YsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUU7b0JBQ3ZCLFdBQVcsRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFO2lCQUN0QyxDQUFDO2dCQUNGLE1BQU07U0FDVDtRQUNELE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO1FBRTdCLElBQUksY0FBYyxFQUFFO1lBQ2xCLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxHQUFHLFlBQVksQ0FBQztTQUNsRDtRQUVELE9BQU8sQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsTUFBTTtRQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQzFCLE9BQ0UsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFDeEU7Z0JBQ0EsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO2FBQ2I7WUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25CO1FBRUQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxPQUNFLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztnQkFDakIsSUFBSSxDQUFDLEtBQUssQ0FDUixLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFDdkIsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FDVixJQUFJLENBQUMsRUFDTjtnQkFDQSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDYjtZQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdkI7UUFFRCxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDWixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDWixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLFdBQVcsQ0FDakIsR0FBRyxFQUNILEtBQVksRUFDWixPQUFxQixFQUNyQixHQUFXLEVBQ1gsZUFBZ0IsRUFDaEIsaUJBQTBDO1FBRTFDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxVQUFpQyxDQUFDO1FBRWhFLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25FLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixRQUFRLGVBQWUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO1lBQzNDLEtBQUssV0FBVyxDQUFDLElBQUk7Z0JBQ25CLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUM3QixHQUFHLEVBQ0gsS0FBSyxDQUFDLE1BQU0sRUFDWixxQkFBcUIsQ0FDdEIsQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3RCLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQztZQUN6QixLQUFLLFdBQVcsQ0FBQyxRQUFRO2dCQUN2QixRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUNoQyxHQUFHLEVBQ0gsS0FBSyxDQUFDLE1BQU0sRUFDWixxQkFBcUIsQ0FDdEIsQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSyxXQUFXLENBQUMsUUFBUTtnQkFDdkIsUUFBUSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FDakMsR0FBRyxFQUNILEtBQUssQ0FBQyxNQUFNLEVBQ1oscUJBQXFCLENBQ3RCLENBQUM7Z0JBQ0YsTUFBTTtZQUNSLEtBQUssV0FBVyxDQUFDLElBQUk7Z0JBQ25CLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNO1lBQ1IsS0FBSyxXQUFXLENBQUMsSUFBSTtnQkFDbkIsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQzdCLEdBQUcsRUFDSCxlQUFlLENBQUMsZUFBZSxFQUMvQixHQUFHLENBQ0osQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSyxXQUFXLENBQUMsUUFBUTtnQkFDdkIsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQzdCLEdBQUcsRUFDSCxlQUFlLENBQUMsZUFBZSxFQUMvQixHQUFHLEVBQ0gsZUFBZSxFQUNmLGlCQUFpQixDQUNsQixDQUFDO2dCQUNGLE1BQU07WUFDUixLQUFLLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDdEI7Z0JBQ0UsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNO1NBQ1Q7UUFDRCxJQUNFLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNuQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUN4RDtZQUNBLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV2RCxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRTtnQkFDOUIsT0FBTyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7YUFDOUI7U0FDRjtRQUVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxVQUEyQixDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsYUFBYTtZQUN0RCxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUNsRCxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFNUQsSUFDRSxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUN0QixDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxhQUFhO2dCQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUM7Z0JBQ3JCLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDdEMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsYUFBYTtvQkFDbkMsUUFBUSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUNsRDtZQUNBLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUN6QywrQkFBK0IsRUFDL0IsU0FBUyxFQUNULFNBQVMsRUFDVCxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQ3ZCLENBQUM7WUFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNsRDtRQUVELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQWdCLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDdEQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFOUQsSUFBSSxPQUFPLENBQUM7WUFDWixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksS0FBSyxLQUFLLEVBQUU7Z0JBQy9DLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPO3FCQUNoQyxhQUFxQyxDQUFDO2dCQUN6QyxPQUFPLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQzthQUN0RTtZQUVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2pDLEtBQUssR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLEtBQUssS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDO2FBQ3pDO2lCQUFNLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ2pCLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ3JCO1lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUU7Z0JBQ2pELEVBQUUsRUFBRSxJQUFJLEVBQUU7Z0JBQ1YsS0FBSztnQkFDTCxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUN4QixLQUFLLEVBQUUsSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNO2dCQUMxQixnQkFBZ0IsRUFBRSxPQUFPO2FBQzFCLENBQUMsQ0FBQztZQUVILE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQzVCLElBQUk7Z0JBQ0osVUFBVSxFQUNSLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU87b0JBQ3RDLENBQUMsQ0FBQyxXQUFXO29CQUNiLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVTthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTywwQkFBMEIsQ0FBQyxHQUFHO1FBQ3BDLE1BQU0sWUFBWSxHQUFRLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQztRQUNsQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxZQUFZLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakUsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxJQUFJLFNBQVMsR0FDWCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUV6RSw0Q0FBNEM7UUFDNUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRTtZQUN2QyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ25CO1FBQ0QsTUFBTSxNQUFNLEdBQ1YsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztnQkFDL0QsS0FBSztZQUNQLFNBQVMsQ0FBQztRQUNaLE1BQU0sTUFBTSxHQUNWLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQy9ELE1BQU07WUFDUixTQUFTLENBQUM7UUFDWixNQUFNLE9BQU8sR0FBRyxNQUFNLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUN2QyxNQUFNLE9BQU8sR0FBRyxNQUFNLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUV2QyxNQUFNLE9BQU8sR0FDWCxXQUFXO1lBQ1gsTUFBTTtZQUNOLEdBQUc7WUFDSCxNQUFNO1lBQ04sSUFBSTtZQUNKLE1BQU07WUFDTixHQUFHO1lBQ0gsT0FBTztZQUNQLElBQUk7WUFDSixPQUFPO1lBQ1AsR0FBRztZQUNILE9BQU87WUFDUCxJQUFJO1lBQ0osT0FBTztZQUNQLEdBQUc7WUFDSCxNQUFNO1lBQ04sSUFBSTtZQUNKLE1BQU07WUFDTixHQUFHO1lBQ0gsTUFBTTtZQUNOLElBQUksQ0FBQztRQUVQLE1BQU0sTUFBTSxHQUFHLElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxNQUFNLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxXQUFXLEVBQVMsQ0FBQztRQUVuRCxNQUFNLE9BQU8sR0FBRztZQUNkLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQ2pCLFdBQVcsRUFBRSxDQUFDLENBQUMsY0FBYyxFQUFFO1NBQ2hDLENBQUM7UUFFRixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUscUJBQXNCO1FBQ3pELE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4Qyw2Q0FBNkM7UUFDN0MsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN6QixNQUFNLFNBQVMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ25ELElBQUk7Z0JBQ0YsUUFBUSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDeEM7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixPQUFPLENBQUMsSUFBSSxDQUNWLDBGQUEwRixDQUMzRixDQUFDO2FBQ0g7U0FDRjtRQUVELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUM3RCxDQUFDO0lBQ0osQ0FBQztJQUVPLGVBQWUsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLHFCQUFzQjtRQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJO1lBQ0YsUUFBUSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkNBQTJDLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUM3RCxDQUFDO0lBQ0osQ0FBQztJQUVPLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUscUJBQXNCO1FBQzVELElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJO1lBQ0YsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7U0FDOUQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0NBQXdDLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ25FO1FBQ0QsUUFBUSxDQUFDLEdBQUcsQ0FDVixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1YsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHO1lBQ2QsRUFBRSxFQUFFLElBQUksRUFBRTtZQUNWLEtBQUssRUFBRSxJQUFJLEdBQUcsTUFBTTtZQUNwQixLQUFLLEVBQUUscUJBQXFCO1NBQzdCLENBQUMsQ0FDTCxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUscUJBQXFCO1FBQzVELElBQUksR0FBRyxFQUFFO1lBQ1AsSUFBSTtnQkFDRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFO29CQUN6QixPQUFPLEVBQUUsQ0FBQztpQkFDWDthQUNGO1lBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRTtTQUNmO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFMUMsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLHFCQUFxQixDQUFDLENBQzdELENBQUM7SUFDSixDQUFDO0lBRU8sZUFBZSxDQUFDLEdBQUc7UUFDekIsT0FBTztRQUNQLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVPLGVBQWUsQ0FDckIsR0FBRyxFQUNILFVBQTJCLEVBQzNCLEdBQUcsRUFDSCxlQUFnQixFQUNoQixpQkFBMEM7UUFFMUMsTUFBTSxZQUFZLEdBQVEsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNqRSxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsR0FBRyxJQUFJLFlBQVksQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDO1FBQ3ZFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV2RCxJQUNFLFVBQVUsS0FBSyxlQUFlLENBQUMsS0FBSztZQUNwQyxVQUFVLEtBQUssZUFBZSxDQUFDLE1BQU0sRUFDckM7WUFDQSxVQUFVLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztTQUNyQztRQUVELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEUsNEdBQTRHO1FBQzVHLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FDcEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FDL0QsQ0FBQztRQUNGLElBQUksSUFBSSxLQUFLLEVBQUUsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO1lBQzdCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxPQUFPO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsVUFBVTtnQkFDVixVQUFVLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FDdkIsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQ3RDLGlCQUFpQixDQUNsQjtnQkFDRCxRQUFRLEVBQUUsZUFBZSxJQUFJLFNBQVM7YUFDdkM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFHO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuQixPQUFPO1NBQ1I7UUFDRCxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXhDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDckIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxlQUFlLENBQ3BCLFNBQXFDLEVBQ3JDLE1BQWMsRUFDZCxxQkFBc0I7UUFFdEIsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLFdBQVcsRUFBUyxDQUFDO1FBQ3ZELE1BQU0sVUFBVSxHQUFRLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUMzQixPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUM7UUFDNUIsT0FBTyxVQUFVLENBQUMsU0FBUyxDQUFDO1FBQzVCLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQztRQUN4QixPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDeEIsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQzFCLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUMxQixPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDMUIsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQzNCLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQztRQUN2QixPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUM7UUFFNUIsSUFBSSxRQUFRLENBQUM7UUFDYixJQUFJLGVBQWUsRUFBRTtZQUNuQixRQUFRLEdBQUc7Z0JBQ1QsSUFBSSxFQUFFLGVBQWUsQ0FBQyxPQUFPLEVBQUU7Z0JBQy9CLFdBQVcsRUFBRSxlQUFlLENBQUMsY0FBYyxFQUFFO2FBQzlDLENBQUM7U0FDSDtRQUVELE9BQU87WUFDTCxJQUFJLEVBQUUsT0FBTztZQUNiLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLFVBQVU7WUFDVixRQUFRO1lBQ1IsSUFBSSxFQUFFO2dCQUNKLEVBQUUsRUFBRSxJQUFJLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLElBQUksR0FBRyxNQUFNO2dCQUNwQixLQUFLLEVBQUUscUJBQXFCO2FBQzdCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxXQUFXLENBQ2pCLFVBQStCLEVBQy9CLE9BQXFCLEVBQ3JCLFNBQVMsR0FBRyxLQUFLLEVBQ2pCLFNBQXFCO1FBRXJCLElBQUksR0FBRyxDQUFDO1FBRVIsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNoQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1NBQy9EO1FBRUQsUUFBUSxVQUFVLENBQUMsV0FBVyxFQUFFO1lBQzlCLEtBQUssYUFBYTtnQkFDaEIsTUFBTSxhQUFhLEdBQUcsVUFBMkIsQ0FBQztnQkFFbEQsTUFBTSx3QkFBd0IsR0FBRztvQkFDL0IsV0FBVyxFQUNULGFBQWEsQ0FBQyxNQUFNLENBQUMsV0FBVzt3QkFDaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO29CQUN4RCxZQUFZLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxNQUFNO29CQUN6QyxhQUFhLEVBQ1gsYUFBYSxDQUFDLE1BQU0sQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLG1CQUFtQjtpQkFDakUsQ0FBQztnQkFFRixJQUFJLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO29CQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO2lCQUN4RDtnQkFFRCxJQUFJLFNBQVMsRUFBRTtvQkFDYix3QkFBd0IsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUMzRCxXQUFXLENBQUMsSUFBSSxDQUNqQixDQUFDO2lCQUNIO2dCQUVELEdBQUcsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUN0QyxPQUFPLENBQUMsV0FBVyxFQUNuQixPQUFPLENBQUMsVUFBVSxFQUNsQixPQUFPLENBQUMsVUFBVSxFQUNsQix3QkFBd0IsQ0FDekIsQ0FBQztnQkFDRixxQkFBcUI7Z0JBQ3JCLG9DQUFvQztnQkFDcEMsb0NBQW9DO2dCQUNwQyxhQUFhO2dCQUNiLGdDQUFnQztnQkFDaEMscUNBQXFDO2dCQUNyQyxxQ0FBcUM7Z0JBQ3JDLElBQUk7Z0JBQ0osTUFBTTtZQUNSLEtBQUssZUFBZTtnQkFDbEIsTUFBTSxlQUFlLEdBQUcsVUFBNkIsQ0FBQztnQkFDdEQsTUFBTSxPQUFPLEdBQ1gsVUFBVTtvQkFDVixlQUFlLENBQUMsT0FBTyxDQUFDLE9BQU87b0JBQy9CLHdCQUF3QixDQUFDO2dCQUMzQixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztnQkFDaEMsTUFBTSxHQUFHLEdBQ1AsS0FBSyxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUMvRCxNQUFNLE1BQU0sR0FDViwwRUFBMEUsQ0FBQztnQkFDN0UsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxjQUFjO29CQUNuRCxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxjQUFjO29CQUN4QyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUNYLE1BQU0sV0FBVyxHQUNmLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUN0QixHQUFHO29CQUNILE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUN0QixVQUFVO29CQUNWLE1BQU07b0JBQ04sSUFBSSxDQUFDO2dCQUVQLEdBQUcsR0FBRyxHQUFHLE9BQU8sR0FBRyxNQUFNLEdBQUcsR0FBRyxHQUFHLE1BQU0sR0FBRyxXQUFXLEVBQUUsQ0FBQztnQkFDekQsTUFBTTtZQUNSLEtBQUsseUJBQXlCLENBQUM7WUFDL0IsS0FBSyx3QkFBd0I7Z0JBQzNCLE1BQU0sd0JBQXdCLEdBQUcsVUFBc0MsQ0FBQztnQkFDeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDbkQsTUFBTSxXQUFXLEdBQUcsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDckMsTUFBTSxTQUFTLEdBQUcsd0JBQXdCLENBQUMsT0FBTyxDQUFDLGNBQWM7b0JBQy9ELENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsY0FBYztvQkFDakQsQ0FBQyxDQUFDLFdBQVcsQ0FBQztnQkFDaEIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FDNUIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUM5QyxTQUFTLENBQ1YsQ0FBQztnQkFDRixNQUFNLFVBQVUsR0FDZCx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsR0FBRztvQkFDcEMsR0FBRztvQkFDSCx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsS0FBSztvQkFDdEMsU0FBUyxDQUFDO2dCQUNaLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUNqQyxVQUFVO29CQUNSLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ1QsVUFBVTtvQkFDVixNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUNULFVBQVU7b0JBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDVCxVQUFVO29CQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUM7b0JBQ1Qsc0NBQXNDLENBQ3pDLENBQUM7Z0JBQ0YsTUFBTSxNQUFNLEdBQUc7b0JBQ2IsUUFBUTtvQkFDUixZQUFZLFFBQVEsRUFBRTtvQkFDdEIsbUNBQW1DO29CQUNuQyxhQUFhO29CQUNiLHFDQUFxQztvQkFDckMsYUFBYTtvQkFDYixxQkFBcUI7b0JBQ3JCLGNBQWM7aUJBQ2YsQ0FBQztnQkFDRixHQUFHLEdBQUcsR0FBRyxVQUFVLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQyxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTTtTQUNUO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU8saUJBQWlCLENBQUMsV0FBbUI7UUFDM0MsSUFBSSxJQUFJLEdBQUcseUJBQXlCLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQzNDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssV0FBVyxDQUMxQyxDQUFDO1FBQ0YsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDckM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxLQUFVO1FBQ2pDLElBQUkscUJBQXFCLENBQUM7UUFDMUIsSUFDRSxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWTtZQUM1QyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQ3JEO1lBQ0EscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1lBQzNCLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQ2hFLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZFLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8scUJBQXFCLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFnQixFQUFFLEtBQVk7UUFDMUMsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtZQUNsQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTTtpQkFDM0MsT0FBcUMsQ0FBQztZQUN6QyxJQUFJLGlCQUFpQixDQUFDLFVBQVUsRUFBRTtnQkFDaEMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ25FO1NBQ0Y7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZ0IsRUFBRSxVQUFVO1FBQ3hDLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQztRQUN2QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBRXhFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO1FBRUgsMENBQTBDO1FBQzFDLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLFVBQVUsRUFBRTtZQUNuRCxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUM7U0FDdEQ7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7T0FLRztJQUVILGlCQUFpQixDQUNmLFVBQStCLEVBQy9CLE9BQXFCLEVBQ3JCLFNBQXFCO1FBRXJCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDdkMsT0FBTyxDQUFDLFdBQVcsRUFDbkIsT0FBTyxDQUFDLFVBQVUsRUFDbEIsQ0FBQyxFQUNELENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUNYLENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9DLElBQUksSUFBSSxHQUFpQjtnQkFDdkIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO3FCQUNWLE9BQU8sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDdEMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUNwRCxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQ3BELE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUN6RCxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQzthQUNqRSxDQUFDO1lBRUYsb0ZBQW9GO1lBQ3BGLGtFQUFrRTtZQUNsRSxJQUFJLFNBQVMsRUFBRTtnQkFDYixJQUFJLENBQUMsR0FBRztxQkFDTCxPQUFPLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztxQkFDN0MsT0FBTyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7cUJBQzdDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUM3QyxPQUFPLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ2xEO1lBRUQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7YUFDekM7WUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQzthQUN6QztZQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2FBQy9CO1lBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDL0I7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FwOUJVLFlBQVk7NEdBQVosWUFBWSxjQUZYLE1BQU07OzRGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xyXG5cclxuaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuaW1wb3J0ICogYXMgb2xleHRlbnQgZnJvbSAnb2wvZXh0ZW50JztcclxuaW1wb3J0ICogYXMgb2xmb3JtYXQgZnJvbSAnb2wvZm9ybWF0JztcclxuaW1wb3J0IG9sRm9ybWF0RXNyaUpTT04gZnJvbSAnb2wvZm9ybWF0L0VzcmlKU09OJztcclxuaW1wb3J0IG9sRm9ybWF0R01MMiBmcm9tICdvbC9mb3JtYXQvR01MMic7XHJcbmltcG9ydCBvbEZvcm1hdEdNTDMgZnJvbSAnb2wvZm9ybWF0L0dNTDMnO1xyXG5pbXBvcnQgKiBhcyBvbGdlb20gZnJvbSAnb2wvZ2VvbSc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBkZWZhdWx0IGFzIHN0cmlwdGFncyB9IGZyb20gJ3N0cmlwdGFncyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIENhcnRvRGF0YVNvdXJjZSxcclxuICBJbWFnZUFyY0dJU1Jlc3REYXRhU291cmNlLFxyXG4gIFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZSxcclxuICBXTVNEYXRhU291cmNlLFxyXG4gIFdNU0RhdGFTb3VyY2VPcHRpb25zXHJcbn0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMnO1xyXG5pbXBvcnQgeyBGRUFUVVJFIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5lbnVtcyc7XHJcbmltcG9ydCB7XHJcbiAgRmVhdHVyZSxcclxuICBGZWF0dXJlR2VvbWV0cnlcclxufSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9mZWF0dXJlLmludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMvbGF5ZXInO1xyXG5pbXBvcnQgeyBNYXBFeHRlbnQgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcC5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1xyXG4gIFF1ZXJ5Rm9ybWF0LFxyXG4gIFF1ZXJ5Rm9ybWF0TWltZVR5cGUsXHJcbiAgUXVlcnlIdG1sVGFyZ2V0XHJcbn0gZnJvbSAnLi9xdWVyeS5lbnVtcyc7XHJcbmltcG9ydCB7XHJcbiAgUXVlcnlPcHRpb25zLFxyXG4gIFF1ZXJ5VXJsRGF0YSxcclxuICBRdWVyeWFibGVEYXRhU291cmNlLFxyXG4gIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zXHJcbn0gZnJvbSAnLi9xdWVyeS5pbnRlcmZhY2VzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFF1ZXJ5U2VydmljZSB7XHJcbiAgcHVibGljIHF1ZXJ5RW5hYmxlZCA9IHRydWU7XHJcbiAgcHVibGljIGRlZmF1bHRGZWF0dXJlQ291bnQgPSAyMDsgLy8gZGVmYXVsdCBmZWF0dXJlIGNvdW50XHJcbiAgcHVibGljIGZlYXR1cmVDb3VudCA9IDIwOyAvLyBmZWF0dXJlIGNvdW50XHJcblxyXG4gIHByaXZhdGUgcHJldmlvdXNNZXNzYWdlSWRzID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBxdWVyeShsYXllcnM6IExheWVyW10sIG9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyk6IE9ic2VydmFibGU8RmVhdHVyZVtdPltdIHtcclxuICAgIGlmICh0aGlzLnByZXZpb3VzTWVzc2FnZUlkcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5wcmV2aW91c01lc3NhZ2VJZHMuZm9yRWFjaCgoaWQpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnJlbW92ZShpZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld0xheWVycyA9IGxheWVyc1xyXG4gICAgICAuZmlsdGVyKChsYXllcjogTGF5ZXIpID0+IGxheWVyLnZpc2libGUgJiYgbGF5ZXIuaXNJblJlc29sdXRpb25zUmFuZ2UpXHJcbiAgICAgIC5tYXAoKGxheWVyOiBMYXllcikgPT4gdGhpcy5xdWVyeUxheWVyKGxheWVyLCBvcHRpb25zKSk7XHJcbiAgICAvLyB0aGUgZGlyZWN0aXZlIGFjY2VwdCBhcnJheSBpbiB0aGlzIGZvcm1hdCBbb2JzZXJ2YWJsZSwgb2JzZXJ2YWJsZS4uLl1cclxuICAgIC8vIGlmIHdlIHVzZSBtdWx0aXBsZSAndXJsJyBpbiBxdWVyeVVybCBzbyB0aGUgcmVzdWx0ID0+IHRoaXMgZm9ybSBbb2JzZXJ2YWJsZSwgb2JzZXJ2YWJsZSwgW29ic2VydmFibGUsIG9ic2VydmFibGVdXVxyXG4gICAgLy8gc28gd2UgbmVlZCB0byBmbGF0IHRoZSBhcnJheVxyXG4gICAgbGV0IGZsYXRBcnJheSA9IFtdLmNvbmNhdC5hcHBseShbXSwgbmV3TGF5ZXJzKTtcclxuICAgIHJldHVybiBmbGF0QXJyYXk7XHJcbiAgfVxyXG5cclxuICBxdWVyeUxheWVyKFxyXG4gICAgbGF5ZXI6IExheWVyLFxyXG4gICAgb3B0aW9uczogUXVlcnlPcHRpb25zXHJcbiAgKTogT2JzZXJ2YWJsZTxGZWF0dXJlW10+IHwgT2JzZXJ2YWJsZTxGZWF0dXJlW10+W10ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5nZXRRdWVyeVVybChcclxuICAgICAgbGF5ZXIuZGF0YVNvdXJjZSxcclxuICAgICAgb3B0aW9ucyxcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIGxheWVyLm1hcC52aWV3Q29udHJvbGxlci5nZXRFeHRlbnQoKVxyXG4gICAgKTtcclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIHJldHVybiBvZihbXSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzb2x1dGlvbjogbnVtYmVyID0gbGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLmdldFJlc29sdXRpb24oKTtcclxuICAgIGNvbnN0IHNjYWxlOiBudW1iZXIgPSBsYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0U2NhbGUoKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIChsYXllci5kYXRhU291cmNlIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2UpLm9wdGlvbnMucXVlcnlGb3JtYXQgPT09XHJcbiAgICAgIFF1ZXJ5Rm9ybWF0LkhUTUxHTUwyXHJcbiAgICApIHtcclxuICAgICAgaWYgKHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgdXJsR21sID0gdGhpcy5nZXRRdWVyeVVybChcclxuICAgICAgICAgIGxheWVyLmRhdGFTb3VyY2UsXHJcbiAgICAgICAgICBvcHRpb25zLFxyXG4gICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICkgYXMgc3RyaW5nO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybEdtbCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KS5waXBlKFxyXG4gICAgICAgICAgbWVyZ2VNYXAoKGdtbFJlcykgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBtZXJnZWRHTUwgPSB0aGlzLm1lcmdlR01MKGdtbFJlcywgdXJsLCBsYXllcik7XHJcbiAgICAgICAgICAgIGNvbnN0IGltcG9zZWRHZW9tID0gbWVyZ2VkR01MWzBdO1xyXG4gICAgICAgICAgICBjb25zdCBpbXBvc2VkUHJvcGVydGllcyA9IG1lcmdlZEdNTFsxXTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAgICAgICAgIC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAoKHJlcykgPT5cclxuICAgICAgICAgICAgICAgICAgdGhpcy5leHRyYWN0RGF0YShcclxuICAgICAgICAgICAgICAgICAgICByZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICB1cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgaW1wb3NlZEdlb20sXHJcbiAgICAgICAgICAgICAgICAgICAgaW1wb3NlZFByb3BlcnRpZXNcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdXJsR21scyA9IHRoaXMuZ2V0UXVlcnlVcmwobGF5ZXIuZGF0YVNvdXJjZSwgb3B0aW9ucywgdHJ1ZSk7XHJcbiAgICAgIGxldCBvYnNlcnZhYmxlczogYW55ID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXJsR21scy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB1cmxHbWxzW2ldIGFzIFF1ZXJ5VXJsRGF0YTtcclxuICAgICAgICBpZiAodGhpcy5jaGVja1NjYWxlQW5kUmVzb2x1dGlvbihyZXNvbHV0aW9uLCBzY2FsZSwgZWxlbWVudCkpIHtcclxuICAgICAgICAgIG9ic2VydmFibGVzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdERhdGFGb3JIVE1MR01MMihlbGVtZW50LnVybCwgdXJsW2ldLnVybCwgbGF5ZXIsIG9wdGlvbnMpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5odHRwLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlcXVlc3QucGlwZShcclxuICAgICAgICAgIG1hcCgocmVzKSA9PiB0aGlzLmV4dHJhY3REYXRhKHJlcywgbGF5ZXIsIG9wdGlvbnMsIHVybCkpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgb2JzZXJ2YWJsZXM6IGFueSA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVybC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQ6IFF1ZXJ5VXJsRGF0YSA9IHVybFtpXTtcclxuICAgICAgICBpZiAodGhpcy5jaGVja1NjYWxlQW5kUmVzb2x1dGlvbihyZXNvbHV0aW9uLCBzY2FsZSwgZWxlbWVudCkpIHtcclxuICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmh0dHAuZ2V0KGVsZW1lbnQudXJsLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pO1xyXG4gICAgICAgICAgb2JzZXJ2YWJsZXMucHVzaChcclxuICAgICAgICAgICAgcmVxdWVzdC5waXBlKFxyXG4gICAgICAgICAgICAgIG1hcCgocmVzKSA9PiB0aGlzLmV4dHJhY3REYXRhKHJlcywgbGF5ZXIsIG9wdGlvbnMsIGVsZW1lbnQudXJsKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXF1ZXN0RGF0YUZvckhUTUxHTUwyKFxyXG4gICAgdXJsR21sOiBzdHJpbmcsXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIGxheWVyOiBMYXllcixcclxuICAgIG9wdGlvbnM6IFF1ZXJ5T3B0aW9uc1xyXG4gICk6IE9ic2VydmFibGU8RmVhdHVyZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmxHbWwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSkucGlwZShcclxuICAgICAgbWVyZ2VNYXAoKGdtbFJlcykgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1lcmdlZEdNTCA9IHRoaXMubWVyZ2VHTUwoZ21sUmVzLCB1cmwsIGxheWVyKTtcclxuICAgICAgICBjb25zdCBpbXBvc2VkR2VvbSA9IG1lcmdlZEdNTFswXTtcclxuICAgICAgICBjb25zdCBpbXBvc2VkUHJvcGVydGllcyA9IG1lcmdlZEdNTFsxXTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAuZ2V0KHVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcCgocmVzKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuZXh0cmFjdERhdGEoXHJcbiAgICAgICAgICAgICAgICByZXMsXHJcbiAgICAgICAgICAgICAgICBsYXllcixcclxuICAgICAgICAgICAgICAgIG9wdGlvbnMsXHJcbiAgICAgICAgICAgICAgICB1cmwsXHJcbiAgICAgICAgICAgICAgICBpbXBvc2VkR2VvbSxcclxuICAgICAgICAgICAgICAgIGltcG9zZWRQcm9wZXJ0aWVzXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tTY2FsZUFuZFJlc29sdXRpb24oXHJcbiAgICByZXNvbHV0aW9uOiBudW1iZXIsXHJcbiAgICBzY2FsZTogbnVtYmVyLFxyXG4gICAgZWxlbWVudDogUXVlcnlVcmxEYXRhXHJcbiAgKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY2hlY2tTY2FsZTogYm9vbGVhbjtcclxuICAgIGxldCBjaGVja1Jlc29sdXRpb246IGJvb2xlYW47XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAhZWxlbWVudC5taW5SZXNvbHV0aW9uICYmXHJcbiAgICAgICFlbGVtZW50Lm1heFJlc29sdXRpb24gJiZcclxuICAgICAgIWVsZW1lbnQubWluU2NhbGUgJiZcclxuICAgICAgIWVsZW1lbnQubWF4U2NhbGVcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8qKioqKioqKioqKioqKioqKioqIGNoZWNraW5nIFJlc29sdXRpb24gKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgaWYgKGVsZW1lbnQubWluUmVzb2x1dGlvbiAmJiBlbGVtZW50Lm1heFJlc29sdXRpb24pIHtcclxuICAgICAgICAvLyBpZiBcIm1pblJlc29sdXRpb25cIiBhbmQgXCJtYXhSZXNvbHV0aW9uXCIgZXhpc3RzIGNoZWNrIGlmIHJlc29sdGlvbiBpcyBiZXR3ZWVuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgcmVzb2x1dGlvbiA+PSBlbGVtZW50Lm1pblJlc29sdXRpb24gJiZcclxuICAgICAgICAgIHJlc29sdXRpb24gPD0gZWxlbWVudC5tYXhSZXNvbHV0aW9uXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjaGVja1Jlc29sdXRpb24gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBjaGVjayBpZiBcIm1pblJlc29sdXRpb25cIiBvciBcIm1heFJlc29sdXRpb25cIiBleGlzdHNcclxuICAgICAgICBpZiAoZWxlbWVudC5taW5SZXNvbHV0aW9uICYmIHJlc29sdXRpb24gPj0gZWxlbWVudC5taW5SZXNvbHV0aW9uKSB7XHJcbiAgICAgICAgICBjaGVja1Jlc29sdXRpb24gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudC5tYXhSZXNvbHV0aW9uICYmIHJlc29sdXRpb24gPD0gZWxlbWVudC5tYXhSZXNvbHV0aW9uKSB7XHJcbiAgICAgICAgICBjaGVja1Jlc29sdXRpb24gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLyoqKioqKioqKioqKioqKioqKiogY2hlY2tpbmcgU2NhbGUgKioqKioqKioqKioqKioqKioqKi9cclxuICAgICAgaWYgKGVsZW1lbnQubWluU2NhbGUgJiYgZWxlbWVudC5tYXhTY2FsZSkge1xyXG4gICAgICAgIC8vIGlmIFwibWluU2NhbGVcIiBhbmQgXCJtYXhTY2FsZVwiIGV4aXN0cyBjaGVjayBpZiBzY2FsZSBpcyBiZXR3ZWVuXHJcbiAgICAgICAgaWYgKHNjYWxlID4gZWxlbWVudC5taW5TY2FsZSAmJiBzY2FsZSA8IGVsZW1lbnQubWF4U2NhbGUpIHtcclxuICAgICAgICAgIGNoZWNrU2NhbGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBjaGVjayBpZiBcIm1pblNjYWxlXCIgb3IgXCJtYXhTY2FsZVwiIGV4aXN0c1xyXG4gICAgICAgIGlmIChlbGVtZW50Lm1heFNjYWxlICYmIHNjYWxlIDw9IGVsZW1lbnQubWF4U2NhbGUpIHtcclxuICAgICAgICAgIGNoZWNrU2NhbGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudC5taW5TY2FsZSAmJiBzY2FsZSA+PSBlbGVtZW50Lm1pblNjYWxlKSB7XHJcbiAgICAgICAgICBjaGVja1NjYWxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8qKioqKioqKioqKioqKioqKioqIHJlc3VsdCBvZiBjaGVja2luZyAqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgICBpZiAoY2hlY2tTY2FsZSA9PT0gdHJ1ZSAmJiBjaGVja1Jlc29sdXRpb24gPT09IHRydWUpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAoY2hlY2tSZXNvbHV0aW9uID09PSB0cnVlICYmICFjaGVja1NjYWxlKSB8fFxyXG4gICAgICAgIChjaGVja1NjYWxlID09PSB0cnVlICYmICFjaGVja1Jlc29sdXRpb24pXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtZXJnZUdNTChcclxuICAgIGdtbFJlcyxcclxuICAgIHVybCxcclxuICAgIGxheWVyOiBMYXllclxyXG4gICk6IFtGZWF0dXJlR2VvbWV0cnksIHsgW2tleTogc3RyaW5nXTogYW55IH1dIHtcclxuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBvbEZvcm1hdEdNTDIoKTtcclxuICAgIGxldCBmZWF0dXJlcyA9IHBhcnNlci5yZWFkRmVhdHVyZXMoZ21sUmVzKTtcclxuICAgIC8vIEhhbmRsZSBub24gc3RhbmRhcmQgR01MIG91dHB1dCAoTWFwU2VydmVyKVxyXG4gICAgaWYgKGZlYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBjb25zdCB3bXNQYXJzZXIgPSBuZXcgb2xmb3JtYXQuV01TR2V0RmVhdHVyZUluZm8oKTtcclxuICAgICAgZmVhdHVyZXMgPSB3bXNQYXJzZXIucmVhZEZlYXR1cmVzKGdtbFJlcyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvbG1saW5lID0gbmV3IG9sZ2VvbS5NdWx0aUxpbmVTdHJpbmcoW10pO1xyXG4gICAgbGV0IHB0cztcclxuICAgIGNvbnN0IHB0c0FycmF5ID0gW107XHJcbiAgICBsZXQgb2xtcG9seSA9IG5ldyBvbGdlb20uTXVsdGlQb2x5Z29uKFtdKTtcclxuICAgIGxldCBmaXJzdEZlYXR1cmVUeXBlO1xyXG4gICAgY29uc3QgbmJGZWF0dXJlcyA9IGZlYXR1cmVzLmxlbmd0aDtcclxuXHJcbiAgICAvLyBDaGVjayBpZiBnZW9tZXRyeSBpbnRlcnNlY3QgYmJveFxyXG4gICAgLy8gZm9yIGdlb3NlcnZlciBnZXRmZWF0dXJlaW5mbyByZXNwb25zZSBpbiBkYXRhIHByb2plY3Rpb24sIG5vdCBjYWxsIHByb2plY3Rpb25cclxuICAgIGNvbnN0IHNlYXJjaFBhcmFtczogYW55ID0gdGhpcy5nZXRRdWVyeVBhcmFtcyh1cmwudG9Mb3dlckNhc2UoKSk7XHJcbiAgICBjb25zdCBiYm94UmF3ID0gc2VhcmNoUGFyYW1zLmJib3g7XHJcbiAgICBjb25zdCBiYm94ID0gYmJveFJhdy5zcGxpdCgnLCcpO1xyXG4gICAgY29uc3QgYmJveEV4dGVudCA9IG9sZXh0ZW50LmNyZWF0ZUVtcHR5KCk7XHJcbiAgICBvbGV4dGVudC5leHRlbmQoYmJveEV4dGVudCwgYmJveCk7XHJcbiAgICBjb25zdCBvdXRCYm94RXh0ZW50ID0gZmFsc2U7XHJcbiAgICBsZXQgdGl0bGVDb250ZW50O1xyXG4gICAgbGV0IHF1ZXJ5VGlsZUZpZWxkO1xyXG4gICAgaWYgKGxheWVyLm9wdGlvbnM/LnNvdXJjZT8ub3B0aW9ucykge1xyXG4gICAgICBjb25zdCBkYXRhU291cmNlT3B0aW9ucyA9IGxheWVyLm9wdGlvbnMuc291cmNlXHJcbiAgICAgICAgLm9wdGlvbnMgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnM7XHJcbiAgICAgIGlmIChkYXRhU291cmNlT3B0aW9ucy5xdWVyeVRpdGxlKSB7XHJcbiAgICAgICAgcXVlcnlUaWxlRmllbGQgPSBkYXRhU291cmNlT3B0aW9ucy5xdWVyeVRpdGxlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IHtcclxuICAgICAgaWYgKHF1ZXJ5VGlsZUZpZWxkKSB7XHJcbiAgICAgICAgbGV0IHF1ZXJ5VGl0bGVDb250ZW50ID0gZmVhdHVyZS5nZXRQcm9wZXJ0aWVzKClbcXVlcnlUaWxlRmllbGRdO1xyXG4gICAgICAgIGlmIChxdWVyeVRpdGxlQ29udGVudCkge1xyXG4gICAgICAgICAgdGl0bGVDb250ZW50ID0gIXRpdGxlQ29udGVudFxyXG4gICAgICAgICAgICA/IHF1ZXJ5VGl0bGVDb250ZW50XHJcbiAgICAgICAgICAgIDogYCR7dGl0bGVDb250ZW50fSwke3F1ZXJ5VGl0bGVDb250ZW50fWA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8qICBpZiAoIWZlYXR1cmUuZ2V0R2VvbWV0cnkoKS5zaW1wbGlmeSgxMDApLmludGVyc2VjdHNFeHRlbnQoYmJveEV4dGVudCkpIHtcclxuICAgICAgICBvdXRCYm94RXh0ZW50ID0gdHJ1ZTtcclxuICAgICAgICAvLyBUT0RPOiBDaGVjayB0byBwcm9qZWN0IHRoZSBnZW9tZXRyeT9cclxuICAgICAgfSovXHJcbiAgICAgIGNvbnN0IGZlYXR1cmVHZW9tZXRyeUNvb3JkaW5hdGVzID0gKFxyXG4gICAgICAgIGZlYXR1cmUuZ2V0R2VvbWV0cnkoKSBhcyBhbnlcclxuICAgICAgKS5nZXRDb29yZGluYXRlcygpO1xyXG4gICAgICBjb25zdCBmZWF0dXJlR2VvbWV0cnlUeXBlID0gZmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKTtcclxuXHJcbiAgICAgIGlmICghZmlyc3RGZWF0dXJlVHlwZSAmJiAhb3V0QmJveEV4dGVudCkge1xyXG4gICAgICAgIGZpcnN0RmVhdHVyZVR5cGUgPSBmZWF0dXJlR2VvbWV0cnlUeXBlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghb3V0QmJveEV4dGVudCkge1xyXG4gICAgICAgIHN3aXRjaCAoZmVhdHVyZUdlb21ldHJ5VHlwZSkge1xyXG4gICAgICAgICAgY2FzZSAnUG9pbnQnOlxyXG4gICAgICAgICAgICBpZiAobmJGZWF0dXJlcyA9PT0gMSkge1xyXG4gICAgICAgICAgICAgIHB0cyA9IG5ldyBvbGdlb20uUG9pbnQoZmVhdHVyZUdlb21ldHJ5Q29vcmRpbmF0ZXMsICdYWScpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHB0c0FycmF5LnB1c2goZmVhdHVyZUdlb21ldHJ5Q29vcmRpbmF0ZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnTGluZVN0cmluZyc6XHJcbiAgICAgICAgICAgIG9sbWxpbmUuYXBwZW5kTGluZVN0cmluZyhcclxuICAgICAgICAgICAgICBuZXcgb2xnZW9tLkxpbmVTdHJpbmcoZmVhdHVyZUdlb21ldHJ5Q29vcmRpbmF0ZXMsICdYWScpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnUG9seWdvbic6XHJcbiAgICAgICAgICAgIG9sbXBvbHkuYXBwZW5kUG9seWdvbihcclxuICAgICAgICAgICAgICBuZXcgb2xnZW9tLlBvbHlnb24oZmVhdHVyZUdlb21ldHJ5Q29vcmRpbmF0ZXMsICdYWScpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnTXVsdGlQb2x5Z29uJzpcclxuICAgICAgICAgICAgb2xtcG9seSA9IG5ldyBvbGdlb20uTXVsdGlQb2x5Z29uKGZlYXR1cmVHZW9tZXRyeUNvb3JkaW5hdGVzLCAnWFknKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgb2xtcHRzO1xyXG4gICAgaWYgKHB0c0FycmF5Lmxlbmd0aCA9PT0gMCAmJiBwdHMpIHtcclxuICAgICAgb2xtcHRzID0ge1xyXG4gICAgICAgIHR5cGU6IHB0cy5nZXRUeXBlKCksXHJcbiAgICAgICAgY29vcmRpbmF0ZXM6IHB0cy5nZXRDb29yZGluYXRlcygpXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvbG1wdHMgPSB7XHJcbiAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxyXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbdGhpcy5jb252ZXhIdWxsKHB0c0FycmF5KV1cclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcmV0dXJuR2VvbWV0cnk7XHJcbiAgICBzd2l0Y2ggKGZpcnN0RmVhdHVyZVR5cGUpIHtcclxuICAgICAgY2FzZSAnTGluZVN0cmluZyc6XHJcbiAgICAgICAgcmV0dXJuR2VvbWV0cnkgPSB7XHJcbiAgICAgICAgICB0eXBlOiBvbG1saW5lLmdldFR5cGUoKSxcclxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBvbG1saW5lLmdldENvb3JkaW5hdGVzKClcclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdQb2ludCc6XHJcbiAgICAgICAgcmV0dXJuR2VvbWV0cnkgPSBvbG1wdHM7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ1BvbHlnb24nOlxyXG4gICAgICAgIHJldHVybkdlb21ldHJ5ID0ge1xyXG4gICAgICAgICAgdHlwZTogb2xtcG9seS5nZXRUeXBlKCksXHJcbiAgICAgICAgICBjb29yZGluYXRlczogb2xtcG9seS5nZXRDb29yZGluYXRlcygpXHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnTXVsdGlQb2x5Z29uJzpcclxuICAgICAgICByZXR1cm5HZW9tZXRyeSA9IHtcclxuICAgICAgICAgIHR5cGU6IG9sbXBvbHkuZ2V0VHlwZSgpLFxyXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IG9sbXBvbHkuZ2V0Q29vcmRpbmF0ZXMoKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbXBvc2VkUHJvcGVydGllcyA9IHt9O1xyXG5cclxuICAgIGlmIChxdWVyeVRpbGVGaWVsZCkge1xyXG4gICAgICBpbXBvc2VkUHJvcGVydGllc1txdWVyeVRpbGVGaWVsZF0gPSB0aXRsZUNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtyZXR1cm5HZW9tZXRyeSwgaW1wb3NlZFByb3BlcnRpZXNdO1xyXG4gIH1cclxuXHJcbiAgY3Jvc3MoYSwgYiwgbykge1xyXG4gICAgcmV0dXJuIChhWzBdIC0gb1swXSkgKiAoYlsxXSAtIG9bMV0pIC0gKGFbMV0gLSBvWzFdKSAqIChiWzBdIC0gb1swXSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAcGFyYW0gcG9pbnRzIEFuIGFycmF5IG9mIFtYLCBZXSBjb29yZGluYXRlc1xyXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZSBpbnN0ZWFkIG9mIHR1cmYuanMgY29udmV4SHVsbCBiZWNhdXNlIFR1cmYgbmVlZHMgYXQgbGVhc3QgMyBwb2ludCB0byBtYWtlIGEgaHVsbC5cclxuICAgKiBodHRwczovL2VuLndpa2lib29rcy5vcmcvd2lraS9BbGdvcml0aG1fSW1wbGVtZW50YXRpb24vR2VvbWV0cnkvQ29udmV4X2h1bGwvTW9ub3RvbmVfY2hhaW4jSmF2YVNjcmlwdFxyXG4gICAqL1xyXG4gIGNvbnZleEh1bGwocG9pbnRzKSB7XHJcbiAgICBwb2ludHMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICByZXR1cm4gYVswXSA9PT0gYlswXSA/IGFbMV0gLSBiWzFdIDogYVswXSAtIGJbMF07XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBsb3dlciA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBwb2ludCBvZiBwb2ludHMpIHtcclxuICAgICAgd2hpbGUgKFxyXG4gICAgICAgIGxvd2VyLmxlbmd0aCA+PSAyICYmXHJcbiAgICAgICAgdGhpcy5jcm9zcyhsb3dlcltsb3dlci5sZW5ndGggLSAyXSwgbG93ZXJbbG93ZXIubGVuZ3RoIC0gMV0sIHBvaW50KSA8PSAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIGxvd2VyLnBvcCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGxvd2VyLnB1c2gocG9pbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVwcGVyID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gcG9pbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgIHdoaWxlIChcclxuICAgICAgICB1cHBlci5sZW5ndGggPj0gMiAmJlxyXG4gICAgICAgIHRoaXMuY3Jvc3MoXHJcbiAgICAgICAgICB1cHBlclt1cHBlci5sZW5ndGggLSAyXSxcclxuICAgICAgICAgIHVwcGVyW3VwcGVyLmxlbmd0aCAtIDFdLFxyXG4gICAgICAgICAgcG9pbnRzW2ldXHJcbiAgICAgICAgKSA8PSAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHVwcGVyLnBvcCgpO1xyXG4gICAgICB9XHJcbiAgICAgIHVwcGVyLnB1c2gocG9pbnRzW2ldKTtcclxuICAgIH1cclxuXHJcbiAgICB1cHBlci5wb3AoKTtcclxuICAgIGxvd2VyLnBvcCgpO1xyXG4gICAgcmV0dXJuIGxvd2VyLmNvbmNhdCh1cHBlcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3REYXRhKFxyXG4gICAgcmVzLFxyXG4gICAgbGF5ZXI6IExheWVyLFxyXG4gICAgb3B0aW9uczogUXVlcnlPcHRpb25zLFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBpbXBvc2VkR2VvbWV0cnk/LFxyXG4gICAgaW1wb3NlZFByb3BlcnRpZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9XHJcbiAgKTogRmVhdHVyZVtdIHtcclxuICAgIGNvbnN0IHF1ZXJ5RGF0YVNvdXJjZSA9IGxheWVyLmRhdGFTb3VyY2UgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZTtcclxuXHJcbiAgICBjb25zdCBhbGxvd2VkRmllbGRzQW5kQWxpYXMgPSB0aGlzLmdldEFsbG93ZWRGaWVsZHNBbmRBbGlhcyhsYXllcik7XHJcbiAgICBsZXQgZmVhdHVyZXMgPSBbXTtcclxuICAgIHN3aXRjaCAocXVlcnlEYXRhU291cmNlLm9wdGlvbnMucXVlcnlGb3JtYXQpIHtcclxuICAgICAgY2FzZSBRdWVyeUZvcm1hdC5HTUwzOlxyXG4gICAgICAgIGZlYXR1cmVzID0gdGhpcy5leHRyYWN0R01MM0RhdGEoXHJcbiAgICAgICAgICByZXMsXHJcbiAgICAgICAgICBsYXllci56SW5kZXgsXHJcbiAgICAgICAgICBhbGxvd2VkRmllbGRzQW5kQWxpYXNcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFF1ZXJ5Rm9ybWF0LkpTT046XHJcbiAgICAgIGNhc2UgUXVlcnlGb3JtYXQuR0VPSlNPTjpcclxuICAgICAgY2FzZSBRdWVyeUZvcm1hdC5HRU9KU09OMjpcclxuICAgICAgICBmZWF0dXJlcyA9IHRoaXMuZXh0cmFjdEdlb0pTT05EYXRhKFxyXG4gICAgICAgICAgcmVzLFxyXG4gICAgICAgICAgbGF5ZXIuekluZGV4LFxyXG4gICAgICAgICAgYWxsb3dlZEZpZWxkc0FuZEFsaWFzXHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBRdWVyeUZvcm1hdC5FU1JJSlNPTjpcclxuICAgICAgICBmZWF0dXJlcyA9IHRoaXMuZXh0cmFjdEVzcmlKU09ORGF0YShcclxuICAgICAgICAgIHJlcyxcclxuICAgICAgICAgIGxheWVyLnpJbmRleCxcclxuICAgICAgICAgIGFsbG93ZWRGaWVsZHNBbmRBbGlhc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUXVlcnlGb3JtYXQuVEVYVDpcclxuICAgICAgICBmZWF0dXJlcyA9IHRoaXMuZXh0cmFjdFRleHREYXRhKHJlcyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUXVlcnlGb3JtYXQuSFRNTDpcclxuICAgICAgICBmZWF0dXJlcyA9IHRoaXMuZXh0cmFjdEh0bWxEYXRhKFxyXG4gICAgICAgICAgcmVzLFxyXG4gICAgICAgICAgcXVlcnlEYXRhU291cmNlLnF1ZXJ5SHRtbFRhcmdldCxcclxuICAgICAgICAgIHVybFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUXVlcnlGb3JtYXQuSFRNTEdNTDI6XHJcbiAgICAgICAgZmVhdHVyZXMgPSB0aGlzLmV4dHJhY3RIdG1sRGF0YShcclxuICAgICAgICAgIHJlcyxcclxuICAgICAgICAgIHF1ZXJ5RGF0YVNvdXJjZS5xdWVyeUh0bWxUYXJnZXQsXHJcbiAgICAgICAgICB1cmwsXHJcbiAgICAgICAgICBpbXBvc2VkR2VvbWV0cnksXHJcbiAgICAgICAgICBpbXBvc2VkUHJvcGVydGllc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgUXVlcnlGb3JtYXQuR01MMjpcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBmZWF0dXJlcyA9IHRoaXMuZXh0cmFjdEdNTDJEYXRhKHJlcywgbGF5ZXIsIGFsbG93ZWRGaWVsZHNBbmRBbGlhcyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIGZlYXR1cmVzLmxlbmd0aCA+IDAgJiZcclxuICAgICAgKGZlYXR1cmVzWzBdLmdlb21ldHJ5ID09PSBudWxsIHx8ICFmZWF0dXJlc1swXS5nZW9tZXRyeSlcclxuICAgICkge1xyXG4gICAgICBjb25zdCBnZW9tVG9BZGQgPSB0aGlzLmNyZWF0ZUdlb21ldHJ5RnJvbVVybENsaWNrKHVybCk7XHJcblxyXG4gICAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmVhdHVyZXMpIHtcclxuICAgICAgICBmZWF0dXJlLmdlb21ldHJ5ID0gZ2VvbVRvQWRkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgd21zRGF0YXNvdXJjZSA9IGxheWVyLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZTtcclxuICAgIGNvbnN0IGZlYXR1cmVDb3VudCA9IHdtc0RhdGFzb3VyY2UucGFyYW1zPy5GRUFUVVJFX0NPVU5UXHJcbiAgICAgID8gbmV3IFJlZ0V4cCgnRkVBVFVSRV9DT1VOVD0nICsgdGhpcy5mZWF0dXJlQ291bnQpXHJcbiAgICAgIDogbmV3IFJlZ0V4cCgnRkVBVFVSRV9DT1VOVD0nICsgdGhpcy5kZWZhdWx0RmVhdHVyZUNvdW50KTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIGZlYXR1cmVDb3VudC50ZXN0KHVybCkgJiZcclxuICAgICAgKCh3bXNEYXRhc291cmNlLnBhcmFtcz8uRkVBVFVSRV9DT1VOVCAmJlxyXG4gICAgICAgIHRoaXMuZmVhdHVyZUNvdW50ID4gMSAmJlxyXG4gICAgICAgIGZlYXR1cmVzLmxlbmd0aCA9PT0gdGhpcy5mZWF0dXJlQ291bnQpIHx8XHJcbiAgICAgICAgKCF3bXNEYXRhc291cmNlLnBhcmFtcz8uRkVBVFVSRV9DT1VOVCAmJlxyXG4gICAgICAgICAgZmVhdHVyZXMubGVuZ3RoID09PSB0aGlzLmRlZmF1bHRGZWF0dXJlQ291bnQpKVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IG1lc3NhZ2VPYmogPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm8oXHJcbiAgICAgICAgJ2lnby5nZW8ucXVlcnkuZmVhdHVyZUNvdW50TWF4JyxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgIHsgdmFsdWU6IGxheWVyLnRpdGxlIH1cclxuICAgICAgKTtcclxuICAgICAgdGhpcy5wcmV2aW91c01lc3NhZ2VJZHMucHVzaChtZXNzYWdlT2JqLnRvYXN0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmU6IEZlYXR1cmUsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgbWFwTGFiZWwgPSBmZWF0dXJlLnByb3BlcnRpZXNbcXVlcnlEYXRhU291cmNlLm1hcExhYmVsXTtcclxuXHJcbiAgICAgIGxldCBleGNsdWRlO1xyXG4gICAgICBpZiAobGF5ZXIub3B0aW9ucy5zb3VyY2VPcHRpb25zPy50eXBlID09PSAnd21zJykge1xyXG4gICAgICAgIGNvbnN0IHNvdXJjZU9wdGlvbnMgPSBsYXllci5vcHRpb25zXHJcbiAgICAgICAgICAuc291cmNlT3B0aW9ucyBhcyBXTVNEYXRhU291cmNlT3B0aW9ucztcclxuICAgICAgICBleGNsdWRlID0gc291cmNlT3B0aW9ucyA/IHNvdXJjZU9wdGlvbnMuZXhjbHVkZUF0dHJpYnV0ZSA6IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHRpdGxlID0gdGhpcy5nZXRRdWVyeVRpdGxlKGZlYXR1cmUsIGxheWVyKTtcclxuICAgICAgaWYgKCF0aXRsZSAmJiBmZWF0dXJlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgdGl0bGUgPSBgJHtsYXllci50aXRsZX0gKCR7aW5kZXggKyAxfSlgO1xyXG4gICAgICB9IGVsc2UgaWYgKCF0aXRsZSkge1xyXG4gICAgICAgIHRpdGxlID0gbGF5ZXIudGl0bGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG1ldGEgPSBPYmplY3QuYXNzaWduKHt9LCBmZWF0dXJlLm1ldGEgfHwge30sIHtcclxuICAgICAgICBpZDogdXVpZCgpLFxyXG4gICAgICAgIHRpdGxlLFxyXG4gICAgICAgIG1hcFRpdGxlOiBtYXBMYWJlbCxcclxuICAgICAgICBzb3VyY2VUaXRsZTogbGF5ZXIudGl0bGUsXHJcbiAgICAgICAgb3JkZXI6IDEwMDAgLSBsYXllci56SW5kZXgsXHJcbiAgICAgICAgZXhjbHVkZUF0dHJpYnV0ZTogZXhjbHVkZVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGZlYXR1cmUsIHtcclxuICAgICAgICBtZXRhLFxyXG4gICAgICAgIHByb2plY3Rpb246XHJcbiAgICAgICAgICBxdWVyeURhdGFTb3VyY2Uub3B0aW9ucy50eXBlID09PSAnY2FydG8nXHJcbiAgICAgICAgICAgID8gJ0VQU0c6NDMyNidcclxuICAgICAgICAgICAgOiBvcHRpb25zLnByb2plY3Rpb25cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlR2VvbWV0cnlGcm9tVXJsQ2xpY2sodXJsKSB7XHJcbiAgICBjb25zdCBzZWFyY2hQYXJhbXM6IGFueSA9IHRoaXMuZ2V0UXVlcnlQYXJhbXModXJsLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgY29uc3QgYmJveFJhdyA9IHNlYXJjaFBhcmFtcy5iYm94O1xyXG4gICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChzZWFyY2hQYXJhbXMud2lkdGgsIDEwKTtcclxuICAgIGNvbnN0IGhlaWdodCA9IHBhcnNlSW50KHNlYXJjaFBhcmFtcy5oZWlnaHQsIDEwKTtcclxuICAgIGNvbnN0IHhQb3NpdGlvbiA9IHBhcnNlSW50KHNlYXJjaFBhcmFtcy5pIHx8IHNlYXJjaFBhcmFtcy54LCAxMCk7XHJcbiAgICBjb25zdCB5UG9zaXRpb24gPSBwYXJzZUludChzZWFyY2hQYXJhbXMuaiB8fCBzZWFyY2hQYXJhbXMueSwgMTApO1xyXG5cclxuICAgIGNvbnN0IGJib3ggPSBiYm94UmF3LnNwbGl0KCcsJyk7XHJcbiAgICBsZXQgdGhyZXNob2xkID1cclxuICAgICAgKE1hdGguYWJzKHBhcnNlRmxvYXQoYmJveFswXSkpIC0gTWF0aC5hYnMocGFyc2VGbG9hdChiYm94WzJdKSkpICogMC4wNTtcclxuXHJcbiAgICAvLyBmb3IgY29udGV4dCBpbiBkZWdyZWUgKEVQU0c6NDMyNiw0MjY5Li4uKVxyXG4gICAgaWYgKE1hdGguYWJzKHBhcnNlRmxvYXQoYmJveFswXSkpIDwgMTgwKSB7XHJcbiAgICAgIHRocmVzaG9sZCA9IDAuMDQ1O1xyXG4gICAgfVxyXG4gICAgY29uc3QgY2xpY2t4ID1cclxuICAgICAgcGFyc2VGbG9hdChiYm94WzBdKSArXHJcbiAgICAgIChNYXRoLmFicyhwYXJzZUZsb2F0KGJib3hbMF0pIC0gcGFyc2VGbG9hdChiYm94WzJdKSkgKiB4UG9zaXRpb24pIC9cclxuICAgICAgICB3aWR0aCAtXHJcbiAgICAgIHRocmVzaG9sZDtcclxuICAgIGNvbnN0IGNsaWNreSA9XHJcbiAgICAgIHBhcnNlRmxvYXQoYmJveFsxXSkgK1xyXG4gICAgICAoTWF0aC5hYnMocGFyc2VGbG9hdChiYm94WzFdKSAtIHBhcnNlRmxvYXQoYmJveFszXSkpICogeVBvc2l0aW9uKSAvXHJcbiAgICAgICAgaGVpZ2h0IC1cclxuICAgICAgdGhyZXNob2xkO1xyXG4gICAgY29uc3QgY2xpY2t4MSA9IGNsaWNreCArIHRocmVzaG9sZCAqIDI7XHJcbiAgICBjb25zdCBjbGlja3kxID0gY2xpY2t5ICsgdGhyZXNob2xkICogMjtcclxuXHJcbiAgICBjb25zdCB3a3RQb2x5ID1cclxuICAgICAgJ1BPTFlHT04oKCcgK1xyXG4gICAgICBjbGlja3ggK1xyXG4gICAgICAnICcgK1xyXG4gICAgICBjbGlja3kgK1xyXG4gICAgICAnLCAnICtcclxuICAgICAgY2xpY2t4ICtcclxuICAgICAgJyAnICtcclxuICAgICAgY2xpY2t5MSArXHJcbiAgICAgICcsICcgK1xyXG4gICAgICBjbGlja3gxICtcclxuICAgICAgJyAnICtcclxuICAgICAgY2xpY2t5MSArXHJcbiAgICAgICcsICcgK1xyXG4gICAgICBjbGlja3gxICtcclxuICAgICAgJyAnICtcclxuICAgICAgY2xpY2t5ICtcclxuICAgICAgJywgJyArXHJcbiAgICAgIGNsaWNreCArXHJcbiAgICAgICcgJyArXHJcbiAgICAgIGNsaWNreSArXHJcbiAgICAgICcpKSc7XHJcblxyXG4gICAgY29uc3QgZm9ybWF0ID0gbmV3IG9sZm9ybWF0LldLVCgpO1xyXG4gICAgY29uc3QgdGVuUGVyY2VudFdpZHRoR2VvbSA9IGZvcm1hdC5yZWFkRmVhdHVyZSh3a3RQb2x5KTtcclxuICAgIGNvbnN0IGYgPSB0ZW5QZXJjZW50V2lkdGhHZW9tLmdldEdlb21ldHJ5KCkgYXMgYW55O1xyXG5cclxuICAgIGNvbnN0IG5ld0dlb20gPSB7XHJcbiAgICAgIHR5cGU6IGYuZ2V0VHlwZSgpLFxyXG4gICAgICBjb29yZGluYXRlczogZi5nZXRDb29yZGluYXRlcygpXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBuZXdHZW9tO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0R01MMkRhdGEocmVzLCB6SW5kZXgsIGFsbG93ZWRGaWVsZHNBbmRBbGlhcz8pIHtcclxuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBvbEZvcm1hdEdNTDIoKTtcclxuICAgIGxldCBmZWF0dXJlcyA9IHBhcnNlci5yZWFkRmVhdHVyZXMocmVzKTtcclxuICAgIC8vIEhhbmRsZSBub24gc3RhbmRhcmQgR01MIG91dHB1dCAoTWFwU2VydmVyKVxyXG4gICAgaWYgKGZlYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICBjb25zdCB3bXNQYXJzZXIgPSBuZXcgb2xmb3JtYXQuV01TR2V0RmVhdHVyZUluZm8oKTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBmZWF0dXJlcyA9IHdtc1BhcnNlci5yZWFkRmVhdHVyZXMocmVzKTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICdxdWVyeS5zZXJ2aWNlOiBNdWx0aXBvbHlnb25zIGFyZSBiYWRseSBtYW5hZ2VkIGluIG1hcHNlcnZlciBpbiBHTUwyLiBVc2UgYW5vdGhlciBmb3JtYXQuJ1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PlxyXG4gICAgICB0aGlzLmZlYXR1cmVUb1Jlc3VsdChmZWF0dXJlLCB6SW5kZXgsIGFsbG93ZWRGaWVsZHNBbmRBbGlhcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RHTUwzRGF0YShyZXMsIHpJbmRleCwgYWxsb3dlZEZpZWxkc0FuZEFsaWFzPykge1xyXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IG9sRm9ybWF0R01MMygpO1xyXG4gICAgbGV0IGZlYXR1cmVzID0gW107XHJcbiAgICB0cnkge1xyXG4gICAgICBmZWF0dXJlcyA9IHBhcnNlci5yZWFkRmVhdHVyZXMocmVzKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS53YXJuKCdxdWVyeS5zZXJ2aWNlOiBHTUwzIGlzIG5vdCB3ZWxsIHN1cHBvcnRlZCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT5cclxuICAgICAgdGhpcy5mZWF0dXJlVG9SZXN1bHQoZmVhdHVyZSwgekluZGV4LCBhbGxvd2VkRmllbGRzQW5kQWxpYXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0R2VvSlNPTkRhdGEocmVzLCB6SW5kZXgsIGFsbG93ZWRGaWVsZHNBbmRBbGlhcz8pIHtcclxuICAgIGxldCBmZWF0dXJlcyA9IFtdO1xyXG4gICAgdHJ5IHtcclxuICAgICAgZmVhdHVyZXMgPSBKU09OLnBhcnNlKHJlcy5yZXBsYWNlKC8oXFxyfFxcbikvZywgJyAnKSkuZmVhdHVyZXM7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybigncXVlcnkuc2VydmljZTogVW5hYmxlIHRvIHBhcnNlIGdlb2pzb24nLCAnXFxuJywgcmVzKTtcclxuICAgIH1cclxuICAgIGZlYXR1cmVzLm1hcChcclxuICAgICAgKGZlYXR1cmUpID0+XHJcbiAgICAgICAgKGZlYXR1cmUubWV0YSA9IHtcclxuICAgICAgICAgIGlkOiB1dWlkKCksXHJcbiAgICAgICAgICBvcmRlcjogMTAwMCAtIHpJbmRleCxcclxuICAgICAgICAgIGFsaWFzOiBhbGxvd2VkRmllbGRzQW5kQWxpYXNcclxuICAgICAgICB9KVxyXG4gICAgKTtcclxuICAgIHJldHVybiBmZWF0dXJlcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdEVzcmlKU09ORGF0YShyZXMsIHpJbmRleCwgYWxsb3dlZEZpZWxkc0FuZEFsaWFzKSB7XHJcbiAgICBpZiAocmVzKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgaWYgKEpTT04ucGFyc2UocmVzKS5lcnJvcikge1xyXG4gICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBjYXRjaCAoZSkge31cclxuICAgIH1cclxuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBvbEZvcm1hdEVzcmlKU09OKCk7XHJcbiAgICBjb25zdCBmZWF0dXJlcyA9IHBhcnNlci5yZWFkRmVhdHVyZXMocmVzKTtcclxuXHJcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PlxyXG4gICAgICB0aGlzLmZlYXR1cmVUb1Jlc3VsdChmZWF0dXJlLCB6SW5kZXgsIGFsbG93ZWRGaWVsZHNBbmRBbGlhcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RUZXh0RGF0YShyZXMpIHtcclxuICAgIC8vIFRPRE9cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdEh0bWxEYXRhKFxyXG4gICAgcmVzLFxyXG4gICAgaHRtbFRhcmdldDogUXVlcnlIdG1sVGFyZ2V0LFxyXG4gICAgdXJsLFxyXG4gICAgaW1wb3NlZEdlb21ldHJ5PyxcclxuICAgIGltcG9zZWRQcm9wZXJ0aWVzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxyXG4gICkge1xyXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zOiBhbnkgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zKHVybC50b0xvd2VyQ2FzZSgpKTtcclxuICAgIGNvbnN0IHByb2plY3Rpb24gPSBzZWFyY2hQYXJhbXMuY3JzIHx8IHNlYXJjaFBhcmFtcy5zcnMgfHwgJ0VQU0c6Mzg1Nyc7XHJcbiAgICBjb25zdCBnZW9tVG9BZGQgPSB0aGlzLmNyZWF0ZUdlb21ldHJ5RnJvbVVybENsaWNrKHVybCk7XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICBodG1sVGFyZ2V0ICE9PSBRdWVyeUh0bWxUYXJnZXQuQkxBTksgJiZcclxuICAgICAgaHRtbFRhcmdldCAhPT0gUXVlcnlIdG1sVGFyZ2V0LklGUkFNRVxyXG4gICAgKSB7XHJcbiAgICAgIGh0bWxUYXJnZXQgPSBRdWVyeUh0bWxUYXJnZXQuSUZSQU1FO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGJvZHlUYWdTdGFydCA9IHJlcy50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJzxib2R5PicpO1xyXG4gICAgY29uc3QgYm9keVRhZ0VuZCA9IHJlcy50b0xvd2VyQ2FzZSgpLmxhc3RJbmRleE9mKCc8L2JvZHk+JykgKyA3O1xyXG4gICAgLy8gcmVwbGFjZSBcXHIgXFxuICBhbmQgJyAnIHdpdGggJycgdG8gdmFsaWRhdGUgaWYgdGhlIGJvZHkgaXMgcmVhbGx5IGVtcHR5LiBDbGVhciBhbGwgdGhlIGh0bWwgdGFncyBmcm9tIGJvZHlcclxuICAgIGNvbnN0IGJvZHkgPSBzdHJpcHRhZ3MoXHJcbiAgICAgIHJlcy5zbGljZShib2R5VGFnU3RhcnQsIGJvZHlUYWdFbmQpLnJlcGxhY2UoLyhcXHJ8XFxufFxccykvZywgJycpXHJcbiAgICApO1xyXG4gICAgaWYgKGJvZHkgPT09ICcnIHx8IHJlcyA9PT0gJycpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBGRUFUVVJFLFxyXG4gICAgICAgIHByb2plY3Rpb24sXHJcbiAgICAgICAgcHJvcGVydGllczogT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgIHsgdGFyZ2V0OiBodG1sVGFyZ2V0LCBib2R5OiByZXMsIHVybCB9LFxyXG4gICAgICAgICAgaW1wb3NlZFByb3BlcnRpZXNcclxuICAgICAgICApLFxyXG4gICAgICAgIGdlb21ldHJ5OiBpbXBvc2VkR2VvbWV0cnkgfHwgZ2VvbVRvQWRkXHJcbiAgICAgIH1cclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFF1ZXJ5UGFyYW1zKHVybCkge1xyXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSB1cmwuc3BsaXQoJz8nKTtcclxuICAgIGlmICghcXVlcnlTdHJpbmdbMV0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcGFpcnMgPSBxdWVyeVN0cmluZ1sxXS5zcGxpdCgnJicpO1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xyXG4gICAgcGFpcnMuZm9yRWFjaCgocGFpcikgPT4ge1xyXG4gICAgICBwYWlyID0gcGFpci5zcGxpdCgnPScpO1xyXG4gICAgICByZXN1bHRbcGFpclswXV0gPSBkZWNvZGVVUklDb21wb25lbnQocGFpclsxXSB8fCAnJyk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZmVhdHVyZVRvUmVzdWx0KFxyXG4gICAgZmVhdHVyZU9MOiBvbEZlYXR1cmU8b2xnZW9tLkdlb21ldHJ5PixcclxuICAgIHpJbmRleDogbnVtYmVyLFxyXG4gICAgYWxsb3dlZEZpZWxkc0FuZEFsaWFzP1xyXG4gICk6IEZlYXR1cmUge1xyXG4gICAgY29uc3QgZmVhdHVyZUdlb21ldHJ5ID0gZmVhdHVyZU9MLmdldEdlb21ldHJ5KCkgYXMgYW55O1xyXG4gICAgY29uc3QgcHJvcGVydGllczogYW55ID0gT2JqZWN0LmFzc2lnbih7fSwgZmVhdHVyZU9MLmdldFByb3BlcnRpZXMoKSk7XHJcbiAgICBkZWxldGUgcHJvcGVydGllcy5nZW9tZXRyeTtcclxuICAgIGRlbGV0ZSBwcm9wZXJ0aWVzLkdFT01FVFJJRTtcclxuICAgIGRlbGV0ZSBwcm9wZXJ0aWVzLmJvdW5kZWRCeTtcclxuICAgIGRlbGV0ZSBwcm9wZXJ0aWVzLnNoYXBlO1xyXG4gICAgZGVsZXRlIHByb3BlcnRpZXMuU0hBUEU7XHJcbiAgICBkZWxldGUgcHJvcGVydGllcy5TSEFQRV9TO1xyXG4gICAgZGVsZXRlIHByb3BlcnRpZXMuU0hBUEVfTDtcclxuICAgIGRlbGV0ZSBwcm9wZXJ0aWVzLlNIQVBFX1A7XHJcbiAgICBkZWxldGUgcHJvcGVydGllcy50aGVfZ2VvbTtcclxuICAgIGRlbGV0ZSBwcm9wZXJ0aWVzLmdlb207XHJcbiAgICBkZWxldGUgcHJvcGVydGllcy5nZW9tMzIxOTg7XHJcblxyXG4gICAgbGV0IGdlb21ldHJ5O1xyXG4gICAgaWYgKGZlYXR1cmVHZW9tZXRyeSkge1xyXG4gICAgICBnZW9tZXRyeSA9IHtcclxuICAgICAgICB0eXBlOiBmZWF0dXJlR2VvbWV0cnkuZ2V0VHlwZSgpLFxyXG4gICAgICAgIGNvb3JkaW5hdGVzOiBmZWF0dXJlR2VvbWV0cnkuZ2V0Q29vcmRpbmF0ZXMoKVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHR5cGU6IEZFQVRVUkUsXHJcbiAgICAgIHByb2plY3Rpb246IHVuZGVmaW5lZCxcclxuICAgICAgcHJvcGVydGllcyxcclxuICAgICAgZ2VvbWV0cnksXHJcbiAgICAgIG1ldGE6IHtcclxuICAgICAgICBpZDogdXVpZCgpLFxyXG4gICAgICAgIG9yZGVyOiAxMDAwIC0gekluZGV4LFxyXG4gICAgICAgIGFsaWFzOiBhbGxvd2VkRmllbGRzQW5kQWxpYXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UXVlcnlVcmwoXHJcbiAgICBkYXRhc291cmNlOiBRdWVyeWFibGVEYXRhU291cmNlLFxyXG4gICAgb3B0aW9uczogUXVlcnlPcHRpb25zLFxyXG4gICAgZm9yY2VHTUwyID0gZmFsc2UsXHJcbiAgICBtYXBFeHRlbnQ/OiBNYXBFeHRlbnRcclxuICApOiBzdHJpbmcgfCBRdWVyeVVybERhdGFbXSB7XHJcbiAgICBsZXQgdXJsO1xyXG5cclxuICAgIGlmIChkYXRhc291cmNlLm9wdGlvbnMucXVlcnlVcmxzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEN1c3RvbVF1ZXJ5VXJsKGRhdGFzb3VyY2UsIG9wdGlvbnMsIG1hcEV4dGVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoIChkYXRhc291cmNlLmNvbnN0cnVjdG9yKSB7XHJcbiAgICAgIGNhc2UgV01TRGF0YVNvdXJjZTpcclxuICAgICAgICBjb25zdCB3bXNEYXRhc291cmNlID0gZGF0YXNvdXJjZSBhcyBXTVNEYXRhU291cmNlO1xyXG5cclxuICAgICAgICBjb25zdCBXTVNHZXRGZWF0dXJlSW5mb09wdGlvbnMgPSB7XHJcbiAgICAgICAgICBJTkZPX0ZPUk1BVDpcclxuICAgICAgICAgICAgd21zRGF0YXNvdXJjZS5wYXJhbXMuSU5GT19GT1JNQVQgfHxcclxuICAgICAgICAgICAgdGhpcy5nZXRNaW1lSW5mb0Zvcm1hdChkYXRhc291cmNlLm9wdGlvbnMucXVlcnlGb3JtYXQpLFxyXG4gICAgICAgICAgUVVFUllfTEFZRVJTOiB3bXNEYXRhc291cmNlLnBhcmFtcy5MQVlFUlMsXHJcbiAgICAgICAgICBGRUFUVVJFX0NPVU5UOlxyXG4gICAgICAgICAgICB3bXNEYXRhc291cmNlLnBhcmFtcy5GRUFUVVJFX0NPVU5UIHx8IHRoaXMuZGVmYXVsdEZlYXR1cmVDb3VudFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmICh3bXNEYXRhc291cmNlLnBhcmFtcy5GRUFUVVJFX0NPVU5UKSB7XHJcbiAgICAgICAgICB0aGlzLmZlYXR1cmVDb3VudCA9IHdtc0RhdGFzb3VyY2UucGFyYW1zLkZFQVRVUkVfQ09VTlQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZm9yY2VHTUwyKSB7XHJcbiAgICAgICAgICBXTVNHZXRGZWF0dXJlSW5mb09wdGlvbnMuSU5GT19GT1JNQVQgPSB0aGlzLmdldE1pbWVJbmZvRm9ybWF0KFxyXG4gICAgICAgICAgICBRdWVyeUZvcm1hdC5HTUwyXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdXJsID0gd21zRGF0YXNvdXJjZS5vbC5nZXRGZWF0dXJlSW5mb1VybChcclxuICAgICAgICAgIG9wdGlvbnMuY29vcmRpbmF0ZXMsXHJcbiAgICAgICAgICBvcHRpb25zLnJlc29sdXRpb24sXHJcbiAgICAgICAgICBvcHRpb25zLnByb2plY3Rpb24sXHJcbiAgICAgICAgICBXTVNHZXRGZWF0dXJlSW5mb09wdGlvbnNcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIGNvbnN0IHdtc1ZlcnNpb24gPVxyXG4gICAgICAgIC8vICAgd21zRGF0YXNvdXJjZS5wYXJhbXMuVkVSU0lPTiB8fFxyXG4gICAgICAgIC8vICAgd21zRGF0YXNvdXJjZS5wYXJhbXMudmVyc2lvbiB8fFxyXG4gICAgICAgIC8vICAgJzEuMy4wJztcclxuICAgICAgICAvLyBpZiAod21zVmVyc2lvbiAhPT0gJzEuMy4wJykge1xyXG4gICAgICAgIC8vICAgdXJsID0gdXJsLnJlcGxhY2UoJyZJPScsICcmWD0nKTtcclxuICAgICAgICAvLyAgIHVybCA9IHVybC5yZXBsYWNlKCcmSj0nLCAnJlk9Jyk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENhcnRvRGF0YVNvdXJjZTpcclxuICAgICAgICBjb25zdCBjYXJ0b0RhdGFzb3VyY2UgPSBkYXRhc291cmNlIGFzIENhcnRvRGF0YVNvdXJjZTtcclxuICAgICAgICBjb25zdCBiYXNlVXJsID1cclxuICAgICAgICAgICdodHRwczovLycgK1xyXG4gICAgICAgICAgY2FydG9EYXRhc291cmNlLm9wdGlvbnMuYWNjb3VudCArXHJcbiAgICAgICAgICAnLmNhcnRvLmNvbS9hcGkvdjIvc3FsPyc7XHJcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gJ2Zvcm1hdD1HZW9KU09OJztcclxuICAgICAgICBjb25zdCBzcWwgPVxyXG4gICAgICAgICAgJyZxPScgKyBjYXJ0b0RhdGFzb3VyY2Uub3B0aW9ucy5jb25maWcubGF5ZXJzWzBdLm9wdGlvbnMuc3FsO1xyXG4gICAgICAgIGNvbnN0IGNsYXVzZSA9XHJcbiAgICAgICAgICAnIFdIRVJFIFNUX0ludGVyc2VjdHModGhlX2dlb21fd2VibWVyY2F0b3IsU1RfQlVGRkVSKFNUX1NldFNSSUQoU1RfUE9JTlQoJztcclxuICAgICAgICBjb25zdCBtZXRlcnMgPSBjYXJ0b0RhdGFzb3VyY2Uub3B0aW9ucy5xdWVyeVByZWNpc2lvblxyXG4gICAgICAgICAgPyBjYXJ0b0RhdGFzb3VyY2Uub3B0aW9ucy5xdWVyeVByZWNpc2lvblxyXG4gICAgICAgICAgOiAnMTAwMCc7XHJcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPVxyXG4gICAgICAgICAgb3B0aW9ucy5jb29yZGluYXRlc1swXSArXHJcbiAgICAgICAgICAnLCcgK1xyXG4gICAgICAgICAgb3B0aW9ucy5jb29yZGluYXRlc1sxXSArXHJcbiAgICAgICAgICAnKSwzODU3KSwnICtcclxuICAgICAgICAgIG1ldGVycyArXHJcbiAgICAgICAgICAnKSknO1xyXG5cclxuICAgICAgICB1cmwgPSBgJHtiYXNlVXJsfSR7Zm9ybWF0fSR7c3FsfSR7Y2xhdXNlfSR7Y29vcmRpbmF0ZXN9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBJbWFnZUFyY0dJU1Jlc3REYXRhU291cmNlOlxyXG4gICAgICBjYXNlIFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZTpcclxuICAgICAgICBjb25zdCB0aWxlQXJjR0lTUmVzdERhdGFzb3VyY2UgPSBkYXRhc291cmNlIGFzIFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZTtcclxuICAgICAgICBjb25zdCBkZWx0YVggPSBNYXRoLmFicyhtYXBFeHRlbnRbMF0gLSBtYXBFeHRlbnRbMl0pO1xyXG4gICAgICAgIGNvbnN0IGRlbHRhWSA9IE1hdGguYWJzKG1hcEV4dGVudFsxXSAtIG1hcEV4dGVudFszXSk7XHJcbiAgICAgICAgY29uc3QgbWF4RGVsdGEgPSBkZWx0YVggPiBkZWx0YVkgPyBkZWx0YVggOiBkZWx0YVk7XHJcbiAgICAgICAgY29uc3QgY2xpY2tCdWZmZXIgPSBtYXhEZWx0YSAqIDAuMDA1O1xyXG4gICAgICAgIGNvbnN0IHRocmVzaG9sZCA9IHRpbGVBcmNHSVNSZXN0RGF0YXNvdXJjZS5vcHRpb25zLnF1ZXJ5UHJlY2lzaW9uXHJcbiAgICAgICAgICA/IHRpbGVBcmNHSVNSZXN0RGF0YXNvdXJjZS5vcHRpb25zLnF1ZXJ5UHJlY2lzaW9uXHJcbiAgICAgICAgICA6IGNsaWNrQnVmZmVyO1xyXG4gICAgICAgIGNvbnN0IGV4dGVudCA9IG9sZXh0ZW50LmJ1ZmZlcihcclxuICAgICAgICAgIG9sZXh0ZW50LmJvdW5kaW5nRXh0ZW50KFtvcHRpb25zLmNvb3JkaW5hdGVzXSksXHJcbiAgICAgICAgICB0aHJlc2hvbGRcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmwgPVxyXG4gICAgICAgICAgdGlsZUFyY0dJU1Jlc3REYXRhc291cmNlLm9wdGlvbnMudXJsICtcclxuICAgICAgICAgICcvJyArXHJcbiAgICAgICAgICB0aWxlQXJjR0lTUmVzdERhdGFzb3VyY2Uub3B0aW9ucy5sYXllciArXHJcbiAgICAgICAgICAnL3F1ZXJ5Lyc7XHJcbiAgICAgICAgY29uc3QgZ2VvbWV0cnkgPSBlbmNvZGVVUklDb21wb25lbnQoXHJcbiAgICAgICAgICAne1wieG1pblwiOicgK1xyXG4gICAgICAgICAgICBleHRlbnRbMF0gK1xyXG4gICAgICAgICAgICAnLFwieW1pblwiOicgK1xyXG4gICAgICAgICAgICBleHRlbnRbMV0gK1xyXG4gICAgICAgICAgICAnLFwieG1heFwiOicgK1xyXG4gICAgICAgICAgICBleHRlbnRbMl0gK1xyXG4gICAgICAgICAgICAnLFwieW1heFwiOicgK1xyXG4gICAgICAgICAgICBleHRlbnRbM10gK1xyXG4gICAgICAgICAgICAnLFwic3BhdGlhbFJlZmVyZW5jZVwiOntcIndraWRcIjoxMDIxMDB9fSdcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IFtcclxuICAgICAgICAgICdmPWpzb24nLFxyXG4gICAgICAgICAgYGdlb21ldHJ5PSR7Z2VvbWV0cnl9YCxcclxuICAgICAgICAgICdnZW9tZXRyeVR5cGU9ZXNyaUdlb21ldHJ5RW52ZWxvcGUnLFxyXG4gICAgICAgICAgJ2luU1I9MTAyMTAwJyxcclxuICAgICAgICAgICdzcGF0aWFsUmVsPWVzcmlTcGF0aWFsUmVsSW50ZXJzZWN0cycsXHJcbiAgICAgICAgICAnb3V0RmllbGRzPSonLFxyXG4gICAgICAgICAgJ3JldHVybkdlb21ldHJ5PXRydWUnLFxyXG4gICAgICAgICAgJ291dFNSPTEwMjEwMCdcclxuICAgICAgICBdO1xyXG4gICAgICAgIHVybCA9IGAke3NlcnZpY2VVcmx9PyR7cGFyYW1zLmpvaW4oJyYnKX1gO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB1cmw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE1pbWVJbmZvRm9ybWF0KHF1ZXJ5Rm9ybWF0OiBzdHJpbmcpIHtcclxuICAgIGxldCBtaW1lID0gJ2FwcGxpY2F0aW9uL3ZuZC5vZ2MuZ21sJztcclxuICAgIGNvbnN0IGtleUVudW0gPSBPYmplY3Qua2V5cyhRdWVyeUZvcm1hdCkuZmluZChcclxuICAgICAgKGtleSkgPT4gUXVlcnlGb3JtYXRba2V5XSA9PT0gcXVlcnlGb3JtYXRcclxuICAgICk7XHJcbiAgICBpZiAoa2V5RW51bSkge1xyXG4gICAgICBtaW1lID0gUXVlcnlGb3JtYXRNaW1lVHlwZVtrZXlFbnVtXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWltZTtcclxuICB9XHJcblxyXG4gIGdldEFsbG93ZWRGaWVsZHNBbmRBbGlhcyhsYXllcjogYW55KSB7XHJcbiAgICBsZXQgYWxsb3dlZEZpZWxkc0FuZEFsaWFzO1xyXG4gICAgaWYgKFxyXG4gICAgICBsYXllci5vcHRpb25zPy5zb3VyY2U/Lm9wdGlvbnM/LnNvdXJjZUZpZWxkcyAmJlxyXG4gICAgICBsYXllci5vcHRpb25zLnNvdXJjZS5vcHRpb25zLnNvdXJjZUZpZWxkcy5sZW5ndGggPj0gMVxyXG4gICAgKSB7XHJcbiAgICAgIGFsbG93ZWRGaWVsZHNBbmRBbGlhcyA9IHt9O1xyXG4gICAgICBsYXllci5vcHRpb25zLnNvdXJjZS5vcHRpb25zLnNvdXJjZUZpZWxkcy5mb3JFYWNoKChzb3VyY2VGaWVsZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFsaWFzID0gc291cmNlRmllbGQuYWxpYXMgPyBzb3VyY2VGaWVsZC5hbGlhcyA6IHNvdXJjZUZpZWxkLm5hbWU7XHJcbiAgICAgICAgYWxsb3dlZEZpZWxkc0FuZEFsaWFzW3NvdXJjZUZpZWxkLm5hbWVdID0gYWxpYXM7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFsbG93ZWRGaWVsZHNBbmRBbGlhcztcclxuICB9XHJcblxyXG4gIGdldFF1ZXJ5VGl0bGUoZmVhdHVyZTogRmVhdHVyZSwgbGF5ZXI6IExheWVyKTogc3RyaW5nIHtcclxuICAgIGxldCB0aXRsZTtcclxuICAgIGlmIChsYXllci5vcHRpb25zPy5zb3VyY2U/Lm9wdGlvbnMpIHtcclxuICAgICAgY29uc3QgZGF0YVNvdXJjZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLnNvdXJjZVxyXG4gICAgICAgIC5vcHRpb25zIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zO1xyXG4gICAgICBpZiAoZGF0YVNvdXJjZU9wdGlvbnMucXVlcnlUaXRsZSkge1xyXG4gICAgICAgIHRpdGxlID0gdGhpcy5nZXRMYWJlbE1hdGNoKGZlYXR1cmUsIGRhdGFTb3VyY2VPcHRpb25zLnF1ZXJ5VGl0bGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRpdGxlO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGFiZWxNYXRjaChmZWF0dXJlOiBGZWF0dXJlLCBsYWJlbE1hdGNoKTogc3RyaW5nIHtcclxuICAgIGxldCBsYWJlbCA9IGxhYmVsTWF0Y2g7XHJcbiAgICBjb25zdCBsYWJlbFRvR2V0ID0gQXJyYXkuZnJvbShsYWJlbE1hdGNoLm1hdGNoQWxsKC9cXCRcXHsoW15cXHtcXH1dKylcXH0vZykpO1xyXG5cclxuICAgIGxhYmVsVG9HZXQuZm9yRWFjaCgodikgPT4ge1xyXG4gICAgICBsYWJlbCA9IGxhYmVsLnJlcGxhY2UodlswXSwgZmVhdHVyZS5wcm9wZXJ0aWVzW3ZbMV1dKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIE5vdGhpbmcgZG9uZT8gY2hlY2sgZmVhdHVyZSdzIGF0dHJpYnV0ZVxyXG4gICAgaWYgKGxhYmVsVG9HZXQubGVuZ3RoID09PSAwICYmIGxhYmVsID09PSBsYWJlbE1hdGNoKSB7XHJcbiAgICAgIGxhYmVsID0gZmVhdHVyZS5wcm9wZXJ0aWVzW2xhYmVsTWF0Y2hdIHx8IGxhYmVsTWF0Y2g7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxhYmVsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIGRhdGFzb3VyY2UgUXVlcnlhYmxlRGF0YVNvdXJjZVxyXG4gICAqIEBwYXJhbSBvcHRpb25zIFF1ZXJ5T3B0aW9uc1xyXG4gICAqIEBtYXBFeHRlbnQgZXh0ZW50IG9mIHRoZSBtYXAgd2hlbiBjbGljayBldmVudFxyXG4gICAqXHJcbiAgICovXHJcblxyXG4gIGdldEN1c3RvbVF1ZXJ5VXJsKFxyXG4gICAgZGF0YXNvdXJjZTogUXVlcnlhYmxlRGF0YVNvdXJjZSxcclxuICAgIG9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyxcclxuICAgIG1hcEV4dGVudD86IE1hcEV4dGVudFxyXG4gICk6IFF1ZXJ5VXJsRGF0YVtdIHtcclxuICAgIGNvbnN0IGV4dGVudCA9IG9sZXh0ZW50LmdldEZvclZpZXdBbmRTaXplKFxyXG4gICAgICBvcHRpb25zLmNvb3JkaW5hdGVzLFxyXG4gICAgICBvcHRpb25zLnJlc29sdXRpb24sXHJcbiAgICAgIDAsXHJcbiAgICAgIFsxMDEsIDEwMV1cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIGRhdGFzb3VyY2Uub3B0aW9ucy5xdWVyeVVybHMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgIGxldCBkYXRhOiBRdWVyeVVybERhdGEgPSB7XHJcbiAgICAgICAgdXJsOiBpdGVtLnVybFxyXG4gICAgICAgICAgLnJlcGxhY2UoL1xce2Jib3hcXH0vZywgZXh0ZW50LmpvaW4oJywnKSlcclxuICAgICAgICAgIC5yZXBsYWNlKC9cXHt4XFx9L2csIG9wdGlvbnMuY29vcmRpbmF0ZXNbMF0udG9TdHJpbmcoKSlcclxuICAgICAgICAgIC5yZXBsYWNlKC9cXHt5XFx9L2csIG9wdGlvbnMuY29vcmRpbmF0ZXNbMV0udG9TdHJpbmcoKSlcclxuICAgICAgICAgIC5yZXBsYWNlKC9cXHtyZXNvbHV0aW9uXFx9L2csIG9wdGlvbnMucmVzb2x1dGlvbi50b1N0cmluZygpKVxyXG4gICAgICAgICAgLnJlcGxhY2UoL1xce3NyaWRcXH0vZywgb3B0aW9ucy5wcm9qZWN0aW9uLnJlcGxhY2UoJ0VQU0c6JywgJycpKVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgLy8gaWYgdGhlIHF1ZXJ5Rm9ybWF0IGNoYW5nZWQgdG8gXCJRdWVyeUZvcm1hdC5IVE1MR01MMlwiOiBtYXBFeHRlbnQgd2lsbCBiZSB1bmRlZmluZWRcclxuICAgICAgLy8gd2UgbmVlZCB0byBjaGVjayBcIm1hcEV4dGVudFwiIGJlZm9yIHJlcGxhY2UgdmFyaWFibGVzIGluIHRoZSB1cmxcclxuICAgICAgaWYgKG1hcEV4dGVudCkge1xyXG4gICAgICAgIGRhdGEudXJsXHJcbiAgICAgICAgICAucmVwbGFjZSgvXFx7eG1pblxcfS9nLCBtYXBFeHRlbnRbMF0udG9TdHJpbmcoKSlcclxuICAgICAgICAgIC5yZXBsYWNlKC9cXHt5bWluXFx9L2csIG1hcEV4dGVudFsxXS50b1N0cmluZygpKVxyXG4gICAgICAgICAgLnJlcGxhY2UoL1xce3htYXhcXH0vZywgbWFwRXh0ZW50WzJdLnRvU3RyaW5nKCkpXHJcbiAgICAgICAgICAucmVwbGFjZSgvXFx7eW1heFxcfS9nLCBtYXBFeHRlbnRbM10udG9TdHJpbmcoKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpdGVtLm1heFJlc29sdXRpb24pIHtcclxuICAgICAgICBkYXRhLm1heFJlc29sdXRpb24gPSBpdGVtLm1heFJlc29sdXRpb247XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpdGVtLm1pblJlc29sdXRpb24pIHtcclxuICAgICAgICBkYXRhLm1pblJlc29sdXRpb24gPSBpdGVtLm1pblJlc29sdXRpb247XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpdGVtLm1pblNjYWxlKSB7XHJcbiAgICAgICAgZGF0YS5taW5TY2FsZSA9IGl0ZW0ubWluU2NhbGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpdGVtLm1heFNjYWxlKSB7XHJcbiAgICAgICAgZGF0YS5tYXhTY2FsZSA9IGl0ZW0ubWF4U2NhbGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
750
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.MessageService }] });
751
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3F1ZXJ5L3NoYXJlZC9xdWVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR25DLE9BQU8sS0FBSyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sZ0JBQWdCLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxZQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxZQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFbEMsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLElBQUksU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWpELE9BQU8sRUFDTCxlQUFlLEVBQ2YseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4QixhQUFhLEVBRWQsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFPN0QsT0FBTyxFQUNMLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsZUFBZSxFQUNoQixNQUFNLGVBQWUsQ0FBQzs7OztBQVd2QixNQUFNLE9BQU8sWUFBWTtJQVFiO0lB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Q0FBQyxhQUFhLENBQUM7WUFDMUMsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDMUMsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDaEMsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDaEMsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQW45QlUsWUFBWTsyR0FBWixZQUFZLGNBRlgsTUFBTTs7MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVzc2FnZSc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgb2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0ICogYXMgb2xleHRlbnQgZnJvbSAnb2wvZXh0ZW50JztcbmltcG9ydCAqIGFzIG9sZm9ybWF0IGZyb20gJ29sL2Zvcm1hdCc7XG5pbXBvcnQgb2xGb3JtYXRFc3JpSlNPTiBmcm9tICdvbC9mb3JtYXQvRXNyaUpTT04nO1xuaW1wb3J0IG9sRm9ybWF0R01MMiBmcm9tICdvbC9mb3JtYXQvR01MMic7XG5pbXBvcnQgb2xGb3JtYXRHTUwzIGZyb20gJ29sL2Zvcm1hdC9HTUwzJztcbmltcG9ydCAqIGFzIG9sZ2VvbSBmcm9tICdvbC9nZW9tJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIHN0cmlwdGFncyB9IGZyb20gJ3N0cmlwdGFncyc7XG5cbmltcG9ydCB7XG4gIENhcnRvRGF0YVNvdXJjZSxcbiAgSW1hZ2VBcmNHSVNSZXN0RGF0YVNvdXJjZSxcbiAgVGlsZUFyY0dJU1Jlc3REYXRhU291cmNlLFxuICBXTVNEYXRhU291cmNlLFxuICBXTVNEYXRhU291cmNlT3B0aW9uc1xufSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcyc7XG5pbXBvcnQgeyBGRUFUVVJFIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5lbnVtcyc7XG5pbXBvcnQge1xuICBGZWF0dXJlLFxuICBGZWF0dXJlR2VvbWV0cnlcbn0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IExheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllcic7XG5pbXBvcnQgeyBNYXBFeHRlbnQgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgUXVlcnlGb3JtYXQsXG4gIFF1ZXJ5Rm9ybWF0TWltZVR5cGUsXG4gIFF1ZXJ5SHRtbFRhcmdldFxufSBmcm9tICcuL3F1ZXJ5LmVudW1zJztcbmltcG9ydCB7XG4gIFF1ZXJ5T3B0aW9ucyxcbiAgUXVlcnlVcmxEYXRhLFxuICBRdWVyeWFibGVEYXRhU291cmNlLFxuICBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9uc1xufSBmcm9tICcuL3F1ZXJ5LmludGVyZmFjZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBRdWVyeVNlcnZpY2Uge1xuICBwdWJsaWMgcXVlcnlFbmFibGVkID0gdHJ1ZTtcbiAgcHVibGljIGRlZmF1bHRGZWF0dXJlQ291bnQgPSAyMDsgLy8gZGVmYXVsdCBmZWF0dXJlIGNvdW50XG4gIHB1YmxpYyBmZWF0dXJlQ291bnQgPSAyMDsgLy8gZmVhdHVyZSBjb3VudFxuXG4gIHByaXZhdGUgcHJldmlvdXNNZXNzYWdlSWRzID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXG4gICkge31cblxuICBxdWVyeShsYXllcnM6IExheWVyW10sIG9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyk6IE9ic2VydmFibGU8RmVhdHVyZVtdPltdIHtcbiAgICBpZiAodGhpcy5wcmV2aW91c01lc3NhZ2VJZHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnByZXZpb3VzTWVzc2FnZUlkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnJlbW92ZShpZCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdMYXllcnMgPSBsYXllcnNcbiAgICAgIC5maWx0ZXIoKGxheWVyOiBMYXllcikgPT4gbGF5ZXIudmlzaWJsZSAmJiBsYXllci5pc0luUmVzb2x1dGlvbnNSYW5nZSlcbiAgICAgIC5tYXAoKGxheWVyOiBMYXllcikgPT4gdGhpcy5xdWVyeUxheWVyKGxheWVyLCBvcHRpb25zKSk7XG4gICAgLy8gdGhlIGRpcmVjdGl2ZSBhY2NlcHQgYXJyYXkgaW4gdGhpcyBmb3JtYXQgW29ic2VydmFibGUsIG9ic2VydmFibGUuLi5dXG4gICAgLy8gaWYgd2UgdXNlIG11bHRpcGxlICd1cmwnIGluIHF1ZXJ5VXJsIHNvIHRoZSByZXN1bHQgPT4gdGhpcyBmb3JtIFtvYnNlcnZhYmxlLCBvYnNlcnZhYmxlLCBbb2JzZXJ2YWJsZSwgb2JzZXJ2YWJsZV1dXG4gICAgLy8gc28gd2UgbmVlZCB0byBmbGF0IHRoZSBhcnJheVxuICAgIGxldCBmbGF0QXJyYXkgPSBbXS5jb25jYXQuYXBwbHkoW10sIG5ld0xheWVycyk7XG4gICAgcmV0dXJuIGZsYXRBcnJheTtcbiAgfVxuXG4gIHF1ZXJ5TGF5ZXIoXG4gICAgbGF5ZXI6IExheWVyLFxuICAgIG9wdGlvbnM6IFF1ZXJ5T3B0aW9uc1xuICApOiBPYnNlcnZhYmxlPEZlYXR1cmVbXT4gfCBPYnNlcnZhYmxlPEZlYXR1cmVbXT5bXSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5nZXRRdWVyeVVybChcbiAgICAgIGxheWVyLmRhdGFTb3VyY2UsXG4gICAgICBvcHRpb25zLFxuICAgICAgZmFsc2UsXG4gICAgICBsYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0RXh0ZW50KClcbiAgICApO1xuICAgIGlmICghdXJsKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc29sdXRpb246IG51bWJlciA9IGxheWVyLm1hcC52aWV3Q29udHJvbGxlci5nZXRSZXNvbHV0aW9uKCk7XG4gICAgY29uc3Qgc2NhbGU6IG51bWJlciA9IGxheWVyLm1hcC52aWV3Q29udHJvbGxlci5nZXRTY2FsZSgpO1xuXG4gICAgaWYgKFxuICAgICAgKGxheWVyLmRhdGFTb3VyY2UgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZSkub3B0aW9ucy5xdWVyeUZvcm1hdCA9PT1cbiAgICAgIFF1ZXJ5Rm9ybWF0LkhUTUxHTUwyXG4gICAgKSB7XG4gICAgICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgdXJsR21sID0gdGhpcy5nZXRRdWVyeVVybChcbiAgICAgICAgICBsYXllci5kYXRhU291cmNlLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApIGFzIHN0cmluZztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsR21sLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKGdtbFJlcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWVyZ2VkR01MID0gdGhpcy5tZXJnZUdNTChnbWxSZXMsIHVybCwgbGF5ZXIpO1xuICAgICAgICAgICAgY29uc3QgaW1wb3NlZEdlb20gPSBtZXJnZWRHTUxbMF07XG4gICAgICAgICAgICBjb25zdCBpbXBvc2VkUHJvcGVydGllcyA9IG1lcmdlZEdNTFsxXTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXMpID0+XG4gICAgICAgICAgICAgICAgICB0aGlzLmV4dHJhY3REYXRhKFxuICAgICAgICAgICAgICAgICAgICByZXMsXG4gICAgICAgICAgICAgICAgICAgIGxheWVyLFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgICAgIGltcG9zZWRHZW9tLFxuICAgICAgICAgICAgICAgICAgICBpbXBvc2VkUHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY29uc3QgdXJsR21scyA9IHRoaXMuZ2V0UXVlcnlVcmwobGF5ZXIuZGF0YVNvdXJjZSwgb3B0aW9ucywgdHJ1ZSk7XG4gICAgICBsZXQgb2JzZXJ2YWJsZXM6IGFueSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1cmxHbWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB1cmxHbWxzW2ldIGFzIFF1ZXJ5VXJsRGF0YTtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tTY2FsZUFuZFJlc29sdXRpb24ocmVzb2x1dGlvbiwgc2NhbGUsIGVsZW1lbnQpKSB7XG4gICAgICAgICAgb2JzZXJ2YWJsZXMucHVzaChcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdERhdGFGb3JIVE1MR01MMihlbGVtZW50LnVybCwgdXJsW2ldLnVybCwgbGF5ZXIsIG9wdGlvbnMpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9ic2VydmFibGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMuaHR0cC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pO1xuICAgICAgICByZXR1cm4gcmVxdWVzdC5waXBlKFxuICAgICAgICAgIG1hcCgocmVzKSA9PiB0aGlzLmV4dHJhY3REYXRhKHJlcywgbGF5ZXIsIG9wdGlvbnMsIHVybCkpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBsZXQgb2JzZXJ2YWJsZXM6IGFueSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1cmwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgZWxlbWVudDogUXVlcnlVcmxEYXRhID0gdXJsW2ldO1xuICAgICAgICBpZiAodGhpcy5jaGVja1NjYWxlQW5kUmVzb2x1dGlvbihyZXNvbHV0aW9uLCBzY2FsZSwgZWxlbWVudCkpIHtcbiAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5odHRwLmdldChlbGVtZW50LnVybCwgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KTtcbiAgICAgICAgICBvYnNlcnZhYmxlcy5wdXNoKFxuICAgICAgICAgICAgcmVxdWVzdC5waXBlKFxuICAgICAgICAgICAgICBtYXAoKHJlcykgPT4gdGhpcy5leHRyYWN0RGF0YShyZXMsIGxheWVyLCBvcHRpb25zLCBlbGVtZW50LnVybCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG9ic2VydmFibGVzO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVxdWVzdERhdGFGb3JIVE1MR01MMihcbiAgICB1cmxHbWw6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBsYXllcjogTGF5ZXIsXG4gICAgb3B0aW9uczogUXVlcnlPcHRpb25zXG4gICk6IE9ic2VydmFibGU8RmVhdHVyZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsR21sLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoZ21sUmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lcmdlZEdNTCA9IHRoaXMubWVyZ2VHTUwoZ21sUmVzLCB1cmwsIGxheWVyKTtcbiAgICAgICAgY29uc3QgaW1wb3NlZEdlb20gPSBtZXJnZWRHTUxbMF07XG4gICAgICAgIGNvbnN0IGltcG9zZWRQcm9wZXJ0aWVzID0gbWVyZ2VkR01MWzFdO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgLmdldCh1cmwsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzKSA9PlxuICAgICAgICAgICAgICB0aGlzLmV4dHJhY3REYXRhKFxuICAgICAgICAgICAgICAgIHJlcyxcbiAgICAgICAgICAgICAgICBsYXllcixcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgICAgICBpbXBvc2VkR2VvbSxcbiAgICAgICAgICAgICAgICBpbXBvc2VkUHJvcGVydGllc1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tTY2FsZUFuZFJlc29sdXRpb24oXG4gICAgcmVzb2x1dGlvbjogbnVtYmVyLFxuICAgIHNjYWxlOiBudW1iZXIsXG4gICAgZWxlbWVudDogUXVlcnlVcmxEYXRhXG4gICk6IGJvb2xlYW4ge1xuICAgIGxldCBjaGVja1NjYWxlOiBib29sZWFuO1xuICAgIGxldCBjaGVja1Jlc29sdXRpb246IGJvb2xlYW47XG5cbiAgICBpZiAoXG4gICAgICAhZWxlbWVudC5taW5SZXNvbHV0aW9uICYmXG4gICAgICAhZWxlbWVudC5tYXhSZXNvbHV0aW9uICYmXG4gICAgICAhZWxlbWVudC5taW5TY2FsZSAmJlxuICAgICAgIWVsZW1lbnQubWF4U2NhbGVcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvKioqKioqKioqKioqKioqKioqKiBjaGVja2luZyBSZXNvbHV0aW9uICoqKioqKioqKioqKioqKioqKiovXG4gICAgICBpZiAoZWxlbWVudC5taW5SZXNvbHV0aW9uICYmIGVsZW1lbnQubWF4UmVzb2x1dGlvbikge1xuICAgICAgICAvLyBpZiBcIm1pblJlc29sdXRpb25cIiBhbmQgXCJtYXhSZXNvbHV0aW9uXCIgZXhpc3RzIGNoZWNrIGlmIHJlc29sdGlvbiBpcyBiZXR3ZWVuXG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXNvbHV0aW9uID49IGVsZW1lbnQubWluUmVzb2x1dGlvbiAmJlxuICAgICAgICAgIHJlc29sdXRpb24gPD0gZWxlbWVudC5tYXhSZXNvbHV0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgIGNoZWNrUmVzb2x1dGlvbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNoZWNrIGlmIFwibWluUmVzb2x1dGlvblwiIG9yIFwibWF4UmVzb2x1dGlvblwiIGV4aXN0c1xuICAgICAgICBpZiAoZWxlbWVudC5taW5SZXNvbHV0aW9uICYmIHJlc29sdXRpb24gPj0gZWxlbWVudC5taW5SZXNvbHV0aW9uKSB7XG4gICAgICAgICAgY2hlY2tSZXNvbHV0aW9uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudC5tYXhSZXNvbHV0aW9uICYmIHJlc29sdXRpb24gPD0gZWxlbWVudC5tYXhSZXNvbHV0aW9uKSB7XG4gICAgICAgICAgY2hlY2tSZXNvbHV0aW9uID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKioqKioqKioqKioqKioqKioqKiBjaGVja2luZyBTY2FsZSAqKioqKioqKioqKioqKioqKioqL1xuICAgICAgaWYgKGVsZW1lbnQubWluU2NhbGUgJiYgZWxlbWVudC5tYXhTY2FsZSkge1xuICAgICAgICAvLyBpZiBcIm1pblNjYWxlXCIgYW5kIFwibWF4U2NhbGVcIiBleGlzdHMgY2hlY2sgaWYgc2NhbGUgaXMgYmV0d2VlblxuICAgICAgICBpZiAoc2NhbGUgPiBlbGVtZW50Lm1pblNjYWxlICYmIHNjYWxlIDwgZWxlbWVudC5tYXhTY2FsZSkge1xuICAgICAgICAgIGNoZWNrU2NhbGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjaGVjayBpZiBcIm1pblNjYWxlXCIgb3IgXCJtYXhTY2FsZVwiIGV4aXN0c1xuICAgICAgICBpZiAoZWxlbWVudC5tYXhTY2FsZSAmJiBzY2FsZSA8PSBlbGVtZW50Lm1heFNjYWxlKSB7XG4gICAgICAgICAgY2hlY2tTY2FsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnQubWluU2NhbGUgJiYgc2NhbGUgPj0gZWxlbWVudC5taW5TY2FsZSkge1xuICAgICAgICAgIGNoZWNrU2NhbGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qKioqKioqKioqKioqKioqKioqIHJlc3VsdCBvZiBjaGVja2luZyAqKioqKioqKioqKioqKioqKioqL1xuICAgICAgaWYgKGNoZWNrU2NhbGUgPT09IHRydWUgJiYgY2hlY2tSZXNvbHV0aW9uID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgKGNoZWNrUmVzb2x1dGlvbiA9PT0gdHJ1ZSAmJiAhY2hlY2tTY2FsZSkgfHxcbiAgICAgICAgKGNoZWNrU2NhbGUgPT09IHRydWUgJiYgIWNoZWNrUmVzb2x1dGlvbilcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1lcmdlR01MKFxuICAgIGdtbFJlcyxcbiAgICB1cmwsXG4gICAgbGF5ZXI6IExheWVyXG4gICk6IFtGZWF0dXJlR2VvbWV0cnksIHsgW2tleTogc3RyaW5nXTogYW55IH1dIHtcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgb2xGb3JtYXRHTUwyKCk7XG4gICAgbGV0IGZlYXR1cmVzID0gcGFyc2VyLnJlYWRGZWF0dXJlcyhnbWxSZXMpO1xuICAgIC8vIEhhbmRsZSBub24gc3RhbmRhcmQgR01MIG91dHB1dCAoTWFwU2VydmVyKVxuICAgIGlmIChmZWF0dXJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnN0IHdtc1BhcnNlciA9IG5ldyBvbGZvcm1hdC5XTVNHZXRGZWF0dXJlSW5mbygpO1xuICAgICAgZmVhdHVyZXMgPSB3bXNQYXJzZXIucmVhZEZlYXR1cmVzKGdtbFJlcyk7XG4gICAgfVxuICAgIGNvbnN0IG9sbWxpbmUgPSBuZXcgb2xnZW9tLk11bHRpTGluZVN0cmluZyhbXSk7XG4gICAgbGV0IHB0cztcbiAgICBjb25zdCBwdHNBcnJheSA9IFtdO1xuICAgIGxldCBvbG1wb2x5ID0gbmV3IG9sZ2VvbS5NdWx0aVBvbHlnb24oW10pO1xuICAgIGxldCBmaXJzdEZlYXR1cmVUeXBlO1xuICAgIGNvbnN0IG5iRmVhdHVyZXMgPSBmZWF0dXJlcy5sZW5ndGg7XG5cbiAgICAvLyBDaGVjayBpZiBnZW9tZXRyeSBpbnRlcnNlY3QgYmJveFxuICAgIC8vIGZvciBnZW9zZXJ2ZXIgZ2V0ZmVhdHVyZWluZm8gcmVzcG9uc2UgaW4gZGF0YSBwcm9qZWN0aW9uLCBub3QgY2FsbCBwcm9qZWN0aW9uXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zOiBhbnkgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zKHVybC50b0xvd2VyQ2FzZSgpKTtcbiAgICBjb25zdCBiYm94UmF3ID0gc2VhcmNoUGFyYW1zLmJib3g7XG4gICAgY29uc3QgYmJveCA9IGJib3hSYXcuc3BsaXQoJywnKTtcbiAgICBjb25zdCBiYm94RXh0ZW50ID0gb2xleHRlbnQuY3JlYXRlRW1wdHkoKTtcbiAgICBvbGV4dGVudC5leHRlbmQoYmJveEV4dGVudCwgYmJveCk7XG4gICAgY29uc3Qgb3V0QmJveEV4dGVudCA9IGZhbHNlO1xuICAgIGxldCB0aXRsZUNvbnRlbnQ7XG4gICAgbGV0IHF1ZXJ5VGlsZUZpZWxkO1xuICAgIGlmIChsYXllci5vcHRpb25zPy5zb3VyY2U/Lm9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFTb3VyY2VPcHRpb25zID0gbGF5ZXIub3B0aW9ucy5zb3VyY2VcbiAgICAgICAgLm9wdGlvbnMgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnM7XG4gICAgICBpZiAoZGF0YVNvdXJjZU9wdGlvbnMucXVlcnlUaXRsZSkge1xuICAgICAgICBxdWVyeVRpbGVGaWVsZCA9IGRhdGFTb3VyY2VPcHRpb25zLnF1ZXJ5VGl0bGU7XG4gICAgICB9XG4gICAgfVxuICAgIGZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT4ge1xuICAgICAgaWYgKHF1ZXJ5VGlsZUZpZWxkKSB7XG4gICAgICAgIGxldCBxdWVyeVRpdGxlQ29udGVudCA9IGZlYXR1cmUuZ2V0UHJvcGVydGllcygpW3F1ZXJ5VGlsZUZpZWxkXTtcbiAgICAgICAgaWYgKHF1ZXJ5VGl0bGVDb250ZW50KSB7XG4gICAgICAgICAgdGl0bGVDb250ZW50ID0gIXRpdGxlQ29udGVudFxuICAgICAgICAgICAgPyBxdWVyeVRpdGxlQ29udGVudFxuICAgICAgICAgICAgOiBgJHt0aXRsZUNvbnRlbnR9LCR7cXVlcnlUaXRsZUNvbnRlbnR9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLyogIGlmICghZmVhdHVyZS5nZXRHZW9tZXRyeSgpLnNpbXBsaWZ5KDEwMCkuaW50ZXJzZWN0c0V4dGVudChiYm94RXh0ZW50KSkge1xuICAgICAgICBvdXRCYm94RXh0ZW50ID0gdHJ1ZTtcbiAgICAgICAgLy8gVE9ETzogQ2hlY2sgdG8gcHJvamVjdCB0aGUgZ2VvbWV0cnk/XG4gICAgICB9Ki9cbiAgICAgIGNvbnN0IGZlYXR1cmVHZW9tZXRyeUNvb3JkaW5hdGVzID0gKFxuICAgICAgICBmZWF0dXJlLmdldEdlb21ldHJ5KCkgYXMgYW55XG4gICAgICApLmdldENvb3JkaW5hdGVzKCk7XG4gICAgICBjb25zdCBmZWF0dXJlR2VvbWV0cnlUeXBlID0gZmVhdHVyZS5nZXRHZW9tZXRyeSgpLmdldFR5cGUoKTtcblxuICAgICAgaWYgKCFmaXJzdEZlYXR1cmVUeXBlICYmICFvdXRCYm94RXh0ZW50KSB7XG4gICAgICAgIGZpcnN0RmVhdHVyZVR5cGUgPSBmZWF0dXJlR2VvbWV0cnlUeXBlO1xuICAgICAgfVxuICAgICAgaWYgKCFvdXRCYm94RXh0ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZmVhdHVyZUdlb21ldHJ5VHlwZSkge1xuICAgICAgICAgIGNhc2UgJ1BvaW50JzpcbiAgICAgICAgICAgIGlmIChuYkZlYXR1cmVzID09PSAxKSB7XG4gICAgICAgICAgICAgIHB0cyA9IG5ldyBvbGdlb20uUG9pbnQoZmVhdHVyZUdlb21ldHJ5Q29vcmRpbmF0ZXMsICdYWScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcHRzQXJyYXkucHVzaChmZWF0dXJlR2VvbWV0cnlDb29yZGluYXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdMaW5lU3RyaW5nJzpcbiAgICAgICAgICAgIG9sbWxpbmUuYXBwZW5kTGluZVN0cmluZyhcbiAgICAgICAgICAgICAgbmV3IG9sZ2VvbS5MaW5lU3RyaW5nKGZlYXR1cmVHZW9tZXRyeUNvb3JkaW5hdGVzLCAnWFknKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgICAgICAgICAgb2xtcG9seS5hcHBlbmRQb2x5Z29uKFxuICAgICAgICAgICAgICBuZXcgb2xnZW9tLlBvbHlnb24oZmVhdHVyZUdlb21ldHJ5Q29vcmRpbmF0ZXMsICdYWScpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnTXVsdGlQb2x5Z29uJzpcbiAgICAgICAgICAgIG9sbXBvbHkgPSBuZXcgb2xnZW9tLk11bHRpUG9seWdvbihmZWF0dXJlR2VvbWV0cnlDb29yZGluYXRlcywgJ1hZJyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgb2xtcHRzO1xuICAgIGlmIChwdHNBcnJheS5sZW5ndGggPT09IDAgJiYgcHRzKSB7XG4gICAgICBvbG1wdHMgPSB7XG4gICAgICAgIHR5cGU6IHB0cy5nZXRUeXBlKCksXG4gICAgICAgIGNvb3JkaW5hdGVzOiBwdHMuZ2V0Q29vcmRpbmF0ZXMoKVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2xtcHRzID0ge1xuICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgIGNvb3JkaW5hdGVzOiBbdGhpcy5jb252ZXhIdWxsKHB0c0FycmF5KV1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IHJldHVybkdlb21ldHJ5O1xuICAgIHN3aXRjaCAoZmlyc3RGZWF0dXJlVHlwZSkge1xuICAgICAgY2FzZSAnTGluZVN0cmluZyc6XG4gICAgICAgIHJldHVybkdlb21ldHJ5ID0ge1xuICAgICAgICAgIHR5cGU6IG9sbWxpbmUuZ2V0VHlwZSgpLFxuICAgICAgICAgIGNvb3JkaW5hdGVzOiBvbG1saW5lLmdldENvb3JkaW5hdGVzKClcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdQb2ludCc6XG4gICAgICAgIHJldHVybkdlb21ldHJ5ID0gb2xtcHRzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgICAgICByZXR1cm5HZW9tZXRyeSA9IHtcbiAgICAgICAgICB0eXBlOiBvbG1wb2x5LmdldFR5cGUoKSxcbiAgICAgICAgICBjb29yZGluYXRlczogb2xtcG9seS5nZXRDb29yZGluYXRlcygpXG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnTXVsdGlQb2x5Z29uJzpcbiAgICAgICAgcmV0dXJuR2VvbWV0cnkgPSB7XG4gICAgICAgICAgdHlwZTogb2xtcG9seS5nZXRUeXBlKCksXG4gICAgICAgICAgY29vcmRpbmF0ZXM6IG9sbXBvbHkuZ2V0Q29vcmRpbmF0ZXMoKVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgaW1wb3NlZFByb3BlcnRpZXMgPSB7fTtcblxuICAgIGlmIChxdWVyeVRpbGVGaWVsZCkge1xuICAgICAgaW1wb3NlZFByb3BlcnRpZXNbcXVlcnlUaWxlRmllbGRdID0gdGl0bGVDb250ZW50O1xuICAgIH1cblxuICAgIHJldHVybiBbcmV0dXJuR2VvbWV0cnksIGltcG9zZWRQcm9wZXJ0aWVzXTtcbiAgfVxuXG4gIGNyb3NzKGEsIGIsIG8pIHtcbiAgICByZXR1cm4gKGFbMF0gLSBvWzBdKSAqIChiWzFdIC0gb1sxXSkgLSAoYVsxXSAtIG9bMV0pICogKGJbMF0gLSBvWzBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcG9pbnRzIEFuIGFycmF5IG9mIFtYLCBZXSBjb29yZGluYXRlc1xuICAgKiBUaGlzIG1ldGhvZCBpcyB1c2UgaW5zdGVhZCBvZiB0dXJmLmpzIGNvbnZleEh1bGwgYmVjYXVzZSBUdXJmIG5lZWRzIGF0IGxlYXN0IDMgcG9pbnQgdG8gbWFrZSBhIGh1bGwuXG4gICAqIGh0dHBzOi8vZW4ud2lraWJvb2tzLm9yZy93aWtpL0FsZ29yaXRobV9JbXBsZW1lbnRhdGlvbi9HZW9tZXRyeS9Db252ZXhfaHVsbC9Nb25vdG9uZV9jaGFpbiNKYXZhU2NyaXB0XG4gICAqL1xuICBjb252ZXhIdWxsKHBvaW50cykge1xuICAgIHBvaW50cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gYVswXSA9PT0gYlswXSA/IGFbMV0gLSBiWzFdIDogYVswXSAtIGJbMF07XG4gICAgfSk7XG5cbiAgICBjb25zdCBsb3dlciA9IFtdO1xuICAgIGZvciAoY29uc3QgcG9pbnQgb2YgcG9pbnRzKSB7XG4gICAgICB3aGlsZSAoXG4gICAgICAgIGxvd2VyLmxlbmd0aCA+PSAyICYmXG4gICAgICAgIHRoaXMuY3Jvc3MobG93ZXJbbG93ZXIubGVuZ3RoIC0gMl0sIGxvd2VyW2xvd2VyLmxlbmd0aCAtIDFdLCBwb2ludCkgPD0gMFxuICAgICAgKSB7XG4gICAgICAgIGxvd2VyLnBvcCgpO1xuICAgICAgfVxuICAgICAgbG93ZXIucHVzaChwb2ludCk7XG4gICAgfVxuXG4gICAgY29uc3QgdXBwZXIgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gcG9pbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB3aGlsZSAoXG4gICAgICAgIHVwcGVyLmxlbmd0aCA+PSAyICYmXG4gICAgICAgIHRoaXMuY3Jvc3MoXG4gICAgICAgICAgdXBwZXJbdXBwZXIubGVuZ3RoIC0gMl0sXG4gICAgICAgICAgdXBwZXJbdXBwZXIubGVuZ3RoIC0gMV0sXG4gICAgICAgICAgcG9pbnRzW2ldXG4gICAgICAgICkgPD0gMFxuICAgICAgKSB7XG4gICAgICAgIHVwcGVyLnBvcCgpO1xuICAgICAgfVxuICAgICAgdXBwZXIucHVzaChwb2ludHNbaV0pO1xuICAgIH1cblxuICAgIHVwcGVyLnBvcCgpO1xuICAgIGxvd2VyLnBvcCgpO1xuICAgIHJldHVybiBsb3dlci5jb25jYXQodXBwZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0RGF0YShcbiAgICByZXMsXG4gICAgbGF5ZXI6IExheWVyLFxuICAgIG9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBpbXBvc2VkR2VvbWV0cnk/LFxuICAgIGltcG9zZWRQcm9wZXJ0aWVzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICApOiBGZWF0dXJlW10ge1xuICAgIGNvbnN0IHF1ZXJ5RGF0YVNvdXJjZSA9IGxheWVyLmRhdGFTb3VyY2UgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZTtcblxuICAgIGNvbnN0IGFsbG93ZWRGaWVsZHNBbmRBbGlhcyA9IHRoaXMuZ2V0QWxsb3dlZEZpZWxkc0FuZEFsaWFzKGxheWVyKTtcbiAgICBsZXQgZmVhdHVyZXMgPSBbXTtcbiAgICBzd2l0Y2ggKHF1ZXJ5RGF0YVNvdXJjZS5vcHRpb25zLnF1ZXJ5Rm9ybWF0KSB7XG4gICAgICBjYXNlIFF1ZXJ5Rm9ybWF0LkdNTDM6XG4gICAgICAgIGZlYXR1cmVzID0gdGhpcy5leHRyYWN0R01MM0RhdGEoXG4gICAgICAgICAgcmVzLFxuICAgICAgICAgIGxheWVyLnpJbmRleCxcbiAgICAgICAgICBhbGxvd2VkRmllbGRzQW5kQWxpYXNcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFF1ZXJ5Rm9ybWF0LkpTT046XG4gICAgICBjYXNlIFF1ZXJ5Rm9ybWF0LkdFT0pTT046XG4gICAgICBjYXNlIFF1ZXJ5Rm9ybWF0LkdFT0pTT04yOlxuICAgICAgICBmZWF0dXJlcyA9IHRoaXMuZXh0cmFjdEdlb0pTT05EYXRhKFxuICAgICAgICAgIHJlcyxcbiAgICAgICAgICBsYXllci56SW5kZXgsXG4gICAgICAgICAgYWxsb3dlZEZpZWxkc0FuZEFsaWFzXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBRdWVyeUZvcm1hdC5FU1JJSlNPTjpcbiAgICAgICAgZmVhdHVyZXMgPSB0aGlzLmV4dHJhY3RFc3JpSlNPTkRhdGEoXG4gICAgICAgICAgcmVzLFxuICAgICAgICAgIGxheWVyLnpJbmRleCxcbiAgICAgICAgICBhbGxvd2VkRmllbGRzQW5kQWxpYXNcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFF1ZXJ5Rm9ybWF0LlRFWFQ6XG4gICAgICAgIGZlYXR1cmVzID0gdGhpcy5leHRyYWN0VGV4dERhdGEocmVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFF1ZXJ5Rm9ybWF0LkhUTUw6XG4gICAgICAgIGZlYXR1cmVzID0gdGhpcy5leHRyYWN0SHRtbERhdGEoXG4gICAgICAgICAgcmVzLFxuICAgICAgICAgIHF1ZXJ5RGF0YVNvdXJjZS5xdWVyeUh0bWxUYXJnZXQsXG4gICAgICAgICAgdXJsXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBRdWVyeUZvcm1hdC5IVE1MR01MMjpcbiAgICAgICAgZmVhdHVyZXMgPSB0aGlzLmV4dHJhY3RIdG1sRGF0YShcbiAgICAgICAgICByZXMsXG4gICAgICAgICAgcXVlcnlEYXRhU291cmNlLnF1ZXJ5SHRtbFRhcmdldCxcbiAgICAgICAgICB1cmwsXG4gICAgICAgICAgaW1wb3NlZEdlb21ldHJ5LFxuICAgICAgICAgIGltcG9zZWRQcm9wZXJ0aWVzXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBRdWVyeUZvcm1hdC5HTUwyOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZmVhdHVyZXMgPSB0aGlzLmV4dHJhY3RHTUwyRGF0YShyZXMsIGxheWVyLCBhbGxvd2VkRmllbGRzQW5kQWxpYXMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZmVhdHVyZXMubGVuZ3RoID4gMCAmJlxuICAgICAgKGZlYXR1cmVzWzBdLmdlb21ldHJ5ID09PSBudWxsIHx8ICFmZWF0dXJlc1swXS5nZW9tZXRyeSlcbiAgICApIHtcbiAgICAgIGNvbnN0IGdlb21Ub0FkZCA9IHRoaXMuY3JlYXRlR2VvbWV0cnlGcm9tVXJsQ2xpY2sodXJsKTtcblxuICAgICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XG4gICAgICAgIGZlYXR1cmUuZ2VvbWV0cnkgPSBnZW9tVG9BZGQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgd21zRGF0YXNvdXJjZSA9IGxheWVyLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZTtcbiAgICBjb25zdCBmZWF0dXJlQ291bnQgPSB3bXNEYXRhc291cmNlLnBhcmFtcz8uRkVBVFVSRV9DT1VOVFxuICAgICAgPyBuZXcgUmVnRXhwKCdGRUFUVVJFX0NPVU5UPScgKyB0aGlzLmZlYXR1cmVDb3VudClcbiAgICAgIDogbmV3IFJlZ0V4cCgnRkVBVFVSRV9DT1VOVD0nICsgdGhpcy5kZWZhdWx0RmVhdHVyZUNvdW50KTtcblxuICAgIGlmIChcbiAgICAgIGZlYXR1cmVDb3VudC50ZXN0KHVybCkgJiZcbiAgICAgICgod21zRGF0YXNvdXJjZS5wYXJhbXM/LkZFQVRVUkVfQ09VTlQgJiZcbiAgICAgICAgdGhpcy5mZWF0dXJlQ291bnQgPiAxICYmXG4gICAgICAgIGZlYXR1cmVzLmxlbmd0aCA9PT0gdGhpcy5mZWF0dXJlQ291bnQpIHx8XG4gICAgICAgICghd21zRGF0YXNvdXJjZS5wYXJhbXM/LkZFQVRVUkVfQ09VTlQgJiZcbiAgICAgICAgICBmZWF0dXJlcy5sZW5ndGggPT09IHRoaXMuZGVmYXVsdEZlYXR1cmVDb3VudCkpXG4gICAgKSB7XG4gICAgICBjb25zdCBtZXNzYWdlT2JqID0gdGhpcy5tZXNzYWdlU2VydmljZS5pbmZvKFxuICAgICAgICAnaWdvLmdlby5xdWVyeS5mZWF0dXJlQ291bnRNYXgnLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgeyB2YWx1ZTogbGF5ZXIudGl0bGUgfVxuICAgICAgKTtcbiAgICAgIHRoaXMucHJldmlvdXNNZXNzYWdlSWRzLnB1c2gobWVzc2FnZU9iai50b2FzdElkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlOiBGZWF0dXJlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBtYXBMYWJlbCA9IGZlYXR1cmUucHJvcGVydGllc1txdWVyeURhdGFTb3VyY2UubWFwTGFiZWxdO1xuXG4gICAgICBsZXQgZXhjbHVkZTtcbiAgICAgIGlmIChsYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnM/LnR5cGUgPT09ICd3bXMnKSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZU9wdGlvbnMgPSBsYXllci5vcHRpb25zXG4gICAgICAgICAgLnNvdXJjZU9wdGlvbnMgYXMgV01TRGF0YVNvdXJjZU9wdGlvbnM7XG4gICAgICAgIGV4Y2x1ZGUgPSBzb3VyY2VPcHRpb25zID8gc291cmNlT3B0aW9ucy5leGNsdWRlQXR0cmlidXRlIDogdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBsZXQgdGl0bGUgPSB0aGlzLmdldFF1ZXJ5VGl0bGUoZmVhdHVyZSwgbGF5ZXIpO1xuICAgICAgaWYgKCF0aXRsZSAmJiBmZWF0dXJlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRpdGxlID0gYCR7bGF5ZXIudGl0bGV9ICgke2luZGV4ICsgMX0pYDtcbiAgICAgIH0gZWxzZSBpZiAoIXRpdGxlKSB7XG4gICAgICAgIHRpdGxlID0gbGF5ZXIudGl0bGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1ldGEgPSBPYmplY3QuYXNzaWduKHt9LCBmZWF0dXJlLm1ldGEgfHwge30sIHtcbiAgICAgICAgaWQ6IHV1aWQoKSxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIG1hcFRpdGxlOiBtYXBMYWJlbCxcbiAgICAgICAgc291cmNlVGl0bGU6IGxheWVyLnRpdGxlLFxuICAgICAgICBvcmRlcjogMTAwMCAtIGxheWVyLnpJbmRleCxcbiAgICAgICAgZXhjbHVkZUF0dHJpYnV0ZTogZXhjbHVkZVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGZlYXR1cmUsIHtcbiAgICAgICAgbWV0YSxcbiAgICAgICAgcHJvamVjdGlvbjpcbiAgICAgICAgICBxdWVyeURhdGFTb3VyY2Uub3B0aW9ucy50eXBlID09PSAnY2FydG8nXG4gICAgICAgICAgICA/ICdFUFNHOjQzMjYnXG4gICAgICAgICAgICA6IG9wdGlvbnMucHJvamVjdGlvblxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUdlb21ldHJ5RnJvbVVybENsaWNrKHVybCkge1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtczogYW55ID0gdGhpcy5nZXRRdWVyeVBhcmFtcyh1cmwudG9Mb3dlckNhc2UoKSk7XG4gICAgY29uc3QgYmJveFJhdyA9IHNlYXJjaFBhcmFtcy5iYm94O1xuICAgIGNvbnN0IHdpZHRoID0gcGFyc2VJbnQoc2VhcmNoUGFyYW1zLndpZHRoLCAxMCk7XG4gICAgY29uc3QgaGVpZ2h0ID0gcGFyc2VJbnQoc2VhcmNoUGFyYW1zLmhlaWdodCwgMTApO1xuICAgIGNvbnN0IHhQb3NpdGlvbiA9IHBhcnNlSW50KHNlYXJjaFBhcmFtcy5pIHx8IHNlYXJjaFBhcmFtcy54LCAxMCk7XG4gICAgY29uc3QgeVBvc2l0aW9uID0gcGFyc2VJbnQoc2VhcmNoUGFyYW1zLmogfHwgc2VhcmNoUGFyYW1zLnksIDEwKTtcblxuICAgIGNvbnN0IGJib3ggPSBiYm94UmF3LnNwbGl0KCcsJyk7XG4gICAgbGV0IHRocmVzaG9sZCA9XG4gICAgICAoTWF0aC5hYnMocGFyc2VGbG9hdChiYm94WzBdKSkgLSBNYXRoLmFicyhwYXJzZUZsb2F0KGJib3hbMl0pKSkgKiAwLjA1O1xuXG4gICAgLy8gZm9yIGNvbnRleHQgaW4gZGVncmVlIChFUFNHOjQzMjYsNDI2OS4uLilcbiAgICBpZiAoTWF0aC5hYnMocGFyc2VGbG9hdChiYm94WzBdKSkgPCAxODApIHtcbiAgICAgIHRocmVzaG9sZCA9IDAuMDQ1O1xuICAgIH1cbiAgICBjb25zdCBjbGlja3ggPVxuICAgICAgcGFyc2VGbG9hdChiYm94WzBdKSArXG4gICAgICAoTWF0aC5hYnMocGFyc2VGbG9hdChiYm94WzBdKSAtIHBhcnNlRmxvYXQoYmJveFsyXSkpICogeFBvc2l0aW9uKSAvXG4gICAgICAgIHdpZHRoIC1cbiAgICAgIHRocmVzaG9sZDtcbiAgICBjb25zdCBjbGlja3kgPVxuICAgICAgcGFyc2VGbG9hdChiYm94WzFdKSArXG4gICAgICAoTWF0aC5hYnMocGFyc2VGbG9hdChiYm94WzFdKSAtIHBhcnNlRmxvYXQoYmJveFszXSkpICogeVBvc2l0aW9uKSAvXG4gICAgICAgIGhlaWdodCAtXG4gICAgICB0aHJlc2hvbGQ7XG4gICAgY29uc3QgY2xpY2t4MSA9IGNsaWNreCArIHRocmVzaG9sZCAqIDI7XG4gICAgY29uc3QgY2xpY2t5MSA9IGNsaWNreSArIHRocmVzaG9sZCAqIDI7XG5cbiAgICBjb25zdCB3a3RQb2x5ID1cbiAgICAgICdQT0xZR09OKCgnICtcbiAgICAgIGNsaWNreCArXG4gICAgICAnICcgK1xuICAgICAgY2xpY2t5ICtcbiAgICAgICcsICcgK1xuICAgICAgY2xpY2t4ICtcbiAgICAgICcgJyArXG4gICAgICBjbGlja3kxICtcbiAgICAgICcsICcgK1xuICAgICAgY2xpY2t4MSArXG4gICAgICAnICcgK1xuICAgICAgY2xpY2t5MSArXG4gICAgICAnLCAnICtcbiAgICAgIGNsaWNreDEgK1xuICAgICAgJyAnICtcbiAgICAgIGNsaWNreSArXG4gICAgICAnLCAnICtcbiAgICAgIGNsaWNreCArXG4gICAgICAnICcgK1xuICAgICAgY2xpY2t5ICtcbiAgICAgICcpKSc7XG5cbiAgICBjb25zdCBmb3JtYXQgPSBuZXcgb2xmb3JtYXQuV0tUKCk7XG4gICAgY29uc3QgdGVuUGVyY2VudFdpZHRoR2VvbSA9IGZvcm1hdC5yZWFkRmVhdHVyZSh3a3RQb2x5KTtcbiAgICBjb25zdCBmID0gdGVuUGVyY2VudFdpZHRoR2VvbS5nZXRHZW9tZXRyeSgpIGFzIGFueTtcblxuICAgIGNvbnN0IG5ld0dlb20gPSB7XG4gICAgICB0eXBlOiBmLmdldFR5cGUoKSxcbiAgICAgIGNvb3JkaW5hdGVzOiBmLmdldENvb3JkaW5hdGVzKClcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ld0dlb207XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RHTUwyRGF0YShyZXMsIHpJbmRleCwgYWxsb3dlZEZpZWxkc0FuZEFsaWFzPykge1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBvbEZvcm1hdEdNTDIoKTtcbiAgICBsZXQgZmVhdHVyZXMgPSBwYXJzZXIucmVhZEZlYXR1cmVzKHJlcyk7XG4gICAgLy8gSGFuZGxlIG5vbiBzdGFuZGFyZCBHTUwgb3V0cHV0IChNYXBTZXJ2ZXIpXG4gICAgaWYgKGZlYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3Qgd21zUGFyc2VyID0gbmV3IG9sZm9ybWF0LldNU0dldEZlYXR1cmVJbmZvKCk7XG4gICAgICB0cnkge1xuICAgICAgICBmZWF0dXJlcyA9IHdtc1BhcnNlci5yZWFkRmVhdHVyZXMocmVzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdxdWVyeS5zZXJ2aWNlOiBNdWx0aXBvbHlnb25zIGFyZSBiYWRseSBtYW5hZ2VkIGluIG1hcHNlcnZlciBpbiBHTUwyLiBVc2UgYW5vdGhlciBmb3JtYXQuJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+XG4gICAgICB0aGlzLmZlYXR1cmVUb1Jlc3VsdChmZWF0dXJlLCB6SW5kZXgsIGFsbG93ZWRGaWVsZHNBbmRBbGlhcylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0R01MM0RhdGEocmVzLCB6SW5kZXgsIGFsbG93ZWRGaWVsZHNBbmRBbGlhcz8pIHtcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgb2xGb3JtYXRHTUwzKCk7XG4gICAgbGV0IGZlYXR1cmVzID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGZlYXR1cmVzID0gcGFyc2VyLnJlYWRGZWF0dXJlcyhyZXMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybigncXVlcnkuc2VydmljZTogR01MMyBpcyBub3Qgd2VsbCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT5cbiAgICAgIHRoaXMuZmVhdHVyZVRvUmVzdWx0KGZlYXR1cmUsIHpJbmRleCwgYWxsb3dlZEZpZWxkc0FuZEFsaWFzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RHZW9KU09ORGF0YShyZXMsIHpJbmRleCwgYWxsb3dlZEZpZWxkc0FuZEFsaWFzPykge1xuICAgIGxldCBmZWF0dXJlcyA9IFtdO1xuICAgIHRyeSB7XG4gICAgICBmZWF0dXJlcyA9IEpTT04ucGFyc2UocmVzLnJlcGxhY2UoLyhcXHJ8XFxuKS9nLCAnICcpKS5mZWF0dXJlcztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ3F1ZXJ5LnNlcnZpY2U6IFVuYWJsZSB0byBwYXJzZSBnZW9qc29uJywgJ1xcbicsIHJlcyk7XG4gICAgfVxuICAgIGZlYXR1cmVzLm1hcChcbiAgICAgIChmZWF0dXJlKSA9PlxuICAgICAgICAoZmVhdHVyZS5tZXRhID0ge1xuICAgICAgICAgIGlkOiB1dWlkKCksXG4gICAgICAgICAgb3JkZXI6IDEwMDAgLSB6SW5kZXgsXG4gICAgICAgICAgYWxpYXM6IGFsbG93ZWRGaWVsZHNBbmRBbGlhc1xuICAgICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIGZlYXR1cmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0RXNyaUpTT05EYXRhKHJlcywgekluZGV4LCBhbGxvd2VkRmllbGRzQW5kQWxpYXMpIHtcbiAgICBpZiAocmVzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoSlNPTi5wYXJzZShyZXMpLmVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgb2xGb3JtYXRFc3JpSlNPTigpO1xuICAgIGNvbnN0IGZlYXR1cmVzID0gcGFyc2VyLnJlYWRGZWF0dXJlcyhyZXMpO1xuXG4gICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT5cbiAgICAgIHRoaXMuZmVhdHVyZVRvUmVzdWx0KGZlYXR1cmUsIHpJbmRleCwgYWxsb3dlZEZpZWxkc0FuZEFsaWFzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RUZXh0RGF0YShyZXMpIHtcbiAgICAvLyBUT0RPXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0SHRtbERhdGEoXG4gICAgcmVzLFxuICAgIGh0bWxUYXJnZXQ6IFF1ZXJ5SHRtbFRhcmdldCxcbiAgICB1cmwsXG4gICAgaW1wb3NlZEdlb21ldHJ5PyxcbiAgICBpbXBvc2VkUHJvcGVydGllcz86IHsgW2tleTogc3RyaW5nXTogYW55IH1cbiAgKSB7XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zOiBhbnkgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zKHVybC50b0xvd2VyQ2FzZSgpKTtcbiAgICBjb25zdCBwcm9qZWN0aW9uID0gc2VhcmNoUGFyYW1zLmNycyB8fCBzZWFyY2hQYXJhbXMuc3JzIHx8ICdFUFNHOjM4NTcnO1xuICAgIGNvbnN0IGdlb21Ub0FkZCA9IHRoaXMuY3JlYXRlR2VvbWV0cnlGcm9tVXJsQ2xpY2sodXJsKTtcblxuICAgIGlmIChcbiAgICAgIGh0bWxUYXJnZXQgIT09IFF1ZXJ5SHRtbFRhcmdldC5CTEFOSyAmJlxuICAgICAgaHRtbFRhcmdldCAhPT0gUXVlcnlIdG1sVGFyZ2V0LklGUkFNRVxuICAgICkge1xuICAgICAgaHRtbFRhcmdldCA9IFF1ZXJ5SHRtbFRhcmdldC5JRlJBTUU7XG4gICAgfVxuXG4gICAgY29uc3QgYm9keVRhZ1N0YXJ0ID0gcmVzLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignPGJvZHk+Jyk7XG4gICAgY29uc3QgYm9keVRhZ0VuZCA9IHJlcy50b0xvd2VyQ2FzZSgpLmxhc3RJbmRleE9mKCc8L2JvZHk+JykgKyA3O1xuICAgIC8vIHJlcGxhY2UgXFxyIFxcbiAgYW5kICcgJyB3aXRoICcnIHRvIHZhbGlkYXRlIGlmIHRoZSBib2R5IGlzIHJlYWxseSBlbXB0eS4gQ2xlYXIgYWxsIHRoZSBodG1sIHRhZ3MgZnJvbSBib2R5XG4gICAgY29uc3QgYm9keSA9IHN0cmlwdGFncyhcbiAgICAgIHJlcy5zbGljZShib2R5VGFnU3RhcnQsIGJvZHlUYWdFbmQpLnJlcGxhY2UoLyhcXHJ8XFxufFxccykvZywgJycpXG4gICAgKTtcbiAgICBpZiAoYm9keSA9PT0gJycgfHwgcmVzID09PSAnJykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6IEZFQVRVUkUsXG4gICAgICAgIHByb2plY3Rpb24sXG4gICAgICAgIHByb3BlcnRpZXM6IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgeyB0YXJnZXQ6IGh0bWxUYXJnZXQsIGJvZHk6IHJlcywgdXJsIH0sXG4gICAgICAgICAgaW1wb3NlZFByb3BlcnRpZXNcbiAgICAgICAgKSxcbiAgICAgICAgZ2VvbWV0cnk6IGltcG9zZWRHZW9tZXRyeSB8fCBnZW9tVG9BZGRcbiAgICAgIH1cbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRRdWVyeVBhcmFtcyh1cmwpIHtcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IHVybC5zcGxpdCgnPycpO1xuICAgIGlmICghcXVlcnlTdHJpbmdbMV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGFpcnMgPSBxdWVyeVN0cmluZ1sxXS5zcGxpdCgnJicpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgcGFpcnMuZm9yRWFjaCgocGFpcikgPT4ge1xuICAgICAgcGFpciA9IHBhaXIuc3BsaXQoJz0nKTtcbiAgICAgIHJlc3VsdFtwYWlyWzBdXSA9IGRlY29kZVVSSUNvbXBvbmVudChwYWlyWzFdIHx8ICcnKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHVibGljIGZlYXR1cmVUb1Jlc3VsdChcbiAgICBmZWF0dXJlT0w6IG9sRmVhdHVyZTxvbGdlb20uR2VvbWV0cnk+LFxuICAgIHpJbmRleDogbnVtYmVyLFxuICAgIGFsbG93ZWRGaWVsZHNBbmRBbGlhcz9cbiAgKTogRmVhdHVyZSB7XG4gICAgY29uc3QgZmVhdHVyZUdlb21ldHJ5ID0gZmVhdHVyZU9MLmdldEdlb21ldHJ5KCkgYXMgYW55O1xuICAgIGNvbnN0IHByb3BlcnRpZXM6IGFueSA9IE9iamVjdC5hc3NpZ24oe30sIGZlYXR1cmVPTC5nZXRQcm9wZXJ0aWVzKCkpO1xuICAgIGRlbGV0ZSBwcm9wZXJ0aWVzLmdlb21ldHJ5O1xuICAgIGRlbGV0ZSBwcm9wZXJ0aWVzLkdFT01FVFJJRTtcbiAgICBkZWxldGUgcHJvcGVydGllcy5ib3VuZGVkQnk7XG4gICAgZGVsZXRlIHByb3BlcnRpZXMuc2hhcGU7XG4gICAgZGVsZXRlIHByb3BlcnRpZXMuU0hBUEU7XG4gICAgZGVsZXRlIHByb3BlcnRpZXMuU0hBUEVfUztcbiAgICBkZWxldGUgcHJvcGVydGllcy5TSEFQRV9MO1xuICAgIGRlbGV0ZSBwcm9wZXJ0aWVzLlNIQVBFX1A7XG4gICAgZGVsZXRlIHByb3BlcnRpZXMudGhlX2dlb207XG4gICAgZGVsZXRlIHByb3BlcnRpZXMuZ2VvbTtcbiAgICBkZWxldGUgcHJvcGVydGllcy5nZW9tMzIxOTg7XG5cbiAgICBsZXQgZ2VvbWV0cnk7XG4gICAgaWYgKGZlYXR1cmVHZW9tZXRyeSkge1xuICAgICAgZ2VvbWV0cnkgPSB7XG4gICAgICAgIHR5cGU6IGZlYXR1cmVHZW9tZXRyeS5nZXRUeXBlKCksXG4gICAgICAgIGNvb3JkaW5hdGVzOiBmZWF0dXJlR2VvbWV0cnkuZ2V0Q29vcmRpbmF0ZXMoKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogRkVBVFVSRSxcbiAgICAgIHByb2plY3Rpb246IHVuZGVmaW5lZCxcbiAgICAgIHByb3BlcnRpZXMsXG4gICAgICBnZW9tZXRyeSxcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgaWQ6IHV1aWQoKSxcbiAgICAgICAgb3JkZXI6IDEwMDAgLSB6SW5kZXgsXG4gICAgICAgIGFsaWFzOiBhbGxvd2VkRmllbGRzQW5kQWxpYXNcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRRdWVyeVVybChcbiAgICBkYXRhc291cmNlOiBRdWVyeWFibGVEYXRhU291cmNlLFxuICAgIG9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyxcbiAgICBmb3JjZUdNTDIgPSBmYWxzZSxcbiAgICBtYXBFeHRlbnQ/OiBNYXBFeHRlbnRcbiAgKTogc3RyaW5nIHwgUXVlcnlVcmxEYXRhW10ge1xuICAgIGxldCB1cmw7XG5cbiAgICBpZiAoZGF0YXNvdXJjZS5vcHRpb25zLnF1ZXJ5VXJscykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q3VzdG9tUXVlcnlVcmwoZGF0YXNvdXJjZSwgb3B0aW9ucywgbWFwRXh0ZW50KTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGRhdGFzb3VyY2UuY29uc3RydWN0b3IpIHtcbiAgICAgIGNhc2UgV01TRGF0YVNvdXJjZTpcbiAgICAgICAgY29uc3Qgd21zRGF0YXNvdXJjZSA9IGRhdGFzb3VyY2UgYXMgV01TRGF0YVNvdXJjZTtcblxuICAgICAgICBjb25zdCBXTVNHZXRGZWF0dXJlSW5mb09wdGlvbnMgPSB7XG4gICAgICAgICAgSU5GT19GT1JNQVQ6XG4gICAgICAgICAgICB3bXNEYXRhc291cmNlLnBhcmFtcy5JTkZPX0ZPUk1BVCB8fFxuICAgICAgICAgICAgdGhpcy5nZXRNaW1lSW5mb0Zvcm1hdChkYXRhc291cmNlLm9wdGlvbnMucXVlcnlGb3JtYXQpLFxuICAgICAgICAgIFFVRVJZX0xBWUVSUzogd21zRGF0YXNvdXJjZS5wYXJhbXMuTEFZRVJTLFxuICAgICAgICAgIEZFQVRVUkVfQ09VTlQ6XG4gICAgICAgICAgICB3bXNEYXRhc291cmNlLnBhcmFtcy5GRUFUVVJFX0NPVU5UIHx8IHRoaXMuZGVmYXVsdEZlYXR1cmVDb3VudFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh3bXNEYXRhc291cmNlLnBhcmFtcy5GRUFUVVJFX0NPVU5UKSB7XG4gICAgICAgICAgdGhpcy5mZWF0dXJlQ291bnQgPSB3bXNEYXRhc291cmNlLnBhcmFtcy5GRUFUVVJFX0NPVU5UO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvcmNlR01MMikge1xuICAgICAgICAgIFdNU0dldEZlYXR1cmVJbmZvT3B0aW9ucy5JTkZPX0ZPUk1BVCA9IHRoaXMuZ2V0TWltZUluZm9Gb3JtYXQoXG4gICAgICAgICAgICBRdWVyeUZvcm1hdC5HTUwyXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHVybCA9IHdtc0RhdGFzb3VyY2Uub2wuZ2V0RmVhdHVyZUluZm9VcmwoXG4gICAgICAgICAgb3B0aW9ucy5jb29yZGluYXRlcyxcbiAgICAgICAgICBvcHRpb25zLnJlc29sdXRpb24sXG4gICAgICAgICAgb3B0aW9ucy5wcm9qZWN0aW9uLFxuICAgICAgICAgIFdNU0dldEZlYXR1cmVJbmZvT3B0aW9uc1xuICAgICAgICApO1xuICAgICAgICAvLyBjb25zdCB3bXNWZXJzaW9uID1cbiAgICAgICAgLy8gICB3bXNEYXRhc291cmNlLnBhcmFtcy5WRVJTSU9OIHx8XG4gICAgICAgIC8vICAgd21zRGF0YXNvdXJjZS5wYXJhbXMudmVyc2lvbiB8fFxuICAgICAgICAvLyAgICcxLjMuMCc7XG4gICAgICAgIC8vIGlmICh3bXNWZXJzaW9uICE9PSAnMS4zLjAnKSB7XG4gICAgICAgIC8vICAgdXJsID0gdXJsLnJlcGxhY2UoJyZJPScsICcmWD0nKTtcbiAgICAgICAgLy8gICB1cmwgPSB1cmwucmVwbGFjZSgnJko9JywgJyZZPScpO1xuICAgICAgICAvLyB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDYXJ0b0RhdGFTb3VyY2U6XG4gICAgICAgIGNvbnN0IGNhcnRvRGF0YXNvdXJjZSA9IGRhdGFzb3VyY2UgYXMgQ2FydG9EYXRhU291cmNlO1xuICAgICAgICBjb25zdCBiYXNlVXJsID1cbiAgICAgICAgICAnaHR0cHM6Ly8nICtcbiAgICAgICAgICBjYXJ0b0RhdGFzb3VyY2Uub3B0aW9ucy5hY2NvdW50ICtcbiAgICAgICAgICAnLmNhcnRvLmNvbS9hcGkvdjIvc3FsPyc7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9ICdmb3JtYXQ9R2VvSlNPTic7XG4gICAgICAgIGNvbnN0IHNxbCA9XG4gICAgICAgICAgJyZxPScgKyBjYXJ0b0RhdGFzb3VyY2Uub3B0aW9ucy5jb25maWcubGF5ZXJzWzBdLm9wdGlvbnMuc3FsO1xuICAgICAgICBjb25zdCBjbGF1c2UgPVxuICAgICAgICAgICcgV0hFUkUgU1RfSW50ZXJzZWN0cyh0aGVfZ2VvbV93ZWJtZXJjYXRvcixTVF9CVUZGRVIoU1RfU2V0U1JJRChTVF9QT0lOVCgnO1xuICAgICAgICBjb25zdCBtZXRlcnMgPSBjYXJ0b0RhdGFzb3VyY2Uub3B0aW9ucy5xdWVyeVByZWNpc2lvblxuICAgICAgICAgID8gY2FydG9EYXRhc291cmNlLm9wdGlvbnMucXVlcnlQcmVjaXNpb25cbiAgICAgICAgICA6ICcxMDAwJztcbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPVxuICAgICAgICAgIG9wdGlvbnMuY29vcmRpbmF0ZXNbMF0gK1xuICAgICAgICAgICcsJyArXG4gICAgICAgICAgb3B0aW9ucy5jb29yZGluYXRlc1sxXSArXG4gICAgICAgICAgJyksMzg1NyksJyArXG4gICAgICAgICAgbWV0ZXJzICtcbiAgICAgICAgICAnKSknO1xuXG4gICAgICAgIHVybCA9IGAke2Jhc2VVcmx9JHtmb3JtYXR9JHtzcWx9JHtjbGF1c2V9JHtjb29yZGluYXRlc31gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgSW1hZ2VBcmNHSVNSZXN0RGF0YVNvdXJjZTpcbiAgICAgIGNhc2UgVGlsZUFyY0dJU1Jlc3REYXRhU291cmNlOlxuICAgICAgICBjb25zdCB0aWxlQXJjR0lTUmVzdERhdGFzb3VyY2UgPSBkYXRhc291cmNlIGFzIFRpbGVBcmNHSVNSZXN0RGF0YVNvdXJjZTtcbiAgICAgICAgY29uc3QgZGVsdGFYID0gTWF0aC5hYnMobWFwRXh0ZW50WzBdIC0gbWFwRXh0ZW50WzJdKTtcbiAgICAgICAgY29uc3QgZGVsdGFZID0gTWF0aC5hYnMobWFwRXh0ZW50WzFdIC0gbWFwRXh0ZW50WzNdKTtcbiAgICAgICAgY29uc3QgbWF4RGVsdGEgPSBkZWx0YVggPiBkZWx0YVkgPyBkZWx0YVggOiBkZWx0YVk7XG4gICAgICAgIGNvbnN0IGNsaWNrQnVmZmVyID0gbWF4RGVsdGEgKiAwLjAwNTtcbiAgICAgICAgY29uc3QgdGhyZXNob2xkID0gdGlsZUFyY0dJU1Jlc3REYXRhc291cmNlLm9wdGlvbnMucXVlcnlQcmVjaXNpb25cbiAgICAgICAgICA/IHRpbGVBcmNHSVNSZXN0RGF0YXNvdXJjZS5vcHRpb25zLnF1ZXJ5UHJlY2lzaW9uXG4gICAgICAgICAgOiBjbGlja0J1ZmZlcjtcbiAgICAgICAgY29uc3QgZXh0ZW50ID0gb2xleHRlbnQuYnVmZmVyKFxuICAgICAgICAgIG9sZXh0ZW50LmJvdW5kaW5nRXh0ZW50KFtvcHRpb25zLmNvb3JkaW5hdGVzXSksXG4gICAgICAgICAgdGhyZXNob2xkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2VVcmwgPVxuICAgICAgICAgIHRpbGVBcmNHSVNSZXN0RGF0YXNvdXJjZS5vcHRpb25zLnVybCArXG4gICAgICAgICAgJy8nICtcbiAgICAgICAgICB0aWxlQXJjR0lTUmVzdERhdGFzb3VyY2Uub3B0aW9ucy5sYXllciArXG4gICAgICAgICAgJy9xdWVyeS8nO1xuICAgICAgICBjb25zdCBnZW9tZXRyeSA9IGVuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgICAne1wieG1pblwiOicgK1xuICAgICAgICAgICAgZXh0ZW50WzBdICtcbiAgICAgICAgICAgICcsXCJ5bWluXCI6JyArXG4gICAgICAgICAgICBleHRlbnRbMV0gK1xuICAgICAgICAgICAgJyxcInhtYXhcIjonICtcbiAgICAgICAgICAgIGV4dGVudFsyXSArXG4gICAgICAgICAgICAnLFwieW1heFwiOicgK1xuICAgICAgICAgICAgZXh0ZW50WzNdICtcbiAgICAgICAgICAgICcsXCJzcGF0aWFsUmVmZXJlbmNlXCI6e1wid2tpZFwiOjEwMjEwMH19J1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBbXG4gICAgICAgICAgJ2Y9anNvbicsXG4gICAgICAgICAgYGdlb21ldHJ5PSR7Z2VvbWV0cnl9YCxcbiAgICAgICAgICAnZ2VvbWV0cnlUeXBlPWVzcmlHZW9tZXRyeUVudmVsb3BlJyxcbiAgICAgICAgICAnaW5TUj0xMDIxMDAnLFxuICAgICAgICAgICdzcGF0aWFsUmVsPWVzcmlTcGF0aWFsUmVsSW50ZXJzZWN0cycsXG4gICAgICAgICAgJ291dEZpZWxkcz0qJyxcbiAgICAgICAgICAncmV0dXJuR2VvbWV0cnk9dHJ1ZScsXG4gICAgICAgICAgJ291dFNSPTEwMjEwMCdcbiAgICAgICAgXTtcbiAgICAgICAgdXJsID0gYCR7c2VydmljZVVybH0/JHtwYXJhbXMuam9pbignJicpfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWltZUluZm9Gb3JtYXQocXVlcnlGb3JtYXQ6IHN0cmluZykge1xuICAgIGxldCBtaW1lID0gJ2FwcGxpY2F0aW9uL3ZuZC5vZ2MuZ21sJztcbiAgICBjb25zdCBrZXlFbnVtID0gT2JqZWN0LmtleXMoUXVlcnlGb3JtYXQpLmZpbmQoXG4gICAgICAoa2V5KSA9PiBRdWVyeUZvcm1hdFtrZXldID09PSBxdWVyeUZvcm1hdFxuICAgICk7XG4gICAgaWYgKGtleUVudW0pIHtcbiAgICAgIG1pbWUgPSBRdWVyeUZvcm1hdE1pbWVUeXBlW2tleUVudW1dO1xuICAgIH1cblxuICAgIHJldHVybiBtaW1lO1xuICB9XG5cbiAgZ2V0QWxsb3dlZEZpZWxkc0FuZEFsaWFzKGxheWVyOiBhbnkpIHtcbiAgICBsZXQgYWxsb3dlZEZpZWxkc0FuZEFsaWFzO1xuICAgIGlmIChcbiAgICAgIGxheWVyLm9wdGlvbnM/LnNvdXJjZT8ub3B0aW9ucz8uc291cmNlRmllbGRzICYmXG4gICAgICBsYXllci5vcHRpb25zLnNvdXJjZS5vcHRpb25zLnNvdXJjZUZpZWxkcy5sZW5ndGggPj0gMVxuICAgICkge1xuICAgICAgYWxsb3dlZEZpZWxkc0FuZEFsaWFzID0ge307XG4gICAgICBsYXllci5vcHRpb25zLnNvdXJjZS5vcHRpb25zLnNvdXJjZUZpZWxkcy5mb3JFYWNoKChzb3VyY2VGaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBhbGlhcyA9IHNvdXJjZUZpZWxkLmFsaWFzID8gc291cmNlRmllbGQuYWxpYXMgOiBzb3VyY2VGaWVsZC5uYW1lO1xuICAgICAgICBhbGxvd2VkRmllbGRzQW5kQWxpYXNbc291cmNlRmllbGQubmFtZV0gPSBhbGlhcztcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYWxsb3dlZEZpZWxkc0FuZEFsaWFzO1xuICB9XG5cbiAgZ2V0UXVlcnlUaXRsZShmZWF0dXJlOiBGZWF0dXJlLCBsYXllcjogTGF5ZXIpOiBzdHJpbmcge1xuICAgIGxldCB0aXRsZTtcbiAgICBpZiAobGF5ZXIub3B0aW9ucz8uc291cmNlPy5vcHRpb25zKSB7XG4gICAgICBjb25zdCBkYXRhU291cmNlT3B0aW9ucyA9IGxheWVyLm9wdGlvbnMuc291cmNlXG4gICAgICAgIC5vcHRpb25zIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zO1xuICAgICAgaWYgKGRhdGFTb3VyY2VPcHRpb25zLnF1ZXJ5VGl0bGUpIHtcbiAgICAgICAgdGl0bGUgPSB0aGlzLmdldExhYmVsTWF0Y2goZmVhdHVyZSwgZGF0YVNvdXJjZU9wdGlvbnMucXVlcnlUaXRsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRpdGxlO1xuICB9XG5cbiAgZ2V0TGFiZWxNYXRjaChmZWF0dXJlOiBGZWF0dXJlLCBsYWJlbE1hdGNoKTogc3RyaW5nIHtcbiAgICBsZXQgbGFiZWwgPSBsYWJlbE1hdGNoO1xuICAgIGNvbnN0IGxhYmVsVG9HZXQgPSBBcnJheS5mcm9tKGxhYmVsTWF0Y2gubWF0Y2hBbGwoL1xcJFxceyhbXlxce1xcfV0rKVxcfS9nKSk7XG5cbiAgICBsYWJlbFRvR2V0LmZvckVhY2goKHYpID0+IHtcbiAgICAgIGxhYmVsID0gbGFiZWwucmVwbGFjZSh2WzBdLCBmZWF0dXJlLnByb3BlcnRpZXNbdlsxXV0pO1xuICAgIH0pO1xuXG4gICAgLy8gTm90aGluZyBkb25lPyBjaGVjayBmZWF0dXJlJ3MgYXR0cmlidXRlXG4gICAgaWYgKGxhYmVsVG9HZXQubGVuZ3RoID09PSAwICYmIGxhYmVsID09PSBsYWJlbE1hdGNoKSB7XG4gICAgICBsYWJlbCA9IGZlYXR1cmUucHJvcGVydGllc1tsYWJlbE1hdGNoXSB8fCBsYWJlbE1hdGNoO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gZGF0YXNvdXJjZSBRdWVyeWFibGVEYXRhU291cmNlXG4gICAqIEBwYXJhbSBvcHRpb25zIFF1ZXJ5T3B0aW9uc1xuICAgKiBAbWFwRXh0ZW50IGV4dGVudCBvZiB0aGUgbWFwIHdoZW4gY2xpY2sgZXZlbnRcbiAgICpcbiAgICovXG5cbiAgZ2V0Q3VzdG9tUXVlcnlVcmwoXG4gICAgZGF0YXNvdXJjZTogUXVlcnlhYmxlRGF0YVNvdXJjZSxcbiAgICBvcHRpb25zOiBRdWVyeU9wdGlvbnMsXG4gICAgbWFwRXh0ZW50PzogTWFwRXh0ZW50XG4gICk6IFF1ZXJ5VXJsRGF0YVtdIHtcbiAgICBjb25zdCBleHRlbnQgPSBvbGV4dGVudC5nZXRGb3JWaWV3QW5kU2l6ZShcbiAgICAgIG9wdGlvbnMuY29vcmRpbmF0ZXMsXG4gICAgICBvcHRpb25zLnJlc29sdXRpb24sXG4gICAgICAwLFxuICAgICAgWzEwMSwgMTAxXVxuICAgICk7XG5cbiAgICByZXR1cm4gZGF0YXNvdXJjZS5vcHRpb25zLnF1ZXJ5VXJscy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGxldCBkYXRhOiBRdWVyeVVybERhdGEgPSB7XG4gICAgICAgIHVybDogaXRlbS51cmxcbiAgICAgICAgICAucmVwbGFjZSgvXFx7YmJveFxcfS9nLCBleHRlbnQuam9pbignLCcpKVxuICAgICAgICAgIC5yZXBsYWNlKC9cXHt4XFx9L2csIG9wdGlvbnMuY29vcmRpbmF0ZXNbMF0udG9TdHJpbmcoKSlcbiAgICAgICAgICAucmVwbGFjZSgvXFx7eVxcfS9nLCBvcHRpb25zLmNvb3JkaW5hdGVzWzFdLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLnJlcGxhY2UoL1xce3Jlc29sdXRpb25cXH0vZywgb3B0aW9ucy5yZXNvbHV0aW9uLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLnJlcGxhY2UoL1xce3NyaWRcXH0vZywgb3B0aW9ucy5wcm9qZWN0aW9uLnJlcGxhY2UoJ0VQU0c6JywgJycpKVxuICAgICAgfTtcblxuICAgICAgLy8gaWYgdGhlIHF1ZXJ5Rm9ybWF0IGNoYW5nZWQgdG8gXCJRdWVyeUZvcm1hdC5IVE1MR01MMlwiOiBtYXBFeHRlbnQgd2lsbCBiZSB1bmRlZmluZWRcbiAgICAgIC8vIHdlIG5lZWQgdG8gY2hlY2sgXCJtYXBFeHRlbnRcIiBiZWZvciByZXBsYWNlIHZhcmlhYmxlcyBpbiB0aGUgdXJsXG4gICAgICBpZiAobWFwRXh0ZW50KSB7XG4gICAgICAgIGRhdGEudXJsXG4gICAgICAgICAgLnJlcGxhY2UoL1xce3htaW5cXH0vZywgbWFwRXh0ZW50WzBdLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLnJlcGxhY2UoL1xce3ltaW5cXH0vZywgbWFwRXh0ZW50WzFdLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLnJlcGxhY2UoL1xce3htYXhcXH0vZywgbWFwRXh0ZW50WzJdLnRvU3RyaW5nKCkpXG4gICAgICAgICAgLnJlcGxhY2UoL1xce3ltYXhcXH0vZywgbWFwRXh0ZW50WzNdLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbS5tYXhSZXNvbHV0aW9uKSB7XG4gICAgICAgIGRhdGEubWF4UmVzb2x1dGlvbiA9IGl0ZW0ubWF4UmVzb2x1dGlvbjtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW0ubWluUmVzb2x1dGlvbikge1xuICAgICAgICBkYXRhLm1pblJlc29sdXRpb24gPSBpdGVtLm1pblJlc29sdXRpb247XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtLm1pblNjYWxlKSB7XG4gICAgICAgIGRhdGEubWluU2NhbGUgPSBpdGVtLm1pblNjYWxlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbS5tYXhTY2FsZSkge1xuICAgICAgICBkYXRhLm1heFNjYWxlID0gaXRlbS5tYXhTY2FsZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -38,4 +38,4 @@ export function olLayerFeatureIsQueryable(olLayer) {
38
38
  ? false
39
39
  : layerIsQueryable(layer) && layerFeatureIsQueryable(layer);
40
40
  }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9xdWVyeS9zaGFyZWQvcXVlcnkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUE7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFlO0lBQzlDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFpQyxDQUFDO0lBQzNELE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDO0FBQy9DLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQTBCO0lBQzNELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEtBQWU7SUFDckQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQWlDLENBQUM7SUFDM0QsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLGtCQUFrQixLQUFLLFNBQVM7UUFDeEQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEtBQUssSUFBSTtRQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ1gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsT0FBMEI7SUFDbEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxPQUFPLEtBQUssS0FBSyxTQUFTO1FBQ3hCLENBQUMsQ0FBQyxLQUFLO1FBQ1AsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2xMYXllciBmcm9tICdvbC9sYXllci9MYXllcic7XHJcbmltcG9ydCBPbFNvdXJjZSBmcm9tICdvbC9zb3VyY2UvU291cmNlJztcclxuXHJcbmltcG9ydCB7IEFueUxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9hbnktbGF5ZXInO1xyXG5pbXBvcnQgeyBRdWVyeWFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9xdWVyeS5pbnRlcmZhY2VzJztcclxuXHJcbi8qKlxyXG4gKiBXaGV0aGVyIGEgbGF5ZXIgaXMgcXVlcnlhYmxlXHJcbiAqIEBwYXJhbSBsYXllciBMYXllclxyXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBsYXllciBzIHNxdWVyeWFibGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBsYXllcklzUXVlcnlhYmxlKGxheWVyOiBBbnlMYXllcik6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IGRhdGFTb3VyY2UgPSBsYXllci5kYXRhU291cmNlIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2U7XHJcbiAgcmV0dXJuIGRhdGFTb3VyY2Uub3B0aW9ucy5xdWVyeWFibGUgPT09IHRydWU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBXaGV0aGVyIGFuIE9MIGxheWVyIGlzIHF1ZXJ5YWJsZVxyXG4gKiBAcGFyYW0gbGF5ZXIgTGF5ZXJcclxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb2wgbGF5ZXIgaXMgcXVlcnlhYmxlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gb2xMYXllcklzUXVlcnlhYmxlKG9sTGF5ZXI6IE9sTGF5ZXI8T2xTb3VyY2U+KTogYm9vbGVhbiB7XHJcbiAgY29uc3QgbGF5ZXIgPSBvbExheWVyLmdldCgnX2xheWVyJyk7XHJcbiAgcmV0dXJuIGxheWVyID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IGxheWVySXNRdWVyeWFibGUobGF5ZXIpO1xyXG59XHJcblxyXG4vKipcclxuICogV2hldGhlciBhIGxheWVyJ3MgZmVhdHVyZSBpcyBxdWVyeWFibGVcclxuICogQHBhcmFtIGxheWVyIExheWVyXHJcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGxheWVyJ3MgZmVhdHVyZSBpcyBxdWVyeWFibGVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBsYXllckZlYXR1cmVJc1F1ZXJ5YWJsZShsYXllcjogQW55TGF5ZXIpOiBib29sZWFuIHtcclxuICBjb25zdCBkYXRhU291cmNlID0gbGF5ZXIuZGF0YVNvdXJjZSBhcyBRdWVyeWFibGVEYXRhU291cmNlO1xyXG4gIHJldHVybiBkYXRhU291cmNlLm9wdGlvbnMucXVlcnlMYXllckZlYXR1cmVzICE9PSB1bmRlZmluZWRcclxuICAgID8gZGF0YVNvdXJjZS5vcHRpb25zLnF1ZXJ5TGF5ZXJGZWF0dXJlcyA9PT0gdHJ1ZVxyXG4gICAgOiB0cnVlO1xyXG59XHJcblxyXG4vKipcclxuICogV2hldGhlciBhbiBPTCBWZWN0b3IgbGF5ZXIgaXMgcXVlcnlhYmxlXHJcbiAqIEBwYXJhbSBsYXllciBMYXllclxyXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvbCB2ZWN0b3IgbGF5ZXIgaXMgcXVlcnlhYmxlXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gb2xMYXllckZlYXR1cmVJc1F1ZXJ5YWJsZShvbExheWVyOiBPbExheWVyPE9sU291cmNlPik6IGJvb2xlYW4ge1xyXG4gIGNvbnN0IGxheWVyID0gb2xMYXllci5nZXQoJ19sYXllcicpO1xyXG4gIHJldHVybiBsYXllciA9PT0gdW5kZWZpbmVkXHJcbiAgICA/IGZhbHNlXHJcbiAgICA6IGxheWVySXNRdWVyeWFibGUobGF5ZXIpICYmIGxheWVyRmVhdHVyZUlzUXVlcnlhYmxlKGxheWVyKTtcclxufVxyXG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9xdWVyeS9zaGFyZWQvcXVlcnkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUE7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFlO0lBQzlDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFpQyxDQUFDO0lBQzNELE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDO0FBQy9DLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQTBCO0lBQzNELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEtBQWU7SUFDckQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQWlDLENBQUM7SUFDM0QsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLGtCQUFrQixLQUFLLFNBQVM7UUFDeEQsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEtBQUssSUFBSTtRQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ1gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsT0FBMEI7SUFDbEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxPQUFPLEtBQUssS0FBSyxTQUFTO1FBQ3hCLENBQUMsQ0FBQyxLQUFLO1FBQ1AsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgT2xMYXllciBmcm9tICdvbC9sYXllci9MYXllcic7XG5pbXBvcnQgT2xTb3VyY2UgZnJvbSAnb2wvc291cmNlL1NvdXJjZSc7XG5cbmltcG9ydCB7IEFueUxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9hbnktbGF5ZXInO1xuaW1wb3J0IHsgUXVlcnlhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vcXVlcnkuaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogV2hldGhlciBhIGxheWVyIGlzIHF1ZXJ5YWJsZVxuICogQHBhcmFtIGxheWVyIExheWVyXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBsYXllciBzIHNxdWVyeWFibGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxheWVySXNRdWVyeWFibGUobGF5ZXI6IEFueUxheWVyKTogYm9vbGVhbiB7XG4gIGNvbnN0IGRhdGFTb3VyY2UgPSBsYXllci5kYXRhU291cmNlIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2U7XG4gIHJldHVybiBkYXRhU291cmNlLm9wdGlvbnMucXVlcnlhYmxlID09PSB0cnVlO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYW4gT0wgbGF5ZXIgaXMgcXVlcnlhYmxlXG4gKiBAcGFyYW0gbGF5ZXIgTGF5ZXJcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9sIGxheWVyIGlzIHF1ZXJ5YWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gb2xMYXllcklzUXVlcnlhYmxlKG9sTGF5ZXI6IE9sTGF5ZXI8T2xTb3VyY2U+KTogYm9vbGVhbiB7XG4gIGNvbnN0IGxheWVyID0gb2xMYXllci5nZXQoJ19sYXllcicpO1xuICByZXR1cm4gbGF5ZXIgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogbGF5ZXJJc1F1ZXJ5YWJsZShsYXllcik7XG59XG5cbi8qKlxuICogV2hldGhlciBhIGxheWVyJ3MgZmVhdHVyZSBpcyBxdWVyeWFibGVcbiAqIEBwYXJhbSBsYXllciBMYXllclxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgbGF5ZXIncyBmZWF0dXJlIGlzIHF1ZXJ5YWJsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gbGF5ZXJGZWF0dXJlSXNRdWVyeWFibGUobGF5ZXI6IEFueUxheWVyKTogYm9vbGVhbiB7XG4gIGNvbnN0IGRhdGFTb3VyY2UgPSBsYXllci5kYXRhU291cmNlIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2U7XG4gIHJldHVybiBkYXRhU291cmNlLm9wdGlvbnMucXVlcnlMYXllckZlYXR1cmVzICE9PSB1bmRlZmluZWRcbiAgICA/IGRhdGFTb3VyY2Uub3B0aW9ucy5xdWVyeUxheWVyRmVhdHVyZXMgPT09IHRydWVcbiAgICA6IHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciBhbiBPTCBWZWN0b3IgbGF5ZXIgaXMgcXVlcnlhYmxlXG4gKiBAcGFyYW0gbGF5ZXIgTGF5ZXJcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9sIHZlY3RvciBsYXllciBpcyBxdWVyeWFibGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9sTGF5ZXJGZWF0dXJlSXNRdWVyeWFibGUob2xMYXllcjogT2xMYXllcjxPbFNvdXJjZT4pOiBib29sZWFuIHtcbiAgY29uc3QgbGF5ZXIgPSBvbExheWVyLmdldCgnX2xheWVyJyk7XG4gIHJldHVybiBsYXllciA9PT0gdW5kZWZpbmVkXG4gICAgPyBmYWxzZVxuICAgIDogbGF5ZXJJc1F1ZXJ5YWJsZShsYXllcikgJiYgbGF5ZXJGZWF0dXJlSXNRdWVyeWFibGUobGF5ZXIpO1xufVxuIl19
@@ -1,12 +1,10 @@
1
1
  export * from './shared';
2
+ export * from './search.module';
2
3
  export * from './search-selector/search-selector.component';
3
4
  export * from './search-selector/search-selector.module';
4
5
  export * from './search-settings/search-settings.component';
5
6
  export * from './search-settings/search-settings.module';
6
7
  export * from './search-bar/search-bar.component';
7
8
  export * from './search-bar/search-bar.module';
8
- export * from './search-results/search-results-add-button.component';
9
- export * from './search-results/search-results-item.component';
10
- export * from './search-results/search-results.component';
11
- export * from './search-results/search-results.module';
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyx3Q0FBd0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2hhcmVkJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gtc2VsZWN0b3Ivc2VhcmNoLXNlbGVjdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLXNlbGVjdG9yL3NlYXJjaC1zZWxlY3Rvci5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1zZXR0aW5ncy9zZWFyY2gtc2V0dGluZ3MuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gtc2V0dGluZ3Mvc2VhcmNoLXNldHRpbmdzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLWJhci9zZWFyY2gtYmFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLWJhci9zZWFyY2gtYmFyLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLXJlc3VsdHMvc2VhcmNoLXJlc3VsdHMtYWRkLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1yZXN1bHRzL3NlYXJjaC1yZXN1bHRzLWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gtcmVzdWx0cy9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1yZXN1bHRzL3NlYXJjaC1yZXN1bHRzLm1vZHVsZSc7XHJcbiJdfQ==
9
+ export * from './search-results';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLXNlbGVjdG9yL3NlYXJjaC1zZWxlY3Rvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gtc2VsZWN0b3Ivc2VhcmNoLXNlbGVjdG9yLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1zZXR0aW5ncy9zZWFyY2gtc2V0dGluZ3MuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLXNldHRpbmdzL3NlYXJjaC1zZXR0aW5ncy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoLWJhci9zZWFyY2gtYmFyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC1yZXN1bHRzJztcbiJdfQ==