@kando-env/kando-ui 1.2.466-alpha.6 → 1.2.466-alpha.7

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 (728) hide show
  1. package/lib/Router.js +40 -81
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +24 -35
  3. package/lib/Widgets/EventsRow/EventsRow.js +26 -39
  4. package/lib/Widgets/Map/GraphUtils.js +4 -6
  5. package/lib/Widgets/Map/Map.js +100 -139
  6. package/lib/Widgets/Map/MapUtils.js +83 -102
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +57 -84
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +23 -25
  9. package/lib/Widgets/Map/areas/AreaUtils.js +46 -46
  10. package/lib/Widgets/Map/areas/Patterns.js +5 -5
  11. package/lib/Widgets/Map/edges/Edge.js +32 -41
  12. package/lib/Widgets/Map/edges/Edges.js +19 -24
  13. package/lib/Widgets/Map/edges/arrows/Arrows.js +24 -45
  14. package/lib/Widgets/Map/events/Event.js +15 -14
  15. package/lib/Widgets/Map/events/EventIndicator.js +66 -63
  16. package/lib/Widgets/Map/events/EventPath.js +33 -34
  17. package/lib/Widgets/Map/events/EventUtils.js +54 -78
  18. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +17 -19
  19. package/lib/Widgets/Map/events/PointOfEvent.js +27 -36
  20. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +29 -39
  21. package/lib/Widgets/Map/events/Snail.js +10 -11
  22. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +77 -79
  23. package/lib/Widgets/Map/map/FloatingGraph.js +24 -21
  24. package/lib/Widgets/Map/map/GraphDateButton.js +27 -20
  25. package/lib/Widgets/Map/matchGraph/MatchGraph.js +14 -14
  26. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +17 -16
  27. package/lib/Widgets/Map/points/PointIcon.js +23 -22
  28. package/lib/Widgets/Map/points/PointMarker.js +68 -88
  29. package/lib/Widgets/Map/points/PointMarkers.js +30 -36
  30. package/lib/Widgets/Map/points/PointUtils.js +76 -90
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +25 -43
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +11 -11
  33. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +11 -14
  34. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +4 -6
  35. package/lib/Widgets/MostPolluting/Areas/Areas.js +28 -60
  36. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +3 -4
  37. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  38. package/lib/Widgets/MostPolluting/Areas/styles.js +4 -6
  39. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +12 -9
  40. package/lib/Widgets/MostPolluting/Factories/Factories.js +33 -65
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/CardLayout.js +15 -20
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +15 -20
  43. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +9 -10
  44. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +13 -11
  45. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +4 -6
  46. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -3
  47. package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
  48. package/lib/Widgets/MostPolluting/Factories/styles.js +4 -6
  49. package/lib/Widgets/MostPolluting/MostPolluting.js +23 -34
  50. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +20 -32
  51. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +7 -5
  52. package/lib/Widgets/MostPolluting/ShowMore/styles.js +7 -6
  53. package/lib/Widgets/MostPolluting/assets/index.js +12 -12
  54. package/lib/Widgets/MostPolluting/components/ChangePercent.js +20 -14
  55. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +36 -31
  56. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +49 -54
  57. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +44 -40
  58. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +28 -27
  59. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +53 -49
  60. package/lib/Widgets/MostPolluting/models.js +1 -1
  61. package/lib/Widgets/MostPolluting/styles.js +4 -6
  62. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +8 -6
  63. package/lib/Widgets/PotentialImpactSummary/Icon.js +30 -39
  64. package/lib/Widgets/PotentialImpactSummary/index.js +20 -28
  65. package/lib/Widgets/PotentialImpactSummary/index.test.js +48 -54
  66. package/lib/Widgets/PotentialImpactSummary/styles.js +8 -13
  67. package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
  68. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +10 -8
  69. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +23 -18
  70. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +34 -31
  71. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +28 -26
  72. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +35 -38
  73. package/lib/Widgets/QualitySummary/QualitySummary.js +10 -14
  74. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -7
  75. package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
  76. package/lib/Widgets/QualitySummary/styles.js +24 -21
  77. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +12 -14
  78. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +25 -25
  79. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +26 -21
  80. package/lib/Widgets/UtilityInformation/UtilityInformation.js +23 -36
  81. package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
  82. package/lib/Widgets/UtilityInformation/styles.js +30 -31
  83. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -5
  84. package/lib/assets/icons/TopNavbar/index.js +7 -7
  85. package/lib/assets/icons/TrendSvg.js +7 -7
  86. package/lib/assets/icons/index.js +16 -16
  87. package/lib/assets/icons/kandoStepper/index.js +7 -7
  88. package/lib/assets/icons/siteTypes/index.js +2 -2
  89. package/lib/components/ApplyButton/ApplyButton.js +10 -11
  90. package/lib/components/ApplyButton/index.js +3 -4
  91. package/lib/components/Backdrop/Backdrop.js +7 -5
  92. package/lib/components/ContentLoader/ContentLoader.js +12 -10
  93. package/lib/components/ContentLoader/index.js +2 -2
  94. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +12 -12
  95. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +5 -9
  96. package/lib/components/CustomInputs/DoubleTabs/styles.js +21 -16
  97. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +12 -20
  98. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +7 -6
  99. package/lib/components/CustomInputs/Search/Search.js +37 -60
  100. package/lib/components/CustomInputs/Search/index.js +3 -4
  101. package/lib/components/CustomInputs/Select/Select.js +38 -55
  102. package/lib/components/CustomInputs/Select/Select.stories.js +6 -10
  103. package/lib/components/DamageType/DamageType.js +35 -60
  104. package/lib/components/DamageType/index.js +3 -4
  105. package/lib/components/DataLoaderError/DataLoaderError.js +9 -7
  106. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +11 -13
  107. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +72 -73
  108. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +25 -37
  109. package/lib/components/DischargeHeatmap/HighchartsOptions.js +12 -16
  110. package/lib/components/DischargeHeatmap/index.js +3 -4
  111. package/lib/components/DischargeHeatmap/mocks/handlers.js +5 -6
  112. package/lib/components/DischargeHeatmap/popupText.js +11 -12
  113. package/lib/components/DischargeHeatmap/titles.js +4 -6
  114. package/lib/components/DischargeHeatmap/types.js +1 -1
  115. package/lib/components/ErrorBoundary.js +27 -42
  116. package/lib/components/Events/Events.js +29 -48
  117. package/lib/components/Events/index.js +3 -4
  118. package/lib/components/Graph/Graph.js +74 -95
  119. package/lib/components/Graph/index.js +3 -4
  120. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +19 -24
  121. package/lib/components/Header/Breadcrumbs/index.js +3 -4
  122. package/lib/components/Header/DoubleTabs/DoubleTabs.js +18 -28
  123. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +5 -9
  124. package/lib/components/Header/DoubleTabs/styles.js +5 -8
  125. package/lib/components/Header/Header.js +3 -3
  126. package/lib/components/Header/Header.stories.js +5 -9
  127. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +24 -36
  128. package/lib/components/Header/InfoBar/InfoBar.js +69 -102
  129. package/lib/components/Header/InfoBar/Search/Control.js +11 -10
  130. package/lib/components/Header/InfoBar/Search/GroupLabel.js +8 -7
  131. package/lib/components/Header/InfoBar/Search/Search.js +17 -24
  132. package/lib/components/Header/InfoBar/Search/SearchContainer.js +21 -35
  133. package/lib/components/Header/InfoBar/Search/index.js +3 -4
  134. package/lib/components/Header/InfoBar/Search/searchStyle.js +36 -49
  135. package/lib/components/Header/InfoBar/TimeFilter.js +13 -17
  136. package/lib/components/Header/InfoBar/types.js +1 -1
  137. package/lib/components/Header/KandoNavbar/KandoNavbar.js +66 -93
  138. package/lib/components/Header/KandoNavbar/index.js +3 -4
  139. package/lib/components/Header/Slideshow/Slideshow.js +67 -91
  140. package/lib/components/Header/Slideshow/index.js +3 -4
  141. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +7 -5
  142. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +22 -24
  143. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +17 -17
  144. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +36 -42
  145. package/lib/components/Header/Toolbar/Toolbar.js +58 -76
  146. package/lib/components/InfoBar/InfoBar.js +10 -24
  147. package/lib/components/InfoBar/InfoBar.stories.js +5 -9
  148. package/lib/components/KandoModal/KandoModal.js +26 -62
  149. package/lib/components/KandoModal/index.js +3 -4
  150. package/lib/components/Link.js +9 -8
  151. package/lib/components/Links/CustomRedirect/CustomRedirect.js +10 -7
  152. package/lib/components/Links/StyledLink/StyledLink.js +17 -20
  153. package/lib/components/Links/StyledNavLink/StyledNavLink.js +12 -10
  154. package/lib/components/LiveEvents/CarouselSlide.js +11 -10
  155. package/lib/components/LiveEvents/LiveEvents.js +7 -6
  156. package/lib/components/LiveEvents/index.js +3 -4
  157. package/lib/components/LoaderByPercent/LoaderByPercent.js +37 -30
  158. package/lib/components/Map/Map.js +20 -25
  159. package/lib/components/Map/index.js +3 -4
  160. package/lib/components/Modal/Modal.js +10 -10
  161. package/lib/components/NarrowHeader.js +18 -32
  162. package/lib/components/PointInfo/PointInfo.js +20 -19
  163. package/lib/components/PointInfo/index.js +3 -4
  164. package/lib/components/PopupModal/PopupModal.js +13 -17
  165. package/lib/components/PopupModal/PopupModal.stories.js +17 -24
  166. package/lib/components/Sector/Sector.js +34 -40
  167. package/lib/components/Sector/Sector.test.js +24 -24
  168. package/lib/components/Sector/SectorIconsNew.js +26 -19
  169. package/lib/components/Sector/index.js +3 -4
  170. package/lib/components/Sector/sectorIcons.js +4 -5
  171. package/lib/components/SevereEvent/Eta/Eta.js +49 -54
  172. package/lib/components/SevereEvent/Eta/styles.js +11 -8
  173. package/lib/components/SevereEvent/SevereEvent.js +28 -52
  174. package/lib/components/SevereEvent/SevereEvent.scss +0 -24
  175. package/lib/components/Spinner/Spinner.js +8 -8
  176. package/lib/components/Spinner/Spinner.stories.js +6 -11
  177. package/lib/components/Spinner/index.js +3 -4
  178. package/lib/components/Spinner/styles.js +21 -16
  179. package/lib/components/Tabs/Tabs.js +18 -31
  180. package/lib/components/Tabs/Tabs.stories.js +6 -10
  181. package/lib/components/Tabs/assets/index.js +6 -6
  182. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +13 -18
  183. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +32 -45
  184. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +20 -34
  185. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +3 -4
  186. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +17 -22
  187. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +13 -14
  188. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +3 -4
  189. package/lib/components/TimeRangeSelector/TimeRangeList.js +24 -27
  190. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +17 -27
  191. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +26 -31
  192. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +6 -10
  193. package/lib/components/TimeRangeSelector/constants.js +3 -5
  194. package/lib/components/TimeRangeSelector/index.js +3 -4
  195. package/lib/components/Toggle/Toggle.js +11 -18
  196. package/lib/components/Toggle/index.js +3 -4
  197. package/lib/components/TrendGraph/TrendGraph.js +24 -42
  198. package/lib/components/TrendGraph/index.js +3 -4
  199. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +26 -33
  200. package/lib/components/TrendGraphNVL/index.js +3 -4
  201. package/lib/development-environment/index.js +9 -13
  202. package/lib/development-environment/mock/browser.js +2 -5
  203. package/lib/development-environment/mock/get.js +8 -10
  204. package/lib/development-environment/mock/handlers.js +2 -3
  205. package/lib/development-environment/mock/mockBus.js +4 -5
  206. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -3
  207. package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -3
  208. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -3
  209. package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -3
  210. package/lib/development-environment/mock/mockObjects/areasJson.js +2 -3
  211. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -3
  212. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -3
  213. package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -3
  214. package/lib/development-environment/mock/mockObjects/data-search.js +2 -3
  215. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -3
  216. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -3
  217. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -3
  218. package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -3
  219. package/lib/development-environment/mock/mockObjects/metascore.js +2 -3
  220. package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -3
  221. package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -3
  222. package/lib/development-environment/mock/mockObjects/site-info.js +2 -3
  223. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -3
  224. package/lib/development-environment/togly/ToglyDashboard.js +13 -23
  225. package/lib/development-environment/togly/ToglyItem.js +24 -31
  226. package/lib/development-environment/togly/flags.js +1 -1
  227. package/lib/development-environment/togly/init.js +4 -4
  228. package/lib/development-environment/togly/macro.js +13 -9
  229. package/lib/development-environment/togly/useDoubleKeyDown.js +7 -9
  230. package/lib/development-environment/togly/useLocalStorage.js +13 -18
  231. package/lib/hooks/useApi.js +20 -56
  232. package/lib/hooks/useApiWithDashboardQuery.js +23 -43
  233. package/lib/hooks/useClickOutside.js +4 -5
  234. package/lib/hooks/useInitializeHeaders.js +6 -6
  235. package/lib/hooks/useKandoFetch.js +17 -31
  236. package/lib/hooks/useMap.js +25 -37
  237. package/lib/hooks/useNavContext.js +22 -26
  238. package/lib/hooks/useQueryURL.js +2 -3
  239. package/lib/hooks/useRemoveExistingLayers.js +7 -8
  240. package/lib/hooks/useUpdateEventBodyTail.js +14 -19
  241. package/lib/hooks/useUserTimeZone.js +34 -31
  242. package/lib/hooks/useUserTimeZone.test.js +19 -23
  243. package/lib/hooks/useWindowSize.js +7 -14
  244. package/lib/i18n/en.json +3 -15
  245. package/lib/i18n/fr.json +0 -4
  246. package/lib/i18n/he.json +1 -12
  247. package/lib/i18n/it.json +0 -4
  248. package/lib/index.js +11 -13
  249. package/lib/macros/getVersion.js +2 -2
  250. package/lib/models/IAction.js +1 -1
  251. package/lib/models/IAppState.js +1 -1
  252. package/lib/pages/AreaPage/AreaPage.js +34 -68
  253. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +15 -17
  254. package/lib/pages/AreaPage/Dashboard/Dashboard.js +26 -28
  255. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +14 -23
  256. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +5 -5
  257. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
  258. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +10 -10
  259. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +4 -6
  260. package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
  261. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -3
  262. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +5 -8
  263. package/lib/pages/AssessmentPage/AssessmentPage.js +38 -46
  264. package/lib/pages/CannyWidget/Feedback.js +14 -16
  265. package/lib/pages/CovidPage/CovidPage.js +9 -16
  266. package/lib/pages/CovidPage/components/Body.js +26 -30
  267. package/lib/pages/CovidPage/components/Map.js +28 -40
  268. package/lib/pages/CovidPage/components/Sidebar.js +15 -16
  269. package/lib/pages/CovidPage/components/Summary.js +20 -29
  270. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +26 -33
  271. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +3 -4
  272. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +52 -76
  273. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +3 -4
  274. package/lib/pages/CovidPage/components/areas/Area.js +24 -36
  275. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +45 -46
  276. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +32 -36
  277. package/lib/pages/CovidPage/components/areas/AreasList.js +29 -42
  278. package/lib/pages/CovidPage/components/areas/Sort.js +12 -17
  279. package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
  280. package/lib/pages/DashboardMap/AreaCard.js +27 -27
  281. package/lib/pages/DashboardMap/AssessmentIcon.js +8 -7
  282. package/lib/pages/DashboardMap/Capacity.js +28 -77
  283. package/lib/pages/DashboardMap/FactoryCard.js +28 -24
  284. package/lib/pages/DashboardMap/HighchartsOptions.js +6 -5
  285. package/lib/pages/DashboardMap/List.js +55 -65
  286. package/lib/pages/DashboardMap/ListContext.js +14 -19
  287. package/lib/pages/DashboardMap/Loader.js +3 -3
  288. package/lib/pages/DashboardMap/SeverityBadge.js +16 -24
  289. package/lib/pages/DashboardMap/WWTPMap.js +57 -71
  290. package/lib/pages/DashboardMap/WaterDischarge.js +9 -9
  291. package/lib/pages/DashboardMap/Widget.js +48 -67
  292. package/lib/pages/DashboardMap/index.js +3 -4
  293. package/lib/pages/DashboardMap/utils.js +41 -60
  294. package/lib/pages/EventsPage/Body/Body.js +15 -12
  295. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +17 -20
  296. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +16 -27
  297. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +10 -9
  298. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +13 -10
  299. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +22 -31
  300. package/lib/pages/EventsPage/DragAndDropArea/index.js +3 -4
  301. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +30 -38
  302. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +14 -23
  303. package/lib/pages/EventsPage/EventsPage.js +10 -17
  304. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +26 -40
  305. package/lib/pages/EventsPage/events/MoreInfo.js +18 -19
  306. package/lib/pages/EventsPage/events/Sidebar.js +14 -11
  307. package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +9 -10
  308. package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +19 -24
  309. package/lib/pages/EventsPage/events/event_info/Contaminants/index.js +3 -4
  310. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +31 -38
  311. package/lib/pages/EventsPage/events/event_info/EventDetails.js +35 -33
  312. package/lib/pages/EventsPage/events/event_info/EventInfo.js +50 -60
  313. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +5 -5
  314. package/lib/pages/EventsPage/events/event_info/EventSection.js +18 -21
  315. package/lib/pages/EventsPage/events/event_info/EventSection.test.js +29 -23
  316. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +39 -50
  317. package/lib/pages/EventsPage/events/event_info/Header/Header.js +8 -7
  318. package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +30 -35
  319. package/lib/pages/EventsPage/events/event_info/Header/index.js +3 -4
  320. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +6 -7
  321. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +30 -39
  322. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +6 -9
  323. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +14 -15
  324. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +9 -12
  325. package/lib/pages/EventsPage/events/event_info/PollutionAssessment /index.js +3 -4
  326. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +23 -24
  327. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +13 -22
  328. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +7 -6
  329. package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/index.js +3 -4
  330. package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +13 -12
  331. package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +22 -28
  332. package/lib/pages/EventsPage/events/event_info/SamplingList/index.js +3 -4
  333. package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +13 -10
  334. package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +8 -9
  335. package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +3 -4
  336. package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +9 -9
  337. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +4 -5
  338. package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +13 -11
  339. package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +7 -5
  340. package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +11 -14
  341. package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +7 -6
  342. package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +9 -8
  343. package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +9 -8
  344. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +8 -7
  345. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +13 -12
  346. package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +18 -19
  347. package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +7 -7
  348. package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +9 -8
  349. package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +19 -18
  350. package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +6 -7
  351. package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +13 -12
  352. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +23 -19
  353. package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +12 -11
  354. package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +8 -7
  355. package/lib/pages/EventsPage/events/event_info/Timelines/index.js +3 -4
  356. package/lib/pages/EventsPage/events/event_info/Timelines/style.js +4 -6
  357. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +25 -40
  358. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +30 -39
  359. package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +13 -12
  360. package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +17 -20
  361. package/lib/pages/EventsPage/events/event_info/sources/Source.js +27 -31
  362. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +22 -27
  363. package/lib/pages/EventsPage/events/event_info/styles.js +21 -15
  364. package/lib/pages/EventsPage/events/events_list/EventItem.js +18 -21
  365. package/lib/pages/EventsPage/events/events_list/EventUtils.js +11 -11
  366. package/lib/pages/EventsPage/events/events_list/EventsList.js +111 -142
  367. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +41 -58
  368. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +90 -135
  369. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +54 -76
  370. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +39 -44
  371. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +32 -41
  372. package/lib/pages/EventsPage/events/events_list/Filter/SingleSelect.js +19 -21
  373. package/lib/pages/EventsPage/events/events_list/Sort.js +28 -39
  374. package/lib/pages/ImportFileWizard/FileUploadRespones.js +14 -22
  375. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +9 -8
  376. package/lib/pages/ImportFileWizard/ImportFile.js +21 -25
  377. package/lib/pages/ImportFileWizard/ResponseBody.js +26 -36
  378. package/lib/pages/ImportFileWizard/ValidationForm.js +23 -23
  379. package/lib/pages/ImportFileWizard/ValidationResponse.js +23 -25
  380. package/lib/pages/ImportFileWizard/importFileUtils.js +4 -5
  381. package/lib/pages/ImportFileWizard/index.js +3 -4
  382. package/lib/pages/ImportGisPage/ImportGisContainer.js +22 -27
  383. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +38 -44
  384. package/lib/pages/ImportGisPage/importGisUtils.js +43 -52
  385. package/lib/pages/ImportGisProcess/index.js +14 -18
  386. package/lib/pages/ImportSiteProcess/index.js +14 -18
  387. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +7 -13
  388. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +18 -20
  389. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +4 -4
  390. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +28 -60
  391. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +8 -12
  392. package/lib/pages/NotificationsPage/Notification/Notification.js +17 -13
  393. package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
  394. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -3
  395. package/lib/pages/NotificationsPage/Notifications.stories.js +6 -10
  396. package/lib/pages/NotificationsPage/NotificationsPage.js +19 -38
  397. package/lib/pages/NotificationsPage/assets/index.js +10 -10
  398. package/lib/pages/NotificationsPageV2/NotificationsPage.js +72 -101
  399. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +95 -65
  400. package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +13 -15
  401. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +19 -17
  402. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +18 -22
  403. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +18 -22
  404. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +19 -23
  405. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +82 -71
  406. package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +19 -23
  407. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +71 -74
  408. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +80 -94
  409. package/lib/pages/NotificationsPageV2/notificationUtils.js +40 -39
  410. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  411. package/lib/pages/OldSitePage/OldSitePage.js +56 -132
  412. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +6 -10
  413. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -9
  414. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -7
  415. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +16 -19
  416. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +10 -12
  417. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +12 -19
  418. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +14 -11
  419. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -9
  420. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -16
  421. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +51 -64
  422. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +10 -8
  423. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +29 -54
  424. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -7
  425. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +12 -19
  426. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -11
  427. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +10 -12
  428. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +27 -23
  429. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +28 -30
  430. package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
  431. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +5 -8
  432. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +16 -12
  433. package/lib/pages/OperationsPage/LeftPanel.js +35 -55
  434. package/lib/pages/OperationsPage/Map/Map.js +12 -12
  435. package/lib/pages/OperationsPage/Map/useMap.js +52 -64
  436. package/lib/pages/OperationsPage/OperationsContainerPage.js +32 -59
  437. package/lib/pages/OperationsPage/OperationsFilePage.js +10 -12
  438. package/lib/pages/OperationsPage/OperationsUtilityPage.js +5 -6
  439. package/lib/pages/OperationsPage/RightPanel.js +22 -25
  440. package/lib/pages/OperationsPage/index.js +4 -4
  441. package/lib/pages/PollutionRiskAssessment/FactoryDetails.js +27 -60
  442. package/lib/pages/PollutionRiskAssessment/FilterBehaviors.js +19 -25
  443. package/lib/pages/PollutionRiskAssessment/FilterButton.js +11 -10
  444. package/lib/pages/PollutionRiskAssessment/Map.js +38 -42
  445. package/lib/pages/PollutionRiskAssessment/SearchButton.js +11 -10
  446. package/lib/pages/PollutionRiskAssessment/SearchField.js +26 -40
  447. package/lib/pages/PollutionRiskAssessment/TotalSavings.js +16 -16
  448. package/lib/pages/PollutionRiskAssessment/UseCases.js +32 -34
  449. package/lib/pages/PollutionRiskAssessment/index.js +76 -136
  450. package/lib/pages/PollutionRiskAssessment/useMap.js +34 -50
  451. package/lib/pages/PollutionRiskAssessment/utils.js +7 -7
  452. package/lib/pages/ProfilePage/Container.js +3 -4
  453. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +23 -40
  454. package/lib/pages/ProfilePage/ProfilePage.js +106 -205
  455. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +25 -34
  456. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +20 -20
  457. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +27 -30
  458. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +57 -119
  459. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +18 -23
  460. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +14 -13
  461. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +40 -45
  462. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +25 -24
  463. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +18 -19
  464. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +15 -18
  465. package/lib/pages/SamplingsPage/DesktopActions/index.js +3 -4
  466. package/lib/pages/SamplingsPage/NavigationDropdown.js +43 -31
  467. package/lib/pages/SamplingsPage/NewSamplingAction.js +75 -102
  468. package/lib/pages/SamplingsPage/SamplingMobileModal.js +124 -98
  469. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +23 -25
  470. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +36 -25
  471. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +36 -61
  472. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +16 -21
  473. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +10 -9
  474. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +108 -193
  475. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +47 -54
  476. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +42 -39
  477. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +42 -39
  478. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +21 -28
  479. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +4 -6
  480. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +11 -7
  481. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +51 -53
  482. package/lib/pages/SamplingsPage/SamplingsMobileList.js +22 -31
  483. package/lib/pages/SamplingsPage/SamplingsPage.js +25 -33
  484. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +49 -58
  485. package/lib/pages/SamplingsPage/index.js +2 -3
  486. package/lib/pages/SamplingsPage/samplingsPageUtils.js +52 -83
  487. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +7 -6
  488. package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +16 -16
  489. package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +12 -16
  490. package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
  491. package/lib/pages/SitePage/PollutionContributor/index.js +3 -4
  492. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -9
  493. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +15 -15
  494. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +10 -9
  495. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +27 -24
  496. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +12 -16
  497. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +37 -33
  498. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +10 -12
  499. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +15 -25
  500. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +14 -11
  501. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -9
  502. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -16
  503. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +58 -71
  504. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +10 -8
  505. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +15 -27
  506. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -9
  507. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +12 -19
  508. package/lib/pages/SitePage/SamplingParameters/body/Body.js +10 -9
  509. package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +30 -40
  510. package/lib/pages/SitePage/SamplingParameters/body/index.js +3 -4
  511. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -12
  512. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +10 -12
  513. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +54 -54
  514. package/lib/pages/SitePage/SamplingParameters/dataParser.js +32 -41
  515. package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +11 -9
  516. package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
  517. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +5 -8
  518. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +16 -12
  519. package/lib/pages/SitePage/SiteInformation/EmptyState.js +13 -10
  520. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +31 -31
  521. package/lib/pages/SitePage/SitePage.js +37 -77
  522. package/lib/pages/UploadLabResult/index.js +15 -16
  523. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +27 -37
  524. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +8 -13
  525. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +11 -15
  526. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +5 -9
  527. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +47 -50
  528. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +11 -8
  529. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +4 -5
  530. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +6 -9
  531. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +11 -10
  532. package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
  533. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +16 -13
  534. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +8 -8
  535. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +3 -4
  536. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +20 -30
  537. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +28 -40
  538. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +15 -17
  539. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +7 -14
  540. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +26 -31
  541. package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -9
  542. package/lib/pages/WbeDashboard/GraphWrapper.js +28 -35
  543. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +16 -19
  544. package/lib/pages/WbeDashboard/SearchInput.js +15 -21
  545. package/lib/pages/WbeDashboard/SummaryGraph.js +50 -77
  546. package/lib/pages/WbeDashboard/SummaryGraphModal.js +20 -18
  547. package/lib/pages/WbeDashboard/Tabs.js +11 -11
  548. package/lib/pages/WbeDashboard/WbeDashboardPage.js +147 -210
  549. package/lib/pages/WbeDashboard/WbeSummaryBar.js +39 -48
  550. package/lib/pages/WwtpPage/DashboardCard.js +25 -21
  551. package/lib/pages/WwtpPage/DischargePatternCard.js +14 -25
  552. package/lib/pages/WwtpPage/InletsCard/InletsBar.js +11 -11
  553. package/lib/pages/WwtpPage/InletsCard/InletsCard.js +22 -22
  554. package/lib/pages/WwtpPage/InletsCard/index.js +3 -4
  555. package/lib/pages/WwtpPage/Map.js +6 -6
  556. package/lib/pages/WwtpPage/OrganicCard.js +4 -5
  557. package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +4 -5
  558. package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +8 -7
  559. package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +11 -11
  560. package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +20 -17
  561. package/lib/pages/WwtpPage/PotentialSaving/index.js +3 -4
  562. package/lib/pages/WwtpPage/PotentialSaving/types.js +1 -1
  563. package/lib/pages/WwtpPage/PredictionCard.js +4 -5
  564. package/lib/pages/WwtpPage/TrendCard.js +20 -22
  565. package/lib/pages/WwtpPage/UpgradeBox.js +4 -5
  566. package/lib/pages/WwtpPage/WwtpPage.js +9 -8
  567. package/lib/pages/WwtpPage/WwtpPageContainer.js +23 -19
  568. package/lib/pages/WwtpPage/index.js +3 -4
  569. package/lib/providers/Slideshow/SlideshowContext.js +11 -10
  570. package/lib/providers/Slideshow/SlideshowProvider.js +22 -40
  571. package/lib/providers/Slideshow/SlideshowRunner.js +18 -21
  572. package/lib/providers/UrlHistory/UrlHistoryContext.js +7 -6
  573. package/lib/providers/UrlHistory/UrlHistoryProvider.js +12 -13
  574. package/lib/providers/UrlHistory/index.js +4 -4
  575. package/lib/providers/UrlHistory/useLastVisited.js +5 -6
  576. package/lib/react-app-env.d.js +1 -1
  577. package/lib/store/ImportGis/action.js +1 -1
  578. package/lib/store/ImportGis/actionTypes.js +4 -5
  579. package/lib/store/ImportGis/actionsCreator.js +7 -5
  580. package/lib/store/ImportGis/models/gisImports.js +1 -1
  581. package/lib/store/ImportGis/reducer.js +9 -7
  582. package/lib/store/WBE/actionTypes.js +2 -3
  583. package/lib/store/WBE/actions.js +1 -1
  584. package/lib/store/WBE/models/IAreaWBE.js +1 -1
  585. package/lib/store/WBE/models/IWBE.js +1 -1
  586. package/lib/store/WBE/models/IWBEState.js +1 -1
  587. package/lib/store/WBE/reducer.js +10 -8
  588. package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +24 -15
  589. package/lib/store/WWTPDashboard/types.js +1 -1
  590. package/lib/store/areas/actionTypes.js +4 -7
  591. package/lib/store/areas/actions.js +7 -13
  592. package/lib/store/areas/models/IArea.js +1 -1
  593. package/lib/store/areas/models/IAreasState.js +1 -1
  594. package/lib/store/areas/reducer.js +8 -6
  595. package/lib/store/context/actionTypes.js +3 -5
  596. package/lib/store/context/actions.js +3 -3
  597. package/lib/store/context/contextMiddlewares.js +15 -18
  598. package/lib/store/context/models/INavContext.js +1 -1
  599. package/lib/store/context/models/INavContextState.js +1 -1
  600. package/lib/store/context/reducer.js +10 -8
  601. package/lib/store/dashboard/dashboardSlice.js +18 -11
  602. package/lib/store/dashboard/periodType.js +1 -1
  603. package/lib/store/edges/actionTypes.js +5 -9
  604. package/lib/store/edges/actions.js +4 -8
  605. package/lib/store/edges/models/IEdge.js +1 -1
  606. package/lib/store/edges/models/IEdgesState.js +1 -1
  607. package/lib/store/edges/reducer.js +13 -17
  608. package/lib/store/events/actionTypes.js +17 -33
  609. package/lib/store/events/actions.js +3 -7
  610. package/lib/store/events/models/IEvent.js +1 -1
  611. package/lib/store/events/models/IEventsState.js +1 -1
  612. package/lib/store/events/models/ISource.js +1 -1
  613. package/lib/store/events/reducer.js +28 -39
  614. package/lib/store/filters/IFilter.js +1 -1
  615. package/lib/store/filters/IFilterItem.js +1 -1
  616. package/lib/store/global/actionTypes.js +11 -21
  617. package/lib/store/global/actions.js +8 -6
  618. package/lib/store/global/models/IGlobalState.js +1 -1
  619. package/lib/store/global/reducer.js +9 -7
  620. package/lib/store/permissions/permissionsSlice.js +12 -9
  621. package/lib/store/points/actionTypes.js +3 -5
  622. package/lib/store/points/actions.js +6 -10
  623. package/lib/store/points/models/IGeoPoint.js +1 -1
  624. package/lib/store/points/models/IGroup.js +1 -1
  625. package/lib/store/points/models/IIssue.js +1 -1
  626. package/lib/store/points/models/IPoint.js +1 -1
  627. package/lib/store/points/models/IPointsState.js +1 -1
  628. package/lib/store/points/reducer.js +7 -5
  629. package/lib/store/rootActionTypes.js +2 -3
  630. package/lib/store/rootActions.js +1 -1
  631. package/lib/store/rootReducer.js +12 -10
  632. package/lib/store/rootStore.js +6 -6
  633. package/lib/store/samplings/action.js +1 -1
  634. package/lib/store/samplings/actionTypes.js +4 -5
  635. package/lib/store/samplings/actionsCreator.js +1 -1
  636. package/lib/store/samplings/models/Samplings.js +1 -1
  637. package/lib/store/samplings/reducer.js +10 -10
  638. package/lib/styles/StylesLayout.js +7 -6
  639. package/lib/styles/theme/theme.js +23 -26
  640. package/lib/test/mocks/browser.js +2 -5
  641. package/lib/test/test-utils.js +12 -9
  642. package/lib/ui-kit/Alert/KandoAlert.js +8 -6
  643. package/lib/ui-kit/Button/Button.js +129 -83
  644. package/lib/ui-kit/Button/Button.test.js +27 -33
  645. package/lib/ui-kit/Button/ButtonUtils.js +1 -1
  646. package/lib/ui-kit/Checkbox/Checkbox.js +34 -27
  647. package/lib/ui-kit/ContentCard/ContentCard.js +16 -20
  648. package/lib/ui-kit/Dashboard/Dashboard.js +29 -28
  649. package/lib/ui-kit/Dashboard/index.js +3 -4
  650. package/lib/ui-kit/DropDown/DropDown.js +23 -22
  651. package/lib/ui-kit/DropDown/DropDown.test.js +13 -13
  652. package/lib/ui-kit/DropDown/DropDownItem.js +26 -25
  653. package/lib/ui-kit/DropDown/DropdownToggle.js +13 -10
  654. package/lib/ui-kit/EmptyState/EmptyState.js +7 -6
  655. package/lib/ui-kit/HierarchyGraph/AutoFitTree.js +69 -81
  656. package/lib/ui-kit/HierarchyGraph/HierarchyGraph.js +89 -167
  657. package/lib/ui-kit/HierarchyGraph/LeafSign.js +7 -7
  658. package/lib/ui-kit/HierarchyGraph/MicroStackedBar.js +17 -19
  659. package/lib/ui-kit/HierarchyGraph/NodeIcon.js +9 -8
  660. package/lib/ui-kit/HierarchyGraph/NodeLayout.js +22 -25
  661. package/lib/ui-kit/HierarchyGraph/PollutionContributorNode.js +11 -10
  662. package/lib/ui-kit/HierarchyGraph/ScoreNode.js +10 -9
  663. package/lib/ui-kit/HierarchyGraph/index.js +3 -4
  664. package/lib/ui-kit/HierarchyGraph/utils.js +57 -67
  665. package/lib/ui-kit/IconAction/IconAction.js +9 -8
  666. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +47 -64
  667. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +58 -49
  668. package/lib/ui-kit/InletsPie/InletsPie.js +17 -16
  669. package/lib/ui-kit/InletsPie/index.js +3 -4
  670. package/lib/ui-kit/InletsPie/options.js +7 -9
  671. package/lib/ui-kit/KandoBottomSheet/KandoBottomSheet.js +29 -38
  672. package/lib/ui-kit/KandoFilter/KandoFilter.js +10 -11
  673. package/lib/ui-kit/KandoList/KandoList.js +13 -12
  674. package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
  675. package/lib/ui-kit/KandoTable/KandoTable.js +48 -41
  676. package/lib/ui-kit/KandoTable/KandoTable.test.js +21 -27
  677. package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
  678. package/lib/ui-kit/Layout/Layout.js +8 -7
  679. package/lib/ui-kit/MobileInput/MobileInput.js +56 -50
  680. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +14 -17
  681. package/lib/ui-kit/ModalConfirmation/index.js +2 -3
  682. package/lib/ui-kit/OrganicEvents/GaugeChart.js +9 -8
  683. package/lib/ui-kit/OrganicEvents/OrganicEvents.js +8 -9
  684. package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +26 -22
  685. package/lib/ui-kit/OrganicEvents/TextInfo.js +17 -13
  686. package/lib/ui-kit/OrganicEvents/index.js +3 -4
  687. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +12 -11
  688. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +17 -21
  689. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -4
  690. package/lib/ui-kit/ScoreGauge/ScoreGauge.js +21 -24
  691. package/lib/ui-kit/ScoreGauge/constant.js +3 -4
  692. package/lib/ui-kit/ScoreGauge/index.js +3 -4
  693. package/lib/ui-kit/TimeLineChart/TrendChart.js +25 -28
  694. package/lib/ui-kit/TimeLineChart/index.js +3 -4
  695. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +10 -11
  696. package/lib/ui-kit/Tooltip/Tooltip.js +15 -9
  697. package/lib/ui-kit/index.js +8 -8
  698. package/lib/ui-kit/kandoStepper/KandoStepper.js +13 -14
  699. package/lib/ui-kit/siteName/SiteName.js +13 -11
  700. package/lib/utilities/ActionUtility.js +7 -7
  701. package/lib/utilities/Alert.js +23 -20
  702. package/lib/utilities/Analytics.js +19 -19
  703. package/lib/utilities/Array.js +4 -5
  704. package/lib/utilities/Enum.js +15 -51
  705. package/lib/utilities/ErrorBoundary.js +27 -42
  706. package/lib/utilities/File.js +45 -73
  707. package/lib/utilities/GetDir.js +10 -10
  708. package/lib/utilities/KandoDate.js +7 -15
  709. package/lib/utilities/KandoModal.js +16 -28
  710. package/lib/utilities/LocalStorage.js +5 -7
  711. package/lib/utilities/ThousandsToK.js +2 -2
  712. package/lib/utilities/TimeFormat.js +22 -23
  713. package/lib/utilities/Truncate.js +17 -27
  714. package/lib/utilities/edgesMath.js +15 -16
  715. package/lib/utilities/i18n.js +5 -6
  716. package/lib/utilities/kql.js +10 -12
  717. package/lib/utilities/map/icons.js +18 -18
  718. package/lib/utilities/polylinedecorator.js +88 -113
  719. package/lib/utilities/scoreToData.js +20 -26
  720. package/lib/utilities/scoreToData.test.js +5 -5
  721. package/lib/utilities/time.js +9 -10
  722. package/lib/utilities/uploadToS3.js +12 -12
  723. package/lib/utilities/urls.js +19 -16
  724. package/package.json +12 -9
  725. package/lib/components/SeasonalInsights/SeasonalInsights.js +0 -150
  726. package/lib/components/SevereEvent/UpstreamBadge.js +0 -60
  727. package/lib/components/TopBanner/TopBanner.js +0 -235
  728. package/lib/components/TopBanner/insightsDismissalStorage.js +0 -36
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.Map = void 0;
9
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
10
9
  var L = _interopRequireWildcard(require("leaflet"));
