@igo2/geo 18.0.0 → 18.0.1-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/fesm2022/igo2-geo.mjs +684 -709
  2. package/fesm2022/igo2-geo.mjs.map +1 -1
  3. package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
  4. package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
  5. package/lib/style/style-list/style-list.provider.d.ts +1 -8
  6. package/lib/style/style-list/style-list.service.d.ts +1 -1
  7. package/package.json +15 -17
  8. package/src/lib/layer/layer-list/layer-list.theme.scss +2 -1
  9. package/src/lib/map/menu-button/menu-button.theming.scss +3 -3
  10. package/src/style/style.scss +1 -1
  11. package/esm2022/igo2-geo.mjs +0 -5
  12. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +0 -234
  13. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +0 -272
  14. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +0 -246
  15. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +0 -19
  16. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +0 -136
  17. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +0 -60
  18. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +0 -232
  19. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +0 -24
  20. package/esm2022/lib/catalog/catalog-library/index.mjs +0 -4
  21. package/esm2022/lib/catalog/catalog.module.mjs +0 -26
  22. package/esm2022/lib/catalog/index.mjs +0 -6
  23. package/esm2022/lib/catalog/shared/catalog.abstract.mjs +0 -32
  24. package/esm2022/lib/catalog/shared/catalog.enum.mjs +0 -16
  25. package/esm2022/lib/catalog/shared/catalog.interface.mjs +0 -2
  26. package/esm2022/lib/catalog/shared/catalog.service.mjs +0 -706
  27. package/esm2022/lib/catalog/shared/catalogs.mjs +0 -75
  28. package/esm2022/lib/catalog/shared/index.mjs +0 -5
  29. package/esm2022/lib/datasource/index.mjs +0 -3
  30. package/esm2022/lib/datasource/shared/capabilities.interface.mjs +0 -17
  31. package/esm2022/lib/datasource/shared/capabilities.service.mjs +0 -441
  32. package/esm2022/lib/datasource/shared/datasource.service.mjs +0 -258
  33. package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +0 -2
  34. package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +0 -2
  35. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +0 -2
  36. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +0 -222
  37. package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +0 -2
  38. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +0 -118
  39. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +0 -2
  40. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +0 -24
  41. package/esm2022/lib/datasource/shared/datasources/data.service.mjs +0 -3
  42. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +0 -2
  43. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +0 -41
  44. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +0 -2
  45. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +0 -52
  46. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +0 -2
  47. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +0 -70
  48. package/esm2022/lib/datasource/shared/datasources/index.mjs +0 -36
  49. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +0 -2
  50. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +0 -33
  51. package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +0 -2
  52. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +0 -14
  53. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +0 -2
  54. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +0 -60
  55. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +0 -2
  56. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +0 -17
  57. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +0 -2
  58. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +0 -56
  59. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +0 -2
  60. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +0 -137
  61. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +0 -170
  62. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +0 -2
  63. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +0 -227
  64. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +0 -224
  65. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +0 -2
  66. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +0 -18
  67. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +0 -2
  68. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +0 -11
  69. package/esm2022/lib/datasource/shared/index.mjs +0 -6
  70. package/esm2022/lib/datasource/shared/options/index.mjs +0 -5
  71. package/esm2022/lib/datasource/shared/options/options-api.interface.mjs +0 -2
  72. package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +0 -15
  73. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +0 -85
  74. package/esm2022/lib/datasource/shared/options/options.service.mjs +0 -3
  75. package/esm2022/lib/datasource/utils/index.mjs +0 -2
  76. package/esm2022/lib/datasource/utils/tilegrid.mjs +0 -20
  77. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +0 -246
  78. package/esm2022/lib/directions/directions-buttons/index.mjs +0 -2
  79. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +0 -312
  80. package/esm2022/lib/directions/directions-inputs/index.mjs +0 -2
  81. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +0 -192
  82. package/esm2022/lib/directions/directions-results/index.mjs +0 -2
  83. package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +0 -5
  84. package/esm2022/lib/directions/directions-sources/directions-source.mjs +0 -3
  85. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +0 -23
  86. package/esm2022/lib/directions/directions-sources/index.mjs +0 -5
  87. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +0 -159
  88. package/esm2022/lib/directions/directions.component.mjs +0 -437
  89. package/esm2022/lib/directions/directions.module.mjs +0 -46
  90. package/esm2022/lib/directions/directions.provider.mjs +0 -16
  91. package/esm2022/lib/directions/index.mjs +0 -8
  92. package/esm2022/lib/directions/shared/directions-source.service.mjs +0 -18
  93. package/esm2022/lib/directions/shared/directions.enum.mjs +0 -72
  94. package/esm2022/lib/directions/shared/directions.interface.mjs +0 -2
  95. package/esm2022/lib/directions/shared/directions.service.mjs +0 -239
  96. package/esm2022/lib/directions/shared/directions.utils.mjs +0 -522
  97. package/esm2022/lib/directions/shared/index.mjs +0 -6
  98. package/esm2022/lib/directions/shared/store.mjs +0 -21
  99. package/esm2022/lib/download/download-button/download-button.component.mjs +0 -48
  100. package/esm2022/lib/download/download-button/index.mjs +0 -2
  101. package/esm2022/lib/download/download.module.mjs +0 -24
  102. package/esm2022/lib/download/index.mjs +0 -3
  103. package/esm2022/lib/download/shared/download.interface.mjs +0 -2
  104. package/esm2022/lib/download/shared/download.service.mjs +0 -67
  105. package/esm2022/lib/download/shared/index.mjs +0 -3
  106. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +0 -42
  107. package/esm2022/lib/draw/draw/draw-popup.component.mjs +0 -421
  108. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +0 -28
  109. package/esm2022/lib/draw/draw/draw.component.mjs +0 -1136
  110. package/esm2022/lib/draw/draw/draw.module.mjs +0 -19
  111. package/esm2022/lib/draw/drawingTool.module.mjs +0 -18
  112. package/esm2022/lib/draw/index.mjs +0 -3
  113. package/esm2022/lib/draw/shared/draw-icon.service.mjs +0 -30
  114. package/esm2022/lib/draw/shared/draw.enum.mjs +0 -21
  115. package/esm2022/lib/draw/shared/draw.interface.mjs +0 -2
  116. package/esm2022/lib/draw/shared/draw.utils.mjs +0 -125
  117. package/esm2022/lib/draw/shared/index.mjs +0 -5
  118. package/esm2022/lib/environment/environment.interface.mjs +0 -2
  119. package/esm2022/lib/environment/index.mjs +0 -2
  120. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +0 -306
  121. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +0 -56
  122. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +0 -26
  123. package/esm2022/lib/feature/feature-details/index.mjs +0 -4
  124. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +0 -101
  125. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +0 -19
  126. package/esm2022/lib/feature/feature.module.mjs +0 -26
  127. package/esm2022/lib/feature/index.mjs +0 -5
  128. package/esm2022/lib/feature/shared/feature-store.utils.mjs +0 -28
  129. package/esm2022/lib/feature/shared/feature.enums.mjs +0 -9
  130. package/esm2022/lib/feature/shared/feature.interfaces.mjs +0 -2
  131. package/esm2022/lib/feature/shared/feature.utils.mjs +0 -332
  132. package/esm2022/lib/feature/shared/index.mjs +0 -8
  133. package/esm2022/lib/feature/shared/store.mjs +0 -143
  134. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +0 -216
  135. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +0 -119
  136. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +0 -99
  137. package/esm2022/lib/feature/shared/strategies/index.mjs +0 -8
  138. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +0 -103
  139. package/esm2022/lib/feature/shared/strategies/loading.mjs +0 -136
  140. package/esm2022/lib/feature/shared/strategies/search.mjs +0 -158
  141. package/esm2022/lib/feature/shared/strategies/selection.mjs +0 -385
  142. package/esm2022/lib/feature/shared/strategies.utils.mjs +0 -37
  143. package/esm2022/lib/filter/filter.module.mjs +0 -131
  144. package/esm2022/lib/filter/index.mjs +0 -17
  145. package/esm2022/lib/filter/ogc-filter-button/index.mjs +0 -2
  146. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +0 -141
  147. package/esm2022/lib/filter/ogc-filter-form/index.mjs +0 -2
  148. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +0 -325
  149. package/esm2022/lib/filter/ogc-filter-selection/index.mjs +0 -2
  150. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +0 -787
  151. package/esm2022/lib/filter/ogc-filter-time/index.mjs +0 -3
  152. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +0 -201
  153. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +0 -665
  154. package/esm2022/lib/filter/ogc-filterable-form/index.mjs +0 -2
  155. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +0 -66
  156. package/esm2022/lib/filter/ogc-filterable-item/index.mjs +0 -2
  157. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +0 -244
  158. package/esm2022/lib/filter/ogc-filterable-list/index.mjs +0 -3
  159. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +0 -39
  160. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +0 -32
  161. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +0 -63
  162. package/esm2022/lib/filter/shared/index.mjs +0 -12
  163. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +0 -72
  164. package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +0 -30
  165. package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +0 -2
  166. package/esm2022/lib/filter/shared/ogc-filter.mjs +0 -756
  167. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +0 -47
  168. package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +0 -23
  169. package/esm2022/lib/filter/shared/spatial-filter.interface.mjs +0 -2
  170. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +0 -282
  171. package/esm2022/lib/filter/shared/time-filter.enum.mjs +0 -13
  172. package/esm2022/lib/filter/shared/time-filter.interface.mjs +0 -2
  173. package/esm2022/lib/filter/shared/time-filter.service.mjs +0 -107
  174. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/index.mjs +0 -2
  175. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +0 -875
  176. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/index.mjs +0 -2
  177. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +0 -191
  178. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/index.mjs +0 -2
  179. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +0 -120
  180. package/esm2022/lib/filter/time-filter-button/index.mjs +0 -2
  181. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +0 -70
  182. package/esm2022/lib/filter/time-filter-form/index.mjs +0 -2
  183. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +0 -537
  184. package/esm2022/lib/filter/time-filter-item/index.mjs +0 -2
  185. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +0 -90
  186. package/esm2022/lib/filter/time-filter-list/index.mjs +0 -3
  187. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +0 -39
  188. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +0 -24
  189. package/esm2022/lib/geo.module.mjs +0 -63
  190. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +0 -559
  191. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +0 -170
  192. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +0 -24
  193. package/esm2022/lib/geometry/geometry-form-field/index.mjs +0 -4
  194. package/esm2022/lib/geometry/geometry.module.mjs +0 -18
  195. package/esm2022/lib/geometry/index.mjs +0 -3
  196. package/esm2022/lib/geometry/shared/controls/draw.mjs +0 -340
  197. package/esm2022/lib/geometry/shared/controls/index.mjs +0 -4
  198. package/esm2022/lib/geometry/shared/controls/modify.mjs +0 -538
  199. package/esm2022/lib/geometry/shared/controls/slice.mjs +0 -190
  200. package/esm2022/lib/geometry/shared/geometry.errors.mjs +0 -24
  201. package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +0 -2
  202. package/esm2022/lib/geometry/shared/geometry.utils.mjs +0 -113
  203. package/esm2022/lib/geometry/shared/index.mjs +0 -5
  204. package/esm2022/lib/import-export/export-button/export-button.component.mjs +0 -49
  205. package/esm2022/lib/import-export/export-button/index.mjs +0 -2
  206. package/esm2022/lib/import-export/import-export/import-export.component.mjs +0 -876
  207. package/esm2022/lib/import-export/import-export/index.mjs +0 -2
  208. package/esm2022/lib/import-export/import-export.module.mjs +0 -31
  209. package/esm2022/lib/import-export/index.mjs +0 -5
  210. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +0 -114
  211. package/esm2022/lib/import-export/shared/export.errors.mjs +0 -15
  212. package/esm2022/lib/import-export/shared/export.interface.mjs +0 -2
  213. package/esm2022/lib/import-export/shared/export.service.mjs +0 -378
  214. package/esm2022/lib/import-export/shared/export.type.mjs +0 -13
  215. package/esm2022/lib/import-export/shared/export.utils.mjs +0 -51
  216. package/esm2022/lib/import-export/shared/import.errors.mjs +0 -39
  217. package/esm2022/lib/import-export/shared/import.interface.mjs +0 -2
  218. package/esm2022/lib/import-export/shared/import.service.mjs +0 -221
  219. package/esm2022/lib/import-export/shared/import.utils.mjs +0 -203
  220. package/esm2022/lib/import-export/shared/index.mjs +0 -11
  221. package/esm2022/lib/layer/index.mjs +0 -16
  222. package/esm2022/lib/layer/layer-group/index.mjs +0 -2
  223. package/esm2022/lib/layer/layer-group/layer-group.component.mjs +0 -103
  224. package/esm2022/lib/layer/layer-item/index.mjs +0 -2
  225. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +0 -196
  226. package/esm2022/lib/layer/layer-legend/index.mjs +0 -2
  227. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +0 -287
  228. package/esm2022/lib/layer/layer-legend-item/index.mjs +0 -2
  229. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +0 -85
  230. package/esm2022/lib/layer/layer-legend-list/index.mjs +0 -3
  231. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +0 -54
  232. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +0 -104
  233. package/esm2022/lib/layer/layer-list/index.mjs +0 -2
  234. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +0 -232
  235. package/esm2022/lib/layer/layer-list-tool/index.mjs +0 -4
  236. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +0 -92
  237. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +0 -7
  238. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +0 -61
  239. package/esm2022/lib/layer/layer-search/index.mjs +0 -2
  240. package/esm2022/lib/layer/layer-search/layer-search.component.mjs +0 -65
  241. package/esm2022/lib/layer/layer-unavailable/index.mjs +0 -3
  242. package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +0 -25
  243. package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +0 -35
  244. package/esm2022/lib/layer/layer-viewer/index.mjs +0 -3
  245. package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +0 -226
  246. package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +0 -2
  247. package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +0 -2
  248. package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +0 -207
  249. package/esm2022/lib/layer/layer-visibility-button/index.mjs +0 -2
  250. package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +0 -83
  251. package/esm2022/lib/layer/layer.module.mjs +0 -107
  252. package/esm2022/lib/layer/shared/clusterParam.mjs +0 -2
  253. package/esm2022/lib/layer/shared/index.mjs +0 -6
  254. package/esm2022/lib/layer/shared/layer-controller.mjs +0 -316
  255. package/esm2022/lib/layer/shared/layer-selection.mjs +0 -38
  256. package/esm2022/lib/layer/shared/layer.enums.mjs +0 -2
  257. package/esm2022/lib/layer/shared/layer.service.mjs +0 -315
  258. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +0 -2
  259. package/esm2022/lib/layer/shared/layers/any-layer.mjs +0 -2
  260. package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +0 -2
  261. package/esm2022/lib/layer/shared/layers/image-layer.mjs +0 -75
  262. package/esm2022/lib/layer/shared/layers/index.mjs +0 -18
  263. package/esm2022/lib/layer/shared/layers/layer-base.mjs +0 -199
  264. package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +0 -2
  265. package/esm2022/lib/layer/shared/layers/layer-group.mjs +0 -120
  266. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +0 -7
  267. package/esm2022/lib/layer/shared/layers/layer.mjs +0 -178
  268. package/esm2022/lib/layer/shared/layers/legend.interface.mjs +0 -2
  269. package/esm2022/lib/layer/shared/layers/linked/index.mjs +0 -4
  270. package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +0 -12
  271. package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +0 -242
  272. package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +0 -70
  273. package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +0 -2
  274. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +0 -55
  275. package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +0 -2
  276. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +0 -576
  277. package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +0 -2
  278. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +0 -112
  279. package/esm2022/lib/layer/track-feature-button/index.mjs +0 -2
  280. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +0 -54
  281. package/esm2022/lib/layer/utils/image-watcher.mjs +0 -62
  282. package/esm2022/lib/layer/utils/index.mjs +0 -6
  283. package/esm2022/lib/layer/utils/layer.utils.mjs +0 -57
  284. package/esm2022/lib/layer/utils/outputLegend.mjs +0 -32
  285. package/esm2022/lib/layer/utils/tile-watcher.mjs +0 -52
  286. package/esm2022/lib/layer/utils/vector-watcher.mjs +0 -50
  287. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +0 -20
  288. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +0 -87
  289. package/esm2022/lib/map/baselayers-switcher/index.mjs +0 -3
  290. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +0 -122
  291. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +0 -78
  292. package/esm2022/lib/map/geolocate-button/index.mjs +0 -2
  293. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +0 -73
  294. package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +0 -2
  295. package/esm2022/lib/map/home-extent-button/index.mjs +0 -3
  296. package/esm2022/lib/map/index.mjs +0 -14
  297. package/esm2022/lib/map/info-section/index.mjs +0 -2
  298. package/esm2022/lib/map/info-section/info-section.component.mjs +0 -15
  299. package/esm2022/lib/map/map-browser/index.mjs +0 -2
  300. package/esm2022/lib/map/map-browser/map-browser.component.mjs +0 -67
  301. package/esm2022/lib/map/map-center/index.mjs +0 -2
  302. package/esm2022/lib/map/map-center/map-center.component.mjs +0 -56
  303. package/esm2022/lib/map/map.module.mjs +0 -89
  304. package/esm2022/lib/map/menu-button/index.mjs +0 -2
  305. package/esm2022/lib/map/menu-button/menu-button.component.mjs +0 -57
  306. package/esm2022/lib/map/offline-button/index.mjs +0 -2
  307. package/esm2022/lib/map/offline-button/offline-button.component.mjs +0 -53
  308. package/esm2022/lib/map/rotation-button/index.mjs +0 -2
  309. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +0 -58
  310. package/esm2022/lib/map/shared/controllers/controller.mjs +0 -44
  311. package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +0 -8
  312. package/esm2022/lib/map/shared/controllers/geolocation.mjs +0 -431
  313. package/esm2022/lib/map/shared/controllers/index.mjs +0 -5
  314. package/esm2022/lib/map/shared/controllers/view.mjs +0 -361
  315. package/esm2022/lib/map/shared/hover-feature.directive.mjs +0 -481
  316. package/esm2022/lib/map/shared/index.mjs +0 -15
  317. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +0 -238
  318. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +0 -122
  319. package/esm2022/lib/map/shared/map.abstract.mjs +0 -24
  320. package/esm2022/lib/map/shared/map.enums.mjs +0 -6
  321. package/esm2022/lib/map/shared/map.interface.mjs +0 -2
  322. package/esm2022/lib/map/shared/map.mjs +0 -201
  323. package/esm2022/lib/map/shared/map.service.mjs +0 -29
  324. package/esm2022/lib/map/shared/map.utils.mjs +0 -455
  325. package/esm2022/lib/map/shared/mapOffline.directive.mjs +0 -114
  326. package/esm2022/lib/map/shared/projection.interfaces.mjs +0 -2
  327. package/esm2022/lib/map/shared/projection.service.mjs +0 -67
  328. package/esm2022/lib/map/shared/projection.utils.mjs +0 -122
  329. package/esm2022/lib/map/swipe-control/index.mjs +0 -2
  330. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +0 -211
  331. package/esm2022/lib/map/utils/index.mjs +0 -2
  332. package/esm2022/lib/map/utils/layer-watcher.mjs +0 -112
  333. package/esm2022/lib/map/wake-lock-button/index.mjs +0 -2
  334. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +0 -103
  335. package/esm2022/lib/map/zoom-button/index.mjs +0 -2
  336. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +0 -35
  337. package/esm2022/lib/measure/index.mjs +0 -3
  338. package/esm2022/lib/measure/measure.module.mjs +0 -20
  339. package/esm2022/lib/measure/measurer/index.mjs +0 -6
  340. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +0 -40
  341. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +0 -38
  342. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +0 -143
  343. package/esm2022/lib/measure/measurer/measurer.component.mjs +0 -948
  344. package/esm2022/lib/measure/measurer/measurer.module.mjs +0 -20
  345. package/esm2022/lib/measure/shared/index.mjs +0 -4
  346. package/esm2022/lib/measure/shared/measure.enum.mjs +0 -37
  347. package/esm2022/lib/measure/shared/measure.interfaces.mjs +0 -2
  348. package/esm2022/lib/measure/shared/measure.utils.mjs +0 -497
  349. package/esm2022/lib/metadata/index.mjs +0 -4
  350. package/esm2022/lib/metadata/metadata-button/index.mjs +0 -2
  351. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +0 -96
  352. package/esm2022/lib/metadata/metadata.module.mjs +0 -29
  353. package/esm2022/lib/metadata/shared/index.mjs +0 -3
  354. package/esm2022/lib/metadata/shared/metadata.interface.mjs +0 -2
  355. package/esm2022/lib/metadata/shared/metadata.service.mjs +0 -18
  356. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +0 -130
  357. package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +0 -6
  358. package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +0 -2
  359. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +0 -172
  360. package/esm2022/lib/offline/geoDB/index.mjs +0 -5
  361. package/esm2022/lib/offline/index.mjs +0 -6
  362. package/esm2022/lib/offline/layerDB/index.mjs +0 -3
  363. package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +0 -2
  364. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +0 -83
  365. package/esm2022/lib/offline/offline.interface.mjs +0 -2
  366. package/esm2022/lib/offline/offline.provider.mjs +0 -50
  367. package/esm2022/lib/offline/shared/geo-network.service.mjs +0 -79
  368. package/esm2022/lib/offline/shared/index.mjs +0 -2
  369. package/esm2022/lib/overlay/index.mjs +0 -2
  370. package/esm2022/lib/overlay/shared/index.mjs +0 -4
  371. package/esm2022/lib/overlay/shared/overlay.enum.mjs +0 -8
  372. package/esm2022/lib/overlay/shared/overlay.mjs +0 -139
  373. package/esm2022/lib/overlay/shared/overlay.utils.mjs +0 -17
  374. package/esm2022/lib/print/index.mjs +0 -4
  375. package/esm2022/lib/print/print/print.component.mjs +0 -116
  376. package/esm2022/lib/print/print-form/index.mjs +0 -2
  377. package/esm2022/lib/print/print-form/print-form.component.mjs +0 -320
  378. package/esm2022/lib/print/print.module.mjs +0 -20
  379. package/esm2022/lib/print/shared/geopdf.mjs +0 -68
  380. package/esm2022/lib/print/shared/index.mjs +0 -5
  381. package/esm2022/lib/print/shared/print.interface.mjs +0 -2
  382. package/esm2022/lib/print/shared/print.service.mjs +0 -1136
  383. package/esm2022/lib/print/shared/print.type.mjs +0 -30
  384. package/esm2022/lib/query/index.mjs +0 -2
  385. package/esm2022/lib/query/query.module.mjs +0 -27
  386. package/esm2022/lib/query/shared/index.mjs +0 -8
  387. package/esm2022/lib/query/shared/query-search-source.mjs +0 -35
  388. package/esm2022/lib/query/shared/query-search-source.providers.mjs +0 -22
  389. package/esm2022/lib/query/shared/query.directive.mjs +0 -290
  390. package/esm2022/lib/query/shared/query.enums.mjs +0 -32
  391. package/esm2022/lib/query/shared/query.interfaces.mjs +0 -2
  392. package/esm2022/lib/query/shared/query.service.mjs +0 -753
  393. package/esm2022/lib/query/shared/query.utils.mjs +0 -45
  394. package/esm2022/lib/search/index.mjs +0 -10
  395. package/esm2022/lib/search/search-bar/search-bar.component.mjs +0 -483
  396. package/esm2022/lib/search/search-bar/search-bar.module.mjs +0 -19
  397. package/esm2022/lib/search/search-results/index.mjs +0 -5
  398. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +0 -101
  399. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +0 -433
  400. package/esm2022/lib/search/search-results/search-results-item.component.mjs +0 -119
  401. package/esm2022/lib/search/search-results/search-results.component.mjs +0 -297
  402. package/esm2022/lib/search/search-results/search-results.directive.mjs +0 -7
  403. package/esm2022/lib/search/search-results/search-results.module.mjs +0 -20
  404. package/esm2022/lib/search/search-selector/search-selector.component.mjs +0 -118
  405. package/esm2022/lib/search/search-selector/search-selector.module.mjs +0 -19
  406. package/esm2022/lib/search/search-settings/search-settings.component.mjs +0 -264
  407. package/esm2022/lib/search/search-settings/search-settings.module.mjs +0 -19
  408. package/esm2022/lib/search/search.module.mjs +0 -77
  409. package/esm2022/lib/search/shared/index.mjs +0 -10
  410. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +0 -328
  411. package/esm2022/lib/search/shared/search-source-service.providers.mjs +0 -20
  412. package/esm2022/lib/search/shared/search-source.service.mjs +0 -56
  413. package/esm2022/lib/search/shared/search.enums.mjs +0 -4
  414. package/esm2022/lib/search/shared/search.interfaces.mjs +0 -2
  415. package/esm2022/lib/search/shared/search.provider.mjs +0 -20
  416. package/esm2022/lib/search/shared/search.service.mjs +0 -149
  417. package/esm2022/lib/search/shared/search.utils.mjs +0 -92
  418. package/esm2022/lib/search/shared/sources/cadastre.mjs +0 -142
  419. package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +0 -32
  420. package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +0 -2
  421. package/esm2022/lib/search/shared/sources/coordinates.mjs +0 -168
  422. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +0 -52
  423. package/esm2022/lib/search/shared/sources/icherche-icons.mjs +0 -32
  424. package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +0 -2
  425. package/esm2022/lib/search/shared/sources/icherche.mjs +0 -816
  426. package/esm2022/lib/search/shared/sources/icherche.providers.mjs +0 -87
  427. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +0 -2
  428. package/esm2022/lib/search/shared/sources/ilayer.mjs +0 -339
  429. package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +0 -58
  430. package/esm2022/lib/search/shared/sources/index.mjs +0 -23
  431. package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +0 -2
  432. package/esm2022/lib/search/shared/sources/nominatim.mjs +0 -263
  433. package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +0 -31
  434. package/esm2022/lib/search/shared/sources/source.interfaces.mjs +0 -13
  435. package/esm2022/lib/search/shared/sources/source.mjs +0 -221
  436. package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +0 -2
  437. package/esm2022/lib/search/shared/sources/storedqueries.mjs +0 -454
  438. package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +0 -56
  439. package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +0 -2
  440. package/esm2022/lib/search/shared/sources/workspace.mjs +0 -192
  441. package/esm2022/lib/search/shared/sources/workspace.providers.mjs +0 -31
  442. package/esm2022/lib/style/index.mjs +0 -5
  443. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +0 -360
  444. package/esm2022/lib/style/shared/datasource/index.mjs +0 -2
  445. package/esm2022/lib/style/shared/feature/feature-style.mjs +0 -162
  446. package/esm2022/lib/style/shared/feature/index.mjs +0 -2
  447. package/esm2022/lib/style/shared/font.enum.mjs +0 -17
  448. package/esm2022/lib/style/shared/index.mjs +0 -5
  449. package/esm2022/lib/style/shared/overlay/index.mjs +0 -3
  450. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +0 -39
  451. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +0 -88
  452. package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +0 -78
  453. package/esm2022/lib/style/shared/vector/conversion.utils.mjs +0 -27
  454. package/esm2022/lib/style/shared/vector/index.mjs +0 -4
  455. package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +0 -2
  456. package/esm2022/lib/style/style-list/index.mjs +0 -5
  457. package/esm2022/lib/style/style-list/style-list.interface.mjs +0 -2
  458. package/esm2022/lib/style/style-list/style-list.module.mjs +0 -23
  459. package/esm2022/lib/style/style-list/style-list.provider.mjs +0 -21
  460. package/esm2022/lib/style/style-list/style-list.service.mjs +0 -52
  461. package/esm2022/lib/style/style-modal/drawing/index.mjs +0 -2
  462. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +0 -193
  463. package/esm2022/lib/style/style-modal/index.mjs +0 -5
  464. package/esm2022/lib/style/style-modal/layer/index.mjs +0 -2
  465. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +0 -142
  466. package/esm2022/lib/style/style-modal/layer-button/index.mjs +0 -2
  467. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +0 -44
  468. package/esm2022/lib/style/style-modal/shared/index.mjs +0 -2
  469. package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +0 -2
  470. package/esm2022/lib/style/style-service/draw-style.service.mjs +0 -255
  471. package/esm2022/lib/style/style-service/index.mjs +0 -3
  472. package/esm2022/lib/style/style-service/style.service.mjs +0 -393
  473. package/esm2022/lib/style/style.module.mjs +0 -46
  474. package/esm2022/lib/toast/index.mjs +0 -2
  475. package/esm2022/lib/toast/toast.component.mjs +0 -99
  476. package/esm2022/lib/toast/toast.module.mjs +0 -24
  477. package/esm2022/lib/utils/googleLinks.mjs +0 -13
  478. package/esm2022/lib/utils/id-generator.mjs +0 -112
  479. package/esm2022/lib/utils/index.mjs +0 -5
  480. package/esm2022/lib/utils/osmLinks.mjs +0 -9
  481. package/esm2022/lib/utils/propertyTypeDetector/index.mjs +0 -3
  482. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +0 -2
  483. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +0 -64
  484. package/esm2022/lib/wkt/index.mjs +0 -2
  485. package/esm2022/lib/wkt/shared/index.mjs +0 -2
  486. package/esm2022/lib/wkt/shared/wkt.service.mjs +0 -235
  487. package/esm2022/lib/wkt/wkt.module.mjs +0 -25
  488. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +0 -36
  489. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +0 -19
  490. package/esm2022/lib/workspace/confirmation-popup/index.mjs +0 -3
  491. package/esm2022/lib/workspace/index.mjs +0 -8
  492. package/esm2022/lib/workspace/shared/edition-workspace.mjs +0 -301
  493. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +0 -720
  494. package/esm2022/lib/workspace/shared/feature-workspace.mjs +0 -41
  495. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +0 -113
  496. package/esm2022/lib/workspace/shared/index.mjs +0 -8
  497. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +0 -41
  498. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +0 -121
  499. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +0 -248
  500. package/esm2022/lib/workspace/shared/workspace.utils.mjs +0 -188
  501. package/esm2022/lib/workspace/widgets/index.mjs +0 -4
  502. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +0 -48
  503. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +0 -19
  504. package/esm2022/lib/workspace/widgets/widgets.mjs +0 -15
  505. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +0 -172
  506. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +0 -19
  507. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +0 -137
  508. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +0 -19
  509. package/esm2022/lib/workspace/workspace.module.mjs +0 -32
  510. package/esm2022/public_api.mjs +0 -56
