@kando-env/kando-ui 1.2.228-alpha.129 → 1.2.228-alpha.13

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 (582) hide show
  1. package/lib/Router.js +66 -8
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +41 -11
  3. package/lib/Widgets/EventsRow/EventsRow.js +42 -15
  4. package/lib/Widgets/Map/GraphUtils.js +4 -1
  5. package/lib/Widgets/Map/Map.js +108 -95
  6. package/lib/Widgets/Map/Map.scss +0 -2
  7. package/lib/Widgets/Map/MapUtils.js +58 -7
  8. package/lib/Widgets/Map/areas/AreaPolygon.js +27 -7
  9. package/lib/Widgets/Map/areas/AreaPolygons.js +22 -9
  10. package/lib/Widgets/Map/edges/Edge.js +31 -10
  11. package/lib/Widgets/Map/edges/Edge.scss +2 -7
  12. package/lib/Widgets/Map/edges/Edges.js +20 -11
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +22 -7
  14. package/lib/Widgets/Map/events/Event.js +23 -7
  15. package/lib/Widgets/Map/events/EventIndicator.js +43 -20
  16. package/lib/Widgets/Map/events/EventPath.js +20 -5
  17. package/lib/Widgets/Map/events/EventUtils.js +62 -15
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +19 -5
  19. package/lib/Widgets/Map/events/PointOfEvent.js +34 -5
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +14 -4
  21. package/lib/Widgets/Map/events/Snail.js +19 -7
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +54 -15
  23. package/lib/Widgets/Map/map/FloatingGraph.js +19 -3
  24. package/lib/Widgets/Map/map/GraphDateButton.js +9 -3
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +11 -5
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +10 -4
  27. package/lib/Widgets/Map/points/PointIcon.js +16 -3
  28. package/lib/Widgets/Map/points/PointIcon.scss +1 -16
  29. package/lib/Widgets/Map/points/PointMarker.js +28 -13
  30. package/lib/Widgets/Map/points/PointMarkers.js +88 -56
  31. package/lib/Widgets/Map/points/PointUtils.js +114 -32
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +53 -19
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +19 -4
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +13 -1
  35. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +5 -1
  36. package/lib/Widgets/MostPolluting/Areas/Areas.js +53 -19
  37. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +1 -1
  38. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  39. package/lib/Widgets/MostPolluting/Areas/styles.js +7 -1
  40. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +11 -3
  41. package/lib/Widgets/MostPolluting/Factories/Factories.js +64 -30
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +21 -4
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +10 -1
  44. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +17 -4
  45. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +7 -3
  46. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +1 -1
  47. package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
  48. package/lib/Widgets/MostPolluting/Factories/styles.js +7 -1
  49. package/lib/Widgets/MostPolluting/MostPolluting.js +24 -37
  50. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +17 -13
  51. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +9 -2
  52. package/lib/Widgets/MostPolluting/ShowMore/styles.js +5 -1
  53. package/lib/Widgets/MostPolluting/assets/index.js +28 -17
  54. package/lib/Widgets/MostPolluting/components/ChangePercent.js +16 -1
  55. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +26 -15
  56. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +26 -4
  57. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +33 -25
  58. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +20 -4
  59. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +43 -29
  60. package/lib/Widgets/MostPolluting/models.js +1 -1
  61. package/lib/Widgets/MostPolluting/styles.js +7 -1
  62. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +9 -2
  63. package/lib/Widgets/PotentialImpactSummary/Icon.js +11 -1
  64. package/lib/Widgets/PotentialImpactSummary/index.js +29 -7
  65. package/lib/Widgets/PotentialImpactSummary/index.test.js +36 -17
  66. package/lib/Widgets/PotentialImpactSummary/styles.js +15 -2
  67. package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
  68. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +10 -4
  69. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +21 -7
  70. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +29 -19
  71. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +24 -15
  72. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +21 -7
  73. package/lib/Widgets/QualitySummary/QualitySummary.js +24 -8
  74. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +2 -2
  75. package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
  76. package/lib/Widgets/QualitySummary/styles.js +16 -3
  77. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +21 -10
  78. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +34 -9
  79. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +18 -9
  80. package/lib/Widgets/UtilityInformation/UtilityInformation.js +59 -30
  81. package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
  82. package/lib/Widgets/UtilityInformation/styles.js +22 -2
  83. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +2 -2
  84. package/lib/assets/icons/index.js +8 -5
  85. package/lib/assets/icons/kandoStepper/index.js +14 -9
  86. package/lib/assets/map/pin-suction.svg +23 -6
  87. package/lib/components/ApplyButton/ApplyButton.js +11 -5
  88. package/lib/components/ApplyButton/index.js +4 -1
  89. package/lib/components/Backdrop/Backdrop.js +8 -2
  90. package/lib/components/ContentLoader/ContentLoader.js +12 -7
  91. package/lib/components/ContentLoader/index.js +2 -1
  92. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +14 -7
  93. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +8 -2
  94. package/lib/components/CustomInputs/DoubleTabs/styles.js +10 -2
  95. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +18 -5
  96. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +5 -1
  97. package/lib/components/CustomInputs/Search/Search.js +38 -13
  98. package/lib/components/CustomInputs/Search/index.js +4 -1
  99. package/lib/components/CustomInputs/Select/Select.js +33 -33
  100. package/lib/components/CustomInputs/Select/Select.stories.js +8 -2
  101. package/lib/components/DamageType/DamageType.js +76 -37
  102. package/lib/components/DamageType/index.js +4 -1
  103. package/lib/components/DataLoaderError/DataLoaderError.js +10 -4
  104. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +16 -6
  105. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +37 -17
  106. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +37 -12
  107. package/lib/components/DischargeHeatmap/HighchartsOptions.js +10 -6
  108. package/lib/components/DischargeHeatmap/index.js +4 -1
  109. package/lib/components/DischargeHeatmap/mocks/handlers.js +4 -3
  110. package/lib/components/DischargeHeatmap/popupText.js +16 -1
  111. package/lib/components/DischargeHeatmap/titles.js +8 -1
  112. package/lib/components/DischargeHeatmap/types.js +1 -1
  113. package/lib/components/ErrorBoundary.js +15 -3
  114. package/lib/components/Events/Events.js +30 -5
  115. package/lib/components/Events/index.js +4 -1
  116. package/lib/components/Graph/Graph.js +74 -31
  117. package/lib/components/Graph/index.js +4 -1
  118. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +7 -1
  119. package/lib/components/Header/Breadcrumbs/index.js +4 -1
  120. package/lib/components/Header/DoubleTabs/DoubleTabs.js +30 -14
  121. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +8 -2
  122. package/lib/components/Header/DoubleTabs/styles.js +10 -2
  123. package/lib/components/Header/Header.js +7 -1
  124. package/lib/components/Header/Header.stories.js +8 -2
  125. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +12 -8
  126. package/lib/components/Header/InfoBar/InfoBar.js +30 -10
  127. package/lib/components/Header/InfoBar/Search/Control.js +13 -2
  128. package/lib/components/Header/InfoBar/Search/GroupLabel.js +12 -1
  129. package/lib/components/Header/InfoBar/Search/Search.js +26 -5
  130. package/lib/components/Header/InfoBar/Search/SearchContainer.js +21 -4
  131. package/lib/components/Header/InfoBar/Search/index.js +4 -1
  132. package/lib/components/Header/InfoBar/Search/searchStyle.js +4 -1
  133. package/lib/components/Header/KandoNavbar/KandoNavbar.js +91 -46
  134. package/lib/components/Header/KandoNavbar/index.js +4 -1
  135. package/lib/components/Header/Slideshow/Slideshow.js +71 -35
  136. package/lib/components/Header/Slideshow/index.js +4 -1
  137. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +7 -1
  138. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +15 -2
  139. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +15 -1
  140. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +24 -7
  141. package/lib/components/Header/Toolbar/Toolbar.js +84 -46
  142. package/lib/components/InfoBar/InfoBar.js +23 -8
  143. package/lib/components/InfoBar/InfoBar.stories.js +8 -2
  144. package/lib/components/KandoModal/KandoModal.js +42 -19
  145. package/lib/components/KandoModal/index.js +4 -1
  146. package/lib/components/Link.js +11 -2
  147. package/lib/components/Links/CustomRedirect/CustomRedirect.js +12 -3
  148. package/lib/components/Links/StyledLink/StyledLink.js +16 -6
  149. package/lib/components/Links/StyledNavLink/StyledNavLink.js +14 -4
  150. package/lib/components/LiveEvents/CarouselSlide.js +11 -5
  151. package/lib/components/LiveEvents/LiveEvents.js +10 -1
  152. package/lib/components/LiveEvents/index.js +4 -1
  153. package/lib/components/LoaderByPercent/LoaderByPercent.js +23 -13
  154. package/lib/components/Map/Map.js +26 -12
  155. package/lib/components/Map/index.js +4 -1
  156. package/lib/components/Modal/Modal.js +10 -3
  157. package/lib/components/NarrowHeader.js +12 -1
  158. package/lib/components/PointInfo/PointInfo.js +22 -10
  159. package/lib/components/PointInfo/index.js +4 -1
  160. package/lib/components/PopupModal/PopupModal.js +17 -6
  161. package/lib/components/PopupModal/PopupModal.stories.js +11 -2
  162. package/lib/components/Sector/Sector.js +13 -4
  163. package/lib/components/Sector/Sector.test.js +8 -3
  164. package/lib/components/Sector/index.js +4 -1
  165. package/lib/components/Sector/sectorIcons.js +27 -1
  166. package/lib/components/SevereEvent/Eta/Eta.js +40 -20
  167. package/lib/components/SevereEvent/Eta/styles.js +5 -1
  168. package/lib/components/SevereEvent/SevereEvent.js +36 -15
  169. package/lib/components/Spinner/Spinner.js +10 -5
  170. package/lib/components/Spinner/Spinner.stories.js +8 -2
  171. package/lib/components/Spinner/index.js +4 -1
  172. package/lib/components/Spinner/styles.js +9 -1
  173. package/lib/components/Tabs/Tabs.js +24 -4
  174. package/lib/components/Tabs/Tabs.stories.js +8 -2
  175. package/lib/components/Tabs/assets/index.js +6 -1
  176. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +12 -2
  177. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +43 -12
  178. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +36 -12
  179. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +4 -1
  180. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +29 -9
  181. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +9 -4
  182. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +4 -1
  183. package/lib/components/TimeRangeSelector/TimeRangeList.js +13 -4
  184. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +24 -11
  185. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +36 -11
  186. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +10 -2
  187. package/lib/components/TimeRangeSelector/constants.js +2 -2
  188. package/lib/components/TimeRangeSelector/index.js +4 -1
  189. package/lib/components/Toggle/Toggle.js +21 -7
  190. package/lib/components/Toggle/index.js +4 -1
  191. package/lib/components/TrendGraph/TrendGraph.js +49 -16
  192. package/lib/components/TrendGraph/index.js +4 -1
  193. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +37 -13
  194. package/lib/components/TrendGraphNVL/index.js +4 -1
  195. package/lib/development-environment/index.js +13 -1
  196. package/lib/development-environment/mock/browser.js +8 -1
  197. package/lib/development-environment/mock/get.js +5 -1
  198. package/lib/development-environment/mock/handlers.js +26 -1
  199. package/lib/development-environment/mock/mockBus.js +7 -2
  200. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +1 -1
  201. package/lib/development-environment/mock/mockObjects/areaInformation.js +1 -1
  202. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +1 -1
  203. package/lib/development-environment/mock/mockObjects/areaSitesData.js +1 -1
  204. package/lib/development-environment/mock/mockObjects/areasJson.js +1 -1
  205. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +1 -1
  206. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +1 -1
  207. package/lib/development-environment/mock/mockObjects/data-menuData.js +1 -1
  208. package/lib/development-environment/mock/mockObjects/data-search.js +1 -1
  209. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +1 -1
  210. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +1 -1
  211. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +1 -1
  212. package/lib/development-environment/mock/mockObjects/eventsJson.js +1 -1
  213. package/lib/development-environment/mock/mockObjects/metascore.js +1 -1
  214. package/lib/development-environment/mock/mockObjects/permissionsJson.js +1 -1
  215. package/lib/development-environment/mock/mockObjects/pointsJson.js +1 -1
  216. package/lib/development-environment/mock/mockObjects/site-info.js +1 -1
  217. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +1 -1
  218. package/lib/development-environment/togly/ToglyDashboard.js +22 -4
  219. package/lib/development-environment/togly/ToglyItem.js +25 -5
  220. package/lib/development-environment/togly/flags.js +1 -1
  221. package/lib/development-environment/togly/init.js +6 -1
  222. package/lib/development-environment/togly/macro.js +9 -7
  223. package/lib/development-environment/togly/useDoubleKeyDown.js +8 -1
  224. package/lib/development-environment/togly/useLocalStorage.js +19 -12
  225. package/lib/hooks/useApi.js +29 -10
  226. package/lib/hooks/useApiWithDashboardQuery.js +30 -10
  227. package/lib/hooks/useClickOutside.js +5 -1
  228. package/lib/hooks/useInitializeHeaders.js +9 -2
  229. package/lib/hooks/useKandoFetch.js +27 -13
  230. package/lib/hooks/useMap.js +35 -8
  231. package/lib/hooks/useNavContext.js +22 -13
  232. package/lib/hooks/useQueryURL.js +4 -1
  233. package/lib/hooks/useRemoveExistingLayers.js +7 -2
  234. package/lib/hooks/useUpdateEventBodyTail.js +10 -1
  235. package/lib/hooks/useUserTimeZone.js +9 -1
  236. package/lib/hooks/useUserTimeZone.test.js +9 -1
  237. package/lib/hooks/useWindowSize.js +19 -14
  238. package/lib/i18n/en.json +4 -42
  239. package/lib/i18n/en_uk.json +3 -25
  240. package/lib/i18n/fr.json +2 -24
  241. package/lib/i18n/he.json +3 -33
  242. package/lib/i18n/it.json +2 -24
  243. package/lib/index.js +29 -21
  244. package/lib/macros/getVersion.js +3 -2
  245. package/lib/models/IAction.js +1 -1
  246. package/lib/models/IAppState.js +1 -1
  247. package/lib/pages/AreaPage/AreaPage.js +38 -13
  248. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +17 -6
  249. package/lib/pages/AreaPage/Dashboard/Dashboard.js +24 -3
  250. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +35 -11
  251. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +8 -6
  252. package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +65 -46
  253. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +10 -1
  254. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +15 -3
  255. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +7 -3
  256. package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
  257. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +1 -1
  258. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +11 -3
  259. package/lib/pages/AssessmentPage/AssessmentPage.js +30 -5
  260. package/lib/pages/CannyWidget/Feedback.js +25 -10
  261. package/lib/pages/CovidPage/CovidPage.js +14 -1
  262. package/lib/pages/CovidPage/components/Body.js +33 -9
  263. package/lib/pages/CovidPage/components/Map.js +38 -20
  264. package/lib/pages/CovidPage/components/Sidebar.js +18 -4
  265. package/lib/pages/CovidPage/components/Summary.js +29 -8
  266. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +37 -13
  267. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +4 -1
  268. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +42 -16
  269. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +4 -1
  270. package/lib/pages/CovidPage/components/areas/Area.js +33 -6
  271. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +45 -4
  272. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +18 -5
  273. package/lib/pages/CovidPage/components/areas/AreasList.js +33 -14
  274. package/lib/pages/CovidPage/components/areas/Sort.js +19 -5
  275. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -2
  276. package/lib/pages/EventsPage/Body/Body.js +19 -2
  277. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +28 -11
  278. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +31 -11
  279. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +11 -4
  280. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +11 -3
  281. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +10 -5
  282. package/lib/pages/EventsPage/DragAndDropArea/index.js +4 -1
  283. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +36 -26
  284. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +24 -5
  285. package/lib/pages/EventsPage/EventsPage.js +13 -1
  286. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +32 -9
  287. package/lib/pages/EventsPage/events/EventsStyle.scss +0 -1
  288. package/lib/pages/EventsPage/events/MoreInfo.js +19 -1
  289. package/lib/pages/EventsPage/events/Sidebar.js +18 -5
  290. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +29 -5
  291. package/lib/pages/EventsPage/events/event_info/EventDetails.js +32 -8
  292. package/lib/pages/EventsPage/events/event_info/EventInfo.js +42 -14
  293. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +14 -2
  294. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +40 -10
  295. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +12 -1
  296. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +30 -8
  297. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +8 -1
  298. package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/LineChartYear/LineChartYear.js +27 -7
  299. package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/MockHistoryInformation.js +10 -2
  300. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +21 -5
  301. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsLineChart.js +23 -4
  302. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +22 -4
  303. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +33 -6
  304. package/lib/pages/EventsPage/events/event_info/samplings/Sampling.js +15 -3
  305. package/lib/pages/EventsPage/events/event_info/samplings/Samplings.js +10 -2
  306. package/lib/pages/EventsPage/events/event_info/sources/Source.js +31 -8
  307. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +20 -4
  308. package/lib/pages/EventsPage/events/events_list/EventItem.js +24 -3
  309. package/lib/pages/EventsPage/events/events_list/EventUtils.js +13 -2
  310. package/lib/pages/EventsPage/events/events_list/EventsList.js +134 -56
  311. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +32 -11
  312. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +96 -35
  313. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +55 -10
  314. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +17 -5
  315. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +38 -15
  316. package/lib/pages/EventsPage/events/events_list/Sort.js +23 -4
  317. package/lib/pages/ImportFileWizard/FileUploadRespones.js +19 -4
  318. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +8 -2
  319. package/lib/pages/ImportFileWizard/ImportFile.js +29 -10
  320. package/lib/pages/ImportFileWizard/ResponseBody.js +12 -3
  321. package/lib/pages/ImportFileWizard/ValidationForm.js +27 -7
  322. package/lib/pages/ImportFileWizard/ValidationResponse.js +30 -6
  323. package/lib/pages/ImportFileWizard/importFileUtils.js +2 -1
  324. package/lib/pages/ImportFileWizard/index.js +4 -1
  325. package/lib/pages/ImportGisPage/ImportGisContainer.js +27 -7
  326. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +27 -10
  327. package/lib/pages/ImportGisPage/importGisUtils.js +13 -1
  328. package/lib/pages/ImportGisProcess/index.js +18 -4
  329. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +19 -5
  330. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +10 -3
  331. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +8 -1
  332. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +58 -25
  333. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +8 -2
  334. package/lib/pages/NotificationsPage/Notification/Notification.js +16 -8
  335. package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
  336. package/lib/pages/NotificationsPage/Notifications.mock.js +1 -1
  337. package/lib/pages/NotificationsPage/Notifications.stories.js +10 -2
  338. package/lib/pages/NotificationsPage/NotificationsPage.js +35 -11
  339. package/lib/pages/NotificationsPage/assets/index.js +24 -15
  340. package/lib/pages/NotificationsPageV2/NotificationsPage.js +83 -35
  341. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +24 -4
  342. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +42 -17
  343. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +49 -18
  344. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +49 -6
  345. package/lib/pages/NotificationsPageV2/notificationUtils.js +31 -8
  346. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  347. package/lib/pages/OldSitePage/OldSitePage.js +77 -16
  348. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +16 -3
  349. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +8 -2
  350. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -4
  351. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +12 -5
  352. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -2
  353. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +23 -7
  354. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +20 -6
  355. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +10 -4
  356. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +12 -2
  357. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +24 -9
  358. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +12 -4
  359. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +59 -28
  360. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +2 -2
  361. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
  362. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +18 -3
  363. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +15 -2
  364. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +16 -8
  365. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +16 -1
  366. package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
  367. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +10 -2
  368. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +7 -2
  369. package/lib/pages/ProfilePage/Container.js +6 -2
  370. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +43 -16
  371. package/lib/pages/ProfilePage/ProfilePage.js +115 -172
  372. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +32 -9
  373. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +17 -7
  374. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +14 -3
  375. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +48 -20
  376. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +21 -4
  377. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +15 -7
  378. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +29 -8
  379. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +25 -6
  380. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +21 -9
  381. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +13 -1
  382. package/lib/pages/SamplingsPage/DesktopActions/index.js +4 -1
  383. package/lib/pages/SamplingsPage/NavigationDropdown.js +21 -3
  384. package/lib/pages/SamplingsPage/NewSamplingAction.js +84 -38
  385. package/lib/pages/SamplingsPage/SamplingMobileModal.js +65 -12
  386. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +19 -5
  387. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +14 -3
  388. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +56 -22
  389. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +20 -4
  390. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +14 -1
  391. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +115 -43
  392. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +42 -11
  393. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +47 -14
  394. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +49 -15
  395. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +21 -7
  396. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +8 -2
  397. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +11 -1
  398. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +36 -7
  399. package/lib/pages/SamplingsPage/SamplingsMobileList.js +34 -10
  400. package/lib/pages/SamplingsPage/SamplingsPage.js +39 -14
  401. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +48 -14
  402. package/lib/pages/SamplingsPage/index.js +3 -1
  403. package/lib/pages/SamplingsPage/samplingsPageUtils.js +30 -7
  404. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +10 -2
  405. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +8 -2
  406. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +17 -3
  407. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +11 -6
  408. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +23 -15
  409. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +16 -7
  410. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +27 -18
  411. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +12 -2
  412. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +26 -9
  413. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +20 -6
  414. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +10 -4
  415. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +12 -2
  416. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +24 -9
  417. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +12 -4
  418. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +68 -32
  419. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +2 -2
  420. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +10 -12
  421. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +19 -4
  422. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +15 -2
  423. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +38 -17
  424. package/lib/pages/SitePage/SamplingParameters/dataParser.js +29 -13
  425. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +7 -3
  426. package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
  427. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +10 -2
  428. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +8 -2
  429. package/lib/pages/SitePage/SiteInformation/ContributorItem.js +12 -5
  430. package/lib/pages/SitePage/SiteInformation/EmptyState.js +10 -1
  431. package/lib/pages/SitePage/SiteInformation/PollutionContributor.js +15 -5
  432. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +51 -20
  433. package/lib/pages/SitePage/SiteInformation/style.js +8 -2
  434. package/lib/pages/SitePage/SitePage.js +54 -13
  435. package/lib/pages/UploadLabResult/index.js +8 -1
  436. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +59 -19
  437. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +9 -2
  438. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +16 -2
  439. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +8 -2
  440. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +35 -9
  441. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +5 -1
  442. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +7 -1
  443. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +10 -1
  444. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +16 -7
  445. package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
  446. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +15 -23
  447. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +5 -1
  448. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +30 -17
  449. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +19 -13
  450. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +18 -9
  451. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +20 -5
  452. package/lib/pages/WbeDashboard/ExpandableComponent.js +14 -6
  453. package/lib/pages/WbeDashboard/GraphWrapper.js +28 -8
  454. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +19 -6
  455. package/lib/pages/WbeDashboard/SearchInput.js +22 -4
  456. package/lib/pages/WbeDashboard/SummaryGraph.js +76 -56
  457. package/lib/pages/WbeDashboard/SummaryGraphModal.js +13 -1
  458. package/lib/pages/WbeDashboard/Tabs.js +9 -4
  459. package/lib/pages/WbeDashboard/WbeDashboardPage.js +157 -68
  460. package/lib/pages/WbeDashboard/WbeSummaryBar.js +49 -19
  461. package/lib/providers/Slideshow/SlideshowContext.js +5 -3
  462. package/lib/providers/Slideshow/SlideshowProvider.js +31 -16
  463. package/lib/providers/Slideshow/SlideshowRunner.js +17 -7
  464. package/lib/providers/UrlHistory/UrlHistoryContext.js +7 -3
  465. package/lib/providers/UrlHistory/UrlHistoryProvider.js +13 -1
  466. package/lib/providers/UrlHistory/index.js +8 -5
  467. package/lib/providers/UrlHistory/useLastVisited.js +7 -1
  468. package/lib/react-app-env.d.js +1 -1
  469. package/lib/store/ImportGis/action.js +1 -1
  470. package/lib/store/ImportGis/actionTypes.js +2 -1
  471. package/lib/store/ImportGis/actionsCreator.js +17 -7
  472. package/lib/store/ImportGis/models/gisImports.js +1 -1
  473. package/lib/store/ImportGis/reducer.js +17 -1
  474. package/lib/store/WBE/actionTypes.js +1 -1
  475. package/lib/store/WBE/actions.js +3 -1
  476. package/lib/store/WBE/models/IAreaWBE.js +1 -1
  477. package/lib/store/WBE/models/IWBE.js +1 -1
  478. package/lib/store/WBE/models/IWBEState.js +1 -1
  479. package/lib/store/WBE/reducer.js +9 -2
  480. package/lib/store/areas/actionTypes.js +2 -2
  481. package/lib/store/areas/actions.js +11 -2
  482. package/lib/store/areas/models/IArea.js +1 -1
  483. package/lib/store/areas/models/IAreasState.js +1 -1
  484. package/lib/store/areas/reducer.js +9 -1
  485. package/lib/store/context/actionTypes.js +2 -2
  486. package/lib/store/context/actions.js +6 -2
  487. package/lib/store/context/contextMiddlewares.js +9 -1
  488. package/lib/store/context/models/INavContext.js +1 -1
  489. package/lib/store/context/models/INavContextState.js +1 -1
  490. package/lib/store/context/reducer.js +9 -2
  491. package/lib/store/dashboard/dashboardSlice.js +3 -1
  492. package/lib/store/dashboard/periodType.js +1 -1
  493. package/lib/store/edges/actionTypes.js +2 -2
  494. package/lib/store/edges/actions.js +9 -3
  495. package/lib/store/edges/models/IEdge.js +1 -1
  496. package/lib/store/edges/models/IEdgesState.js +1 -1
  497. package/lib/store/edges/reducer.js +16 -2
  498. package/lib/store/events/actionTypes.js +2 -2
  499. package/lib/store/events/actions.js +30 -12
  500. package/lib/store/events/models/IEvent.js +1 -1
  501. package/lib/store/events/models/IEventsState.js +1 -1
  502. package/lib/store/events/models/ISource.js +1 -1
  503. package/lib/store/events/reducer.js +41 -3
  504. package/lib/store/filters/IFilter.js +1 -1
  505. package/lib/store/filters/IFilterItem.js +1 -1
  506. package/lib/store/global/actionTypes.js +2 -2
  507. package/lib/store/global/actions.js +21 -11
  508. package/lib/store/global/models/IGlobalState.js +1 -1
  509. package/lib/store/global/reducer.js +18 -2
  510. package/lib/store/permissions/permissionsSlice.js +6 -1
  511. package/lib/store/points/actionTypes.js +2 -2
  512. package/lib/store/points/actions.js +5 -1
  513. package/lib/store/points/models/IGroup.js +1 -1
  514. package/lib/store/points/models/IPoint.js +1 -1
  515. package/lib/store/points/models/IPointsState.js +1 -1
  516. package/lib/store/points/reducer.js +7 -1
  517. package/lib/store/rootActionTypes.js +1 -1
  518. package/lib/store/rootActions.js +3 -1
  519. package/lib/store/rootReducer.js +23 -4
  520. package/lib/store/rootStore.js +12 -4
  521. package/lib/store/samplings/action.js +1 -1
  522. package/lib/store/samplings/actionTypes.js +2 -1
  523. package/lib/store/samplings/actionsCreator.js +5 -2
  524. package/lib/store/samplings/models/Samplings.js +1 -1
  525. package/lib/store/samplings/reducer.js +9 -1
  526. package/lib/styles/StylesLayout.js +7 -1
  527. package/lib/styles/theme/theme.js +4 -2
  528. package/lib/test/mocks/browser.js +7 -3
  529. package/lib/test/test-utils.js +21 -11
  530. package/lib/ui-kit/Button/Button.js +23 -15
  531. package/lib/ui-kit/Button/Button.test.js +26 -6
  532. package/lib/ui-kit/Button/ButtonUtils.js +1 -1
  533. package/lib/ui-kit/Checkbox/Checkbox.js +21 -7
  534. package/lib/ui-kit/DropDown/DropDown.js +16 -5
  535. package/lib/ui-kit/DropDown/DropDown.test.js +12 -6
  536. package/lib/ui-kit/DropDown/DropDownItem.js +13 -5
  537. package/lib/ui-kit/DropDown/DropdownToggle.js +13 -2
  538. package/lib/ui-kit/IconAction/IconAction.js +9 -3
  539. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +52 -32
  540. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +28 -24
  541. package/lib/ui-kit/KandoList/KandoList.js +16 -5
  542. package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
  543. package/lib/ui-kit/KandoTable/KandoTable.js +36 -24
  544. package/lib/ui-kit/KandoTable/KandoTable.test.js +16 -1
  545. package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
  546. package/lib/ui-kit/Layout/Layout.js +8 -1
  547. package/lib/ui-kit/MobileInput/MobileInput.js +33 -18
  548. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +14 -8
  549. package/lib/ui-kit/ModalConfirmation/index.js +3 -1
  550. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +10 -5
  551. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +11 -3
  552. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +11 -4
  553. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +14 -5
  554. package/lib/ui-kit/Tooltip/Tooltip.js +8 -3
  555. package/lib/ui-kit/index.js +15 -1
  556. package/lib/ui-kit/kandoStepper/KandoStepper.js +7 -2
  557. package/lib/utilities/ActionUtility.js +2 -1
  558. package/lib/utilities/Alert.js +10 -2
  559. package/lib/utilities/Analytics.js +12 -2
  560. package/lib/utilities/Array.js +6 -2
  561. package/lib/utilities/Enum.js +16 -12
  562. package/lib/utilities/ErrorBoundary.js +18 -3
  563. package/lib/utilities/File.js +24 -5
  564. package/lib/utilities/GetDir.js +8 -4
  565. package/lib/utilities/KandoDate.js +7 -1
  566. package/lib/utilities/KandoModal.js +22 -7
  567. package/lib/utilities/LocalStorage.js +13 -2
  568. package/lib/utilities/ThousandsToK.js +3 -1
  569. package/lib/utilities/TimeFormat.js +19 -6
  570. package/lib/utilities/Truncate.js +27 -7
  571. package/lib/utilities/edgesMath.js +25 -5
  572. package/lib/utilities/i18n.js +14 -1
  573. package/lib/utilities/kql.js +10 -3
  574. package/lib/utilities/map/icons.js +18 -1
  575. package/lib/utilities/scoreToColor.js +8 -1
  576. package/lib/utilities/time.js +9 -2
  577. package/lib/utilities/uploadToS3.js +9 -1
  578. package/lib/utilities/urls.js +14 -32
  579. package/package.json +1 -4
  580. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +0 -17
  581. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +0 -67
  582. package/lib/utilities/polylinedecorator.js +0 -383
