@igo2/geo 17.0.0-next.0 → 17.0.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +3 -3
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +3 -3
  3. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +3 -3
  4. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +4 -4
  5. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +19 -17
  6. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +3 -3
  7. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +14 -12
  8. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +4 -4
  9. package/esm2022/lib/catalog/catalog.module.mjs +4 -4
  10. package/esm2022/lib/catalog/shared/catalog.service.mjs +12 -8
  11. package/esm2022/lib/datasource/shared/capabilities.service.mjs +3 -3
  12. package/esm2022/lib/datasource/shared/datasource.service.mjs +10 -8
  13. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
  14. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  15. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  16. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
  17. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  18. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  19. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
  20. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +3 -3
  21. package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +2 -2
  22. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +3 -3
  23. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +17 -13
  24. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +6 -6
  25. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +6 -6
  26. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +2 -2
  27. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +6 -6
  28. package/esm2022/lib/directions/directions.component.mjs +6 -6
  29. package/esm2022/lib/directions/directions.module.mjs +4 -4
  30. package/esm2022/lib/directions/shared/directions.service.mjs +13 -9
  31. package/esm2022/lib/directions/shared/directions.utils.mjs +1 -1
  32. package/esm2022/lib/download/download-button/download-button.component.mjs +3 -3
  33. package/esm2022/lib/download/download.module.mjs +4 -4
  34. package/esm2022/lib/download/shared/download.service.mjs +6 -6
  35. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +3 -3
  36. package/esm2022/lib/draw/draw/draw-popup.component.mjs +6 -6
  37. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +3 -3
  38. package/esm2022/lib/draw/draw/draw.component.mjs +6 -6
  39. package/esm2022/lib/draw/draw/draw.module.mjs +4 -4
  40. package/esm2022/lib/draw/drawingTool.module.mjs +4 -4
  41. package/esm2022/lib/draw/shared/draw-icon.service.mjs +6 -6
  42. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +13 -10
  43. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +3 -3
  44. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +4 -4
  45. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +3 -3
  46. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +4 -4
  47. package/esm2022/lib/feature/feature.module.mjs +4 -4
  48. package/esm2022/lib/filter/filter.module.mjs +4 -4
  49. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +3 -3
  50. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +3 -3
  51. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +6 -6
  52. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +3 -3
  53. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +3 -3
  54. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +3 -3
  55. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +3 -3
  56. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +3 -3
  57. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +3 -3
  58. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +3 -3
  59. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +3 -3
  60. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +3 -3
  61. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +9 -7
  62. package/esm2022/lib/filter/shared/time-filter.service.mjs +3 -3
  63. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +23 -21
  64. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +6 -6
  65. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +3 -3
  66. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +3 -3
  67. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +3 -3
  68. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +3 -3
  69. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +3 -3
  70. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +3 -3
  71. package/esm2022/lib/geo.module.mjs +4 -4
  72. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +3 -3
  73. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +3 -3
  74. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +4 -4
  75. package/esm2022/lib/geometry/geometry.module.mjs +4 -4
  76. package/esm2022/lib/import-export/export-button/export-button.component.mjs +3 -3
  77. package/esm2022/lib/import-export/import-export/import-export.component.mjs +28 -22
  78. package/esm2022/lib/import-export/import-export.module.mjs +4 -4
  79. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +11 -9
  80. package/esm2022/lib/import-export/shared/export.service.mjs +6 -6
  81. package/esm2022/lib/import-export/shared/export.utils.mjs +1 -1
  82. package/esm2022/lib/import-export/shared/import.service.mjs +6 -6
  83. package/esm2022/lib/import-export/shared/import.utils.mjs +1 -1
  84. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +6 -6
  85. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +18 -16
  86. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +6 -6
  87. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +3 -3
  88. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +3 -3
  89. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +6 -6
  90. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +3 -3
  91. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +3 -3
  92. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +3 -3
  93. package/esm2022/lib/layer/layer.module.mjs +4 -4
  94. package/esm2022/lib/layer/shared/layer.service.mjs +6 -6
  95. package/esm2022/lib/layer/shared/layers/image-layer.mjs +1 -1
  96. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -1
  97. package/esm2022/lib/layer/shared/layers/layer.mjs +1 -1
  98. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +1 -1
  99. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +1 -1
  100. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
  101. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +3 -3
  102. package/esm2022/lib/layer/utils/image-watcher.mjs +1 -1
  103. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +6 -6
  104. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +3 -3
  105. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +7 -7
  106. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +6 -6
  107. package/esm2022/lib/map/info-section/info-section.component.mjs +3 -3
  108. package/esm2022/lib/map/map-browser/map-browser.component.mjs +6 -6
  109. package/esm2022/lib/map/map-center/map-center.component.mjs +3 -3
  110. package/esm2022/lib/map/map.module.mjs +4 -4
  111. package/esm2022/lib/map/menu-button/menu-button.component.mjs +6 -6
  112. package/esm2022/lib/map/offline-button/offline-button.component.mjs +3 -3
  113. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +3 -3
  114. package/esm2022/lib/map/shared/controllers/geolocation.mjs +1 -1
  115. package/esm2022/lib/map/shared/hover-feature.directive.mjs +6 -6
  116. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +6 -6
  117. package/esm2022/lib/map/shared/map.mjs +1 -1
  118. package/esm2022/lib/map/shared/map.service.mjs +3 -3
  119. package/esm2022/lib/map/shared/mapOffline.directive.mjs +9 -7
  120. package/esm2022/lib/map/shared/projection.service.mjs +6 -6
  121. package/esm2022/lib/map/shared/projection.utils.mjs +1 -1
  122. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +3 -3
  123. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +6 -6
  124. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +3 -3
  125. package/esm2022/lib/measure/measure.module.mjs +4 -4
  126. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +3 -3
  127. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +3 -3
  128. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +3 -3
  129. package/esm2022/lib/measure/measurer/measurer.component.mjs +16 -14
  130. package/esm2022/lib/measure/measurer/measurer.module.mjs +4 -4
  131. package/esm2022/lib/measure/shared/measure.utils.mjs +1 -1
  132. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +6 -6
  133. package/esm2022/lib/metadata/metadata.module.mjs +4 -4
  134. package/esm2022/lib/metadata/shared/metadata.service.mjs +3 -3
  135. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +6 -6
  136. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +8 -10
  137. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +3 -3
  138. package/esm2022/lib/offline/shared/geo-network.service.mjs +6 -6
  139. package/esm2022/lib/overlay/overlay.module.mjs +4 -4
  140. package/esm2022/lib/overlay/shared/overlay.directive.mjs +3 -3
  141. package/esm2022/lib/overlay/shared/overlay.service.mjs +3 -3
  142. package/esm2022/lib/print/print/print.component.mjs +3 -3
  143. package/esm2022/lib/print/print-form/print-form.component.mjs +6 -6
  144. package/esm2022/lib/print/print.module.mjs +4 -4
  145. package/esm2022/lib/print/shared/print.service.mjs +13 -7
  146. package/esm2022/lib/query/query.module.mjs +6 -6
  147. package/esm2022/lib/query/shared/query-search-source.mjs +3 -3
  148. package/esm2022/lib/query/shared/query-search-source.providers.mjs +2 -2
  149. package/esm2022/lib/query/shared/query.directive.mjs +3 -3
  150. package/esm2022/lib/query/shared/query.service.mjs +6 -6
  151. package/esm2022/lib/search/search-bar/search-bar.component.mjs +6 -6
  152. package/esm2022/lib/search/search-bar/search-bar.module.mjs +4 -4
  153. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +6 -6
  154. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +6 -6
  155. package/esm2022/lib/search/search-results/search-results-item.component.mjs +3 -3
  156. package/esm2022/lib/search/search-results/search-results.component.mjs +6 -6
  157. package/esm2022/lib/search/search-results/search-results.module.mjs +4 -4
  158. package/esm2022/lib/search/search-selector/search-selector.component.mjs +3 -3
  159. package/esm2022/lib/search/search-selector/search-selector.module.mjs +4 -4
  160. package/esm2022/lib/search/search-settings/search-settings.component.mjs +18 -16
  161. package/esm2022/lib/search/search-settings/search-settings.module.mjs +4 -4
  162. package/esm2022/lib/search/search.module.mjs +4 -4
  163. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +6 -6
  164. package/esm2022/lib/search/shared/search.service.mjs +6 -6
  165. package/esm2022/lib/search/shared/sources/cadastre.mjs +9 -7
  166. package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +4 -2
  167. package/esm2022/lib/search/shared/sources/coordinates.mjs +12 -10
  168. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +4 -2
  169. package/esm2022/lib/search/shared/sources/icherche.mjs +16 -14
  170. package/esm2022/lib/search/shared/sources/icherche.providers.mjs +4 -2
  171. package/esm2022/lib/search/shared/sources/ilayer.mjs +12 -10
  172. package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +4 -2
  173. package/esm2022/lib/search/shared/sources/nominatim.mjs +6 -6
  174. package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +3 -2
  175. package/esm2022/lib/search/shared/sources/source.mjs +1 -1
  176. package/esm2022/lib/search/shared/sources/storedqueries.mjs +13 -11
  177. package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +4 -2
  178. package/esm2022/lib/search/shared/sources/workspace.mjs +9 -7
  179. package/esm2022/lib/search/shared/sources/workspace.providers.mjs +4 -2
  180. package/esm2022/lib/style/style-list/style-list.module.mjs +4 -4
  181. package/esm2022/lib/style/style-list/style-list.service.mjs +3 -3
  182. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +3 -3
  183. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +3 -3
  184. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +3 -3
  185. package/esm2022/lib/style/style-service/draw-style.service.mjs +3 -3
  186. package/esm2022/lib/style/style-service/style.service.mjs +3 -3
  187. package/esm2022/lib/style/style.module.mjs +4 -4
  188. package/esm2022/lib/toast/toast.component.mjs +3 -3
  189. package/esm2022/lib/toast/toast.module.mjs +4 -4
  190. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +6 -6
  191. package/esm2022/lib/wkt/shared/wkt.service.mjs +3 -3
  192. package/esm2022/lib/wkt/wkt.module.mjs +4 -4
  193. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +6 -6
  194. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +4 -4
  195. package/esm2022/lib/workspace/shared/edition-workspace.mjs +1 -1
  196. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +15 -11
  197. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +12 -10
  198. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +12 -10
  199. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +10 -8
  200. package/esm2022/lib/workspace/shared/workspace.utils.mjs +2 -2
  201. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +3 -3
  202. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +4 -4
  203. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +3 -3
  204. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +4 -4
  205. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +3 -3
  206. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +4 -4
  207. package/esm2022/lib/workspace/workspace.module.mjs +4 -4
  208. package/fesm2022/igo2-geo.mjs +701 -690
  209. package/fesm2022/igo2-geo.mjs.map +1 -1
  210. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +2 -1
  211. package/lib/catalog/catalog-library/catalog-library.component.d.ts +2 -1
  212. package/lib/catalog/shared/catalog.service.d.ts +3 -1
  213. package/lib/datasource/shared/datasource.service.d.ts +2 -1
  214. package/lib/datasource/shared/options/options-api.providers.d.ts +1 -1
  215. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +3 -1
  216. package/lib/directions/directions-inputs/directions-inputs.component.d.ts +1 -1
  217. package/lib/directions/directions-results/directions-results.component.d.ts +1 -1
  218. package/lib/directions/directions-sources/directions-source.provider.d.ts +1 -1
  219. package/lib/directions/directions-sources/osrm-directions-source.d.ts +1 -1
  220. package/lib/directions/directions.component.d.ts +1 -1
  221. package/lib/directions/shared/directions.service.d.ts +3 -1
  222. package/lib/directions/shared/directions.utils.d.ts +1 -1
  223. package/lib/download/shared/download.service.d.ts +1 -1
  224. package/lib/draw/draw/draw-popup.component.d.ts +1 -1
  225. package/lib/draw/draw/draw.component.d.ts +1 -1
  226. package/lib/draw/shared/draw-icon.service.d.ts +1 -1
  227. package/lib/feature/feature-details/feature-details.component.d.ts +3 -2
  228. package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +1 -1
  229. package/lib/filter/shared/spatial-filter.service.d.ts +2 -1
  230. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +2 -1
  231. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +1 -1
  232. package/lib/import-export/import-export/import-export.component.d.ts +4 -1
  233. package/lib/import-export/shared/drop-geo-file.directive.d.ts +2 -1
  234. package/lib/import-export/shared/export.service.d.ts +1 -1
  235. package/lib/import-export/shared/export.utils.d.ts +1 -1
  236. package/lib/import-export/shared/import.service.d.ts +1 -1
  237. package/lib/import-export/shared/import.utils.d.ts +1 -1
  238. package/lib/layer/layer-item/layer-item.component.d.ts +1 -1
  239. package/lib/layer/layer-legend/layer-legend.component.d.ts +2 -1
  240. package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +1 -1
  241. package/lib/layer/layer-list/layer-list-binding.directive.d.ts +1 -1
  242. package/lib/layer/shared/layer.service.d.ts +1 -1
  243. package/lib/layer/shared/layers/image-layer.d.ts +1 -1
  244. package/lib/layer/shared/layers/layer.d.ts +1 -1
  245. package/lib/layer/shared/layers/layer.interface.d.ts +1 -1
  246. package/lib/layer/shared/layers/tile-layer.d.ts +1 -1
  247. package/lib/layer/shared/layers/vector-layer.d.ts +1 -1
  248. package/lib/layer/shared/layers/vectortile-layer.d.ts +1 -1
  249. package/lib/layer/utils/image-watcher.d.ts +1 -1
  250. package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +1 -1
  251. package/lib/map/geolocate-button/geolocate-button.component.d.ts +1 -1
  252. package/lib/map/home-extent-button/home-extent-button.component.d.ts +1 -1
  253. package/lib/map/map-browser/map-browser.component.d.ts +1 -1
  254. package/lib/map/menu-button/menu-button.component.d.ts +1 -1
  255. package/lib/map/shared/controllers/geolocation.d.ts +2 -1
  256. package/lib/map/shared/hover-feature.directive.d.ts +1 -1
  257. package/lib/map/shared/map-pointer-position.directive.d.ts +1 -1
  258. package/lib/map/shared/map.d.ts +2 -1
  259. package/lib/map/shared/mapOffline.directive.d.ts +2 -1
  260. package/lib/map/shared/projection.service.d.ts +1 -1
  261. package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +1 -1
  262. package/lib/measure/measurer/measurer.component.d.ts +2 -1
  263. package/lib/measure/shared/measure.utils.d.ts +1 -1
  264. package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -1
  265. package/lib/offline/geoDB/geoDB.service.d.ts +2 -3
  266. package/lib/offline/shared/geo-network.service.d.ts +1 -1
  267. package/lib/print/print-form/print-form.component.d.ts +1 -1
  268. package/lib/print/shared/print.service.d.ts +4 -1
  269. package/lib/query/query.module.d.ts +1 -1
  270. package/lib/query/shared/query-search-source.providers.d.ts +1 -1
  271. package/lib/query/shared/query.service.d.ts +1 -1
  272. package/lib/search/search-bar/search-bar.component.d.ts +1 -1
  273. package/lib/search/search-results/save-feature-dialog.component.d.ts +1 -1
  274. package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
  275. package/lib/search/search-results/search-results.component.d.ts +1 -1
  276. package/lib/search/search-settings/search-settings.component.d.ts +2 -1
  277. package/lib/search/shared/search-pointer-summary.directive.d.ts +1 -1
  278. package/lib/search/shared/search.service.d.ts +1 -1
  279. package/lib/search/shared/sources/cadastre.d.ts +2 -1
  280. package/lib/search/shared/sources/cadastre.providers.d.ts +3 -1
  281. package/lib/search/shared/sources/coordinates.d.ts +2 -1
  282. package/lib/search/shared/sources/coordinates.providers.d.ts +3 -1
  283. package/lib/search/shared/sources/icherche.d.ts +2 -1
  284. package/lib/search/shared/sources/icherche.providers.d.ts +3 -1
  285. package/lib/search/shared/sources/ilayer.d.ts +2 -1
  286. package/lib/search/shared/sources/ilayer.providers.d.ts +3 -1
  287. package/lib/search/shared/sources/nominatim.d.ts +1 -1
  288. package/lib/search/shared/sources/nominatim.providers.d.ts +2 -1
  289. package/lib/search/shared/sources/source.d.ts +1 -1
  290. package/lib/search/shared/sources/storedqueries.d.ts +2 -1
  291. package/lib/search/shared/sources/storedqueries.providers.d.ts +3 -1
  292. package/lib/search/shared/sources/workspace.d.ts +2 -1
  293. package/lib/search/shared/sources/workspace.providers.d.ts +3 -1
  294. package/lib/utils/propertyTypeDetector/propertyTypeDetector.service.d.ts +1 -1
  295. package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +1 -1
  296. package/lib/workspace/shared/edition-workspace.d.ts +1 -1
  297. package/lib/workspace/shared/edition-workspace.service.d.ts +3 -1
  298. package/lib/workspace/shared/feature-workspace.service.d.ts +2 -1
  299. package/lib/workspace/shared/wfs-workspace.service.d.ts +2 -1
  300. package/lib/workspace/shared/wms-workspace.service.d.ts +2 -1
  301. package/package.json +5 -5
@@ -3,7 +3,9 @@ import { Injectable } from '@angular/core';
3
3
  import { MatDialog } from '@angular/material/dialog';
4
4
  import { AuthInterceptor } from '@igo2/auth';
5
5
  import { ActionStore, EntityStoreFilterSelectionStrategy, EntityTableColumnRenderer } from '@igo2/common';
6
- import { ConfigService, MessageService, StorageService } from '@igo2/core';
6
+ import { ConfigService } from '@igo2/core/config';
7
+ import { MessageService } from '@igo2/core/message';
8
+ import { StorageService } from '@igo2/core/storage';
7
9
  import GeoJSON from 'ol/format/GeoJSON';
8
10
  import WKT from 'ol/format/WKT';
9
11
  import { BehaviorSubject, throwError } from 'rxjs';
@@ -16,11 +18,13 @@ import { EditionWorkspace } from './edition-workspace';
16
18
  import { createFilterInMapExtentOrResolutionStrategy } from './workspace.utils';
17
19
  import * as i0 from "@angular/core";
18
20
  import * as i1 from "../../layer/shared";
19
- import * as i2 from "@igo2/core";
20
- import * as i3 from "@angular/common/http";
21
- import * as i4 from "@angular/material/dialog";
22
- import * as i5 from "../../style/style-service/style.service";
23
- import * as i6 from "@igo2/auth";
21
+ import * as i2 from "@igo2/core/storage";
22
+ import * as i3 from "@igo2/core/config";
23
+ import * as i4 from "@igo2/core/message";
24
+ import * as i5 from "@angular/common/http";
25
+ import * as i6 from "@angular/material/dialog";
26
+ import * as i7 from "../../style/style-service/style.service";
27
+ import * as i8 from "@igo2/auth";
24
28
  export class EditionWorkspaceService {
25
29
  layerService;
26
30
  storageService;
@@ -686,15 +690,15 @@ export class EditionWorkspaceService {
686
690
  }
687
691
  });
688
692
  }
689
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditionWorkspaceService, deps: [{ token: i1.LayerService }, { token: i2.StorageService }, { token: i2.ConfigService }, { token: i2.MessageService }, { token: i3.HttpClient }, { token: i4.MatDialog }, { token: i5.StyleService }, { token: i6.AuthInterceptor }], target: i0.ɵɵFactoryTarget.Injectable });
690
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditionWorkspaceService, providedIn: 'root' });
693
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: EditionWorkspaceService, deps: [{ token: i1.LayerService }, { token: i2.StorageService }, { token: i3.ConfigService }, { token: i4.MessageService }, { token: i5.HttpClient }, { token: i6.MatDialog }, { token: i7.StyleService }, { token: i8.AuthInterceptor }], target: i0.ɵɵFactoryTarget.Injectable });
694
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: EditionWorkspaceService, providedIn: 'root' });
691
695
  }
