@kando-env/kando-ui 1.2.254-alpha.23 → 1.2.254-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 (517) hide show
  1. package/lib/Router.js +40 -43
  2. package/lib/Widgets/EventsCarousel/EventsCarousel.js +5 -8
  3. package/lib/Widgets/EventsRow/EventsRow.js +5 -8
  4. package/lib/Widgets/Map/GraphUtils.js +4 -6
  5. package/lib/Widgets/Map/Map.js +6 -8
  6. package/lib/Widgets/Map/MapUtils.js +16 -30
  7. package/lib/Widgets/Map/areas/AreaPolygon.js +4 -7
  8. package/lib/Widgets/Map/areas/AreaPolygons.js +4 -7
  9. package/lib/Widgets/Map/edges/Edge.js +11 -9
  10. package/lib/Widgets/Map/edges/Edges.js +4 -7
  11. package/lib/Widgets/Map/edges/arrows/Arrows.js +4 -5
  12. package/lib/Widgets/Map/events/Event.js +4 -7
  13. package/lib/Widgets/Map/events/EventIndicator.js +4 -7
  14. package/lib/Widgets/Map/events/EventPath.js +4 -7
  15. package/lib/Widgets/Map/events/EventUtils.js +17 -33
  16. package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +8 -13
  17. package/lib/Widgets/Map/events/PointOfEvent.js +5 -8
  18. package/lib/Widgets/Map/events/PointsForSpecificEvent.js +5 -7
  19. package/lib/Widgets/Map/events/Snail.js +4 -7
  20. package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +5 -9
  21. package/lib/Widgets/Map/map/FloatingGraph.js +3 -4
  22. package/lib/Widgets/Map/map/GraphDateButton.js +3 -4
  23. package/lib/Widgets/Map/matchGraph/MatchGraph.js +2 -3
  24. package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +3 -4
  25. package/lib/Widgets/Map/points/PointIcon.js +4 -6
  26. package/lib/Widgets/Map/points/PointMarker.js +3 -6
  27. package/lib/Widgets/Map/points/PointMarkers.js +4 -7
  28. package/lib/Widgets/Map/points/PointUtils.js +23 -44
  29. package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +8 -11
  30. package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +4 -7
  31. package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +4 -7
  32. package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +4 -6
  33. package/lib/Widgets/MostPolluting/Areas/Areas.js +4 -7
  34. package/lib/Widgets/MostPolluting/Areas/areas.mock.js +2 -3
  35. package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
  36. package/lib/Widgets/MostPolluting/Areas/styles.js +4 -6
  37. package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +3 -4
  38. package/lib/Widgets/MostPolluting/Factories/Factories.js +4 -7
  39. package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +3 -4
  40. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +3 -4
  41. package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +4 -6
  42. package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +4 -6
  43. package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -3
  44. package/lib/Widgets/MostPolluting/Factories/styles.js +4 -6
  45. package/lib/Widgets/MostPolluting/MostPolluting.js +19 -13
  46. package/lib/Widgets/MostPolluting/MostPolluting.stories.js +7 -12
  47. package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +3 -4
  48. package/lib/Widgets/MostPolluting/ShowMore/styles.js +3 -4
  49. package/lib/Widgets/MostPolluting/assets/index.js +1 -1
  50. package/lib/Widgets/MostPolluting/components/ChangePercent.js +3 -4
  51. package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +1 -1
  52. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +3 -4
  53. package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +1 -1
  54. package/lib/Widgets/MostPolluting/components/PotentialImpact.js +3 -4
  55. package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +1 -1
  56. package/lib/Widgets/MostPolluting/styles.js +4 -6
  57. package/lib/Widgets/PotentialImpactSummary/Back/Back.js +3 -4
  58. package/lib/Widgets/PotentialImpactSummary/Icon.js +3 -4
  59. package/lib/Widgets/PotentialImpactSummary/index.js +4 -5
  60. package/lib/Widgets/PotentialImpactSummary/index.test.js +1 -1
  61. package/lib/Widgets/PotentialImpactSummary/styles.js +7 -12
  62. package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +3 -4
  63. package/lib/Widgets/QualitySummary/PieChart/PieChart.js +3 -4
  64. package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +1 -1
  65. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +3 -4
  66. package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +3 -5
  67. package/lib/Widgets/QualitySummary/QualitySummary.js +3 -4
  68. package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -7
  69. package/lib/Widgets/QualitySummary/styles.js +7 -12
  70. package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +4 -7
  71. package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +4 -7
  72. package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +3 -4
  73. package/lib/Widgets/UtilityInformation/UtilityInformation.js +14 -23
  74. package/lib/Widgets/UtilityInformation/styles.js +9 -17
  75. package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -5
  76. package/lib/components/ApplyButton/ApplyButton.js +3 -4
  77. package/lib/components/ApplyButton/index.js +3 -4
  78. package/lib/components/Backdrop/Backdrop.js +3 -4
  79. package/lib/components/ContentLoader/ContentLoader.js +3 -4
  80. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +4 -6
  81. package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +4 -6
  82. package/lib/components/CustomInputs/DoubleTabs/styles.js +5 -8
  83. package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +4 -7
  84. package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +3 -4
  85. package/lib/components/CustomInputs/Search/Search.js +4 -7
  86. package/lib/components/CustomInputs/Search/index.js +3 -4
  87. package/lib/components/CustomInputs/Select/Select.js +4 -7
  88. package/lib/components/CustomInputs/Select/Select.stories.js +4 -6
  89. package/lib/components/DamageType/DamageType.js +4 -7
  90. package/lib/components/DamageType/index.js +3 -4
  91. package/lib/components/DataLoaderError/DataLoaderError.js +3 -4
  92. package/lib/components/DischargeHeatmap/DischargeHeatmap.js +3 -4
  93. package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +1 -1
  94. package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +4 -7
  95. package/lib/components/DischargeHeatmap/HighchartsOptions.js +3 -4
  96. package/lib/components/DischargeHeatmap/index.js +3 -4
  97. package/lib/components/DischargeHeatmap/mocks/handlers.js +2 -3
  98. package/lib/components/DischargeHeatmap/popupText.js +3 -4
  99. package/lib/components/DischargeHeatmap/titles.js +4 -6
  100. package/lib/components/ErrorBoundary.js +3 -4
  101. package/lib/components/Events/Events.js +4 -7
  102. package/lib/components/Events/index.js +3 -4
  103. package/lib/components/Graph/Graph.js +6 -9
  104. package/lib/components/Graph/index.js +3 -4
  105. package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +3 -4
  106. package/lib/components/Header/Breadcrumbs/index.js +3 -4
  107. package/lib/components/Header/DoubleTabs/DoubleTabs.js +5 -9
  108. package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +4 -6
  109. package/lib/components/Header/DoubleTabs/styles.js +5 -8
  110. package/lib/components/Header/Header.js +3 -4
  111. package/lib/components/Header/Header.stories.js +4 -6
  112. package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +10 -5
  113. package/lib/components/Header/InfoBar/InfoBar.js +4 -7
  114. package/lib/components/Header/InfoBar/Search/Control.js +3 -4
  115. package/lib/components/Header/InfoBar/Search/GroupLabel.js +3 -4
  116. package/lib/components/Header/InfoBar/Search/Search.js +4 -7
  117. package/lib/components/Header/InfoBar/Search/SearchContainer.js +4 -7
  118. package/lib/components/Header/InfoBar/Search/index.js +3 -4
  119. package/lib/components/Header/InfoBar/Search/searchStyle.js +3 -4
  120. package/lib/components/Header/KandoNavbar/KandoNavbar.js +4 -7
  121. package/lib/components/Header/KandoNavbar/index.js +3 -4
  122. package/lib/components/Header/Slideshow/Slideshow.js +8 -11
  123. package/lib/components/Header/Slideshow/index.js +3 -4
  124. package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +3 -4
  125. package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +3 -4
  126. package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +3 -4
  127. package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +3 -4
  128. package/lib/components/Header/Toolbar/Toolbar.js +5 -8
  129. package/lib/components/InfoBar/InfoBar.js +4 -7
  130. package/lib/components/InfoBar/InfoBar.stories.js +4 -6
  131. package/lib/components/KandoModal/KandoModal.js +4 -7
  132. package/lib/components/KandoModal/index.js +3 -4
  133. package/lib/components/Link.js +3 -4
  134. package/lib/components/Links/CustomRedirect/CustomRedirect.js +3 -4
  135. package/lib/components/Links/StyledLink/StyledLink.js +4 -6
  136. package/lib/components/Links/StyledNavLink/StyledNavLink.js +3 -4
  137. package/lib/components/LiveEvents/CarouselSlide.js +3 -4
  138. package/lib/components/LiveEvents/LiveEvents.js +3 -4
  139. package/lib/components/LiveEvents/index.js +3 -4
  140. package/lib/components/LoaderByPercent/LoaderByPercent.js +4 -6
  141. package/lib/components/Map/Map.js +4 -7
  142. package/lib/components/Map/index.js +3 -4
  143. package/lib/components/Modal/Modal.js +3 -4
  144. package/lib/components/NarrowHeader.js +3 -4
  145. package/lib/components/PointInfo/PointInfo.js +3 -4
  146. package/lib/components/PointInfo/index.js +3 -4
  147. package/lib/components/PopupModal/PopupModal.js +3 -4
  148. package/lib/components/PopupModal/PopupModal.stories.js +5 -8
  149. package/lib/components/Sector/Sector.js +3 -4
  150. package/lib/components/Sector/Sector.test.js +1 -1
  151. package/lib/components/Sector/index.js +3 -4
  152. package/lib/components/Sector/sectorIcons.js +3 -4
  153. package/lib/components/SevereEvent/Eta/Eta.js +4 -7
  154. package/lib/components/SevereEvent/Eta/styles.js +3 -4
  155. package/lib/components/SevereEvent/SevereEvent.js +4 -7
  156. package/lib/components/Spinner/Spinner.js +3 -4
  157. package/lib/components/Spinner/Spinner.stories.js +5 -8
  158. package/lib/components/Spinner/index.js +3 -4
  159. package/lib/components/Spinner/styles.js +5 -8
  160. package/lib/components/Tabs/Tabs.js +6 -10
  161. package/lib/components/Tabs/Tabs.stories.js +4 -6
  162. package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +4 -7
  163. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +4 -7
  164. package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +4 -7
  165. package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +3 -4
  166. package/lib/components/TimeRangeSelector/TimeRangeHelper.js +6 -10
  167. package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +3 -4
  168. package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +3 -4
  169. package/lib/components/TimeRangeSelector/TimeRangeList.js +4 -7
  170. package/lib/components/TimeRangeSelector/TimeRangeOptions.js +4 -7
  171. package/lib/components/TimeRangeSelector/TimeRangeSelector.js +5 -9
  172. package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +4 -6
  173. package/lib/components/TimeRangeSelector/constants.js +3 -5
  174. package/lib/components/TimeRangeSelector/index.js +3 -4
  175. package/lib/components/Toggle/Toggle.js +4 -7
  176. package/lib/components/Toggle/index.js +3 -4
  177. package/lib/components/TrendGraph/TrendGraph.js +5 -8
  178. package/lib/components/TrendGraph/index.js +3 -4
  179. package/lib/components/TrendGraphNVL/TrendGraphNVL.js +4 -7
  180. package/lib/components/TrendGraphNVL/index.js +3 -4
  181. package/lib/development-environment/index.js +3 -4
  182. package/lib/development-environment/mock/browser.js +3 -4
  183. package/lib/development-environment/mock/get.js +2 -3
  184. package/lib/development-environment/mock/handlers.js +2 -3
  185. package/lib/development-environment/mock/mockBus.js +3 -5
  186. package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -3
  187. package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -3
  188. package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -3
  189. package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -3
  190. package/lib/development-environment/mock/mockObjects/areasJson.js +2 -3
  191. package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -3
  192. package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -3
  193. package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -3
  194. package/lib/development-environment/mock/mockObjects/data-search.js +2 -3
  195. package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -3
  196. package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -3
  197. package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -3
  198. package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -3
  199. package/lib/development-environment/mock/mockObjects/metascore.js +2 -3
  200. package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -3
  201. package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -3
  202. package/lib/development-environment/mock/mockObjects/site-info.js +2 -3
  203. package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -3
  204. package/lib/development-environment/togly/ToglyDashboard.js +4 -7
  205. package/lib/development-environment/togly/ToglyItem.js +4 -7
  206. package/lib/development-environment/togly/init.js +1 -1
  207. package/lib/development-environment/togly/useDoubleKeyDown.js +2 -3
  208. package/lib/development-environment/togly/useLocalStorage.js +3 -4
  209. package/lib/hooks/useApi.js +30 -33
  210. package/lib/hooks/useApiWithDashboardQuery.js +4 -6
  211. package/lib/hooks/useClickOutside.js +2 -3
  212. package/lib/hooks/useInitializeHeaders.js +4 -6
  213. package/lib/hooks/useKandoFetch.js +3 -4
  214. package/lib/hooks/useMap.js +5 -6
  215. package/lib/hooks/useNavContext.js +3 -4
  216. package/lib/hooks/useQueryURL.js +2 -3
  217. package/lib/hooks/useRemoveExistingLayers.js +2 -3
  218. package/lib/hooks/useUpdateEventBodyTail.js +2 -3
  219. package/lib/hooks/useUserTimeZone.js +3 -5
  220. package/lib/hooks/useUserTimeZone.test.js +3 -5
  221. package/lib/hooks/useWindowSize.js +1 -1
  222. package/lib/i18n/en.json +9 -0
  223. package/lib/i18n/he.json +3 -0
  224. package/lib/index.js +4 -7
  225. package/lib/macros/getVersion.js +2 -2
  226. package/lib/pages/AreaPage/AreaPage.js +36 -37
  227. package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +3 -6
  228. package/lib/pages/AreaPage/Dashboard/Dashboard.js +4 -7
  229. package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +4 -7
  230. package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +3 -4
  231. package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +4 -7
  232. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +3 -4
  233. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +3 -4
  234. package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +4 -6
  235. package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -3
  236. package/lib/pages/AreaPage/Dashboard/Sites/styles.js +5 -8
  237. package/lib/pages/AssessmentPage/AssessmentPage.js +4 -7
  238. package/lib/pages/CannyWidget/Feedback.js +4 -7
  239. package/lib/pages/CovidPage/CovidPage.js +4 -7
  240. package/lib/pages/CovidPage/components/Body.js +4 -7
  241. package/lib/pages/CovidPage/components/Map.js +4 -7
  242. package/lib/pages/CovidPage/components/Sidebar.js +4 -7
  243. package/lib/pages/CovidPage/components/Summary.js +4 -7
  244. package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +4 -7
  245. package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +3 -4
  246. package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +7 -8
  247. package/lib/pages/CovidPage/components/TrendPopupContent/index.js +3 -4
  248. package/lib/pages/CovidPage/components/areas/Area.js +4 -7
  249. package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +4 -7
  250. package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +4 -7
  251. package/lib/pages/CovidPage/components/areas/AreasList.js +4 -7
  252. package/lib/pages/CovidPage/components/areas/Sort.js +4 -7
  253. package/lib/pages/CovidPage/components/nvlStatusHelper.js +5 -9
  254. package/lib/pages/EventsPage/Body/Body.js +4 -7
  255. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +3 -5
  256. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +6 -10
  257. package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +3 -4
  258. package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +3 -4
  259. package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +1 -1
  260. package/lib/pages/EventsPage/DragAndDropArea/index.js +3 -4
  261. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +4 -7
  262. package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +6 -10
  263. package/lib/pages/EventsPage/EventsPage.js +4 -7
  264. package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +5 -8
  265. package/lib/pages/EventsPage/events/EventsStyle.scss +1 -0
  266. package/lib/pages/EventsPage/events/MoreInfo.js +4 -7
  267. package/lib/pages/EventsPage/events/Sidebar.js +4 -7
  268. package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +4 -7
  269. package/lib/pages/EventsPage/events/event_info/EventDetails.js +3 -4
  270. package/lib/pages/EventsPage/events/event_info/EventInfo.js +6 -8
  271. package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +3 -4
  272. package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +4 -7
  273. package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +3 -4
  274. package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +4 -7
  275. package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +3 -4
  276. package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/LineChartYear/LineChartYear.js +4 -7
  277. package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/MockHistoryInformation.js +3 -4
  278. package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +4 -7
  279. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsLineChart.js +4 -7
  280. package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +4 -7
  281. package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +4 -7
  282. package/lib/pages/EventsPage/events/event_info/samplings/Sampling.js +3 -4
  283. package/lib/pages/EventsPage/events/event_info/samplings/Samplings.js +3 -4
  284. package/lib/pages/EventsPage/events/event_info/sources/Source.js +3 -4
  285. package/lib/pages/EventsPage/events/event_info/sources/Sources.js +4 -7
  286. package/lib/pages/EventsPage/events/events_list/EventItem.js +4 -7
  287. package/lib/pages/EventsPage/events/events_list/EventUtils.js +5 -8
  288. package/lib/pages/EventsPage/events/events_list/EventsList.js +7 -31
  289. package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +4 -7
  290. package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +5 -8
  291. package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +4 -7
  292. package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +4 -7
  293. package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +4 -7
  294. package/lib/pages/EventsPage/events/events_list/Sort.js +4 -7
  295. package/lib/pages/ImportFileWizard/FileUploadRespones.js +3 -4
  296. package/lib/pages/ImportFileWizard/ImportButtomButtons.js +4 -5
  297. package/lib/pages/ImportFileWizard/ImportFile.js +4 -7
  298. package/lib/pages/ImportFileWizard/ResponseBody.js +3 -4
  299. package/lib/pages/ImportFileWizard/ValidationForm.js +3 -4
  300. package/lib/pages/ImportFileWizard/ValidationResponse.js +5 -8
  301. package/lib/pages/ImportFileWizard/importFileUtils.js +4 -5
  302. package/lib/pages/ImportFileWizard/index.js +3 -4
  303. package/lib/pages/ImportGisPage/ImportGisContainer.js +5 -9
  304. package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +3 -4
  305. package/lib/pages/ImportGisPage/importGisUtils.js +6 -8
  306. package/lib/pages/ImportGisProcess/index.js +3 -4
  307. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +4 -7
  308. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +3 -4
  309. package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +3 -4
  310. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +4 -7
  311. package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +4 -6
  312. package/lib/pages/NotificationsPage/Notification/Notification.js +3 -4
  313. package/lib/pages/NotificationsPage/Notifications.mock.js +2 -3
  314. package/lib/pages/NotificationsPage/Notifications.stories.js +4 -6
  315. package/lib/pages/NotificationsPage/NotificationsPage.js +5 -8
  316. package/lib/pages/NotificationsPageV2/NotificationsPage.js +5 -9
  317. package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +3 -4
  318. package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +4 -7
  319. package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +4 -7
  320. package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +17 -32
  321. package/lib/pages/NotificationsPageV2/notificationUtils.js +9 -16
  322. package/lib/pages/OldSitePage/IDashboardData.js +1 -1
  323. package/lib/pages/OldSitePage/OldSitePage.js +51 -58
  324. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +6 -10
  325. package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +4 -6
  326. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +3 -4
  327. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +3 -4
  328. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +6 -10
  329. package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +4 -7
  330. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +4 -6
  331. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +4 -6
  332. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +6 -10
  333. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +4 -7
  334. package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +3 -4
  335. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +4 -7
  336. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -7
  337. package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +7 -12
  338. package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +4 -7
  339. package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +4 -7
  340. package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +4 -6
  341. package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +4 -5
  342. package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +5 -8
  343. package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +4 -6
  344. package/lib/pages/ProfilePage/Container.js +3 -4
  345. package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +4 -7
  346. package/lib/pages/ProfilePage/ProfilePage.js +4 -7
  347. package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +4 -7
  348. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +5 -8
  349. package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +3 -5
  350. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +71 -76
  351. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +4 -7
  352. package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +3 -4
  353. package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +5 -8
  354. package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +3 -4
  355. package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +3 -4
  356. package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +3 -4
  357. package/lib/pages/SamplingsPage/DesktopActions/index.js +3 -4
  358. package/lib/pages/SamplingsPage/NavigationDropdown.js +4 -6
  359. package/lib/pages/SamplingsPage/NewSamplingAction.js +21 -26
  360. package/lib/pages/SamplingsPage/SamplingMobileModal.js +3 -4
  361. package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +3 -4
  362. package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +4 -5
  363. package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +4 -7
  364. package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +4 -7
  365. package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +3 -4
  366. package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +85 -92
  367. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +4 -7
  368. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +4 -7
  369. package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +4 -7
  370. package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +12 -23
  371. package/lib/pages/SamplingsPage/SamplingProperties/styles.js +4 -6
  372. package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +3 -4
  373. package/lib/pages/SamplingsPage/SamplingsMobileItem.js +4 -7
  374. package/lib/pages/SamplingsPage/SamplingsMobileList.js +4 -7
  375. package/lib/pages/SamplingsPage/SamplingsPage.js +5 -9
  376. package/lib/pages/SamplingsPage/SamplingsPageContainer.js +4 -7
  377. package/lib/pages/SamplingsPage/index.js +2 -3
  378. package/lib/pages/SamplingsPage/samplingsPageUtils.js +21 -40
  379. package/lib/pages/SitePage/DischargePattern/DischargePattern.js +3 -4
  380. package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +4 -6
  381. package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +6 -10
  382. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +3 -4
  383. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +1 -1
  384. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +3 -4
  385. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +1 -1
  386. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +6 -10
  387. package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +4 -7
  388. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +4 -6
  389. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +4 -6
  390. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +6 -10
  391. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +4 -7
  392. package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +3 -4
  393. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +4 -7
  394. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -9
  395. package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +7 -12
  396. package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +4 -7
  397. package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +4 -7
  398. package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +4 -6
  399. package/lib/pages/SitePage/SamplingParameters/dataParser.js +4 -5
  400. package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +5 -8
  401. package/lib/pages/SitePage/SamplingParameters/styles/styles.js +4 -6
  402. package/lib/pages/SitePage/SiteInformation/ContributorItem.js +3 -4
  403. package/lib/pages/SitePage/SiteInformation/EmptyState.js +3 -4
  404. package/lib/pages/SitePage/SiteInformation/PollutionContributor.js +3 -4
  405. package/lib/pages/SitePage/SiteInformation/SiteInformation.js +9 -12
  406. package/lib/pages/SitePage/SiteInformation/style.js +4 -6
  407. package/lib/pages/SitePage/SitePage.js +31 -38
  408. package/lib/pages/UploadLabResult/index.js +3 -4
  409. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +14 -29
  410. package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +5 -8
  411. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +7 -12
  412. package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +4 -6
  413. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +4 -7
  414. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +3 -4
  415. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +3 -4
  416. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +3 -4
  417. package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +3 -4
  418. package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +24 -8
  419. package/lib/pages/UtilityDashboardPage/TopBar/constants.js +16 -0
  420. package/lib/pages/UtilityDashboardPage/TopBar/styles.js +3 -4
  421. package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +18 -13
  422. package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +7 -12
  423. package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +3 -6
  424. package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +4 -7
  425. package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +64 -0
  426. package/lib/pages/WbeDashboard/ExpandableComponent.js +4 -7
  427. package/lib/pages/WbeDashboard/GraphWrapper.js +4 -7
  428. package/lib/pages/WbeDashboard/IndividualTinyGraph.js +4 -7
  429. package/lib/pages/WbeDashboard/SearchInput.js +4 -7
  430. package/lib/pages/WbeDashboard/SummaryGraph.js +23 -28
  431. package/lib/pages/WbeDashboard/SummaryGraphModal.js +3 -4
  432. package/lib/pages/WbeDashboard/Tabs.js +3 -4
  433. package/lib/pages/WbeDashboard/WbeDashboardPage.js +18 -16
  434. package/lib/pages/WbeDashboard/WbeSummaryBar.js +4 -7
  435. package/lib/providers/Slideshow/SlideshowContext.js +4 -7
  436. package/lib/providers/Slideshow/SlideshowProvider.js +4 -7
  437. package/lib/providers/Slideshow/SlideshowRunner.js +2 -3
  438. package/lib/providers/UrlHistory/UrlHistoryContext.js +5 -8
  439. package/lib/providers/UrlHistory/UrlHistoryProvider.js +3 -6
  440. package/lib/providers/UrlHistory/index.js +1 -1
  441. package/lib/providers/UrlHistory/useLastVisited.js +2 -3
  442. package/lib/store/ImportGis/actionTypes.js +4 -5
  443. package/lib/store/ImportGis/reducer.js +3 -3
  444. package/lib/store/WBE/actionTypes.js +2 -3
  445. package/lib/store/WBE/models/IWBE.js +1 -1
  446. package/lib/store/WBE/reducer.js +1 -1
  447. package/lib/store/areas/actionTypes.js +4 -7
  448. package/lib/store/areas/actions.js +1 -1
  449. package/lib/store/context/actionTypes.js +3 -5
  450. package/lib/store/context/contextMiddlewares.js +2 -3
  451. package/lib/store/context/reducer.js +1 -1
  452. package/lib/store/dashboard/dashboardSlice.js +3 -5
  453. package/lib/store/edges/actionTypes.js +5 -9
  454. package/lib/store/edges/reducer.js +1 -1
  455. package/lib/store/events/actionTypes.js +17 -33
  456. package/lib/store/events/models/IEvent.js +1 -1
  457. package/lib/store/events/reducer.js +1 -1
  458. package/lib/store/global/actionTypes.js +11 -21
  459. package/lib/store/global/actions.js +5 -3
  460. package/lib/store/global/reducer.js +1 -1
  461. package/lib/store/permissions/permissionsSlice.js +2 -5
  462. package/lib/store/points/actionTypes.js +3 -5
  463. package/lib/store/rootActionTypes.js +2 -3
  464. package/lib/store/rootReducer.js +3 -4
  465. package/lib/store/rootStore.js +1 -1
  466. package/lib/store/samplings/actionTypes.js +4 -5
  467. package/lib/store/samplings/reducer.js +1 -1
  468. package/lib/styles/StylesLayout.js +3 -4
  469. package/lib/styles/theme/theme.js +4 -7
  470. package/lib/test/mocks/browser.js +3 -4
  471. package/lib/test/test-utils.js +1 -1
  472. package/lib/ui-kit/Button/Button.js +5 -8
  473. package/lib/ui-kit/Button/Button.test.js +3 -5
  474. package/lib/ui-kit/Checkbox/Checkbox.js +4 -6
  475. package/lib/ui-kit/DropDown/DropDown.js +3 -4
  476. package/lib/ui-kit/DropDown/DropDown.test.js +1 -1
  477. package/lib/ui-kit/DropDown/DropDownItem.js +4 -6
  478. package/lib/ui-kit/DropDown/DropdownToggle.js +4 -6
  479. package/lib/ui-kit/IconAction/IconAction.js +3 -4
  480. package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +5 -8
  481. package/lib/ui-kit/InfoTooltip/InfoTooltip.js +3 -4
  482. package/lib/ui-kit/KandoList/KandoList.js +3 -6
  483. package/lib/ui-kit/KandoTable/KandoTable.js +7 -10
  484. package/lib/ui-kit/KandoTable/KandoTable.test.js +1 -1
  485. package/lib/ui-kit/Layout/Layout.js +3 -4
  486. package/lib/ui-kit/MobileInput/MobileInput.js +3 -4
  487. package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +3 -4
  488. package/lib/ui-kit/ModalConfirmation/index.js +2 -3
  489. package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +3 -4
  490. package/lib/ui-kit/SamplingStatus/SamplingStatus.js +3 -4
  491. package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -5
  492. package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +4 -6
  493. package/lib/ui-kit/Tooltip/Tooltip.js +3 -4
  494. package/lib/ui-kit/kandoStepper/KandoStepper.js +3 -4
  495. package/lib/utilities/Alert.js +3 -4
  496. package/lib/utilities/Analytics.js +3 -4
  497. package/lib/utilities/Array.js +3 -5
  498. package/lib/utilities/Enum.js +23 -26
  499. package/lib/utilities/ErrorBoundary.js +3 -4
  500. package/lib/utilities/File.js +42 -49
  501. package/lib/utilities/GetDir.js +3 -4
  502. package/lib/utilities/KandoDate.js +3 -4
  503. package/lib/utilities/KandoModal.js +4 -7
  504. package/lib/utilities/LocalStorage.js +5 -9
  505. package/lib/utilities/ThousandsToK.js +2 -3
  506. package/lib/utilities/TimeFormat.js +4 -7
  507. package/lib/utilities/Truncate.js +4 -7
  508. package/lib/utilities/edgesMath.js +7 -8
  509. package/lib/utilities/i18n.js +3 -4
  510. package/lib/utilities/kql.js +3 -5
  511. package/lib/utilities/map/icons.js +3 -4
  512. package/lib/utilities/polylinedecorator.js +4 -6
  513. package/lib/utilities/scoreToColor.js +2 -3
  514. package/lib/utilities/time.js +5 -8
  515. package/lib/utilities/uploadToS3.js +3 -4
  516. package/lib/utilities/urls.js +31 -8
  517. package/package.json +2 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