@@ -1,57 +1,71 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
4
+
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.recursiveDownStreamSearch = exports.pointIsWWTP = exports.pointIsObservation = exports.nextLevelDownStream = exports.getUpstreamEdges = exports.getFirstEdgeOfEventPath = exports.findUpstreamEdgesToDraw = exports.findEdgesFromEventPathToDraw = exports.findDownstreamEdgesToDraw = exports.findAndDrawEventNetworkEdges = exports.drawNetwork = exports.drawManholeIcon = void 0;
9
- var L = _interopRequireWildcard(require("leaflet"));
10
- require("utilities/polylinedecorator");
8
+ exports.pointIsWWTP = exports.pointIsObservation = exports.findAndDrawEventNetworkEdges = exports.drawNetwork = exports.findEdgesFromEventPathToDraw = exports.nextLevelDownStream = exports.recursiveDownStreamSearch = exports.findDownstreamEdgesToDraw = exports.findUpstreamEdgesToDraw = exports.getUpstreamEdges = exports.getFirstEdgeOfEventPath = exports.drawManholeIcon = void 0;
9
+
10
+ require("leaflet-polylinedecorator");
11
+
12
+ var _leaflet = _interopRequireDefault(require("leaflet"));
13
+
11
14
  var _whitePoint = _interopRequireDefault(require("../../../assets/white-point.png"));