692
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: EditionWorkspaceService, decorators: [{
696
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: EditionWorkspaceService, decorators: [{
693
697
  type: Injectable,
694
698
  args: [{
695
699
  providedIn: 'root'
696
700
  }]
697
- }], ctorParameters: () => [{ type: i1.LayerService }, { type: i2.StorageService }, { type: i2.ConfigService }, { type: i2.MessageService }, { type: i3.HttpClient }, { type: i4.MatDialog }, { type: i5.StyleService }, { type: i6.AuthInterceptor }] });
701
+ }], ctorParameters: () => [{ type: i1.LayerService }, { type: i2.StorageService }, { type: i3.ConfigService }, { type: i4.MessageService }, { type: i5.HttpClient }, { type: i6.MatDialog }, { type: i7.StyleService }, { type: i8.AuthInterceptor }] });
698
702
  function getColumnKeyWithoutPropertiesTag(column) {
699
703
  if (column.includes('properties.')) {
700
704
  return column.split('.')[1];
@@ -708,4 +712,4 @@ function removeZ(coords) {
708
712
  return coords.slice(0, 2);
709
713
  return coords.map(removeZ);
710
714
  }
711
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGlvbi13b3Jrc3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3dvcmtzcGFjZS9zaGFyZWQvZWRpdGlvbi13b3Jrc3BhY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUVWLFdBQVcsRUFDWixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0MsT0FBTyxFQUNMLFdBQVcsRUFDWCxrQ0FBa0MsRUFFbEMseUJBQXlCLEVBRTFCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUkzRSxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUN4QyxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUM7QUFJaEMsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBRTNGLE9BQU8sRUFFTCxhQUFhLEVBQ2IsWUFBWSxFQUNaLCtCQUErQixFQUMvQixtQ0FBbUMsRUFDbkMsZ0NBQWdDLEVBQ2hDLDZCQUE2QixFQUM5QixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFHTCxZQUFZLEVBRVosZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWixNQUFNLG9CQUFvQixDQUFDO0FB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QUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEh0dHBDbGllbnQsXHJcbiAgSHR0cEVycm9yUmVzcG9uc2UsXHJcbiAgSHR0cEhlYWRlcnNcclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbmltcG9ydCB7IEF1dGhJbnRlcmNlcHRvciB9IGZyb20gJ0BpZ28yL2F1dGgnO1xyXG5pbXBvcnQge1xyXG4gIEFjdGlvblN0b3JlLFxyXG4gIEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3ksXHJcbiAgRW50aXR5VGFibGVCdXR0b24sXHJcbiAgRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlcixcclxuICBFbnRpdHlUYWJsZVRlbXBsYXRlXHJcbn0gZnJvbSAnQGlnbzIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgTWVzc2FnZVNlcnZpY2UsIFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcblxyXG5pbXBvcnQgb2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xyXG5pbXBvcnQgeyBGZWF0dXJlTG9hZGVyIH0gZnJvbSAnb2wvZmVhdHVyZWxvYWRlcic7XHJcbmltcG9ydCBHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcclxuaW1wb3J0IFdLVCBmcm9tICdvbC9mb3JtYXQvV0tUJztcclxuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcclxuaW1wb3J0IG9sU291cmNlSW1hZ2VXTVMgZnJvbSAnb2wvc291cmNlL0ltYWdlV01TJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHNraXBXaGlsZSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgUmVsYXRpb25PcHRpb25zLFxyXG4gIFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMsXHJcbiAgV01TRGF0YVNvdXJjZVxyXG59IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzJztcclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy9mZWF0dXJlLWRhdGFzb3VyY2UnO1xyXG5pbXBvcnQgeyBXRlNEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL3dmcy1kYXRhc291cmNlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7XHJcbiAgRmVhdHVyZSxcclxuICBGZWF0dXJlTW90aW9uLFxyXG4gIEZlYXR1cmVTdG9yZSxcclxuICBGZWF0dXJlU3RvcmVJbk1hcEV4dGVudFN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZUluTWFwUmVzb2x1dGlvblN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5XHJcbn0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQnO1xyXG5pbXBvcnQgeyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtcclxuICBHZW9Xb3Jrc3BhY2VPcHRpb25zLFxyXG4gIEltYWdlTGF5ZXIsXHJcbiAgTGF5ZXJTZXJ2aWNlLFxyXG4gIExheWVyc0xpbmtQcm9wZXJ0aWVzLFxyXG4gIExpbmtlZFByb3BlcnRpZXMsXHJcbiAgVmVjdG9yTGF5ZXJcclxufSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQnO1xyXG5pbXBvcnQgeyBJZ29NYXAsIE1hcEJhc2UgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkJztcclxuaW1wb3J0IHsgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9xdWVyeS9zaGFyZWQvcXVlcnkuaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFN0eWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3N0eWxlL3N0eWxlLXNlcnZpY2Uvc3R5bGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEVkaXRpb25Xb3Jrc3BhY2UgfSBmcm9tICcuL2VkaXRpb24td29ya3NwYWNlJztcclxuaW1wb3J0IHsgY3JlYXRlRmlsdGVySW5NYXBFeHRlbnRPclJlc29sdXRpb25TdHJhdGVneSB9IGZyb20gJy4vd29ya3NwYWNlLnV0aWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRpb25Xb3Jrc3BhY2VTZXJ2aWNlIHtcclxuICBwdWJsaWMgd3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZCk7XHJcbiAgcHVibGljIGFkZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwdWJsaWMgcmVsYXRpb25MYXllcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbWFnZUxheWVyW10gfCBWZWN0b3JMYXllcltdPihcclxuICAgIHVuZGVmaW5lZFxyXG4gICk7XHJcbiAgcHVibGljIHJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcclxuICBwdWJsaWMgd2t0Rm9ybWF0ID0gbmV3IFdLVCgpO1xyXG4gIHB1YmxpYyBnZW9Kc29uRm9ybWF0ID0gbmV3IEdlb0pTT04oKTtcclxuXHJcbiAgZ2V0IHpvb21BdXRvKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCd6b29tQXV0bycpIGFzIGJvb2xlYW47XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbGF5ZXJTZXJ2aWNlOiBMYXllclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgc3R5bGVTZXJ2aWNlOiBTdHlsZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYXV0aEludGVyY2VwdG9yPzogQXV0aEludGVyY2VwdG9yXHJcbiAgKSB7fVxyXG5cclxuICBjcmVhdGVXb3Jrc3BhY2UobGF5ZXI6IEltYWdlTGF5ZXIsIG1hcDogSWdvTWFwKTogRWRpdGlvbldvcmtzcGFjZSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5lbmFibGVkICE9PSB0cnVlIHx8XHJcbiAgICAgIGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLmVuYWJsZWQgIT09IHRydWVcclxuICAgICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgd2tzQ29uZmlnO1xyXG4gICAgaWYgKGxheWVyLm9wdGlvbnMud29ya3NwYWNlKSB7XHJcbiAgICAgIHdrc0NvbmZpZyA9IGxheWVyLm9wdGlvbnMud29ya3NwYWNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd2tzQ29uZmlnID0ge307XHJcbiAgICB9XHJcbiAgICB3a3NDb25maWcuc3JjSWQgPSBsYXllci5pZDtcclxuICAgIHdrc0NvbmZpZy53b3Jrc3BhY2VJZCA9IGxheWVyLmlkO1xyXG4gICAgd2tzQ29uZmlnLmVuYWJsZWQgPSB0cnVlO1xyXG4gICAgd2tzQ29uZmlnLnBhZ2VTaXplID0gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LnBhZ2VTaXplO1xyXG4gICAgd2tzQ29uZmlnLnBhZ2VTaXplT3B0aW9ucyA9IGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5wYWdlU2l6ZU9wdGlvbnM7XHJcblxyXG4gICAgY29uc3QgZGF0YVNvdXJjZTogV01TRGF0YVNvdXJjZSA9IGxheWVyLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZTtcclxuICAgIGNvbnN0IHdtc0xpbmtJZCA9IGxheWVyLmlkICsgJy5XbXNXb3Jrc3BhY2VUYWJsZVNyYyc7XHJcbiAgICBjb25zdCB3ZnNMaW5rSWQgPSBsYXllci5pZCArICcuV2ZzV29ya3NwYWNlVGFibGVEZXN0JztcclxuICAgIGlmICghbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMpIHtcclxuICAgICAgbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMgPSB7IGxpbmtJZDogd21zTGlua0lkLCBsaW5rczogW10gfTtcclxuICAgIH1cclxuICAgIGNvbnN0IGxpbmtQcm9wZXJ0aWVzID0ge1xyXG4gICAgICBzeW5jZWREZWxldGU6IHRydWUsXHJcbiAgICAgIGxpbmtlZElkczogW3dmc0xpbmtJZF0sXHJcbiAgICAgIHByb3BlcnRpZXM6IFtMaW5rZWRQcm9wZXJ0aWVzLlpJTkRFWCwgTGlua2VkUHJvcGVydGllcy5WSVNJQkxFXVxyXG4gICAgfSBhcyBMYXllcnNMaW5rUHJvcGVydGllcztcclxuXHJcbiAgICBpZiAoIWxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5taW5SZXNvbHV0aW9uKSB7XHJcbiAgICAgIGxpbmtQcm9wZXJ0aWVzLnByb3BlcnRpZXMucHVzaChMaW5rZWRQcm9wZXJ0aWVzLk1JTlJFU09MVVRJT04pO1xyXG4gICAgfVxyXG4gICAgbGV0IGhhc09nY0ZpbHRlcnMgPSBmYWxzZTtcclxuICAgIGlmIChcclxuICAgICAgKGRhdGFTb3VyY2Uub3B0aW9ucyBhcyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMpLm9nY0ZpbHRlcnM/LmVuYWJsZWRcclxuICAgICkge1xyXG4gICAgICBsaW5rUHJvcGVydGllcy5wcm9wZXJ0aWVzLnB1c2goTGlua2VkUHJvcGVydGllcy5PR0NGSUxURVJTKTtcclxuICAgICAgaGFzT2djRmlsdGVycyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoIWxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5tYXhSZXNvbHV0aW9uKSB7XHJcbiAgICAgIGxpbmtQcm9wZXJ0aWVzLnByb3BlcnRpZXMucHVzaChMaW5rZWRQcm9wZXJ0aWVzLk1BWFJFU09MVVRJT04pO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjbG9uZWRMaW5rczogTGF5ZXJzTGlua1Byb3BlcnRpZXNbXSA9IFtdO1xyXG4gICAgaWYgKGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzKSB7XHJcbiAgICAgIGNsb25lZExpbmtzID0gSlNPTi5wYXJzZShcclxuICAgICAgICBKU09OLnN0cmluZ2lmeShsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rcylcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGNsb25lZExpbmtzLnB1c2gobGlua1Byb3BlcnRpZXMpO1xyXG5cclxuICAgIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWQgPSBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWRcclxuICAgICAgPyBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWRcclxuICAgICAgOiB3bXNMaW5rSWQpLFxyXG4gICAgICAobGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3MgPSBjbG9uZWRMaW5rcyk7XHJcbiAgICBpbnRlcmZhY2UgV0ZTb3B0aW9uc1xyXG4gICAgICBleHRlbmRzIFdGU0RhdGFTb3VyY2VPcHRpb25zLFxyXG4gICAgICAgIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyB7fVxyXG4gICAgbGV0IHdrcztcclxuICAgIHRoaXMubGF5ZXJTZXJ2aWNlXHJcbiAgICAgIC5jcmVhdGVBc3luY0xheWVyKHtcclxuICAgICAgICBpZDogd2ZzTGlua0lkLFxyXG4gICAgICAgIGxpbmtlZExheWVyczoge1xyXG4gICAgICAgICAgbGlua0lkOiB3ZnNMaW5rSWRcclxuICAgICAgICB9LFxyXG4gICAgICAgIHdvcmtzcGFjZToge1xyXG4gICAgICAgICAgc3JjSWQ6IGxheWVyLmlkLFxyXG4gICAgICAgICAgd29ya3NwYWNlSWQ6IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgcXVlcnlPcHRpb25zOiB7XHJcbiAgICAgICAgICAgIG1hcFF1ZXJ5T25PcGVuVGFiOlxyXG4gICAgICAgICAgICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5xdWVyeU9wdGlvbnM/Lm1hcFF1ZXJ5T25PcGVuVGFiLFxyXG4gICAgICAgICAgICB0YWJRdWVyeTogZmFsc2VcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBwYWdlU2l6ZTogbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LnBhZ2VTaXplLFxyXG4gICAgICAgICAgcGFnZVNpemVPcHRpb25zOiBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ucGFnZVNpemVPcHRpb25zXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93SW5MYXllckxpc3Q6IGZhbHNlLFxyXG4gICAgICAgIG9wYWNpdHk6IDAsXHJcbiAgICAgICAgdGl0bGU6IGxheWVyLnRpdGxlLFxyXG4gICAgICAgIG1pblJlc29sdXRpb246XHJcbiAgICAgICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ubWluUmVzb2x1dGlvbiB8fCBsYXllci5taW5SZXNvbHV0aW9uIHx8IDAsXHJcbiAgICAgICAgbWF4UmVzb2x1dGlvbjpcclxuICAgICAgICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5tYXhSZXNvbHV0aW9uIHx8XHJcbiAgICAgICAgICBsYXllci5tYXhSZXNvbHV0aW9uIHx8XHJcbiAgICAgICAgICBJbmZpbml0eSxcclxuICAgICAgICBzdHlsZTogdGhpcy5zdHlsZVNlcnZpY2UuY3JlYXRlU3R5bGUoe1xyXG4gICAgICAgICAgZmlsbDoge1xyXG4gICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMSknXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc3Ryb2tlOiB7XHJcbiAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAxKSdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBjaXJjbGU6IHtcclxuICAgICAgICAgICAgZmlsbDoge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAxKSdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3Ryb2tlOiB7XHJcbiAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDEpJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByYWRpdXM6IDVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KSxcclxuICAgICAgICBzb3VyY2VPcHRpb25zOiB7XHJcbiAgICAgICAgICBkb3dubG9hZDogZGF0YVNvdXJjZS5vcHRpb25zLmRvd25sb2FkLFxyXG4gICAgICAgICAgdHlwZTogJ3dmcycsXHJcbiAgICAgICAgICB1cmw6IGRhdGFTb3VyY2Uub3B0aW9ucy51cmxXZnMgfHwgZGF0YVNvdXJjZS5vcHRpb25zLnVybCxcclxuICAgICAgICAgIHF1ZXJ5YWJsZTogdHJ1ZSxcclxuICAgICAgICAgIHJlbGF0aW9uczogZGF0YVNvdXJjZS5vcHRpb25zLnJlbGF0aW9ucyxcclxuICAgICAgICAgIHF1ZXJ5VGl0bGU6IChkYXRhU291cmNlLm9wdGlvbnMgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMpXHJcbiAgICAgICAgICAgIC5xdWVyeVRpdGxlLFxyXG4gICAgICAgICAgcGFyYW1zOiBkYXRhU291cmNlLm9wdGlvbnMucGFyYW1zV0ZTLFxyXG4gICAgICAgICAgb2djRmlsdGVyczogT2JqZWN0LmFzc2lnbih7fSwgZGF0YVNvdXJjZS5vZ2NGaWx0ZXJzLCB7XHJcbiAgICAgICAgICAgIGVuYWJsZWQ6IGhhc09nY0ZpbHRlcnNcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgc291cmNlRmllbGRzOiBkYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGVkaXRpb246IGRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uXHJcbiAgICAgICAgfSBhcyBXRlNvcHRpb25zXHJcbiAgICAgIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHdvcmtzcGFjZUxheWVyOiBWZWN0b3JMYXllcikgPT4ge1xyXG4gICAgICAgIG1hcC5hZGRMYXllcih3b3Jrc3BhY2VMYXllcik7XHJcbiAgICAgICAgbGF5ZXIub2wuc2V0UHJvcGVydGllcyhcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgbGlua2VkTGF5ZXJzOiB7XHJcbiAgICAgICAgICAgICAgbGlua0lkOiBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWQsXHJcbiAgICAgICAgICAgICAgbGlua3M6IGNsb25lZExpbmtzXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgd29ya3NwYWNlTGF5ZXIuZGF0YVNvdXJjZS5vbC5yZWZyZXNoKCk7XHJcblxyXG4gICAgICAgIHdrcyA9IG5ldyBFZGl0aW9uV29ya3NwYWNlKFxyXG4gICAgICAgICAgdGhpcy5kaWFsb2csXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UsXHJcbiAgICAgICAgICB0aGlzLmFkZGluZyQsXHJcbiAgICAgICAgICAocmVsYXRpb246IFJlbGF0aW9uT3B0aW9ucykgPT4gdGhpcy5nZXREb21haW5WYWx1ZXMocmVsYXRpb24pLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBpZDogbGF5ZXIuaWQsXHJcbiAgICAgICAgICAgIHRpdGxlOiBsYXllci50aXRsZSxcclxuICAgICAgICAgICAgbGF5ZXI6IHdvcmtzcGFjZUxheWVyLFxyXG4gICAgICAgICAgICBtYXAsXHJcbiAgICAgICAgICAgIGVudGl0eVN0b3JlOiB0aGlzLmNyZWF0ZUZlYXR1cmVTdG9yZSh3b3Jrc3BhY2VMYXllciwgbWFwKSxcclxuICAgICAgICAgICAgYWN0aW9uU3RvcmU6IG5ldyBBY3Rpb25TdG9yZShbXSksXHJcbiAgICAgICAgICAgIG1ldGE6IHtcclxuICAgICAgICAgICAgICB0YWJsZVRlbXBsYXRlOiB1bmRlZmluZWRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVUYWJsZVRlbXBsYXRlKHdrcywgd29ya3NwYWNlTGF5ZXIpO1xyXG5cclxuICAgICAgICB3b3Jrc3BhY2VMYXllci5vcHRpb25zLndvcmtzcGFjZS53b3Jrc3BhY2VJZCA9IHdvcmtzcGFjZUxheWVyLmlkO1xyXG4gICAgICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlID0gT2JqZWN0LmFzc2lnbih7fSwgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UsIHtcclxuICAgICAgICAgIHdrc0NvbmZpZ1xyXG4gICAgICAgIH0gYXMgR2VvV29ya3NwYWNlT3B0aW9ucyk7XHJcblxyXG4gICAgICAgIGRlbGV0ZSBkYXRhU291cmNlLm9wdGlvbnMuZG93bmxvYWQ7XHJcbiAgICAgICAgcmV0dXJuIHdrcztcclxuICAgICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHdrcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmVhdHVyZVN0b3JlKGxheWVyOiBWZWN0b3JMYXllciwgbWFwOiBJZ29NYXApOiBGZWF0dXJlU3RvcmUge1xyXG4gICAgY29uc3Qgc3RvcmUgPSBuZXcgRmVhdHVyZVN0b3JlKFtdLCB7IG1hcCB9KTtcclxuICAgIHN0b3JlLmJpbmRMYXllcihsYXllcik7XHJcblxyXG4gICAgY29uc3QgbG9hZGluZ1N0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IGluTWFwRXh0ZW50U3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlSW5NYXBFeHRlbnRTdHJhdGVneSh7fSk7XHJcbiAgICBjb25zdCBpbk1hcFJlc29sdXRpb25TdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVJbk1hcFJlc29sdXRpb25TdHJhdGVneSh7fSk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJlY29yZFN0cmF0ZWd5ID0gbmV3IEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3koe1xyXG4gICAgICBsYXllcjogbmV3IFZlY3RvckxheWVyKHtcclxuICAgICAgICB6SW5kZXg6IDMwMCxcclxuICAgICAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxyXG4gICAgICAgIHN0eWxlOiB1bmRlZmluZWQsXHJcbiAgICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcclxuICAgICAgICBleHBvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICBicm93c2FibGU6IGZhbHNlXHJcbiAgICAgIH0pLFxyXG4gICAgICBtYXAsXHJcbiAgICAgIGhpdFRvbGVyYW5jZTogMTUsXHJcbiAgICAgIG1vdGlvbjogdGhpcy56b29tQXV0byA/IEZlYXR1cmVNb3Rpb24uRGVmYXVsdCA6IEZlYXR1cmVNb3Rpb24uTm9uZSxcclxuICAgICAgbWFueTogdHJ1ZSxcclxuICAgICAgZHJhZ0JveDogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShsb2FkaW5nU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBFeHRlbnRTdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShpbk1hcFJlc29sdXRpb25TdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShzZWxlY3Rpb25TdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShzZWxlY3RlZFJlY29yZFN0cmF0ZWd5LCBmYWxzZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShjcmVhdGVGaWx0ZXJJbk1hcEV4dGVudE9yUmVzb2x1dGlvblN0cmF0ZWd5KCksIHRydWUpO1xyXG4gICAgcmV0dXJuIHN0b3JlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVUYWJsZVRlbXBsYXRlKFxyXG4gICAgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlLFxyXG4gICAgbGF5ZXI6IFZlY3RvckxheWVyXHJcbiAgKTogRW50aXR5VGFibGVUZW1wbGF0ZSB7XHJcbiAgICBjb25zdCBmaWVsZHMgPSBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzIHx8IFtdO1xyXG5cclxuICAgIGNvbnN0IHJlbGF0aW9ucyA9IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5yZWxhdGlvbnMgfHwgW107XHJcblxyXG4gICAgbGV0IHJlbmRlcmVyVHlwZSA9IEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuVW5zYW5pdGl6ZWRIVE1MO1xyXG4gICAgbGV0IGJ1dHRvbnMgPSBbXTtcclxuICAgIGxldCBjb2x1bW5zID0gW107XHJcbiAgICBsZXQgcmVsYXRpb25zQ29sdW1uID0gW107XHJcblxyXG4gICAgYnV0dG9ucyA9IFtcclxuICAgICAge1xyXG4gICAgICAgIG5hbWU6ICdlZGl0aW9uJyxcclxuICAgICAgICB0aXRsZTogdW5kZWZpbmVkLFxyXG4gICAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLkJ1dHRvbkdyb3VwLFxyXG4gICAgICAgIHByaW1hcnk6IGZhbHNlLFxyXG4gICAgICAgIHZhbHVlQWNjZXNzb3I6ICgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBlZGl0TW9kZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgaWNvbjogJ3BlbmNpbCcsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDpcclxuICAgICAgICAgICAgICAgIGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1vZGlmeUJ1dHRvbiA9PT0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgICAgICAgIDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgY2xpY2s6IChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2UuZWRpdEZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBlZGl0TW9kZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgaWNvbjogJ2RlbGV0ZScsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICd3YXJuJyxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDpcclxuICAgICAgICAgICAgICAgIGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLmRlbGV0ZUJ1dHRvbiA9PT0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgPyB0cnVlXHJcbiAgICAgICAgICAgICAgICAgIDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgY2xpY2s6IChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB3b3Jrc3BhY2UuZGVsZXRlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGVkaXRNb2RlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGljb246ICdjaGVjaycsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5sb2FkaW5nLFxyXG4gICAgICAgICAgICAgIGNsaWNrOiAoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGVkaXRNb2RlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGljb246ICdhbHBoYS14JyxcclxuICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmxvYWRpbmcsXHJcbiAgICAgICAgICAgICAgY2xpY2s6IChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbEVkaXQod29ya3NwYWNlLCBmZWF0dXJlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0gYXMgRW50aXR5VGFibGVCdXR0b25bXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIF07XHJcblxyXG4gICAgaWYgKGZpZWxkcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLmVudGl0aWVzJFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgc2tpcFdoaWxlKCh2YWwpID0+IHZhbC5sZW5ndGggPT09IDApLFxyXG4gICAgICAgICAgdGFrZSgxKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKChlbnRpdGllcykgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgb2wgPSAoZW50aXRpZXNbMF0gYXMgRmVhdHVyZSkub2wgYXMgb2xGZWF0dXJlPE9sR2VvbWV0cnk+O1xyXG4gICAgICAgICAgY29uc3QgY29sdW1uc0Zyb21GZWF0dXJlcyA9IG9sXHJcbiAgICAgICAgICAgIC5nZXRLZXlzKClcclxuICAgICAgICAgICAgLmZpbHRlcihcclxuICAgICAgICAgICAgICAoY29sKSA9PlxyXG4gICAgICAgICAgICAgICAgIWNvbC5zdGFydHNXaXRoKCdfJykgJiZcclxuICAgICAgICAgICAgICAgIGNvbCAhPT0gJ2dlb21ldHJ5JyAmJlxyXG4gICAgICAgICAgICAgICAgY29sICE9PSBvbC5nZXRHZW9tZXRyeU5hbWUoKSAmJlxyXG4gICAgICAgICAgICAgICAgIWNvbC5tYXRjaCgvYm91bmRlZGJ5L2dpKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke2tleX1gLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGtleSxcclxuICAgICAgICAgICAgICAgIHJlbmRlcmVyOiByZW5kZXJlclR5cGVcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIHdvcmtzcGFjZS5tZXRhLnRhYmxlVGVtcGxhdGUgPSB7XHJcbiAgICAgICAgICAgIHNlbGVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIHNvcnQ6IHRydWUsXHJcbiAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnNGcm9tRmVhdHVyZXNcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb2x1bW5zID0gZmllbGRzLm1hcCgoZmllbGQ6IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMpID0+IHtcclxuICAgICAgbGV0IGNvbHVtbiA9IHtcclxuICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke2ZpZWxkLm5hbWV9YCxcclxuICAgICAgICB0aXRsZTogZmllbGQuYWxpYXMgPyBmaWVsZC5hbGlhcyA6IGZpZWxkLm5hbWUsXHJcbiAgICAgICAgcmVuZGVyZXI6IHJlbmRlcmVyVHlwZSxcclxuICAgICAgICB2YWx1ZUFjY2Vzc29yOiB1bmRlZmluZWQsXHJcbiAgICAgICAgY2VsbENsYXNzRnVuYzogKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY2VsbENsYXNzID0ge307XHJcbiAgICAgICAgICBpZiAoZmllbGQudHlwZSkge1xyXG4gICAgICAgICAgICBjZWxsQ2xhc3NbYGNsYXNzXyR7ZmllbGQudHlwZX1gXSA9IHRydWU7XHJcbiAgICAgICAgICAgIHJldHVybiBjZWxsQ2xhc3M7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcmltYXJ5OiBmaWVsZC5wcmltYXJ5ID09PSB0cnVlID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgIHZpc2libGU6IGZpZWxkLnZpc2libGUsXHJcbiAgICAgICAgdmFsaWRhdGlvbjogZmllbGQudmFsaWRhdGlvbixcclxuICAgICAgICBsaW5rQ29sdW1uRm9yY2U6IGZpZWxkLmxpbmtDb2x1bW5Gb3JjZSxcclxuICAgICAgICB0eXBlOiBmaWVsZC50eXBlLFxyXG4gICAgICAgIGRvbWFpblZhbHVlczogdW5kZWZpbmVkLFxyXG4gICAgICAgIHJlbGF0aW9uOiB1bmRlZmluZWQsXHJcbiAgICAgICAgbXVsdGlwbGU6IGZpZWxkLm11bHRpcGxlLFxyXG4gICAgICAgIHN0ZXA6IGZpZWxkLnN0ZXAsXHJcbiAgICAgICAgdG9vbHRpcDogZmllbGQudG9vbHRpcFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdsaXN0JyB8fCBmaWVsZC50eXBlID09PSAnYXV0b2NvbXBsZXRlJykge1xyXG4gICAgICAgIHRoaXMuZ2V0RG9tYWluVmFsdWVzKGZpZWxkLnJlbGF0aW9uKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmRvbWFpblZhbHVlcyA9IHJlc3VsdDtcclxuICAgICAgICAgIGNvbHVtbi5yZWxhdGlvbiA9IGZpZWxkLnJlbGF0aW9uO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjb2x1bW47XHJcbiAgICB9KTtcclxuXHJcbiAgICByZWxhdGlvbnNDb2x1bW4gPSByZWxhdGlvbnMubWFwKChyZWxhdGlvbjogUmVsYXRpb25PcHRpb25zKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbmFtZTogYHByb3BlcnRpZXMuJHtyZWxhdGlvbi5uYW1lfWAsXHJcbiAgICAgICAgdGl0bGU6IHJlbGF0aW9uLmFsaWFzID8gcmVsYXRpb24uYWxpYXMgOiByZWxhdGlvbi5uYW1lLFxyXG4gICAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLkljb24sXHJcbiAgICAgICAgaWNvbjogcmVsYXRpb24uaWNvbixcclxuICAgICAgICBwYXJlbnQ6IHJlbGF0aW9uLnBhcmVudCxcclxuICAgICAgICB0eXBlOiAncmVsYXRpb24nLFxyXG4gICAgICAgIHRvb2x0aXA6IHJlbGF0aW9uLnRvb2x0aXAsXHJcbiAgICAgICAgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuYWRkaW5nJC5nZXRWYWx1ZSgpID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLndzJC5uZXh0KHJlbGF0aW9uLnRpdGxlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNlbGxDbGFzc0Z1bmM6ICgpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7IGNsYXNzX2ljb246IHRydWUgfTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb2x1bW5zLnB1c2goLi4ucmVsYXRpb25zQ29sdW1uKTtcclxuICAgIGNvbHVtbnMucHVzaCguLi5idXR0b25zKTtcclxuXHJcbiAgICB3b3Jrc3BhY2UubWV0YS50YWJsZVRlbXBsYXRlID0ge1xyXG4gICAgICBzZWxlY3Rpb246IGZhbHNlLFxyXG4gICAgICBzb3J0OiB0cnVlLFxyXG4gICAgICBjb2x1bW5zXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSkge1xyXG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNhbml0aXplUGFyYW1ldGVyKGZlYXR1cmUsIHdvcmtzcGFjZSk7XHJcblxyXG4gICAgY29uc3QgYmFzZVVybCA9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5iYXNlVXJsO1xyXG4gICAgbGV0IHVybCA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2VkaXRpb24udXJsJyk7XHJcblxyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgdXJsID0gYmFzZVVybDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHVybCArPSBiYXNlVXJsID8gYmFzZVVybCA6ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmZWF0dXJlLm5ld0ZlYXR1cmUpIHtcclxuICAgICAgdXJsICs9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5hZGRVcmw7XHJcblxyXG4gICAgICBjb25zdCBhZGRIZWFkZXJzID0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLmFkZEhlYWRlcnM7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoYWRkSGVhZGVycyk7XHJcblxyXG4gICAgICB0aGlzLmFkZEZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlLCB1cmwsIGhlYWRlcnMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlQcm90b2NvbCAhPT0gJ3Bvc3QnXHJcbiAgICAgICkge1xyXG4gICAgICAgIHVybCArPVxyXG4gICAgICAgICAgJz8nICtcclxuICAgICAgICAgIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlVcmwgK1xyXG4gICAgICAgICAgZmVhdHVyZS5pZGtleTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cmwgKz0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1vZGlmeVVybDtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgcHJvdG9jb2xlID1cclxuICAgICAgICB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubW9kaWZ5UHJvdG9jb2w7XHJcbiAgICAgIGNvbnN0IG1vZGlmeUhlYWRlcnMgPVxyXG4gICAgICAgIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlIZWFkZXJzO1xyXG4gICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKG1vZGlmeUhlYWRlcnMpO1xyXG5cclxuICAgICAgdGhpcy5tb2RpZnlGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSwgdXJsLCBoZWFkZXJzLCBwcm90b2NvbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFkZEZlYXR1cmUoXHJcbiAgICBmZWF0dXJlLFxyXG4gICAgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlLFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9XHJcbiAgKSB7XHJcbiAgICBpZiAod29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLmhhc0dlb21ldHJ5KSB7XHJcbiAgICAgIGNvbnN0IHByb2pEZXN0ID1cclxuICAgICAgICB3b3Jrc3BhY2UubGF5ZXIub3B0aW9ucy5zb3VyY2VPcHRpb25zLmVkaXRpb24uZ2VvbURhdGFiYXNlUHJvajtcclxuICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW1xyXG4gICAgICAgIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMucGFyYW1zLmZpZWxkTmFtZUdlb21ldHJ5XHJcbiAgICAgIF0gPVxyXG4gICAgICAgICdTUklEPScgK1xyXG4gICAgICAgIHByb2pEZXN0LnJlcGxhY2UoJ0VQU0c6JywgJycpICtcclxuICAgICAgICAnOycgK1xyXG4gICAgICAgIHRoaXMud2t0Rm9ybWF0LndyaXRlR2VvbWV0cnkoXHJcbiAgICAgICAgICB0aGlzLmdlb0pzb25Gb3JtYXRcclxuICAgICAgICAgICAgLnJlYWRGZWF0dXJlKGZlYXR1cmUuZ2VvbWV0cnkpXHJcbiAgICAgICAgICAgIC5nZXRHZW9tZXRyeSgpXHJcbiAgICAgICAgICAgIC50cmFuc2Zvcm0oJ0VQU0c6NDMyNicsIHByb2pEZXN0KSxcclxuICAgICAgICAgIHsgZGF0YVByb2plY3Rpb246IHByb2pEZXN0IH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gZmVhdHVyZS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgc2Ygb2Ygd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5zb3VyY2VGaWVsZHMpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAoc2YubmFtZSA9PT0gcHJvcGVydHkgJiYgc2YudmFsaWRhdGlvbj8ucmVhZG9ubHkpIHx8XHJcbiAgICAgICAgICAoc2YubmFtZSA9PT0gcHJvcGVydHkgJiYgc2YudmFsaWRhdGlvbj8uc2VuZCA9PT0gZmFsc2UpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBkZWxldGUgZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KGAke3VybH1gLCBmZWF0dXJlLnByb3BlcnRpZXMsIHsgaGVhZGVyczogaGVhZGVycyB9KVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLnN0YXRlVmlldy5jbGVhcigpO1xyXG4gICAgICAgICAgd29ya3NwYWNlLmRlbGV0ZURyYXdpbmdzKCk7XHJcbiAgICAgICAgICB3b3Jrc3BhY2UuZW50aXR5U3RvcmUuZGVsZXRlKGZlYXR1cmUpO1xyXG5cclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcygnaWdvLmdlby53b3Jrc3BhY2UuYWRkU3VjY2VzcycpO1xyXG5cclxuICAgICAgICAgIHRoaXMucmVmcmVzaE1hcCh3b3Jrc3BhY2UubGF5ZXIgYXMgVmVjdG9yTGF5ZXIsIHdvcmtzcGFjZS5sYXllci5tYXApO1xyXG4gICAgICAgICAgdGhpcy5hZGRpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQubmV4dCh0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBlcnJvci5lcnJvci5jYXVnaHQgPSB0cnVlO1xyXG4gICAgICAgICAgY29uc3QgbWVzc2FnZXMgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubWVzc2FnZXM7XHJcbiAgICAgICAgICBpZiAobWVzc2FnZXMpIHtcclxuICAgICAgICAgICAgbGV0IHRleHQ7XHJcbiAgICAgICAgICAgIG1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhtZXNzYWdlKVswXTtcclxuICAgICAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICB0ZXh0ID0gbWVzc2FnZVtrZXldO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcih0ZXh0KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoIXRleHQpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKCdpZ28uZ2VvLndvcmtzcGFjZS5hZGRFcnJvcicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKCdpZ28uZ2VvLndvcmtzcGFjZS5hZGRFcnJvcicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGVGZWF0dXJlKHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSwgdXJsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmh0dHAuZGVsZXRlKGAke3VybH1gLCB7fSkuc3Vic2NyaWJlKFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKCdpZ28uZ2VvLndvcmtzcGFjZS5kZWxldGVTdWNjZXNzJyk7XHJcblxyXG4gICAgICAgIHRoaXMucmVmcmVzaE1hcCh3b3Jrc3BhY2UubGF5ZXIgYXMgVmVjdG9yTGF5ZXIsIHdvcmtzcGFjZS5sYXllci5tYXApO1xyXG4gICAgICAgIGZvciAoY29uc3QgcmVsYXRpb24gb2Ygd29ya3NwYWNlLmxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9uc1xyXG4gICAgICAgICAgLnJlbGF0aW9ucykge1xyXG4gICAgICAgICAgd29ya3NwYWNlLm1hcC5sYXllcnMuZm9yRWFjaCgobGF5ZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGxheWVyLnRpdGxlID09PSByZWxhdGlvbi50aXRsZSkge1xyXG4gICAgICAgICAgICAgIGxheWVyLmRhdGFTb3VyY2Uub2wucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIGVycm9yLmVycm9yLmNhdWdodCA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubWVzc2FnZXM7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICBsZXQgdGV4dDtcclxuICAgICAgICAgIG1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMobWVzc2FnZSlbMF07XHJcbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5tZXNzYWdlLmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgICAgICAgICB0ZXh0ID0gbWVzc2FnZVtrZXldO1xyXG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IodGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKCF0ZXh0KSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoJ2lnby5nZW8ud29ya3NwYWNlLmFkZEVycm9yJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoJ2lnby5nZW8ud29ya3NwYWNlLmFkZEVycm9yJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1vZGlmeUZlYXR1cmUoXHJcbiAgICBmZWF0dXJlLFxyXG4gICAgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlLFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBoZWFkZXJzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxyXG4gICAgcHJvdG9jb2xlID0gJ3BhdGNoJ1xyXG4gICkge1xyXG4gICAgaWYgKHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5oYXNHZW9tZXRyeSkge1xyXG4gICAgICBjb25zdCBwcm9qRGVzdCA9XHJcbiAgICAgICAgd29ya3NwYWNlLmxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucy5lZGl0aW9uLmdlb21EYXRhYmFzZVByb2o7XHJcbiAgICAgIC8vIFJlbW92ZSAzZSBkaW1lbnNpb25cclxuICAgICAgZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcyA9IHJlbW92ZVooZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlcyk7XHJcbiAgICAgIGZlYXR1cmUucHJvcGVydGllc1tcclxuICAgICAgICB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnBhcmFtcy5maWVsZE5hbWVHZW9tZXRyeVxyXG4gICAgICBdID1cclxuICAgICAgICAnU1JJRD0nICtcclxuICAgICAgICBwcm9qRGVzdC5yZXBsYWNlKCdFUFNHOicsICcnKSArXHJcbiAgICAgICAgJzsnICtcclxuICAgICAgICB0aGlzLndrdEZvcm1hdC53cml0ZUdlb21ldHJ5KFxyXG4gICAgICAgICAgdGhpcy5nZW9Kc29uRm9ybWF0XHJcbiAgICAgICAgICAgIC5yZWFkRmVhdHVyZShmZWF0dXJlLmdlb21ldHJ5KVxyXG4gICAgICAgICAgICAuZ2V0R2VvbWV0cnkoKVxyXG4gICAgICAgICAgICAudHJhbnNmb3JtKCdFUFNHOjQzMjYnLCBwcm9qRGVzdCksXHJcbiAgICAgICAgICB7IGRhdGFQcm9qZWN0aW9uOiBwcm9qRGVzdCB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGZlYXR1cmUucHJvcGVydGllcykge1xyXG4gICAgICBmb3IgKGNvbnN0IHNmIG9mIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgKHNmLm5hbWUgPT09IHByb3BlcnR5ICYmIHNmLnZhbGlkYXRpb24/LnJlYWRvbmx5KSB8fFxyXG4gICAgICAgICAgKHNmLm5hbWUgPT09IHByb3BlcnR5ICYmIHNmLnZhbGlkYXRpb24/LnNlbmQgPT09IGZhbHNlKSB8fFxyXG4gICAgICAgICAgcHJvcGVydHkgPT09ICdib3VuZGVkQnknXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBkZWxldGUgZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5odHRwW3Byb3RvY29sZV0oYCR7dXJsfWAsIGZlYXR1cmUucHJvcGVydGllcywge1xyXG4gICAgICBoZWFkZXJzOiBoZWFkZXJzXHJcbiAgICB9KS5zdWJzY3JpYmUoXHJcbiAgICAgICgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNhbmNlbEVkaXQod29ya3NwYWNlLCBmZWF0dXJlLCB0cnVlKTtcclxuXHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKCdpZ28uZ2VvLndvcmtzcGFjZS5tb2RpZnlTdWNjZXNzJyk7XHJcblxyXG4gICAgICAgIHRoaXMucmVmcmVzaE1hcCh3b3Jrc3BhY2UubGF5ZXIgYXMgVmVjdG9yTGF5ZXIsIHdvcmtzcGFjZS5sYXllci5tYXApO1xyXG5cclxuICAgICAgICBsZXQgcmVsYXRpb25MYXllcnMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IHJlbGF0aW9uIG9mIHdvcmtzcGFjZS5sYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnNcclxuICAgICAgICAgIC5yZWxhdGlvbnMpIHtcclxuICAgICAgICAgIHdvcmtzcGFjZS5tYXAubGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsYXllci50aXRsZSA9PT0gcmVsYXRpb24udGl0bGUpIHtcclxuICAgICAgICAgICAgICByZWxhdGlvbkxheWVycy5wdXNoKGxheWVyKTtcclxuICAgICAgICAgICAgICBsYXllci5kYXRhU291cmNlLm9sLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVsYXRpb25MYXllcnMkLm5leHQocmVsYXRpb25MYXllcnMpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBlcnJvci5lcnJvci5jYXVnaHQgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1lc3NhZ2VzO1xyXG4gICAgICAgIGlmIChtZXNzYWdlcykge1xyXG4gICAgICAgICAgbGV0IHRleHQ7XHJcbiAgICAgICAgICBtZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKG1lc3NhZ2UpWzBdO1xyXG4gICAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICAgICAgdGV4dCA9IG1lc3NhZ2Vba2V5XTtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKHRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICghdGV4dCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKCdpZ28uZ2VvLndvcmtzcGFjZS5hZGRFcnJvcicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKCdpZ28uZ2VvLndvcmtzcGFjZS5hZGRFcnJvcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNhbmNlbEVkaXQod29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlLCBmZWF0dXJlLCBmcm9tU2F2ZSA9IGZhbHNlKSB7XHJcbiAgICBmZWF0dXJlLmVkaXRpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuYWRkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgIHdvcmtzcGFjZS5kZWxldGVEcmF3aW5ncygpO1xyXG4gICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLnN0YXRlVmlldy5jbGVhcigpO1xyXG5cclxuICAgIGlmIChmZWF0dXJlLm5ld0ZlYXR1cmUpIHtcclxuICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLmRlbGV0ZShmZWF0dXJlKTtcclxuICAgICAgd29ya3NwYWNlLmRlYWN0aXZhdGVEcmF3Q29udHJvbCgpO1xyXG5cclxuICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQubmV4dCh0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICghZnJvbVNhdmUpIHtcclxuICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMgPSBmZWF0dXJlLm9yaWdpbmFsX3Byb3BlcnRpZXM7XHJcbiAgICAgICAgZmVhdHVyZS5nZW9tZXRyeSA9IGZlYXR1cmUub3JpZ2luYWxfZ2VvbWV0cnk7XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIGZlYXR1cmUub3JpZ2luYWxfcHJvcGVydGllcztcclxuICAgICAgZGVsZXRlIGZlYXR1cmUub3JpZ2luYWxfZ2VvbWV0cnk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREb21haW5WYWx1ZXMocmVsYXRpb246IFJlbGF0aW9uT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgdXJsID0gcmVsYXRpb24udXJsO1xyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgdXJsID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnZWRpdGlvbi51cmwnKVxyXG4gICAgICAgID8gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnZWRpdGlvbi51cmwnKSArIHJlbGF0aW9uLnRhYmxlXHJcbiAgICAgICAgOiByZWxhdGlvbi50YWJsZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KHVybCkucGlwZShcclxuICAgICAgbWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGVyci5lcnJvci5jYXVnaHQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBSZWZyZXNoIGJvdGggd21zIGFuZCB3ZnMgbGF5ZXJcclxuICAgKiBBIG5ldyB3ZnMgbG9hZGVyIGlzIHVzZWQgdG8gZW5zdXJlIGNhY2hlIGlzIG5vdCByZXRyaWV2aW5nIG9sZCBkYXRhXHJcbiAgICogV01TIHBhcmFtcyBhcmUgdXBkYXRlZCB0byBlbnN1cmUgbGF5ZXIgaXMgY29ycmVjdGx5IHJlZnJlc2hlZFxyXG4gICAqL1xyXG4gIHJlZnJlc2hNYXAobGF5ZXI6IFZlY3RvckxheWVyLCBtYXA6IE1hcEJhc2UpIHtcclxuICAgIGNvbnN0IHdmc09sTGF5ZXIgPSBsYXllci5kYXRhU291cmNlLm9sO1xyXG4gICAgY29uc3QgbG9hZGVyOiBGZWF0dXJlTG9hZGVyID0gKFxyXG4gICAgICBleHRlbnQsXHJcbiAgICAgIHJlc29sdXRpb24sXHJcbiAgICAgIHByb2osXHJcbiAgICAgIHN1Y2Nlc3MsXHJcbiAgICAgIGZhaWx1cmVcclxuICAgICkgPT4ge1xyXG4gICAgICBsYXllci5jdXN0b21XRlNMb2FkZXIoXHJcbiAgICAgICAgbGF5ZXIub2wuZ2V0U291cmNlKCksXHJcbiAgICAgICAgbGF5ZXIub3B0aW9ucy5zb3VyY2VPcHRpb25zIGFzIFdGU0RhdGFTb3VyY2VPcHRpb25zLFxyXG4gICAgICAgIHRoaXMuYXV0aEludGVyY2VwdG9yLFxyXG4gICAgICAgIGV4dGVudCxcclxuICAgICAgICByZXNvbHV0aW9uLFxyXG4gICAgICAgIHByb2osXHJcbiAgICAgICAgc3VjY2VzcyxcclxuICAgICAgICBmYWlsdXJlLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgICB3ZnNPbExheWVyLnNldExvYWRlcihsb2FkZXIpO1xyXG4gICAgd2ZzT2xMYXllci5yZWZyZXNoKCk7XHJcblxyXG4gICAgZm9yIChjb25zdCBsYXkgb2YgbWFwLmxheWVycykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgbGF5LmlkICE9PSBsYXllci5pZCAmJlxyXG4gICAgICAgIGxheS5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkLmluY2x1ZGVzKFxyXG4gICAgICAgICAgbGF5ZXIuaWQuc3Vic3RyKDAsIGxheWVyLmlkLmluZGV4T2YoJy4nKSAtIDEpXHJcbiAgICAgICAgKSAmJlxyXG4gICAgICAgIGxheS5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkLmluY2x1ZGVzKCdXbXNXb3Jrc3BhY2VUYWJsZVNyYycpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbnN0IHdtc09sTGF5ZXIgPSBsYXkuZGF0YVNvdXJjZS5vbCBhcyBvbFNvdXJjZUltYWdlV01TO1xyXG4gICAgICAgIGxldCBwYXJhbXMgPSB3bXNPbExheWVyLmdldFBhcmFtcygpO1xyXG4gICAgICAgIHBhcmFtcy5fdCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIHdtc09sTGF5ZXIudXBkYXRlUGFyYW1zKHBhcmFtcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UpIHtcclxuICAgIGxldCBtZXNzYWdlO1xyXG4gICAgbGV0IGtleTtcclxuICAgIGxldCB2YWxpZCA9IHRydWU7XHJcbiAgICB3b3Jrc3BhY2UubWV0YS50YWJsZVRlbXBsYXRlLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgIGlmIChjb2x1bW4uaGFzT3duUHJvcGVydHkoJ3ZhbGlkYXRpb24nKSAmJiBjb2x1bW4udmFsaWRhdGlvbikge1xyXG4gICAgICAgIGtleSA9IGdldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbi5uYW1lKTtcclxuICAgICAgICBPYmplY3Qua2V5cyhjb2x1bW4udmFsaWRhdGlvbikuZm9yRWFjaCgodHlwZSkgPT4ge1xyXG4gICAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21hbmRhdG9yeSc6IHtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBjb2x1bW4udmFsaWRhdGlvblt0eXBlXSAmJlxyXG4gICAgICAgICAgICAgICAgKCFmZWF0dXJlLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSB8fFxyXG4gICAgICAgICAgICAgICAgICAhZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0pXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcihcclxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWFuZGF0b3J5JyxcclxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHsgY29sdW1uOiBjb2x1bW4udGl0bGUgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnbWluVmFsdWUnOiB7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkgJiZcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1trZXldICYmXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSA8IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcihcclxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWluVmFsdWUnLFxyXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb2x1bW4udmFsaWRhdGlvblt0eXBlXVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdtYXhWYWx1ZSc6IHtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0gJiZcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1trZXldID4gY29sdW1uLnZhbGlkYXRpb25bdHlwZV1cclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAnaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5tYXhWYWx1ZScsXHJcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ21pbkxlbmd0aCc6IHtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0gJiZcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1trZXldLmxlbmd0aCA8IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcihcclxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWluTGVuZ3RoJyxcclxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY29sdW1uLnZhbGlkYXRpb25bdHlwZV1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnbWF4TGVuZ3RoJzoge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSAmJlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0ubGVuZ3RoID4gY29sdW1uLnZhbGlkYXRpb25bdHlwZV1cclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAnaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5tYXhMZW5ndGgnLFxyXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb2x1bW4udmFsaWRhdGlvblt0eXBlXVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB2YWxpZDtcclxuICB9XHJcblxyXG4gIHNhbml0aXplUGFyYW1ldGVyKGZlYXR1cmUsIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSkge1xyXG4gICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgY29sdW1uLnR5cGUgPT09ICdsaXN0JyAmJlxyXG4gICAgICAgIGZlYXR1cmUucHJvcGVydGllc1tnZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4ubmFtZSldXHJcbiAgICAgICkge1xyXG4gICAgICAgIGZlYXR1cmUucHJvcGVydGllc1tnZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4ubmFtZSldID1cclxuICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1tcclxuICAgICAgICAgICAgZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uLm5hbWUpXHJcbiAgICAgICAgICBdLnRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uOiBzdHJpbmcpIHtcclxuICBpZiAoY29sdW1uLmluY2x1ZGVzKCdwcm9wZXJ0aWVzLicpKSB7XHJcbiAgICByZXR1cm4gY29sdW1uLnNwbGl0KCcuJylbMV07XHJcbiAgfVxyXG4gIHJldHVybiBjb2x1bW47XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlbW92ZVooY29vcmRzOiBhbnkpIHtcclxuICBpZiAoY29vcmRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNvb3JkcztcclxuICBpZiAodHlwZW9mIGNvb3Jkc1swXSA9PT0gJ251bWJlcicpIHJldHVybiBjb29yZHMuc2xpY2UoMCwgMik7XHJcbiAgcmV0dXJuIGNvb3Jkcy5tYXAocmVtb3ZlWik7XHJcbn1cclxuIl19
715
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGlvbi13b3Jrc3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3dvcmtzcGFjZS9zaGFyZWQvZWRpdGlvbi13b3Jrc3BhY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUVWLFdBQVcsRUFDWixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0MsT0FBTyxFQUNMLFdBQVcsRUFDWCxrQ0FBa0MsRUFFbEMseUJBQXlCLEVBRTFCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXBELE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUloQyxPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFFM0YsT0FBTyxFQUVMLGFBQWEsRUFDYixZQUFZLEVBQ1osK0JBQStCLEVBQy9CLG1DQUFtQyxFQUNuQyxnQ0FBZ0MsRUFDaEMsNkJBQTZCLEVBQzlCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUdMLFlBQVksRUFFWixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNaLE1BQU0sb0JBQW9CLENBQUM7QUFHNUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwyQ0FBMkMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7O0FBS2hGLE1BQU0sT0FBTyx1QkFBdUI7SUFnQnhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0Q7SUF0QkYsR0FBRyxHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUM5QyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQzFDLFNBQVMsQ0FDVixDQUFDO0lBQ0ssOEJBQThCLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7SUFDcEUsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN0QixhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVyQyxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBWSxDQUFDO0lBQ3hELENBQUM7SUFFRCxZQUNVLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLGFBQTRCLEVBQzVCLGNBQThCLEVBQzlCLElBQWdCLEVBQ2hCLE1BQWlCLEVBQ2pCLFlBQTBCLEVBQzNCLGVBQWlDO1FBUGhDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzNCLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtJQUN2QyxDQUFDO0lBRUosZUFBZSxDQUFDLEtBQWlCLEVBQUUsR0FBVztRQUM1QyxJQUNFLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sS0FBSyxJQUFJO1lBQ3pDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUNqRCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLFNBQVMsQ0FBQztRQUNkLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM1QixTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDTixTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLENBQUM7UUFDRCxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0IsU0FBUyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLFNBQVMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDO1FBQ3ZELFNBQVMsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDO1FBRXJFLE1BQU0sVUFBVSxHQUFrQixLQUFLLENBQUMsVUFBMkIsQ0FBQztRQUNwRSxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsRUFBRSxHQUFHLHVCQUF1QixDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLEdBQUcsd0JBQXdCLENBQUM7UUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQUc7WUFDckIsWUFBWSxFQUFFLElBQUk7WUFDbEIsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3RCLFVBQVUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7U0FDeEMsQ0FBQztRQUUxQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDNUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUNHLFVBQVUsQ0FBQyxPQUEwQyxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQzFFLENBQUM7WUFDRCxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1RCxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDNUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELElBQUksV0FBVyxHQUEyQixFQUFFLENBQUM7UUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FDakQsQ0FBQztRQUNKLENBQUM7UUFDRCxXQUFXLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWpDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU07WUFDcEUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU07WUFDbkMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNaLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDO1FBSW5ELElBQUksR0FBRyxDQUFDO1FBQ1IsSUFBSSxDQUFDLFlBQVk7YUFDZCxnQkFBZ0IsQ0FBQztZQUNoQixFQUFFLEVBQUUsU0FBUztZQUNiLFlBQVksRUFBRTtnQkFDWixNQUFNLEVBQUUsU0FBUzthQUNsQjtZQUNELFNBQVMsRUFBRTtnQkFDVCxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ2YsV0FBVyxFQUFFLFNBQVM7Z0JBQ3RCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFlBQVksRUFBRTtvQkFDWixpQkFBaUIsRUFDZixLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsaUJBQWlCO29CQUMxRCxRQUFRLEVBQUUsS0FBSztpQkFDaEI7Z0JBQ0QsUUFBUSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFFBQVE7Z0JBQzNDLGVBQWUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxlQUFlO2FBQzFEO1lBQ0QsZUFBZSxFQUFFLEtBQUs7WUFDdEIsT0FBTyxFQUFFLENBQUM7WUFDVixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsYUFBYSxFQUNYLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGFBQWEsSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLENBQUM7WUFDcEUsYUFBYSxFQUNYLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGFBQWE7Z0JBQ3RDLEtBQUssQ0FBQyxhQUFhO2dCQUNuQixRQUFRO1lBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDO2dCQUNuQyxJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLDJCQUEyQjtpQkFDbkM7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLEtBQUssRUFBRSwyQkFBMkI7aUJBQ25DO2dCQUNELE1BQU0sRUFBRTtvQkFDTixJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLDJCQUEyQjtxQkFDbkM7b0JBQ0QsTUFBTSxFQUFFO3dCQUNOLEtBQUssRUFBRSwyQkFBMkI7cUJBQ25DO29CQUNELE1BQU0sRUFBRSxDQUFDO2lCQUNWO2FBQ0YsQ0FBQztZQUNGLGFBQWEsRUFBRTtnQkFDYixRQUFRLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRO2dCQUNyQyxJQUFJLEVBQUUsS0FBSztnQkFDWCxHQUFHLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHO2dCQUN4RCxTQUFTLEVBQUUsSUFBSTtnQkFDZixTQUFTLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTO2dCQUN2QyxVQUFVLEVBQUcsVUFBVSxDQUFDLE9BQXNDO3FCQUMzRCxVQUFVO2dCQUNiLE1BQU0sRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVM7Z0JBQ3BDLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFO29CQUNuRCxPQUFPLEVBQUUsYUFBYTtpQkFDdkIsQ0FBQztnQkFDRixZQUFZLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksU0FBUztnQkFDMUQsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTzthQUN0QjtTQUNoQixDQUFDO2FBQ0QsU0FBUyxDQUFDLENBQUMsY0FBMkIsRUFBRSxFQUFFO1lBQ3pDLEdBQUcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDN0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQ3BCO2dCQUNFLFlBQVksRUFBRTtvQkFDWixNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTTtvQkFDekMsS0FBSyxFQUFFLFdBQVc7aUJBQ25CO2FBQ0YsRUFDRCxLQUFLLENBQ04sQ0FBQztZQUNGLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRXZDLEdBQUcsR0FBRyxJQUFJLGdCQUFnQixDQUN4QixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxhQUFhLEVBQ2xCLElBQUksQ0FBQyxPQUFPLEVBQ1osQ0FBQyxRQUF5QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUM3RDtnQkFDRSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ1osS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixLQUFLLEVBQUUsY0FBYztnQkFDckIsR0FBRztnQkFDSCxXQUFXLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUM7Z0JBQ3pELFdBQVcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksRUFBRTtvQkFDSixhQUFhLEVBQUUsU0FBUztpQkFDekI7YUFDRixDQUNGLENBQUM7WUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRTlDLGNBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2pFLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO2dCQUNuRSxTQUFTO2FBQ2EsQ0FBQyxDQUFDO1lBRTFCLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDbkMsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQWtCLEVBQUUsR0FBVztRQUN4RCxNQUFNLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFdkIsTUFBTSxlQUFlLEdBQUcsSUFBSSxnQ0FBZ0MsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRSxNQUFNLG1CQUFtQixHQUFHLElBQUksK0JBQStCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEUsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLG1DQUFtQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxrQ0FBa0MsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxRSxNQUFNLGlCQUFpQixHQUFHLElBQUksNkJBQTZCLENBQUM7WUFDMUQsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUNyQixNQUFNLEVBQUUsR0FBRztnQkFDWCxNQUFNLEVBQUUsSUFBSSxpQkFBaUIsRUFBRTtnQkFDL0IsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLGVBQWUsRUFBRSxLQUFLO2dCQUN0QixVQUFVLEVBQUUsS0FBSztnQkFDakIsU0FBUyxFQUFFLEtBQUs7YUFDakIsQ0FBQztZQUNGLEdBQUc7WUFDSCxZQUFZLEVBQUUsRUFBRTtZQUNoQixNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUk7WUFDbEUsSUFBSSxFQUFFLElBQUk7WUFDVixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pDLEtBQUssQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxLQUFLLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakQsS0FBSyxDQUFDLFdBQVcsQ0FBQywyQ0FBMkMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLG1CQUFtQixDQUN6QixTQUEyQixFQUMzQixLQUFrQjtRQUVsQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1FBRTNELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFFM0QsSUFBSSxZQUFZLEdBQUcseUJBQXlCLENBQUMsZUFBZSxDQUFDO1FBQzdELElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBRXpCLE9BQU8sR0FBRztZQUNSO2dCQUNFLElBQUksRUFBRSxTQUFTO2dCQUNmLEtBQUssRUFBRSxTQUFTO2dCQUNoQixRQUFRLEVBQUUseUJBQXlCLENBQUMsV0FBVztnQkFDL0MsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsYUFBYSxFQUFFLEdBQUcsRUFBRTtvQkFDbEIsT0FBTzt3QkFDTDs0QkFDRSxRQUFRLEVBQUUsS0FBSzs0QkFDZixJQUFJLEVBQUUsUUFBUTs0QkFDZCxLQUFLLEVBQUUsU0FBUzs0QkFDaEIsUUFBUSxFQUNOLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEtBQUssS0FBSztnQ0FDckQsQ0FBQyxDQUFDLElBQUk7Z0NBQ04sQ0FBQyxDQUFDLEtBQUs7NEJBQ1gsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0NBQ2pCLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDOzRCQUM1QyxDQUFDO3lCQUNGO3dCQUNEOzRCQUNFLFFBQVEsRUFBRSxLQUFLOzRCQUNmLElBQUksRUFBRSxRQUFROzRCQUNkLEtBQUssRUFBRSxNQUFNOzRCQUNiLFFBQVEsRUFDTixLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxLQUFLLEtBQUs7Z0NBQ3JELENBQUMsQ0FBQyxJQUFJO2dDQUNOLENBQUMsQ0FBQyxLQUFLOzRCQUNYLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dDQUNqQixTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQzs0QkFDOUMsQ0FBQzt5QkFDRjt3QkFDRDs0QkFDRSxRQUFRLEVBQUUsSUFBSTs0QkFDZCxJQUFJLEVBQUUsT0FBTzs0QkFDYixLQUFLLEVBQUUsU0FBUzs0QkFDaEIsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPOzRCQUN0QixLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQ0FDakIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7NEJBQ3ZDLENBQUM7eUJBQ0Y7d0JBQ0Q7NEJBQ0UsUUFBUSxFQUFFLElBQUk7NEJBQ2QsSUFBSSxFQUFFLFNBQVM7NEJBQ2YsS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTzs0QkFDdEIsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0NBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDOzRCQUN0QyxDQUFDO3lCQUNGO3FCQUNxQixDQUFDO2dCQUMzQixDQUFDO2FBQ0Y7U0FDRixDQUFDO1FBRUYsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUztpQkFDNUIsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFDcEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSO2lCQUNBLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUN0QixNQUFNLEVBQUUsR0FBSSxRQUFRLENBQUMsQ0FBQyxDQUFhLENBQUMsRUFBMkIsQ0FBQztnQkFDaEUsTUFBTSxtQkFBbUIsR0FBRyxFQUFFO3FCQUMzQixPQUFPLEVBQUU7cUJBQ1QsTUFBTSxDQUNMLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDTixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO29CQUNwQixHQUFHLEtBQUssVUFBVTtvQkFDbEIsR0FBRyxLQUFLLEVBQUUsQ0FBQyxlQUFlLEVBQUU7b0JBQzVCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FDNUI7cUJBQ0EsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ1gsT0FBTzt3QkFDTCxJQUFJLEVBQUUsY0FBYyxHQUFHLEVBQUU7d0JBQ3pCLEtBQUssRUFBRSxHQUFHO3dCQUNWLFFBQVEsRUFBRSxZQUFZO3FCQUN2QixDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO2dCQUNMLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHO29CQUM3QixTQUFTLEVBQUUsS0FBSztvQkFDaEIsSUFBSSxFQUFFLElBQUk7b0JBQ1YsT0FBTyxFQUFFLG1CQUFtQjtpQkFDN0IsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsT0FBTztRQUNULENBQUM7UUFFRCxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQWdDLEVBQUUsRUFBRTtZQUN4RCxJQUFJLE1BQU0sR0FBRztnQkFDWCxJQUFJLEVBQUUsY0FBYyxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUNoQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUk7Z0JBQzdDLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixhQUFhLEVBQUUsU0FBUztnQkFDeEIsYUFBYSxFQUFFLEdBQUcsRUFBRTtvQkFDbEIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO29CQUNyQixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDZixTQUFTLENBQUMsU0FBUyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7d0JBQ3hDLE9BQU8sU0FBUyxDQUFDO29CQUNuQixDQUFDO2dCQUNILENBQUM7Z0JBQ0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUs7Z0JBQzlDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO2dCQUM1QixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7Z0JBQ3RDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDaEIsWUFBWSxFQUFFLFNBQVM7Z0JBQ3ZCLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7Z0JBQ3hCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDaEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2FBQ3ZCLENBQUM7WUFFRixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7Z0JBQzNELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUN4RCxNQUFNLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztvQkFDN0IsTUFBTSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUNuQyxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUVILGVBQWUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBeUIsRUFBRSxFQUFFO1lBQzVELE9BQU87Z0JBQ0wsSUFBSSxFQUFFLGNBQWMsUUFBUSxDQUFDLElBQUksRUFBRTtnQkFDbkMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJO2dCQUN0RCxRQUFRLEVBQUUseUJBQXlCLENBQUMsSUFBSTtnQkFDeEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2dCQUNuQixNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3ZCLElBQUksRUFBRSxVQUFVO2dCQUNoQixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUU7b0JBQ1osSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO3dCQUN0QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2hDLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxhQUFhLEVBQUUsR0FBRyxFQUFFO29CQUNsQixPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUM5QixDQUFDO2FBQ0YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUV6QixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUM3QixTQUFTLEVBQUUsS0FBSztZQUNoQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU87U0FDUixDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFPLEVBQUUsU0FBMkI7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDOUMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUUzQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNuRSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxHQUFHLEdBQUcsT0FBTyxDQUFDO1FBQ2hCLENBQUM7YUFBTSxDQUFDO1lBQ04sR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3ZCLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUV6RCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUN6RSxNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFDRSxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsS0FBSyxNQUFNLEVBQ3BFLENBQUM7Z0JBQ0QsR0FBRztvQkFDRCxHQUFHO3dCQUNILFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUzt3QkFDcEQsT0FBTyxDQUFDLEtBQUssQ0FBQztZQUNsQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sR0FBRyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQzlELENBQUM7WUFFRCxNQUFNLFNBQVMsR0FDYixTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztZQUM1RCxNQUFNLGFBQWEsR0FDakIsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDM0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFL0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7SUFFTSxVQUFVLENBQ2YsT0FBTyxFQUNQLFNBQTJCLEVBQzNCLEdBQVcsRUFDWCxPQUErQjtRQUUvQixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0QsTUFBTSxRQUFRLEdBQ1osU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztZQUNqRSxPQUFPLENBQUMsVUFBVSxDQUNoQixTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUM1RDtnQkFDQyxPQUFPO29CQUNQLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztvQkFDN0IsR0FBRztvQkFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FDMUIsSUFBSSxDQUFDLGFBQWE7eUJBQ2YsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7eUJBQzdCLFdBQVcsRUFBRTt5QkFDYixTQUFTLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxFQUNuQyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsQ0FDN0IsQ0FBQztRQUNOLENBQUM7UUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQyxLQUFLLE1BQU0sRUFBRSxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDakUsSUFDRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDO29CQUNqRCxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUN2RCxDQUFDO29CQUNELE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLElBQUk7YUFDTixJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO2FBQ3hELFNBQVMsQ0FDUixHQUFHLEVBQUU7WUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN4QyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUU1RCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFvQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUMxQixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUNyRSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksSUFBSSxDQUFDO2dCQUNULFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtvQkFDM0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDcEMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDdEMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2xDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNWLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7Z0JBQzFELENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUMxRCxDQUFDO1FBQ0gsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDO0lBRU0sYUFBYSxDQUFDLFNBQTJCLEVBQUUsR0FBVztRQUMzRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FDdEMsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUUvRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFvQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckUsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhO2lCQUN6RCxTQUFTLEVBQUUsQ0FBQztnQkFDYixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDckMsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDbkMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2hDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDMUIsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDckUsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixJQUFJLElBQUksQ0FBQztnQkFDVCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQzNCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ3RDLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDVixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDMUQsQ0FBQztRQUNILENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLGFBQWEsQ0FDbEIsT0FBTyxFQUNQLFNBQTJCLEVBQzNCLEdBQVcsRUFDWCxPQUErQixFQUMvQixTQUFTLEdBQUcsT0FBTztRQUVuQixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0QsTUFBTSxRQUFRLEdBQ1osU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztZQUNqRSxzQkFBc0I7WUFDdEIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckUsT0FBTyxDQUFDLFVBQVUsQ0FDaEIsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDNUQ7Z0JBQ0MsT0FBTztvQkFDUCxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7b0JBQzdCLEdBQUc7b0JBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQzFCLElBQUksQ0FBQyxhQUFhO3lCQUNmLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO3lCQUM3QixXQUFXLEVBQUU7eUJBQ2IsU0FBUyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsRUFDbkMsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLENBQzdCLENBQUM7UUFDTixDQUFDO1FBRUQsS0FBSyxNQUFNLFFBQVEsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUMsS0FBSyxNQUFNLEVBQUUsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2pFLElBQ0UsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQztvQkFDakQsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksS0FBSyxLQUFLLENBQUM7b0JBQ3ZELFFBQVEsS0FBSyxXQUFXLEVBQ3hCLENBQUM7b0JBQ0QsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUNqRCxPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUMsU0FBUyxDQUNWLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUUxQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1lBRS9ELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQW9CLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVyRSxJQUFJLGNBQWMsR0FBRyxFQUFFLENBQUM7WUFDeEIsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhO2lCQUN6RCxTQUFTLEVBQUUsQ0FBQztnQkFDYixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDckMsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDbkMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDM0IsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2hDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDMUIsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDckUsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixJQUFJLElBQUksQ0FBQztnQkFDVCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQzNCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ3RDLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNsQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDVixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDMUQsQ0FBQztRQUNILENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUEyQixFQUFFLE9BQU8sRUFBRSxRQUFRLEdBQUcsS0FBSztRQUMvRCxPQUFPLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDM0IsU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFeEMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEMsU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFFbEMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxPQUFPLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztnQkFDakQsT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7WUFDL0MsQ0FBQztZQUNELE9BQU8sT0FBTyxDQUFDLG1CQUFtQixDQUFDO1lBQ25DLE9BQU8sT0FBTyxDQUFDLGlCQUFpQixDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQXlCO1FBQ3ZDLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLO2dCQUM5RCxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUNyQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2pDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2IsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsR0FBc0IsRUFBRSxFQUFFO1lBQ3BDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUN4QixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsS0FBa0IsRUFBRSxHQUFZO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFrQixDQUM1QixNQUFNLEVBQ04sVUFBVSxFQUNWLElBQUksRUFDSixPQUFPLEVBQ1AsT0FBTyxFQUNQLEVBQUU7WUFDRixLQUFLLENBQUMsZUFBZSxDQUNuQixLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUNwQixLQUFLLENBQUMsT0FBTyxDQUFDLGFBQXFDLEVBQ25ELElBQUksQ0FBQyxlQUFlLEVBQ3BCLE1BQU0sRUFDTixVQUFVLEVBQ1YsSUFBSSxFQUNKLE9BQU8sRUFDUCxPQUFPLEVBQ1AsSUFBSSxDQUNMLENBQUM7UUFDSixDQUFDLENBQUM7UUFDRixVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUVyQixLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixJQUNFLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLEVBQUU7Z0JBQ25CLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQ3ZDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDOUM7Z0JBQ0QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxFQUNqRSxDQUFDO2dCQUNELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBc0IsQ0FBQztnQkFDekQsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNwQyxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pDLFVBQVUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQU8sRUFBRSxTQUEyQjtRQUNsRCxJQUFJLE9BQU8sQ0FBQztRQUNaLElBQUksR0FBRyxDQUFDO1FBQ1IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0RCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM3RCxHQUFHLEdBQUcsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDOUMsUUFBUSxJQUFJLEVBQUUsQ0FBQzt3QkFDYixLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7NEJBQ2pCLElBQ0UsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0NBQ3ZCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7b0NBQ3RDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUMzQixDQUFDO2dDQUNELEtBQUssR0FBRyxLQUFLLENBQUM7Z0NBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQ3ZCLGtDQUFrQyxFQUNsQyxTQUFTLEVBQ1QsU0FBUyxFQUNULEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FDekIsQ0FBQzs0QkFDSixDQUFDOzRCQUNELE1BQU07d0JBQ1IsQ0FBQzt3QkFDRCxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7NEJBQ2hCLElBQ0UsT0FBTyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDO2dDQUN0QyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztnQ0FDdkIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUNqRCxDQUFDO2dDQUNELEtBQUssR0FBRyxLQUFLLENBQUM7Z0NBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQ3ZCLGlDQUFpQyxFQUNqQyxTQUFTLEVBQ1QsU0FBUyxFQUNUO29DQUNFLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSztvQ0FDcEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2lDQUMvQixDQUNGLENBQUM7NEJBQ0osQ0FBQzs0QkFDRCxNQUFNO3dCQUNSLENBQUM7d0JBQ0QsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDOzRCQUNoQixJQUNFLE9BQU8sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztnQ0FDdEMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7Z0NBQ3ZCLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFDakQsQ0FBQztnQ0FDRCxLQUFLLEdBQUcsS0FBSyxDQUFDO2dDQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUN2QixpQ0FBaUMsRUFDakMsU0FBUyxFQUNULFNBQVMsRUFDVDtvQ0FDRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7b0NBQ3BCLEtBQUssRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztpQ0FDL0IsQ0FDRixDQUFDOzRCQUNKLENBQUM7NEJBQ0QsTUFBTTt3QkFDUixDQUFDO3dCQUNELEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQzs0QkFDakIsSUFDRSxPQUFPLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7Z0NBQ3RDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dDQUN2QixPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUN4RCxDQUFDO2dDQUNELEtBQUssR0FBRyxLQUFLLENBQUM7Z0NBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQ3ZCLGtDQUFrQyxFQUNsQyxTQUFTLEVBQ1QsU0FBUyxFQUNUO29DQUNFLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSztvQ0FDcEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2lDQUMvQixDQUNGLENBQUM7NEJBQ0osQ0FBQzs0QkFDRCxNQUFNO3dCQUNSLENBQUM7d0JBQ0QsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDOzRCQUNqQixJQUNFLE9BQU8sQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztnQ0FDdEMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7Z0NBQ3ZCLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQ3hELENBQUM7Z0NBQ0QsS0FBSyxHQUFHLEtBQUssQ0FBQztnQ0FDZCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FDdkIsa0NBQWtDLEVBQ2xDLFNBQVMsRUFDVCxTQUFTLEVBQ1Q7b0NBQ0UsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLO29DQUNwQixLQUFLLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7aUNBQy9CLENBQ0YsQ0FBQzs0QkFDSixDQUFDOzRCQUNELE1BQU07d0JBQ1IsQ0FBQztvQkFDSCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBTyxFQUFFLFNBQTJCO1FBQ3BELFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0RCxJQUNFLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTTtnQkFDdEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFDakUsQ0FBQztnQkFDRCxPQUFPLENBQUMsVUFBVSxDQUFDLGdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDL0QsT0FBTyxDQUFDLFVBQVUsQ0FDaEIsZ0NBQWdDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUM5QyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBdDBCVSx1QkFBdUI7MkdBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQTAwQkQsU0FBUyxnQ0FBZ0MsQ0FBQyxNQUFjO0lBQ3RELElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ25DLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFDLE1BQVc7SUFDMUIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUN2QyxJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVE7UUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBIdHRwQ2xpZW50LFxyXG4gIEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gIEh0dHBIZWFkZXJzXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5pbXBvcnQgeyBBdXRoSW50ZXJjZXB0b3IgfSBmcm9tICdAaWdvMi9hdXRoJztcclxuaW1wb3J0IHtcclxuICBBY3Rpb25TdG9yZSxcclxuICBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5LFxyXG4gIEVudGl0eVRhYmxlQnV0dG9uLFxyXG4gIEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIsXHJcbiAgRW50aXR5VGFibGVUZW1wbGF0ZVxyXG59IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2NvbmZpZyc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL3N0b3JhZ2UnO1xyXG5cclxuaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcclxuaW1wb3J0IHsgRmVhdHVyZUxvYWRlciB9IGZyb20gJ29sL2ZlYXR1cmVsb2FkZXInO1xyXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XHJcbmltcG9ydCBXS1QgZnJvbSAnb2wvZm9ybWF0L1dLVCc7XHJcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XHJcbmltcG9ydCBvbFNvdXJjZUltYWdlV01TIGZyb20gJ29sL3NvdXJjZS9JbWFnZVdNUyc7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBza2lwV2hpbGUsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFJlbGF0aW9uT3B0aW9ucyxcclxuICBTb3VyY2VGaWVsZHNPcHRpb25zUGFyYW1zLFxyXG4gIFdNU0RhdGFTb3VyY2VcclxufSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcyc7XHJcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZmVhdHVyZS1kYXRhc291cmNlJztcclxuaW1wb3J0IHsgV0ZTRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcy93ZnMtZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge1xyXG4gIEZlYXR1cmUsXHJcbiAgRmVhdHVyZU1vdGlvbixcclxuICBGZWF0dXJlU3RvcmUsXHJcbiAgRmVhdHVyZVN0b3JlSW5NYXBFeHRlbnRTdHJhdGVneSxcclxuICBGZWF0dXJlU3RvcmVJbk1hcFJlc29sdXRpb25TdHJhdGVneSxcclxuICBGZWF0dXJlU3RvcmVMb2FkaW5nTGF5ZXJTdHJhdGVneSxcclxuICBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneVxyXG59IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkJztcclxuaW1wb3J0IHsgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vZmlsdGVyL3NoYXJlZC9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7XHJcbiAgR2VvV29ya3NwYWNlT3B0aW9ucyxcclxuICBJbWFnZUxheWVyLFxyXG4gIExheWVyU2VydmljZSxcclxuICBMYXllcnNMaW5rUHJvcGVydGllcyxcclxuICBMaW5rZWRQcm9wZXJ0aWVzLFxyXG4gIFZlY3RvckxheWVyXHJcbn0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkJztcclxuaW1wb3J0IHsgSWdvTWFwLCBNYXBCYXNlIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZCc7XHJcbmltcG9ydCB7IFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vcXVlcnkvc2hhcmVkL3F1ZXJ5LmludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBTdHlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zdHlsZS9zdHlsZS1zZXJ2aWNlL3N0eWxlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFZGl0aW9uV29ya3NwYWNlIH0gZnJvbSAnLi9lZGl0aW9uLXdvcmtzcGFjZSc7XHJcbmltcG9ydCB7IGNyZWF0ZUZpbHRlckluTWFwRXh0ZW50T3JSZXNvbHV0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL3dvcmtzcGFjZS51dGlscyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFZGl0aW9uV29ya3NwYWNlU2VydmljZSB7XHJcbiAgcHVibGljIHdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xyXG4gIHB1YmxpYyBhZGRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIHJlbGF0aW9uTGF5ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SW1hZ2VMYXllcltdIHwgVmVjdG9yTGF5ZXJbXT4oXHJcbiAgICB1bmRlZmluZWRcclxuICApO1xyXG4gIHB1YmxpYyByb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XHJcbiAgcHVibGljIHdrdEZvcm1hdCA9IG5ldyBXS1QoKTtcclxuICBwdWJsaWMgZ2VvSnNvbkZvcm1hdCA9IG5ldyBHZW9KU09OKCk7XHJcblxyXG4gIGdldCB6b29tQXV0bygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnem9vbUF1dG8nKSBhcyBib29sZWFuO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHN0eWxlU2VydmljZTogU3R5bGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGF1dGhJbnRlcmNlcHRvcj86IEF1dGhJbnRlcmNlcHRvclxyXG4gICkge31cclxuXHJcbiAgY3JlYXRlV29ya3NwYWNlKGxheWVyOiBJbWFnZUxheWVyLCBtYXA6IElnb01hcCk6IEVkaXRpb25Xb3Jrc3BhY2Uge1xyXG4gICAgaWYgKFxyXG4gICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZT8uZW5hYmxlZCAhPT0gdHJ1ZSB8fFxyXG4gICAgICBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5lbmFibGVkICE9PSB0cnVlXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IHdrc0NvbmZpZztcclxuICAgIGlmIChsYXllci5vcHRpb25zLndvcmtzcGFjZSkge1xyXG4gICAgICB3a3NDb25maWcgPSBsYXllci5vcHRpb25zLndvcmtzcGFjZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHdrc0NvbmZpZyA9IHt9O1xyXG4gICAgfVxyXG4gICAgd2tzQ29uZmlnLnNyY0lkID0gbGF5ZXIuaWQ7XHJcbiAgICB3a3NDb25maWcud29ya3NwYWNlSWQgPSBsYXllci5pZDtcclxuICAgIHdrc0NvbmZpZy5lbmFibGVkID0gdHJ1ZTtcclxuICAgIHdrc0NvbmZpZy5wYWdlU2l6ZSA9IGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5wYWdlU2l6ZTtcclxuICAgIHdrc0NvbmZpZy5wYWdlU2l6ZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ucGFnZVNpemVPcHRpb25zO1xyXG5cclxuICAgIGNvbnN0IGRhdGFTb3VyY2U6IFdNU0RhdGFTb3VyY2UgPSBsYXllci5kYXRhU291cmNlIGFzIFdNU0RhdGFTb3VyY2U7XHJcbiAgICBjb25zdCB3bXNMaW5rSWQgPSBsYXllci5pZCArICcuV21zV29ya3NwYWNlVGFibGVTcmMnO1xyXG4gICAgY29uc3Qgd2ZzTGlua0lkID0gbGF5ZXIuaWQgKyAnLldmc1dvcmtzcGFjZVRhYmxlRGVzdCc7XHJcbiAgICBpZiAoIWxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzKSB7XHJcbiAgICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzID0geyBsaW5rSWQ6IHdtc0xpbmtJZCwgbGlua3M6IFtdIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBsaW5rUHJvcGVydGllcyA9IHtcclxuICAgICAgc3luY2VkRGVsZXRlOiB0cnVlLFxyXG4gICAgICBsaW5rZWRJZHM6IFt3ZnNMaW5rSWRdLFxyXG4gICAgICBwcm9wZXJ0aWVzOiBbTGlua2VkUHJvcGVydGllcy5aSU5ERVgsIExpbmtlZFByb3BlcnRpZXMuVklTSUJMRV1cclxuICAgIH0gYXMgTGF5ZXJzTGlua1Byb3BlcnRpZXM7XHJcblxyXG4gICAgaWYgKCFsYXllci5vcHRpb25zLndvcmtzcGFjZT8ubWluUmVzb2x1dGlvbikge1xyXG4gICAgICBsaW5rUHJvcGVydGllcy5wcm9wZXJ0aWVzLnB1c2goTGlua2VkUHJvcGVydGllcy5NSU5SRVNPTFVUSU9OKTtcclxuICAgIH1cclxuICAgIGxldCBoYXNPZ2NGaWx0ZXJzID0gZmFsc2U7XHJcbiAgICBpZiAoXHJcbiAgICAgIChkYXRhU291cmNlLm9wdGlvbnMgYXMgT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zKS5vZ2NGaWx0ZXJzPy5lbmFibGVkXHJcbiAgICApIHtcclxuICAgICAgbGlua1Byb3BlcnRpZXMucHJvcGVydGllcy5wdXNoKExpbmtlZFByb3BlcnRpZXMuT0dDRklMVEVSUyk7XHJcbiAgICAgIGhhc09nY0ZpbHRlcnMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFsYXllci5vcHRpb25zLndvcmtzcGFjZT8ubWF4UmVzb2x1dGlvbikge1xyXG4gICAgICBsaW5rUHJvcGVydGllcy5wcm9wZXJ0aWVzLnB1c2goTGlua2VkUHJvcGVydGllcy5NQVhSRVNPTFVUSU9OKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY2xvbmVkTGlua3M6IExheWVyc0xpbmtQcm9wZXJ0aWVzW10gPSBbXTtcclxuICAgIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rcykge1xyXG4gICAgICBjbG9uZWRMaW5rcyA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkobGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua3MpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjbG9uZWRMaW5rcy5wdXNoKGxpbmtQcm9wZXJ0aWVzKTtcclxuXHJcbiAgICAobGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkID0gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkXHJcbiAgICAgID8gbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkXHJcbiAgICAgIDogd21zTGlua0lkKSxcclxuICAgICAgKGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzID0gY2xvbmVkTGlua3MpO1xyXG4gICAgaW50ZXJmYWNlIFdGU29wdGlvbnNcclxuICAgICAgZXh0ZW5kcyBXRlNEYXRhU291cmNlT3B0aW9ucyxcclxuICAgICAgICBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMge31cclxuICAgIGxldCB3a3M7XHJcbiAgICB0aGlzLmxheWVyU2VydmljZVxyXG4gICAgICAuY3JlYXRlQXN5bmNMYXllcih7XHJcbiAgICAgICAgaWQ6IHdmc0xpbmtJZCxcclxuICAgICAgICBsaW5rZWRMYXllcnM6IHtcclxuICAgICAgICAgIGxpbmtJZDogd2ZzTGlua0lkXHJcbiAgICAgICAgfSxcclxuICAgICAgICB3b3Jrc3BhY2U6IHtcclxuICAgICAgICAgIHNyY0lkOiBsYXllci5pZCxcclxuICAgICAgICAgIHdvcmtzcGFjZUlkOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcclxuICAgICAgICAgIHF1ZXJ5T3B0aW9uczoge1xyXG4gICAgICAgICAgICBtYXBRdWVyeU9uT3BlblRhYjpcclxuICAgICAgICAgICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ucXVlcnlPcHRpb25zPy5tYXBRdWVyeU9uT3BlblRhYixcclxuICAgICAgICAgICAgdGFiUXVlcnk6IGZhbHNlXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcGFnZVNpemU6IGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5wYWdlU2l6ZSxcclxuICAgICAgICAgIHBhZ2VTaXplT3B0aW9uczogbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LnBhZ2VTaXplT3B0aW9uc1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcclxuICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgIHRpdGxlOiBsYXllci50aXRsZSxcclxuICAgICAgICBtaW5SZXNvbHV0aW9uOlxyXG4gICAgICAgICAgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/Lm1pblJlc29sdXRpb24gfHwgbGF5ZXIubWluUmVzb2x1dGlvbiB8fCAwLFxyXG4gICAgICAgIG1heFJlc29sdXRpb246XHJcbiAgICAgICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ubWF4UmVzb2x1dGlvbiB8fFxyXG4gICAgICAgICAgbGF5ZXIubWF4UmVzb2x1dGlvbiB8fFxyXG4gICAgICAgICAgSW5maW5pdHksXHJcbiAgICAgICAgc3R5bGU6IHRoaXMuc3R5bGVTZXJ2aWNlLmNyZWF0ZVN0eWxlKHtcclxuICAgICAgICAgIGZpbGw6IHtcclxuICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDEpJ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHN0cm9rZToge1xyXG4gICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMSknXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgY2lyY2xlOiB7XHJcbiAgICAgICAgICAgIGZpbGw6IHtcclxuICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMSknXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN0cm9rZToge1xyXG4gICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAxKSdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcmFkaXVzOiA1XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgc291cmNlT3B0aW9uczoge1xyXG4gICAgICAgICAgZG93bmxvYWQ6IGRhdGFTb3VyY2Uub3B0aW9ucy5kb3dubG9hZCxcclxuICAgICAgICAgIHR5cGU6ICd3ZnMnLFxyXG4gICAgICAgICAgdXJsOiBkYXRhU291cmNlLm9wdGlvbnMudXJsV2ZzIHx8IGRhdGFTb3VyY2Uub3B0aW9ucy51cmwsXHJcbiAgICAgICAgICBxdWVyeWFibGU6IHRydWUsXHJcbiAgICAgICAgICByZWxhdGlvbnM6IGRhdGFTb3VyY2Uub3B0aW9ucy5yZWxhdGlvbnMsXHJcbiAgICAgICAgICBxdWVyeVRpdGxlOiAoZGF0YVNvdXJjZS5vcHRpb25zIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zKVxyXG4gICAgICAgICAgICAucXVlcnlUaXRsZSxcclxuICAgICAgICAgIHBhcmFtczogZGF0YVNvdXJjZS5vcHRpb25zLnBhcmFtc1dGUyxcclxuICAgICAgICAgIG9nY0ZpbHRlcnM6IE9iamVjdC5hc3NpZ24oe30sIGRhdGFTb3VyY2Uub2djRmlsdGVycywge1xyXG4gICAgICAgICAgICBlbmFibGVkOiBoYXNPZ2NGaWx0ZXJzXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHNvdXJjZUZpZWxkczogZGF0YVNvdXJjZS5vcHRpb25zLnNvdXJjZUZpZWxkcyB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgICBlZGl0aW9uOiBkYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvblxyXG4gICAgICAgIH0gYXMgV0ZTb3B0aW9uc1xyXG4gICAgICB9KVxyXG4gICAgICAuc3Vic2NyaWJlKCh3b3Jrc3BhY2VMYXllcjogVmVjdG9yTGF5ZXIpID0+IHtcclxuICAgICAgICBtYXAuYWRkTGF5ZXIod29ya3NwYWNlTGF5ZXIpO1xyXG4gICAgICAgIGxheWVyLm9sLnNldFByb3BlcnRpZXMoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGxpbmtlZExheWVyczoge1xyXG4gICAgICAgICAgICAgIGxpbmtJZDogbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkLFxyXG4gICAgICAgICAgICAgIGxpbmtzOiBjbG9uZWRMaW5rc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmFsc2VcclxuICAgICAgICApO1xyXG4gICAgICAgIHdvcmtzcGFjZUxheWVyLmRhdGFTb3VyY2Uub2wucmVmcmVzaCgpO1xyXG5cclxuICAgICAgICB3a3MgPSBuZXcgRWRpdGlvbldvcmtzcGFjZShcclxuICAgICAgICAgIHRoaXMuZGlhbG9nLFxyXG4gICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLFxyXG4gICAgICAgICAgdGhpcy5hZGRpbmckLFxyXG4gICAgICAgICAgKHJlbGF0aW9uOiBSZWxhdGlvbk9wdGlvbnMpID0+IHRoaXMuZ2V0RG9tYWluVmFsdWVzKHJlbGF0aW9uKSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgaWQ6IGxheWVyLmlkLFxyXG4gICAgICAgICAgICB0aXRsZTogbGF5ZXIudGl0bGUsXHJcbiAgICAgICAgICAgIGxheWVyOiB3b3Jrc3BhY2VMYXllcixcclxuICAgICAgICAgICAgbWFwLFxyXG4gICAgICAgICAgICBlbnRpdHlTdG9yZTogdGhpcy5jcmVhdGVGZWF0dXJlU3RvcmUod29ya3NwYWNlTGF5ZXIsIG1hcCksXHJcbiAgICAgICAgICAgIGFjdGlvblN0b3JlOiBuZXcgQWN0aW9uU3RvcmUoW10pLFxyXG4gICAgICAgICAgICBtZXRhOiB7XHJcbiAgICAgICAgICAgICAgdGFibGVUZW1wbGF0ZTogdW5kZWZpbmVkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlVGFibGVUZW1wbGF0ZSh3a3MsIHdvcmtzcGFjZUxheWVyKTtcclxuXHJcbiAgICAgICAgd29ya3NwYWNlTGF5ZXIub3B0aW9ucy53b3Jrc3BhY2Uud29ya3NwYWNlSWQgPSB3b3Jrc3BhY2VMYXllci5pZDtcclxuICAgICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZSA9IE9iamVjdC5hc3NpZ24oe30sIGxheWVyLm9wdGlvbnMud29ya3NwYWNlLCB7XHJcbiAgICAgICAgICB3a3NDb25maWdcclxuICAgICAgICB9IGFzIEdlb1dvcmtzcGFjZU9wdGlvbnMpO1xyXG5cclxuICAgICAgICBkZWxldGUgZGF0YVNvdXJjZS5vcHRpb25zLmRvd25sb2FkO1xyXG4gICAgICAgIHJldHVybiB3a3M7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB3a3M7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZlYXR1cmVTdG9yZShsYXllcjogVmVjdG9yTGF5ZXIsIG1hcDogSWdvTWFwKTogRmVhdHVyZVN0b3JlIHtcclxuICAgIGNvbnN0IHN0b3JlID0gbmV3IEZlYXR1cmVTdG9yZShbXSwgeyBtYXAgfSk7XHJcbiAgICBzdG9yZS5iaW5kTGF5ZXIobGF5ZXIpO1xyXG5cclxuICAgIGNvbnN0IGxvYWRpbmdTdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVMb2FkaW5nTGF5ZXJTdHJhdGVneSh7fSk7XHJcbiAgICBjb25zdCBpbk1hcEV4dGVudFN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUluTWFwRXh0ZW50U3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3QgaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSA9IG5ldyBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5KHtcclxuICAgICAgbGF5ZXI6IG5ldyBWZWN0b3JMYXllcih7XHJcbiAgICAgICAgekluZGV4OiAzMDAsXHJcbiAgICAgICAgc291cmNlOiBuZXcgRmVhdHVyZURhdGFTb3VyY2UoKSxcclxuICAgICAgICBzdHlsZTogdW5kZWZpbmVkLFxyXG4gICAgICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXHJcbiAgICAgICAgZXhwb3J0YWJsZTogZmFsc2UsXHJcbiAgICAgICAgYnJvd3NhYmxlOiBmYWxzZVxyXG4gICAgICB9KSxcclxuICAgICAgbWFwLFxyXG4gICAgICBoaXRUb2xlcmFuY2U6IDE1LFxyXG4gICAgICBtb3Rpb246IHRoaXMuem9vbUF1dG8gPyBGZWF0dXJlTW90aW9uLkRlZmF1bHQgOiBGZWF0dXJlTW90aW9uLk5vbmUsXHJcbiAgICAgIG1hbnk6IHRydWUsXHJcbiAgICAgIGRyYWdCb3g6IHRydWVcclxuICAgIH0pO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3kobG9hZGluZ1N0cmF0ZWd5LCB0cnVlKTtcclxuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KGluTWFwRXh0ZW50U3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0aW9uU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSwgZmFsc2UpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koY3JlYXRlRmlsdGVySW5NYXBFeHRlbnRPclJlc29sdXRpb25TdHJhdGVneSgpLCB0cnVlKTtcclxuICAgIHJldHVybiBzdG9yZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVGFibGVUZW1wbGF0ZShcclxuICAgIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSxcclxuICAgIGxheWVyOiBWZWN0b3JMYXllclxyXG4gICk6IEVudGl0eVRhYmxlVGVtcGxhdGUge1xyXG4gICAgY29uc3QgZmllbGRzID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnNvdXJjZUZpZWxkcyB8fCBbXTtcclxuXHJcbiAgICBjb25zdCByZWxhdGlvbnMgPSBsYXllci5kYXRhU291cmNlLm9wdGlvbnMucmVsYXRpb25zIHx8IFtdO1xyXG5cclxuICAgIGxldCByZW5kZXJlclR5cGUgPSBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLlVuc2FuaXRpemVkSFRNTDtcclxuICAgIGxldCBidXR0b25zID0gW107XHJcbiAgICBsZXQgY29sdW1ucyA9IFtdO1xyXG4gICAgbGV0IHJlbGF0aW9uc0NvbHVtbiA9IFtdO1xyXG5cclxuICAgIGJ1dHRvbnMgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBuYW1lOiAnZWRpdGlvbicsXHJcbiAgICAgICAgdGl0bGU6IHVuZGVmaW5lZCxcclxuICAgICAgICByZW5kZXJlcjogRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlci5CdXR0b25Hcm91cCxcclxuICAgICAgICBwcmltYXJ5OiBmYWxzZSxcclxuICAgICAgICB2YWx1ZUFjY2Vzc29yOiAoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZWRpdE1vZGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGljb246ICdwZW5jaWwnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6XHJcbiAgICAgICAgICAgICAgICBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlCdXR0b24gPT09IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICA6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGNsaWNrOiAoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgd29ya3NwYWNlLmVkaXRGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgZWRpdE1vZGU6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGljb246ICdkZWxldGUnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAnd2FybicsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6XHJcbiAgICAgICAgICAgICAgICBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5kZWxldGVCdXR0b24gPT09IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgID8gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICA6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGNsaWNrOiAoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgd29ya3NwYWNlLmRlbGV0ZUZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBlZGl0TW9kZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBpY29uOiAnY2hlY2snLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMubG9hZGluZyxcclxuICAgICAgICAgICAgICBjbGljazogKGZlYXR1cmUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZUZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBlZGl0TW9kZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBpY29uOiAnYWxwaGEteCcsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcclxuICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5sb2FkaW5nLFxyXG4gICAgICAgICAgICAgIGNsaWNrOiAoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYW5jZWxFZGl0KHdvcmtzcGFjZSwgZmVhdHVyZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICBdIGFzIEVudGl0eVRhYmxlQnV0dG9uW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBdO1xyXG5cclxuICAgIGlmIChmaWVsZHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5lbnRpdGllcyRcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIHNraXBXaGlsZSgodmFsKSA9PiB2YWwubGVuZ3RoID09PSAwKSxcclxuICAgICAgICAgIHRha2UoMSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZSgoZW50aXRpZXMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG9sID0gKGVudGl0aWVzWzBdIGFzIEZlYXR1cmUpLm9sIGFzIG9sRmVhdHVyZTxPbEdlb21ldHJ5PjtcclxuICAgICAgICAgIGNvbnN0IGNvbHVtbnNGcm9tRmVhdHVyZXMgPSBvbFxyXG4gICAgICAgICAgICAuZ2V0S2V5cygpXHJcbiAgICAgICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgKGNvbCkgPT5cclxuICAgICAgICAgICAgICAgICFjb2wuc3RhcnRzV2l0aCgnXycpICYmXHJcbiAgICAgICAgICAgICAgICBjb2wgIT09ICdnZW9tZXRyeScgJiZcclxuICAgICAgICAgICAgICAgIGNvbCAhPT0gb2wuZ2V0R2VvbWV0cnlOYW1lKCkgJiZcclxuICAgICAgICAgICAgICAgICFjb2wubWF0Y2goL2JvdW5kZWRieS9naSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAubWFwKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogYHByb3BlcnRpZXMuJHtrZXl9YCxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBrZXksXHJcbiAgICAgICAgICAgICAgICByZW5kZXJlcjogcmVuZGVyZXJUeXBlXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB3b3Jrc3BhY2UubWV0YS50YWJsZVRlbXBsYXRlID0ge1xyXG4gICAgICAgICAgICBzZWxlY3Rpb246IGZhbHNlLFxyXG4gICAgICAgICAgICBzb3J0OiB0cnVlLFxyXG4gICAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5zRnJvbUZlYXR1cmVzXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29sdW1ucyA9IGZpZWxkcy5tYXAoKGZpZWxkOiBTb3VyY2VGaWVsZHNPcHRpb25zUGFyYW1zKSA9PiB7XHJcbiAgICAgIGxldCBjb2x1bW4gPSB7XHJcbiAgICAgICAgbmFtZTogYHByb3BlcnRpZXMuJHtmaWVsZC5uYW1lfWAsXHJcbiAgICAgICAgdGl0bGU6IGZpZWxkLmFsaWFzID8gZmllbGQuYWxpYXMgOiBmaWVsZC5uYW1lLFxyXG4gICAgICAgIHJlbmRlcmVyOiByZW5kZXJlclR5cGUsXHJcbiAgICAgICAgdmFsdWVBY2Nlc3NvcjogdW5kZWZpbmVkLFxyXG4gICAgICAgIGNlbGxDbGFzc0Z1bmM6ICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNlbGxDbGFzcyA9IHt9O1xyXG4gICAgICAgICAgaWYgKGZpZWxkLnR5cGUpIHtcclxuICAgICAgICAgICAgY2VsbENsYXNzW2BjbGFzc18ke2ZpZWxkLnR5cGV9YF0gPSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm4gY2VsbENsYXNzO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHJpbWFyeTogZmllbGQucHJpbWFyeSA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZSxcclxuICAgICAgICB2aXNpYmxlOiBmaWVsZC52aXNpYmxlLFxyXG4gICAgICAgIHZhbGlkYXRpb246IGZpZWxkLnZhbGlkYXRpb24sXHJcbiAgICAgICAgbGlua0NvbHVtbkZvcmNlOiBmaWVsZC5saW5rQ29sdW1uRm9yY2UsXHJcbiAgICAgICAgdHlwZTogZmllbGQudHlwZSxcclxuICAgICAgICBkb21haW5WYWx1ZXM6IHVuZGVmaW5lZCxcclxuICAgICAgICByZWxhdGlvbjogdW5kZWZpbmVkLFxyXG4gICAgICAgIG11bHRpcGxlOiBmaWVsZC5tdWx0aXBsZSxcclxuICAgICAgICBzdGVwOiBmaWVsZC5zdGVwLFxyXG4gICAgICAgIHRvb2x0aXA6IGZpZWxkLnRvb2x0aXBcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbGlzdCcgfHwgZmllbGQudHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScpIHtcclxuICAgICAgICB0aGlzLmdldERvbWFpblZhbHVlcyhmaWVsZC5yZWxhdGlvbikuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5kb21haW5WYWx1ZXMgPSByZXN1bHQ7XHJcbiAgICAgICAgICBjb2x1bW4ucmVsYXRpb24gPSBmaWVsZC5yZWxhdGlvbjtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sdW1uO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmVsYXRpb25zQ29sdW1uID0gcmVsYXRpb25zLm1hcCgocmVsYXRpb246IFJlbGF0aW9uT3B0aW9ucykgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG5hbWU6IGBwcm9wZXJ0aWVzLiR7cmVsYXRpb24ubmFtZX1gLFxyXG4gICAgICAgIHRpdGxlOiByZWxhdGlvbi5hbGlhcyA/IHJlbGF0aW9uLmFsaWFzIDogcmVsYXRpb24ubmFtZSxcclxuICAgICAgICByZW5kZXJlcjogRW50aXR5VGFibGVDb2x1bW5SZW5kZXJlci5JY29uLFxyXG4gICAgICAgIGljb246IHJlbGF0aW9uLmljb24sXHJcbiAgICAgICAgcGFyZW50OiByZWxhdGlvbi5wYXJlbnQsXHJcbiAgICAgICAgdHlwZTogJ3JlbGF0aW9uJyxcclxuICAgICAgICB0b29sdGlwOiByZWxhdGlvbi50b29sdGlwLFxyXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmFkZGluZyQuZ2V0VmFsdWUoKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy53cyQubmV4dChyZWxhdGlvbi50aXRsZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjZWxsQ2xhc3NGdW5jOiAoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4geyBjbGFzc19pY29uOiB0cnVlIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29sdW1ucy5wdXNoKC4uLnJlbGF0aW9uc0NvbHVtbik7XHJcbiAgICBjb2x1bW5zLnB1c2goLi4uYnV0dG9ucyk7XHJcblxyXG4gICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZSA9IHtcclxuICAgICAgc2VsZWN0aW9uOiBmYWxzZSxcclxuICAgICAgc29ydDogdHJ1ZSxcclxuICAgICAgY29sdW1uc1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UpIHtcclxuICAgIGlmICghdGhpcy52YWxpZGF0ZUZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zYW5pdGl6ZVBhcmFtZXRlcihmZWF0dXJlLCB3b3Jrc3BhY2UpO1xyXG5cclxuICAgIGNvbnN0IGJhc2VVcmwgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uYmFzZVVybDtcclxuICAgIGxldCB1cmwgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdlZGl0aW9uLnVybCcpO1xyXG5cclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIHVybCA9IGJhc2VVcmw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1cmwgKz0gYmFzZVVybCA/IGJhc2VVcmwgOiAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmVhdHVyZS5uZXdGZWF0dXJlKSB7XHJcbiAgICAgIHVybCArPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uYWRkVXJsO1xyXG5cclxuICAgICAgY29uc3QgYWRkSGVhZGVycyA9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5hZGRIZWFkZXJzO1xyXG4gICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKGFkZEhlYWRlcnMpO1xyXG5cclxuICAgICAgdGhpcy5hZGRGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSwgdXJsLCBoZWFkZXJzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubW9kaWZ5UHJvdG9jb2wgIT09ICdwb3N0J1xyXG4gICAgICApIHtcclxuICAgICAgICB1cmwgKz1cclxuICAgICAgICAgICc/JyArXHJcbiAgICAgICAgICB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubW9kaWZ5VXJsICtcclxuICAgICAgICAgIGZlYXR1cmUuaWRrZXk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXJsICs9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlVcmw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHByb3RvY29sZSA9XHJcbiAgICAgICAgd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1vZGlmeVByb3RvY29sO1xyXG4gICAgICBjb25zdCBtb2RpZnlIZWFkZXJzID1cclxuICAgICAgICB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubW9kaWZ5SGVhZGVycztcclxuICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyhtb2RpZnlIZWFkZXJzKTtcclxuXHJcbiAgICAgIHRoaXMubW9kaWZ5RmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UsIHVybCwgaGVhZGVycywgcHJvdG9jb2xlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRGZWF0dXJlKFxyXG4gICAgZmVhdHVyZSxcclxuICAgIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSxcclxuICAgIHVybDogc3RyaW5nLFxyXG4gICAgaGVhZGVyczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxyXG4gICkge1xyXG4gICAgaWYgKHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5oYXNHZW9tZXRyeSkge1xyXG4gICAgICBjb25zdCBwcm9qRGVzdCA9XHJcbiAgICAgICAgd29ya3NwYWNlLmxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucy5lZGl0aW9uLmdlb21EYXRhYmFzZVByb2o7XHJcbiAgICAgIGZlYXR1cmUucHJvcGVydGllc1tcclxuICAgICAgICB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnBhcmFtcy5maWVsZE5hbWVHZW9tZXRyeVxyXG4gICAgICBdID1cclxuICAgICAgICAnU1JJRD0nICtcclxuICAgICAgICBwcm9qRGVzdC5yZXBsYWNlKCdFUFNHOicsICcnKSArXHJcbiAgICAgICAgJzsnICtcclxuICAgICAgICB0aGlzLndrdEZvcm1hdC53cml0ZUdlb21ldHJ5KFxyXG4gICAgICAgICAgdGhpcy5nZW9Kc29uRm9ybWF0XHJcbiAgICAgICAgICAgIC5yZWFkRmVhdHVyZShmZWF0dXJlLmdlb21ldHJ5KVxyXG4gICAgICAgICAgICAuZ2V0R2VvbWV0cnkoKVxyXG4gICAgICAgICAgICAudHJhbnNmb3JtKCdFUFNHOjQzMjYnLCBwcm9qRGVzdCksXHJcbiAgICAgICAgICB7IGRhdGFQcm9qZWN0aW9uOiBwcm9qRGVzdCB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGZlYXR1cmUucHJvcGVydGllcykge1xyXG4gICAgICBmb3IgKGNvbnN0IHNmIG9mIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgKHNmLm5hbWUgPT09IHByb3BlcnR5ICYmIHNmLnZhbGlkYXRpb24/LnJlYWRvbmx5KSB8fFxyXG4gICAgICAgICAgKHNmLm5hbWUgPT09IHByb3BlcnR5ICYmIHNmLnZhbGlkYXRpb24/LnNlbmQgPT09IGZhbHNlKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZGVsZXRlIGZlYXR1cmUucHJvcGVydGllc1twcm9wZXJ0eV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdChgJHt1cmx9YCwgZmVhdHVyZS5wcm9wZXJ0aWVzLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5zdGF0ZVZpZXcuY2xlYXIoKTtcclxuICAgICAgICAgIHdvcmtzcGFjZS5kZWxldGVEcmF3aW5ncygpO1xyXG4gICAgICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLmRlbGV0ZShmZWF0dXJlKTtcclxuXHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLnN1Y2Nlc3MoJ2lnby5nZW8ud29ya3NwYWNlLmFkZFN1Y2Nlc3MnKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hNYXAod29ya3NwYWNlLmxheWVyIGFzIFZlY3RvckxheWVyLCB3b3Jrc3BhY2UubGF5ZXIubWFwKTtcclxuICAgICAgICAgIHRoaXMuYWRkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMucm93c0luTWFwRXh0ZW50Q2hlY2tDb25kaXRpb24kLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgZXJyb3IuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcclxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1lc3NhZ2VzO1xyXG4gICAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICAgIGxldCB0ZXh0O1xyXG4gICAgICAgICAgICBtZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMobWVzc2FnZSlbMF07XHJcbiAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoa2V5KSkge1xyXG4gICAgICAgICAgICAgICAgdGV4dCA9IG1lc3NhZ2Vba2V5XTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IodGV4dCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCF0ZXh0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby53b3Jrc3BhY2UuYWRkRXJyb3InKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby53b3Jrc3BhY2UuYWRkRXJyb3InKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlRmVhdHVyZSh3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UsIHVybDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5odHRwLmRlbGV0ZShgJHt1cmx9YCwge30pLnN1YnNjcmliZShcclxuICAgICAgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcygnaWdvLmdlby53b3Jrc3BhY2UuZGVsZXRlU3VjY2VzcycpO1xyXG5cclxuICAgICAgICB0aGlzLnJlZnJlc2hNYXAod29ya3NwYWNlLmxheWVyIGFzIFZlY3RvckxheWVyLCB3b3Jrc3BhY2UubGF5ZXIubWFwKTtcclxuICAgICAgICBmb3IgKGNvbnN0IHJlbGF0aW9uIG9mIHdvcmtzcGFjZS5sYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnNcclxuICAgICAgICAgIC5yZWxhdGlvbnMpIHtcclxuICAgICAgICAgIHdvcmtzcGFjZS5tYXAubGF5ZXJzLmZvckVhY2goKGxheWVyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsYXllci50aXRsZSA9PT0gcmVsYXRpb24udGl0bGUpIHtcclxuICAgICAgICAgICAgICBsYXllci5kYXRhU291cmNlLm9sLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBlcnJvci5lcnJvci5jYXVnaHQgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLm1lc3NhZ2VzO1xyXG4gICAgICAgIGlmIChtZXNzYWdlcykge1xyXG4gICAgICAgICAgbGV0IHRleHQ7XHJcbiAgICAgICAgICBtZXNzYWdlcy5mb3JFYWNoKChtZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKG1lc3NhZ2UpWzBdO1xyXG4gICAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICAgICAgdGV4dCA9IG1lc3NhZ2Vba2V5XTtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKHRleHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmICghdGV4dCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKCdpZ28uZ2VvLndvcmtzcGFjZS5hZGRFcnJvcicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKCdpZ28uZ2VvLndvcmtzcGFjZS5hZGRFcnJvcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtb2RpZnlGZWF0dXJlKFxyXG4gICAgZmVhdHVyZSxcclxuICAgIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSxcclxuICAgIHVybDogc3RyaW5nLFxyXG4gICAgaGVhZGVyczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICAgIHByb3RvY29sZSA9ICdwYXRjaCdcclxuICApIHtcclxuICAgIGlmICh3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uaGFzR2VvbWV0cnkpIHtcclxuICAgICAgY29uc3QgcHJvakRlc3QgPVxyXG4gICAgICAgIHdvcmtzcGFjZS5sYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnMuZWRpdGlvbi5nZW9tRGF0YWJhc2VQcm9qO1xyXG4gICAgICAvLyBSZW1vdmUgM2UgZGltZW5zaW9uXHJcbiAgICAgIGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMgPSByZW1vdmVaKGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpO1xyXG4gICAgICBmZWF0dXJlLnByb3BlcnRpZXNbXHJcbiAgICAgICAgd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5wYXJhbXMuZmllbGROYW1lR2VvbWV0cnlcclxuICAgICAgXSA9XHJcbiAgICAgICAgJ1NSSUQ9JyArXHJcbiAgICAgICAgcHJvakRlc3QucmVwbGFjZSgnRVBTRzonLCAnJykgK1xyXG4gICAgICAgICc7JyArXHJcbiAgICAgICAgdGhpcy53a3RGb3JtYXQud3JpdGVHZW9tZXRyeShcclxuICAgICAgICAgIHRoaXMuZ2VvSnNvbkZvcm1hdFxyXG4gICAgICAgICAgICAucmVhZEZlYXR1cmUoZmVhdHVyZS5nZW9tZXRyeSlcclxuICAgICAgICAgICAgLmdldEdlb21ldHJ5KClcclxuICAgICAgICAgICAgLnRyYW5zZm9ybSgnRVBTRzo0MzI2JywgcHJvakRlc3QpLFxyXG4gICAgICAgICAgeyBkYXRhUHJvamVjdGlvbjogcHJvakRlc3QgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBmZWF0dXJlLnByb3BlcnRpZXMpIHtcclxuICAgICAgZm9yIChjb25zdCBzZiBvZiB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnNvdXJjZUZpZWxkcykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIChzZi5uYW1lID09PSBwcm9wZXJ0eSAmJiBzZi52YWxpZGF0aW9uPy5yZWFkb25seSkgfHxcclxuICAgICAgICAgIChzZi5uYW1lID09PSBwcm9wZXJ0eSAmJiBzZi52YWxpZGF0aW9uPy5zZW5kID09PSBmYWxzZSkgfHxcclxuICAgICAgICAgIHByb3BlcnR5ID09PSAnYm91bmRlZEJ5J1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZGVsZXRlIGZlYXR1cmUucHJvcGVydGllc1twcm9wZXJ0eV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaHR0cFtwcm90b2NvbGVdKGAke3VybH1gLCBmZWF0dXJlLnByb3BlcnRpZXMsIHtcclxuICAgICAgaGVhZGVyczogaGVhZGVyc1xyXG4gICAgfSkuc3Vic2NyaWJlKFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jYW5jZWxFZGl0KHdvcmtzcGFjZSwgZmVhdHVyZSwgdHJ1ZSk7XHJcblxyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcygnaWdvLmdlby53b3Jrc3BhY2UubW9kaWZ5U3VjY2VzcycpO1xyXG5cclxuICAgICAgICB0aGlzLnJlZnJlc2hNYXAod29ya3NwYWNlLmxheWVyIGFzIFZlY3RvckxheWVyLCB3b3Jrc3BhY2UubGF5ZXIubWFwKTtcclxuXHJcbiAgICAgICAgbGV0IHJlbGF0aW9uTGF5ZXJzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCByZWxhdGlvbiBvZiB3b3Jrc3BhY2UubGF5ZXIub3B0aW9ucy5zb3VyY2VPcHRpb25zXHJcbiAgICAgICAgICAucmVsYXRpb25zKSB7XHJcbiAgICAgICAgICB3b3Jrc3BhY2UubWFwLmxheWVycy5mb3JFYWNoKChsYXllcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAobGF5ZXIudGl0bGUgPT09IHJlbGF0aW9uLnRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgcmVsYXRpb25MYXllcnMucHVzaChsYXllcik7XHJcbiAgICAgICAgICAgICAgbGF5ZXIuZGF0YVNvdXJjZS5vbC5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbGF0aW9uTGF5ZXJzJC5uZXh0KHJlbGF0aW9uTGF5ZXJzKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgZXJyb3IuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tZXNzYWdlcztcclxuICAgICAgICBpZiAobWVzc2FnZXMpIHtcclxuICAgICAgICAgIGxldCB0ZXh0O1xyXG4gICAgICAgICAgbWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhtZXNzYWdlKVswXTtcclxuICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoa2V5KSkge1xyXG4gICAgICAgICAgICAgIHRleHQgPSBtZXNzYWdlW2tleV07XHJcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcih0ZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAoIXRleHQpIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby53b3Jrc3BhY2UuYWRkRXJyb3InKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby53b3Jrc3BhY2UuYWRkRXJyb3InKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBjYW5jZWxFZGl0KHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSwgZmVhdHVyZSwgZnJvbVNhdmUgPSBmYWxzZSkge1xyXG4gICAgZmVhdHVyZS5lZGl0aW9uID0gZmFsc2U7XHJcbiAgICB0aGlzLmFkZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICB3b3Jrc3BhY2UuZGVsZXRlRHJhd2luZ3MoKTtcclxuICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5zdGF0ZVZpZXcuY2xlYXIoKTtcclxuXHJcbiAgICBpZiAoZmVhdHVyZS5uZXdGZWF0dXJlKSB7XHJcbiAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5kZWxldGUoZmVhdHVyZSk7XHJcbiAgICAgIHdvcmtzcGFjZS5kZWFjdGl2YXRlRHJhd0NvbnRyb2woKTtcclxuXHJcbiAgICAgIHRoaXMucm93c0luTWFwRXh0ZW50Q2hlY2tDb25kaXRpb24kLm5leHQodHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIWZyb21TYXZlKSB7XHJcbiAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzID0gZmVhdHVyZS5vcmlnaW5hbF9wcm9wZXJ0aWVzO1xyXG4gICAgICAgIGZlYXR1cmUuZ2VvbWV0cnkgPSBmZWF0dXJlLm9yaWdpbmFsX2dlb21ldHJ5O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSBmZWF0dXJlLm9yaWdpbmFsX3Byb3BlcnRpZXM7XHJcbiAgICAgIGRlbGV0ZSBmZWF0dXJlLm9yaWdpbmFsX2dlb21ldHJ5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RG9tYWluVmFsdWVzKHJlbGF0aW9uOiBSZWxhdGlvbk9wdGlvbnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IHVybCA9IHJlbGF0aW9uLnVybDtcclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIHVybCA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2VkaXRpb24udXJsJylcclxuICAgICAgICA/IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2VkaXRpb24udXJsJykgKyByZWxhdGlvbi50YWJsZVxyXG4gICAgICAgIDogcmVsYXRpb24udGFibGU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwpLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBlcnIuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogUmVmcmVzaCBib3RoIHdtcyBhbmQgd2ZzIGxheWVyXHJcbiAgICogQSBuZXcgd2ZzIGxvYWRlciBpcyB1c2VkIHRvIGVuc3VyZSBjYWNoZSBpcyBub3QgcmV0cmlldmluZyBvbGQgZGF0YVxyXG4gICAqIFdNUyBwYXJhbXMgYXJlIHVwZGF0ZWQgdG8gZW5zdXJlIGxheWVyIGlzIGNvcnJlY3RseSByZWZyZXNoZWRcclxuICAgKi9cclxuICByZWZyZXNoTWFwKGxheWVyOiBWZWN0b3JMYXllciwgbWFwOiBNYXBCYXNlKSB7XHJcbiAgICBjb25zdCB3ZnNPbExheWVyID0gbGF5ZXIuZGF0YVNvdXJjZS5vbDtcclxuICAgIGNvbnN0IGxvYWRlcjogRmVhdHVyZUxvYWRlciA9IChcclxuICAgICAgZXh0ZW50LFxyXG4gICAgICByZXNvbHV0aW9uLFxyXG4gICAgICBwcm9qLFxyXG4gICAgICBzdWNjZXNzLFxyXG4gICAgICBmYWlsdXJlXHJcbiAgICApID0+IHtcclxuICAgICAgbGF5ZXIuY3VzdG9tV0ZTTG9hZGVyKFxyXG4gICAgICAgIGxheWVyLm9sLmdldFNvdXJjZSgpLFxyXG4gICAgICAgIGxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucyBhcyBXRlNEYXRhU291cmNlT3B0aW9ucyxcclxuICAgICAgICB0aGlzLmF1dGhJbnRlcmNlcHRvcixcclxuICAgICAgICBleHRlbnQsXHJcbiAgICAgICAgcmVzb2x1dGlvbixcclxuICAgICAgICBwcm9qLFxyXG4gICAgICAgIHN1Y2Nlc3MsXHJcbiAgICAgICAgZmFpbHVyZSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gICAgd2ZzT2xMYXllci5zZXRMb2FkZXIobG9hZGVyKTtcclxuICAgIHdmc09sTGF5ZXIucmVmcmVzaCgpO1xyXG5cclxuICAgIGZvciAoY29uc3QgbGF5IG9mIG1hcC5sYXllcnMpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGxheS5pZCAhPT0gbGF5ZXIuaWQgJiZcclxuICAgICAgICBsYXkub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZC5pbmNsdWRlcyhcclxuICAgICAgICAgIGxheWVyLmlkLnN1YnN0cigwLCBsYXllci5pZC5pbmRleE9mKCcuJykgLSAxKVxyXG4gICAgICAgICkgJiZcclxuICAgICAgICBsYXkub3B0aW9ucy5saW5rZWRMYXllcnM/LmxpbmtJZC5pbmNsdWRlcygnV21zV29ya3NwYWNlVGFibGVTcmMnKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCB3bXNPbExheWVyID0gbGF5LmRhdGFTb3VyY2Uub2wgYXMgb2xTb3VyY2VJbWFnZVdNUztcclxuICAgICAgICBsZXQgcGFyYW1zID0gd21zT2xMYXllci5nZXRQYXJhbXMoKTtcclxuICAgICAgICBwYXJhbXMuX3QgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICB3bXNPbExheWVyLnVwZGF0ZVBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlKSB7XHJcbiAgICBsZXQgbWVzc2FnZTtcclxuICAgIGxldCBrZXk7XHJcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xyXG4gICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICBpZiAoY29sdW1uLmhhc093blByb3BlcnR5KCd2YWxpZGF0aW9uJykgJiYgY29sdW1uLnZhbGlkYXRpb24pIHtcclxuICAgICAgICBrZXkgPSBnZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4ubmFtZSk7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoY29sdW1uLnZhbGlkYXRpb24pLmZvckVhY2goKHR5cGUpID0+IHtcclxuICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICdtYW5kYXRvcnknOiB7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgY29sdW1uLnZhbGlkYXRpb25bdHlwZV0gJiZcclxuICAgICAgICAgICAgICAgICghZmVhdHVyZS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkgfHxcclxuICAgICAgICAgICAgICAgICAgIWZlYXR1cmUucHJvcGVydGllc1trZXldKVxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAgICdpZ28uZ2VvLmZvcm1WYWxpZGF0aW9uLm1hbmRhdG9yeScsXHJcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICB7IGNvbHVtbjogY29sdW1uLnRpdGxlIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ21pblZhbHVlJzoge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSAmJlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0gPCBjb2x1bW4udmFsaWRhdGlvblt0eXBlXVxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAgICdpZ28uZ2VvLmZvcm1WYWxpZGF0aW9uLm1pblZhbHVlJyxcclxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY29sdW1uLnZhbGlkYXRpb25bdHlwZV1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnbWF4VmFsdWUnOiB7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkgJiZcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1trZXldICYmXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSA+IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcihcclxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWF4VmFsdWUnLFxyXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbjogY29sdW1uLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjb2x1bW4udmFsaWRhdGlvblt0eXBlXVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdtaW5MZW5ndGgnOiB7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkgJiZcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1trZXldICYmXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XS5sZW5ndGggPCBjb2x1bW4udmFsaWRhdGlvblt0eXBlXVxyXG4gICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAgICdpZ28uZ2VvLmZvcm1WYWxpZGF0aW9uLm1pbkxlbmd0aCcsXHJcbiAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uOiBjb2x1bW4udGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgJ21heExlbmd0aCc6IHtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJlxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0gJiZcclxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1trZXldLmxlbmd0aCA+IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcihcclxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWF4TGVuZ3RoJyxcclxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY29sdW1uLnZhbGlkYXRpb25bdHlwZV1cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdmFsaWQ7XHJcbiAgfVxyXG5cclxuICBzYW5pdGl6ZVBhcmFtZXRlcihmZWF0dXJlLCB3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UpIHtcclxuICAgIHdvcmtzcGFjZS5tZXRhLnRhYmxlVGVtcGxhdGUuY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGNvbHVtbi50eXBlID09PSAnbGlzdCcgJiZcclxuICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNbZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uLm5hbWUpXVxyXG4gICAgICApIHtcclxuICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNbZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uLm5hbWUpXSA9XHJcbiAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNbXHJcbiAgICAgICAgICAgIGdldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbi5uYW1lKVxyXG4gICAgICAgICAgXS50b1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbjogc3RyaW5nKSB7XHJcbiAgaWYgKGNvbHVtbi5pbmNsdWRlcygncHJvcGVydGllcy4nKSkge1xyXG4gICAgcmV0dXJuIGNvbHVtbi5zcGxpdCgnLicpWzFdO1xyXG4gIH1cclxuICByZXR1cm4gY29sdW1uO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZW1vdmVaKGNvb3JkczogYW55KSB7XHJcbiAgaWYgKGNvb3Jkcy5sZW5ndGggPT09IDApIHJldHVybiBjb29yZHM7XHJcbiAgaWYgKHR5cGVvZiBjb29yZHNbMF0gPT09ICdudW1iZXInKSByZXR1cm4gY29vcmRzLnNsaWNlKDAsIDIpO1xyXG4gIHJldHVybiBjb29yZHMubWFwKHJlbW92ZVopO1xyXG59XHJcbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { ActionStore, EntityStoreFilterSelectionStrategy } from '@igo2/common';
3
- import { ConfigService, StorageService } from '@igo2/core';
3
+ import { ConfigService } from '@igo2/core/config';
4
+ import { StorageService } from '@igo2/core/storage';
4
5
  import { BehaviorSubject } from 'rxjs';
5
6
  import { CapabilitiesService } from '../../datasource/shared/capabilities.service';
6
7
  import { FeatureDataSource } from '../../datasource/shared/datasources';
@@ -11,10 +12,11 @@ import { PropertyTypeDetectorService } from '../../utils/propertyTypeDetector/pr
11
12
  import { FeatureWorkspace } from './feature-workspace';
12
13
  import { createFilterInMapExtentOrResolutionStrategy, createTableTemplate } from './workspace.utils';
13
14
  import * as i0 from "@angular/core";
14
- import * as i1 from "@igo2/core";
15
- import * as i2 from "../../layer/shared";
16
- import * as i3 from "../../utils/propertyTypeDetector/propertyTypeDetector.service";
17
- import * as i4 from "../../datasource/shared/capabilities.service";
15
+ import * as i1 from "@igo2/core/storage";
16
+ import * as i2 from "@igo2/core/config";
17
+ import * as i3 from "../../layer/shared";
18
+ import * as i4 from "../../utils/propertyTypeDetector/propertyTypeDetector.service";
19
+ import * as i5 from "../../datasource/shared/capabilities.service";
18
20
  export class FeatureWorkspaceService {
19
21
  storageService;
20
22
  configService;
@@ -98,13 +100,13 @@ export class FeatureWorkspaceService {
98
100
  store.addStrategy(createFilterInMapExtentOrResolutionStrategy(), true);
99
101
  return store;
100
102
  }
101
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FeatureWorkspaceService, deps: [{ token: i1.StorageService }, { token: i1.ConfigService }, { token: i2.LayerService }, { token: i3.PropertyTypeDetectorService }, { token: i4.CapabilitiesService }], target: i0.ɵɵFactoryTarget.Injectable });
102
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FeatureWorkspaceService, providedIn: 'root' });
103
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FeatureWorkspaceService, deps: [{ token: i1.StorageService }, { token: i2.ConfigService }, { token: i3.LayerService }, { token: i4.PropertyTypeDetectorService }, { token: i5.CapabilitiesService }], target: i0.ɵɵFactoryTarget.Injectable });
104
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FeatureWorkspaceService, providedIn: 'root' });
103
105
  }
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: FeatureWorkspaceService, decorators: [{
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FeatureWorkspaceService, decorators: [{
105
107
  type: Injectable,
106
108
  args: [{
107
109
  providedIn: 'root'
108
110
  }]
109
- }], ctorParameters: () => [{ type: i1.StorageService }, { type: i1.ConfigService }, { type: i2.LayerService }, { type: i3.PropertyTypeDetectorService }, { type: i4.CapabilitiesService }] });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS13b3Jrc3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3dvcmtzcGFjZS9zaGFyZWQvZmVhdHVyZS13b3Jrc3BhY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsYUFBYSxFQUNiLFlBQVksRUFDWiwrQkFBK0IsRUFDL0IsbUNBQW1DLEVBQ25DLGdDQUFnQyxFQUNoQywrQkFBK0IsRUFDL0IsNkJBQTZCLEVBQzdCLHFCQUFxQixFQUN0QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHL0QsT0FBTyxFQUdMLDRCQUE0QixFQUM3QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzVHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCwyQ0FBMkMsRUFDM0MsbUJBQW1CLEVBQ3BCLE1BQU0sbUJBQW1CLENBQUM7Ozs7OztBQUszQixNQUFNLE9BQU8sdUJBQXVCO0lBUXhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFY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LFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxLQUFLLENBQUMsV0FBVyxDQUFDLDJDQUEyQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3VHQWxHVSx1QkFBdUI7MkdBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQWN0aW9uU3RvcmUsIEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBDYXBhYmlsaXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvY2FwYWJpbGl0aWVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGZWF0dXJlRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzJztcclxuaW1wb3J0IHtcclxuICBGZWF0dXJlTW90aW9uLFxyXG4gIEZlYXR1cmVTdG9yZSxcclxuICBGZWF0dXJlU3RvcmVJbk1hcEV4dGVudFN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZUluTWFwUmVzb2x1dGlvblN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5LFxyXG4gIEZlYXR1cmVTdG9yZVNlYXJjaEluZGV4U3RyYXRlZ3ksXHJcbiAgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3ksXHJcbiAgR2VvUHJvcGVydGllc1N0cmF0ZWd5XHJcbn0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQnO1xyXG5pbXBvcnQgeyBMYXllclNlcnZpY2UsIFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkJztcclxuaW1wb3J0IHsgR2VvV29ya3NwYWNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMvbGF5ZXIuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5pbXBvcnQge1xyXG4gIEZlYXR1cmVDb21tb25WZWN0b3JTdHlsZU9wdGlvbnMsXHJcbiAgT3ZlcmxheVN0eWxlT3B0aW9ucyxcclxuICBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlXHJcbn0gZnJvbSAnLi4vLi4vc3R5bGUvc2hhcmVkJztcclxuaW1wb3J0IHsgUHJvcGVydHlUeXBlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcHJvcGVydHlUeXBlRGV0ZWN0b3IvcHJvcGVydHlUeXBlRGV0ZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IEZlYXR1cmVXb3Jrc3BhY2UgfSBmcm9tICcuL2ZlYXR1cmUtd29ya3NwYWNlJztcclxuaW1wb3J0IHtcclxuICBjcmVhdGVGaWx0ZXJJbk1hcEV4dGVudE9yUmVzb2x1dGlvblN0cmF0ZWd5LFxyXG4gIGNyZWF0ZVRhYmxlVGVtcGxhdGVcclxufSBmcm9tICcuL3dvcmtzcGFjZS51dGlscyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGZWF0dXJlV29ya3NwYWNlU2VydmljZSB7XHJcbiAgZ2V0IHpvb21BdXRvKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCd6b29tQXV0bycpIGFzIGJvb2xlYW47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgd3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwcm9wZXJ0eVR5cGVEZXRlY3RvclNlcnZpY2U6IFByb3BlcnR5VHlwZURldGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgY2FwYWJpbGl0aWVzU2VydmljZTogQ2FwYWJpbGl0aWVzU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgY3JlYXRlV29ya3NwYWNlKGxheWVyOiBWZWN0b3JMYXllciwgbWFwOiBJZ29NYXApOiBGZWF0dXJlV29ya3NwYWNlIHtcclxuICAgIGlmIChcclxuICAgICAgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LmVuYWJsZWQgPT09IGZhbHNlIHx8XHJcbiAgICAgIGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlID0gT2JqZWN0LmFzc2lnbih7fSwgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UsIHtcclxuICAgICAgc3JjSWQ6IGxheWVyLmlkLFxyXG4gICAgICB3b3Jrc3BhY2VJZDogbGF5ZXIuaWQsXHJcbiAgICAgIGVuYWJsZWQ6IHRydWVcclxuICAgIH0gYXMgR2VvV29ya3NwYWNlT3B0aW9ucyk7XHJcblxyXG4gICAgY29uc3Qgd2tzID0gbmV3IEZlYXR1cmVXb3Jrc3BhY2Uoe1xyXG4gICAgICBpZDogbGF5ZXIuaWQsXHJcbiAgICAgIHRpdGxlOiBsYXllci50aXRsZSxcclxuICAgICAgbGF5ZXIsXHJcbiAgICAgIG1hcCxcclxuICAgICAgZW50aXR5U3RvcmU6IHRoaXMuY3JlYXRlRmVhdHVyZVN0b3JlKGxheWVyLCBtYXApLFxyXG4gICAgICBhY3Rpb25TdG9yZTogbmV3IEFjdGlvblN0b3JlKFtdKSxcclxuICAgICAgbWV0YToge1xyXG4gICAgICAgIHRhYmxlVGVtcGxhdGU6IHVuZGVmaW5lZFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNyZWF0ZVRhYmxlVGVtcGxhdGUod2tzLCBsYXllciwgdGhpcy5sYXllclNlcnZpY2UsIHRoaXMud3MkKTtcclxuICAgIHJldHVybiB3a3M7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZlYXR1cmVTdG9yZShsYXllcjogVmVjdG9yTGF5ZXIsIG1hcDogSWdvTWFwKTogRmVhdHVyZVN0b3JlIHtcclxuICAgIGNvbnN0IHN0b3JlID0gbmV3IEZlYXR1cmVTdG9yZShbXSwgeyBtYXAgfSk7XHJcbiAgICBzdG9yZS5iaW5kTGF5ZXIobGF5ZXIpO1xyXG5cclxuICAgIGNvbnN0IGxvYWRpbmdTdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVMb2FkaW5nTGF5ZXJTdHJhdGVneSh7fSk7XHJcbiAgICBjb25zdCBzZWFyY2hTdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVTZWFyY2hJbmRleFN0cmF0ZWd5KHtcclxuICAgICAgcGVyY2VudERpc3RpbmN0VmFsdWVSYXRpbzogMixcclxuICAgICAgc291cmNlRmllbGRzOiBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGluTWFwRXh0ZW50U3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlSW5NYXBFeHRlbnRTdHJhdGVneSh7fSk7XHJcbiAgICBjb25zdCBnZW9Qcm9wZXJ0aWVzU3RyYXRlZ3kgPSBuZXcgR2VvUHJvcGVydGllc1N0cmF0ZWd5KFxyXG4gICAgICB7IG1hcCB9LFxyXG4gICAgICB0aGlzLnByb3BlcnR5VHlwZURldGVjdG9yU2VydmljZSxcclxuICAgICAgdGhpcy5jYXBhYmlsaXRpZXNTZXJ2aWNlXHJcbiAgICApO1xyXG4gICAgY29uc3QgaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSA9IG5ldyBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IGNvbmZRdWVyeU92ZXJsYXlTdHlsZTogT3ZlcmxheVN0eWxlT3B0aW9ucyA9XHJcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ3F1ZXJ5T3ZlcmxheVN0eWxlJyk7XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3koe1xyXG4gICAgICBsYXllcjogbmV3IFZlY3RvckxheWVyKHtcclxuICAgICAgICB6SW5kZXg6IDMwMCxcclxuICAgICAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxyXG4gICAgICAgIHN0eWxlOiAoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGUoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgeyBmZWF0dXJlIH0sXHJcbiAgICAgICAgICAgICAgY29uZlF1ZXJ5T3ZlcmxheVN0eWxlPy5zZWxlY3Rpb24gfHwge31cclxuICAgICAgICAgICAgKSBhcyBGZWF0dXJlQ29tbW9uVmVjdG9yU3R5bGVPcHRpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcclxuICAgICAgICBleHBvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICBicm93c2FibGU6IGZhbHNlXHJcbiAgICAgIH0pLFxyXG4gICAgICBtYXAsXHJcbiAgICAgIGhpdFRvbGVyYW5jZTogMTUsXHJcbiAgICAgIG1vdGlvbjogdGhpcy56b29tQXV0byA/IEZlYXR1cmVNb3Rpb24uRGVmYXVsdCA6IEZlYXR1cmVNb3Rpb24uTm9uZSxcclxuICAgICAgbWFueTogdHJ1ZSxcclxuICAgICAgZHJhZ0JveDogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBpZiAobGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LnNlYXJjaEluZGV4RW5hYmxlZCkge1xyXG4gICAgICBzdG9yZS5hZGRTdHJhdGVneShzZWFyY2hTdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShsb2FkaW5nU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBFeHRlbnRTdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShnZW9Qcm9wZXJ0aWVzU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0aW9uU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSwgZmFsc2UpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koY3JlYXRlRmlsdGVySW5NYXBFeHRlbnRPclJlc29sdXRpb25TdHJhdGVneSgpLCB0cnVlKTtcclxuICAgIHJldHVybiBzdG9yZTtcclxuICB9XHJcbn1cclxuIl19
111
+ }], ctorParameters: () => [{ type: i1.StorageService }, { type: i2.ConfigService }, { type: i3.LayerService }, { type: i4.PropertyTypeDetectorService }, { type: i5.CapabilitiesService }] });
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS13b3Jrc3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3dvcmtzcGFjZS9zaGFyZWQvZmVhdHVyZS13b3Jrc3BhY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsWUFBWSxFQUNaLCtCQUErQixFQUMvQixtQ0FBbUMsRUFDbkMsZ0NBQWdDLEVBQ2hDLCtCQUErQixFQUMvQiw2QkFBNkIsRUFDN0IscUJBQXFCLEVBQ3RCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUcvRCxPQUFPLEVBR0wsNEJBQTRCLEVBQzdCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDNUcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUNMLDJDQUEyQyxFQUMzQyxtQkFBbUIsRUFDcEIsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQUszQixNQUFNLE9BQU8s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LEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRCxLQUFLLENBQUMsV0FBVyxDQUFDLDJDQUEyQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3VHQWxHVSx1QkFBdUI7MkdBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQWN0aW9uU3RvcmUsIEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAaWdvMi9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvc3RvcmFnZSc7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IENhcGFiaWxpdGllc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9jYXBhYmlsaXRpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMnO1xyXG5pbXBvcnQge1xyXG4gIEZlYXR1cmVNb3Rpb24sXHJcbiAgRmVhdHVyZVN0b3JlLFxyXG4gIEZlYXR1cmVTdG9yZUluTWFwRXh0ZW50U3RyYXRlZ3ksXHJcbiAgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksXHJcbiAgRmVhdHVyZVN0b3JlTG9hZGluZ0xheWVyU3RyYXRlZ3ksXHJcbiAgRmVhdHVyZVN0b3JlU2VhcmNoSW5kZXhTdHJhdGVneSxcclxuICBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSxcclxuICBHZW9Qcm9wZXJ0aWVzU3RyYXRlZ3lcclxufSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZCc7XHJcbmltcG9ydCB7IExheWVyU2VydmljZSwgVmVjdG9yTGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQnO1xyXG5pbXBvcnQgeyBHZW9Xb3Jrc3BhY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XHJcbmltcG9ydCB7XHJcbiAgRmVhdHVyZUNvbW1vblZlY3RvclN0eWxlT3B0aW9ucyxcclxuICBPdmVybGF5U3R5bGVPcHRpb25zLFxyXG4gIGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGVcclxufSBmcm9tICcuLi8uLi9zdHlsZS9zaGFyZWQnO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eVR5cGVEZXRlY3RvclNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9wcm9wZXJ0eVR5cGVEZXRlY3Rvci9wcm9wZXJ0eVR5cGVEZXRlY3Rvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmVhdHVyZVdvcmtzcGFjZSB9IGZyb20gJy4vZmVhdHVyZS13b3Jrc3BhY2UnO1xyXG5pbXBvcnQge1xyXG4gIGNyZWF0ZUZpbHRlckluTWFwRXh0ZW50T3JSZXNvbHV0aW9uU3RyYXRlZ3ksXHJcbiAgY3JlYXRlVGFibGVUZW1wbGF0ZVxyXG59IGZyb20gJy4vd29ya3NwYWNlLnV0aWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlYXR1cmVXb3Jrc3BhY2VTZXJ2aWNlIHtcclxuICBnZXQgem9vbUF1dG8oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlU2VydmljZS5nZXQoJ3pvb21BdXRvJykgYXMgYm9vbGVhbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB3cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4odW5kZWZpbmVkKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgbGF5ZXJTZXJ2aWNlOiBMYXllclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHByb3BlcnR5VHlwZURldGVjdG9yU2VydmljZTogUHJvcGVydHlUeXBlRGV0ZWN0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjYXBhYmlsaXRpZXNTZXJ2aWNlOiBDYXBhYmlsaXRpZXNTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBjcmVhdGVXb3Jrc3BhY2UobGF5ZXI6IFZlY3RvckxheWVyLCBtYXA6IElnb01hcCk6IEZlYXR1cmVXb3Jrc3BhY2Uge1xyXG4gICAgaWYgKFxyXG4gICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZT8uZW5hYmxlZCA9PT0gZmFsc2UgfHxcclxuICAgICAgbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb25cclxuICAgICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UgPSBPYmplY3QuYXNzaWduKHt9LCBsYXllci5vcHRpb25zLndvcmtzcGFjZSwge1xyXG4gICAgICBzcmNJZDogbGF5ZXIuaWQsXHJcbiAgICAgIHdvcmtzcGFjZUlkOiBsYXllci5pZCxcclxuICAgICAgZW5hYmxlZDogdHJ1ZVxyXG4gICAgfSBhcyBHZW9Xb3Jrc3BhY2VPcHRpb25zKTtcclxuXHJcbiAgICBjb25zdCB3a3MgPSBuZXcgRmVhdHVyZVdvcmtzcGFjZSh7XHJcbiAgICAgIGlkOiBsYXllci5pZCxcclxuICAgICAgdGl0bGU6IGxheWVyLnRpdGxlLFxyXG4gICAgICBsYXllcixcclxuICAgICAgbWFwLFxyXG4gICAgICBlbnRpdHlTdG9yZTogdGhpcy5jcmVhdGVGZWF0dXJlU3RvcmUobGF5ZXIsIG1hcCksXHJcbiAgICAgIGFjdGlvblN0b3JlOiBuZXcgQWN0aW9uU3RvcmUoW10pLFxyXG4gICAgICBtZXRhOiB7XHJcbiAgICAgICAgdGFibGVUZW1wbGF0ZTogdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY3JlYXRlVGFibGVUZW1wbGF0ZSh3a3MsIGxheWVyLCB0aGlzLmxheWVyU2VydmljZSwgdGhpcy53cyQpO1xyXG4gICAgcmV0dXJuIHdrcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmVhdHVyZVN0b3JlKGxheWVyOiBWZWN0b3JMYXllciwgbWFwOiBJZ29NYXApOiBGZWF0dXJlU3RvcmUge1xyXG4gICAgY29uc3Qgc3RvcmUgPSBuZXcgRmVhdHVyZVN0b3JlKFtdLCB7IG1hcCB9KTtcclxuICAgIHN0b3JlLmJpbmRMYXllcihsYXllcik7XHJcblxyXG4gICAgY29uc3QgbG9hZGluZ1N0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IHNlYXJjaFN0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZVNlYXJjaEluZGV4U3RyYXRlZ3koe1xyXG4gICAgICBwZXJjZW50RGlzdGluY3RWYWx1ZVJhdGlvOiAyLFxyXG4gICAgICBzb3VyY2VGaWVsZHM6IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5zb3VyY2VGaWVsZHNcclxuICAgIH0pO1xyXG4gICAgY29uc3QgaW5NYXBFeHRlbnRTdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVJbk1hcEV4dGVudFN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IGdlb1Byb3BlcnRpZXNTdHJhdGVneSA9IG5ldyBHZW9Qcm9wZXJ0aWVzU3RyYXRlZ3koXHJcbiAgICAgIHsgbWFwIH0sXHJcbiAgICAgIHRoaXMucHJvcGVydHlUeXBlRGV0ZWN0b3JTZXJ2aWNlLFxyXG4gICAgICB0aGlzLmNhcGFiaWxpdGllc1NlcnZpY2VcclxuICAgICk7XHJcbiAgICBjb25zdCBpbk1hcFJlc29sdXRpb25TdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVJbk1hcFJlc29sdXRpb25TdHJhdGVneSh7fSk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJlY29yZFN0cmF0ZWd5ID0gbmV3IEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3QgY29uZlF1ZXJ5T3ZlcmxheVN0eWxlOiBPdmVybGF5U3R5bGVPcHRpb25zID1cclxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygncXVlcnlPdmVybGF5U3R5bGUnKTtcclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb25TdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSh7XHJcbiAgICAgIGxheWVyOiBuZXcgVmVjdG9yTGF5ZXIoe1xyXG4gICAgICAgIHpJbmRleDogMzAwLFxyXG4gICAgICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXHJcbiAgICAgICAgc3R5bGU6IChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICB7IGZlYXR1cmUgfSxcclxuICAgICAgICAgICAgICBjb25mUXVlcnlPdmVybGF5U3R5bGU/LnNlbGVjdGlvbiB8fCB7fVxyXG4gICAgICAgICAgICApIGFzIEZlYXR1cmVDb21tb25WZWN0b3JTdHlsZU9wdGlvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93SW5MYXllckxpc3Q6IGZhbHNlLFxyXG4gICAgICAgIGV4cG9ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgIGJyb3dzYWJsZTogZmFsc2VcclxuICAgICAgfSksXHJcbiAgICAgIG1hcCxcclxuICAgICAgaGl0VG9sZXJhbmNlOiAxNSxcclxuICAgICAgbW90aW9uOiB0aGlzLnpvb21BdXRvID8gRmVhdHVyZU1vdGlvbi5EZWZhdWx0IDogRmVhdHVyZU1vdGlvbi5Ob25lLFxyXG4gICAgICBtYW55OiB0cnVlLFxyXG4gICAgICBkcmFnQm94OiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGlmIChsYXllci5vcHRpb25zLndvcmtzcGFjZT8uc2VhcmNoSW5kZXhFbmFibGVkKSB7XHJcbiAgICAgIHN0b3JlLmFkZFN0cmF0ZWd5KHNlYXJjaFN0cmF0ZWd5LCB0cnVlKTtcclxuICAgIH1cclxuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KGxvYWRpbmdTdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShpbk1hcEV4dGVudFN0cmF0ZWd5LCB0cnVlKTtcclxuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KGdlb1Byb3BlcnRpZXNTdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShpbk1hcFJlc29sdXRpb25TdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShzZWxlY3Rpb25TdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShzZWxlY3RlZFJlY29yZFN0cmF0ZWd5LCBmYWxzZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShjcmVhdGVGaWx0ZXJJbk1hcEV4dGVudE9yUmVzb2x1dGlvblN0cmF0ZWd5KCksIHRydWUpO1xyXG4gICAgcmV0dXJuIHN0b3JlO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { ActionStore, EntityStoreFilterSelectionStrategy } from '@igo2/common';
3
- import { ConfigService, StorageService } from '@igo2/core';
3
+ import { ConfigService } from '@igo2/core/config';
4
+ import { StorageService } from '@igo2/core/storage';
4
5
  import { BehaviorSubject } from 'rxjs';