@@ -1,437 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { HttpClient } from '@angular/common/http';
3
- import { ChangeDetectorRef, Component, Input } from '@angular/core';
4
- import { MatSlideToggleModule } from '@angular/material/slide-toggle';
5
- import { EntityStoreWatcher } from '@igo2/common/entity';
6
- import { LanguageService } from '@igo2/core/language';
7
- import { IgoLanguageModule } from '@igo2/core/language';
8
- import { MessageService } from '@igo2/core/message';
9
- import { ChangeUtils, ObjectUtils } from '@igo2/utils';
10
- import * as olCondition from 'ol/events/condition';
11
- import * as olInteraction from 'ol/interaction';
12
- import * as olProj from 'ol/proj';
13
- import { BehaviorSubject, Subject } from 'rxjs';
14
- import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
15
- import { FeatureStoreLoadingStrategy } from '../feature/shared/strategies/loading';
16
- import { roundCoordTo, roundCoordToString, stringToLonLat } from '../map';
17
- import { QueryService } from '../query/shared/query.service';
18
- import { SearchService } from '../search/shared/search.service';
19
- import { DirectionsButtonsComponent } from './directions-buttons/directions-buttons.component';
20
- import { DirectionsInputsComponent } from './directions-inputs/directions-inputs.component';
21
- import { DirectionsResultsComponent } from './directions-results/directions-results.component';
22
- import { DirectionsSourceService } from './shared/directions-source.service';
23
- import { DirectionsType, ProposalType } from './shared/directions.enum';
24
- import { DirectionsService } from './shared/directions.service';
25
- import { addRouteToRoutesFeatureStore, addStopToStopsFeatureStore, addStopToStore, initRoutesFeatureStore, initStepsFeatureStore, initStopsFeatureStore, updateStoreSorting } from './shared/directions.utils';
26
- import { RoutesFeatureStore, StepsFeatureStore, StopsFeatureStore, StopsStore } from './shared/store';
27
- import * as i0 from "@angular/core";
28
- import * as i1 from "@angular/common/http";
29
- import * as i2 from "@igo2/core/language";
30
- import * as i3 from "./shared/directions.service";
31
- import * as i4 from "./shared/directions-source.service";
32
- import * as i5 from "../search/shared/search.service";
33
- import * as i6 from "../query/shared/query.service";
34
- import * as i7 from "@igo2/core/message";
35
- import * as i8 from "@angular/common";
36
- import * as i9 from "@angular/material/slide-toggle";
37
- import * as i10 from "@ngx-translate/core";
38
- export class DirectionsComponent {
39
- cdRef;
40
- http;
41
- languageService;
42
- directionsService;
43
- directionsSourceService;
44
- searchService;
45
- queryService;
46
- messageService;
47
- watcher;
48
- projection = 'EPSG:4326';
49
- hasOsrmPrivateAccess = false;
50
- twoSourcesAvailable = false;
51
- zoomOnActiveRoute$$;
52
- storeEmpty$$;
53
- storeChange$$;
54
- routesQueries$$ = [];
55
- selectStopInteraction;
56
- translateStop;
57
- selectedRoute;
58
- focusOnStop = false;
59
- isTranslating = false;
60
- previousStops = [];
61
- searchs$$ = [];
62
- authenticated$$;
63
- contextUri;
64
- stopsStore;
65
- stopsFeatureStore;
66
- routesFeatureStore;
67
- stepsFeatureStore;
68
- debounce = 200;
69
- length = 2;
70
- coordRoundedDecimals = 6;
71
- zoomOnActiveRoute$ = new Subject();
72
- authenticated$;
73
- /**
74
- * Wheter one of the direction control is active
75
- * @internal
76
- */
77
- get directionControlIsActive() {
78
- return !this.queryService.queryEnabled;
79
- }
80
- get interactions() {
81
- return [this.selectStopInteraction, this.translateStop, this.selectedRoute];
82
- }
83
- get enabledProfileHasAuthorization() {
84
- return this.directionsSourceService.sources[0].getEnabledProfile()
85
- .authorization;
86
- }
87
- constructor(cdRef, http, languageService, directionsService, directionsSourceService, searchService, queryService, messageService) {
88
- this.cdRef = cdRef;
89
- this.http = http;
90
- this.languageService = languageService;
91
- this.directionsService = directionsService;
92
- this.directionsSourceService = directionsSourceService;
93
- this.searchService = searchService;
94
- this.queryService = queryService;
95
- this.messageService = messageService;
96
- }
97
- ngOnInit() {
98
- this.authenticated$$ = this.authenticated$.subscribe((authenticated) => {
99
- if (authenticated) {
100
- const profileWithAuth = this.directionsSourceService.sources[0].getProfileWithAuthorization();
101
- if (profileWithAuth) {
102
- this.http
103
- .get(profileWithAuth.authorization.url)
104
- .subscribe((user) => {
105
- this.hasOsrmPrivateAccess =
106
- user[profileWithAuth.authorization.property];
107
- });
108
- }
109
- }
110
- });
111
- this.twoSourcesAvailable =
112
- this.directionsSourceService.sources[0].profiles.length === 2
113
- ? true
114
- : false;
115
- this.queryService.queryEnabled = false;
116
- this.initEntityStores();
117
- setTimeout(() => {
118
- initStopsFeatureStore(this.stopsFeatureStore, this.languageService);
119
- initRoutesFeatureStore(this.routesFeatureStore, this.languageService);
120
- initStepsFeatureStore(this.stepsFeatureStore);
121
- this.initOlInteraction();
122
- }, 1);
123
- }
124
- ngOnDestroy() {
125
- this.queryService.queryEnabled = true;
126
- this.storeEmpty$$.unsubscribe();
127
- this.storeChange$$.unsubscribe();
128
- this.routesQueries$$.map((u) => u.unsubscribe());
129
- this.zoomOnActiveRoute$$.unsubscribe();
130
- this.authenticated$$.unsubscribe();
131
- this.freezeStores();
132
- if (this.stopsFeatureStore.empty) {
133
- this.stopsFeatureStore.map.layerController.remove(this.stopsFeatureStore.layer);
134
- }
135
- if (this.routesFeatureStore.empty) {
136
- this.routesFeatureStore.map.layerController.remove(this.routesFeatureStore.layer);
137
- }
138
- }
139
- freezeStores() {
140
- this.interactions.map((interaction) => this.routesFeatureStore.layer.map.ol.removeInteraction(interaction));
141
- this.stopsFeatureStore.deactivateStrategyOfType(FeatureStoreLoadingStrategy);
142
- this.routesFeatureStore.deactivateStrategyOfType(FeatureStoreLoadingStrategy);
143
- this.stepsFeatureStore.deactivateStrategyOfType(FeatureStoreLoadingStrategy);
144
- }
145
- initEntityStores() {
146
- this.watcher = new EntityStoreWatcher(this.stopsStore, this.cdRef);
147
- this.monitorEmptyEntityStore();
148
- this.monitorEntityStoreChange();
149
- this.monitorActiveRouteZoom();
150
- }
151
- monitorActiveRouteZoom() {
152
- this.zoomOnActiveRoute$$ = this.zoomOnActiveRoute$.subscribe(() => {
153
- if (this.routesFeatureStore.count >= 1) {
154
- const activeRoute = this.routesFeatureStore
155
- .all()
156
- .find((route) => route.properties.active);
157
- if (activeRoute) {
158
- const stopsCoordinates = this.stopsStore
159
- .all()
160
- .map((stop) => olProj.transform(stop.coordinates, 'EPSG:4326', 'EPSG:3857'));
161
- const routeCoordinates = activeRoute.geometry.coordinates;
162
- const coordinates = [
163
- ...stopsCoordinates,
164
- ...routeCoordinates
165
- ];
166
- const routeExtent = coordinates.reduce(([x_min, y_min, x_max, y_max], [x, y]) => [
167
- Math.min(x_min, x),
168
- Math.min(y_min, y),
169
- Math.max(x_max, x),
170
- Math.max(y_max, y)
171
- ], [Infinity, Infinity, -Infinity, -Infinity]);
172
- this.routesFeatureStore.layer.map.viewController.zoomToExtent(routeExtent);
173
- }
174
- }
175
- });
176
- }
177
- initOlInteraction() {
178
- this.selectStopInteraction = new olInteraction.Select({
179
- layers: [this.stopsFeatureStore.layer.ol],
180
- hitTolerance: 7,
181
- condition: (event) => {
182
- return event.type === 'pointermove' && !event.dragging;
183
- }
184
- });
185
- this.translateStop = new olInteraction.Translate({
186
- features: this.selectStopInteraction.getFeatures()
187
- });
188
- this.translateStop.on('translating', (evt) => {
189
- this.isTranslating = true;
190
- this.executeStopTranslation(evt.features);
191
- });
192
- this.translateStop.on('translateend', (evt) => {
193
- this.isTranslating = false;
194
- this.executeStopTranslation(evt.features);
195
- });
196
- this.selectedRoute = new olInteraction.Select({
197
- layers: [this.routesFeatureStore.layer.ol],
198
- condition: olCondition.click,
199
- hitTolerance: 7,
200
- filter: (feature) => {
201
- return (feature.get('type') === DirectionsType.Route &&
202
- feature.get('active') &&
203
- !this.isTranslating);
204
- }
205
- });
206
- this.selectedRoute.on('select', (evt) => {
207
- if (this.focusOnStop === false) {
208
- const selectCoordinates = olProj.transform(evt.mapBrowserEvent.coordinate, this.routesFeatureStore.layer.map.projection, this.projection);
209
- const addedStop = addStopToStore(this.stopsStore);
210
- addedStop.text = roundCoordToString(selectCoordinates, this.coordRoundedDecimals).join(', ');
211
- addedStop.coordinates = [selectCoordinates[0], selectCoordinates[1]];
212
- }
213
- });
214
- this.interactions.map((interaction) => this.routesFeatureStore.layer.map.ol.addInteraction(interaction));
215
- }
216
- onStopInputHasFocusChange(stopInputHasFocus) {
217
- stopInputHasFocus
218
- ? this.routesFeatureStore.layer.map.ol.removeInteraction(this.selectedRoute)
219
- : this.routesFeatureStore.layer.map.ol.addInteraction(this.selectedRoute);
220
- }
221
- executeStopTranslation(features) {
222
- if (features.getLength() === 0) {
223
- return;
224
- }
225
- const firstFeature = features.getArray()[0];
226
- const translatedStopId = firstFeature.getId();
227
- const translationCoordinates = olProj.transform(firstFeature.getGeometry().getCoordinates(), this.stopsFeatureStore.layer.map.projection, this.projection);
228
- const translatedStop = this.stopsStore.get(translatedStopId);
229
- const roundedCoord = roundCoordTo(translationCoordinates, this.coordRoundedDecimals);
230
- translatedStop.coordinates = roundedCoord;
231
- translatedStop.text = roundCoordToString(translationCoordinates, this.coordRoundedDecimals).join(', ');
232
- this.stopsStore.update(translatedStop);
233
- }
234
- monitorEmptyEntityStore() {
235
- // Watch if the store is empty to reset it
236
- this.storeEmpty$$ = this.stopsStore.count$
237
- .pipe(distinctUntilChanged())
238
- .subscribe((count) => {
239
- if (count < 2) {
240
- addStopToStore(this.stopsStore);
241
- if (this.stopsStore.count === 2) {
242
- this.stopsStore.storeInitialized$.next(true);
243
- return;
244
- }
245
- this.stopsStore.storeInitialized$.next(false);
246
- }
247
- this.routesQueries$$.map((u) => u.unsubscribe());
248
- });
249
- }
250
- monitorEntityStoreChange() {
251
- this.storeChange$$ = this.stopsStore.entities$
252
- .pipe(debounceTime(this.debounce))
253
- .subscribe((stops) => {
254
- this.handleStopDiff(stops);
255
- updateStoreSorting(this.stopsStore);
256
- this.handleStopsFeature();
257
- this.getRoutes(this.isTranslating);
258
- });
259
- }
260
- cancelSearch() {
261
- this.searchs$$.map((s) => s.unsubscribe());
262
- }
263
- handleStopDiff(stops) {
264
- const simplifiedStops = stops.map((stop) => {
265
- return ObjectUtils.removeUndefined({
266
- ...{ id: stop.id, text: stop.text, coordinates: stop.coordinates }
267
- });
268
- });
269
- const diff = ChangeUtils.findChanges(this.previousStops, simplifiedStops, [
270
- 'coordinates'
271
- ]);
272
- const stopIdToProcess = diff.added.concat(diff.modified);
273
- if (stopIdToProcess) {
274
- stopIdToProcess.map((change) => {
275
- const changedStop = change.newValue;
276
- if (changedStop) {
277
- const stop = this.stopsStore.get(changedStop.id);
278
- const term = stop.text;
279
- if (!term || term.length === 0) {
280
- return;
281
- }
282
- const response = stringToLonLat(term, this.stopsFeatureStore.layer.map.projection);
283
- let isCoord = false;
284
- if (response.lonLat) {
285
- isCoord = true;
286
- }
287
- const researches = this.searchService.search(term, {
288
- searchType: 'Feature'
289
- });
290
- this.cancelSearch();
291
- const requests$ = researches.map((res) => res.request.pipe(map((results) => results.filter((r) => isCoord
292
- ? r.data.geometry.type === 'Point' && r.data.geometry
293
- : r.data.geometry))));
294
- this.searchs$$ = requests$.map((request) => {
295
- return request
296
- .pipe(map((results) => results.filter((r) => isCoord
297
- ? r.data.geometry.type === 'Point' && r.data.geometry
298
- : r.data.geometry)))
299
- .subscribe((res) => {
300
- if (res.length > 0) {
301
- const source = res[0].source;
302
- const meta = res[0].meta;
303
- const results = res.map((r) => r.data);
304
- if (!stop.searchProposals) {
305
- stop.searchProposals = [];
306
- }
307
- stop.searchProposals = stop.searchProposals.filter((sp) => sp.type ===
308
- (isCoord ? ProposalType.Coord : ProposalType.Text));
309
- const storedSource = stop.searchProposals.find((sp) => sp.source === source);
310
- if (storedSource) {
311
- storedSource.results = results;
312
- }
313
- else {
314
- stop.searchProposals.push({
315
- type: isCoord ? ProposalType.Coord : ProposalType.Text,
316
- source,
317
- meta,
318
- results
319
- });
320
- }
321
- }
322
- this.cdRef.detectChanges();
323
- });
324
- });
325
- }
326
- });
327
- }
328
- this.previousStops = simplifiedStops;
329
- }
330
- handleStopsFeature() {
331
- const stops = this.stopsStore.all();
332
- const stopsWithCoordinates = stops.filter((stop) => stop.coordinates);
333
- stopsWithCoordinates.map((stop) => this.addStopOverlay(stop));
334
- this.stopsFeatureStore
335
- .all()
336
- .map((stopFeature) => {
337
- if (!this.stopsStore.get(stopFeature.properties.id)) {
338
- this.stopsFeatureStore.delete(stopFeature);
339
- }
340
- });
341
- const stopsWithoutCoordinates = stops.filter((stop) => !stop.coordinates);
342
- stopsWithoutCoordinates.map((stop) => {
343
- const stopFeature = this.stopsFeatureStore.get(stop.id);
344
- if (stopFeature) {
345
- this.stopsFeatureStore.delete(stopFeature);
346
- }
347
- });
348
- }
349
- getRoutes(isOverview = false) {
350
- const stopsWithCoordinates = this.stopsStore.view
351
- .all()
352
- .filter((stop) => stop.coordinates);
353
- if (stopsWithCoordinates.length < 2) {
354
- this.routesFeatureStore.deleteMany(this.routesFeatureStore.all());
355
- return;
356
- }
357
- const roundedCoordinates = stopsWithCoordinates.map((stop) => {
358
- const roundedCoord = roundCoordTo(stop.coordinates, this.coordRoundedDecimals);
359
- return roundedCoord;
360
- });
361
- const overviewDirectionsOptions = {
362
- overview: true,
363
- steps: false,
364
- alternatives: false,
365
- continue_straight: false
366
- };
367
- this.routesQueries$$.map((u) => u.unsubscribe());
368
- const routeResponse = this.directionsService.route(roundedCoordinates, isOverview ? overviewDirectionsOptions : undefined);
369
- if (routeResponse) {
370
- this.routesQueries$$.push(routeResponse.subscribe((directions) => {
371
- this.routesFeatureStore.deleteMany(this.routesFeatureStore.all());
372
- directions.map((direction) => addRouteToRoutesFeatureStore(this.routesFeatureStore, direction, this.projection, direction === directions[0] ? true : false));
373
- }));
374
- }
375
- }
376
- addStopOverlay(stop) {
377
- addStopToStopsFeatureStore(stop, this.stopsFeatureStore, this.projection, this.languageService);
378
- }
379
- onToggleDirectionsControl(isActive) {
380
- this.queryService.queryEnabled = !isActive;
381
- const ol = this.routesFeatureStore.layer.map.ol;
382
- this.interactions.map((interaction) => isActive
383
- ? ol.addInteraction(interaction)
384
- : ol.removeInteraction(interaction));
385
- }
386
- onTogglePrivateModeControl(isActive) {
387
- this.directionsSourceService.sources[0].profiles.forEach((profile) => (profile.enabled = false));
388
- if (isActive) {
389
- this.directionsSourceService.sources[0].profiles.find((profile) => profile.authorization).enabled = true;
390
- this.messageService.alert(this.languageService.translate.instant('igo.geo.directions.forestRoadsWarning.text'), this.languageService.translate.instant('igo.geo.directions.forestRoadsWarning.title'));
391
- }
392
- else {
393
- this.directionsSourceService.sources[0].profiles.find((profile) => !profile.authorization).enabled = true;
394
- }
395
- this.getRoutes();
396
- }
397
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DirectionsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.HttpClient }, { token: i2.LanguageService }, { token: i3.DirectionsService }, { token: i4.DirectionsSourceService }, { token: i5.SearchService }, { token: i6.QueryService }, { token: i7.MessageService }], target: i0.ɵɵFactoryTarget.Component });
398
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DirectionsComponent, isStandalone: true, selector: "igo-directions", inputs: { contextUri: "contextUri", stopsStore: "stopsStore", stopsFeatureStore: "stopsFeatureStore", routesFeatureStore: "routesFeatureStore", stepsFeatureStore: "stepsFeatureStore", debounce: "debounce", length: "length", coordRoundedDecimals: "coordRoundedDecimals", zoomOnActiveRoute$: "zoomOnActiveRoute$", authenticated$: "authenticated$" }, ngImport: i0, template: "<div class=\"directions-options\">\n <mat-slide-toggle\n [checked]=\"directionControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDirectionsControl($event.checked)\"\n >\n {{ 'igo.geo.directions.toggle.activateControl' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n *ngIf=\"hasOsrmPrivateAccess && twoSourcesAvailable\"\n [checked]=\"enabledProfileHasAuthorization\"\n [labelPosition]=\"'before'\"\n (change)=\"onTogglePrivateModeControl($event.checked)\"\n >\n {{ 'igo.geo.directions.toggle.type' | translate }}\n </mat-slide-toggle>\n</div>\n\n<igo-directions-inputs\n (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\"\n [coordRoundedDecimals]=\"coordRoundedDecimals\"\n [projection]=\"projection\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stopsStore]=\"stopsStore\"\n [debounce]=\"debounce\"\n [length]=\"length\"\n></igo-directions-inputs>\n\n<igo-directions-buttons\n *ngIf=\"routesFeatureStore.all().length > 0\"\n [stepsFeatureStore]=\"stepsFeatureStore\"\n [contextUri]=\"contextUri\"\n [zoomOnActiveRoute$]=\"zoomOnActiveRoute$\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [stopsStore]=\"stopsStore\"\n></igo-directions-buttons>\n\n<igo-directions-results\n [stepsFeatureStore]=\"stepsFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n></igo-directions-results>\n", styles: [".directions-options{display:flex;flex-flow:column;align-items:center;margin:0 12px}.directions-options mat-slide-toggle{width:100%;padding:10px}.directions-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}.directions-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;margin-right:auto;width:auto;padding-right:0}.directions-options mat-slide-toggle ::ng-deep .mdc-slide-toggle{margin-left:auto;margin-right:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i9.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: DirectionsButtonsComponent, selector: "igo-directions-buttons", inputs: ["contextUri", "zoomOnActiveRoute$", "stopsStore", "routesFeatureStore", "stepsFeatureStore"] }, { kind: "component", type: DirectionsInputsComponent, selector: "igo-directions-inputs", inputs: ["stopsStore", "stopsFeatureStore", "projection", "coordRoundedDecimals", "debounce", "length"], outputs: ["stopInputHasFocus"] }, { kind: "component", type: DirectionsResultsComponent, selector: "igo-directions-results", inputs: ["routesFeatureStore", "stepsFeatureStore"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }] });
399
- }
400
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DirectionsComponent, decorators: [{
401
- type: Component,
402
- args: [{ selector: 'igo-directions', standalone: true, imports: [
403
- CommonModule,
404
- MatSlideToggleModule,
405
- DirectionsButtonsComponent,
406
- DirectionsInputsComponent,
407
- DirectionsResultsComponent,
408
- IgoLanguageModule
409
- ], template: "<div class=\"directions-options\">\n <mat-slide-toggle\n [checked]=\"directionControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDirectionsControl($event.checked)\"\n >\n {{ 'igo.geo.directions.toggle.activateControl' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n *ngIf=\"hasOsrmPrivateAccess && twoSourcesAvailable\"\n [checked]=\"enabledProfileHasAuthorization\"\n [labelPosition]=\"'before'\"\n (change)=\"onTogglePrivateModeControl($event.checked)\"\n >\n {{ 'igo.geo.directions.toggle.type' | translate }}\n </mat-slide-toggle>\n</div>\n\n<igo-directions-inputs\n (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\"\n [coordRoundedDecimals]=\"coordRoundedDecimals\"\n [projection]=\"projection\"\n [stopsFeatureStore]=\"stopsFeatureStore\"\n [stopsStore]=\"stopsStore\"\n [debounce]=\"debounce\"\n [length]=\"length\"\n></igo-directions-inputs>\n\n<igo-directions-buttons\n *ngIf=\"routesFeatureStore.all().length > 0\"\n [stepsFeatureStore]=\"stepsFeatureStore\"\n [contextUri]=\"contextUri\"\n [zoomOnActiveRoute$]=\"zoomOnActiveRoute$\"\n [routesFeatureStore]=\"routesFeatureStore\"\n [stopsStore]=\"stopsStore\"\n></igo-directions-buttons>\n\n<igo-directions-results\n [stepsFeatureStore]=\"stepsFeatureStore\"\n [routesFeatureStore]=\"routesFeatureStore\"\n></igo-directions-results>\n", styles: [".directions-options{display:flex;flex-flow:column;align-items:center;margin:0 12px}.directions-options mat-slide-toggle{width:100%;padding:10px}.directions-options mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}.directions-options mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;margin-right:auto;width:auto;padding-right:0}.directions-options mat-slide-toggle ::ng-deep .mdc-slide-toggle{margin-left:auto;margin-right:0}\n"] }]
410
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.HttpClient }, { type: i2.LanguageService }, { type: i3.DirectionsService }, { type: i4.DirectionsSourceService }, { type: i5.SearchService }, { type: i6.QueryService }, { type: i7.MessageService }], propDecorators: { contextUri: [{
411
- type: Input
412
- }], stopsStore: [{
413
- type: Input,
414
- args: [{ required: true }]
415
- }], stopsFeatureStore: [{
416
- type: Input,
417
- args: [{ required: true }]
418
- }], routesFeatureStore: [{
419
- type: Input,
420
- args: [{ required: true }]
421
- }], stepsFeatureStore: [{
422
- type: Input,
423
- args: [{ required: true }]
424
- }], debounce: [{
425
- type: Input
426
- }], length: [{
427
- type: Input
428
- }], coordRoundedDecimals: [{
429
- type: Input
430
- }], zoomOnActiveRoute$: [{
431
- type: Input,
432
- args: [{ required: true }]
433
- }], authenticated$: [{
434
- type: Input,
435
- args: [{ required: true }]
436
- }] } });
437
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZGlyZWN0aW9ucy9kaXJlY3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJdkQsT0FBTyxLQUFLLFdBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEtBQUssYUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3pF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LHNhQzNFaEMsdTJDQXlDQSwyZUQwQkksWUFBWSxrSUFDWixvQkFBb0IsMFhBQ3BCLDBCQUEwQiwwS0FDMUIseUJBQXlCLDJNQUN6QiwwQkFBMEIsdUhBQzFCLGlCQUFpQjs7NEZBR1IsbUJBQW1CO2tCQWQvQixTQUFTOytCQUNFLGdCQUFnQixjQUdkLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsMEJBQTBCO3dCQUMxQix5QkFBeUI7d0JBQ3pCLDBCQUEwQjt3QkFDMUIsaUJBQWlCO3FCQUNsQjt1U0F5QlEsVUFBVTtzQkFBbEIsS0FBSztnQkFDcUIsVUFBVTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ0UsaUJBQWlCO3NCQUEzQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDRSxrQkFBa0I7c0JBQTVDLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQUNFLGlCQUFpQjtzQkFBM0MsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDcUIsa0JBQWtCO3NCQUE1QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDRSxjQUFjO3NCQUF4QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuXG5pbXBvcnQgeyBFbnRpdHlTdG9yZVdhdGNoZXIgfSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcbmltcG9ydCB7IENoYW5nZVV0aWxzLCBPYmplY3RVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IENvbGxlY3Rpb24gZnJvbSAnb2wvQ29sbGVjdGlvbic7XG5pbXBvcnQgeyBDb29yZGluYXRlIH0gZnJvbSAnb2wvY29vcmRpbmF0ZSc7XG5pbXBvcnQgKiBhcyBvbENvbmRpdGlvbiBmcm9tICdvbC9ldmVudHMvY29uZGl0aW9uJztcbmltcG9ydCAqIGFzIG9sSW50ZXJhY3Rpb24gZnJvbSAnb2wvaW50ZXJhY3Rpb24nO1xuaW1wb3J0ICogYXMgb2xQcm9qIGZyb20gJ29sL3Byb2onO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSB9IGZyb20gJy4uL2ZlYXR1cmUvc2hhcmVkL3N0cmF0ZWdpZXMvbG9hZGluZyc7XG5pbXBvcnQgeyByb3VuZENvb3JkVG8sIHJvdW5kQ29vcmRUb1N0cmluZywgc3RyaW5nVG9Mb25MYXQgfSBmcm9tICcuLi9tYXAnO1xuaW1wb3J0IHsgUXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vcXVlcnkvc2hhcmVkL3F1ZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoUmVzdWx0IH0gZnJvbSAnLi4vc2VhcmNoL3NoYXJlZC9zZWFyY2guaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vc2VhcmNoL3NoYXJlZC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb25zQnV0dG9uc0NvbXBvbmVudCB9IGZyb20gJy4vZGlyZWN0aW9ucy1idXR0b25zL2RpcmVjdGlvbnMtYnV0dG9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc0lucHV0c0NvbXBvbmVudCB9IGZyb20gJy4vZGlyZWN0aW9ucy1pbnB1dHMvZGlyZWN0aW9ucy1pbnB1dHMuY29tcG9uZW50JztcbmltcG9ydCB7IERpcmVjdGlvbnNSZXN1bHRzQ29tcG9uZW50IH0gZnJvbSAnLi9kaXJlY3Rpb25zLXJlc3VsdHMvZGlyZWN0aW9ucy1yZXN1bHRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCYXNlRGlyZWN0aW9uc1NvdXJjZU9wdGlvbnNQcm9maWxlIH0gZnJvbSAnLi9kaXJlY3Rpb25zLXNvdXJjZXMnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc1NvdXJjZVNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7IERpcmVjdGlvbnNUeXBlLCBQcm9wb3NhbFR5cGUgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLmVudW0nO1xuaW1wb3J0IHtcbiAgRGlyZWN0aW9uT3B0aW9ucyxcbiAgRmVhdHVyZVdpdGhEaXJlY3Rpb25zLFxuICBGZWF0dXJlV2l0aFN0b3BQcm9wZXJ0aWVzLFxuICBTdG9wXG59IGZyb20gJy4vc2hhcmVkL2RpcmVjdGlvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IERpcmVjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvZGlyZWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIGFkZFJvdXRlVG9Sb3V0ZXNGZWF0dXJlU3RvcmUsXG4gIGFkZFN0b3BUb1N0b3BzRmVhdHVyZVN0b3JlLFxuICBhZGRTdG9wVG9TdG9yZSxcbiAgaW5pdFJvdXRlc0ZlYXR1cmVTdG9yZSxcbiAgaW5pdFN0ZXBzRmVhdHVyZVN0b3JlLFxuICBpbml0U3RvcHNGZWF0dXJlU3RvcmUsXG4gIHVwZGF0ZVN0b3JlU29ydGluZ1xufSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLnV0aWxzJztcbmltcG9ydCB7XG4gIFJvdXRlc0ZlYXR1cmVTdG9yZSxcbiAgU3RlcHNGZWF0dXJlU3RvcmUsXG4gIFN0b3BzRmVhdHVyZVN0b3JlLFxuICBTdG9wc1N0b3JlXG59IGZyb20gJy4vc2hhcmVkL3N0b3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWRpcmVjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGlyZWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RpcmVjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBEaXJlY3Rpb25zQnV0dG9uc0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zSW5wdXRzQ29tcG9uZW50LFxuICAgIERpcmVjdGlvbnNSZXN1bHRzQ29tcG9uZW50LFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGlyZWN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB3YXRjaGVyOiBFbnRpdHlTdG9yZVdhdGNoZXI8U3RvcD47XG5cbiAgcHVibGljIHByb2plY3Rpb24gPSAnRVBTRzo0MzI2JztcbiAgcHVibGljIGhhc09zcm1Qcml2YXRlQWNjZXNzID0gZmFsc2U7XG4gIHB1YmxpYyB0d29Tb3VyY2VzQXZhaWxhYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSB6b29tT25BY3RpdmVSb3V0ZSQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3RvcmVFbXB0eSQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc3RvcmVDaGFuZ2UkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHJvdXRlc1F1ZXJpZXMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwcml2YXRlIHNlbGVjdFN0b3BJbnRlcmFjdGlvbjogb2xJbnRlcmFjdGlvbi5TZWxlY3Q7XG4gIHByaXZhdGUgdHJhbnNsYXRlU3RvcDogb2xJbnRlcmFjdGlvbi5UcmFuc2xhdGU7XG4gIHByaXZhdGUgc2VsZWN0ZWRSb3V0ZTogb2xJbnRlcmFjdGlvbi5TZWxlY3Q7XG4gIHByaXZhdGUgZm9jdXNPblN0b3AgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1RyYW5zbGF0aW5nID0gZmFsc2U7XG5cbiAgcHVibGljIHByZXZpb3VzU3RvcHM6IFN0b3BbXSA9IFtdO1xuXG4gIHByaXZhdGUgc2VhcmNocyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGF1dGhlbnRpY2F0ZWQkJDogU3Vic2NyaXB0aW9uO1xuXG4gIEBJbnB1dCgpIGNvbnRleHRVcmk6IHN0cmluZztcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc3RvcHNTdG9yZTogU3RvcHNTdG9yZTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc3RvcHNGZWF0dXJlU3RvcmU6IFN0b3BzRmVhdHVyZVN0b3JlO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSByb3V0ZXNGZWF0dXJlU3RvcmU6IFJvdXRlc0ZlYXR1cmVTdG9yZTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc3RlcHNGZWF0dXJlU3RvcmU6IFN0ZXBzRmVhdHVyZVN0b3JlO1xuICBASW5wdXQoKSBkZWJvdW5jZSA9IDIwMDtcbiAgQElucHV0KCkgbGVuZ3RoID0gMjtcbiAgQElucHV0KCkgY29vcmRSb3VuZGVkRGVjaW1hbHMgPSA2O1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSB6b29tT25BY3RpdmVSb3V0ZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBhdXRoZW50aWNhdGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBXaGV0ZXIgb25lIG9mIHRoZSBkaXJlY3Rpb24gY29udHJvbCBpcyBhY3RpdmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgZGlyZWN0aW9uQ29udHJvbElzQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGludGVyYWN0aW9ucygpOiBvbEludGVyYWN0aW9uLkludGVyYWN0aW9uW10ge1xuICAgIHJldHVybiBbdGhpcy5zZWxlY3RTdG9wSW50ZXJhY3Rpb24sIHRoaXMudHJhbnNsYXRlU3RvcCwgdGhpcy5zZWxlY3RlZFJvdXRlXTtcbiAgfVxuXG4gIGdldCBlbmFibGVkUHJvZmlsZUhhc0F1dGhvcml6YXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlyZWN0aW9uc1NvdXJjZVNlcnZpY2Uuc291cmNlc1swXS5nZXRFbmFibGVkUHJvZmlsZSgpXG4gICAgICAuYXV0aG9yaXphdGlvbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlyZWN0aW9uc1NlcnZpY2U6IERpcmVjdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlyZWN0aW9uc1NvdXJjZVNlcnZpY2U6IERpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHF1ZXJ5U2VydmljZTogUXVlcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWQkJCA9IHRoaXMuYXV0aGVudGljYXRlZCQuc3Vic2NyaWJlKFxuICAgICAgKGF1dGhlbnRpY2F0ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKGF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICBjb25zdCBwcm9maWxlV2l0aEF1dGg6IEJhc2VEaXJlY3Rpb25zU291cmNlT3B0aW9uc1Byb2ZpbGUgPVxuICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb25zU291cmNlU2VydmljZS5zb3VyY2VzWzBdLmdldFByb2ZpbGVXaXRoQXV0aG9yaXphdGlvbigpO1xuICAgICAgICAgIGlmIChwcm9maWxlV2l0aEF1dGgpIHtcbiAgICAgICAgICAgIHRoaXMuaHR0cFxuICAgICAgICAgICAgICAuZ2V0KHByb2ZpbGVXaXRoQXV0aC5hdXRob3JpemF0aW9uLnVybClcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzT3NybVByaXZhdGVBY2Nlc3MgPVxuICAgICAgICAgICAgICAgICAgdXNlcltwcm9maWxlV2l0aEF1dGguYXV0aG9yaXphdGlvbi5wcm9wZXJ0eV07XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy50d29Tb3VyY2VzQXZhaWxhYmxlID1cbiAgICAgIHRoaXMuZGlyZWN0aW9uc1NvdXJjZVNlcnZpY2Uuc291cmNlc1swXS5wcm9maWxlcy5sZW5ndGggPT09IDJcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogZmFsc2U7XG4gICAgdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5pbml0RW50aXR5U3RvcmVzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpbml0U3RvcHNGZWF0dXJlU3RvcmUodGhpcy5zdG9wc0ZlYXR1cmVTdG9yZSwgdGhpcy5sYW5ndWFnZVNlcnZpY2UpO1xuICAgICAgaW5pdFJvdXRlc0ZlYXR1cmVTdG9yZSh0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZSwgdGhpcy5sYW5ndWFnZVNlcnZpY2UpO1xuICAgICAgaW5pdFN0ZXBzRmVhdHVyZVN0b3JlKHRoaXMuc3RlcHNGZWF0dXJlU3RvcmUpO1xuICAgICAgdGhpcy5pbml0T2xJbnRlcmFjdGlvbigpO1xuICAgIH0sIDEpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlcnZpY2UucXVlcnlFbmFibGVkID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3JlRW1wdHkkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3RvcmVDaGFuZ2UkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucm91dGVzUXVlcmllcyQkLm1hcCgodSkgPT4gdS51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLnpvb21PbkFjdGl2ZVJvdXRlJCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWQkJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZnJlZXplU3RvcmVzKCk7XG5cbiAgICBpZiAodGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5lbXB0eSkge1xuICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5tYXAubGF5ZXJDb250cm9sbGVyLnJlbW92ZShcbiAgICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5sYXllclxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmVtcHR5KSB7XG4gICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5tYXAubGF5ZXJDb250cm9sbGVyLnJlbW92ZShcbiAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXJcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmcmVlemVTdG9yZXMoKSB7XG4gICAgdGhpcy5pbnRlcmFjdGlvbnMubWFwKChpbnRlcmFjdGlvbikgPT5cbiAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5vbC5yZW1vdmVJbnRlcmFjdGlvbihpbnRlcmFjdGlvbilcbiAgICApO1xuICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUuZGVhY3RpdmF0ZVN0cmF0ZWd5T2ZUeXBlKFxuICAgICAgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5XG4gICAgKTtcbiAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5kZWFjdGl2YXRlU3RyYXRlZ3lPZlR5cGUoXG4gICAgICBGZWF0dXJlU3RvcmVMb2FkaW5nU3RyYXRlZ3lcbiAgICApO1xuICAgIHRoaXMuc3RlcHNGZWF0dXJlU3RvcmUuZGVhY3RpdmF0ZVN0cmF0ZWd5T2ZUeXBlKFxuICAgICAgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEVudGl0eVN0b3JlcygpIHtcbiAgICB0aGlzLndhdGNoZXIgPSBuZXcgRW50aXR5U3RvcmVXYXRjaGVyKHRoaXMuc3RvcHNTdG9yZSwgdGhpcy5jZFJlZik7XG4gICAgdGhpcy5tb25pdG9yRW1wdHlFbnRpdHlTdG9yZSgpO1xuICAgIHRoaXMubW9uaXRvckVudGl0eVN0b3JlQ2hhbmdlKCk7XG4gICAgdGhpcy5tb25pdG9yQWN0aXZlUm91dGVab29tKCk7XG4gIH1cblxuICBwcml2YXRlIG1vbml0b3JBY3RpdmVSb3V0ZVpvb20oKSB7XG4gICAgdGhpcy56b29tT25BY3RpdmVSb3V0ZSQkID0gdGhpcy56b29tT25BY3RpdmVSb3V0ZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5jb3VudCA+PSAxKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVJvdXRlOiBGZWF0dXJlV2l0aERpcmVjdGlvbnMgPSB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZVxuICAgICAgICAgIC5hbGwoKVxuICAgICAgICAgIC5maW5kKChyb3V0ZSkgPT4gcm91dGUucHJvcGVydGllcy5hY3RpdmUpO1xuXG4gICAgICAgIGlmIChhY3RpdmVSb3V0ZSkge1xuICAgICAgICAgIGNvbnN0IHN0b3BzQ29vcmRpbmF0ZXM6IENvb3JkaW5hdGVbXSA9IHRoaXMuc3RvcHNTdG9yZVxuICAgICAgICAgICAgLmFsbCgpXG4gICAgICAgICAgICAubWFwKChzdG9wKSA9PlxuICAgICAgICAgICAgICBvbFByb2oudHJhbnNmb3JtKHN0b3AuY29vcmRpbmF0ZXMsICdFUFNHOjQzMjYnLCAnRVBTRzozODU3JylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3Qgcm91dGVDb29yZGluYXRlczogQ29vcmRpbmF0ZVtdID1cbiAgICAgICAgICAgIGFjdGl2ZVJvdXRlLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICAgICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzOiBDb29yZGluYXRlW10gPSBbXG4gICAgICAgICAgICAuLi5zdG9wc0Nvb3JkaW5hdGVzLFxuICAgICAgICAgICAgLi4ucm91dGVDb29yZGluYXRlc1xuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3Qgcm91dGVFeHRlbnQgPSBjb29yZGluYXRlcy5yZWR1Y2UoXG4gICAgICAgICAgICAoW3hfbWluLCB5X21pbiwgeF9tYXgsIHlfbWF4XSwgW3gsIHldKSA9PiBbXG4gICAgICAgICAgICAgIE1hdGgubWluKHhfbWluLCB4KSxcbiAgICAgICAgICAgICAgTWF0aC5taW4oeV9taW4sIHkpLFxuICAgICAgICAgICAgICBNYXRoLm1heCh4X21heCwgeCksXG4gICAgICAgICAgICAgIE1hdGgubWF4KHlfbWF4LCB5KVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtJbmZpbml0eSwgSW5maW5pdHksIC1JbmZpbml0eSwgLUluZmluaXR5XVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLnpvb21Ub0V4dGVudChcbiAgICAgICAgICAgIHJvdXRlRXh0ZW50IGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0T2xJbnRlcmFjdGlvbigpIHtcbiAgICB0aGlzLnNlbGVjdFN0b3BJbnRlcmFjdGlvbiA9IG5ldyBvbEludGVyYWN0aW9uLlNlbGVjdCh7XG4gICAgICBsYXllcnM6IFt0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmxheWVyLm9sXSxcbiAgICAgIGhpdFRvbGVyYW5jZTogNyxcbiAgICAgIGNvbmRpdGlvbjogKGV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudC50eXBlID09PSAncG9pbnRlcm1vdmUnICYmICFldmVudC5kcmFnZ2luZztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJhbnNsYXRlU3RvcCA9IG5ldyBvbEludGVyYWN0aW9uLlRyYW5zbGF0ZSh7XG4gICAgICBmZWF0dXJlczogdGhpcy5zZWxlY3RTdG9wSW50ZXJhY3Rpb24uZ2V0RmVhdHVyZXMoKVxuICAgIH0pO1xuICAgIHRoaXMudHJhbnNsYXRlU3RvcC5vbigndHJhbnNsYXRpbmcnLCAoZXZ0KSA9PiB7XG4gICAgICB0aGlzLmlzVHJhbnNsYXRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5leGVjdXRlU3RvcFRyYW5zbGF0aW9uKGV2dC5mZWF0dXJlcyk7XG4gICAgfSk7XG4gICAgdGhpcy50cmFuc2xhdGVTdG9wLm9uKCd0cmFuc2xhdGVlbmQnLCAoZXZ0KSA9PiB7XG4gICAgICB0aGlzLmlzVHJhbnNsYXRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZXhlY3V0ZVN0b3BUcmFuc2xhdGlvbihldnQuZmVhdHVyZXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RlZFJvdXRlID0gbmV3IG9sSW50ZXJhY3Rpb24uU2VsZWN0KHtcbiAgICAgIGxheWVyczogW3RoaXMucm91dGVzRmVhdHVyZVN0b3JlLmxheWVyLm9sXSxcbiAgICAgIGNvbmRpdGlvbjogb2xDb25kaXRpb24uY2xpY2ssXG4gICAgICBoaXRUb2xlcmFuY2U6IDcsXG4gICAgICBmaWx0ZXI6IChmZWF0dXJlKSA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgZmVhdHVyZS5nZXQoJ3R5cGUnKSA9PT0gRGlyZWN0aW9uc1R5cGUuUm91dGUgJiZcbiAgICAgICAgICBmZWF0dXJlLmdldCgnYWN0aXZlJykgJiZcbiAgICAgICAgICAhdGhpcy5pc1RyYW5zbGF0aW5nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RlZFJvdXRlLm9uKCdzZWxlY3QnLCAoZXZ0KSA9PiB7XG4gICAgICBpZiAodGhpcy5mb2N1c09uU3RvcCA9PT0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0Q29vcmRpbmF0ZXM6IENvb3JkaW5hdGUgPSBvbFByb2oudHJhbnNmb3JtKFxuICAgICAgICAgIChldnQgYXMgYW55KS5tYXBCcm93c2VyRXZlbnQuY29vcmRpbmF0ZSxcbiAgICAgICAgICB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvbixcbiAgICAgICAgICB0aGlzLnByb2plY3Rpb25cbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWRkZWRTdG9wOiBTdG9wID0gYWRkU3RvcFRvU3RvcmUodGhpcy5zdG9wc1N0b3JlKTtcbiAgICAgICAgYWRkZWRTdG9wLnRleHQgPSByb3VuZENvb3JkVG9TdHJpbmcoXG4gICAgICAgICAgc2VsZWN0Q29vcmRpbmF0ZXMsXG4gICAgICAgICAgdGhpcy5jb29yZFJvdW5kZWREZWNpbWFsc1xuICAgICAgICApLmpvaW4oJywgJyk7XG4gICAgICAgIGFkZGVkU3RvcC5jb29yZGluYXRlcyA9IFtzZWxlY3RDb29yZGluYXRlc1swXSwgc2VsZWN0Q29vcmRpbmF0ZXNbMV1dO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5pbnRlcmFjdGlvbnMubWFwKChpbnRlcmFjdGlvbikgPT5cbiAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5vbC5hZGRJbnRlcmFjdGlvbihpbnRlcmFjdGlvbilcbiAgICApO1xuICB9XG5cbiAgb25TdG9wSW5wdXRIYXNGb2N1c0NoYW5nZShzdG9wSW5wdXRIYXNGb2N1czogYm9vbGVhbikge1xuICAgIHN0b3BJbnB1dEhhc0ZvY3VzXG4gICAgICA/IHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5vbC5yZW1vdmVJbnRlcmFjdGlvbihcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUm91dGVcbiAgICAgICAgKVxuICAgICAgOiB0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAub2wuYWRkSW50ZXJhY3Rpb24odGhpcy5zZWxlY3RlZFJvdXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZVN0b3BUcmFuc2xhdGlvbihmZWF0dXJlczogQ29sbGVjdGlvbjxhbnk+KSB7XG4gICAgaWYgKGZlYXR1cmVzLmdldExlbmd0aCgpID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpcnN0RmVhdHVyZSA9IGZlYXR1cmVzLmdldEFycmF5KClbMF07XG4gICAgY29uc3QgdHJhbnNsYXRlZFN0b3BJZCA9IGZpcnN0RmVhdHVyZS5nZXRJZCgpO1xuXG4gICAgY29uc3QgdHJhbnNsYXRpb25Db29yZGluYXRlcyA9IG9sUHJvai50cmFuc2Zvcm0oXG4gICAgICBmaXJzdEZlYXR1cmUuZ2V0R2VvbWV0cnkoKS5nZXRDb29yZGluYXRlcygpLFxuICAgICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZS5sYXllci5tYXAucHJvamVjdGlvbixcbiAgICAgIHRoaXMucHJvamVjdGlvblxuICAgICk7XG4gICAgY29uc3QgdHJhbnNsYXRlZFN0b3AgPSB0aGlzLnN0b3BzU3RvcmUuZ2V0KHRyYW5zbGF0ZWRTdG9wSWQpO1xuICAgIGNvbnN0IHJvdW5kZWRDb29yZCA9IHJvdW5kQ29vcmRUbyhcbiAgICAgIHRyYW5zbGF0aW9uQ29vcmRpbmF0ZXMsXG4gICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXG4gICAgKTtcbiAgICB0cmFuc2xhdGVkU3RvcC5jb29yZGluYXRlcyA9IHJvdW5kZWRDb29yZDtcbiAgICB0cmFuc2xhdGVkU3RvcC50ZXh0ID0gcm91bmRDb29yZFRvU3RyaW5nKFxuICAgICAgdHJhbnNsYXRpb25Db29yZGluYXRlcyxcbiAgICAgIHRoaXMuY29vcmRSb3VuZGVkRGVjaW1hbHNcbiAgICApLmpvaW4oJywgJyk7XG4gICAgdGhpcy5zdG9wc1N0b3JlLnVwZGF0ZSh0cmFuc2xhdGVkU3RvcCk7XG4gIH1cblxuICBwcml2YXRlIG1vbml0b3JFbXB0eUVudGl0eVN0b3JlKCkge1xuICAgIC8vIFdhdGNoIGlmIHRoZSBzdG9yZSBpcyBlbXB0eSB0byByZXNldCBpdFxuICAgIHRoaXMuc3RvcmVFbXB0eSQkID0gdGhpcy5zdG9wc1N0b3JlLmNvdW50JFxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGNvdW50KSA9PiB7XG4gICAgICAgIGlmIChjb3VudCA8IDIpIHtcbiAgICAgICAgICBhZGRTdG9wVG9TdG9yZSh0aGlzLnN0b3BzU3RvcmUpO1xuICAgICAgICAgIGlmICh0aGlzLnN0b3BzU3RvcmUuY291bnQgPT09IDIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcHNTdG9yZS5zdG9yZUluaXRpYWxpemVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnN0b3BzU3RvcmUuc3RvcmVJbml0aWFsaXplZCQubmV4dChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZXNRdWVyaWVzJCQubWFwKCh1KSA9PiB1LnVuc3Vic2NyaWJlKCkpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG1vbml0b3JFbnRpdHlTdG9yZUNoYW5nZSgpIHtcbiAgICB0aGlzLnN0b3JlQ2hhbmdlJCQgPSB0aGlzLnN0b3BzU3RvcmUuZW50aXRpZXMkXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpXG4gICAgICAuc3Vic2NyaWJlKChzdG9wcykgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZVN0b3BEaWZmKHN0b3BzKTtcbiAgICAgICAgdXBkYXRlU3RvcmVTb3J0aW5nKHRoaXMuc3RvcHNTdG9yZSk7XG4gICAgICAgIHRoaXMuaGFuZGxlU3RvcHNGZWF0dXJlKCk7XG4gICAgICAgIHRoaXMuZ2V0Um91dGVzKHRoaXMuaXNUcmFuc2xhdGluZyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbFNlYXJjaCgpIHtcbiAgICB0aGlzLnNlYXJjaHMkJC5tYXAoKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVN0b3BEaWZmKHN0b3BzOiBTdG9wW10pIHtcbiAgICBjb25zdCBzaW1wbGlmaWVkU3RvcHMgPSBzdG9wcy5tYXAoKHN0b3ApID0+IHtcbiAgICAgIHJldHVybiBPYmplY3RVdGlscy5yZW1vdmVVbmRlZmluZWQoe1xuICAgICAgICAuLi57IGlkOiBzdG9wLmlkLCB0ZXh0OiBzdG9wLnRleHQsIGNvb3JkaW5hdGVzOiBzdG9wLmNvb3JkaW5hdGVzIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGRpZmYgPSBDaGFuZ2VVdGlscy5maW5kQ2hhbmdlcyh0aGlzLnByZXZpb3VzU3RvcHMsIHNpbXBsaWZpZWRTdG9wcywgW1xuICAgICAgJ2Nvb3JkaW5hdGVzJ1xuICAgIF0pO1xuICAgIGNvbnN0IHN0b3BJZFRvUHJvY2VzcyA9IGRpZmYuYWRkZWQuY29uY2F0KGRpZmYubW9kaWZpZWQpO1xuICAgIGlmIChzdG9wSWRUb1Byb2Nlc3MpIHtcbiAgICAgIHN0b3BJZFRvUHJvY2Vzcy5tYXAoKGNoYW5nZSkgPT4ge1xuICAgICAgICBjb25zdCBjaGFuZ2VkU3RvcCA9IGNoYW5nZS5uZXdWYWx1ZSBhcyBTdG9wO1xuICAgICAgICBpZiAoY2hhbmdlZFN0b3ApIHtcbiAgICAgICAgICBjb25zdCBzdG9wOiBTdG9wID0gdGhpcy5zdG9wc1N0b3JlLmdldChjaGFuZ2VkU3RvcC5pZCk7XG4gICAgICAgICAgY29uc3QgdGVybSA9IHN0b3AudGV4dDtcbiAgICAgICAgICBpZiAoIXRlcm0gfHwgdGVybS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBzdHJpbmdUb0xvbkxhdChcbiAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5wcm9qZWN0aW9uXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsZXQgaXNDb29yZCA9IGZhbHNlO1xuICAgICAgICAgIGlmIChyZXNwb25zZS5sb25MYXQpIHtcbiAgICAgICAgICAgIGlzQ29vcmQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZXNlYXJjaGVzID0gdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaCh0ZXJtLCB7XG4gICAgICAgICAgICBzZWFyY2hUeXBlOiAnRmVhdHVyZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmNhbmNlbFNlYXJjaCgpO1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3RzJCA9IHJlc2VhcmNoZXMubWFwKChyZXMpID0+XG4gICAgICAgICAgICByZXMucmVxdWVzdC5waXBlKFxuICAgICAgICAgICAgICBtYXAoKHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdKSA9PlxuICAgICAgICAgICAgICAgIHJlc3VsdHMuZmlsdGVyKChyKSA9PlxuICAgICAgICAgICAgICAgICAgaXNDb29yZFxuICAgICAgICAgICAgICAgICAgICA/IHIuZGF0YS5nZW9tZXRyeS50eXBlID09PSAnUG9pbnQnICYmIHIuZGF0YS5nZW9tZXRyeVxuICAgICAgICAgICAgICAgICAgICA6IHIuZGF0YS5nZW9tZXRyeVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZWFyY2hzJCQgPSByZXF1ZXN0cyQubWFwKChyZXF1ZXN0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdFxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHJlc3VsdHMpID0+XG4gICAgICAgICAgICAgICAgICByZXN1bHRzLmZpbHRlcigocikgPT5cbiAgICAgICAgICAgICAgICAgICAgaXNDb29yZFxuICAgICAgICAgICAgICAgICAgICAgID8gci5kYXRhLmdlb21ldHJ5LnR5cGUgPT09ICdQb2ludCcgJiYgci5kYXRhLmdlb21ldHJ5XG4gICAgICAgICAgICAgICAgICAgICAgOiByLmRhdGEuZ2VvbWV0cnlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2UgPSByZXNbMF0uc291cmNlO1xuICAgICAgICAgICAgICAgICAgY29uc3QgbWV0YSA9IHJlc1swXS5tZXRhO1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHJlcy5tYXAoKHIpID0+IHIuZGF0YSk7XG4gICAgICAgICAgICAgICAgICBpZiAoIXN0b3Auc2VhcmNoUHJvcG9zYWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0b3Auc2VhcmNoUHJvcG9zYWxzID0gW107XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBzdG9wLnNlYXJjaFByb3Bvc2FscyA9IHN0b3Auc2VhcmNoUHJvcG9zYWxzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgKHNwKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIHNwLnR5cGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgKGlzQ29vcmQgPyBQcm9wb3NhbFR5cGUuQ29vcmQgOiBQcm9wb3NhbFR5cGUuVGV4dClcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBzdG9yZWRTb3VyY2UgPSBzdG9wLnNlYXJjaFByb3Bvc2Fscy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAoc3ApID0+IHNwLnNvdXJjZSA9PT0gc291cmNlXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgaWYgKHN0b3JlZFNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZWRTb3VyY2UucmVzdWx0cyA9IHJlc3VsdHM7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdG9wLnNlYXJjaFByb3Bvc2Fscy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBpc0Nvb3JkID8gUHJvcG9zYWxUeXBlLkNvb3JkIDogUHJvcG9zYWxUeXBlLlRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgIG1ldGEsXG4gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5wcmV2aW91c1N0b3BzID0gc2ltcGxpZmllZFN0b3BzO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTdG9wc0ZlYXR1cmUoKSB7XG4gICAgY29uc3Qgc3RvcHMgPSB0aGlzLnN0b3BzU3RvcmUuYWxsKCk7XG4gICAgY29uc3Qgc3RvcHNXaXRoQ29vcmRpbmF0ZXMgPSBzdG9wcy5maWx0ZXIoKHN0b3ApID0+IHN0b3AuY29vcmRpbmF0ZXMpO1xuICAgIHN0b3BzV2l0aENvb3JkaW5hdGVzLm1hcCgoc3RvcCkgPT4gdGhpcy5hZGRTdG9wT3ZlcmxheShzdG9wKSk7XG4gICAgdGhpcy5zdG9wc0ZlYXR1cmVTdG9yZVxuICAgICAgLmFsbCgpXG4gICAgICAubWFwKChzdG9wRmVhdHVyZTogRmVhdHVyZTxGZWF0dXJlV2l0aFN0b3BQcm9wZXJ0aWVzPikgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuc3RvcHNTdG9yZS5nZXQoc3RvcEZlYXR1cmUucHJvcGVydGllcy5pZCkpIHtcbiAgICAgICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLmRlbGV0ZShzdG9wRmVhdHVyZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIGNvbnN0IHN0b3BzV2l0aG91dENvb3JkaW5hdGVzID0gc3RvcHMuZmlsdGVyKChzdG9wKSA9PiAhc3RvcC5jb29yZGluYXRlcyk7XG4gICAgc3RvcHNXaXRob3V0Q29vcmRpbmF0ZXMubWFwKChzdG9wKSA9PiB7XG4gICAgICBjb25zdCBzdG9wRmVhdHVyZSA9IHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUuZ2V0KHN0b3AuaWQpO1xuICAgICAgaWYgKHN0b3BGZWF0dXJlKSB7XG4gICAgICAgIHRoaXMuc3RvcHNGZWF0dXJlU3RvcmUuZGVsZXRlKHN0b3BGZWF0dXJlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91dGVzKGlzT3ZlcnZpZXcgPSBmYWxzZSkge1xuICAgIGNvbnN0IHN0b3BzV2l0aENvb3JkaW5hdGVzID0gdGhpcy5zdG9wc1N0b3JlLnZpZXdcbiAgICAgIC5hbGwoKVxuICAgICAgLmZpbHRlcigoc3RvcCkgPT4gc3RvcC5jb29yZGluYXRlcyk7XG4gICAgaWYgKHN0b3BzV2l0aENvb3JkaW5hdGVzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmRlbGV0ZU1hbnkodGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuYWxsKCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJvdW5kZWRDb29yZGluYXRlcyA9IHN0b3BzV2l0aENvb3JkaW5hdGVzLm1hcCgoc3RvcCkgPT4ge1xuICAgICAgY29uc3Qgcm91bmRlZENvb3JkID0gcm91bmRDb29yZFRvKFxuICAgICAgICBzdG9wLmNvb3JkaW5hdGVzLFxuICAgICAgICB0aGlzLmNvb3JkUm91bmRlZERlY2ltYWxzXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJvdW5kZWRDb29yZDtcbiAgICB9KTtcbiAgICBjb25zdCBvdmVydmlld0RpcmVjdGlvbnNPcHRpb25zOiBEaXJlY3Rpb25PcHRpb25zID0ge1xuICAgICAgb3ZlcnZpZXc6IHRydWUsXG4gICAgICBzdGVwczogZmFsc2UsXG4gICAgICBhbHRlcm5hdGl2ZXM6IGZhbHNlLFxuICAgICAgY29udGludWVfc3RyYWlnaHQ6IGZhbHNlXG4gICAgfTtcbiAgICB0aGlzLnJvdXRlc1F1ZXJpZXMkJC5tYXAoKHUpID0+IHUudW5zdWJzY3JpYmUoKSk7XG4gICAgY29uc3Qgcm91dGVSZXNwb25zZSA9IHRoaXMuZGlyZWN0aW9uc1NlcnZpY2Uucm91dGUoXG4gICAgICByb3VuZGVkQ29vcmRpbmF0ZXMsXG4gICAgICBpc092ZXJ2aWV3ID8gb3ZlcnZpZXdEaXJlY3Rpb25zT3B0aW9ucyA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgaWYgKHJvdXRlUmVzcG9uc2UpIHtcbiAgICAgIHRoaXMucm91dGVzUXVlcmllcyQkLnB1c2goXG4gICAgICAgIHJvdXRlUmVzcG9uc2Uuc3Vic2NyaWJlKChkaXJlY3Rpb25zKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXNGZWF0dXJlU3RvcmUuZGVsZXRlTWFueSh0aGlzLnJvdXRlc0ZlYXR1cmVTdG9yZS5hbGwoKSk7XG4gICAgICAgICAgZGlyZWN0aW9ucy5tYXAoKGRpcmVjdGlvbikgPT5cbiAgICAgICAgICAgIGFkZFJvdXRlVG9Sb3V0ZXNGZWF0dXJlU3RvcmUoXG4gICAgICAgICAgICAgIHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLFxuICAgICAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICAgICAgIHRoaXMucHJvamVjdGlvbixcbiAgICAgICAgICAgICAgZGlyZWN0aW9uID09PSBkaXJlY3Rpb25zWzBdID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZFN0b3BPdmVybGF5KHN0b3A6IFN0b3ApIHtcbiAgICBhZGRTdG9wVG9TdG9wc0ZlYXR1cmVTdG9yZShcbiAgICAgIHN0b3AsXG4gICAgICB0aGlzLnN0b3BzRmVhdHVyZVN0b3JlLFxuICAgICAgdGhpcy5wcm9qZWN0aW9uLFxuICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2VcbiAgICApO1xuICB9XG5cbiAgb25Ub2dnbGVEaXJlY3Rpb25zQ29udHJvbChpc0FjdGl2ZTogYm9vbGVhbikge1xuICAgIHRoaXMucXVlcnlTZXJ2aWNlLnF1ZXJ5RW5hYmxlZCA9ICFpc0FjdGl2ZTtcbiAgICBjb25zdCBvbCA9IHRoaXMucm91dGVzRmVhdHVyZVN0b3JlLmxheWVyLm1hcC5vbDtcbiAgICB0aGlzLmludGVyYWN0aW9ucy5tYXAoKGludGVyYWN0aW9uKSA9PlxuICAgICAgaXNBY3RpdmVcbiAgICAgICAgPyBvbC5hZGRJbnRlcmFjdGlvbihpbnRlcmFjdGlvbilcbiAgICAgICAgOiBvbC5yZW1vdmVJbnRlcmFjdGlvbihpbnRlcmFjdGlvbilcbiAgICApO1xuICB9XG5cbiAgb25Ub2dnbGVQcml2YXRlTW9kZUNvbnRyb2woaXNBY3RpdmU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlLnNvdXJjZXNbMF0ucHJvZmlsZXMuZm9yRWFjaChcbiAgICAgIChwcm9maWxlKSA9PiAocHJvZmlsZS5lbmFibGVkID0gZmFsc2UpXG4gICAgKTtcbiAgICBpZiAoaXNBY3RpdmUpIHtcbiAgICAgIHRoaXMuZGlyZWN0aW9uc1NvdXJjZVNlcnZpY2Uuc291cmNlc1swXS5wcm9maWxlcy5maW5kKFxuICAgICAgICAocHJvZmlsZSkgPT4gcHJvZmlsZS5hdXRob3JpemF0aW9uXG4gICAgICApLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hbGVydChcbiAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2lnby5nZW8uZGlyZWN0aW9ucy5mb3Jlc3RSb2Fkc1dhcm5pbmcudGV4dCdcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgJ2lnby5nZW8uZGlyZWN0aW9ucy5mb3Jlc3RSb2Fkc1dhcm5pbmcudGl0bGUnXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlyZWN0aW9uc1NvdXJjZVNlcnZpY2Uuc291cmNlc1swXS5wcm9maWxlcy5maW5kKFxuICAgICAgICAocHJvZmlsZSkgPT4gIXByb2ZpbGUuYXV0aG9yaXphdGlvblxuICAgICAgKS5lbmFibGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5nZXRSb3V0ZXMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRpcmVjdGlvbnMtb3B0aW9uc1wiPlxuICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgIFtjaGVja2VkXT1cImRpcmVjdGlvbkNvbnRyb2xJc0FjdGl2ZVwiXG4gICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxuICAgIChjaGFuZ2UpPVwib25Ub2dnbGVEaXJlY3Rpb25zQ29udHJvbCgkZXZlbnQuY2hlY2tlZClcIlxuICA+XG4gICAge3sgJ2lnby5nZW8uZGlyZWN0aW9ucy50b2dnbGUuYWN0aXZhdGVDb250cm9sJyB8IHRyYW5zbGF0ZSB9fVxuICA8L21hdC1zbGlkZS10b2dnbGU+XG4gIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgKm5nSWY9XCJoYXNPc3JtUHJpdmF0ZUFjY2VzcyAmJiB0d29Tb3VyY2VzQXZhaWxhYmxlXCJcbiAgICBbY2hlY2tlZF09XCJlbmFibGVkUHJvZmlsZUhhc0F1dGhvcml6YXRpb25cIlxuICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAoY2hhbmdlKT1cIm9uVG9nZ2xlUHJpdmF0ZU1vZGVDb250cm9sKCRldmVudC5jaGVja2VkKVwiXG4gID5cbiAgICB7eyAnaWdvLmdlby5kaXJlY3Rpb25zLnRvZ2dsZS50eXBlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L21hdC1zbGlkZS10b2dnbGU+XG48L2Rpdj5cblxuPGlnby1kaXJlY3Rpb25zLWlucHV0c1xuICAoc3RvcElucHV0SGFzRm9jdXMpPVwib25TdG9wSW5wdXRIYXNGb2N1c0NoYW5nZSgkZXZlbnQpXCJcbiAgW2Nvb3JkUm91bmRlZERlY2ltYWxzXT1cImNvb3JkUm91bmRlZERlY2ltYWxzXCJcbiAgW3Byb2plY3Rpb25dPVwicHJvamVjdGlvblwiXG4gIFtzdG9wc0ZlYXR1cmVTdG9yZV09XCJzdG9wc0ZlYXR1cmVTdG9yZVwiXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxuICBbZGVib3VuY2VdPVwiZGVib3VuY2VcIlxuICBbbGVuZ3RoXT1cImxlbmd0aFwiXG4+PC9pZ28tZGlyZWN0aW9ucy1pbnB1dHM+XG5cbjxpZ28tZGlyZWN0aW9ucy1idXR0b25zXG4gICpuZ0lmPVwicm91dGVzRmVhdHVyZVN0b3JlLmFsbCgpLmxlbmd0aCA+IDBcIlxuICBbc3RlcHNGZWF0dXJlU3RvcmVdPVwic3RlcHNGZWF0dXJlU3RvcmVcIlxuICBbY29udGV4dFVyaV09XCJjb250ZXh0VXJpXCJcbiAgW3pvb21PbkFjdGl2ZVJvdXRlJF09XCJ6b29tT25BY3RpdmVSb3V0ZSRcIlxuICBbcm91dGVzRmVhdHVyZVN0b3JlXT1cInJvdXRlc0ZlYXR1cmVTdG9yZVwiXG4gIFtzdG9wc1N0b3JlXT1cInN0b3BzU3RvcmVcIlxuPjwvaWdvLWRpcmVjdGlvbnMtYnV0dG9ucz5cblxuPGlnby1kaXJlY3Rpb25zLXJlc3VsdHNcbiAgW3N0ZXBzRmVhdHVyZVN0b3JlXT1cInN0ZXBzRmVhdHVyZVN0b3JlXCJcbiAgW3JvdXRlc0ZlYXR1cmVTdG9yZV09XCJyb3V0ZXNGZWF0dXJlU3RvcmVcIlxuPjwvaWdvLWRpcmVjdGlvbnMtcmVzdWx0cz5cbiJdfQ==
@@ -1,46 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { DirectionsButtonsComponent } from './directions-buttons/directions-buttons.component';
3
- import { DirectionsInputsComponent } from './directions-inputs/directions-inputs.component';
4
- import { DirectionsResultsComponent } from './directions-results/directions-results.component';
5
- import { DirectionsComponent } from './directions.component';
6
- import * as i0 from "@angular/core";
7
- export class IgoDirectionsModule {
8
- /**
9
- * @deprecated it has no effect
10
- */
11
- static forRoot() {
12
- return {
13
- ngModule: IgoDirectionsModule
14
- };
15
- }
16
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoDirectionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: IgoDirectionsModule, imports: [DirectionsComponent,
18
- DirectionsInputsComponent,
19
- DirectionsButtonsComponent,
20
- DirectionsResultsComponent], exports: [DirectionsComponent,
21
- DirectionsInputsComponent,
22
- DirectionsButtonsComponent,
23
- DirectionsResultsComponent] });
24
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoDirectionsModule, imports: [DirectionsComponent,
25
- DirectionsInputsComponent,
26
- DirectionsButtonsComponent,
27
- DirectionsResultsComponent] });
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoDirectionsModule, decorators: [{
30
- type: NgModule,
31
- args: [{
32
- imports: [
33
- DirectionsComponent,
34
- DirectionsInputsComponent,
35
- DirectionsButtonsComponent,
36
- DirectionsResultsComponent
37
- ],
38
- exports: [
39
- DirectionsComponent,
40
- DirectionsInputsComponent,
41
- DirectionsButtonsComponent,
42
- DirectionsResultsComponent
43
- ]
44
- }]
45
- }] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2RpcmVjdGlvbnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQWdCN0QsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7T0FFRztJQUNILE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxtQkFBbUI7U0FDOUIsQ0FBQztJQUNKLENBQUM7d0dBUlUsbUJBQW1CO3lHQUFuQixtQkFBbUIsWUFaNUIsbUJBQW1CO1lBQ25CLHlCQUF5QjtZQUN6QiwwQkFBMEI7WUFDMUIsMEJBQTBCLGFBRzFCLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsMEJBQTBCO1lBQzFCLDBCQUEwQjt5R0FHakIsbUJBQW1CLFlBWjVCLG1CQUFtQjtZQUNuQix5QkFBeUI7WUFDekIsMEJBQTBCO1lBQzFCLDBCQUEwQjs7NEZBU2pCLG1CQUFtQjtrQkFkL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3FCQUMzQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3FCQUMzQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERpcmVjdGlvbnNCdXR0b25zQ29tcG9uZW50IH0gZnJvbSAnLi9kaXJlY3Rpb25zLWJ1dHRvbnMvZGlyZWN0aW9ucy1idXR0b25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXJlY3Rpb25zSW5wdXRzQ29tcG9uZW50IH0gZnJvbSAnLi9kaXJlY3Rpb25zLWlucHV0cy9kaXJlY3Rpb25zLWlucHV0cy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc1Jlc3VsdHNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMtcmVzdWx0cy9kaXJlY3Rpb25zLXJlc3VsdHMuY29tcG9uZW50JztcbmltcG9ydCB7IERpcmVjdGlvbnNDb21wb25lbnQgfSBmcm9tICcuL2RpcmVjdGlvbnMuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIERpcmVjdGlvbnNDb21wb25lbnQsXG4gICAgRGlyZWN0aW9uc0lucHV0c0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zQnV0dG9uc0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zUmVzdWx0c0NvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRGlyZWN0aW9uc0NvbXBvbmVudCxcbiAgICBEaXJlY3Rpb25zSW5wdXRzQ29tcG9uZW50LFxuICAgIERpcmVjdGlvbnNCdXR0b25zQ29tcG9uZW50LFxuICAgIERpcmVjdGlvbnNSZXN1bHRzQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgSWdvRGlyZWN0aW9uc01vZHVsZSB7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBpdCBoYXMgbm8gZWZmZWN0XG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPElnb0RpcmVjdGlvbnNNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IElnb0RpcmVjdGlvbnNNb2R1bGVcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,16 +0,0 @@
1
- import { DirectionsService } from './shared';
2
- import { provideDirectionsSourceService } from './shared/directions-source.service';
3
- export function provideDirection(...sources) {
4
- const providers = [
5
- {
6
- provide: DirectionsService,
7
- useClass: DirectionsService
8
- },
9
- provideDirectionsSourceService()
10
- ];
11
- for (const source of sources) {
12
- providers.push(...source.providers);
13
- }
14
- return providers;
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2RpcmVjdGlvbnMvZGlyZWN0aW9ucy5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0MsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFcEYsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixHQUFHLE9BQXNEO0lBRXpELE1BQU0sU0FBUyxHQUFlO1FBQzVCO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixRQUFRLEVBQUUsaUJBQWlCO1NBQzVCO1FBQ0QsOEJBQThCLEVBQUU7S0FDakMsQ0FBQztJQUVGLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIERpcmVjdGlvblNvdXJjZUZlYXR1cmUsXG4gIERpcmVjdGlvblNvdXJjZUtpbmRcbn0gZnJvbSAnLi9kaXJlY3Rpb25zLXNvdXJjZXMnO1xuaW1wb3J0IHsgRGlyZWN0aW9uc1NlcnZpY2UgfSBmcm9tICcuL3NoYXJlZCc7XG5pbXBvcnQgeyBwcm92aWRlRGlyZWN0aW9uc1NvdXJjZVNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9kaXJlY3Rpb25zLXNvdXJjZS5zZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVEaXJlY3Rpb24oXG4gIC4uLnNvdXJjZXM6IERpcmVjdGlvblNvdXJjZUZlYXR1cmU8RGlyZWN0aW9uU291cmNlS2luZD5bXVxuKTogUHJvdmlkZXJbXSB7XG4gIGNvbnN0IHByb3ZpZGVyczogUHJvdmlkZXJbXSA9IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBEaXJlY3Rpb25zU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBEaXJlY3Rpb25zU2VydmljZVxuICAgIH0sXG4gICAgcHJvdmlkZURpcmVjdGlvbnNTb3VyY2VTZXJ2aWNlKClcbiAgXTtcblxuICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgcHJvdmlkZXJzLnB1c2goLi4uc291cmNlLnByb3ZpZGVycyk7XG4gIH1cblxuICByZXR1cm4gcHJvdmlkZXJzO1xufVxuIl19
@@ -1,8 +0,0 @@
1
- export * from './shared';
2
- export * from './directions.component';
3
- export * from './directions.provider';
4
- export * from './directions-sources';
5
- export * from './directions-inputs';
6
- export * from './directions-buttons';
7
- export * from './directions-results';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9kaXJlY3Rpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3Rpb25zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGlvbnMucHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3Rpb25zLXNvdXJjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3Rpb25zLWlucHV0cyc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGlvbnMtYnV0dG9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGlvbnMtcmVzdWx0cyc7XG4iXX0=