11
10
  require("utilities/polylinedecorator");
12
11
  require("leaflet.markercluster");
@@ -27,166 +26,130 @@ var _ListContext = require("pages/DashboardMap/ListContext");
27
26
  var _actions = require("store/areas/actions");
28
27
  var _actions2 = require("store/points/actions");
29
28
  var _PointIcon2 = require("./points/PointIcon");
30
- 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); }
31
- 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; }
32
29
  // @ts-ignore
33
30
 
34
31
  require('leaflet.markercluster');
35
- var Map = function Map(_ref) {
36
- var areas = _ref.areas,
37
- edges = _ref.edges,
38
- points = _ref.points,
39
- global_data = _ref.global_data,
40
- areaToCenterBy = _ref.areaToCenterBy,
41
- focusedEvent = _ref.focusedEvent,
42
- hoveredEvent = _ref.hoveredEvent,
43
- _ref$hideEdges = _ref.hideEdges,
44
- hideEdges = _ref$hideEdges === void 0 ? false : _ref$hideEdges,
45
- _ref$mapBoxStyle = _ref.mapBoxStyle,
46
- mapBoxStyle = _ref$mapBoxStyle === void 0 ? _theme.leafletMap.mapDefault : _ref$mapBoxStyle,
47
- children = _ref.children,
48
- _ref$includeUnmonitor = _ref.includeUnmonitoredPoints,
49
- includeUnmonitoredPoints = _ref$includeUnmonitor === void 0 ? true : _ref$includeUnmonitor,
50
- _ref$includeUnmonitor2 = _ref.includeUnmonitoredDescendantsForEdges,
51
- includeUnmonitoredDescendantsForEdges = _ref$includeUnmonitor2 === void 0 ? false : _ref$includeUnmonitor2,
52
- _ref$forEventsView = _ref.forEventsView,
53
- forEventsView = _ref$forEventsView === void 0 ? false : _ref$forEventsView,
54
- _ref$style = _ref.style,
55
- style = _ref$style === void 0 ? {} : _ref$style,
56
- _ref$forWWTPDashboard = _ref.forWWTPDashboard,
57
- forWWTPDashboard = _ref$forWWTPDashboard === void 0 ? false : _ref$forWWTPDashboard;
58
- var map = global_data.map;
59
- var mapRef = (0, _react.useRef)(null);
60
- var dispatch = (0, _reactRedux.useDispatch)();
61
- var _useState = (0, _react.useState)(2),
62
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
63
- mapZoomLevel = _useState2[0],
64
- setMapZoomLevel = _useState2[1];
65
- var _useSelectedItem = (0, _ListContext.useSelectedItem)(),
66
- selectedItem = _useSelectedItem.selectedItem;
67
- var _useState3 = (0, _react.useState)(true),
68
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
69
- edgesCheckbox = _useState4[0],
70
- setEdgesCheckbox = _useState4[1];
71
- var _useState5 = (0, _react.useState)(false),
72
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
73
- onlyMonitoredPoints = _useState6[0],
74
- setOnlyMonitoredPoints = _useState6[1];
75
- var _useState7 = (0, _react.useState)(false),
76
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
77
- showSamplerIcon = _useState8[0],
78
- setShowSamplerIcon = _useState8[1];
79
- var edgesCheckboxRef = (0, _react.useRef)(edgesCheckbox);
80
- var hoveredEventPresent = (0, _react.useMemo)(function () {
32
+ const Map = _ref => {
33
+ let {
34
+ areas,
35
+ edges,
36
+ points,
37
+ global_data,
38
+ areaToCenterBy,
39
+ focusedEvent,
40
+ hoveredEvent,
41
+ hideEdges = false,
42
+ mapBoxStyle = _theme.leafletMap.mapDefault,
43
+ children,
44
+ includeUnmonitoredPoints = true,
45
+ includeUnmonitoredDescendantsForEdges = false,
46
+ forEventsView = false,
47
+ style = {},
48
+ forWWTPDashboard = false
49
+ } = _ref;
50
+ const {
51
+ map
52
+ } = global_data;
53
+ const mapRef = (0, _react.useRef)(null);
54
+ const dispatch = (0, _reactRedux.useDispatch)();
55
+ const [mapZoomLevel, setMapZoomLevel] = (0, _react.useState)(2);
56
+ const {
57
+ selectedItem
58
+ } = (0, _ListContext.useSelectedItem)();
59
+ const [edgesCheckbox, setEdgesCheckbox] = (0, _react.useState)(true);
60
+ const [onlyMonitoredPoints, setOnlyMonitoredPoints] = (0, _react.useState)(false);
61
+ const [showSamplerIcon, setShowSamplerIcon] = (0, _react.useState)(false);
62
+ const edgesCheckboxRef = (0, _react.useRef)(edgesCheckbox);
63
+ const hoveredEventPresent = (0, _react.useMemo)(() => {
81
64
  return hoveredEvent !== null && hoveredEvent !== undefined;
82
65
  }, [hoveredEvent]);
83
- var focusedEventPresent = (0, _react.useMemo)(function () {
66
+ const focusedEventPresent = (0, _react.useMemo)(() => {
84
67
  return focusedEvent !== null && focusedEvent !== undefined;
85
68
  }, [focusedEvent]);
86
69
 
87
70
  // Add parent layer group for all factories
88
- var _useState9 = (0, _react.useState)(L.layerGroup()),
89
- _useState10 = (0, _slicedToArray2.default)(_useState9, 1),
90
- factoriesParentGroup = _useState10[0];
91
- var _useState11 = (0, _react.useState)(L.layerGroup()),
92
- _useState12 = (0, _slicedToArray2.default)(_useState11, 1),
93
- unmonitoredFactoriesGroup = _useState12[0];
94
- var _useState13 = (0, _react.useState)(L.layerGroup()),
95
- _useState14 = (0, _slicedToArray2.default)(_useState13, 1),
96
- monitoredFactoriesGroup = _useState14[0];
97
- var _useState15 = (0, _react.useState)(L.layerGroup()),
98
- _useState16 = (0, _slicedToArray2.default)(_useState15, 1),
99
- unmonitoredEdgesGroup = _useState16[0];
100
- var _useState17 = (0, _react.useState)(L.layerGroup()),
101
- _useState18 = (0, _slicedToArray2.default)(_useState17, 1),
102
- monitoredEdgesGroup = _useState18[0];
103
- var _useState19 = (0, _react.useState)(L.layerGroup()),
104
- _useState20 = (0, _slicedToArray2.default)(_useState19, 1),
105
- wwtpsLayerGroup = _useState20[0];
106
- var _useState21 = (0, _react.useState)(L.layerGroup()),
107
- _useState22 = (0, _slicedToArray2.default)(_useState21, 1),
108
- collectorsLayerGroup = _useState22[0];
109
- var _useState23 = (0, _react.useState)(new L.FeatureGroup()),
110
- _useState24 = (0, _slicedToArray2.default)(_useState23, 1),
111
- areasLayerGroup = _useState24[0];
112
- var renderPointMarkers = function renderPointMarkers(filteredPoints, mapRef, props) {
113
- return mapRef.current !== null && points && /*#__PURE__*/_react.default.createElement(_PointMarkers.PointMarkers, Object.assign({
114
- map: mapRef.current,
115
- points: filteredPoints,
116
- showSamplerIcon: showSamplerIcon
117
- }, props));
118
- };
119
- var memoizedMonitoredPoints = (0, _react.useMemo)(function () {
71
+ const [factoriesParentGroup] = (0, _react.useState)(L.layerGroup());
72
+ const [unmonitoredFactoriesGroup] = (0, _react.useState)(L.layerGroup());
73
+ const [monitoredFactoriesGroup] = (0, _react.useState)(L.layerGroup());
74
+ const [unmonitoredEdgesGroup] = (0, _react.useState)(L.layerGroup());
75
+ const [monitoredEdgesGroup] = (0, _react.useState)(L.layerGroup());
76
+ const [wwtpsLayerGroup] = (0, _react.useState)(L.layerGroup());
77
+ const [collectorsLayerGroup] = (0, _react.useState)(L.layerGroup());
78
+ const [areasLayerGroup] = (0, _react.useState)(new L.FeatureGroup());
79
+ const renderPointMarkers = (filteredPoints, mapRef, props) => mapRef.current !== null && points && /*#__PURE__*/_react.default.createElement(_PointMarkers.PointMarkers, Object.assign({
80
+ map: mapRef.current,
81
+ points: filteredPoints,
82
+ showSamplerIcon: showSamplerIcon
83
+ }, props));
84
+ const memoizedMonitoredPoints = (0, _react.useMemo)(() => {
120
85
  if (!edgesCheckbox || !mapRef.current || !points || points.length === 0) return null;
121
- var monitoredPoints = (0, _MapUtils.filterPoints)(points, {
86
+ const monitoredPoints = (0, _MapUtils.filterPoints)(points, {
122
87
  onlyMonitored: true
123
88
  });
124
- var result = renderPointMarkers(monitoredPoints, mapRef, {
89
+ const result = renderPointMarkers(monitoredPoints, mapRef, {
125
90
  includeUnmonitoredPoints: true,
126
91
  rerender: _MapUtils.zoomLevels[mapZoomLevel],
127
92
  factoriesGroup: monitoredFactoriesGroup,
128
93
  wwtpsGroup: wwtpsLayerGroup,
129
94
  collectorsGroup: collectorsLayerGroup,
130
- forEventsView: forEventsView
95
+ forEventsView,
96
+ showSampler: false
131
97
  });
132
98
  return result;
133
99
  }, [mapRef.current, points, mapZoomLevel]);
134
- var memoizedUnmonitoredPoints = (0, _react.useMemo)(function () {
100
+ const memoizedUnmonitoredPoints = (0, _react.useMemo)(() => {
135
101
  if (!edgesCheckbox || !mapRef.current || !points || points.length === 0) return null;
136
- var unmonitoredPoints = (0, _MapUtils.filterPoints)(points, {
102
+ const unmonitoredPoints = (0, _MapUtils.filterPoints)(points, {
137
103
  onlyMonitored: false
138
104
  });
139
- var result = renderPointMarkers(unmonitoredPoints, mapRef, {
105
+ const result = renderPointMarkers(unmonitoredPoints, mapRef, {
140
106
  includeUnmonitoredPoints: true,
141
107
  rerender: _MapUtils.zoomLevels[mapZoomLevel],
142
108
  factoriesGroup: unmonitoredFactoriesGroup,
143
109
  wwtpsGroup: wwtpsLayerGroup,
144
110
  collectorsGroup: collectorsLayerGroup,
145
- forEventsView: forEventsView
111
+ forEventsView
146
112
  });
147
113
  return result;
148
114
  }, [mapRef.current, points, mapZoomLevel]);
149
- var renderEdges = function renderEdges(filteredEdges, mapRef, edgesCheckbox, props) {
150
- return mapRef.current !== null && edgesCheckbox && /*#__PURE__*/_react.default.createElement(_Edges.default, Object.assign({
151
- edges: filteredEdges,
152
- map: mapRef.current
153
- }, props));
154
- };
155
- var memoizedEdges = (0, _react.useMemo)(function () {
156
- var monitoredEdges = (0, _MapUtils.filterEdges)(edges, points, true);
115
+ const renderEdges = (filteredEdges, mapRef, edgesCheckbox, props) => mapRef.current !== null && edgesCheckbox && /*#__PURE__*/_react.default.createElement(_Edges.default, Object.assign({
116
+ edges: filteredEdges,
117
+ map: mapRef.current
118
+ }, props));
119
+ const memoizedEdges = (0, _react.useMemo)(() => {
120
+ const monitoredEdges = (0, _MapUtils.filterEdges)(edges, points, true);
157
121
  return renderEdges(monitoredEdges, mapRef, edgesCheckbox, {
158
- L: L,
159
- points: points,
122
+ L,
123
+ points,
160
124
  hideEdges: false,
161
125
  hideArrows: true,
162
126
  allowUnmonitoredDescendants: includeUnmonitoredDescendantsForEdges,
163
127
  group: monitoredEdgesGroup
164
128
  });
165
129
  }, [points, edgesCheckbox, mapZoomLevel]);
166
- var memoizedUnmonitoredEdges = (0, _react.useMemo)(function () {
167
- if (onlyMonitoredPoints) return null;
168
- var unmonitoredEdges = (0, _MapUtils.filterEdges)(edges, points, false);
130
+ const memoizedUnmonitoredEdges = (0, _react.useMemo)(() => {
131
+ const unmonitoredEdges = (0, _MapUtils.filterEdges)(edges, points, false);
169
132
  return renderEdges(unmonitoredEdges, mapRef, edgesCheckbox, {
170
- L: L,
171
- points: points,
133
+ L,
134
+ points,
172
135
  hideEdges: false,
173
136
  hideArrows: true,
174
137
  allowUnmonitoredDescendants: includeUnmonitoredDescendantsForEdges,
175
138
  group: unmonitoredEdgesGroup
176
139
  });
177
140
  }, [points, edgesCheckbox, mapZoomLevel]);
178
- var handleEdgesCheckboxChange = function handleEdgesCheckboxChange(isChecked) {
141
+ const handleEdgesCheckboxChange = isChecked => {
179
142
  setEdgesCheckbox(isChecked);
180
143
  };
181
144
 
182
145
  // This variable stores the zoom levels the edges are displayed
183
146
  // It is used in two places in the code, so it is better to store it in one place
184
- var edgesZoomLevels = ['Small', 'Medium', 'MLarge', 'Large'];
185
- var handlePointsCheckboxChange = function handlePointsCheckboxChange(isChecked) {
147
+ const edgesZoomLevels = ['Small', 'Medium', 'MLarge', 'Large'];
148
+ const handlePointsCheckboxChange = isChecked => {
186
149
  setOnlyMonitoredPoints(isChecked);
187
150
  if (mapRef.current !== null) {
188
151
  setOnlyMonitoredPoints(isChecked);
189
- var zoom = _MapUtils.zoomLevels[mapRef.current.getZoom()];
152
+ let zoom = _MapUtils.zoomLevels[mapRef.current.getZoom()];
190
153
  if (isChecked) {
191
154
  // Hide unmonitored points when "show only monitored" is checked
192
155
  factoriesParentGroup.removeLayer(unmonitoredFactoriesGroup);
@@ -202,20 +165,20 @@ var Map = function Map(_ref) {
202
165
  }
203
166
  }
204
167
  };
205
- var handlePointsWithSamplerCheckboxChange = function handlePointsWithSamplerCheckboxChange(isChecked) {
168
+ const handlePointsWithSamplerCheckboxChange = isChecked => {
206
169
  setShowSamplerIcon(isChecked);
207
170
  };
208
- var trackLayerbox = function trackLayerbox() {
171
+ const trackLayerbox = () => {
209
172
  (0, _MapUtils.setupCheckboxListener)('#edges-checkbox', handleEdgesCheckboxChange);
210
173
  (0, _MapUtils.setupCheckboxListener)('#monitored-points-checkbox', handlePointsCheckboxChange);
211
174
  (0, _MapUtils.setupCheckboxListener)('#monitored-points-with-sampler-checkbox', handlePointsWithSamplerCheckboxChange);
212
175
  };
213
- var zoomRulesForEventsView = function zoomRulesForEventsView() {
214
- var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, edgesCheckbox && memoizedEdges, edgesCheckbox && !onlyMonitoredPoints && memoizedUnmonitoredEdges, !onlyMonitoredPoints && memoizedUnmonitoredPoints, memoizedMonitoredPoints);
176
+ const zoomRulesForEventsView = () => {
177
+ const payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, edgesCheckbox && memoizedEdges, edgesCheckbox && !onlyMonitoredPoints && memoizedUnmonitoredEdges, !onlyMonitoredPoints && memoizedUnmonitoredPoints, memoizedMonitoredPoints);
215
178
  return payload;
216
179
  };
217
- var memoizedZoomControl = function memoizedZoomControl() {
218
- var payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
180
+ const memoizedZoomControl = () => {
181
+ let payload = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
219
182
  if (edgesZoomLevels.includes(_MapUtils.zoomLevels[mapZoomLevel])) {
220
183
  payload = zoomRulesForEventsView();
221
184
  } else {
@@ -223,7 +186,7 @@ var Map = function Map(_ref) {
223
186
  }
224
187
  return payload;
225
188
  };
226
- var memoizedEvent = (0, _react.useMemo)(function () {
189
+ const memoizedEvent = (0, _react.useMemo)(() => {
227
190
  if (focusedEventPresent) {
228
191
  focusedEvent.focused = focusedEventPresent;
229
192
  focusedEvent.hovered = !focusedEventPresent;
@@ -241,27 +204,27 @@ var Map = function Map(_ref) {
241
204
  includeNetwork: !hoveredEventPresent
242
205
  });
243
206
  }, [focusedEventPresent, hoveredEventPresent, edges, points]);
244
- (0, _react.useEffect)(function () {
207
+ (0, _react.useEffect)(() => {
245
208
  edgesCheckboxRef.current = edgesCheckbox;
246
209
  }, [edgesCheckbox]);
247
- (0, _react.useEffect)(function () {
210
+ (0, _react.useEffect)(() => {
248
211
  if (mapRef.current) {
249
- var allGroups = [monitoredFactoriesGroup, unmonitoredFactoriesGroup, wwtpsLayerGroup, collectorsLayerGroup];
250
- var matchingMarkers = [];
251
- allGroups.forEach(function (group) {
252
- group.getLayers().forEach(function (layer) {
212
+ const allGroups = [monitoredFactoriesGroup, unmonitoredFactoriesGroup, wwtpsLayerGroup, collectorsLayerGroup];
213
+ let matchingMarkers = [];
214
+ allGroups.forEach(group => {
215
+ group.getLayers().forEach(layer => {
253
216
  if (layer instanceof L.Marker && layer['kando_has_sampler'] === true) {
254
217
  matchingMarkers.push(layer);
255
218
  }
256
219
  });
257
220
  });
258
- matchingMarkers.forEach(function (marker) {
221
+ matchingMarkers.forEach(marker => {
259
222
  marker['kando_show_sampler'] = showSamplerIcon;
260
- var markerIconData = marker['kando_icon_data'];
261
- var markerClicked = marker.isPopupOpen() || false;
262
- var hideText = markerClicked === false;
223
+ const markerIconData = marker['kando_icon_data'];
224
+ const markerClicked = marker.isPopupOpen() || false;
225
+ const hideText = markerClicked === false;
263
226
  if (markerIconData) {
264
- var icon = (0, _PointIcon2.getPointIconByType)((markerIconData === null || markerIconData === void 0 ? void 0 : markerIconData.type) || '', (markerIconData === null || markerIconData === void 0 ? void 0 : markerIconData.title) || '', (markerIconData === null || markerIconData === void 0 ? void 0 : markerIconData.subtitle) || '', markerClicked, hideText, (markerIconData === null || markerIconData === void 0 ? void 0 : markerIconData.hasIssues) || false, showSamplerIcon, (markerIconData === null || markerIconData === void 0 ? void 0 : markerIconData.shouldInstall) || false);
227
+ const icon = (0, _PointIcon2.getPointIconByType)((markerIconData === null || markerIconData === void 0 ? void 0 : markerIconData.type) || '', (markerIconData === null || markerIconData === void 0 ? void 0 : markerIconData.title) || '', (markerIconData === null || markerIconData === void 0 ? void 0 : markerIconData.subtitle) || '', markerClicked, hideText, (markerIconData === null || markerIconData === void 0 ? void 0 : markerIconData.hasIssues) || false, showSamplerIcon, (markerIconData === null || markerIconData === void 0 ? void 0 : markerIconData.shouldInstall) || false);
265
228
  marker.setIcon(icon);
266
229
  }
267
230
  });
@@ -275,7 +238,7 @@ var Map = function Map(_ref) {
275
238
  // };
276
239
  // }, [focusedEvent, global_data.eventFilterParam]);
277
240
 
278
- (0, _react.useEffect)(function () {
241
+ (0, _react.useEffect)(() => {
279
242
  return function cleanup() {
280
243
  if (forEventsView && mapRef.current) {
281
244
  dispatch((0, _actions2.clearPoints)());
@@ -294,7 +257,7 @@ var Map = function Map(_ref) {
294
257
  mapRef.current.removeLayer(collectorsLayerGroup);
295
258
  mapRef.current.removeLayer(areasLayerGroup);
296
259
  mapRef.current.removeLayer(factoriesParentGroup);
297
- mapRef.current.eachLayer(function (layer) {
260
+ mapRef.current.eachLayer(layer => {
298
261
  if (layer instanceof L.TileLayer) {
299
262
  return;
300
263
  }
@@ -303,7 +266,7 @@ var Map = function Map(_ref) {
303
266
  }
304
267
  };
305
268
  }, [global_data.waterAuthorityId]);
306
- (0, _react.useEffect)(function () {
269
+ (0, _react.useEffect)(() => {
307
270
  if (!mapRef.current) {
308
271
  (0, _MapUtils.initializeMap)(mapZoomLevel, mapBoxStyle, _theme.leafletMap.satellite, mapRef, dispatch, _MapUtils.isValidArea, areaToCenterBy, setMapZoomLevel, forWWTPDashboard, true, global_data.waterAuthorityId);
309
272
 
@@ -317,19 +280,17 @@ var Map = function Map(_ref) {
317
280
  } else {
318
281
  setMapZoomLevel(mapRef.current.getZoom());
319
282
  if (!areaToCenterBy) {
320
- areaToCenterBy = areas.map(function (area) {
321
- return area.shape_data;
322
- }).flat();
283
+ areaToCenterBy = areas.map(area => area.shape_data).flat();
323
284
  }
324
285
  if (!focusedEvent) {
325
286
  (0, _MapUtils.areaFocusLogic)(mapRef, _MapUtils.isValidArea, areaToCenterBy);
326
287
  }
327
288
  }
328
289
  }, [mapRef.current, areaToCenterBy]);
329
- (0, _react.useEffect)(function () {
290
+ (0, _react.useEffect)(() => {
330
291
  var _mapRef$current;
331
- var clicked = false;
332
- (_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : _mapRef$current.eachLayer(function (layer) {
292
+ let clicked = false;
293
+ (_mapRef$current = mapRef.current) === null || _mapRef$current === void 0 ? void 0 : _mapRef$current.eachLayer(layer => {
333
294
  if (clicked) return;
334
295
  if ((layer === null || layer === void 0 ? void 0 : layer.kando_object_id) === selectedItem && layer.isPopupOpen() === false) {
335
296
  if (layer instanceof L.Marker) {
@@ -341,7 +302,7 @@ var Map = function Map(_ref) {
341
302
  }
342
303
  });
343
304
  }, [selectedItem]);
344
- var renderAreas = function renderAreas() {
305
+ const renderAreas = () => {
345
306
  if (!(0, _MapUtils.shouldLoadMapObjects)(global_data, mapRef, edges, points)) {
346
307
  return null;
347
308
  }
@@ -365,4 +326,4 @@ var Map = function Map(_ref) {
365
326
  }), renderAreas(), (0, _MapUtils.shoudLoadDependentMapObjects)(edges, areas, global_data, mapRef, points) && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, memoizedEvent, memoizedZoomControl(), children))));
366
327
  };
367
328
  exports.Map = Map;
368
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfRXJyb3JCb3VuZGFyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXJlYVBvbHlnb25zIiwiX0VkZ2VzIiwiX1BvaW50TWFya2VycyIsIl9FdmVudCIsIl9NYXBVdGlscyIsIl90aGVtZSIsIl9MaXN0Q29udGV4dCIsIl9hY3Rpb25zIiwiX2FjdGlvbnMyIiwiX1BvaW50SWNvbjIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIk1hcCIsIl9yZWYiLCJhcmVhcyIsImVkZ2VzIiwicG9pbnRzIiwiZ2xvYmFsX2RhdGEiLCJhcmVhVG9DZW50ZXJCeSIsImZvY3VzZWRFdmVudCIsImhvdmVyZWRFdmVudCIsIl9yZWYkaGlkZUVkZ2VzIiwiaGlkZUVkZ2VzIiwiX3JlZiRtYXBCb3hTdHlsZSIsIm1hcEJveFN0eWxlIiwibGVhZmxldE1hcCIsIm1hcERlZmF1bHQiLCJjaGlsZHJlbiIsIl9yZWYkaW5jbHVkZVVubW9uaXRvciIsImluY2x1ZGVVbm1vbml0b3JlZFBvaW50cyIsIl9yZWYkaW5jbHVkZVVubW9uaXRvcjIiLCJpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzIiwiX3JlZiRmb3JFdmVudHNWaWV3IiwiZm9yRXZlbnRzVmlldyIsIl9yZWYkc3R5bGUiLCJzdHlsZSIsIl9yZWYkZm9yV1dUUERhc2hib2FyZCIsImZvcldXVFBEYXNoYm9hcmQiLCJtYXAiLCJtYXBSZWYiLCJ1c2VSZWYiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwibWFwWm9vbUxldmVsIiwic2V0TWFwWm9vbUxldmVsIiwiX3VzZVNlbGVjdGVkSXRlbSIsInVzZVNlbGVjdGVkSXRlbSIsInNlbGVjdGVkSXRlbSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZWRnZXNDaGVja2JveCIsInNldEVkZ2VzQ2hlY2tib3giLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsIm9ubHlNb25pdG9yZWRQb2ludHMiLCJzZXRPbmx5TW9uaXRvcmVkUG9pbnRzIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzaG93U2FtcGxlckljb24iLCJzZXRTaG93U2FtcGxlckljb24iLCJlZGdlc0NoZWNrYm94UmVmIiwiaG92ZXJlZEV2ZW50UHJlc2VudCIsInVzZU1lbW8iLCJ1bmRlZmluZWQiLCJmb2N1c2VkRXZlbnRQcmVzZW50IiwiX3VzZVN0YXRlOSIsImxheWVyR3JvdXAiLCJfdXNlU3RhdGUxMCIsImZhY3Rvcmllc1BhcmVudEdyb3VwIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwibW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwidW5tb25pdG9yZWRFZGdlc0dyb3VwIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsIm1vbml0b3JlZEVkZ2VzR3JvdXAiLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwid3d0cHNMYXllckdyb3VwIiwiX3VzZVN0YXRlMjEiLCJfdXNlU3RhdGUyMiIsImNvbGxlY3RvcnNMYXllckdyb3VwIiwiX3VzZVN0YXRlMjMiLCJGZWF0dXJlR3JvdXAiLCJfdXNlU3RhdGUyNCIsImFyZWFzTGF5ZXJHcm91cCIsInJlbmRlclBvaW50TWFya2VycyIsImZpbHRlcmVkUG9pbnRzIiwicHJvcHMiLCJjdXJyZW50IiwiY3JlYXRlRWxlbWVudCIsIlBvaW50TWFya2VycyIsImFzc2lnbiIsIm1lbW9pemVkTW9uaXRvcmVkUG9pbnRzIiwibGVuZ3RoIiwibW9uaXRvcmVkUG9pbnRzIiwiZmlsdGVyUG9pbnRzIiwib25seU1vbml0b3JlZCIsInJlc3VsdCIsInJlcmVuZGVyIiwiem9vbUxldmVscyIsImZhY3Rvcmllc0dyb3VwIiwid3d0cHNHcm91cCIsImNvbGxlY3RvcnNHcm91cCIsIm1lbW9pemVkVW5tb25pdG9yZWRQb2ludHMiLCJ1bm1vbml0b3JlZFBvaW50cyIsInJlbmRlckVkZ2VzIiwiZmlsdGVyZWRFZGdlcyIsIm1lbW9pemVkRWRnZXMiLCJtb25pdG9yZWRFZGdlcyIsImZpbHRlckVkZ2VzIiwiaGlkZUFycm93cyIsImFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50cyIsImdyb3VwIiwibWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzIiwidW5tb25pdG9yZWRFZGdlcyIsImhhbmRsZUVkZ2VzQ2hlY2tib3hDaGFuZ2UiLCJpc0NoZWNrZWQiLCJlZGdlc1pvb21MZXZlbHMiLCJoYW5kbGVQb2ludHNDaGVja2JveENoYW5nZSIsInpvb20iLCJnZXRab29tIiwicmVtb3ZlTGF5ZXIiLCJyZW1vdmVGcm9tIiwiYWRkTGF5ZXIiLCJpbmNsdWRlcyIsImFkZFRvIiwiaGFuZGxlUG9pbnRzV2l0aFNhbXBsZXJDaGVja2JveENoYW5nZSIsInRyYWNrTGF5ZXJib3giLCJzZXR1cENoZWNrYm94TGlzdGVuZXIiLCJ6b29tUnVsZXNGb3JFdmVudHNWaWV3IiwicGF5bG9hZCIsIkZyYWdtZW50IiwibWVtb2l6ZWRab29tQ29udHJvbCIsIm1lbW9pemVkRXZlbnQiLCJmb2N1c2VkIiwiaG92ZXJlZCIsIkV2ZW50IiwiZXZlbnQiLCJpbmNsdWRlTmV0d29yayIsInVzZUVmZmVjdCIsImFsbEdyb3VwcyIsIm1hdGNoaW5nTWFya2VycyIsImZvckVhY2giLCJnZXRMYXllcnMiLCJsYXllciIsIk1hcmtlciIsInB1c2giLCJtYXJrZXIiLCJtYXJrZXJJY29uRGF0YSIsIm1hcmtlckNsaWNrZWQiLCJpc1BvcHVwT3BlbiIsImhpZGVUZXh0IiwiaWNvbiIsImdldFBvaW50SWNvbkJ5VHlwZSIsInR5cGUiLCJ0aXRsZSIsInN1YnRpdGxlIiwiaGFzSXNzdWVzIiwic2hvdWxkSW5zdGFsbCIsInNldEljb24iLCJjbGVhbnVwIiwiY2xlYXJQb2ludHMiLCJjbGVhckFyZWFzIiwiY2xlYXJMYXllcnMiLCJlYWNoTGF5ZXIiLCJUaWxlTGF5ZXIiLCJ3YXRlckF1dGhvcml0eUlkIiwiaW5pdGlhbGl6ZU1hcCIsInNhdGVsbGl0ZSIsImlzVmFsaWRBcmVhIiwiYXJlYSIsInNoYXBlX2RhdGEiLCJmbGF0IiwiYXJlYUZvY3VzTG9naWMiLCJfbWFwUmVmJGN1cnJlbnQiLCJjbGlja2VkIiwia2FuZG9fb2JqZWN0X2lkIiwiZmlyZSIsIlBvbHlnb24iLCJyZW5kZXJBcmVhcyIsInNob3VsZExvYWRNYXBPYmplY3RzIiwiQXJlYVBvbHlnb25zIiwibWFwWm9vbSIsImZlYXR1cmVHcm91cCIsImNsYXNzTmFtZSIsImNvbmNhdCIsInNpZGVuYXZFeHBhbmRlZCIsImlkIiwic2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvV2lkZ2V0cy9NYXAvTWFwLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0ICdzcmMvdXRpbGl0aWVzL3BvbHlsaW5lZGVjb3JhdG9yJztcbmltcG9ydCAnbGVhZmxldC5tYXJrZXJjbHVzdGVyJztcbmltcG9ydCAnbGVhZmxldC5wYXR0ZXJuJztcbmltcG9ydCAnbGVhZmxldC5oZWF0JztcbmltcG9ydCBSZWFjdCwge1xuICBDU1NQcm9wZXJ0aWVzLFxuICB1c2VFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgSUFyZWEgfSBmcm9tICdzcmMvc3RvcmUvYXJlYXMvbW9kZWxzL0lBcmVhJztcbmltcG9ydCB7IElFZGdlIH0gZnJvbSAnc3JjL3N0b3JlL2VkZ2VzL21vZGVscy9JRWRnZSc7XG5pbXBvcnQgeyBJRXZlbnQgfSBmcm9tICdzcmMvc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHsgSUdsb2JhbFN0YXRlIH0gZnJvbSAnc3JjL3N0b3JlL2dsb2JhbC9tb2RlbHMvSUdsb2JhbFN0YXRlJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICdzcmMvdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IHsgQXJlYVBvbHlnb25zIH0gZnJvbSAnLi9hcmVhcy9BcmVhUG9seWdvbnMnO1xuaW1wb3J0IEVkZ2VzIGZyb20gJy4vZWRnZXMvRWRnZXMnO1xuaW1wb3J0ICcuL01hcC5zY3NzJztcbmltcG9ydCAnLi9wb2ludHMvUG9pbnRJY29uLnNjc3MnO1xuaW1wb3J0IHsgUG9pbnRNYXJrZXJzIH0gZnJvbSAnLi9wb2ludHMvUG9pbnRNYXJrZXJzJztcbmltcG9ydCB7IEV2ZW50IH0gZnJvbSAnLi9ldmVudHMvRXZlbnQnO1xuaW1wb3J0IHtcbiAgYXJlYUZvY3VzTG9naWMsXG4gIGZpbHRlckVkZ2VzLFxuICBmaWx0ZXJQb2ludHMsXG4gIGluaXRpYWxpemVNYXAsXG4gIGlzVmFsaWRBcmVhLFxuICBzZXR1cENoZWNrYm94TGlzdGVuZXIsXG4gIHNob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMsXG4gIHNob3VsZExvYWRNYXBPYmplY3RzLFxuICB6b29tTGV2ZWxzLFxufSBmcm9tICcuL01hcFV0aWxzJztcbmltcG9ydCB7IGxlYWZsZXRNYXAgfSBmcm9tICcuLi8uLi9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuaW1wb3J0IHsgdXNlU2VsZWN0ZWRJdGVtIH0gZnJvbSAnc3JjL3BhZ2VzL0Rhc2hib2FyZE1hcC9MaXN0Q29udGV4dCc7XG5pbXBvcnQgeyBjbGVhckFyZWFzIH0gZnJvbSAnc3JjL3N0b3JlL2FyZWFzL2FjdGlvbnMnO1xuaW1wb3J0IHsgY2xlYXJQb2ludHMgfSBmcm9tICdzcmMvc3RvcmUvcG9pbnRzL2FjdGlvbnMnO1xuaW1wb3J0IHsgZ2V0UG9pbnRJY29uQnlUeXBlIH0gZnJvbSAnLi9wb2ludHMvUG9pbnRJY29uJztcbnJlcXVpcmUoJ2xlYWZsZXQubWFya2VyY2x1c3RlcicpO1xuXG5pbnRlcmZhY2UgTWFwUHJvcHMge1xuICBhcmVhczogSUFyZWFbXTtcbiAgZWRnZXM/OiBJRWRnZVtdO1xuICBwb2ludHM/OiBJUG9pbnRbXTtcbiAgZ2xvYmFsX2RhdGE6IElHbG9iYWxTdGF0ZTtcbiAgYXJlYVRvQ2VudGVyQnk/OiBhbnk7XG4gIGZvY3VzZWRFdmVudD86IElFdmVudCB8IG51bGw7XG4gIGhvdmVyZWRFdmVudD86IElFdmVudCB8IG51bGw7XG4gIGhpZGVFZGdlcz86IGJvb2xlYW47XG4gIG1hcEJveFN0eWxlPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IGFueTtcbiAgc3R5bGU/OiBDU1NQcm9wZXJ0aWVzO1xuICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHM/OiBib29sZWFuO1xuICBpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzPzogYm9vbGVhbjtcbiAgZm9yRXZlbnRzVmlldzogYm9vbGVhbjtcbiAgZm9yV1dUUERhc2hib2FyZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBNYXA6IFJlYWN0LkZDPE1hcFByb3BzPiA9ICh7XG4gIGFyZWFzLFxuICBlZGdlcyxcbiAgcG9pbnRzLFxuICBnbG9iYWxfZGF0YSxcbiAgYXJlYVRvQ2VudGVyQnksXG4gIGZvY3VzZWRFdmVudCxcbiAgaG92ZXJlZEV2ZW50LFxuICBoaWRlRWRnZXMgPSBmYWxzZSxcbiAgbWFwQm94U3R5bGUgPSBsZWFmbGV0TWFwLm1hcERlZmF1bHQsXG4gIGNoaWxkcmVuLFxuICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMgPSB0cnVlLFxuICBpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzID0gZmFsc2UsXG4gIGZvckV2ZW50c1ZpZXcgPSBmYWxzZSxcbiAgc3R5bGUgPSB7fSxcbiAgZm9yV1dUUERhc2hib2FyZCA9IGZhbHNlLFxufSkgPT4ge1xuICBjb25zdCB7IG1hcCB9ID0gZ2xvYmFsX2RhdGE7XG4gIGNvbnN0IG1hcFJlZiA9IHVzZVJlZjxMLk1hcCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFttYXBab29tTGV2ZWwsIHNldE1hcFpvb21MZXZlbF0gPSB1c2VTdGF0ZSgyKTtcbiAgY29uc3QgeyBzZWxlY3RlZEl0ZW0gfSA9IHVzZVNlbGVjdGVkSXRlbSgpO1xuICBjb25zdCBbZWRnZXNDaGVja2JveCwgc2V0RWRnZXNDaGVja2JveF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgW29ubHlNb25pdG9yZWRQb2ludHMsIHNldE9ubHlNb25pdG9yZWRQb2ludHNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd1NhbXBsZXJJY29uLCBzZXRTaG93U2FtcGxlckljb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBlZGdlc0NoZWNrYm94UmVmID0gdXNlUmVmKGVkZ2VzQ2hlY2tib3gpO1xuXG4gIGNvbnN0IGhvdmVyZWRFdmVudFByZXNlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gaG92ZXJlZEV2ZW50ICE9PSBudWxsICYmIGhvdmVyZWRFdmVudCAhPT0gdW5kZWZpbmVkO1xuICB9LCBbaG92ZXJlZEV2ZW50XSk7XG5cbiAgY29uc3QgZm9jdXNlZEV2ZW50UHJlc2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBmb2N1c2VkRXZlbnQgIT09IG51bGwgJiYgZm9jdXNlZEV2ZW50ICE9PSB1bmRlZmluZWQ7XG4gIH0sIFtmb2N1c2VkRXZlbnRdKTtcblxuICAvLyBBZGQgcGFyZW50IGxheWVyIGdyb3VwIGZvciBhbGwgZmFjdG9yaWVzXG4gIGNvbnN0IFtmYWN0b3JpZXNQYXJlbnRHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFt1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW21vbml0b3JlZEZhY3Rvcmllc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3VubW9uaXRvcmVkRWRnZXNHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFttb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3d3dHBzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFtjb2xsZWN0b3JzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShMLmxheWVyR3JvdXAoKSk7XG4gIGNvbnN0IFthcmVhc0xheWVyR3JvdXBdID0gdXNlU3RhdGUobmV3IEwuRmVhdHVyZUdyb3VwKCkpO1xuXG4gIGNvbnN0IHJlbmRlclBvaW50TWFya2VycyA9IChmaWx0ZXJlZFBvaW50cywgbWFwUmVmLCBwcm9wcykgPT5cbiAgICBtYXBSZWYuY3VycmVudCAhPT0gbnVsbCAmJlxuICAgIHBvaW50cyAmJiAoXG4gICAgICA8UG9pbnRNYXJrZXJzXG4gICAgICAgIG1hcD17bWFwUmVmLmN1cnJlbnR9XG4gICAgICAgIHBvaW50cz17ZmlsdGVyZWRQb2ludHN9XG4gICAgICAgIHNob3dTYW1wbGVySWNvbj17c2hvd1NhbXBsZXJJY29ufVxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAvPlxuICAgICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRNb25pdG9yZWRQb2ludHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIWVkZ2VzQ2hlY2tib3ggfHwgIW1hcFJlZi5jdXJyZW50IHx8ICFwb2ludHMgfHwgcG9pbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgbW9uaXRvcmVkUG9pbnRzID0gZmlsdGVyUG9pbnRzKHBvaW50cywgeyBvbmx5TW9uaXRvcmVkOiB0cnVlIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gcmVuZGVyUG9pbnRNYXJrZXJzKG1vbml0b3JlZFBvaW50cywgbWFwUmVmLCB7XG4gICAgICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHM6IHRydWUsXG4gICAgICByZXJlbmRlcjogem9vbUxldmVsc1ttYXBab29tTGV2ZWxdLFxuICAgICAgZmFjdG9yaWVzR3JvdXA6IG1vbml0b3JlZEZhY3Rvcmllc0dyb3VwLFxuICAgICAgd3d0cHNHcm91cDogd3d0cHNMYXllckdyb3VwLFxuICAgICAgY29sbGVjdG9yc0dyb3VwOiBjb2xsZWN0b3JzTGF5ZXJHcm91cCxcbiAgICAgIGZvckV2ZW50c1ZpZXcsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCBbbWFwUmVmLmN1cnJlbnQsIHBvaW50cywgbWFwWm9vbUxldmVsXSk7XG5cbiAgY29uc3QgbWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghZWRnZXNDaGVja2JveCB8fCAhbWFwUmVmLmN1cnJlbnQgfHwgIXBvaW50cyB8fCBwb2ludHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCB1bm1vbml0b3JlZFBvaW50cyA9IGZpbHRlclBvaW50cyhwb2ludHMsIHsgb25seU1vbml0b3JlZDogZmFsc2UgfSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSByZW5kZXJQb2ludE1hcmtlcnModW5tb25pdG9yZWRQb2ludHMsIG1hcFJlZiwge1xuICAgICAgaW5jbHVkZVVubW9uaXRvcmVkUG9pbnRzOiB0cnVlLFxuICAgICAgcmVyZW5kZXI6IHpvb21MZXZlbHNbbWFwWm9vbUxldmVsXSxcbiAgICAgIGZhY3Rvcmllc0dyb3VwOiB1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwLFxuICAgICAgd3d0cHNHcm91cDogd3d0cHNMYXllckdyb3VwLFxuICAgICAgY29sbGVjdG9yc0dyb3VwOiBjb2xsZWN0b3JzTGF5ZXJHcm91cCxcbiAgICAgIGZvckV2ZW50c1ZpZXcsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCBbbWFwUmVmLmN1cnJlbnQsIHBvaW50cywgbWFwWm9vbUxldmVsXSk7XG5cbiAgY29uc3QgcmVuZGVyRWRnZXMgPSAoZmlsdGVyZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCBwcm9wcykgPT5cbiAgICBtYXBSZWYuY3VycmVudCAhPT0gbnVsbCAmJlxuICAgIGVkZ2VzQ2hlY2tib3ggJiYgKFxuICAgICAgPEVkZ2VzIGVkZ2VzPXtmaWx0ZXJlZEVkZ2VzfSBtYXA9e21hcFJlZi5jdXJyZW50fSB7Li4ucHJvcHN9IC8+XG4gICAgKTtcblxuICBjb25zdCBtZW1vaXplZEVkZ2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgbW9uaXRvcmVkRWRnZXMgPSBmaWx0ZXJFZGdlcyhlZGdlcywgcG9pbnRzLCB0cnVlKTtcblxuICAgIHJldHVybiByZW5kZXJFZGdlcyhtb25pdG9yZWRFZGdlcywgbWFwUmVmLCBlZGdlc0NoZWNrYm94LCB7XG4gICAgICBMLFxuICAgICAgcG9pbnRzLFxuICAgICAgaGlkZUVkZ2VzOiBmYWxzZSxcbiAgICAgIGhpZGVBcnJvd3M6IHRydWUsXG4gICAgICBhbGxvd1VubW9uaXRvcmVkRGVzY2VuZGFudHM6IGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMsXG4gICAgICBncm91cDogbW9uaXRvcmVkRWRnZXNHcm91cCxcbiAgICB9KTtcbiAgfSwgW3BvaW50cywgZWRnZXNDaGVja2JveCwgbWFwWm9vbUxldmVsXSk7XG5cbiAgY29uc3QgbWVtb2l6ZWRVbm1vbml0b3JlZEVkZ2VzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG9ubHlNb25pdG9yZWRQb2ludHMpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgdW5tb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIGZhbHNlKTtcblxuICAgIHJldHVybiByZW5kZXJFZGdlcyh1bm1vbml0b3JlZEVkZ2VzLCBtYXBSZWYsIGVkZ2VzQ2hlY2tib3gsIHtcbiAgICAgIEwsXG4gICAgICBwb2ludHMsXG4gICAgICBoaWRlRWRnZXM6IGZhbHNlLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiB1bm1vbml0b3JlZEVkZ2VzR3JvdXAsXG4gICAgfSk7XG4gIH0sIFtwb2ludHMsIGVkZ2VzQ2hlY2tib3gsIG1hcFpvb21MZXZlbF0pO1xuXG4gIGNvbnN0IGhhbmRsZUVkZ2VzQ2hlY2tib3hDaGFuZ2UgPSAoaXNDaGVja2VkKSA9PiB7XG4gICAgc2V0RWRnZXNDaGVja2JveChpc0NoZWNrZWQpO1xuICB9O1xuXG4gIC8vIFRoaXMgdmFyaWFibGUgc3RvcmVzIHRoZSB6b29tIGxldmVscyB0aGUgZWRnZXMgYXJlIGRpc3BsYXllZFxuICAvLyBJdCBpcyB1c2VkIGluIHR3byBwbGFjZXMgaW4gdGhlIGNvZGUsIHNvIGl0IGlzIGJldHRlciB0byBzdG9yZSBpdCBpbiBvbmUgcGxhY2VcbiAgY29uc3QgZWRnZXNab29tTGV2ZWxzID0gWydTbWFsbCcsICdNZWRpdW0nLCAnTUxhcmdlJywgJ0xhcmdlJ107XG5cbiAgY29uc3QgaGFuZGxlUG9pbnRzQ2hlY2tib3hDaGFuZ2UgPSAoaXNDaGVja2VkKSA9PiB7XG4gICAgc2V0T25seU1vbml0b3JlZFBvaW50cyhpc0NoZWNrZWQpO1xuICAgIGlmIChtYXBSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgc2V0T25seU1vbml0b3JlZFBvaW50cyhpc0NoZWNrZWQpO1xuICAgICAgbGV0IHpvb20gPSB6b29tTGV2ZWxzW21hcFJlZi5jdXJyZW50LmdldFpvb20oKV07XG5cbiAgICAgIGlmIChpc0NoZWNrZWQpIHtcbiAgICAgICAgLy8gSGlkZSB1bm1vbml0b3JlZCBwb2ludHMgd2hlbiBcInNob3cgb25seSBtb25pdG9yZWRcIiBpcyBjaGVja2VkXG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLnJlbW92ZUxheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXApO1xuICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAucmVtb3ZlRnJvbShtYXBSZWYuY3VycmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTaG93IGFsbCBwb2ludHMgd2hlbiBcInNob3cgb25seSBtb25pdG9yZWRcIiBpcyB1bmNoZWNrZWRcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuYWRkTGF5ZXIodW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cCk7XG5cbiAgICAgICAgLy8gU2hvdyB1bm1vbml0b3JlZCBlZGdlcyBpZiBhdCBhcHByb3ByaWF0ZSB6b29tIGxldmVsXG4gICAgICAgIGlmIChlZGdlc0NoZWNrYm94UmVmLmN1cnJlbnQgJiYgZWRnZXNab29tTGV2ZWxzLmluY2x1ZGVzKHpvb20pKSB7XG4gICAgICAgICAgdW5tb25pdG9yZWRFZGdlc0dyb3VwLmFkZFRvKG1hcFJlZi5jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVQb2ludHNXaXRoU2FtcGxlckNoZWNrYm94Q2hhbmdlID0gKGlzQ2hlY2tlZCkgPT4ge1xuICAgIHNldFNob3dTYW1wbGVySWNvbihpc0NoZWNrZWQpO1xuICB9O1xuXG4gIGNvbnN0IHRyYWNrTGF5ZXJib3ggPSAoKSA9PiB7XG4gICAgc2V0dXBDaGVja2JveExpc3RlbmVyKCcjZWRnZXMtY2hlY2tib3gnLCBoYW5kbGVFZGdlc0NoZWNrYm94Q2hhbmdlKTtcbiAgICBzZXR1cENoZWNrYm94TGlzdGVuZXIoXG4gICAgICAnI21vbml0b3JlZC1wb2ludHMtY2hlY2tib3gnLFxuICAgICAgaGFuZGxlUG9pbnRzQ2hlY2tib3hDaGFuZ2UsXG4gICAgKTtcbiAgICBzZXR1cENoZWNrYm94TGlzdGVuZXIoXG4gICAgICAnI21vbml0b3JlZC1wb2ludHMtd2l0aC1zYW1wbGVyLWNoZWNrYm94JyxcbiAgICAgIGhhbmRsZVBvaW50c1dpdGhTYW1wbGVyQ2hlY2tib3hDaGFuZ2UsXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCB6b29tUnVsZXNGb3JFdmVudHNWaWV3ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSAoXG4gICAgICA8PlxuICAgICAgICB7ZWRnZXNDaGVja2JveCAmJiBtZW1vaXplZEVkZ2VzfVxuICAgICAgICB7ZWRnZXNDaGVja2JveCAmJiAhb25seU1vbml0b3JlZFBvaW50cyAmJiBtZW1vaXplZFVubW9uaXRvcmVkRWRnZXN9XG4gICAgICAgIHshb25seU1vbml0b3JlZFBvaW50cyAmJiBtZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzfVxuICAgICAgICB7bWVtb2l6ZWRNb25pdG9yZWRQb2ludHN9XG4gICAgICA8Lz5cbiAgICApO1xuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH07XG5cbiAgY29uc3QgbWVtb2l6ZWRab29tQ29udHJvbCA9ICgpID0+IHtcbiAgICBsZXQgcGF5bG9hZCA9IDw+PC8+O1xuICAgIGlmIChlZGdlc1pvb21MZXZlbHMuaW5jbHVkZXMoem9vbUxldmVsc1ttYXBab29tTGV2ZWxdKSkge1xuICAgICAgcGF5bG9hZCA9IHpvb21SdWxlc0ZvckV2ZW50c1ZpZXcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF5bG9hZCA9IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7IW9ubHlNb25pdG9yZWRQb2ludHMgJiYgbWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50c31cbiAgICAgICAgICB7bWVtb2l6ZWRNb25pdG9yZWRQb2ludHN9XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfTtcblxuICBjb25zdCBtZW1vaXplZEV2ZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGZvY3VzZWRFdmVudFByZXNlbnQpIHtcbiAgICAgIGZvY3VzZWRFdmVudCEuZm9jdXNlZCA9IGZvY3VzZWRFdmVudFByZXNlbnQ7XG4gICAgICBmb2N1c2VkRXZlbnQhLmhvdmVyZWQgPSAhZm9jdXNlZEV2ZW50UHJlc2VudDtcbiAgICB9XG5cbiAgICBpZiAoaG92ZXJlZEV2ZW50UHJlc2VudCkge1xuICAgICAgaG92ZXJlZEV2ZW50IS5ob3ZlcmVkID0gaG92ZXJlZEV2ZW50UHJlc2VudDtcbiAgICAgIGhvdmVyZWRFdmVudCEuZm9jdXNlZCA9ICFob3ZlcmVkRXZlbnRQcmVzZW50O1xuICAgIH1cblxuICAgIGlmICghaG92ZXJlZEV2ZW50UHJlc2VudCAmJiAhZm9jdXNlZEV2ZW50UHJlc2VudCkgcmV0dXJuIDw+PC8+O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxFdmVudFxuICAgICAgICBldmVudD17Zm9jdXNlZEV2ZW50ISB8fCBob3ZlcmVkRXZlbnQhfVxuICAgICAgICBtYXA9e21hcH1cbiAgICAgICAgZWRnZXM9e2VkZ2VzIX1cbiAgICAgICAgcG9pbnRzPXtwb2ludHMhfVxuICAgICAgICBpbmNsdWRlTmV0d29yaz17IWhvdmVyZWRFdmVudFByZXNlbnR9XG4gICAgICAvPlxuICAgICk7XG4gIH0sIFtmb2N1c2VkRXZlbnRQcmVzZW50LCBob3ZlcmVkRXZlbnRQcmVzZW50LCBlZGdlcywgcG9pbnRzXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBlZGdlc0NoZWNrYm94UmVmLmN1cnJlbnQgPSBlZGdlc0NoZWNrYm94O1xuICB9LCBbZWRnZXNDaGVja2JveF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1hcFJlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBhbGxHcm91cHMgPSBbXG4gICAgICAgIG1vbml0b3JlZEZhY3Rvcmllc0dyb3VwLFxuICAgICAgICB1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwLFxuICAgICAgICB3d3Rwc0xheWVyR3JvdXAsXG4gICAgICAgIGNvbGxlY3RvcnNMYXllckdyb3VwLFxuICAgICAgXTtcblxuICAgICAgbGV0IG1hdGNoaW5nTWFya2VycyA9IFtdO1xuXG4gICAgICBhbGxHcm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgZ3JvdXAuZ2V0TGF5ZXJzKCkuZm9yRWFjaCgobGF5ZXIpID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBsYXllciBpbnN0YW5jZW9mIEwuTWFya2VyICYmXG4gICAgICAgICAgICBsYXllclsna2FuZG9faGFzX3NhbXBsZXInXSA9PT0gdHJ1ZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgbWF0Y2hpbmdNYXJrZXJzLnB1c2gobGF5ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgbWF0Y2hpbmdNYXJrZXJzLmZvckVhY2goKG1hcmtlcikgPT4ge1xuICAgICAgICBtYXJrZXJbJ2thbmRvX3Nob3dfc2FtcGxlciddID0gc2hvd1NhbXBsZXJJY29uO1xuXG4gICAgICAgIGNvbnN0IG1hcmtlckljb25EYXRhID0gbWFya2VyWydrYW5kb19pY29uX2RhdGEnXTtcbiAgICAgICAgY29uc3QgbWFya2VyQ2xpY2tlZCA9IG1hcmtlci5pc1BvcHVwT3BlbigpIHx8IGZhbHNlO1xuICAgICAgICBjb25zdCBoaWRlVGV4dCA9IG1hcmtlckNsaWNrZWQgPT09IGZhbHNlO1xuXG4gICAgICAgIGlmIChtYXJrZXJJY29uRGF0YSkge1xuICAgICAgICAgIGNvbnN0IGljb24gPSBnZXRQb2ludEljb25CeVR5cGUoXG4gICAgICAgICAgICBtYXJrZXJJY29uRGF0YT8udHlwZSB8fCAnJyxcbiAgICAgICAgICAgIG1hcmtlckljb25EYXRhPy50aXRsZSB8fCAnJyxcbiAgICAgICAgICAgIG1hcmtlckljb25EYXRhPy5zdWJ0aXRsZSB8fCAnJyxcbiAgICAgICAgICAgIG1hcmtlckNsaWNrZWQsXG4gICAgICAgICAgICBoaWRlVGV4dCxcbiAgICAgICAgICAgIG1hcmtlckljb25EYXRhPy5oYXNJc3N1ZXMgfHwgZmFsc2UsXG4gICAgICAgICAgICBzaG93U2FtcGxlckljb24sXG4gICAgICAgICAgICBtYXJrZXJJY29uRGF0YT8uc2hvdWxkSW5zdGFsbCB8fCBmYWxzZSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgbWFya2VyLnNldEljb24oaWNvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW3Nob3dTYW1wbGVySWNvbl0pO1xuXG4gIC8vIHVzZUVmZmVjdCgoKSA9PiB7XG4gIC8vICAgcmV0dXJuIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gIC8vICAgICBjb2xsZWN0b3JzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAvLyAgICAgbWFwUmVmLmN1cnJlbnQ/LnJlbW92ZUxheWVyKGNvbGxlY3RvcnNMYXllckdyb3VwKTtcbiAgLy8gICB9O1xuICAvLyB9LCBbZm9jdXNlZEV2ZW50LCBnbG9iYWxfZGF0YS5ldmVudEZpbHRlclBhcmFtXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgIGlmIChmb3JFdmVudHNWaWV3ICYmIG1hcFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGRpc3BhdGNoKGNsZWFyUG9pbnRzKCkpO1xuICAgICAgICBkaXNwYXRjaChjbGVhckFyZWFzKCkpO1xuICAgICAgICB3d3Rwc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgYXJlYXNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICAgIHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgbW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgbW9uaXRvcmVkRWRnZXNHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBjb2xsZWN0b3JzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIodW5tb25pdG9yZWRFZGdlc0dyb3VwKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIobW9uaXRvcmVkRWRnZXNHcm91cCk7XG4gICAgICAgIG1hcFJlZi5jdXJyZW50LnJlbW92ZUxheWVyKHd3dHBzTGF5ZXJHcm91cCk7XG4gICAgICAgIG1hcFJlZi5jdXJyZW50LnJlbW92ZUxheWVyKGNvbGxlY3RvcnNMYXllckdyb3VwKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIoYXJlYXNMYXllckdyb3VwKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIoZmFjdG9yaWVzUGFyZW50R3JvdXApO1xuXG4gICAgICAgIG1hcFJlZi5jdXJyZW50LmVhY2hMYXllcigobGF5ZXIpID0+IHtcbiAgICAgICAgICBpZiAobGF5ZXIgaW5zdGFuY2VvZiBMLlRpbGVMYXllcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcihsYXllcik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtnbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eUlkXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1hcFJlZi5jdXJyZW50KSB7XG4gICAgICBpbml0aWFsaXplTWFwKFxuICAgICAgICBtYXBab29tTGV2ZWwsXG4gICAgICAgIG1hcEJveFN0eWxlLFxuICAgICAgICBsZWFmbGV0TWFwLnNhdGVsbGl0ZSxcbiAgICAgICAgbWFwUmVmLFxuICAgICAgICBkaXNwYXRjaCxcbiAgICAgICAgaXNWYWxpZEFyZWEsXG4gICAgICAgIGFyZWFUb0NlbnRlckJ5LFxuICAgICAgICBzZXRNYXBab29tTGV2ZWwsXG4gICAgICAgIGZvcldXVFBEYXNoYm9hcmQsXG4gICAgICAgIHRydWUsXG4gICAgICAgIGdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICAgICApO1xuXG4gICAgICAvLyBJbml0aWFsaXplIHBhcmVudCBmYWN0b3J5IGdyb3VwXG4gICAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5hZGRMYXllcihtb25pdG9yZWRGYWN0b3JpZXNHcm91cCk7XG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLmFkZExheWVyKHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXApO1xuICAgICAgfVxuXG4gICAgICB0cmFja0xheWVyYm94KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldE1hcFpvb21MZXZlbChtYXBSZWYuY3VycmVudC5nZXRab29tKCkpO1xuICAgICAgaWYgKCFhcmVhVG9DZW50ZXJCeSkge1xuICAgICAgICBhcmVhVG9DZW50ZXJCeSA9IGFyZWFzLm1hcCgoYXJlYSkgPT4gYXJlYS5zaGFwZV9kYXRhKS5mbGF0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZm9jdXNlZEV2ZW50KSB7XG4gICAgICAgIGFyZWFGb2N1c0xvZ2ljKG1hcFJlZiwgaXNWYWxpZEFyZWEsIGFyZWFUb0NlbnRlckJ5KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFttYXBSZWYuY3VycmVudCwgYXJlYVRvQ2VudGVyQnldKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjbGlja2VkID0gZmFsc2U7XG5cbiAgICBtYXBSZWYuY3VycmVudD8uZWFjaExheWVyKChsYXllcikgPT4ge1xuICAgICAgaWYgKGNsaWNrZWQpIHJldHVybjtcblxuICAgICAgaWYgKFxuICAgICAgICBsYXllcj8ua2FuZG9fb2JqZWN0X2lkID09PSBzZWxlY3RlZEl0ZW0gJiZcbiAgICAgICAgbGF5ZXIuaXNQb3B1cE9wZW4oKSA9PT0gZmFsc2VcbiAgICAgICkge1xuICAgICAgICBpZiAobGF5ZXIgaW5zdGFuY2VvZiBMLk1hcmtlcikge1xuICAgICAgICAgIGxheWVyLmZpcmUoJ2NsaWNrJyk7XG4gICAgICAgIH0gZWxzZSBpZiAobGF5ZXIgaW5zdGFuY2VvZiBMLlBvbHlnb24pIHtcbiAgICAgICAgICBsYXllci5maXJlKCdjbGljay1ldmVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGNsaWNrZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbc2VsZWN0ZWRJdGVtXSk7XG5cbiAgY29uc3QgcmVuZGVyQXJlYXMgPSAoKSA9PiB7XG4gICAgaWYgKCFzaG91bGRMb2FkTWFwT2JqZWN0cyhnbG9iYWxfZGF0YSwgbWFwUmVmLCBlZGdlcywgcG9pbnRzKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxBcmVhUG9seWdvbnNcbiAgICAgICAgYXJlYXM9e2FyZWFzfVxuICAgICAgICBtYXA9e21hcFJlZi5jdXJyZW50fVxuICAgICAgICBMPXtMfVxuICAgICAgICBhcmVhVG9DZW50ZXJCeT17YXJlYVRvQ2VudGVyQnl9XG4gICAgICAgIG1hcFpvb209e21hcFpvb21MZXZlbH1cbiAgICAgICAgZ2xvYmFsX2RhdGE9e2dsb2JhbF9kYXRhfVxuICAgICAgICBmZWF0dXJlR3JvdXA9e2FyZWFzTGF5ZXJHcm91cH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwia2QtbWFwLWNvbnRhaW5lclwiIHN0eWxlPXtzdHlsZX0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17YCBtYXAtY29udGFpbmVyICR7XG4gICAgICAgICAgZ2xvYmFsX2RhdGEuc2lkZW5hdkV4cGFuZGVkID8gJycgOiAnbWFwLWNvbnRhaW5lci0tc2lkZW5hdi1jb2xsYXBzZWQnXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8RXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICA8ZGl2IGlkPVwibWFwXCI+PC9kaXY+XG4gICAgICAgICAge3JlbmRlckFyZWFzKCl9XG4gICAgICAgICAge3Nob3VkTG9hZERlcGVuZGVudE1hcE9iamVjdHMoXG4gICAgICAgICAgICBlZGdlcyxcbiAgICAgICAgICAgIGFyZWFzLFxuICAgICAgICAgICAgZ2xvYmFsX2RhdGEsXG4gICAgICAgICAgICBtYXBSZWYsXG4gICAgICAgICAgICBwb2ludHMsXG4gICAgICAgICAgKSAmJiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7bWVtb2l6ZWRFdmVudH1cbiAgICAgICAgICAgICAge21lbW9pemVkWm9vbUNvbnRyb2woKX1cbiAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxJQUFBQSxDQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFD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
329
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX3JlYWN0UmVkdXgiLCJfRXJyb3JCb3VuZGFyeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQXJlYVBvbHlnb25zIiwiX0VkZ2VzIiwiX1BvaW50TWFya2VycyIsIl9FdmVudCIsIl9NYXBVdGlscyIsIl90aGVtZSIsIl9MaXN0Q29udGV4dCIsIl9hY3Rpb25zIiwiX2FjdGlvbnMyIiwiX1BvaW50SWNvbjIiLCJNYXAiLCJfcmVmIiwiYXJlYXMiLCJlZGdlcyIsInBvaW50cyIsImdsb2JhbF9kYXRhIiwiYXJlYVRvQ2VudGVyQnkiLCJmb2N1c2VkRXZlbnQiLCJob3ZlcmVkRXZlbnQiLCJoaWRlRWRnZXMiLCJtYXBCb3hTdHlsZSIsImxlYWZsZXRNYXAiLCJtYXBEZWZhdWx0IiwiY2hpbGRyZW4iLCJpbmNsdWRlVW5tb25pdG9yZWRQb2ludHMiLCJpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzIiwiZm9yRXZlbnRzVmlldyIsInN0eWxlIiwiZm9yV1dUUERhc2hib2FyZCIsIm1hcCIsIm1hcFJlZiIsInVzZVJlZiIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJtYXBab29tTGV2ZWwiLCJzZXRNYXBab29tTGV2ZWwiLCJ1c2VTdGF0ZSIsInNlbGVjdGVkSXRlbSIsInVzZVNlbGVjdGVkSXRlbSIsImVkZ2VzQ2hlY2tib3giLCJzZXRFZGdlc0NoZWNrYm94Iiwib25seU1vbml0b3JlZFBvaW50cyIsInNldE9ubHlNb25pdG9yZWRQb2ludHMiLCJzaG93U2FtcGxlckljb24iLCJzZXRTaG93U2FtcGxlckljb24iLCJlZGdlc0NoZWNrYm94UmVmIiwiaG92ZXJlZEV2ZW50UHJlc2VudCIsInVzZU1lbW8iLCJ1bmRlZmluZWQiLCJmb2N1c2VkRXZlbnRQcmVzZW50IiwiZmFjdG9yaWVzUGFyZW50R3JvdXAiLCJsYXllckdyb3VwIiwidW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cCIsIm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwIiwidW5tb25pdG9yZWRFZGdlc0dyb3VwIiwibW9uaXRvcmVkRWRnZXNHcm91cCIsInd3dHBzTGF5ZXJHcm91cCIsImNvbGxlY3RvcnNMYXllckdyb3VwIiwiYXJlYXNMYXllckdyb3VwIiwiRmVhdHVyZUdyb3VwIiwicmVuZGVyUG9pbnRNYXJrZXJzIiwiZmlsdGVyZWRQb2ludHMiLCJwcm9wcyIsImN1cnJlbnQiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsIlBvaW50TWFya2VycyIsIk9iamVjdCIsImFzc2lnbiIsIm1lbW9pemVkTW9uaXRvcmVkUG9pbnRzIiwibGVuZ3RoIiwibW9uaXRvcmVkUG9pbnRzIiwiZmlsdGVyUG9pbnRzIiwib25seU1vbml0b3JlZCIsInJlc3VsdCIsInJlcmVuZGVyIiwiem9vbUxldmVscyIsImZhY3Rvcmllc0dyb3VwIiwid3d0cHNHcm91cCIsImNvbGxlY3RvcnNHcm91cCIsInNob3dTYW1wbGVyIiwibWVtb2l6ZWRVbm1vbml0b3JlZFBvaW50cyIsInVubW9uaXRvcmVkUG9pbnRzIiwicmVuZGVyRWRnZXMiLCJmaWx0ZXJlZEVkZ2VzIiwibWVtb2l6ZWRFZGdlcyIsIm1vbml0b3JlZEVkZ2VzIiwiZmlsdGVyRWRnZXMiLCJoaWRlQXJyb3dzIiwiYWxsb3dVbm1vbml0b3JlZERlc2NlbmRhbnRzIiwiZ3JvdXAiLCJtZW1vaXplZFVubW9uaXRvcmVkRWRnZXMiLCJ1bm1vbml0b3JlZEVkZ2VzIiwiaGFuZGxlRWRnZXNDaGVja2JveENoYW5nZSIsImlzQ2hlY2tlZCIsImVkZ2VzWm9vbUxldmVscyIsImhhbmRsZVBvaW50c0NoZWNrYm94Q2hhbmdlIiwiem9vbSIsImdldFpvb20iLCJyZW1vdmVMYXllciIsInJlbW92ZUZyb20iLCJhZGRMYXllciIsImluY2x1ZGVzIiwiYWRkVG8iLCJoYW5kbGVQb2ludHNXaXRoU2FtcGxlckNoZWNrYm94Q2hhbmdlIiwidHJhY2tMYXllcmJveCIsInNldHVwQ2hlY2tib3hMaXN0ZW5lciIsInpvb21SdWxlc0ZvckV2ZW50c1ZpZXciLCJwYXlsb2FkIiwiRnJhZ21lbnQiLCJtZW1vaXplZFpvb21Db250cm9sIiwibWVtb2l6ZWRFdmVudCIsImZvY3VzZWQiLCJob3ZlcmVkIiwiRXZlbnQiLCJldmVudCIsImluY2x1ZGVOZXR3b3JrIiwidXNlRWZmZWN0IiwiYWxsR3JvdXBzIiwibWF0Y2hpbmdNYXJrZXJzIiwiZm9yRWFjaCIsImdldExheWVycyIsImxheWVyIiwiTWFya2VyIiwicHVzaCIsIm1hcmtlciIsIm1hcmtlckljb25EYXRhIiwibWFya2VyQ2xpY2tlZCIsImlzUG9wdXBPcGVuIiwiaGlkZVRleHQiLCJpY29uIiwiZ2V0UG9pbnRJY29uQnlUeXBlIiwidHlwZSIsInRpdGxlIiwic3VidGl0bGUiLCJoYXNJc3N1ZXMiLCJzaG91bGRJbnN0YWxsIiwic2V0SWNvbiIsImNsZWFudXAiLCJjbGVhclBvaW50cyIsImNsZWFyQXJlYXMiLCJjbGVhckxheWVycyIsImVhY2hMYXllciIsIlRpbGVMYXllciIsIndhdGVyQXV0aG9yaXR5SWQiLCJpbml0aWFsaXplTWFwIiwic2F0ZWxsaXRlIiwiaXNWYWxpZEFyZWEiLCJhcmVhIiwic2hhcGVfZGF0YSIsImZsYXQiLCJhcmVhRm9jdXNMb2dpYyIsIl9tYXBSZWYkY3VycmVudCIsImNsaWNrZWQiLCJrYW5kb19vYmplY3RfaWQiLCJmaXJlIiwiUG9seWdvbiIsInJlbmRlckFyZWFzIiwic2hvdWxkTG9hZE1hcE9iamVjdHMiLCJBcmVhUG9seWdvbnMiLCJtYXBab29tIiwiZmVhdHVyZUdyb3VwIiwiY2xhc3NOYW1lIiwiY29uY2F0Iiwic2lkZW5hdkV4cGFuZGVkIiwiaWQiLCJzaG91ZExvYWREZXBlbmRlbnRNYXBPYmplY3RzIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9XaWRnZXRzL01hcC9NYXAudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgJ3NyYy91dGlsaXRpZXMvcG9seWxpbmVkZWNvcmF0b3InO1xuaW1wb3J0ICdsZWFmbGV0Lm1hcmtlcmNsdXN0ZXInO1xuaW1wb3J0ICdsZWFmbGV0LnBhdHRlcm4nO1xuaW1wb3J0ICdsZWFmbGV0LmhlYXQnO1xuaW1wb3J0IFJlYWN0LCB7XG4gIENTU1Byb3BlcnRpZXMsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyBJQXJlYSB9IGZyb20gJ3NyYy9zdG9yZS9hcmVhcy9tb2RlbHMvSUFyZWEnO1xuaW1wb3J0IHsgSUVkZ2UgfSBmcm9tICdzcmMvc3RvcmUvZWRnZXMvbW9kZWxzL0lFZGdlJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ3NyYy9zdG9yZS9ldmVudHMvbW9kZWxzL0lFdmVudCc7XG5pbXBvcnQgeyBJR2xvYmFsU3RhdGUgfSBmcm9tICdzcmMvc3RvcmUvZ2xvYmFsL21vZGVscy9JR2xvYmFsU3RhdGUnO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnc3JjL3N0b3JlL3BvaW50cy9tb2RlbHMvSVBvaW50JztcbmltcG9ydCBFcnJvckJvdW5kYXJ5IGZyb20gJ3NyYy91dGlsaXRpZXMvRXJyb3JCb3VuZGFyeSc7XG5pbXBvcnQgeyBBcmVhUG9seWdvbnMgfSBmcm9tICcuL2FyZWFzL0FyZWFQb2x5Z29ucyc7XG5pbXBvcnQgRWRnZXMgZnJvbSAnLi9lZGdlcy9FZGdlcyc7XG5pbXBvcnQgJy4vTWFwLnNjc3MnO1xuaW1wb3J0ICcuL3BvaW50cy9Qb2ludEljb24uc2Nzcyc7XG5pbXBvcnQgeyBQb2ludE1hcmtlcnMgfSBmcm9tICcuL3BvaW50cy9Qb2ludE1hcmtlcnMnO1xuaW1wb3J0IHsgRXZlbnQgfSBmcm9tICcuL2V2ZW50cy9FdmVudCc7XG5pbXBvcnQge1xuICBhcmVhRm9jdXNMb2dpYyxcbiAgZmlsdGVyRWRnZXMsXG4gIGZpbHRlclBvaW50cyxcbiAgaW5pdGlhbGl6ZU1hcCxcbiAgaXNWYWxpZEFyZWEsXG4gIHNldHVwQ2hlY2tib3hMaXN0ZW5lcixcbiAgc2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyxcbiAgc2hvdWxkTG9hZE1hcE9iamVjdHMsXG4gIHpvb21MZXZlbHMsXG59IGZyb20gJy4vTWFwVXRpbHMnO1xuaW1wb3J0IHsgbGVhZmxldE1hcCB9IGZyb20gJy4uLy4uL3N0eWxlcy90aGVtZS90aGVtZSc7XG5pbXBvcnQgeyB1c2VTZWxlY3RlZEl0ZW0gfSBmcm9tICdzcmMvcGFnZXMvRGFzaGJvYXJkTWFwL0xpc3RDb250ZXh0JztcbmltcG9ydCB7IGNsZWFyQXJlYXMgfSBmcm9tICdzcmMvc3RvcmUvYXJlYXMvYWN0aW9ucyc7XG5pbXBvcnQgeyBjbGVhclBvaW50cyB9IGZyb20gJ3NyYy9zdG9yZS9wb2ludHMvYWN0aW9ucyc7XG5pbXBvcnQgeyBnZXRQb2ludEljb25CeVR5cGUgfSBmcm9tICcuL3BvaW50cy9Qb2ludEljb24nO1xucmVxdWlyZSgnbGVhZmxldC5tYXJrZXJjbHVzdGVyJyk7XG5cbmludGVyZmFjZSBNYXBQcm9wcyB7XG4gIGFyZWFzOiBJQXJlYVtdO1xuICBlZGdlcz86IElFZGdlW107XG4gIHBvaW50cz86IElQb2ludFtdO1xuICBnbG9iYWxfZGF0YTogSUdsb2JhbFN0YXRlO1xuICBhcmVhVG9DZW50ZXJCeT86IGFueTtcbiAgZm9jdXNlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaG92ZXJlZEV2ZW50PzogSUV2ZW50IHwgbnVsbDtcbiAgaGlkZUVkZ2VzPzogYm9vbGVhbjtcbiAgbWFwQm94U3R5bGU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogYW55O1xuICBzdHlsZT86IENTU1Byb3BlcnRpZXM7XG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cz86IGJvb2xlYW47XG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXM/OiBib29sZWFuO1xuICBmb3JFdmVudHNWaWV3OiBib29sZWFuO1xuICBmb3JXV1RQRGFzaGJvYXJkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IE1hcDogUmVhY3QuRkM8TWFwUHJvcHM+ID0gKHtcbiAgYXJlYXMsXG4gIGVkZ2VzLFxuICBwb2ludHMsXG4gIGdsb2JhbF9kYXRhLFxuICBhcmVhVG9DZW50ZXJCeSxcbiAgZm9jdXNlZEV2ZW50LFxuICBob3ZlcmVkRXZlbnQsXG4gIGhpZGVFZGdlcyA9IGZhbHNlLFxuICBtYXBCb3hTdHlsZSA9IGxlYWZsZXRNYXAubWFwRGVmYXVsdCxcbiAgY2hpbGRyZW4sXG4gIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50cyA9IHRydWUsXG4gIGluY2x1ZGVVbm1vbml0b3JlZERlc2NlbmRhbnRzRm9yRWRnZXMgPSBmYWxzZSxcbiAgZm9yRXZlbnRzVmlldyA9IGZhbHNlLFxuICBzdHlsZSA9IHt9LFxuICBmb3JXV1RQRGFzaGJvYXJkID0gZmFsc2UsXG59KSA9PiB7XG4gIGNvbnN0IHsgbWFwIH0gPSBnbG9iYWxfZGF0YTtcbiAgY29uc3QgbWFwUmVmID0gdXNlUmVmPEwuTWFwIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21hcFpvb21MZXZlbCwgc2V0TWFwWm9vbUxldmVsXSA9IHVzZVN0YXRlKDIpO1xuICBjb25zdCB7IHNlbGVjdGVkSXRlbSB9ID0gdXNlU2VsZWN0ZWRJdGVtKCk7XG4gIGNvbnN0IFtlZGdlc0NoZWNrYm94LCBzZXRFZGdlc0NoZWNrYm94XSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbb25seU1vbml0b3JlZFBvaW50cywgc2V0T25seU1vbml0b3JlZFBvaW50c10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93U2FtcGxlckljb24sIHNldFNob3dTYW1wbGVySWNvbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGVkZ2VzQ2hlY2tib3hSZWYgPSB1c2VSZWYoZWRnZXNDaGVja2JveCk7XG5cbiAgY29uc3QgaG92ZXJlZEV2ZW50UHJlc2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBob3ZlcmVkRXZlbnQgIT09IG51bGwgJiYgaG92ZXJlZEV2ZW50ICE9PSB1bmRlZmluZWQ7XG4gIH0sIFtob3ZlcmVkRXZlbnRdKTtcblxuICBjb25zdCBmb2N1c2VkRXZlbnRQcmVzZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGZvY3VzZWRFdmVudCAhPT0gbnVsbCAmJiBmb2N1c2VkRXZlbnQgIT09IHVuZGVmaW5lZDtcbiAgfSwgW2ZvY3VzZWRFdmVudF0pO1xuXG4gIC8vIEFkZCBwYXJlbnQgbGF5ZXIgZ3JvdXAgZm9yIGFsbCBmYWN0b3JpZXNcbiAgY29uc3QgW2ZhY3Rvcmllc1BhcmVudEdyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW3VubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXBdID0gdXNlU3RhdGUoTC5sYXllckdyb3VwKCkpO1xuICBjb25zdCBbbW9uaXRvcmVkRmFjdG9yaWVzR3JvdXBdID0gdXNlU3RhdGUoTC5sYXllckdyb3VwKCkpO1xuICBjb25zdCBbdW5tb25pdG9yZWRFZGdlc0dyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW21vbml0b3JlZEVkZ2VzR3JvdXBdID0gdXNlU3RhdGUoTC5sYXllckdyb3VwKCkpO1xuICBjb25zdCBbd3d0cHNMYXllckdyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW2NvbGxlY3RvcnNMYXllckdyb3VwXSA9IHVzZVN0YXRlKEwubGF5ZXJHcm91cCgpKTtcbiAgY29uc3QgW2FyZWFzTGF5ZXJHcm91cF0gPSB1c2VTdGF0ZShuZXcgTC5GZWF0dXJlR3JvdXAoKSk7XG5cbiAgY29uc3QgcmVuZGVyUG9pbnRNYXJrZXJzID0gKGZpbHRlcmVkUG9pbnRzLCBtYXBSZWYsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgcG9pbnRzICYmIChcbiAgICAgIDxQb2ludE1hcmtlcnNcbiAgICAgICAgbWFwPXttYXBSZWYuY3VycmVudH1cbiAgICAgICAgcG9pbnRzPXtmaWx0ZXJlZFBvaW50c31cbiAgICAgICAgc2hvd1NhbXBsZXJJY29uPXtzaG93U2FtcGxlckljb259XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgKTtcblxuICBjb25zdCBtZW1vaXplZE1vbml0b3JlZFBvaW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghZWRnZXNDaGVja2JveCB8fCAhbWFwUmVmLmN1cnJlbnQgfHwgIXBvaW50cyB8fCBwb2ludHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBtb25pdG9yZWRQb2ludHMgPSBmaWx0ZXJQb2ludHMocG9pbnRzLCB7IG9ubHlNb25pdG9yZWQ6IHRydWUgfSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSByZW5kZXJQb2ludE1hcmtlcnMobW9uaXRvcmVkUG9pbnRzLCBtYXBSZWYsIHtcbiAgICAgIGluY2x1ZGVVbm1vbml0b3JlZFBvaW50czogdHJ1ZSxcbiAgICAgIHJlcmVuZGVyOiB6b29tTGV2ZWxzW21hcFpvb21MZXZlbF0sXG4gICAgICBmYWN0b3JpZXNHcm91cDogbW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAsXG4gICAgICB3d3Rwc0dyb3VwOiB3d3Rwc0xheWVyR3JvdXAsXG4gICAgICBjb2xsZWN0b3JzR3JvdXA6IGNvbGxlY3RvcnNMYXllckdyb3VwLFxuICAgICAgZm9yRXZlbnRzVmlldyxcbiAgICAgIHNob3dTYW1wbGVyOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBtZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFlZGdlc0NoZWNrYm94IHx8ICFtYXBSZWYuY3VycmVudCB8fCAhcG9pbnRzIHx8IHBvaW50cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHVubW9uaXRvcmVkUG9pbnRzID0gZmlsdGVyUG9pbnRzKHBvaW50cywgeyBvbmx5TW9uaXRvcmVkOiBmYWxzZSB9KTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHJlbmRlclBvaW50TWFya2Vycyh1bm1vbml0b3JlZFBvaW50cywgbWFwUmVmLCB7XG4gICAgICBpbmNsdWRlVW5tb25pdG9yZWRQb2ludHM6IHRydWUsXG4gICAgICByZXJlbmRlcjogem9vbUxldmVsc1ttYXBab29tTGV2ZWxdLFxuICAgICAgZmFjdG9yaWVzR3JvdXA6IHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAsXG4gICAgICB3d3Rwc0dyb3VwOiB3d3Rwc0xheWVyR3JvdXAsXG4gICAgICBjb2xsZWN0b3JzR3JvdXA6IGNvbGxlY3RvcnNMYXllckdyb3VwLFxuICAgICAgZm9yRXZlbnRzVmlldyxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIFttYXBSZWYuY3VycmVudCwgcG9pbnRzLCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCByZW5kZXJFZGdlcyA9IChmaWx0ZXJlZEVkZ2VzLCBtYXBSZWYsIGVkZ2VzQ2hlY2tib3gsIHByb3BzKSA9PlxuICAgIG1hcFJlZi5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgZWRnZXNDaGVja2JveCAmJiAoXG4gICAgICA8RWRnZXMgZWRnZXM9e2ZpbHRlcmVkRWRnZXN9IG1hcD17bWFwUmVmLmN1cnJlbnR9IHsuLi5wcm9wc30gLz5cbiAgICApO1xuXG4gIGNvbnN0IG1lbW9pemVkRWRnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtb25pdG9yZWRFZGdlcyA9IGZpbHRlckVkZ2VzKGVkZ2VzLCBwb2ludHMsIHRydWUpO1xuXG4gICAgcmV0dXJuIHJlbmRlckVkZ2VzKG1vbml0b3JlZEVkZ2VzLCBtYXBSZWYsIGVkZ2VzQ2hlY2tib3gsIHtcbiAgICAgIEwsXG4gICAgICBwb2ludHMsXG4gICAgICBoaWRlRWRnZXM6IGZhbHNlLFxuICAgICAgaGlkZUFycm93czogdHJ1ZSxcbiAgICAgIGFsbG93VW5tb25pdG9yZWREZXNjZW5kYW50czogaW5jbHVkZVVubW9uaXRvcmVkRGVzY2VuZGFudHNGb3JFZGdlcyxcbiAgICAgIGdyb3VwOiBtb25pdG9yZWRFZGdlc0dyb3VwLFxuICAgIH0pO1xuICB9LCBbcG9pbnRzLCBlZGdlc0NoZWNrYm94LCBtYXBab29tTGV2ZWxdKTtcblxuICBjb25zdCBtZW1vaXplZFVubW9uaXRvcmVkRWRnZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB1bm1vbml0b3JlZEVkZ2VzID0gZmlsdGVyRWRnZXMoZWRnZXMsIHBvaW50cywgZmFsc2UpO1xuXG4gICAgcmV0dXJuIHJlbmRlckVkZ2VzKHVubW9uaXRvcmVkRWRnZXMsIG1hcFJlZiwgZWRnZXNDaGVja2JveCwge1xuICAgICAgTCxcbiAgICAgIHBvaW50cyxcbiAgICAgIGhpZGVFZGdlczogZmFsc2UsXG4gICAgICBoaWRlQXJyb3dzOiB0cnVlLFxuICAgICAgYWxsb3dVbm1vbml0b3JlZERlc2NlbmRhbnRzOiBpbmNsdWRlVW5tb25pdG9yZWREZXNjZW5kYW50c0ZvckVkZ2VzLFxuICAgICAgZ3JvdXA6IHVubW9uaXRvcmVkRWRnZXNHcm91cCxcbiAgICB9KTtcbiAgfSwgW3BvaW50cywgZWRnZXNDaGVja2JveCwgbWFwWm9vbUxldmVsXSk7XG5cbiAgY29uc3QgaGFuZGxlRWRnZXNDaGVja2JveENoYW5nZSA9IChpc0NoZWNrZWQpID0+IHtcbiAgICBzZXRFZGdlc0NoZWNrYm94KGlzQ2hlY2tlZCk7XG4gIH07XG5cbiAgLy8gVGhpcyB2YXJpYWJsZSBzdG9yZXMgdGhlIHpvb20gbGV2ZWxzIHRoZSBlZGdlcyBhcmUgZGlzcGxheWVkXG4gIC8vIEl0IGlzIHVzZWQgaW4gdHdvIHBsYWNlcyBpbiB0aGUgY29kZSwgc28gaXQgaXMgYmV0dGVyIHRvIHN0b3JlIGl0IGluIG9uZSBwbGFjZVxuICBjb25zdCBlZGdlc1pvb21MZXZlbHMgPSBbJ1NtYWxsJywgJ01lZGl1bScsICdNTGFyZ2UnLCAnTGFyZ2UnXTtcblxuICBjb25zdCBoYW5kbGVQb2ludHNDaGVja2JveENoYW5nZSA9IChpc0NoZWNrZWQpID0+IHtcbiAgICBzZXRPbmx5TW9uaXRvcmVkUG9pbnRzKGlzQ2hlY2tlZCk7XG4gICAgaWYgKG1hcFJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBzZXRPbmx5TW9uaXRvcmVkUG9pbnRzKGlzQ2hlY2tlZCk7XG4gICAgICBsZXQgem9vbSA9IHpvb21MZXZlbHNbbWFwUmVmLmN1cnJlbnQuZ2V0Wm9vbSgpXTtcblxuICAgICAgaWYgKGlzQ2hlY2tlZCkge1xuICAgICAgICAvLyBIaWRlIHVubW9uaXRvcmVkIHBvaW50cyB3aGVuIFwic2hvdyBvbmx5IG1vbml0b3JlZFwiIGlzIGNoZWNrZWRcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAucmVtb3ZlTGF5ZXIodW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cCk7XG4gICAgICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cC5yZW1vdmVGcm9tKG1hcFJlZi5jdXJyZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNob3cgYWxsIHBvaW50cyB3aGVuIFwic2hvdyBvbmx5IG1vbml0b3JlZFwiIGlzIHVuY2hlY2tlZFxuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5hZGRMYXllcih1bm1vbml0b3JlZEZhY3Rvcmllc0dyb3VwKTtcblxuICAgICAgICAvLyBTaG93IHVubW9uaXRvcmVkIGVkZ2VzIGlmIGF0IGFwcHJvcHJpYXRlIHpvb20gbGV2ZWxcbiAgICAgICAgaWYgKGVkZ2VzQ2hlY2tib3hSZWYuY3VycmVudCAmJiBlZGdlc1pvb21MZXZlbHMuaW5jbHVkZXMoem9vbSkpIHtcbiAgICAgICAgICB1bm1vbml0b3JlZEVkZ2VzR3JvdXAuYWRkVG8obWFwUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBvaW50c1dpdGhTYW1wbGVyQ2hlY2tib3hDaGFuZ2UgPSAoaXNDaGVja2VkKSA9PiB7XG4gICAgc2V0U2hvd1NhbXBsZXJJY29uKGlzQ2hlY2tlZCk7XG4gIH07XG5cbiAgY29uc3QgdHJhY2tMYXllcmJveCA9ICgpID0+IHtcbiAgICBzZXR1cENoZWNrYm94TGlzdGVuZXIoJyNlZGdlcy1jaGVja2JveCcsIGhhbmRsZUVkZ2VzQ2hlY2tib3hDaGFuZ2UpO1xuICAgIHNldHVwQ2hlY2tib3hMaXN0ZW5lcihcbiAgICAgICcjbW9uaXRvcmVkLXBvaW50cy1jaGVja2JveCcsXG4gICAgICBoYW5kbGVQb2ludHNDaGVja2JveENoYW5nZSxcbiAgICApO1xuICAgIHNldHVwQ2hlY2tib3hMaXN0ZW5lcihcbiAgICAgICcjbW9uaXRvcmVkLXBvaW50cy13aXRoLXNhbXBsZXItY2hlY2tib3gnLFxuICAgICAgaGFuZGxlUG9pbnRzV2l0aFNhbXBsZXJDaGVja2JveENoYW5nZSxcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHpvb21SdWxlc0ZvckV2ZW50c1ZpZXcgPSAoKSA9PiB7XG4gICAgY29uc3QgcGF5bG9hZCA9IChcbiAgICAgIDw+XG4gICAgICAgIHtlZGdlc0NoZWNrYm94ICYmIG1lbW9pemVkRWRnZXN9XG4gICAgICAgIHtlZGdlc0NoZWNrYm94ICYmICFvbmx5TW9uaXRvcmVkUG9pbnRzICYmIG1lbW9pemVkVW5tb25pdG9yZWRFZGdlc31cbiAgICAgICAgeyFvbmx5TW9uaXRvcmVkUG9pbnRzICYmIG1lbW9pemVkVW5tb25pdG9yZWRQb2ludHN9XG4gICAgICAgIHttZW1vaXplZE1vbml0b3JlZFBvaW50c31cbiAgICAgIDwvPlxuICAgICk7XG5cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfTtcblxuICBjb25zdCBtZW1vaXplZFpvb21Db250cm9sID0gKCkgPT4ge1xuICAgIGxldCBwYXlsb2FkID0gPD48Lz47XG4gICAgaWYgKGVkZ2VzWm9vbUxldmVscy5pbmNsdWRlcyh6b29tTGV2ZWxzW21hcFpvb21MZXZlbF0pKSB7XG4gICAgICBwYXlsb2FkID0gem9vbVJ1bGVzRm9yRXZlbnRzVmlldygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXlsb2FkID0gKFxuICAgICAgICA8PlxuICAgICAgICAgIHshb25seU1vbml0b3JlZFBvaW50cyAmJiBtZW1vaXplZFVubW9uaXRvcmVkUG9pbnRzfVxuICAgICAgICAgIHttZW1vaXplZE1vbml0b3JlZFBvaW50c31cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBwYXlsb2FkO1xuICB9O1xuXG4gIGNvbnN0IG1lbW9pemVkRXZlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoZm9jdXNlZEV2ZW50UHJlc2VudCkge1xuICAgICAgZm9jdXNlZEV2ZW50IS5mb2N1c2VkID0gZm9jdXNlZEV2ZW50UHJlc2VudDtcbiAgICAgIGZvY3VzZWRFdmVudCEuaG92ZXJlZCA9ICFmb2N1c2VkRXZlbnRQcmVzZW50O1xuICAgIH1cblxuICAgIGlmIChob3ZlcmVkRXZlbnRQcmVzZW50KSB7XG4gICAgICBob3ZlcmVkRXZlbnQhLmhvdmVyZWQgPSBob3ZlcmVkRXZlbnRQcmVzZW50O1xuICAgICAgaG92ZXJlZEV2ZW50IS5mb2N1c2VkID0gIWhvdmVyZWRFdmVudFByZXNlbnQ7XG4gICAgfVxuXG4gICAgaWYgKCFob3ZlcmVkRXZlbnRQcmVzZW50ICYmICFmb2N1c2VkRXZlbnRQcmVzZW50KSByZXR1cm4gPD48Lz47XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEV2ZW50XG4gICAgICAgIGV2ZW50PXtmb2N1c2VkRXZlbnQhIHx8IGhvdmVyZWRFdmVudCF9XG4gICAgICAgIG1hcD17bWFwfVxuICAgICAgICBlZGdlcz17ZWRnZXMhfVxuICAgICAgICBwb2ludHM9e3BvaW50cyF9XG4gICAgICAgIGluY2x1ZGVOZXR3b3JrPXshaG92ZXJlZEV2ZW50UHJlc2VudH1cbiAgICAgIC8+XG4gICAgKTtcbiAgfSwgW2ZvY3VzZWRFdmVudFByZXNlbnQsIGhvdmVyZWRFdmVudFByZXNlbnQsIGVkZ2VzLCBwb2ludHNdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGVkZ2VzQ2hlY2tib3hSZWYuY3VycmVudCA9IGVkZ2VzQ2hlY2tib3g7XG4gIH0sIFtlZGdlc0NoZWNrYm94XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAobWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IGFsbEdyb3VwcyA9IFtcbiAgICAgICAgbW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAsXG4gICAgICAgIHVubW9uaXRvcmVkRmFjdG9yaWVzR3JvdXAsXG4gICAgICAgIHd3dHBzTGF5ZXJHcm91cCxcbiAgICAgICAgY29sbGVjdG9yc0xheWVyR3JvdXAsXG4gICAgICBdO1xuXG4gICAgICBsZXQgbWF0Y2hpbmdNYXJrZXJzID0gW107XG5cbiAgICAgIGFsbEdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBncm91cC5nZXRMYXllcnMoKS5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGxheWVyIGluc3RhbmNlb2YgTC5NYXJrZXIgJiZcbiAgICAgICAgICAgIGxheWVyWydrYW5kb19oYXNfc2FtcGxlciddID09PSB0cnVlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBtYXRjaGluZ01hcmtlcnMucHVzaChsYXllcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBtYXRjaGluZ01hcmtlcnMuZm9yRWFjaCgobWFya2VyKSA9PiB7XG4gICAgICAgIG1hcmtlclsna2FuZG9fc2hvd19zYW1wbGVyJ10gPSBzaG93U2FtcGxlckljb247XG5cbiAgICAgICAgY29uc3QgbWFya2VySWNvbkRhdGEgPSBtYXJrZXJbJ2thbmRvX2ljb25fZGF0YSddO1xuICAgICAgICBjb25zdCBtYXJrZXJDbGlja2VkID0gbWFya2VyLmlzUG9wdXBPcGVuKCkgfHwgZmFsc2U7XG4gICAgICAgIGNvbnN0IGhpZGVUZXh0ID0gbWFya2VyQ2xpY2tlZCA9PT0gZmFsc2U7XG5cbiAgICAgICAgaWYgKG1hcmtlckljb25EYXRhKSB7XG4gICAgICAgICAgY29uc3QgaWNvbiA9IGdldFBvaW50SWNvbkJ5VHlwZShcbiAgICAgICAgICAgIG1hcmtlckljb25EYXRhPy50eXBlIHx8ICcnLFxuICAgICAgICAgICAgbWFya2VySWNvbkRhdGE/LnRpdGxlIHx8ICcnLFxuICAgICAgICAgICAgbWFya2VySWNvbkRhdGE/LnN1YnRpdGxlIHx8ICcnLFxuICAgICAgICAgICAgbWFya2VyQ2xpY2tlZCxcbiAgICAgICAgICAgIGhpZGVUZXh0LFxuICAgICAgICAgICAgbWFya2VySWNvbkRhdGE/Lmhhc0lzc3VlcyB8fCBmYWxzZSxcbiAgICAgICAgICAgIHNob3dTYW1wbGVySWNvbixcbiAgICAgICAgICAgIG1hcmtlckljb25EYXRhPy5zaG91bGRJbnN0YWxsIHx8IGZhbHNlLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBtYXJrZXIuc2V0SWNvbihpY29uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbc2hvd1NhbXBsZXJJY29uXSk7XG5cbiAgLy8gdXNlRWZmZWN0KCgpID0+IHtcbiAgLy8gICByZXR1cm4gZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgLy8gICAgIGNvbGxlY3RvcnNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gIC8vICAgICBtYXBSZWYuY3VycmVudD8ucmVtb3ZlTGF5ZXIoY29sbGVjdG9yc0xheWVyR3JvdXApO1xuICAvLyAgIH07XG4gIC8vIH0sIFtmb2N1c2VkRXZlbnQsIGdsb2JhbF9kYXRhLmV2ZW50RmlsdGVyUGFyYW1dKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgaWYgKGZvckV2ZW50c1ZpZXcgJiYgbWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgZGlzcGF0Y2goY2xlYXJQb2ludHMoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNsZWFyQXJlYXMoKSk7XG4gICAgICAgIHd3dHBzTGF5ZXJHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBhcmVhc0xheWVyR3JvdXAuY2xlYXJMYXllcnMoKTtcbiAgICAgICAgdW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBtb25pdG9yZWRGYWN0b3JpZXNHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBtb25pdG9yZWRFZGdlc0dyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICAgIGNvbGxlY3RvcnNMYXllckdyb3VwLmNsZWFyTGF5ZXJzKCk7XG4gICAgICAgIHVubW9uaXRvcmVkRWRnZXNHcm91cC5jbGVhckxheWVycygpO1xuICAgICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcih1bm1vbml0b3JlZEVkZ2VzR3JvdXApO1xuICAgICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcihtb25pdG9yZWRFZGdlc0dyb3VwKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIod3d0cHNMYXllckdyb3VwKTtcbiAgICAgICAgbWFwUmVmLmN1cnJlbnQucmVtb3ZlTGF5ZXIoY29sbGVjdG9yc0xheWVyR3JvdXApO1xuICAgICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcihhcmVhc0xheWVyR3JvdXApO1xuICAgICAgICBtYXBSZWYuY3VycmVudC5yZW1vdmVMYXllcihmYWN0b3JpZXNQYXJlbnRHcm91cCk7XG5cbiAgICAgICAgbWFwUmVmLmN1cnJlbnQuZWFjaExheWVyKChsYXllcikgPT4ge1xuICAgICAgICAgIGlmIChsYXllciBpbnN0YW5jZW9mIEwuVGlsZUxheWVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIG1hcFJlZi5jdXJyZW50LnJlbW92ZUxheWVyKGxheWVyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2dsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbWFwUmVmLmN1cnJlbnQpIHtcbiAgICAgIGluaXRpYWxpemVNYXAoXG4gICAgICAgIG1hcFpvb21MZXZlbCxcbiAgICAgICAgbWFwQm94U3R5bGUsXG4gICAgICAgIGxlYWZsZXRNYXAuc2F0ZWxsaXRlLFxuICAgICAgICBtYXBSZWYsXG4gICAgICAgIGRpc3BhdGNoLFxuICAgICAgICBpc1ZhbGlkQXJlYSxcbiAgICAgICAgYXJlYVRvQ2VudGVyQnksXG4gICAgICAgIHNldE1hcFpvb21MZXZlbCxcbiAgICAgICAgZm9yV1dUUERhc2hib2FyZCxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZCxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluaXRpYWxpemUgcGFyZW50IGZhY3RvcnkgZ3JvdXBcbiAgICAgIGlmIChtYXBSZWYuY3VycmVudCkge1xuICAgICAgICBmYWN0b3JpZXNQYXJlbnRHcm91cC5hZGRUbyhtYXBSZWYuY3VycmVudCk7XG4gICAgICAgIGZhY3Rvcmllc1BhcmVudEdyb3VwLmFkZExheWVyKG1vbml0b3JlZEZhY3Rvcmllc0dyb3VwKTtcbiAgICAgICAgZmFjdG9yaWVzUGFyZW50R3JvdXAuYWRkTGF5ZXIodW5tb25pdG9yZWRGYWN0b3JpZXNHcm91cCk7XG4gICAgICB9XG5cbiAgICAgIHRyYWNrTGF5ZXJib3goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0TWFwWm9vbUxldmVsKG1hcFJlZi5jdXJyZW50LmdldFpvb20oKSk7XG4gICAgICBpZiAoIWFyZWFUb0NlbnRlckJ5KSB7XG4gICAgICAgIGFyZWFUb0NlbnRlckJ5ID0gYXJlYXMubWFwKChhcmVhKSA9PiBhcmVhLnNoYXBlX2RhdGEpLmZsYXQoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFmb2N1c2VkRXZlbnQpIHtcbiAgICAgICAgYXJlYUZvY3VzTG9naWMobWFwUmVmLCBpc1ZhbGlkQXJlYSwgYXJlYVRvQ2VudGVyQnkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW21hcFJlZi5jdXJyZW50LCBhcmVhVG9DZW50ZXJCeV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGNsaWNrZWQgPSBmYWxzZTtcblxuICAgIG1hcFJlZi5jdXJyZW50Py5lYWNoTGF5ZXIoKGxheWVyKSA9PiB7XG4gICAgICBpZiAoY2xpY2tlZCkgcmV0dXJuO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGxheWVyPy5rYW5kb19vYmplY3RfaWQgPT09IHNlbGVjdGVkSXRlbSAmJlxuICAgICAgICBsYXllci5pc1BvcHVwT3BlbigpID09PSBmYWxzZVxuICAgICAgKSB7XG4gICAgICAgIGlmIChsYXllciBpbnN0YW5jZW9mIEwuTWFya2VyKSB7XG4gICAgICAgICAgbGF5ZXIuZmlyZSgnY2xpY2snKTtcbiAgICAgICAgfSBlbHNlIGlmIChsYXllciBpbnN0YW5jZW9mIEwuUG9seWdvbikge1xuICAgICAgICAgIGxheWVyLmZpcmUoJ2NsaWNrLWV2ZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY2xpY2tlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtzZWxlY3RlZEl0ZW1dKTtcblxuICBjb25zdCByZW5kZXJBcmVhcyA9ICgpID0+IHtcbiAgICBpZiAoIXNob3VsZExvYWRNYXBPYmplY3RzKGdsb2JhbF9kYXRhLCBtYXBSZWYsIGVkZ2VzLCBwb2ludHMpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEFyZWFQb2x5Z29uc1xuICAgICAgICBhcmVhcz17YXJlYXN9XG4gICAgICAgIG1hcD17bWFwUmVmLmN1cnJlbnR9XG4gICAgICAgIEw9e0x9XG4gICAgICAgIGFyZWFUb0NlbnRlckJ5PXthcmVhVG9DZW50ZXJCeX1cbiAgICAgICAgbWFwWm9vbT17bWFwWm9vbUxldmVsfVxuICAgICAgICBnbG9iYWxfZGF0YT17Z2xvYmFsX2RhdGF9XG4gICAgICAgIGZlYXR1cmVHcm91cD17YXJlYXNMYXllckdyb3VwfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJrZC1tYXAtY29udGFpbmVyXCIgc3R5bGU9e3N0eWxlfT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtgIG1hcC1jb250YWluZXIgJHtcbiAgICAgICAgICBnbG9iYWxfZGF0YS5zaWRlbmF2RXhwYW5kZWQgPyAnJyA6ICdtYXAtY29udGFpbmVyLS1zaWRlbmF2LWNvbGxhcHNlZCdcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgIDxkaXYgaWQ9XCJtYXBcIj48L2Rpdj5cbiAgICAgICAgICB7cmVuZGVyQXJlYXMoKX1cbiAgICAgICAgICB7c2hvdWRMb2FkRGVwZW5kZW50TWFwT2JqZWN0cyhcbiAgICAgICAgICAgIGVkZ2VzLFxuICAgICAgICAgICAgYXJlYXMsXG4gICAgICAgICAgICBnbG9iYWxfZGF0YSxcbiAgICAgICAgICAgIG1hcFJlZixcbiAgICAgICAgICAgIHBvaW50cyxcbiAgICAgICAgICApICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHttZW1vaXplZEV2ZW50fVxuICAgICAgICAgICAgICB7bWVtb2l6ZWRab29tQ29udHJvbCgpfVxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8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