5
6
  import { CapabilitiesService } from '../../datasource/shared/capabilities.service';
6
7
  import { FeatureDataSource } from '../../datasource/shared/datasources';
@@ -11,10 +12,11 @@ import { PropertyTypeDetectorService } from '../../utils/propertyTypeDetector';
11
12
  import { WfsWorkspace } from './wfs-workspace';
12
13
  import { createFilterInMapExtentOrResolutionStrategy, createTableTemplate } from './workspace.utils';
13
14
  import * as i0 from "@angular/core";
14
- import * as i1 from "@igo2/core";
15
- import * as i2 from "../../layer/shared";
16
- import * as i3 from "../../utils/propertyTypeDetector";
17
- import * as i4 from "../../datasource/shared/capabilities.service";
15
+ import * as i1 from "@igo2/core/storage";
16
+ import * as i2 from "@igo2/core/config";
17
+ import * as i3 from "../../layer/shared";
18
+ import * as i4 from "../../utils/propertyTypeDetector";
19
+ import * as i5 from "../../datasource/shared/capabilities.service";
18
20
  export class WfsWorkspaceService {
19
21
  storageService;
20
22
  configService;
@@ -91,13 +93,13 @@ export class WfsWorkspaceService {
91
93
  store.addStrategy(createFilterInMapExtentOrResolutionStrategy(), true);
92
94
  return store;
93
95
  }
94
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: WfsWorkspaceService, deps: [{ token: i1.StorageService }, { token: i1.ConfigService }, { token: i2.LayerService }, { token: i3.PropertyTypeDetectorService }, { token: i4.CapabilitiesService }], target: i0.ɵɵFactoryTarget.Injectable });
95
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: WfsWorkspaceService, providedIn: 'root' });
96
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: WfsWorkspaceService, deps: [{ token: i1.StorageService }, { token: i2.ConfigService }, { token: i3.LayerService }, { token: i4.PropertyTypeDetectorService }, { token: i5.CapabilitiesService }], target: i0.ɵɵFactoryTarget.Injectable });
97
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: WfsWorkspaceService, providedIn: 'root' });
96
98
  }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: WfsWorkspaceService, decorators: [{
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: WfsWorkspaceService, decorators: [{
98
100
  type: Injectable,
99
101
  args: [{
100
102
  providedIn: 'root'
101
103
  }]
102
- }], ctorParameters: () => [{ type: i1.StorageService }, { type: i1.ConfigService }, { type: i2.LayerService }, { type: i3.PropertyTypeDetectorService }, { type: i4.CapabilitiesService }] });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLXdvcmtzcGFjZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvd29ya3NwYWNlL3NoYXJlZC93ZnMtd29ya3NwYWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUNMLGFBQWEsRUFDYixZQUFZLEVBQ1osK0JBQStCLEVBQy9CLG1DQUFtQyxFQUNuQyxnQ0FBZ0MsRUFDaEMsNkJBQTZCLEVBQzdCLHFCQUFxQixFQUN0QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFFTCxZQUFZLEVBQ1osV0FBVyxFQUNaLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUdMLDRCQUE0QixFQUM3QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsMkNBQTJDLEVBQzNDLG1CQUFtQixFQUNwQixNQUFNLG1CQUFtQixDQUFDOzs7Ozs7QUFLM0IsTUFBTSxPQUFPLG1CQUFtQjtJQVFwQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBWFYsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJ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bSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBBY3Rpb25TdG9yZSwgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UsIFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IENhcGFiaWxpdGllc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9jYXBhYmlsaXRpZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMnO1xyXG5pbXBvcnQge1xyXG4gIEZlYXR1cmVNb3Rpb24sXHJcbiAgRmVhdHVyZVN0b3JlLFxyXG4gIEZlYXR1cmVTdG9yZUluTWFwRXh0ZW50U3RyYXRlZ3ksXHJcbiAgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksXHJcbiAgRmVhdHVyZVN0b3JlTG9hZGluZ0xheWVyU3RyYXRlZ3ksXHJcbiAgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3ksXHJcbiAgR2VvUHJvcGVydGllc1N0cmF0ZWd5XHJcbn0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQnO1xyXG5pbXBvcnQge1xyXG4gIEdlb1dvcmtzcGFjZU9wdGlvbnMsXHJcbiAgTGF5ZXJTZXJ2aWNlLFxyXG4gIFZlY3RvckxheWVyXHJcbn0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkJztcclxuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xyXG5pbXBvcnQge1xyXG4gIEZlYXR1cmVDb21tb25WZWN0b3JTdHlsZU9wdGlvbnMsXHJcbiAgT3ZlcmxheVN0eWxlT3B0aW9ucyxcclxuICBnZXRDb21tb25WZWN0b3JTZWxlY3RlZFN0eWxlXHJcbn0gZnJvbSAnLi4vLi4vc3R5bGUvc2hhcmVkJztcclxuaW1wb3J0IHsgUHJvcGVydHlUeXBlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcHJvcGVydHlUeXBlRGV0ZWN0b3InO1xyXG5pbXBvcnQgeyBXZnNXb3Jrc3BhY2UgfSBmcm9tICcuL3dmcy13b3Jrc3BhY2UnO1xyXG5pbXBvcnQge1xyXG4gIGNyZWF0ZUZpbHRlckluTWFwRXh0ZW50T3JSZXNvbHV0aW9uU3RyYXRlZ3ksXHJcbiAgY3JlYXRlVGFibGVUZW1wbGF0ZVxyXG59IGZyb20gJy4vd29ya3NwYWNlLnV0aWxzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdmc1dvcmtzcGFjZVNlcnZpY2Uge1xyXG4gIGdldCB6b29tQXV0bygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnem9vbUF1dG8nKSBhcyBib29sZWFuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsYXllclNlcnZpY2U6IExheWVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcHJvcGVydHlUeXBlRGV0ZWN0b3JTZXJ2aWNlOiBQcm9wZXJ0eVR5cGVEZXRlY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNhcGFiaWxpdGllc1NlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGNyZWF0ZVdvcmtzcGFjZShsYXllcjogVmVjdG9yTGF5ZXIsIG1hcDogSWdvTWFwKTogV2ZzV29ya3NwYWNlIHtcclxuICAgIGlmIChcclxuICAgICAgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LmVuYWJsZWQgPT09IGZhbHNlIHx8XHJcbiAgICAgIGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlID0gT2JqZWN0LmFzc2lnbih7fSwgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UsIHtcclxuICAgICAgc3JjSWQ6IGxheWVyLmlkLFxyXG4gICAgICB3b3Jrc3BhY2VJZDogbGF5ZXIuaWQsXHJcbiAgICAgIGVuYWJsZWQ6IHRydWVcclxuICAgIH0gYXMgR2VvV29ya3NwYWNlT3B0aW9ucyk7XHJcblxyXG4gICAgY29uc3Qgd2tzID0gbmV3IFdmc1dvcmtzcGFjZSh7XHJcbiAgICAgIGlkOiBsYXllci5pZCxcclxuICAgICAgdGl0bGU6IGxheWVyLnRpdGxlLFxyXG4gICAgICBsYXllcixcclxuICAgICAgbWFwLFxyXG4gICAgICBlbnRpdHlTdG9yZTogdGhpcy5jcmVhdGVGZWF0dXJlU3RvcmUobGF5ZXIsIG1hcCksXHJcbiAgICAgIGFjdGlvblN0b3JlOiBuZXcgQWN0aW9uU3RvcmUoW10pLFxyXG4gICAgICBtZXRhOiB7XHJcbiAgICAgICAgdGFibGVUZW1wbGF0ZTogdW5kZWZpbmVkXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY3JlYXRlVGFibGVUZW1wbGF0ZSh3a3MsIGxheWVyLCB0aGlzLmxheWVyU2VydmljZSwgdGhpcy53cyQpO1xyXG4gICAgcmV0dXJuIHdrcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmVhdHVyZVN0b3JlKGxheWVyOiBWZWN0b3JMYXllciwgbWFwOiBJZ29NYXApOiBGZWF0dXJlU3RvcmUge1xyXG4gICAgY29uc3Qgc3RvcmUgPSBuZXcgRmVhdHVyZVN0b3JlKFtdLCB7IG1hcCB9KTtcclxuICAgIHN0b3JlLmJpbmRMYXllcihsYXllcik7XHJcblxyXG4gICAgY29uc3QgbG9hZGluZ1N0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IGluTWFwRXh0ZW50U3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlSW5NYXBFeHRlbnRTdHJhdGVneSh7fSk7XHJcbiAgICBjb25zdCBnZW9Qcm9wZXJ0aWVzU3RyYXRlZ3kgPSBuZXcgR2VvUHJvcGVydGllc1N0cmF0ZWd5KFxyXG4gICAgICB7IG1hcCB9LFxyXG4gICAgICB0aGlzLnByb3BlcnR5VHlwZURldGVjdG9yU2VydmljZSxcclxuICAgICAgdGhpcy5jYXBhYmlsaXRpZXNTZXJ2aWNlXHJcbiAgICApO1xyXG4gICAgY29uc3QgaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSA9IG5ldyBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IGNvbmZRdWVyeU92ZXJsYXlTdHlsZTogT3ZlcmxheVN0eWxlT3B0aW9ucyA9XHJcbiAgICAgIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ3F1ZXJ5T3ZlcmxheVN0eWxlJyk7XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0aW9uU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlU2VsZWN0aW9uU3RyYXRlZ3koe1xyXG4gICAgICBsYXllcjogbmV3IFZlY3RvckxheWVyKHtcclxuICAgICAgICB6SW5kZXg6IDMwMCxcclxuICAgICAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxyXG4gICAgICAgIHN0eWxlOiAoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGUoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgICAge30sXHJcbiAgICAgICAgICAgICAgeyBmZWF0dXJlIH0sXHJcbiAgICAgICAgICAgICAgY29uZlF1ZXJ5T3ZlcmxheVN0eWxlPy5zZWxlY3Rpb24gfHwge31cclxuICAgICAgICAgICAgKSBhcyBGZWF0dXJlQ29tbW9uVmVjdG9yU3R5bGVPcHRpb25zXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcclxuICAgICAgICBleHBvcnRhYmxlOiBmYWxzZSxcclxuICAgICAgICBicm93c2FibGU6IGZhbHNlXHJcbiAgICAgIH0pLFxyXG4gICAgICBtYXAsXHJcbiAgICAgIGhpdFRvbGVyYW5jZTogMTUsXHJcbiAgICAgIG1vdGlvbjogdGhpcy56b29tQXV0byA/IEZlYXR1cmVNb3Rpb24uRGVmYXVsdCA6IEZlYXR1cmVNb3Rpb24uTm9uZSxcclxuICAgICAgbWFueTogdHJ1ZSxcclxuICAgICAgZHJhZ0JveDogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShsb2FkaW5nU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBFeHRlbnRTdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShnZW9Qcm9wZXJ0aWVzU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0aW9uU3RyYXRlZ3ksIHRydWUpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSwgZmFsc2UpO1xyXG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koY3JlYXRlRmlsdGVySW5NYXBFeHRlbnRPclJlc29sdXRpb25TdHJhdGVneSgpLCB0cnVlKTtcclxuICAgIHJldHVybiBzdG9yZTtcclxuICB9XHJcbn1cclxuIl19
104
+ }], ctorParameters: () => [{ type: i1.StorageService }, { type: i2.ConfigService }, { type: i3.LayerService }, { type: i4.PropertyTypeDetectorService }, { type: i5.CapabilitiesService }] });
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ZzLXdvcmtzcGFjZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvd29ya3NwYWNlL3NoYXJlZC93ZnMtd29ya3NwYWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsYUFBYSxFQUNiLFlBQVksRUFDWiwrQkFBK0IsRUFDL0IsbUNBQW1DLEVBQ25DLGdDQUFnQyxFQUNoQyw2QkFBNkIsRUFDN0IscUJBQXFCLEVBQ3RCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUVMLFlBQVksRUFDWixXQUFXLEVBQ1osTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixPQUFPLEVBR0wsNEJBQTRCLEVBQzdCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCwyQ0FBMkMsRUFDM0MsbUJBQW1CLEVBQ3BCLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7QUFLM0IsTUFBTSxPQUFPLG1CQUFtQjtJQVFwQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBWFYsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQVksQ0FBQztJQUN4RCxDQUFDO0lBRU0sR0FBRyxHQUFHLElBQUksZUFBZSxDQUFTLFNBQVMsQ0FBQyxDQUFDO0lBRXBELFlBQ1UsY0FBOEIsRUFDOUIsYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsMkJBQXdELEVBQ3hELG1CQUF3QztRQUp4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO0lBQy9DLENBQUM7SUFFSixlQUFlLENBQUMsS0FBa0IsRUFBRSxHQUFXO1FBQzdDLElBQ0UsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxLQUFLLEtBQUs7WUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUNoQyxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFFRCxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNuRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDZixXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDckIsT0FBTyxFQUFFLElBQUk7U0FDUyxDQUFDLENBQUM7UUFFMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxZQUFZLENBQUM7WUFDM0IsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ1osS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLEtBQUs7WUFDTCxHQUFHO1lBQ0gsV0FBVyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO1lBQ2hELFdBQVcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxFQUFFO2dCQUNKLGFBQWEsRUFBRSxTQUFTO2FBQ3pCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsbUJBQW1CLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3RCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxLQUFrQixFQUFFLEdBQVc7UUFDeEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM1QyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXZCLE1BQU0sZUFBZSxHQUFHLElBQUksZ0NBQWdDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLCtCQUErQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxxQkFBcUIsQ0FDckQsRUFBRSxHQUFHLEVBQUUsRUFDUCxJQUFJLENBQUMsMkJBQTJCLEVBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FDekIsQ0FBQztRQUNGLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxtQ0FBbUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxNQUFNLHNCQUFzQixHQUFHLElBQUksa0NBQWtDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUUsTUFBTSxxQkFBcUIsR0FDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUVwRCxNQUFNLGlCQUFpQixHQUFHLElBQUksNkJBQTZCLENBQUM7WUFDMUQsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDO2dCQUNyQixNQUFNLEVBQUUsR0FBRztnQkFDWCxNQUFNLEVBQUUsSUFBSSxpQkFBaUIsRUFBRTtnQkFDL0IsS0FBSyxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7b0JBQ2pCLE9BQU8sNEJBQTRCLENBQ2pDLE1BQU0sQ0FBQyxNQUFNLENBQ1gsRUFBRSxFQUNGLEVBQUUsT0FBTyxFQUFFLEVBQ1gscUJBQXFCLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FDSixDQUNyQyxDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsZUFBZSxFQUFFLEtBQUs7Z0JBQ3RCLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixTQUFTLEVBQUUsS0FBSzthQUNqQixDQUFDO1lBQ0YsR0FBRztZQUNILFlBQVksRUFBRSxFQUFFO1lBQ2hCLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSTtZQUNsRSxJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QyxLQUFLLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQy9DLEtBQUssQ0FBQyxXQUFXLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pELEtBQUssQ0FBQyxXQUFXLENBQUMsMkNBQTJDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7dUdBM0ZVLG1CQUFtQjsyR0FBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBBY3Rpb25TdG9yZSwgRW50aXR5U3RvcmVGaWx0ZXJTZWxlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2NvbmZpZyc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9zdG9yYWdlJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQ2FwYWJpbGl0aWVzU2VydmljZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2NhcGFiaWxpdGllcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmVhdHVyZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcyc7XHJcbmltcG9ydCB7XHJcbiAgRmVhdHVyZU1vdGlvbixcclxuICBGZWF0dXJlU3RvcmUsXHJcbiAgRmVhdHVyZVN0b3JlSW5NYXBFeHRlbnRTdHJhdGVneSxcclxuICBGZWF0dXJlU3RvcmVJbk1hcFJlc29sdXRpb25TdHJhdGVneSxcclxuICBGZWF0dXJlU3RvcmVMb2FkaW5nTGF5ZXJTdHJhdGVneSxcclxuICBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSxcclxuICBHZW9Qcm9wZXJ0aWVzU3RyYXRlZ3lcclxufSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZCc7XHJcbmltcG9ydCB7XHJcbiAgR2VvV29ya3NwYWNlT3B0aW9ucyxcclxuICBMYXllclNlcnZpY2UsXHJcbiAgVmVjdG9yTGF5ZXJcclxufSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQnO1xyXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XHJcbmltcG9ydCB7XHJcbiAgRmVhdHVyZUNvbW1vblZlY3RvclN0eWxlT3B0aW9ucyxcclxuICBPdmVybGF5U3R5bGVPcHRpb25zLFxyXG4gIGdldENvbW1vblZlY3RvclNlbGVjdGVkU3R5bGVcclxufSBmcm9tICcuLi8uLi9zdHlsZS9zaGFyZWQnO1xyXG5pbXBvcnQgeyBQcm9wZXJ0eVR5cGVEZXRlY3RvclNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9wcm9wZXJ0eVR5cGVEZXRlY3Rvcic7XHJcbmltcG9ydCB7IFdmc1dvcmtzcGFjZSB9IGZyb20gJy4vd2ZzLXdvcmtzcGFjZSc7XHJcbmltcG9ydCB7XHJcbiAgY3JlYXRlRmlsdGVySW5NYXBFeHRlbnRPclJlc29sdXRpb25TdHJhdGVneSxcclxuICBjcmVhdGVUYWJsZVRlbXBsYXRlXHJcbn0gZnJvbSAnLi93b3Jrc3BhY2UudXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV2ZzV29ya3NwYWNlU2VydmljZSB7XHJcbiAgZ2V0IHpvb21BdXRvKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCd6b29tQXV0bycpIGFzIGJvb2xlYW47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgd3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwcm9wZXJ0eVR5cGVEZXRlY3RvclNlcnZpY2U6IFByb3BlcnR5VHlwZURldGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgY2FwYWJpbGl0aWVzU2VydmljZTogQ2FwYWJpbGl0aWVzU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgY3JlYXRlV29ya3NwYWNlKGxheWVyOiBWZWN0b3JMYXllciwgbWFwOiBJZ29NYXApOiBXZnNXb3Jrc3BhY2Uge1xyXG4gICAgaWYgKFxyXG4gICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZT8uZW5hYmxlZCA9PT0gZmFsc2UgfHxcclxuICAgICAgbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb25cclxuICAgICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UgPSBPYmplY3QuYXNzaWduKHt9LCBsYXllci5vcHRpb25zLndvcmtzcGFjZSwge1xyXG4gICAgICBzcmNJZDogbGF5ZXIuaWQsXHJcbiAgICAgIHdvcmtzcGFjZUlkOiBsYXllci5pZCxcclxuICAgICAgZW5hYmxlZDogdHJ1ZVxyXG4gICAgfSBhcyBHZW9Xb3Jrc3BhY2VPcHRpb25zKTtcclxuXHJcbiAgICBjb25zdCB3a3MgPSBuZXcgV2ZzV29ya3NwYWNlKHtcclxuICAgICAgaWQ6IGxheWVyLmlkLFxyXG4gICAgICB0aXRsZTogbGF5ZXIudGl0bGUsXHJcbiAgICAgIGxheWVyLFxyXG4gICAgICBtYXAsXHJcbiAgICAgIGVudGl0eVN0b3JlOiB0aGlzLmNyZWF0ZUZlYXR1cmVTdG9yZShsYXllciwgbWFwKSxcclxuICAgICAgYWN0aW9uU3RvcmU6IG5ldyBBY3Rpb25TdG9yZShbXSksXHJcbiAgICAgIG1ldGE6IHtcclxuICAgICAgICB0YWJsZVRlbXBsYXRlOiB1bmRlZmluZWRcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjcmVhdGVUYWJsZVRlbXBsYXRlKHdrcywgbGF5ZXIsIHRoaXMubGF5ZXJTZXJ2aWNlLCB0aGlzLndzJCk7XHJcbiAgICByZXR1cm4gd2tzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVGZWF0dXJlU3RvcmUobGF5ZXI6IFZlY3RvckxheWVyLCBtYXA6IElnb01hcCk6IEZlYXR1cmVTdG9yZSB7XHJcbiAgICBjb25zdCBzdG9yZSA9IG5ldyBGZWF0dXJlU3RvcmUoW10sIHsgbWFwIH0pO1xyXG4gICAgc3RvcmUuYmluZExheWVyKGxheWVyKTtcclxuXHJcbiAgICBjb25zdCBsb2FkaW5nU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlTG9hZGluZ0xheWVyU3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3QgaW5NYXBFeHRlbnRTdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVJbk1hcEV4dGVudFN0cmF0ZWd5KHt9KTtcclxuICAgIGNvbnN0IGdlb1Byb3BlcnRpZXNTdHJhdGVneSA9IG5ldyBHZW9Qcm9wZXJ0aWVzU3RyYXRlZ3koXHJcbiAgICAgIHsgbWFwIH0sXHJcbiAgICAgIHRoaXMucHJvcGVydHlUeXBlRGV0ZWN0b3JTZXJ2aWNlLFxyXG4gICAgICB0aGlzLmNhcGFiaWxpdGllc1NlcnZpY2VcclxuICAgICk7XHJcbiAgICBjb25zdCBpbk1hcFJlc29sdXRpb25TdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVJbk1hcFJlc29sdXRpb25TdHJhdGVneSh7fSk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJlY29yZFN0cmF0ZWd5ID0gbmV3IEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3koe30pO1xyXG4gICAgY29uc3QgY29uZlF1ZXJ5T3ZlcmxheVN0eWxlOiBPdmVybGF5U3R5bGVPcHRpb25zID1cclxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygncXVlcnlPdmVybGF5U3R5bGUnKTtcclxuXHJcbiAgICBjb25zdCBzZWxlY3Rpb25TdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSh7XHJcbiAgICAgIGxheWVyOiBuZXcgVmVjdG9yTGF5ZXIoe1xyXG4gICAgICAgIHpJbmRleDogMzAwLFxyXG4gICAgICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXHJcbiAgICAgICAgc3R5bGU6IChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gZ2V0Q29tbW9uVmVjdG9yU2VsZWN0ZWRTdHlsZShcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihcclxuICAgICAgICAgICAgICB7fSxcclxuICAgICAgICAgICAgICB7IGZlYXR1cmUgfSxcclxuICAgICAgICAgICAgICBjb25mUXVlcnlPdmVybGF5U3R5bGU/LnNlbGVjdGlvbiB8fCB7fVxyXG4gICAgICAgICAgICApIGFzIEZlYXR1cmVDb21tb25WZWN0b3JTdHlsZU9wdGlvbnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93SW5MYXllckxpc3Q6IGZhbHNlLFxyXG4gICAgICAgIGV4cG9ydGFibGU6IGZhbHNlLFxyXG4gICAgICAgIGJyb3dzYWJsZTogZmFsc2VcclxuICAgICAgfSksXHJcbiAgICAgIG1hcCxcclxuICAgICAgaGl0VG9sZXJhbmNlOiAxNSxcclxuICAgICAgbW90aW9uOiB0aGlzLnpvb21BdXRvID8gRmVhdHVyZU1vdGlvbi5EZWZhdWx0IDogRmVhdHVyZU1vdGlvbi5Ob25lLFxyXG4gICAgICBtYW55OiB0cnVlLFxyXG4gICAgICBkcmFnQm94OiB0cnVlXHJcbiAgICB9KTtcclxuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KGxvYWRpbmdTdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShpbk1hcEV4dGVudFN0cmF0ZWd5LCB0cnVlKTtcclxuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KGdlb1Byb3BlcnRpZXNTdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShpbk1hcFJlc29sdXRpb25TdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShzZWxlY3Rpb25TdHJhdGVneSwgdHJ1ZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShzZWxlY3RlZFJlY29yZFN0cmF0ZWd5LCBmYWxzZSk7XHJcbiAgICBzdG9yZS5hZGRTdHJhdGVneShjcmVhdGVGaWx0ZXJJbk1hcEV4dGVudE9yUmVzb2x1dGlvblN0cmF0ZWd5KCksIHRydWUpO1xyXG4gICAgcmV0dXJuIHN0b3JlO1xyXG4gIH1cclxufVxyXG4iXX0=