@kando-env/kando-ui 1.2.228-alpha.3 → 1.2.228-alpha.32
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 +38 -106
- package/lib/Widgets/EventsCarousel/EventsCarousel.js +14 -46
- package/lib/Widgets/EventsRow/EventsRow.js +17 -46
- package/lib/Widgets/Map/GraphUtils.js +2 -5
- package/lib/Widgets/Map/Map.js +59 -88
- package/lib/Widgets/Map/MapUtils.js +6 -57
- package/lib/Widgets/Map/areas/AreaPolygon.js +9 -31
- package/lib/Widgets/Map/areas/AreaPolygons.js +10 -25
- package/lib/Widgets/Map/edges/Edge.js +11 -34
- package/lib/Widgets/Map/edges/Edges.js +13 -24
- package/lib/Widgets/Map/edges/arrows/Arrows.js +9 -24
- package/lib/Widgets/Map/events/Event.js +9 -27
- package/lib/Widgets/Map/events/EventIndicator.js +21 -46
- package/lib/Widgets/Map/events/EventPath.js +7 -24
- package/lib/Widgets/Map/events/EventUtils.js +5 -55
- package/lib/Widgets/Map/events/NetworkForSpecificEvent.js +7 -23
- package/lib/Widgets/Map/events/PointOfEvent.js +7 -38
- package/lib/Widgets/Map/events/PointsForSpecificEvent.js +5 -17
- package/lib/Widgets/Map/events/Snail.js +9 -23
- package/lib/Widgets/Map/graphDNDArea/GraphDNDArea.js +17 -58
- package/lib/Widgets/Map/map/FloatingGraph.js +4 -20
- package/lib/Widgets/Map/map/GraphDateButton.js +4 -10
- package/lib/Widgets/Map/matchGraph/MatchGraph.js +5 -11
- package/lib/Widgets/Map/matchGraph/createFloatingGraph.js +5 -11
- package/lib/Widgets/Map/points/PointIcon.js +7 -23
- package/lib/Widgets/Map/points/PointMarker.js +15 -25
- package/lib/Widgets/Map/points/PointMarkers.js +18 -26
- package/lib/Widgets/Map/points/PointUtils.js +12 -95
- package/lib/Widgets/MostPolluting/Areas/AreaBox/AreaBox.js +17 -53
- package/lib/Widgets/MostPolluting/Areas/AreaBox/Map/Map.js +6 -23
- package/lib/Widgets/MostPolluting/Areas/AreaBox/PieChart/PieChart.js +3 -17
- package/lib/Widgets/MostPolluting/Areas/AreaBox/styles.js +2 -6
- package/lib/Widgets/MostPolluting/Areas/Areas.js +21 -57
- package/lib/Widgets/MostPolluting/Areas/areas.mock.js +1 -1
- package/lib/Widgets/MostPolluting/Areas/areasResponse.interface.js +1 -1
- package/lib/Widgets/MostPolluting/Areas/styles.js +2 -8
- package/lib/Widgets/MostPolluting/EmptyState/EmptyState.js +4 -12
- package/lib/Widgets/MostPolluting/Factories/Factories.js +32 -68
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/FactoryBox.js +5 -22
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/PieChart/PieChart.js +2 -11
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/PollutionScore.js +5 -18
- package/lib/Widgets/MostPolluting/Factories/FactoryBox/styles.js +4 -8
- package/lib/Widgets/MostPolluting/Factories/factories.mock.js +1 -1
- package/lib/Widgets/MostPolluting/Factories/factoriesResponse.interface.js +1 -1
- package/lib/Widgets/MostPolluting/Factories/styles.js +2 -8
- package/lib/Widgets/MostPolluting/MostPolluting.js +6 -21
- package/lib/Widgets/MostPolluting/MostPolluting.stories.js +14 -18
- package/lib/Widgets/MostPolluting/ShowMore/ShowMore.js +3 -10
- package/lib/Widgets/MostPolluting/ShowMore/styles.js +2 -6
- package/lib/Widgets/MostPolluting/assets/index.js +18 -29
- package/lib/Widgets/MostPolluting/components/ChangePercent.js +2 -17
- package/lib/Widgets/MostPolluting/components/ChangePercent.test.js +16 -27
- package/lib/Widgets/MostPolluting/components/PollutionScorePercent.js +5 -27
- package/lib/Widgets/MostPolluting/components/PollutionScorePercent.test.js +26 -34
- package/lib/Widgets/MostPolluting/components/PotentialImpact.js +5 -21
- package/lib/Widgets/MostPolluting/components/PotentialImpact.test.js +30 -44
- package/lib/Widgets/MostPolluting/models.js +1 -1
- package/lib/Widgets/MostPolluting/styles.js +2 -8
- package/lib/Widgets/PotentialImpactSummary/Back/Back.js +3 -10
- package/lib/Widgets/PotentialImpactSummary/Icon.js +2 -12
- package/lib/Widgets/PotentialImpactSummary/index.js +9 -31
- package/lib/Widgets/PotentialImpactSummary/index.test.js +18 -37
- package/lib/Widgets/PotentialImpactSummary/styles.js +3 -16
- package/lib/Widgets/PotentialImpactSummary/useCasesResponse.interface.js +1 -1
- package/lib/Widgets/QualitySummary/PieChart/LegendMenu/LegendMenu.js +5 -11
- package/lib/Widgets/QualitySummary/PieChart/PieChart.js +8 -22
- package/lib/Widgets/QualitySummary/PieChart/PieChart.test.js +20 -30
- package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.js +16 -25
- package/lib/Widgets/QualitySummary/PollutedLine/PollutedLine.test.js +9 -25
- package/lib/Widgets/QualitySummary/QualitySummary.js +9 -25
- package/lib/Widgets/QualitySummary/qualitySummary.mock.js +2 -2
- package/lib/Widgets/QualitySummary/qualitySummaryResponse.interface.js +1 -1
- package/lib/Widgets/QualitySummary/styles.js +3 -16
- package/lib/Widgets/UtilityInformation/MapModal/MapModal.js +11 -24
- package/lib/Widgets/UtilityInformation/PopupWithMap/Map/Map.js +11 -38
- package/lib/Widgets/UtilityInformation/PopupWithMap/PopupWithMap.js +10 -19
- package/lib/Widgets/UtilityInformation/UtilityInformation.js +26 -51
- package/lib/Widgets/UtilityInformation/UtilityInformationResponse.interface.js +1 -1
- package/lib/Widgets/UtilityInformation/styles.js +4 -26
- package/lib/Widgets/UtilityInformation/utilityInformation.mock.js +2 -2
- package/lib/assets/icons/index.js +5 -8
- package/lib/assets/icons/kandoStepper/index.js +9 -14
- package/lib/components/ApplyButton/ApplyButton.js +6 -12
- package/lib/components/ApplyButton/index.js +2 -5
- package/lib/components/Backdrop/Backdrop.js +3 -9
- package/lib/components/ContentLoader/ContentLoader.js +8 -13
- package/lib/components/ContentLoader/index.js +1 -2
- package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.js +8 -15
- package/lib/components/CustomInputs/DoubleTabs/DoubleTabs.stories.js +3 -9
- package/lib/components/CustomInputs/DoubleTabs/styles.js +3 -11
- package/lib/components/CustomInputs/PasswordInput/PasswordInput.js +7 -22
- package/lib/components/CustomInputs/PrimaryButton/PrimaryButton.js +2 -6
- package/lib/components/CustomInputs/Search/Search.js +15 -42
- package/lib/components/CustomInputs/Search/index.js +2 -5
- package/lib/components/CustomInputs/Select/Select.js +15 -35
- package/lib/components/CustomInputs/Select/Select.stories.js +3 -9
- package/lib/components/DamageType/DamageType.js +39 -80
- package/lib/components/DamageType/index.js +2 -5
- package/lib/components/DataLoaderError/DataLoaderError.js +5 -11
- package/lib/components/DischargeHeatmap/DischargeHeatmap.js +7 -17
- package/lib/components/DischargeHeatmap/DischargeHeatmap.test.js +18 -38
- package/lib/components/DischargeHeatmap/DischargeHeatmapContainer.js +14 -41
- package/lib/components/DischargeHeatmap/HighchartsOptions.js +7 -11
- package/lib/components/DischargeHeatmap/index.js +2 -5
- package/lib/components/DischargeHeatmap/mocks/handlers.js +3 -4
- package/lib/components/DischargeHeatmap/popupText.js +2 -17
- package/lib/components/DischargeHeatmap/titles.js +2 -9
- package/lib/components/DischargeHeatmap/types.js +1 -1
- package/lib/components/ErrorBoundary.js +4 -16
- package/lib/components/Events/Events.js +7 -34
- package/lib/components/Events/index.js +2 -5
- package/lib/components/Graph/Graph.js +35 -80
- package/lib/components/Graph/index.js +2 -5
- package/lib/components/Header/Breadcrumbs/Breadcrumbs.js +2 -8
- package/lib/components/Header/Breadcrumbs/index.js +2 -5
- package/lib/components/Header/DoubleTabs/DoubleTabs.js +16 -34
- package/lib/components/Header/DoubleTabs/DoubleTabs.stories.js +3 -9
- package/lib/components/Header/DoubleTabs/styles.js +3 -11
- package/lib/components/Header/Header.js +2 -8
- package/lib/components/Header/Header.stories.js +3 -9
- package/lib/components/Header/InfoBar/Breadcrumbs/Breadcrumbs.js +2 -12
- package/lib/components/Header/InfoBar/InfoBar.js +6 -34
- package/lib/components/Header/InfoBar/Search/Control.js +3 -14
- package/lib/components/Header/InfoBar/Search/GroupLabel.js +2 -13
- package/lib/components/Header/InfoBar/Search/Search.js +7 -30
- package/lib/components/Header/InfoBar/Search/SearchContainer.js +6 -25
- package/lib/components/Header/InfoBar/Search/index.js +2 -5
- package/lib/components/Header/InfoBar/Search/searchStyle.js +2 -5
- package/lib/components/Header/KandoNavbar/KandoNavbar.js +48 -95
- package/lib/components/Header/KandoNavbar/index.js +2 -5
- package/lib/components/Header/Slideshow/Slideshow.js +33 -71
- package/lib/components/Header/Slideshow/index.js +2 -5
- package/lib/components/Header/Toolbar/ClientImg/ClientImg.js +2 -8
- package/lib/components/Header/Toolbar/CustomerMenu/CustomerMenu.js +3 -16
- package/lib/components/Header/Toolbar/MenuCreator/MenuCreator.js +2 -16
- package/lib/components/Header/Toolbar/SearchDropdown/SearchDropdown.js +8 -25
- package/lib/components/Header/Toolbar/Toolbar.js +49 -89
- package/lib/components/InfoBar/InfoBar.js +10 -27
- package/lib/components/InfoBar/InfoBar.stories.js +3 -9
- package/lib/components/KandoModal/KandoModal.js +21 -46
- package/lib/components/KandoModal/index.js +2 -5
- package/lib/components/Link.js +3 -12
- package/lib/components/Links/CustomRedirect/CustomRedirect.js +4 -13
- package/lib/components/Links/StyledLink/StyledLink.js +7 -17
- package/lib/components/Links/StyledNavLink/StyledNavLink.js +5 -15
- package/lib/components/LiveEvents/CarouselSlide.js +6 -12
- package/lib/components/LiveEvents/LiveEvents.js +2 -11
- package/lib/components/LiveEvents/index.js +2 -5
- package/lib/components/LoaderByPercent/LoaderByPercent.js +14 -24
- package/lib/components/Map/Map.js +14 -30
- package/lib/components/Map/index.js +2 -5
- package/lib/components/Modal/Modal.js +4 -11
- package/lib/components/NarrowHeader.js +2 -13
- package/lib/components/PointInfo/PointInfo.js +11 -23
- package/lib/components/PointInfo/index.js +2 -5
- package/lib/components/PopupModal/PopupModal.js +7 -18
- package/lib/components/PopupModal/PopupModal.stories.js +3 -12
- package/lib/components/Sector/Sector.js +5 -14
- package/lib/components/Sector/Sector.test.js +4 -9
- package/lib/components/Sector/index.js +2 -5
- package/lib/components/Sector/sectorIcons.js +2 -28
- package/lib/components/SevereEvent/Eta/Eta.js +16 -43
- package/lib/components/SevereEvent/Eta/styles.js +2 -6
- package/lib/components/SevereEvent/SevereEvent.js +17 -40
- package/lib/components/Spinner/Spinner.js +6 -11
- package/lib/components/Spinner/Spinner.stories.js +3 -9
- package/lib/components/Spinner/index.js +2 -5
- package/lib/components/Spinner/styles.js +2 -10
- package/lib/components/Tabs/Tabs.js +7 -29
- package/lib/components/Tabs/Tabs.stories.js +3 -9
- package/lib/components/Tabs/assets/index.js +1 -6
- package/lib/components/TimeRangeSelector/KandoRangePicker/ComparisonSelect.js +4 -16
- package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePicker.js +14 -47
- package/lib/components/TimeRangeSelector/KandoRangePicker/KandoRangePickerContainer.js +14 -40
- package/lib/components/TimeRangeSelector/KandoRangePicker/index.js +2 -5
- package/lib/components/TimeRangeSelector/TimeRangeHelper.js +10 -30
- package/lib/components/TimeRangeSelector/TimeRangeItem/TimeRangeItem.js +5 -10
- package/lib/components/TimeRangeSelector/TimeRangeItem/index.js +2 -5
- package/lib/components/TimeRangeSelector/TimeRangeList.js +6 -17
- package/lib/components/TimeRangeSelector/TimeRangeOptions.js +13 -28
- package/lib/components/TimeRangeSelector/TimeRangeSelector.js +13 -40
- package/lib/components/TimeRangeSelector/TimeRangeSelector.stories.js +3 -11
- package/lib/components/TimeRangeSelector/constants.js +2 -2
- package/lib/components/TimeRangeSelector/index.js +2 -5
- package/lib/components/Toggle/Toggle.js +9 -25
- package/lib/components/Toggle/index.js +2 -5
- package/lib/components/TrendGraph/TrendGraph.js +19 -54
- package/lib/components/TrendGraph/index.js +2 -5
- package/lib/components/TrendGraphNVL/TrendGraphNVL.js +12 -39
- package/lib/components/TrendGraphNVL/index.js +2 -5
- package/lib/development-environment/index.js +2 -14
- package/lib/development-environment/mock/browser.js +2 -9
- package/lib/development-environment/mock/get.js +1 -5
- package/lib/development-environment/mock/handlers.js +1 -26
- package/lib/development-environment/mock/mockBus.js +2 -7
- package/lib/development-environment/mock/mockObjects/area-trends-graph.js +1 -1
- package/lib/development-environment/mock/mockObjects/areaInformation.js +1 -1
- package/lib/development-environment/mock/mockObjects/areaQualitySummary.js +1 -1
- package/lib/development-environment/mock/mockObjects/areaSitesData.js +1 -1
- package/lib/development-environment/mock/mockObjects/areasJson.js +1 -1
- package/lib/development-environment/mock/mockObjects/controlRoomNetworkEdges.js +1 -1
- package/lib/development-environment/mock/mockObjects/covidView-areasData-24.js +1 -1
- package/lib/development-environment/mock/mockObjects/data-menuData.js +1 -1
- package/lib/development-environment/mock/mockObjects/data-search.js +1 -1
- package/lib/development-environment/mock/mockObjects/discharge_effluent_quality.js +1 -1
- package/lib/development-environment/mock/mockObjects/discharge_pattern_overtime.js +1 -1
- package/lib/development-environment/mock/mockObjects/eventFiltersJson.js +1 -1
- package/lib/development-environment/mock/mockObjects/eventsJson.js +1 -1
- package/lib/development-environment/mock/mockObjects/metascore.js +1 -1
- package/lib/development-environment/mock/mockObjects/permissionsJson.js +1 -1
- package/lib/development-environment/mock/mockObjects/pointsJson.js +1 -1
- package/lib/development-environment/mock/mockObjects/site-info.js +1 -1
- package/lib/development-environment/mock/mockObjects/trend-graph-component-data-907.js +1 -1
- package/lib/development-environment/togly/ToglyDashboard.js +6 -26
- package/lib/development-environment/togly/ToglyItem.js +7 -29
- package/lib/development-environment/togly/flags.js +1 -1
- package/lib/development-environment/togly/init.js +2 -7
- package/lib/development-environment/togly/macro.js +7 -9
- package/lib/development-environment/togly/useDoubleKeyDown.js +1 -8
- package/lib/development-environment/togly/useLocalStorage.js +13 -20
- package/lib/hooks/useApi.js +38 -59
- package/lib/hooks/useApiWithDashboardQuery.js +11 -31
- package/lib/hooks/useClickOutside.js +1 -5
- package/lib/hooks/useInitializeHeaders.js +2 -8
- package/lib/hooks/useKandoFetch.js +14 -28
- package/lib/hooks/useMap.js +11 -38
- package/lib/hooks/useNavContext.js +14 -23
- package/lib/hooks/useQueryURL.js +1 -4
- package/lib/hooks/useRemoveExistingLayers.js +2 -7
- package/lib/hooks/useUpdateEventBodyTail.js +1 -10
- package/lib/hooks/useUserTimeZone.js +1 -9
- package/lib/hooks/useUserTimeZone.test.js +3 -13
- package/lib/hooks/useWindowSize.js +15 -20
- package/lib/index.js +14 -30
- package/lib/macros/getVersion.js +2 -3
- package/lib/models/IAction.js +1 -1
- package/lib/models/IAppState.js +1 -1
- package/lib/pages/AreaPage/AreaPage.js +31 -64
- package/lib/pages/AreaPage/Dashboard/AreaMapContainer/AreaMapContainer.js +7 -20
- package/lib/pages/AreaPage/Dashboard/Dashboard.js +4 -27
- package/lib/pages/AreaPage/Dashboard/LineChart/LineChart.js +13 -39
- package/lib/pages/AreaPage/Dashboard/LineChart/options/options.js +7 -9
- package/lib/pages/AreaPage/Dashboard/Sites/Sites.js +30 -68
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/PieChart/PieChart.js +2 -11
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/SiteBox.js +4 -16
- package/lib/pages/AreaPage/Dashboard/Sites/SitesBox/styles.js +4 -8
- package/lib/pages/AreaPage/Dashboard/Sites/SitesResponse.interface.js +1 -1
- package/lib/pages/AreaPage/Dashboard/Sites/factories.mock.js +1 -1
- package/lib/pages/AreaPage/Dashboard/Sites/styles.js +3 -11
- package/lib/pages/AssessmentPage/AssessmentPage.js +7 -34
- package/lib/pages/CannyWidget/Feedback.js +12 -29
- package/lib/pages/CovidPage/CovidPage.js +3 -18
- package/lib/pages/CovidPage/components/Body.js +11 -37
- package/lib/pages/CovidPage/components/Map.js +22 -42
- package/lib/pages/CovidPage/components/Sidebar.js +6 -22
- package/lib/pages/CovidPage/components/Summary.js +10 -33
- package/lib/pages/CovidPage/components/TrendGraphNVL/TrendGraphNVL.js +12 -39
- package/lib/pages/CovidPage/components/TrendGraphNVL/index.js +2 -5
- package/lib/pages/CovidPage/components/TrendPopupContent/TrendPopupContent.js +15 -45
- package/lib/pages/CovidPage/components/TrendPopupContent/index.js +2 -5
- package/lib/pages/CovidPage/components/areas/Area.js +8 -37
- package/lib/pages/CovidPage/components/areas/AreaPolygonWBE.js +6 -49
- package/lib/pages/CovidPage/components/areas/AreaPolygonsWBE.js +7 -22
- package/lib/pages/CovidPage/components/areas/AreasList.js +16 -37
- package/lib/pages/CovidPage/components/areas/Sort.js +7 -23
- package/lib/pages/CovidPage/components/nvlStatusHelper.js +2 -11
- package/lib/pages/EventsPage/Body/Body.js +4 -23
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropContainer.js +13 -32
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropUtils.js +12 -32
- package/lib/pages/EventsPage/DragAndDropArea/DragAndDropWrapper.js +5 -12
- package/lib/pages/EventsPage/DragAndDropArea/DraggableItem.js +4 -12
- package/lib/pages/EventsPage/DragAndDropArea/DraggableList.js +6 -11
- package/lib/pages/EventsPage/DragAndDropArea/index.js +2 -5
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainer.js +9 -37
- package/lib/pages/EventsPage/EventsMapContainer/EventsMapContainerHelpers.js +3 -22
- package/lib/pages/EventsPage/EventsPage.js +3 -17
- package/lib/pages/EventsPage/FloatingGraph/FloatingGraph.js +12 -37
- package/lib/pages/EventsPage/events/MoreInfo.js +3 -23
- package/lib/pages/EventsPage/events/Sidebar.js +7 -22
- package/lib/pages/EventsPage/events/event_info/EarlyWarnings.js +7 -33
- package/lib/pages/EventsPage/events/event_info/EventDetails.js +9 -33
- package/lib/pages/EventsPage/events/event_info/EventInfo.js +14 -45
- package/lib/pages/EventsPage/events/event_info/EventPath/EventPath.js +3 -15
- package/lib/pages/EventsPage/events/event_info/EventTimeRange.js +12 -44
- package/lib/pages/EventsPage/events/event_info/HistoricalInformation.js +2 -13
- package/lib/pages/EventsPage/events/event_info/MiniEventTree.js +10 -34
- package/lib/pages/EventsPage/events/event_info/MobileEventPath.js +2 -9
- package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/LineChartYear/LineChartYear.js +9 -31
- package/lib/pages/EventsPage/events/event_info/MockHistoryInformation/MockHistoryInformation.js +3 -11
- package/lib/pages/EventsPage/events/event_info/PollutionDischarge.js +7 -25
- package/lib/pages/EventsPage/events/event_info/charts/EventDetailsLineChart.js +6 -27
- package/lib/pages/EventsPage/events/event_info/charts/EventDetailsPieChart.js +6 -26
- package/lib/pages/EventsPage/events/event_info/damage_type/DamageType.js +8 -37
- package/lib/pages/EventsPage/events/event_info/samplings/Sampling.js +4 -16
- package/lib/pages/EventsPage/events/event_info/samplings/Samplings.js +3 -11
- package/lib/pages/EventsPage/events/event_info/sources/Source.js +9 -32
- package/lib/pages/EventsPage/events/event_info/sources/Sources.js +6 -24
- package/lib/pages/EventsPage/events/events_list/EventItem.js +5 -28
- package/lib/pages/EventsPage/events/events_list/EventUtils.js +3 -14
- package/lib/pages/EventsPage/events/events_list/EventsList.js +41 -107
- package/lib/pages/EventsPage/events/events_list/Filter/Filter.js +13 -36
- package/lib/pages/EventsPage/events/events_list/Filter/FilterContainer.js +33 -100
- package/lib/pages/EventsPage/events/events_list/Filter/FilterItem.js +12 -59
- package/lib/pages/EventsPage/events/events_list/Filter/FiltersDropDown.js +7 -21
- package/lib/pages/EventsPage/events/events_list/Filter/OptionsDropDown.js +17 -42
- package/lib/pages/EventsPage/events/events_list/Sort.js +6 -27
- package/lib/pages/ImportFileWizard/FileUploadRespones.js +5 -20
- package/lib/pages/ImportFileWizard/ImportButtomButtons.js +4 -10
- package/lib/pages/ImportFileWizard/ImportFile.js +12 -33
- package/lib/pages/ImportFileWizard/ResponseBody.js +4 -13
- package/lib/pages/ImportFileWizard/ValidationForm.js +8 -28
- package/lib/pages/ImportFileWizard/ValidationResponse.js +9 -35
- package/lib/pages/ImportFileWizard/importFileUtils.js +5 -6
- package/lib/pages/ImportFileWizard/index.js +2 -5
- package/lib/pages/ImportGisPage/ImportGisContainer.js +9 -31
- package/lib/pages/ImportGisPage/ImportedGisFilesPage.js +11 -28
- package/lib/pages/ImportGisPage/importGisUtils.js +6 -18
- package/lib/pages/ImportGisProcess/index.js +5 -19
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/MultiChoiceTabs.js +7 -23
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/RadioTabs.js +4 -11
- package/lib/pages/NotificationsPage/EditNotificationModal/Buttons/SeverityButtons.js +2 -9
- package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.js +27 -62
- package/lib/pages/NotificationsPage/EditNotificationModal/EditNotificationModal.stories.js +3 -9
- package/lib/pages/NotificationsPage/Notification/Notification.js +9 -17
- package/lib/pages/NotificationsPage/Notifications.interface.js +1 -1
- package/lib/pages/NotificationsPage/Notifications.mock.js +1 -1
- package/lib/pages/NotificationsPage/Notifications.stories.js +3 -11
- package/lib/pages/NotificationsPage/NotificationsPage.js +14 -40
- package/lib/pages/NotificationsPage/assets/index.js +15 -24
- package/lib/pages/NotificationsPageV2/NotificationsPage.js +37 -87
- package/lib/pages/NotificationsPageV2/components/NotificationsCard.js +5 -25
- package/lib/pages/NotificationsPageV2/components/NotificationsForm/NotificationsFormContent.js +17 -44
- package/lib/pages/NotificationsPageV2/components/NotificationsSidebar.js +20 -53
- package/lib/pages/NotificationsPageV2/components/NotificationsUtils.js +5 -48
- package/lib/pages/NotificationsPageV2/notificationUtils.js +3 -30
- package/lib/pages/OldSitePage/IDashboardData.js +1 -1
- package/lib/pages/OldSitePage/OldSitePage.js +65 -132
- package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.js +4 -17
- package/lib/pages/OldSitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -9
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +5 -10
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +6 -13
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +3 -13
- package/lib/pages/OldSitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +9 -27
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +7 -21
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -11
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +3 -13
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +11 -28
- package/lib/pages/OldSitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +5 -13
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.js +30 -63
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.mock.js +2 -2
- package/lib/pages/OldSitePage/SamplingParameters/SamplingParameters.stories.js +13 -11
- package/lib/pages/OldSitePage/SamplingParameters/charts/ParametersChart.js +5 -22
- package/lib/pages/OldSitePage/SamplingParameters/charts/SamplingChart.js +4 -19
- package/lib/pages/OldSitePage/SamplingParameters/charts/options/options.js +9 -17
- package/lib/pages/OldSitePage/SamplingParameters/dataParser.js +3 -18
- package/lib/pages/OldSitePage/SamplingParameters/models.js +1 -1
- package/lib/pages/OldSitePage/SamplingParameters/styles/samplingParameters.js +3 -11
- package/lib/pages/OldSitePage/SamplingParameters/styles/styles.js +3 -8
- package/lib/pages/ProfilePage/Container.js +2 -6
- package/lib/pages/ProfilePage/PasswordModal/PasswordModal.js +18 -47
- package/lib/pages/ProfilePage/ProfilePage.js +41 -92
- package/lib/pages/ProfilePage/TelegramModal/TelegramModal.js +11 -36
- package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.js +8 -18
- package/lib/pages/SamplingsPage/ActionsDropDown/LabResultValue.test.js +5 -18
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionContainer.js +69 -111
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActionDropdown.js +6 -25
- package/lib/pages/SamplingsPage/ActionsDropDown/SamplingActions.js +8 -16
- package/lib/pages/SamplingsPage/ActionsDropDown/ViewLabResult.js +9 -30
- package/lib/pages/SamplingsPage/DesktopActions/DesktopActions.js +7 -26
- package/lib/pages/SamplingsPage/DesktopActions/DownloadCSV.js +10 -22
- package/lib/pages/SamplingsPage/DesktopActions/UploadLabResult.js +2 -14
- package/lib/pages/SamplingsPage/DesktopActions/index.js +2 -5
- package/lib/pages/SamplingsPage/NavigationDropdown.js +4 -22
- package/lib/pages/SamplingsPage/NewSamplingAction.js +29 -79
- package/lib/pages/SamplingsPage/SamplingMobileModal.js +13 -66
- package/lib/pages/SamplingsPage/SamplingProperties/ImageDeleteModal.js +6 -20
- package/lib/pages/SamplingsPage/SamplingProperties/ImagePreviewModal.js +3 -14
- package/lib/pages/SamplingsPage/SamplingProperties/ImageUpload.js +24 -60
- package/lib/pages/SamplingsPage/SamplingProperties/ManholeImageMobile.js +6 -24
- package/lib/pages/SamplingsPage/SamplingProperties/SamplerInProcess.js +2 -15
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingProperties.js +113 -192
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesForm.js +13 -46
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHead.js +16 -51
- package/lib/pages/SamplingsPage/SamplingProperties/SamplingPropertiesHeadMobile.js +17 -53
- package/lib/pages/SamplingsPage/SamplingProperties/samplingPropertiesUtils.js +7 -25
- package/lib/pages/SamplingsPage/SamplingProperties/styles.js +3 -9
- package/lib/pages/SamplingsPage/SamplingSiteTableCell.js +2 -12
- package/lib/pages/SamplingsPage/SamplingsMobileItem.js +9 -40
- package/lib/pages/SamplingsPage/SamplingsMobileList.js +12 -38
- package/lib/pages/SamplingsPage/SamplingsPage.js +16 -43
- package/lib/pages/SamplingsPage/SamplingsPageContainer.js +16 -52
- package/lib/pages/SamplingsPage/index.js +1 -3
- package/lib/pages/SamplingsPage/samplingsPageUtils.js +8 -31
- package/lib/pages/SitePage/DischargePattern/DischargePattern.js +3 -11
- package/lib/pages/SitePage/SamplingParameters/NoResults/NoResults.stories.js +3 -9
- package/lib/pages/SitePage/SamplingParameters/NoResults/index.js +4 -18
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.js +7 -12
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParameterButton/ParameterButton.test.js +16 -24
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.js +8 -17
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/ParametersButtons.test.js +19 -28
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersButtons/styles.js +3 -13
- package/lib/pages/SitePage/SamplingParameters/ParametersContainer/ParametersContainer.js +11 -30
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.js +7 -21
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/ExceptionBar.stories.js +5 -11
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExceptionBar/styles.js +3 -13
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/ExpandableSamplingTable/ExpandableSamplingTable.js +11 -28
- package/lib/pages/SitePage/SamplingParameters/SamplingContainer/SamplingContainer.js +5 -13
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.js +34 -72
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.mock.js +2 -2
- package/lib/pages/SitePage/SamplingParameters/SamplingParameters.stories.js +13 -11
- package/lib/pages/SitePage/SamplingParameters/charts/ParametersChart.js +6 -23
- package/lib/pages/SitePage/SamplingParameters/charts/SamplingChart.js +4 -19
- package/lib/pages/SitePage/SamplingParameters/charts/options/options.js +18 -39
- package/lib/pages/SitePage/SamplingParameters/dataParser.js +15 -31
- package/lib/pages/SitePage/SamplingParameters/dataParser.test.js +3 -7
- package/lib/pages/SitePage/SamplingParameters/models.js +1 -1
- package/lib/pages/SitePage/SamplingParameters/styles/samplingParameters.js +3 -11
- package/lib/pages/SitePage/SamplingParameters/styles/styles.js +3 -9
- package/lib/pages/SitePage/SiteInformation/ContributorItem.js +6 -13
- package/lib/pages/SitePage/SiteInformation/EmptyState.js +2 -11
- package/lib/pages/SitePage/SiteInformation/PollutionContributor.js +6 -16
- package/lib/pages/SitePage/SiteInformation/SiteInformation.js +19 -52
- package/lib/pages/SitePage/SiteInformation/style.js +3 -9
- package/lib/pages/SitePage/SitePage.js +36 -79
- package/lib/pages/UploadLabResult/index.js +2 -9
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.js +12 -42
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/MostSevereEvents.stories.js +3 -10
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.js +3 -17
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/NoEvents/NoEvents.stories.js +3 -9
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/Eta.js +11 -39
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/Eta/styles.js +2 -6
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/LinkedSevereEvent.js +2 -8
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/OptionalLinkedSevereEvent.js +2 -11
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/SevereEvent/SevereEvent.js +8 -17
- package/lib/pages/UtilityDashboardPage/MostSevereEvents/models.js +1 -1
- package/lib/pages/UtilityDashboardPage/TopBar/TopBar.js +2 -11
- package/lib/pages/UtilityDashboardPage/TopBar/styles.js +2 -6
- package/lib/pages/UtilityDashboardPage/UtilityDashboard.js +5 -29
- package/lib/pages/UtilityDashboardPage/UtilityDashboard.stories.js +14 -20
- package/lib/pages/UtilityDashboardPage/UtilityDashboardMapContainer/UtilityDashboardMapContainer.js +7 -20
- package/lib/pages/UtilityDashboardPage/UtilityDashboardPage.js +7 -24
- package/lib/pages/WbeDashboard/ExpandableComponent.js +3 -15
- package/lib/pages/WbeDashboard/GraphWrapper.js +7 -30
- package/lib/pages/WbeDashboard/IndividualTinyGraph.js +8 -23
- package/lib/pages/WbeDashboard/SearchInput.js +6 -26
- package/lib/pages/WbeDashboard/SummaryGraph.js +34 -69
- package/lib/pages/WbeDashboard/SummaryGraphModal.js +2 -14
- package/lib/pages/WbeDashboard/Tabs.js +4 -10
- package/lib/pages/WbeDashboard/WbeDashboardPage.js +27 -116
- package/lib/pages/WbeDashboard/WbeSummaryBar.js +10 -46
- package/lib/providers/Slideshow/SlideshowContext.js +3 -5
- package/lib/providers/Slideshow/SlideshowProvider.js +18 -35
- package/lib/providers/Slideshow/SlideshowRunner.js +7 -17
- package/lib/providers/UrlHistory/UrlHistoryContext.js +4 -8
- package/lib/providers/UrlHistory/UrlHistoryProvider.js +2 -16
- package/lib/providers/UrlHistory/index.js +6 -9
- package/lib/providers/UrlHistory/useLastVisited.js +1 -7
- package/lib/react-app-env.d.js +1 -1
- package/lib/store/ImportGis/action.js +1 -1
- package/lib/store/ImportGis/actionTypes.js +5 -6
- package/lib/store/ImportGis/actionsCreator.js +7 -17
- package/lib/store/ImportGis/models/gisImports.js +1 -1
- package/lib/store/ImportGis/reducer.js +3 -19
- package/lib/store/WBE/actionTypes.js +1 -1
- package/lib/store/WBE/actions.js +1 -3
- 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 +3 -10
- package/lib/store/areas/actionTypes.js +2 -2
- package/lib/store/areas/actions.js +3 -12
- package/lib/store/areas/models/IArea.js +1 -1
- package/lib/store/areas/models/IAreasState.js +1 -1
- package/lib/store/areas/reducer.js +1 -9
- package/lib/store/context/actionTypes.js +2 -2
- package/lib/store/context/actions.js +2 -6
- package/lib/store/context/contextMiddlewares.js +1 -9
- package/lib/store/context/models/INavContext.js +1 -1
- package/lib/store/context/models/INavContextState.js +1 -1
- package/lib/store/context/reducer.js +3 -10
- package/lib/store/dashboard/dashboardSlice.js +1 -3
- package/lib/store/dashboard/periodType.js +1 -1
- package/lib/store/edges/actionTypes.js +2 -2
- package/lib/store/edges/actions.js +3 -9
- package/lib/store/edges/models/IEdge.js +1 -1
- package/lib/store/edges/models/IEdgesState.js +1 -1
- package/lib/store/edges/reducer.js +3 -17
- package/lib/store/events/actionTypes.js +2 -2
- package/lib/store/events/actions.js +10 -28
- 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 +4 -42
- package/lib/store/filters/IFilter.js +1 -1
- package/lib/store/filters/IFilterItem.js +1 -1
- package/lib/store/global/actionTypes.js +2 -2
- package/lib/store/global/actions.js +8 -20
- package/lib/store/global/models/IGlobalState.js +1 -1
- package/lib/store/global/reducer.js +3 -19
- package/lib/store/permissions/permissionsSlice.js +1 -6
- package/lib/store/points/actionTypes.js +2 -2
- package/lib/store/points/actions.js +1 -5
- package/lib/store/points/models/IGroup.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 +1 -7
- package/lib/store/rootActionTypes.js +1 -1
- package/lib/store/rootActions.js +1 -3
- package/lib/store/rootReducer.js +5 -24
- package/lib/store/rootStore.js +5 -13
- package/lib/store/samplings/action.js +1 -1
- package/lib/store/samplings/actionTypes.js +5 -6
- package/lib/store/samplings/actionsCreator.js +2 -5
- package/lib/store/samplings/models/Samplings.js +1 -1
- package/lib/store/samplings/reducer.js +2 -10
- package/lib/styles/StylesLayout.js +2 -8
- package/lib/styles/theme/theme.js +2 -4
- package/lib/test/mocks/browser.js +4 -8
- package/lib/test/test-utils.js +12 -22
- package/lib/ui-kit/Button/Button.js +16 -24
- package/lib/ui-kit/Button/Button.test.js +8 -30
- package/lib/ui-kit/Button/ButtonUtils.js +1 -1
- package/lib/ui-kit/Checkbox/Checkbox.js +8 -22
- package/lib/ui-kit/DropDown/DropDown.js +6 -17
- package/lib/ui-kit/DropDown/DropDown.test.js +7 -13
- package/lib/ui-kit/DropDown/DropDownItem.js +6 -14
- package/lib/ui-kit/DropDown/DropdownToggle.js +3 -14
- package/lib/ui-kit/IconAction/IconAction.js +4 -10
- package/lib/ui-kit/ImageUploadButton/ImageUploadButton.js +19 -54
- package/lib/ui-kit/InfoTooltip/InfoTooltip.js +17 -28
- package/lib/ui-kit/KandoList/KandoList.js +6 -19
- package/lib/ui-kit/KandoList/kandoListUtils.js +1 -1
- package/lib/ui-kit/KandoTable/KandoTable.js +23 -39
- package/lib/ui-kit/KandoTable/KandoTable.test.js +2 -17
- package/lib/ui-kit/KandoTable/kandoTableUtils.js +1 -1
- package/lib/ui-kit/Layout/Layout.js +2 -9
- package/lib/ui-kit/MobileInput/MobileInput.js +19 -34
- package/lib/ui-kit/ModalConfirmation/ModalConfirmation.js +9 -15
- package/lib/ui-kit/ModalConfirmation/index.js +1 -3
- package/lib/ui-kit/RadioButtons/RadioButtonGroup.js +6 -11
- package/lib/ui-kit/SamplingStatus/SamplingStatus.js +4 -12
- package/lib/ui-kit/SamplingStatus/SamplingStatusHelper.js +4 -11
- package/lib/ui-kit/TitleAndCloseHeader/TitleAndCloseHeader.js +6 -15
- package/lib/ui-kit/Tooltip/Tooltip.js +4 -9
- package/lib/ui-kit/index.js +1 -15
- package/lib/ui-kit/kandoStepper/KandoStepper.js +3 -8
- package/lib/utilities/ActionUtility.js +1 -2
- package/lib/utilities/Alert.js +3 -11
- package/lib/utilities/Analytics.js +2 -13
- package/lib/utilities/Array.js +2 -6
- package/lib/utilities/Enum.js +22 -39
- package/lib/utilities/ErrorBoundary.js +4 -19
- package/lib/utilities/File.js +43 -66
- package/lib/utilities/GetDir.js +5 -9
- package/lib/utilities/KandoDate.js +2 -8
- package/lib/utilities/KandoModal.js +9 -26
- package/lib/utilities/LocalStorage.js +2 -13
- package/lib/utilities/ThousandsToK.js +1 -3
- package/lib/utilities/TimeFormat.js +8 -23
- package/lib/utilities/Truncate.js +9 -31
- package/lib/utilities/edgesMath.js +9 -28
- package/lib/utilities/i18n.js +2 -15
- package/lib/utilities/kql.js +3 -10
- package/lib/utilities/map/icons.js +2 -19
- package/lib/utilities/scoreToColor.js +1 -8
- package/lib/utilities/time.js +3 -10
- package/lib/utilities/uploadToS3.js +2 -10
- package/lib/utilities/urls.js +5 -13
- package/package.json +4 -2
|
@@ -1,156 +1,100 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.WbeDashboardPage = exports.WBEIsraelId = void 0;
|
|
11
|
-
|
|
12
9
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
|
|
13
|
-
|
|
14
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
|
|
15
|
-
|
|
16
11
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
17
|
-
|
|
18
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
-
|
|
20
13
|
var _i18n = _interopRequireDefault(require("utilities/i18n"));
|
|
21
|
-
|
|
22
14
|
var _reactRedux = require("react-redux");
|
|
23
|
-
|
|
24
15
|
var _reactRouterDom = require("react-router-dom");
|
|
25
|
-
|
|
26
16
|
var _Analytics = require("../../utilities/Analytics");
|
|
27
|
-
|
|
28
17
|
var _SearchInput = require("./SearchInput");
|
|
29
|
-
|
|
30
18
|
var _reactFontawesome = require("@fortawesome/react-fontawesome");
|
|
31
|
-
|
|
32
19
|
var _GraphWrapper = require("./GraphWrapper");
|
|
33
|
-
|
|
34
20
|
var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
|
|
35
|
-
|
|
36
21
|
var _actions = require("../../store/context/actions");
|
|
37
|
-
|
|
38
22
|
var _ThousandsToK = require("../../utilities/ThousandsToK");
|
|
39
|
-
|
|
40
23
|
var _DrillDownIcon = require("@svgr/webpack?-svgo!./DrillDownIcon.svg");
|
|
41
|
-
|
|
42
24
|
var _BaseLevel = require("@svgr/webpack?-svgo!./BaseLevel.svg");
|
|
43
|
-
|
|
44
25
|
var _reactDataTableComponent = require("react-data-table-component");
|
|
45
|
-
|
|
46
26
|
var _nvlStatusHelper = require("../CovidPage/components/nvlStatusHelper");
|
|
47
|
-
|
|
48
27
|
var _Map = require("../../Widgets/Map/Map");
|
|
49
|
-
|
|
50
28
|
var _KandoTable = require("ui-kit/KandoTable/KandoTable");
|
|
51
|
-
|
|
52
29
|
var _Tabs = require("./Tabs");
|
|
53
|
-
|
|
54
30
|
var _useKandoFetch2 = _interopRequireDefault(require("../../hooks/useKandoFetch"));
|
|
55
|
-
|
|
56
31
|
var _useQueryURL = _interopRequireDefault(require("../../hooks/useQueryURL"));
|
|
57
|
-
|
|
58
32
|
var _Dropdown = _interopRequireDefault(require("react-bootstrap/cjs/Dropdown"));
|
|
59
|
-
|
|
60
33
|
var _DropdownButton = _interopRequireDefault(require("react-bootstrap/cjs/DropdownButton"));
|
|
61
|
-
|
|
62
34
|
var _axios = _interopRequireDefault(require("axios"));
|
|
63
|
-
|
|
64
35
|
var _Truncate = _interopRequireDefault(require("../../utilities/Truncate"));
|
|
65
|
-
|
|
66
36
|
var _ExpandableComponent = require("./ExpandableComponent");
|
|
67
|
-
|
|
68
37
|
var _Spinner = require("../../components/Spinner/Spinner");
|
|
69
|
-
|
|
70
38
|
var _WbeSummaryBar = require("./WbeSummaryBar");
|
|
71
|
-
|
|
72
39
|
var _ErrorBoundary = _interopRequireDefault(require("../../utilities/ErrorBoundary"));
|
|
73
|
-
|
|
74
40
|
var _theme = require("../../styles/theme/theme");
|
|
75
|
-
|
|
76
|
-
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); }
|
|
77
|
-
|
|
78
|
-
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; }
|
|
79
|
-
|
|
80
41
|
var TABLE_ROWS_PER_PAGE = 25;
|
|
81
42
|
var MAPBOX_WBE_DASHBOARD_STYLE = 'ckzzkjsi7005f14o9im0mczs9';
|
|
82
43
|
var WBEIsraelId = 463;
|
|
83
44
|
exports.WBEIsraelId = WBEIsraelId;
|
|
84
|
-
|
|
85
45
|
var WbeDashboardPage = function WbeDashboardPage() {
|
|
86
46
|
var getWAId = function getWAId() {
|
|
87
47
|
return query.get('water_authority_id');
|
|
88
48
|
};
|
|
89
|
-
|
|
90
49
|
var fetchUrl = function fetchUrl(firstParam) {
|
|
91
50
|
return "/api_ui/wbe_dashboard/".concat(firstParam, "?water_authority_id=").concat(getWAId(), "&tag=").concat(getTag());
|
|
92
51
|
};
|
|
93
|
-
|
|
94
52
|
var DEFAULT_TABS = [_i18n.default.t('components.wbe_dashboard.cities'), _i18n.default.t('components.wbe_dashboard.monitored_areas')];
|
|
95
|
-
|
|
96
53
|
var convertTabNameToParam = function convertTabNameToParam(tab_name) {
|
|
97
54
|
if (tab_name === _i18n.default.t('components.wbe_dashboard.cities')) {
|
|
98
55
|
return 'city';
|
|
99
56
|
} else if (tab_name === _i18n.default.t('components.wbe_dashboard.monitored_areas')) {
|
|
100
57
|
return 'monitored';
|
|
101
58
|
}
|
|
102
|
-
|
|
103
59
|
return 'city';
|
|
104
60
|
};
|
|
105
|
-
|
|
106
61
|
var query = (0, _useQueryURL.default)();
|
|
107
|
-
|
|
108
62
|
var getTag = function getTag() {
|
|
109
63
|
return query.get('tag');
|
|
110
64
|
};
|
|
111
|
-
|
|
112
65
|
var defaultTag = getTag() === null ? _i18n.default.t('components.wbe_dashboard.all') : getTag();
|
|
113
|
-
|
|
114
66
|
var _useState = (0, _react.useState)([]),
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
67
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
68
|
+
currentData = _useState2[0],
|
|
69
|
+
setCurrentData = _useState2[1];
|
|
119
70
|
var _useState3 = (0, _react.useState)(defaultTag),
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
71
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
72
|
+
selectedTag = _useState4[0],
|
|
73
|
+
setSelectedTag = _useState4[1];
|
|
124
74
|
var _useState5 = (0, _react.useState)([]),
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
75
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
76
|
+
mapAreas = _useState6[0],
|
|
77
|
+
setMapAreas = _useState6[1];
|
|
129
78
|
var _useState7 = (0, _react.useState)([]),
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
79
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
80
|
+
mapZoom = _useState8[0],
|
|
81
|
+
setMapZoom = _useState8[1];
|
|
134
82
|
var _useState9 = (0, _react.useState)([]),
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
83
|
+
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
84
|
+
rows = _useState10[0],
|
|
85
|
+
setRows = _useState10[1];
|
|
139
86
|
var _useState11 = (0, _react.useState)(DEFAULT_TABS),
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
87
|
+
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
88
|
+
tabs = _useState12[0],
|
|
89
|
+
setTabs = _useState12[1];
|
|
144
90
|
var _useState13 = (0, _react.useState)(tabs[0]),
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
91
|
+
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
92
|
+
selectedTab = _useState14[0],
|
|
93
|
+
setSelectedTab = _useState14[1];
|
|
149
94
|
var _useKandoFetch = (0, _useKandoFetch2.default)(fetchUrl(convertTabNameToParam(selectedTab))),
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
95
|
+
data = _useKandoFetch.data,
|
|
96
|
+
isFetching = _useKandoFetch.isFetching,
|
|
97
|
+
setFetching = _useKandoFetch.setFetching;
|
|
154
98
|
var dispatch = (0, _reactRedux.useDispatch)();
|
|
155
99
|
var navContext = (0, _reactRedux.useSelector)(function (state) {
|
|
156
100
|
return state.nav_context_data.navContext;
|
|
@@ -159,10 +103,8 @@ var WbeDashboardPage = function WbeDashboardPage() {
|
|
|
159
103
|
return state.global_data;
|
|
160
104
|
});
|
|
161
105
|
var isRtl = navContext.locale === 'he' ? true : false;
|
|
162
|
-
|
|
163
106
|
var colorForRow = function colorForRow(row) {
|
|
164
107
|
var quality;
|
|
165
|
-
|
|
166
108
|
if (!row.sample_active) {
|
|
167
109
|
quality = 'inactive-sampling';
|
|
168
110
|
} else if (isInfected(row.nvl)) {
|
|
@@ -170,10 +112,8 @@ var WbeDashboardPage = function WbeDashboardPage() {
|
|
|
170
112
|
} else {
|
|
171
113
|
quality = 'clean';
|
|
172
114
|
}
|
|
173
|
-
|
|
174
115
|
return "row_name--".concat(quality);
|
|
175
116
|
};
|
|
176
|
-
|
|
177
117
|
var columns = _react.default.useMemo(function () {
|
|
178
118
|
return [{
|
|
179
119
|
name: _i18n.default.t('components.wbe_dashboard.name'),
|
|
@@ -283,17 +223,14 @@ var WbeDashboardPage = function WbeDashboardPage() {
|
|
|
283
223
|
}
|
|
284
224
|
}];
|
|
285
225
|
}, [isRtl]);
|
|
286
|
-
|
|
287
226
|
var initializeMapAreas = function initializeMapAreas(areas) {
|
|
288
227
|
var mappedWithColor = areas.map(function (a) {
|
|
289
228
|
a.wbe_dashboard_name = a.name;
|
|
290
229
|
a.showColorOnlyInBorders = true;
|
|
291
|
-
|
|
292
230
|
if (!a.sample_active) {
|
|
293
231
|
a.color = _theme.theme.colorScheme.natural.n60;
|
|
294
232
|
return a;
|
|
295
233
|
}
|
|
296
|
-
|
|
297
234
|
if (isInfected(a.nvl)) {
|
|
298
235
|
a.color = _theme.theme.colorScheme.data.R100;
|
|
299
236
|
return a;
|
|
@@ -304,51 +241,42 @@ var WbeDashboardPage = function WbeDashboardPage() {
|
|
|
304
241
|
});
|
|
305
242
|
setMapAreas(mappedWithColor);
|
|
306
243
|
};
|
|
307
|
-
|
|
308
244
|
var zoomToArea = function zoomToArea(area) {
|
|
309
245
|
area.shape_data !== undefined && setMapZoom(area.shape_data);
|
|
310
246
|
};
|
|
311
|
-
|
|
312
247
|
var zoomAllAreas = function zoomAllAreas(data) {
|
|
313
248
|
var shapeData = data.map(function (datum) {
|
|
314
249
|
return datum.shape_data;
|
|
315
250
|
});
|
|
316
251
|
setMapZoom(shapeData);
|
|
317
252
|
};
|
|
318
|
-
|
|
319
253
|
var isInfected = function isInfected(nvl) {
|
|
320
254
|
if ((0, _nvlStatusHelper.levelNVL)(nvl) === 'clean') {
|
|
321
255
|
return false;
|
|
322
256
|
} else if ((0, _nvlStatusHelper.levelNVL)(nvl) === 'low' || (0, _nvlStatusHelper.levelNVL)(nvl) === 'medium' || (0, _nvlStatusHelper.levelNVL)(nvl) === 'high') {
|
|
323
257
|
return true;
|
|
324
258
|
}
|
|
325
|
-
|
|
326
259
|
return;
|
|
327
260
|
};
|
|
328
|
-
|
|
329
261
|
var history = (0, _reactRouterDom.useHistory)();
|
|
330
262
|
var waterAuthorityId = (0, _reactRedux.useSelector)(function (state) {
|
|
331
263
|
return state.global_data.waterAuthorityId;
|
|
332
264
|
});
|
|
333
265
|
var dir = navContext.locale === 'he' ? _reactDataTableComponent.Direction.RTL : _reactDataTableComponent.Direction.LTR;
|
|
334
266
|
var tags = [_i18n.default.t('components.wbe_dashboard.all') + ' ', 'דסק ערבי', 'דסק חרדי', 'דסק כללי'];
|
|
335
|
-
|
|
336
267
|
var filterResultsAndSetRows = function filterResultsAndSetRows(text) {
|
|
337
268
|
var results = currentData.filter(function (el) {
|
|
338
269
|
return el.name.toLowerCase().includes(text.toLowerCase());
|
|
339
270
|
});
|
|
340
271
|
setRows(results);
|
|
341
272
|
};
|
|
342
|
-
|
|
343
273
|
var handleOnRowExpand = function handleOnRowExpand(expanded, row) {
|
|
344
274
|
expanded && zoomToArea(row);
|
|
345
275
|
!expanded && zoomAllAreas(data);
|
|
346
276
|
};
|
|
347
|
-
|
|
348
277
|
var waterAuthorityName = (0, _reactRedux.useSelector)(function (state) {
|
|
349
278
|
return state.global_data.waterAuthorityName;
|
|
350
279
|
});
|
|
351
|
-
|
|
352
280
|
var handleSelectTagClick = function handleSelectTagClick(tag) {
|
|
353
281
|
(0, _Analytics.analyticsTrack)('WBE Status Report - Tag change clicked', {
|
|
354
282
|
tag: tag,
|
|
@@ -357,10 +285,8 @@ var WbeDashboardPage = function WbeDashboardPage() {
|
|
|
357
285
|
setSelectedTag(tag);
|
|
358
286
|
history.push("/wbe_dashboard/index?locale=".concat(navContext.locale, "&water_authority_id=").concat(waterAuthorityId, "&tag=").concat(tag));
|
|
359
287
|
};
|
|
360
|
-
|
|
361
288
|
var fetchForTabSelection = function fetchForTabSelection(tab) {
|
|
362
289
|
setFetching(true);
|
|
363
|
-
|
|
364
290
|
_axios.default.get(fetchUrl(tab)).then(function (response) {
|
|
365
291
|
var responseData = response.data.data;
|
|
366
292
|
setFetching(false);
|
|
@@ -371,18 +297,15 @@ var WbeDashboardPage = function WbeDashboardPage() {
|
|
|
371
297
|
zoomAllAreas(responseData);
|
|
372
298
|
});
|
|
373
299
|
};
|
|
374
|
-
|
|
375
300
|
var handleTabSelectionClick = function handleTabSelectionClick(tab) {
|
|
376
301
|
if (!isFetching) {
|
|
377
302
|
setSelectedTab(tab);
|
|
378
|
-
|
|
379
303
|
if (tab !== _i18n.default.t('components.wbe_dashboard.custom')) {
|
|
380
304
|
tab = tab === _i18n.default.t('components.wbe_dashboard.cities') ? 'city' : tab === _i18n.default.t('components.wbe_dashboard.monitored_areas') ? 'monitored' : '';
|
|
381
305
|
fetchForTabSelection(tab);
|
|
382
306
|
}
|
|
383
307
|
}
|
|
384
308
|
};
|
|
385
|
-
|
|
386
309
|
var initializeDrilledArea = function initializeDrilledArea(response) {
|
|
387
310
|
var data = response.data.data;
|
|
388
311
|
setRows(data);
|
|
@@ -390,20 +313,16 @@ var WbeDashboardPage = function WbeDashboardPage() {
|
|
|
390
313
|
initializeMapAreas(data);
|
|
391
314
|
zoomAllAreas(data);
|
|
392
315
|
};
|
|
393
|
-
|
|
394
316
|
var handleAreaClick = function handleAreaClick(area) {
|
|
395
317
|
zoomToArea(area);
|
|
396
|
-
|
|
397
318
|
if (area.has_children) {
|
|
398
319
|
setTabs([].concat((0, _toConsumableArray2.default)(tabs), [_i18n.default.t('components.wbe_dashboard.custom')]));
|
|
399
320
|
setSelectedTab(_i18n.default.t('components.wbe_dashboard.custom'));
|
|
400
|
-
|
|
401
321
|
_axios.default.get(fetchUrl(area.id)).then(function (response) {
|
|
402
322
|
initializeDrilledArea(response);
|
|
403
323
|
});
|
|
404
324
|
}
|
|
405
325
|
};
|
|
406
|
-
|
|
407
326
|
var initializeComponent = function initializeComponent() {
|
|
408
327
|
setCurrentData(data);
|
|
409
328
|
setRows(data);
|
|
@@ -416,7 +335,6 @@ var WbeDashboardPage = function WbeDashboardPage() {
|
|
|
416
335
|
initializeMapAreas(data);
|
|
417
336
|
zoomAllAreas(data);
|
|
418
337
|
};
|
|
419
|
-
|
|
420
338
|
(0, _react.useEffect)(function () {
|
|
421
339
|
if (!isFetching && data !== null) {
|
|
422
340
|
initializeComponent();
|
|
@@ -472,38 +390,31 @@ var WbeDashboardPage = function WbeDashboardPage() {
|
|
|
472
390
|
defaultSortFieldId: 3
|
|
473
391
|
})))));
|
|
474
392
|
};
|
|
475
|
-
|
|
476
393
|
exports.WbeDashboardPage = WbeDashboardPage;
|
|
477
|
-
|
|
478
394
|
var RowName = _styledComponents.default.div.withConfig({
|
|
479
395
|
displayName: "WbeDashboardPage__RowName",
|
|
480
396
|
componentId: "sc-14f81cv-0"
|
|
481
397
|
})(["width:100%;.row_name{.expandable-icon{width:30px;height:30px;transition:.2s ease-in;border-radius:4px;display:flex;align-items:center;padding:0 4px;span{margin-inline-start:2px;}}&--clean{color:#27a63a;.expandable-icon{background:#27a63a;}}&--infected{color:#e10036;.expandable-icon{background:#e10036;}}&--inactive-sampling{color:", ";.expandable-icon{background:", ";}}.name{position:absolute;font-weight:100;", " top:16px;width:7.5em;margin-inline-start:3px;}}}"], _theme.theme.colorScheme.natural.n60, _theme.theme.colorScheme.natural.n60, function (p) {
|
|
482
398
|
return p.isRtl ? 'right: 51px;' : 'left: 51px;';
|
|
483
399
|
});
|
|
484
|
-
|
|
485
400
|
var ActionsContainer = _styledComponents.default.div.withConfig({
|
|
486
401
|
displayName: "WbeDashboardPage__ActionsContainer",
|
|
487
402
|
componentId: "sc-14f81cv-1"
|
|
488
403
|
})(["display:flex;justify-content:start;align-items:center;"]);
|
|
489
|
-
|
|
490
404
|
var FirstSection = _styledComponents.default.div.withConfig({
|
|
491
405
|
displayName: "WbeDashboardPage__FirstSection",
|
|
492
406
|
componentId: "sc-14f81cv-2"
|
|
493
407
|
})(["margin:85px 0 20px 0;"]);
|
|
494
|
-
|
|
495
408
|
var SecondSection = _styledComponents.default.div.withConfig({
|
|
496
409
|
displayName: "WbeDashboardPage__SecondSection",
|
|
497
410
|
componentId: "sc-14f81cv-3"
|
|
498
411
|
})(["padding:20px;background:#fcfcfc;border:1px solid #e7e7e7;border-radius:6px;"]);
|
|
499
|
-
|
|
500
412
|
var MapTableContainer = _styledComponents.default.div.withConfig({
|
|
501
413
|
displayName: "WbeDashboardPage__MapTableContainer",
|
|
502
414
|
componentId: "sc-14f81cv-4"
|
|
503
415
|
})(["display:flex;justify-content:start;flex-direction:row-reverse;.map-container{width:unset !important;.event-timerange{display:none;}#map{height:69vh;width:30vw;}}[data-testid='kando-table']{width:100%;}[data-column-id='1']{justify-content:flex-start !important;overflow:visible;position:relative;cursor:pointer;&:hover{.name{color:white !important;}.expandable-icon{width:calc(120px + 1vw);transition:0.2s cubic-bezier(0.65,0.05,0.36,1);}}}.table-tags{text-align:center;}.spinner-container{width:100%;display:flex;justify-content:center;}"]);
|
|
504
|
-
|
|
505
416
|
var Content = _styledComponents.default.div.withConfig({
|
|
506
417
|
displayName: "WbeDashboardPage__Content",
|
|
507
418
|
componentId: "sc-14f81cv-5"
|
|
508
419
|
})(["@media (max-width:576px){padding:20px;}h1{font-weight:bold;}padding:60px 60px;"]);
|
|
509
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWdlcy9XYmVEYXNoYm9hcmQvV2JlRGFzaGJvYXJkUGFnZS50c3giXSwibmFtZXMiOlsiVEFCTEVfUk9XU19QRVJfUEFHRSIsIk1BUEJPWF9XQkVfREFTSEJPQVJEX1NUWUxFIiwiV0JFSXNyYWVsSWQiLCJXYmVEYXNoYm9hcmRQYWdlIiwiZ2V0V0FJZCIsInF1ZXJ5IiwiZ2V0IiwiZmV0Y2hVcmwiLCJmaXJzdFBhcmFtIiwiZ2V0VGFnIiwiREVGQVVMVF9UQUJTIiwiaTE4biIsInQiLCJjb252ZXJ0VGFiTmFtZVRvUGFyYW0iLCJ0YWJfbmFtZSIsImRlZmF1bHRUYWciLCJjdXJyZW50RGF0YSIsInNldEN1cnJlbnREYXRhIiwic2VsZWN0ZWRUYWciLCJzZXRTZWxlY3RlZFRhZyIsIm1hcEFyZWFzIiwic2V0TWFwQXJlYXMiLCJtYXBab29tIiwic2V0TWFwWm9vbSIsInJvd3MiLCJzZXRSb3dzIiwidGFicyIsInNldFRhYnMiLCJzZWxlY3RlZFRhYiIsInNldFNlbGVjdGVkVGFiIiwiZGF0YSIsImlzRmV0Y2hpbmciLCJzZXRGZXRjaGluZyIsImRpc3BhdGNoIiwibmF2Q29udGV4dCIsInN0YXRlIiwibmF2X2NvbnRleHRfZGF0YSIsImdsb2JhbERhdGEiLCJnbG9iYWxfZGF0YSIsImlzUnRsIiwibG9jYWxlIiwiY29sb3JGb3JSb3ciLCJyb3ciLCJxdWFsaXR5Iiwic2FtcGxlX2FjdGl2ZSIsImlzSW5mZWN0ZWQiLCJudmwiLCJjb2x1bW5zIiwiUmVhY3QiLCJ1c2VNZW1vIiwibmFtZSIsInNlbGVjdG9yIiwic29ydGFibGUiLCJjZWxsIiwiaGFuZGxlQXJlYUNsaWNrIiwiaGFzX2NoaWxkcmVuIiwidGV4dEFsaWduIiwid2lkdGgiLCJudmxfY2hhbmdlIiwiZGlyZWN0aW9uIiwiY29sb3IiLCJtYXJnaW4iLCJmYUNoZXZyb25VcCIsImZhQ2hldnJvbkRvd24iLCJsYXN0X3VwZGF0ZWQiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwidGFncyIsImpvaW4iLCJwb3B1bGF0aW9uIiwicGFyc2VJbnQiLCJpbml0aWFsaXplTWFwQXJlYXMiLCJhcmVhcyIsIm1hcHBlZFdpdGhDb2xvciIsIm1hcCIsImEiLCJ3YmVfZGFzaGJvYXJkX25hbWUiLCJzaG93Q29sb3JPbmx5SW5Cb3JkZXJzIiwidGhlbWUiLCJjb2xvclNjaGVtZSIsIm5hdHVyYWwiLCJuNjAiLCJSMTAwIiwiRzEwMCIsInpvb21Ub0FyZWEiLCJhcmVhIiwic2hhcGVfZGF0YSIsInVuZGVmaW5lZCIsInpvb21BbGxBcmVhcyIsInNoYXBlRGF0YSIsImRhdHVtIiwiaGlzdG9yeSIsIndhdGVyQXV0aG9yaXR5SWQiLCJkaXIiLCJEaXJlY3Rpb24iLCJSVEwiLCJMVFIiLCJmaWx0ZXJSZXN1bHRzQW5kU2V0Um93cyIsInRleHQiLCJyZXN1bHRzIiwiZmlsdGVyIiwiZWwiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiaGFuZGxlT25Sb3dFeHBhbmQiLCJleHBhbmRlZCIsIndhdGVyQXV0aG9yaXR5TmFtZSIsImhhbmRsZVNlbGVjdFRhZ0NsaWNrIiwidGFnIiwidXRpbGl0eV9uYW1lIiwicHVzaCIsImZldGNoRm9yVGFiU2VsZWN0aW9uIiwidGFiIiwiYXhpb3MiLCJ0aGVuIiwicmVzcG9uc2UiLCJyZXNwb25zZURhdGEiLCJoYW5kbGVUYWJTZWxlY3Rpb25DbGljayIsImluaXRpYWxpemVEcmlsbGVkQXJlYSIsImlkIiwiaW5pdGlhbGl6ZUNvbXBvbmVudCIsIkV4cGFuZGVkQ29tcG9uZW50IiwiUm93TmFtZSIsInN0eWxlZCIsImRpdiIsInAiLCJBY3Rpb25zQ29udGFpbmVyIiwiRmlyc3RTZWN0aW9uIiwiU2Vjb25kU2VjdGlvbiIsIk1hcFRhYmxlQ29udGFpbmVyIiwiQ29udGVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7O0FB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ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpMThuIGZyb20gJ3NyYy91dGlsaXRpZXMvaTE4bic7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQgeyB1c2VIaXN0b3J5IH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgeyBhbmFseXRpY3NUcmFjayB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9BbmFseXRpY3MnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tICcuL1NlYXJjaElucHV0JztcbmltcG9ydCB7IEZvbnRBd2Vzb21lSWNvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9yZWFjdC1mb250YXdlc29tZSc7XG5pbXBvcnQgeyBHcmFwaFdyYXBwZXIgfSBmcm9tICcuL0dyYXBoV3JhcHBlcic7XG5pbXBvcnQgeyBmYUNoZXZyb25Eb3duLCBmYUNoZXZyb25VcCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XG5pbXBvcnQgeyBhcHBSZWR1Y2VyIH0gZnJvbSAnLi4vLi4vc3RvcmUvcm9vdFJlZHVjZXInO1xuaW1wb3J0IHsgdXBkYXRlTmF2Q29udGV4dCB9IGZyb20gJy4uLy4uL3N0b3JlL2NvbnRleHQvYWN0aW9ucyc7XG5pbXBvcnQgeyBrRm9ybWF0dGVyIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL1Rob3VzYW5kc1RvSyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBEcmlsbERvd25JY29uIH0gZnJvbSAnLi9EcmlsbERvd25JY29uLnN2Zyc7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBCYXNlTGV2ZWwgfSBmcm9tICcuL0Jhc2VMZXZlbC5zdmcnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAncmVhY3QtZGF0YS10YWJsZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgbGV2ZWxOVkwgfSBmcm9tICcuLi9Db3ZpZFBhZ2UvY29tcG9uZW50cy9udmxTdGF0dXNIZWxwZXInO1xuaW1wb3J0IHsgTWFwIH0gZnJvbSAnLi4vLi4vV2lkZ2V0cy9NYXAvTWFwJztcbmltcG9ydCB7IEthbmRvVGFibGUgfSBmcm9tICdzcmMvdWkta2l0L0thbmRvVGFibGUvS2FuZG9UYWJsZSc7XG5pbXBvcnQgeyBUYWJzIH0gZnJvbSAnLi9UYWJzJztcbmltcG9ydCB1c2VLYW5kb0ZldGNoIGZyb20gJy4uLy4uL2hvb2tzL3VzZUthbmRvRmV0Y2gnO1xuaW1wb3J0IHVzZVF1ZXJ5VVJMIGZyb20gJy4uLy4uL2hvb2tzL3VzZVF1ZXJ5VVJMJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMvbWFjcm8nO1xuaW1wb3J0IERyb3Bkb3duIGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9janMvRHJvcGRvd24nO1xuaW1wb3J0IERyb3Bkb3duQnV0dG9uIGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9janMvRHJvcGRvd25CdXR0b24nO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBUcnVuY2F0ZSBmcm9tICcuLi8uLi91dGlsaXRpZXMvVHJ1bmNhdGUnO1xuaW1wb3J0IHsgRXhwYW5kZWRDb21wb25lbnQgfSBmcm9tICcuL0V4cGFuZGFibGVDb21wb25lbnQnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvU3Bpbm5lci9TcGlubmVyJztcbmltcG9ydCB7IFdiZVN1bW1hcnlCYXIgfSBmcm9tICcuL1diZVN1bW1hcnlCYXInO1xuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0Vycm9yQm91bmRhcnknO1xuaW1wb3J0IHsgdGhlbWUgfSBmcm9tICcuLi8uLi9zdHlsZXMvdGhlbWUvdGhlbWUnO1xuY29uc3QgVEFCTEVfUk9XU19QRVJfUEFHRSA9IDI1O1xuY29uc3QgTUFQQk9YX1dCRV9EQVNIQk9BUkRfU1RZTEUgPSAnY2t6emtqc2k3MDA1ZjE0bzlpbTBtY3pzOSc7XG5cbmV4cG9ydCBjb25zdCBXQkVJc3JhZWxJZCA9IDQ2MztcbmV4cG9ydCBjb25zdCBXYmVEYXNoYm9hcmRQYWdlID0gKCkgPT4ge1xuICBjb25zdCBnZXRXQUlkID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3dhdGVyX2F1dGhvcml0eV9pZCcpO1xuICB9O1xuICBjb25zdCBmZXRjaFVybCA9IChmaXJzdFBhcmFtKSA9PiB7XG4gICAgcmV0dXJuIGAvYXBpX3VpL3diZV9kYXNoYm9hcmQvJHtmaXJzdFBhcmFtfT93YXRlcl9hdXRob3JpdHlfaWQ9JHtnZXRXQUlkKCl9JnRhZz0ke2dldFRhZygpfWA7XG4gIH07XG4gIGNvbnN0IERFRkFVTFRfVEFCUyA9IFtcbiAgICBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jaXRpZXMnKSxcbiAgICBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5tb25pdG9yZWRfYXJlYXMnKSxcbiAgXTtcbiAgY29uc3QgY29udmVydFRhYk5hbWVUb1BhcmFtID0gKHRhYl9uYW1lOiBzdHJpbmcpID0+IHtcbiAgICBpZiAodGFiX25hbWUgPT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmNpdGllcycpKSB7XG4gICAgICByZXR1cm4gJ2NpdHknO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0YWJfbmFtZSA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubW9uaXRvcmVkX2FyZWFzJylcbiAgICApIHtcbiAgICAgIHJldHVybiAnbW9uaXRvcmVkJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ2NpdHknO1xuICB9O1xuICBjb25zdCBxdWVyeSA9IHVzZVF1ZXJ5VVJMKCk7XG4gIGNvbnN0IGdldFRhZyA9ICgpID0+IHtcbiAgICByZXR1cm4gcXVlcnkuZ2V0KCd0YWcnKTtcbiAgfTtcbiAgY29uc3QgZGVmYXVsdFRhZyA9XG4gICAgZ2V0VGFnKCkgPT09IG51bGwgPyBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5hbGwnKSA6IGdldFRhZygpO1xuICBjb25zdCBbY3VycmVudERhdGEsIHNldEN1cnJlbnREYXRhXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3NlbGVjdGVkVGFnLCBzZXRTZWxlY3RlZFRhZ10gPSB1c2VTdGF0ZTxzdHJpbmc+KGRlZmF1bHRUYWchKTtcbiAgY29uc3QgW21hcEFyZWFzLCBzZXRNYXBBcmVhc10gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICBjb25zdCBbbWFwWm9vbSwgc2V0TWFwWm9vbV0gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICBjb25zdCBbcm93cywgc2V0Um93c10gPSB1c2VTdGF0ZTxhbnk+KFtdKTtcbiAgY29uc3QgW3RhYnMsIHNldFRhYnNdID0gdXNlU3RhdGU8c3RyaW5nW10+KERFRkFVTFRfVEFCUyk7XG4gIGNvbnN0IFtzZWxlY3RlZFRhYiwgc2V0U2VsZWN0ZWRUYWJdID0gdXNlU3RhdGU8c3RyaW5nPih0YWJzWzBdKTtcbiAgY29uc3QgeyBkYXRhLCBpc0ZldGNoaW5nLCBzZXRGZXRjaGluZyB9ID0gdXNlS2FuZG9GZXRjaChcbiAgICBmZXRjaFVybChjb252ZXJ0VGFiTmFtZVRvUGFyYW0oc2VsZWN0ZWRUYWIpKSxcbiAgKTtcblxuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5hdkNvbnRleHQgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5uYXZfY29udGV4dF9kYXRhLm5hdkNvbnRleHQsXG4gICk7XG4gIGNvbnN0IGdsb2JhbERhdGEgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PiBzdGF0ZS5nbG9iYWxfZGF0YSxcbiAgKTtcbiAgY29uc3QgaXNSdGw6IGJvb2xlYW4gPSBuYXZDb250ZXh0LmxvY2FsZSA9PT0gJ2hlJyA/IHRydWUgOiBmYWxzZTtcbiAgY29uc3QgY29sb3JGb3JSb3cgPSAocm93KSA9PiB7XG4gICAgbGV0IHF1YWxpdHk7XG4gICAgaWYgKCFyb3cuc2FtcGxlX2FjdGl2ZSkge1xuICAgICAgcXVhbGl0eSA9ICdpbmFjdGl2ZS1zYW1wbGluZyc7XG4gICAgfSBlbHNlIGlmIChpc0luZmVjdGVkKHJvdy5udmwpKSB7XG4gICAgICBxdWFsaXR5ID0gJ2luZmVjdGVkJztcbiAgICB9IGVsc2Uge1xuICAgICAgcXVhbGl0eSA9ICdjbGVhbic7XG4gICAgfVxuXG4gICAgcmV0dXJuIGByb3dfbmFtZS0tJHtxdWFsaXR5fWA7XG4gIH07XG4gIGNvbnN0IGNvbHVtbnM6IGFueSA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gW1xuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5uYW1lJyksXG4gICAgICAgIHNlbGVjdG9yOiAocm93KSA9PiByb3cubmFtZSxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgbmFtZTogc3RyaW5nOyBudmw6IG51bWJlcjsgaGFzX2NoaWxkcmVuOiBib29sZWFuIH0pID0+IChcbiAgICAgICAgICA8Um93TmFtZSBpc1J0bD17aXNSdGx9PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcm93X25hbWUgJHtjb2xvckZvclJvdyhyb3cpfWB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVBcmVhQ2xpY2socm93KTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydleHBhbmRhYmxlLWljb24nfT5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIHtyb3cuaGFzX2NoaWxkcmVuICYmIDxEcmlsbERvd25JY29uIC8+fVxuICAgICAgICAgICAgICAgICAgeyFyb3cuaGFzX2NoaWxkcmVuICYmIDxCYXNlTGV2ZWwgLz59XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXsnbmFtZSd9PlxuICAgICAgICAgICAgICAgIDxUcnVuY2F0ZSBjaGFyYWN0ZXJzPXszfSBpbmhlcml0VGV4dEFsaWduPXt0cnVlfT5cbiAgICAgICAgICAgICAgICAgIHtyb3cubmFtZX1cbiAgICAgICAgICAgICAgICA8L1RydW5jYXRlPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L1Jvd05hbWU+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5udmxfc2NvcmUnKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy5udmwsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IG52bDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCJcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtyb3cubnZsfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQucGVyY2VudGFnZV9mcm9tX2xhc3Rfc2FtcGxpbmcnKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy5udmxfY2hhbmdlLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBudmxfY2hhbmdlOiBudW1iZXIgfSkgPT4gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgZGlyZWN0aW9uOiAnbHRyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgY29sb3I6ICcjMDAwMDAwJywgbWFyZ2luOiAnMCA2cHgnIH19PlxuICAgICAgICAgICAgICB7cm93Lm52bF9jaGFuZ2V9JVxuICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIDxGb250QXdlc29tZUljb25cbiAgICAgICAgICAgICAgICBpY29uPXtyb3cubnZsX2NoYW5nZSA+IDAgPyBmYUNoZXZyb25VcCA6IGZhQ2hldnJvbkRvd259XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5sYXN0X3NhbXBsZWQnKSxcbiAgICAgICAgc2VsZWN0b3I6ICdsYXN0X3NhbXBsZWQnLFxuICAgICAgICBzb3J0YWJsZTogKHJvdykgPT4gcm93Lmxhc3RfdXBkYXRlZCxcbiAgICAgICAgY2VsbDogKHJvdzogeyBsYXN0X3VwZGF0ZWQ6IHN0cmluZyB9KSA9PiAoXG4gICAgICAgICAgPGRpdiBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCI+XG4gICAgICAgICAgICB7cm93Lmxhc3RfdXBkYXRlZCA9PT0gbnVsbFxuICAgICAgICAgICAgICA/ICctJ1xuICAgICAgICAgICAgICA6IG5ldyBEYXRlKHJvdy5sYXN0X3VwZGF0ZWQpLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tR0InKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnRyZW5kX2dyYXBoJyksXG4gICAgICAgIHNlbGVjdG9yOiAndHJlbmRfZ3JhcGgnLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBpZDogbnVtYmVyIH0pID0+IChcbiAgICAgICAgICA8ZGl2IGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIj5cbiAgICAgICAgICAgIDxHcmFwaFdyYXBwZXIgcm93PXtyb3d9IHdhdGVyX2F1dGhvcml0eV9pZD17Z2V0V0FJZCgpfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQudGFnJyksXG4gICAgICAgIHNlbGVjdG9yOiAocm93KSA9PiByb3cudGFncyxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgdGFnczogYW55IH0pID0+IChcbiAgICAgICAgICA8ZGl2IGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIiBjbGFzc05hbWU9eyd0YWJsZS10YWdzJ30+XG4gICAgICAgICAgICB7cm93LnRhZ3Muam9pbignLCAnKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnBvcHVsYXRpb24nKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy5wb3B1bGF0aW9uLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBwb3B1bGF0aW9uOiBzdHJpbmcgfSkgPT4gKFxuICAgICAgICAgIDxkaXYgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiPlxuICAgICAgICAgICAge2tGb3JtYXR0ZXIocGFyc2VJbnQocm93LnBvcHVsYXRpb24pKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbaXNSdGxdLFxuICApO1xuXG4gIGNvbnN0IGluaXRpYWxpemVNYXBBcmVhcyA9IChhcmVhcykgPT4ge1xuICAgIGNvbnN0IG1hcHBlZFdpdGhDb2xvciA9IGFyZWFzLm1hcCgoYTogYW55KSA9PiB7XG4gICAgICBhLndiZV9kYXNoYm9hcmRfbmFtZSA9IGEubmFtZTtcbiAgICAgIGEuc2hvd0NvbG9yT25seUluQm9yZGVycyA9IHRydWU7XG5cbiAgICAgIGlmICghYS5zYW1wbGVfYWN0aXZlKSB7XG4gICAgICAgIGEuY29sb3IgPSB0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MDtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0luZmVjdGVkKGEubnZsKSkge1xuICAgICAgICBhLmNvbG9yID0gdGhlbWUuY29sb3JTY2hlbWUuZGF0YS5SMTAwO1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGEuY29sb3IgPSB0aGVtZS5jb2xvclNjaGVtZS5kYXRhLkcxMDA7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2V0TWFwQXJlYXMobWFwcGVkV2l0aENvbG9yKTtcbiAgfTtcblxuICBjb25zdCB6b29tVG9BcmVhID0gKGFyZWEpID0+IHtcbiAgICBhcmVhLnNoYXBlX2RhdGEgIT09IHVuZGVmaW5lZCAmJiBzZXRNYXBab29tKGFyZWEuc2hhcGVfZGF0YSk7XG4gIH07XG5cbiAgY29uc3Qgem9vbUFsbEFyZWFzID0gKGRhdGEpID0+IHtcbiAgICBjb25zdCBzaGFwZURhdGEgPSBkYXRhLm1hcCgoZGF0dW0pID0+IHtcbiAgICAgIHJldHVybiBkYXR1bS5zaGFwZV9kYXRhO1xuICAgIH0pO1xuXG4gICAgc2V0TWFwWm9vbShzaGFwZURhdGEpO1xuICB9O1xuXG4gIGNvbnN0IGlzSW5mZWN0ZWQgPSAobnZsOiBudW1iZXIpID0+IHtcbiAgICBpZiAobGV2ZWxOVkwobnZsKSA9PT0gJ2NsZWFuJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBsZXZlbE5WTChudmwpID09PSAnbG93JyB8fFxuICAgICAgbGV2ZWxOVkwobnZsKSA9PT0gJ21lZGl1bScgfHxcbiAgICAgIGxldmVsTlZMKG52bCkgPT09ICdoaWdoJ1xuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9O1xuICBjb25zdCBoaXN0b3J5ID0gdXNlSGlzdG9yeSgpO1xuICBjb25zdCB3YXRlckF1dGhvcml0eUlkID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlOiBSZXR1cm5UeXBlPHR5cGVvZiBhcHBSZWR1Y2VyPikgPT5cbiAgICAgIHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5SWQsXG4gICk7XG5cbiAgY29uc3QgZGlyOiBEaXJlY3Rpb24gPVxuICAgIG5hdkNvbnRleHQubG9jYWxlID09PSAnaGUnID8gRGlyZWN0aW9uLlJUTCA6IERpcmVjdGlvbi5MVFI7XG5cbiAgY29uc3QgdGFncyA9IFtcbiAgICBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5hbGwnKSArICcgJyxcbiAgICAn15PXodenINei16jXkdeZJyxcbiAgICAn15PXodenINeX16jXk9eZJyxcbiAgICAn15PXodenINeb15zXnNeZJyxcbiAgXTtcblxuICBjb25zdCBmaWx0ZXJSZXN1bHRzQW5kU2V0Um93cyA9ICh0ZXh0OiBzdHJpbmcpID0+IHtcbiAgICBsZXQgcmVzdWx0cyA9IGN1cnJlbnREYXRhLmZpbHRlcihmdW5jdGlvbiAoZWw6IGFueSkge1xuICAgICAgcmV0dXJuIGVsLm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXh0LnRvTG93ZXJDYXNlKCkpO1xuICAgIH0pO1xuXG4gICAgc2V0Um93cyhyZXN1bHRzKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPblJvd0V4cGFuZCA9IChleHBhbmRlZCwgcm93KSA9PiB7XG4gICAgZXhwYW5kZWQgJiYgem9vbVRvQXJlYShyb3cpO1xuICAgICFleHBhbmRlZCAmJiB6b29tQWxsQXJlYXMoZGF0YSk7XG4gIH07XG5cbiAgY29uc3Qgd2F0ZXJBdXRob3JpdHlOYW1lID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS5nbG9iYWxfZGF0YS53YXRlckF1dGhvcml0eU5hbWUsXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0VGFnQ2xpY2sgPSAodGFnKSA9PiB7XG4gICAgYW5hbHl0aWNzVHJhY2soJ1dCRSBTdGF0dXMgUmVwb3J0IC0gVGFnIGNoYW5nZSBjbGlja2VkJywge1xuICAgICAgdGFnOiB0YWcsXG4gICAgICB1dGlsaXR5X25hbWU6IHdhdGVyQXV0aG9yaXR5TmFtZSxcbiAgICB9KTtcbiAgICBzZXRTZWxlY3RlZFRhZyh0YWcpO1xuICAgIGhpc3RvcnkucHVzaChcbiAgICAgIGAvd2JlX2Rhc2hib2FyZC9pbmRleD9sb2NhbGU9JHtuYXZDb250ZXh0LmxvY2FsZX0md2F0ZXJfYXV0aG9yaXR5X2lkPSR7d2F0ZXJBdXRob3JpdHlJZH0mdGFnPSR7dGFnfWAsXG4gICAgKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaEZvclRhYlNlbGVjdGlvbiA9ICh0YWIpID0+IHtcbiAgICBzZXRGZXRjaGluZyh0cnVlKTtcbiAgICBheGlvcy5nZXQoZmV0Y2hVcmwodGFiKSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgIGxldCByZXNwb25zZURhdGEgPSByZXNwb25zZS5kYXRhLmRhdGE7XG5cbiAgICAgIHNldEZldGNoaW5nKGZhbHNlKTtcbiAgICAgIHNldFRhYnMoREVGQVVMVF9UQUJTKTtcbiAgICAgIHNldFJvd3MocmVzcG9uc2VEYXRhKTtcbiAgICAgIHNldEN1cnJlbnREYXRhKHJlc3BvbnNlRGF0YSk7XG4gICAgICBpbml0aWFsaXplTWFwQXJlYXMocmVzcG9uc2VEYXRhKTtcbiAgICAgIHpvb21BbGxBcmVhcyhyZXNwb25zZURhdGEpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVRhYlNlbGVjdGlvbkNsaWNrID0gKHRhYikgPT4ge1xuICAgIGlmICghaXNGZXRjaGluZykge1xuICAgICAgc2V0U2VsZWN0ZWRUYWIodGFiKTtcblxuICAgICAgaWYgKHRhYiAhPT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY3VzdG9tJykpIHtcbiAgICAgICAgdGFiID1cbiAgICAgICAgICB0YWIgPT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmNpdGllcycpXG4gICAgICAgICAgICA/ICdjaXR5J1xuICAgICAgICAgICAgOiB0YWIgPT09IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm1vbml0b3JlZF9hcmVhcycpXG4gICAgICAgICAgICA/ICdtb25pdG9yZWQnXG4gICAgICAgICAgICA6ICcnO1xuXG4gICAgICAgIGZldGNoRm9yVGFiU2VsZWN0aW9uKHRhYik7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGluaXRpYWxpemVEcmlsbGVkQXJlYSA9IChyZXNwb25zZSkgPT4ge1xuICAgIGxldCBkYXRhID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIHNldFJvd3MoZGF0YSk7XG4gICAgc2V0Q3VycmVudERhdGEoZGF0YSk7XG4gICAgaW5pdGlhbGl6ZU1hcEFyZWFzKGRhdGEpO1xuICAgIHpvb21BbGxBcmVhcyhkYXRhKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVBcmVhQ2xpY2sgPSAoYXJlYSkgPT4ge1xuICAgIHpvb21Ub0FyZWEoYXJlYSk7XG5cbiAgICBpZiAoYXJlYS5oYXNfY2hpbGRyZW4pIHtcbiAgICAgIHNldFRhYnMoWy4uLnRhYnMsIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmN1c3RvbScpXSk7XG4gICAgICBzZXRTZWxlY3RlZFRhYihpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jdXN0b20nKSk7XG5cbiAgICAgIGF4aW9zLmdldChmZXRjaFVybChhcmVhLmlkKSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaW5pdGlhbGl6ZURyaWxsZWRBcmVhKHJlc3BvbnNlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBpbml0aWFsaXplQ29tcG9uZW50ID0gKCkgPT4ge1xuICAgIHNldEN1cnJlbnREYXRhKGRhdGEpO1xuICAgIHNldFJvd3MoZGF0YSk7XG4gICAgYW5hbHl0aWNzVHJhY2soJ1dCRSBTdGF0dXMgUmVwb3J0Jywge1xuICAgICAgdXRpbGl0eV9uYW1lOiB3YXRlckF1dGhvcml0eU5hbWUsXG4gICAgfSk7XG4gICAgZGlzcGF0Y2godXBkYXRlTmF2Q29udGV4dCh7IG5hbWU6ICd3YmVfZGFzaGJvYXJkJyB9KSk7XG4gICAgaW5pdGlhbGl6ZU1hcEFyZWFzKGRhdGEpO1xuICAgIHpvb21BbGxBcmVhcyhkYXRhKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNGZXRjaGluZyAmJiBkYXRhICE9PSBudWxsKSB7XG4gICAgICBpbml0aWFsaXplQ29tcG9uZW50KCk7XG4gICAgfVxuICB9LCBbaXNGZXRjaGluZywgc2VsZWN0ZWRUYWcsIGRhdGFdKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Q29udGVudD5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDE+e2kxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLnRhYmxlX25hbWUnKX08L2gxPlxuICAgICAgICAgIDxBY3Rpb25zQ29udGFpbmVyPlxuICAgICAgICAgICAge3dhdGVyQXV0aG9yaXR5SWQgPT09IFdCRUlzcmFlbElkICYmIChcbiAgICAgICAgICAgICAgPERyb3Bkb3duQnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJkcm9wZG93bi1iYXNpYy1idXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17J2J1dHRvbiBidXR0b24tLXNvcnQnfVxuICAgICAgICAgICAgICAgIHRpdGxlPXtzZWxlY3RlZFRhZyArICcgJ31cbiAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0YWdzLm1hcCgodGFnKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8RHJvcGRvd24uSXRlbVxuICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIjXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3RUYWdDbGljayh0YWcpfVxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0QWxpZ246XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hdkNvbnRleHQubG9jYWxlID09PSAnaGUnID8gJ3JpZ2h0JyA6ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3RhZ31cbiAgICAgICAgICAgICAgICAgICAgPC9Ecm9wZG93bi5JdGVtPlxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bkJ1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9BY3Rpb25zQ29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPEZpcnN0U2VjdGlvbj5cbiAgICAgICAgICA8V2JlU3VtbWFyeUJhciB3YXRlckF1dGhvcml0eUlkPXt3YXRlckF1dGhvcml0eUlkfSBpc1J0bD17aXNSdGx9IC8+XG4gICAgICAgIDwvRmlyc3RTZWN0aW9uPlxuXG4gICAgICAgIDxTZWNvbmRTZWN0aW9uPlxuICAgICAgICAgIDxTZWFyY2hJbnB1dCBvbkNoYW5nZUJlaGF2aW9yPXtmaWx0ZXJSZXN1bHRzQW5kU2V0Um93c30gLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3RhYnMtY29udGFpbmVyJ30+XG4gICAgICAgICAgICA8VGFic1xuICAgICAgICAgICAgICB0YWJzPXt0YWJzfVxuICAgICAgICAgICAgICBzZWxlY3RlZFRhYj17c2VsZWN0ZWRUYWJ9XG4gICAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2s9e2hhbmRsZVRhYlNlbGVjdGlvbkNsaWNrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8TWFwVGFibGVDb250YWluZXIgaXNSdGw9e2lzUnRsfT5cbiAgICAgICAgICAgIHtpc0ZldGNoaW5nICYmIDxTcGlubmVyIC8+fVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydtYXAtY29udGFpbmVyJ30+XG4gICAgICAgICAgICAgIHshaXNGZXRjaGluZyAmJiByb3dzICE9PSBudWxsICYmIG1hcFpvb20gIT09IG51bGwgJiYgKFxuICAgICAgICAgICAgICAgIDxFcnJvckJvdW5kYXJ5PlxuICAgICAgICAgICAgICAgICAgPE1hcFxuICAgICAgICAgICAgICAgICAgICBhcmVhcz17bWFwQXJlYXN9XG4gICAgICAgICAgICAgICAgICAgIGFyZWFUb0NlbnRlckJ5PXttYXBab29tfVxuICAgICAgICAgICAgICAgICAgICBlZGdlcz17W119XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cz17W119XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50cz17W119XG4gICAgICAgICAgICAgICAgICAgIGdsb2JhbF9kYXRhPXtnbG9iYWxEYXRhfVxuICAgICAgICAgICAgICAgICAgICBtYXBCb3hTdHlsZT17TUFQQk9YX1dCRV9EQVNIQk9BUkRfU1RZTEV9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvRXJyb3JCb3VuZGFyeT5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgeyFpc0ZldGNoaW5nICYmIHJvd3MgIT09IG51bGwgJiYgKFxuICAgICAgICAgICAgICA8S2FuZG9UYWJsZVxuICAgICAgICAgICAgICAgIGlzUnRsPXtpc1J0bH1cbiAgICAgICAgICAgICAgICBvblJvd0V4cGFuZFRvZ2dsZWQ9e2hhbmRsZU9uUm93RXhwYW5kfVxuICAgICAgICAgICAgICAgIGRhdGE9e3Jvd3N9XG4gICAgICAgICAgICAgICAgY29sdW1ucz17Y29sdW1uc31cbiAgICAgICAgICAgICAgICBkaXJlY3Rpb249e2Rpcn1cbiAgICAgICAgICAgICAgICBleHBhbmRhYmxlUm93cz17dHJ1ZX1cbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uUGVyUGFnZT17VEFCTEVfUk9XU19QRVJfUEFHRX1cbiAgICAgICAgICAgICAgICByb3dDb21wb25lbnQ9e0V4cGFuZGVkQ29tcG9uZW50fVxuICAgICAgICAgICAgICAgIGRlZmF1bHRTb3J0RmllbGRJZD17M31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9NYXBUYWJsZUNvbnRhaW5lcj5cbiAgICAgICAgPC9TZWNvbmRTZWN0aW9uPlxuICAgICAgPC9Db250ZW50PlxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgUm93TmFtZSA9IHN0eWxlZC5kaXY8eyBpc1J0bDogYm9vbGVhbiB9PmBcbiAgICB3aWR0aDogMTAwJTtcbiAgICAgIFxuICAgIC5yb3dfbmFtZSB7XG4gICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgdHJhbnNpdGlvbjogLjJzIGVhc2UtaW47ICAgICAgXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMCA0cHg7XG4gICAgICAgIFxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAycHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICYtLWNsZWFuIHtcbiAgICAgICAgIGNvbG9yOiAjMjdhNjNhOyBcbiAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogIzI3YTYzYTsgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0taW5mZWN0ZWQge1xuICAgICAgICAgIGNvbG9yOiAjZTEwMDM2O1xuICAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI2UxMDAzNjsgICAgICAgIFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0taW5hY3RpdmUtc2FtcGxpbmcge1xuICAgICAgICAgIGNvbG9yOiAke3RoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjYwfTtcbiAgICAgICAgICAuZXhwYW5kYWJsZS1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uNjB9OyAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAubmFtZSB7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAxMDA7XG4gICAgICAgICAgJHsocCkgPT4gKHAuaXNSdGwgPyAncmlnaHQ6IDUxcHg7JyA6ICdsZWZ0OiA1MXB4OycpfVxuICAgICAgICAgIHRvcDogMTZweDtcbiAgICAgICAgICB3aWR0aDogNy41ZW07XG4gICAgICAgICAgbWFyZ2luLWlubGluZS1zdGFydDogM3B4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICBgO1xuXG5jb25zdCBBY3Rpb25zQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEZpcnN0U2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbjogODVweCAwIDIwcHggMDtcbmA7XG5cbmNvbnN0IFNlY29uZFNlY3Rpb24gPSBzdHlsZWQuZGl2YFxuICBwYWRkaW5nOiAyMHB4O1xuICBiYWNrZ3JvdW5kOiAjZmNmY2ZjO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZTdlN2U3O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG5gO1xuXG5jb25zdCBNYXBUYWJsZUNvbnRhaW5lciA9IHN0eWxlZC5kaXY8eyBpc1J0bDogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAubWFwLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgLmV2ZW50LXRpbWVyYW5nZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAjbWFwIHtcbiAgICAgIGhlaWdodDogNjl2aDtcbiAgICAgIHdpZHRoOiAzMHZ3O1xuICAgIH1cbiAgfVxuICBbZGF0YS10ZXN0aWQ9J2thbmRvLXRhYmxlJ10ge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG4gIFtkYXRhLWNvbHVtbi1pZD0nMSddIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICY6aG92ZXIge1xuICAgICAgLm5hbWUge1xuICAgICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICB3aWR0aDogY2FsYygxMjBweCArIDF2dyk7XG4gICAgICAgIHRyYW5zaXRpb246IDAuMnMgY3ViaWMtYmV6aWVyKDAuNjUsIDAuMDUsIDAuMzYsIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC50YWJsZS10YWdzIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAuc3Bpbm5lci1jb250YWluZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cbmA7XG5cbmNvbnN0IENvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICB9XG5cbiAgaDEge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB9XG5cbiAgcGFkZGluZzogNjBweCA2MHB4O1xuYDtcbiJdfQ==
|
|
420
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaTE4biIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcmVhY3RSZWR1eCIsIl9yZWFjdFJvdXRlckRvbSIsIl9BbmFseXRpY3MiLCJfU2VhcmNoSW5wdXQiLCJfcmVhY3RGb250YXdlc29tZSIsIl9HcmFwaFdyYXBwZXIiLCJfZnJlZVNvbGlkU3ZnSWNvbnMiLCJfYWN0aW9ucyIsIl9UaG91c2FuZHNUb0siLCJfRHJpbGxEb3duSWNvbiIsIl9CYXNlTGV2ZWwiLCJfcmVhY3REYXRhVGFibGVDb21wb25lbnQiLCJfbnZsU3RhdHVzSGVscGVyIiwiX01hcCIsIl9LYW5kb1RhYmxlIiwiX1RhYnMiLCJfdXNlS2FuZG9GZXRjaDIiLCJfdXNlUXVlcnlVUkwiLCJfRHJvcGRvd24iLCJfRHJvcGRvd25CdXR0b24iLCJfYXhpb3MiLCJfVHJ1bmNhdGUiLCJfRXhwYW5kYWJsZUNvbXBvbmVudCIsIl9TcGlubmVyIiwiX1diZVN1bW1hcnlCYXIiLCJfRXJyb3JCb3VuZGFyeSIsIl90aGVtZSIsIlRBQkxFX1JPV1NfUEVSX1BBR0UiLCJNQVBCT1hfV0JFX0RBU0hCT0FSRF9TVFlMRSIsIldCRUlzcmFlbElkIiwiZXhwb3J0cyIsIldiZURhc2hib2FyZFBhZ2UiLCJnZXRXQUlkIiwicXVlcnkiLCJnZXQiLCJmZXRjaFVybCIsImZpcnN0UGFyYW0iLCJjb25jYXQiLCJnZXRUYWciLCJERUZBVUxUX1RBQlMiLCJpMThuIiwidCIsImNvbnZlcnRUYWJOYW1lVG9QYXJhbSIsInRhYl9uYW1lIiwidXNlUXVlcnlVUkwiLCJkZWZhdWx0VGFnIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZGVmYXVsdCIsImN1cnJlbnREYXRhIiwic2V0Q3VycmVudERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNlbGVjdGVkVGFnIiwic2V0U2VsZWN0ZWRUYWciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsIm1hcEFyZWFzIiwic2V0TWFwQXJlYXMiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsIm1hcFpvb20iLCJzZXRNYXBab29tIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwicm93cyIsInNldFJvd3MiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwidGFicyIsInNldFRhYnMiLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0Iiwic2VsZWN0ZWRUYWIiLCJzZXRTZWxlY3RlZFRhYiIsIl91c2VLYW5kb0ZldGNoIiwidXNlS2FuZG9GZXRjaCIsImRhdGEiLCJpc0ZldGNoaW5nIiwic2V0RmV0Y2hpbmciLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwibmF2Q29udGV4dCIsInVzZVNlbGVjdG9yIiwic3RhdGUiLCJuYXZfY29udGV4dF9kYXRhIiwiZ2xvYmFsRGF0YSIsImdsb2JhbF9kYXRhIiwiaXNSdGwiLCJsb2NhbGUiLCJjb2xvckZvclJvdyIsInJvdyIsInF1YWxpdHkiLCJzYW1wbGVfYWN0aXZlIiwiaXNJbmZlY3RlZCIsIm52bCIsImNvbHVtbnMiLCJSZWFjdCIsInVzZU1lbW8iLCJuYW1lIiwic2VsZWN0b3IiLCJzb3J0YWJsZSIsImNlbGwiLCJjcmVhdGVFbGVtZW50IiwiUm93TmFtZSIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJoYW5kbGVBcmVhQ2xpY2siLCJoYXNfY2hpbGRyZW4iLCJSZWFjdENvbXBvbmVudCIsImNoYXJhY3RlcnMiLCJpbmhlcml0VGV4dEFsaWduIiwic3R5bGUiLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsIm52bF9jaGFuZ2UiLCJkaXJlY3Rpb24iLCJjb2xvciIsIm1hcmdpbiIsIkZvbnRBd2Vzb21lSWNvbiIsImljb24iLCJmYUNoZXZyb25VcCIsImZhQ2hldnJvbkRvd24iLCJsYXN0X3VwZGF0ZWQiLCJEYXRlIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiR3JhcGhXcmFwcGVyIiwid2F0ZXJfYXV0aG9yaXR5X2lkIiwidGFncyIsImpvaW4iLCJwb3B1bGF0aW9uIiwia0Zvcm1hdHRlciIsInBhcnNlSW50IiwiaW5pdGlhbGl6ZU1hcEFyZWFzIiwiYXJlYXMiLCJtYXBwZWRXaXRoQ29sb3IiLCJtYXAiLCJhIiwid2JlX2Rhc2hib2FyZF9uYW1lIiwic2hvd0NvbG9yT25seUluQm9yZGVycyIsInRoZW1lIiwiY29sb3JTY2hlbWUiLCJuYXR1cmFsIiwibjYwIiwiUjEwMCIsIkcxMDAiLCJ6b29tVG9BcmVhIiwiYXJlYSIsInNoYXBlX2RhdGEiLCJ1bmRlZmluZWQiLCJ6b29tQWxsQXJlYXMiLCJzaGFwZURhdGEiLCJkYXR1bSIsImxldmVsTlZMIiwiaGlzdG9yeSIsInVzZUhpc3RvcnkiLCJ3YXRlckF1dGhvcml0eUlkIiwiZGlyIiwiRGlyZWN0aW9uIiwiUlRMIiwiTFRSIiwiZmlsdGVyUmVzdWx0c0FuZFNldFJvd3MiLCJ0ZXh0IiwicmVzdWx0cyIsImZpbHRlciIsImVsIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImhhbmRsZU9uUm93RXhwYW5kIiwiZXhwYW5kZWQiLCJ3YXRlckF1dGhvcml0eU5hbWUiLCJoYW5kbGVTZWxlY3RUYWdDbGljayIsInRhZyIsImFuYWx5dGljc1RyYWNrIiwidXRpbGl0eV9uYW1lIiwicHVzaCIsImZldGNoRm9yVGFiU2VsZWN0aW9uIiwidGFiIiwiYXhpb3MiLCJ0aGVuIiwicmVzcG9uc2UiLCJyZXNwb25zZURhdGEiLCJoYW5kbGVUYWJTZWxlY3Rpb25DbGljayIsImluaXRpYWxpemVEcmlsbGVkQXJlYSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJpZCIsImluaXRpYWxpemVDb21wb25lbnQiLCJ1cGRhdGVOYXZDb250ZXh0IiwidXNlRWZmZWN0IiwiRnJhZ21lbnQiLCJDb250ZW50IiwiQWN0aW9uc0NvbnRhaW5lciIsInRpdGxlIiwidmFyaWFudCIsIkl0ZW0iLCJocmVmIiwiRmlyc3RTZWN0aW9uIiwiV2JlU3VtbWFyeUJhciIsIlNlY29uZFNlY3Rpb24iLCJTZWFyY2hJbnB1dCIsIm9uQ2hhbmdlQmVoYXZpb3IiLCJUYWJzIiwiaGFuZGxlT25DbGljayIsIk1hcFRhYmxlQ29udGFpbmVyIiwiU3Bpbm5lciIsIk1hcCIsImFyZWFUb0NlbnRlckJ5IiwiZWRnZXMiLCJwb2ludHMiLCJldmVudHMiLCJtYXBCb3hTdHlsZSIsIkthbmRvVGFibGUiLCJvblJvd0V4cGFuZFRvZ2dsZWQiLCJleHBhbmRhYmxlUm93cyIsInBhZ2luYXRpb25QZXJQYWdlIiwicm93Q29tcG9uZW50IiwiRXhwYW5kZWRDb21wb25lbnQiLCJkZWZhdWx0U29ydEZpZWxkSWQiLCJzdHlsZWQiLCJkaXYiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsInAiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFnZXMvV2JlRGFzaGJvYXJkL1diZURhc2hib2FyZFBhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGkxOG4gZnJvbSAnc3JjL3V0aWxpdGllcy9pMThuJztcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCB7IHVzZUhpc3RvcnkgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IGFuYWx5dGljc1RyYWNrIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0FuYWx5dGljcyc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gJy4vU2VhcmNoSW5wdXQnO1xuaW1wb3J0IHsgRm9udEF3ZXNvbWVJY29uIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3JlYWN0LWZvbnRhd2Vzb21lJztcbmltcG9ydCB7IEdyYXBoV3JhcHBlciB9IGZyb20gJy4vR3JhcGhXcmFwcGVyJztcbmltcG9ydCB7IGZhQ2hldnJvbkRvd24sIGZhQ2hldnJvblVwIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcbmltcG9ydCB7IGFwcFJlZHVjZXIgfSBmcm9tICcuLi8uLi9zdG9yZS9yb290UmVkdWNlcic7XG5pbXBvcnQgeyB1cGRhdGVOYXZDb250ZXh0IH0gZnJvbSAnLi4vLi4vc3RvcmUvY29udGV4dC9hY3Rpb25zJztcbmltcG9ydCB7IGtGb3JtYXR0ZXIgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvVGhvdXNhbmRzVG9LJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIERyaWxsRG93bkljb24gfSBmcm9tICcuL0RyaWxsRG93bkljb24uc3ZnJztcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIEJhc2VMZXZlbCB9IGZyb20gJy4vQmFzZUxldmVsLnN2Zyc7XG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdyZWFjdC1kYXRhLXRhYmxlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBsZXZlbE5WTCB9IGZyb20gJy4uL0NvdmlkUGFnZS9jb21wb25lbnRzL252bFN0YXR1c0hlbHBlcic7XG5pbXBvcnQgeyBNYXAgfSBmcm9tICcuLi8uLi9XaWRnZXRzL01hcC9NYXAnO1xuaW1wb3J0IHsgS2FuZG9UYWJsZSB9IGZyb20gJ3NyYy91aS1raXQvS2FuZG9UYWJsZS9LYW5kb1RhYmxlJztcbmltcG9ydCB7IFRhYnMgfSBmcm9tICcuL1RhYnMnO1xuaW1wb3J0IHVzZUthbmRvRmV0Y2ggZnJvbSAnLi4vLi4vaG9va3MvdXNlS2FuZG9GZXRjaCc7XG5pbXBvcnQgdXNlUXVlcnlVUkwgZnJvbSAnLi4vLi4vaG9va3MvdXNlUXVlcnlVUkwnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cy9tYWNybyc7XG5pbXBvcnQgRHJvcGRvd24gZnJvbSAncmVhY3QtYm9vdHN0cmFwL2Nqcy9Ecm9wZG93bic7XG5pbXBvcnQgRHJvcGRvd25CdXR0b24gZnJvbSAncmVhY3QtYm9vdHN0cmFwL2Nqcy9Ecm9wZG93bkJ1dHRvbic7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IFRydW5jYXRlIGZyb20gJy4uLy4uL3V0aWxpdGllcy9UcnVuY2F0ZSc7XG5pbXBvcnQgeyBFeHBhbmRlZENvbXBvbmVudCB9IGZyb20gJy4vRXhwYW5kYWJsZUNvbXBvbmVudCc7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9TcGlubmVyL1NwaW5uZXInO1xuaW1wb3J0IHsgV2JlU3VtbWFyeUJhciB9IGZyb20gJy4vV2JlU3VtbWFyeUJhcic7XG5pbXBvcnQgRXJyb3JCb3VuZGFyeSBmcm9tICcuLi8uLi91dGlsaXRpZXMvRXJyb3JCb3VuZGFyeSc7XG5pbXBvcnQgeyB0aGVtZSB9IGZyb20gJy4uLy4uL3N0eWxlcy90aGVtZS90aGVtZSc7XG5jb25zdCBUQUJMRV9ST1dTX1BFUl9QQUdFID0gMjU7XG5jb25zdCBNQVBCT1hfV0JFX0RBU0hCT0FSRF9TVFlMRSA9ICdja3p6a2pzaTcwMDVmMTRvOWltMG1jenM5JztcblxuZXhwb3J0IGNvbnN0IFdCRUlzcmFlbElkID0gNDYzO1xuZXhwb3J0IGNvbnN0IFdiZURhc2hib2FyZFBhZ2UgPSAoKSA9PiB7XG4gIGNvbnN0IGdldFdBSWQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHF1ZXJ5LmdldCgnd2F0ZXJfYXV0aG9yaXR5X2lkJyk7XG4gIH07XG4gIGNvbnN0IGZldGNoVXJsID0gKGZpcnN0UGFyYW0pID0+IHtcbiAgICByZXR1cm4gYC9hcGlfdWkvd2JlX2Rhc2hib2FyZC8ke2ZpcnN0UGFyYW19P3dhdGVyX2F1dGhvcml0eV9pZD0ke2dldFdBSWQoKX0mdGFnPSR7Z2V0VGFnKCl9YDtcbiAgfTtcbiAgY29uc3QgREVGQVVMVF9UQUJTID0gW1xuICAgIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmNpdGllcycpLFxuICAgIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm1vbml0b3JlZF9hcmVhcycpLFxuICBdO1xuICBjb25zdCBjb252ZXJ0VGFiTmFtZVRvUGFyYW0gPSAodGFiX25hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmICh0YWJfbmFtZSA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY2l0aWVzJykpIHtcbiAgICAgIHJldHVybiAnY2l0eSc7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRhYl9uYW1lID09PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5tb25pdG9yZWRfYXJlYXMnKVxuICAgICkge1xuICAgICAgcmV0dXJuICdtb25pdG9yZWQnO1xuICAgIH1cblxuICAgIHJldHVybiAnY2l0eSc7XG4gIH07XG4gIGNvbnN0IHF1ZXJ5ID0gdXNlUXVlcnlVUkwoKTtcbiAgY29uc3QgZ2V0VGFnID0gKCkgPT4ge1xuICAgIHJldHVybiBxdWVyeS5nZXQoJ3RhZycpO1xuICB9O1xuICBjb25zdCBkZWZhdWx0VGFnID1cbiAgICBnZXRUYWcoKSA9PT0gbnVsbCA/IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmFsbCcpIDogZ2V0VGFnKCk7XG4gIGNvbnN0IFtjdXJyZW50RGF0YSwgc2V0Q3VycmVudERhdGFdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc2VsZWN0ZWRUYWcsIHNldFNlbGVjdGVkVGFnXSA9IHVzZVN0YXRlPHN0cmluZz4oZGVmYXVsdFRhZyEpO1xuICBjb25zdCBbbWFwQXJlYXMsIHNldE1hcEFyZWFzXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFttYXBab29tLCBzZXRNYXBab29tXSA9IHVzZVN0YXRlPGFueVtdPihbXSk7XG4gIGNvbnN0IFtyb3dzLCBzZXRSb3dzXSA9IHVzZVN0YXRlPGFueT4oW10pO1xuICBjb25zdCBbdGFicywgc2V0VGFic10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oREVGQVVMVF9UQUJTKTtcbiAgY29uc3QgW3NlbGVjdGVkVGFiLCBzZXRTZWxlY3RlZFRhYl0gPSB1c2VTdGF0ZTxzdHJpbmc+KHRhYnNbMF0pO1xuICBjb25zdCB7IGRhdGEsIGlzRmV0Y2hpbmcsIHNldEZldGNoaW5nIH0gPSB1c2VLYW5kb0ZldGNoKFxuICAgIGZldGNoVXJsKGNvbnZlcnRUYWJOYW1lVG9QYXJhbShzZWxlY3RlZFRhYikpLFxuICApO1xuXG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgbmF2Q29udGV4dCA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLm5hdl9jb250ZXh0X2RhdGEubmF2Q29udGV4dCxcbiAgKTtcbiAgY29uc3QgZ2xvYmFsRGF0YSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZTogUmV0dXJuVHlwZTx0eXBlb2YgYXBwUmVkdWNlcj4pID0+IHN0YXRlLmdsb2JhbF9kYXRhLFxuICApO1xuICBjb25zdCBpc1J0bDogYm9vbGVhbiA9IG5hdkNvbnRleHQubG9jYWxlID09PSAnaGUnID8gdHJ1ZSA6IGZhbHNlO1xuICBjb25zdCBjb2xvckZvclJvdyA9IChyb3cpID0+IHtcbiAgICBsZXQgcXVhbGl0eTtcbiAgICBpZiAoIXJvdy5zYW1wbGVfYWN0aXZlKSB7XG4gICAgICBxdWFsaXR5ID0gJ2luYWN0aXZlLXNhbXBsaW5nJztcbiAgICB9IGVsc2UgaWYgKGlzSW5mZWN0ZWQocm93Lm52bCkpIHtcbiAgICAgIHF1YWxpdHkgPSAnaW5mZWN0ZWQnO1xuICAgIH0gZWxzZSB7XG4gICAgICBxdWFsaXR5ID0gJ2NsZWFuJztcbiAgICB9XG5cbiAgICByZXR1cm4gYHJvd19uYW1lLS0ke3F1YWxpdHl9YDtcbiAgfTtcbiAgY29uc3QgY29sdW1uczogYW55ID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm5hbWUnKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy5uYW1lLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyBuYW1lOiBzdHJpbmc7IG52bDogbnVtYmVyOyBoYXNfY2hpbGRyZW46IGJvb2xlYW4gfSkgPT4gKFxuICAgICAgICAgIDxSb3dOYW1lIGlzUnRsPXtpc1J0bH0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Byb3dfbmFtZSAke2NvbG9yRm9yUm93KHJvdyl9YH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUFyZWFDbGljayhyb3cpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2V4cGFuZGFibGUtaWNvbid9PlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAge3Jvdy5oYXNfY2hpbGRyZW4gJiYgPERyaWxsRG93bkljb24gLz59XG4gICAgICAgICAgICAgICAgICB7IXJvdy5oYXNfY2hpbGRyZW4gJiYgPEJhc2VMZXZlbCAvPn1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9eyduYW1lJ30+XG4gICAgICAgICAgICAgICAgPFRydW5jYXRlIGNoYXJhY3RlcnM9ezN9IGluaGVyaXRUZXh0QWxpZ249e3RydWV9PlxuICAgICAgICAgICAgICAgICAge3Jvdy5uYW1lfVxuICAgICAgICAgICAgICAgIDwvVHJ1bmNhdGU+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvUm93TmFtZT5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLm52bF9zY29yZScpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93Lm52bCxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIGNlbGw6IChyb3c6IHsgbnZsOiBudW1iZXIgfSkgPT4gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Jvdy5udmx9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5wZXJjZW50YWdlX2Zyb21fbGFzdF9zYW1wbGluZycpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93Lm52bF9jaGFuZ2UsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IG52bF9jaGFuZ2U6IG51bWJlciB9KSA9PiAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXJlY3Rpb246ICdsdHInLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBjb2xvcjogJyMwMDAwMDAnLCBtYXJnaW46ICcwIDZweCcgfX0+XG4gICAgICAgICAgICAgIHtyb3cubnZsX2NoYW5nZX0lXG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgPEZvbnRBd2Vzb21lSWNvblxuICAgICAgICAgICAgICAgIGljb249e3Jvdy5udmxfY2hhbmdlID4gMCA/IGZhQ2hldnJvblVwIDogZmFDaGV2cm9uRG93bn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmxhc3Rfc2FtcGxlZCcpLFxuICAgICAgICBzZWxlY3RvcjogJ2xhc3Rfc2FtcGxlZCcsXG4gICAgICAgIHNvcnRhYmxlOiAocm93KSA9PiByb3cubGFzdF91cGRhdGVkLFxuICAgICAgICBjZWxsOiAocm93OiB7IGxhc3RfdXBkYXRlZDogc3RyaW5nIH0pID0+IChcbiAgICAgICAgICA8ZGl2IGRhdGEtdGFnPVwiYWxsb3dSb3dFdmVudHNcIj5cbiAgICAgICAgICAgIHtyb3cubGFzdF91cGRhdGVkID09PSBudWxsXG4gICAgICAgICAgICAgID8gJy0nXG4gICAgICAgICAgICAgIDogbmV3IERhdGUocm93Lmxhc3RfdXBkYXRlZCkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1HQicpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQudHJlbmRfZ3JhcGgnKSxcbiAgICAgICAgc2VsZWN0b3I6ICd0cmVuZF9ncmFwaCcsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IGlkOiBudW1iZXIgfSkgPT4gKFxuICAgICAgICAgIDxkaXYgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiPlxuICAgICAgICAgICAgPEdyYXBoV3JhcHBlciByb3c9e3Jvd30gd2F0ZXJfYXV0aG9yaXR5X2lkPXtnZXRXQUlkKCl9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC50YWcnKSxcbiAgICAgICAgc2VsZWN0b3I6IChyb3cpID0+IHJvdy50YWdzLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgY2VsbDogKHJvdzogeyB0YWdzOiBhbnkgfSkgPT4gKFxuICAgICAgICAgIDxkaXYgZGF0YS10YWc9XCJhbGxvd1Jvd0V2ZW50c1wiIGNsYXNzTmFtZT17J3RhYmxlLXRhZ3MnfT5cbiAgICAgICAgICAgIHtyb3cudGFncy5qb2luKCcsICcpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQucG9wdWxhdGlvbicpLFxuICAgICAgICBzZWxlY3RvcjogKHJvdykgPT4gcm93LnBvcHVsYXRpb24sXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBjZWxsOiAocm93OiB7IHBvcHVsYXRpb246IHN0cmluZyB9KSA9PiAoXG4gICAgICAgICAgPGRpdiBkYXRhLXRhZz1cImFsbG93Um93RXZlbnRzXCI+XG4gICAgICAgICAgICB7a0Zvcm1hdHRlcihwYXJzZUludChyb3cucG9wdWxhdGlvbikpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICBdLFxuICAgIFtpc1J0bF0sXG4gICk7XG5cbiAgY29uc3QgaW5pdGlhbGl6ZU1hcEFyZWFzID0gKGFyZWFzKSA9PiB7XG4gICAgY29uc3QgbWFwcGVkV2l0aENvbG9yID0gYXJlYXMubWFwKChhOiBhbnkpID0+IHtcbiAgICAgIGEud2JlX2Rhc2hib2FyZF9uYW1lID0gYS5uYW1lO1xuICAgICAgYS5zaG93Q29sb3JPbmx5SW5Cb3JkZXJzID0gdHJ1ZTtcblxuICAgICAgaWYgKCFhLnNhbXBsZV9hY3RpdmUpIHtcbiAgICAgICAgYS5jb2xvciA9IHRoZW1lLmNvbG9yU2NoZW1lLm5hdHVyYWwubjYwO1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzSW5mZWN0ZWQoYS5udmwpKSB7XG4gICAgICAgIGEuY29sb3IgPSB0aGVtZS5jb2xvclNjaGVtZS5kYXRhLlIxMDA7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYS5jb2xvciA9IHRoZW1lLmNvbG9yU2NoZW1lLmRhdGEuRzEwMDtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzZXRNYXBBcmVhcyhtYXBwZWRXaXRoQ29sb3IpO1xuICB9O1xuXG4gIGNvbnN0IHpvb21Ub0FyZWEgPSAoYXJlYSkgPT4ge1xuICAgIGFyZWEuc2hhcGVfZGF0YSAhPT0gdW5kZWZpbmVkICYmIHNldE1hcFpvb20oYXJlYS5zaGFwZV9kYXRhKTtcbiAgfTtcblxuICBjb25zdCB6b29tQWxsQXJlYXMgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHNoYXBlRGF0YSA9IGRhdGEubWFwKChkYXR1bSkgPT4ge1xuICAgICAgcmV0dXJuIGRhdHVtLnNoYXBlX2RhdGE7XG4gICAgfSk7XG5cbiAgICBzZXRNYXBab29tKHNoYXBlRGF0YSk7XG4gIH07XG5cbiAgY29uc3QgaXNJbmZlY3RlZCA9IChudmw6IG51bWJlcikgPT4ge1xuICAgIGlmIChsZXZlbE5WTChudmwpID09PSAnY2xlYW4nKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGxldmVsTlZMKG52bCkgPT09ICdsb3cnIHx8XG4gICAgICBsZXZlbE5WTChudmwpID09PSAnbWVkaXVtJyB8fFxuICAgICAgbGV2ZWxOVkwobnZsKSA9PT0gJ2hpZ2gnXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH07XG4gIGNvbnN0IGhpc3RvcnkgPSB1c2VIaXN0b3J5KCk7XG4gIGNvbnN0IHdhdGVyQXV0aG9yaXR5SWQgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGU6IFJldHVyblR5cGU8dHlwZW9mIGFwcFJlZHVjZXI+KSA9PlxuICAgICAgc3RhdGUuZ2xvYmFsX2RhdGEud2F0ZXJBdXRob3JpdHlJZCxcbiAgKTtcblxuICBjb25zdCBkaXI6IERpcmVjdGlvbiA9XG4gICAgbmF2Q29udGV4dC5sb2NhbGUgPT09ICdoZScgPyBEaXJlY3Rpb24uUlRMIDogRGlyZWN0aW9uLkxUUjtcblxuICBjb25zdCB0YWdzID0gW1xuICAgIGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmFsbCcpICsgJyAnLFxuICAgICfXk9eh16cg16LXqNeR15knLFxuICAgICfXk9eh16cg15fXqNeT15knLFxuICAgICfXk9eh16cg15vXnNec15knLFxuICBdO1xuXG4gIGNvbnN0IGZpbHRlclJlc3VsdHNBbmRTZXRSb3dzID0gKHRleHQ6IHN0cmluZykgPT4ge1xuICAgIGxldCByZXN1bHRzID0gY3VycmVudERhdGEuZmlsdGVyKGZ1bmN0aW9uIChlbDogYW55KSB7XG4gICAgICByZXR1cm4gZWwubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRleHQudG9Mb3dlckNhc2UoKSk7XG4gICAgfSk7XG5cbiAgICBzZXRSb3dzKHJlc3VsdHMpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9uUm93RXhwYW5kID0gKGV4cGFuZGVkLCByb3cpID0+IHtcbiAgICBleHBhbmRlZCAmJiB6b29tVG9BcmVhKHJvdyk7XG4gICAgIWV4cGFuZGVkICYmIHpvb21BbGxBcmVhcyhkYXRhKTtcbiAgfTtcblxuICBjb25zdCB3YXRlckF1dGhvcml0eU5hbWUgPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLmdsb2JhbF9kYXRhLndhdGVyQXV0aG9yaXR5TmFtZSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVTZWxlY3RUYWdDbGljayA9ICh0YWcpID0+IHtcbiAgICBhbmFseXRpY3NUcmFjaygnV0JFIFN0YXR1cyBSZXBvcnQgLSBUYWcgY2hhbmdlIGNsaWNrZWQnLCB7XG4gICAgICB0YWc6IHRhZyxcbiAgICAgIHV0aWxpdHlfbmFtZTogd2F0ZXJBdXRob3JpdHlOYW1lLFxuICAgIH0pO1xuICAgIHNldFNlbGVjdGVkVGFnKHRhZyk7XG4gICAgaGlzdG9yeS5wdXNoKFxuICAgICAgYC93YmVfZGFzaGJvYXJkL2luZGV4P2xvY2FsZT0ke25hdkNvbnRleHQubG9jYWxlfSZ3YXRlcl9hdXRob3JpdHlfaWQ9JHt3YXRlckF1dGhvcml0eUlkfSZ0YWc9JHt0YWd9YCxcbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRm9yVGFiU2VsZWN0aW9uID0gKHRhYikgPT4ge1xuICAgIHNldEZldGNoaW5nKHRydWUpO1xuICAgIGF4aW9zLmdldChmZXRjaFVybCh0YWIpKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgbGV0IHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcblxuICAgICAgc2V0RmV0Y2hpbmcoZmFsc2UpO1xuICAgICAgc2V0VGFicyhERUZBVUxUX1RBQlMpO1xuICAgICAgc2V0Um93cyhyZXNwb25zZURhdGEpO1xuICAgICAgc2V0Q3VycmVudERhdGEocmVzcG9uc2VEYXRhKTtcbiAgICAgIGluaXRpYWxpemVNYXBBcmVhcyhyZXNwb25zZURhdGEpO1xuICAgICAgem9vbUFsbEFyZWFzKHJlc3BvbnNlRGF0YSk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2sgPSAodGFiKSA9PiB7XG4gICAgaWYgKCFpc0ZldGNoaW5nKSB7XG4gICAgICBzZXRTZWxlY3RlZFRhYih0YWIpO1xuXG4gICAgICBpZiAodGFiICE9PSBpMThuLnQoJ2NvbXBvbmVudHMud2JlX2Rhc2hib2FyZC5jdXN0b20nKSkge1xuICAgICAgICB0YWIgPVxuICAgICAgICAgIHRhYiA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY2l0aWVzJylcbiAgICAgICAgICAgID8gJ2NpdHknXG4gICAgICAgICAgICA6IHRhYiA9PT0gaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQubW9uaXRvcmVkX2FyZWFzJylcbiAgICAgICAgICAgID8gJ21vbml0b3JlZCdcbiAgICAgICAgICAgIDogJyc7XG5cbiAgICAgICAgZmV0Y2hGb3JUYWJTZWxlY3Rpb24odGFiKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaW5pdGlhbGl6ZURyaWxsZWRBcmVhID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgbGV0IGRhdGEgPSByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgc2V0Um93cyhkYXRhKTtcbiAgICBzZXRDdXJyZW50RGF0YShkYXRhKTtcbiAgICBpbml0aWFsaXplTWFwQXJlYXMoZGF0YSk7XG4gICAgem9vbUFsbEFyZWFzKGRhdGEpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUFyZWFDbGljayA9IChhcmVhKSA9PiB7XG4gICAgem9vbVRvQXJlYShhcmVhKTtcblxuICAgIGlmIChhcmVhLmhhc19jaGlsZHJlbikge1xuICAgICAgc2V0VGFicyhbLi4udGFicywgaTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQuY3VzdG9tJyldKTtcbiAgICAgIHNldFNlbGVjdGVkVGFiKGkxOG4udCgnY29tcG9uZW50cy53YmVfZGFzaGJvYXJkLmN1c3RvbScpKTtcblxuICAgICAgYXhpb3MuZ2V0KGZldGNoVXJsKGFyZWEuaWQpKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpbml0aWFsaXplRHJpbGxlZEFyZWEocmVzcG9uc2UpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGluaXRpYWxpemVDb21wb25lbnQgPSAoKSA9PiB7XG4gICAgc2V0Q3VycmVudERhdGEoZGF0YSk7XG4gICAgc2V0Um93cyhkYXRhKTtcbiAgICBhbmFseXRpY3NUcmFjaygnV0JFIFN0YXR1cyBSZXBvcnQnLCB7XG4gICAgICB1dGlsaXR5X25hbWU6IHdhdGVyQXV0aG9yaXR5TmFtZSxcbiAgICB9KTtcbiAgICBkaXNwYXRjaCh1cGRhdGVOYXZDb250ZXh0KHsgbmFtZTogJ3diZV9kYXNoYm9hcmQnIH0pKTtcbiAgICBpbml0aWFsaXplTWFwQXJlYXMoZGF0YSk7XG4gICAgem9vbUFsbEFyZWFzKGRhdGEpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0ZldGNoaW5nICYmIGRhdGEgIT09IG51bGwpIHtcbiAgICAgIGluaXRpYWxpemVDb21wb25lbnQoKTtcbiAgICB9XG4gIH0sIFtpc0ZldGNoaW5nLCBzZWxlY3RlZFRhZywgZGF0YV0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxDb250ZW50PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxoMT57aTE4bi50KCdjb21wb25lbnRzLndiZV9kYXNoYm9hcmQudGFibGVfbmFtZScpfTwvaDE+XG4gICAgICAgICAgPEFjdGlvbnNDb250YWluZXI+XG4gICAgICAgICAgICB7d2F0ZXJBdXRob3JpdHlJZCA9PT0gV0JFSXNyYWVsSWQgJiYgKFxuICAgICAgICAgICAgICA8RHJvcGRvd25CdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImRyb3Bkb3duLWJhc2ljLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnYnV0dG9uIGJ1dHRvbi0tc29ydCd9XG4gICAgICAgICAgICAgICAgdGl0bGU9e3NlbGVjdGVkVGFnICsgJyAnfVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RhZ3MubWFwKCh0YWcpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bi5JdGVtXG4gICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbGVjdFRhZ0NsaWNrKHRhZyl9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRBbGlnbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2Q29udGV4dC5sb2NhbGUgPT09ICdoZScgPyAncmlnaHQnIDogJ2xlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7dGFnfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duLkl0ZW0+XG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duQnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0FjdGlvbnNDb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8Rmlyc3RTZWN0aW9uPlxuICAgICAgICAgIDxXYmVTdW1tYXJ5QmFyIHdhdGVyQXV0aG9yaXR5SWQ9e3dhdGVyQXV0aG9yaXR5SWR9IGlzUnRsPXtpc1J0bH0gLz5cbiAgICAgICAgPC9GaXJzdFNlY3Rpb24+XG5cbiAgICAgICAgPFNlY29uZFNlY3Rpb24+XG4gICAgICAgICAgPFNlYXJjaElucHV0IG9uQ2hhbmdlQmVoYXZpb3I9e2ZpbHRlclJlc3VsdHNBbmRTZXRSb3dzfSAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsndGFicy1jb250YWluZXInfT5cbiAgICAgICAgICAgIDxUYWJzXG4gICAgICAgICAgICAgIHRhYnM9e3RhYnN9XG4gICAgICAgICAgICAgIHNlbGVjdGVkVGFiPXtzZWxlY3RlZFRhYn1cbiAgICAgICAgICAgICAgaGFuZGxlT25DbGljaz17aGFuZGxlVGFiU2VsZWN0aW9uQ2xpY2t9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxNYXBUYWJsZUNvbnRhaW5lciBpc1J0bD17aXNSdGx9PlxuICAgICAgICAgICAge2lzRmV0Y2hpbmcgJiYgPFNwaW5uZXIgLz59XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J21hcC1jb250YWluZXInfT5cbiAgICAgICAgICAgICAgeyFpc0ZldGNoaW5nICYmIHJvd3MgIT09IG51bGwgJiYgbWFwWm9vbSAhPT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgICAgPEVycm9yQm91bmRhcnk+XG4gICAgICAgICAgICAgICAgICA8TWFwXG4gICAgICAgICAgICAgICAgICAgIGFyZWFzPXttYXBBcmVhc31cbiAgICAgICAgICAgICAgICAgICAgYXJlYVRvQ2VudGVyQnk9e21hcFpvb219XG4gICAgICAgICAgICAgICAgICAgIGVkZ2VzPXtbXX1cbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzPXtbXX1cbiAgICAgICAgICAgICAgICAgICAgZXZlbnRzPXtbXX1cbiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsX2RhdGE9e2dsb2JhbERhdGF9XG4gICAgICAgICAgICAgICAgICAgIG1hcEJveFN0eWxlPXtNQVBCT1hfV0JFX0RBU0hCT0FSRF9TVFlMRX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9FcnJvckJvdW5kYXJ5PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7IWlzRmV0Y2hpbmcgJiYgcm93cyAhPT0gbnVsbCAmJiAoXG4gICAgICAgICAgICAgIDxLYW5kb1RhYmxlXG4gICAgICAgICAgICAgICAgaXNSdGw9e2lzUnRsfVxuICAgICAgICAgICAgICAgIG9uUm93RXhwYW5kVG9nZ2xlZD17aGFuZGxlT25Sb3dFeHBhbmR9XG4gICAgICAgICAgICAgICAgZGF0YT17cm93c31cbiAgICAgICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbj17ZGlyfVxuICAgICAgICAgICAgICAgIGV4cGFuZGFibGVSb3dzPXt0cnVlfVxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb25QZXJQYWdlPXtUQUJMRV9ST1dTX1BFUl9QQUdFfVxuICAgICAgICAgICAgICAgIHJvd0NvbXBvbmVudD17RXhwYW5kZWRDb21wb25lbnR9XG4gICAgICAgICAgICAgICAgZGVmYXVsdFNvcnRGaWVsZElkPXszfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L01hcFRhYmxlQ29udGFpbmVyPlxuICAgICAgICA8L1NlY29uZFNlY3Rpb24+XG4gICAgICA8L0NvbnRlbnQ+XG4gICAgPC8+XG4gICk7XG59O1xuXG5jb25zdCBSb3dOYW1lID0gc3R5bGVkLmRpdjx7IGlzUnRsOiBib29sZWFuIH0+YFxuICAgIHdpZHRoOiAxMDAlO1xuICAgICAgXG4gICAgLnJvd19uYW1lIHtcbiAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICB0cmFuc2l0aW9uOiAuMnMgZWFzZS1pbjsgICAgICBcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAwIDRweDtcbiAgICAgICAgXG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDJweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgICBcbiAgICAgICAgJi0tY2xlYW4ge1xuICAgICAgICAgY29sb3I6ICMyN2E2M2E7IFxuICAgICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMjdhNjNhOyAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAmLS1pbmZlY3RlZCB7XG4gICAgICAgICAgY29sb3I6ICNlMTAwMzY7XG4gICAgICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZTEwMDM2OyAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAmLS1pbmFjdGl2ZS1zYW1wbGluZyB7XG4gICAgICAgICAgY29sb3I6ICR7dGhlbWUuY29sb3JTY2hlbWUubmF0dXJhbC5uNjB9O1xuICAgICAgICAgIC5leHBhbmRhYmxlLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHt0aGVtZS5jb2xvclNjaGVtZS5uYXR1cmFsLm42MH07ICAgICAgICBcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC5uYW1lIHtcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDEwMDtcbiAgICAgICAgICAkeyhwKSA9PiAocC5pc1J0bCA/ICdyaWdodDogNTFweDsnIDogJ2xlZnQ6IDUxcHg7Jyl9XG4gICAgICAgICAgdG9wOiAxNnB4O1xuICAgICAgICAgIHdpZHRoOiA3LjVlbTtcbiAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAzcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIGA7XG5cbmNvbnN0IEFjdGlvbnNDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgRmlyc3RTZWN0aW9uID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luOiA4NXB4IDAgMjBweCAwO1xuYDtcblxuY29uc3QgU2Vjb25kU2VjdGlvbiA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmc6IDIwcHg7XG4gIGJhY2tncm91bmQ6ICNmY2ZjZmM7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlN2U3ZTc7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbmA7XG5cbmNvbnN0IE1hcFRhYmxlQ29udGFpbmVyID0gc3R5bGVkLmRpdjx7IGlzUnRsOiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0O1xuICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gIC5tYXAtY29udGFpbmVyIHtcbiAgICB3aWR0aDogdW5zZXQgIWltcG9ydGFudDtcbiAgICAuZXZlbnQtdGltZXJhbmdlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgICNtYXAge1xuICAgICAgaGVpZ2h0OiA2OXZoO1xuICAgICAgd2lkdGg6IDMwdnc7XG4gICAgfVxuICB9XG4gIFtkYXRhLXRlc3RpZD0na2FuZG8tdGFibGUnXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgW2RhdGEtY29sdW1uLWlkPScxJ10ge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgJjpob3ZlciB7XG4gICAgICAubmFtZSB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLmV4cGFuZGFibGUtaWNvbiB7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEyMHB4ICsgMXZ3KTtcbiAgICAgICAgdHJhbnNpdGlvbjogMC4ycyBjdWJpYy1iZXppZXIoMC42NSwgMC4wNSwgMC4zNiwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnRhYmxlLXRhZ3Mge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gIC5zcGlubmVyLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgfVxuYDtcblxuY29uc3QgQ29udGVudCA9IHN0eWxlZC5kaXZgXG4gIEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gIH1cblxuICBoMSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICBwYWRkaW5nOiA2MHB4IDYwcHg7XG5gO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGVBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGlCQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxrQkFBQSxHQUFBVCxPQUFBO0FBRUEsSUFBQVUsUUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsYUFBQSxHQUFBWCxPQUFBO0FBQTBELElBQUFZLGNBQUEsR0FBQVosT0FBQTtBQUFBLElBQUFhLFVBQUEsR0FBQWIsT0FBQTtBQUcxRCxJQUFBYyx3QkFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsZ0JBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQixJQUFBLEdBQUFoQixPQUFBO0FBQ0EsSUFBQWlCLFdBQUEsR0FBQWpCLE9BQUE7QUFDQSxJQUFBa0IsS0FBQSxHQUFBbEIsT0FBQTtBQUNBLElBQUFtQixlQUFBLEdBQUFqQixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQW9CLFlBQUEsR0FBQWxCLHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBcUIsU0FBQSxHQUFBbkIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFzQixlQUFBLEdBQUFwQixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQXVCLE1BQUEsR0FBQXJCLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBd0IsU0FBQSxHQUFBdEIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUF5QixvQkFBQSxHQUFBekIsT0FBQTtBQUNBLElBQUEwQixRQUFBLEdBQUExQixPQUFBO0FBQ0EsSUFBQTJCLGNBQUEsR0FBQTNCLE9BQUE7QUFDQSxJQUFBNEIsY0FBQSxHQUFBMUIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUE2QixNQUFBLEdBQUE3QixPQUFBO0FBQ0EsSUFBTThCLG1CQUFtQixHQUFHLEVBQUU7QUFDOUIsSUFBTUMsMEJBQTBCLEdBQUcsMkJBQTJCO0FBRXZELElBQU1DLFdBQVcsR0FBRyxHQUFHO0FBQUNDLE9BQUEsQ0FBQUQsV0FBQSxHQUFBQSxXQUFBO0FBQ3hCLElBQU1FLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUEsRUFBUztFQUNwQyxJQUFNQyxPQUFPLEdBQUcsU0FBVkEsT0FBT0EsQ0FBQSxFQUFTO0lBQ3BCLE9BQU9DLEtBQUssQ0FBQ0MsR0FBRyxDQUFDLG9CQUFvQixDQUFDO0VBQ3hDLENBQUM7RUFDRCxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBSUMsVUFBVSxFQUFLO0lBQy9CLGdDQUFBQyxNQUFBLENBQWdDRCxVQUFVLDBCQUFBQyxNQUFBLENBQXVCTCxPQUFPLENBQUMsQ0FBQyxXQUFBSyxNQUFBLENBQVFDLE1BQU0sQ0FBQyxDQUFDO0VBQzVGLENBQUM7RUFDRCxJQUFNQyxZQUFZLEdBQUcsQ0FDbkJDLGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLGlDQUFpQyxDQUFDLEVBQ3pDRCxhQUFJLENBQUNDLENBQUMsQ0FBQywwQ0FBMEMsQ0FBQyxDQUNuRDtFQUNELElBQU1DLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBcUJBLENBQUlDLFFBQWdCLEVBQUs7SUFDbEQsSUFBSUEsUUFBUSxLQUFLSCxhQUFJLENBQUNDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFFO01BQzFELE9BQU8sTUFBTTtJQUNmLENBQUMsTUFBTSxJQUNMRSxRQUFRLEtBQUtILGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLEVBQy9EO01BQ0EsT0FBTyxXQUFXO0lBQ3BCO0lBRUEsT0FBTyxNQUFNO0VBQ2YsQ0FBQztFQUNELElBQU1SLEtBQUssR0FBRyxJQUFBVyxvQkFBVyxFQUFDLENBQUM7RUFDM0IsSUFBTU4sTUFBTSxHQUFHLFNBQVRBLE1BQU1BLENBQUEsRUFBUztJQUNuQixPQUFPTCxLQUFLLENBQUNDLEdBQUcsQ0FBQyxLQUFLLENBQUM7RUFDekIsQ0FBQztFQUNELElBQU1XLFVBQVUsR0FDZFAsTUFBTSxDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUdFLGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEdBQUdILE1BQU0sQ0FBQyxDQUFDO0VBQ3ZFLElBQUFRLFNBQUEsR0FBc0MsSUFBQUMsZUFBUSxFQUFDLEVBQUUsQ0FBQztJQUFBQyxVQUFBLE9BQUFDLGVBQUEsQ0FBQUMsT0FBQSxFQUFBSixTQUFBO0lBQTNDSyxXQUFXLEdBQUFILFVBQUE7SUFBRUksY0FBYyxHQUFBSixVQUFBO0VBQ2xDLElBQUFLLFVBQUEsR0FBc0MsSUFBQU4sZUFBUSxFQUFTRixVQUFXLENBQUM7SUFBQVMsVUFBQSxPQUFBTCxlQUFBLENBQUFDLE9BQUEsRUFBQUcsVUFBQTtJQUE1REUsV0FBVyxHQUFBRCxVQUFBO0lBQUVFLGNBQWMsR0FBQUYsVUFBQTtFQUNsQyxJQUFBRyxVQUFBLEdBQWdDLElBQUFWLGVBQVEsRUFBUSxFQUFFLENBQUM7SUFBQVcsVUFBQSxPQUFBVCxlQUFBLENBQUFDLE9BQUEsRUFBQU8sVUFBQTtJQUE1Q0UsUUFBUSxHQUFBRCxVQUFBO0lBQUVFLFdBQVcsR0FBQUYsVUFBQTtFQUM1QixJQUFBRyxVQUFBLEdBQThCLElBQUFkLGVBQVEsRUFBUSxFQUFFLENBQUM7SUFBQWUsVUFBQSxPQUFBYixlQUFBLENBQUFDLE9BQUEsRUFBQVcsVUFBQTtJQUExQ0UsT0FBTyxHQUFBRCxVQUFBO0lBQUVFLFVBQVUsR0FBQUYsVUFBQTtFQUMxQixJQUFBRyxVQUFBLEdBQXdCLElBQUFsQixlQUFRLEVBQU0sRUFBRSxDQUFDO0lBQUFtQixXQUFBLE9BQUFqQixlQUFBLENBQUFDLE9BQUEsRUFBQWUsVUFBQTtJQUFsQ0UsSUFBSSxHQUFBRCxXQUFBO0lBQUVFLE9BQU8sR0FBQUYsV0FBQTtFQUNwQixJQUFBRyxXQUFBLEdBQXdCLElBQUF0QixlQUFRLEVBQVdSLFlBQVksQ0FBQztJQUFBK0IsV0FBQSxPQUFBckIsZUFBQSxDQUFBQyxPQUFBLEVBQUFtQixXQUFBO0lBQWpERSxJQUFJLEdBQUFELFdBQUE7SUFBRUUsT0FBTyxHQUFBRixXQUFBO0VBQ3BCLElBQUFHLFdBQUEsR0FBc0MsSUFBQTFCLGVBQVEsRUFBU3dCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFBRyxXQUFBLE9BQUF6QixlQUFBLENBQUFDLE9BQUEsRUFBQXVCLFdBQUE7SUFBeERFLFdBQVcsR0FBQUQsV0FBQTtJQUFFRSxjQUFjLEdBQUFGLFdBQUE7RUFDbEMsSUFBQUcsY0FBQSxHQUEwQyxJQUFBQyx1QkFBYSxFQUNyRDNDLFFBQVEsQ0FBQ08scUJBQXFCLENBQUNpQyxXQUFXLENBQUMsQ0FDN0MsQ0FBQztJQUZPSSxJQUFJLEdBQUFGLGNBQUEsQ0FBSkUsSUFBSTtJQUFFQyxVQUFVLEdBQUFILGNBQUEsQ0FBVkcsVUFBVTtJQUFFQyxXQUFXLEdBQUFKLGNBQUEsQ0FBWEksV0FBVztFQUlyQyxJQUFNQyxRQUFRLEdBQUcsSUFBQUMsdUJBQVcsRUFBQyxDQUFDO0VBQzlCLElBQU1DLFVBQVUsR0FBRyxJQUFBQyx1QkFBVyxFQUM1QixVQUFDQyxLQUFvQztJQUFBLE9BQUtBLEtBQUssQ0FBQ0MsZ0JBQWdCLENBQUNILFVBQVU7RUFBQSxDQUM3RSxDQUFDO0VBQ0QsSUFBTUksVUFBVSxHQUFHLElBQUFILHVCQUFXLEVBQzVCLFVBQUNDLEtBQW9DO0lBQUEsT0FBS0EsS0FBSyxDQUFDRyxXQUFXO0VBQUEsQ0FDN0QsQ0FBQztFQUNELElBQU1DLEtBQWMsR0FBR04sVUFBVSxDQUFDTyxNQUFNLEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLO0VBQ2hFLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFJQyxHQUFHLEVBQUs7SUFDM0IsSUFBSUMsT0FBTztJQUNYLElBQUksQ0FBQ0QsR0FBRyxDQUFDRSxhQUFhLEVBQUU7TUFDdEJELE9BQU8sR0FBRyxtQkFBbUI7SUFDL0IsQ0FBQyxNQUFNLElBQUlFLFVBQVUsQ0FBQ0gsR0FBRyxDQUFDSSxHQUFHLENBQUMsRUFBRTtNQUM5QkgsT0FBTyxHQUFHLFVBQVU7SUFDdEIsQ0FBQyxNQUFNO01BQ0xBLE9BQU8sR0FBRyxPQUFPO0lBQ25CO0lBRUEsb0JBQUF6RCxNQUFBLENBQW9CeUQsT0FBTztFQUM3QixDQUFDO0VBQ0QsSUFBTUksT0FBWSxHQUFHQyxjQUFLLENBQUNDLE9BQU8sQ0FDaEM7SUFBQSxPQUFNLENBQ0o7TUFDRUMsSUFBSSxFQUFFN0QsYUFBSSxDQUFDQyxDQUFDLENBQUMsK0JBQStCLENBQUM7TUFDN0M2RCxRQUFRLEVBQUUsU0FBQUEsU0FBQ1QsR0FBRztRQUFBLE9BQUtBLEdBQUcsQ0FBQ1EsSUFBSTtNQUFBO01BQzNCRSxRQUFRLEVBQUUsSUFBSTtNQUNkQyxJQUFJLEVBQUUsU0FBQUEsS0FBQ1gsR0FBeUQ7UUFBQSxvQkFDOURsRyxNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBLENBQUNDLE9BQU87VUFBQ2hCLEtBQUssRUFBRUE7UUFBTSxnQkFDcEIvRixNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBO1VBQ0UsWUFBUyxnQkFBZ0I7VUFDekJFLFNBQVMsY0FBQXRFLE1BQUEsQ0FBY3VELFdBQVcsQ0FBQ0MsR0FBRyxDQUFDLENBQUc7VUFDMUNlLE9BQU8sRUFBRSxTQUFBQSxRQUFBLEVBQU07WUFDYkMsZUFBZSxDQUFDaEIsR0FBRyxDQUFDO1VBQ3RCO1FBQUUsZ0JBRUZsRyxNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBO1VBQUtFLFNBQVMsRUFBRTtRQUFrQixnQkFDaENoSCxNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBLGVBQ0daLEdBQUcsQ0FBQ2lCLFlBQVksaUJBQUluSCxNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBLENBQUNoRyxjQUFBLENBQUFzRyxjQUFhLE1BQUUsQ0FBQyxFQUNyQyxDQUFDbEIsR0FBRyxDQUFDaUIsWUFBWSxpQkFBSW5ILE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUEsQ0FBQy9GLFVBQUEsQ0FBQXFHLGNBQVMsTUFBRSxDQUM5QixDQUNILENBQUMsZUFDTnBILE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUE7VUFBTUUsU0FBUyxFQUFFO1FBQU8sZ0JBQ3RCaEgsTUFBQSxDQUFBdUQsT0FBQSxDQUFBdUQsYUFBQSxDQUFDcEYsU0FBQSxDQUFBNkIsT0FBUTtVQUFDOEQsVUFBVSxFQUFFLENBQUU7VUFBQ0MsZ0JBQWdCLEVBQUU7UUFBSyxHQUM3Q3BCLEdBQUcsQ0FBQ1EsSUFDRyxDQUNOLENBQ0gsQ0FDRSxDQUFDO01BQUE7SUFFZCxDQUFDLEVBQ0Q7TUFDRUEsSUFBSSxFQUFFN0QsYUFBSSxDQUFDQyxDQUFDLENBQUMsb0NBQW9DLENBQUM7TUFDbEQ2RCxRQUFRLEVBQUUsU0FBQUEsU0FBQ1QsR0FBRztRQUFBLE9BQUtBLEdBQUcsQ0FBQ0ksR0FBRztNQUFBO01BQzFCTSxRQUFRLEVBQUUsSUFBSTtNQUNkQyxJQUFJLEVBQUUsU0FBQUEsS0FBQ1gsR0FBb0I7UUFBQSxvQkFDekJsRyxNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBO1VBQ0UsWUFBUyxnQkFBZ0I7VUFDekJTLEtBQUssRUFBRTtZQUNMQyxTQUFTLEVBQUUsUUFBUTtZQUNuQkMsS0FBSyxFQUFFO1VBQ1Q7UUFBRSxHQUVEdkIsR0FBRyxDQUFDSSxHQUNGLENBQUM7TUFBQTtJQUVWLENBQUMsRUFDRDtNQUNFSSxJQUFJLEVBQUU3RCxhQUFJLENBQUNDLENBQUMsQ0FBQyx3REFBd0QsQ0FBQztNQUN0RTZELFFBQVEsRUFBRSxTQUFBQSxTQUFDVCxHQUFHO1FBQUEsT0FBS0EsR0FBRyxDQUFDd0IsVUFBVTtNQUFBO01BQ2pDZCxRQUFRLEVBQUUsSUFBSTtNQUNkQyxJQUFJLEVBQUUsU0FBQUEsS0FBQ1gsR0FBMkI7UUFBQSxvQkFDaENsRyxNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBO1VBQ0UsWUFBUyxnQkFBZ0I7VUFDekJTLEtBQUssRUFBRTtZQUNMSSxTQUFTLEVBQUU7VUFDYjtRQUFFLGdCQUVGM0gsTUFBQSxDQUFBdUQsT0FBQSxDQUFBdUQsYUFBQTtVQUFNUyxLQUFLLEVBQUU7WUFBRUssS0FBSyxFQUFFLFNBQVM7WUFBRUMsTUFBTSxFQUFFO1VBQVE7UUFBRSxHQUNoRDNCLEdBQUcsQ0FBQ3dCLFVBQVUsRUFBQyxHQUNaLENBQUMsZUFHTDFILE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUEsQ0FBQ3JHLGlCQUFBLENBQUFxSCxlQUFlO1VBQ2RDLElBQUksRUFBRTdCLEdBQUcsQ0FBQ3dCLFVBQVUsR0FBRyxDQUFDLEdBQUdNLDhCQUFXLEdBQUdDO1FBQWMsQ0FDeEQsQ0FFQSxDQUFDO01BQUE7SUFFVixDQUFDLEVBQ0Q7TUFDRXZCLElBQUksRUFBRTdELGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLHVDQUF1QyxDQUFDO01BQ3JENkQsUUFBUSxFQUFFLGNBQWM7TUFDeEJDLFFBQVEsRUFBRSxTQUFBQSxTQUFDVixHQUFHO1FBQUEsT0FBS0EsR0FBRyxDQUFDZ0MsWUFBWTtNQUFBO01BQ25DckIsSUFBSSxFQUFFLFNBQUFBLEtBQUNYLEdBQTZCO1FBQUEsb0JBQ2xDbEcsTUFBQSxDQUFBdUQsT0FBQSxDQUFBdUQsYUFBQTtVQUFLLFlBQVM7UUFBZ0IsR0FDM0JaLEdBQUcsQ0FBQ2dDLFlBQVksS0FBSyxJQUFJLEdBQ3RCLEdBQUcsR0FDSCxJQUFJQyxJQUFJLENBQUNqQyxHQUFHLENBQUNnQyxZQUFZLENBQUMsQ0FBQ0Usa0JBQWtCLENBQUMsT0FBTyxDQUN0RCxDQUFDO01BQUE7SUFFVixDQUFDLEVBQ0Q7TUFDRTFCLElBQUksRUFBRTdELGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLHNDQUFzQyxDQUFDO01BQ3BENkQsUUFBUSxFQUFFLGFBQWE7TUFDdkJDLFFBQVEsRUFBRSxJQUFJO01BQ2RDLElBQUksRUFBRSxTQUFBQSxLQUFDWCxHQUFtQjtRQUFBLG9CQUN4QmxHLE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUE7VUFBSyxZQUFTO1FBQWdCLGdCQUM1QjlHLE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUEsQ0FBQ3BHLGFBQUEsQ0FBQTJILFlBQVk7VUFBQ25DLEdBQUcsRUFBRUEsR0FBSTtVQUFDb0Msa0JBQWtCLEVBQUVqRyxPQUFPLENBQUM7UUFBRSxDQUFFLENBQ3JELENBQUM7TUFBQTtJQUVWLENBQUMsRUFDRDtNQUNFcUUsSUFBSSxFQUFFN0QsYUFBSSxDQUFDQyxDQUFDLENBQUMsOEJBQThCLENBQUM7TUFDNUM2RCxRQUFRLEVBQUUsU0FBQUEsU0FBQ1QsR0FBRztRQUFBLE9BQUtBLEdBQUcsQ0FBQ3FDLElBQUk7TUFBQTtNQUMzQjNCLFFBQVEsRUFBRSxJQUFJO01BQ2RDLElBQUksRUFBRSxTQUFBQSxLQUFDWCxHQUFrQjtRQUFBLG9CQUN2QmxHLE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUE7VUFBSyxZQUFTLGdCQUFnQjtVQUFDRSxTQUFTLEVBQUU7UUFBYSxHQUNwRGQsR0FBRyxDQUFDcUMsSUFBSSxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUNoQixDQUFDO01BQUE7SUFFVixDQUFDLEVBQ0Q7TUFDRTlCLElBQUksRUFBRTdELGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDO01BQ25ENkQsUUFBUSxFQUFFLFNBQUFBLFNBQUNULEdBQUc7UUFBQSxPQUFLQSxHQUFHLENBQUN1QyxVQUFVO01BQUE7TUFDakM3QixRQUFRLEVBQUUsSUFBSTtNQUNkQyxJQUFJLEVBQUUsU0FBQUEsS0FBQ1gsR0FBMkI7UUFBQSxvQkFDaENsRyxNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBO1VBQUssWUFBUztRQUFnQixHQUMzQixJQUFBNEIsd0JBQVUsRUFBQ0MsUUFBUSxDQUFDekMsR0FBRyxDQUFDdUMsVUFBVSxDQUFDLENBQ2pDLENBQUM7TUFBQTtJQUVWLENBQUMsQ0FDRjtFQUFBLEdBQ0QsQ0FBQzFDLEtBQUssQ0FDUixDQUFDO0VBRUQsSUFBTTZDLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUlDLEtBQUssRUFBSztJQUNwQyxJQUFNQyxlQUFlLEdBQUdELEtBQUssQ0FBQ0UsR0FBRyxDQUFDLFVBQUNDLENBQU0sRUFBSztNQUM1Q0EsQ0FBQyxDQUFDQyxrQkFBa0IsR0FBR0QsQ0FBQyxDQUFDdEMsSUFBSTtNQUM3QnNDLENBQUMsQ0FBQ0Usc0JBQXNCLEdBQUcsSUFBSTtNQUUvQixJQUFJLENBQUNGLENBQUMsQ0FBQzVDLGFBQWEsRUFBRTtRQUNwQjRDLENBQUMsQ0FBQ3BCLEtBQUssR0FBR3VCLFlBQUssQ0FBQ0MsV0FBVyxDQUFDQyxPQUFPLENBQUNDLEdBQUc7UUFDdkMsT0FBT04sQ0FBQztNQUNWO01BRUEsSUFBSTNDLFVBQVUsQ0FBQzJDLENBQUMsQ0FBQzFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3JCMEMsQ0FBQyxDQUFDcEIsS0FBSyxHQUFHdUIsWUFBSyxDQUFDQyxXQUFXLENBQUNoRSxJQUFJLENBQUNtRSxJQUFJO1FBQ3JDLE9BQU9QLENBQUM7TUFDVixDQUFDLE1BQU07UUFDTEEsQ0FBQyxDQUFDcEIsS0FBSyxHQUFHdUIsWUFBSyxDQUFDQyxXQUFXLENBQUNoRSxJQUFJLENBQUNvRSxJQUFJO1FBQ3JDLE9BQU9SLENBQUM7TUFDVjtJQUNGLENBQUMsQ0FBQztJQUVGL0UsV0FBVyxDQUFDNkUsZUFBZSxDQUFDO0VBQzlCLENBQUM7RUFFRCxJQUFNVyxVQUFVLEdBQUcsU0FBYkEsVUFBVUEsQ0FBSUMsSUFBSSxFQUFLO0lBQzNCQSxJQUFJLENBQUNDLFVBQVUsS0FBS0MsU0FBUyxJQUFJdkYsVUFBVSxDQUFDcUYsSUFBSSxDQUFDQyxVQUFVLENBQUM7RUFDOUQsQ0FBQztFQUVELElBQU1FLFlBQVksR0FBRyxTQUFmQSxZQUFZQSxDQUFJekUsSUFBSSxFQUFLO0lBQzdCLElBQU0wRSxTQUFTLEdBQUcxRSxJQUFJLENBQUMyRCxHQUFHLENBQUMsVUFBQ2dCLEtBQUssRUFBSztNQUNwQyxPQUFPQSxLQUFLLENBQUNKLFVBQVU7SUFDekIsQ0FBQyxDQUFDO0lBRUZ0RixVQUFVLENBQUN5RixTQUFTLENBQUM7RUFDdkIsQ0FBQztFQUVELElBQU16RCxVQUFVLEdBQUcsU0FBYkEsVUFBVUEsQ0FBSUMsR0FBVyxFQUFLO0lBQ2xDLElBQUksSUFBQTBELHlCQUFRLEVBQUMxRCxHQUFHLENBQUMsS0FBSyxPQUFPLEVBQUU7TUFDN0IsT0FBTyxLQUFLO0lBQ2QsQ0FBQyxNQUFNLElBQ0wsSUFBQTBELHlCQUFRLEVBQUMxRCxHQUFHLENBQUMsS0FBSyxLQUFLLElBQ3ZCLElBQUEwRCx5QkFBUSxFQUFDMUQsR0FBRyxDQUFDLEtBQUssUUFBUSxJQUMxQixJQUFBMEQseUJBQVEsRUFBQzFELEdBQUcsQ0FBQyxLQUFLLE1BQU0sRUFDeEI7TUFDQSxPQUFPLElBQUk7SUFDYjtJQUVBO0VBQ0YsQ0FBQztFQUNELElBQU0yRCxPQUFPLEdBQUcsSUFBQUMsMEJBQVUsRUFBQyxDQUFDO0VBQzVCLElBQU1DLGdCQUFnQixHQUFHLElBQUF6RSx1QkFBVyxFQUNsQyxVQUFDQyxLQUFvQztJQUFBLE9BQ25DQSxLQUFLLENBQUNHLFdBQVcsQ0FBQ3FFLGdCQUFnQjtFQUFBLENBQ3RDLENBQUM7RUFFRCxJQUFNQyxHQUFjLEdBQ2xCM0UsVUFBVSxDQUFDTyxNQUFNLEtBQUssSUFBSSxHQUFHcUUsa0NBQVMsQ0FBQ0MsR0FBRyxHQUFHRCxrQ0FBUyxDQUFDRSxHQUFHO0VBRTVELElBQU1oQyxJQUFJLEdBQUcsQ0FDWDFGLGFBQUksQ0FBQ0MsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLEdBQUcsR0FBRyxFQUM1QyxVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsQ0FDWDtFQUVELElBQU0wSCx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUFJQyxJQUFZLEVBQUs7SUFDaEQsSUFBSUMsT0FBTyxHQUFHbEgsV0FBVyxDQUFDbUgsTUFBTSxDQUFDLFVBQVVDLEVBQU8sRUFBRTtNQUNsRCxPQUFPQSxFQUFFLENBQUNsRSxJQUFJLENBQUNtRSxXQUFXLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUNMLElBQUksQ0FBQ0ksV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUM7SUFFRnBHLE9BQU8sQ0FBQ2lHLE9BQU8sQ0FBQztFQUNsQixDQUFDO0VBRUQsSUFBTUssaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSUMsUUFBUSxFQUFFOUUsR0FBRyxFQUFLO0lBQzNDOEUsUUFBUSxJQUFJdkIsVUFBVSxDQUFDdkQsR0FBRyxDQUFDO0lBQzNCLENBQUM4RSxRQUFRLElBQUluQixZQUFZLENBQUN6RSxJQUFJLENBQUM7RUFDakMsQ0FBQztFQUVELElBQU02RixrQkFBa0IsR0FBRyxJQUFBdkYsdUJBQVcsRUFDcEMsVUFBQ0MsS0FBSztJQUFBLE9BQUtBLEtBQUssQ0FBQ0csV0FBVyxDQUFDbUYsa0JBQWtCO0VBQUEsQ0FDakQsQ0FBQztFQUVELElBQU1DLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLEdBQUcsRUFBSztJQUNwQyxJQUFBQyx5QkFBYyxFQUFDLHdDQUF3QyxFQUFFO01BQ3ZERCxHQUFHLEVBQUVBLEdBQUc7TUFDUkUsWUFBWSxFQUFFSjtJQUNoQixDQUFDLENBQUM7SUFDRnBILGNBQWMsQ0FBQ3NILEdBQUcsQ0FBQztJQUNuQmxCLE9BQU8sQ0FBQ3FCLElBQUksZ0NBQUE1SSxNQUFBLENBQ3FCK0MsVUFBVSxDQUFDTyxNQUFNLDBCQUFBdEQsTUFBQSxDQUF1QnlILGdCQUFnQixXQUFBekgsTUFBQSxDQUFReUksR0FBRyxDQUNwRyxDQUFDO0VBQ0gsQ0FBQztFQUVELElBQU1JLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLEdBQUcsRUFBSztJQUNwQ2xHLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDakJtRyxjQUFLLENBQUNsSixHQUFHLENBQUNDLFFBQVEsQ0FBQ2dKLEdBQUcsQ0FBQyxDQUFDLENBQUNFLElBQUksQ0FBQyxVQUFDQyxRQUFRLEVBQUs7TUFDMUMsSUFBSUMsWUFBWSxHQUFHRCxRQUFRLENBQUN2RyxJQUFJLENBQUNBLElBQUk7TUFFckNFLFdBQVcsQ0FBQyxLQUFLLENBQUM7TUFDbEJULE9BQU8sQ0FBQ2pDLFlBQVksQ0FBQztNQUNyQjZCLE9BQU8sQ0FBQ21ILFlBQVksQ0FBQztNQUNyQm5JLGNBQWMsQ0FBQ21JLFlBQVksQ0FBQztNQUM1QmhELGtCQUFrQixDQUFDZ0QsWUFBWSxDQUFDO01BQ2hDL0IsWUFBWSxDQUFDK0IsWUFBWSxDQUFDO0lBQzVCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxJQUFNQyx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUFJTCxHQUFHLEVBQUs7SUFDdkMsSUFBSSxDQUFDbkcsVUFBVSxFQUFFO01BQ2ZKLGNBQWMsQ0FBQ3VHLEdBQUcsQ0FBQztNQUVuQixJQUFJQSxHQUFHLEtBQUszSSxhQUFJLENBQUNDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFFO1FBQ3JEMEksR0FBRyxHQUNEQSxHQUFHLEtBQUszSSxhQUFJLENBQUNDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxHQUM3QyxNQUFNLEdBQ04wSSxHQUFHLEtBQUszSSxhQUFJLENBQUNDLENBQUMsQ0FBQywwQ0FBMEMsQ0FBQyxHQUMxRCxXQUFXLEdBQ1gsRUFBRTtRQUVSeUksb0JBQW9CLENBQUNDLEdBQUcsQ0FBQztNQUMzQjtJQUNGO0VBQ0YsQ0FBQztFQUVELElBQU1NLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBcUJBLENBQUlILFFBQVEsRUFBSztJQUMxQyxJQUFJdkcsSUFBSSxHQUFHdUcsUUFBUSxDQUFDdkcsSUFBSSxDQUFDQSxJQUFJO0lBQzdCWCxPQUFPLENBQUNXLElBQUksQ0FBQztJQUNiM0IsY0FBYyxDQUFDMkIsSUFBSSxDQUFDO0lBQ3BCd0Qsa0JBQWtCLENBQUN4RCxJQUFJLENBQUM7SUFDeEJ5RSxZQUFZLENBQUN6RSxJQUFJLENBQUM7RUFDcEIsQ0FBQztFQUVELElBQU04QixlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUl3QyxJQUFJLEVBQUs7SUFDaENELFVBQVUsQ0FBQ0MsSUFBSSxDQUFDO0lBRWhCLElBQUlBLElBQUksQ0FBQ3ZDLFlBQVksRUFBRTtNQUNyQnRDLE9BQU8sSUFBQW5DLE1BQUEsS0FBQXFKLG1CQUFBLENBQUF4SSxPQUFBLEVBQUtxQixJQUFJLElBQUUvQixhQUFJLENBQUNDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFDLENBQUM7TUFDN0RtQyxjQUFjLENBQUNwQyxhQUFJLENBQUNDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO01BRXpEMkksY0FBSyxDQUFDbEosR0FBRyxDQUFDQyxRQUFRLENBQUNrSCxJQUFJLENBQUNzQyxFQUFFLENBQUMsQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBQ0MsUUFBUSxFQUFLO1FBQzlDRyxxQkFBcUIsQ0FBQ0gsUUFBUSxDQUFDO01BQ2pDLENBQUMsQ0FBQztJQUNKO0VBQ0YsQ0FBQztFQUVELElBQU1NLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUEsRUFBUztJQUNoQ3hJLGNBQWMsQ0FBQzJCLElBQUksQ0FBQztJQUNwQlgsT0FBTyxDQUFDVyxJQUFJLENBQUM7SUFDYixJQUFBZ0cseUJBQWMsRUFBQyxtQkFBbUIsRUFBRTtNQUNsQ0MsWUFBWSxFQUFFSjtJQUNoQixDQUFDLENBQUM7SUFDRjFGLFFBQVEsQ0FBQyxJQUFBMkcseUJBQWdCLEVBQUM7TUFBRXhGLElBQUksRUFBRTtJQUFnQixDQUFDLENBQUMsQ0FBQztJQUNyRGtDLGtCQUFrQixDQUFDeEQsSUFBSSxDQUFDO0lBQ3hCeUUsWUFBWSxDQUFDekUsSUFBSSxDQUFDO0VBQ3BCLENBQUM7RUFFRCxJQUFBK0csZ0JBQVMsRUFBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDOUcsVUFBVSxJQUFJRCxJQUFJLEtBQUssSUFBSSxFQUFFO01BQ2hDNkcsbUJBQW1CLENBQUMsQ0FBQztJQUN2QjtFQUNGLENBQUMsRUFBRSxDQUFDNUcsVUFBVSxFQUFFekIsV0FBVyxFQUFFd0IsSUFBSSxDQUFDLENBQUM7RUFFbkMsb0JBQ0VwRixNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBLENBQUE5RyxNQUFBLENBQUF1RCxPQUFBLENBQUE2SSxRQUFBLHFCQUNFcE0sTUFBQSxDQUFBdUQsT0FBQSxDQUFBdUQsYUFBQSxDQUFDdUYsT0FBTyxxQkFDTnJNLE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUEsMkJBQ0U5RyxNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBLGFBQUtqRSxhQUFJLENBQUNDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBTSxDQUFDLGVBQ3hEOUMsTUFBQSxDQUFBdUQsT0FBQSxDQUFBdUQsYUFBQSxDQUFDd0YsZ0JBQWdCLFFBQ2RuQyxnQkFBZ0IsS0FBS2pJLFdBQVcsaUJBQy9CbEMsTUFBQSxDQUFBdUQsT0FBQSxDQUFBdUQsYUFBQSxDQUFDdEYsZUFBQSxDQUFBK0IsT0FBYztJQUNieUksRUFBRSxFQUFDLHVCQUF1QjtJQUMxQmhGLFNBQVMsRUFBRSxxQkFBc0I7SUFDakN1RixLQUFLLEVBQUUzSSxXQUFXLEdBQUcsR0FBSTtJQUN6QjRJLE9BQU8sRUFBQztFQUFXLEdBRWxCakUsSUFBSSxDQUFDUSxHQUFHLENBQUMsVUFBQ29DLEdBQUcsRUFBSztJQUNqQixvQkFDRW5MLE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUEsQ0FBQ3ZGLFNBQUEsQ0FBQWdDLE9BQVEsQ0FBQ2tKLElBQUk7TUFDWkMsSUFBSSxFQUFDLEdBQUc7TUFDUnpGLE9BQU8sRUFBRSxTQUFBQSxRQUFBO1FBQUEsT0FBTWlFLG9CQUFvQixDQUFDQyxHQUFHLENBQUM7TUFBQSxDQUFDO01BQ3pDNUQsS0FBSyxFQUFFO1FBQ0xDLFNBQVMsRUFDUC9CLFVBQVUsQ0FBQ08sTUFBTSxLQUFLLElBQUksR0FBRyxPQUFPLEdBQUc7TUFDM0M7SUFBRSxHQUVEbUYsR0FDWSxDQUFDO0VBRXBCLENBQUMsQ0FDYSxDQUVGLENBQ2YsQ0FBQyxlQUNObkwsTUFBQSxDQUFBdUQsT0FBQSxDQUFBdUQsYUFBQSxDQUFDNkYsWUFBWSxxQkFDWDNNLE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUEsQ0FBQ2pGLGNBQUEsQ0FBQStLLGFBQWE7SUFBQ3pDLGdCQUFnQixFQUFFQSxnQkFBaUI7SUFBQ3BFLEtBQUssRUFBRUE7RUFBTSxDQUFFLENBQ3RELENBQUMsZUFFZi9GLE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUEsQ0FBQytGLGFBQWEscUJBQ1o3TSxNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBLENBQUN0RyxZQUFBLENBQUFzTSxXQUFXO0lBQUNDLGdCQUFnQixFQUFFdkM7RUFBd0IsQ0FBRSxDQUFDLGVBQzFEeEssTUFBQSxDQUFBdUQsT0FBQSxDQUFBdUQsYUFBQTtJQUFLRSxTQUFTLEVBQUU7RUFBaUIsZ0JBQy9CaEgsTUFBQSxDQUFBdUQsT0FBQSxDQUFBdUQsYUFBQSxDQUFDMUYsS0FBQSxDQUFBNEwsSUFBSTtJQUNIcEksSUFBSSxFQUFFQSxJQUFLO0lBQ1hJLFdBQVcsRUFBRUEsV0FBWTtJQUN6QmlJLGFBQWEsRUFBRXBCO0VBQXdCLENBQ3hDLENBQ0UsQ0FBQyxlQUNON0wsTUFBQSxDQUFBdUQsT0FBQSxDQUFBdUQsYUFBQSxDQUFDb0csaUJBQWlCO0lBQUNuSCxLQUFLLEVBQUVBO0VBQU0sR0FDN0JWLFVBQVUsaUJBQUlyRixNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBLENBQUNsRixRQUFBLENBQUF1TCxPQUFPLE1BQUUsQ0FBQyxlQUMxQm5OLE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUE7SUFBS0UsU0FBUyxFQUFFO0VBQWdCLEdBQzdCLENBQUMzQixVQUFVLElBQUliLElBQUksS0FBSyxJQUFJLElBQUlKLE9BQU8sS0FBSyxJQUFJLGlCQUMvQ3BFLE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUEsQ0FBQ2hGLGNBQUEsQ0FBQXlCLE9BQWEscUJBQ1p2RCxNQUFBLENBQUF1RCxPQUFBLENBQUF1RCxhQUFBLENBQUM1RixJQUFBLENBQUFrTSxHQUFHO0lBQ0Z2RSxLQUFLLEVBQUU3RSxRQUFTO0lBQ2hCcUosY0FBYyxFQUFFakosT0FBUTtJQUN4QmtKLEtBQUssRUFBRSxFQUFHO0lBQ1ZDLE1BQU0sRUFBRSxFQUFHO0lBQ1hDLE1BQU0sRUFBRSxFQUFHO0lBQ1gxSCxXQUFXLEVBQUVELFVBQVc7SUFDeEI0SCxXQUFXLEVBQUV4TDtFQUEyQixDQUN6QyxDQUNZLENBRWQsQ0FBQyxFQUNMLENBQUNvRCxVQUFVLElBQUliLElBQUksS0FBSyxJQUFJLGlCQUMzQnhFLE1BQUEsQ0FBQXVELE9BQUEsQ0FBQXVELGFBQUEsQ0FBQzNGLFdBQUEsQ0FBQXVNLFVBQVU7SUFDVDNILEtBQUssRUFBRUEsS0FBTTtJQUNiNEgsa0JBQWtCLEVBQUU1QyxpQkFBa0I7SUFDdEMzRixJQUFJLEVBQUVaLElBQUs7SUFDWCtCLE9BQU8sRUFBRUEsT0FBUTtJQUNqQm9CLFNBQVMsRUFBRXlDLEdBQUk7SUFDZndELGNBQWMsRUFBRSxJQUFLO0lBQ3JCQyxpQkFBaUIsRUFBRTdMLG1CQUFvQjtJQUN2QzhMLFlBQVksRUFBRUMsc0NBQWtCO0lBQ2hDQyxrQkFBa0IsRUFBRTtFQUFFLENBQ3ZCLENBRWMsQ0FDTixDQUNSLENBQ1QsQ0FBQztBQUVQLENBQUM7QUFBQzdMLE9BQUEsQ0FBQUMsZ0JBQUEsR0FBQUEsZ0JBQUE7QUFFRixJQUFNMkUsT0FBTyxHQUFHa0gseUJBQU0sQ0FBQ0MsR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLHlkQWlDUGxGLFlBQUssQ0FBQ0MsV0FBVyxDQUFDQyxPQUFPLENBQUNDLEdBQUcsRUFFdEJILFlBQUssQ0FBQ0MsV0FBVyxDQUFDQyxPQUFPLENBQUNDLEdBQUcsRUFPM0MsVUFBQ2dGLENBQUM7RUFBQSxPQUFNQSxDQUFDLENBQUN2SSxLQUFLLEdBQUcsY0FBYyxHQUFHLGFBQWE7QUFBQSxDQUFDLENBTzFEO0FBRUgsSUFBTXVHLGdCQUFnQixHQUFHMkIseUJBQU0sQ0FBQ0MsR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLDhEQUlsQztBQUVELElBQU0xQixZQUFZLEdBQUdzQix5QkFBTSxDQUFDQyxHQUFHLENBQUFDLFVBQUE7RUFBQUMsV0FBQTtFQUFBQyxXQUFBO0FBQUEsNkJBRTlCO0FBRUQsSUFBTXhCLGFBQWEsR0FBR29CLHlCQUFNLENBQUNDLEdBQUcsQ0FBQUMsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSxtRkFLL0I7QUFFRCxJQUFNbkIsaUJBQWlCLEdBQUdlLHlCQUFNLENBQUNDLEdBQUcsQ0FBQUMsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSxpaUJBMENuQztBQUVELElBQU1oQyxPQUFPLEdBQUc0Qix5QkFBTSxDQUFDQyxHQUFHLENBQUFDLFVBQUE7RUFBQUMsV0FBQTtFQUFBQyxXQUFBO0FBQUEsc0ZBVXpCIn0=
|