@kando-env/kando-ui 1.2.466-alpha.6 → 1.2.466-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Router.js +40 -81
- package/lib/Widgets/EventsCarousel/EventsCarousel.js +24 -35
- package/lib/Widgets/EventsRow/EventsRow.js +26 -39
- package/lib/Widgets/Map/GraphUtils.js +4 -6
- package/lib/Widgets/Map/Map.js +100 -139
- package/lib/Widgets/Map/MapUtils.js +83 -102
- package/lib/Widgets/Map/areas/AreaPolygon.js +57 -84
- package/lib/Widgets/Map/areas/AreaPolygons.js +23 -25
- package/lib/Widgets/Map/areas/AreaUtils.js +46 -46
- package/lib/Widgets/Map/areas/Patterns.js +5 -5
- package/lib/Widgets/Map/edges/Edge.js +32 -41
- package/lib/Widgets/Map/edges/Edges.js +19 -24
- package/lib/Widgets/Map/edges/arrows/Arrows.js +24 -45
- package/lib/Widgets/Map/events/Event.js +15 -14
- package/lib/Widgets/Map/events/EventIndicator.js +66 -63
- package/lib/Widgets/Map/events/EventPath.js +33 -34
- package/lib/Widgets/Map/events/EventUtils.js +54 -78
- package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +17 -19
- package/lib/Widgets/Map/events/PointOfEvent.js +27 -36
- package/lib/Widgets/Map/events/PointsForSpecificEvent.js +29 -39
- package/lib/Widgets/Map/events/Snail.js +10 -11
- package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +77 -79
- package/lib/Widgets/Map/map/FloatingGraph.js +24 -21
- package/lib/Widgets/Map/map/GraphDateButton.js +27 -20
- package/lib/Widgets/Map/matchGraph/MatchGraph.js +14 -14
- package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +17 -16
- package/lib/Widgets/Map/points/PointIcon.js +23 -22
- package/lib/Widgets/Map/points/PointMarker.js +68 -88
- package/lib/Widgets/Map/points/PointMarkers.js +30 -36
- package/lib/Widgets/Map/points/PointUtils.js +76 -90
- package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +25 -43
- package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +11 -11
- package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +11 -14
- package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +4 -6
- package/lib/Widgets/MostPolluting/Areas/Areas.js +28 -60
- package/lib/Widgets/MostPolluting/Areas/areas.mock.js +3 -4
- package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
- package/lib/Widgets/MostPolluting/Areas/styles.js +4 -6
- package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +12 -9
- package/lib/Widgets/MostPolluting/Factories/Factories.js +33 -65
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/CardLayout.js +15 -20
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +15 -20
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +9 -10
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +13 -11
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +4 -6
- package/lib/Widgets/MostPolluting/Factories/factories.mock.js +2 -3
- package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
- package/lib/Widgets/MostPolluting/Factories/styles.js +4 -6
- package/lib/Widgets/MostPolluting/MostPolluting.js +23 -34
- package/lib/Widgets/MostPolluting/MostPolluting.stories.js +20 -32
- package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +7 -5
- package/lib/Widgets/MostPolluting/ShowMore/styles.js +7 -6
- package/lib/Widgets/MostPolluting/assets/index.js +12 -12
- package/lib/Widgets/MostPolluting/components/ChangePercent.js +20 -14
- package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +36 -31
- package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +49 -54
- package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +44 -40
- package/lib/Widgets/MostPolluting/components/PotentialImpact.js +28 -27
- package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +53 -49
- package/lib/Widgets/MostPolluting/models.js +1 -1
- package/lib/Widgets/MostPolluting/styles.js +4 -6
- package/lib/Widgets/PotentialImpactSummary/Back/Back.js +8 -6
- package/lib/Widgets/PotentialImpactSummary/Icon.js +30 -39
- package/lib/Widgets/PotentialImpactSummary/index.js +20 -28
- package/lib/Widgets/PotentialImpactSummary/index.test.js +48 -54
- package/lib/Widgets/PotentialImpactSummary/styles.js +8 -13
- package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
- package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +10 -8
- package/lib/Widgets/QualitySummary/PieChart/PieChart.js +23 -18
- package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +34 -31
- package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +28 -26
- package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +35 -38
- package/lib/Widgets/QualitySummary/QualitySummary.js +10 -14
- package/lib/Widgets/QualitySummary/qualitySummary.mock.js +4 -7
- package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
- package/lib/Widgets/QualitySummary/styles.js +24 -21
- package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +12 -14
- package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +25 -25
- package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +26 -21
- package/lib/Widgets/UtilityInformation/UtilityInformation.js +23 -36
- package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
- package/lib/Widgets/UtilityInformation/styles.js +30 -31
- package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +3 -5
- package/lib/assets/icons/TopNavbar/index.js +7 -7
- package/lib/assets/icons/TrendSvg.js +7 -7
- package/lib/assets/icons/index.js +16 -16
- package/lib/assets/icons/kandoStepper/index.js +7 -7
- package/lib/assets/icons/siteTypes/index.js +2 -2
- package/lib/components/ApplyButton/ApplyButton.js +10 -11
- package/lib/components/ApplyButton/index.js +3 -4
- package/lib/components/Backdrop/Backdrop.js +7 -5
- package/lib/components/ContentLoader/ContentLoader.js +12 -10
- package/lib/components/ContentLoader/index.js +2 -2
- package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +12 -12
- package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +5 -9
- package/lib/components/CustomInputs/DoubleTabs/styles.js +21 -16
- package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +12 -20
- package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +7 -6
- package/lib/components/CustomInputs/Search/Search.js +37 -60
- package/lib/components/CustomInputs/Search/index.js +3 -4
- package/lib/components/CustomInputs/Select/Select.js +38 -55
- package/lib/components/CustomInputs/Select/Select.stories.js +6 -10
- package/lib/components/DamageType/DamageType.js +35 -60
- package/lib/components/DamageType/index.js +3 -4
- package/lib/components/DataLoaderError/DataLoaderError.js +9 -7
- package/lib/components/DischargeHeatmap/DischargeHeatmap.js +11 -13
- package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +72 -73
- package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +25 -37
- package/lib/components/DischargeHeatmap/HighchartsOptions.js +12 -16
- package/lib/components/DischargeHeatmap/index.js +3 -4
- package/lib/components/DischargeHeatmap/mocks/handlers.js +5 -6
- package/lib/components/DischargeHeatmap/popupText.js +11 -12
- package/lib/components/DischargeHeatmap/titles.js +4 -6
- package/lib/components/DischargeHeatmap/types.js +1 -1
- package/lib/components/ErrorBoundary.js +27 -42
- package/lib/components/Events/Events.js +29 -48
- package/lib/components/Events/index.js +3 -4
- package/lib/components/Graph/Graph.js +74 -95
- package/lib/components/Graph/index.js +3 -4
- package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +19 -24
- package/lib/components/Header/Breadcrumbs/index.js +3 -4
- package/lib/components/Header/DoubleTabs/DoubleTabs.js +18 -28
- package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +5 -9
- package/lib/components/Header/DoubleTabs/styles.js +5 -8
- package/lib/components/Header/Header.js +3 -3
- package/lib/components/Header/Header.stories.js +5 -9
- package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +24 -36
- package/lib/components/Header/InfoBar/InfoBar.js +69 -102
- package/lib/components/Header/InfoBar/Search/Control.js +11 -10
- package/lib/components/Header/InfoBar/Search/GroupLabel.js +8 -7
- package/lib/components/Header/InfoBar/Search/Search.js +17 -24
- package/lib/components/Header/InfoBar/Search/SearchContainer.js +21 -35
- package/lib/components/Header/InfoBar/Search/index.js +3 -4
- package/lib/components/Header/InfoBar/Search/searchStyle.js +36 -49
- package/lib/components/Header/InfoBar/TimeFilter.js +13 -17
- package/lib/components/Header/InfoBar/types.js +1 -1
- package/lib/components/Header/KandoNavbar/KandoNavbar.js +66 -93
- package/lib/components/Header/KandoNavbar/index.js +3 -4
- package/lib/components/Header/Slideshow/Slideshow.js +67 -91
- package/lib/components/Header/Slideshow/index.js +3 -4
- package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +7 -5
- package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +22 -24
- package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +17 -17
- package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +36 -42
- package/lib/components/Header/Toolbar/Toolbar.js +58 -76
- package/lib/components/InfoBar/InfoBar.js +10 -24
- package/lib/components/InfoBar/InfoBar.stories.js +5 -9
- package/lib/components/KandoModal/KandoModal.js +26 -62
- package/lib/components/KandoModal/index.js +3 -4
- package/lib/components/Link.js +9 -8
- package/lib/components/Links/CustomRedirect/CustomRedirect.js +10 -7
- package/lib/components/Links/StyledLink/StyledLink.js +17 -20
- package/lib/components/Links/StyledNavLink/StyledNavLink.js +12 -10
- package/lib/components/LiveEvents/CarouselSlide.js +11 -10
- package/lib/components/LiveEvents/LiveEvents.js +7 -6
- package/lib/components/LiveEvents/index.js +3 -4
- package/lib/components/LoaderByPercent/LoaderByPercent.js +37 -30
- package/lib/components/Map/Map.js +20 -25
- package/lib/components/Map/index.js +3 -4
- package/lib/components/Modal/Modal.js +10 -10
- package/lib/components/NarrowHeader.js +18 -32
- package/lib/components/PointInfo/PointInfo.js +20 -19
- package/lib/components/PointInfo/index.js +3 -4
- package/lib/components/PopupModal/PopupModal.js +13 -17
- package/lib/components/PopupModal/PopupModal.stories.js +17 -24
- package/lib/components/Sector/Sector.js +34 -40
- package/lib/components/Sector/Sector.test.js +24 -24
- package/lib/components/Sector/SectorIconsNew.js +26 -19
- package/lib/components/Sector/index.js +3 -4
- package/lib/components/Sector/sectorIcons.js +4 -5
- package/lib/components/SevereEvent/Eta/Eta.js +49 -54
- package/lib/components/SevereEvent/Eta/styles.js +11 -8
- package/lib/components/SevereEvent/SevereEvent.js +28 -52
- package/lib/components/SevereEvent/SevereEvent.scss +0 -24
- package/lib/components/Spinner/Spinner.js +8 -8
- package/lib/components/Spinner/Spinner.stories.js +6 -11
- package/lib/components/Spinner/index.js +3 -4
- package/lib/components/Spinner/styles.js +21 -16
- package/lib/components/Tabs/Tabs.js +18 -31
- package/lib/components/Tabs/Tabs.stories.js +6 -10
- package/lib/components/Tabs/assets/index.js +6 -6
- package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +13 -18
- package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +32 -45
- package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +20 -34
- package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +3 -4
- package/lib/components/TimeRangeSelector/TimeRangeHelper.js +17 -22
- package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +13 -14
- package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +3 -4
- package/lib/components/TimeRangeSelector/TimeRangeList.js +24 -27
- package/lib/components/TimeRangeSelector/TimeRangeOptions.js +17 -27
- package/lib/components/TimeRangeSelector/TimeRangeSelector.js +26 -31
- package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +6 -10
- package/lib/components/TimeRangeSelector/constants.js +3 -5
- package/lib/components/TimeRangeSelector/index.js +3 -4
- package/lib/components/Toggle/Toggle.js +11 -18
- package/lib/components/Toggle/index.js +3 -4
- package/lib/components/TrendGraph/TrendGraph.js +24 -42
- package/lib/components/TrendGraph/index.js +3 -4
- package/lib/components/TrendGraphNVL/TrendGraphNVL.js +26 -33
- package/lib/components/TrendGraphNVL/index.js +3 -4
- package/lib/development-environment/index.js +9 -13
- package/lib/development-environment/mock/browser.js +2 -5
- package/lib/development-environment/mock/get.js +8 -10
- package/lib/development-environment/mock/handlers.js +2 -3
- package/lib/development-environment/mock/mockBus.js +4 -5
- package/lib/development-environment/mock/mockObjects/area-trends-graph.js +2 -3
- package/lib/development-environment/mock/mockObjects/areaInformation.js +2 -3
- package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +2 -3
- package/lib/development-environment/mock/mockObjects/areaSitesData.js +2 -3
- package/lib/development-environment/mock/mockObjects/areasJson.js +2 -3
- package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +2 -3
- package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +2 -3
- package/lib/development-environment/mock/mockObjects/data-menuData.js +2 -3
- package/lib/development-environment/mock/mockObjects/data-search.js +2 -3
- package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +2 -3
- package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +2 -3
- package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +2 -3
- package/lib/development-environment/mock/mockObjects/eventsJson.js +2 -3
- package/lib/development-environment/mock/mockObjects/metascore.js +2 -3
- package/lib/development-environment/mock/mockObjects/permissionsJson.js +2 -3
- package/lib/development-environment/mock/mockObjects/pointsJson.js +2 -3
- package/lib/development-environment/mock/mockObjects/site-info.js +2 -3
- package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +2 -3
- package/lib/development-environment/togly/ToglyDashboard.js +13 -23
- package/lib/development-environment/togly/ToglyItem.js +24 -31
- package/lib/development-environment/togly/flags.js +1 -1
- package/lib/development-environment/togly/init.js +4 -4
- package/lib/development-environment/togly/macro.js +13 -9
- package/lib/development-environment/togly/useDoubleKeyDown.js +7 -9
- package/lib/development-environment/togly/useLocalStorage.js +13 -18
- package/lib/hooks/useApi.js +20 -56
- package/lib/hooks/useApiWithDashboardQuery.js +23 -43
- package/lib/hooks/useClickOutside.js +4 -5
- package/lib/hooks/useInitializeHeaders.js +6 -6
- package/lib/hooks/useKandoFetch.js +17 -31
- package/lib/hooks/useMap.js +25 -37
- package/lib/hooks/useNavContext.js +22 -26
- package/lib/hooks/useQueryURL.js +2 -3
- package/lib/hooks/useRemoveExistingLayers.js +7 -8
- package/lib/hooks/useUpdateEventBodyTail.js +14 -19
- package/lib/hooks/useUserTimeZone.js +34 -31
- package/lib/hooks/useUserTimeZone.test.js +19 -23
- package/lib/hooks/useWindowSize.js +7 -14
- package/lib/i18n/en.json +3 -15
- package/lib/i18n/fr.json +0 -4
- package/lib/i18n/he.json +1 -12
- package/lib/i18n/it.json +0 -4
- package/lib/index.js +11 -13
- package/lib/macros/getVersion.js +2 -2
- package/lib/models/IAction.js +1 -1
- package/lib/models/IAppState.js +1 -1
- package/lib/pages/AreaPage/AreaPage.js +34 -68
- package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +15 -17
- package/lib/pages/AreaPage/Dashboard/Dashboard.js +26 -28
- package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +14 -23
- package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +5 -5
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +8 -8
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +10 -10
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +4 -6
- package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
- package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +2 -3
- package/lib/pages/AreaPage/Dashboard/Sites/styles.js +5 -8
- package/lib/pages/AssessmentPage/AssessmentPage.js +38 -46
- package/lib/pages/CannyWidget/Feedback.js +14 -16
- package/lib/pages/CovidPage/CovidPage.js +9 -16
- package/lib/pages/CovidPage/components/Body.js +26 -30
- package/lib/pages/CovidPage/components/Map.js +28 -40
- package/lib/pages/CovidPage/components/Sidebar.js +15 -16
- package/lib/pages/CovidPage/components/Summary.js +20 -29
- package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +26 -33
- package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +3 -4
- package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +52 -76
- package/lib/pages/CovidPage/components/TrendPopupContent/index.js +3 -4
- package/lib/pages/CovidPage/components/areas/Area.js +24 -36
- package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +45 -46
- package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +32 -36
- package/lib/pages/CovidPage/components/areas/AreasList.js +29 -42
- package/lib/pages/CovidPage/components/areas/Sort.js +12 -17
- package/lib/pages/CovidPage/components/nvlStatusHelper.js +11 -11
- package/lib/pages/DashboardMap/AreaCard.js +27 -27
- package/lib/pages/DashboardMap/AssessmentIcon.js +8 -7
- package/lib/pages/DashboardMap/Capacity.js +28 -77
- package/lib/pages/DashboardMap/FactoryCard.js +28 -24
- package/lib/pages/DashboardMap/HighchartsOptions.js +6 -5
- package/lib/pages/DashboardMap/List.js +55 -65
- package/lib/pages/DashboardMap/ListContext.js +14 -19
- package/lib/pages/DashboardMap/Loader.js +3 -3
- package/lib/pages/DashboardMap/SeverityBadge.js +16 -24
- package/lib/pages/DashboardMap/WWTPMap.js +57 -71
- package/lib/pages/DashboardMap/WaterDischarge.js +9 -9
- package/lib/pages/DashboardMap/Widget.js +48 -67
- package/lib/pages/DashboardMap/index.js +3 -4
- package/lib/pages/DashboardMap/utils.js +41 -60
- package/lib/pages/EventsPage/Body/Body.js +15 -12
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +17 -20
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +16 -27
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +10 -9
- package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +13 -10
- package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +22 -31
- package/lib/pages/EventsPage/DragAndDropArea/index.js +3 -4
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +30 -38
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +14 -23
- package/lib/pages/EventsPage/EventsPage.js +10 -17
- package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +26 -40
- package/lib/pages/EventsPage/events/MoreInfo.js +18 -19
- package/lib/pages/EventsPage/events/Sidebar.js +14 -11
- package/lib/pages/EventsPage/events/event_info/Contaminants/Contaminants.js +9 -10
- package/lib/pages/EventsPage/events/event_info/Contaminants/ContaminantsList.js +19 -24
- package/lib/pages/EventsPage/events/event_info/Contaminants/index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +31 -38
- package/lib/pages/EventsPage/events/event_info/EventDetails.js +35 -33
- package/lib/pages/EventsPage/events/event_info/EventInfo.js +50 -60
- package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +5 -5
- package/lib/pages/EventsPage/events/event_info/EventSection.js +18 -21
- package/lib/pages/EventsPage/events/event_info/EventSection.test.js +29 -23
- package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +39 -50
- package/lib/pages/EventsPage/events/event_info/Header/Header.js +8 -7
- package/lib/pages/EventsPage/events/event_info/Header/HeaderContainer.js +30 -35
- package/lib/pages/EventsPage/events/event_info/Header/index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +6 -7
- package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +30 -39
- package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +6 -9
- package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionAssessment.js +14 -15
- package/lib/pages/EventsPage/events/event_info/PollutionAssessment /PollutionTypesList.js +9 -12
- package/lib/pages/EventsPage/events/event_info/PollutionAssessment /index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +23 -24
- package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResult.js +13 -22
- package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/LabResultButton.js +7 -6
- package/lib/pages/EventsPage/events/event_info/SamplingList/LabResult/index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SamplingList/SamplingDetails.js +13 -12
- package/lib/pages/EventsPage/events/event_info/SamplingList/Samplings.js +22 -28
- package/lib/pages/EventsPage/events/event_info/SamplingList/index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SeverityScore/ScoreExplanation.js +13 -10
- package/lib/pages/EventsPage/events/event_info/SeverityScore/SeverityScore.js +8 -9
- package/lib/pages/EventsPage/events/event_info/SeverityScore/index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/SourceDetails/Confidence.js +9 -9
- package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.js +4 -5
- package/lib/pages/EventsPage/events/event_info/SourceDetails/Discharging.test.js +13 -11
- package/lib/pages/EventsPage/events/event_info/SourceDetails/IconAndTitles.js +7 -5
- package/lib/pages/EventsPage/events/event_info/SourceDetails/MoreInfoButton.js +11 -14
- package/lib/pages/EventsPage/events/event_info/SourceDetails/OtherSources.js +7 -6
- package/lib/pages/EventsPage/events/event_info/SourceDetails/PotentialSources.js +9 -8
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SingleSource.js +9 -8
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceCardBody.js +8 -7
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.js +13 -12
- package/lib/pages/EventsPage/events/event_info/SourceDetails/SourceDetails.test.js +18 -19
- package/lib/pages/EventsPage/events/event_info/SourceDetails/WaterDischarge.js +7 -7
- package/lib/pages/EventsPage/events/event_info/Timelines/DischargeBox.js +9 -8
- package/lib/pages/EventsPage/events/event_info/Timelines/EarlyWarning.js +19 -18
- package/lib/pages/EventsPage/events/event_info/Timelines/LiveStatusBadge.js +6 -7
- package/lib/pages/EventsPage/events/event_info/Timelines/SeenBox.js +13 -12
- package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.js +23 -19
- package/lib/pages/EventsPage/events/event_info/Timelines/Timelines.test.js +12 -11
- package/lib/pages/EventsPage/events/event_info/Timelines/Titles.js +8 -7
- package/lib/pages/EventsPage/events/event_info/Timelines/index.js +3 -4
- package/lib/pages/EventsPage/events/event_info/Timelines/style.js +4 -6
- package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +25 -40
- package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +30 -39
- package/lib/pages/EventsPage/events/event_info/samplingsOld/Sampling.js +13 -12
- package/lib/pages/EventsPage/events/event_info/samplingsOld/Samplings.js +17 -20
- package/lib/pages/EventsPage/events/event_info/sources/Source.js +27 -31
- package/lib/pages/EventsPage/events/event_info/sources/Sources.js +22 -27
- package/lib/pages/EventsPage/events/event_info/styles.js +21 -15
- package/lib/pages/EventsPage/events/events_list/EventItem.js +18 -21
- package/lib/pages/EventsPage/events/events_list/EventUtils.js +11 -11
- package/lib/pages/EventsPage/events/events_list/EventsList.js +111 -142
- package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +41 -58
- package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +90 -135
- package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +54 -76
- package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +39 -44
- package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +32 -41
- package/lib/pages/EventsPage/events/events_list/Filter/SingleSelect.js +19 -21
- package/lib/pages/EventsPage/events/events_list/Sort.js +28 -39
- package/lib/pages/ImportFileWizard/FileUploadRespones.js +14 -22
- package/lib/pages/ImportFileWizard/ImportButtomButtons.js +9 -8
- package/lib/pages/ImportFileWizard/ImportFile.js +21 -25
- package/lib/pages/ImportFileWizard/ResponseBody.js +26 -36
- package/lib/pages/ImportFileWizard/ValidationForm.js +23 -23
- package/lib/pages/ImportFileWizard/ValidationResponse.js +23 -25
- package/lib/pages/ImportFileWizard/importFileUtils.js +4 -5
- package/lib/pages/ImportFileWizard/index.js +3 -4
- package/lib/pages/ImportGisPage/ImportGisContainer.js +22 -27
- package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +38 -44
- package/lib/pages/ImportGisPage/importGisUtils.js +43 -52
- package/lib/pages/ImportGisProcess/index.js +14 -18
- package/lib/pages/ImportSiteProcess/index.js +14 -18
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +7 -13
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +18 -20
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +4 -4
- package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +28 -60
- package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +8 -12
- package/lib/pages/NotificationsPage/Notification/Notification.js +17 -13
- package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
- package/lib/pages/NotificationsPage/Notifications.mock.js +2 -3
- package/lib/pages/NotificationsPage/Notifications.stories.js +6 -10
- package/lib/pages/NotificationsPage/NotificationsPage.js +19 -38
- package/lib/pages/NotificationsPage/assets/index.js +10 -10
- package/lib/pages/NotificationsPageV2/NotificationsPage.js +72 -101
- package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +95 -65
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/EventType.js +13 -15
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSendVia.js +19 -17
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSensors.js +18 -22
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationSources.js +18 -22
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationTags.js +19 -23
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +82 -71
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/WaterAuthoritySelection.js +19 -23
- package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +71 -74
- package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +80 -94
- package/lib/pages/NotificationsPageV2/notificationUtils.js +40 -39
- package/lib/pages/OldSitePage/IDashboardData.js +1 -1
- package/lib/pages/OldSitePage/OldSitePage.js +56 -132
- package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +6 -10
- package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -9
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +9 -7
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +16 -19
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +10 -12
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +12 -19
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +14 -11
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -9
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -16
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +51 -64
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +10 -8
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +29 -54
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +4 -7
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +12 -19
- package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +11 -11
- package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +10 -12
- package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +27 -23
- package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +28 -30
- package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
- package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +5 -8
- package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +16 -12
- package/lib/pages/OperationsPage/LeftPanel.js +35 -55
- package/lib/pages/OperationsPage/Map/Map.js +12 -12
- package/lib/pages/OperationsPage/Map/useMap.js +52 -64
- package/lib/pages/OperationsPage/OperationsContainerPage.js +32 -59
- package/lib/pages/OperationsPage/OperationsFilePage.js +10 -12
- package/lib/pages/OperationsPage/OperationsUtilityPage.js +5 -6
- package/lib/pages/OperationsPage/RightPanel.js +22 -25
- package/lib/pages/OperationsPage/index.js +4 -4
- package/lib/pages/PollutionRiskAssessment/FactoryDetails.js +27 -60
- package/lib/pages/PollutionRiskAssessment/FilterBehaviors.js +19 -25
- package/lib/pages/PollutionRiskAssessment/FilterButton.js +11 -10
- package/lib/pages/PollutionRiskAssessment/Map.js +38 -42
- package/lib/pages/PollutionRiskAssessment/SearchButton.js +11 -10
- package/lib/pages/PollutionRiskAssessment/SearchField.js +26 -40
- package/lib/pages/PollutionRiskAssessment/TotalSavings.js +16 -16
- package/lib/pages/PollutionRiskAssessment/UseCases.js +32 -34
- package/lib/pages/PollutionRiskAssessment/index.js +76 -136
- package/lib/pages/PollutionRiskAssessment/useMap.js +34 -50
- package/lib/pages/PollutionRiskAssessment/utils.js +7 -7
- package/lib/pages/ProfilePage/Container.js +3 -4
- package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +23 -40
- package/lib/pages/ProfilePage/ProfilePage.js +106 -205
- package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +25 -34
- package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +20 -20
- package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +27 -30
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +57 -119
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +18 -23
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +14 -13
- package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +40 -45
- package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +25 -24
- package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +18 -19
- package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +15 -18
- package/lib/pages/SamplingsPage/DesktopActions/index.js +3 -4
- package/lib/pages/SamplingsPage/NavigationDropdown.js +43 -31
- package/lib/pages/SamplingsPage/NewSamplingAction.js +75 -102
- package/lib/pages/SamplingsPage/SamplingMobileModal.js +124 -98
- package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +23 -25
- package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +36 -25
- package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +36 -61
- package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +16 -21
- package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +10 -9
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +108 -193
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +47 -54
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +42 -39
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +42 -39
- package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +21 -28
- package/lib/pages/SamplingsPage/SamplingProperties/styles.js +4 -6
- package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +11 -7
- package/lib/pages/SamplingsPage/SamplingsMobileItem.js +51 -53
- package/lib/pages/SamplingsPage/SamplingsMobileList.js +22 -31
- package/lib/pages/SamplingsPage/SamplingsPage.js +25 -33
- package/lib/pages/SamplingsPage/SamplingsPageContainer.js +49 -58
- package/lib/pages/SamplingsPage/index.js +2 -3
- package/lib/pages/SamplingsPage/samplingsPageUtils.js +52 -83
- package/lib/pages/SitePage/DischargePattern/DischargePattern.js +7 -6
- package/lib/pages/SitePage/PollutionContributor/PollutionContributor.js +16 -16
- package/lib/pages/SitePage/PollutionContributor/PollutionContributorContainer.js +12 -16
- package/lib/pages/SitePage/PollutionContributor/contributorUtils.js +16 -16
- package/lib/pages/SitePage/PollutionContributor/index.js +3 -4
- package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +5 -9
- package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +15 -15
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +10 -9
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +27 -24
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +12 -16
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +37 -33
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +10 -12
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +15 -25
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +14 -11
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -9
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +18 -16
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +58 -71
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +10 -8
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +15 -27
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +5 -9
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +12 -19
- package/lib/pages/SitePage/SamplingParameters/body/Body.js +10 -9
- package/lib/pages/SitePage/SamplingParameters/body/BodyContainer.js +30 -40
- package/lib/pages/SitePage/SamplingParameters/body/index.js +3 -4
- package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +11 -12
- package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +10 -12
- package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +54 -54
- package/lib/pages/SitePage/SamplingParameters/dataParser.js +32 -41
- package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +11 -9
- package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
- package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +5 -8
- package/lib/pages/SitePage/SamplingParameters/styles/styles.js +16 -12
- package/lib/pages/SitePage/SiteInformation/EmptyState.js +13 -10
- package/lib/pages/SitePage/SiteInformation/SiteInformation.js +31 -31
- package/lib/pages/SitePage/SitePage.js +37 -77
- package/lib/pages/UploadLabResult/index.js +15 -16
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +27 -37
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +8 -13
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +11 -15
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +5 -9
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +47 -50
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +11 -8
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +4 -5
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +6 -9
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +11 -10
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
- package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +16 -13
- package/lib/pages/UtilityDashboardPage/TopBar/constants.js +8 -8
- package/lib/pages/UtilityDashboardPage/TopBar/styles.js +3 -4
- package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +20 -30
- package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +28 -40
- package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +15 -17
- package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +7 -14
- package/lib/pages/UtilityDashboardPage/VirtualAreaDashboardPage.js +26 -31
- package/lib/pages/WbeDashboard/ExpandableComponent.js +9 -9
- package/lib/pages/WbeDashboard/GraphWrapper.js +28 -35
- package/lib/pages/WbeDashboard/IndividualTinyGraph.js +16 -19
- package/lib/pages/WbeDashboard/SearchInput.js +15 -21
- package/lib/pages/WbeDashboard/SummaryGraph.js +50 -77
- package/lib/pages/WbeDashboard/SummaryGraphModal.js +20 -18
- package/lib/pages/WbeDashboard/Tabs.js +11 -11
- package/lib/pages/WbeDashboard/WbeDashboardPage.js +147 -210
- package/lib/pages/WbeDashboard/WbeSummaryBar.js +39 -48
- package/lib/pages/WwtpPage/DashboardCard.js +25 -21
- package/lib/pages/WwtpPage/DischargePatternCard.js +14 -25
- package/lib/pages/WwtpPage/InletsCard/InletsBar.js +11 -11
- package/lib/pages/WwtpPage/InletsCard/InletsCard.js +22 -22
- package/lib/pages/WwtpPage/InletsCard/index.js +3 -4
- package/lib/pages/WwtpPage/Map.js +6 -6
- package/lib/pages/WwtpPage/OrganicCard.js +4 -5
- package/lib/pages/WwtpPage/PotentialSaving/ImpactCard.js +4 -5
- package/lib/pages/WwtpPage/PotentialSaving/PotentialItem.js +8 -7
- package/lib/pages/WwtpPage/PotentialSaving/PotentialSaving.js +11 -11
- package/lib/pages/WwtpPage/PotentialSaving/PotentialSavingContainer.js +20 -17
- package/lib/pages/WwtpPage/PotentialSaving/index.js +3 -4
- package/lib/pages/WwtpPage/PotentialSaving/types.js +1 -1
- package/lib/pages/WwtpPage/PredictionCard.js +4 -5
- package/lib/pages/WwtpPage/TrendCard.js +20 -22
- package/lib/pages/WwtpPage/UpgradeBox.js +4 -5
- package/lib/pages/WwtpPage/WwtpPage.js +9 -8
- package/lib/pages/WwtpPage/WwtpPageContainer.js +23 -19
- package/lib/pages/WwtpPage/index.js +3 -4
- package/lib/providers/Slideshow/SlideshowContext.js +11 -10
- package/lib/providers/Slideshow/SlideshowProvider.js +22 -40
- package/lib/providers/Slideshow/SlideshowRunner.js +18 -21
- package/lib/providers/UrlHistory/UrlHistoryContext.js +7 -6
- package/lib/providers/UrlHistory/UrlHistoryProvider.js +12 -13
- package/lib/providers/UrlHistory/index.js +4 -4
- package/lib/providers/UrlHistory/useLastVisited.js +5 -6
- package/lib/react-app-env.d.js +1 -1
- package/lib/store/ImportGis/action.js +1 -1
- package/lib/store/ImportGis/actionTypes.js +4 -5
- package/lib/store/ImportGis/actionsCreator.js +7 -5
- package/lib/store/ImportGis/models/gisImports.js +1 -1
- package/lib/store/ImportGis/reducer.js +9 -7
- package/lib/store/WBE/actionTypes.js +2 -3
- package/lib/store/WBE/actions.js +1 -1
- package/lib/store/WBE/models/IAreaWBE.js +1 -1
- package/lib/store/WBE/models/IWBE.js +1 -1
- package/lib/store/WBE/models/IWBEState.js +1 -1
- package/lib/store/WBE/reducer.js +10 -8
- package/lib/store/WWTPDashboard/WWTPDashboardSlice.js +24 -15
- package/lib/store/WWTPDashboard/types.js +1 -1
- package/lib/store/areas/actionTypes.js +4 -7
- package/lib/store/areas/actions.js +7 -13
- package/lib/store/areas/models/IArea.js +1 -1
- package/lib/store/areas/models/IAreasState.js +1 -1
- package/lib/store/areas/reducer.js +8 -6
- package/lib/store/context/actionTypes.js +3 -5
- package/lib/store/context/actions.js +3 -3
- package/lib/store/context/contextMiddlewares.js +15 -18
- package/lib/store/context/models/INavContext.js +1 -1
- package/lib/store/context/models/INavContextState.js +1 -1
- package/lib/store/context/reducer.js +10 -8
- package/lib/store/dashboard/dashboardSlice.js +18 -11
- package/lib/store/dashboard/periodType.js +1 -1
- package/lib/store/edges/actionTypes.js +5 -9
- package/lib/store/edges/actions.js +4 -8
- package/lib/store/edges/models/IEdge.js +1 -1
- package/lib/store/edges/models/IEdgesState.js +1 -1
- package/lib/store/edges/reducer.js +13 -17
- package/lib/store/events/actionTypes.js +17 -33
- package/lib/store/events/actions.js +3 -7
- package/lib/store/events/models/IEvent.js +1 -1
- package/lib/store/events/models/IEventsState.js +1 -1
- package/lib/store/events/models/ISource.js +1 -1
- package/lib/store/events/reducer.js +28 -39
- package/lib/store/filters/IFilter.js +1 -1
- package/lib/store/filters/IFilterItem.js +1 -1
- package/lib/store/global/actionTypes.js +11 -21
- package/lib/store/global/actions.js +8 -6
- package/lib/store/global/models/IGlobalState.js +1 -1
- package/lib/store/global/reducer.js +9 -7
- package/lib/store/permissions/permissionsSlice.js +12 -9
- package/lib/store/points/actionTypes.js +3 -5
- package/lib/store/points/actions.js +6 -10
- package/lib/store/points/models/IGeoPoint.js +1 -1
- package/lib/store/points/models/IGroup.js +1 -1
- package/lib/store/points/models/IIssue.js +1 -1
- package/lib/store/points/models/IPoint.js +1 -1
- package/lib/store/points/models/IPointsState.js +1 -1
- package/lib/store/points/reducer.js +7 -5
- package/lib/store/rootActionTypes.js +2 -3
- package/lib/store/rootActions.js +1 -1
- package/lib/store/rootReducer.js +12 -10
- package/lib/store/rootStore.js +6 -6
- package/lib/store/samplings/action.js +1 -1
- package/lib/store/samplings/actionTypes.js +4 -5
- package/lib/store/samplings/actionsCreator.js +1 -1
- package/lib/store/samplings/models/Samplings.js +1 -1
- package/lib/store/samplings/reducer.js +10 -10
- package/lib/styles/StylesLayout.js +7 -6
- package/lib/styles/theme/theme.js +23 -26
- package/lib/test/mocks/browser.js +2 -5
- package/lib/test/test-utils.js +12 -9
- package/lib/ui-kit/Alert/KandoAlert.js +8 -6
- package/lib/ui-kit/Button/Button.js +129 -83
- package/lib/ui-kit/Button/Button.test.js +27 -33
- package/lib/ui-kit/Button/ButtonUtils.js +1 -1
- package/lib/ui-kit/Checkbox/Checkbox.js +34 -27
- package/lib/ui-kit/ContentCard/ContentCard.js +16 -20
- package/lib/ui-kit/Dashboard/Dashboard.js +29 -28
- package/lib/ui-kit/Dashboard/index.js +3 -4
- package/lib/ui-kit/DropDown/DropDown.js +23 -22
- package/lib/ui-kit/DropDown/DropDown.test.js +13 -13
- package/lib/ui-kit/DropDown/DropDownItem.js +26 -25
- package/lib/ui-kit/DropDown/DropdownToggle.js +13 -10
- package/lib/ui-kit/EmptyState/EmptyState.js +7 -6
- package/lib/ui-kit/HierarchyGraph/AutoFitTree.js +69 -81
- package/lib/ui-kit/HierarchyGraph/HierarchyGraph.js +89 -167
- package/lib/ui-kit/HierarchyGraph/LeafSign.js +7 -7
- package/lib/ui-kit/HierarchyGraph/MicroStackedBar.js +17 -19
- package/lib/ui-kit/HierarchyGraph/NodeIcon.js +9 -8
- package/lib/ui-kit/HierarchyGraph/NodeLayout.js +22 -25
- package/lib/ui-kit/HierarchyGraph/PollutionContributorNode.js +11 -10
- package/lib/ui-kit/HierarchyGraph/ScoreNode.js +10 -9
- package/lib/ui-kit/HierarchyGraph/index.js +3 -4
- package/lib/ui-kit/HierarchyGraph/utils.js +57 -67
- package/lib/ui-kit/IconAction/IconAction.js +9 -8
- package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +47 -64
- package/lib/ui-kit/InfoTooltip/InfoTooltip.js +58 -49
- package/lib/ui-kit/InletsPie/InletsPie.js +17 -16
- package/lib/ui-kit/InletsPie/index.js +3 -4
- package/lib/ui-kit/InletsPie/options.js +7 -9
- package/lib/ui-kit/KandoBottomSheet/KandoBottomSheet.js +29 -38
- package/lib/ui-kit/KandoFilter/KandoFilter.js +10 -11
- package/lib/ui-kit/KandoList/KandoList.js +13 -12
- package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
- package/lib/ui-kit/KandoTable/KandoTable.js +48 -41
- package/lib/ui-kit/KandoTable/KandoTable.test.js +21 -27
- package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
- package/lib/ui-kit/Layout/Layout.js +8 -7
- package/lib/ui-kit/MobileInput/MobileInput.js +56 -50
- package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +14 -17
- package/lib/ui-kit/ModalConfirmation/index.js +2 -3
- package/lib/ui-kit/OrganicEvents/GaugeChart.js +9 -8
- package/lib/ui-kit/OrganicEvents/OrganicEvents.js +8 -9
- package/lib/ui-kit/OrganicEvents/OrganicEventsContainer.js +26 -22
- package/lib/ui-kit/OrganicEvents/TextInfo.js +17 -13
- package/lib/ui-kit/OrganicEvents/index.js +3 -4
- package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +12 -11
- package/lib/ui-kit/SamplingStatus/SamplingStatus.js +17 -21
- package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +3 -4
- package/lib/ui-kit/ScoreGauge/ScoreGauge.js +21 -24
- package/lib/ui-kit/ScoreGauge/constant.js +3 -4
- package/lib/ui-kit/ScoreGauge/index.js +3 -4
- package/lib/ui-kit/TimeLineChart/TrendChart.js +25 -28
- package/lib/ui-kit/TimeLineChart/index.js +3 -4
- package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +10 -11
- package/lib/ui-kit/Tooltip/Tooltip.js +15 -9
- package/lib/ui-kit/index.js +8 -8
- package/lib/ui-kit/kandoStepper/KandoStepper.js +13 -14
- package/lib/ui-kit/siteName/SiteName.js +13 -11
- package/lib/utilities/ActionUtility.js +7 -7
- package/lib/utilities/Alert.js +23 -20
- package/lib/utilities/Analytics.js +19 -19
- package/lib/utilities/Array.js +4 -5
- package/lib/utilities/Enum.js +15 -51
- package/lib/utilities/ErrorBoundary.js +27 -42
- package/lib/utilities/File.js +45 -73
- package/lib/utilities/GetDir.js +10 -10
- package/lib/utilities/KandoDate.js +7 -15
- package/lib/utilities/KandoModal.js +16 -28
- package/lib/utilities/LocalStorage.js +5 -7
- package/lib/utilities/ThousandsToK.js +2 -2
- package/lib/utilities/TimeFormat.js +22 -23
- package/lib/utilities/Truncate.js +17 -27
- package/lib/utilities/edgesMath.js +15 -16
- package/lib/utilities/i18n.js +5 -6
- package/lib/utilities/kql.js +10 -12
- package/lib/utilities/map/icons.js +18 -18
- package/lib/utilities/polylinedecorator.js +88 -113
- package/lib/utilities/scoreToData.js +20 -26
- package/lib/utilities/scoreToData.test.js +5 -5
- package/lib/utilities/time.js +9 -10
- package/lib/utilities/uploadToS3.js +12 -12
- package/lib/utilities/urls.js +19 -16
- package/package.json +12 -9
- package/lib/components/SeasonalInsights/SeasonalInsights.js +0 -150
- package/lib/components/SevereEvent/UpstreamBadge.js +0 -60
- package/lib/components/TopBanner/TopBanner.js +0 -235
- package/lib/components/TopBanner/insightsDismissalStorage.js +0 -36
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.SamplingProperties = void 0;
|
|
9
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
11
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
|
|
12
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
13
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
10
|
var _axios = _interopRequireDefault(require("axios"));
|
|
15
11
|
var _reactDeviceDetect = require("react-device-detect");
|
|
@@ -28,64 +24,34 @@ var _SamplingPropertiesHead = require("./SamplingPropertiesHead");
|
|
|
28
24
|
var _SamplingPropertiesHeadMobile = require("./SamplingPropertiesHeadMobile");
|
|
29
25
|
var _samplingPropertiesUtils = require("./samplingPropertiesUtils");
|
|
30
26
|
var _SamplerInProcess = _interopRequireDefault(require("./SamplerInProcess"));
|
|
31
|
-
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); }
|
|
32
|
-
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; }
|
|
33
27
|
/*
|
|
34
28
|
* Properties and Cancelling forms.
|
|
35
29
|
**/
|
|
36
30
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
var _useState11 = (0, _react.useState)(undefined),
|
|
62
|
-
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
63
|
-
samplingPlan = _useState12[0],
|
|
64
|
-
setSamplingPlan = _useState12[1];
|
|
65
|
-
var history = (0, _reactRouterDom.useHistory)();
|
|
66
|
-
var location = (0, _reactRouterDom.useLocation)();
|
|
67
|
-
var query = (0, _useQueryURL.default)();
|
|
68
|
-
var userInfo = (0, _reactRedux.useSelector)(function (state) {
|
|
69
|
-
return state.permissions.user_info;
|
|
70
|
-
});
|
|
71
|
-
var dateFormat = userInfo.date_time_format === 'us' ? 'MMM d, yyyy hh:mm aa' : 'd/MM/yyyy HH:mm';
|
|
72
|
-
var pageType = (0, _react.useRef)('');
|
|
73
|
-
var _useState13 = (0, _react.useState)(),
|
|
74
|
-
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
75
|
-
samplingProperties = _useState14[0],
|
|
76
|
-
setSamplingProperties = _useState14[1];
|
|
77
|
-
var _useParams = (0, _reactRouterDom.useParams)(),
|
|
78
|
-
sampleId = _useParams.sampleId;
|
|
79
|
-
var waterAuthorityId = (0, _reactRedux.useSelector)(function (state) {
|
|
80
|
-
return state.global_data.waterAuthorityId;
|
|
81
|
-
});
|
|
82
|
-
var locale = (0, _reactRedux.useSelector)(function (state) {
|
|
83
|
-
return state.nav_context_data.navContext.locale;
|
|
84
|
-
});
|
|
85
|
-
var initFormikValues = function initFormikValues(samplingProperties, isCanceled, timeZone, userInfo) {
|
|
86
|
-
var pageCollectionTime = (0, _samplingPropertiesUtils.isCollectLayout)(pageType.current) ? collectionTime : (0, _samplingPropertiesUtils.collectionTimeFormat)(samplingProperties.sampling.collection_time, timeZone);
|
|
87
|
-
var sam = samplingProperties.sampling;
|
|
88
|
-
var formikValues = {
|
|
31
|
+
const isPropertiesPage = pageType => pageType === 'edit';
|
|
32
|
+
const SamplingProperties = () => {
|
|
33
|
+
const [collectionTime, setCollectionTime] = (0, _react.useState)(new Date());
|
|
34
|
+
const [photos, setPhotos] = (0, _react.useState)([]);
|
|
35
|
+
const [photosToDelete, setPhotosToDelete] = (0, _react.useState)([]);
|
|
36
|
+
const [savingMsg, setSavingMsg] = (0, _react.useState)(_i18n.default.t('buttons.save'));
|
|
37
|
+
const [samplingUpdated, setSamplingUpdated] = (0, _react.useState)(false);
|
|
38
|
+
const [samplingPlan, setSamplingPlan] = (0, _react.useState)(undefined);
|
|
39
|
+
const history = (0, _reactRouterDom.useHistory)();
|
|
40
|
+
const location = (0, _reactRouterDom.useLocation)();
|
|
41
|
+
const query = (0, _useQueryURL.default)();
|
|
42
|
+
const userInfo = (0, _reactRedux.useSelector)(state => state.permissions.user_info);
|
|
43
|
+
const dateFormat = userInfo.date_time_format === 'us' ? 'MMM d, yyyy hh:mm aa' : 'd/MM/yyyy HH:mm';
|
|
44
|
+
const pageType = (0, _react.useRef)('');
|
|
45
|
+
const [samplingProperties, setSamplingProperties] = (0, _react.useState)();
|
|
46
|
+
const {
|
|
47
|
+
sampleId
|
|
48
|
+
} = (0, _reactRouterDom.useParams)();
|
|
49
|
+
const waterAuthorityId = (0, _reactRedux.useSelector)(state => state.global_data.waterAuthorityId);
|
|
50
|
+
const locale = (0, _reactRedux.useSelector)(state => state.nav_context_data.navContext.locale);
|
|
51
|
+
const initFormikValues = (samplingProperties, isCanceled, timeZone, userInfo) => {
|
|
52
|
+
const pageCollectionTime = (0, _samplingPropertiesUtils.isCollectLayout)(pageType.current) ? collectionTime : (0, _samplingPropertiesUtils.collectionTimeFormat)(samplingProperties.sampling.collection_time, timeZone);
|
|
53
|
+
const sam = samplingProperties.sampling;
|
|
54
|
+
let formikValues = {
|
|
89
55
|
lab_id: sam.lab_id,
|
|
90
56
|
collection_time: pageCollectionTime,
|
|
91
57
|
pump_sampling_volume: sam.pump_sampling_volume,
|
|
@@ -103,178 +69,127 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
103
69
|
formikValues.kando_rep = samplingProperties.sampling.kando_rep;
|
|
104
70
|
formik.setValues(formikValues);
|
|
105
71
|
};
|
|
106
|
-
|
|
107
|
-
|
|
72
|
+
const isCancelledLayout = samplingProperties => {
|
|
73
|
+
const pageType2isCancelled = {
|
|
108
74
|
cancel: true,
|
|
109
75
|
collect: false,
|
|
110
76
|
revert_cancel: false
|
|
111
77
|
};
|
|
112
|
-
|
|
78
|
+
let isCanceled = pageType2isCancelled[pageType.current];
|
|
113
79
|
if (isCanceled === null) {
|
|
114
80
|
isCanceled = samplingProperties.sampling.is_canceled || false;
|
|
115
81
|
}
|
|
116
82
|
return isCanceled;
|
|
117
83
|
};
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
samplingId: samplingId
|
|
135
|
-
}).samplingProperties.fetchSampling.url);
|
|
136
|
-
case 4:
|
|
137
|
-
response = _context.sent;
|
|
138
|
-
sampling = response.data;
|
|
139
|
-
samplingProperties = sampling.sampling_properties;
|
|
140
|
-
pageType.current = detectPageType(samplingProperties.sampling.is_canceled, op);
|
|
141
|
-
setCollectionTime(determineCollectionTime((0, _samplingPropertiesUtils.collectionTimeFormat)(samplingProperties.sampling.collection_time, sampling.sampling_plan.time_zone), op));
|
|
142
|
-
isCanceled = isCancelledLayout(samplingProperties.sampling.is_canceled);
|
|
143
|
-
initFormikValues(samplingProperties, isCanceled, sampling.sampling_plan.time_zone, userInfo);
|
|
144
|
-
setSamplingProperties(samplingProperties);
|
|
145
|
-
setSamplingPlan(sampling.sampling_plan);
|
|
146
|
-
case 13:
|
|
147
|
-
case "end":
|
|
148
|
-
return _context.stop();
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}, _callee);
|
|
152
|
-
})), []);
|
|
153
|
-
(0, _react.useEffect)(function () {
|
|
84
|
+
const fetchSamplingProperties = (0, _react.useCallback)(async function () {
|
|
85
|
+
let samplingId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : sampleId;
|
|
86
|
+
let op = arguments.length > 1 ? arguments[1] : undefined;
|
|
87
|
+
const response = await _axios.default.get((0, _urls.urls)({
|
|
88
|
+
samplingId: samplingId
|
|
89
|
+
}).samplingProperties.fetchSampling.url);
|
|
90
|
+
const sampling = response.data;
|
|
91
|
+
const samplingProperties = sampling.sampling_properties;
|
|
92
|
+
pageType.current = detectPageType(samplingProperties.sampling.is_canceled, op);
|
|
93
|
+
setCollectionTime(determineCollectionTime((0, _samplingPropertiesUtils.collectionTimeFormat)(samplingProperties.sampling.collection_time, sampling.sampling_plan.time_zone), op));
|
|
94
|
+
let isCanceled = isCancelledLayout(samplingProperties.sampling.is_canceled);
|
|
95
|
+
initFormikValues(samplingProperties, isCanceled, sampling.sampling_plan.time_zone, userInfo);
|
|
96
|
+
setSamplingProperties(samplingProperties);
|
|
97
|
+
setSamplingPlan(sampling.sampling_plan);
|
|
98
|
+
}, []);
|
|
99
|
+
(0, _react.useEffect)(() => {
|
|
154
100
|
fetchSamplingProperties(sampleId, getUrlQueryOp());
|
|
155
101
|
}, [samplingUpdated]);
|
|
156
|
-
|
|
157
|
-
|
|
102
|
+
const validationSchema = (0, _samplingPropertiesUtils.isCollectLayout)(pageType.current) ? _samplingPropertiesUtils.propertiesValidationSchema : _samplingPropertiesUtils.cancellationValidationSchema;
|
|
103
|
+
const formik = (0, _formik.useFormik)({
|
|
158
104
|
enableReinitialize: true,
|
|
159
105
|
initialValues: _samplingPropertiesUtils.samplingProperty,
|
|
160
106
|
validationSchema: validationSchema,
|
|
161
107
|
validateOnChange: false,
|
|
162
108
|
validateOnBlur: true,
|
|
163
|
-
onSubmit:
|
|
109
|
+
onSubmit: values => {
|
|
164
110
|
handleSubmit(values);
|
|
165
111
|
}
|
|
166
112
|
});
|
|
167
|
-
|
|
113
|
+
const handleClose = () => {
|
|
168
114
|
if (location.key) {
|
|
169
115
|
history.goBack();
|
|
170
116
|
} else {
|
|
171
117
|
history.push((0, _urls.urls)({
|
|
172
|
-
locale
|
|
173
|
-
waterAuthorityId
|
|
118
|
+
locale,
|
|
119
|
+
waterAuthorityId
|
|
174
120
|
}).samplingsPage.samplingsListRoute.url);
|
|
175
121
|
}
|
|
176
122
|
};
|
|
177
|
-
|
|
123
|
+
const handleSubmit = values => {
|
|
178
124
|
var _samplingProperties$s;
|
|
179
125
|
setSavingMsg(_i18n.default.t('buttons.saving'));
|
|
180
126
|
values.pictures_attributes = photos;
|
|
181
127
|
if (values.canceled_by_id && isCancelledLayout(samplingProperties)) values.canceled_by_id = (samplingProperties === null || samplingProperties === void 0 ? void 0 : (_samplingProperties$s = samplingProperties.sampling) === null || _samplingProperties$s === void 0 ? void 0 : _samplingProperties$s.canceled_by_id) || userInfo.id;
|
|
182
|
-
|
|
128
|
+
const time_zone = (samplingPlan === null || samplingPlan === void 0 ? void 0 : samplingPlan.time_zone) || 'UTC';
|
|
183
129
|
values.collection_time = (0, _samplingPropertiesUtils.collectionTimeInTimeZone)(values.collection_time, time_zone);
|
|
184
|
-
|
|
130
|
+
const saveFormData = formDataBuilder(values);
|
|
185
131
|
updateOrCreate(saveFormData);
|
|
186
132
|
};
|
|
187
|
-
|
|
188
|
-
setTimeout(
|
|
133
|
+
const setOriginalSaveMessageWithTimeout = () => {
|
|
134
|
+
setTimeout(() => {
|
|
189
135
|
setSavingMsg(_i18n.default.t('buttons.save'));
|
|
190
136
|
}, 3000);
|
|
191
137
|
};
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
for (
|
|
138
|
+
const formDataBuilder = values => {
|
|
139
|
+
const formData = new FormData();
|
|
140
|
+
for (const key in values) {
|
|
195
141
|
if (key !== 'pictures_attributes') {
|
|
196
|
-
|
|
142
|
+
const value = values[key] === null ? '' : values[key];
|
|
197
143
|
formData.append("sampling[".concat(key, "]"), value);
|
|
198
144
|
}
|
|
199
145
|
}
|
|
200
|
-
|
|
201
|
-
uniquePhotosToDelete.length !== 0 && uniquePhotosToDelete.forEach(
|
|
146
|
+
let uniquePhotosToDelete = [...new Set(photosToDelete)];
|
|
147
|
+
uniquePhotosToDelete.length !== 0 && uniquePhotosToDelete.forEach((id, index) => {
|
|
202
148
|
formData.append("sampling[pictures_attributes][".concat(index, "][id]"), JSON.stringify(id));
|
|
203
149
|
formData.append("sampling[pictures_attributes][".concat(index, "][_destroy]"), 'true');
|
|
204
150
|
});
|
|
205
151
|
return formData;
|
|
206
152
|
};
|
|
207
|
-
|
|
208
|
-
var
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
case 0:
|
|
215
|
-
updateOrCreateSuccess = function updateOrCreateSuccess(msg) {
|
|
216
|
-
setSavingMsg(_i18n.default.t(msg));
|
|
217
|
-
setSamplingUpdated(true);
|
|
218
|
-
setOriginalSaveMessageWithTimeout();
|
|
219
|
-
handleClose();
|
|
220
|
-
};
|
|
221
|
-
samplingID = samplingProperties === null || samplingProperties === void 0 ? void 0 : (_samplingProperties$s2 = samplingProperties.sampling) === null || _samplingProperties$s2 === void 0 ? void 0 : _samplingProperties$s2.id;
|
|
222
|
-
if (!(samplingID === null)) {
|
|
223
|
-
_context2.next = 16;
|
|
224
|
-
break;
|
|
225
|
-
}
|
|
226
|
-
// create
|
|
227
|
-
formData.append("sampling[date]", formData.get('sampling[collection_time]'));
|
|
228
|
-
_context2.prev = 4;
|
|
229
|
-
_context2.next = 7;
|
|
230
|
-
return _axios.default.post((0, _urls.urls)({
|
|
231
|
-
waterAuthorityId: waterAuthorityId
|
|
232
|
-
}).samplingProperties.createSampling.url, formData);
|
|
233
|
-
case 7:
|
|
234
|
-
updateOrCreateSuccess('buttons.created');
|
|
235
|
-
_context2.next = 14;
|
|
236
|
-
break;
|
|
237
|
-
case 10:
|
|
238
|
-
_context2.prev = 10;
|
|
239
|
-
_context2.t0 = _context2["catch"](4);
|
|
240
|
-
setSavingMsg(_i18n.default.t('buttons.error'));
|
|
241
|
-
setOriginalSaveMessageWithTimeout();
|
|
242
|
-
case 14:
|
|
243
|
-
_context2.next = 27;
|
|
244
|
-
break;
|
|
245
|
-
case 16:
|
|
246
|
-
if (pageType.current === 'revert_cancel') {
|
|
247
|
-
formData.append("sampling[collection_time]", collectionTime);
|
|
248
|
-
}
|
|
249
|
-
// update
|
|
250
|
-
_context2.prev = 17;
|
|
251
|
-
_context2.next = 20;
|
|
252
|
-
return _axios.default.put((0, _urls.urls)({
|
|
253
|
-
samplingId: samplingID,
|
|
254
|
-
waterAuthorityId: waterAuthorityId
|
|
255
|
-
}).samplingProperties.updateSampling.url, formData);
|
|
256
|
-
case 20:
|
|
257
|
-
updateOrCreateSuccess('buttons.updated');
|
|
258
|
-
_context2.next = 27;
|
|
259
|
-
break;
|
|
260
|
-
case 23:
|
|
261
|
-
_context2.prev = 23;
|
|
262
|
-
_context2.t1 = _context2["catch"](17);
|
|
263
|
-
setSavingMsg(_i18n.default.t('buttons.error'));
|
|
264
|
-
setOriginalSaveMessageWithTimeout();
|
|
265
|
-
case 27:
|
|
266
|
-
case "end":
|
|
267
|
-
return _context2.stop();
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}, _callee2, null, [[4, 10], [17, 23]]);
|
|
271
|
-
}));
|
|
272
|
-
return function updateOrCreate(_x) {
|
|
273
|
-
return _ref2.apply(this, arguments);
|
|
153
|
+
const updateOrCreate = async formData => {
|
|
154
|
+
var _samplingProperties$s2;
|
|
155
|
+
const updateOrCreateSuccess = msg => {
|
|
156
|
+
setSavingMsg(_i18n.default.t(msg));
|
|
157
|
+
setSamplingUpdated(true);
|
|
158
|
+
setOriginalSaveMessageWithTimeout();
|
|
159
|
+
handleClose();
|
|
274
160
|
};
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
161
|
+
const samplingID = samplingProperties === null || samplingProperties === void 0 ? void 0 : (_samplingProperties$s2 = samplingProperties.sampling) === null || _samplingProperties$s2 === void 0 ? void 0 : _samplingProperties$s2.id;
|
|
162
|
+
if (samplingID === null) {
|
|
163
|
+
// create
|
|
164
|
+
formData.append("sampling[date]", formData.get('sampling[collection_time]'));
|
|
165
|
+
try {
|
|
166
|
+
await _axios.default.post((0, _urls.urls)({
|
|
167
|
+
waterAuthorityId: waterAuthorityId
|
|
168
|
+
}).samplingProperties.createSampling.url, formData);
|
|
169
|
+
updateOrCreateSuccess('buttons.created');
|
|
170
|
+
} catch (e) {
|
|
171
|
+
setSavingMsg(_i18n.default.t('buttons.error'));
|
|
172
|
+
setOriginalSaveMessageWithTimeout();
|
|
173
|
+
}
|
|
174
|
+
} else {
|
|
175
|
+
if (pageType.current === 'revert_cancel') {
|
|
176
|
+
formData.append("sampling[collection_time]", collectionTime);
|
|
177
|
+
}
|
|
178
|
+
// update
|
|
179
|
+
try {
|
|
180
|
+
await _axios.default.put((0, _urls.urls)({
|
|
181
|
+
samplingId: samplingID,
|
|
182
|
+
waterAuthorityId: waterAuthorityId
|
|
183
|
+
}).samplingProperties.updateSampling.url, formData);
|
|
184
|
+
updateOrCreateSuccess('buttons.updated');
|
|
185
|
+
} catch (e) {
|
|
186
|
+
setSavingMsg(_i18n.default.t('buttons.error'));
|
|
187
|
+
setOriginalSaveMessageWithTimeout();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
const detectPageType = (isSamplingCancelled, op) => {
|
|
192
|
+
const editPageValue = isSamplingCancelled ? 'cancel' : 'collect';
|
|
278
193
|
if (op === 'edit') {
|
|
279
194
|
return editPageValue;
|
|
280
195
|
} else if (op === _samplingsPageUtils.COLLECT_SAMPLING_OP) {
|
|
@@ -287,10 +202,10 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
287
202
|
return editPageValue;
|
|
288
203
|
}
|
|
289
204
|
};
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
205
|
+
const determineCollectionTime = (serverCollectionTime, op) => {
|
|
206
|
+
const currentTime = new Date();
|
|
207
|
+
const serverTime = serverCollectionTime ? new Date(serverCollectionTime) : currentTime;
|
|
208
|
+
const editPageValue = serverCollectionTime ? serverTime : currentTime;
|
|
294
209
|
if (op === 'edit') {
|
|
295
210
|
return editPageValue;
|
|
296
211
|
} else if (op === _samplingsPageUtils.COLLECT_SAMPLING_OP) {
|
|
@@ -301,8 +216,8 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
301
216
|
return editPageValue;
|
|
302
217
|
}
|
|
303
218
|
};
|
|
304
|
-
|
|
305
|
-
|
|
219
|
+
const getUrlQueryOp = () => {
|
|
220
|
+
let op = query.get('op');
|
|
306
221
|
// if not present then default op is 'collecting'
|
|
307
222
|
if ([undefined, null, ''].includes(op)) {
|
|
308
223
|
return _samplingsPageUtils.COLLECT_SAMPLING_OP;
|
|
@@ -353,4 +268,4 @@ var SamplingProperties = function SamplingProperties() {
|
|
|
353
268
|
}))));
|
|
354
269
|
};
|
|
355
270
|
exports.SamplingProperties = SamplingProperties;
|
|
356
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0RGV2aWNlRGV0ZWN0IiwiX2Zvcm1payIsIl9yZWFjdFJvdXRlckRvbSIsIl9yZWFjdFJlZHV4IiwiX0xheW91dCIsIl9pMThuIiwiX3VzZVF1ZXJ5VVJMIiwiX1NwaW5uZXIiLCJfdXJscyIsIl9zdHlsZXMiLCJfc2FtcGxpbmdzUGFnZVV0aWxzIiwiX1NhbXBsaW5nUHJvcGVydGllc0Zvcm0iLCJfU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZCIsIl9TYW1wbGluZ1Byb3BlcnRpZXNIZWFkTW9iaWxlIiwiX3NhbXBsaW5nUHJvcGVydGllc1V0aWxzIiwiX1NhbXBsZXJJblByb2Nlc3MiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsImlzUHJvcGVydGllc1BhZ2UiLCJwYWdlVHlwZSIsIlNhbXBsaW5nUHJvcGVydGllcyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiRGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJjb2xsZWN0aW9uVGltZSIsInNldENvbGxlY3Rpb25UaW1lIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJwaG90b3MiLCJzZXRQaG90b3MiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInBob3Rvc1RvRGVsZXRlIiwic2V0UGhvdG9zVG9EZWxldGUiLCJfdXNlU3RhdGU3IiwiaTE4biIsInQiLCJfdXNlU3RhdGU4Iiwic2F2aW5nTXNnIiwic2V0U2F2aW5nTXNnIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwic2FtcGxpbmdVcGRhdGVkIiwic2V0U2FtcGxpbmdVcGRhdGVkIiwiX3VzZVN0YXRlMTEiLCJ1bmRlZmluZWQiLCJfdXNlU3RhdGUxMiIsInNhbXBsaW5nUGxhbiIsInNldFNhbXBsaW5nUGxhbiIsImhpc3RvcnkiLCJ1c2VIaXN0b3J5IiwibG9jYXRpb24iLCJ1c2VMb2NhdGlvbiIsInF1ZXJ5IiwidXNlUXVlcnlVUkwiLCJ1c2VySW5mbyIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJwZXJtaXNzaW9ucyIsInVzZXJfaW5mbyIsImRhdGVGb3JtYXQiLCJkYXRlX3RpbWVfZm9ybWF0IiwidXNlUmVmIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInNhbXBsaW5nUHJvcGVydGllcyIsInNldFNhbXBsaW5nUHJvcGVydGllcyIsIl91c2VQYXJhbXMiLCJ1c2VQYXJhbXMiLCJzYW1wbGVJZCIsIndhdGVyQXV0aG9yaXR5SWQiLCJnbG9iYWxfZGF0YSIsImxvY2FsZSIsIm5hdl9jb250ZXh0X2RhdGEiLCJuYXZDb250ZXh0IiwiaW5pdEZvcm1pa1ZhbHVlcyIsImlzQ2FuY2VsZWQiLCJ0aW1lWm9uZSIsInBhZ2VDb2xsZWN0aW9uVGltZSIsImlzQ29sbGVjdExheW91dCIsImN1cnJlbnQiLCJjb2xsZWN0aW9uVGltZUZvcm1hdCIsInNhbXBsaW5nIiwiY29sbGVjdGlvbl90aW1lIiwic2FtIiwiZm9ybWlrVmFsdWVzIiwibGFiX2lkIiwicHVtcF9zYW1wbGluZ192b2x1bWUiLCJwdW1wX2JhdHRlcnlfbGV2ZWwiLCJkZXNjcmlwdGlvbiIsImthbmRvX3JlcCIsInNhbXBsaW5nX3BsYW5faWQiLCJjYW5jZWxsYXRpb25fcmVhc29uIiwiaXNfY2FuY2VsZWQiLCJpc0NhbmNlbGxlZExheW91dCIsImNhbmNlbGVkX2J5X2lkIiwibmFtZSIsImNhbmNlbGVkX2J5X25hbWUiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwiaWQiLCJmb3JtaWsiLCJzZXRWYWx1ZXMiLCJwYWdlVHlwZTJpc0NhbmNlbGxlZCIsImNhbmNlbCIsImNvbGxlY3QiLCJyZXZlcnRfY2FuY2VsIiwiZmV0Y2hTYW1wbGluZ1Byb3BlcnRpZXMiLCJ1c2VDYWxsYmFjayIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwic2FtcGxpbmdJZCIsIm9wIiwicmVzcG9uc2UiLCJfYXJncyIsImFyZ3VtZW50cyIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJsZW5ndGgiLCJheGlvcyIsInVybHMiLCJmZXRjaFNhbXBsaW5nIiwidXJsIiwic2VudCIsImRhdGEiLCJzYW1wbGluZ19wcm9wZXJ0aWVzIiwiZGV0ZWN0UGFnZVR5cGUiLCJkZXRlcm1pbmVDb2xsZWN0aW9uVGltZSIsInNhbXBsaW5nX3BsYW4iLCJ0aW1lX3pvbmUiLCJzdG9wIiwidXNlRWZmZWN0IiwiZ2V0VXJsUXVlcnlPcCIsInZhbGlkYXRpb25TY2hlbWEiLCJwcm9wZXJ0aWVzVmFsaWRhdGlvblNjaGVtYSIsImNhbmNlbGxhdGlvblZhbGlkYXRpb25TY2hlbWEiLCJ1c2VGb3JtaWsiLCJlbmFibGVSZWluaXRpYWxpemUiLCJpbml0aWFsVmFsdWVzIiwic2FtcGxpbmdQcm9wZXJ0eSIsInZhbGlkYXRlT25DaGFuZ2UiLCJ2YWxpZGF0ZU9uQmx1ciIsIm9uU3VibWl0IiwidmFsdWVzIiwiaGFuZGxlU3VibWl0IiwiaGFuZGxlQ2xvc2UiLCJnb0JhY2siLCJwdXNoIiwic2FtcGxpbmdzUGFnZSIsInNhbXBsaW5nc0xpc3RSb3V0ZSIsIl9zYW1wbGluZ1Byb3BlcnRpZXMkcyIsInBpY3R1cmVzX2F0dHJpYnV0ZXMiLCJjb2xsZWN0aW9uVGltZUluVGltZVpvbmUiLCJzYXZlRm9ybURhdGEiLCJmb3JtRGF0YUJ1aWxkZXIiLCJ1cGRhdGVPckNyZWF0ZSIsInNldE9yaWdpbmFsU2F2ZU1lc3NhZ2VXaXRoVGltZW91dCIsInNldFRpbWVvdXQiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwidmFsdWUiLCJhcHBlbmQiLCJjb25jYXQiLCJ1bmlxdWVQaG90b3NUb0RlbGV0ZSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJTZXQiLCJmb3JFYWNoIiwiaW5kZXgiLCJKU09OIiwic3RyaW5naWZ5IiwiX3JlZjIiLCJfY2FsbGVlMiIsIl9zYW1wbGluZ1Byb3BlcnRpZXMkczIiLCJ1cGRhdGVPckNyZWF0ZVN1Y2Nlc3MiLCJzYW1wbGluZ0lEIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwibXNnIiwicG9zdCIsImNyZWF0ZVNhbXBsaW5nIiwidDAiLCJwdXQiLCJ1cGRhdGVTYW1wbGluZyIsInQxIiwiX3giLCJhcHBseSIsImlzU2FtcGxpbmdDYW5jZWxsZWQiLCJlZGl0UGFnZVZhbHVlIiwiQ09MTEVDVF9TQU1QTElOR19PUCIsIkNBTkNFTF9TQU1QTElOR19PUCIsIlJFVkVSVF9DQU5DRUxMQVRJT04iLCJzZXJ2ZXJDb2xsZWN0aW9uVGltZSIsImN1cnJlbnRUaW1lIiwic2VydmVyVGltZSIsImluY2x1ZGVzIiwiY3JlYXRlRWxlbWVudCIsIlNwaW5uZXIiLCJpc19wdW1wX2luX3Byb2dyZXNzIiwiU2FtcGxpbmdQcm9wZXJ0aWVzU3R5bGUiLCJpc01vYmlsZSIsIlNhbXBsaW5nUHJvcGVydGllc0hlYWQiLCJpc0RhdGVQaWNrZXJEaXNhYmxlZCIsIlNhbXBsaW5nUHJvcGVydGllc0hlYWRNb2JpbGUiLCJTYW1wbGluZ1Byb3BlcnRpZXNGb3JtIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWdlcy9TYW1wbGluZ3NQYWdlL1NhbXBsaW5nUHJvcGVydGllcy9TYW1wbGluZ1Byb3BlcnRpZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQcm9wZXJ0aWVzIGFuZCBDYW5jZWxsaW5nIGZvcm1zLlxuICoqL1xuaW1wb3J0IFJlYWN0LCB7IEZDLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IEZvcm1pa0NvbmZpZyB9IGZyb20gJ2Zvcm1pay9kaXN0L3R5cGVzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAncmVhY3QtZGV2aWNlLWRldGVjdCc7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tICdmb3JtaWsnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSwgdXNlUGFyYW1zLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbmltcG9ydCBMYXlvdXQgZnJvbSAnc3JjL3VpLWtpdC9MYXlvdXQvTGF5b3V0JztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgdXNlUXVlcnlVUkwgZnJvbSAnc3JjL2hvb2tzL3VzZVF1ZXJ5VVJMJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICdzcmMvY29tcG9uZW50cy9TcGlubmVyL1NwaW5uZXInO1xuaW1wb3J0IHsgdXJscyB9IGZyb20gJ3NyYy91dGlsaXRpZXMvdXJscyc7XG5pbXBvcnQgeyBTYW1wbGluZ1Byb3BlcnRpZXNTdHlsZSB9IGZyb20gJy4vc3R5bGVzJztcbmltcG9ydCB7XG4gIENBTkNFTF9TQU1QTElOR19PUCxcbiAgQ09MTEVDVF9TQU1QTElOR19PUCxcbiAgUkVWRVJUX0NBTkNFTExBVElPTixcbiAgU2FtcGxpbmdGZXRjaERhdGEsXG59IGZyb20gJy4uL3NhbXBsaW5nc1BhZ2VVdGlscyc7XG5pbXBvcnQgeyBTYW1wbGluZ1Byb3BlcnRpZXNGb3JtIH0gZnJvbSAnLi9TYW1wbGluZ1Byb3BlcnRpZXNGb3JtJztcbmltcG9ydCB7IFNhbXBsaW5nUHJvcGVydGllc0hlYWQgfSBmcm9tICcuL1NhbXBsaW5nUHJvcGVydGllc0hlYWQnO1xuaW1wb3J0IHsgU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZSB9IGZyb20gJy4vU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZSc7XG5pbXBvcnQge1xuICBGb3JtVHlwZSxcbiAgVFNhbXBsaW5nUHJvcGVydGllcyxcbiAgY2FuY2VsbGF0aW9uVmFsaWRhdGlvblNjaGVtYSxcbiAgaXNDb2xsZWN0TGF5b3V0LFxuICBwcm9wZXJ0aWVzVmFsaWRhdGlvblNjaGVtYSxcbiAgc2FtcGxpbmdQcm9wZXJ0eSxcbiAgY29sbGVjdGlvblRpbWVGb3JtYXQsXG4gIGNvbGxlY3Rpb25UaW1lSW5UaW1lWm9uZSxcbn0gZnJvbSAnLi9zYW1wbGluZ1Byb3BlcnRpZXNVdGlscyc7XG5pbXBvcnQgU2FtcGxlckluUHJvY2VzcyBmcm9tICcuL1NhbXBsZXJJblByb2Nlc3MnO1xuXG5jb25zdCBpc1Byb3BlcnRpZXNQYWdlID0gKHBhZ2VUeXBlKSA9PiBwYWdlVHlwZSA9PT0gJ2VkaXQnO1xuXG5leHBvcnQgY29uc3QgU2FtcGxpbmdQcm9wZXJ0aWVzOiBGQyA9ICgpID0+IHtcbiAgY29uc3QgW2NvbGxlY3Rpb25UaW1lLCBzZXRDb2xsZWN0aW9uVGltZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBEYXRlIHwgbnVsbD4oXG4gICAgbmV3IERhdGUoKSxcbiAgKTtcbiAgY29uc3QgW3Bob3Rvcywgc2V0UGhvdG9zXSA9IHVzZVN0YXRlPHN0cmluZyB8IEJsb2IgfCBhbnk+KFtdKTtcbiAgY29uc3QgW3Bob3Rvc1RvRGVsZXRlLCBzZXRQaG90b3NUb0RlbGV0ZV0gPSB1c2VTdGF0ZTxudW1iZXJbXT4oW10pO1xuICBjb25zdCBbc2F2aW5nTXNnLCBzZXRTYXZpbmdNc2ddID0gdXNlU3RhdGU8c3RyaW5nPihpMThuLnQoJ2J1dHRvbnMuc2F2ZScpKTtcbiAgY29uc3QgW3NhbXBsaW5nVXBkYXRlZCwgc2V0U2FtcGxpbmdVcGRhdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NhbXBsaW5nUGxhbiwgc2V0U2FtcGxpbmdQbGFuXSA9IHVzZVN0YXRlPFxuICAgIFNhbXBsaW5nRmV0Y2hEYXRhIHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKTtcbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKTtcbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBjb25zdCBxdWVyeSA9IHVzZVF1ZXJ5VVJMKCk7XG4gIGNvbnN0IHVzZXJJbmZvID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS5wZXJtaXNzaW9ucy51c2VyX2luZm8pO1xuICBjb25zdCBkYXRlRm9ybWF0ID1cbiAgICB1c2VySW5mby5kYXRlX3RpbWVfZm9ybWF0ID09PSAndXMnXG4gICAgICA/ICdNTU0gZCwgeXl5eSBoaDptbSBhYSdcbiAgICAgIDogJ2QvTU0veXl5eSBISDptbSc7XG4gIGNvbnN0IHBhZ2VUeXBlID0gdXNlUmVmPHN0cmluZz4oJycpO1xuICBjb25zdCBbc2FtcGxpbmdQcm9wZXJ0aWVzLCBzZXRTYW1wbGluZ1Byb3BlcnRpZXNdID1cbiAgICB1c2VTdGF0ZTxUU2FtcGxpbmdQcm9wZXJ0aWVzPigpO1xuICBjb25zdCB7IHNhbXBsZUlkIH0gPSB1c2VQYXJhbXMoKTtcbiAgY29uc3Qgd2F0ZXJBdXRob3JpdHlJZCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZCxcbiAgKTtcbiAgY29uc3QgbG9jYWxlID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS5uYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubG9jYWxlLFxuICApO1xuXG4gIGNvbnN0IGluaXRGb3JtaWtWYWx1ZXMgPSAoXG4gICAgc2FtcGxpbmdQcm9wZXJ0aWVzLFxuICAgIGlzQ2FuY2VsZWQsXG4gICAgdGltZVpvbmUsXG4gICAgdXNlckluZm8sXG4gICkgPT4ge1xuICAgIGNvbnN0IHBhZ2VDb2xsZWN0aW9uVGltZSA9IGlzQ29sbGVjdExheW91dChwYWdlVHlwZS5jdXJyZW50KVxuICAgICAgPyBjb2xsZWN0aW9uVGltZVxuICAgICAgOiBjb2xsZWN0aW9uVGltZUZvcm1hdChcbiAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcuY29sbGVjdGlvbl90aW1lLFxuICAgICAgICAgIHRpbWVab25lLFxuICAgICAgICApO1xuICAgIGNvbnN0IHNhbSA9IHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZztcbiAgICBsZXQgZm9ybWlrVmFsdWVzOiBGb3JtVHlwZSA9IHtcbiAgICAgIGxhYl9pZDogc2FtLmxhYl9pZCxcbiAgICAgIGNvbGxlY3Rpb25fdGltZTogcGFnZUNvbGxlY3Rpb25UaW1lLFxuICAgICAgcHVtcF9zYW1wbGluZ192b2x1bWU6IHNhbS5wdW1wX3NhbXBsaW5nX3ZvbHVtZSxcbiAgICAgIHB1bXBfYmF0dGVyeV9sZXZlbDogc2FtLnB1bXBfYmF0dGVyeV9sZXZlbCxcbiAgICAgIGRlc2NyaXB0aW9uOiBzYW0uZGVzY3JpcHRpb24sXG4gICAgICBrYW5kb19yZXA6IHNhbS5rYW5kb19yZXAsXG4gICAgICBzYW1wbGluZ19wbGFuX2lkOiBzYW0uc2FtcGxpbmdfcGxhbl9pZCxcbiAgICAgIGNhbmNlbGxhdGlvbl9yZWFzb246IHNhbS5jYW5jZWxsYXRpb25fcmVhc29uIHx8ICcnLFxuICAgICAgaXNfY2FuY2VsZWQ6IGlzQ2FuY2VsZWQsXG4gICAgfTtcblxuICAgIGlmIChpc0NhbmNlbGxlZExheW91dChzYW1wbGluZ1Byb3BlcnRpZXMpKVxuICAgICAgZm9ybWlrVmFsdWVzLmNhbmNlbGVkX2J5X2lkID0ge1xuICAgICAgICBuYW1lOlxuICAgICAgICAgIHNhbXBsaW5nUHJvcGVydGllcy5jYW5jZWxlZF9ieV9uYW1lIHx8XG4gICAgICAgICAgdXNlckluZm8uZmlyc3RfbmFtZSArICcgJyArIHVzZXJJbmZvLmxhc3RfbmFtZSxcbiAgICAgICAgaWQ6IHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5jYW5jZWxlZF9ieV9pZCB8fCB1c2VySW5mby5pZCxcbiAgICAgIH07XG4gICAgZm9ybWlrVmFsdWVzLmthbmRvX3JlcCA9IHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5rYW5kb19yZXA7XG4gICAgZm9ybWlrLnNldFZhbHVlcyhmb3JtaWtWYWx1ZXMpO1xuICB9O1xuXG4gIGNvbnN0IGlzQ2FuY2VsbGVkTGF5b3V0ID0gKHNhbXBsaW5nUHJvcGVydGllcykgPT4ge1xuICAgIGNvbnN0IHBhZ2VUeXBlMmlzQ2FuY2VsbGVkID0ge1xuICAgICAgY2FuY2VsOiB0cnVlLFxuICAgICAgY29sbGVjdDogZmFsc2UsXG4gICAgICByZXZlcnRfY2FuY2VsOiBmYWxzZSxcbiAgICB9O1xuICAgIGxldCBpc0NhbmNlbGVkID0gcGFnZVR5cGUyaXNDYW5jZWxsZWRbcGFnZVR5cGUuY3VycmVudF07XG4gICAgaWYgKGlzQ2FuY2VsZWQgPT09IG51bGwpIHtcbiAgICAgIGlzQ2FuY2VsZWQgPSBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcuaXNfY2FuY2VsZWQgfHwgZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBpc0NhbmNlbGVkO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoU2FtcGxpbmdQcm9wZXJ0aWVzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHNhbXBsaW5nSWQgPSBzYW1wbGVJZCwgb3ApID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KFxuICAgICAgICB1cmxzKHsgc2FtcGxpbmdJZDogc2FtcGxpbmdJZCB9KS5zYW1wbGluZ1Byb3BlcnRpZXMuZmV0Y2hTYW1wbGluZy51cmwsXG4gICAgICApO1xuICAgICAgY29uc3Qgc2FtcGxpbmcgPSByZXNwb25zZS5kYXRhO1xuICAgICAgY29uc3Qgc2FtcGxpbmdQcm9wZXJ0aWVzID0gc2FtcGxpbmcuc2FtcGxpbmdfcHJvcGVydGllcztcbiAgICAgIHBhZ2VUeXBlLmN1cnJlbnQgPSBkZXRlY3RQYWdlVHlwZShcbiAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmlzX2NhbmNlbGVkLFxuICAgICAgICBvcCxcbiAgICAgICk7XG4gICAgICBzZXRDb2xsZWN0aW9uVGltZShcbiAgICAgICAgZGV0ZXJtaW5lQ29sbGVjdGlvblRpbWUoXG4gICAgICAgICAgY29sbGVjdGlvblRpbWVGb3JtYXQoXG4gICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcuY29sbGVjdGlvbl90aW1lLFxuICAgICAgICAgICAgc2FtcGxpbmcuc2FtcGxpbmdfcGxhbi50aW1lX3pvbmUsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBvcCxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICBsZXQgaXNDYW5jZWxlZCA9IGlzQ2FuY2VsbGVkTGF5b3V0KFxuICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcuaXNfY2FuY2VsZWQsXG4gICAgICApO1xuICAgICAgaW5pdEZvcm1pa1ZhbHVlcyhcbiAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLFxuICAgICAgICBpc0NhbmNlbGVkLFxuICAgICAgICBzYW1wbGluZy5zYW1wbGluZ19wbGFuLnRpbWVfem9uZSxcbiAgICAgICAgdXNlckluZm8sXG4gICAgICApO1xuICAgICAgc2V0U2FtcGxpbmdQcm9wZXJ0aWVzKHNhbXBsaW5nUHJvcGVydGllcyk7XG4gICAgICBzZXRTYW1wbGluZ1BsYW4oc2FtcGxpbmcuc2FtcGxpbmdfcGxhbik7XG4gICAgfSxcbiAgICBbXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoU2FtcGxpbmdQcm9wZXJ0aWVzKHNhbXBsZUlkLCBnZXRVcmxRdWVyeU9wKCkpO1xuICB9LCBbc2FtcGxpbmdVcGRhdGVkXSk7XG5cbiAgY29uc3QgdmFsaWRhdGlvblNjaGVtYSA9IGlzQ29sbGVjdExheW91dChwYWdlVHlwZS5jdXJyZW50KVxuICAgID8gcHJvcGVydGllc1ZhbGlkYXRpb25TY2hlbWFcbiAgICA6IGNhbmNlbGxhdGlvblZhbGlkYXRpb25TY2hlbWE7XG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1pazxGb3JtaWtDb25maWc8Rm9ybVR5cGU+Pih7XG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlLFxuICAgIGluaXRpYWxWYWx1ZXM6IHNhbXBsaW5nUHJvcGVydHksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogdmFsaWRhdGlvblNjaGVtYSxcbiAgICB2YWxpZGF0ZU9uQ2hhbmdlOiBmYWxzZSxcbiAgICB2YWxpZGF0ZU9uQmx1cjogdHJ1ZSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgaGFuZGxlU3VibWl0KHZhbHVlcyk7XG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKGxvY2F0aW9uLmtleSkge1xuICAgICAgaGlzdG9yeS5nb0JhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGlzdG9yeS5wdXNoKFxuICAgICAgICB1cmxzKHsgbG9jYWxlLCB3YXRlckF1dGhvcml0eUlkIH0pLnNhbXBsaW5nc1BhZ2Uuc2FtcGxpbmdzTGlzdFJvdXRlLnVybCxcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9ICh2YWx1ZXMpID0+IHtcbiAgICBzZXRTYXZpbmdNc2coaTE4bi50KCdidXR0b25zLnNhdmluZycpKTtcbiAgICB2YWx1ZXMucGljdHVyZXNfYXR0cmlidXRlcyA9IHBob3RvcztcbiAgICBpZiAodmFsdWVzLmNhbmNlbGVkX2J5X2lkICYmIGlzQ2FuY2VsbGVkTGF5b3V0KHNhbXBsaW5nUHJvcGVydGllcykpXG4gICAgICB2YWx1ZXMuY2FuY2VsZWRfYnlfaWQgPVxuICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM/LnNhbXBsaW5nPy5jYW5jZWxlZF9ieV9pZCB8fCB1c2VySW5mby5pZDtcbiAgICBjb25zdCB0aW1lX3pvbmUgPSBzYW1wbGluZ1BsYW4/LnRpbWVfem9uZSB8fCAnVVRDJztcbiAgICB2YWx1ZXMuY29sbGVjdGlvbl90aW1lID0gY29sbGVjdGlvblRpbWVJblRpbWVab25lKFxuICAgICAgdmFsdWVzLmNvbGxlY3Rpb25fdGltZSxcbiAgICAgIHRpbWVfem9uZSxcbiAgICApO1xuICAgIGNvbnN0IHNhdmVGb3JtRGF0YSA9IGZvcm1EYXRhQnVpbGRlcih2YWx1ZXMpO1xuICAgIHVwZGF0ZU9yQ3JlYXRlKHNhdmVGb3JtRGF0YSk7XG4gIH07XG5cbiAgY29uc3Qgc2V0T3JpZ2luYWxTYXZlTWVzc2FnZVdpdGhUaW1lb3V0ID0gKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5zYXZlJykpO1xuICAgIH0sIDMwMDApO1xuICB9O1xuXG4gIGNvbnN0IGZvcm1EYXRhQnVpbGRlciA9ICh2YWx1ZXMpID0+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvciAoY29uc3Qga2V5IGluIHZhbHVlcykge1xuICAgICAgaWYgKGtleSAhPT0gJ3BpY3R1cmVzX2F0dHJpYnV0ZXMnKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzW2tleV0gPT09IG51bGwgPyAnJyA6IHZhbHVlc1trZXldO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoYHNhbXBsaW5nWyR7a2V5fV1gLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCB1bmlxdWVQaG90b3NUb0RlbGV0ZSA9IFsuLi5uZXcgU2V0KHBob3Rvc1RvRGVsZXRlKV07XG4gICAgdW5pcXVlUGhvdG9zVG9EZWxldGUubGVuZ3RoICE9PSAwICYmXG4gICAgICB1bmlxdWVQaG90b3NUb0RlbGV0ZS5mb3JFYWNoKChpZCwgaW5kZXgpID0+IHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgIGBzYW1wbGluZ1twaWN0dXJlc19hdHRyaWJ1dGVzXVske2luZGV4fV1baWRdYCxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShpZCksXG4gICAgICAgICk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICBgc2FtcGxpbmdbcGljdHVyZXNfYXR0cmlidXRlc11bJHtpbmRleH1dW19kZXN0cm95XWAsXG4gICAgICAgICAgJ3RydWUnLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIGZvcm1EYXRhO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZU9yQ3JlYXRlID0gYXN5bmMgKGZvcm1EYXRhKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlT3JDcmVhdGVTdWNjZXNzID0gKG1zZykgPT4ge1xuICAgICAgc2V0U2F2aW5nTXNnKGkxOG4udChtc2cpKTtcbiAgICAgIHNldFNhbXBsaW5nVXBkYXRlZCh0cnVlKTtcbiAgICAgIHNldE9yaWdpbmFsU2F2ZU1lc3NhZ2VXaXRoVGltZW91dCgpO1xuICAgICAgaGFuZGxlQ2xvc2UoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2FtcGxpbmdJRCA9IHNhbXBsaW5nUHJvcGVydGllcz8uc2FtcGxpbmc/LmlkO1xuICAgIGlmIChzYW1wbGluZ0lEID09PSBudWxsKSB7XG4gICAgICAvLyBjcmVhdGVcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgYHNhbXBsaW5nW2RhdGVdYCxcbiAgICAgICAgZm9ybURhdGEuZ2V0KCdzYW1wbGluZ1tjb2xsZWN0aW9uX3RpbWVdJyksXG4gICAgICApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXhpb3MucG9zdChcbiAgICAgICAgICB1cmxzKHtcbiAgICAgICAgICAgIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQsXG4gICAgICAgICAgfSkuc2FtcGxpbmdQcm9wZXJ0aWVzLmNyZWF0ZVNhbXBsaW5nLnVybCxcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgKTtcbiAgICAgICAgdXBkYXRlT3JDcmVhdGVTdWNjZXNzKCdidXR0b25zLmNyZWF0ZWQnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5lcnJvcicpKTtcbiAgICAgICAgc2V0T3JpZ2luYWxTYXZlTWVzc2FnZVdpdGhUaW1lb3V0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYWdlVHlwZS5jdXJyZW50ID09PSAncmV2ZXJ0X2NhbmNlbCcpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGBzYW1wbGluZ1tjb2xsZWN0aW9uX3RpbWVdYCwgY29sbGVjdGlvblRpbWUpO1xuICAgICAgfVxuICAgICAgLy8gdXBkYXRlXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBheGlvcy5wdXQoXG4gICAgICAgICAgdXJscyh7IHNhbXBsaW5nSWQ6IHNhbXBsaW5nSUQsIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQgfSlcbiAgICAgICAgICAgIC5zYW1wbGluZ1Byb3BlcnRpZXMudXBkYXRlU2FtcGxpbmcudXJsLFxuICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICApO1xuICAgICAgICB1cGRhdGVPckNyZWF0ZVN1Y2Nlc3MoJ2J1dHRvbnMudXBkYXRlZCcpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzZXRTYXZpbmdNc2coaTE4bi50KCdidXR0b25zLmVycm9yJykpO1xuICAgICAgICBzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGV0ZWN0UGFnZVR5cGUgPSAoaXNTYW1wbGluZ0NhbmNlbGxlZCwgb3ApID0+IHtcbiAgICBjb25zdCBlZGl0UGFnZVZhbHVlID0gaXNTYW1wbGluZ0NhbmNlbGxlZCA/ICdjYW5jZWwnIDogJ2NvbGxlY3QnO1xuICAgIGlmIChvcCA9PT0gJ2VkaXQnKSB7XG4gICAgICByZXR1cm4gZWRpdFBhZ2VWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKG9wID09PSBDT0xMRUNUX1NBTVBMSU5HX09QKSB7XG4gICAgICByZXR1cm4gJ2NvbGxlY3QnO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IENBTkNFTF9TQU1QTElOR19PUCkge1xuICAgICAgcmV0dXJuICdjYW5jZWwnO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IFJFVkVSVF9DQU5DRUxMQVRJT04pIHtcbiAgICAgIHJldHVybiAncmV2ZXJ0X2NhbmNlbCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZXRlcm1pbmVDb2xsZWN0aW9uVGltZSA9IChzZXJ2ZXJDb2xsZWN0aW9uVGltZSwgb3ApID0+IHtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3Qgc2VydmVyVGltZSA9IHNlcnZlckNvbGxlY3Rpb25UaW1lXG4gICAgICA/IG5ldyBEYXRlKHNlcnZlckNvbGxlY3Rpb25UaW1lKVxuICAgICAgOiBjdXJyZW50VGltZTtcbiAgICBjb25zdCBlZGl0UGFnZVZhbHVlID0gc2VydmVyQ29sbGVjdGlvblRpbWUgPyBzZXJ2ZXJUaW1lIDogY3VycmVudFRpbWU7XG4gICAgaWYgKG9wID09PSAnZWRpdCcpIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IENPTExFQ1RfU0FNUExJTkdfT1ApIHtcbiAgICAgIHJldHVybiBjdXJyZW50VGltZTtcbiAgICB9IGVsc2UgaWYgKFtDQU5DRUxfU0FNUExJTkdfT1AsIFJFVkVSVF9DQU5DRUxMQVRJT05dLmluY2x1ZGVzKG9wKSkge1xuICAgICAgcmV0dXJuIHNlcnZlclRpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRVcmxRdWVyeU9wID0gKCkgPT4ge1xuICAgIGxldCBvcCA9IHF1ZXJ5LmdldCgnb3AnKTtcbiAgICAvLyBpZiBub3QgcHJlc2VudCB0aGVuIGRlZmF1bHQgb3AgaXMgJ2NvbGxlY3RpbmcnXG4gICAgaWYgKFt1bmRlZmluZWQsIG51bGwsICcnXS5pbmNsdWRlcyhvcCkpIHtcbiAgICAgIHJldHVybiBDT0xMRUNUX1NBTVBMSU5HX09QO1xuICAgIH1cbiAgICByZXR1cm4gb3A7XG4gIH07XG5cbiAgaWYgKCFzYW1wbGluZ1BsYW4gfHwgIXNhbXBsaW5nUHJvcGVydGllcykge1xuICAgIHJldHVybiA8U3Bpbm5lciAvPjtcbiAgfVxuXG4gIGlmIChzYW1wbGluZ1Byb3BlcnRpZXMuaXNfcHVtcF9pbl9wcm9ncmVzcykge1xuICAgIHJldHVybiA8U2FtcGxlckluUHJvY2VzcyBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2V9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0+XG4gICAgICA8TGF5b3V0PlxuICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzU3R5bGU+XG4gICAgICAgICAgeyFpc01vYmlsZSAmJiAoXG4gICAgICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzSGVhZFxuICAgICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUGxhbn1cbiAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBjb2xsZWN0aW9uVGltZT17Y29sbGVjdGlvblRpbWV9XG4gICAgICAgICAgICAgIHNldENvbGxlY3Rpb25UaW1lPXtzZXRDb2xsZWN0aW9uVGltZX1cbiAgICAgICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkPXtzZXRTYW1wbGluZ1VwZGF0ZWR9XG4gICAgICAgICAgICAgIGlzRGF0ZVBpY2tlckRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlKHBhZ2VUeXBlKX1cbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17ZGF0ZUZvcm1hdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZVxuICAgICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUGxhbn1cbiAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBjb2xsZWN0aW9uVGltZT17Y29sbGVjdGlvblRpbWV9XG4gICAgICAgICAgICAgIHNldENvbGxlY3Rpb25UaW1lPXtzZXRDb2xsZWN0aW9uVGltZX1cbiAgICAgICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkPXtzZXRTYW1wbGluZ1VwZGF0ZWR9XG4gICAgICAgICAgICAgIGlzRGF0ZVBpY2tlckRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlKHBhZ2VUeXBlKX1cbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17ZGF0ZUZvcm1hdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtzYW1wbGluZ1Byb3BlcnRpZXMgJiYgcGFnZVR5cGUgJiYgKFxuICAgICAgICAgICAgPFNhbXBsaW5nUHJvcGVydGllc0Zvcm1cbiAgICAgICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzPXtzYW1wbGluZ1Byb3BlcnRpZXN9XG4gICAgICAgICAgICAgIHNhbXBsaW5nPXtzYW1wbGluZ1BsYW59XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBzZXRTYW1wbGluZ1VwZGF0ZWQ9e3NldFNhbXBsaW5nVXBkYXRlZH1cbiAgICAgICAgICAgICAgc2F2aW5nTXNnPXtzYXZpbmdNc2d9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZX1cbiAgICAgICAgICAgICAgc2V0UGhvdG9zVG9EZWxldGU9e3NldFBob3Rvc1RvRGVsZXRlfVxuICAgICAgICAgICAgICBzZXRQaG90b3M9e3NldFBob3Rvc31cbiAgICAgICAgICAgICAgcGhvdG9zPXtwaG90b3N9XG4gICAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NhbXBsaW5nUHJvcGVydGllc1N0eWxlPlxuICAgICAgPC9MYXlvdXQ+XG4gICAgPC9mb3JtPlxuICApO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsa0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFdBQUEsR0FBQU4sT0FBQTtBQUVBLElBQUFPLE9BQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFRLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLFlBQUEsR0FBQVAsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFVLFFBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLEtBQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLE9BQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLG1CQUFBLEdBQUFiLE9BQUE7QUFNQSxJQUFBYyx1QkFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsdUJBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQiw2QkFBQSxHQUFBaEIsT0FBQTtBQUNBLElBQUFpQix3QkFBQSxHQUFBakIsT0FBQTtB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
|
|
271
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0RGV2aWNlRGV0ZWN0IiwiX2Zvcm1payIsIl9yZWFjdFJvdXRlckRvbSIsIl9yZWFjdFJlZHV4IiwiX0xheW91dCIsIl9pMThuIiwiX3VzZVF1ZXJ5VVJMIiwiX1NwaW5uZXIiLCJfdXJscyIsIl9zdHlsZXMiLCJfc2FtcGxpbmdzUGFnZVV0aWxzIiwiX1NhbXBsaW5nUHJvcGVydGllc0Zvcm0iLCJfU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZCIsIl9TYW1wbGluZ1Byb3BlcnRpZXNIZWFkTW9iaWxlIiwiX3NhbXBsaW5nUHJvcGVydGllc1V0aWxzIiwiX1NhbXBsZXJJblByb2Nlc3MiLCJpc1Byb3BlcnRpZXNQYWdlIiwicGFnZVR5cGUiLCJTYW1wbGluZ1Byb3BlcnRpZXMiLCJjb2xsZWN0aW9uVGltZSIsInNldENvbGxlY3Rpb25UaW1lIiwidXNlU3RhdGUiLCJEYXRlIiwicGhvdG9zIiwic2V0UGhvdG9zIiwicGhvdG9zVG9EZWxldGUiLCJzZXRQaG90b3NUb0RlbGV0ZSIsInNhdmluZ01zZyIsInNldFNhdmluZ01zZyIsImkxOG4iLCJ0Iiwic2FtcGxpbmdVcGRhdGVkIiwic2V0U2FtcGxpbmdVcGRhdGVkIiwic2FtcGxpbmdQbGFuIiwic2V0U2FtcGxpbmdQbGFuIiwidW5kZWZpbmVkIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJsb2NhdGlvbiIsInVzZUxvY2F0aW9uIiwicXVlcnkiLCJ1c2VRdWVyeVVSTCIsInVzZXJJbmZvIiwidXNlU2VsZWN0b3IiLCJzdGF0ZSIsInBlcm1pc3Npb25zIiwidXNlcl9pbmZvIiwiZGF0ZUZvcm1hdCIsImRhdGVfdGltZV9mb3JtYXQiLCJ1c2VSZWYiLCJzYW1wbGluZ1Byb3BlcnRpZXMiLCJzZXRTYW1wbGluZ1Byb3BlcnRpZXMiLCJzYW1wbGVJZCIsInVzZVBhcmFtcyIsIndhdGVyQXV0aG9yaXR5SWQiLCJnbG9iYWxfZGF0YSIsImxvY2FsZSIsIm5hdl9jb250ZXh0X2RhdGEiLCJuYXZDb250ZXh0IiwiaW5pdEZvcm1pa1ZhbHVlcyIsImlzQ2FuY2VsZWQiLCJ0aW1lWm9uZSIsInBhZ2VDb2xsZWN0aW9uVGltZSIsImlzQ29sbGVjdExheW91dCIsImN1cnJlbnQiLCJjb2xsZWN0aW9uVGltZUZvcm1hdCIsInNhbXBsaW5nIiwiY29sbGVjdGlvbl90aW1lIiwic2FtIiwiZm9ybWlrVmFsdWVzIiwibGFiX2lkIiwicHVtcF9zYW1wbGluZ192b2x1bWUiLCJwdW1wX2JhdHRlcnlfbGV2ZWwiLCJkZXNjcmlwdGlvbiIsImthbmRvX3JlcCIsInNhbXBsaW5nX3BsYW5faWQiLCJjYW5jZWxsYXRpb25fcmVhc29uIiwiaXNfY2FuY2VsZWQiLCJpc0NhbmNlbGxlZExheW91dCIsImNhbmNlbGVkX2J5X2lkIiwibmFtZSIsImNhbmNlbGVkX2J5X25hbWUiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwiaWQiLCJmb3JtaWsiLCJzZXRWYWx1ZXMiLCJwYWdlVHlwZTJpc0NhbmNlbGxlZCIsImNhbmNlbCIsImNvbGxlY3QiLCJyZXZlcnRfY2FuY2VsIiwiZmV0Y2hTYW1wbGluZ1Byb3BlcnRpZXMiLCJ1c2VDYWxsYmFjayIsInNhbXBsaW5nSWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJvcCIsInJlc3BvbnNlIiwiYXhpb3MiLCJnZXQiLCJ1cmxzIiwiZmV0Y2hTYW1wbGluZyIsInVybCIsImRhdGEiLCJzYW1wbGluZ19wcm9wZXJ0aWVzIiwiZGV0ZWN0UGFnZVR5cGUiLCJkZXRlcm1pbmVDb2xsZWN0aW9uVGltZSIsInNhbXBsaW5nX3BsYW4iLCJ0aW1lX3pvbmUiLCJ1c2VFZmZlY3QiLCJnZXRVcmxRdWVyeU9wIiwidmFsaWRhdGlvblNjaGVtYSIsInByb3BlcnRpZXNWYWxpZGF0aW9uU2NoZW1hIiwiY2FuY2VsbGF0aW9uVmFsaWRhdGlvblNjaGVtYSIsInVzZUZvcm1payIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImluaXRpYWxWYWx1ZXMiLCJzYW1wbGluZ1Byb3BlcnR5IiwidmFsaWRhdGVPbkNoYW5nZSIsInZhbGlkYXRlT25CbHVyIiwib25TdWJtaXQiLCJ2YWx1ZXMiLCJoYW5kbGVTdWJtaXQiLCJoYW5kbGVDbG9zZSIsImtleSIsImdvQmFjayIsInB1c2giLCJzYW1wbGluZ3NQYWdlIiwic2FtcGxpbmdzTGlzdFJvdXRlIiwiX3NhbXBsaW5nUHJvcGVydGllcyRzIiwicGljdHVyZXNfYXR0cmlidXRlcyIsImNvbGxlY3Rpb25UaW1lSW5UaW1lWm9uZSIsInNhdmVGb3JtRGF0YSIsImZvcm1EYXRhQnVpbGRlciIsInVwZGF0ZU9yQ3JlYXRlIiwic2V0T3JpZ2luYWxTYXZlTWVzc2FnZVdpdGhUaW1lb3V0Iiwic2V0VGltZW91dCIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJ2YWx1ZSIsImFwcGVuZCIsImNvbmNhdCIsInVuaXF1ZVBob3Rvc1RvRGVsZXRlIiwiU2V0IiwiZm9yRWFjaCIsImluZGV4IiwiSlNPTiIsInN0cmluZ2lmeSIsIl9zYW1wbGluZ1Byb3BlcnRpZXMkczIiLCJ1cGRhdGVPckNyZWF0ZVN1Y2Nlc3MiLCJtc2ciLCJzYW1wbGluZ0lEIiwicG9zdCIsImNyZWF0ZVNhbXBsaW5nIiwiZSIsInB1dCIsInVwZGF0ZVNhbXBsaW5nIiwiaXNTYW1wbGluZ0NhbmNlbGxlZCIsImVkaXRQYWdlVmFsdWUiLCJDT0xMRUNUX1NBTVBMSU5HX09QIiwiQ0FOQ0VMX1NBTVBMSU5HX09QIiwiUkVWRVJUX0NBTkNFTExBVElPTiIsInNlcnZlckNvbGxlY3Rpb25UaW1lIiwiY3VycmVudFRpbWUiLCJzZXJ2ZXJUaW1lIiwiaW5jbHVkZXMiLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsIlNwaW5uZXIiLCJpc19wdW1wX2luX3Byb2dyZXNzIiwiU2FtcGxpbmdQcm9wZXJ0aWVzU3R5bGUiLCJpc01vYmlsZSIsIlNhbXBsaW5nUHJvcGVydGllc0hlYWQiLCJpc0RhdGVQaWNrZXJEaXNhYmxlZCIsIlNhbXBsaW5nUHJvcGVydGllc0hlYWRNb2JpbGUiLCJTYW1wbGluZ1Byb3BlcnRpZXNGb3JtIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWdlcy9TYW1wbGluZ3NQYWdlL1NhbXBsaW5nUHJvcGVydGllcy9TYW1wbGluZ1Byb3BlcnRpZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQcm9wZXJ0aWVzIGFuZCBDYW5jZWxsaW5nIGZvcm1zLlxuICoqL1xuaW1wb3J0IFJlYWN0LCB7IEZDLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IEZvcm1pa0NvbmZpZyB9IGZyb20gJ2Zvcm1pay9kaXN0L3R5cGVzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAncmVhY3QtZGV2aWNlLWRldGVjdCc7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tICdmb3JtaWsnO1xuaW1wb3J0IHsgdXNlSGlzdG9yeSwgdXNlUGFyYW1zLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5cbmltcG9ydCBMYXlvdXQgZnJvbSAnc3JjL3VpLWtpdC9MYXlvdXQvTGF5b3V0JztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgdXNlUXVlcnlVUkwgZnJvbSAnc3JjL2hvb2tzL3VzZVF1ZXJ5VVJMJztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICdzcmMvY29tcG9uZW50cy9TcGlubmVyL1NwaW5uZXInO1xuaW1wb3J0IHsgdXJscyB9IGZyb20gJ3NyYy91dGlsaXRpZXMvdXJscyc7XG5pbXBvcnQgeyBTYW1wbGluZ1Byb3BlcnRpZXNTdHlsZSB9IGZyb20gJy4vc3R5bGVzJztcbmltcG9ydCB7XG4gIENBTkNFTF9TQU1QTElOR19PUCxcbiAgQ09MTEVDVF9TQU1QTElOR19PUCxcbiAgUkVWRVJUX0NBTkNFTExBVElPTixcbiAgU2FtcGxpbmdGZXRjaERhdGEsXG59IGZyb20gJy4uL3NhbXBsaW5nc1BhZ2VVdGlscyc7XG5pbXBvcnQgeyBTYW1wbGluZ1Byb3BlcnRpZXNGb3JtIH0gZnJvbSAnLi9TYW1wbGluZ1Byb3BlcnRpZXNGb3JtJztcbmltcG9ydCB7IFNhbXBsaW5nUHJvcGVydGllc0hlYWQgfSBmcm9tICcuL1NhbXBsaW5nUHJvcGVydGllc0hlYWQnO1xuaW1wb3J0IHsgU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZSB9IGZyb20gJy4vU2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZSc7XG5pbXBvcnQge1xuICBGb3JtVHlwZSxcbiAgVFNhbXBsaW5nUHJvcGVydGllcyxcbiAgY2FuY2VsbGF0aW9uVmFsaWRhdGlvblNjaGVtYSxcbiAgaXNDb2xsZWN0TGF5b3V0LFxuICBwcm9wZXJ0aWVzVmFsaWRhdGlvblNjaGVtYSxcbiAgc2FtcGxpbmdQcm9wZXJ0eSxcbiAgY29sbGVjdGlvblRpbWVGb3JtYXQsXG4gIGNvbGxlY3Rpb25UaW1lSW5UaW1lWm9uZSxcbn0gZnJvbSAnLi9zYW1wbGluZ1Byb3BlcnRpZXNVdGlscyc7XG5pbXBvcnQgU2FtcGxlckluUHJvY2VzcyBmcm9tICcuL1NhbXBsZXJJblByb2Nlc3MnO1xuXG5jb25zdCBpc1Byb3BlcnRpZXNQYWdlID0gKHBhZ2VUeXBlKSA9PiBwYWdlVHlwZSA9PT0gJ2VkaXQnO1xuXG5leHBvcnQgY29uc3QgU2FtcGxpbmdQcm9wZXJ0aWVzOiBGQyA9ICgpID0+IHtcbiAgY29uc3QgW2NvbGxlY3Rpb25UaW1lLCBzZXRDb2xsZWN0aW9uVGltZV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBEYXRlIHwgbnVsbD4oXG4gICAgbmV3IERhdGUoKSxcbiAgKTtcbiAgY29uc3QgW3Bob3Rvcywgc2V0UGhvdG9zXSA9IHVzZVN0YXRlPHN0cmluZyB8IEJsb2IgfCBhbnk+KFtdKTtcbiAgY29uc3QgW3Bob3Rvc1RvRGVsZXRlLCBzZXRQaG90b3NUb0RlbGV0ZV0gPSB1c2VTdGF0ZTxudW1iZXJbXT4oW10pO1xuICBjb25zdCBbc2F2aW5nTXNnLCBzZXRTYXZpbmdNc2ddID0gdXNlU3RhdGU8c3RyaW5nPihpMThuLnQoJ2J1dHRvbnMuc2F2ZScpKTtcbiAgY29uc3QgW3NhbXBsaW5nVXBkYXRlZCwgc2V0U2FtcGxpbmdVcGRhdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NhbXBsaW5nUGxhbiwgc2V0U2FtcGxpbmdQbGFuXSA9IHVzZVN0YXRlPFxuICAgIFNhbXBsaW5nRmV0Y2hEYXRhIHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKTtcbiAgY29uc3QgaGlzdG9yeSA9IHVzZUhpc3RvcnkoKTtcbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICBjb25zdCBxdWVyeSA9IHVzZVF1ZXJ5VVJMKCk7XG4gIGNvbnN0IHVzZXJJbmZvID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS5wZXJtaXNzaW9ucy51c2VyX2luZm8pO1xuICBjb25zdCBkYXRlRm9ybWF0ID1cbiAgICB1c2VySW5mby5kYXRlX3RpbWVfZm9ybWF0ID09PSAndXMnXG4gICAgICA/ICdNTU0gZCwgeXl5eSBoaDptbSBhYSdcbiAgICAgIDogJ2QvTU0veXl5eSBISDptbSc7XG4gIGNvbnN0IHBhZ2VUeXBlID0gdXNlUmVmPHN0cmluZz4oJycpO1xuICBjb25zdCBbc2FtcGxpbmdQcm9wZXJ0aWVzLCBzZXRTYW1wbGluZ1Byb3BlcnRpZXNdID1cbiAgICB1c2VTdGF0ZTxUU2FtcGxpbmdQcm9wZXJ0aWVzPigpO1xuICBjb25zdCB7IHNhbXBsZUlkIH0gPSB1c2VQYXJhbXMoKTtcbiAgY29uc3Qgd2F0ZXJBdXRob3JpdHlJZCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZCxcbiAgKTtcbiAgY29uc3QgbG9jYWxlID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS5uYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQubG9jYWxlLFxuICApO1xuXG4gIGNvbnN0IGluaXRGb3JtaWtWYWx1ZXMgPSAoXG4gICAgc2FtcGxpbmdQcm9wZXJ0aWVzLFxuICAgIGlzQ2FuY2VsZWQsXG4gICAgdGltZVpvbmUsXG4gICAgdXNlckluZm8sXG4gICkgPT4ge1xuICAgIGNvbnN0IHBhZ2VDb2xsZWN0aW9uVGltZSA9IGlzQ29sbGVjdExheW91dChwYWdlVHlwZS5jdXJyZW50KVxuICAgICAgPyBjb2xsZWN0aW9uVGltZVxuICAgICAgOiBjb2xsZWN0aW9uVGltZUZvcm1hdChcbiAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcuY29sbGVjdGlvbl90aW1lLFxuICAgICAgICAgIHRpbWVab25lLFxuICAgICAgICApO1xuICAgIGNvbnN0IHNhbSA9IHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZztcbiAgICBsZXQgZm9ybWlrVmFsdWVzOiBGb3JtVHlwZSA9IHtcbiAgICAgIGxhYl9pZDogc2FtLmxhYl9pZCxcbiAgICAgIGNvbGxlY3Rpb25fdGltZTogcGFnZUNvbGxlY3Rpb25UaW1lLFxuICAgICAgcHVtcF9zYW1wbGluZ192b2x1bWU6IHNhbS5wdW1wX3NhbXBsaW5nX3ZvbHVtZSxcbiAgICAgIHB1bXBfYmF0dGVyeV9sZXZlbDogc2FtLnB1bXBfYmF0dGVyeV9sZXZlbCxcbiAgICAgIGRlc2NyaXB0aW9uOiBzYW0uZGVzY3JpcHRpb24sXG4gICAgICBrYW5kb19yZXA6IHNhbS5rYW5kb19yZXAsXG4gICAgICBzYW1wbGluZ19wbGFuX2lkOiBzYW0uc2FtcGxpbmdfcGxhbl9pZCxcbiAgICAgIGNhbmNlbGxhdGlvbl9yZWFzb246IHNhbS5jYW5jZWxsYXRpb25fcmVhc29uIHx8ICcnLFxuICAgICAgaXNfY2FuY2VsZWQ6IGlzQ2FuY2VsZWQsXG4gICAgfTtcblxuICAgIGlmIChpc0NhbmNlbGxlZExheW91dChzYW1wbGluZ1Byb3BlcnRpZXMpKVxuICAgICAgZm9ybWlrVmFsdWVzLmNhbmNlbGVkX2J5X2lkID0ge1xuICAgICAgICBuYW1lOlxuICAgICAgICAgIHNhbXBsaW5nUHJvcGVydGllcy5jYW5jZWxlZF9ieV9uYW1lIHx8XG4gICAgICAgICAgdXNlckluZm8uZmlyc3RfbmFtZSArICcgJyArIHVzZXJJbmZvLmxhc3RfbmFtZSxcbiAgICAgICAgaWQ6IHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5jYW5jZWxlZF9ieV9pZCB8fCB1c2VySW5mby5pZCxcbiAgICAgIH07XG4gICAgZm9ybWlrVmFsdWVzLmthbmRvX3JlcCA9IHNhbXBsaW5nUHJvcGVydGllcy5zYW1wbGluZy5rYW5kb19yZXA7XG4gICAgZm9ybWlrLnNldFZhbHVlcyhmb3JtaWtWYWx1ZXMpO1xuICB9O1xuXG4gIGNvbnN0IGlzQ2FuY2VsbGVkTGF5b3V0ID0gKHNhbXBsaW5nUHJvcGVydGllcykgPT4ge1xuICAgIGNvbnN0IHBhZ2VUeXBlMmlzQ2FuY2VsbGVkID0ge1xuICAgICAgY2FuY2VsOiB0cnVlLFxuICAgICAgY29sbGVjdDogZmFsc2UsXG4gICAgICByZXZlcnRfY2FuY2VsOiBmYWxzZSxcbiAgICB9O1xuICAgIGxldCBpc0NhbmNlbGVkID0gcGFnZVR5cGUyaXNDYW5jZWxsZWRbcGFnZVR5cGUuY3VycmVudF07XG4gICAgaWYgKGlzQ2FuY2VsZWQgPT09IG51bGwpIHtcbiAgICAgIGlzQ2FuY2VsZWQgPSBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcuaXNfY2FuY2VsZWQgfHwgZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBpc0NhbmNlbGVkO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoU2FtcGxpbmdQcm9wZXJ0aWVzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHNhbXBsaW5nSWQgPSBzYW1wbGVJZCwgb3ApID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KFxuICAgICAgICB1cmxzKHsgc2FtcGxpbmdJZDogc2FtcGxpbmdJZCB9KS5zYW1wbGluZ1Byb3BlcnRpZXMuZmV0Y2hTYW1wbGluZy51cmwsXG4gICAgICApO1xuICAgICAgY29uc3Qgc2FtcGxpbmcgPSByZXNwb25zZS5kYXRhO1xuICAgICAgY29uc3Qgc2FtcGxpbmdQcm9wZXJ0aWVzID0gc2FtcGxpbmcuc2FtcGxpbmdfcHJvcGVydGllcztcbiAgICAgIHBhZ2VUeXBlLmN1cnJlbnQgPSBkZXRlY3RQYWdlVHlwZShcbiAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLnNhbXBsaW5nLmlzX2NhbmNlbGVkLFxuICAgICAgICBvcCxcbiAgICAgICk7XG4gICAgICBzZXRDb2xsZWN0aW9uVGltZShcbiAgICAgICAgZGV0ZXJtaW5lQ29sbGVjdGlvblRpbWUoXG4gICAgICAgICAgY29sbGVjdGlvblRpbWVGb3JtYXQoXG4gICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcuY29sbGVjdGlvbl90aW1lLFxuICAgICAgICAgICAgc2FtcGxpbmcuc2FtcGxpbmdfcGxhbi50aW1lX3pvbmUsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBvcCxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICBsZXQgaXNDYW5jZWxlZCA9IGlzQ2FuY2VsbGVkTGF5b3V0KFxuICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXMuc2FtcGxpbmcuaXNfY2FuY2VsZWQsXG4gICAgICApO1xuICAgICAgaW5pdEZvcm1pa1ZhbHVlcyhcbiAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzLFxuICAgICAgICBpc0NhbmNlbGVkLFxuICAgICAgICBzYW1wbGluZy5zYW1wbGluZ19wbGFuLnRpbWVfem9uZSxcbiAgICAgICAgdXNlckluZm8sXG4gICAgICApO1xuICAgICAgc2V0U2FtcGxpbmdQcm9wZXJ0aWVzKHNhbXBsaW5nUHJvcGVydGllcyk7XG4gICAgICBzZXRTYW1wbGluZ1BsYW4oc2FtcGxpbmcuc2FtcGxpbmdfcGxhbik7XG4gICAgfSxcbiAgICBbXSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoU2FtcGxpbmdQcm9wZXJ0aWVzKHNhbXBsZUlkLCBnZXRVcmxRdWVyeU9wKCkpO1xuICB9LCBbc2FtcGxpbmdVcGRhdGVkXSk7XG5cbiAgY29uc3QgdmFsaWRhdGlvblNjaGVtYSA9IGlzQ29sbGVjdExheW91dChwYWdlVHlwZS5jdXJyZW50KVxuICAgID8gcHJvcGVydGllc1ZhbGlkYXRpb25TY2hlbWFcbiAgICA6IGNhbmNlbGxhdGlvblZhbGlkYXRpb25TY2hlbWE7XG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1pazxGb3JtaWtDb25maWc8Rm9ybVR5cGU+Pih7XG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlLFxuICAgIGluaXRpYWxWYWx1ZXM6IHNhbXBsaW5nUHJvcGVydHksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogdmFsaWRhdGlvblNjaGVtYSxcbiAgICB2YWxpZGF0ZU9uQ2hhbmdlOiBmYWxzZSxcbiAgICB2YWxpZGF0ZU9uQmx1cjogdHJ1ZSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgaGFuZGxlU3VibWl0KHZhbHVlcyk7XG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKGxvY2F0aW9uLmtleSkge1xuICAgICAgaGlzdG9yeS5nb0JhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGlzdG9yeS5wdXNoKFxuICAgICAgICB1cmxzKHsgbG9jYWxlLCB3YXRlckF1dGhvcml0eUlkIH0pLnNhbXBsaW5nc1BhZ2Uuc2FtcGxpbmdzTGlzdFJvdXRlLnVybCxcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9ICh2YWx1ZXMpID0+IHtcbiAgICBzZXRTYXZpbmdNc2coaTE4bi50KCdidXR0b25zLnNhdmluZycpKTtcbiAgICB2YWx1ZXMucGljdHVyZXNfYXR0cmlidXRlcyA9IHBob3RvcztcbiAgICBpZiAodmFsdWVzLmNhbmNlbGVkX2J5X2lkICYmIGlzQ2FuY2VsbGVkTGF5b3V0KHNhbXBsaW5nUHJvcGVydGllcykpXG4gICAgICB2YWx1ZXMuY2FuY2VsZWRfYnlfaWQgPVxuICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM/LnNhbXBsaW5nPy5jYW5jZWxlZF9ieV9pZCB8fCB1c2VySW5mby5pZDtcbiAgICBjb25zdCB0aW1lX3pvbmUgPSBzYW1wbGluZ1BsYW4/LnRpbWVfem9uZSB8fCAnVVRDJztcbiAgICB2YWx1ZXMuY29sbGVjdGlvbl90aW1lID0gY29sbGVjdGlvblRpbWVJblRpbWVab25lKFxuICAgICAgdmFsdWVzLmNvbGxlY3Rpb25fdGltZSxcbiAgICAgIHRpbWVfem9uZSxcbiAgICApO1xuICAgIGNvbnN0IHNhdmVGb3JtRGF0YSA9IGZvcm1EYXRhQnVpbGRlcih2YWx1ZXMpO1xuICAgIHVwZGF0ZU9yQ3JlYXRlKHNhdmVGb3JtRGF0YSk7XG4gIH07XG5cbiAgY29uc3Qgc2V0T3JpZ2luYWxTYXZlTWVzc2FnZVdpdGhUaW1lb3V0ID0gKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5zYXZlJykpO1xuICAgIH0sIDMwMDApO1xuICB9O1xuXG4gIGNvbnN0IGZvcm1EYXRhQnVpbGRlciA9ICh2YWx1ZXMpID0+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvciAoY29uc3Qga2V5IGluIHZhbHVlcykge1xuICAgICAgaWYgKGtleSAhPT0gJ3BpY3R1cmVzX2F0dHJpYnV0ZXMnKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzW2tleV0gPT09IG51bGwgPyAnJyA6IHZhbHVlc1trZXldO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoYHNhbXBsaW5nWyR7a2V5fV1gLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCB1bmlxdWVQaG90b3NUb0RlbGV0ZSA9IFsuLi5uZXcgU2V0KHBob3Rvc1RvRGVsZXRlKV07XG4gICAgdW5pcXVlUGhvdG9zVG9EZWxldGUubGVuZ3RoICE9PSAwICYmXG4gICAgICB1bmlxdWVQaG90b3NUb0RlbGV0ZS5mb3JFYWNoKChpZCwgaW5kZXgpID0+IHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgIGBzYW1wbGluZ1twaWN0dXJlc19hdHRyaWJ1dGVzXVske2luZGV4fV1baWRdYCxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShpZCksXG4gICAgICAgICk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICBgc2FtcGxpbmdbcGljdHVyZXNfYXR0cmlidXRlc11bJHtpbmRleH1dW19kZXN0cm95XWAsXG4gICAgICAgICAgJ3RydWUnLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIGZvcm1EYXRhO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZU9yQ3JlYXRlID0gYXN5bmMgKGZvcm1EYXRhKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlT3JDcmVhdGVTdWNjZXNzID0gKG1zZykgPT4ge1xuICAgICAgc2V0U2F2aW5nTXNnKGkxOG4udChtc2cpKTtcbiAgICAgIHNldFNhbXBsaW5nVXBkYXRlZCh0cnVlKTtcbiAgICAgIHNldE9yaWdpbmFsU2F2ZU1lc3NhZ2VXaXRoVGltZW91dCgpO1xuICAgICAgaGFuZGxlQ2xvc2UoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc2FtcGxpbmdJRCA9IHNhbXBsaW5nUHJvcGVydGllcz8uc2FtcGxpbmc/LmlkO1xuICAgIGlmIChzYW1wbGluZ0lEID09PSBudWxsKSB7XG4gICAgICAvLyBjcmVhdGVcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgYHNhbXBsaW5nW2RhdGVdYCxcbiAgICAgICAgZm9ybURhdGEuZ2V0KCdzYW1wbGluZ1tjb2xsZWN0aW9uX3RpbWVdJyksXG4gICAgICApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXhpb3MucG9zdChcbiAgICAgICAgICB1cmxzKHtcbiAgICAgICAgICAgIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQsXG4gICAgICAgICAgfSkuc2FtcGxpbmdQcm9wZXJ0aWVzLmNyZWF0ZVNhbXBsaW5nLnVybCxcbiAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgKTtcbiAgICAgICAgdXBkYXRlT3JDcmVhdGVTdWNjZXNzKCdidXR0b25zLmNyZWF0ZWQnKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc2V0U2F2aW5nTXNnKGkxOG4udCgnYnV0dG9ucy5lcnJvcicpKTtcbiAgICAgICAgc2V0T3JpZ2luYWxTYXZlTWVzc2FnZVdpdGhUaW1lb3V0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYWdlVHlwZS5jdXJyZW50ID09PSAncmV2ZXJ0X2NhbmNlbCcpIHtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKGBzYW1wbGluZ1tjb2xsZWN0aW9uX3RpbWVdYCwgY29sbGVjdGlvblRpbWUpO1xuICAgICAgfVxuICAgICAgLy8gdXBkYXRlXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBheGlvcy5wdXQoXG4gICAgICAgICAgdXJscyh7IHNhbXBsaW5nSWQ6IHNhbXBsaW5nSUQsIHdhdGVyQXV0aG9yaXR5SWQ6IHdhdGVyQXV0aG9yaXR5SWQgfSlcbiAgICAgICAgICAgIC5zYW1wbGluZ1Byb3BlcnRpZXMudXBkYXRlU2FtcGxpbmcudXJsLFxuICAgICAgICAgIGZvcm1EYXRhLFxuICAgICAgICApO1xuICAgICAgICB1cGRhdGVPckNyZWF0ZVN1Y2Nlc3MoJ2J1dHRvbnMudXBkYXRlZCcpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzZXRTYXZpbmdNc2coaTE4bi50KCdidXR0b25zLmVycm9yJykpO1xuICAgICAgICBzZXRPcmlnaW5hbFNhdmVNZXNzYWdlV2l0aFRpbWVvdXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGV0ZWN0UGFnZVR5cGUgPSAoaXNTYW1wbGluZ0NhbmNlbGxlZCwgb3ApID0+IHtcbiAgICBjb25zdCBlZGl0UGFnZVZhbHVlID0gaXNTYW1wbGluZ0NhbmNlbGxlZCA/ICdjYW5jZWwnIDogJ2NvbGxlY3QnO1xuICAgIGlmIChvcCA9PT0gJ2VkaXQnKSB7XG4gICAgICByZXR1cm4gZWRpdFBhZ2VWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKG9wID09PSBDT0xMRUNUX1NBTVBMSU5HX09QKSB7XG4gICAgICByZXR1cm4gJ2NvbGxlY3QnO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IENBTkNFTF9TQU1QTElOR19PUCkge1xuICAgICAgcmV0dXJuICdjYW5jZWwnO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IFJFVkVSVF9DQU5DRUxMQVRJT04pIHtcbiAgICAgIHJldHVybiAncmV2ZXJ0X2NhbmNlbCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZXRlcm1pbmVDb2xsZWN0aW9uVGltZSA9IChzZXJ2ZXJDb2xsZWN0aW9uVGltZSwgb3ApID0+IHtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3Qgc2VydmVyVGltZSA9IHNlcnZlckNvbGxlY3Rpb25UaW1lXG4gICAgICA/IG5ldyBEYXRlKHNlcnZlckNvbGxlY3Rpb25UaW1lKVxuICAgICAgOiBjdXJyZW50VGltZTtcbiAgICBjb25zdCBlZGl0UGFnZVZhbHVlID0gc2VydmVyQ29sbGVjdGlvblRpbWUgPyBzZXJ2ZXJUaW1lIDogY3VycmVudFRpbWU7XG4gICAgaWYgKG9wID09PSAnZWRpdCcpIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH0gZWxzZSBpZiAob3AgPT09IENPTExFQ1RfU0FNUExJTkdfT1ApIHtcbiAgICAgIHJldHVybiBjdXJyZW50VGltZTtcbiAgICB9IGVsc2UgaWYgKFtDQU5DRUxfU0FNUExJTkdfT1AsIFJFVkVSVF9DQU5DRUxMQVRJT05dLmluY2x1ZGVzKG9wKSkge1xuICAgICAgcmV0dXJuIHNlcnZlclRpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlZGl0UGFnZVZhbHVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRVcmxRdWVyeU9wID0gKCkgPT4ge1xuICAgIGxldCBvcCA9IHF1ZXJ5LmdldCgnb3AnKTtcbiAgICAvLyBpZiBub3QgcHJlc2VudCB0aGVuIGRlZmF1bHQgb3AgaXMgJ2NvbGxlY3RpbmcnXG4gICAgaWYgKFt1bmRlZmluZWQsIG51bGwsICcnXS5pbmNsdWRlcyhvcCkpIHtcbiAgICAgIHJldHVybiBDT0xMRUNUX1NBTVBMSU5HX09QO1xuICAgIH1cbiAgICByZXR1cm4gb3A7XG4gIH07XG5cbiAgaWYgKCFzYW1wbGluZ1BsYW4gfHwgIXNhbXBsaW5nUHJvcGVydGllcykge1xuICAgIHJldHVybiA8U3Bpbm5lciAvPjtcbiAgfVxuXG4gIGlmIChzYW1wbGluZ1Byb3BlcnRpZXMuaXNfcHVtcF9pbl9wcm9ncmVzcykge1xuICAgIHJldHVybiA8U2FtcGxlckluUHJvY2VzcyBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2V9IC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0+XG4gICAgICA8TGF5b3V0PlxuICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzU3R5bGU+XG4gICAgICAgICAgeyFpc01vYmlsZSAmJiAoXG4gICAgICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzSGVhZFxuICAgICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUGxhbn1cbiAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBjb2xsZWN0aW9uVGltZT17Y29sbGVjdGlvblRpbWV9XG4gICAgICAgICAgICAgIHNldENvbGxlY3Rpb25UaW1lPXtzZXRDb2xsZWN0aW9uVGltZX1cbiAgICAgICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkPXtzZXRTYW1wbGluZ1VwZGF0ZWR9XG4gICAgICAgICAgICAgIGlzRGF0ZVBpY2tlckRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlKHBhZ2VUeXBlKX1cbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17ZGF0ZUZvcm1hdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgICA8U2FtcGxpbmdQcm9wZXJ0aWVzSGVhZE1vYmlsZVxuICAgICAgICAgICAgICBzYW1wbGluZ1Byb3BlcnRpZXM9e3NhbXBsaW5nUHJvcGVydGllc31cbiAgICAgICAgICAgICAgc2FtcGxpbmc9e3NhbXBsaW5nUGxhbn1cbiAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBjb2xsZWN0aW9uVGltZT17Y29sbGVjdGlvblRpbWV9XG4gICAgICAgICAgICAgIHNldENvbGxlY3Rpb25UaW1lPXtzZXRDb2xsZWN0aW9uVGltZX1cbiAgICAgICAgICAgICAgc2V0U2FtcGxpbmdVcGRhdGVkPXtzZXRTYW1wbGluZ1VwZGF0ZWR9XG4gICAgICAgICAgICAgIGlzRGF0ZVBpY2tlckRpc2FibGVkPXtpc1Byb3BlcnRpZXNQYWdlKHBhZ2VUeXBlKX1cbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17ZGF0ZUZvcm1hdH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHtzYW1wbGluZ1Byb3BlcnRpZXMgJiYgcGFnZVR5cGUgJiYgKFxuICAgICAgICAgICAgPFNhbXBsaW5nUHJvcGVydGllc0Zvcm1cbiAgICAgICAgICAgICAgc2FtcGxpbmdQcm9wZXJ0aWVzPXtzYW1wbGluZ1Byb3BlcnRpZXN9XG4gICAgICAgICAgICAgIHNhbXBsaW5nPXtzYW1wbGluZ1BsYW59XG4gICAgICAgICAgICAgIHBhZ2VUeXBlPXtwYWdlVHlwZS5jdXJyZW50fVxuICAgICAgICAgICAgICBzZXRTYW1wbGluZ1VwZGF0ZWQ9e3NldFNhbXBsaW5nVXBkYXRlZH1cbiAgICAgICAgICAgICAgc2F2aW5nTXNnPXtzYXZpbmdNc2d9XG4gICAgICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZX1cbiAgICAgICAgICAgICAgc2V0UGhvdG9zVG9EZWxldGU9e3NldFBob3Rvc1RvRGVsZXRlfVxuICAgICAgICAgICAgICBzZXRQaG90b3M9e3NldFBob3Rvc31cbiAgICAgICAgICAgICAgcGhvdG9zPXtwaG90b3N9XG4gICAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NhbXBsaW5nUHJvcGVydGllc1N0eWxlPlxuICAgICAgPC9MYXlvdXQ+XG4gICAgPC9mb3JtPlxuICApO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxrQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBTixPQUFBO0FBRUEsSUFBQU8sT0FBQSxHQUFBTCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVEsS0FBQSxHQUFBTixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVMsWUFBQSxHQUFBUCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVUsUUFBQSxH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
|