15
+
12
16
  var _actions = require("../../../store/events/actions");
17
+
13
18
  var _PointUtils = require("../points/PointUtils");
14
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+
16
20
  var drawManholeIcon = function drawManholeIcon(sourcePoint, map) {
17
- var pointIcon = L.icon({
21
+ var pointIcon = _leaflet.default.icon({
18
22
  iconUrl: _whitePoint.default,
19
23
  iconSize: [9, 9],
20
24
  iconAnchor: [4.5, 4.5]
21
25
  });
22
- var manholeIcon = L.marker([sourcePoint.latitude, sourcePoint.longitude], {
26
+
27
+ var manholeIcon = _leaflet.default.marker([sourcePoint.latitude, sourcePoint.longitude], {
23
28
  icon: pointIcon,
24
29
  riseOnHover: true
25
30
  }).addTo(map);
31
+
26
32
  manholeIcon.bindTooltip("".concat(sourcePoint.group.name, " (").concat(sourcePoint.group.sector_name, ")"));
27
33
  manholeIcon['kando_object_id'] = sourcePoint.id;
28
34
  manholeIcon['kando_object'] = 'UpstreamPoint';
29
35
  };
36
+
30
37
  exports.drawManholeIcon = drawManholeIcon;
38
+
31
39
  var getFirstEdgeOfEventPath = function getFirstEdgeOfEventPath(edges, event) {
32
40
  if (event.path[0] === undefined) return;
33
41
  return edges.find(function (edge) {
34
42
  return edge.id === event.path[0].edge_id;
35
43
  });
36
44
  };
45
+
37
46
  exports.getFirstEdgeOfEventPath = getFirstEdgeOfEventPath;
47
+
38
48
  var findEdges = function findEdges(edges, nextUpstreamLevelIds) {
39
49
  return edges.filter(function (edge) {
40
50
  return nextUpstreamLevelIds.includes(edge.target_point_id);
41
51
  });
42
52
  };
53
+
43
54
  var recursiveUpstreamSearch = function recursiveUpstreamSearch(nextLevel, edges, mapAllEdgesNesting, allUpstreamEdges) {
44
55
  var nextUpstreamLevelIds = nextLevel.map(function (edge) {
45
56
  return edge.source_point_id;
46
57
  });
58
+
47
59
  if (findEdges(edges, nextUpstreamLevelIds).length === 0) {
48
60
  return mapAllEdgesNesting([nextLevel]);
49
61
  } else {
50
62
  allUpstreamEdges.push(findEdges(edges, nextUpstreamLevelIds));
51
63
  recursiveUpstreamSearch(findEdges(edges, nextUpstreamLevelIds), edges, mapAllEdgesNesting, allUpstreamEdges);
52
64
  }
65
+
53
66
  return mapAllEdgesNesting(allUpstreamEdges);
54
67
  };
68
+
55
69
  var mapAllEdgesNesting = function mapAllEdgesNesting(allUpstreamEdges) {
56
70
  var mapped = [];
57
71
  allUpstreamEdges.forEach(function (edges) {
@@ -61,6 +75,7 @@ var mapAllEdgesNesting = function mapAllEdgesNesting(allUpstreamEdges) {
61
75
  });
62
76
  return mapped;
63
77
  };
78
+
64
79
  var getUpstreamEdges = function getUpstreamEdges(firstEdge, edges) {
65
80
  var allUpstreamEdges = [];
66
81
  var firstUpstreamLevel = edges.filter(function (edge) {
@@ -68,7 +83,9 @@ var getUpstreamEdges = function getUpstreamEdges(firstEdge, edges) {
68
83
  });
69
84
  return recursiveUpstreamSearch(firstUpstreamLevel, edges, mapAllEdgesNesting, allUpstreamEdges);
70
85
  };
86
+
71
87
  exports.getUpstreamEdges = getUpstreamEdges;
88
+
72
89
  var findUpstreamEdgesToDraw = function findUpstreamEdgesToDraw(upstreamEdges, edgesToDraw, points, edges) {
73
90
  upstreamEdges.forEach(function (upstreamEdge) {
74
91
  if (upstreamEdge) {
@@ -84,15 +101,20 @@ var findUpstreamEdgesToDraw = function findUpstreamEdgesToDraw(upstreamEdges, ed
84
101
  if (connectionEdge !== undefined) edgesToDraw.push(connectionEdge);
85
102
  return edgesToDraw;
86
103
  };
104
+
87
105
  exports.findUpstreamEdgesToDraw = findUpstreamEdgesToDraw;
106
+
88
107
  var findDownstreamEdgesToDraw = function findDownstreamEdgesToDraw(firstEdge, edges, downstreamNetwork, edgesToDraw) {
89
108
  recursiveDownStreamSearch(downstreamNetwork, edges).forEach(function (downStreamEdge) {
90
109
  edgesToDraw.push(downStreamEdge);
91
110
  });
92
111
  };
112
+
93
113
  exports.findDownstreamEdgesToDraw = findDownstreamEdgesToDraw;
114
+
94
115
  var recursiveDownStreamSearch = function recursiveDownStreamSearch(downstreamNetwork, edges) {
95
116
  var lastDownStreamEdge = downstreamNetwork[downstreamNetwork.length - 1];
117
+
96
118
  if (nextLevelDownStream(lastDownStreamEdge, edges).length === 0) {
97
119
  return downstreamNetwork;
98
120
  } else {
@@ -101,15 +123,20 @@ var recursiveDownStreamSearch = function recursiveDownStreamSearch(downstreamNet
101
123
  recursiveDownStreamSearch(downstreamNetwork, edges);
102
124
  });
103
125
  }
126
+
104
127
  return downstreamNetwork;
105
128
  };
129
+
106
130
  exports.recursiveDownStreamSearch = recursiveDownStreamSearch;
131
+
107
132
  var nextLevelDownStream = function nextLevelDownStream(firstEdge, edges) {
108
133
  return edges.filter(function (edge) {
109
134
  return edge.source_point_id === firstEdge.target_point_id;
110
135
  });
111
136
  };
137
+
112
138
  exports.nextLevelDownStream = nextLevelDownStream;
139
+
113
140
  var findEdgesFromEventPathToDraw = function findEdgesFromEventPathToDraw(edgesToDraw, event, edges) {
114
141
  event.path.forEach(function (part) {
115
142
  var matchedPart = edges.find(function (edge) {
@@ -118,26 +145,30 @@ var findEdgesFromEventPathToDraw = function findEdgesFromEventPathToDraw(edgesTo
118
145
  if (matchedPart !== undefined) edgesToDraw.push(matchedPart);
119
146
  });
120
147
  };
148
+
121
149
  exports.findEdgesFromEventPathToDraw = findEdgesFromEventPathToDraw;
150
+
122
151
  var drawNetwork = function drawNetwork(edges, points, dispatch, map, event, layerGroup) {
123
152
  var latlngs = [];
124
153
  edges.forEach(function (edge) {
125
154
  edge.shape_data.forEach(function (data) {
126
155
  latlngs.push([data.lat, data.lng]);
127
156
  });
128
- var polylineBack = L.polyline(latlngs, {
157
+
158
+ var polylineBack = _leaflet.default.polyline(latlngs, {
129
159
  color: 'rgb(227,227,227)',
130
160
  weight: 6,
131
161
  opacity: 1
132
162
  });
163
+
133
164
  layerGroup.addLayer(polylineBack);
134
- var tailDash = L.polylineDecorator(polylineBack._latlngs, {
135
- patterns: [
136
- // defines a pattern of 10px-wide dashes, repeated every 20px on the line
165
+
166
+ var tailDash = _leaflet.default.polylineDecorator(polylineBack._latlngs, {
167
+ patterns: [// defines a pattern of 10px-wide dashes, repeated every 20px on the line
137
168
  {
138
169
  offset: 15,
139
170
  repeat: 25,
140
- symbol: L.Symbol.arrowHead({
171
+ symbol: _leaflet.default.Symbol.arrowHead({
141
172
  pixelSize: 3,
142
173
  polygon: false,
143
174
  pathOptions: {
@@ -148,8 +179,10 @@ var drawNetwork = function drawNetwork(edges, points, dispatch, map, event, laye
148
179
  })
149
180
  }]
150
181
  });
182
+
151
183
  tailDash['kando_object'] = 'Decorator';
152
184
  layerGroup.addLayer(tailDash);
185
+
153
186
  if (points.length !== 0) {
154
187
  var sourcePoint = points.find(function (point) {
155
188
  return point.id === edge.source_point_id;
@@ -157,24 +190,29 @@ var drawNetwork = function drawNetwork(edges, points, dispatch, map, event, laye
157
190
  var targetPoint = points.find(function (point) {
158
191
  return point.id === edge.target_point_id;
159
192
  });
193
+
160
194
  if (sourcePoint !== undefined && targetPoint !== undefined) {
161
195
  polylineBack.bindPopup("Edge ID: ".concat(edge.id, ",<br>\n Source point: ").concat(sourcePoint.group.name, ",<br>\n Target point: ").concat(targetPoint.group.name, ",\n Distance: ").concat(edge.distance));
162
196
  }
197
+
163
198
  if (sourcePoint) drawManholeIcon(sourcePoint, map);
164
199
  if (targetPoint) drawManholeIcon(targetPoint, map);
165
200
  if (sourcePoint && (sourcePoint.has_device || pointIsWWTP(sourcePoint))) (0, _PointUtils.createBubblePoint)([sourcePoint.latitude, sourcePoint.longitude], sourcePoint, map, null, layerGroup);
166
201
  if (targetPoint && (targetPoint.has_device || pointIsWWTP(targetPoint))) (0, _PointUtils.createBubblePoint)([targetPoint.latitude, targetPoint.longitude], targetPoint, map, null, layerGroup);
167
202
  }
203
+
168
204
  polylineBack['kando_object_id'] = edge.id;
169
205
  if (event.hovered) polylineBack['kando_object'] = 'HoveredEdge';
170
206
  if (event.focused) polylineBack['kando_object'] = 'FocusedEdge';
171
207
  polylineBack.bringToFront();
172
208
  tailDash.bringToFront();
173
- var polylineFront = L.polyline(latlngs, {
209
+
210
+ var polylineFront = _leaflet.default.polyline(latlngs, {
174
211
  color: 'rgb(29,29,29)',
175
212
  weight: 1,
176
213
  opacity: 1
177
214
  });
215
+
178
216
  polylineFront['kando_object_id'] = edge.id;
179
217
  if (event.hovered) polylineFront['kando_object'] = 'HoveredEdgeFront';
180
218
  if (event.focused) polylineFront['kando_object'] = 'FocusedEdgeFront';
@@ -184,10 +222,13 @@ var drawNetwork = function drawNetwork(edges, points, dispatch, map, event, laye
184
222
  latlngs = [];
185
223
  });
186
224
  };
225
+
187
226
  exports.drawNetwork = drawNetwork;
227
+
188
228
  var findAndDrawEventNetworkEdges = function findAndDrawEventNetworkEdges(edges, event, points, dispatch, map, layerGroup) {
189
229
  var edgesToDraw = [];
190
230
  var firstEdge = getFirstEdgeOfEventPath(edges, event);
231
+
191
232
  if (firstEdge !== undefined) {
192
233
  var downstreamNetwork = [firstEdge];
193
234
  var upstreamEdges = getUpstreamEdges(firstEdge, edges);
@@ -195,17 +236,23 @@ var findAndDrawEventNetworkEdges = function findAndDrawEventNetworkEdges(edges,
195
236
  if (upstreamEdges.length !== 0) findUpstreamEdgesToDraw(upstreamEdges, edgesToDraw, points, edges);
196
237
  findDownstreamEdgesToDraw(firstEdge, edges, downstreamNetwork, edgesToDraw);
197
238
  }
239
+
198
240
  drawNetwork(edgesToDraw, points, dispatch, map, event, layerGroup);
199
241
  };
242
+
200
243
  exports.findAndDrawEventNetworkEdges = findAndDrawEventNetworkEdges;
244
+
201
245
  var pointIsObservation = function pointIsObservation(event, point) {
202
246
  return event.observations.find(function (obs) {
203
247
  return obs.point_id === point.id;
204
248
  });
205
249
  };
250
+
206
251
  exports.pointIsObservation = pointIsObservation;
252
+
207
253
  var pointIsWWTP = function pointIsWWTP(point) {
208
254
  return point.group.type === 'Groups::WastewaterTreatmentPlant';
209
255
  };
256
+
210
257
  exports.pointIsWWTP = pointIsWWTP;
211
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3doaXRlUG9pbnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2FjdGlvbnMiLCJfUG9pbnRVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiZHJhd01hbmhvbGVJY29uIiwic291cmNlUG9pbnQiLCJtYXAiLCJwb2ludEljb24iLCJpY29uIiwiaWNvblVybCIsIndoaXRlUG9pbnQiLCJpY29uU2l6ZSIsImljb25BbmNob3IiLCJtYW5ob2xlSWNvbiIsIm1hcmtlciIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwicmlzZU9uSG92ZXIiLCJhZGRUbyIsImJpbmRUb29sdGlwIiwiY29uY2F0IiwiZ3JvdXAiLCJuYW1lIiwic2VjdG9yX25hbWUiLCJpZCIsImV4cG9ydHMiLCJnZXRGaXJzdEVkZ2VPZkV2ZW50UGF0aCIsImVkZ2VzIiwiZXZlbnQiLCJwYXRoIiwidW5kZWZpbmVkIiwiZmluZCIsImVkZ2UiLCJlZGdlX2lkIiwiZmluZEVkZ2VzIiwibmV4dFVwc3RyZWFtTGV2ZWxJZHMiLCJmaWx0ZXIiLCJpbmNsdWRlcyIsInRhcmdldF9wb2ludF9pZCIsInJlY3Vyc2l2ZVVwc3RyZWFtU2VhcmNoIiwibmV4dExldmVsIiwibWFwQWxsRWRnZXNOZXN0aW5nIiwiYWxsVXBzdHJlYW1FZGdlcyIsInNvdXJjZV9wb2ludF9pZCIsImxlbmd0aCIsInB1c2giLCJtYXBwZWQiLCJmb3JFYWNoIiwiZ2V0VXBzdHJlYW1FZGdlcyIsImZpcnN0RWRnZSIsImZpcnN0VXBzdHJlYW1MZXZlbCIsImZpbmRVcHN0cmVhbUVkZ2VzVG9EcmF3IiwidXBzdHJlYW1FZGdlcyIsImVkZ2VzVG9EcmF3IiwicG9pbnRzIiwidXBzdHJlYW1FZGdlIiwicG9pbnQiLCJjb25uZWN0aW9uRWRnZSIsImZpbmREb3duc3RyZWFtRWRnZXNUb0RyYXciLCJkb3duc3RyZWFtTmV0d29yayIsInJlY3Vyc2l2ZURvd25TdHJlYW1TZWFyY2giLCJkb3duU3RyZWFtRWRnZSIsImxhc3REb3duU3RyZWFtRWRnZSIsIm5leHRMZXZlbERvd25TdHJlYW0iLCJmaW5kRWRnZXNGcm9tRXZlbnRQYXRoVG9EcmF3IiwicGFydCIsIm1hdGNoZWRQYXJ0IiwiZHJhd05ldHdvcmsiLCJkaXNwYXRjaCIsImxheWVyR3JvdXAiLCJsYXRsbmdzIiwic2hhcGVfZGF0YSIsImRhdGEiLCJsYXQiLCJsbmciLCJwb2x5bGluZUJhY2siLCJwb2x5bGluZSIsImNvbG9yIiwid2VpZ2h0Iiwib3BhY2l0eSIsImFkZExheWVyIiwidGFpbERhc2giLCJwb2x5bGluZURlY29yYXRvciIsIl9sYXRsbmdzIiwicGF0dGVybnMiLCJvZmZzZXQiLCJyZXBlYXQiLCJzeW1ib2wiLCJTeW1ib2wiLCJhcnJvd0hlYWQiLCJwaXhlbFNpemUiLCJwb2x5Z29uIiwicGF0aE9wdGlvbnMiLCJzdHJva2UiLCJ0YXJnZXRQb2ludCIsImJpbmRQb3B1cCIsImRpc3RhbmNlIiwiaGFzX2RldmljZSIsInBvaW50SXNXV1RQIiwiY3JlYXRlQnViYmxlUG9pbnQiLCJob3ZlcmVkIiwiZm9jdXNlZCIsImJyaW5nVG9Gcm9udCIsInBvbHlsaW5lRnJvbnQiLCJzZXRIb3ZlcmVkRWRnZVBhdGhzIiwiZmluZEFuZERyYXdFdmVudE5ldHdvcmtFZGdlcyIsInBvaW50SXNPYnNlcnZhdGlvbiIsIm9ic2VydmF0aW9ucyIsIm9icyIsInBvaW50X2lkIiwidHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9ldmVudHMvRXZlbnRVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0ICdzcmMvdXRpbGl0aWVzL3BvbHlsaW5lZGVjb3JhdG9yJztcbmltcG9ydCB3aGl0ZVBvaW50IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy93aGl0ZS1wb2ludC5wbmcnO1xuaW1wb3J0IHsgSUVkZ2UgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9lZGdlcy9tb2RlbHMvSUVkZ2UnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHsgc2V0SG92ZXJlZEVkZ2VQYXRocyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2V2ZW50cy9hY3Rpb25zJztcbmltcG9ydCB7IGNyZWF0ZUJ1YmJsZVBvaW50IH0gZnJvbSAnLi4vcG9pbnRzL1BvaW50VXRpbHMnO1xuXG5leHBvcnQgY29uc3QgZHJhd01hbmhvbGVJY29uID0gKHNvdXJjZVBvaW50OiBJUG9pbnQsIG1hcDogTC5NYXApID0+IHtcbiAgbGV0IHBvaW50SWNvbiA9IEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQb2ludCxcbiAgICBpY29uU2l6ZTogWzksIDldLFxuICAgIGljb25BbmNob3I6IFs0LjUsIDQuNV0sXG4gIH0pO1xuXG4gIGxldCBtYW5ob2xlSWNvbjogYW55ID0gTC5tYXJrZXIoXG4gICAgW3NvdXJjZVBvaW50LmxhdGl0dWRlLCBzb3VyY2VQb2ludC5sb25naXR1ZGVdLFxuICAgIHtcbiAgICAgIGljb246IHBvaW50SWNvbixcbiAgICAgIHJpc2VPbkhvdmVyOiB0cnVlLFxuICAgIH0sXG4gICkuYWRkVG8obWFwKTtcbiAgbWFuaG9sZUljb24uYmluZFRvb2x0aXAoXG4gICAgYCR7c291cmNlUG9pbnQuZ3JvdXAubmFtZX0gKCR7c291cmNlUG9pbnQuZ3JvdXAuc2VjdG9yX25hbWV9KWAsXG4gICk7XG4gIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHNvdXJjZVBvaW50LmlkO1xuICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0J10gPSAnVXBzdHJlYW1Qb2ludCc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rmlyc3RFZGdlT2ZFdmVudFBhdGggPSAoZWRnZXM6IElFZGdlW10sIGV2ZW50OiBJRXZlbnQpID0+IHtcbiAgaWYgKGV2ZW50LnBhdGhbMF0gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICByZXR1cm4gZWRnZXMuZmluZCgoZWRnZSkgPT4gZWRnZS5pZCA9PT0gZXZlbnQucGF0aFswXS5lZGdlX2lkKTtcbn07XG5cbmNvbnN0IGZpbmRFZGdlcyA9IChlZGdlcywgbmV4dFVwc3RyZWFtTGV2ZWxJZHMpID0+IHtcbiAgcmV0dXJuIGVkZ2VzLmZpbHRlcigoZWRnZTogSUVkZ2UpID0+XG4gICAgbmV4dFVwc3RyZWFtTGV2ZWxJZHMuaW5jbHVkZXMoZWRnZS50YXJnZXRfcG9pbnRfaWQpLFxuICApO1xufTtcblxuY29uc3QgcmVjdXJzaXZlVXBzdHJlYW1TZWFyY2ggPSAoXG4gIG5leHRMZXZlbCxcbiAgZWRnZXMsXG4gIG1hcEFsbEVkZ2VzTmVzdGluZyxcbiAgYWxsVXBzdHJlYW1FZGdlcyxcbikgPT4ge1xuICBsZXQgbmV4dFVwc3RyZWFtTGV2ZWxJZHMgPSBuZXh0TGV2ZWwubWFwKChlZGdlKSA9PiBlZGdlLnNvdXJjZV9wb2ludF9pZCk7XG4gIGlmIChmaW5kRWRnZXMoZWRnZXMsIG5leHRVcHN0cmVhbUxldmVsSWRzKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbWFwQWxsRWRnZXNOZXN0aW5nKFtuZXh0TGV2ZWxdKTtcbiAgfSBlbHNlIHtcbiAgICBhbGxVcHN0cmVhbUVkZ2VzLnB1c2goZmluZEVkZ2VzKGVkZ2VzLCBuZXh0VXBzdHJlYW1MZXZlbElkcykpO1xuICAgIHJlY3Vyc2l2ZVVwc3RyZWFtU2VhcmNoKFxuICAgICAgZmluZEVkZ2VzKGVkZ2VzLCBuZXh0VXBzdHJlYW1MZXZlbElkcyksXG4gICAgICBlZGdlcyxcbiAgICAgIG1hcEFsbEVkZ2VzTmVzdGluZyxcbiAgICAgIGFsbFVwc3RyZWFtRWRnZXMsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBtYXBBbGxFZGdlc05lc3RpbmcoYWxsVXBzdHJlYW1FZGdlcyk7XG59O1xuXG5jb25zdCBtYXBBbGxFZGdlc05lc3RpbmcgPSAoYWxsVXBzdHJlYW1FZGdlcykgPT4ge1xuICBsZXQgbWFwcGVkOiBhbnlbXSA9IFtdO1xuICBhbGxVcHN0cmVhbUVkZ2VzLmZvckVhY2goKGVkZ2VzKSA9PiB7XG4gICAgZWRnZXMuZm9yRWFjaCgoZWRnZSkgPT4ge1xuICAgICAgbWFwcGVkLnB1c2goZWRnZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBtYXBwZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXBzdHJlYW1FZGdlcyA9IChmaXJzdEVkZ2U6IElFZGdlLCBlZGdlczogSUVkZ2VbXSkgPT4ge1xuICBsZXQgYWxsVXBzdHJlYW1FZGdlczogYW55W10gPSBbXTtcbiAgbGV0IGZpcnN0VXBzdHJlYW1MZXZlbDogSUVkZ2VbXSA9IGVkZ2VzLmZpbHRlcihcbiAgICAoZWRnZSkgPT4gZWRnZS50YXJnZXRfcG9pbnRfaWQgPT09IGZpcnN0RWRnZSEuc291cmNlX3BvaW50X2lkLFxuICApO1xuXG4gIHJldHVybiByZWN1cnNpdmVVcHN0cmVhbVNlYXJjaChcbiAgICBmaXJzdFVwc3RyZWFtTGV2ZWwsXG4gICAgZWRnZXMsXG4gICAgbWFwQWxsRWRnZXNOZXN0aW5nLFxuICAgIGFsbFVwc3RyZWFtRWRnZXMsXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZFVwc3RyZWFtRWRnZXNUb0RyYXcgPSAoXG4gIHVwc3RyZWFtRWRnZXM6IElFZGdlW10sXG4gIGVkZ2VzVG9EcmF3OiBJRWRnZVtdLFxuICBwb2ludHM6IElQb2ludFtdLFxuICBlZGdlczogSUVkZ2VbXSxcbikgPT4ge1xuICB1cHN0cmVhbUVkZ2VzLmZvckVhY2goKHVwc3RyZWFtRWRnZSkgPT4ge1xuICAgIGlmICh1cHN0cmVhbUVkZ2UpIHtcbiAgICAgIGxldCBzb3VyY2VQb2ludCA9IHBvaW50cy5maW5kKFxuICAgICAgICAocG9pbnQpID0+IHBvaW50LmlkID09PSB1cHN0cmVhbUVkZ2UhLnNvdXJjZV9wb2ludF9pZCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChzb3VyY2VQb2ludCkgZWRnZXNUb0RyYXcucHVzaCh1cHN0cmVhbUVkZ2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgbGV0IGNvbm5lY3Rpb25FZGdlID0gZWRnZXMuZmluZChcbiAgICAoZWRnZSkgPT4gZWRnZS5zb3VyY2VfcG9pbnRfaWQgPT09IHVwc3RyZWFtRWRnZXNbMF0udGFyZ2V0X3BvaW50X2lkLFxuICApO1xuICBpZiAoY29ubmVjdGlvbkVkZ2UgIT09IHVuZGVmaW5lZCkgZWRnZXNUb0RyYXcucHVzaChjb25uZWN0aW9uRWRnZSk7XG4gIHJldHVybiBlZGdlc1RvRHJhdztcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kRG93bnN0cmVhbUVkZ2VzVG9EcmF3ID0gKFxuICBmaXJzdEVkZ2U6IElFZGdlLFxuICBlZGdlczogSUVkZ2VbXSxcbiAgZG93bnN0cmVhbU5ldHdvcmssXG4gIGVkZ2VzVG9EcmF3LFxuKSA9PiB7XG4gIHJlY3Vyc2l2ZURvd25TdHJlYW1TZWFyY2goZG93bnN0cmVhbU5ldHdvcmssIGVkZ2VzKS5mb3JFYWNoKFxuICAgIChkb3duU3RyZWFtRWRnZSkgPT4ge1xuICAgICAgZWRnZXNUb0RyYXcucHVzaChkb3duU3RyZWFtRWRnZSk7XG4gICAgfSxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWN1cnNpdmVEb3duU3RyZWFtU2VhcmNoID0gKFxuICBkb3duc3RyZWFtTmV0d29yazogSUVkZ2VbXSxcbiAgZWRnZXM6IElFZGdlW10sXG4pID0+IHtcbiAgbGV0IGxhc3REb3duU3RyZWFtRWRnZSA9IGRvd25zdHJlYW1OZXR3b3JrW2Rvd25zdHJlYW1OZXR3b3JrLmxlbmd0aCAtIDFdO1xuXG4gIGlmIChuZXh0TGV2ZWxEb3duU3RyZWFtKGxhc3REb3duU3RyZWFtRWRnZSwgZWRnZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBkb3duc3RyZWFtTmV0d29yaztcbiAgfSBlbHNlIHtcbiAgICBuZXh0TGV2ZWxEb3duU3RyZWFtKGxhc3REb3duU3RyZWFtRWRnZSwgZWRnZXMpLmZvckVhY2goKGVkZ2UpID0+IHtcbiAgICAgIGRvd25zdHJlYW1OZXR3b3JrLnB1c2goZWRnZSk7XG4gICAgICByZWN1cnNpdmVEb3duU3RyZWFtU2VhcmNoKGRvd25zdHJlYW1OZXR3b3JrLCBlZGdlcyk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZG93bnN0cmVhbU5ldHdvcms7XG59O1xuXG5leHBvcnQgY29uc3QgbmV4dExldmVsRG93blN0cmVhbSA9IChmaXJzdEVkZ2U6IElFZGdlLCBlZGdlczogSUVkZ2VbXSkgPT4ge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKFxuICAgIChlZGdlKSA9PiBlZGdlLnNvdXJjZV9wb2ludF9pZCA9PT0gZmlyc3RFZGdlLnRhcmdldF9wb2ludF9pZCxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kRWRnZXNGcm9tRXZlbnRQYXRoVG9EcmF3ID0gKFxuICBlZGdlc1RvRHJhdzogSUVkZ2VbXSxcbiAgZXZlbnQ6IElFdmVudCxcbiAgZWRnZXM6IElFZGdlW10sXG4pID0+IHtcbiAgZXZlbnQucGF0aC5mb3JFYWNoKChwYXJ0KSA9PiB7XG4gICAgbGV0IG1hdGNoZWRQYXJ0ID0gZWRnZXMuZmluZCgoZWRnZSkgPT4gZWRnZS5pZCA9PT0gcGFydC5lZGdlX2lkKTtcbiAgICBpZiAobWF0Y2hlZFBhcnQgIT09IHVuZGVmaW5lZCkgZWRnZXNUb0RyYXcucHVzaChtYXRjaGVkUGFydCk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdOZXR3b3JrID0gKFxuICBlZGdlczogSUVkZ2VbXSxcbiAgcG9pbnRzOiBJUG9pbnRbXSxcbiAgZGlzcGF0Y2gsXG4gIG1hcCxcbiAgZXZlbnQsXG4gIGxheWVyR3JvdXAsXG4pID0+IHtcbiAgbGV0IGxhdGxuZ3M6IGFueSA9IFtdO1xuICBlZGdlcy5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgZWRnZS5zaGFwZV9kYXRhLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xuICAgICAgbGF0bG5ncy5wdXNoKFtkYXRhLmxhdCwgZGF0YS5sbmddKTtcbiAgICB9KTtcblxuICAgIGxldCBwb2x5bGluZUJhY2s6IGFueSA9IEwucG9seWxpbmUobGF0bG5ncywge1xuICAgICAgY29sb3I6ICdyZ2IoMjI3LDIyNywyMjcpJyxcbiAgICAgIHdlaWdodDogNixcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgfSk7XG4gICAgbGF5ZXJHcm91cC5hZGRMYXllcihwb2x5bGluZUJhY2spO1xuXG4gICAgbGV0IHRhaWxEYXNoID0gTC5wb2x5bGluZURlY29yYXRvcihwb2x5bGluZUJhY2suX2xhdGxuZ3MsIHtcbiAgICAgIHBhdHRlcm5zOiBbXG4gICAgICAgIC8vIGRlZmluZXMgYSBwYXR0ZXJuIG9mIDEwcHgtd2lkZSBkYXNoZXMsIHJlcGVhdGVkIGV2ZXJ5IDIwcHggb24gdGhlIGxpbmVcbiAgICAgICAge1xuICAgICAgICAgIG9mZnNldDogMTUsXG4gICAgICAgICAgcmVwZWF0OiAyNSxcbiAgICAgICAgICBzeW1ib2w6IEwuU3ltYm9sLmFycm93SGVhZCh7XG4gICAgICAgICAgICBwaXhlbFNpemU6IDMsXG4gICAgICAgICAgICBwb2x5Z29uOiBmYWxzZSxcbiAgICAgICAgICAgIHBhdGhPcHRpb25zOiB7XG4gICAgICAgICAgICAgIHN0cm9rZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDAsMCwwKScsXG4gICAgICAgICAgICAgIHdlaWdodDogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIHRhaWxEYXNoWydrYW5kb19vYmplY3QnXSA9ICdEZWNvcmF0b3InO1xuICAgIGxheWVyR3JvdXAuYWRkTGF5ZXIodGFpbERhc2gpO1xuXG4gICAgaWYgKHBvaW50cy5sZW5ndGggIT09IDApIHtcbiAgICAgIGxldCBzb3VyY2VQb2ludCA9IHBvaW50cy5maW5kKFxuICAgICAgICAocG9pbnQ6IElQb2ludCkgPT4gcG9pbnQuaWQgPT09IGVkZ2Uuc291cmNlX3BvaW50X2lkLFxuICAgICAgKTtcbiAgICAgIGxldCB0YXJnZXRQb2ludCA9IHBvaW50cy5maW5kKFxuICAgICAgICAocG9pbnQ6IElQb2ludCkgPT4gcG9pbnQuaWQgPT09IGVkZ2UudGFyZ2V0X3BvaW50X2lkLFxuICAgICAgKTtcbiAgICAgIGlmIChzb3VyY2VQb2ludCAhPT0gdW5kZWZpbmVkICYmIHRhcmdldFBvaW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcG9seWxpbmVCYWNrLmJpbmRQb3B1cChgRWRnZSBJRDogJHtlZGdlLmlkfSw8YnI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBwb2ludDogJHtzb3VyY2VQb2ludC5ncm91cC5uYW1lfSw8YnI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldCBwb2ludDogJHt0YXJnZXRQb2ludC5ncm91cC5uYW1lfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzdGFuY2U6ICR7ZWRnZS5kaXN0YW5jZX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNvdXJjZVBvaW50KSBkcmF3TWFuaG9sZUljb24oc291cmNlUG9pbnQsIG1hcCk7XG4gICAgICBpZiAodGFyZ2V0UG9pbnQpIGRyYXdNYW5ob2xlSWNvbih0YXJnZXRQb2ludCwgbWFwKTtcbiAgICAgIGlmIChzb3VyY2VQb2ludCAmJiAoc291cmNlUG9pbnQuaGFzX2RldmljZSB8fCBwb2ludElzV1dUUChzb3VyY2VQb2ludCkpKVxuICAgICAgICBjcmVhdGVCdWJibGVQb2ludChcbiAgICAgICAgICBbc291cmNlUG9pbnQubGF0aXR1ZGUsIHNvdXJjZVBvaW50LmxvbmdpdHVkZV0sXG4gICAgICAgICAgc291cmNlUG9pbnQsXG4gICAgICAgICAgbWFwLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgbGF5ZXJHcm91cCxcbiAgICAgICAgKTtcbiAgICAgIGlmICh0YXJnZXRQb2ludCAmJiAodGFyZ2V0UG9pbnQuaGFzX2RldmljZSB8fCBwb2ludElzV1dUUCh0YXJnZXRQb2ludCkpKVxuICAgICAgICBjcmVhdGVCdWJibGVQb2ludChcbiAgICAgICAgICBbdGFyZ2V0UG9pbnQubGF0aXR1ZGUsIHRhcmdldFBvaW50LmxvbmdpdHVkZV0sXG4gICAgICAgICAgdGFyZ2V0UG9pbnQsXG4gICAgICAgICAgbWFwLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgbGF5ZXJHcm91cCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwb2x5bGluZUJhY2tbJ2thbmRvX29iamVjdF9pZCddID0gZWRnZS5pZDtcbiAgICBpZiAoZXZlbnQuaG92ZXJlZCkgcG9seWxpbmVCYWNrWydrYW5kb19vYmplY3QnXSA9ICdIb3ZlcmVkRWRnZSc7XG4gICAgaWYgKGV2ZW50LmZvY3VzZWQpIHBvbHlsaW5lQmFja1sna2FuZG9fb2JqZWN0J10gPSAnRm9jdXNlZEVkZ2UnO1xuXG4gICAgcG9seWxpbmVCYWNrLmJyaW5nVG9Gcm9udCgpO1xuICAgIHRhaWxEYXNoLmJyaW5nVG9Gcm9udCgpO1xuXG4gICAgbGV0IHBvbHlsaW5lRnJvbnQ6IGFueSA9IEwucG9seWxpbmUobGF0bG5ncywge1xuICAgICAgY29sb3I6ICdyZ2IoMjksMjksMjkpJyxcbiAgICAgIHdlaWdodDogMSxcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgfSk7XG5cbiAgICBwb2x5bGluZUZyb250WydrYW5kb19vYmplY3RfaWQnXSA9IGVkZ2UuaWQ7XG4gICAgaWYgKGV2ZW50LmhvdmVyZWQpIHBvbHlsaW5lRnJvbnRbJ2thbmRvX29iamVjdCddID0gJ0hvdmVyZWRFZGdlRnJvbnQnO1xuICAgIGlmIChldmVudC5mb2N1c2VkKSBwb2x5bGluZUZyb250WydrYW5kb19vYmplY3QnXSA9ICdGb2N1c2VkRWRnZUZyb250JztcbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvbHlsaW5lRnJvbnQpO1xuXG4gICAgcG9seWxpbmVGcm9udC5icmluZ1RvRnJvbnQoKTtcbiAgICBpZiAoZXZlbnQuaG92ZXJlZClcbiAgICAgIGRpc3BhdGNoKHNldEhvdmVyZWRFZGdlUGF0aHMoW3BvbHlsaW5lQmFjaywgcG9seWxpbmVGcm9udF0pKTtcbiAgICBsYXRsbmdzID0gW107XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRBbmREcmF3RXZlbnROZXR3b3JrRWRnZXMgPSAoXG4gIGVkZ2VzOiBJRWRnZVtdLFxuICBldmVudDogSUV2ZW50LFxuICBwb2ludHM6IElQb2ludFtdLFxuICBkaXNwYXRjaCxcbiAgbWFwLFxuICBsYXllckdyb3VwLFxuKSA9PiB7XG4gIGxldCBlZGdlc1RvRHJhdzogSUVkZ2VbXSA9IFtdO1xuICBsZXQgZmlyc3RFZGdlID0gZ2V0Rmlyc3RFZGdlT2ZFdmVudFBhdGgoZWRnZXMsIGV2ZW50KTtcblxuICBpZiAoZmlyc3RFZGdlICE9PSB1bmRlZmluZWQpIHtcbiAgICBsZXQgZG93bnN0cmVhbU5ldHdvcms6IElFZGdlW10gPSBbZmlyc3RFZGdlXTtcbiAgICBsZXQgdXBzdHJlYW1FZGdlcyA9IGdldFVwc3RyZWFtRWRnZXMoZmlyc3RFZGdlLCBlZGdlcyk7XG4gICAgaWYgKHVwc3RyZWFtRWRnZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIGlmICh1cHN0cmVhbUVkZ2VzLmxlbmd0aCAhPT0gMClcbiAgICAgIGZpbmRVcHN0cmVhbUVkZ2VzVG9EcmF3KHVwc3RyZWFtRWRnZXMsIGVkZ2VzVG9EcmF3LCBwb2ludHMsIGVkZ2VzKTtcbiAgICBmaW5kRG93bnN0cmVhbUVkZ2VzVG9EcmF3KGZpcnN0RWRnZSwgZWRnZXMsIGRvd25zdHJlYW1OZXR3b3JrLCBlZGdlc1RvRHJhdyk7XG4gIH1cblxuICBkcmF3TmV0d29yayhlZGdlc1RvRHJhdywgcG9pbnRzLCBkaXNwYXRjaCwgbWFwLCBldmVudCwgbGF5ZXJHcm91cCk7XG59O1xuXG5leHBvcnQgY29uc3QgcG9pbnRJc09ic2VydmF0aW9uID0gKGV2ZW50OiBJRXZlbnQsIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgcmV0dXJuIGV2ZW50Lm9ic2VydmF0aW9ucy5maW5kKChvYnMpID0+IG9icy5wb2ludF9pZCA9PT0gcG9pbnQuaWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHBvaW50SXNXV1RQID0gKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgcmV0dXJuIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLENBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBSUEsSUFBQUcsUUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQXlELFNBQUFLLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBUCx3QkFBQVcsR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFB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
258
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9ldmVudHMvRXZlbnRVdGlscy50cyJdLCJuYW1lcyI6WyJkcmF3TWFuaG9sZUljb24iLCJzb3VyY2VQb2ludCIsIm1hcCIsInBvaW50SWNvbiIsIkwiLCJpY29uIiwiaWNvblVybCIsIndoaXRlUG9pbnQiLCJpY29uU2l6ZSIsImljb25BbmNob3IiLCJtYW5ob2xlSWNvbiIsIm1hcmtlciIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwicmlzZU9uSG92ZXIiLCJhZGRUbyIsImJpbmRUb29sdGlwIiwiZ3JvdXAiLCJuYW1lIiwic2VjdG9yX25hbWUiLCJpZCIsImdldEZpcnN0RWRnZU9mRXZlbnRQYXRoIiwiZWRnZXMiLCJldmVudCIsInBhdGgiLCJ1bmRlZmluZWQiLCJmaW5kIiwiZWRnZSIsImVkZ2VfaWQiLCJmaW5kRWRnZXMiLCJuZXh0VXBzdHJlYW1MZXZlbElkcyIsImZpbHRlciIsImluY2x1ZGVzIiwidGFyZ2V0X3BvaW50X2lkIiwicmVjdXJzaXZlVXBzdHJlYW1TZWFyY2giLCJuZXh0TGV2ZWwiLCJtYXBBbGxFZGdlc05lc3RpbmciLCJhbGxVcHN0cmVhbUVkZ2VzIiwic291cmNlX3BvaW50X2lkIiwibGVuZ3RoIiwicHVzaCIsIm1hcHBlZCIsImZvckVhY2giLCJnZXRVcHN0cmVhbUVkZ2VzIiwiZmlyc3RFZGdlIiwiZmlyc3RVcHN0cmVhbUxldmVsIiwiZmluZFVwc3RyZWFtRWRnZXNUb0RyYXciLCJ1cHN0cmVhbUVkZ2VzIiwiZWRnZXNUb0RyYXciLCJwb2ludHMiLCJ1cHN0cmVhbUVkZ2UiLCJwb2ludCIsImNvbm5lY3Rpb25FZGdlIiwiZmluZERvd25zdHJlYW1FZGdlc1RvRHJhdyIsImRvd25zdHJlYW1OZXR3b3JrIiwicmVjdXJzaXZlRG93blN0cmVhbVNlYXJjaCIsImRvd25TdHJlYW1FZGdlIiwibGFzdERvd25TdHJlYW1FZGdlIiwibmV4dExldmVsRG93blN0cmVhbSIsImZpbmRFZGdlc0Zyb21FdmVudFBhdGhUb0RyYXciLCJwYXJ0IiwibWF0Y2hlZFBhcnQiLCJkcmF3TmV0d29yayIsImRpc3BhdGNoIiwibGF5ZXJHcm91cCIsImxhdGxuZ3MiLCJzaGFwZV9kYXRhIiwiZGF0YSIsImxhdCIsImxuZyIsInBvbHlsaW5lQmFjayIsInBvbHlsaW5lIiwiY29sb3IiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiYWRkTGF5ZXIiLCJ0YWlsRGFzaCIsInBvbHlsaW5lRGVjb3JhdG9yIiwiX2xhdGxuZ3MiLCJwYXR0ZXJucyIsIm9mZnNldCIsInJlcGVhdCIsInN5bWJvbCIsIlN5bWJvbCIsImFycm93SGVhZCIsInBpeGVsU2l6ZSIsInBvbHlnb24iLCJwYXRoT3B0aW9ucyIsInN0cm9rZSIsInRhcmdldFBvaW50IiwiYmluZFBvcHVwIiwiZGlzdGFuY2UiLCJoYXNfZGV2aWNlIiwicG9pbnRJc1dXVFAiLCJob3ZlcmVkIiwiZm9jdXNlZCIsImJyaW5nVG9Gcm9udCIsInBvbHlsaW5lRnJvbnQiLCJmaW5kQW5kRHJhd0V2ZW50TmV0d29ya0VkZ2VzIiwicG9pbnRJc09ic2VydmF0aW9uIiwib2JzZXJ2YXRpb25zIiwib2JzIiwicG9pbnRfaWQiLCJ0eXBlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFFTyxJQUFNQSxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUNDLFdBQUQsRUFBc0JDLEdBQXRCLEVBQXFDO0FBQ2xFLE1BQUlDLFNBQVMsR0FBR0MsaUJBQUVDLElBQUYsQ0FBTztBQUNyQkMsSUFBQUEsT0FBTyxFQUFFQyxtQkFEWTtBQUVyQkMsSUFBQUEsUUFBUSxFQUFFLENBQUMsQ0FBRCxFQUFJLENBQUosQ0FGVztBQUdyQkMsSUFBQUEsVUFBVSxFQUFFLENBQUMsR0FBRCxFQUFNLEdBQU47QUFIUyxHQUFQLENBQWhCOztBQU1BLE1BQUlDLFdBQWdCLEdBQUdOLGlCQUFFTyxNQUFGLENBQ3JCLENBQUNWLFdBQVcsQ0FBQ1csUUFBYixFQUF1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N0IsRUFDRU8sdUJBQXVCLENBQUNDLGFBQUQsRUFBZ0JDLFdBQWhCLEVBQTZCQyxNQUE3QixFQUFxQzNCLEtBQXJDLENBQXZCO0FBQ0YrQixJQUFBQSx5QkFBeUIsQ0FBQ1QsU0FBRCxFQUFZdEIsS0FBWixFQUFtQmdDLGlCQUFuQixFQUFzQ04sV0FBdEMsQ0FBekI7QUFDRDs7QUFFRGMsRUFBQUEsV0FBVyxDQUFDZCxXQUFELEVBQWNDLE1BQWQsRUFBc0JjLFFBQXRCLEVBQWdDN0QsR0FBaEMsRUFBcUNxQixLQUFyQyxFQUE0Q3lDLFVBQTVDLENBQVg7QUFDRCxDQXJCTTs7OztBQXVCQSxJQUFNbUMsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFxQixDQUFDNUUsS0FBRCxFQUFnQjRCLEtBQWhCLEVBQWtDO0FBQ2xFLFNBQU81QixLQUFLLENBQUM2RSxZQUFOLENBQW1CMUUsSUFBbkIsQ0FBd0IsVUFBQzJFLEdBQUQ7QUFBQSxXQUFTQSxHQUFHLENBQUNDLFFBQUosS0FBaUJuRCxLQUFLLENBQUMvQixFQUFoQztBQUFBLEdBQXhCLENBQVA7QUFDRCxDQUZNOzs7O0FBSUEsSUFBTXlFLFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQUMxQyxLQUFELEVBQW1CO0FBQzVDLFNBQU9BLEtBQUssQ0FBQ2xDLEtBQU4sQ0FBWXNGLElBQVosS0FBcUIsa0NBQTVCO0FBQ0QsQ0FGTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnbGVhZmxldC1wb2x5bGluZWRlY29yYXRvcic7XG5pbXBvcnQgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB3aGl0ZVBvaW50IGZyb20gJy4uLy4uLy4uL2Fzc2V0cy93aGl0ZS1wb2ludC5wbmcnO1xuaW1wb3J0IHsgSUVkZ2UgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9lZGdlcy9tb2RlbHMvSUVkZ2UnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvcG9pbnRzL21vZGVscy9JUG9pbnQnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHsgc2V0SG92ZXJlZEVkZ2VQYXRocyB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2V2ZW50cy9hY3Rpb25zJztcbmltcG9ydCB7IGNyZWF0ZUJ1YmJsZVBvaW50IH0gZnJvbSAnLi4vcG9pbnRzL1BvaW50VXRpbHMnO1xuXG5leHBvcnQgY29uc3QgZHJhd01hbmhvbGVJY29uID0gKHNvdXJjZVBvaW50OiBJUG9pbnQsIG1hcDogTC5NYXApID0+IHtcbiAgbGV0IHBvaW50SWNvbiA9IEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQb2ludCxcbiAgICBpY29uU2l6ZTogWzksIDldLFxuICAgIGljb25BbmNob3I6IFs0LjUsIDQuNV0sXG4gIH0pO1xuXG4gIGxldCBtYW5ob2xlSWNvbjogYW55ID0gTC5tYXJrZXIoXG4gICAgW3NvdXJjZVBvaW50LmxhdGl0dWRlLCBzb3VyY2VQb2ludC5sb25naXR1ZGVdLFxuICAgIHtcbiAgICAgIGljb246IHBvaW50SWNvbixcbiAgICAgIHJpc2VPbkhvdmVyOiB0cnVlLFxuICAgIH0sXG4gICkuYWRkVG8obWFwKTtcbiAgbWFuaG9sZUljb24uYmluZFRvb2x0aXAoXG4gICAgYCR7c291cmNlUG9pbnQuZ3JvdXAubmFtZX0gKCR7c291cmNlUG9pbnQuZ3JvdXAuc2VjdG9yX25hbWV9KWAsXG4gICk7XG4gIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3RfaWQnXSA9IHNvdXJjZVBvaW50LmlkO1xuICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0J10gPSAnVXBzdHJlYW1Qb2ludCc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rmlyc3RFZGdlT2ZFdmVudFBhdGggPSAoZWRnZXM6IElFZGdlW10sIGV2ZW50OiBJRXZlbnQpID0+IHtcbiAgaWYgKGV2ZW50LnBhdGhbMF0gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICByZXR1cm4gZWRnZXMuZmluZCgoZWRnZSkgPT4gZWRnZS5pZCA9PT0gZXZlbnQucGF0aFswXS5lZGdlX2lkKTtcbn07XG5cbmNvbnN0IGZpbmRFZGdlcyA9IChlZGdlcywgbmV4dFVwc3RyZWFtTGV2ZWxJZHMpID0+IHtcbiAgcmV0dXJuIGVkZ2VzLmZpbHRlcigoZWRnZTogSUVkZ2UpID0+XG4gICAgbmV4dFVwc3RyZWFtTGV2ZWxJZHMuaW5jbHVkZXMoZWRnZS50YXJnZXRfcG9pbnRfaWQpLFxuICApO1xufTtcblxuY29uc3QgcmVjdXJzaXZlVXBzdHJlYW1TZWFyY2ggPSAoXG4gIG5leHRMZXZlbCxcbiAgZWRnZXMsXG4gIG1hcEFsbEVkZ2VzTmVzdGluZyxcbiAgYWxsVXBzdHJlYW1FZGdlcyxcbikgPT4ge1xuICBsZXQgbmV4dFVwc3RyZWFtTGV2ZWxJZHMgPSBuZXh0TGV2ZWwubWFwKChlZGdlKSA9PiBlZGdlLnNvdXJjZV9wb2ludF9pZCk7XG4gIGlmIChmaW5kRWRnZXMoZWRnZXMsIG5leHRVcHN0cmVhbUxldmVsSWRzKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbWFwQWxsRWRnZXNOZXN0aW5nKFtuZXh0TGV2ZWxdKTtcbiAgfSBlbHNlIHtcbiAgICBhbGxVcHN0cmVhbUVkZ2VzLnB1c2goZmluZEVkZ2VzKGVkZ2VzLCBuZXh0VXBzdHJlYW1MZXZlbElkcykpO1xuICAgIHJlY3Vyc2l2ZVVwc3RyZWFtU2VhcmNoKFxuICAgICAgZmluZEVkZ2VzKGVkZ2VzLCBuZXh0VXBzdHJlYW1MZXZlbElkcyksXG4gICAgICBlZGdlcyxcbiAgICAgIG1hcEFsbEVkZ2VzTmVzdGluZyxcbiAgICAgIGFsbFVwc3RyZWFtRWRnZXMsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBtYXBBbGxFZGdlc05lc3RpbmcoYWxsVXBzdHJlYW1FZGdlcyk7XG59O1xuXG5jb25zdCBtYXBBbGxFZGdlc05lc3RpbmcgPSAoYWxsVXBzdHJlYW1FZGdlcykgPT4ge1xuICBsZXQgbWFwcGVkOiBhbnlbXSA9IFtdO1xuICBhbGxVcHN0cmVhbUVkZ2VzLmZvckVhY2goKGVkZ2VzKSA9PiB7XG4gICAgZWRnZXMuZm9yRWFjaCgoZWRnZSkgPT4ge1xuICAgICAgbWFwcGVkLnB1c2goZWRnZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBtYXBwZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXBzdHJlYW1FZGdlcyA9IChmaXJzdEVkZ2U6IElFZGdlLCBlZGdlczogSUVkZ2VbXSkgPT4ge1xuICBsZXQgYWxsVXBzdHJlYW1FZGdlczogYW55W10gPSBbXTtcbiAgbGV0IGZpcnN0VXBzdHJlYW1MZXZlbDogSUVkZ2VbXSA9IGVkZ2VzLmZpbHRlcihcbiAgICAoZWRnZSkgPT4gZWRnZS50YXJnZXRfcG9pbnRfaWQgPT09IGZpcnN0RWRnZSEuc291cmNlX3BvaW50X2lkLFxuICApO1xuXG4gIHJldHVybiByZWN1cnNpdmVVcHN0cmVhbVNlYXJjaChcbiAgICBmaXJzdFVwc3RyZWFtTGV2ZWwsXG4gICAgZWRnZXMsXG4gICAgbWFwQWxsRWRnZXNOZXN0aW5nLFxuICAgIGFsbFVwc3RyZWFtRWRnZXMsXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZFVwc3RyZWFtRWRnZXNUb0RyYXcgPSAoXG4gIHVwc3RyZWFtRWRnZXM6IElFZGdlW10sXG4gIGVkZ2VzVG9EcmF3OiBJRWRnZVtdLFxuICBwb2ludHM6IElQb2ludFtdLFxuICBlZGdlczogSUVkZ2VbXSxcbikgPT4ge1xuICB1cHN0cmVhbUVkZ2VzLmZvckVhY2goKHVwc3RyZWFtRWRnZSkgPT4ge1xuICAgIGlmICh1cHN0cmVhbUVkZ2UpIHtcbiAgICAgIGxldCBzb3VyY2VQb2ludCA9IHBvaW50cy5maW5kKFxuICAgICAgICAocG9pbnQpID0+IHBvaW50LmlkID09PSB1cHN0cmVhbUVkZ2UhLnNvdXJjZV9wb2ludF9pZCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChzb3VyY2VQb2ludCkgZWRnZXNUb0RyYXcucHVzaCh1cHN0cmVhbUVkZ2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgbGV0IGNvbm5lY3Rpb25FZGdlID0gZWRnZXMuZmluZChcbiAgICAoZWRnZSkgPT4gZWRnZS5zb3VyY2VfcG9pbnRfaWQgPT09IHVwc3RyZWFtRWRnZXNbMF0udGFyZ2V0X3BvaW50X2lkLFxuICApO1xuICBpZiAoY29ubmVjdGlvbkVkZ2UgIT09IHVuZGVmaW5lZCkgZWRnZXNUb0RyYXcucHVzaChjb25uZWN0aW9uRWRnZSk7XG4gIHJldHVybiBlZGdlc1RvRHJhdztcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kRG93bnN0cmVhbUVkZ2VzVG9EcmF3ID0gKFxuICBmaXJzdEVkZ2U6IElFZGdlLFxuICBlZGdlczogSUVkZ2VbXSxcbiAgZG93bnN0cmVhbU5ldHdvcmssXG4gIGVkZ2VzVG9EcmF3LFxuKSA9PiB7XG4gIHJlY3Vyc2l2ZURvd25TdHJlYW1TZWFyY2goZG93bnN0cmVhbU5ldHdvcmssIGVkZ2VzKS5mb3JFYWNoKFxuICAgIChkb3duU3RyZWFtRWRnZSkgPT4ge1xuICAgICAgZWRnZXNUb0RyYXcucHVzaChkb3duU3RyZWFtRWRnZSk7XG4gICAgfSxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWN1cnNpdmVEb3duU3RyZWFtU2VhcmNoID0gKFxuICBkb3duc3RyZWFtTmV0d29yazogSUVkZ2VbXSxcbiAgZWRnZXM6IElFZGdlW10sXG4pID0+IHtcbiAgbGV0IGxhc3REb3duU3RyZWFtRWRnZSA9IGRvd25zdHJlYW1OZXR3b3JrW2Rvd25zdHJlYW1OZXR3b3JrLmxlbmd0aCAtIDFdO1xuXG4gIGlmIChuZXh0TGV2ZWxEb3duU3RyZWFtKGxhc3REb3duU3RyZWFtRWRnZSwgZWRnZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBkb3duc3RyZWFtTmV0d29yaztcbiAgfSBlbHNlIHtcbiAgICBuZXh0TGV2ZWxEb3duU3RyZWFtKGxhc3REb3duU3RyZWFtRWRnZSwgZWRnZXMpLmZvckVhY2goKGVkZ2UpID0+IHtcbiAgICAgIGRvd25zdHJlYW1OZXR3b3JrLnB1c2goZWRnZSk7XG4gICAgICByZWN1cnNpdmVEb3duU3RyZWFtU2VhcmNoKGRvd25zdHJlYW1OZXR3b3JrLCBlZGdlcyk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZG93bnN0cmVhbU5ldHdvcms7XG59O1xuXG5leHBvcnQgY29uc3QgbmV4dExldmVsRG93blN0cmVhbSA9IChmaXJzdEVkZ2U6IElFZGdlLCBlZGdlczogSUVkZ2VbXSkgPT4ge1xuICByZXR1cm4gZWRnZXMuZmlsdGVyKFxuICAgIChlZGdlKSA9PiBlZGdlLnNvdXJjZV9wb2ludF9pZCA9PT0gZmlyc3RFZGdlLnRhcmdldF9wb2ludF9pZCxcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kRWRnZXNGcm9tRXZlbnRQYXRoVG9EcmF3ID0gKFxuICBlZGdlc1RvRHJhdzogSUVkZ2VbXSxcbiAgZXZlbnQ6IElFdmVudCxcbiAgZWRnZXM6IElFZGdlW10sXG4pID0+IHtcbiAgZXZlbnQucGF0aC5mb3JFYWNoKChwYXJ0KSA9PiB7XG4gICAgbGV0IG1hdGNoZWRQYXJ0ID0gZWRnZXMuZmluZCgoZWRnZSkgPT4gZWRnZS5pZCA9PT0gcGFydC5lZGdlX2lkKTtcbiAgICBpZiAobWF0Y2hlZFBhcnQgIT09IHVuZGVmaW5lZCkgZWRnZXNUb0RyYXcucHVzaChtYXRjaGVkUGFydCk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRyYXdOZXR3b3JrID0gKFxuICBlZGdlczogSUVkZ2VbXSxcbiAgcG9pbnRzOiBJUG9pbnRbXSxcbiAgZGlzcGF0Y2gsXG4gIG1hcCxcbiAgZXZlbnQsXG4gIGxheWVyR3JvdXAsXG4pID0+IHtcbiAgbGV0IGxhdGxuZ3M6IGFueSA9IFtdO1xuICBlZGdlcy5mb3JFYWNoKChlZGdlKSA9PiB7XG4gICAgZWRnZS5zaGFwZV9kYXRhLmZvckVhY2goKGRhdGE6IGFueSkgPT4ge1xuICAgICAgbGF0bG5ncy5wdXNoKFtkYXRhLmxhdCwgZGF0YS5sbmddKTtcbiAgICB9KTtcblxuICAgIGxldCBwb2x5bGluZUJhY2s6IGFueSA9IEwucG9seWxpbmUobGF0bG5ncywge1xuICAgICAgY29sb3I6ICdyZ2IoMjI3LDIyNywyMjcpJyxcbiAgICAgIHdlaWdodDogNixcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgfSk7XG4gICAgbGF5ZXJHcm91cC5hZGRMYXllcihwb2x5bGluZUJhY2spO1xuXG4gICAgbGV0IHRhaWxEYXNoID0gTC5wb2x5bGluZURlY29yYXRvcihwb2x5bGluZUJhY2suX2xhdGxuZ3MsIHtcbiAgICAgIHBhdHRlcm5zOiBbXG4gICAgICAgIC8vIGRlZmluZXMgYSBwYXR0ZXJuIG9mIDEwcHgtd2lkZSBkYXNoZXMsIHJlcGVhdGVkIGV2ZXJ5IDIwcHggb24gdGhlIGxpbmVcbiAgICAgICAge1xuICAgICAgICAgIG9mZnNldDogMTUsXG4gICAgICAgICAgcmVwZWF0OiAyNSxcbiAgICAgICAgICBzeW1ib2w6IEwuU3ltYm9sLmFycm93SGVhZCh7XG4gICAgICAgICAgICBwaXhlbFNpemU6IDMsXG4gICAgICAgICAgICBwb2x5Z29uOiBmYWxzZSxcbiAgICAgICAgICAgIHBhdGhPcHRpb25zOiB7XG4gICAgICAgICAgICAgIHN0cm9rZTogdHJ1ZSxcbiAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDAsMCwwKScsXG4gICAgICAgICAgICAgIHdlaWdodDogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIHRhaWxEYXNoWydrYW5kb19vYmplY3QnXSA9ICdEZWNvcmF0b3InO1xuICAgIGxheWVyR3JvdXAuYWRkTGF5ZXIodGFpbERhc2gpO1xuXG4gICAgaWYgKHBvaW50cy5sZW5ndGggIT09IDApIHtcbiAgICAgIGxldCBzb3VyY2VQb2ludCA9IHBvaW50cy5maW5kKFxuICAgICAgICAocG9pbnQ6IElQb2ludCkgPT4gcG9pbnQuaWQgPT09IGVkZ2Uuc291cmNlX3BvaW50X2lkLFxuICAgICAgKTtcbiAgICAgIGxldCB0YXJnZXRQb2ludCA9IHBvaW50cy5maW5kKFxuICAgICAgICAocG9pbnQ6IElQb2ludCkgPT4gcG9pbnQuaWQgPT09IGVkZ2UudGFyZ2V0X3BvaW50X2lkLFxuICAgICAgKTtcbiAgICAgIGlmIChzb3VyY2VQb2ludCAhPT0gdW5kZWZpbmVkICYmIHRhcmdldFBvaW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcG9seWxpbmVCYWNrLmJpbmRQb3B1cChgRWRnZSBJRDogJHtlZGdlLmlkfSw8YnI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSBwb2ludDogJHtzb3VyY2VQb2ludC5ncm91cC5uYW1lfSw8YnI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldCBwb2ludDogJHt0YXJnZXRQb2ludC5ncm91cC5uYW1lfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzdGFuY2U6ICR7ZWRnZS5kaXN0YW5jZX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNvdXJjZVBvaW50KSBkcmF3TWFuaG9sZUljb24oc291cmNlUG9pbnQsIG1hcCk7XG4gICAgICBpZiAodGFyZ2V0UG9pbnQpIGRyYXdNYW5ob2xlSWNvbih0YXJnZXRQb2ludCwgbWFwKTtcbiAgICAgIGlmIChzb3VyY2VQb2ludCAmJiAoc291cmNlUG9pbnQuaGFzX2RldmljZSB8fCBwb2ludElzV1dUUChzb3VyY2VQb2ludCkpKVxuICAgICAgICBjcmVhdGVCdWJibGVQb2ludChcbiAgICAgICAgICBbc291cmNlUG9pbnQubGF0aXR1ZGUsIHNvdXJjZVBvaW50LmxvbmdpdHVkZV0sXG4gICAgICAgICAgc291cmNlUG9pbnQsXG4gICAgICAgICAgbWFwLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgbGF5ZXJHcm91cCxcbiAgICAgICAgKTtcbiAgICAgIGlmICh0YXJnZXRQb2ludCAmJiAodGFyZ2V0UG9pbnQuaGFzX2RldmljZSB8fCBwb2ludElzV1dUUCh0YXJnZXRQb2ludCkpKVxuICAgICAgICBjcmVhdGVCdWJibGVQb2ludChcbiAgICAgICAgICBbdGFyZ2V0UG9pbnQubGF0aXR1ZGUsIHRhcmdldFBvaW50LmxvbmdpdHVkZV0sXG4gICAgICAgICAgdGFyZ2V0UG9pbnQsXG4gICAgICAgICAgbWFwLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgbGF5ZXJHcm91cCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwb2x5bGluZUJhY2tbJ2thbmRvX29iamVjdF9pZCddID0gZWRnZS5pZDtcbiAgICBpZiAoZXZlbnQuaG92ZXJlZCkgcG9seWxpbmVCYWNrWydrYW5kb19vYmplY3QnXSA9ICdIb3ZlcmVkRWRnZSc7XG4gICAgaWYgKGV2ZW50LmZvY3VzZWQpIHBvbHlsaW5lQmFja1sna2FuZG9fb2JqZWN0J10gPSAnRm9jdXNlZEVkZ2UnO1xuXG4gICAgcG9seWxpbmVCYWNrLmJyaW5nVG9Gcm9udCgpO1xuICAgIHRhaWxEYXNoLmJyaW5nVG9Gcm9udCgpO1xuXG4gICAgbGV0IHBvbHlsaW5lRnJvbnQ6IGFueSA9IEwucG9seWxpbmUobGF0bG5ncywge1xuICAgICAgY29sb3I6ICdyZ2IoMjksMjksMjkpJyxcbiAgICAgIHdlaWdodDogMSxcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgfSk7XG5cbiAgICBwb2x5bGluZUZyb250WydrYW5kb19vYmplY3RfaWQnXSA9IGVkZ2UuaWQ7XG4gICAgaWYgKGV2ZW50LmhvdmVyZWQpIHBvbHlsaW5lRnJvbnRbJ2thbmRvX29iamVjdCddID0gJ0hvdmVyZWRFZGdlRnJvbnQnO1xuICAgIGlmIChldmVudC5mb2N1c2VkKSBwb2x5bGluZUZyb250WydrYW5kb19vYmplY3QnXSA9ICdGb2N1c2VkRWRnZUZyb250JztcbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvbHlsaW5lRnJvbnQpO1xuXG4gICAgcG9seWxpbmVGcm9udC5icmluZ1RvRnJvbnQoKTtcbiAgICBpZiAoZXZlbnQuaG92ZXJlZClcbiAgICAgIGRpc3BhdGNoKHNldEhvdmVyZWRFZGdlUGF0aHMoW3BvbHlsaW5lQmFjaywgcG9seWxpbmVGcm9udF0pKTtcbiAgICBsYXRsbmdzID0gW107XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRBbmREcmF3RXZlbnROZXR3b3JrRWRnZXMgPSAoXG4gIGVkZ2VzOiBJRWRnZVtdLFxuICBldmVudDogSUV2ZW50LFxuICBwb2ludHM6IElQb2ludFtdLFxuICBkaXNwYXRjaCxcbiAgbWFwLFxuICBsYXllckdyb3VwLFxuKSA9PiB7XG4gIGxldCBlZGdlc1RvRHJhdzogSUVkZ2VbXSA9IFtdO1xuICBsZXQgZmlyc3RFZGdlID0gZ2V0Rmlyc3RFZGdlT2ZFdmVudFBhdGgoZWRnZXMsIGV2ZW50KTtcblxuICBpZiAoZmlyc3RFZGdlICE9PSB1bmRlZmluZWQpIHtcbiAgICBsZXQgZG93bnN0cmVhbU5ldHdvcms6IElFZGdlW10gPSBbZmlyc3RFZGdlXTtcbiAgICBsZXQgdXBzdHJlYW1FZGdlcyA9IGdldFVwc3RyZWFtRWRnZXMoZmlyc3RFZGdlLCBlZGdlcyk7XG4gICAgaWYgKHVwc3RyZWFtRWRnZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIGlmICh1cHN0cmVhbUVkZ2VzLmxlbmd0aCAhPT0gMClcbiAgICAgIGZpbmRVcHN0cmVhbUVkZ2VzVG9EcmF3KHVwc3RyZWFtRWRnZXMsIGVkZ2VzVG9EcmF3LCBwb2ludHMsIGVkZ2VzKTtcbiAgICBmaW5kRG93bnN0cmVhbUVkZ2VzVG9EcmF3KGZpcnN0RWRnZSwgZWRnZXMsIGRvd25zdHJlYW1OZXR3b3JrLCBlZGdlc1RvRHJhdyk7XG4gIH1cblxuICBkcmF3TmV0d29yayhlZGdlc1RvRHJhdywgcG9pbnRzLCBkaXNwYXRjaCwgbWFwLCBldmVudCwgbGF5ZXJHcm91cCk7XG59O1xuXG5leHBvcnQgY29uc3QgcG9pbnRJc09ic2VydmF0aW9uID0gKGV2ZW50OiBJRXZlbnQsIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgcmV0dXJuIGV2ZW50Lm9ic2VydmF0aW9ucy5maW5kKChvYnMpID0+IG9icy5wb2ludF9pZCA9PT0gcG9pbnQuaWQpO1xufTtcblxuZXhwb3J0IGNvbnN0IHBvaW50SXNXV1RQID0gKHBvaW50OiBJUG9pbnQpID0+IHtcbiAgcmV0dXJuIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc7XG59O1xuIl19
@@ -1,37 +1,50 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports.NetworkForSpecificEvent = void 0;
11
+
9
12
  var _leaflet = _interopRequireDefault(require("leaflet"));
13
+
10
14
  var _react = _interopRequireWildcard(require("react"));
15
+
11
16
  var _reactRedux = require("react-redux");
17
+
12
18
  var _actions = require("store/events/actions");
19
+
13
20
  var _EventUtils = require("./EventUtils");
21
+
14
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+
15
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
- // @ts-ignore
17
25
 
26
+ // @ts-ignore
18
27
  var NetworkForSpecificEvent = function NetworkForSpecificEvent(_ref) {
19
28
  var event = _ref.event,
20
- edges = _ref.edges,
21
- points = _ref.points,
22
- map = _ref.map;
29
+ edges = _ref.edges,
30
+ points = _ref.points,
31
+ map = _ref.map;
23
32
  var dispatch = (0, _reactRedux.useDispatch)();
33
+
24
34
  var cleanupLogic = function cleanupLogic() {
25
35
  dispatch((0, _actions.setHoveredEdgePaths)([]));
26
36
  var layers = map._layers;
37
+
27
38
  for (var property in layers) {
28
39
  if (layers[property].kando_object !== undefined && (layers[property].kando_object === 'UpstreamPoint' || layers[property].kando_object === 'Point')) {
29
40
  map.removeLayer(layers[property]);
30
41
  }
31
42
  }
32
43
  };
44
+
33
45
  (0, _react.useEffect)(function () {
34
46
  var layerGroup = _leaflet.default.layerGroup();
47
+
35
48
  (0, _EventUtils.findAndDrawEventNetworkEdges)(edges, event, points, dispatch, map, layerGroup);
36
49
  layerGroup.addTo(map);
37
50
  return function cleanup() {
@@ -40,5 +53,6 @@ var NetworkForSpecificEvent = function NetworkForSpecificEvent(_ref) {
40
53
  }, [event]);
41
54
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
42
55
  };
56
+
43
57
  exports.NetworkForSpecificEvent = NetworkForSpecificEvent;
44
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfcmVhY3RSZWR1eCIsIl9hY3Rpb25zIiwiX0V2ZW50VXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIk5ldHdvcmtGb3JTcGVjaWZpY0V2ZW50IiwiX3JlZiIsImV2ZW50IiwiZWRnZXMiLCJwb2ludHMiLCJtYXAiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwiY2xlYW51cExvZ2ljIiwic2V0SG92ZXJlZEVkZ2VQYXRocyIsImxheWVycyIsIl9sYXllcnMiLCJwcm9wZXJ0eSIsImthbmRvX29iamVjdCIsInVuZGVmaW5lZCIsInJlbW92ZUxheWVyIiwidXNlRWZmZWN0IiwibGF5ZXJHcm91cCIsIkwiLCJmaW5kQW5kRHJhd0V2ZW50TmV0d29ya0VkZ2VzIiwiYWRkVG8iLCJjbGVhbnVwIiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9ldmVudHMvTmV0d29ya0ZvclNwZWNpZmljRXZlbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCBMLCB7IE1hcCBhcyBMZWFmbGV0TWFwIH0gZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyBzZXRIb3ZlcmVkRWRnZVBhdGhzIH0gZnJvbSAnc3JjL3N0b3JlL2V2ZW50cy9hY3Rpb25zJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ3NyYy9zdG9yZS9ldmVudHMvbW9kZWxzL0lFdmVudCc7XG5pbXBvcnQgeyBJRWRnZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2VkZ2VzL21vZGVscy9JRWRnZSc7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgeyBmaW5kQW5kRHJhd0V2ZW50TmV0d29ya0VkZ2VzIH0gZnJvbSAnLi9FdmVudFV0aWxzJztcblxudHlwZSBJUHJvcHMgPSB7XG4gIGV2ZW50OiBJRXZlbnQ7XG4gIGVkZ2VzOiBJRWRnZVtdO1xuICBwb2ludHM6IElQb2ludFtdO1xuICBtYXA6IExlYWZsZXRNYXAgfCBhbnk7XG59O1xuXG5leHBvcnQgY29uc3QgTmV0d29ya0ZvclNwZWNpZmljRXZlbnQ6IFJlYWN0LkZDPElQcm9wcz4gPSAoe1xuICBldmVudCxcbiAgZWRnZXMsXG4gIHBvaW50cyxcbiAgbWFwLFxufSkgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IGNsZWFudXBMb2dpYyA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChzZXRIb3ZlcmVkRWRnZVBhdGhzKFtdKSk7XG4gICAgbGV0IGxheWVycyA9IG1hcC5fbGF5ZXJzO1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gbGF5ZXJzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGxheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgKGxheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0ID09PSAnVXBzdHJlYW1Qb2ludCcgfHxcbiAgICAgICAgICBsYXllcnNbcHJvcGVydHldLmthbmRvX29iamVjdCA9PT0gJ1BvaW50JylcbiAgICAgICkge1xuICAgICAgICBtYXAucmVtb3ZlTGF5ZXIobGF5ZXJzW3Byb3BlcnR5XSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGxheWVyR3JvdXAgPSBMLmxheWVyR3JvdXAoKTtcbiAgICBmaW5kQW5kRHJhd0V2ZW50TmV0d29ya0VkZ2VzKFxuICAgICAgZWRnZXMsXG4gICAgICBldmVudCxcbiAgICAgIHBvaW50cyxcbiAgICAgIGRpc3BhdGNoLFxuICAgICAgbWFwLFxuICAgICAgbGF5ZXJHcm91cCxcbiAgICApO1xuICAgIGxheWVyR3JvdXAuYWRkVG8obWFwKTtcblxuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgY2xlYW51cExvZ2ljKCk7XG4gICAgfTtcbiAgfSwgW2V2ZW50XSk7XG5cbiAgcmV0dXJuIDw+PC8+O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFJQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFBNEQsU0FBQU0seUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFMLHdCQUFBUyxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFB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
58
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9ldmVudHMvTmV0d29ya0ZvclNwZWNpZmljRXZlbnQudHN4Il0sIm5hbWVzIjpbIk5ldHdvcmtGb3JTcGVjaWZpY0V2ZW50IiwiZXZlbnQiLCJlZGdlcyIsInBvaW50cyIsIm1hcCIsImRpc3BhdGNoIiwiY2xlYW51cExvZ2ljIiwibGF5ZXJzIiwiX2xheWVycyIsInByb3BlcnR5Iiwia2FuZG9fb2JqZWN0IiwidW5kZWZpbmVkIiwicmVtb3ZlTGF5ZXIiLCJsYXllckdyb3VwIiwiTCIsImFkZFRvIiwiY2xlYW51cCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQTs7Ozs7O0FBUkE7QUFpQk8sSUFBTUEsdUJBQXlDLEdBQUcsU0FBNUNBLHVCQUE0QyxPQUtuRDtBQUFBLE1BSkpDLEtBSUksUUFKSkEsS0FJSTtBQUFBLE1BSEpDLEtBR0ksUUFISkEsS0FHSTtBQUFBLE1BRkpDLE1BRUksUUFGSkEsTUFFSTtBQUFBLE1BREpDLEdBQ0ksUUFESkEsR0FDSTtBQUNKLE1BQU1DLFFBQVEsR0FBRyw4QkFBakI7O0FBQ0EsTUFBTUMsWUFBWSxHQUFHLFNBQWZBLFlBQWUsR0FBTTtBQUN6QkQsSUFBQUEsUUFBUSxDQUFDLGtDQUFvQixFQUFwQixDQUFELENBQVI7QUFDQSxRQUFJRSxNQUFNLEdBQUdILEdBQUcsQ0FBQ0ksT0FBakI7O0FBQ0EsU0FBSyxJQUFNQyxRQUFYLElBQXVCRixNQUF2QixFQUErQjtBQUM3QixVQUNFQSxNQUFNLENBQUNFLFFBQUQsQ0FBTixDQUFpQkMsWUFBakIsS0FBa0NDLFNBQWxDLEtBQ0NKLE1BQU0sQ0FBQ0UsUUFBRCxDQUFOLENBQWlCQyxZQUFqQixLQUFrQyxlQUFsQyxJQUNDSCxNQUFNLENBQUNFLFFBQUQsQ0FBTixDQUFpQkMsWUFBakIsS0FBa0MsT0FGcEMsQ0FERixFQUlFO0FBQ0FOLFFBQUFBLEdBQUcsQ0FBQ1EsV0FBSixDQUFnQkwsTUFBTSxDQUFDRSxRQUFELENBQXRCO0FBQ0Q7QUFDRjtBQUNGLEdBWkQ7O0FBY0Esd0JBQVUsWUFBTTtBQUNkLFFBQUlJLFVBQVUsR0FBR0MsaUJBQUVELFVBQUYsRUFBakI7O0FBQ0Esa0RBQ0VYLEtBREYsRUFFRUQsS0FGRixFQUdFRSxNQUhGLEVBSUVFLFFBSkYsRUFLRUQsR0FMRixFQU1FUyxVQU5GO0FBUUFBLElBQUFBLFVBQVUsQ0FBQ0UsS0FBWCxDQUFpQlgsR0FBakI7QUFFQSxXQUFPLFNBQVNZLE9BQVQsR0FBbUI7QUFDeEJWLE1BQUFBLFlBQVk7QUFDYixLQUZEO0FBR0QsR0FmRCxFQWVHLENBQUNMLEtBQUQsQ0FmSDtBQWlCQSxzQkFBTywyREFBUDtBQUNELENBdkNNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0IEwsIHsgTWFwIGFzIExlYWZsZXRNYXAgfSBmcm9tICdsZWFmbGV0JztcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IHNldEhvdmVyZWRFZGdlUGF0aHMgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL2FjdGlvbnMnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnc3JjL3N0b3JlL2V2ZW50cy9tb2RlbHMvSUV2ZW50JztcbmltcG9ydCB7IElFZGdlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZWRnZXMvbW9kZWxzL0lFZGdlJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcbmltcG9ydCB7IGZpbmRBbmREcmF3RXZlbnROZXR3b3JrRWRnZXMgfSBmcm9tICcuL0V2ZW50VXRpbHMnO1xuXG50eXBlIElQcm9wcyA9IHtcbiAgZXZlbnQ6IElFdmVudDtcbiAgZWRnZXM6IElFZGdlW107XG4gIHBvaW50czogSVBvaW50W107XG4gIG1hcDogTGVhZmxldE1hcCB8IGFueTtcbn07XG5cbmV4cG9ydCBjb25zdCBOZXR3b3JrRm9yU3BlY2lmaWNFdmVudDogUmVhY3QuRkM8SVByb3BzPiA9ICh7XG4gIGV2ZW50LFxuICBlZGdlcyxcbiAgcG9pbnRzLFxuICBtYXAsXG59KSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgY2xlYW51cExvZ2ljID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHNldEhvdmVyZWRFZGdlUGF0aHMoW10pKTtcbiAgICBsZXQgbGF5ZXJzID0gbWFwLl9sYXllcnM7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBsYXllcnMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgbGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3QgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAobGF5ZXJzW3Byb3BlcnR5XS5rYW5kb19vYmplY3QgPT09ICdVcHN0cmVhbVBvaW50JyB8fFxuICAgICAgICAgIGxheWVyc1twcm9wZXJ0eV0ua2FuZG9fb2JqZWN0ID09PSAnUG9pbnQnKVxuICAgICAgKSB7XG4gICAgICAgIG1hcC5yZW1vdmVMYXllcihsYXllcnNbcHJvcGVydHldKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgbGF5ZXJHcm91cCA9IEwubGF5ZXJHcm91cCgpO1xuICAgIGZpbmRBbmREcmF3RXZlbnROZXR3b3JrRWRnZXMoXG4gICAgICBlZGdlcyxcbiAgICAgIGV2ZW50LFxuICAgICAgcG9pbnRzLFxuICAgICAgZGlzcGF0Y2gsXG4gICAgICBtYXAsXG4gICAgICBsYXllckdyb3VwLFxuICAgICk7XG4gICAgbGF5ZXJHcm91cC5hZGRUbyhtYXApO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgICBjbGVhbnVwTG9naWMoKTtcbiAgICB9O1xuICB9LCBbZXZlbnRdKTtcblxuICByZXR1cm4gPD48Lz47XG59O1xuIl19