@@ -27,11 +27,10 @@ var _whitePoint = _interopRequireDefault(require("../../../assets/white-point.pn
27
27
  var _MapUtils = require("../MapUtils");
28
28
  var _PointIcon = require("./PointIcon");
29
29
  var _water_reuse = _interopRequireDefault(require("../../../assets/icons/water_reuse.svg"));
30
- var isCollectorFocused = function isCollectorFocused(point, event) {
30
+ var isCollectorFocused = exports.isCollectorFocused = function isCollectorFocused(point, event) {
31
31
  var _event$observations;
32
32
  return (event === null || event === void 0 ? void 0 : (_event$observations = event.observations) === null || _event$observations === void 0 ? void 0 : _event$observations.length) === 1 && point.id === event.observations[0].point_id;
33
33
  };
34
- exports.isCollectorFocused = isCollectorFocused;
35
34
  var buildManholeTootipString = function buildManholeTootipString(point) {
36
35
  var string = "".concat(point.group.name, " ");
37
36
  if (point.group.type === 'Groups::Factory') {
@@ -46,7 +45,7 @@ var buildManholeTootipString = function buildManholeTootipString(point) {
46
45
  // @ts-ignore
47
46
  // iconSize: [width, height],
48
47
  // IconAnchor: [(-right)(+left), (-down)(+up)]
49
- var createBubblePoint = function createBubblePoint(markerLocation, point, map, hovered, layerGroup) {
48
+ var createBubblePoint = exports.createBubblePoint = function createBubblePoint(markerLocation, point, map, hovered, layerGroup) {
50
49
  var subtitle = point.group.type === 'Groups::Factory' ? point.group.sector_name : '';
51
50
  var pointCustomIcon = _leaflet.default.marker(markerLocation, {
52
51
  icon: (0, _PointIcon.getPointIconByType)(point.group.type, point.name, subtitle, false, false),
@@ -80,8 +79,7 @@ var createBubblePoint = function createBubblePoint(markerLocation, point, map, h
80
79
  if (hovered) _pointCustomIcon['kando_object'] = 'IconNumberHovered';
81
80
  }
82
81
  };
83
- exports.createBubblePoint = createBubblePoint;
84
- var createManholePoint = function createManholePoint(markerLocation, point, map, hovered, layerGroup) {
82
+ var createManholePoint = exports.createManholePoint = function createManholePoint(markerLocation, point, map, hovered, layerGroup) {
85
83
  var pointIcon = new _leaflet.default.Icon({
86
84
  iconUrl: _whitePoint.default,
87
85
  iconSize: [9, 9],
@@ -98,8 +96,7 @@ var createManholePoint = function createManholePoint(markerLocation, point, map,
98
96
  if (hovered) manholeIcon['kando_object'] = 'PointHovered';
99
97
  layerGroup.addLayer(manholeIcon);
100
98
  };
101
- exports.createManholePoint = createManholePoint;
102
- var matchIconToPoint = function matchIconToPoint(point, event) {
99
+ var matchIconToPoint = exports.matchIconToPoint = function matchIconToPoint(point, event) {
103
100
  switch (point.group.type) {
104
101
  case 'Groups::Factory':
105
102
  if (combinedFactoryIcon.length === 2) {
@@ -152,8 +149,7 @@ var matchIconToPoint = function matchIconToPoint(point, event) {
152
149
  return null;
153
150
  }
154
151
  };
155
- exports.matchIconToPoint = matchIconToPoint;
156
- var standardBackground = function standardBackground() {
152
+ var standardBackground = exports.standardBackground = function standardBackground() {
157
153
  var secondary = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
158
154
  var third = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
159
155
  return _leaflet.default.icon({
@@ -163,8 +159,7 @@ var standardBackground = function standardBackground() {
163
159
  popupAnchor: [0, -30]
164
160
  });
165
161
  };
166
- exports.standardBackground = standardBackground;
167
- var combinedFactoryIcon = [_leaflet.default.icon({
162
+ var combinedFactoryIcon = exports.combinedFactoryIcon = [_leaflet.default.icon({
168
163
  iconUrl: _yellowCircle.default,
169
164
  iconSize: [0, 0],
170
165
  iconAnchor: [10.7, 33.7],
@@ -175,8 +170,7 @@ var combinedFactoryIcon = [_leaflet.default.icon({
175
170
  iconAnchor: [5, 30],
176
171
  popupAnchor: [0, -30]
177
172
  })];
178
- exports.combinedFactoryIcon = combinedFactoryIcon;
179
- var combinedPumpStationIcon = [_leaflet.default.icon({
173
+ var combinedPumpStationIcon = exports.combinedPumpStationIcon = [_leaflet.default.icon({
180
174
  iconUrl: _greenCircle.default,
181
175
  iconSize: [0, 0],
182
176
  iconAnchor: [10.7, 33.7],
@@ -187,15 +181,13 @@ var combinedPumpStationIcon = [_leaflet.default.icon({
187
181
  iconAnchor: [7, 32],
188
182
  popupAnchor: [0, -30]
189
183
  })];
190
- exports.combinedPumpStationIcon = combinedPumpStationIcon;
191
- var combinedCollectorsIcon = [_leaflet.default.icon({
184
+ var combinedCollectorsIcon = exports.combinedCollectorsIcon = [_leaflet.default.icon({
192
185
  iconUrl: _pinWater.default,
193
186
  iconSize: [0, 0],
194
187
  iconAnchor: [25, 50],
195
188
  popupAnchor: [0, -30]
196
189
  })];
197
- exports.combinedCollectorsIcon = combinedCollectorsIcon;
198
- var combinedWWTPIcon = [_leaflet.default.icon({
190
+ var combinedWWTPIcon = exports.combinedWWTPIcon = [_leaflet.default.icon({
199
191
  iconUrl: _brightBlueCircle.default,
200
192
  iconSize: [0, 0],
201
193
  iconAnchor: [10.7, 33.7],
@@ -206,8 +198,7 @@ var combinedWWTPIcon = [_leaflet.default.icon({
206
198
  iconAnchor: [8, 31],
207
199
  popupAnchor: [0, -30]
208
200
  })];
209
- exports.combinedWWTPIcon = combinedWWTPIcon;
210
- var selectedBackground = function selectedBackground() {
201
+ var selectedBackground = exports.selectedBackground = function selectedBackground() {
211
202
  return _leaflet.default.icon({
212
203
  iconUrl: _redPinRedShadow.default,
213
204
  iconSize: [0, 0],
@@ -215,8 +206,7 @@ var selectedBackground = function selectedBackground() {
215
206
  popupAnchor: [0, -30]
216
207
  });
217
208
  };
218
- exports.selectedBackground = selectedBackground;
219
- var belongsToSourceBackground = function belongsToSourceBackground() {
209
+ var belongsToSourceBackground = exports.belongsToSourceBackground = function belongsToSourceBackground() {
220
210
  return _leaflet.default.icon({
221
211
  iconUrl: _whitePinRedShadow.default,
222
212
  iconSize: [0, 0],
@@ -224,8 +214,7 @@ var belongsToSourceBackground = function belongsToSourceBackground() {
224
214
  popupAnchor: [0, -30]
225
215
  });
226
216
  };
227
- exports.belongsToSourceBackground = belongsToSourceBackground;
228
- var markerBelongsToSelectedSource = function markerBelongsToSelectedSource(event, point) {
217
+ var markerBelongsToSelectedSource = exports.markerBelongsToSelectedSource = function markerBelongsToSelectedSource(event, point) {
229
218
  var source;
230
219
  if (event !== null && event !== undefined) {
231
220
  source = event.sources.filter(function (source) {
@@ -234,15 +223,13 @@ var markerBelongsToSelectedSource = function markerBelongsToSelectedSource(event
234
223
  }
235
224
  return event !== null && source && event.selected_source === source.point_id;
236
225
  };
237
- exports.markerBelongsToSelectedSource = markerBelongsToSelectedSource;
238
- var markerBelongsToSource = function markerBelongsToSource(event, point) {
226
+ var markerBelongsToSource = exports.markerBelongsToSource = function markerBelongsToSource(event, point) {
239
227
  if (event === undefined) return;
240
228
  return event !== null && event.sources.filter(function (source) {
241
229
  return source.point_id === point.id;
242
230
  })[0];
243
231
  };
244
- exports.markerBelongsToSource = markerBelongsToSource;
245
- var createSamplingIconPoint = function createSamplingIconPoint(markerLocation, secondaryIcon, map, point, event, hovered, layerGroup) {
232
+ var createSamplingIconPoint = exports.createSamplingIconPoint = function createSamplingIconPoint(markerLocation, secondaryIcon, map, point, event, hovered, layerGroup) {
246
233
  // iconSize: [width, height],
247
234
  // Icon Anchor: [(-right)(+left), (-down)(+up)]
248
235
  var samplingIcon = [_leaflet.default.icon({
@@ -281,8 +268,7 @@ var createSamplingIconPoint = function createSamplingIconPoint(markerLocation, s
281
268
  layerGroup.addLayer(pointCustomIcon);
282
269
  });
283
270
  };
284
- exports.createSamplingIconPoint = createSamplingIconPoint;
285
- var createObservationIconPoint = function createObservationIconPoint(markerLocation, secondaryIcon, map, point, event, hovered, layerGroup) {
271
+ var createObservationIconPoint = exports.createObservationIconPoint = function createObservationIconPoint(markerLocation, secondaryIcon, map, point, event, hovered, layerGroup) {
286
272
  // iconSize: [width, height],
287
273
  // Icon Anchor: [(-right)(+left), (-down)(+up)]
288
274
  var observationIcon = [_leaflet.default.icon({
@@ -319,8 +305,7 @@ var createObservationIconPoint = function createObservationIconPoint(markerLocat
319
305
  layerGroup.addLayer(pointCustomIcon);
320
306
  });
321
307
  };
322
- exports.createObservationIconPoint = createObservationIconPoint;
323
- var createSamplingIcons = function createSamplingIcons(markerLocation, event, point, map, hovered, layerGroup) {
308
+ var createSamplingIcons = exports.createSamplingIcons = function createSamplingIcons(markerLocation, event, point, map, hovered, layerGroup) {
324
309
  var sampledPointIds = event.samplings.map(function (s) {
325
310
  return s.point_id;
326
311
  });
@@ -328,19 +313,17 @@ var createSamplingIcons = function createSamplingIcons(markerLocation, event, po
328
313
  createSamplingIconPoint(markerLocation, matchIconToPoint(point, event) !== null, map, point, event, hovered, layerGroup);
329
314
  }
330
315
  };
331
- exports.createSamplingIcons = createSamplingIcons;
332
- var popupContent = function popupContent(obs, point) {
316
+ var popupContent = exports.popupContent = function popupContent(obs, point) {
333
317
  if (obs === null) {
334
318
  return "\n <div class=\"event-popup\">\n <div class=\"popup-graph-icon popup-graph-icon-".concat(point.id, "\">\n <img src=\"").concat(_lineChart.default, "\"/>\n </div>\n <div class=\"popup-content\">\n <h5 class=\"popup-content__site-name\"><b>").concat(point.group.name, "</b></h5>\n <hr/>\n \n <div id=\"sector\"></div>\n </div>\n </div>\n ");
335
319
  } else {
336
320
  return "\n <div class=\"event-popup\">\n <div class=\"popup-graph-icon popup-graph-icon-".concat(obs.id, "\">\n <img src=\"").concat(_lineChart.default, "\"/>\n </div>\n <div class=\"popup-content\">\n <h5 class=\"popup-content__site-name\"><b>").concat(point.group.name, "</b></h5>\n <div class=\"popup-content__severity\">\n <p class=\"popup-content__severity-p\">").concat(_i18n.default.t("events_overview.severity"), "</p>\n <span class=\"").concat('popup-content__severity--' + obs.severity, "\">\n <b class=\"popup-content__severity-b\">\n ").concat(_i18n.default.t("events_overview.severities.".concat(obs.severity)), "\n </b>\n </span>\n </div>\n \n <hr class=\"popup-content__hr\" />\n\n <div class=\"popup-content__discharge-time\">\n <div>\n <p class=\"popup-content__severity-p\">").concat(_i18n.default.t("events_overview.first_seen"), ":</p>\n <span><b id=\"first-seen-popup\"></b></span>\n </div>\n <div>\n <p class=\"popup-content__severity-p\">").concat(_i18n.default.t("events_overview.last_seen"), ":</p>\n <span><b id=\"last-seen-popup\"></b></span>\n </div> \n </div>\n </div>\n </div>\n ");
337
321
  }
338
322
  };
339
- exports.popupContent = popupContent;
340
323
  var setIcon = function setIcon(element, clicked, point) {
341
324
  element.setIcon((0, _PointIcon.getPointIconByType)(point.group.type, point.name, point.group.sector_name, clicked, false));
342
325
  };
343
- var handleMarkerClick = function handleMarkerClick(map, point, pointCustomIcon) {
326
+ var handleMarkerClick = exports.handleMarkerClick = function handleMarkerClick(map, point, pointCustomIcon) {
344
327
  map.on('zoomstart', function () {
345
328
  map.closePopup();
346
329
  });
@@ -351,8 +334,7 @@ var handleMarkerClick = function handleMarkerClick(map, point, pointCustomIcon)
351
334
  setIcon(pointCustomIcon, true, point);
352
335
  });
353
336
  };
354
- exports.handleMarkerClick = handleMarkerClick;
355
- var bindPopupToMarker = function bindPopupToMarker(point, layerGroup) {
337
+ var bindPopupToMarker = exports.bindPopupToMarker = function bindPopupToMarker(point, layerGroup) {
356
338
  var content = "\n <div class='main-content'>\n <div class='main-content__header'>\n <div class=\"main-content__header__titles\">\n <div class='main-content__header__titles__title'>".concat(point.name, "</div>\n <div class='main-content__header__titles__subtitle'>").concat(point.group.sector_name, "</div>\n </div>\n </div>\n \n <div class='main-content__body'>\n <div class='main-content__body__item'>\n <div class='main-content__body__item__icon'>\n <img src='").concat(_water_reuse.default, "' />\n </div>\n <div class='main-content__body__item__titles'>\n <div class='main-content__body__item__titles__title'>").concat(point.group.water_consumption_per_day, " ").concat(_i18n.default.t('million_gallons_day'), "</div>\n <div class='main-content__body__item__titles__subtitle'>").concat(_i18n.default.t('water_discharge'), "</div>\n </div>\n </div>\n </div>\n </div>\n ");
357
339
  layerGroup.bindPopup(content, {
358
340
  className: 'point-marker-popup',
@@ -361,14 +343,12 @@ var bindPopupToMarker = function bindPopupToMarker(point, layerGroup) {
361
343
  closeButton: false
362
344
  });
363
345
  };
364
- exports.bindPopupToMarker = bindPopupToMarker;
365
- var removeLayerGroup = function removeLayerGroup(map, layerGroup) {
346
+ var removeLayerGroup = exports.removeLayerGroup = function removeLayerGroup(map, layerGroup) {
366
347
  if (map.hasLayer(layerGroup)) {
367
348
  map.removeLayer(layerGroup);
368
349
  }
369
350
  };
370
- exports.removeLayerGroup = removeLayerGroup;
371
- var addLayerGroup = function addLayerGroup(map, layerGroup) {
351
+ var addLayerGroup = exports.addLayerGroup = function addLayerGroup(map, layerGroup) {
372
352
  if (!map.hasLayer(layerGroup)) {
373
353
  map.addLayer(layerGroup);
374
354
  } else {
@@ -376,5 +356,4 @@ var addLayerGroup = function addLayerGroup(map, layerGroup) {
376
356
  addLayerGroup(map, layerGroup);
377
357
  }
378
358
  };
379
- exports.addLayerGroup = addLayerGroup;
380
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2kxOG4iLCJfYmx1ZUNpcmNsZSIsIl9zYW1wbGluZ0ljb24iLCJfcGlua0NpcmNsZSIsIl9vYnNlcnZhdGlvbkljb24iLCJfcmVkUGluUmVkU2hhZG93IiwiX3doaXRlUGluUmVkU2hhZG93IiwiX3doaXRlUGluQmxhY2tTaGFkb3ciLCJfeWVsbG93Q2lyY2xlIiwiX2ZhY3RvcnlJY29uIiwiX2dyZWVuQ2lyY2xlIiwiX3B1bXBTdGF0aW9uSWNvbiIsIl9waW5XYXRlciIsIl9icmlnaHRCbHVlQ2lyY2xlIiwiX1dXVFBJY29uIiwiX3dhdGVyTm9CYWNrZ3JvdW5kIiwiX3doaXRlUG9pbnQiLCJfTWFwVXRpbHMiLCJfUG9pbnRJY29uIiwiX3dhdGVyX3JldXNlIiwiaXNDb2xsZWN0b3JGb2N1c2VkIiwicG9pbnQiLCJldmVudCIsIl9ldmVudCRvYnNlcnZhdGlvbnMiLCJvYnNlcnZhdGlvbnMiLCJsZW5ndGgiLCJpZCIsInBvaW50X2lkIiwiZXhwb3J0cyIsImJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyIsInN0cmluZyIsImNvbmNhdCIsImdyb3VwIiwibmFtZSIsInR5cGUiLCJzZWN0b3JfbmFtZSIsIndhdGVyX2NvbnN1bXB0aW9uX3Blcl9kYXkiLCJjcmVhdGVCdWJibGVQb2ludCIsIm1hcmtlckxvY2F0aW9uIiwibWFwIiwiaG92ZXJlZCIsImxheWVyR3JvdXAiLCJzdWJ0aXRsZSIsInBvaW50Q3VzdG9tSWNvbiIsIkwiLCJtYXJrZXIiLCJpY29uIiwiZ2V0UG9pbnRJY29uQnlUeXBlIiwicmlzZU9uSG92ZXIiLCJhZGRMYXllciIsImJpbmRQb3B1cFRvTWFya2VyIiwiaGFuZGxlTWFya2VyQ2xpY2siLCJyZWxhdGVkRXZlbnRzQW1vdW50IiwiZGl2SWNvbiIsImNsYXNzTmFtZSIsImh0bWwiLCJpY29uQW5jaG9yIiwiZXZlbnRzQ291bnRJY29uIiwiX3pvb20iLCJvcGFjaXR5IiwiY3JlYXRlTWFuaG9sZVBvaW50IiwicG9pbnRJY29uIiwiSWNvbiIsImljb25VcmwiLCJ3aGl0ZVBvaW50IiwiaWNvblNpemUiLCJtYW5ob2xlSWNvbiIsIk1hcmtlciIsImJpbmRUb29sdGlwIiwibWF0Y2hJY29uVG9Qb2ludCIsImNvbWJpbmVkRmFjdG9yeUljb24iLCJtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZSIsInVuc2hpZnQiLCJzZWxlY3RlZEJhY2tncm91bmQiLCJtYXJrZXJCZWxvbmdzVG9Tb3VyY2UiLCJiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kIiwic3RhbmRhcmRCYWNrZ3JvdW5kIiwiY29tYmluZWRQdW1wU3RhdGlvbkljb24iLCJjb21iaW5lZFdXVFBJY29uIiwicmVkUGluUmVkU2hhZG93Iiwid2F0ZXJJY29uTm9CYWNrZ3JvdW5kIiwicG9wdXBBbmNob3IiLCJjb21iaW5lZENvbGxlY3RvcnNJY29uIiwic2Vjb25kYXJ5IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwidGhpcmQiLCJ3aGl0ZVBpbkJsYWNrU2hhZG93IiwieWVsbG93Q2lyY2xlVVJMIiwicGxhbnRJY29uVVJMIiwiZ3JlZW5DaXJjbGVVUkwiLCJwdW1wU3RhdGlvbkljb25VUkwiLCJjb2xsZWN0b3JJY29uIiwiYnJpZ2h0Qmx1ZUNpcmNsZVVSTCIsIldXVFBJY29uVVJMIiwid2hpdGVQaW5SZWRTaGFkb3ciLCJzb3VyY2UiLCJzb3VyY2VzIiwiZmlsdGVyIiwic2VsZWN0ZWRfc291cmNlIiwiY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQiLCJzZWNvbmRhcnlJY29uIiwic2FtcGxpbmdJY29uIiwiYmx1ZUNpcmNsZVVSTCIsInNhbXBsaW5nSWNvblVSTCIsInRoaXJkSWNvbiIsImZvckVhY2giLCJpbmRleCIsImNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50Iiwib2JzZXJ2YXRpb25JY29uIiwicGlua0NpcmNsZVVSTCIsIm9ic2VydmF0aW9uSWNvblVSTCIsImNyZWF0ZVNhbXBsaW5nSWNvbnMiLCJzYW1wbGVkUG9pbnRJZHMiLCJzYW1wbGluZ3MiLCJzIiwiaW5jbHVkZXMiLCJwb3B1cENvbnRlbnQiLCJvYnMiLCJHcmFwaEljb24iLCJpMThuIiwidCIsInNldmVyaXR5Iiwic2V0SWNvbiIsImVsZW1lbnQiLCJjbGlja2VkIiwib24iLCJjbG9zZVBvcHVwIiwiY29udGVudCIsIndhdGVyUmV1c2VJY29uIiwiYmluZFBvcHVwIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImNsb3NlQnV0dG9uIiwicmVtb3ZlTGF5ZXJHcm91cCIsImhhc0xheWVyIiwicmVtb3ZlTGF5ZXIiLCJhZGRMYXllckdyb3VwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL3BvaW50cy9Qb2ludFV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHcmFwaEljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2xpbmUtY2hhcnQuc3ZnJztcbmltcG9ydCBMLCB7IExhdExuZ1R1cGxlIH0gZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgaTE4biBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgYmx1ZUNpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvYmx1ZS1jaXJjbGUuc3ZnJztcbmltcG9ydCBzYW1wbGluZ0ljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3NhbXBsaW5nLWljb24uc3ZnJztcbmltcG9ydCBwaW5rQ2lyY2xlVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9waW5rLWNpcmNsZS5zdmcnO1xuaW1wb3J0IG9ic2VydmF0aW9uSWNvblVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvb2JzZXJ2YXRpb24taWNvbi5zdmcnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHJlZFBpblJlZFNoYWRvdyBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcmVkLXBpbi1yZWQtc2hhZG93LnBuZyc7XG5pbXBvcnQgd2hpdGVQaW5SZWRTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1yZWQtc2hhZG93LnBuZyc7XG5pbXBvcnQgd2hpdGVQaW5CbGFja1NoYWRvdyBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvd2hpdGUtcGluLWJsYWNrLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHllbGxvd0NpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMveWVsbG93LWNpcmNsZS5zdmcnO1xuaW1wb3J0IHBsYW50SWNvblVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvZmFjdG9yeS1pY29uLnN2Zyc7XG5pbXBvcnQgZ3JlZW5DaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2dyZWVuLWNpcmNsZS5zdmcnO1xuaW1wb3J0IHB1bXBTdGF0aW9uSWNvblVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcHVtcC1zdGF0aW9uLWljb24uc3ZnJztcbmltcG9ydCBjb2xsZWN0b3JJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9tYXAvcGluLXdhdGVyLnN2Zyc7XG5pbXBvcnQgYnJpZ2h0Qmx1ZUNpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvYnJpZ2h0LWJsdWUtY2lyY2xlLnN2Zyc7XG5pbXBvcnQgV1dUUEljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL1dXVFAtaWNvbi5zdmcnO1xuaW1wb3J0IHdhdGVySWNvbk5vQmFja2dyb3VuZCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvd2F0ZXItbm8tYmFja2dyb3VuZC5zdmcnO1xuaW1wb3J0IHdoaXRlUG9pbnQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3doaXRlLXBvaW50LnBuZyc7XG5pbXBvcnQgeyBldmVudHNDb3VudEljb24gfSBmcm9tICcuLi9NYXBVdGlscyc7XG5pbXBvcnQgeyBnZXRQb2ludEljb25CeVR5cGUgfSBmcm9tICcuL1BvaW50SWNvbic7XG5pbXBvcnQgd2F0ZXJSZXVzZUljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ljb25zL3dhdGVyX3JldXNlLnN2Zyc7XG5cbmV4cG9ydCBjb25zdCBpc0NvbGxlY3RvckZvY3VzZWQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGV2ZW50Py5vYnNlcnZhdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJlxuICAgIHBvaW50LmlkID09PSBldmVudC5vYnNlcnZhdGlvbnNbMF0ucG9pbnRfaWRcbiAgKTtcbn07XG5cbmNvbnN0IGJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyA9IChwb2ludDogSVBvaW50KSA9PiB7XG4gIGxldCBzdHJpbmcgPSBgJHtwb2ludC5ncm91cC5uYW1lfSBgO1xuXG4gIGlmIChwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpGYWN0b3J5Jykge1xuICAgIHN0cmluZyArPSBgPGJyLz5TZWN0b3ItVEJEOiAke3BvaW50Lmdyb3VwLnNlY3Rvcl9uYW1lfWA7XG4gICAgc3RyaW5nICs9IGA8YnIvPldhdGVyIENvbnN1bXB0aW9uLVRCRDogJHtwb2ludC5ncm91cC53YXRlcl9jb25zdW1wdGlvbl9wZXJfZGF5fWA7XG4gIH0gZWxzZSB7XG4gICAgc3RyaW5nID0gYCR7cG9pbnQubmFtZX1gO1xuICB9XG5cbiAgcmV0dXJuIHN0cmluZztcbn07XG5cbi8vIEB0cy1pZ25vcmVcbi8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4vLyBJY29uQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG5leHBvcnQgY29uc3QgY3JlYXRlQnViYmxlUG9pbnQgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuICBob3ZlcmVkPyxcbiAgbGF5ZXJHcm91cD8sXG4pID0+IHtcbiAgY29uc3Qgc3VidGl0bGUgPVxuICAgIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6OkZhY3RvcnknID8gcG9pbnQuZ3JvdXAuc2VjdG9yX25hbWUgOiAnJztcbiAgbGV0IHBvaW50Q3VzdG9tSWNvbjogTC5NYXJrZXIgPSBMLm1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IGdldFBvaW50SWNvbkJ5VHlwZShcbiAgICAgIHBvaW50Lmdyb3VwLnR5cGUsXG4gICAgICBwb2ludC5uYW1lLFxuICAgICAgc3VidGl0bGUsXG4gICAgICBmYWxzZSxcbiAgICAgIGZhbHNlLFxuICAgICksXG4gICAgcmlzZU9uSG92ZXI6IGZhbHNlLFxuICB9KTtcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBwb2ludEN1c3RvbUljb24uYmluZFRvb2x0aXAoYnVpbGRNYW5ob2xlVG9vdGlwU3RyaW5nKHBvaW50KSk7XG4gIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludCc7XG4gIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50SG92ZXJlZCc7XG5cbiAgbGF5ZXJHcm91cC5hZGRMYXllcihwb2ludEN1c3RvbUljb24pO1xuICBpZiAocG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6RmFjdG9yeScpIHtcbiAgICBiaW5kUG9wdXBUb01hcmtlcihwb2ludCwgcG9pbnRDdXN0b21JY29uKTtcblxuICAgIC8vVGhlIGZvbGxvd2luZyBpcyBiZWluZyBjYWxsZWQgZm9yIGV2ZXJ5IHBvaW50LCB3ZSBzaG91bGQgZG8gdGhhdCBvbiB0aGUgbGF5ZXJHcm91cCBsZXZlbCB3aGljaCB3aWxsIGhhcHBlbiBvbmNlXG4gICAgLy9JdCBpcyBub3RpY2VkIHdoZW4gdGhlcmUgYXJlIHRob3VzYW5kcyBvZiBwb2ludHNcbiAgICBoYW5kbGVNYXJrZXJDbGljayhtYXAsIHBvaW50LCBwb2ludEN1c3RvbUljb24pO1xuICB9XG5cbiAgaWYgKHBvaW50LnJlbGF0ZWRFdmVudHNBbW91bnQpIHtcbiAgICBsZXQgcG9pbnRDdXN0b21JY29uID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IEwuZGl2SWNvbih7XG4gICAgICAgIGNsYXNzTmFtZTogYFxuICAgICAgICAgICR7XG4gICAgICAgICAgICBwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50ID49IDEwMFxuICAgICAgICAgICAgICA/ICdjaXJjbGUtZXZlbnRzLWFtb3VudCBjaXJjbGUtZXZlbnRzLWFtb3VudC0tdHJpZGlnaXQnXG4gICAgICAgICAgICAgIDogJ2NpcmNsZS1ldmVudHMtYW1vdW50J1xuICAgICAgICAgIH0gXG4gICAgICAgICAgJHtwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50ID4gMiA/ICdhbGVydC1jb2xvcicgOiAnJ31cbiAgICAgICAgICAgIGAsXG4gICAgICAgIGh0bWw6IGA8cD4ke3BvaW50LnJlbGF0ZWRFdmVudHNBbW91bnR9PC9wPmAsXG4gICAgICAgIGljb25BbmNob3I6IGV2ZW50c0NvdW50SWNvbihtYXAuX3pvb20pLmljb25BbmNob3IsXG4gICAgICB9KSxcbiAgICAgIHJpc2VPbkhvdmVyOiBmYWxzZSxcbiAgICAgIG9wYWNpdHk6IGhvdmVyZWQgPyAxIDogMCxcbiAgICB9KTtcblxuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ0ljb25OdW1iZXInO1xuICAgIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ0ljb25OdW1iZXJIb3ZlcmVkJztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1hbmhvbGVQb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBwb2ludDogSVBvaW50LFxuICBtYXAsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICBsZXQgcG9pbnRJY29uID0gbmV3IEwuSWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQb2ludCxcbiAgICBpY29uU2l6ZTogWzksIDldLFxuICAgIGljb25BbmNob3I6IFs0LjUsIDQuNV0sXG4gIH0pO1xuICBsZXQgbWFuaG9sZUljb246IGFueSA9IG5ldyBMLk1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IHBvaW50SWNvbixcbiAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgfSk7XG4gIG1hbmhvbGVJY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyhwb2ludCkpO1xuICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50JztcbiAgbWFuaG9sZUljb25bJ2thbmRvX3BvaW50X3R5cGUnXSA9ICdNYW5ob2xlJztcbiAgaWYgKGhvdmVyZWQpIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludEhvdmVyZWQnO1xuICBsYXllckdyb3VwLmFkZExheWVyKG1hbmhvbGVJY29uKTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXRjaEljb25Ub1BvaW50ID0gKHBvaW50OiBJUG9pbnQsIGV2ZW50OiBJRXZlbnQpID0+IHtcbiAgc3dpdGNoIChwb2ludC5ncm91cC50eXBlKSB7XG4gICAgY2FzZSAnR3JvdXBzOjpGYWN0b3J5JzpcbiAgICAgIGlmIChjb21iaW5lZEZhY3RvcnlJY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZEZhY3RvcnlJY29uO1xuICAgIGNhc2UgJ0dyb3Vwczo6UHVtcFN0YXRpb24nOlxuICAgICAgaWYgKGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbjtcbiAgICBjYXNlICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc6XG4gICAgICBpZiAoY29tYmluZWRXV1RQSWNvbi5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRXV1RQSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tYmluZWRXV1RQSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZWRXV1RQSWNvbjtcblxuICAgIGNhc2UgJ0dyb3Vwczo6Q29sbGVjdG9ycyc6XG4gICAgICBpZiAoaXNDb2xsZWN0b3JGb2N1c2VkKHBvaW50LCBldmVudCkpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgaWNvblVybDogcmVkUGluUmVkU2hhZG93LFxuICAgICAgICAgICAgaWNvblNpemU6IFswLCAwXSxcbiAgICAgICAgICAgIGljb25BbmNob3I6IFszMCwgNTJdLFxuICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgTC5pY29uKHtcbiAgICAgICAgICAgIGljb25Vcmw6IHdhdGVySWNvbk5vQmFja2dyb3VuZCxcbiAgICAgICAgICAgIGljb25TaXplOiBbMCwgMF0sXG5cbiAgICAgICAgICAgIGljb25BbmNob3I6IFsyMiwgNDRdLFxuICAgICAgICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZWRDb2xsZWN0b3JzSWNvbjtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHN0YW5kYXJkQmFja2dyb3VuZCA9IChcbiAgc2Vjb25kYXJ5OiBib29sZWFuID0gZmFsc2UsXG4gIHRoaXJkOiBib29sZWFuID0gZmFsc2UsXG4pID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQaW5CbGFja1NoYWRvdyxcbiAgICBpY29uU2l6ZTogc2Vjb25kYXJ5ID8gWzAsIDBdIDogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IHNlY29uZGFyeSAmJiB0aGlyZCA/IFstMiwgMTldIDogc2Vjb25kYXJ5ID8gWy0yLCA0NF0gOiBbMjAsIDQyXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkRmFjdG9yeUljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogeWVsbG93Q2lyY2xlVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzEwLjcsIDMzLjddLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogcGxhbnRJY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzUsIDMwXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkUHVtcFN0YXRpb25JY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IGdyZWVuQ2lyY2xlVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzEwLjcsIDMzLjddLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogcHVtcFN0YXRpb25JY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzcsIDMyXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkQ29sbGVjdG9yc0ljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogY29sbGVjdG9ySWNvbixcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuXG4gICAgaWNvbkFuY2hvcjogWzI1LCA1MF0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBjb21iaW5lZFdXVFBJY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IGJyaWdodEJsdWVDaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBXV1RQSWNvblVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFs4LCAzMV0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBzZWxlY3RlZEJhY2tncm91bmQgPSAoKSA9PiB7XG4gIHJldHVybiBMLmljb24oe1xuICAgIGljb25Vcmw6IHJlZFBpblJlZFNoYWRvdyxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFszMiwgNTRdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCA9ICgpID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQaW5SZWRTaGFkb3csXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMzIsIDU0XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlID0gKGV2ZW50OiBJRXZlbnQsIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgbGV0IHNvdXJjZTtcblxuICBpZiAoZXZlbnQgIT09IG51bGwgJiYgZXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgIHNvdXJjZSA9IGV2ZW50LnNvdXJjZXMuZmlsdGVyKChzb3VyY2UpID0+IHNvdXJjZS5wb2ludF9pZCA9PT0gcG9pbnQuaWQpWzBdO1xuICB9XG5cbiAgcmV0dXJuIGV2ZW50ICE9PSBudWxsICYmIHNvdXJjZSAmJiBldmVudC5zZWxlY3RlZF9zb3VyY2UgPT09IHNvdXJjZS5wb2ludF9pZDtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXJrZXJCZWxvbmdzVG9Tb3VyY2UgPSAoZXZlbnQ6IElFdmVudCwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBpZiAoZXZlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICByZXR1cm4gKFxuICAgIGV2ZW50ICE9PSBudWxsICYmXG4gICAgZXZlbnQuc291cmNlcy5maWx0ZXIoKHNvdXJjZSkgPT4gc291cmNlLnBvaW50X2lkID09PSBwb2ludC5pZClbMF1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTYW1wbGluZ0ljb25Qb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBzZWNvbmRhcnlJY29uOiBib29sZWFuLFxuICBtYXAsXG4gIHBvaW50OiBJUG9pbnQsXG4gIGV2ZW50OiBJRXZlbnQsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICAvLyBpY29uU2l6ZTogW3dpZHRoLCBoZWlnaHRdLFxuICAvLyBJY29uIEFuY2hvcjogWygtcmlnaHQpKCtsZWZ0KSwgKC1kb3duKSgrdXApXVxuICBsZXQgc2FtcGxpbmdJY29uID0gW1xuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBibHVlQ2lyY2xlVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy03LCAxNV0gOiBbMTAuNywgMzMuN10sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHNhbXBsaW5nSWNvblVSTCxcbiAgICAgIGljb25TaXplOiBzZWNvbmRhcnlJY29uID8gWzAsIDBdIDogWzAsIDBdLFxuICAgICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5SWNvbiA/IFstOCwgMTNdIDogWzUsIDMwXSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgXTtcblxuICBsZXQgdGhpcmRJY29uID0gZmFsc2U7XG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlyZEljb24gPSB0cnVlO1xuICAgIHNhbXBsaW5nSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZChzZWNvbmRhcnlJY29uLCB0aGlyZEljb24pKTtcbiAgfVxuXG4gIHNhbXBsaW5nSWNvbi5mb3JFYWNoKChpY29uLCBpbmRleCkgPT4ge1xuICAgIGxldCBwb2ludEN1c3RvbUljb246IGFueSA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBpY29uLFxuICAgICAgcmlzZU9uSG92ZXI6IGZhbHNlLFxuICAgIH0pO1xuICAgIHBvaW50Q3VzdG9tSWNvbi5iaW5kVG9vbHRpcChidWlsZE1hbmhvbGVUb290aXBTdHJpbmcocG9pbnQpKTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2luZGV4X29iamVjdCddID0gaW5kZXg7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19mZXdfbGF5ZXJfaWNvbiddID0gdHJ1ZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3NlY29uZGFyeSddID0gdGhpcmRJY29uID8gZmFsc2UgOiBzZWNvbmRhcnlJY29uO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fdGhpcmQnXSA9IHRoaXJkSWNvbjtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdTYW1wbGluZyc7XG4gICAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnU2FtcGxpbmdIb3ZlcmVkJztcbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gIG1hcCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgZXZlbnQ6IElFdmVudCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBvYnNlcnZhdGlvbkljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHBpbmtDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDQwXSA6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogb2JzZXJ2YXRpb25JY29uVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAzOF0gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoc2Vjb25kYXJ5SWNvbikpO1xuICB9XG5cbiAgb2JzZXJ2YXRpb25JY29uLmZvckVhY2goKGljb24sIGluZGV4KSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyhwb2ludCkpO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9faW5kZXhfb2JqZWN0J10gPSBpbmRleDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2Zld19sYXllcl9pY29uJ10gPSB0cnVlO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fc2Vjb25kYXJ5J10gPSBzZWNvbmRhcnlJY29uO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fdGhpcmQnXSA9IGZhbHNlO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ09ic2VydmF0aW9uJztcbiAgICBpZiAoaG92ZXJlZCkgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdPYnNlcnZhdGlvbkhvdmVyZWQnO1xuICAgIGxheWVyR3JvdXAuYWRkTGF5ZXIocG9pbnRDdXN0b21JY29uKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlU2FtcGxpbmdJY29ucyA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBldmVudDogSUV2ZW50LFxuICBwb2ludDogSVBvaW50LFxuICBtYXAsXG4gIGhvdmVyZWQsXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIGxldCBzYW1wbGVkUG9pbnRJZHMgPSBldmVudC5zYW1wbGluZ3MubWFwKChzKSA9PiBzLnBvaW50X2lkKTtcbiAgaWYgKFxuICAgIGV2ZW50ICE9PSBudWxsICYmXG4gICAgZXZlbnQuc2FtcGxpbmdzLmxlbmd0aCAhPT0gMCAmJlxuICAgIHNhbXBsZWRQb2ludElkcy5pbmNsdWRlcyhwb2ludC5pZClcbiAgKSB7XG4gICAgY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQoXG4gICAgICBtYXJrZXJMb2NhdGlvbixcbiAgICAgIG1hdGNoSWNvblRvUG9pbnQocG9pbnQsIGV2ZW50KSAhPT0gbnVsbCxcbiAgICAgIG1hcCxcbiAgICAgIHBvaW50LFxuICAgICAgZXZlbnQsXG4gICAgICBob3ZlcmVkLFxuICAgICAgbGF5ZXJHcm91cCxcbiAgICApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcG9wdXBDb250ZW50ID0gKG9iczogYW55LCBwb2ludDogSVBvaW50KSA9PiB7XG4gIGlmIChvYnMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXBvcHVwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWdyYXBoLWljb24gcG9wdXAtZ3JhcGgtaWNvbi0ke3BvaW50LmlkfVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIiR7R3JhcGhJY29ufVwiLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zaXRlLW5hbWVcIj48Yj4ke3BvaW50Lmdyb3VwLm5hbWV9PC9iPjwvaDU+XG4gICAgICAgICAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwic2VjdG9yXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIGA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1wb3B1cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1ncmFwaC1pY29uIHBvcHVwLWdyYXBoLWljb24tJHtvYnMuaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiJHtHcmFwaEljb259XCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NpdGUtbmFtZVwiPjxiPiR7XG4gICAgICAgICAgICAgICAgICAgICAgcG9pbnQuZ3JvdXAubmFtZVxuICAgICAgICAgICAgICAgICAgICB9PC9iPjwvaDU+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1wXCI+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcuc2V2ZXJpdHlgLFxuICAgICAgICAgICAgICAgICAgICAgICAgKX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIiR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwb3B1cC1jb250ZW50X19zZXZlcml0eS0tJyArIG9icy5zZXZlcml0eVxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktYlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3LnNldmVyaXRpZXMuJHtvYnMuc2V2ZXJpdHl9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwicG9wdXAtY29udGVudF9faHJcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50X19kaXNjaGFyZ2UtdGltZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcuZmlyc3Rfc2VlbmAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX06PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxiIGlkPVwiZmlyc3Qtc2Vlbi1wb3B1cFwiPjwvYj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1wXCI+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3Lmxhc3Rfc2VlbmAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX06PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxiIGlkPVwibGFzdC1zZWVuLXBvcHVwXCI+PC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBgO1xuICB9XG59O1xuXG5sZXQgc2V0SWNvbiA9IChlbGVtZW50LCBjbGlja2VkLCBwb2ludCkgPT4ge1xuICBlbGVtZW50LnNldEljb24oXG4gICAgZ2V0UG9pbnRJY29uQnlUeXBlKFxuICAgICAgcG9pbnQuZ3JvdXAudHlwZSxcbiAgICAgIHBvaW50Lm5hbWUsXG4gICAgICBwb2ludC5ncm91cC5zZWN0b3JfbmFtZSxcbiAgICAgIGNsaWNrZWQsXG4gICAgICBmYWxzZSxcbiAgICApLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZU1hcmtlckNsaWNrID0gKG1hcCwgcG9pbnQsIHBvaW50Q3VzdG9tSWNvbikgPT4ge1xuICBtYXAub24oJ3pvb21zdGFydCcsIGZ1bmN0aW9uICgpIHtcbiAgICBtYXAuY2xvc2VQb3B1cCgpO1xuICB9KTtcblxuICBwb2ludEN1c3RvbUljb24ub24oJ3BvcHVwY2xvc2UnLCAoKSA9PiB7XG4gICAgc2V0SWNvbihwb2ludEN1c3RvbUljb24sIGZhbHNlLCBwb2ludCk7XG4gIH0pO1xuXG4gIHBvaW50Q3VzdG9tSWNvbi5vbigncG9wdXBvcGVuJywgKCkgPT4ge1xuICAgIHNldEljb24ocG9pbnRDdXN0b21JY29uLCB0cnVlLCBwb2ludCk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGJpbmRQb3B1cFRvTWFya2VyID0gKHBvaW50LCBsYXllckdyb3VwKSA9PiB7XG4gIGxldCBjb250ZW50ID0gYFxuICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudCc+XG4gICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9faGVhZGVyJz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRfX2hlYWRlcl9fdGl0bGVzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19oZWFkZXJfX3RpdGxlc19fdGl0bGUnPiR7XG4gICAgICAgICAgICAgICAgICBwb2ludC5uYW1lXG4gICAgICAgICAgICAgICAgfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9faGVhZGVyX190aXRsZXNfX3N1YnRpdGxlJz4ke1xuICAgICAgICAgICAgICAgICAgcG9pbnQuZ3JvdXAuc2VjdG9yX25hbWVcbiAgICAgICAgICAgICAgICB9PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keSc+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2JvZHlfX2l0ZW0nPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9faWNvbic+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPScke3dhdGVyUmV1c2VJY29ufScgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2JvZHlfX2l0ZW1fX3RpdGxlcyc+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2JvZHlfX2l0ZW1fX3RpdGxlc19fdGl0bGUnPiR7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50Lmdyb3VwLndhdGVyX2NvbnN1bXB0aW9uX3Blcl9kYXlcbiAgICAgICAgICAgICAgICAgIH0gJHtpMThuLnQoJ21pbGxpb25fZ2FsbG9uc19kYXknKX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzX19zdWJ0aXRsZSc+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICd3YXRlcl9kaXNjaGFyZ2UnLFxuICAgICAgICAgICAgICAgICAgKX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBgO1xuXG4gIGxheWVyR3JvdXAuYmluZFBvcHVwKGNvbnRlbnQsIHtcbiAgICBjbGFzc05hbWU6ICdwb2ludC1tYXJrZXItcG9wdXAnLFxuICAgIG1pbldpZHRoOiAnMjE0cHgnLFxuICAgIG1heFdpZHRoOiAnMjE0cHgnLFxuICAgIGNsb3NlQnV0dG9uOiBmYWxzZSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTGF5ZXJHcm91cCA9IChtYXAsIGxheWVyR3JvdXApID0+IHtcbiAgaWYgKG1hcC5oYXNMYXllcihsYXllckdyb3VwKSkge1xuICAgIG1hcC5yZW1vdmVMYXllcihsYXllckdyb3VwKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGFkZExheWVyR3JvdXAgPSAobWFwLCBsYXllckdyb3VwKSA9PiB7XG4gIGlmICghbWFwLmhhc0xheWVyKGxheWVyR3JvdXApKSB7XG4gICAgbWFwLmFkZExheWVyKGxheWVyR3JvdXApO1xuICB9IGVsc2Uge1xuICAgIHJlbW92ZUxheWVyR3JvdXAobWFwLCBsYXllckdyb3VwKTtcbiAgICBhZGRMYXllckdyb3VwKG1hcCwgbGF5ZXJHcm91cCk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQ0EsSUFBQUEsUUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQTJDLElBQUFFLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUFBLElBQUFHLGFBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUFBLElBQUFJLFdBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUFBLElBQUFLLGdCQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFPM0MsSUFBQU0sZ0JBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLGtCQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUSxvQkFBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQXlGLElBQUFTLGFBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUFB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
359
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVhZmxldCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2kxOG4iLCJfYmx1ZUNpcmNsZSIsIl9zYW1wbGluZ0ljb24iLCJfcGlua0NpcmNsZSIsIl9vYnNlcnZhdGlvbkljb24iLCJfcmVkUGluUmVkU2hhZG93IiwiX3doaXRlUGluUmVkU2hhZG93IiwiX3doaXRlUGluQmxhY2tTaGFkb3ciLCJfeWVsbG93Q2lyY2xlIiwiX2ZhY3RvcnlJY29uIiwiX2dyZWVuQ2lyY2xlIiwiX3B1bXBTdGF0aW9uSWNvbiIsIl9waW5XYXRlciIsIl9icmlnaHRCbHVlQ2lyY2xlIiwiX1dXVFBJY29uIiwiX3dhdGVyTm9CYWNrZ3JvdW5kIiwiX3doaXRlUG9pbnQiLCJfTWFwVXRpbHMiLCJfUG9pbnRJY29uIiwiX3dhdGVyX3JldXNlIiwiaXNDb2xsZWN0b3JGb2N1c2VkIiwiZXhwb3J0cyIsInBvaW50IiwiZXZlbnQiLCJfZXZlbnQkb2JzZXJ2YXRpb25zIiwib2JzZXJ2YXRpb25zIiwibGVuZ3RoIiwiaWQiLCJwb2ludF9pZCIsImJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyIsInN0cmluZyIsImNvbmNhdCIsImdyb3VwIiwibmFtZSIsInR5cGUiLCJzZWN0b3JfbmFtZSIsIndhdGVyX2NvbnN1bXB0aW9uX3Blcl9kYXkiLCJjcmVhdGVCdWJibGVQb2ludCIsIm1hcmtlckxvY2F0aW9uIiwibWFwIiwiaG92ZXJlZCIsImxheWVyR3JvdXAiLCJzdWJ0aXRsZSIsInBvaW50Q3VzdG9tSWNvbiIsIkwiLCJtYXJrZXIiLCJpY29uIiwiZ2V0UG9pbnRJY29uQnlUeXBlIiwicmlzZU9uSG92ZXIiLCJhZGRMYXllciIsImJpbmRQb3B1cFRvTWFya2VyIiwiaGFuZGxlTWFya2VyQ2xpY2siLCJyZWxhdGVkRXZlbnRzQW1vdW50IiwiZGl2SWNvbiIsImNsYXNzTmFtZSIsImh0bWwiLCJpY29uQW5jaG9yIiwiZXZlbnRzQ291bnRJY29uIiwiX3pvb20iLCJvcGFjaXR5IiwiY3JlYXRlTWFuaG9sZVBvaW50IiwicG9pbnRJY29uIiwiSWNvbiIsImljb25VcmwiLCJ3aGl0ZVBvaW50IiwiaWNvblNpemUiLCJtYW5ob2xlSWNvbiIsIk1hcmtlciIsImJpbmRUb29sdGlwIiwibWF0Y2hJY29uVG9Qb2ludCIsImNvbWJpbmVkRmFjdG9yeUljb24iLCJtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZSIsInVuc2hpZnQiLCJzZWxlY3RlZEJhY2tncm91bmQiLCJtYXJrZXJCZWxvbmdzVG9Tb3VyY2UiLCJiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kIiwic3RhbmRhcmRCYWNrZ3JvdW5kIiwiY29tYmluZWRQdW1wU3RhdGlvbkljb24iLCJjb21iaW5lZFdXVFBJY29uIiwicmVkUGluUmVkU2hhZG93Iiwid2F0ZXJJY29uTm9CYWNrZ3JvdW5kIiwicG9wdXBBbmNob3IiLCJjb21iaW5lZENvbGxlY3RvcnNJY29uIiwic2Vjb25kYXJ5IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwidGhpcmQiLCJ3aGl0ZVBpbkJsYWNrU2hhZG93IiwieWVsbG93Q2lyY2xlVVJMIiwicGxhbnRJY29uVVJMIiwiZ3JlZW5DaXJjbGVVUkwiLCJwdW1wU3RhdGlvbkljb25VUkwiLCJjb2xsZWN0b3JJY29uIiwiYnJpZ2h0Qmx1ZUNpcmNsZVVSTCIsIldXVFBJY29uVVJMIiwid2hpdGVQaW5SZWRTaGFkb3ciLCJzb3VyY2UiLCJzb3VyY2VzIiwiZmlsdGVyIiwic2VsZWN0ZWRfc291cmNlIiwiY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQiLCJzZWNvbmRhcnlJY29uIiwic2FtcGxpbmdJY29uIiwiYmx1ZUNpcmNsZVVSTCIsInNhbXBsaW5nSWNvblVSTCIsInRoaXJkSWNvbiIsImZvckVhY2giLCJpbmRleCIsImNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50Iiwib2JzZXJ2YXRpb25JY29uIiwicGlua0NpcmNsZVVSTCIsIm9ic2VydmF0aW9uSWNvblVSTCIsImNyZWF0ZVNhbXBsaW5nSWNvbnMiLCJzYW1wbGVkUG9pbnRJZHMiLCJzYW1wbGluZ3MiLCJzIiwiaW5jbHVkZXMiLCJwb3B1cENvbnRlbnQiLCJvYnMiLCJHcmFwaEljb24iLCJpMThuIiwidCIsInNldmVyaXR5Iiwic2V0SWNvbiIsImVsZW1lbnQiLCJjbGlja2VkIiwib24iLCJjbG9zZVBvcHVwIiwiY29udGVudCIsIndhdGVyUmV1c2VJY29uIiwiYmluZFBvcHVwIiwibWluV2lkdGgiLCJtYXhXaWR0aCIsImNsb3NlQnV0dG9uIiwicmVtb3ZlTGF5ZXJHcm91cCIsImhhc0xheWVyIiwicmVtb3ZlTGF5ZXIiLCJhZGRMYXllckdyb3VwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL1dpZGdldHMvTWFwL3BvaW50cy9Qb2ludFV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHcmFwaEljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2xpbmUtY2hhcnQuc3ZnJztcbmltcG9ydCBMLCB7IExhdExuZ1R1cGxlIH0gZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgaTE4biBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9wb2ludHMvbW9kZWxzL0lQb2ludCc7XG5pbXBvcnQgYmx1ZUNpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvYmx1ZS1jaXJjbGUuc3ZnJztcbmltcG9ydCBzYW1wbGluZ0ljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3NhbXBsaW5nLWljb24uc3ZnJztcbmltcG9ydCBwaW5rQ2lyY2xlVVJMIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9wb2ludF9pY29ucy9waW5rLWNpcmNsZS5zdmcnO1xuaW1wb3J0IG9ic2VydmF0aW9uSWNvblVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvb2JzZXJ2YXRpb24taWNvbi5zdmcnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvZXZlbnRzL21vZGVscy9JRXZlbnQnO1xuaW1wb3J0IHJlZFBpblJlZFNoYWRvdyBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcmVkLXBpbi1yZWQtc2hhZG93LnBuZyc7XG5pbXBvcnQgd2hpdGVQaW5SZWRTaGFkb3cgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL3doaXRlLXBpbi1yZWQtc2hhZG93LnBuZyc7XG5pbXBvcnQgd2hpdGVQaW5CbGFja1NoYWRvdyBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvd2hpdGUtcGluLWJsYWNrLXNoYWRvdy5wbmcnO1xuaW1wb3J0IHllbGxvd0NpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMveWVsbG93LWNpcmNsZS5zdmcnO1xuaW1wb3J0IHBsYW50SWNvblVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvZmFjdG9yeS1pY29uLnN2Zyc7XG5pbXBvcnQgZ3JlZW5DaXJjbGVVUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL2dyZWVuLWNpcmNsZS5zdmcnO1xuaW1wb3J0IHB1bXBTdGF0aW9uSWNvblVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvcHVtcC1zdGF0aW9uLWljb24uc3ZnJztcbmltcG9ydCBjb2xsZWN0b3JJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9tYXAvcGluLXdhdGVyLnN2Zyc7XG5pbXBvcnQgYnJpZ2h0Qmx1ZUNpcmNsZVVSTCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvYnJpZ2h0LWJsdWUtY2lyY2xlLnN2Zyc7XG5pbXBvcnQgV1dUUEljb25VUkwgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3BvaW50X2ljb25zL1dXVFAtaWNvbi5zdmcnO1xuaW1wb3J0IHdhdGVySWNvbk5vQmFja2dyb3VuZCBmcm9tICcuLi8uLi8uLi9hc3NldHMvcG9pbnRfaWNvbnMvd2F0ZXItbm8tYmFja2dyb3VuZC5zdmcnO1xuaW1wb3J0IHdoaXRlUG9pbnQgZnJvbSAnLi4vLi4vLi4vYXNzZXRzL3doaXRlLXBvaW50LnBuZyc7XG5pbXBvcnQgeyBldmVudHNDb3VudEljb24gfSBmcm9tICcuLi9NYXBVdGlscyc7XG5pbXBvcnQgeyBnZXRQb2ludEljb25CeVR5cGUgfSBmcm9tICcuL1BvaW50SWNvbic7XG5pbXBvcnQgd2F0ZXJSZXVzZUljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ljb25zL3dhdGVyX3JldXNlLnN2Zyc7XG5cbmV4cG9ydCBjb25zdCBpc0NvbGxlY3RvckZvY3VzZWQgPSAocG9pbnQ6IElQb2ludCwgZXZlbnQ6IElFdmVudCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGV2ZW50Py5vYnNlcnZhdGlvbnM/Lmxlbmd0aCA9PT0gMSAmJlxuICAgIHBvaW50LmlkID09PSBldmVudC5vYnNlcnZhdGlvbnNbMF0ucG9pbnRfaWRcbiAgKTtcbn07XG5cbmNvbnN0IGJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyA9IChwb2ludDogSVBvaW50KSA9PiB7XG4gIGxldCBzdHJpbmcgPSBgJHtwb2ludC5ncm91cC5uYW1lfSBgO1xuXG4gIGlmIChwb2ludC5ncm91cC50eXBlID09PSAnR3JvdXBzOjpGYWN0b3J5Jykge1xuICAgIHN0cmluZyArPSBgPGJyLz5TZWN0b3ItVEJEOiAke3BvaW50Lmdyb3VwLnNlY3Rvcl9uYW1lfWA7XG4gICAgc3RyaW5nICs9IGA8YnIvPldhdGVyIENvbnN1bXB0aW9uLVRCRDogJHtwb2ludC5ncm91cC53YXRlcl9jb25zdW1wdGlvbl9wZXJfZGF5fWA7XG4gIH0gZWxzZSB7XG4gICAgc3RyaW5nID0gYCR7cG9pbnQubmFtZX1gO1xuICB9XG5cbiAgcmV0dXJuIHN0cmluZztcbn07XG5cbi8vIEB0cy1pZ25vcmVcbi8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4vLyBJY29uQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG5leHBvcnQgY29uc3QgY3JlYXRlQnViYmxlUG9pbnQgPSAoXG4gIG1hcmtlckxvY2F0aW9uOiBMYXRMbmdUdXBsZSxcbiAgcG9pbnQ6IElQb2ludCxcbiAgbWFwLFxuICBob3ZlcmVkPyxcbiAgbGF5ZXJHcm91cD8sXG4pID0+IHtcbiAgY29uc3Qgc3VidGl0bGUgPVxuICAgIHBvaW50Lmdyb3VwLnR5cGUgPT09ICdHcm91cHM6OkZhY3RvcnknID8gcG9pbnQuZ3JvdXAuc2VjdG9yX25hbWUgOiAnJztcbiAgbGV0IHBvaW50Q3VzdG9tSWNvbjogTC5NYXJrZXIgPSBMLm1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IGdldFBvaW50SWNvbkJ5VHlwZShcbiAgICAgIHBvaW50Lmdyb3VwLnR5cGUsXG4gICAgICBwb2ludC5uYW1lLFxuICAgICAgc3VidGl0bGUsXG4gICAgICBmYWxzZSxcbiAgICAgIGZhbHNlLFxuICAgICksXG4gICAgcmlzZU9uSG92ZXI6IGZhbHNlLFxuICB9KTtcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBwb2ludEN1c3RvbUljb24uYmluZFRvb2x0aXAoYnVpbGRNYW5ob2xlVG9vdGlwU3RyaW5nKHBvaW50KSk7XG4gIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludCc7XG4gIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50SG92ZXJlZCc7XG5cbiAgbGF5ZXJHcm91cC5hZGRMYXllcihwb2ludEN1c3RvbUljb24pO1xuICBpZiAocG9pbnQuZ3JvdXAudHlwZSA9PT0gJ0dyb3Vwczo6RmFjdG9yeScpIHtcbiAgICBiaW5kUG9wdXBUb01hcmtlcihwb2ludCwgcG9pbnRDdXN0b21JY29uKTtcblxuICAgIC8vVGhlIGZvbGxvd2luZyBpcyBiZWluZyBjYWxsZWQgZm9yIGV2ZXJ5IHBvaW50LCB3ZSBzaG91bGQgZG8gdGhhdCBvbiB0aGUgbGF5ZXJHcm91cCBsZXZlbCB3aGljaCB3aWxsIGhhcHBlbiBvbmNlXG4gICAgLy9JdCBpcyBub3RpY2VkIHdoZW4gdGhlcmUgYXJlIHRob3VzYW5kcyBvZiBwb2ludHNcbiAgICBoYW5kbGVNYXJrZXJDbGljayhtYXAsIHBvaW50LCBwb2ludEN1c3RvbUljb24pO1xuICB9XG5cbiAgaWYgKHBvaW50LnJlbGF0ZWRFdmVudHNBbW91bnQpIHtcbiAgICBsZXQgcG9pbnRDdXN0b21JY29uID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IEwuZGl2SWNvbih7XG4gICAgICAgIGNsYXNzTmFtZTogYFxuICAgICAgICAgICR7XG4gICAgICAgICAgICBwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50ID49IDEwMFxuICAgICAgICAgICAgICA/ICdjaXJjbGUtZXZlbnRzLWFtb3VudCBjaXJjbGUtZXZlbnRzLWFtb3VudC0tdHJpZGlnaXQnXG4gICAgICAgICAgICAgIDogJ2NpcmNsZS1ldmVudHMtYW1vdW50J1xuICAgICAgICAgIH0gXG4gICAgICAgICAgJHtwb2ludC5yZWxhdGVkRXZlbnRzQW1vdW50ID4gMiA/ICdhbGVydC1jb2xvcicgOiAnJ31cbiAgICAgICAgICAgIGAsXG4gICAgICAgIGh0bWw6IGA8cD4ke3BvaW50LnJlbGF0ZWRFdmVudHNBbW91bnR9PC9wPmAsXG4gICAgICAgIGljb25BbmNob3I6IGV2ZW50c0NvdW50SWNvbihtYXAuX3pvb20pLmljb25BbmNob3IsXG4gICAgICB9KSxcbiAgICAgIHJpc2VPbkhvdmVyOiBmYWxzZSxcbiAgICAgIG9wYWNpdHk6IGhvdmVyZWQgPyAxIDogMCxcbiAgICB9KTtcblxuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ0ljb25OdW1iZXInO1xuICAgIGlmIChob3ZlcmVkKSBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ0ljb25OdW1iZXJIb3ZlcmVkJztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1hbmhvbGVQb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBwb2ludDogSVBvaW50LFxuICBtYXAsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICBsZXQgcG9pbnRJY29uID0gbmV3IEwuSWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQb2ludCxcbiAgICBpY29uU2l6ZTogWzksIDldLFxuICAgIGljb25BbmNob3I6IFs0LjUsIDQuNV0sXG4gIH0pO1xuICBsZXQgbWFuaG9sZUljb246IGFueSA9IG5ldyBMLk1hcmtlcihtYXJrZXJMb2NhdGlvbiwge1xuICAgIGljb246IHBvaW50SWNvbixcbiAgICByaXNlT25Ib3ZlcjogdHJ1ZSxcbiAgfSk7XG4gIG1hbmhvbGVJY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyhwb2ludCkpO1xuICBtYW5ob2xlSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgbWFuaG9sZUljb25bJ2thbmRvX29iamVjdCddID0gJ1BvaW50JztcbiAgbWFuaG9sZUljb25bJ2thbmRvX3BvaW50X3R5cGUnXSA9ICdNYW5ob2xlJztcbiAgaWYgKGhvdmVyZWQpIG1hbmhvbGVJY29uWydrYW5kb19vYmplY3QnXSA9ICdQb2ludEhvdmVyZWQnO1xuICBsYXllckdyb3VwLmFkZExheWVyKG1hbmhvbGVJY29uKTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXRjaEljb25Ub1BvaW50ID0gKHBvaW50OiBJUG9pbnQsIGV2ZW50OiBJRXZlbnQpID0+IHtcbiAgc3dpdGNoIChwb2ludC5ncm91cC50eXBlKSB7XG4gICAgY2FzZSAnR3JvdXBzOjpGYWN0b3J5JzpcbiAgICAgIGlmIChjb21iaW5lZEZhY3RvcnlJY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkRmFjdG9yeUljb24udW5zaGlmdChzZWxlY3RlZEJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWFya2VyQmVsb25nc1RvU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb21iaW5lZEZhY3RvcnlJY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZEZhY3RvcnlJY29uO1xuICAgIGNhc2UgJ0dyb3Vwczo6UHVtcFN0YXRpb24nOlxuICAgICAgaWYgKGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBpZiAobWFya2VyQmVsb25nc1RvU2VsZWN0ZWRTb3VyY2UoZXZlbnQsIHBvaW50KSkge1xuICAgICAgICAgIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRQdW1wU3RhdGlvbkljb24udW5zaGlmdChiZWxvbmdzVG9Tb3VyY2VCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbWJpbmVkUHVtcFN0YXRpb25JY29uLnVuc2hpZnQoc3RhbmRhcmRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb21iaW5lZFB1bXBTdGF0aW9uSWNvbjtcbiAgICBjYXNlICdHcm91cHM6Oldhc3Rld2F0ZXJUcmVhdG1lbnRQbGFudCc6XG4gICAgICBpZiAoY29tYmluZWRXV1RQSWNvbi5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgaWYgKG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlKGV2ZW50LCBwb2ludCkpIHtcbiAgICAgICAgICBjb21iaW5lZFdXVFBJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICAgICAgICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpKSB7XG4gICAgICAgICAgY29tYmluZWRXV1RQSWNvbi51bnNoaWZ0KGJlbG9uZ3NUb1NvdXJjZUJhY2tncm91bmQoKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29tYmluZWRXV1RQSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZCgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZWRXV1RQSWNvbjtcblxuICAgIGNhc2UgJ0dyb3Vwczo6Q29sbGVjdG9ycyc6XG4gICAgICBpZiAoaXNDb2xsZWN0b3JGb2N1c2VkKHBvaW50LCBldmVudCkpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBMLmljb24oe1xuICAgICAgICAgICAgaWNvblVybDogcmVkUGluUmVkU2hhZG93LFxuICAgICAgICAgICAgaWNvblNpemU6IFswLCAwXSxcbiAgICAgICAgICAgIGljb25BbmNob3I6IFszMCwgNTJdLFxuICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgTC5pY29uKHtcbiAgICAgICAgICAgIGljb25Vcmw6IHdhdGVySWNvbk5vQmFja2dyb3VuZCxcbiAgICAgICAgICAgIGljb25TaXplOiBbMCwgMF0sXG5cbiAgICAgICAgICAgIGljb25BbmNob3I6IFsyMiwgNDRdLFxuICAgICAgICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29tYmluZWRDb2xsZWN0b3JzSWNvbjtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHN0YW5kYXJkQmFja2dyb3VuZCA9IChcbiAgc2Vjb25kYXJ5OiBib29sZWFuID0gZmFsc2UsXG4gIHRoaXJkOiBib29sZWFuID0gZmFsc2UsXG4pID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQaW5CbGFja1NoYWRvdyxcbiAgICBpY29uU2l6ZTogc2Vjb25kYXJ5ID8gWzAsIDBdIDogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IHNlY29uZGFyeSAmJiB0aGlyZCA/IFstMiwgMTldIDogc2Vjb25kYXJ5ID8gWy0yLCA0NF0gOiBbMjAsIDQyXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkRmFjdG9yeUljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogeWVsbG93Q2lyY2xlVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzEwLjcsIDMzLjddLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogcGxhbnRJY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzUsIDMwXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkUHVtcFN0YXRpb25JY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IGdyZWVuQ2lyY2xlVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzEwLjcsIDMzLjddLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSksXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogcHVtcFN0YXRpb25JY29uVVJMLFxuICAgIGljb25TaXplOiBbMCwgMF0sXG4gICAgaWNvbkFuY2hvcjogWzcsIDMyXSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pLFxuXTtcblxuZXhwb3J0IGNvbnN0IGNvbWJpbmVkQ29sbGVjdG9yc0ljb24gPSBbXG4gIEwuaWNvbih7XG4gICAgaWNvblVybDogY29sbGVjdG9ySWNvbixcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuXG4gICAgaWNvbkFuY2hvcjogWzI1LCA1MF0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBjb21iaW5lZFdXVFBJY29uID0gW1xuICBMLmljb24oe1xuICAgIGljb25Vcmw6IGJyaWdodEJsdWVDaXJjbGVVUkwsXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMTAuNywgMzMuN10sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbiAgTC5pY29uKHtcbiAgICBpY29uVXJsOiBXV1RQSWNvblVSTCxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFs4LCAzMV0sXG4gICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICB9KSxcbl07XG5cbmV4cG9ydCBjb25zdCBzZWxlY3RlZEJhY2tncm91bmQgPSAoKSA9PiB7XG4gIHJldHVybiBMLmljb24oe1xuICAgIGljb25Vcmw6IHJlZFBpblJlZFNoYWRvdyxcbiAgICBpY29uU2l6ZTogWzAsIDBdLFxuICAgIGljb25BbmNob3I6IFszMiwgNTRdLFxuICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCA9ICgpID0+IHtcbiAgcmV0dXJuIEwuaWNvbih7XG4gICAgaWNvblVybDogd2hpdGVQaW5SZWRTaGFkb3csXG4gICAgaWNvblNpemU6IFswLCAwXSxcbiAgICBpY29uQW5jaG9yOiBbMzIsIDU0XSxcbiAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcmtlckJlbG9uZ3NUb1NlbGVjdGVkU291cmNlID0gKGV2ZW50OiBJRXZlbnQsIHBvaW50OiBJUG9pbnQpID0+IHtcbiAgbGV0IHNvdXJjZTtcblxuICBpZiAoZXZlbnQgIT09IG51bGwgJiYgZXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgIHNvdXJjZSA9IGV2ZW50LnNvdXJjZXMuZmlsdGVyKChzb3VyY2UpID0+IHNvdXJjZS5wb2ludF9pZCA9PT0gcG9pbnQuaWQpWzBdO1xuICB9XG5cbiAgcmV0dXJuIGV2ZW50ICE9PSBudWxsICYmIHNvdXJjZSAmJiBldmVudC5zZWxlY3RlZF9zb3VyY2UgPT09IHNvdXJjZS5wb2ludF9pZDtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXJrZXJCZWxvbmdzVG9Tb3VyY2UgPSAoZXZlbnQ6IElFdmVudCwgcG9pbnQ6IElQb2ludCkgPT4ge1xuICBpZiAoZXZlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICByZXR1cm4gKFxuICAgIGV2ZW50ICE9PSBudWxsICYmXG4gICAgZXZlbnQuc291cmNlcy5maWx0ZXIoKHNvdXJjZSkgPT4gc291cmNlLnBvaW50X2lkID09PSBwb2ludC5pZClbMF1cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTYW1wbGluZ0ljb25Qb2ludCA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBzZWNvbmRhcnlJY29uOiBib29sZWFuLFxuICBtYXAsXG4gIHBvaW50OiBJUG9pbnQsXG4gIGV2ZW50OiBJRXZlbnQsXG4gIGhvdmVyZWQ/LFxuICBsYXllckdyb3VwPyxcbikgPT4ge1xuICAvLyBpY29uU2l6ZTogW3dpZHRoLCBoZWlnaHRdLFxuICAvLyBJY29uIEFuY2hvcjogWygtcmlnaHQpKCtsZWZ0KSwgKC1kb3duKSgrdXApXVxuICBsZXQgc2FtcGxpbmdJY29uID0gW1xuICAgIEwuaWNvbih7XG4gICAgICBpY29uVXJsOiBibHVlQ2lyY2xlVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy03LCAxNV0gOiBbMTAuNywgMzMuN10sXG4gICAgICBwb3B1cEFuY2hvcjogWzAsIC0zMF0sXG4gICAgfSksXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHNhbXBsaW5nSWNvblVSTCxcbiAgICAgIGljb25TaXplOiBzZWNvbmRhcnlJY29uID8gWzAsIDBdIDogWzAsIDBdLFxuICAgICAgaWNvbkFuY2hvcjogc2Vjb25kYXJ5SWNvbiA/IFstOCwgMTNdIDogWzUsIDMwXSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgXTtcblxuICBsZXQgdGhpcmRJY29uID0gZmFsc2U7XG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgc2FtcGxpbmdJY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlyZEljb24gPSB0cnVlO1xuICAgIHNhbXBsaW5nSWNvbi51bnNoaWZ0KHN0YW5kYXJkQmFja2dyb3VuZChzZWNvbmRhcnlJY29uLCB0aGlyZEljb24pKTtcbiAgfVxuXG4gIHNhbXBsaW5nSWNvbi5mb3JFYWNoKChpY29uLCBpbmRleCkgPT4ge1xuICAgIGxldCBwb2ludEN1c3RvbUljb246IGFueSA9IEwubWFya2VyKG1hcmtlckxvY2F0aW9uLCB7XG4gICAgICBpY29uOiBpY29uLFxuICAgICAgcmlzZU9uSG92ZXI6IGZhbHNlLFxuICAgIH0pO1xuICAgIHBvaW50Q3VzdG9tSWNvbi5iaW5kVG9vbHRpcChidWlsZE1hbmhvbGVUb290aXBTdHJpbmcocG9pbnQpKTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2luZGV4X29iamVjdCddID0gaW5kZXg7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19mZXdfbGF5ZXJfaWNvbiddID0gdHJ1ZTtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX3NlY29uZGFyeSddID0gdGhpcmRJY29uID8gZmFsc2UgOiBzZWNvbmRhcnlJY29uO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fdGhpcmQnXSA9IHRoaXJkSWNvbjtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdF9pZCddID0gcG9pbnQuaWQ7XG4gICAgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdTYW1wbGluZyc7XG4gICAgaWYgKGhvdmVyZWQpIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0J10gPSAnU2FtcGxpbmdIb3ZlcmVkJztcbiAgICBsYXllckdyb3VwLmFkZExheWVyKHBvaW50Q3VzdG9tSWNvbik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU9ic2VydmF0aW9uSWNvblBvaW50ID0gKFxuICBtYXJrZXJMb2NhdGlvbjogTGF0TG5nVHVwbGUsXG4gIHNlY29uZGFyeUljb246IGJvb2xlYW4sXG4gIG1hcCxcbiAgcG9pbnQ6IElQb2ludCxcbiAgZXZlbnQ6IElFdmVudCxcbiAgaG92ZXJlZD8sXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIC8vIGljb25TaXplOiBbd2lkdGgsIGhlaWdodF0sXG4gIC8vIEljb24gQW5jaG9yOiBbKC1yaWdodCkoK2xlZnQpLCAoLWRvd24pKCt1cCldXG4gIGxldCBvYnNlcnZhdGlvbkljb24gPSBbXG4gICAgTC5pY29uKHtcbiAgICAgIGljb25Vcmw6IHBpbmtDaXJjbGVVUkwsXG4gICAgICBpY29uU2l6ZTogc2Vjb25kYXJ5SWNvbiA/IFswLCAwXSA6IFswLCAwXSxcbiAgICAgIGljb25BbmNob3I6IHNlY29uZGFyeUljb24gPyBbLTcsIDQwXSA6IFsxMC43LCAzMy43XSxcbiAgICAgIHBvcHVwQW5jaG9yOiBbMCwgLTMwXSxcbiAgICB9KSxcbiAgICBMLmljb24oe1xuICAgICAgaWNvblVybDogb2JzZXJ2YXRpb25JY29uVVJMLFxuICAgICAgaWNvblNpemU6IHNlY29uZGFyeUljb24gPyBbMCwgMF0gOiBbMCwgMF0sXG4gICAgICBpY29uQW5jaG9yOiBzZWNvbmRhcnlJY29uID8gWy04LCAzOF0gOiBbNSwgMzBdLFxuICAgICAgcG9wdXBBbmNob3I6IFswLCAtMzBdLFxuICAgIH0pLFxuICBdO1xuXG4gIGlmIChtYXJrZXJCZWxvbmdzVG9TZWxlY3RlZFNvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoc2VsZWN0ZWRCYWNrZ3JvdW5kKCkpO1xuICB9IGVsc2UgaWYgKG1hcmtlckJlbG9uZ3NUb1NvdXJjZShldmVudCwgcG9pbnQpICYmICFzZWNvbmRhcnlJY29uKSB7XG4gICAgb2JzZXJ2YXRpb25JY29uLnVuc2hpZnQoYmVsb25nc1RvU291cmNlQmFja2dyb3VuZCgpKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZhdGlvbkljb24udW5zaGlmdChzdGFuZGFyZEJhY2tncm91bmQoc2Vjb25kYXJ5SWNvbikpO1xuICB9XG5cbiAgb2JzZXJ2YXRpb25JY29uLmZvckVhY2goKGljb24sIGluZGV4KSA9PiB7XG4gICAgbGV0IHBvaW50Q3VzdG9tSWNvbjogYW55ID0gTC5tYXJrZXIobWFya2VyTG9jYXRpb24sIHtcbiAgICAgIGljb246IGljb24sXG4gICAgICByaXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgcG9pbnRDdXN0b21JY29uLmJpbmRUb29sdGlwKGJ1aWxkTWFuaG9sZVRvb3RpcFN0cmluZyhwb2ludCkpO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9faW5kZXhfb2JqZWN0J10gPSBpbmRleDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX2Zld19sYXllcl9pY29uJ10gPSB0cnVlO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fc2Vjb25kYXJ5J10gPSBzZWNvbmRhcnlJY29uO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fdGhpcmQnXSA9IGZhbHNlO1xuICAgIHBvaW50Q3VzdG9tSWNvblsna2FuZG9fb2JqZWN0X2lkJ10gPSBwb2ludC5pZDtcbiAgICBwb2ludEN1c3RvbUljb25bJ2thbmRvX29iamVjdCddID0gJ09ic2VydmF0aW9uJztcbiAgICBpZiAoaG92ZXJlZCkgcG9pbnRDdXN0b21JY29uWydrYW5kb19vYmplY3QnXSA9ICdPYnNlcnZhdGlvbkhvdmVyZWQnO1xuICAgIGxheWVyR3JvdXAuYWRkTGF5ZXIocG9pbnRDdXN0b21JY29uKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlU2FtcGxpbmdJY29ucyA9IChcbiAgbWFya2VyTG9jYXRpb246IExhdExuZ1R1cGxlLFxuICBldmVudDogSUV2ZW50LFxuICBwb2ludDogSVBvaW50LFxuICBtYXAsXG4gIGhvdmVyZWQsXG4gIGxheWVyR3JvdXA/LFxuKSA9PiB7XG4gIGxldCBzYW1wbGVkUG9pbnRJZHMgPSBldmVudC5zYW1wbGluZ3MubWFwKChzKSA9PiBzLnBvaW50X2lkKTtcbiAgaWYgKFxuICAgIGV2ZW50ICE9PSBudWxsICYmXG4gICAgZXZlbnQuc2FtcGxpbmdzLmxlbmd0aCAhPT0gMCAmJlxuICAgIHNhbXBsZWRQb2ludElkcy5pbmNsdWRlcyhwb2ludC5pZClcbiAgKSB7XG4gICAgY3JlYXRlU2FtcGxpbmdJY29uUG9pbnQoXG4gICAgICBtYXJrZXJMb2NhdGlvbixcbiAgICAgIG1hdGNoSWNvblRvUG9pbnQocG9pbnQsIGV2ZW50KSAhPT0gbnVsbCxcbiAgICAgIG1hcCxcbiAgICAgIHBvaW50LFxuICAgICAgZXZlbnQsXG4gICAgICBob3ZlcmVkLFxuICAgICAgbGF5ZXJHcm91cCxcbiAgICApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcG9wdXBDb250ZW50ID0gKG9iczogYW55LCBwb2ludDogSVBvaW50KSA9PiB7XG4gIGlmIChvYnMgPT09IG51bGwpIHtcbiAgICByZXR1cm4gYFxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LXBvcHVwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWdyYXBoLWljb24gcG9wdXAtZ3JhcGgtaWNvbi0ke3BvaW50LmlkfVwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIiR7R3JhcGhJY29ufVwiLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zaXRlLW5hbWVcIj48Yj4ke3BvaW50Lmdyb3VwLm5hbWV9PC9iPjwvaDU+XG4gICAgICAgICAgICAgICAgICAgIDxoci8+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwic2VjdG9yXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIGA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1wb3B1cFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1ncmFwaC1pY29uIHBvcHVwLWdyYXBoLWljb24tJHtvYnMuaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiJHtHcmFwaEljb259XCIvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NpdGUtbmFtZVwiPjxiPiR7XG4gICAgICAgICAgICAgICAgICAgICAgcG9pbnQuZ3JvdXAubmFtZVxuICAgICAgICAgICAgICAgICAgICB9PC9iPjwvaDU+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1wXCI+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcuc2V2ZXJpdHlgLFxuICAgICAgICAgICAgICAgICAgICAgICAgKX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIiR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwb3B1cC1jb250ZW50X19zZXZlcml0eS0tJyArIG9icy5zZXZlcml0eVxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiIGNsYXNzPVwicG9wdXAtY29udGVudF9fc2V2ZXJpdHktYlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3LnNldmVyaXRpZXMuJHtvYnMuc2V2ZXJpdHl9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwicG9wdXAtY29udGVudF9faHJcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250ZW50X19kaXNjaGFyZ2UtdGltZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInBvcHVwLWNvbnRlbnRfX3NldmVyaXR5LXBcIj4ke2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBldmVudHNfb3ZlcnZpZXcuZmlyc3Rfc2VlbmAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX06PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxiIGlkPVwiZmlyc3Qtc2Vlbi1wb3B1cFwiPjwvYj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwb3B1cC1jb250ZW50X19zZXZlcml0eS1wXCI+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgZXZlbnRzX292ZXJ2aWV3Lmxhc3Rfc2VlbmAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX06PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxiIGlkPVwibGFzdC1zZWVuLXBvcHVwXCI+PC9iPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBgO1xuICB9XG59O1xuXG5sZXQgc2V0SWNvbiA9IChlbGVtZW50LCBjbGlja2VkLCBwb2ludCkgPT4ge1xuICBlbGVtZW50LnNldEljb24oXG4gICAgZ2V0UG9pbnRJY29uQnlUeXBlKFxuICAgICAgcG9pbnQuZ3JvdXAudHlwZSxcbiAgICAgIHBvaW50Lm5hbWUsXG4gICAgICBwb2ludC5ncm91cC5zZWN0b3JfbmFtZSxcbiAgICAgIGNsaWNrZWQsXG4gICAgICBmYWxzZSxcbiAgICApLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZU1hcmtlckNsaWNrID0gKG1hcCwgcG9pbnQsIHBvaW50Q3VzdG9tSWNvbikgPT4ge1xuICBtYXAub24oJ3pvb21zdGFydCcsIGZ1bmN0aW9uICgpIHtcbiAgICBtYXAuY2xvc2VQb3B1cCgpO1xuICB9KTtcblxuICBwb2ludEN1c3RvbUljb24ub24oJ3BvcHVwY2xvc2UnLCAoKSA9PiB7XG4gICAgc2V0SWNvbihwb2ludEN1c3RvbUljb24sIGZhbHNlLCBwb2ludCk7XG4gIH0pO1xuXG4gIHBvaW50Q3VzdG9tSWNvbi5vbigncG9wdXBvcGVuJywgKCkgPT4ge1xuICAgIHNldEljb24ocG9pbnRDdXN0b21JY29uLCB0cnVlLCBwb2ludCk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGJpbmRQb3B1cFRvTWFya2VyID0gKHBvaW50LCBsYXllckdyb3VwKSA9PiB7XG4gIGxldCBjb250ZW50ID0gYFxuICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudCc+XG4gICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9faGVhZGVyJz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRfX2hlYWRlcl9fdGl0bGVzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWFpbi1jb250ZW50X19oZWFkZXJfX3RpdGxlc19fdGl0bGUnPiR7XG4gICAgICAgICAgICAgICAgICBwb2ludC5uYW1lXG4gICAgICAgICAgICAgICAgfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9faGVhZGVyX190aXRsZXNfX3N1YnRpdGxlJz4ke1xuICAgICAgICAgICAgICAgICAgcG9pbnQuZ3JvdXAuc2VjdG9yX25hbWVcbiAgICAgICAgICAgICAgICB9PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgXG4gICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keSc+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2JvZHlfX2l0ZW0nPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9faWNvbic+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPScke3dhdGVyUmV1c2VJY29ufScgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2JvZHlfX2l0ZW1fX3RpdGxlcyc+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdtYWluLWNvbnRlbnRfX2JvZHlfX2l0ZW1fX3RpdGxlc19fdGl0bGUnPiR7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50Lmdyb3VwLndhdGVyX2NvbnN1bXB0aW9uX3Blcl9kYXlcbiAgICAgICAgICAgICAgICAgIH0gJHtpMThuLnQoJ21pbGxpb25fZ2FsbG9uc19kYXknKX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J21haW4tY29udGVudF9fYm9keV9faXRlbV9fdGl0bGVzX19zdWJ0aXRsZSc+JHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICd3YXRlcl9kaXNjaGFyZ2UnLFxuICAgICAgICAgICAgICAgICAgKX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBgO1xuXG4gIGxheWVyR3JvdXAuYmluZFBvcHVwKGNvbnRlbnQsIHtcbiAgICBjbGFzc05hbWU6ICdwb2ludC1tYXJrZXItcG9wdXAnLFxuICAgIG1pbldpZHRoOiAnMjE0cHgnLFxuICAgIG1heFdpZHRoOiAnMjE0cHgnLFxuICAgIGNsb3NlQnV0dG9uOiBmYWxzZSxcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlTGF5ZXJHcm91cCA9IChtYXAsIGxheWVyR3JvdXApID0+IHtcbiAgaWYgKG1hcC5oYXNMYXllcihsYXllckdyb3VwKSkge1xuICAgIG1hcC5yZW1vdmVMYXllcihsYXllckdyb3VwKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGFkZExheWVyR3JvdXAgPSAobWFwLCBsYXllckdyb3VwKSA9PiB7XG4gIGlmICghbWFwLmhhc0xheWVyKGxheWVyR3JvdXApKSB7XG4gICAgbWFwLmFkZExheWVyKGxheWVyR3JvdXApO1xuICB9IGVsc2Uge1xuICAgIHJlbW92ZUxheWVyR3JvdXAobWFwLCBsYXllckdyb3VwKTtcbiAgICBhZGRMYXllckdyb3VwKG1hcCwgbGF5ZXJHcm91cCk7XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQ0EsSUFBQUEsUUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsS0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQTJDLElBQUFFLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUFBLElBQUFHLGFBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUFBLElBQUFJLFdBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUFBLElBQUFLLGdCQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFPM0MsSUFBQU0sZ0JBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFPLGtCQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUSxvQkFBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQXlGLElBQUFTLGFBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUFB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
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
@@ -22,9 +22,7 @@ var _PieChart = require("./PieChart/PieChart");
22
22
  var _styles = require("./styles");
23
23
  var _InfoTooltip = require("ui-kit/InfoTooltip/InfoTooltip");
24
24
  var _reactRouterDom = require("react-router-dom");
25
- 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); }
26
- 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; }
27
- var AreaBox = function AreaBox(_ref) {
25
+ var AreaBox = exports.AreaBox = function AreaBox(_ref) {
28
26
  var _area$use_cases;
29
27
  var area = _ref.area,
30
28
  showInfoTooltip = _ref.showInfoTooltip;
@@ -72,10 +70,10 @@ var AreaBox = function AreaBox(_ref) {
72
70
  } else if (areaScore >= 70) {
73
71
  scoreText = _i18n.default.t('dashboard_v2.utility_dashboard.topbar.quality-summary.extreme');
74
72
  }
75
- } else if (areaScore === -1 || area.main_collectors.length === 0) {
73
+ } else if (areaScore === -1 || area.is_sub_area && area.main_collectors.length === 0) {
76
74
  scoreText = _i18n.default.t('dashboard_v2.utility_dashboard.topbar.quality-summary.undefined');
77
75
  }
78
- if (area.main_collectors.length === 0) {
76
+ if (area.is_sub_area && area.main_collectors.length === 0) {
79
77
  mapColor = '#7f7f7f';
80
78
  }
81
79
  (0, _react.useEffect)(function () {
@@ -86,7 +84,7 @@ var AreaBox = function AreaBox(_ref) {
86
84
  }, [titleRef]);
87
85
  return /*#__PURE__*/_react.default.createElement(_StyledLink.StyledLink, {
88
86
  className: !permissions && 'disabled-link',
89
- to: "/dashboard_v2/area/".concat(area.area_id),
87
+ to: area.dashboard_url,
90
88
  onClick: function onClick() {
91
89
  (0, _Analytics.analyticsTrack)('Area card clicked', {
92
90
  area_name: area.area_name,
@@ -128,7 +126,7 @@ var AreaBox = function AreaBox(_ref) {
128
126
  className: "pollution-holder"
129
127
  }, /*#__PURE__*/_react.default.createElement(_PollutionScorePercent.PollutionScorePercent, {
130
128
  change: area.pollution.polluted_percent_change,
131
- areaLength: area.main_collectors.length,
129
+ areaLength: area.is_sub_area ? area.main_collectors.length : 1,
132
130
  scoreText: scoreText,
133
131
  areaScore: areaScore
134
132
  }))), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, show_use_cases && /*#__PURE__*/_react.default.createElement(_PotentialImpact.PotentialImpact, {
@@ -156,9 +154,8 @@ var AreaBox = function AreaBox(_ref) {
156
154
  }))))));
157
155
  };
158
156
  //eslint-disable-next-line
159
- exports.AreaBox = AreaBox;
160
157
  var AlignCenter = _styledComponents.default.div.withConfig({
161
158
  displayName: "AreaBox__AlignCenter",
162
159
  componentId: "sc-teh2e3-0"
163
160
  })(["display:flex;flex-direction:column;align-items:space-between;justify-content:space-between;font-size:14px;"]);
164
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9TdHlsZWRMaW5rIiwiX2kxOG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3Njb3JlVG9Db2xvciIsIl9UcnVuY2F0ZSIsIl9BbmFseXRpY3MiLCJfUG9sbHV0aW9uU2NvcmVQZXJjZW50IiwiX1BvdGVudGlhbEltcGFjdCIsIl9NYXAiLCJfUGllQ2hhcnQiLCJfc3R5bGVzIiwiX0luZm9Ub29sdGlwIiwiX3JlYWN0Um91dGVyRG9tIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJBcmVhQm94IiwiX3JlZiIsIl9hcmVhJHVzZV9jYXNlcyIsImFyZWEiLCJzaG93SW5mb1Rvb2x0aXAiLCJ0aXRsZVJlZiIsInVzZVJlZiIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNob3dQaWVDaGFydCIsInNldFNob3dQaWVDaGFydCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZW5hYmxlVG9vbFRpcCIsInNldEVuYWJsZVRvb2x0aXAiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNob3dBbGwiLCJzZXRTaG93QWxsIiwid2F0ZXJBdXRob3JpdHlOYW1lIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsImdsb2JhbF9kYXRhIiwicGVybWlzc2lvbnMiLCJ1dGlsaXRpZXNfZGFzaGJvYXJkIiwiZW5hYmxlX2FyZWFfbGlua3MiLCJ1cCIsInBvbGx1dGlvbiIsInBvbGx1dGVkX3BlcmNlbnRfY2hhbmdlIiwic2NvcmVUZXh0IiwiaTE4biIsInQiLCJhcmVhU2NvcmUiLCJwYXJzZUZsb2F0IiwiYXJlYV9zY29yZSIsIm1hcENvbG9yIiwic2NvcmVUb0NvbG9yIiwic2hvd191c2VfY2FzZXMiLCJ1c2VfY2FzZXMiLCJsZW5ndGgiLCJsb2NhdGlvbiIsInVzZUxvY2F0aW9uIiwidG9vbHRpcERhdGEiLCJ0b2dnbGVQb3RlbnRpYWxJbXBhY3RTdGF0ZXMiLCJldmVudCIsImFuYWx5dGljc1RyYWNrIiwic2VsZWN0aW9uIiwicGFnZV9uYW1lIiwicGF0aG5hbWUiLCJ1dGlsaXR5X25hbWUiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsIm1haW5fY29sbGVjdG9ycyIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJvZmZzZXRXaWR0aCIsInNjcm9sbFdpZHRoIiwiY3JlYXRlRWxlbWVudCIsIlN0eWxlZExpbmsiLCJjbGFzc05hbWUiLCJ0byIsImNvbmNhdCIsImFyZWFfaWQiLCJvbkNsaWNrIiwiYXJlYV9uYW1lIiwiQm94IiwicmVmIiwiY2hhcmFjdGVycyIsImluaGVyaXRUZXh0QWxpZ24iLCJ0b3RhbF9mYWN0b3JpZXMiLCJJbmZvVG9vbHRpcCIsInRpdGxlIiwiZGF0YSIsIkZyYWdtZW50IiwiUG9sbHV0aW9uU2NvcmVQZXJjZW50IiwiY2hhbmdlIiwiYXJlYUxlbmd0aCIsIlBvdGVudGlhbEltcGFjdCIsInNob3dfc3RhdGUiLCJ0b2dnbGVTaG93Iiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwiUGllQ2hhcnQiLCJxdWFsaXR5IiwidHlwZV9kaXN0cmlidXRpb24iLCJNYXAiLCJjb2xvciIsInBvaW50cyIsInNoYXBlX2RhdGEiLCJtYXJrZXJzIiwiZXhwb3J0cyIsIkFsaWduQ2VudGVyIiwic3R5bGVkIiwiZGl2Iiwid2l0aENvbmZpZyIsImRpc3BsYXlOYW1lIiwiY29tcG9uZW50SWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvV2lkZ2V0cy9Nb3N0UG9sbHV0aW5nL0FyZWFzL0FyZWFCb3gvQXJlYUJveC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVNlbGVjdG9yIH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHsgU3R5bGVkTGluayB9IGZyb20gJ3NyYy9jb21wb25lbnRzL0xpbmtzL1N0eWxlZExpbmsvU3R5bGVkTGluayc7XG5pbXBvcnQgaTE4biBmcm9tICdzcmMvdXRpbGl0aWVzL2kxOG4nO1xuaW1wb3J0IHsgc2NvcmVUb0NvbG9yIH0gZnJvbSAnc3JjL3V0aWxpdGllcy9zY29yZVRvQ29sb3InO1xuaW1wb3J0IFRydW5jYXRlIGZyb20gJ3NyYy91dGlsaXRpZXMvVHJ1bmNhdGUnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cy9tYWNybyc7XG5pbXBvcnQgeyBhbmFseXRpY3NUcmFjayB9IGZyb20gJ3NyYy91dGlsaXRpZXMvQW5hbHl0aWNzJztcbmltcG9ydCB7IFBvbGx1dGlvblNjb3JlUGVyY2VudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvUG9sbHV0aW9uU2NvcmVQZXJjZW50JztcbmltcG9ydCB7IFBvdGVudGlhbEltcGFjdCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvUG90ZW50aWFsSW1wYWN0JztcbmltcG9ydCB7IEFyZWEgfSBmcm9tICcuLi9hcmVhc1Jlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNYXAgfSBmcm9tICcuL01hcC9NYXAnO1xuaW1wb3J0IHsgUGllQ2hhcnQgfSBmcm9tICcuL1BpZUNoYXJ0L1BpZUNoYXJ0JztcbmltcG9ydCB7IEJveCB9IGZyb20gJy4vc3R5bGVzJztcbmltcG9ydCB7IEluZm9Ub29sdGlwIH0gZnJvbSAnc3JjL3VpLWtpdC9JbmZvVG9vbHRpcC9JbmZvVG9vbHRpcCc7XG5pbXBvcnQgeyB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuXG5pbnRlcmZhY2UgQXJlYUJveFByb3BzIHtcbiAgYXJlYTogQXJlYTtcbiAgc2hvd0luZm9Ub29sdGlwOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgQXJlYUJveDogUmVhY3QuRkM8QXJlYUJveFByb3BzPiA9ICh7IGFyZWEsIHNob3dJbmZvVG9vbHRpcCB9KSA9PiB7XG4gIGNvbnN0IHRpdGxlUmVmOiBhbnkgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IFtzaG93UGllQ2hhcnQsIHNldFNob3dQaWVDaGFydF0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtlbmFibGVUb29sVGlwLCBzZXRFbmFibGVUb29sdGlwXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW3Nob3dBbGwsIHNldFNob3dBbGxdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCB3YXRlckF1dGhvcml0eU5hbWUgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5TmFtZSxcbiAgKTtcbiAgY29uc3QgcGVybWlzc2lvbnMgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLnBlcm1pc3Npb25zLnV0aWxpdGllc19kYXNoYm9hcmQuZW5hYmxlX2FyZWFfbGlua3MsXG4gICk7XG5cbiAgY29uc3QgdXAgPSBhcmVhLnBvbGx1dGlvbi5wb2xsdXRlZF9wZXJjZW50X2NoYW5nZSA+PSAwO1xuICBsZXQgc2NvcmVUZXh0ID0gaTE4bi50KFxuICAgICdkYXNoYm9hcmRfdjIudXRpbGl0eV9kYXNoYm9hcmQudG9wYmFyLnF1YWxpdHktc3VtbWFyeS5sb3cnLFxuICApO1xuICBjb25zdCBhcmVhU2NvcmUgPSBwYXJzZUZsb2F0KGFyZWEuYXJlYV9zY29yZSk7XG4gIGxldCBtYXBDb2xvciA9IHNjb3JlVG9Db2xvcihhcmVhU2NvcmUpO1xuICBjb25zdCBzaG93X3VzZV9jYXNlcyA9IGFyZWEudXNlX2Nhc2VzPy5sZW5ndGggPiAwO1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcblxuICBjb25zdCB0b29sdGlwRGF0YSA9XG4gICAgaTE4bi50KCdoZWxwZXJzLmluZm9fdG9vbHRpcC5wb2xsdXRpb25fc2NvcmUubWFpbicpICtcbiAgICBpMThuLnQoJ2hlbHBlcnMuaW5mb190b29sdGlwLnBvbGx1dGlvbl9zY29yZS5zdWInKSArXG4gICAgaTE4bi50KCdoZWxwZXJzLmluZm9fdG9vbHRpcC5wb2xsdXRpb25fc2NvcmUuc3ViMScpO1xuXG4gIGNvbnN0IHRvZ2dsZVBvdGVudGlhbEltcGFjdFN0YXRlcyA9IChldmVudCkgPT4ge1xuICAgIGFuYWx5dGljc1RyYWNrKCdQb3RlbnRpYWwgSW1wYWN0IENsaWNrZWQnLCB7XG4gICAgICBzZWxlY3Rpb246IHNob3dBbGwgPyAnU2hvdyBMZXNzJyA6ICdTaG93IEFsbCcsXG4gICAgICBwYWdlX25hbWU6IGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgdXRpbGl0eV9uYW1lOiB3YXRlckF1dGhvcml0eU5hbWUsXG4gICAgfSk7XG4gICAgc2V0U2hvd0FsbCghc2hvd0FsbCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICBpZiAoYXJlYVNjb3JlICYmIGFyZWFTY29yZSA+PSAzMCkge1xuICAgIGlmIChhcmVhU2NvcmUgPCA1MCkge1xuICAgICAgc2NvcmVUZXh0ID0gaTE4bi50KFxuICAgICAgICAnZGFzaGJvYXJkX3YyLnV0aWxpdHlfZGFzaGJvYXJkLnRvcGJhci5xdWFsaXR5LXN1bW1hcnkubWVkaXVtJyxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChhcmVhU2NvcmUgPCA3MCkge1xuICAgICAgc2NvcmVUZXh0ID0gaTE4bi50KFxuICAgICAgICAnZGFzaGJvYXJkX3YyLnV0aWxpdHlfZGFzaGJvYXJkLnRvcGJhci5xdWFsaXR5LXN1bW1hcnkuaGlnaCcsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoYXJlYVNjb3JlID49IDcwKSB7XG4gICAgICBzY29yZVRleHQgPSBpMThuLnQoXG4gICAgICAgICdkYXNoYm9hcmRfdjIudXRpbGl0eV9kYXNoYm9hcmQudG9wYmFyLnF1YWxpdHktc3VtbWFyeS5leHRyZW1lJyxcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFyZWFTY29yZSA9PT0gLTEgfHwgYXJlYS5tYWluX2NvbGxlY3RvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgc2NvcmVUZXh0ID0gaTE4bi50KFxuICAgICAgJ2Rhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC50b3BiYXIucXVhbGl0eS1zdW1tYXJ5LnVuZGVmaW5lZCcsXG4gICAgKTtcbiAgfVxuXG4gIGlmIChhcmVhLm1haW5fY29sbGVjdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICBtYXBDb2xvciA9ICcjN2Y3ZjdmJztcbiAgfVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aXRsZVJlZikge1xuICAgICAgLy9jaGVjayBpZiB3ZSB3YW50IHRvIGVuYWJsZSB0b29sdGlwXG4gICAgICBzZXRFbmFibGVUb29sdGlwKFxuICAgICAgICB0aXRsZVJlZi5jdXJyZW50Lm9mZnNldFdpZHRoIDwgdGl0bGVSZWYuY3VycmVudC5zY3JvbGxXaWR0aCxcbiAgICAgICk7XG4gICAgfVxuICB9LCBbdGl0bGVSZWZdKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRMaW5rXG4gICAgICBjbGFzc05hbWU9eyFwZXJtaXNzaW9ucyAmJiAnZGlzYWJsZWQtbGluayd9XG4gICAgICB0bz17YC9kYXNoYm9hcmRfdjIvYXJlYS8ke2FyZWEuYXJlYV9pZH1gfVxuICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICBhbmFseXRpY3NUcmFjaygnQXJlYSBjYXJkIGNsaWNrZWQnLCB7XG4gICAgICAgICAgYXJlYV9uYW1lOiBhcmVhLmFyZWFfbmFtZSxcbiAgICAgICAgICB1dGlsaXR5X25hbWU6IHdhdGVyQXV0aG9yaXR5TmFtZSxcbiAgICAgICAgfSk7XG4gICAgICB9fVxuICAgID5cbiAgICAgIDxCb3ggdXA9e3VwfSBkYXRhLWFyZWEtaWQ9e2FyZWEuYXJlYV9pZH0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2BrZC10b3AgJHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICAgICAgICAgIGZhbHNlICYmIGVuYWJsZVRvb2xUaXAgPyAnIGtkLXRvb2x0aXAnIDogJydcbiAgICAgICAgICB9YH1cbiAgICAgICAgICBkYXRhLXRleHQ9e2FyZWEuYXJlYV9uYW1lfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJrZC1ib3gtbWFpbi10aXRsZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJrZC10aXRsZVwiIHJlZj17dGl0bGVSZWZ9PlxuICAgICAgICAgICAgICA8VHJ1bmNhdGUgY2hhcmFjdGVycz17MH0gaW5oZXJpdFRleHRBbGlnbj17dHJ1ZX0+XG4gICAgICAgICAgICAgICAgPHNwYW4+e2FyZWEuYXJlYV9uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9UcnVuY2F0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwia2QtZmFjdG9yaWVzXCI+XG4gICAgICAgICAgICB7aTE4bi50KCdkYXNoYm9hcmRfdjIudXRpbGl0eV9kYXNoYm9hcmQubW9zdC1wb2xsdXRpbmcuZmFjdG9yaWVzJyl9XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmYWN0b3JpZXMtbnVtXCI+XG4gICAgICAgICAgICAgIHsnICd9XG4gICAgICAgICAgICAgIHthcmVhLnRvdGFsX2ZhY3Rvcmllc31cbiAgICAgICAgICAgICAgeycnfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJrZC1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJrZC1wZXJjZW50XCI+XG4gICAgICAgICAgICB7IXNob3dBbGwgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNjb3JlLWhvbGRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgIHtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICdkYXNoYm9hcmRfdjIudXRpbGl0eV9kYXNoYm9hcmQudG9wYmFyLnF1YWxpdHktc3VtbWFyeS5wb2xsdXRpb24tc2NvcmUnLFxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHtzaG93SW5mb1Rvb2x0aXAgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8SW5mb1Rvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17aTE4bi50KFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2Rhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC50b3BiYXIucXVhbGl0eS1zdW1tYXJ5LnBvbGx1dGlvbi1zY29yZScsXG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhPXt0b29sdGlwRGF0YX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDw+PC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSW5mb1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicG9sbHV0aW9uLWhvbGRlclwiPlxuICAgICAgICAgICAgICAgICAgPFBvbGx1dGlvblNjb3JlUGVyY2VudFxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2U9e2FyZWEucG9sbHV0aW9uLnBvbGx1dGVkX3BlcmNlbnRfY2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICBhcmVhTGVuZ3RoPXthcmVhLm1haW5fY29sbGVjdG9ycy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgIHNjb3JlVGV4dD17c2NvcmVUZXh0fVxuICAgICAgICAgICAgICAgICAgICBhcmVhU2NvcmU9e2FyZWFTY29yZX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHtzaG93X3VzZV9jYXNlcyAmJiAoXG4gICAgICAgICAgICAgICAgPFBvdGVudGlhbEltcGFjdFxuICAgICAgICAgICAgICAgICAgdXNlX2Nhc2VzPXthcmVhLnVzZV9jYXNlc31cbiAgICAgICAgICAgICAgICAgIHNob3dfc3RhdGU9e3Nob3dBbGx9XG4gICAgICAgICAgICAgICAgICB0b2dnbGVTaG93PXt0b2dnbGVQb3RlbnRpYWxJbXBhY3RTdGF0ZXN9XG4gICAgICAgICAgICAgICAgPjwvUG90ZW50aWFsSW1wYWN0PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibWFwLWhvbGRlclwiXG4gICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IHNldFNob3dQaWVDaGFydCh0cnVlKX1cbiAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0U2hvd1BpZUNoYXJ0KGZhbHNlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7c2hvd1BpZUNoYXJ0ID8gKFxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiYWNrXCI+XG4gICAgICAgICAgICAgICAgPFBpZUNoYXJ0IHF1YWxpdHk9e2FyZWEucG9sbHV0aW9uLnR5cGVfZGlzdHJpYnV0aW9ufSAvPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImtkLWZyb250XCI+XG4gICAgICAgICAgICAgICAgPE1hcFxuICAgICAgICAgICAgICAgICAgY29sb3I9e21hcENvbG9yfVxuICAgICAgICAgICAgICAgICAgcG9pbnRzPXthcmVhLnNoYXBlX2RhdGF9XG4gICAgICAgICAgICAgICAgICBtYXJrZXJzPXthcmVhLm1haW5fY29sbGVjdG9yc31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9Cb3g+XG4gICAgPC9TdHlsZWRMaW5rPlxuICApO1xufTtcbi8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5jb25zdCBBbGlnbkNlbnRlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBzcGFjZS1iZXR3ZWVuO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZvbnQtc2l6ZTogMTRweDtcbmA7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7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
161
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9TdHlsZWRMaW5rIiwiX2kxOG4iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3Njb3JlVG9Db2xvciIsIl9UcnVuY2F0ZSIsIl9BbmFseXRpY3MiLCJfUG9sbHV0aW9uU2NvcmVQZXJjZW50IiwiX1BvdGVudGlhbEltcGFjdCIsIl9NYXAiLCJfUGllQ2hhcnQiLCJfc3R5bGVzIiwiX0luZm9Ub29sdGlwIiwiX3JlYWN0Um91dGVyRG9tIiwiQXJlYUJveCIsImV4cG9ydHMiLCJfcmVmIiwiX2FyZWEkdXNlX2Nhc2VzIiwiYXJlYSIsInNob3dJbmZvVG9vbHRpcCIsInRpdGxlUmVmIiwidXNlUmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZGVmYXVsdCIsInNob3dQaWVDaGFydCIsInNldFNob3dQaWVDaGFydCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZW5hYmxlVG9vbFRpcCIsInNldEVuYWJsZVRvb2x0aXAiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNob3dBbGwiLCJzZXRTaG93QWxsIiwid2F0ZXJBdXRob3JpdHlOYW1lIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsImdsb2JhbF9kYXRhIiwicGVybWlzc2lvbnMiLCJ1dGlsaXRpZXNfZGFzaGJvYXJkIiwiZW5hYmxlX2FyZWFfbGlua3MiLCJ1cCIsInBvbGx1dGlvbiIsInBvbGx1dGVkX3BlcmNlbnRfY2hhbmdlIiwic2NvcmVUZXh0IiwiaTE4biIsInQiLCJhcmVhU2NvcmUiLCJwYXJzZUZsb2F0IiwiYXJlYV9zY29yZSIsIm1hcENvbG9yIiwic2NvcmVUb0NvbG9yIiwic2hvd191c2VfY2FzZXMiLCJ1c2VfY2FzZXMiLCJsZW5ndGgiLCJsb2NhdGlvbiIsInVzZUxvY2F0aW9uIiwidG9vbHRpcERhdGEiLCJ0b2dnbGVQb3RlbnRpYWxJbXBhY3RTdGF0ZXMiLCJldmVudCIsImFuYWx5dGljc1RyYWNrIiwic2VsZWN0aW9uIiwicGFnZV9uYW1lIiwicGF0aG5hbWUiLCJ1dGlsaXR5X25hbWUiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImlzX3N1Yl9hcmVhIiwibWFpbl9jb2xsZWN0b3JzIiwidXNlRWZmZWN0IiwiY3VycmVudCIsIm9mZnNldFdpZHRoIiwic2Nyb2xsV2lkdGgiLCJjcmVhdGVFbGVtZW50IiwiU3R5bGVkTGluayIsImNsYXNzTmFtZSIsInRvIiwiZGFzaGJvYXJkX3VybCIsIm9uQ2xpY2siLCJhcmVhX25hbWUiLCJCb3giLCJhcmVhX2lkIiwiY29uY2F0IiwicmVmIiwiY2hhcmFjdGVycyIsImluaGVyaXRUZXh0QWxpZ24iLCJ0b3RhbF9mYWN0b3JpZXMiLCJJbmZvVG9vbHRpcCIsInRpdGxlIiwiZGF0YSIsIkZyYWdtZW50IiwiUG9sbHV0aW9uU2NvcmVQZXJjZW50IiwiY2hhbmdlIiwiYXJlYUxlbmd0aCIsIlBvdGVudGlhbEltcGFjdCIsInNob3dfc3RhdGUiLCJ0b2dnbGVTaG93Iiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwiUGllQ2hhcnQiLCJxdWFsaXR5IiwidHlwZV9kaXN0cmlidXRpb24iLCJNYXAiLCJjb2xvciIsInBvaW50cyIsInNoYXBlX2RhdGEiLCJtYXJrZXJzIiwiQWxpZ25DZW50ZXIiLCJzdHlsZWQiLCJkaXYiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9XaWRnZXRzL01vc3RQb2xsdXRpbmcvQXJlYXMvQXJlYUJveC9BcmVhQm94LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyBTdHlsZWRMaW5rIH0gZnJvbSAnc3JjL2NvbXBvbmVudHMvTGlua3MvU3R5bGVkTGluay9TdHlsZWRMaW5rJztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyBzY29yZVRvQ29sb3IgfSBmcm9tICdzcmMvdXRpbGl0aWVzL3Njb3JlVG9Db2xvcic7XG5pbXBvcnQgVHJ1bmNhdGUgZnJvbSAnc3JjL3V0aWxpdGllcy9UcnVuY2F0ZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzL21hY3JvJztcbmltcG9ydCB7IGFuYWx5dGljc1RyYWNrIH0gZnJvbSAnc3JjL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuaW1wb3J0IHsgUG9sbHV0aW9uU2NvcmVQZXJjZW50IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9Qb2xsdXRpb25TY29yZVBlcmNlbnQnO1xuaW1wb3J0IHsgUG90ZW50aWFsSW1wYWN0IH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9Qb3RlbnRpYWxJbXBhY3QnO1xuaW1wb3J0IHsgQXJlYSB9IGZyb20gJy4uL2FyZWFzUmVzcG9uc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1hcCB9IGZyb20gJy4vTWFwL01hcCc7XG5pbXBvcnQgeyBQaWVDaGFydCB9IGZyb20gJy4vUGllQ2hhcnQvUGllQ2hhcnQnO1xuaW1wb3J0IHsgQm94IH0gZnJvbSAnLi9zdHlsZXMnO1xuaW1wb3J0IHsgSW5mb1Rvb2x0aXAgfSBmcm9tICdzcmMvdWkta2l0L0luZm9Ub29sdGlwL0luZm9Ub29sdGlwJztcbmltcG9ydCB7IHVzZUxvY2F0aW9uIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5cbmludGVyZmFjZSBBcmVhQm94UHJvcHMge1xuICBhcmVhOiBBcmVhO1xuICBzaG93SW5mb1Rvb2x0aXA6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBBcmVhQm94OiBSZWFjdC5GQzxBcmVhQm94UHJvcHM+ID0gKHsgYXJlYSwgc2hvd0luZm9Ub29sdGlwIH0pID0+IHtcbiAgY29uc3QgdGl0bGVSZWY6IGFueSA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgW3Nob3dQaWVDaGFydCwgc2V0U2hvd1BpZUNoYXJ0XSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKTtcbiAgY29uc3QgW2VuYWJsZVRvb2xUaXAsIHNldEVuYWJsZVRvb2x0aXBdID0gdXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbc2hvd0FsbCwgc2V0U2hvd0FsbF0gPSB1c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5TmFtZSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlOYW1lLFxuICApO1xuICBjb25zdCBwZXJtaXNzaW9ucyA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUucGVybWlzc2lvbnMudXRpbGl0aWVzX2Rhc2hib2FyZC5lbmFibGVfYXJlYV9saW5rcyxcbiAgKTtcblxuICBjb25zdCB1cCA9IGFyZWEucG9sbHV0aW9uLnBvbGx1dGVkX3BlcmNlbnRfY2hhbmdlID49IDA7XG4gIGxldCBzY29yZVRleHQgPSBpMThuLnQoXG4gICAgJ2Rhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC50b3BiYXIucXVhbGl0eS1zdW1tYXJ5LmxvdycsXG4gICk7XG4gIGNvbnN0IGFyZWFTY29yZSA9IHBhcnNlRmxvYXQoYXJlYS5hcmVhX3Njb3JlKTtcbiAgbGV0IG1hcENvbG9yID0gc2NvcmVUb0NvbG9yKGFyZWFTY29yZSk7XG4gIGNvbnN0IHNob3dfdXNlX2Nhc2VzID0gYXJlYS51c2VfY2FzZXM/Lmxlbmd0aCA+IDA7XG5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IHRvb2x0aXBEYXRhID1cbiAgICBpMThuLnQoJ2hlbHBlcnMuaW5mb190b29sdGlwLnBvbGx1dGlvbl9zY29yZS5tYWluJykgK1xuICAgIGkxOG4udCgnaGVscGVycy5pbmZvX3Rvb2x0aXAucG9sbHV0aW9uX3Njb3JlLnN1YicpICtcbiAgICBpMThuLnQoJ2hlbHBlcnMuaW5mb190b29sdGlwLnBvbGx1dGlvbl9zY29yZS5zdWIxJyk7XG5cbiAgY29uc3QgdG9nZ2xlUG90ZW50aWFsSW1wYWN0U3RhdGVzID0gKGV2ZW50KSA9PiB7XG4gICAgYW5hbHl0aWNzVHJhY2soJ1BvdGVudGlhbCBJbXBhY3QgQ2xpY2tlZCcsIHtcbiAgICAgIHNlbGVjdGlvbjogc2hvd0FsbCA/ICdTaG93IExlc3MnIDogJ1Nob3cgQWxsJyxcbiAgICAgIHBhZ2VfbmFtZTogbG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICB1dGlsaXR5X25hbWU6IHdhdGVyQXV0aG9yaXR5TmFtZSxcbiAgICB9KTtcbiAgICBzZXRTaG93QWxsKCFzaG93QWxsKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIGlmIChhcmVhU2NvcmUgJiYgYXJlYVNjb3JlID49IDMwKSB7XG4gICAgaWYgKGFyZWFTY29yZSA8IDUwKSB7XG4gICAgICBzY29yZVRleHQgPSBpMThuLnQoXG4gICAgICAgICdkYXNoYm9hcmRfdjIudXRpbGl0eV9kYXNoYm9hcmQudG9wYmFyLnF1YWxpdHktc3VtbWFyeS5tZWRpdW0nLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGFyZWFTY29yZSA8IDcwKSB7XG4gICAgICBzY29yZVRleHQgPSBpMThuLnQoXG4gICAgICAgICdkYXNoYm9hcmRfdjIudXRpbGl0eV9kYXNoYm9hcmQudG9wYmFyLnF1YWxpdHktc3VtbWFyeS5oaWdoJyxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChhcmVhU2NvcmUgPj0gNzApIHtcbiAgICAgIHNjb3JlVGV4dCA9IGkxOG4udChcbiAgICAgICAgJ2Rhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC50b3BiYXIucXVhbGl0eS1zdW1tYXJ5LmV4dHJlbWUnLFxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoXG4gICAgYXJlYVNjb3JlID09PSAtMSB8fFxuICAgIChhcmVhLmlzX3N1Yl9hcmVhICYmIGFyZWEubWFpbl9jb2xsZWN0b3JzLmxlbmd0aCA9PT0gMClcbiAgKSB7XG4gICAgc2NvcmVUZXh0ID0gaTE4bi50KFxuICAgICAgJ2Rhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC50b3BiYXIucXVhbGl0eS1zdW1tYXJ5LnVuZGVmaW5lZCcsXG4gICAgKTtcbiAgfVxuXG4gIGlmIChhcmVhLmlzX3N1Yl9hcmVhICYmIGFyZWEubWFpbl9jb2xsZWN0b3JzLmxlbmd0aCA9PT0gMCkge1xuICAgIG1hcENvbG9yID0gJyM3ZjdmN2YnO1xuICB9XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRpdGxlUmVmKSB7XG4gICAgICAvL2NoZWNrIGlmIHdlIHdhbnQgdG8gZW5hYmxlIHRvb2x0aXBcbiAgICAgIHNldEVuYWJsZVRvb2x0aXAoXG4gICAgICAgIHRpdGxlUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGggPCB0aXRsZVJlZi5jdXJyZW50LnNjcm9sbFdpZHRoLFxuICAgICAgKTtcbiAgICB9XG4gIH0sIFt0aXRsZVJlZl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZExpbmtcbiAgICAgIGNsYXNzTmFtZT17IXBlcm1pc3Npb25zICYmICdkaXNhYmxlZC1saW5rJ31cbiAgICAgIHRvPXthcmVhLmRhc2hib2FyZF91cmx9XG4gICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgIGFuYWx5dGljc1RyYWNrKCdBcmVhIGNhcmQgY2xpY2tlZCcsIHtcbiAgICAgICAgICBhcmVhX25hbWU6IGFyZWEuYXJlYV9uYW1lLFxuICAgICAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgICAgICB9KTtcbiAgICAgIH19XG4gICAgPlxuICAgICAgPEJveCB1cD17dXB9IGRhdGEtYXJlYS1pZD17YXJlYS5hcmVhX2lkfT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17YGtkLXRvcCAke1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0YW50LWNvbmRpdGlvblxuICAgICAgICAgICAgZmFsc2UgJiYgZW5hYmxlVG9vbFRpcCA/ICcga2QtdG9vbHRpcCcgOiAnJ1xuICAgICAgICAgIH1gfVxuICAgICAgICAgIGRhdGEtdGV4dD17YXJlYS5hcmVhX25hbWV9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImtkLWJveC1tYWluLXRpdGxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImtkLXRpdGxlXCIgcmVmPXt0aXRsZVJlZn0+XG4gICAgICAgICAgICAgIDxUcnVuY2F0ZSBjaGFyYWN0ZXJzPXswfSBpbmhlcml0VGV4dEFsaWduPXt0cnVlfT5cbiAgICAgICAgICAgICAgICA8c3Bhbj57YXJlYS5hcmVhX25hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICA8L1RydW5jYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJrZC1mYWN0b3JpZXNcIj5cbiAgICAgICAgICAgIHtpMThuLnQoJ2Rhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC5tb3N0LXBvbGx1dGluZy5mYWN0b3JpZXMnKX1cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZhY3Rvcmllcy1udW1cIj5cbiAgICAgICAgICAgICAgeycgJ31cbiAgICAgICAgICAgICAge2FyZWEudG90YWxfZmFjdG9yaWVzfVxuICAgICAgICAgICAgICB7Jyd9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImtkLWNvbnRlbnRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImtkLXBlcmNlbnRcIj5cbiAgICAgICAgICAgIHshc2hvd0FsbCAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2NvcmUtaG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAge2kxOG4udChcbiAgICAgICAgICAgICAgICAgICAgJ2Rhc2hib2FyZF92Mi51dGlsaXR5X2Rhc2hib2FyZC50b3BiYXIucXVhbGl0eS1zdW1tYXJ5LnBvbGx1dGlvbi1zY29yZScsXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge3Nob3dJbmZvVG9vbHRpcCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxJbmZvVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtpMThuLnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGFzaGJvYXJkX3YyLnV0aWxpdHlfZGFzaGJvYXJkLnRvcGJhci5xdWFsaXR5LXN1bW1hcnkucG9sbHV0aW9uLXNjb3JlJyxcbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGE9e3Rvb2x0aXBEYXRhfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPD48Lz5cbiAgICAgICAgICAgICAgICAgICAgPC9JbmZvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwb2xsdXRpb24taG9sZGVyXCI+XG4gICAgICAgICAgICAgICAgICA8UG9sbHV0aW9uU2NvcmVQZXJjZW50XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZT17YXJlYS5wb2xsdXRpb24ucG9sbHV0ZWRfcGVyY2VudF9jaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgIGFyZWFMZW5ndGg9e1xuICAgICAgICAgICAgICAgICAgICAgIGFyZWEuaXNfc3ViX2FyZWEgPyBhcmVhLm1haW5fY29sbGVjdG9ycy5sZW5ndGggOiAxXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2NvcmVUZXh0PXtzY29yZVRleHR9XG4gICAgICAgICAgICAgICAgICAgIGFyZWFTY29yZT17YXJlYVNjb3JlfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge3Nob3dfdXNlX2Nhc2VzICYmIChcbiAgICAgICAgICAgICAgICA8UG90ZW50aWFsSW1wYWN0XG4gICAgICAgICAgICAgICAgICB1c2VfY2FzZXM9e2FyZWEudXNlX2Nhc2VzfVxuICAgICAgICAgICAgICAgICAgc2hvd19zdGF0ZT17c2hvd0FsbH1cbiAgICAgICAgICAgICAgICAgIHRvZ2dsZVNob3c9e3RvZ2dsZVBvdGVudGlhbEltcGFjdFN0YXRlc31cbiAgICAgICAgICAgICAgICA+PC9Qb3RlbnRpYWxJbXBhY3Q+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJtYXAtaG9sZGVyXCJcbiAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2V0U2hvd1BpZUNoYXJ0KHRydWUpfVxuICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiBzZXRTaG93UGllQ2hhcnQoZmFsc2UpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzaG93UGllQ2hhcnQgPyAoXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImJhY2tcIj5cbiAgICAgICAgICAgICAgICA8UGllQ2hhcnQgcXVhbGl0eT17YXJlYS5wb2xsdXRpb24udHlwZV9kaXN0cmlidXRpb259IC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwia2QtZnJvbnRcIj5cbiAgICAgICAgICAgICAgICA8TWFwXG4gICAgICAgICAgICAgICAgICBjb2xvcj17bWFwQ29sb3J9XG4gICAgICAgICAgICAgICAgICBwb2ludHM9e2FyZWEuc2hhcGVfZGF0YX1cbiAgICAgICAgICAgICAgICAgIG1hcmtlcnM9e2FyZWEubWFpbl9jb2xsZWN0b3JzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0JveD5cbiAgICA8L1N0eWxlZExpbms+XG4gICk7XG59O1xuLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbmNvbnN0IEFsaWduQ2VudGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IHNwYWNlLWJldHdlZW47XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZm9udC1zaXplOiAxNHB4O1xuYDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFNBQUEsR0FBQUYsc0JBQUEsQ0FBQUosT0FBQTtBQUVBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLHNCQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxnQkFBQSxHQUFBVCxPQUFBO0FBRUEsSUFBQVUsSUFBQSxHQUFB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