From a05b85e2930e6e7242c8ab1683b0294aaf526a35 Mon Sep 17 00:00:00 2001 From: Bjarke Madsen <bjarke@nordu.net> Date: Tue, 11 Feb 2025 23:49:27 +0100 Subject: [PATCH] Use compendium alias instead of relative paths --- compendium-frontend/src/App.tsx | 116 +++++++++--------- compendium-frontend/src/Providers.tsx | 18 +-- .../src/components/DataPage.tsx | 26 ++-- .../src/components/NrenYearTable.tsx | 2 +- .../src/components/PillTable.tsx | 4 +- .../src/components/ScrollableMatrix.tsx | 2 +- .../src/components/ScrollableTable.tsx | 4 +- .../src/components/WithLegend.tsx | 2 +- .../components/download/DownloadContainer.tsx | 8 +- .../download/DownloadDataButton.tsx | 4 +- .../download/DownloadImageChartButton.tsx | 4 +- .../src/components/global/Banner.tsx | 2 +- .../components/global/ExternalPageNavBar.tsx | 4 +- .../src/components/global/GeantFooter.tsx | 4 +- .../src/components/global/PageHeader.tsx | 3 +- .../src/components/global/SectionLink.tsx | 2 +- .../components/graphing/ChartContainer.tsx | 2 +- .../src/components/graphing/Filter.tsx | 4 +- .../sections/ConnectedUsersLinks.tsx | 4 +- .../src/components/sections/NetworkLinks.tsx | 4 +- .../components/sections/OrganizationLinks.tsx | 4 +- .../src/components/sections/PolicyLinks.tsx | 4 +- .../src/components/sections/ServicesLinks.tsx | 4 +- .../sidebar/ConnectedUsersSidebar.tsx | 4 +- .../src/components/sidebar/NetworkSidebar.tsx | 4 +- .../sidebar/OrganizationSidebar.tsx | 4 +- .../src/components/sidebar/PolicySidebar.tsx | 4 +- .../components/sidebar/ServicesSidebar.tsx | 4 +- .../src/components/sidebar/SideBar.tsx | 2 +- .../src/helpers/dataconversion.tsx | 2 +- compendium-frontend/src/helpers/useConfig.tsx | 2 +- compendium-frontend/src/helpers/useData.ts | 4 +- compendium-frontend/src/helpers/usePreview.ts | 4 +- compendium-frontend/src/index.tsx | 4 +- .../src/matomo/MatomoProvider.tsx | 4 +- .../src/matomo/MatomoTracker.ts | 4 +- .../src/matomo/PrivacyModal.tsx | 2 +- compendium-frontend/src/matomo/UseMatomo.ts | 4 +- .../src/pages/CompendiumData.tsx | 22 ++-- .../ConnectedInstitutionsURLs.tsx | 20 +-- .../pages/ConnectedUsers/ConnectedUser.tsx | 20 +-- .../pages/ConnectedUsers/RemoteCampuses.tsx | 20 +-- compendium-frontend/src/pages/Landing.tsx | 6 +- .../src/pages/Network/AlienWave.tsx | 20 +-- .../src/pages/Network/AlienWaveInternal.tsx | 20 +-- .../src/pages/Network/Automation.tsx | 20 +-- .../src/pages/Network/CapacityCoreIP.tsx | 20 +-- .../src/pages/Network/CapacityLargestLink.tsx | 20 +-- .../src/pages/Network/CertificateProvider.tsx | 20 +-- .../src/pages/Network/DarkFibreInstalled.tsx | 20 +-- .../src/pages/Network/DarkFibreLease.tsx | 20 +-- .../src/pages/Network/ExternalConnections.tsx | 20 +-- .../src/pages/Network/FibreLight.tsx | 20 +-- .../src/pages/Network/IRUDuration.tsx | 20 +-- .../src/pages/Network/MonitoringTools.tsx | 20 +-- .../Network/NetworkFunctionVirtualisation.tsx | 20 +-- .../src/pages/Network/NetworkMapUrls.tsx | 20 +-- .../src/pages/Network/NonRAndEPeer.tsx | 20 +-- .../src/pages/Network/OPsAutomation.tsx | 20 +-- .../src/pages/Network/PassiveMonitoring.tsx | 20 +-- .../src/pages/Network/PertTeam.tsx | 20 +-- .../src/pages/Network/SiemVendors.tsx | 20 +-- .../src/pages/Network/TrafficRatio.tsx | 20 +-- .../src/pages/Network/TrafficUrl.tsx | 20 +-- .../src/pages/Network/TrafficVolume.tsx | 20 +-- .../src/pages/Network/WeatherMap.tsx | 20 +-- .../src/pages/Organization/Budget.tsx | 20 +-- .../pages/Organization/ChargingStructure.tsx | 20 +-- .../src/pages/Organization/ECProjects.tsx | 18 +-- .../src/pages/Organization/FundingSource.tsx | 20 +-- .../pages/Organization/ParentOrganisation.tsx | 18 +-- .../src/pages/Organization/StaffGraph.tsx | 20 +-- .../pages/Organization/StaffGraphAbsolute.tsx | 20 +-- .../pages/Organization/SubOrganisation.tsx | 20 +-- .../src/pages/Services/Services.tsx | 20 +-- .../src/pages/Standards&Policies/Audits.tsx | 20 +-- .../Standards&Policies/BusinessContinuity.tsx | 20 +-- .../Standards&Policies/CentralProcurement.tsx | 20 +-- .../Standards&Policies/CorporateStrategy.tsx | 20 +-- .../Standards&Policies/CrisisExercises.tsx | 20 +-- .../Standards&Policies/CrisisManagement.tsx | 20 +-- .../pages/Standards&Policies/EOSCListings.tsx | 20 +-- .../src/pages/Standards&Policies/Policy.tsx | 20 +-- .../Standards&Policies/SecurityControls.tsx | 20 +-- .../ServiceLevelTargets.tsx | 20 +-- .../ServiceManagementFramework.tsx | 20 +-- .../Standards&Policies/ServicesOffered.tsx | 22 ++-- .../src/providers/FilterSelectionProvider.tsx | 2 +- .../src/providers/NrenProvider.tsx | 2 +- .../src/providers/UserProvider.tsx | 2 +- compendium-frontend/src/survey/Landing.tsx | 10 +- .../src/survey/SurveyComponent.tsx | 2 +- .../src/survey/SurveyContainerComponent.tsx | 18 +-- .../src/survey/SurveyNavigationComponent.tsx | 4 +- compendium-frontend/src/survey/api/survey.ts | 2 +- .../management/SurveyManagementComponent.tsx | 12 +- .../src/survey/management/SurveySidebar.tsx | 5 +- .../management/UserManagementComponent.tsx | 8 +- compendium-frontend/src/survey/utils.ts | 2 +- compendium-frontend/tsconfig.json | 2 +- compendium-frontend/vite.config.ts | 2 +- ...Wave-DhaC80F-.js => AlienWave-AJrmdFtI.js} | 2 +- ...aDpIY.js => AlienWaveInternal-BkYZMjCR.js} | 2 +- ...{Audits-BldRnziS.js => Audits-CuvZdHfU.js} | 2 +- ...ion-BAaw7w82.js => Automation-DItliT93.js} | 2 +- ...{Budget-BVbbdsI6.js => Budget-BD3tWhAz.js} | 2 +- ...4Vxm.js => BusinessContinuity-MvRfhQYb.js} | 2 +- ...CjzYJH11.js => CapacityCoreIP-BYeiJxnz.js} | 2 +- ...Jtj.js => CapacityLargestLink-Bov4w9OF.js} | 2 +- ...5cDY.js => CentralProcurement-CnLdUN2O.js} | 2 +- ...rmz.js => CertificateProvider-C0MtpALT.js} | 2 +- ...HlJZ3.js => ChargingStructure-Bv0NJy9P.js} | 2 +- ... => ConnectedInstitutionsURLs-C_G2PNvX.js} | 2 +- ...-C39phNBn.js => ConnectedUser-D-CAsrxc.js} | 2 +- ...aByV3.js => CorporateStrategy-D3wglOhj.js} | 2 +- ...w4pZ1iW.js => CrisisExercises-DuZg-gGP.js} | 2 +- ...7W12RY.js => CrisisManagement-B9EB2EWM.js} | 2 +- ...XP4t.js => DarkFibreInstalled-2D1iNkw5.js} | 2 +- ...C_DLt-sT.js => DarkFibreLease-DOa-O_Mg.js} | 2 +- ...cts-CT3RTMct.js => ECProjects-Cxw57QLP.js} | 2 +- ...s-v4hLpISP.js => EOSCListings-Gq2b1C2V.js} | 2 +- ...bkO.js => ExternalConnections-ldDiu0-q.js} | 2 +- ...ght-C4tQtRYN.js => FibreLight-CitJL-tj.js} | 2 +- ...-C4jAa4nC.js => FundingSource-M1iQBQ3K.js} | 2 +- ...JV-MGB.js => HTMLLegendPlugin-Cg92GHTT.js} | 2 +- ...on-C1dUeB3y.js => IRUDuration-CX0U79PZ.js} | 2 +- ...rAyjiGW.js => MonitoringTools-sTAJWOEm.js} | 2 +- ...NetworkFunctionVirtualisation-mpEVvRIs.js} | 2 +- ...iZSn2qqQ.js => NetworkMapUrls-B9qEmtVH.js} | 2 +- ...r-Cn_ozVAu.js => NonRAndEPeer-C1U-VeeG.js} | 2 +- ...-iS8aEX43.js => NrenYearTable-RI8l8hwG.js} | 2 +- ...-Bc59w9gr.js => OPsAutomation-DAHkdRQE.js} | 2 +- ...V9Ka.js => ParentOrganisation-Bpo7P6u6.js} | 2 +- ...N_EjG.js => PassiveMonitoring-Bn2t9Pmf.js} | 2 +- ...tTeam-64HTdccQ.js => PertTeam-C-4MgsmN.js} | 2 +- ...{Policy-DTXx03Vh.js => Policy-BdndWxZz.js} | 2 +- ...DiA5hlnD.js => RemoteCampuses-CWuoHcc1.js} | 2 +- ...-ptOes.js => SecurityControls-Ba4coYqK.js} | 2 +- ...oF5.js => ServiceLevelTargets-pvc5MWdl.js} | 2 +- ...=> ServiceManagementFramework-Cy_R2T5K.js} | 2 +- ...vices-5TAXBWqD.js => Services-fP_6uX0f.js} | 2 +- ...QGRxlwg.js => ServicesOffered-C8SRGlPW.js} | 2 +- ...rs-Ba9ZMN9z.js => SiemVendors-kLcSDwOx.js} | 2 +- ...aph-DXD4Tgbx.js => StaffGraph-HNfHQ0pm.js} | 2 +- ...ah2E.js => StaffGraphAbsolute-Bq1qlgS8.js} | 2 +- ...dENjIwX.js => SubOrganisation-CXMlieI0.js} | 2 +- ...o-p8ISc0n1.js => TrafficRatio-BkOFtVPl.js} | 2 +- ...Url-Cupk7MWX.js => TrafficUrl-ppIreNuJ.js} | 2 +- ...-C0Yprx37.js => TrafficVolume-DjVPocrC.js} | 2 +- ...Map-DPu2PGnk.js => WeatherMap-CtO7coD7.js} | 2 +- ...s-DmM6tvdh.js => charthelpers-CdmocpOu.js} | 2 +- ...chartjs-plugin-datalabels.esm-CzQRWEly.js} | 2 +- .../{index-C4Nuqrw6.js => index-BfhfJiKe.js} | 2 +- compendium_v2/static/index.js | 4 +- ...seData-Ct8E3VVL.js => useData-CYCBVZdC.js} | 6 +- 155 files changed, 717 insertions(+), 719 deletions(-) rename compendium_v2/static/{AlienWave-DhaC80F-.js => AlienWave-AJrmdFtI.js} (97%) rename compendium_v2/static/{AlienWaveInternal-CeuaDpIY.js => AlienWaveInternal-BkYZMjCR.js} (95%) rename compendium_v2/static/{Audits-BldRnziS.js => Audits-CuvZdHfU.js} (97%) rename compendium_v2/static/{Automation-BAaw7w82.js => Automation-DItliT93.js} (98%) rename compendium_v2/static/{Budget-BVbbdsI6.js => Budget-BD3tWhAz.js} (92%) rename compendium_v2/static/{BusinessContinuity-CLtH4Vxm.js => BusinessContinuity-MvRfhQYb.js} (97%) rename compendium_v2/static/{CapacityCoreIP-CjzYJH11.js => CapacityCoreIP-BYeiJxnz.js} (90%) rename compendium_v2/static/{CapacityLargestLink-CCiZ1Jtj.js => CapacityLargestLink-Bov4w9OF.js} (90%) rename compendium_v2/static/{CentralProcurement-ufKA5cDY.js => CentralProcurement-CnLdUN2O.js} (91%) rename compendium_v2/static/{CertificateProvider-S4Idgrmz.js => CertificateProvider-C0MtpALT.js} (93%) rename compendium_v2/static/{ChargingStructure-D6vHlJZ3.js => ChargingStructure-Bv0NJy9P.js} (94%) rename compendium_v2/static/{ConnectedInstitutionsURLs-gUMBROcH.js => ConnectedInstitutionsURLs-C_G2PNvX.js} (92%) rename compendium_v2/static/{ConnectedUser-C39phNBn.js => ConnectedUser-D-CAsrxc.js} (99%) rename compendium_v2/static/{CorporateStrategy-CQ2aByV3.js => CorporateStrategy-D3wglOhj.js} (93%) rename compendium_v2/static/{CrisisExercises-Bw4pZ1iW.js => CrisisExercises-DuZg-gGP.js} (95%) rename compendium_v2/static/{CrisisManagement-TH7W12RY.js => CrisisManagement-B9EB2EWM.js} (93%) rename compendium_v2/static/{DarkFibreInstalled-XMYWXP4t.js => DarkFibreInstalled-2D1iNkw5.js} (91%) rename compendium_v2/static/{DarkFibreLease-C_DLt-sT.js => DarkFibreLease-DOa-O_Mg.js} (92%) rename compendium_v2/static/{ECProjects-CT3RTMct.js => ECProjects-Cxw57QLP.js} (93%) rename compendium_v2/static/{EOSCListings-v4hLpISP.js => EOSCListings-Gq2b1C2V.js} (96%) rename compendium_v2/static/{ExternalConnections-Ds1slbkO.js => ExternalConnections-ldDiu0-q.js} (98%) rename compendium_v2/static/{FibreLight-C4tQtRYN.js => FibreLight-CitJL-tj.js} (94%) rename compendium_v2/static/{FundingSource-C4jAa4nC.js => FundingSource-M1iQBQ3K.js} (96%) rename compendium_v2/static/{HTMLLegendPlugin-sjJV-MGB.js => HTMLLegendPlugin-Cg92GHTT.js} (96%) rename compendium_v2/static/{IRUDuration-C1dUeB3y.js => IRUDuration-CX0U79PZ.js} (90%) rename compendium_v2/static/{MonitoringTools-BrAyjiGW.js => MonitoringTools-sTAJWOEm.js} (97%) rename compendium_v2/static/{NetworkFunctionVirtualisation-BSD5a3W2.js => NetworkFunctionVirtualisation-mpEVvRIs.js} (98%) rename compendium_v2/static/{NetworkMapUrls-iZSn2qqQ.js => NetworkMapUrls-B9qEmtVH.js} (92%) rename compendium_v2/static/{NonRAndEPeer-Cn_ozVAu.js => NonRAndEPeer-C1U-VeeG.js} (89%) rename compendium_v2/static/{NrenYearTable-iS8aEX43.js => NrenYearTable-RI8l8hwG.js} (96%) rename compendium_v2/static/{OPsAutomation-Bc59w9gr.js => OPsAutomation-DAHkdRQE.js} (94%) rename compendium_v2/static/{ParentOrganisation-BqnVV9Ka.js => ParentOrganisation-Bpo7P6u6.js} (93%) rename compendium_v2/static/{PassiveMonitoring-NXmN_EjG.js => PassiveMonitoring-Bn2t9Pmf.js} (93%) rename compendium_v2/static/{PertTeam-64HTdccQ.js => PertTeam-C-4MgsmN.js} (93%) rename compendium_v2/static/{Policy-DTXx03Vh.js => Policy-BdndWxZz.js} (96%) rename compendium_v2/static/{RemoteCampuses-DiA5hlnD.js => RemoteCampuses-CWuoHcc1.js} (98%) rename compendium_v2/static/{SecurityControls-TM-ptOes.js => SecurityControls-Ba4coYqK.js} (97%) rename compendium_v2/static/{ServiceLevelTargets-DMHnzoF5.js => ServiceLevelTargets-pvc5MWdl.js} (96%) rename compendium_v2/static/{ServiceManagementFramework-D-rGA4sI.js => ServiceManagementFramework-Cy_R2T5K.js} (93%) rename compendium_v2/static/{Services-5TAXBWqD.js => Services-fP_6uX0f.js} (98%) rename compendium_v2/static/{ServicesOffered-BQGRxlwg.js => ServicesOffered-C8SRGlPW.js} (97%) rename compendium_v2/static/{SiemVendors-Ba9ZMN9z.js => SiemVendors-kLcSDwOx.js} (93%) rename compendium_v2/static/{StaffGraph-DXD4Tgbx.js => StaffGraph-HNfHQ0pm.js} (94%) rename compendium_v2/static/{StaffGraphAbsolute-A86Vah2E.js => StaffGraphAbsolute-Bq1qlgS8.js} (90%) rename compendium_v2/static/{SubOrganisation-ldENjIwX.js => SubOrganisation-CXMlieI0.js} (96%) rename compendium_v2/static/{TrafficRatio-p8ISc0n1.js => TrafficRatio-BkOFtVPl.js} (93%) rename compendium_v2/static/{TrafficUrl-Cupk7MWX.js => TrafficUrl-ppIreNuJ.js} (92%) rename compendium_v2/static/{TrafficVolume-C0Yprx37.js => TrafficVolume-DjVPocrC.js} (95%) rename compendium_v2/static/{WeatherMap-DPu2PGnk.js => WeatherMap-CtO7coD7.js} (92%) rename compendium_v2/static/{charthelpers-DmM6tvdh.js => charthelpers-CdmocpOu.js} (96%) rename compendium_v2/static/{chartjs-plugin-datalabels.esm-BI98Iz1j.js => chartjs-plugin-datalabels.esm-CzQRWEly.js} (99%) rename compendium_v2/static/{index-C4Nuqrw6.js => index-BfhfJiKe.js} (96%) rename compendium_v2/static/{useData-Ct8E3VVL.js => useData-CYCBVZdC.js} (98%) diff --git a/compendium-frontend/src/App.tsx b/compendium-frontend/src/App.tsx index 70143095..b08b72fb 100644 --- a/compendium-frontend/src/App.tsx +++ b/compendium-frontend/src/App.tsx @@ -1,75 +1,75 @@ import { ReactElement, lazy } from "react"; import { createBrowserRouter, RouterProvider, Outlet, useLocation } from "react-router-dom"; -import Providers from "./Providers"; -import { ConnectivityPage, ServiceCategory } from "./Schema"; -import ExternalPageNavBar from "./components/global/ExternalPageNavBar"; -import GeantFooter from "./components/global/GeantFooter"; -import Landing from "./pages/Landing"; -import CompendiumData from "./pages/CompendiumData"; -import PrivacyModal from "./matomo/PrivacyModal"; +import Providers from "compendium/Providers"; +import { ConnectivityPage, ServiceCategory } from "compendium/Schema"; +import ExternalPageNavBar from "compendium/components/global/ExternalPageNavBar"; +import GeantFooter from "compendium/components/global/GeantFooter"; +import Landing from "compendium/pages/Landing"; +import CompendiumData from "compendium/pages/CompendiumData"; +import PrivacyModal from "compendium/matomo/PrivacyModal"; // Organization -const BudgetPage = lazy(() => import("./pages/Organization/Budget")); -const ChargingStructurePage = lazy(() => import("./pages/Organization/ChargingStructure")); -const ECProjectsPage = lazy(() => import("./pages/Organization/ECProjects")); -const FundingSourcePage = lazy(() => import("./pages/Organization/FundingSource")); -const ParentOrganisationPage = lazy(() => import("./pages/Organization/ParentOrganisation")); -const StaffGraphPage = lazy(() => import("./pages/Organization/StaffGraph")); -const StaffGraphAbsolutePage = lazy(() => import("./pages/Organization/StaffGraphAbsolute")); -const SubOrganisationPage = lazy(() => import("./pages/Organization/SubOrganisation")); +const BudgetPage = lazy(() => import("compendium/pages/Organization/Budget")); +const ChargingStructurePage = lazy(() => import("compendium/pages/Organization/ChargingStructure")); +const ECProjectsPage = lazy(() => import("compendium/pages/Organization/ECProjects")); +const FundingSourcePage = lazy(() => import("compendium/pages/Organization/FundingSource")); +const ParentOrganisationPage = lazy(() => import("compendium/pages/Organization/ParentOrganisation")); +const StaffGraphPage = lazy(() => import("compendium/pages/Organization/StaffGraph")); +const StaffGraphAbsolutePage = lazy(() => import("compendium/pages/Organization/StaffGraphAbsolute")); +const SubOrganisationPage = lazy(() => import("compendium/pages/Organization/SubOrganisation")); // Standards & Policies -const AuditsPage = lazy(() => import("./pages/Standards&Policies/Audits")); -const BusinessContinuityPage = lazy(() => import("./pages/Standards&Policies/BusinessContinuity")); -const CentralProcurementPage = lazy(() => import("./pages/Standards&Policies/CentralProcurement")); -const CorporateStrategyPage = lazy(() => import("./pages/Standards&Policies/CorporateStrategy")); -const CrisisExercisesPage = lazy(() => import("./pages/Standards&Policies/CrisisExercises")); -const CrisisManagementPage = lazy(() => import("./pages/Standards&Policies/CrisisManagement")); -const EOSCListingsPage = lazy(() => import("./pages/Standards&Policies/EOSCListings")); -const PolicyPage = lazy(() => import("./pages/Standards&Policies/Policy")); -const SecurityControlsPage = lazy(() => import("./pages/Standards&Policies/SecurityControls")); -const ServiceLevelTargetsPage = lazy(() => import("./pages/Standards&Policies/ServiceLevelTargets")); -const ServiceManagementFrameworkPage = lazy(() => import("./pages/Standards&Policies/ServiceManagementFramework")); -const ServicesOfferedPage = lazy(() => import("./pages/Standards&Policies/ServicesOffered")); +const AuditsPage = lazy(() => import("compendium/pages/Standards&Policies/Audits")); +const BusinessContinuityPage = lazy(() => import("compendium/pages/Standards&Policies/BusinessContinuity")); +const CentralProcurementPage = lazy(() => import("compendium/pages/Standards&Policies/CentralProcurement")); +const CorporateStrategyPage = lazy(() => import("compendium/pages/Standards&Policies/CorporateStrategy")); +const CrisisExercisesPage = lazy(() => import("compendium/pages/Standards&Policies/CrisisExercises")); +const CrisisManagementPage = lazy(() => import("compendium/pages/Standards&Policies/CrisisManagement")); +const EOSCListingsPage = lazy(() => import("compendium/pages/Standards&Policies/EOSCListings")); +const PolicyPage = lazy(() => import("compendium/pages/Standards&Policies/Policy")); +const SecurityControlsPage = lazy(() => import("compendium/pages/Standards&Policies/SecurityControls")); +const ServiceLevelTargetsPage = lazy(() => import("compendium/pages/Standards&Policies/ServiceLevelTargets")); +const ServiceManagementFrameworkPage = lazy(() => import("compendium/pages/Standards&Policies/ServiceManagementFramework")); +const ServicesOfferedPage = lazy(() => import("compendium/pages/Standards&Policies/ServicesOffered")); // Connected Users -const ConnectedInstitutionsURLsPage = lazy(() => import("./pages/ConnectedUsers/ConnectedInstitutionsURLs")); -const ConnectedUserPage = lazy(() => import("./pages/ConnectedUsers/ConnectedUser")); -const RemoteCampusesPage = lazy(() => import("./pages/ConnectedUsers/RemoteCampuses")); +const ConnectedInstitutionsURLsPage = lazy(() => import("compendium/pages/ConnectedUsers/ConnectedInstitutionsURLs")); +const ConnectedUserPage = lazy(() => import("compendium/pages/ConnectedUsers/ConnectedUser")); +const RemoteCampusesPage = lazy(() => import("compendium/pages/ConnectedUsers/RemoteCampuses")); // Network -const AlienWavePage = lazy(() => import("./pages/Network/AlienWave")); -const AlienWaveInternalPage = lazy(() => import("./pages/Network/AlienWaveInternal")); -const AutomationPage = lazy(() => import("./pages/Network/Automation")); -const CapacityCoreIPPage = lazy(() => import("./pages/Network/CapacityCoreIP")); -const CapacityLargestLinkPage = lazy(() => import("./pages/Network/CapacityLargestLink")); -const CertificateProviderPage = lazy(() => import("./pages/Network/CertificateProvider")); -const DarkFibreLeasePage = lazy(() => import("./pages/Network/DarkFibreLease")); -const DarkFibreInstalledPage = lazy(() => import("./pages/Network/DarkFibreInstalled")); -const ExternalConnectionsPage = lazy(() => import("./pages/Network/ExternalConnections")); -const FibreLightPage = lazy(() => import("./pages/Network/FibreLight")); -const IRUDurationPage = lazy(() => import("./pages/Network/IRUDuration")); -const MonitoringToolsPage = lazy(() => import("./pages/Network/MonitoringTools")); -const NetworkFunctionVirtualisationPage = lazy(() => import("./pages/Network/NetworkFunctionVirtualisation")); -const NetworkMapUrlPage = lazy(() => import("./pages/Network/NetworkMapUrls")); -const NonRAndEPeerPage = lazy(() => import("./pages/Network/NonRAndEPeer")); -const OPsAutomationPage = lazy(() => import("./pages/Network/OPsAutomation")); -const PassiveMonitoringPage = lazy(() => import("./pages/Network/PassiveMonitoring")); -const PertTeamPage = lazy(() => import("./pages/Network/PertTeam")); -const SiemVendorsPage = lazy(() => import("./pages/Network/SiemVendors")); -const TrafficRatioPage = lazy(() => import("./pages/Network/TrafficRatio")); -const TrafficUrlPage = lazy(() => import("./pages/Network/TrafficUrl")); -const TrafficVolumePage = lazy(() => import("./pages/Network/TrafficVolume")); -const NetworkWeatherMapPage = lazy(() => import("./pages/Network/WeatherMap")); +const AlienWavePage = lazy(() => import("compendium/pages/Network/AlienWave")); +const AlienWaveInternalPage = lazy(() => import("compendium/pages/Network/AlienWaveInternal")); +const AutomationPage = lazy(() => import("compendium/pages/Network/Automation")); +const CapacityCoreIPPage = lazy(() => import("compendium/pages/Network/CapacityCoreIP")); +const CapacityLargestLinkPage = lazy(() => import("compendium/pages/Network/CapacityLargestLink")); +const CertificateProviderPage = lazy(() => import("compendium/pages/Network/CertificateProvider")); +const DarkFibreLeasePage = lazy(() => import("compendium/pages/Network/DarkFibreLease")); +const DarkFibreInstalledPage = lazy(() => import("compendium/pages/Network/DarkFibreInstalled")); +const ExternalConnectionsPage = lazy(() => import("compendium/pages/Network/ExternalConnections")); +const FibreLightPage = lazy(() => import("compendium/pages/Network/FibreLight")); +const IRUDurationPage = lazy(() => import("compendium/pages/Network/IRUDuration")); +const MonitoringToolsPage = lazy(() => import("compendium/pages/Network/MonitoringTools")); +const NetworkFunctionVirtualisationPage = lazy(() => import("compendium/pages/Network/NetworkFunctionVirtualisation")); +const NetworkMapUrlPage = lazy(() => import("compendium/pages/Network/NetworkMapUrls")); +const NonRAndEPeerPage = lazy(() => import("compendium/pages/Network/NonRAndEPeer")); +const OPsAutomationPage = lazy(() => import("compendium/pages/Network/OPsAutomation")); +const PassiveMonitoringPage = lazy(() => import("compendium/pages/Network/PassiveMonitoring")); +const PertTeamPage = lazy(() => import("compendium/pages/Network/PertTeam")); +const SiemVendorsPage = lazy(() => import("compendium/pages/Network/SiemVendors")); +const TrafficRatioPage = lazy(() => import("compendium/pages/Network/TrafficRatio")); +const TrafficUrlPage = lazy(() => import("compendium/pages/Network/TrafficUrl")); +const TrafficVolumePage = lazy(() => import("compendium/pages/Network/TrafficVolume")); +const NetworkWeatherMapPage = lazy(() => import("compendium/pages/Network/WeatherMap")); // Services Matrix -const ServicesPage = lazy(() => import("./pages/Services/Services")); +const ServicesPage = lazy(() => import("compendium/pages/Services/Services")); // Survey -const SurveyLanding = lazy(() => import('./survey/Landing')); -const SurveyContainerComponent = lazy(() => import('./survey/SurveyContainerComponent')); -const SurveyManagementComponent = lazy(() => import('./survey/management/SurveyManagementComponent')); -const UserManagementComponent = lazy(() => import('./survey/management/UserManagementComponent')); +const SurveyLanding = lazy(() => import('compendium/survey/Landing')); +const SurveyContainerComponent = lazy(() => import('compendium/survey/SurveyContainerComponent')); +const SurveyManagementComponent = lazy(() => import('compendium/survey/management/SurveyManagementComponent')); +const UserManagementComponent = lazy(() => import('compendium/survey/management/UserManagementComponent')); const GlobalLayout = () => { // this component is needed to provide a global layout for the app, including the navbar and footer, diff --git a/compendium-frontend/src/Providers.tsx b/compendium-frontend/src/Providers.tsx index 97739e8b..79fcf093 100644 --- a/compendium-frontend/src/Providers.tsx +++ b/compendium-frontend/src/Providers.tsx @@ -1,14 +1,14 @@ import { ReactElement } from "react"; -import SidebarProvider from "./providers/SidebarProvider"; -import UserProvider from "./providers/UserProvider"; -import FilterSelectionProvider from "./providers/FilterSelectionProvider"; -import ChartContainerProvider from "./providers/ChartContainerProvider"; -import PreviewProvider from "./providers/PreviewProvider"; -import NrenProvider from "./providers/NrenProvider"; -import MatomoProvider from "./matomo/MatomoProvider"; -import ConsentProvider from "./providers/ConsentProvider"; -import ConfigProvider from "./providers/ConfigProvider"; +import SidebarProvider from "compendium/providers/SidebarProvider"; +import UserProvider from "compendium/providers/UserProvider"; +import FilterSelectionProvider from "compendium/providers/FilterSelectionProvider"; +import ChartContainerProvider from "compendium/providers/ChartContainerProvider"; +import PreviewProvider from "compendium/providers/PreviewProvider"; +import NrenProvider from "compendium/providers/NrenProvider"; +import MatomoProvider from "compendium/matomo/MatomoProvider"; +import ConsentProvider from "compendium/providers/ConsentProvider"; +import ConfigProvider from "compendium/providers/ConfigProvider"; function Providers({ children }): ReactElement { return ( diff --git a/compendium-frontend/src/components/DataPage.tsx b/compendium-frontend/src/components/DataPage.tsx index 78d8bdf9..fe937c7c 100644 --- a/compendium-frontend/src/components/DataPage.tsx +++ b/compendium-frontend/src/components/DataPage.tsx @@ -1,21 +1,21 @@ import { ReactElement, useEffect, useContext } from "react"; import { Container, Row } from "react-bootstrap"; import { Link } from "react-router-dom"; +import { Chart as ChartJS } from 'chart.js'; -import OrganizationSidebar from "./sidebar/OrganizationSidebar"; -import PageHeader from "../components/global/PageHeader" -import SectionNavigation from "./SectionNavigation"; -import { Sections } from "../helpers/constants"; -import PolicySidebar from "./sidebar/PolicySidebar"; +import PageHeader from "compendium/components/global/PageHeader" +import SectionNavigation from "compendium/components/SectionNavigation"; +import OrganizationSidebar from "compendium/components/sidebar/OrganizationSidebar"; +import PolicySidebar from "compendium/components/sidebar/PolicySidebar"; +import ConnectedUsersSidebar from "compendium/components/sidebar/ConnectedUsersSidebar"; +import NetworkSidebar from "compendium/components/sidebar/NetworkSidebar"; +import ServicesSidebar from "compendium/components/sidebar/ServicesSidebar"; +import DownloadContainer from "compendium/components/download/DownloadContainer"; +import useMatomo from "compendium/matomo/UseMatomo"; -import { Chart as ChartJS } from 'chart.js'; -import NetworkSidebar from "./sidebar/NetworkSidebar"; -import ConnectedUsersSidebar from "./sidebar/ConnectedUsersSidebar"; -import ServicesSidebar from "./sidebar/ServicesSidebar"; -import DownloadContainer from "./download/DownloadContainer"; -import useMatomo from "../matomo/UseMatomo"; -import { PreviewContext } from "@/providers/PreviewProvider"; -import { NrenAndYearDatapoint } from "../Schema"; +import { Sections } from "compendium/helpers/constants"; +import { PreviewContext } from "compendium/providers/PreviewProvider"; +import { NrenAndYearDatapoint } from "compendium/Schema"; ChartJS.defaults.font.size = 16; ChartJS.defaults.font.family = 'Open Sans'; diff --git a/compendium-frontend/src/components/NrenYearTable.tsx b/compendium-frontend/src/components/NrenYearTable.tsx index dcb27f5f..b3aafc6a 100644 --- a/compendium-frontend/src/components/NrenYearTable.tsx +++ b/compendium-frontend/src/components/NrenYearTable.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Table } from "react-bootstrap"; -import { addHttpIfMissing } from '../helpers/dataconversion'; +import { addHttpIfMissing } from 'compendium/helpers/dataconversion'; interface configProps { dottedBorder?: boolean; diff --git a/compendium-frontend/src/components/PillTable.tsx b/compendium-frontend/src/components/PillTable.tsx index 8ed09861..19e6589f 100644 --- a/compendium-frontend/src/components/PillTable.tsx +++ b/compendium-frontend/src/components/PillTable.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Table } from "react-bootstrap"; -import ColorPill from "./ColorPill"; -import { NrenAndYearDatapoint } from '../Schema'; +import ColorPill from "compendium/components/ColorPill"; +import { NrenAndYearDatapoint } from "compendium/Schema"; interface PillTableProps<T extends NrenAndYearDatapoint | { [key: string]: number | string }> { columns: string[]; diff --git a/compendium-frontend/src/components/ScrollableMatrix.tsx b/compendium-frontend/src/components/ScrollableMatrix.tsx index 2fecb623..bb659af0 100644 --- a/compendium-frontend/src/components/ScrollableMatrix.tsx +++ b/compendium-frontend/src/components/ScrollableMatrix.tsx @@ -1,6 +1,6 @@ import React from "react"; -import CollapsibleBox from "./CollapsibleBox"; import { Table } from "react-bootstrap"; +import CollapsibleBox from "compendium/components/CollapsibleBox"; const TICK_ICON = <span>✔</span>; diff --git a/compendium-frontend/src/components/ScrollableTable.tsx b/compendium-frontend/src/components/ScrollableTable.tsx index 94888ad3..44effbf0 100644 --- a/compendium-frontend/src/components/ScrollableTable.tsx +++ b/compendium-frontend/src/components/ScrollableTable.tsx @@ -1,7 +1,7 @@ import React from "react"; -import CollapsibleBox from "./CollapsibleBox"; import { Table } from "react-bootstrap"; -import { NrenAndYearDatapoint } from "../Schema"; +import CollapsibleBox from "compendium/components/CollapsibleBox"; +import { NrenAndYearDatapoint } from "compendium/Schema"; interface ScrollableTableProps<T> { diff --git a/compendium-frontend/src/components/WithLegend.tsx b/compendium-frontend/src/components/WithLegend.tsx index d5f8cf30..9a459a6f 100644 --- a/compendium-frontend/src/components/WithLegend.tsx +++ b/compendium-frontend/src/components/WithLegend.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import ChartContainer from "./graphing/ChartContainer"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; interface InputProps { children: React.ReactNode; diff --git a/compendium-frontend/src/components/download/DownloadContainer.tsx b/compendium-frontend/src/components/download/DownloadContainer.tsx index 5c1c53d7..3bb28029 100644 --- a/compendium-frontend/src/components/download/DownloadContainer.tsx +++ b/compendium-frontend/src/components/download/DownloadContainer.tsx @@ -1,8 +1,8 @@ -import DownloadDataButton from "./DownloadDataButton"; -import DownloadImageChartButton from "./DownloadImageChartButton"; +import DownloadDataButton from "compendium/components/download/DownloadDataButton"; +import DownloadImageChartButton from "compendium/components/download/DownloadImageChartButton"; -import { ExportType } from "../../helpers/constants"; -import { NrenAndYearDatapoint } from "../../Schema"; +import { ExportType } from "compendium/helpers/constants"; +import { NrenAndYearDatapoint } from "compendium/Schema"; interface DownloadProps { data: NrenAndYearDatapoint[]; diff --git a/compendium-frontend/src/components/download/DownloadDataButton.tsx b/compendium-frontend/src/components/download/DownloadDataButton.tsx index e3e2efd4..f3f0a1e7 100644 --- a/compendium-frontend/src/components/download/DownloadDataButton.tsx +++ b/compendium-frontend/src/components/download/DownloadDataButton.tsx @@ -1,8 +1,8 @@ import React from 'react'; import * as XLSX from "xlsx"; -import { ExportType } from "../../helpers/constants"; +import { ExportType } from "compendium/helpers/constants"; import { FaDownload } from 'react-icons/fa'; -import { NrenAndYearDatapoint } from '../../Schema'; +import { NrenAndYearDatapoint } from "compendium/Schema"; interface DownloadProps { data: NrenAndYearDatapoint[]; diff --git a/compendium-frontend/src/components/download/DownloadImageChartButton.tsx b/compendium-frontend/src/components/download/DownloadImageChartButton.tsx index ba8399a9..6ca33ce9 100644 --- a/compendium-frontend/src/components/download/DownloadImageChartButton.tsx +++ b/compendium-frontend/src/components/download/DownloadImageChartButton.tsx @@ -1,7 +1,7 @@ import React, { useContext, useState, useRef, useEffect } from 'react'; import * as htmlToImage from 'html-to-image'; -import { ImageType } from "../../helpers/constants"; -import { ChartContainerContext } from "../../providers/ChartContainerProvider"; +import { ImageType } from "compendium/helpers/constants"; +import { ChartContainerContext } from "compendium/providers/ChartContainerProvider"; import { FaDownload } from 'react-icons/fa'; interface DownloadImageChartProps { diff --git a/compendium-frontend/src/components/global/Banner.tsx b/compendium-frontend/src/components/global/Banner.tsx index 3b66ada0..fa3b002b 100644 --- a/compendium-frontend/src/components/global/Banner.tsx +++ b/compendium-frontend/src/components/global/Banner.tsx @@ -1,6 +1,6 @@ import { ReactElement } from "react"; import { Container, Row } from "react-bootstrap"; -import SectionDataLogo from "../../images/home_data_icon.svg"; +import SectionDataLogo from "compendium/images/home_data_icon.svg"; interface inputProps { type: string, diff --git a/compendium-frontend/src/components/global/ExternalPageNavBar.tsx b/compendium-frontend/src/components/global/ExternalPageNavBar.tsx index b578bc67..fd6e77bb 100644 --- a/compendium-frontend/src/components/global/ExternalPageNavBar.tsx +++ b/compendium-frontend/src/components/global/ExternalPageNavBar.tsx @@ -2,8 +2,8 @@ import { ReactElement, useContext } from "react"; import { Link } from "react-router-dom"; import { useLocation } from "react-router-dom"; import { Col, Container, Row } from "react-bootstrap"; -import GeantLogo from "../../images/geant_logo_f2020_new.svg"; -import { userContext } from "../../providers/UserProvider"; +import GeantLogo from "compendium/images/geant_logo_f2020_new.svg"; +import { userContext } from "compendium/providers/UserProvider"; function ExternalPageNavBar(): ReactElement { const { user } = useContext(userContext); diff --git a/compendium-frontend/src/components/global/GeantFooter.tsx b/compendium-frontend/src/components/global/GeantFooter.tsx index 309c2b53..5dd5b181 100644 --- a/compendium-frontend/src/components/global/GeantFooter.tsx +++ b/compendium-frontend/src/components/global/GeantFooter.tsx @@ -1,7 +1,7 @@ import { ReactElement } from "react"; import { Container, Row, Col } from "react-bootstrap"; -import GeantLogo from "../../images/geant_logo_colored.svg"; -import EULogo from "../../images/eu_logo.png"; +import GeantLogo from "compendium/images/geant_logo_colored.svg"; +import EULogo from "compendium/images/eu_logo.png"; function GeantFooter(): ReactElement { return <footer className="page-footer pt-3"> diff --git a/compendium-frontend/src/components/global/PageHeader.tsx b/compendium-frontend/src/components/global/PageHeader.tsx index 0cfee998..fe9d4a85 100644 --- a/compendium-frontend/src/components/global/PageHeader.tsx +++ b/compendium-frontend/src/components/global/PageHeader.tsx @@ -1,8 +1,7 @@ import { ReactElement } from "react"; import { Container, Row, Col } from "react-bootstrap"; import { Link } from "react-router-dom"; - -import SectionLink from "./SectionLink"; +import SectionLink from "compendium/components/global/SectionLink"; interface inputProps { type: string diff --git a/compendium-frontend/src/components/global/SectionLink.tsx b/compendium-frontend/src/components/global/SectionLink.tsx index 49c851a1..a8562774 100644 --- a/compendium-frontend/src/components/global/SectionLink.tsx +++ b/compendium-frontend/src/components/global/SectionLink.tsx @@ -1,5 +1,5 @@ import { ReactElement } from "react"; -import SectionDataLogo from "../../images/home_reports_icon.svg"; +import SectionDataLogo from "compendium/images/home_reports_icon.svg"; interface inputProps { section: string diff --git a/compendium-frontend/src/components/graphing/ChartContainer.tsx b/compendium-frontend/src/components/graphing/ChartContainer.tsx index 9a78a754..c9fad2aa 100644 --- a/compendium-frontend/src/components/graphing/ChartContainer.tsx +++ b/compendium-frontend/src/components/graphing/ChartContainer.tsx @@ -1,5 +1,5 @@ import React, { useContext, ReactNode } from 'react'; -import { ChartContainerContext } from '../../providers/ChartContainerProvider'; +import { ChartContainerContext } from 'compendium/providers/ChartContainerProvider'; interface ChartContainerProps { children: ReactNode; diff --git a/compendium-frontend/src/components/graphing/Filter.tsx b/compendium-frontend/src/components/graphing/Filter.tsx index 05e54d78..cd3de35e 100644 --- a/compendium-frontend/src/components/graphing/Filter.tsx +++ b/compendium-frontend/src/components/graphing/Filter.tsx @@ -1,8 +1,8 @@ import React, { ReactElement, useEffect, useState, useContext } from 'react'; import { Button, Dropdown, ButtonToolbar, Col } from 'react-bootstrap'; import Form from 'react-bootstrap/Form'; -import { FilterSelection, Nren } from "../../Schema"; -import { NrenContext } from "../../providers/NrenProvider"; +import { FilterSelection, Nren } from "compendium/Schema"; +import { NrenContext } from "compendium/providers/NrenProvider"; interface inputProps { filterOptions: { availableNrens: Nren[], availableYears: number[] } diff --git a/compendium-frontend/src/components/sections/ConnectedUsersLinks.tsx b/compendium-frontend/src/components/sections/ConnectedUsersLinks.tsx index 1ce8a507..5ae22ff4 100644 --- a/compendium-frontend/src/components/sections/ConnectedUsersLinks.tsx +++ b/compendium-frontend/src/components/sections/ConnectedUsersLinks.tsx @@ -1,6 +1,6 @@ import { Link } from "react-router-dom"; -import LinkWithHighlight from '../LinkWithHighlight'; -import titles from "@/titles"; +import LinkWithHighlight from 'compendium/components/LinkWithHighlight'; +import titles from "compendium/titles"; export default function ConnectedUsersLinks({ sidebar = false }) { const LinkComponent = sidebar ? LinkWithHighlight : Link; diff --git a/compendium-frontend/src/components/sections/NetworkLinks.tsx b/compendium-frontend/src/components/sections/NetworkLinks.tsx index 2b00d3d9..58cf7992 100644 --- a/compendium-frontend/src/components/sections/NetworkLinks.tsx +++ b/compendium-frontend/src/components/sections/NetworkLinks.tsx @@ -1,6 +1,6 @@ import { Link } from "react-router-dom"; -import LinkWithHighlight from '../LinkWithHighlight'; -import titles from "@/titles"; +import LinkWithHighlight from 'compendium/components/LinkWithHighlight'; +import titles from "compendium/titles"; export default function NetworkLinks({ sidebar = false }) { const LinkComponent = sidebar ? LinkWithHighlight : Link; diff --git a/compendium-frontend/src/components/sections/OrganizationLinks.tsx b/compendium-frontend/src/components/sections/OrganizationLinks.tsx index 80ddde27..f7e60643 100644 --- a/compendium-frontend/src/components/sections/OrganizationLinks.tsx +++ b/compendium-frontend/src/components/sections/OrganizationLinks.tsx @@ -1,6 +1,6 @@ import { Link } from "react-router-dom"; -import LinkWithHighlight from '../LinkWithHighlight'; -import titles from "@/titles"; +import LinkWithHighlight from 'compendium/components/LinkWithHighlight'; +import titles from "compendium/titles"; export default function OrganizationLinks({ sidebar = false }) { diff --git a/compendium-frontend/src/components/sections/PolicyLinks.tsx b/compendium-frontend/src/components/sections/PolicyLinks.tsx index a827c770..0ba03bd0 100644 --- a/compendium-frontend/src/components/sections/PolicyLinks.tsx +++ b/compendium-frontend/src/components/sections/PolicyLinks.tsx @@ -1,6 +1,6 @@ import { Link } from "react-router-dom"; -import LinkWithHighlight from '../LinkWithHighlight'; -import titles from "@/titles"; +import LinkWithHighlight from 'compendium/components/LinkWithHighlight'; +import titles from "compendium/titles"; export default function PolicyLinks({ sidebar = false }) { diff --git a/compendium-frontend/src/components/sections/ServicesLinks.tsx b/compendium-frontend/src/components/sections/ServicesLinks.tsx index 8a91a4b9..2458661c 100644 --- a/compendium-frontend/src/components/sections/ServicesLinks.tsx +++ b/compendium-frontend/src/components/sections/ServicesLinks.tsx @@ -1,6 +1,6 @@ import { Link } from "react-router-dom"; -import LinkWithHighlight from '../LinkWithHighlight'; -import titles from "@/titles"; +import LinkWithHighlight from 'compendium/components/LinkWithHighlight'; +import titles from "compendium/titles"; export default function ServicesLinks({ sidebar = false }) { const LinkComponent = sidebar ? LinkWithHighlight : Link; diff --git a/compendium-frontend/src/components/sidebar/ConnectedUsersSidebar.tsx b/compendium-frontend/src/components/sidebar/ConnectedUsersSidebar.tsx index 8eaa9eea..bf034ba6 100644 --- a/compendium-frontend/src/components/sidebar/ConnectedUsersSidebar.tsx +++ b/compendium-frontend/src/components/sidebar/ConnectedUsersSidebar.tsx @@ -1,5 +1,5 @@ -import Sidebar from './SideBar'; -import ConnectedUsersLinks from '../sections/ConnectedUsersLinks'; +import Sidebar from 'compendium/components/sidebar/SideBar'; +import ConnectedUsersLinks from 'compendium/components/sections/ConnectedUsersLinks'; const ConnectedUsersSidebar = () => { return ( diff --git a/compendium-frontend/src/components/sidebar/NetworkSidebar.tsx b/compendium-frontend/src/components/sidebar/NetworkSidebar.tsx index 2e7a9f2c..b178bebf 100644 --- a/compendium-frontend/src/components/sidebar/NetworkSidebar.tsx +++ b/compendium-frontend/src/components/sidebar/NetworkSidebar.tsx @@ -1,5 +1,5 @@ -import Sidebar from './SideBar'; -import NetworkLinks from '../sections/NetworkLinks'; +import Sidebar from 'compendium/components/sidebar/SideBar'; +import NetworkLinks from 'compendium/components/sections/NetworkLinks'; const NetworkSidebar = () => { return ( diff --git a/compendium-frontend/src/components/sidebar/OrganizationSidebar.tsx b/compendium-frontend/src/components/sidebar/OrganizationSidebar.tsx index fec6bd27..86507763 100644 --- a/compendium-frontend/src/components/sidebar/OrganizationSidebar.tsx +++ b/compendium-frontend/src/components/sidebar/OrganizationSidebar.tsx @@ -1,5 +1,5 @@ -import Sidebar from './SideBar'; -import OrganizationLinks from '../sections/OrganizationLinks'; +import Sidebar from 'compendium/components/sidebar/SideBar'; +import OrganizationLinks from 'compendium/components/sections/OrganizationLinks'; const OrganizationSidebar = () => { return ( diff --git a/compendium-frontend/src/components/sidebar/PolicySidebar.tsx b/compendium-frontend/src/components/sidebar/PolicySidebar.tsx index 5e320722..3400b086 100644 --- a/compendium-frontend/src/components/sidebar/PolicySidebar.tsx +++ b/compendium-frontend/src/components/sidebar/PolicySidebar.tsx @@ -1,5 +1,5 @@ -import Sidebar from './SideBar'; -import PolicyLinks from '../sections/PolicyLinks'; +import Sidebar from 'compendium/components/sidebar/SideBar'; +import PolicyLinks from 'compendium/components/sections/PolicyLinks'; const PolicySidebar = () => { return ( diff --git a/compendium-frontend/src/components/sidebar/ServicesSidebar.tsx b/compendium-frontend/src/components/sidebar/ServicesSidebar.tsx index e7cbe174..8e35cbea 100644 --- a/compendium-frontend/src/components/sidebar/ServicesSidebar.tsx +++ b/compendium-frontend/src/components/sidebar/ServicesSidebar.tsx @@ -1,5 +1,5 @@ -import Sidebar from './SideBar'; -import ServicesLinks from '../sections/ServicesLinks'; +import Sidebar from 'compendium/components/sidebar/SideBar'; +import ServicesLinks from 'compendium/components/sections/ServicesLinks'; const ServicesSidebar = () => { return ( diff --git a/compendium-frontend/src/components/sidebar/SideBar.tsx b/compendium-frontend/src/components/sidebar/SideBar.tsx index 4d4ff3da..afd19a79 100644 --- a/compendium-frontend/src/components/sidebar/SideBar.tsx +++ b/compendium-frontend/src/components/sidebar/SideBar.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -// import { sidebarContext } from "../helpers/sidebarProvider"; +// import { sidebarContext } from "compendium/providers/SidebarProvider"; import { AiOutlineClose, AiOutlinePlus } from 'react-icons/ai'; interface Props { diff --git a/compendium-frontend/src/helpers/dataconversion.tsx b/compendium-frontend/src/helpers/dataconversion.tsx index 3fc5e8df..d15ea5f7 100644 --- a/compendium-frontend/src/helpers/dataconversion.tsx +++ b/compendium-frontend/src/helpers/dataconversion.tsx @@ -4,7 +4,7 @@ import { BasicDataset, NrenStaff, TrafficVolume, NrenAndYearDatapoint, TrafficRatio, URLDatapoint -} from "../Schema"; +} from "compendium/Schema"; // create a color from a string, credits https://stackoverflow.com/a/16348977 const stringToColour = function (str) { diff --git a/compendium-frontend/src/helpers/useConfig.tsx b/compendium-frontend/src/helpers/useConfig.tsx index f8881ee8..2fe2cf12 100644 --- a/compendium-frontend/src/helpers/useConfig.tsx +++ b/compendium-frontend/src/helpers/useConfig.tsx @@ -1,5 +1,5 @@ import { useContext } from "react"; -import { configContext, BaseConfig } from "../providers/ConfigProvider"; +import { configContext, BaseConfig } from "compendium/providers/ConfigProvider"; export function useConfig<T extends BaseConfig>(key: string): Record<string, T> & { setConfig: (value: T, timeout?: Date) => void diff --git a/compendium-frontend/src/helpers/useData.ts b/compendium-frontend/src/helpers/useData.ts index 7879a63a..d3c3a2ae 100644 --- a/compendium-frontend/src/helpers/useData.ts +++ b/compendium-frontend/src/helpers/useData.ts @@ -1,6 +1,6 @@ import { useEffect, useMemo, useState } from "react"; -import { Nren, NrenAndYearDatapoint } from "../Schema"; -import { usePreview } from "./usePreview"; +import { Nren, NrenAndYearDatapoint } from "compendium/Schema"; +import { usePreview } from "compendium/helpers/usePreview"; function getYearsAndNrens(sourceData: NrenAndYearDatapoint[]) { const years = new Set<number>(); diff --git a/compendium-frontend/src/helpers/usePreview.ts b/compendium-frontend/src/helpers/usePreview.ts index 3394819c..51f4b24b 100644 --- a/compendium-frontend/src/helpers/usePreview.ts +++ b/compendium-frontend/src/helpers/usePreview.ts @@ -1,7 +1,7 @@ import { useContext, useEffect } from "react"; -import { PreviewContext } from "../providers/PreviewProvider"; import { useSearchParams } from "react-router-dom"; -import { userContext } from "../providers/UserProvider"; +import { PreviewContext } from "compendium/providers/PreviewProvider"; +import { userContext } from "compendium/providers/UserProvider"; export function usePreview() { const { preview, setPreview } = useContext(PreviewContext); diff --git a/compendium-frontend/src/index.tsx b/compendium-frontend/src/index.tsx index 8cca5a6c..e6bb7b61 100644 --- a/compendium-frontend/src/index.tsx +++ b/compendium-frontend/src/index.tsx @@ -1,8 +1,8 @@ import React from 'react'; import { createRoot } from 'react-dom/client'; -import App from "./App"; +import App from "compendium/App"; import 'bootstrap/dist/css/bootstrap.min.css'; -import './main.scss'; +import 'compendium/main.scss'; const container = document.getElementById('root') as HTMLElement; const root = createRoot(container); diff --git a/compendium-frontend/src/matomo/MatomoProvider.tsx b/compendium-frontend/src/matomo/MatomoProvider.tsx index 7e810997..05a7ba83 100644 --- a/compendium-frontend/src/matomo/MatomoProvider.tsx +++ b/compendium-frontend/src/matomo/MatomoProvider.tsx @@ -1,6 +1,6 @@ import React, { createContext, useContext } from 'react' -import MatomoTracker, { createInstance } from './MatomoTracker' -import { consentContext } from '../providers/ConsentProvider' +import MatomoTracker, { createInstance } from 'compendium/matomo/MatomoTracker' +import { consentContext } from 'compendium/providers/ConsentProvider' export interface MatomoProviderProps { children?: React.ReactNode diff --git a/compendium-frontend/src/matomo/MatomoTracker.ts b/compendium-frontend/src/matomo/MatomoTracker.ts index 1427781f..82f795ce 100644 --- a/compendium-frontend/src/matomo/MatomoTracker.ts +++ b/compendium-frontend/src/matomo/MatomoTracker.ts @@ -1,4 +1,4 @@ -import { TRACK_TYPES } from './constants' +import { TRACK_TYPES } from 'compendium/matomo/constants' import { CustomDimension, TrackEventParams, @@ -6,7 +6,7 @@ import { TrackPageViewParams, TrackParams, UserOptions, -} from './types' +} from 'compendium/matomo/types' class MatomoTracker { mutationObserver?: MutationObserver diff --git a/compendium-frontend/src/matomo/PrivacyModal.tsx b/compendium-frontend/src/matomo/PrivacyModal.tsx index 97e100b1..f701375a 100644 --- a/compendium-frontend/src/matomo/PrivacyModal.tsx +++ b/compendium-frontend/src/matomo/PrivacyModal.tsx @@ -1,6 +1,6 @@ import React, { useState, useContext } from 'react'; import { Modal, Button, Form } from 'react-bootstrap'; -import { consentContext } from '../providers/ConsentProvider'; +import { consentContext } from 'compendium/providers/ConsentProvider'; const PrivacyModal: React.FC = () => { const { consent, setConsent } = useContext(consentContext); diff --git a/compendium-frontend/src/matomo/UseMatomo.ts b/compendium-frontend/src/matomo/UseMatomo.ts index c3624f01..8f8feb52 100644 --- a/compendium-frontend/src/matomo/UseMatomo.ts +++ b/compendium-frontend/src/matomo/UseMatomo.ts @@ -1,10 +1,10 @@ import { useCallback, useContext } from 'react' -import { MatomoContext } from './MatomoProvider' +import { MatomoContext } from 'compendium/matomo/MatomoProvider' import { TrackEventParams, TrackLinkParams, TrackPageViewParams -} from './types' +} from 'compendium/matomo/types' function useMatomo() { const instance = useContext(MatomoContext) diff --git a/compendium-frontend/src/pages/CompendiumData.tsx b/compendium-frontend/src/pages/CompendiumData.tsx index 274950f4..3d33a02b 100644 --- a/compendium-frontend/src/pages/CompendiumData.tsx +++ b/compendium-frontend/src/pages/CompendiumData.tsx @@ -1,16 +1,16 @@ import React, { ReactElement } from "react"; import { Container, Row } from "react-bootstrap"; -import CollapsibleBox from "../components/CollapsibleBox"; -import PageHeader from "../components/global/PageHeader" -import Banner from "../components/global/Banner"; -import { Sections } from "../helpers/constants"; -import { usePreview } from "../helpers/usePreview"; -import useMatomo from "../matomo/UseMatomo"; -import OrganizationLinks from "../components/sections/OrganizationLinks"; -import PolicyLinks from "../components/sections/PolicyLinks"; -import ConnectedUsersLinks from "../components/sections/ConnectedUsersLinks"; -import NetworkLinks from "../components/sections/NetworkLinks"; -import ServicesLinks from "../components/sections/ServicesLinks"; +import CollapsibleBox from "compendium/components/CollapsibleBox"; +import PageHeader from "compendium/components/global/PageHeader" +import Banner from "compendium/components/global/Banner"; +import { Sections } from "compendium/helpers/constants"; +import { usePreview } from "compendium/helpers/usePreview"; +import useMatomo from "compendium/matomo/UseMatomo"; +import OrganizationLinks from "compendium/components/sections/OrganizationLinks"; +import PolicyLinks from "compendium/components/sections/PolicyLinks"; +import ConnectedUsersLinks from "compendium/components/sections/ConnectedUsersLinks"; +import NetworkLinks from "compendium/components/sections/NetworkLinks"; +import ServicesLinks from "compendium/components/sections/ServicesLinks"; function CompendiumData(): ReactElement { usePreview(); diff --git a/compendium-frontend/src/pages/ConnectedUsers/ConnectedInstitutionsURLs.tsx b/compendium-frontend/src/pages/ConnectedUsers/ConnectedInstitutionsURLs.tsx index 1ca93b3f..a5f18510 100644 --- a/compendium-frontend/src/pages/ConnectedUsers/ConnectedInstitutionsURLs.tsx +++ b/compendium-frontend/src/pages/ConnectedUsers/ConnectedInstitutionsURLs.tsx @@ -1,15 +1,15 @@ import { useContext } from 'react'; -import { URLDatapoint } from "../../Schema"; -import { createDataLookup, getLatestData, extractUrls, getTableData } from '../../helpers/dataconversion'; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter"; -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import { useData } from "../../helpers/useData"; -import ChartContainer from '../../components/graphing/ChartContainer'; -import NrenYearTable from '../../components/NrenYearTable'; -import titles from "@/titles"; +import { URLDatapoint } from "compendium/Schema"; +import { createDataLookup, getLatestData, extractUrls, getTableData } from 'compendium/helpers/dataconversion'; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import { useData } from "compendium/helpers/useData"; +import ChartContainer from 'compendium/components/graphing/ChartContainer'; +import NrenYearTable from 'compendium/components/NrenYearTable'; +import titles from "compendium/titles"; function ConnectedInstitutionsURLsPage() { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/ConnectedUsers/ConnectedUser.tsx b/compendium-frontend/src/pages/ConnectedUsers/ConnectedUser.tsx index 2c5f44d5..ba55aad5 100644 --- a/compendium-frontend/src/pages/ConnectedUsers/ConnectedUser.tsx +++ b/compendium-frontend/src/pages/ConnectedUsers/ConnectedUser.tsx @@ -8,16 +8,16 @@ import { ConnectivityLevel, ConnectivityLoad, ConnectivityPage -} from "../../Schema"; -import { createCategoryMatrixLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { CommercialConnectionCategories, CommercialOrgCategories, Sections, UserCategories } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import { ScrollableMatrix } from "../../components/ScrollableMatrix"; -import titles from "@/titles"; +} from "compendium/Schema"; +import { createCategoryMatrixLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { CommercialConnectionCategories, CommercialOrgCategories, Sections, UserCategories } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import { ScrollableMatrix } from "compendium/components/ScrollableMatrix"; +import titles from "compendium/titles"; const displayTitle = { [ConnectivityPage.ConnectedProportion]: titles["connected-proportion"], diff --git a/compendium-frontend/src/pages/ConnectedUsers/RemoteCampuses.tsx b/compendium-frontend/src/pages/ConnectedUsers/RemoteCampuses.tsx index 673d25d4..96dee3d5 100644 --- a/compendium-frontend/src/pages/ConnectedUsers/RemoteCampuses.tsx +++ b/compendium-frontend/src/pages/ConnectedUsers/RemoteCampuses.tsx @@ -1,15 +1,15 @@ import { useContext } from 'react'; -import { RemoteCampuses } from "../../Schema"; -import { createDataLookupList, getTableData } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from '../../helpers/useData'; -import MulticolumnNrenYearTable from '../../components/MulticolumnNrenYearTable'; -import titles from "@/titles"; +import { RemoteCampuses } from "compendium/Schema"; +import { createDataLookupList, getTableData } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from 'compendium/helpers/useData'; +import MulticolumnNrenYearTable from 'compendium/components/MulticolumnNrenYearTable'; +import titles from "compendium/titles"; function RemoteCampusesPage() { const field = 'remote_campus_connectivity'; diff --git a/compendium-frontend/src/pages/Landing.tsx b/compendium-frontend/src/pages/Landing.tsx index 11dec7f8..156c08cc 100644 --- a/compendium-frontend/src/pages/Landing.tsx +++ b/compendium-frontend/src/pages/Landing.tsx @@ -1,9 +1,9 @@ import { ReactElement, useEffect } from "react"; import { Link } from "react-router-dom"; import { Card, Container, Row, Col } from "react-bootstrap"; -import SectionDataLogo from "../images/home_data_icon.svg"; -import SectionReportsLogo from "../images/home_reports_icon.svg"; -import useMatomo from "../matomo/UseMatomo"; +import SectionDataLogo from "compendium/images/home_data_icon.svg"; +import SectionReportsLogo from "compendium/images/home_reports_icon.svg"; +import useMatomo from "compendium/matomo/UseMatomo"; function Landing(): ReactElement { const { trackPageView } = useMatomo(); diff --git a/compendium-frontend/src/pages/Network/AlienWave.tsx b/compendium-frontend/src/pages/Network/AlienWave.tsx index 0fe7e4e4..09557107 100644 --- a/compendium-frontend/src/pages/Network/AlienWave.tsx +++ b/compendium-frontend/src/pages/Network/AlienWave.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { AlienWave } from "../../Schema"; -import { createNrenTableLookup, addTooltip } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { AlienWave } from "compendium/Schema"; +import { createNrenTableLookup, addTooltip } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function AlienWavePage(): React.ReactElement { const dataField = 'alien_wave_third_party'; diff --git a/compendium-frontend/src/pages/Network/AlienWaveInternal.tsx b/compendium-frontend/src/pages/Network/AlienWaveInternal.tsx index 0ec432e5..df85f6f6 100644 --- a/compendium-frontend/src/pages/Network/AlienWaveInternal.tsx +++ b/compendium-frontend/src/pages/Network/AlienWaveInternal.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { AlienWaveInternal } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { AlienWaveInternal } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function AlienWaveInternalPage(): React.ReactElement { const dataField = 'alien_wave_internal'; diff --git a/compendium-frontend/src/pages/Network/Automation.tsx b/compendium-frontend/src/pages/Network/Automation.tsx index 4fe24ef5..ecccbfe8 100644 --- a/compendium-frontend/src/pages/Network/Automation.tsx +++ b/compendium-frontend/src/pages/Network/Automation.tsx @@ -1,16 +1,16 @@ import React, { useContext } from "react"; import { Table } from "react-bootstrap"; -import { NetworkAutomation } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import ColorPill from "../../components/ColorPill"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import titles from "@/titles"; +import { NetworkAutomation } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import ColorPill from "compendium/components/ColorPill"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import titles from "compendium/titles"; function AutomationPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Network/CapacityCoreIP.tsx b/compendium-frontend/src/pages/Network/CapacityCoreIP.tsx index ca157581..fb66a40f 100644 --- a/compendium-frontend/src/pages/Network/CapacityCoreIP.tsx +++ b/compendium-frontend/src/pages/Network/CapacityCoreIP.tsx @@ -2,17 +2,17 @@ import { useContext } from 'react'; import { Bar } from 'react-chartjs-2'; import { Chart as ChartJS, CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend } from 'chart.js'; -import { Capacity } from "../../Schema"; -import { createBarChartDataset } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import { useData } from '../../helpers/useData'; -import ChartContainer from '../../components/graphing/ChartContainer'; +import { Capacity } from "compendium/Schema"; +import { createBarChartDataset } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import { useData } from 'compendium/helpers/useData'; +import ChartContainer from 'compendium/components/graphing/ChartContainer'; import ChartDataLabels from 'chartjs-plugin-datalabels'; -import { getBarChartOptions } from '../../helpers/charthelpers'; -import titles from "@/titles"; +import { getBarChartOptions } from 'compendium/helpers/charthelpers'; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Network/CapacityLargestLink.tsx b/compendium-frontend/src/pages/Network/CapacityLargestLink.tsx index ed591eec..fbc32f29 100644 --- a/compendium-frontend/src/pages/Network/CapacityLargestLink.tsx +++ b/compendium-frontend/src/pages/Network/CapacityLargestLink.tsx @@ -2,17 +2,17 @@ import { useContext } from 'react'; import { Bar } from 'react-chartjs-2'; import { Chart as ChartJS, CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend } from 'chart.js'; -import { Capacity } from "../../Schema"; -import { createBarChartDataset } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import { useData } from '../../helpers/useData'; -import ChartContainer from '../../components/graphing/ChartContainer'; +import { Capacity } from "compendium/Schema"; +import { createBarChartDataset } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import { useData } from 'compendium/helpers/useData'; +import ChartContainer from 'compendium/components/graphing/ChartContainer'; import ChartDataLabels from 'chartjs-plugin-datalabels'; -import { getBarChartOptions } from '../../helpers/charthelpers'; -import titles from "@/titles"; +import { getBarChartOptions } from 'compendium/helpers/charthelpers'; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Network/CertificateProvider.tsx b/compendium-frontend/src/pages/Network/CertificateProvider.tsx index 92651e9b..5a19d18a 100644 --- a/compendium-frontend/src/pages/Network/CertificateProvider.tsx +++ b/compendium-frontend/src/pages/Network/CertificateProvider.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { CertificateProviders } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { CertificateProviders } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function CertificateProviderPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Network/DarkFibreInstalled.tsx b/compendium-frontend/src/pages/Network/DarkFibreInstalled.tsx index 1bfbd5c4..8fb33dc4 100644 --- a/compendium-frontend/src/pages/Network/DarkFibreInstalled.tsx +++ b/compendium-frontend/src/pages/Network/DarkFibreInstalled.tsx @@ -12,16 +12,16 @@ import { Legend, } from 'chart.js'; -import { DarkFibreInstalled } from "../../Schema"; -import { createLineChartDataset } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter"; -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from '../../helpers/useData'; -import { getLineChartOptions } from '../../helpers/charthelpers'; -import titles from "@/titles"; +import { DarkFibreInstalled } from "compendium/Schema"; +import { createLineChartDataset } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from 'compendium/helpers/useData'; +import { getLineChartOptions } from 'compendium/helpers/charthelpers'; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Network/DarkFibreLease.tsx b/compendium-frontend/src/pages/Network/DarkFibreLease.tsx index edd0ab8e..d6b727f8 100644 --- a/compendium-frontend/src/pages/Network/DarkFibreLease.tsx +++ b/compendium-frontend/src/pages/Network/DarkFibreLease.tsx @@ -11,16 +11,16 @@ import { Legend, } from 'chart.js'; -import { DarkFibreLease } from "../../Schema"; -import { createLineChartDataset } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter"; -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from '../../helpers/useData'; -import { getLineChartOptions } from '../../helpers/charthelpers'; -import titles from "@/titles"; +import { DarkFibreLease } from "compendium/Schema"; +import { createLineChartDataset } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from 'compendium/helpers/useData'; +import { getLineChartOptions } from 'compendium/helpers/charthelpers'; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Network/ExternalConnections.tsx b/compendium-frontend/src/pages/Network/ExternalConnections.tsx index 59738a43..6d98ad71 100644 --- a/compendium-frontend/src/pages/Network/ExternalConnections.tsx +++ b/compendium-frontend/src/pages/Network/ExternalConnections.tsx @@ -1,15 +1,15 @@ import React, { useContext } from "react"; -import { ExternalConnection } from "../../Schema"; -import { createDataLookupList } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import { ScrollableTable } from "../../components/ScrollableTable"; -import titles from "@/titles"; +import { ExternalConnection } from "compendium/Schema"; +import { createDataLookupList } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import { ScrollableTable } from "compendium/components/ScrollableTable"; +import titles from "compendium/titles"; function ExternalConnectionsPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Network/FibreLight.tsx b/compendium-frontend/src/pages/Network/FibreLight.tsx index 7f1f8099..a7689429 100644 --- a/compendium-frontend/src/pages/Network/FibreLight.tsx +++ b/compendium-frontend/src/pages/Network/FibreLight.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { FibreLight } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { FibreLight } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function FibreLightPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Network/IRUDuration.tsx b/compendium-frontend/src/pages/Network/IRUDuration.tsx index 36fac6cd..a084f4d0 100644 --- a/compendium-frontend/src/pages/Network/IRUDuration.tsx +++ b/compendium-frontend/src/pages/Network/IRUDuration.tsx @@ -12,16 +12,16 @@ import { Legend, } from 'chart.js'; -import { DarkFibreLease } from "../../Schema"; -import { createLineChartDataset } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter"; -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from '../../helpers/useData'; -import { getLineChartOptions } from '../../helpers/charthelpers'; -import titles from "@/titles"; +import { DarkFibreLease } from "compendium/Schema"; +import { createLineChartDataset } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from 'compendium/helpers/useData'; +import { getLineChartOptions } from 'compendium/helpers/charthelpers'; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Network/MonitoringTools.tsx b/compendium-frontend/src/pages/Network/MonitoringTools.tsx index 2d3e804e..0806ce0f 100644 --- a/compendium-frontend/src/pages/Network/MonitoringTools.tsx +++ b/compendium-frontend/src/pages/Network/MonitoringTools.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { MonitoringTools } from "../../Schema"; -import { createNrenTableLookup, addTooltip } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { MonitoringTools } from "compendium/Schema"; +import { createNrenTableLookup, addTooltip } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function MonitoringToolsPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Network/NetworkFunctionVirtualisation.tsx b/compendium-frontend/src/pages/Network/NetworkFunctionVirtualisation.tsx index 668b76f7..82f09fc1 100644 --- a/compendium-frontend/src/pages/Network/NetworkFunctionVirtualisation.tsx +++ b/compendium-frontend/src/pages/Network/NetworkFunctionVirtualisation.tsx @@ -1,16 +1,16 @@ import React, { useContext } from "react"; import { Table } from "react-bootstrap"; -import { NetworkFunctionVirtualisation } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import ColorPill from "../../components/ColorPill"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import titles from "@/titles"; +import { NetworkFunctionVirtualisation } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import ColorPill from "compendium/components/ColorPill"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import titles from "compendium/titles"; function NetworkFunctionVirtualisationPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Network/NetworkMapUrls.tsx b/compendium-frontend/src/pages/Network/NetworkMapUrls.tsx index 9275e919..74356427 100644 --- a/compendium-frontend/src/pages/Network/NetworkMapUrls.tsx +++ b/compendium-frontend/src/pages/Network/NetworkMapUrls.tsx @@ -1,15 +1,15 @@ import React, { useContext } from "react"; -import { NetworkMapUrls } from "../../Schema"; -import { createDataLookup, getTableData, getLatestData, extractUrls } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import NrenYearTable from "../../components/NrenYearTable"; -import titles from "@/titles"; +import { NetworkMapUrls } from "compendium/Schema"; +import { createDataLookup, getTableData, getLatestData, extractUrls } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import NrenYearTable from "compendium/components/NrenYearTable"; +import titles from "compendium/titles"; function NetworkMapUrlPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Network/NonRAndEPeer.tsx b/compendium-frontend/src/pages/Network/NonRAndEPeer.tsx index 8e7884cc..a15f9fd0 100644 --- a/compendium-frontend/src/pages/Network/NonRAndEPeer.tsx +++ b/compendium-frontend/src/pages/Network/NonRAndEPeer.tsx @@ -2,17 +2,17 @@ import { useContext } from 'react'; import { Bar } from 'react-chartjs-2'; import { Chart as ChartJS, CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend } from 'chart.js'; -import { NonRAndEPeers } from "../../Schema"; -import { createBarChartDataset } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import { useData } from '../../helpers/useData'; -import ChartContainer from '../../components/graphing/ChartContainer'; +import { NonRAndEPeers } from "compendium/Schema"; +import { createBarChartDataset } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import { useData } from 'compendium/helpers/useData'; +import ChartContainer from 'compendium/components/graphing/ChartContainer'; import ChartDataLabels from 'chartjs-plugin-datalabels'; -import { getBarChartOptions } from '../../helpers/charthelpers'; -import titles from "@/titles"; +import { getBarChartOptions } from 'compendium/helpers/charthelpers'; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Network/OPsAutomation.tsx b/compendium-frontend/src/pages/Network/OPsAutomation.tsx index 729c4e66..5db8f101 100644 --- a/compendium-frontend/src/pages/Network/OPsAutomation.tsx +++ b/compendium-frontend/src/pages/Network/OPsAutomation.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { OPsAutomation } from "../../Schema"; -import { createNrenTableLookup, addTooltip } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { OPsAutomation } from "compendium/Schema"; +import { createNrenTableLookup, addTooltip } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function OPsAutomationPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Network/PassiveMonitoring.tsx b/compendium-frontend/src/pages/Network/PassiveMonitoring.tsx index 3395097d..2aac55f2 100644 --- a/compendium-frontend/src/pages/Network/PassiveMonitoring.tsx +++ b/compendium-frontend/src/pages/Network/PassiveMonitoring.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { PassiveMonitoring } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { PassiveMonitoring } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function PassiveMonitoringPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Network/PertTeam.tsx b/compendium-frontend/src/pages/Network/PertTeam.tsx index 2570d4ba..4eb9f739 100644 --- a/compendium-frontend/src/pages/Network/PertTeam.tsx +++ b/compendium-frontend/src/pages/Network/PertTeam.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { PertTeam } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { PertTeam } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function PertTeamPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Network/SiemVendors.tsx b/compendium-frontend/src/pages/Network/SiemVendors.tsx index 9ea85f66..95b8fbd9 100644 --- a/compendium-frontend/src/pages/Network/SiemVendors.tsx +++ b/compendium-frontend/src/pages/Network/SiemVendors.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { SiemVendors } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { SiemVendors } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function SiemVendorsPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Network/TrafficRatio.tsx b/compendium-frontend/src/pages/Network/TrafficRatio.tsx index 7f70a03b..87a7868f 100644 --- a/compendium-frontend/src/pages/Network/TrafficRatio.tsx +++ b/compendium-frontend/src/pages/Network/TrafficRatio.tsx @@ -2,16 +2,16 @@ import { useContext } from 'react'; import { Bar } from 'react-chartjs-2'; import { Chart as ChartJS, CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend } from 'chart.js'; -import { TrafficRatio } from "../../Schema"; -import { createTrafficRatioDataset } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import WithLegend from '../../components/WithLegend'; -import htmlLegendPlugin from '../../plugins/HTMLLegendPlugin'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import { useData } from '../../helpers/useData'; -import titles from "@/titles"; +import { TrafficRatio } from "compendium/Schema"; +import { createTrafficRatioDataset } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import WithLegend from 'compendium/components/WithLegend'; +import htmlLegendPlugin from 'compendium/plugins/HTMLLegendPlugin'; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import { useData } from 'compendium/helpers/useData'; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Network/TrafficUrl.tsx b/compendium-frontend/src/pages/Network/TrafficUrl.tsx index f29618c1..4407dddf 100644 --- a/compendium-frontend/src/pages/Network/TrafficUrl.tsx +++ b/compendium-frontend/src/pages/Network/TrafficUrl.tsx @@ -1,15 +1,15 @@ import React, { useContext } from "react"; -import { TrafficStatistics } from "../../Schema"; -import { createDataLookup, getTableData, getLatestData, extractUrls } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import NrenYearTable from "../../components/NrenYearTable"; -import titles from "@/titles"; +import { TrafficStatistics } from "compendium/Schema"; +import { createDataLookup, getTableData, getLatestData, extractUrls } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import NrenYearTable from "compendium/components/NrenYearTable"; +import titles from "compendium/titles"; function TrafficUrlPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Network/TrafficVolume.tsx b/compendium-frontend/src/pages/Network/TrafficVolume.tsx index 36c5af4d..5097a462 100644 --- a/compendium-frontend/src/pages/Network/TrafficVolume.tsx +++ b/compendium-frontend/src/pages/Network/TrafficVolume.tsx @@ -12,16 +12,16 @@ import { Legend, } from 'chart.js'; -import { TrafficVolume } from "../../Schema"; -import { createLineChartDataset } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter"; -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from '../../helpers/useData'; -import { getLineChartOptions } from '../../helpers/charthelpers'; -import titles from "@/titles"; +import { TrafficVolume } from "compendium/Schema"; +import { createLineChartDataset } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from 'compendium/helpers/useData'; +import { getLineChartOptions } from 'compendium/helpers/charthelpers'; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Network/WeatherMap.tsx b/compendium-frontend/src/pages/Network/WeatherMap.tsx index 839dcc9e..8fb5e843 100644 --- a/compendium-frontend/src/pages/Network/WeatherMap.tsx +++ b/compendium-frontend/src/pages/Network/WeatherMap.tsx @@ -1,15 +1,15 @@ import React, { useContext } from "react"; -import { WeatherMap } from "../../Schema"; -import { getTableData, createDataLookup, getLatestData } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import NrenYearTable from "../../components/NrenYearTable"; -import titles from "@/titles"; +import { WeatherMap } from "compendium/Schema"; +import { getTableData, createDataLookup, getLatestData } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import NrenYearTable from "compendium/components/NrenYearTable"; +import titles from "compendium/titles"; function NetworkWeatherMapPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Organization/Budget.tsx b/compendium-frontend/src/pages/Organization/Budget.tsx index 69469faa..fc079b5e 100644 --- a/compendium-frontend/src/pages/Organization/Budget.tsx +++ b/compendium-frontend/src/pages/Organization/Budget.tsx @@ -12,16 +12,16 @@ import { Legend, } from 'chart.js'; -import { Budget } from "../../Schema"; -import { createLineChartDataset } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter"; -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from '../../helpers/useData'; -import { getLineChartOptions } from '../../helpers/charthelpers'; -import titles from "@/titles"; +import { Budget } from "compendium/Schema"; +import { createLineChartDataset } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from 'compendium/helpers/useData'; +import { getLineChartOptions } from 'compendium/helpers/charthelpers'; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Organization/ChargingStructure.tsx b/compendium-frontend/src/pages/Organization/ChargingStructure.tsx index a523e9ed..dfdf549a 100644 --- a/compendium-frontend/src/pages/Organization/ChargingStructure.tsx +++ b/compendium-frontend/src/pages/Organization/ChargingStructure.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { ChargingStructure } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { ChargingStructure } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function ChargingStructurePage(): React.ReactElement { diff --git a/compendium-frontend/src/pages/Organization/ECProjects.tsx b/compendium-frontend/src/pages/Organization/ECProjects.tsx index 9bd5760e..ba76b760 100644 --- a/compendium-frontend/src/pages/Organization/ECProjects.tsx +++ b/compendium-frontend/src/pages/Organization/ECProjects.tsx @@ -1,14 +1,14 @@ import { useContext } from 'react'; -import { ECProject } from "../../Schema"; -import { createDataLookupList, getTableData } from '../../helpers/dataconversion'; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from '../../helpers/useData'; -import NrenYearTable from '../../components/NrenYearTable'; +import { ECProject } from "compendium/Schema"; +import { createDataLookupList, getTableData } from 'compendium/helpers/dataconversion'; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from 'compendium/helpers/useData'; +import NrenYearTable from 'compendium/components/NrenYearTable'; function ECProjectsPage() { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Organization/FundingSource.tsx b/compendium-frontend/src/pages/Organization/FundingSource.tsx index 54c35c5c..416c3967 100644 --- a/compendium-frontend/src/pages/Organization/FundingSource.tsx +++ b/compendium-frontend/src/pages/Organization/FundingSource.tsx @@ -4,16 +4,16 @@ import { Col, Row } from "react-bootstrap"; import { Chart as ChartJS, CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend } from 'chart.js'; import ChartDataLabels from 'chartjs-plugin-datalabels'; -import { FundingSource } from "../../Schema"; -import { createFundingSourceDataset } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import ColorBadge from '../../components/ColorBadge'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from '../../helpers/useData'; -import titles from "@/titles"; +import { FundingSource } from "compendium/Schema"; +import { createFundingSourceDataset } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import ColorBadge from 'compendium/components/ColorBadge'; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from 'compendium/helpers/useData'; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Organization/ParentOrganisation.tsx b/compendium-frontend/src/pages/Organization/ParentOrganisation.tsx index debd2a37..42847734 100644 --- a/compendium-frontend/src/pages/Organization/ParentOrganisation.tsx +++ b/compendium-frontend/src/pages/Organization/ParentOrganisation.tsx @@ -1,13 +1,13 @@ import { useContext } from 'react'; -import { Organisation } from "../../Schema"; -import { createDataLookup, getTableData } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from '../../helpers/useData'; -import NrenYearTable from '../../components/NrenYearTable'; +import { Organisation } from "compendium/Schema"; +import { createDataLookup, getTableData } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from 'compendium/helpers/useData'; +import NrenYearTable from 'compendium/components/NrenYearTable'; function ParentOrganisationPage() { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Organization/StaffGraph.tsx b/compendium-frontend/src/pages/Organization/StaffGraph.tsx index f4c7c56e..68a5684a 100644 --- a/compendium-frontend/src/pages/Organization/StaffGraph.tsx +++ b/compendium-frontend/src/pages/Organization/StaffGraph.tsx @@ -2,16 +2,16 @@ import { useContext } from 'react'; import { Bar } from 'react-chartjs-2'; import { Chart as ChartJS, CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend } from 'chart.js'; -import { NrenStaff } from "../../Schema"; -import { createNRENStaffDataset } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import WithLegend from '../../components/WithLegend'; -import htmlLegendPlugin from '../../plugins/HTMLLegendPlugin'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import { useData } from '../../helpers/useData'; -import titles from "@/titles"; +import { NrenStaff } from "compendium/Schema"; +import { createNRENStaffDataset } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import WithLegend from 'compendium/components/WithLegend'; +import htmlLegendPlugin from 'compendium/plugins/HTMLLegendPlugin'; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import { useData } from 'compendium/helpers/useData'; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Organization/StaffGraphAbsolute.tsx b/compendium-frontend/src/pages/Organization/StaffGraphAbsolute.tsx index 72324a24..eda96340 100644 --- a/compendium-frontend/src/pages/Organization/StaffGraphAbsolute.tsx +++ b/compendium-frontend/src/pages/Organization/StaffGraphAbsolute.tsx @@ -2,17 +2,17 @@ import { useContext } from 'react'; import { Bar } from 'react-chartjs-2'; import { Chart as ChartJS, CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend } from 'chart.js'; -import { NrenStaff } from "../../Schema"; -import { createNRENStaffDatasetAbsolute } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import { useData } from '../../helpers/useData'; -import ChartContainer from '../../components/graphing/ChartContainer'; +import { NrenStaff } from "compendium/Schema"; +import { createNRENStaffDatasetAbsolute } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import { useData } from 'compendium/helpers/useData'; +import ChartContainer from 'compendium/components/graphing/ChartContainer'; import ChartDataLabels from 'chartjs-plugin-datalabels'; -import { getBarChartOptions } from '../../helpers/charthelpers'; -import titles from "@/titles"; +import { getBarChartOptions } from 'compendium/helpers/charthelpers'; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Organization/SubOrganisation.tsx b/compendium-frontend/src/pages/Organization/SubOrganisation.tsx index 1a7e11e2..cd4d0429 100644 --- a/compendium-frontend/src/pages/Organization/SubOrganisation.tsx +++ b/compendium-frontend/src/pages/Organization/SubOrganisation.tsx @@ -1,15 +1,15 @@ import { useContext } from 'react'; -import { Organisation } from "../../Schema"; -import { createDataLookupList, getTableData } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from '../../helpers/useData'; -import NrenYearTable from '../../components/NrenYearTable'; -import titles from "@/titles"; +import { Organisation } from "compendium/Schema"; +import { createDataLookupList, getTableData } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from 'compendium/helpers/useData'; +import NrenYearTable from 'compendium/components/NrenYearTable'; +import titles from "compendium/titles"; function SubOrganisationPage() { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Services/Services.tsx b/compendium-frontend/src/pages/Services/Services.tsx index 6e01b018..7cade9fe 100644 --- a/compendium-frontend/src/pages/Services/Services.tsx +++ b/compendium-frontend/src/pages/Services/Services.tsx @@ -1,16 +1,16 @@ import React, { useContext } from "react"; import { Table } from "react-bootstrap"; -import { Service, ServiceCategory } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import ColorBadgeService from "../../components/ColorBadgeService"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import titles from "@/titles"; +import { Service, ServiceCategory } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import ColorBadgeService from "compendium/components/ColorBadgeService"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import titles from "compendium/titles"; interface inputProps { category: ServiceCategory diff --git a/compendium-frontend/src/pages/Standards&Policies/Audits.tsx b/compendium-frontend/src/pages/Standards&Policies/Audits.tsx index 033b01a4..2717a51b 100644 --- a/compendium-frontend/src/pages/Standards&Policies/Audits.tsx +++ b/compendium-frontend/src/pages/Standards&Policies/Audits.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { Standards } from "../../Schema"; -import { createNrenTableLookup, addTooltip } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { Standards } from "compendium/Schema"; +import { createNrenTableLookup, addTooltip } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function AuditsPage(): React.ReactElement { const dataField = 'audits'; diff --git a/compendium-frontend/src/pages/Standards&Policies/BusinessContinuity.tsx b/compendium-frontend/src/pages/Standards&Policies/BusinessContinuity.tsx index 80002a09..6d7248f5 100644 --- a/compendium-frontend/src/pages/Standards&Policies/BusinessContinuity.tsx +++ b/compendium-frontend/src/pages/Standards&Policies/BusinessContinuity.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { Standards } from "../../Schema"; -import { createNrenTableLookup, addTooltip } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { Standards } from "compendium/Schema"; +import { createNrenTableLookup, addTooltip } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function BusinessContinuityPage(): React.ReactElement { const dataField = 'business_continuity_plans'; diff --git a/compendium-frontend/src/pages/Standards&Policies/CentralProcurement.tsx b/compendium-frontend/src/pages/Standards&Policies/CentralProcurement.tsx index d11b1459..5fd90afa 100644 --- a/compendium-frontend/src/pages/Standards&Policies/CentralProcurement.tsx +++ b/compendium-frontend/src/pages/Standards&Policies/CentralProcurement.tsx @@ -12,16 +12,16 @@ import { import ChartDataLabels from 'chartjs-plugin-datalabels'; import { Bar } from 'react-chartjs-2'; -import DataPage from '../../components/DataPage'; -import ChartContainer from '../../components/graphing/ChartContainer'; -import Filter from '../../components/graphing/Filter'; -import { getBarChartOptions } from '../../helpers/charthelpers'; -import { Sections } from '../../helpers/constants'; -import { createBarChartDataset } from '../../helpers/dataconversion'; -import { useData } from '../../helpers/useData'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import { CentralProcurement } from '../../Schema'; -import titles from "@/titles"; +import DataPage from 'compendium/components/DataPage'; +import ChartContainer from 'compendium/components/graphing/ChartContainer'; +import Filter from 'compendium/components/graphing/Filter'; +import { getBarChartOptions } from 'compendium/helpers/charthelpers'; +import { Sections } from "compendium/helpers/constants"; +import { createBarChartDataset } from 'compendium/helpers/dataconversion'; +import { useData } from 'compendium/helpers/useData'; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import { CentralProcurement } from "compendium/Schema"; +import titles from "compendium/titles"; ChartJS.register( CategoryScale, diff --git a/compendium-frontend/src/pages/Standards&Policies/CorporateStrategy.tsx b/compendium-frontend/src/pages/Standards&Policies/CorporateStrategy.tsx index bc92f694..f73a2ae3 100644 --- a/compendium-frontend/src/pages/Standards&Policies/CorporateStrategy.tsx +++ b/compendium-frontend/src/pages/Standards&Policies/CorporateStrategy.tsx @@ -1,15 +1,15 @@ import { useContext } from 'react'; -import { CorporateStrategy } from "../../Schema"; -import { createDataLookup, getLatestData, getTableData } from '../../helpers/dataconversion'; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import { useData } from '../../helpers/useData'; -import ChartContainer from '../../components/graphing/ChartContainer'; -import NrenYearTable from '../../components/NrenYearTable'; -import titles from "@/titles"; +import { CorporateStrategy } from "compendium/Schema"; +import { createDataLookup, getLatestData, getTableData } from 'compendium/helpers/dataconversion'; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import { useData } from 'compendium/helpers/useData'; +import ChartContainer from 'compendium/components/graphing/ChartContainer'; +import NrenYearTable from 'compendium/components/NrenYearTable'; +import titles from "compendium/titles"; function CorporateStrategyPage() { const dataField = 'strategic_plan'; diff --git a/compendium-frontend/src/pages/Standards&Policies/CrisisExercises.tsx b/compendium-frontend/src/pages/Standards&Policies/CrisisExercises.tsx index 07f57d1b..905b6bca 100644 --- a/compendium-frontend/src/pages/Standards&Policies/CrisisExercises.tsx +++ b/compendium-frontend/src/pages/Standards&Policies/CrisisExercises.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { CrisisExercises } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { CrisisExercises } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function CrisisExercisesPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Standards&Policies/CrisisManagement.tsx b/compendium-frontend/src/pages/Standards&Policies/CrisisManagement.tsx index bc529911..f0c45b2e 100644 --- a/compendium-frontend/src/pages/Standards&Policies/CrisisManagement.tsx +++ b/compendium-frontend/src/pages/Standards&Policies/CrisisManagement.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { Standards } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { Standards } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function CrisisManagementPage(): React.ReactElement { const dataField = 'crisis_management_procedure'; diff --git a/compendium-frontend/src/pages/Standards&Policies/EOSCListings.tsx b/compendium-frontend/src/pages/Standards&Policies/EOSCListings.tsx index bdc3d45b..291559bf 100644 --- a/compendium-frontend/src/pages/Standards&Policies/EOSCListings.tsx +++ b/compendium-frontend/src/pages/Standards&Policies/EOSCListings.tsx @@ -1,15 +1,15 @@ import { useContext } from 'react'; -import { EOSCListing } from "../../Schema"; -import { createDataLookupList, getTableData } from "../../helpers/dataconversion"; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from '../../helpers/useData'; -import NrenYearTable from '../../components/NrenYearTable'; -import titles from "@/titles"; +import { EOSCListing } from "compendium/Schema"; +import { createDataLookupList, getTableData } from "compendium/helpers/dataconversion"; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from 'compendium/helpers/useData'; +import NrenYearTable from 'compendium/components/NrenYearTable'; +import titles from "compendium/titles"; // The data for this page is not good quality, so it's unlisted for now. diff --git a/compendium-frontend/src/pages/Standards&Policies/Policy.tsx b/compendium-frontend/src/pages/Standards&Policies/Policy.tsx index 0371a550..8931ab1a 100644 --- a/compendium-frontend/src/pages/Standards&Policies/Policy.tsx +++ b/compendium-frontend/src/pages/Standards&Policies/Policy.tsx @@ -1,15 +1,15 @@ import { useContext } from 'react'; -import { Policy } from "../../Schema"; -import { createDataLookup, getLatestData, getTableData } from '../../helpers/dataconversion'; -import DataPage from '../../components/DataPage'; -import Filter from "../../components/graphing/Filter" -import { Sections } from '../../helpers/constants'; -import { FilterSelectionContext } from '../../providers/FilterSelectionProvider'; -import { useData } from '../../helpers/useData'; -import ChartContainer from '../../components/graphing/ChartContainer'; -import NrenYearTable from '../../components/NrenYearTable'; -import titles from "@/titles"; +import { Policy } from "compendium/Schema"; +import { createDataLookup, getLatestData, getTableData } from 'compendium/helpers/dataconversion'; +import DataPage from 'compendium/components/DataPage'; +import Filter from "compendium/components/graphing/Filter" +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from 'compendium/providers/FilterSelectionProvider'; +import { useData } from 'compendium/helpers/useData'; +import ChartContainer from 'compendium/components/graphing/ChartContainer'; +import NrenYearTable from 'compendium/components/NrenYearTable'; +import titles from "compendium/titles"; function PolicyPage() { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Standards&Policies/SecurityControls.tsx b/compendium-frontend/src/pages/Standards&Policies/SecurityControls.tsx index 7d8f8158..f759e5af 100644 --- a/compendium-frontend/src/pages/Standards&Policies/SecurityControls.tsx +++ b/compendium-frontend/src/pages/Standards&Policies/SecurityControls.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { SecurityControls } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { SecurityControls } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function SecurityControlsPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Standards&Policies/ServiceLevelTargets.tsx b/compendium-frontend/src/pages/Standards&Policies/ServiceLevelTargets.tsx index de940407..8d655069 100644 --- a/compendium-frontend/src/pages/Standards&Policies/ServiceLevelTargets.tsx +++ b/compendium-frontend/src/pages/Standards&Policies/ServiceLevelTargets.tsx @@ -1,14 +1,14 @@ import React, { useContext } from "react"; -import { ServiceManagement } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { ServiceManagement } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function ServiceLevelTargetsPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Standards&Policies/ServiceManagementFramework.tsx b/compendium-frontend/src/pages/Standards&Policies/ServiceManagementFramework.tsx index 00e60331..dfaafba3 100644 --- a/compendium-frontend/src/pages/Standards&Policies/ServiceManagementFramework.tsx +++ b/compendium-frontend/src/pages/Standards&Policies/ServiceManagementFramework.tsx @@ -1,15 +1,15 @@ import React, { useContext } from "react"; -import { ServiceManagement } from "../../Schema"; -import { createNrenTableLookup } from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import PillTable from "../../components/PillTable"; -import titles from "@/titles"; +import { ServiceManagement } from "compendium/Schema"; +import { createNrenTableLookup } from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import PillTable from "compendium/components/PillTable"; +import titles from "compendium/titles"; function ServiceManagementFrameworkPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/pages/Standards&Policies/ServicesOffered.tsx b/compendium-frontend/src/pages/Standards&Policies/ServicesOffered.tsx index ed119156..fd405459 100644 --- a/compendium-frontend/src/pages/Standards&Policies/ServicesOffered.tsx +++ b/compendium-frontend/src/pages/Standards&Policies/ServicesOffered.tsx @@ -1,18 +1,18 @@ import React, { useContext } from "react"; -import { ServiceOffered } from "../../Schema"; +import { ServiceOffered } from "compendium/Schema"; import { createCategoryMatrixLookup -} from "../../helpers/dataconversion"; -import DataPage from "../../components/DataPage"; -import Filter from "../../components/graphing/Filter"; -import { Sections } from "../../helpers/constants"; -import { FilterSelectionContext } from "../../providers/FilterSelectionProvider"; -import ChartContainer from "../../components/graphing/ChartContainer"; -import { useData } from "../../helpers/useData"; -import { ScrollableMatrix } from "../../components/ScrollableMatrix"; -import { UserCategories } from "../../helpers/constants"; -import titles from "@/titles"; +} from "compendium/helpers/dataconversion"; +import DataPage from "compendium/components/DataPage"; +import Filter from "compendium/components/graphing/Filter"; +import { Sections } from "compendium/helpers/constants"; +import { FilterSelectionContext } from "compendium/providers/FilterSelectionProvider"; +import ChartContainer from "compendium/components/graphing/ChartContainer"; +import { useData } from "compendium/helpers/useData"; +import { ScrollableMatrix } from "compendium/components/ScrollableMatrix"; +import { UserCategories } from "compendium/helpers/constants"; +import titles from "compendium/titles"; function ServicesOfferedPage(): React.ReactElement { const { filterSelection, setFilterSelection } = useContext(FilterSelectionContext); diff --git a/compendium-frontend/src/providers/FilterSelectionProvider.tsx b/compendium-frontend/src/providers/FilterSelectionProvider.tsx index 1ef33105..d66ab36b 100644 --- a/compendium-frontend/src/providers/FilterSelectionProvider.tsx +++ b/compendium-frontend/src/providers/FilterSelectionProvider.tsx @@ -1,5 +1,5 @@ import React, { Dispatch, SetStateAction, createContext, useState } from 'react'; -import { FilterSelection } from '../Schema'; +import { FilterSelection } from "compendium/Schema"; interface Props { children: React.ReactNode; diff --git a/compendium-frontend/src/providers/NrenProvider.tsx b/compendium-frontend/src/providers/NrenProvider.tsx index ffc58427..73db5eae 100644 --- a/compendium-frontend/src/providers/NrenProvider.tsx +++ b/compendium-frontend/src/providers/NrenProvider.tsx @@ -1,5 +1,5 @@ import React, { Dispatch, SetStateAction, createContext, useState, useEffect } from 'react'; -import { Nren } from '../Schema'; +import { Nren } from "compendium/Schema"; interface Props { children: React.ReactNode; diff --git a/compendium-frontend/src/providers/UserProvider.tsx b/compendium-frontend/src/providers/UserProvider.tsx index 77037c80..13ecaae9 100644 --- a/compendium-frontend/src/providers/UserProvider.tsx +++ b/compendium-frontend/src/providers/UserProvider.tsx @@ -1,5 +1,5 @@ import React, { createContext, useState, useEffect } from 'react'; -import { User } from '../Schema'; +import { User } from "compendium/Schema"; interface Props { children: React.ReactNode; diff --git a/compendium-frontend/src/survey/Landing.tsx b/compendium-frontend/src/survey/Landing.tsx index fef112b1..eadd3e87 100644 --- a/compendium-frontend/src/survey/Landing.tsx +++ b/compendium-frontend/src/survey/Landing.tsx @@ -1,12 +1,12 @@ import { ReactElement, useContext, useState, useEffect } from "react"; import { useNavigate, Link } from "react-router-dom"; import { Table, Container, Row } from "react-bootstrap"; -import { userContext } from "../providers/UserProvider"; -import { fetchSurveys, fetchActiveSurveyYear } from "./api/survey"; -import { Survey } from "./api/types"; -import SurveySidebar from "./management/SurveySidebar"; +import { userContext } from "compendium/providers/UserProvider"; +import { fetchSurveys, fetchActiveSurveyYear } from "compendium/survey/api/survey"; +import { Survey } from "compendium/survey/api/types"; +import SurveySidebar from "compendium/survey/management/SurveySidebar"; import * as XLSX from "xlsx"; -import useMatomo from "../matomo/UseMatomo"; +import useMatomo from "compendium/matomo/UseMatomo"; const SurveyTable = () => { diff --git a/compendium-frontend/src/survey/SurveyComponent.tsx b/compendium-frontend/src/survey/SurveyComponent.tsx index 6e48c310..70c80331 100644 --- a/compendium-frontend/src/survey/SurveyComponent.tsx +++ b/compendium-frontend/src/survey/SurveyComponent.tsx @@ -1,7 +1,7 @@ import { useEffect } from "react"; import { Question } from "survey-core"; import { Survey } from "survey-react-ui"; -import { VerificationStatus } from './Schema'; +import { VerificationStatus } from 'compendium/survey/Schema'; function customDescriptionCallback(_, options) { // get the customDescription for matrix rows and set it in the title diff --git a/compendium-frontend/src/survey/SurveyContainerComponent.tsx b/compendium-frontend/src/survey/SurveyContainerComponent.tsx index 5661a7c0..1b080acb 100644 --- a/compendium-frontend/src/survey/SurveyContainerComponent.tsx +++ b/compendium-frontend/src/survey/SurveyContainerComponent.tsx @@ -3,17 +3,17 @@ import { Container } from "react-bootstrap"; import toast, { Toaster } from "react-hot-toast"; import { Model, Serializer } from "survey-core"; import { useParams } from "react-router-dom"; -import SurveyComponent from "./SurveyComponent"; -import SurveyNavigationComponent from "./SurveyNavigationComponent"; -import { VerificationStatus } from './Schema'; -import Prompt from "./Prompt"; +import SurveyComponent from "compendium/survey/SurveyComponent"; +import SurveyNavigationComponent from "compendium/survey/SurveyNavigationComponent"; +import { VerificationStatus } from 'compendium/survey/Schema'; +import Prompt from "compendium/survey/Prompt"; import "survey-core/modern.min.css"; -import './survey.scss'; -import useMatomo from "../matomo/UseMatomo"; +import 'compendium/survey/survey.scss'; +import useMatomo from "compendium/matomo/UseMatomo"; import { FunctionFactory } from "survey-core"; -import { validateQuestion, oldValidateWebsiteUrl } from "./validation/validation"; -import SurveySidebar from "./management/SurveySidebar"; -import { userContext } from "../providers/UserProvider"; +import { validateQuestion, oldValidateWebsiteUrl } from "compendium/survey/validation/validation"; +import SurveySidebar from "compendium/survey/management/SurveySidebar"; +import { userContext } from "compendium/providers/UserProvider"; Serializer.addProperty("itemvalue", "customDescription:text"); Serializer.addProperty("question", "hideCheckboxLabels:boolean"); diff --git a/compendium-frontend/src/survey/SurveyNavigationComponent.tsx b/compendium-frontend/src/survey/SurveyNavigationComponent.tsx index 10fd4991..d03af8f4 100644 --- a/compendium-frontend/src/survey/SurveyNavigationComponent.tsx +++ b/compendium-frontend/src/survey/SurveyNavigationComponent.tsx @@ -1,7 +1,7 @@ import { useContext } from "react"; -import ProgressBar from './ProgressBar'; +import ProgressBar from 'compendium/survey/ProgressBar'; import { Container, Row } from "react-bootstrap"; -import { userContext } from "../providers/UserProvider"; +import { userContext } from "compendium/providers/UserProvider"; function SurveyNavigationComponent({ surveyModel, surveyActions, year, nren, children, onPageChange }) { diff --git a/compendium-frontend/src/survey/api/survey.ts b/compendium-frontend/src/survey/api/survey.ts index e61e6ceb..fb7eb60c 100644 --- a/compendium-frontend/src/survey/api/survey.ts +++ b/compendium-frontend/src/survey/api/survey.ts @@ -1,4 +1,4 @@ -import { Survey } from './types'; +import { Survey } from 'compendium/survey/api/types'; export async function fetchSurveys(): Promise<Survey[]> { try { diff --git a/compendium-frontend/src/survey/management/SurveyManagementComponent.tsx b/compendium-frontend/src/survey/management/SurveyManagementComponent.tsx index d1fedda1..aa318346 100644 --- a/compendium-frontend/src/survey/management/SurveyManagementComponent.tsx +++ b/compendium-frontend/src/survey/management/SurveyManagementComponent.tsx @@ -5,15 +5,15 @@ import Row from 'react-bootstrap/Row'; import Table from 'react-bootstrap/Table'; import Container from "react-bootstrap/Container"; import toast, { Toaster } from "react-hot-toast"; -import { SurveyStatus } from "../Schema"; -import { fetchSurveys } from "../api/survey"; -import { Survey } from "../api/types"; -import SurveySidebar from "./SurveySidebar"; +import { SurveyStatus } from "compendium/survey/Schema"; +import { fetchSurveys } from "compendium/survey/api/survey"; +import { Survey } from "compendium/survey/api/types"; +import SurveySidebar from "compendium/survey/management/SurveySidebar"; import { Spinner } from "react-bootstrap"; -import StatusButton from "../StatusButton"; +import StatusButton from "compendium/survey/StatusButton"; import { Link } from "react-router-dom"; import { debounce } from "lodash" -import { validateSurvey } from "../utils"; +import { validateSurvey } from "compendium/survey/utils"; function updateSurveyNotes(year: number, nren_id: number, notes: string) { fetch('/api/survey/' + year + '/' + nren_id + '/notes', { diff --git a/compendium-frontend/src/survey/management/SurveySidebar.tsx b/compendium-frontend/src/survey/management/SurveySidebar.tsx index 248aaa19..6a70d6e7 100644 --- a/compendium-frontend/src/survey/management/SurveySidebar.tsx +++ b/compendium-frontend/src/survey/management/SurveySidebar.tsx @@ -1,6 +1,5 @@ -import React from 'react'; -import Link from '../../components/LinkWithHighlight'; -import Sidebar from '../../components/sidebar/SideBar'; +import Link from 'compendium/components/LinkWithHighlight'; +import Sidebar from 'compendium/components/sidebar/SideBar'; const SurveySidebar = () => { return ( diff --git a/compendium-frontend/src/survey/management/UserManagementComponent.tsx b/compendium-frontend/src/survey/management/UserManagementComponent.tsx index 101c73d2..69070404 100644 --- a/compendium-frontend/src/survey/management/UserManagementComponent.tsx +++ b/compendium-frontend/src/survey/management/UserManagementComponent.tsx @@ -1,10 +1,10 @@ import React, { useState, useEffect, useContext } from "react"; import { Container, Table, Row, Form, InputGroup, Accordion, Button } from "react-bootstrap"; import toast, { Toaster } from "react-hot-toast"; -import { userContext } from "../../providers/UserProvider"; -import { useConfig } from "../../helpers/useConfig"; -import { User, Nren } from "../Schema"; -import SurveySidebar from "./SurveySidebar"; +import { userContext } from "compendium/providers/UserProvider"; +import { useConfig } from "compendium/helpers/useConfig"; +import { User, Nren } from "compendium/Schema"; +import SurveySidebar from "compendium/survey/management/SurveySidebar"; import { FaCheck } from "react-icons/fa"; import { debounce } from "lodash"; diff --git a/compendium-frontend/src/survey/utils.ts b/compendium-frontend/src/survey/utils.ts index a713a8a2..5671d44f 100644 --- a/compendium-frontend/src/survey/utils.ts +++ b/compendium-frontend/src/survey/utils.ts @@ -1,4 +1,4 @@ -import { validateQuestion, oldValidateWebsiteUrl } from './validation/validation'; +import { validateQuestion, oldValidateWebsiteUrl } from 'compendium/survey/validation/validation'; export async function validateSurvey(year, nren) { const { Model, FunctionFactory, Serializer } = await import('survey-core'); diff --git a/compendium-frontend/tsconfig.json b/compendium-frontend/tsconfig.json index d4521f34..02cac5bc 100644 --- a/compendium-frontend/tsconfig.json +++ b/compendium-frontend/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "paths": { - "@/*": ["./src/*"], + "compendium/*": ["./src/*"], }, "target": "ESNext", "lib": ["dom", "dom.iterable", "ESNext"], diff --git a/compendium-frontend/vite.config.ts b/compendium-frontend/vite.config.ts index 93d73a63..64fd3b70 100644 --- a/compendium-frontend/vite.config.ts +++ b/compendium-frontend/vite.config.ts @@ -73,7 +73,7 @@ export default defineConfig({ }, resolve: { alias: { - '@': path.resolve(__dirname, 'src'), + 'compendium': path.resolve(__dirname, 'src'), } }, }) \ No newline at end of file diff --git a/compendium_v2/static/AlienWave-DhaC80F-.js b/compendium_v2/static/AlienWave-AJrmdFtI.js similarity index 97% rename from compendium_v2/static/AlienWave-DhaC80F-.js rename to compendium_v2/static/AlienWave-AJrmdFtI.js index 912b8764..a3827370 100644 --- a/compendium_v2/static/AlienWave-DhaC80F-.js +++ b/compendium_v2/static/AlienWave-AJrmdFtI.js @@ -1,4 +1,4 @@ -import{c as T,r as Y,F as S,j as v,t as j,S as E}from"./index.js";import{u as W,g as C,n as F,D as M,F as P,f as R}from"./useData-Ct8E3VVL.js";import{P as L}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function K(){const e=T.c(30);let a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=d=>d.alien_wave_third_party!==null,e[0]=a):a=e[0];const x=a,{filterSelection:t,setFilterSelection:p}=Y.useContext(S),{data:_,years:w,nrens:y}=W("/api/alien-wave",p,x);let s,h;if(e[1]!==_||e[2]!==t.selectedNrens||e[3]!==t.selectedYears){let d;e[6]!==t.selectedNrens||e[7]!==t.selectedYears?(d=g=>t.selectedYears.includes(g.year)&&t.selectedNrens.includes(g.nren),e[6]=t.selectedNrens,e[7]=t.selectedYears,e[8]=d):d=e[8],s=_.filter(d);const D=C(s,"alien_wave_third_party");h=F(D,A),e[1]=_,e[2]=t.selectedNrens,e[3]=t.selectedYears,e[4]=s,e[5]=h}else s=e[4],h=e[5];const b=h;let n,m;e[9]===Symbol.for("react.memo_cache_sentinel")?(n=["Yes","Planned","No"],m=new Map([[n[0],"yes"],[n[1],"planned"],[n[2],"no"]]),e[9]=n,e[10]=m):(n=e[9],m=e[10]);const k=m;let i;e[11]!==w?(i=[...w],e[11]=w,e[12]=i):i=e[12];let r;e[13]!==y?(r=y.values(),e[13]=y,e[14]=r):r=e[14];let l;e[15]!==r?(l=[...r],e[15]=r,e[16]=l):l=e[16];let o;e[17]!==i||e[18]!==l?(o={availableYears:i,availableNrens:l},e[17]=i,e[18]=l,e[19]=o):o=e[19];let u;e[20]!==t||e[21]!==p||e[22]!==o?(u=v.jsx(P,{filterOptions:o,filterSelection:t,setFilterSelection:p,coloredYears:!0}),e[20]=t,e[21]=p,e[22]=o,e[23]=u):u=e[23];const N=u;let c;e[24]!==b?(c=v.jsx(R,{children:v.jsx(L,{columns:n,columnLookup:k,dataLookup:b})}),e[24]=b,e[25]=c):c=e[25];let f;return e[26]!==N||e[27]!==s||e[28]!==c?(f=v.jsx(M,{title:j["alien-wave"],description:`The table below shows NREN usage of alien wavelength or lightpath services provided by third parties. +import{c as T,r as Y,F as S,j as v,t as j,S as E}from"./index.js";import{u as W,g as C,n as F,D as M,F as P,f as R}from"./useData-CYCBVZdC.js";import{P as L}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function K(){const e=T.c(30);let a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=d=>d.alien_wave_third_party!==null,e[0]=a):a=e[0];const x=a,{filterSelection:t,setFilterSelection:p}=Y.useContext(S),{data:_,years:w,nrens:y}=W("/api/alien-wave",p,x);let s,h;if(e[1]!==_||e[2]!==t.selectedNrens||e[3]!==t.selectedYears){let d;e[6]!==t.selectedNrens||e[7]!==t.selectedYears?(d=g=>t.selectedYears.includes(g.year)&&t.selectedNrens.includes(g.nren),e[6]=t.selectedNrens,e[7]=t.selectedYears,e[8]=d):d=e[8],s=_.filter(d);const D=C(s,"alien_wave_third_party");h=F(D,A),e[1]=_,e[2]=t.selectedNrens,e[3]=t.selectedYears,e[4]=s,e[5]=h}else s=e[4],h=e[5];const b=h;let n,m;e[9]===Symbol.for("react.memo_cache_sentinel")?(n=["Yes","Planned","No"],m=new Map([[n[0],"yes"],[n[1],"planned"],[n[2],"no"]]),e[9]=n,e[10]=m):(n=e[9],m=e[10]);const k=m;let i;e[11]!==w?(i=[...w],e[11]=w,e[12]=i):i=e[12];let r;e[13]!==y?(r=y.values(),e[13]=y,e[14]=r):r=e[14];let l;e[15]!==r?(l=[...r],e[15]=r,e[16]=l):l=e[16];let o;e[17]!==i||e[18]!==l?(o={availableYears:i,availableNrens:l},e[17]=i,e[18]=l,e[19]=o):o=e[19];let u;e[20]!==t||e[21]!==p||e[22]!==o?(u=v.jsx(P,{filterOptions:o,filterSelection:t,setFilterSelection:p,coloredYears:!0}),e[20]=t,e[21]=p,e[22]=o,e[23]=u):u=e[23];const N=u;let c;e[24]!==b?(c=v.jsx(R,{children:v.jsx(L,{columns:n,columnLookup:k,dataLookup:b})}),e[24]=b,e[25]=c):c=e[25];let f;return e[26]!==N||e[27]!==s||e[28]!==c?(f=v.jsx(M,{title:j["alien-wave"],description:`The table below shows NREN usage of alien wavelength or lightpath services provided by third parties. It does not include alien waves used internally inside the NRENs own networks, as that is covered in another table. In the optical network world, the term “alien wavelength” or “alien wave” (AW) is used to describe wavelengths in a DWDM line system that pass through the network, i.e. they are not sourced/terminated by the line-system operator’s diff --git a/compendium_v2/static/AlienWaveInternal-CeuaDpIY.js b/compendium_v2/static/AlienWaveInternal-BkYZMjCR.js similarity index 95% rename from compendium_v2/static/AlienWaveInternal-CeuaDpIY.js rename to compendium_v2/static/AlienWaveInternal-BkYZMjCR.js index 69e2a790..e1d0e94e 100644 --- a/compendium_v2/static/AlienWaveInternal-CeuaDpIY.js +++ b/compendium_v2/static/AlienWaveInternal-BkYZMjCR.js @@ -1,4 +1,4 @@ -import{c as k,r as Y,F as S,j as w,t as j,S as F}from"./index.js";import{u as M,g as T,D as W,F as C,f as E}from"./useData-Ct8E3VVL.js";import{P}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function B(){const e=k.c(30);let m;e[0]===Symbol.for("react.memo_cache_sentinel")?(m=c=>c.alien_wave_internal!==null,e[0]=m):m=e[0];const N=m,{filterSelection:t,setFilterSelection:d}=Y.useContext(S),{data:v,years:g,nrens:x}=M("/api/alien-wave",d,N);let s,p;if(e[1]!==v||e[2]!==t.selectedNrens||e[3]!==t.selectedYears){let c;e[6]!==t.selectedNrens||e[7]!==t.selectedYears?(c=D=>t.selectedYears.includes(D.year)&&t.selectedNrens.includes(D.nren),e[6]=t.selectedNrens,e[7]=t.selectedYears,e[8]=c):c=e[8],s=v.filter(c),p=T(s,"alien_wave_internal"),e[1]=v,e[2]=t.selectedNrens,e[3]=t.selectedYears,e[4]=s,e[5]=p}else s=e[4],p=e[5];const y=p;let n,u;e[9]===Symbol.for("react.memo_cache_sentinel")?(n=["Yes","No"],u=new Map([[n[0],"True"],[n[1],"False"]]),e[9]=n,e[10]=u):(n=e[9],u=e[10]);const b=u;let a;e[11]!==g?(a=[...g],e[11]=g,e[12]=a):a=e[12];let l;e[13]!==x?(l=x.values(),e[13]=x,e[14]=l):l=e[14];let i;e[15]!==l?(i=[...l],e[15]=l,e[16]=i):i=e[16];let r;e[17]!==a||e[18]!==i?(r={availableYears:a,availableNrens:i},e[17]=a,e[18]=i,e[19]=r):r=e[19];let h;e[20]!==t||e[21]!==d||e[22]!==r?(h=w.jsx(C,{filterOptions:r,filterSelection:t,setFilterSelection:d,coloredYears:!0}),e[20]=t,e[21]=d,e[22]=r,e[23]=h):h=e[23];const _=h;let o;e[24]!==y?(o=w.jsx(E,{children:w.jsx(P,{columns:n,columnLookup:b,dataLookup:y})}),e[24]=y,e[25]=o):o=e[25];let f;return e[26]!==_||e[27]!==s||e[28]!==o?(f=w.jsx(W,{title:j["alien-wave-internal"],description:`The table below shows NREN usage of alien waves internally within their own networks. +import{c as k,r as Y,F as S,j as w,t as j,S as F}from"./index.js";import{u as M,g as T,D as W,F as C,f as E}from"./useData-CYCBVZdC.js";import{P}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function B(){const e=k.c(30);let m;e[0]===Symbol.for("react.memo_cache_sentinel")?(m=c=>c.alien_wave_internal!==null,e[0]=m):m=e[0];const N=m,{filterSelection:t,setFilterSelection:d}=Y.useContext(S),{data:v,years:g,nrens:x}=M("/api/alien-wave",d,N);let s,p;if(e[1]!==v||e[2]!==t.selectedNrens||e[3]!==t.selectedYears){let c;e[6]!==t.selectedNrens||e[7]!==t.selectedYears?(c=D=>t.selectedYears.includes(D.year)&&t.selectedNrens.includes(D.nren),e[6]=t.selectedNrens,e[7]=t.selectedYears,e[8]=c):c=e[8],s=v.filter(c),p=T(s,"alien_wave_internal"),e[1]=v,e[2]=t.selectedNrens,e[3]=t.selectedYears,e[4]=s,e[5]=p}else s=e[4],p=e[5];const y=p;let n,u;e[9]===Symbol.for("react.memo_cache_sentinel")?(n=["Yes","No"],u=new Map([[n[0],"True"],[n[1],"False"]]),e[9]=n,e[10]=u):(n=e[9],u=e[10]);const b=u;let a;e[11]!==g?(a=[...g],e[11]=g,e[12]=a):a=e[12];let l;e[13]!==x?(l=x.values(),e[13]=x,e[14]=l):l=e[14];let i;e[15]!==l?(i=[...l],e[15]=l,e[16]=i):i=e[16];let r;e[17]!==a||e[18]!==i?(r={availableYears:a,availableNrens:i},e[17]=a,e[18]=i,e[19]=r):r=e[19];let h;e[20]!==t||e[21]!==d||e[22]!==r?(h=w.jsx(C,{filterOptions:r,filterSelection:t,setFilterSelection:d,coloredYears:!0}),e[20]=t,e[21]=d,e[22]=r,e[23]=h):h=e[23];const _=h;let o;e[24]!==y?(o=w.jsx(E,{children:w.jsx(P,{columns:n,columnLookup:b,dataLookup:y})}),e[24]=y,e[25]=o):o=e[25];let f;return e[26]!==_||e[27]!==s||e[28]!==o?(f=w.jsx(W,{title:j["alien-wave-internal"],description:`The table below shows NREN usage of alien waves internally within their own networks. This includes, for example, alien waves used between two equipment vendors, eg. coloured optics on routes carried over DWDM (dense wavelength division multiplexing) equipment. diff --git a/compendium_v2/static/Audits-BldRnziS.js b/compendium_v2/static/Audits-CuvZdHfU.js similarity index 97% rename from compendium_v2/static/Audits-BldRnziS.js rename to compendium_v2/static/Audits-CuvZdHfU.js index 21b18dbe..e617a814 100644 --- a/compendium_v2/static/Audits-BldRnziS.js +++ b/compendium_v2/static/Audits-CuvZdHfU.js @@ -1,4 +1,4 @@ -import{c as Y,r as w,F as j,j as x,t as F,S as P}from"./index.js";import{u as C,g as D,n as E,D as L,F as R,f as M}from"./useData-Ct8E3VVL.js";import{P as A}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function K(){const e=Y.c(30);let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=d=>d.audits!==null,e[0]=s):s=e[0];const k=s,{filterSelection:t,setFilterSelection:u}=w.useContext(j),{data:b,years:y,nrens:N}=C("/api/standards",u,k);let i,m;if(e[1]!==b||e[2]!==t.selectedNrens||e[3]!==t.selectedYears){let d;e[6]!==t.selectedNrens||e[7]!==t.selectedYears?(d=_=>t.selectedYears.includes(_.year)&&t.selectedNrens.includes(_.nren)&&_.audits!==null,e[6]=t.selectedNrens,e[7]=t.selectedYears,e[8]=d):d=e[8],i=b.filter(d);const T=D(i,"audits");m=E(T,I),e[1]=b,e[2]=t.selectedNrens,e[3]=t.selectedYears,e[4]=i,e[5]=m}else i=e[4],m=e[5];const g=m;let a,p;e[9]===Symbol.for("react.memo_cache_sentinel")?(a=["Yes","No"],p=new Map([[a[0],"True"],[a[1],"False"]]),e[9]=a,e[10]=p):(a=e[9],p=e[10]);const S=p;let r;e[11]!==y?(r=[...y],e[11]=y,e[12]=r):r=e[12];let l;e[13]!==N?(l=N.values(),e[13]=N,e[14]=l):l=e[14];let o;e[15]!==l?(o=[...l],e[15]=l,e[16]=o):o=e[16];let n;e[17]!==r||e[18]!==o?(n={availableYears:r,availableNrens:o},e[17]=r,e[18]=o,e[19]=n):n=e[19];let f;e[20]!==t||e[21]!==u||e[22]!==n?(f=x.jsx(R,{filterOptions:n,filterSelection:t,setFilterSelection:u,coloredYears:!0}),e[20]=t,e[21]=u,e[22]=n,e[23]=f):f=e[23];const v=f;let c;e[24]!==g?(c=x.jsx(M,{children:x.jsx(A,{columns:a,columnLookup:S,dataLookup:g})}),e[24]=g,e[25]=c):c=e[25];let h;return e[26]!==v||e[27]!==i||e[28]!==c?(h=x.jsx(L,{title:F.audits,description:`The table below shows whether NRENs have external and/or internal audits +import{c as Y,r as w,F as j,j as x,t as F,S as P}from"./index.js";import{u as C,g as D,n as E,D as L,F as R,f as M}from"./useData-CYCBVZdC.js";import{P as A}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function K(){const e=Y.c(30);let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=d=>d.audits!==null,e[0]=s):s=e[0];const k=s,{filterSelection:t,setFilterSelection:u}=w.useContext(j),{data:b,years:y,nrens:N}=C("/api/standards",u,k);let i,m;if(e[1]!==b||e[2]!==t.selectedNrens||e[3]!==t.selectedYears){let d;e[6]!==t.selectedNrens||e[7]!==t.selectedYears?(d=_=>t.selectedYears.includes(_.year)&&t.selectedNrens.includes(_.nren)&&_.audits!==null,e[6]=t.selectedNrens,e[7]=t.selectedYears,e[8]=d):d=e[8],i=b.filter(d);const T=D(i,"audits");m=E(T,I),e[1]=b,e[2]=t.selectedNrens,e[3]=t.selectedYears,e[4]=i,e[5]=m}else i=e[4],m=e[5];const g=m;let a,p;e[9]===Symbol.for("react.memo_cache_sentinel")?(a=["Yes","No"],p=new Map([[a[0],"True"],[a[1],"False"]]),e[9]=a,e[10]=p):(a=e[9],p=e[10]);const S=p;let r;e[11]!==y?(r=[...y],e[11]=y,e[12]=r):r=e[12];let l;e[13]!==N?(l=N.values(),e[13]=N,e[14]=l):l=e[14];let o;e[15]!==l?(o=[...l],e[15]=l,e[16]=o):o=e[16];let n;e[17]!==r||e[18]!==o?(n={availableYears:r,availableNrens:o},e[17]=r,e[18]=o,e[19]=n):n=e[19];let f;e[20]!==t||e[21]!==u||e[22]!==n?(f=x.jsx(R,{filterOptions:n,filterSelection:t,setFilterSelection:u,coloredYears:!0}),e[20]=t,e[21]=u,e[22]=n,e[23]=f):f=e[23];const v=f;let c;e[24]!==g?(c=x.jsx(M,{children:x.jsx(A,{columns:a,columnLookup:S,dataLookup:g})}),e[24]=g,e[25]=c):c=e[25];let h;return e[26]!==v||e[27]!==i||e[28]!==c?(h=x.jsx(L,{title:F.audits,description:`The table below shows whether NRENs have external and/or internal audits of the information security management systems (eg. risk management and policies). Where extra information has been provided, such as whether a certified security auditor on ISP 27001 is performing the audits, it can be viewed by hovering over the indicator diff --git a/compendium_v2/static/Automation-BAaw7w82.js b/compendium_v2/static/Automation-DItliT93.js similarity index 98% rename from compendium_v2/static/Automation-BAaw7w82.js rename to compendium_v2/static/Automation-DItliT93.js index 5d331bca..7c94daac 100644 --- a/compendium_v2/static/Automation-BAaw7w82.js +++ b/compendium_v2/static/Automation-DItliT93.js @@ -1,4 +1,4 @@ -import{c as ee,r as te,F as se,S as ne,j as t,t as le}from"./index.js";import{u as oe,g as re,F as ie,D as ae,f as ce}from"./useData-Ct8E3VVL.js";import{C as Q}from"./ColorPill-CXvWIfWz.js";import{T as he}from"./Table-ClWM2_rS.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";function we(){const e=ee.c(69),{filterSelection:l,setFilterSelection:p}=te.useContext(se),{data:U,years:c,nrens:R}=oe("/api/network-automation",p);let m,f,x,j,u,g,w,y,_,h,d,b,S,Y,v;if(e[0]!==l||e[1]!==R||e[2]!==U||e[3]!==p||e[4]!==c){let A;e[20]!==l.selectedNrens||e[21]!==l.selectedYears?(A=F=>l.selectedYears.includes(F.year)&&l.selectedNrens.includes(F.nren),e[20]=l.selectedNrens,e[21]=l.selectedYears,e[22]=A):A=e[22];const V=U.filter(A),X=re(V,"network_automation");let C;e[23]!==c?(C=[...c],e[23]=c,e[24]=C):C=e[24];let T;e[25]!==R?(T=R.values(),e[25]=R,e[26]=T):T=e[26];let D;e[27]!==T?(D=[...T],e[27]=T,e[28]=D):D=e[28];let $;e[29]!==C||e[30]!==D?($={availableYears:C,availableNrens:D},e[29]=C,e[30]=D,e[31]=$):$=e[31];let L;e[32]!==l||e[33]!==p||e[34]!==$?(L=t.jsx(ie,{filterOptions:$,filterSelection:l,setFilterSelection:p,coloredYears:!0}),e[32]=l,e[33]=p,e[34]=$,e[35]=L):L=e[35];const Z=L;let M;e[36]!==c?(M=F=>c.has(F),e[36]=c,e[37]=M):M=e[37];const W=[...l.selectedYears.filter(M)].sort();x=ae,b=le["network-automation"],S=`The table below shows which NRENs have, or plan to, automate their +import{c as ee,r as te,F as se,S as ne,j as t,t as le}from"./index.js";import{u as oe,g as re,F as ie,D as ae,f as ce}from"./useData-CYCBVZdC.js";import{C as Q}from"./ColorPill-CXvWIfWz.js";import{T as he}from"./Table-ClWM2_rS.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";function we(){const e=ee.c(69),{filterSelection:l,setFilterSelection:p}=te.useContext(se),{data:U,years:c,nrens:R}=oe("/api/network-automation",p);let m,f,x,j,u,g,w,y,_,h,d,b,S,Y,v;if(e[0]!==l||e[1]!==R||e[2]!==U||e[3]!==p||e[4]!==c){let A;e[20]!==l.selectedNrens||e[21]!==l.selectedYears?(A=F=>l.selectedYears.includes(F.year)&&l.selectedNrens.includes(F.nren),e[20]=l.selectedNrens,e[21]=l.selectedYears,e[22]=A):A=e[22];const V=U.filter(A),X=re(V,"network_automation");let C;e[23]!==c?(C=[...c],e[23]=c,e[24]=C):C=e[24];let T;e[25]!==R?(T=R.values(),e[25]=R,e[26]=T):T=e[26];let D;e[27]!==T?(D=[...T],e[27]=T,e[28]=D):D=e[28];let $;e[29]!==C||e[30]!==D?($={availableYears:C,availableNrens:D},e[29]=C,e[30]=D,e[31]=$):$=e[31];let L;e[32]!==l||e[33]!==p||e[34]!==$?(L=t.jsx(ie,{filterOptions:$,filterSelection:l,setFilterSelection:p,coloredYears:!0}),e[32]=l,e[33]=p,e[34]=$,e[35]=L):L=e[35];const Z=L;let M;e[36]!==c?(M=F=>c.has(F),e[36]=c,e[37]=M):M=e[37];const W=[...l.selectedYears.filter(M)].sort();x=ae,b=le["network-automation"],S=`The table below shows which NRENs have, or plan to, automate their operational processes, with specification of which processes, and the names of software and tools used for this given when appropriate. Where NRENs indicated that they are using automation for some network tasks, diff --git a/compendium_v2/static/Budget-BVbbdsI6.js b/compendium_v2/static/Budget-BD3tWhAz.js similarity index 92% rename from compendium_v2/static/Budget-BVbbdsI6.js rename to compendium_v2/static/Budget-BD3tWhAz.js index 9dd6635e..a7fb7bbe 100644 --- a/compendium_v2/static/Budget-BVbbdsI6.js +++ b/compendium_v2/static/Budget-BD3tWhAz.js @@ -1 +1 @@ -import{c as _,r as S,F as j,j as s,t as v,S as C}from"./index.js";import{L as R}from"./index-C4Nuqrw6.js";import{C as L,a as w,L as D,P as F,b as P,p as M,c as O,d as T,u as B,e as G,D as k,F as q,f as A}from"./useData-Ct8E3VVL.js";import{g as H}from"./charthelpers-DmM6tvdh.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";L.register(w,D,F,P,M,O,T);function Q(){const e=_.c(24),{filterSelection:t,setFilterSelection:o}=S.useContext(j),{data:m,nrens:b}=B("/api/budget",o);let a,l;if(e[0]!==m||e[1]!==t.selectedNrens){let h;e[4]!==t.selectedNrens?(h=E=>t.selectedNrens.includes(E.nren),e[4]=t.selectedNrens,e[5]=h):h=e[5],a=m.filter(h),l=G(a,"budget"),e[0]=m,e[1]=t.selectedNrens,e[2]=a,e[3]=l}else a=e[2],l=e[3];const N=l;let c;e[6]===Symbol.for("react.memo_cache_sentinel")?(c=[],e[6]=c):c=e[6];let i;e[7]!==b?(i=b.values(),e[7]=b,e[8]=i):i=e[8];let r;e[9]!==i?(r={availableYears:c,availableNrens:[...i]},e[9]=i,e[10]=r):r=e[10];let d;e[11]!==t||e[12]!==o||e[13]!==r?(d=s.jsx(q,{filterOptions:r,filterSelection:t,setFilterSelection:o}),e[11]=t,e[12]=o,e[13]=r,e[14]=d):d=e[14];const y=d;let f;e[15]===Symbol.for("react.memo_cache_sentinel")?(f=H({title:"Budget in M€",tooltipUnit:"M€",unit:"M€"}),e[15]=f):f=e[15];const x=f;let g;e[16]===Symbol.for("react.memo_cache_sentinel")?(g=s.jsx("br",{}),e[16]=g):g=e[16];let p;e[17]===Symbol.for("react.memo_cache_sentinel")?(p=s.jsxs("span",{children:["The graph shows NREN budgets per year (in millions Euro). When budgets are not per calendar year, the NREN is asked to provide figures of the budget that covers the largest part of the year, and to include any GÉANT subsidy they may receive.",g,"NRENs are free to decide how they define the part of their organisation dedicated to core NREN business, and the budget. The merging of different parts of a large NREN into a single organisation, with a single budget can lead to significant changes between years, as can receiving funding for specific time-bound projects.",s.jsx("br",{}),"Hovering over the graph data points shows the NREN budget for the year. Gaps indicate that the budget question was not filled in for a particular year."]}),e[17]=p):p=e[17];let n;e[18]!==N?(n=s.jsx(A,{children:s.jsx(R,{data:N,options:x})}),e[18]=N,e[19]=n):n=e[19];let u;return e[20]!==y||e[21]!==a||e[22]!==n?(u=s.jsx(k,{title:v.budget,description:p,category:C.Organisation,filter:y,data:a,filename:"budget_data",children:n}),e[20]=y,e[21]=a,e[22]=n,e[23]=u):u=e[23],u}export{Q as default}; +import{c as _,r as S,F as j,j as s,t as v,S as C}from"./index.js";import{L as R}from"./index-BfhfJiKe.js";import{C as L,a as w,L as D,P as F,b as P,p as M,c as O,d as T,u as B,e as G,D as k,F as q,f as A}from"./useData-CYCBVZdC.js";import{g as H}from"./charthelpers-CdmocpOu.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";L.register(w,D,F,P,M,O,T);function Q(){const e=_.c(24),{filterSelection:t,setFilterSelection:o}=S.useContext(j),{data:m,nrens:b}=B("/api/budget",o);let a,l;if(e[0]!==m||e[1]!==t.selectedNrens){let h;e[4]!==t.selectedNrens?(h=E=>t.selectedNrens.includes(E.nren),e[4]=t.selectedNrens,e[5]=h):h=e[5],a=m.filter(h),l=G(a,"budget"),e[0]=m,e[1]=t.selectedNrens,e[2]=a,e[3]=l}else a=e[2],l=e[3];const N=l;let c;e[6]===Symbol.for("react.memo_cache_sentinel")?(c=[],e[6]=c):c=e[6];let i;e[7]!==b?(i=b.values(),e[7]=b,e[8]=i):i=e[8];let r;e[9]!==i?(r={availableYears:c,availableNrens:[...i]},e[9]=i,e[10]=r):r=e[10];let d;e[11]!==t||e[12]!==o||e[13]!==r?(d=s.jsx(q,{filterOptions:r,filterSelection:t,setFilterSelection:o}),e[11]=t,e[12]=o,e[13]=r,e[14]=d):d=e[14];const y=d;let f;e[15]===Symbol.for("react.memo_cache_sentinel")?(f=H({title:"Budget in M€",tooltipUnit:"M€",unit:"M€"}),e[15]=f):f=e[15];const x=f;let g;e[16]===Symbol.for("react.memo_cache_sentinel")?(g=s.jsx("br",{}),e[16]=g):g=e[16];let p;e[17]===Symbol.for("react.memo_cache_sentinel")?(p=s.jsxs("span",{children:["The graph shows NREN budgets per year (in millions Euro). When budgets are not per calendar year, the NREN is asked to provide figures of the budget that covers the largest part of the year, and to include any GÉANT subsidy they may receive.",g,"NRENs are free to decide how they define the part of their organisation dedicated to core NREN business, and the budget. The merging of different parts of a large NREN into a single organisation, with a single budget can lead to significant changes between years, as can receiving funding for specific time-bound projects.",s.jsx("br",{}),"Hovering over the graph data points shows the NREN budget for the year. Gaps indicate that the budget question was not filled in for a particular year."]}),e[17]=p):p=e[17];let n;e[18]!==N?(n=s.jsx(A,{children:s.jsx(R,{data:N,options:x})}),e[18]=N,e[19]=n):n=e[19];let u;return e[20]!==y||e[21]!==a||e[22]!==n?(u=s.jsx(k,{title:v.budget,description:p,category:C.Organisation,filter:y,data:a,filename:"budget_data",children:n}),e[20]=y,e[21]=a,e[22]=n,e[23]=u):u=e[23],u}export{Q as default}; diff --git a/compendium_v2/static/BusinessContinuity-CLtH4Vxm.js b/compendium_v2/static/BusinessContinuity-MvRfhQYb.js similarity index 97% rename from compendium_v2/static/BusinessContinuity-CLtH4Vxm.js rename to compendium_v2/static/BusinessContinuity-MvRfhQYb.js index 0000db70..81c39e5f 100644 --- a/compendium_v2/static/BusinessContinuity-CLtH4Vxm.js +++ b/compendium_v2/static/BusinessContinuity-MvRfhQYb.js @@ -1,4 +1,4 @@ -import{c as v,r as S,F as j,j as y,t as C,S as E}from"./index.js";import{u as F,g as P,n as D,D as L,F as R,f as M}from"./useData-Ct8E3VVL.js";import{P as B}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function Q(){const e=v.c(30);let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=u=>u.business_continuity_plans!==null,e[0]=s):s=e[0];const w=s,{filterSelection:t,setFilterSelection:p}=S.useContext(j),{data:b,years:_,nrens:x}=F("/api/standards",p,w);let n,d;if(e[1]!==b||e[2]!==t.selectedNrens||e[3]!==t.selectedYears){let u;e[6]!==t.selectedNrens||e[7]!==t.selectedYears?(u=k=>t.selectedYears.includes(k.year)&&t.selectedNrens.includes(k.nren)&&k.business_continuity_plans!==null,e[6]=t.selectedNrens,e[7]=t.selectedYears,e[8]=u):u=e[8],n=b.filter(u);const g=P(n,"business_continuity_plans");d=D(g,O),e[1]=b,e[2]=t.selectedNrens,e[3]=t.selectedYears,e[4]=n,e[5]=d}else n=e[4],d=e[5];const N=d;let i,f;e[9]===Symbol.for("react.memo_cache_sentinel")?(i=["Yes","No"],f=new Map([[i[0],"True"],[i[1],"False"]]),e[9]=i,e[10]=f):(i=e[9],f=e[10]);const Y=f;let l;e[11]!==_?(l=[..._],e[11]=_,e[12]=l):l=e[12];let o;e[13]!==x?(o=x.values(),e[13]=x,e[14]=o):o=e[14];let a;e[15]!==o?(a=[...o],e[15]=o,e[16]=a):a=e[16];let r;e[17]!==l||e[18]!==a?(r={availableYears:l,availableNrens:a},e[17]=l,e[18]=a,e[19]=r):r=e[19];let m;e[20]!==t||e[21]!==p||e[22]!==r?(m=y.jsx(R,{filterOptions:r,filterSelection:t,setFilterSelection:p,coloredYears:!0}),e[20]=t,e[21]=p,e[22]=r,e[23]=m):m=e[23];const T=m;let c;e[24]!==N?(c=y.jsx(M,{children:y.jsx(B,{columns:i,columnLookup:Y,dataLookup:N})}),e[24]=N,e[25]=c):c=e[25];let h;return e[26]!==T||e[27]!==n||e[28]!==c?(h=y.jsx(L,{title:C["business-continuity"],description:`The table below shows which NRENs have business continuity plans in place to +import{c as v,r as S,F as j,j as y,t as C,S as E}from"./index.js";import{u as F,g as P,n as D,D as L,F as R,f as M}from"./useData-CYCBVZdC.js";import{P as B}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function Q(){const e=v.c(30);let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s=u=>u.business_continuity_plans!==null,e[0]=s):s=e[0];const w=s,{filterSelection:t,setFilterSelection:p}=S.useContext(j),{data:b,years:_,nrens:x}=F("/api/standards",p,w);let n,d;if(e[1]!==b||e[2]!==t.selectedNrens||e[3]!==t.selectedYears){let u;e[6]!==t.selectedNrens||e[7]!==t.selectedYears?(u=k=>t.selectedYears.includes(k.year)&&t.selectedNrens.includes(k.nren)&&k.business_continuity_plans!==null,e[6]=t.selectedNrens,e[7]=t.selectedYears,e[8]=u):u=e[8],n=b.filter(u);const g=P(n,"business_continuity_plans");d=D(g,O),e[1]=b,e[2]=t.selectedNrens,e[3]=t.selectedYears,e[4]=n,e[5]=d}else n=e[4],d=e[5];const N=d;let i,f;e[9]===Symbol.for("react.memo_cache_sentinel")?(i=["Yes","No"],f=new Map([[i[0],"True"],[i[1],"False"]]),e[9]=i,e[10]=f):(i=e[9],f=e[10]);const Y=f;let l;e[11]!==_?(l=[..._],e[11]=_,e[12]=l):l=e[12];let o;e[13]!==x?(o=x.values(),e[13]=x,e[14]=o):o=e[14];let a;e[15]!==o?(a=[...o],e[15]=o,e[16]=a):a=e[16];let r;e[17]!==l||e[18]!==a?(r={availableYears:l,availableNrens:a},e[17]=l,e[18]=a,e[19]=r):r=e[19];let m;e[20]!==t||e[21]!==p||e[22]!==r?(m=y.jsx(R,{filterOptions:r,filterSelection:t,setFilterSelection:p,coloredYears:!0}),e[20]=t,e[21]=p,e[22]=r,e[23]=m):m=e[23];const T=m;let c;e[24]!==N?(c=y.jsx(M,{children:y.jsx(B,{columns:i,columnLookup:Y,dataLookup:N})}),e[24]=N,e[25]=c):c=e[25];let h;return e[26]!==T||e[27]!==n||e[28]!==c?(h=y.jsx(L,{title:C["business-continuity"],description:`The table below shows which NRENs have business continuity plans in place to ensure business continuation and operations. Extra details about whether the NREN complies with any international standards, and whether they test the continuity plans regularly can be seen by hovering over the marker. The presence of this extra information diff --git a/compendium_v2/static/CapacityCoreIP-CjzYJH11.js b/compendium_v2/static/CapacityCoreIP-BYeiJxnz.js similarity index 90% rename from compendium_v2/static/CapacityCoreIP-CjzYJH11.js rename to compendium_v2/static/CapacityCoreIP-BYeiJxnz.js index a4135139..d7107e88 100644 --- a/compendium_v2/static/CapacityCoreIP-CjzYJH11.js +++ b/compendium_v2/static/CapacityCoreIP-BYeiJxnz.js @@ -1,3 +1,3 @@ -import{c as P,r as Y,F as I,j as y,S as G,t as R}from"./index.js";import{B as L}from"./index-C4Nuqrw6.js";import{C as O,a as $,L as A,B as M,p as T,c as U,d as q,u as z,o as H,D as J,F as K,f as Q}from"./useData-Ct8E3VVL.js";import{p as V}from"./chartjs-plugin-datalabels.esm-BI98Iz1j.js";import{a as W}from"./charthelpers-DmM6tvdh.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";O.register($,A,M,T,U,q);function oe(){const e=P.c(39);let b;e[0]===Symbol.for("react.memo_cache_sentinel")?(b=n=>n.typical_backbone_capacity!=null,e[0]=b):b=e[0];const B=b,{filterSelection:t,setFilterSelection:s}=Y.useContext(I),{data:N,years:d,nrens:u}=z("/api/capacity",s,B);let i,l,a,g;if(e[1]!==N||e[2]!==t||e[3]!==u||e[4]!==s||e[5]!==d){let n;e[10]!==t.selectedNrens||e[11]!==t.selectedYears?(n=j=>t.selectedYears.includes(j.year)&&t.selectedNrens.includes(j.nren)&&B(j),e[10]=t.selectedNrens,e[11]=t.selectedYears,e[12]=n):n=e[12],a=N.filter(n),i=H(a,"typical_backbone_capacity","Backbone IP Capacity");let p;e[13]!==d?(p=[...d],e[13]=d,e[14]=p):p=e[14];let f;e[15]!==u?(f=u.values(),e[15]=u,e[16]=f):f=e[16];let m;e[17]!==f?(m=[...f],e[17]=f,e[18]=m):m=e[18];let h;e[19]!==p||e[20]!==m?(h={availableYears:p,availableNrens:m},e[19]=p,e[20]=m,e[21]=h):h=e[21];let S;e[22]!==t||e[23]!==s||e[24]!==h?(S=y.jsx(K,{filterOptions:h,filterSelection:t,setFilterSelection:s}),e[22]=t,e[23]=s,e[24]=h,e[25]=S):S=e[25],l=S,g=Array.from(new Set(a.map(X))),e[1]=N,e[2]=t,e[3]=u,e[4]=s,e[5]=d,e[6]=i,e[7]=l,e[8]=a,e[9]=g}else i=e[6],l=e[7],a=e[8],g=e[9];const w=g.length,D=Math.max(w*t.selectedYears.length*1.5+5,50),v=R["capacity-core-ip"],E=`The graph below shows the typical core usable backbone IP capacity of +import{c as P,r as Y,F as I,j as y,S as G,t as R}from"./index.js";import{B as L}from"./index-BfhfJiKe.js";import{C as O,a as $,L as A,B as M,p as T,c as U,d as q,u as z,o as H,D as J,F as K,f as Q}from"./useData-CYCBVZdC.js";import{p as V}from"./chartjs-plugin-datalabels.esm-CzQRWEly.js";import{a as W}from"./charthelpers-CdmocpOu.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";O.register($,A,M,T,U,q);function oe(){const e=P.c(39);let b;e[0]===Symbol.for("react.memo_cache_sentinel")?(b=n=>n.typical_backbone_capacity!=null,e[0]=b):b=e[0];const B=b,{filterSelection:t,setFilterSelection:s}=Y.useContext(I),{data:N,years:d,nrens:u}=z("/api/capacity",s,B);let i,l,a,g;if(e[1]!==N||e[2]!==t||e[3]!==u||e[4]!==s||e[5]!==d){let n;e[10]!==t.selectedNrens||e[11]!==t.selectedYears?(n=j=>t.selectedYears.includes(j.year)&&t.selectedNrens.includes(j.nren)&&B(j),e[10]=t.selectedNrens,e[11]=t.selectedYears,e[12]=n):n=e[12],a=N.filter(n),i=H(a,"typical_backbone_capacity","Backbone IP Capacity");let p;e[13]!==d?(p=[...d],e[13]=d,e[14]=p):p=e[14];let f;e[15]!==u?(f=u.values(),e[15]=u,e[16]=f):f=e[16];let m;e[17]!==f?(m=[...f],e[17]=f,e[18]=m):m=e[18];let h;e[19]!==p||e[20]!==m?(h={availableYears:p,availableNrens:m},e[19]=p,e[20]=m,e[21]=h):h=e[21];let S;e[22]!==t||e[23]!==s||e[24]!==h?(S=y.jsx(K,{filterOptions:h,filterSelection:t,setFilterSelection:s}),e[22]=t,e[23]=s,e[24]=h,e[25]=S):S=e[25],l=S,g=Array.from(new Set(a.map(X))),e[1]=N,e[2]=t,e[3]=u,e[4]=s,e[5]=d,e[6]=i,e[7]=l,e[8]=a,e[9]=g}else i=e[6],l=e[7],a=e[8],g=e[9];const w=g.length,D=Math.max(w*t.selectedYears.length*1.5+5,50),v=R["capacity-core-ip"],E=`The graph below shows the typical core usable backbone IP capacity of NREN networks, expressed in Gbit/s. It refers to the circuit capacity, not the traffic over the network.`;let _;e[26]===Symbol.for("react.memo_cache_sentinel")?(_=W({title:v,tooltipUnit:"Gbit/s",unit:"Gbit/s"}),e[26]=_):_=e[26];const F=_,k=`${D}rem`;let r;e[27]!==k?(r={height:k},e[27]=k,e[28]=r):r=e[28];let x;e[29]===Symbol.for("react.memo_cache_sentinel")?(x=[V],e[29]=x):x=e[29];let c;e[30]!==i?(c=y.jsx(L,{data:i,options:F,plugins:x}),e[30]=i,e[31]=c):c=e[31];let o;e[32]!==r||e[33]!==c?(o=y.jsx(Q,{children:y.jsx("div",{className:"chart-container",style:r,children:c})}),e[32]=r,e[33]=c,e[34]=o):o=e[34];let C;return e[35]!==l||e[36]!==a||e[37]!==o?(C=y.jsx(J,{title:v,description:E,category:G.Network,filter:l,data:a,filename:"capacity_core_ip",children:o}),e[35]=l,e[36]=a,e[37]=o,e[38]=C):C=e[38],C}function X(e){return e.nren}export{oe as default}; diff --git a/compendium_v2/static/CapacityLargestLink-CCiZ1Jtj.js b/compendium_v2/static/CapacityLargestLink-Bov4w9OF.js similarity index 90% rename from compendium_v2/static/CapacityLargestLink-CCiZ1Jtj.js rename to compendium_v2/static/CapacityLargestLink-Bov4w9OF.js index abaa5480..812a6a6e 100644 --- a/compendium_v2/static/CapacityLargestLink-CCiZ1Jtj.js +++ b/compendium_v2/static/CapacityLargestLink-Bov4w9OF.js @@ -1,3 +1,3 @@ -import{c as L,r as Y,F as G,j as u,S as R,t as O}from"./index.js";import{B as P}from"./index-C4Nuqrw6.js";import{C as $,a as A,L as M,B as U,p as W,c as q,d as z,u as H,o as I,D as J,F as K,f as Q}from"./useData-Ct8E3VVL.js";import{p as T}from"./chartjs-plugin-datalabels.esm-BI98Iz1j.js";import{a as V}from"./charthelpers-DmM6tvdh.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";$.register(A,M,U,W,q,z);function ce(){const e=L.c(39);let y;e[0]===Symbol.for("react.memo_cache_sentinel")?(y=o=>o.largest_link_capacity!=null,e[0]=y):y=e[0];const j=y,{filterSelection:t,setFilterSelection:s}=Y.useContext(G),{data:b,years:h,nrens:g}=H("/api/capacity",s,j);let i,l,a,_;if(e[1]!==b||e[2]!==t||e[3]!==g||e[4]!==s||e[5]!==h){let o;e[10]!==t.selectedNrens||e[11]!==t.selectedYears?(o=v=>t.selectedYears.includes(v.year)&&t.selectedNrens.includes(v.nren)&&j(v),e[10]=t.selectedNrens,e[11]=t.selectedYears,e[12]=o):o=e[12],a=b.filter(o),i=I(a,"largest_link_capacity","Link capacity");let p;e[13]!==h?(p=[...h],e[13]=h,e[14]=p):p=e[14];let f;e[15]!==g?(f=g.values(),e[15]=g,e[16]=f):f=e[16];let m;e[17]!==f?(m=[...f],e[17]=f,e[18]=m):m=e[18];let d;e[19]!==p||e[20]!==m?(d={availableYears:p,availableNrens:m},e[19]=p,e[20]=m,e[21]=d):d=e[21];let S;e[22]!==t||e[23]!==s||e[24]!==d?(S=u.jsx(K,{filterOptions:d,filterSelection:t,setFilterSelection:s}),e[22]=t,e[23]=s,e[24]=d,e[25]=S):S=e[25],l=S,_=Array.from(new Set(a.map(X))),e[1]=b,e[2]=t,e[3]=g,e[4]=s,e[5]=h,e[6]=i,e[7]=l,e[8]=a,e[9]=_}else i=e[6],l=e[7],a=e[8],_=e[9];const B=_.length,D=Math.max(B*t.selectedYears.length*1.5+5,50),w=O["capacity-largest-link"],E=`NRENs were asked to give the capacity (in Gbits/s) of the largest link in +import{c as L,r as Y,F as G,j as u,S as R,t as O}from"./index.js";import{B as P}from"./index-BfhfJiKe.js";import{C as $,a as A,L as M,B as U,p as W,c as q,d as z,u as H,o as I,D as J,F as K,f as Q}from"./useData-CYCBVZdC.js";import{p as T}from"./chartjs-plugin-datalabels.esm-CzQRWEly.js";import{a as V}from"./charthelpers-CdmocpOu.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";$.register(A,M,U,W,q,z);function ce(){const e=L.c(39);let y;e[0]===Symbol.for("react.memo_cache_sentinel")?(y=o=>o.largest_link_capacity!=null,e[0]=y):y=e[0];const j=y,{filterSelection:t,setFilterSelection:s}=Y.useContext(G),{data:b,years:h,nrens:g}=H("/api/capacity",s,j);let i,l,a,_;if(e[1]!==b||e[2]!==t||e[3]!==g||e[4]!==s||e[5]!==h){let o;e[10]!==t.selectedNrens||e[11]!==t.selectedYears?(o=v=>t.selectedYears.includes(v.year)&&t.selectedNrens.includes(v.nren)&&j(v),e[10]=t.selectedNrens,e[11]=t.selectedYears,e[12]=o):o=e[12],a=b.filter(o),i=I(a,"largest_link_capacity","Link capacity");let p;e[13]!==h?(p=[...h],e[13]=h,e[14]=p):p=e[14];let f;e[15]!==g?(f=g.values(),e[15]=g,e[16]=f):f=e[16];let m;e[17]!==f?(m=[...f],e[17]=f,e[18]=m):m=e[18];let d;e[19]!==p||e[20]!==m?(d={availableYears:p,availableNrens:m},e[19]=p,e[20]=m,e[21]=d):d=e[21];let S;e[22]!==t||e[23]!==s||e[24]!==d?(S=u.jsx(K,{filterOptions:d,filterSelection:t,setFilterSelection:s}),e[22]=t,e[23]=s,e[24]=d,e[25]=S):S=e[25],l=S,_=Array.from(new Set(a.map(X))),e[1]=b,e[2]=t,e[3]=g,e[4]=s,e[5]=h,e[6]=i,e[7]=l,e[8]=a,e[9]=_}else i=e[6],l=e[7],a=e[8],_=e[9];const B=_.length,D=Math.max(B*t.selectedYears.length*1.5+5,50),w=O["capacity-largest-link"],E=`NRENs were asked to give the capacity (in Gbits/s) of the largest link in their network used for internet traffic (either shared or dedicated). While they were invited to provide the sum of aggregated links, backup capacity was not to be included.`;let k;e[26]===Symbol.for("react.memo_cache_sentinel")?(k=V({title:w,tooltipUnit:"Gbit/s",unit:"Gbit/s"}),e[26]=k):k=e[26];const F=k,N=`${D}rem`;let r;e[27]!==N?(r={height:N},e[27]=N,e[28]=r):r=e[28];let x;e[29]===Symbol.for("react.memo_cache_sentinel")?(x=[T],e[29]=x):x=e[29];let n;e[30]!==i?(n=u.jsx(P,{data:i,options:F,plugins:x}),e[30]=i,e[31]=n):n=e[31];let c;e[32]!==r||e[33]!==n?(c=u.jsx(Q,{children:u.jsx("div",{className:"chart-container",style:r,children:n})}),e[32]=r,e[33]=n,e[34]=c):c=e[34];let C;return e[35]!==l||e[36]!==a||e[37]!==c?(C=u.jsx(J,{title:w,description:E,category:R.Network,filter:l,data:a,filename:"capacity_largest_link",children:c}),e[35]=l,e[36]=a,e[37]=c,e[38]=C):C=e[38],C}function X(e){return e.nren}export{ce as default}; diff --git a/compendium_v2/static/CentralProcurement-ufKA5cDY.js b/compendium_v2/static/CentralProcurement-CnLdUN2O.js similarity index 91% rename from compendium_v2/static/CentralProcurement-ufKA5cDY.js rename to compendium_v2/static/CentralProcurement-CnLdUN2O.js index f3e75b0b..441ecdb0 100644 --- a/compendium_v2/static/CentralProcurement-ufKA5cDY.js +++ b/compendium_v2/static/CentralProcurement-CnLdUN2O.js @@ -1 +1 @@ -import{c as Y,r as I,F as T,j as h,S as $,t as L}from"./index.js";import{C as O,a as V,L as k,B as A,p as M,c as U,d as Z,u as q,o as z,D as G,F as H,f as J}from"./useData-Ct8E3VVL.js";import{p as K}from"./chartjs-plugin-datalabels.esm-BI98Iz1j.js";import{B as Q}from"./index-C4Nuqrw6.js";import{a as W}from"./charthelpers-DmM6tvdh.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";O.register(V,k,A,M,U,Z);function ce(){const e=Y.c(40);let g;e[0]===Symbol.for("react.memo_cache_sentinel")?(g=s=>s.amount!=null,e[0]=g):g=e[0];const v=g,{filterSelection:t,setFilterSelection:l}=I.useContext(T),{data:w,years:d,nrens:y}=q("/api/central-procurement",l,v);let o,n,r,x;if(e[1]!==w||e[2]!==t||e[3]!==y||e[4]!==l||e[5]!==d){let s;e[10]!==t.selectedNrens||e[11]!==t.selectedYears?(s=j=>t.selectedYears.includes(j.year)&&t.selectedNrens.includes(j.nren),e[10]=t.selectedNrens,e[11]=t.selectedYears,e[12]=s):s=e[12],r=w.filter(s),o=z(r,"amount","Procurement Value");let a;e[13]!==d?(a=[...d],e[13]=d,e[14]=a):a=e[14];let f;e[15]!==y?(f=y.values(),e[15]=y,e[16]=f):f=e[16];let u;e[17]!==f?(u=[...f],e[17]=f,e[18]=u):u=e[18];let p;e[19]!==a||e[20]!==u?(p={availableYears:a,availableNrens:u},e[19]=a,e[20]=u,e[21]=p):p=e[21];let b;e[22]!==t||e[23]!==l||e[24]!==p?(b=h.jsx(H,{filterOptions:p,filterSelection:t,setFilterSelection:l}),e[22]=t,e[23]=l,e[24]=p,e[25]=b):b=e[25],n=b,x=Array.from(new Set(r.map(X))),e[1]=w,e[2]=t,e[3]=y,e[4]=l,e[5]=d,e[6]=o,e[7]=n,e[8]=r,e[9]=x}else o=e[6],n=e[7],r=e[8],x=e[9];const P=x.length,B=Math.max(P*t.selectedYears.length*1.5+5,50),D=L["central-procurement"];let N;e[26]===Symbol.for("react.memo_cache_sentinel")?(N=h.jsx("span",{children:"Some NRENs centrally procure software for their customers. The graph below shows the total value (in Euro) of software procured in the previous year by the NRENs. Please note you can only see the select NRENs which carry out this type of procurement. Those who do not offer this are not selectable."}),e[26]=N):N=e[26];const F=N;let S;e[27]===Symbol.for("react.memo_cache_sentinel")?(S=W({title:"Software Procurement Value",valueTransform(s){return`${new Intl.NumberFormat(void 0,{style:"currency",currency:"EUR",trailingZeroDisplay:"stripIfInteger"}).format(s)}`}}),e[27]=S):S=e[27];const R=S,E=`${B}rem`;let i;e[28]!==E?(i={height:E},e[28]=E,e[29]=i):i=e[29];let _;e[30]===Symbol.for("react.memo_cache_sentinel")?(_=[K],e[30]=_):_=e[30];let c;e[31]!==o?(c=h.jsx(Q,{data:o,options:R,plugins:_}),e[31]=o,e[32]=c):c=e[32];let m;e[33]!==i||e[34]!==c?(m=h.jsx(J,{children:h.jsx("div",{className:"chart-container",style:i,children:c})}),e[33]=i,e[34]=c,e[35]=m):m=e[35];let C;return e[36]!==n||e[37]!==r||e[38]!==m?(C=h.jsx(G,{title:D,description:F,category:$.Policy,filter:n,data:r,filename:"central_procurement",children:m}),e[36]=n,e[37]=r,e[38]=m,e[39]=C):C=e[39],C}function X(e){return e.nren}export{ce as default}; +import{c as Y,r as I,F as T,j as h,S as $,t as L}from"./index.js";import{C as O,a as V,L as k,B as A,p as M,c as U,d as Z,u as q,o as z,D as G,F as H,f as J}from"./useData-CYCBVZdC.js";import{p as K}from"./chartjs-plugin-datalabels.esm-CzQRWEly.js";import{B as Q}from"./index-BfhfJiKe.js";import{a as W}from"./charthelpers-CdmocpOu.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";O.register(V,k,A,M,U,Z);function ce(){const e=Y.c(40);let g;e[0]===Symbol.for("react.memo_cache_sentinel")?(g=s=>s.amount!=null,e[0]=g):g=e[0];const v=g,{filterSelection:t,setFilterSelection:l}=I.useContext(T),{data:w,years:d,nrens:y}=q("/api/central-procurement",l,v);let o,n,r,x;if(e[1]!==w||e[2]!==t||e[3]!==y||e[4]!==l||e[5]!==d){let s;e[10]!==t.selectedNrens||e[11]!==t.selectedYears?(s=j=>t.selectedYears.includes(j.year)&&t.selectedNrens.includes(j.nren),e[10]=t.selectedNrens,e[11]=t.selectedYears,e[12]=s):s=e[12],r=w.filter(s),o=z(r,"amount","Procurement Value");let a;e[13]!==d?(a=[...d],e[13]=d,e[14]=a):a=e[14];let f;e[15]!==y?(f=y.values(),e[15]=y,e[16]=f):f=e[16];let u;e[17]!==f?(u=[...f],e[17]=f,e[18]=u):u=e[18];let p;e[19]!==a||e[20]!==u?(p={availableYears:a,availableNrens:u},e[19]=a,e[20]=u,e[21]=p):p=e[21];let b;e[22]!==t||e[23]!==l||e[24]!==p?(b=h.jsx(H,{filterOptions:p,filterSelection:t,setFilterSelection:l}),e[22]=t,e[23]=l,e[24]=p,e[25]=b):b=e[25],n=b,x=Array.from(new Set(r.map(X))),e[1]=w,e[2]=t,e[3]=y,e[4]=l,e[5]=d,e[6]=o,e[7]=n,e[8]=r,e[9]=x}else o=e[6],n=e[7],r=e[8],x=e[9];const P=x.length,B=Math.max(P*t.selectedYears.length*1.5+5,50),D=L["central-procurement"];let N;e[26]===Symbol.for("react.memo_cache_sentinel")?(N=h.jsx("span",{children:"Some NRENs centrally procure software for their customers. The graph below shows the total value (in Euro) of software procured in the previous year by the NRENs. Please note you can only see the select NRENs which carry out this type of procurement. Those who do not offer this are not selectable."}),e[26]=N):N=e[26];const F=N;let S;e[27]===Symbol.for("react.memo_cache_sentinel")?(S=W({title:"Software Procurement Value",valueTransform(s){return`${new Intl.NumberFormat(void 0,{style:"currency",currency:"EUR",trailingZeroDisplay:"stripIfInteger"}).format(s)}`}}),e[27]=S):S=e[27];const R=S,E=`${B}rem`;let i;e[28]!==E?(i={height:E},e[28]=E,e[29]=i):i=e[29];let _;e[30]===Symbol.for("react.memo_cache_sentinel")?(_=[K],e[30]=_):_=e[30];let c;e[31]!==o?(c=h.jsx(Q,{data:o,options:R,plugins:_}),e[31]=o,e[32]=c):c=e[32];let m;e[33]!==i||e[34]!==c?(m=h.jsx(J,{children:h.jsx("div",{className:"chart-container",style:i,children:c})}),e[33]=i,e[34]=c,e[35]=m):m=e[35];let C;return e[36]!==n||e[37]!==r||e[38]!==m?(C=h.jsx(G,{title:D,description:F,category:$.Policy,filter:n,data:r,filename:"central_procurement",children:m}),e[36]=n,e[37]=r,e[38]=m,e[39]=C):C=e[39],C}function X(e){return e.nren}export{ce as default}; diff --git a/compendium_v2/static/CertificateProvider-S4Idgrmz.js b/compendium_v2/static/CertificateProvider-C0MtpALT.js similarity index 93% rename from compendium_v2/static/CertificateProvider-S4Idgrmz.js rename to compendium_v2/static/CertificateProvider-C0MtpALT.js index 4f9395c6..e810a189 100644 --- a/compendium_v2/static/CertificateProvider-S4Idgrmz.js +++ b/compendium_v2/static/CertificateProvider-C0MtpALT.js @@ -1 +1 @@ -import{c as _,r as Y,F as j,j as S,t as k,S as D}from"./index.js";import{u as E,g as P,D as T,F as w,f as F}from"./useData-Ct8E3VVL.js";import{P as L}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function G(){const e=_.c(29),{filterSelection:t,setFilterSelection:c}=Y.useContext(j),{data:N,years:x,nrens:b}=E("/api/certificate-providers",c);let s,n;if(e[0]!==N||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let u;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(u=g=>t.selectedYears.includes(g.year)&&t.selectedNrens.includes(g.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=u):u=e[7],s=N.filter(u),n=P(s,"provider_names"),e[0]=N,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=n}else s=e[3],n=e[4];const v=n;let r;e[8]!==x?(r=[...x],e[8]=x,e[9]=r):r=e[9];let i;e[10]!==b?(i=b.values(),e[10]=b,e[11]=i):i=e[11];let l;e[12]!==i?(l=[...i],e[12]=i,e[13]=l):l=e[13];let o;e[14]!==r||e[15]!==l?(o={availableYears:r,availableNrens:l},e[14]=r,e[15]=l,e[16]=o):o=e[16];let f;e[17]!==t||e[18]!==c||e[19]!==o?(f=S.jsx(w,{filterOptions:o,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[17]=t,e[18]=c,e[19]=o,e[20]=f):f=e[20];const C=f;let d;e[21]===Symbol.for("react.memo_cache_sentinel")?(d=["TCS","Digicert","Sectigo (outside of TCS)","Let's Encrypt","Entrust Datacard"],e[21]=d):d=e[21];const h=d;let p;e[22]===Symbol.for("react.memo_cache_sentinel")?(p=new Map([["Sectigo (outside of TCS)","Sectigo"]]),e[22]=p):p=e[22];const y=p;let a;e[23]!==v?(a=S.jsx(F,{children:S.jsx(L,{columns:h,dataLookup:v,circle:!0,columnLookup:y})}),e[23]=v,e[24]=a):a=e[24];let m;return e[25]!==C||e[26]!==s||e[27]!==a?(m=S.jsx(T,{title:k["certificate-provider"],description:"The table below shows the kinds of Network Certificate Providers used by NRENs.",category:D.Network,filter:C,data:s,filename:"certificate_provider_nrens_per_year",children:a}),e[25]=C,e[26]=s,e[27]=a,e[28]=m):m=e[28],m}export{G as default}; +import{c as _,r as Y,F as j,j as S,t as k,S as D}from"./index.js";import{u as E,g as P,D as T,F as w,f as F}from"./useData-CYCBVZdC.js";import{P as L}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function G(){const e=_.c(29),{filterSelection:t,setFilterSelection:c}=Y.useContext(j),{data:N,years:x,nrens:b}=E("/api/certificate-providers",c);let s,n;if(e[0]!==N||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let u;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(u=g=>t.selectedYears.includes(g.year)&&t.selectedNrens.includes(g.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=u):u=e[7],s=N.filter(u),n=P(s,"provider_names"),e[0]=N,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=n}else s=e[3],n=e[4];const v=n;let r;e[8]!==x?(r=[...x],e[8]=x,e[9]=r):r=e[9];let i;e[10]!==b?(i=b.values(),e[10]=b,e[11]=i):i=e[11];let l;e[12]!==i?(l=[...i],e[12]=i,e[13]=l):l=e[13];let o;e[14]!==r||e[15]!==l?(o={availableYears:r,availableNrens:l},e[14]=r,e[15]=l,e[16]=o):o=e[16];let f;e[17]!==t||e[18]!==c||e[19]!==o?(f=S.jsx(w,{filterOptions:o,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[17]=t,e[18]=c,e[19]=o,e[20]=f):f=e[20];const C=f;let d;e[21]===Symbol.for("react.memo_cache_sentinel")?(d=["TCS","Digicert","Sectigo (outside of TCS)","Let's Encrypt","Entrust Datacard"],e[21]=d):d=e[21];const h=d;let p;e[22]===Symbol.for("react.memo_cache_sentinel")?(p=new Map([["Sectigo (outside of TCS)","Sectigo"]]),e[22]=p):p=e[22];const y=p;let a;e[23]!==v?(a=S.jsx(F,{children:S.jsx(L,{columns:h,dataLookup:v,circle:!0,columnLookup:y})}),e[23]=v,e[24]=a):a=e[24];let m;return e[25]!==C||e[26]!==s||e[27]!==a?(m=S.jsx(T,{title:k["certificate-provider"],description:"The table below shows the kinds of Network Certificate Providers used by NRENs.",category:D.Network,filter:C,data:s,filename:"certificate_provider_nrens_per_year",children:a}),e[25]=C,e[26]=s,e[27]=a,e[28]=m):m=e[28],m}export{G as default}; diff --git a/compendium_v2/static/ChargingStructure-D6vHlJZ3.js b/compendium_v2/static/ChargingStructure-Bv0NJy9P.js similarity index 94% rename from compendium_v2/static/ChargingStructure-D6vHlJZ3.js rename to compendium_v2/static/ChargingStructure-Bv0NJy9P.js index e0543c76..5c645a26 100644 --- a/compendium_v2/static/ChargingStructure-D6vHlJZ3.js +++ b/compendium_v2/static/ChargingStructure-Bv0NJy9P.js @@ -1,3 +1,3 @@ -import{c as Y,r as j,F as v,j as p,t as E,S as F}from"./index.js";import{u as D,g as R,D as k,F as w,f as P}from"./useData-Ct8E3VVL.js";import{P as T}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function G(){const e=Y.c(29),C=L,{filterSelection:t,setFilterSelection:c}=j.useContext(v),{data:g,years:b,nrens:N}=D("/api/charging",c,C);let a,f;if(e[0]!==g||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let m;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(m=x=>t.selectedYears.includes(x.year)&&t.selectedNrens.includes(x.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=m):m=e[7],a=g.filter(m),f=R(a,"fee_type"),e[0]=g,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=a,e[4]=f}else a=e[3],f=e[4];const _=f;let r;e[8]!==b?(r=[...b],e[8]=b,e[9]=r):r=e[9];let i;e[10]!==N?(i=N.values(),e[10]=N,e[11]=i):i=e[11];let l;e[12]!==i?(l=[...i],e[12]=i,e[13]=l):l=e[13];let n;e[14]!==r||e[15]!==l?(n={availableYears:r,availableNrens:l},e[14]=r,e[15]=l,e[16]=n):n=e[16];let u;e[17]!==t||e[18]!==c||e[19]!==n?(u=p.jsx(w,{filterOptions:n,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[17]=t,e[18]=c,e[19]=n,e[20]=u):u=e[20];const y=u;let s,d;e[21]===Symbol.for("react.memo_cache_sentinel")?(s=["Flat fee based on bandwidth","Usage based fee","Combination flat fee & usage basedfee","No Direct Charge","Other"],d=new Map([[s[0],"flat_fee"],[s[1],"usage_based_fee"],[s[2],"combination"],[s[3],"no_charge"],[s[4],"other"]]),e[21]=s,e[22]=d):(s=e[21],d=e[22]);const S=d;let o;e[23]!==_?(o=p.jsx(P,{children:p.jsx(T,{columns:s,dataLookup:_,columnLookup:S})}),e[23]=_,e[24]=o):o=e[24];let h;return e[25]!==y||e[26]!==a||e[27]!==o?(h=p.jsx(k,{title:E.charging,description:`The charging structure is the way in which NRENs charge their customers for the services they provide. +import{c as Y,r as j,F as v,j as p,t as E,S as F}from"./index.js";import{u as D,g as R,D as k,F as w,f as P}from"./useData-CYCBVZdC.js";import{P as T}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function G(){const e=Y.c(29),C=L,{filterSelection:t,setFilterSelection:c}=j.useContext(v),{data:g,years:b,nrens:N}=D("/api/charging",c,C);let a,f;if(e[0]!==g||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let m;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(m=x=>t.selectedYears.includes(x.year)&&t.selectedNrens.includes(x.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=m):m=e[7],a=g.filter(m),f=R(a,"fee_type"),e[0]=g,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=a,e[4]=f}else a=e[3],f=e[4];const _=f;let r;e[8]!==b?(r=[...b],e[8]=b,e[9]=r):r=e[9];let i;e[10]!==N?(i=N.values(),e[10]=N,e[11]=i):i=e[11];let l;e[12]!==i?(l=[...i],e[12]=i,e[13]=l):l=e[13];let n;e[14]!==r||e[15]!==l?(n={availableYears:r,availableNrens:l},e[14]=r,e[15]=l,e[16]=n):n=e[16];let u;e[17]!==t||e[18]!==c||e[19]!==n?(u=p.jsx(w,{filterOptions:n,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[17]=t,e[18]=c,e[19]=n,e[20]=u):u=e[20];const y=u;let s,d;e[21]===Symbol.for("react.memo_cache_sentinel")?(s=["Flat fee based on bandwidth","Usage based fee","Combination flat fee & usage basedfee","No Direct Charge","Other"],d=new Map([[s[0],"flat_fee"],[s[1],"usage_based_fee"],[s[2],"combination"],[s[3],"no_charge"],[s[4],"other"]]),e[21]=s,e[22]=d):(s=e[21],d=e[22]);const S=d;let o;e[23]!==_?(o=p.jsx(P,{children:p.jsx(T,{columns:s,dataLookup:_,columnLookup:S})}),e[23]=_,e[24]=o):o=e[24];let h;return e[25]!==y||e[26]!==a||e[27]!==o?(h=p.jsx(k,{title:E.charging,description:`The charging structure is the way in which NRENs charge their customers for the services they provide. The charging structure can be based on a flat fee, usage based fee, a combination of both, or no direct charge. By selecting multiple years and NRENs, the table can be used to compare the charging structure of NRENs.`,category:F.Organisation,filter:y,data:a,filename:"charging_mechanism_of_nrens_per_year",children:o}),e[25]=y,e[26]=a,e[27]=o,e[28]=h):h=e[28],h}function L(e){return e.fee_type!=null}export{G as default}; diff --git a/compendium_v2/static/ConnectedInstitutionsURLs-gUMBROcH.js b/compendium_v2/static/ConnectedInstitutionsURLs-C_G2PNvX.js similarity index 92% rename from compendium_v2/static/ConnectedInstitutionsURLs-gUMBROcH.js rename to compendium_v2/static/ConnectedInstitutionsURLs-C_G2PNvX.js index b8cd8d57..c7c7a2fd 100644 --- a/compendium_v2/static/ConnectedInstitutionsURLs-gUMBROcH.js +++ b/compendium_v2/static/ConnectedInstitutionsURLs-C_G2PNvX.js @@ -1 +1 @@ -import{c as g,r as y,F as C,j as x,t as L,S as R}from"./index.js";import{u as S,q as k,k as v,i as F,D as T,F as U,f as w,s as E}from"./useData-Ct8E3VVL.js";import{N as O}from"./NrenYearTable-iS8aEX43.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function G(){const t=g.c(24),{filterSelection:e,setFilterSelection:s}=y.useContext(C),{data:i,nrens:a}=S("/api/institution-urls",s);let n,o,u;if(t[0]!==i||t[1]!==e||t[2]!==a||t[3]!==s){const j=i?k(i):[];let d;t[7]!==e.selectedNrens?(d=N=>e.selectedNrens.includes(N.nren),t[7]=e.selectedNrens,t[8]=d):d=t[8];const D=j.filter(d),h=v(D);n=F(h,_);let m;t[9]===Symbol.for("react.memo_cache_sentinel")?(m=[],t[9]=m):m=t[9];let l;t[10]!==a?(l=a.values(),t[10]=a,t[11]=l):l=t[11];let c;t[12]!==l?(c={availableYears:m,availableNrens:[...l]},t[12]=l,t[13]=c):c=t[13];let p;t[14]!==e||t[15]!==s||t[16]!==c?(p=x.jsx(U,{filterOptions:c,filterSelection:e,setFilterSelection:s}),t[14]=e,t[15]=s,t[16]=c,t[17]=p):p=t[17],o=p,u=D.map(Y),t[0]=i,t[1]=e,t[2]=a,t[3]=s,t[4]=n,t[5]=o,t[6]=u}else n=t[4],o=t[5],u=t[6];const b=u;let r;t[18]!==n?(r=x.jsx(w,{children:x.jsx(O,{data:n,columnTitle:"Institution URLs",keysAreURLs:!0,noDots:!0})}),t[18]=n,t[19]=r):r=t[19];let f;return t[20]!==b||t[21]!==o||t[22]!==r?(f=x.jsx(T,{title:L["institutions-urls"],description:"Many NRENs have a page on their website listing user institutions. Links to the pages are shown in the table below.",category:R.ConnectedUsers,filter:o,data:b,filename:"institution_urls",children:r}),t[20]=b,t[21]=o,t[22]=r,t[23]=f):f=t[23],f}function Y(t){return{...t,urls:(t.urls??[]).join(", ")}}function _(t,e){const s=E(e);if(s!=null)for(const[i,a]of Object.entries(s))t[i]=a}export{G as default}; +import{c as g,r as y,F as C,j as x,t as L,S as R}from"./index.js";import{u as S,q as k,k as v,i as F,D as T,F as U,f as w,s as E}from"./useData-CYCBVZdC.js";import{N as O}from"./NrenYearTable-RI8l8hwG.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function G(){const t=g.c(24),{filterSelection:e,setFilterSelection:s}=y.useContext(C),{data:i,nrens:a}=S("/api/institution-urls",s);let n,o,u;if(t[0]!==i||t[1]!==e||t[2]!==a||t[3]!==s){const j=i?k(i):[];let d;t[7]!==e.selectedNrens?(d=N=>e.selectedNrens.includes(N.nren),t[7]=e.selectedNrens,t[8]=d):d=t[8];const D=j.filter(d),h=v(D);n=F(h,_);let m;t[9]===Symbol.for("react.memo_cache_sentinel")?(m=[],t[9]=m):m=t[9];let l;t[10]!==a?(l=a.values(),t[10]=a,t[11]=l):l=t[11];let c;t[12]!==l?(c={availableYears:m,availableNrens:[...l]},t[12]=l,t[13]=c):c=t[13];let p;t[14]!==e||t[15]!==s||t[16]!==c?(p=x.jsx(U,{filterOptions:c,filterSelection:e,setFilterSelection:s}),t[14]=e,t[15]=s,t[16]=c,t[17]=p):p=t[17],o=p,u=D.map(Y),t[0]=i,t[1]=e,t[2]=a,t[3]=s,t[4]=n,t[5]=o,t[6]=u}else n=t[4],o=t[5],u=t[6];const b=u;let r;t[18]!==n?(r=x.jsx(w,{children:x.jsx(O,{data:n,columnTitle:"Institution URLs",keysAreURLs:!0,noDots:!0})}),t[18]=n,t[19]=r):r=t[19];let f;return t[20]!==b||t[21]!==o||t[22]!==r?(f=x.jsx(T,{title:L["institutions-urls"],description:"Many NRENs have a page on their website listing user institutions. Links to the pages are shown in the table below.",category:R.ConnectedUsers,filter:o,data:b,filename:"institution_urls",children:r}),t[20]=b,t[21]=o,t[22]=r,t[23]=f):f=t[23],f}function Y(t){return{...t,urls:(t.urls??[]).join(", ")}}function _(t,e){const s=E(e);if(s!=null)for(const[i,a]of Object.entries(s))t[i]=a}export{G as default}; diff --git a/compendium_v2/static/ConnectedUser-C39phNBn.js b/compendium_v2/static/ConnectedUser-D-CAsrxc.js similarity index 99% rename from compendium_v2/static/ConnectedUser-C39phNBn.js rename to compendium_v2/static/ConnectedUser-D-CAsrxc.js index 5daeb21a..9faf5d70 100644 --- a/compendium_v2/static/ConnectedUser-C39phNBn.js +++ b/compendium_v2/static/ConnectedUser-D-CAsrxc.js @@ -1 +1 @@ -import{a as t,t as l,j as o,L as Y,c as F,r as U,F as D,S as A,b as T,d as P,U as j}from"./index.js";import{u as G,r as u,D as $,F as q,f as B}from"./useData-Ct8E3VVL.js";import{S as z}from"./ScrollableMatrix-Dxr22l4i.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";const I={[t.ConnectedProportion]:l["connected-proportion"],[t.ConnectivityLevel]:l["connectivity-level"],[t.ConnectionCarrier]:l["connection-carrier"],[t.ConnectivityLoad]:l["connectivity-load"],[t.ConnectivityGrowth]:l["connectivity-growth"],[t.CommercialChargingLevel]:l["commercial-charging-level"],[t.CommercialConnectivity]:l["commercial-connectivity"]},H={[t.ConnectedProportion]:o.jsxs("span",{children:["European NRENs all have different connectivity remits, as is shown in the table below. The categories of institutions make use of the ISCED 2011 classification system, the UNESCO scheme for International Standard Classification of Education.",o.jsx("br",{}),"The table shows whether a particular category of institution falls within the connectivity remit of the NREN, the actual number of such institutions connected, the % market share this represents, and the actual number of end users served in the category."]}),[t.ConnectivityLevel]:o.jsxs("span",{children:["The table below shows the average level of connectivity for each category of institution. The connectivity remit of different NRENs is shown on a different page, and NRENs are asked, at a minimum, to provide information about the typical and highest capacities (in Mbit/s) at which Universities and Research Institutes are connected.",o.jsx("br",{}),"NRENs are also asked to show proportionally how many institutions are connected at the highest capacity they offer."]}),[t.ConnectionCarrier]:o.jsxs("span",{children:["The table below shows the different mechanisms employed by NRENs to carry traffic to the different types of users they serve. Not all NRENs connect all of the types of institution listed below - details of connectivity remits can be found here: ",o.jsx(Y,{to:"/connected-proportion",className:"",children:o.jsx("span",{children:I[t.ConnectedProportion]})})]}),[t.ConnectivityLoad]:o.jsx("span",{children:"The table below shows the traffic load in Mbit/s to and from institutions served by NRENs; both the average load, and peak load, when given. The types of institutions are broken down using the ISCED 2011 classification system (the UNESCO scheme for International Standard Classification of Education), plus other types."}),[t.ConnectivityGrowth]:o.jsx("span",{children:"The table below illustrates the anticipated traffic growth within NREN networks over the next three years."}),[t.CommercialChargingLevel]:o.jsx("span",{children:"The table below outlines the typical charging levels for various types of commercial connections."}),[t.CommercialConnectivity]:o.jsx("span",{children:"The table below outlines the types of commercial organizations NRENs connect."})},L={[t.ConnectedProportion]:{"Remit cover connectivity":"coverage","Number of institutions connected":"number_connected","Percentage market share of institutions connected":"market_share","Number of users served":"users_served"},[t.ConnectivityLevel]:{"Typical link speed (Mbit/s):":"typical_speed","Highest speed link (Mbit/s):":"highest_speed","Proportionally how many institutions in this category are connected at the highest capacity? (%):":"highest_speed_proportion"},[t.ConnectionCarrier]:{"Commercial Provider Backbone":"commercial_provider_backbone","NREN Local Loops":"nren_local_loops","Regional NREN Backbone":"regional_nren_backbone",MAN:"man",Other:"other"},[t.ConnectivityLoad]:{"Average Load From Institutions (Mbit/s)":"average_load_from_institutions","Average Load To Institutions (Mbit/s)":"average_load_to_institutions","Peak Load To Institution (Mbit/s)":"peak_load_to_institutions","Peak Load From Institution (Mbit/s)":"peak_load_from_institutions"},[t.ConnectivityGrowth]:{"Percentage growth":"growth"},[t.CommercialChargingLevel]:{"No charges applied if requested by R&E users":"no_charges_if_r_e_requested","Same charging model as for R&E users":"same_as_r_e_charges","Charges typically higher than for R&E users":"higher_than_r_e_charges","Charges typically lower than for R&E users":"lower_than_r_e_charges"},[t.CommercialConnectivity]:{"No - but we offer a direct or IX peering":"no_but_direct_peering","No - not eligible for policy reasons":"no_policy","No - financial restrictions (NREN is unable to charge/recover costs)":"no_financial","No - other reason / unsure":"no_other","Yes - National NREN access only":"yes_national_nren","Yes - Including transit to other networks":"yes_incl_other","Yes - only if sponsored by a connected institution":"yes_if_sponsored"}};function te(M){const e=F.c(36),{page:n}=M,O=`/api/connected-${n.toString()}`,{filterSelection:i,setFilterSelection:y}=U.useContext(D),{data:_,years:b,nrens:N}=G(O,y);let r,a,c,s;if(e[0]!==_||e[1]!==i.selectedNrens||e[2]!==i.selectedYears||e[3]!==n){let C;e[8]!==i.selectedNrens||e[9]!==i.selectedYears?(C=S=>i.selectedYears.includes(S.year)&&i.selectedNrens.includes(S.nren),e[8]=i.selectedNrens,e[9]=i.selectedYears,e[10]=C):C=e[10],s=_.filter(C),c=!1,n==t.CommercialConnectivity?(r=T,c=!0,a=u(s,Object.keys(T),void 0)):n==t.CommercialChargingLevel?(r=P,c=!0,a=u(s,Object.keys(P),void 0)):n==t.ConnectionCarrier?(r=j,c=!0,a=u(s,["carry_mechanism"],"user_category")):n==t.ConnectedProportion?(r=j,a=u(s,Object.values(L[n]),"user_category",!1)):(r=j,a=u(s,Object.values(L[n]),"user_category",!1)),e[0]=_,e[1]=i.selectedNrens,e[2]=i.selectedYears,e[3]=n,e[4]=r,e[5]=a,e[6]=c,e[7]=s}else r=e[4],a=e[5],c=e[6],s=e[7];let h;e[11]!==b?(h=[...b],e[11]=b,e[12]=h):h=e[12];let d;e[13]!==N?(d=N.values(),e[13]=N,e[14]=d):d=e[14];let f;e[15]!==d?(f=[...d],e[15]=d,e[16]=f):f=e[16];let p;e[17]!==h||e[18]!==f?(p={availableYears:h,availableNrens:f},e[17]=h,e[18]=f,e[19]=p):p=e[19];let g;e[20]!==i||e[21]!==y||e[22]!==p?(g=o.jsx(q,{filterOptions:p,filterSelection:i,setFilterSelection:y}),e[20]=i,e[21]=y,e[22]=p,e[23]=g):g=e[23];const w=g,E=L[n],k=`nren_connected_${n.toString()}`,x=I[n],R=H[n];let m;e[24]!==r||e[25]!==a||e[26]!==c||e[27]!==E?(m=o.jsx(B,{children:o.jsx(z,{dataLookup:a,rowInfo:E,isTickIcon:c,categoryLookup:r})}),e[24]=r,e[25]=a,e[26]=c,e[27]=E,e[28]=m):m=e[28];let v;return e[29]!==k||e[30]!==w||e[31]!==s||e[32]!==x||e[33]!==R||e[34]!==m?(v=o.jsx($,{title:x,description:R,category:A.ConnectedUsers,filter:w,data:s,filename:k,children:m}),e[29]=k,e[30]=w,e[31]=s,e[32]=x,e[33]=R,e[34]=m,e[35]=v):v=e[35],v}export{te as default}; +import{a as t,t as l,j as o,L as Y,c as F,r as U,F as D,S as A,b as T,d as P,U as j}from"./index.js";import{u as G,r as u,D as $,F as q,f as B}from"./useData-CYCBVZdC.js";import{S as z}from"./ScrollableMatrix-Dxr22l4i.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";const I={[t.ConnectedProportion]:l["connected-proportion"],[t.ConnectivityLevel]:l["connectivity-level"],[t.ConnectionCarrier]:l["connection-carrier"],[t.ConnectivityLoad]:l["connectivity-load"],[t.ConnectivityGrowth]:l["connectivity-growth"],[t.CommercialChargingLevel]:l["commercial-charging-level"],[t.CommercialConnectivity]:l["commercial-connectivity"]},H={[t.ConnectedProportion]:o.jsxs("span",{children:["European NRENs all have different connectivity remits, as is shown in the table below. The categories of institutions make use of the ISCED 2011 classification system, the UNESCO scheme for International Standard Classification of Education.",o.jsx("br",{}),"The table shows whether a particular category of institution falls within the connectivity remit of the NREN, the actual number of such institutions connected, the % market share this represents, and the actual number of end users served in the category."]}),[t.ConnectivityLevel]:o.jsxs("span",{children:["The table below shows the average level of connectivity for each category of institution. The connectivity remit of different NRENs is shown on a different page, and NRENs are asked, at a minimum, to provide information about the typical and highest capacities (in Mbit/s) at which Universities and Research Institutes are connected.",o.jsx("br",{}),"NRENs are also asked to show proportionally how many institutions are connected at the highest capacity they offer."]}),[t.ConnectionCarrier]:o.jsxs("span",{children:["The table below shows the different mechanisms employed by NRENs to carry traffic to the different types of users they serve. Not all NRENs connect all of the types of institution listed below - details of connectivity remits can be found here: ",o.jsx(Y,{to:"/connected-proportion",className:"",children:o.jsx("span",{children:I[t.ConnectedProportion]})})]}),[t.ConnectivityLoad]:o.jsx("span",{children:"The table below shows the traffic load in Mbit/s to and from institutions served by NRENs; both the average load, and peak load, when given. The types of institutions are broken down using the ISCED 2011 classification system (the UNESCO scheme for International Standard Classification of Education), plus other types."}),[t.ConnectivityGrowth]:o.jsx("span",{children:"The table below illustrates the anticipated traffic growth within NREN networks over the next three years."}),[t.CommercialChargingLevel]:o.jsx("span",{children:"The table below outlines the typical charging levels for various types of commercial connections."}),[t.CommercialConnectivity]:o.jsx("span",{children:"The table below outlines the types of commercial organizations NRENs connect."})},L={[t.ConnectedProportion]:{"Remit cover connectivity":"coverage","Number of institutions connected":"number_connected","Percentage market share of institutions connected":"market_share","Number of users served":"users_served"},[t.ConnectivityLevel]:{"Typical link speed (Mbit/s):":"typical_speed","Highest speed link (Mbit/s):":"highest_speed","Proportionally how many institutions in this category are connected at the highest capacity? (%):":"highest_speed_proportion"},[t.ConnectionCarrier]:{"Commercial Provider Backbone":"commercial_provider_backbone","NREN Local Loops":"nren_local_loops","Regional NREN Backbone":"regional_nren_backbone",MAN:"man",Other:"other"},[t.ConnectivityLoad]:{"Average Load From Institutions (Mbit/s)":"average_load_from_institutions","Average Load To Institutions (Mbit/s)":"average_load_to_institutions","Peak Load To Institution (Mbit/s)":"peak_load_to_institutions","Peak Load From Institution (Mbit/s)":"peak_load_from_institutions"},[t.ConnectivityGrowth]:{"Percentage growth":"growth"},[t.CommercialChargingLevel]:{"No charges applied if requested by R&E users":"no_charges_if_r_e_requested","Same charging model as for R&E users":"same_as_r_e_charges","Charges typically higher than for R&E users":"higher_than_r_e_charges","Charges typically lower than for R&E users":"lower_than_r_e_charges"},[t.CommercialConnectivity]:{"No - but we offer a direct or IX peering":"no_but_direct_peering","No - not eligible for policy reasons":"no_policy","No - financial restrictions (NREN is unable to charge/recover costs)":"no_financial","No - other reason / unsure":"no_other","Yes - National NREN access only":"yes_national_nren","Yes - Including transit to other networks":"yes_incl_other","Yes - only if sponsored by a connected institution":"yes_if_sponsored"}};function te(M){const e=F.c(36),{page:n}=M,O=`/api/connected-${n.toString()}`,{filterSelection:i,setFilterSelection:y}=U.useContext(D),{data:_,years:b,nrens:N}=G(O,y);let r,a,c,s;if(e[0]!==_||e[1]!==i.selectedNrens||e[2]!==i.selectedYears||e[3]!==n){let C;e[8]!==i.selectedNrens||e[9]!==i.selectedYears?(C=S=>i.selectedYears.includes(S.year)&&i.selectedNrens.includes(S.nren),e[8]=i.selectedNrens,e[9]=i.selectedYears,e[10]=C):C=e[10],s=_.filter(C),c=!1,n==t.CommercialConnectivity?(r=T,c=!0,a=u(s,Object.keys(T),void 0)):n==t.CommercialChargingLevel?(r=P,c=!0,a=u(s,Object.keys(P),void 0)):n==t.ConnectionCarrier?(r=j,c=!0,a=u(s,["carry_mechanism"],"user_category")):n==t.ConnectedProportion?(r=j,a=u(s,Object.values(L[n]),"user_category",!1)):(r=j,a=u(s,Object.values(L[n]),"user_category",!1)),e[0]=_,e[1]=i.selectedNrens,e[2]=i.selectedYears,e[3]=n,e[4]=r,e[5]=a,e[6]=c,e[7]=s}else r=e[4],a=e[5],c=e[6],s=e[7];let h;e[11]!==b?(h=[...b],e[11]=b,e[12]=h):h=e[12];let d;e[13]!==N?(d=N.values(),e[13]=N,e[14]=d):d=e[14];let f;e[15]!==d?(f=[...d],e[15]=d,e[16]=f):f=e[16];let p;e[17]!==h||e[18]!==f?(p={availableYears:h,availableNrens:f},e[17]=h,e[18]=f,e[19]=p):p=e[19];let g;e[20]!==i||e[21]!==y||e[22]!==p?(g=o.jsx(q,{filterOptions:p,filterSelection:i,setFilterSelection:y}),e[20]=i,e[21]=y,e[22]=p,e[23]=g):g=e[23];const w=g,E=L[n],k=`nren_connected_${n.toString()}`,x=I[n],R=H[n];let m;e[24]!==r||e[25]!==a||e[26]!==c||e[27]!==E?(m=o.jsx(B,{children:o.jsx(z,{dataLookup:a,rowInfo:E,isTickIcon:c,categoryLookup:r})}),e[24]=r,e[25]=a,e[26]=c,e[27]=E,e[28]=m):m=e[28];let v;return e[29]!==k||e[30]!==w||e[31]!==s||e[32]!==x||e[33]!==R||e[34]!==m?(v=o.jsx($,{title:x,description:R,category:A.ConnectedUsers,filter:w,data:s,filename:k,children:m}),e[29]=k,e[30]=w,e[31]=s,e[32]=x,e[33]=R,e[34]=m,e[35]=v):v=e[35],v}export{te as default}; diff --git a/compendium_v2/static/CorporateStrategy-CQ2aByV3.js b/compendium_v2/static/CorporateStrategy-D3wglOhj.js similarity index 93% rename from compendium_v2/static/CorporateStrategy-CQ2aByV3.js rename to compendium_v2/static/CorporateStrategy-D3wglOhj.js index 48b57936..2495e633 100644 --- a/compendium_v2/static/CorporateStrategy-CQ2aByV3.js +++ b/compendium_v2/static/CorporateStrategy-D3wglOhj.js @@ -1,3 +1,3 @@ -import{c as k,r as C,F as j,j as y,t as E,S as F}from"./index.js";import{u as R,q as T,k as Y,i as w,D as L,F as P,f as B}from"./useData-Ct8E3VVL.js";import{N as q}from"./NrenYearTable-iS8aEX43.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function J(){const e=k.c(23);let l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=x=>!!x.strategic_plan,e[0]=l):l=e[0];const b=l,{filterSelection:t,setFilterSelection:i}=C.useContext(j),{data:n,nrens:h}=R("/api/policy",i,b);let a,c;if(e[1]!==n||e[2]!==t.selectedNrens){const x=n?T(n):[];let d;e[5]!==t.selectedNrens?(d=D=>t.selectedNrens.includes(D.nren),e[5]=t.selectedNrens,e[6]=d):d=e[6],a=x.filter(d);const v=Y(a);let u;e[7]===Symbol.for("react.memo_cache_sentinel")?(u=(D,S)=>{const _=S.strategic_plan;D[_]=_},e[7]=u):u=e[7],c=w(v,u),e[1]=n,e[2]=t.selectedNrens,e[3]=a,e[4]=c}else a=e[3],c=e[4];const g=c;let p;e[8]===Symbol.for("react.memo_cache_sentinel")?(p=[],e[8]=p):p=e[8];let s;e[9]!==h?(s=h.values(),e[9]=h,e[10]=s):s=e[10];let r;e[11]!==s?(r={availableYears:p,availableNrens:[...s]},e[11]=s,e[12]=r):r=e[12];let m;e[13]!==t||e[14]!==i||e[15]!==r?(m=y.jsx(P,{filterOptions:r,filterSelection:t,setFilterSelection:i}),e[13]=t,e[14]=i,e[15]=r,e[16]=m):m=e[16];const N=m;let o;e[17]!==g?(o=y.jsx(B,{children:y.jsx(q,{data:g,columnTitle:"Corporate Strategy",noDots:!0,keysAreURLs:!0,removeDecoration:!0})}),e[17]=g,e[18]=o):o=e[18];let f;return e[19]!==N||e[20]!==a||e[21]!==o?(f=y.jsx(L,{title:E["corporate-strategy"],description:`The table below contains links to the NRENs most recent corporate strategic plans. +import{c as k,r as C,F as j,j as y,t as E,S as F}from"./index.js";import{u as R,q as T,k as Y,i as w,D as L,F as P,f as B}from"./useData-CYCBVZdC.js";import{N as q}from"./NrenYearTable-RI8l8hwG.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function J(){const e=k.c(23);let l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=x=>!!x.strategic_plan,e[0]=l):l=e[0];const b=l,{filterSelection:t,setFilterSelection:i}=C.useContext(j),{data:n,nrens:h}=R("/api/policy",i,b);let a,c;if(e[1]!==n||e[2]!==t.selectedNrens){const x=n?T(n):[];let d;e[5]!==t.selectedNrens?(d=D=>t.selectedNrens.includes(D.nren),e[5]=t.selectedNrens,e[6]=d):d=e[6],a=x.filter(d);const v=Y(a);let u;e[7]===Symbol.for("react.memo_cache_sentinel")?(u=(D,S)=>{const _=S.strategic_plan;D[_]=_},e[7]=u):u=e[7],c=w(v,u),e[1]=n,e[2]=t.selectedNrens,e[3]=a,e[4]=c}else a=e[3],c=e[4];const g=c;let p;e[8]===Symbol.for("react.memo_cache_sentinel")?(p=[],e[8]=p):p=e[8];let s;e[9]!==h?(s=h.values(),e[9]=h,e[10]=s):s=e[10];let r;e[11]!==s?(r={availableYears:p,availableNrens:[...s]},e[11]=s,e[12]=r):r=e[12];let m;e[13]!==t||e[14]!==i||e[15]!==r?(m=y.jsx(P,{filterOptions:r,filterSelection:t,setFilterSelection:i}),e[13]=t,e[14]=i,e[15]=r,e[16]=m):m=e[16];const N=m;let o;e[17]!==g?(o=y.jsx(B,{children:y.jsx(q,{data:g,columnTitle:"Corporate Strategy",noDots:!0,keysAreURLs:!0,removeDecoration:!0})}),e[17]=g,e[18]=o):o=e[18];let f;return e[19]!==N||e[20]!==a||e[21]!==o?(f=y.jsx(L,{title:E["corporate-strategy"],description:`The table below contains links to the NRENs most recent corporate strategic plans. NRENs are asked if updates have been made to their corporate strategy over the previous year. To avoid showing outdated links, only the most recent responses are shown.`,category:F.Policy,filter:N,data:a,filename:"nren_corporate_strategy",children:o}),e[19]=N,e[20]=a,e[21]=o,e[22]=f):f=e[22],f}export{J as default}; diff --git a/compendium_v2/static/CrisisExercises-Bw4pZ1iW.js b/compendium_v2/static/CrisisExercises-DuZg-gGP.js similarity index 95% rename from compendium_v2/static/CrisisExercises-Bw4pZ1iW.js rename to compendium_v2/static/CrisisExercises-DuZg-gGP.js index c6b6613f..bf4adbb5 100644 --- a/compendium_v2/static/CrisisExercises-Bw4pZ1iW.js +++ b/compendium_v2/static/CrisisExercises-DuZg-gGP.js @@ -1,2 +1,2 @@ -import{c as P,r as S,F as D,S as L,j as W,t as M}from"./index.js";import{u as R,g as O,F as A,D as G,f as V}from"./useData-Ct8E3VVL.js";import{P as $}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function Z(){const e=P.c(51),{filterSelection:t,setFilterSelection:i}=S.useContext(D),{data:C,years:E,nrens:T}=R("/api/crisis-exercises",i);let s,w;if(e[0]!==C||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let r;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(r=F=>t.selectedYears.includes(F.year)&&t.selectedNrens.includes(F.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=r):r=e[7],s=C.filter(r),w=O(s,"exercise_descriptions"),e[0]=C,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=w}else s=e[3],w=e[4];const Y=w;let a;e[8]!==E?(a=[...E],e[8]=E,e[9]=a):a=e[9];let l;e[10]!==T?(l=T.values(),e[10]=T,e[11]=l):l=e[11];let n;e[12]!==l?(n=[...l],e[12]=l,e[13]=n):n=e[13];let o;e[14]!==a||e[15]!==n?(o={availableYears:a,availableNrens:n},e[14]=a,e[15]=n,e[16]=o):o=e[16];let v;e[17]!==t||e[18]!==i||e[19]!==o?(v=W.jsx(A,{filterOptions:o,filterSelection:t,setFilterSelection:i,coloredYears:!0}),e[17]=t,e[18]=i,e[19]=o,e[20]=v):v=e[20];const k=v;let c,p,u,d,m,x,f,h,N,_,y;if(e[21]!==k||e[22]!==s){const r={geant_workshops:"We participate in GEANT Crisis workshops such as CLAW",national_excercises:"We participated in National crisis exercises ",tabletop_exercises:"We run our own tabletop exercises",simulation_excercises:"We run our own simulation exercises",other_excercises:"We have done/participated in other exercises or trainings",real_crisis:"We had a real crisis",internal_security_programme:"We run an internal security awareness programme",none:"No, we have not done any crisis exercises or trainings"};d=new Map(Object.entries(r).map(q)),u=G,N=M["crisis-exercise"],_=`Many NRENs run or participate in crisis exercises to test procedures and train employees. +import{c as P,r as S,F as D,S as L,j as W,t as M}from"./index.js";import{u as R,g as O,F as A,D as G,f as V}from"./useData-CYCBVZdC.js";import{P as $}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function Z(){const e=P.c(51),{filterSelection:t,setFilterSelection:i}=S.useContext(D),{data:C,years:E,nrens:T}=R("/api/crisis-exercises",i);let s,w;if(e[0]!==C||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let r;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(r=F=>t.selectedYears.includes(F.year)&&t.selectedNrens.includes(F.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=r):r=e[7],s=C.filter(r),w=O(s,"exercise_descriptions"),e[0]=C,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=w}else s=e[3],w=e[4];const Y=w;let a;e[8]!==E?(a=[...E],e[8]=E,e[9]=a):a=e[9];let l;e[10]!==T?(l=T.values(),e[10]=T,e[11]=l):l=e[11];let n;e[12]!==l?(n=[...l],e[12]=l,e[13]=n):n=e[13];let o;e[14]!==a||e[15]!==n?(o={availableYears:a,availableNrens:n},e[14]=a,e[15]=n,e[16]=o):o=e[16];let v;e[17]!==t||e[18]!==i||e[19]!==o?(v=W.jsx(A,{filterOptions:o,filterSelection:t,setFilterSelection:i,coloredYears:!0}),e[17]=t,e[18]=i,e[19]=o,e[20]=v):v=e[20];const k=v;let c,p,u,d,m,x,f,h,N,_,y;if(e[21]!==k||e[22]!==s){const r={geant_workshops:"We participate in GEANT Crisis workshops such as CLAW",national_excercises:"We participated in National crisis exercises ",tabletop_exercises:"We run our own tabletop exercises",simulation_excercises:"We run our own simulation exercises",other_excercises:"We have done/participated in other exercises or trainings",real_crisis:"We had a real crisis",internal_security_programme:"We run an internal security awareness programme",none:"No, we have not done any crisis exercises or trainings"};d=new Map(Object.entries(r).map(q)),u=G,N=M["crisis-exercise"],_=`Many NRENs run or participate in crisis exercises to test procedures and train employees. The table below shows whether NRENs have run or participated in an exercise in the previous year. `,y=L.Policy,m=k,x=s,f="crisis_exercise_nrens_per_year",p=V,c=$,h=Object.values(r),e[21]=k,e[22]=s,e[23]=c,e[24]=p,e[25]=u,e[26]=d,e[27]=m,e[28]=x,e[29]=f,e[30]=h,e[31]=N,e[32]=_,e[33]=y}else c=e[23],p=e[24],u=e[25],d=e[26],m=e[27],x=e[28],f=e[29],h=e[30],N=e[31],_=e[32],y=e[33];let b;e[34]!==c||e[35]!==d||e[36]!==Y||e[37]!==h?(b=W.jsx(c,{columns:h,dataLookup:Y,circle:!0,columnLookup:d}),e[34]=c,e[35]=d,e[36]=Y,e[37]=h,e[38]=b):b=e[38];let g;e[39]!==p||e[40]!==b?(g=W.jsx(p,{children:b}),e[39]=p,e[40]=b,e[41]=g):g=e[41];let j;return e[42]!==u||e[43]!==m||e[44]!==x||e[45]!==f||e[46]!==g||e[47]!==N||e[48]!==_||e[49]!==y?(j=W.jsx(u,{title:N,description:_,category:y,filter:m,data:x,filename:f,children:g}),e[42]=u,e[43]=m,e[44]=x,e[45]=f,e[46]=g,e[47]=N,e[48]=_,e[49]=y,e[50]=j):j=e[50],j}function q(e){const[t,i]=e;return[i,t]}export{Z as default}; diff --git a/compendium_v2/static/CrisisManagement-TH7W12RY.js b/compendium_v2/static/CrisisManagement-B9EB2EWM.js similarity index 93% rename from compendium_v2/static/CrisisManagement-TH7W12RY.js rename to compendium_v2/static/CrisisManagement-B9EB2EWM.js index 9563b156..673dcd9c 100644 --- a/compendium_v2/static/CrisisManagement-TH7W12RY.js +++ b/compendium_v2/static/CrisisManagement-B9EB2EWM.js @@ -1 +1 @@ -import{c as C,r as F,F as v,j as x,t as P,S as k}from"./index.js";import{u as w,g as D,D as E,F as T,f as L}from"./useData-Ct8E3VVL.js";import{P as M}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function H(){const e=C.c(30);let m;e[0]===Symbol.for("react.memo_cache_sentinel")?(m=c=>c.crisis_management_procedure!==null,e[0]=m):m=e[0];const S=m,{filterSelection:t,setFilterSelection:d}=F.useContext(v),{data:N,years:_,nrens:g}=w("/api/standards",d,S);let s,f;if(e[1]!==N||e[2]!==t.selectedNrens||e[3]!==t.selectedYears){let c;e[6]!==t.selectedNrens||e[7]!==t.selectedYears?(c=Y=>t.selectedYears.includes(Y.year)&&t.selectedNrens.includes(Y.nren)&&S(Y),e[6]=t.selectedNrens,e[7]=t.selectedYears,e[8]=c):c=e[8],s=N.filter(c),f=D(s,"crisis_management_procedure"),e[1]=N,e[2]=t.selectedNrens,e[3]=t.selectedYears,e[4]=s,e[5]=f}else s=e[4],f=e[5];const b=f;let l,p;e[9]===Symbol.for("react.memo_cache_sentinel")?(l=["Yes","No"],p=new Map([[l[0],"True"],[l[1],"False"]]),e[9]=l,e[10]=p):(l=e[9],p=e[10]);const j=p;let a;e[11]!==_?(a=[..._],e[11]=_,e[12]=a):a=e[12];let r;e[13]!==g?(r=g.values(),e[13]=g,e[14]=r):r=e[14];let i;e[15]!==r?(i=[...r],e[15]=r,e[16]=i):i=e[16];let n;e[17]!==a||e[18]!==i?(n={availableYears:a,availableNrens:i},e[17]=a,e[18]=i,e[19]=n):n=e[19];let u;e[20]!==t||e[21]!==d||e[22]!==n?(u=x.jsx(T,{filterOptions:n,filterSelection:t,setFilterSelection:d,coloredYears:!0}),e[20]=t,e[21]=d,e[22]=n,e[23]=u):u=e[23];const y=u;let o;e[24]!==b?(o=x.jsx(L,{children:x.jsx(M,{columns:l,columnLookup:j,dataLookup:b})}),e[24]=b,e[25]=o):o=e[25];let h;return e[26]!==y||e[27]!==s||e[28]!==o?(h=x.jsx(E,{title:P["crisis-management"],description:"The table below shows whether NRENs have a formal crisis management procedure.",category:k.Policy,filter:y,data:s,filename:"crisis_management_nrens_per_year",children:o}),e[26]=y,e[27]=s,e[28]=o,e[29]=h):h=e[29],h}export{H as default}; +import{c as C,r as F,F as v,j as x,t as P,S as k}from"./index.js";import{u as w,g as D,D as E,F as T,f as L}from"./useData-CYCBVZdC.js";import{P as M}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function H(){const e=C.c(30);let m;e[0]===Symbol.for("react.memo_cache_sentinel")?(m=c=>c.crisis_management_procedure!==null,e[0]=m):m=e[0];const S=m,{filterSelection:t,setFilterSelection:d}=F.useContext(v),{data:N,years:_,nrens:g}=w("/api/standards",d,S);let s,f;if(e[1]!==N||e[2]!==t.selectedNrens||e[3]!==t.selectedYears){let c;e[6]!==t.selectedNrens||e[7]!==t.selectedYears?(c=Y=>t.selectedYears.includes(Y.year)&&t.selectedNrens.includes(Y.nren)&&S(Y),e[6]=t.selectedNrens,e[7]=t.selectedYears,e[8]=c):c=e[8],s=N.filter(c),f=D(s,"crisis_management_procedure"),e[1]=N,e[2]=t.selectedNrens,e[3]=t.selectedYears,e[4]=s,e[5]=f}else s=e[4],f=e[5];const b=f;let l,p;e[9]===Symbol.for("react.memo_cache_sentinel")?(l=["Yes","No"],p=new Map([[l[0],"True"],[l[1],"False"]]),e[9]=l,e[10]=p):(l=e[9],p=e[10]);const j=p;let a;e[11]!==_?(a=[..._],e[11]=_,e[12]=a):a=e[12];let r;e[13]!==g?(r=g.values(),e[13]=g,e[14]=r):r=e[14];let i;e[15]!==r?(i=[...r],e[15]=r,e[16]=i):i=e[16];let n;e[17]!==a||e[18]!==i?(n={availableYears:a,availableNrens:i},e[17]=a,e[18]=i,e[19]=n):n=e[19];let u;e[20]!==t||e[21]!==d||e[22]!==n?(u=x.jsx(T,{filterOptions:n,filterSelection:t,setFilterSelection:d,coloredYears:!0}),e[20]=t,e[21]=d,e[22]=n,e[23]=u):u=e[23];const y=u;let o;e[24]!==b?(o=x.jsx(L,{children:x.jsx(M,{columns:l,columnLookup:j,dataLookup:b})}),e[24]=b,e[25]=o):o=e[25];let h;return e[26]!==y||e[27]!==s||e[28]!==o?(h=x.jsx(E,{title:P["crisis-management"],description:"The table below shows whether NRENs have a formal crisis management procedure.",category:k.Policy,filter:y,data:s,filename:"crisis_management_nrens_per_year",children:o}),e[26]=y,e[27]=s,e[28]=o,e[29]=h):h=e[29],h}export{H as default}; diff --git a/compendium_v2/static/DarkFibreInstalled-XMYWXP4t.js b/compendium_v2/static/DarkFibreInstalled-2D1iNkw5.js similarity index 91% rename from compendium_v2/static/DarkFibreInstalled-XMYWXP4t.js rename to compendium_v2/static/DarkFibreInstalled-2D1iNkw5.js index 307bcc5b..abe8ca22 100644 --- a/compendium_v2/static/DarkFibreInstalled-XMYWXP4t.js +++ b/compendium_v2/static/DarkFibreInstalled-2D1iNkw5.js @@ -1 +1 @@ -import{c as N,r as j,F as D,j as n,t as F,S as L}from"./index.js";import{L as w}from"./index-C4Nuqrw6.js";import{C as E,a as v,L as P,P as R,b as I,p as K,c as O,d as T,u as U,e as Y,D as $,F as q,f as z}from"./useData-Ct8E3VVL.js";import{g as A}from"./charthelpers-DmM6tvdh.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";E.register(v,P,R,I,K,O,T);function X(){const e=N.c(24);let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=r=>r.fibre_length_in_country!=null,e[0]=o):o=e[0];const k=o,{filterSelection:t,setFilterSelection:c}=j.useContext(D),{data:u,nrens:_}=U("/api/dark-fibre-installed",c,k);let i,f;if(e[1]!==u||e[2]!==t.selectedNrens){let r;e[5]!==t.selectedNrens?(r=y=>t.selectedNrens.includes(y.nren)&&k(y),e[5]=t.selectedNrens,e[6]=r):r=e[6],i=u.filter(r),f=Y(i,"fibre_length_in_country"),e[1]=u,e[2]=t.selectedNrens,e[3]=i,e[4]=f}else i=e[3],f=e[4];const g=f;let m;e[7]===Symbol.for("react.memo_cache_sentinel")?(m=[],e[7]=m):m=e[7];let s;e[8]!==_?(s=_.values(),e[8]=_,e[9]=s):s=e[9];let l;e[10]!==s?(l={availableYears:m,availableNrens:[...s]},e[10]=s,e[11]=l):l=e[11];let d;e[12]!==t||e[13]!==c||e[14]!==l?(d=n.jsx(q,{filterOptions:l,filterSelection:t,setFilterSelection:c}),e[12]=t,e[13]=c,e[14]=l,e[15]=d):d=e[15];const x=d;let p;e[16]===Symbol.for("react.memo_cache_sentinel")?(p=A({title:"Kilometres of Installed Dark Fibre",tooltipUnit:"km",unit:"km"}),e[16]=p):p=e[16];const S=p;let h;e[17]===Symbol.for("react.memo_cache_sentinel")?(h=n.jsx("span",{children:"This graph shows the number of Kilometres of dark fibre installed by NRENs within their own countries, which they own themselves. The distance is the number of kilometres of the fibre pairs, or if bidirectional traffic on a single fibre, it is treated as a fibre pair."}),e[17]=h):h=e[17];const C=h;let a;e[18]!==g?(a=n.jsx(z,{children:n.jsx(w,{data:g,options:S})}),e[18]=g,e[19]=a):a=e[19];let b;return e[20]!==x||e[21]!==i||e[22]!==a?(b=n.jsx($,{title:F["dark-fibre-installed"],description:C,category:L.Network,filter:x,data:i,filename:"dark_fibre_lease_installed",children:a}),e[20]=x,e[21]=i,e[22]=a,e[23]=b):b=e[23],b}export{X as default}; +import{c as N,r as j,F as D,j as n,t as F,S as L}from"./index.js";import{L as w}from"./index-BfhfJiKe.js";import{C as E,a as v,L as P,P as R,b as I,p as K,c as O,d as T,u as U,e as Y,D as $,F as q,f as z}from"./useData-CYCBVZdC.js";import{g as A}from"./charthelpers-CdmocpOu.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";E.register(v,P,R,I,K,O,T);function X(){const e=N.c(24);let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=r=>r.fibre_length_in_country!=null,e[0]=o):o=e[0];const k=o,{filterSelection:t,setFilterSelection:c}=j.useContext(D),{data:u,nrens:_}=U("/api/dark-fibre-installed",c,k);let i,f;if(e[1]!==u||e[2]!==t.selectedNrens){let r;e[5]!==t.selectedNrens?(r=y=>t.selectedNrens.includes(y.nren)&&k(y),e[5]=t.selectedNrens,e[6]=r):r=e[6],i=u.filter(r),f=Y(i,"fibre_length_in_country"),e[1]=u,e[2]=t.selectedNrens,e[3]=i,e[4]=f}else i=e[3],f=e[4];const g=f;let m;e[7]===Symbol.for("react.memo_cache_sentinel")?(m=[],e[7]=m):m=e[7];let s;e[8]!==_?(s=_.values(),e[8]=_,e[9]=s):s=e[9];let l;e[10]!==s?(l={availableYears:m,availableNrens:[...s]},e[10]=s,e[11]=l):l=e[11];let d;e[12]!==t||e[13]!==c||e[14]!==l?(d=n.jsx(q,{filterOptions:l,filterSelection:t,setFilterSelection:c}),e[12]=t,e[13]=c,e[14]=l,e[15]=d):d=e[15];const x=d;let p;e[16]===Symbol.for("react.memo_cache_sentinel")?(p=A({title:"Kilometres of Installed Dark Fibre",tooltipUnit:"km",unit:"km"}),e[16]=p):p=e[16];const S=p;let h;e[17]===Symbol.for("react.memo_cache_sentinel")?(h=n.jsx("span",{children:"This graph shows the number of Kilometres of dark fibre installed by NRENs within their own countries, which they own themselves. The distance is the number of kilometres of the fibre pairs, or if bidirectional traffic on a single fibre, it is treated as a fibre pair."}),e[17]=h):h=e[17];const C=h;let a;e[18]!==g?(a=n.jsx(z,{children:n.jsx(w,{data:g,options:S})}),e[18]=g,e[19]=a):a=e[19];let b;return e[20]!==x||e[21]!==i||e[22]!==a?(b=n.jsx($,{title:F["dark-fibre-installed"],description:C,category:L.Network,filter:x,data:i,filename:"dark_fibre_lease_installed",children:a}),e[20]=x,e[21]=i,e[22]=a,e[23]=b):b=e[23],b}export{X as default}; diff --git a/compendium_v2/static/DarkFibreLease-C_DLt-sT.js b/compendium_v2/static/DarkFibreLease-DOa-O_Mg.js similarity index 92% rename from compendium_v2/static/DarkFibreLease-C_DLt-sT.js rename to compendium_v2/static/DarkFibreLease-DOa-O_Mg.js index daabe595..7aa8521f 100644 --- a/compendium_v2/static/DarkFibreLease-C_DLt-sT.js +++ b/compendium_v2/static/DarkFibreLease-DOa-O_Mg.js @@ -1 +1 @@ -import{c as w,r as R,F as P,j as c,S as I,t as D}from"./index.js";import{L as U}from"./index-C4Nuqrw6.js";import{C as K,a as O,L as T,P as $,b as A,p as Y,c as q,d as z,u as B,e as G,D as H,F as J,f as M}from"./useData-Ct8E3VVL.js";import{g as Q}from"./charthelpers-DmM6tvdh.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";K.register(O,T,$,A,Y,q,z);function ae(E){const e=w.c(32),{national:f}=E,s=f?"fibre_length_in_country":"fibre_length_outside_country";let d;e[0]!==s?(d=o=>o[s]!=null,e[0]=s,e[1]=d):d=e[1];const a=d,{filterSelection:t,setFilterSelection:m}=R.useContext(P),{data:k,nrens:x}=B("/api/dark-fibre-lease",m,a);let i,p;if(e[2]!==k||e[3]!==s||e[4]!==t.selectedNrens||e[5]!==a){let o;e[8]!==t.selectedNrens||e[9]!==a?(o=j=>t.selectedNrens.includes(j.nren)&&a(j),e[8]=t.selectedNrens,e[9]=a,e[10]=o):o=e[10],i=k.filter(o),p=G(i,s),e[2]=k,e[3]=s,e[4]=t.selectedNrens,e[5]=a,e[6]=i,e[7]=p}else i=e[6],p=e[7];const N=p;let h;e[11]===Symbol.for("react.memo_cache_sentinel")?(h=[],e[11]=h):h=e[11];let l;e[12]!==x?(l=x.values(),e[12]=x,e[13]=l):l=e[13];let r;e[14]!==l?(r={availableYears:h,availableNrens:[...l]},e[14]=l,e[15]=r):r=e[15];let b;e[16]!==t||e[17]!==m||e[18]!==r?(b=c.jsx(J,{filterOptions:r,filterSelection:t,setFilterSelection:m}),e[16]=t,e[17]=m,e[18]=r,e[19]=b):b=e[19];const y=b;let u;e[20]===Symbol.for("react.memo_cache_sentinel")?(u=Q({title:"Kilometres of Leased Dark Fibre",tooltipUnit:"km",unit:"km"}),e[20]=u):u=e[20];const F=u,C=f?"within":"outside";let g;e[21]!==C?(g=c.jsxs("span",{children:["This graph shows the number of Kilometres of dark fibre leased by NRENs ",C," their own countries. Also included is fibre leased via an IRU (Indefeasible Right of Use), a type of long-term lease of a portion of the capacity of a cable. It does not however, include fibre NRENs have installed, and own, themselves. The distance is the number of kilometres of the fibre pairs, or if bidirectional traffic on a single fibre, it is treated as a fibre pair."]}),e[21]=C,e[22]=g):g=e[22];const L=g,S=f?D["dark-fibre-lease"]:D["dark-fibre-lease-international"],v=`dark_fibre_lease_${f?"national":"international"}`;let n;e[23]!==N?(n=c.jsx(M,{children:c.jsx(U,{data:N,options:F})}),e[23]=N,e[24]=n):n=e[24];let _;return e[25]!==L||e[26]!==y||e[27]!==i||e[28]!==S||e[29]!==v||e[30]!==n?(_=c.jsx(H,{title:S,description:L,category:I.Network,filter:y,data:i,filename:v,children:n}),e[25]=L,e[26]=y,e[27]=i,e[28]=S,e[29]=v,e[30]=n,e[31]=_):_=e[31],_}export{ae as default}; +import{c as w,r as R,F as P,j as c,S as I,t as D}from"./index.js";import{L as U}from"./index-BfhfJiKe.js";import{C as K,a as O,L as T,P as $,b as A,p as Y,c as q,d as z,u as B,e as G,D as H,F as J,f as M}from"./useData-CYCBVZdC.js";import{g as Q}from"./charthelpers-CdmocpOu.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";K.register(O,T,$,A,Y,q,z);function ae(E){const e=w.c(32),{national:f}=E,s=f?"fibre_length_in_country":"fibre_length_outside_country";let d;e[0]!==s?(d=o=>o[s]!=null,e[0]=s,e[1]=d):d=e[1];const a=d,{filterSelection:t,setFilterSelection:m}=R.useContext(P),{data:k,nrens:x}=B("/api/dark-fibre-lease",m,a);let i,p;if(e[2]!==k||e[3]!==s||e[4]!==t.selectedNrens||e[5]!==a){let o;e[8]!==t.selectedNrens||e[9]!==a?(o=j=>t.selectedNrens.includes(j.nren)&&a(j),e[8]=t.selectedNrens,e[9]=a,e[10]=o):o=e[10],i=k.filter(o),p=G(i,s),e[2]=k,e[3]=s,e[4]=t.selectedNrens,e[5]=a,e[6]=i,e[7]=p}else i=e[6],p=e[7];const N=p;let h;e[11]===Symbol.for("react.memo_cache_sentinel")?(h=[],e[11]=h):h=e[11];let l;e[12]!==x?(l=x.values(),e[12]=x,e[13]=l):l=e[13];let r;e[14]!==l?(r={availableYears:h,availableNrens:[...l]},e[14]=l,e[15]=r):r=e[15];let b;e[16]!==t||e[17]!==m||e[18]!==r?(b=c.jsx(J,{filterOptions:r,filterSelection:t,setFilterSelection:m}),e[16]=t,e[17]=m,e[18]=r,e[19]=b):b=e[19];const y=b;let u;e[20]===Symbol.for("react.memo_cache_sentinel")?(u=Q({title:"Kilometres of Leased Dark Fibre",tooltipUnit:"km",unit:"km"}),e[20]=u):u=e[20];const F=u,C=f?"within":"outside";let g;e[21]!==C?(g=c.jsxs("span",{children:["This graph shows the number of Kilometres of dark fibre leased by NRENs ",C," their own countries. Also included is fibre leased via an IRU (Indefeasible Right of Use), a type of long-term lease of a portion of the capacity of a cable. It does not however, include fibre NRENs have installed, and own, themselves. The distance is the number of kilometres of the fibre pairs, or if bidirectional traffic on a single fibre, it is treated as a fibre pair."]}),e[21]=C,e[22]=g):g=e[22];const L=g,S=f?D["dark-fibre-lease"]:D["dark-fibre-lease-international"],v=`dark_fibre_lease_${f?"national":"international"}`;let n;e[23]!==N?(n=c.jsx(M,{children:c.jsx(U,{data:N,options:F})}),e[23]=N,e[24]=n):n=e[24];let _;return e[25]!==L||e[26]!==y||e[27]!==i||e[28]!==S||e[29]!==v||e[30]!==n?(_=c.jsx(H,{title:S,description:L,category:I.Network,filter:y,data:i,filename:v,children:n}),e[25]=L,e[26]=y,e[27]=i,e[28]=S,e[29]=v,e[30]=n,e[31]=_):_=e[31],_}export{ae as default}; diff --git a/compendium_v2/static/ECProjects-CT3RTMct.js b/compendium_v2/static/ECProjects-Cxw57QLP.js similarity index 93% rename from compendium_v2/static/ECProjects-CT3RTMct.js rename to compendium_v2/static/ECProjects-Cxw57QLP.js index b77c3d6a..2a554427 100644 --- a/compendium_v2/static/ECProjects-CT3RTMct.js +++ b/compendium_v2/static/ECProjects-Cxw57QLP.js @@ -1 +1 @@ -import{c as v,r as Y,F as y,j as u,S as C}from"./index.js";import{u as D,h as T,i as _,D as g,F,f as P}from"./useData-Ct8E3VVL.js";import{N as R}from"./NrenYearTable-iS8aEX43.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function $(){const e=v.c(27),{filterSelection:t,setFilterSelection:s}=Y.useContext(y),{data:a,years:j,nrens:N}=D("/api/ec-project",s);let r,d;if(e[0]!==t.selectedNrens||e[1]!==t.selectedYears||e[2]!==a){let f;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(f=x=>t.selectedYears.includes(x.year)&&t.selectedNrens.includes(x.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=f):f=e[7],r=a.filter(f);const E=T(r);d=_(E,S),e[0]=t.selectedNrens,e[1]=t.selectedYears,e[2]=a,e[3]=r,e[4]=d}else r=e[3],d=e[4];const b=d;let o;e[8]!==j?(o=[...j],e[8]=j,e[9]=o):o=e[9];let i;e[10]!==N?(i=N.values(),e[10]=N,e[11]=i):i=e[11];let n;e[12]!==i?(n=[...i],e[12]=i,e[13]=n):n=e[13];let l;e[14]!==o||e[15]!==n?(l={availableYears:o,availableNrens:n},e[14]=o,e[15]=n,e[16]=l):l=e[16];let p;e[17]!==t||e[18]!==s||e[19]!==l?(p=u.jsx(F,{filterOptions:l,filterSelection:t,setFilterSelection:s}),e[17]=t,e[18]=s,e[19]=l,e[20]=p):p=e[20];const h=p;let c;e[21]!==b?(c=u.jsx(P,{children:u.jsx(R,{data:b,columnTitle:"EC Project Membership",dottedBorder:!0})}),e[21]=b,e[22]=c):c=e[22];let m;return e[23]!==h||e[24]!==r||e[25]!==c?(m=u.jsx(g,{title:"NREN Involvement in European Commission Projects",description:"Many NRENs are involved in a number of different European Commission project, besides GÉANT. The list of projects in the table below is not necessarily exhaustive, but does contain projects the NRENs consider important or worthy of mention.",category:C.Organisation,filter:h,data:r,filename:"nren_involvement_in_european_commission_projects",children:c}),e[23]=h,e[24]=r,e[25]=c,e[26]=m):m=e[26],m}function S(e,t){const s=t.map(O).sort();s.length&&s.forEach(a=>{e[a]=a})}function O(e){return e.project}export{$ as default}; +import{c as v,r as Y,F as y,j as u,S as C}from"./index.js";import{u as D,h as T,i as _,D as g,F,f as P}from"./useData-CYCBVZdC.js";import{N as R}from"./NrenYearTable-RI8l8hwG.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function $(){const e=v.c(27),{filterSelection:t,setFilterSelection:s}=Y.useContext(y),{data:a,years:j,nrens:N}=D("/api/ec-project",s);let r,d;if(e[0]!==t.selectedNrens||e[1]!==t.selectedYears||e[2]!==a){let f;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(f=x=>t.selectedYears.includes(x.year)&&t.selectedNrens.includes(x.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=f):f=e[7],r=a.filter(f);const E=T(r);d=_(E,S),e[0]=t.selectedNrens,e[1]=t.selectedYears,e[2]=a,e[3]=r,e[4]=d}else r=e[3],d=e[4];const b=d;let o;e[8]!==j?(o=[...j],e[8]=j,e[9]=o):o=e[9];let i;e[10]!==N?(i=N.values(),e[10]=N,e[11]=i):i=e[11];let n;e[12]!==i?(n=[...i],e[12]=i,e[13]=n):n=e[13];let l;e[14]!==o||e[15]!==n?(l={availableYears:o,availableNrens:n},e[14]=o,e[15]=n,e[16]=l):l=e[16];let p;e[17]!==t||e[18]!==s||e[19]!==l?(p=u.jsx(F,{filterOptions:l,filterSelection:t,setFilterSelection:s}),e[17]=t,e[18]=s,e[19]=l,e[20]=p):p=e[20];const h=p;let c;e[21]!==b?(c=u.jsx(P,{children:u.jsx(R,{data:b,columnTitle:"EC Project Membership",dottedBorder:!0})}),e[21]=b,e[22]=c):c=e[22];let m;return e[23]!==h||e[24]!==r||e[25]!==c?(m=u.jsx(g,{title:"NREN Involvement in European Commission Projects",description:"Many NRENs are involved in a number of different European Commission project, besides GÉANT. The list of projects in the table below is not necessarily exhaustive, but does contain projects the NRENs consider important or worthy of mention.",category:C.Organisation,filter:h,data:r,filename:"nren_involvement_in_european_commission_projects",children:c}),e[23]=h,e[24]=r,e[25]=c,e[26]=m):m=e[26],m}function S(e,t){const s=t.map(O).sort();s.length&&s.forEach(a=>{e[a]=a})}function O(e){return e.project}export{$ as default}; diff --git a/compendium_v2/static/EOSCListings-v4hLpISP.js b/compendium_v2/static/EOSCListings-Gq2b1C2V.js similarity index 96% rename from compendium_v2/static/EOSCListings-v4hLpISP.js rename to compendium_v2/static/EOSCListings-Gq2b1C2V.js index 8f5a54f8..4c5e2da5 100644 --- a/compendium_v2/static/EOSCListings-v4hLpISP.js +++ b/compendium_v2/static/EOSCListings-Gq2b1C2V.js @@ -1 +1 @@ -import{c as Y,r as j,F as C,j as f,t as D,S as E}from"./index.js";import{u as _,h as F,i as R,D as L,F as k,f as O}from"./useData-Ct8E3VVL.js";import{N as P}from"./NrenYearTable-iS8aEX43.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function H(){const e=Y.c(28),{filterSelection:t,setFilterSelection:l}=j.useContext(C),{data:a,years:N,nrens:x}=_("/api/eosc-listings",l);let s,d;if(e[0]!==a||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let h;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(h=b=>t.selectedYears.includes(b.year)&&t.selectedNrens.includes(b.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=h):h=e[7],s=a.filter(h);const y=F(s);d=R(y,T),e[0]=a,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=d}else s=e[3],d=e[4];const S=d;let i;e[8]!==N?(i=[...N],e[8]=N,e[9]=i):i=e[9];let r;e[10]!==x?(r=x.values(),e[10]=x,e[11]=r):r=e[11];let o;e[12]!==r?(o=[...r],e[12]=r,e[13]=o):o=e[13];let n;e[14]!==i||e[15]!==o?(n={availableYears:i,availableNrens:o},e[14]=i,e[15]=o,e[16]=n):n=e[16];let m;e[17]!==t||e[18]!==l||e[19]!==n?(m=f.jsx(k,{filterOptions:n,filterSelection:t,setFilterSelection:l}),e[17]=t,e[18]=l,e[19]=n,e[20]=m):m=e[20];const g=m;let p;e[21]===Symbol.for("react.memo_cache_sentinel")?(p=f.jsx("span",{children:"Some NRENs choose to list services on the EOSC portal, these can be seen in the table below. Click on the name of the NREN to expand the detail and see the names of the services they list."}),e[21]=p):p=e[21];const v=p;let c;e[22]!==S?(c=f.jsx(O,{children:f.jsx(P,{data:S,columnTitle:"Service Name",dottedBorder:!0,keysAreURLs:!0,noDots:!0})}),e[22]=S,e[23]=c):c=e[23];let u;return e[24]!==g||e[25]!==s||e[26]!==c?(u=f.jsx(L,{title:D.eosc_listings,description:v,category:E.Policy,filter:g,data:s,filename:"nren_eosc_listings",children:c}),e[24]=g,e[25]=s,e[26]=c,e[27]=u):u=e[27],u}function T(e,t){for(const l of t)for(const a of l.service_names)e[a]=a}export{H as default}; +import{c as Y,r as j,F as C,j as f,t as D,S as E}from"./index.js";import{u as _,h as F,i as R,D as L,F as k,f as O}from"./useData-CYCBVZdC.js";import{N as P}from"./NrenYearTable-RI8l8hwG.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function H(){const e=Y.c(28),{filterSelection:t,setFilterSelection:l}=j.useContext(C),{data:a,years:N,nrens:x}=_("/api/eosc-listings",l);let s,d;if(e[0]!==a||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let h;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(h=b=>t.selectedYears.includes(b.year)&&t.selectedNrens.includes(b.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=h):h=e[7],s=a.filter(h);const y=F(s);d=R(y,T),e[0]=a,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=d}else s=e[3],d=e[4];const S=d;let i;e[8]!==N?(i=[...N],e[8]=N,e[9]=i):i=e[9];let r;e[10]!==x?(r=x.values(),e[10]=x,e[11]=r):r=e[11];let o;e[12]!==r?(o=[...r],e[12]=r,e[13]=o):o=e[13];let n;e[14]!==i||e[15]!==o?(n={availableYears:i,availableNrens:o},e[14]=i,e[15]=o,e[16]=n):n=e[16];let m;e[17]!==t||e[18]!==l||e[19]!==n?(m=f.jsx(k,{filterOptions:n,filterSelection:t,setFilterSelection:l}),e[17]=t,e[18]=l,e[19]=n,e[20]=m):m=e[20];const g=m;let p;e[21]===Symbol.for("react.memo_cache_sentinel")?(p=f.jsx("span",{children:"Some NRENs choose to list services on the EOSC portal, these can be seen in the table below. Click on the name of the NREN to expand the detail and see the names of the services they list."}),e[21]=p):p=e[21];const v=p;let c;e[22]!==S?(c=f.jsx(O,{children:f.jsx(P,{data:S,columnTitle:"Service Name",dottedBorder:!0,keysAreURLs:!0,noDots:!0})}),e[22]=S,e[23]=c):c=e[23];let u;return e[24]!==g||e[25]!==s||e[26]!==c?(u=f.jsx(L,{title:D.eosc_listings,description:v,category:E.Policy,filter:g,data:s,filename:"nren_eosc_listings",children:c}),e[24]=g,e[25]=s,e[26]=c,e[27]=u):u=e[27],u}function T(e,t){for(const l of t)for(const a of l.service_names)e[a]=a}export{H as default}; diff --git a/compendium_v2/static/ExternalConnections-Ds1slbkO.js b/compendium_v2/static/ExternalConnections-ldDiu0-q.js similarity index 98% rename from compendium_v2/static/ExternalConnections-Ds1slbkO.js rename to compendium_v2/static/ExternalConnections-ldDiu0-q.js index b9655710..6392337a 100644 --- a/compendium_v2/static/ExternalConnections-Ds1slbkO.js +++ b/compendium_v2/static/ExternalConnections-ldDiu0-q.js @@ -1 +1 @@ -import{c as _,j as r,e as C,r as S,F as E,t as w,S as D}from"./index.js";import{u as F,h as T,D as Y,F as R,f as L}from"./useData-Ct8E3VVL.js";import{T as O}from"./Table-ClWM2_rS.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";function $(e){const t=_.c(8),{dataLookup:l,columnInfo:a}=e;if(!l){let s;return t[0]===Symbol.for("react.memo_cache_sentinel")?(s=r.jsx("div",{className:"matrix-border-round"}),t[0]=s):s=t[0],s}let d;if(t[1]!==a||t[2]!==l){let s;t[4]!==a?(s=j=>{const[i,h]=j;return r.jsx(C,{title:i,theme:"-table",startCollapsed:!0,children:r.jsx("div",{className:"scrollable-horizontal",children:Array.from(h.entries()).map(m=>{const[o,b]=m,x={"--before-color":`var(--color-of-the-year-muted-${o%9})`};return r.jsxs("div",{children:[r.jsx("span",{className:`scrollable-table-year color-of-the-year-${o%9} bold-caps-16pt pt-3 ps-3`,style:x,children:o}),r.jsx("div",{className:`colored-table bg-muted-color-of-the-year-${o%9}`,children:r.jsxs(O,{children:[r.jsx("thead",{children:r.jsx("tr",{children:Object.keys(a).map(c=>r.jsx("th",{style:{position:"relative"},children:r.jsx("span",{style:x,children:c})},c))})}),r.jsx("tbody",{children:b.map((c,k)=>r.jsx("tr",{children:Object.entries(a).map(u=>{const[g,f]=u,y=c[f];return r.jsx("td",{children:y},g)})},k))})]})})]},o)})})},i)},t[4]=a,t[5]=s):s=t[5],d=Array.from(l.entries()).map(s),t[1]=a,t[2]=l,t[3]=d}else d=t[3];const p=d;let n;return t[6]!==p?(n=r.jsx("div",{className:"matrix-border-round",children:p}),t[6]=p,t[7]=n):n=t[7],n}function q(){const e=_.c(29),{filterSelection:t,setFilterSelection:l}=S.useContext(E),{data:a,years:d,nrens:p}=F("/api/external-connections",l);let n,s;if(e[0]!==a||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let N;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(N=v=>t.selectedYears.includes(v.year)&&t.selectedNrens.includes(v.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=N):N=e[7],n=a.filter(N),s=T([...n]),e[0]=a,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=n,e[4]=s}else n=e[3],s=e[4];const j=s;let i;e[8]!==d?(i=[...d],e[8]=d,e[9]=i):i=e[9];let h;e[10]!==p?(h=p.values(),e[10]=p,e[11]=h):h=e[11];let m;e[12]!==h?(m=[...h],e[12]=h,e[13]=m):m=e[13];let o;e[14]!==i||e[15]!==m?(o={availableYears:i,availableNrens:m},e[14]=i,e[15]=m,e[16]=o):o=e[16];let b;e[17]!==t||e[18]!==l||e[19]!==o?(b=r.jsx(R,{filterOptions:o,filterSelection:t,setFilterSelection:l,coloredYears:!0}),e[17]=t,e[18]=l,e[19]=o,e[20]=b):b=e[20];const x=b;let c;e[21]===Symbol.for("react.memo_cache_sentinel")?(c={"Link Name":"link_name","Capacity (Gbit/s)":"capacity","From Organisation":"from_organization","To Organisation":"to_organization","Interconnection Method":"interconnection_method"},e[21]=c):c=e[21];const k=c;let u;e[22]===Symbol.for("react.memo_cache_sentinel")?(u=r.jsxs(r.Fragment,{children:[r.jsx("p",{children:"The table below shows the operational external IP connections of each NREN. These include links to their regional backbone (ie. GÉANT), to other research locations, to the commercial internet, peerings to internet exchanges, cross-border dark fibre links, and any other links they may have."}),r.jsx("p",{children:"NRENs are asked to state the capacity for production purposes, not any additional link that may be there solely for the purpose of giving resilience. Cross-border fibre links are meant as those links which have been commissioned or established by the NREN from a point on their network, which is near the border to another point near the border on the network of a neighbouring NREN."})]}),e[22]=u):u=e[22];const g=u;let f;e[23]!==j?(f=r.jsx(L,{children:r.jsx($,{dataLookup:j,columnInfo:k})}),e[23]=j,e[24]=f):f=e[24];let y;return e[25]!==x||e[26]!==n||e[27]!==f?(y=r.jsx(Y,{title:w["external-connections"],description:g,category:D.Network,filter:x,data:n,filename:"nren_external_connections",children:f}),e[25]=x,e[26]=n,e[27]=f,e[28]=y):y=e[28],y}export{q as default}; +import{c as _,j as r,e as C,r as S,F as E,t as w,S as D}from"./index.js";import{u as F,h as T,D as Y,F as R,f as L}from"./useData-CYCBVZdC.js";import{T as O}from"./Table-ClWM2_rS.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";function $(e){const t=_.c(8),{dataLookup:l,columnInfo:a}=e;if(!l){let s;return t[0]===Symbol.for("react.memo_cache_sentinel")?(s=r.jsx("div",{className:"matrix-border-round"}),t[0]=s):s=t[0],s}let d;if(t[1]!==a||t[2]!==l){let s;t[4]!==a?(s=j=>{const[i,h]=j;return r.jsx(C,{title:i,theme:"-table",startCollapsed:!0,children:r.jsx("div",{className:"scrollable-horizontal",children:Array.from(h.entries()).map(m=>{const[o,b]=m,x={"--before-color":`var(--color-of-the-year-muted-${o%9})`};return r.jsxs("div",{children:[r.jsx("span",{className:`scrollable-table-year color-of-the-year-${o%9} bold-caps-16pt pt-3 ps-3`,style:x,children:o}),r.jsx("div",{className:`colored-table bg-muted-color-of-the-year-${o%9}`,children:r.jsxs(O,{children:[r.jsx("thead",{children:r.jsx("tr",{children:Object.keys(a).map(c=>r.jsx("th",{style:{position:"relative"},children:r.jsx("span",{style:x,children:c})},c))})}),r.jsx("tbody",{children:b.map((c,k)=>r.jsx("tr",{children:Object.entries(a).map(u=>{const[g,f]=u,y=c[f];return r.jsx("td",{children:y},g)})},k))})]})})]},o)})})},i)},t[4]=a,t[5]=s):s=t[5],d=Array.from(l.entries()).map(s),t[1]=a,t[2]=l,t[3]=d}else d=t[3];const p=d;let n;return t[6]!==p?(n=r.jsx("div",{className:"matrix-border-round",children:p}),t[6]=p,t[7]=n):n=t[7],n}function q(){const e=_.c(29),{filterSelection:t,setFilterSelection:l}=S.useContext(E),{data:a,years:d,nrens:p}=F("/api/external-connections",l);let n,s;if(e[0]!==a||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let N;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(N=v=>t.selectedYears.includes(v.year)&&t.selectedNrens.includes(v.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=N):N=e[7],n=a.filter(N),s=T([...n]),e[0]=a,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=n,e[4]=s}else n=e[3],s=e[4];const j=s;let i;e[8]!==d?(i=[...d],e[8]=d,e[9]=i):i=e[9];let h;e[10]!==p?(h=p.values(),e[10]=p,e[11]=h):h=e[11];let m;e[12]!==h?(m=[...h],e[12]=h,e[13]=m):m=e[13];let o;e[14]!==i||e[15]!==m?(o={availableYears:i,availableNrens:m},e[14]=i,e[15]=m,e[16]=o):o=e[16];let b;e[17]!==t||e[18]!==l||e[19]!==o?(b=r.jsx(R,{filterOptions:o,filterSelection:t,setFilterSelection:l,coloredYears:!0}),e[17]=t,e[18]=l,e[19]=o,e[20]=b):b=e[20];const x=b;let c;e[21]===Symbol.for("react.memo_cache_sentinel")?(c={"Link Name":"link_name","Capacity (Gbit/s)":"capacity","From Organisation":"from_organization","To Organisation":"to_organization","Interconnection Method":"interconnection_method"},e[21]=c):c=e[21];const k=c;let u;e[22]===Symbol.for("react.memo_cache_sentinel")?(u=r.jsxs(r.Fragment,{children:[r.jsx("p",{children:"The table below shows the operational external IP connections of each NREN. These include links to their regional backbone (ie. GÉANT), to other research locations, to the commercial internet, peerings to internet exchanges, cross-border dark fibre links, and any other links they may have."}),r.jsx("p",{children:"NRENs are asked to state the capacity for production purposes, not any additional link that may be there solely for the purpose of giving resilience. Cross-border fibre links are meant as those links which have been commissioned or established by the NREN from a point on their network, which is near the border to another point near the border on the network of a neighbouring NREN."})]}),e[22]=u):u=e[22];const g=u;let f;e[23]!==j?(f=r.jsx(L,{children:r.jsx($,{dataLookup:j,columnInfo:k})}),e[23]=j,e[24]=f):f=e[24];let y;return e[25]!==x||e[26]!==n||e[27]!==f?(y=r.jsx(Y,{title:w["external-connections"],description:g,category:D.Network,filter:x,data:n,filename:"nren_external_connections",children:f}),e[25]=x,e[26]=n,e[27]=f,e[28]=y):y=e[28],y}export{q as default}; diff --git a/compendium_v2/static/FibreLight-C4tQtRYN.js b/compendium_v2/static/FibreLight-CitJL-tj.js similarity index 94% rename from compendium_v2/static/FibreLight-C4tQtRYN.js rename to compendium_v2/static/FibreLight-CitJL-tj.js index 4114604c..58aa0142 100644 --- a/compendium_v2/static/FibreLight-C4tQtRYN.js +++ b/compendium_v2/static/FibreLight-CitJL-tj.js @@ -1,2 +1,2 @@ -import{c as Y,r as j,F as k,j as h,t as v,S as E}from"./index.js";import{u as F,g as S,D as R,F as C,f as D}from"./useData-Ct8E3VVL.js";import{P as L}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function B(){const e=Y.c(29),{filterSelection:t,setFilterSelection:c}=j.useContext(k),{data:_,years:N,nrens:g}=F("/api/fibre-light",c);let s,p;if(e[0]!==_||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let m;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(m=b=>t.selectedYears.includes(b.year)&&t.selectedNrens.includes(b.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=m):m=e[7],s=_.filter(m),p=S(s,"light_description"),e[0]=_,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=p}else s=e[3],p=e[4];const w=p;let i;e[8]!==N?(i=[...N],e[8]=N,e[9]=i):i=e[9];let o;e[10]!==g?(o=g.values(),e[10]=g,e[11]=o):o=e[11];let n;e[12]!==o?(n=[...o],e[12]=o,e[13]=n):n=e[13];let l;e[14]!==i||e[15]!==n?(l={availableYears:i,availableNrens:n},e[14]=i,e[15]=n,e[16]=l):l=e[16];let d;e[17]!==t||e[18]!==c||e[19]!==l?(d=h.jsx(C,{filterOptions:l,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[17]=t,e[18]=c,e[19]=l,e[20]=d):d=e[20];const x=d;let r,f;e[21]===Symbol.for("react.memo_cache_sentinel")?(r=["NREN owns and operates equipment","NREN owns equipment and operation is outsourced","Ownership and management are out-sourced (turn-key model)"],f=new Map([[r[0],"nren_owns_and_operates"],[r[1],"nren_owns_outsourced_operation"],[r[2],"outsourced_ownership_and_operation"]]),e[21]=r,e[22]=f):(r=e[21],f=e[22]);const y=f;let a;e[23]!==w?(a=h.jsx(D,{children:h.jsx(L,{columns:r,dataLookup:w,columnLookup:y,circle:!0})}),e[23]=w,e[24]=a):a=e[24];let u;return e[25]!==x||e[26]!==s||e[27]!==a?(u=h.jsx(R,{title:v["fibre-light"],description:`This graphic shows the different ways NRENs can light their fibre networks. +import{c as Y,r as j,F as k,j as h,t as v,S as E}from"./index.js";import{u as F,g as S,D as R,F as C,f as D}from"./useData-CYCBVZdC.js";import{P as L}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function B(){const e=Y.c(29),{filterSelection:t,setFilterSelection:c}=j.useContext(k),{data:_,years:N,nrens:g}=F("/api/fibre-light",c);let s,p;if(e[0]!==_||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let m;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(m=b=>t.selectedYears.includes(b.year)&&t.selectedNrens.includes(b.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=m):m=e[7],s=_.filter(m),p=S(s,"light_description"),e[0]=_,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=p}else s=e[3],p=e[4];const w=p;let i;e[8]!==N?(i=[...N],e[8]=N,e[9]=i):i=e[9];let o;e[10]!==g?(o=g.values(),e[10]=g,e[11]=o):o=e[11];let n;e[12]!==o?(n=[...o],e[12]=o,e[13]=n):n=e[13];let l;e[14]!==i||e[15]!==n?(l={availableYears:i,availableNrens:n},e[14]=i,e[15]=n,e[16]=l):l=e[16];let d;e[17]!==t||e[18]!==c||e[19]!==l?(d=h.jsx(C,{filterOptions:l,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[17]=t,e[18]=c,e[19]=l,e[20]=d):d=e[20];const x=d;let r,f;e[21]===Symbol.for("react.memo_cache_sentinel")?(r=["NREN owns and operates equipment","NREN owns equipment and operation is outsourced","Ownership and management are out-sourced (turn-key model)"],f=new Map([[r[0],"nren_owns_and_operates"],[r[1],"nren_owns_outsourced_operation"],[r[2],"outsourced_ownership_and_operation"]]),e[21]=r,e[22]=f):(r=e[21],f=e[22]);const y=f;let a;e[23]!==w?(a=h.jsx(D,{children:h.jsx(L,{columns:r,dataLookup:w,columnLookup:y,circle:!0})}),e[23]=w,e[24]=a):a=e[24];let u;return e[25]!==x||e[26]!==s||e[27]!==a?(u=h.jsx(R,{title:v["fibre-light"],description:`This graphic shows the different ways NRENs can light their fibre networks. The option 'Other' is given, with extra information if you hover over the icon.`,category:E.Network,filter:x,data:s,filename:"fibre_light_of_nrens_per_year",children:a}),e[25]=x,e[26]=s,e[27]=a,e[28]=u):u=e[28],u}export{B as default}; diff --git a/compendium_v2/static/FundingSource-C4jAa4nC.js b/compendium_v2/static/FundingSource-M1iQBQ3K.js similarity index 96% rename from compendium_v2/static/FundingSource-C4jAa4nC.js rename to compendium_v2/static/FundingSource-M1iQBQ3K.js index ca2f5cd5..e609acd5 100644 --- a/compendium_v2/static/FundingSource-C4jAa4nC.js +++ b/compendium_v2/static/FundingSource-M1iQBQ3K.js @@ -1 +1 @@ -import{c as D,j as s,r as P,F as z,t as G,S as M,C as y,R as T}from"./index.js";import{B as H}from"./index-C4Nuqrw6.js";import{C as N,a as W,L as q,B as J,p as K,c as Q,d as U,u as V,j as X,D as Z,F as I,f as ee}from"./useData-Ct8E3VVL.js";import{p as te}from"./chartjs-plugin-datalabels.esm-BI98Iz1j.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";function j(e){const t=D.c(6),{index:i,active:l}=e,n=l===void 0?!0:l;let a;t[0]!==n||t[1]!==i?(a=n?s.jsx("div",{className:`color-of-badge-${i%5}`,style:{width:"20px",height:"35px",margin:"2px"}}):s.jsx("div",{className:"color-of-badge-blank",style:{width:"15px",height:"30px",margin:"2px"}}),t[0]=n,t[1]=i,t[2]=a):a=t[2];let r;return t[3]!==i||t[4]!==a?(r=s.jsx("div",{className:"d-inline-block m-2",children:a},i),t[3]=i,t[4]=a,t[5]=r):r=t[5],r}N.register(W,q,J,K,Q,U);const se={maintainAspectRatio:!1,layout:{padding:{right:60}},animation:{duration:0},plugins:{legend:{display:!1},tooltip:{callbacks:{label:function(e){let t=e.dataset.label||"";return e.parsed.y!==null&&(t+=`: ${e.parsed.x}%`),t}}}},scales:{x:{position:"top",ticks:{callback:e=>`${e}%`,stepSize:10},max:100,min:0},xBottom:{ticks:{callback:e=>`${e}%`,stepSize:10},max:100,min:0,grid:{drawOnChartArea:!1},afterDataLimits:function(e){const t=Object.keys(N.instances);let i=-999999,l=999999;for(const n of t)N.instances[n]&&e.chart.scales.xBottom&&(l=Math.min(N.instances[n].scales.x.min,l),i=Math.max(N.instances[n].scales.x.max,i));e.chart.scales.xBottom.options.min=l,e.chart.scales.xBottom.options.max=i,e.chart.scales.xBottom.min=l,e.chart.scales.xBottom.max=i}},y:{ticks:{autoSkip:!1}}},indexAxis:"y"};function $(){const e=D.c(5);let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=s.jsxs(y,{className:"d-flex align-items-center",children:[s.jsx(j,{index:0},0),"Client Institutions"]}),e[0]=t):t=e[0];let i;e[1]===Symbol.for("react.memo_cache_sentinel")?(i=s.jsxs(y,{className:"d-flex align-items-center",children:[s.jsx(j,{index:1},1),"Commercial"]}),e[1]=i):i=e[1];let l;e[2]===Symbol.for("react.memo_cache_sentinel")?(l=s.jsxs(y,{className:"d-flex align-items-center",children:[s.jsx(j,{index:2},2),"European Funding"]}),e[2]=l):l=e[2];let n;e[3]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsxs(y,{className:"d-flex align-items-center",children:[s.jsx(j,{index:3},3),"Gov/Public Bodies"]}),e[3]=n):n=e[3];let a;return e[4]===Symbol.for("react.memo_cache_sentinel")?(a=s.jsx("div",{className:"d-flex justify-content-center bold-grey-12pt",children:s.jsxs(T,{xs:"auto",className:"border rounded-3 border-1 my-5 justify-content-center",children:[t,i,l,n,s.jsxs(y,{className:"d-flex align-items-center",children:[s.jsx(j,{index:4},4),"Other"]})]})}),e[4]=a):a=e[4],a}function ue(){const e=D.c(44),{filterSelection:t,setFilterSelection:i}=P.useContext(z),{data:l,years:n,nrens:a}=V("/api/funding",i);let r,c,o,_;if(e[0]!==t||e[1]!==l||e[2]!==a||e[3]!==i||e[4]!==n){let E;e[9]!==t.selectedNrens||e[10]!==t.selectedYears?(E=m=>t.selectedYears.includes(m.year)&&t.selectedNrens.includes(m.nren),e[9]=t.selectedNrens,e[10]=t.selectedYears,e[11]=E):E=e[11],o=l.filter(E),c=X(o),c.datasets.forEach(m=>{m.data=m.data.filter((ne,L)=>t.selectedNrens.includes(c.labels[L]))});let k;e[12]!==t.selectedNrens?(k=m=>t.selectedNrens.includes(m),e[12]=t.selectedNrens,e[13]=k):k=e[13],c.labels=c.labels.filter(k);let x;e[14]!==n?(x=[...n],e[14]=n,e[15]=x):x=e[15];let p;e[16]!==a?(p=a.values(),e[16]=a,e[17]=p):p=e[17];let g;e[18]!==p?(g=[...p],e[18]=p,e[19]=g):g=e[19];let b;e[20]!==x||e[21]!==g?(b={availableYears:x,availableNrens:g},e[20]=x,e[21]=g,e[22]=b):b=e[22];let F;e[23]!==t||e[24]!==i||e[25]!==b?(F=s.jsx(I,{filterOptions:b,filterSelection:t,setFilterSelection:i}),e[23]=t,e[24]=i,e[25]=b,e[26]=F):F=e[26],r=F,_=Array.from(new Set(o.map(ie))),e[0]=t,e[1]=l,e[2]=a,e[3]=i,e[4]=n,e[5]=r,e[6]=c,e[7]=o,e[8]=_}else r=e[5],c=e[6],o=e[7],_=e[8];const O=_.length,Y=t.selectedYears.length,A=O*Y*2+5;let S;e[27]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsxs("span",{children:['The graph shows the percentage share of their income that NRENs derive from different sources, with any funding and NREN may receive from GÉANT included within "European funding". By "Client institutions" NRENs may be referring to universities, schools, research institutes, commercial clients, or other types of organisation. "Commercial services" include services such as being a domain registry, or security support.',s.jsx("br",{}),"Hovering over the graph bars will show the exact figures, per source. When viewing multiple years, it is advisable to restrict the number of NRENs being compared."]}),e[27]=S):S=e[27];let v;e[28]===Symbol.for("react.memo_cache_sentinel")?(v=s.jsx($,{}),e[28]=v):v=e[28];const R=`${A}rem`;let d;e[29]!==R?(d={height:R},e[29]=R,e[30]=d):d=e[30];let C;e[31]===Symbol.for("react.memo_cache_sentinel")?(C=[te],e[31]=C):C=e[31];let f;e[32]!==c?(f=s.jsx(H,{plugins:C,data:c,options:se}),e[32]=c,e[33]=f):f=e[33];let u;e[34]!==d||e[35]!==f?(u=s.jsx("div",{className:"chart-container",style:d,children:f}),e[34]=d,e[35]=f,e[36]=u):u=e[36];let B;e[37]===Symbol.for("react.memo_cache_sentinel")?(B=s.jsx($,{}),e[37]=B):B=e[37];let h;e[38]!==u?(h=s.jsxs(ee,{children:[v,u,B]}),e[38]=u,e[39]=h):h=e[39];let w;return e[40]!==r||e[41]!==o||e[42]!==h?(w=s.jsx(Z,{title:G.funding,description:S,category:M.Organisation,filter:r,data:o,filename:"income_source_of_nren_per_year",children:h}),e[40]=r,e[41]=o,e[42]=h,e[43]=w):w=e[43],w}function ie(e){return e.nren}export{ue as default}; +import{c as D,j as s,r as P,F as z,t as G,S as M,C as y,R as T}from"./index.js";import{B as H}from"./index-BfhfJiKe.js";import{C as N,a as W,L as q,B as J,p as K,c as Q,d as U,u as V,j as X,D as Z,F as I,f as ee}from"./useData-CYCBVZdC.js";import{p as te}from"./chartjs-plugin-datalabels.esm-CzQRWEly.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";function j(e){const t=D.c(6),{index:i,active:l}=e,n=l===void 0?!0:l;let a;t[0]!==n||t[1]!==i?(a=n?s.jsx("div",{className:`color-of-badge-${i%5}`,style:{width:"20px",height:"35px",margin:"2px"}}):s.jsx("div",{className:"color-of-badge-blank",style:{width:"15px",height:"30px",margin:"2px"}}),t[0]=n,t[1]=i,t[2]=a):a=t[2];let r;return t[3]!==i||t[4]!==a?(r=s.jsx("div",{className:"d-inline-block m-2",children:a},i),t[3]=i,t[4]=a,t[5]=r):r=t[5],r}N.register(W,q,J,K,Q,U);const se={maintainAspectRatio:!1,layout:{padding:{right:60}},animation:{duration:0},plugins:{legend:{display:!1},tooltip:{callbacks:{label:function(e){let t=e.dataset.label||"";return e.parsed.y!==null&&(t+=`: ${e.parsed.x}%`),t}}}},scales:{x:{position:"top",ticks:{callback:e=>`${e}%`,stepSize:10},max:100,min:0},xBottom:{ticks:{callback:e=>`${e}%`,stepSize:10},max:100,min:0,grid:{drawOnChartArea:!1},afterDataLimits:function(e){const t=Object.keys(N.instances);let i=-999999,l=999999;for(const n of t)N.instances[n]&&e.chart.scales.xBottom&&(l=Math.min(N.instances[n].scales.x.min,l),i=Math.max(N.instances[n].scales.x.max,i));e.chart.scales.xBottom.options.min=l,e.chart.scales.xBottom.options.max=i,e.chart.scales.xBottom.min=l,e.chart.scales.xBottom.max=i}},y:{ticks:{autoSkip:!1}}},indexAxis:"y"};function $(){const e=D.c(5);let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=s.jsxs(y,{className:"d-flex align-items-center",children:[s.jsx(j,{index:0},0),"Client Institutions"]}),e[0]=t):t=e[0];let i;e[1]===Symbol.for("react.memo_cache_sentinel")?(i=s.jsxs(y,{className:"d-flex align-items-center",children:[s.jsx(j,{index:1},1),"Commercial"]}),e[1]=i):i=e[1];let l;e[2]===Symbol.for("react.memo_cache_sentinel")?(l=s.jsxs(y,{className:"d-flex align-items-center",children:[s.jsx(j,{index:2},2),"European Funding"]}),e[2]=l):l=e[2];let n;e[3]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsxs(y,{className:"d-flex align-items-center",children:[s.jsx(j,{index:3},3),"Gov/Public Bodies"]}),e[3]=n):n=e[3];let a;return e[4]===Symbol.for("react.memo_cache_sentinel")?(a=s.jsx("div",{className:"d-flex justify-content-center bold-grey-12pt",children:s.jsxs(T,{xs:"auto",className:"border rounded-3 border-1 my-5 justify-content-center",children:[t,i,l,n,s.jsxs(y,{className:"d-flex align-items-center",children:[s.jsx(j,{index:4},4),"Other"]})]})}),e[4]=a):a=e[4],a}function ue(){const e=D.c(44),{filterSelection:t,setFilterSelection:i}=P.useContext(z),{data:l,years:n,nrens:a}=V("/api/funding",i);let r,c,o,_;if(e[0]!==t||e[1]!==l||e[2]!==a||e[3]!==i||e[4]!==n){let E;e[9]!==t.selectedNrens||e[10]!==t.selectedYears?(E=m=>t.selectedYears.includes(m.year)&&t.selectedNrens.includes(m.nren),e[9]=t.selectedNrens,e[10]=t.selectedYears,e[11]=E):E=e[11],o=l.filter(E),c=X(o),c.datasets.forEach(m=>{m.data=m.data.filter((ne,L)=>t.selectedNrens.includes(c.labels[L]))});let k;e[12]!==t.selectedNrens?(k=m=>t.selectedNrens.includes(m),e[12]=t.selectedNrens,e[13]=k):k=e[13],c.labels=c.labels.filter(k);let x;e[14]!==n?(x=[...n],e[14]=n,e[15]=x):x=e[15];let p;e[16]!==a?(p=a.values(),e[16]=a,e[17]=p):p=e[17];let g;e[18]!==p?(g=[...p],e[18]=p,e[19]=g):g=e[19];let b;e[20]!==x||e[21]!==g?(b={availableYears:x,availableNrens:g},e[20]=x,e[21]=g,e[22]=b):b=e[22];let F;e[23]!==t||e[24]!==i||e[25]!==b?(F=s.jsx(I,{filterOptions:b,filterSelection:t,setFilterSelection:i}),e[23]=t,e[24]=i,e[25]=b,e[26]=F):F=e[26],r=F,_=Array.from(new Set(o.map(ie))),e[0]=t,e[1]=l,e[2]=a,e[3]=i,e[4]=n,e[5]=r,e[6]=c,e[7]=o,e[8]=_}else r=e[5],c=e[6],o=e[7],_=e[8];const O=_.length,Y=t.selectedYears.length,A=O*Y*2+5;let S;e[27]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsxs("span",{children:['The graph shows the percentage share of their income that NRENs derive from different sources, with any funding and NREN may receive from GÉANT included within "European funding". By "Client institutions" NRENs may be referring to universities, schools, research institutes, commercial clients, or other types of organisation. "Commercial services" include services such as being a domain registry, or security support.',s.jsx("br",{}),"Hovering over the graph bars will show the exact figures, per source. When viewing multiple years, it is advisable to restrict the number of NRENs being compared."]}),e[27]=S):S=e[27];let v;e[28]===Symbol.for("react.memo_cache_sentinel")?(v=s.jsx($,{}),e[28]=v):v=e[28];const R=`${A}rem`;let d;e[29]!==R?(d={height:R},e[29]=R,e[30]=d):d=e[30];let C;e[31]===Symbol.for("react.memo_cache_sentinel")?(C=[te],e[31]=C):C=e[31];let f;e[32]!==c?(f=s.jsx(H,{plugins:C,data:c,options:se}),e[32]=c,e[33]=f):f=e[33];let u;e[34]!==d||e[35]!==f?(u=s.jsx("div",{className:"chart-container",style:d,children:f}),e[34]=d,e[35]=f,e[36]=u):u=e[36];let B;e[37]===Symbol.for("react.memo_cache_sentinel")?(B=s.jsx($,{}),e[37]=B):B=e[37];let h;e[38]!==u?(h=s.jsxs(ee,{children:[v,u,B]}),e[38]=u,e[39]=h):h=e[39];let w;return e[40]!==r||e[41]!==o||e[42]!==h?(w=s.jsx(Z,{title:G.funding,description:S,category:M.Organisation,filter:r,data:o,filename:"income_source_of_nren_per_year",children:h}),e[40]=r,e[41]=o,e[42]=h,e[43]=w):w=e[43],w}function ie(e){return e.nren}export{ue as default}; diff --git a/compendium_v2/static/HTMLLegendPlugin-sjJV-MGB.js b/compendium_v2/static/HTMLLegendPlugin-Cg92GHTT.js similarity index 96% rename from compendium_v2/static/HTMLLegendPlugin-sjJV-MGB.js rename to compendium_v2/static/HTMLLegendPlugin-Cg92GHTT.js index 86e4a1ad..985e7eeb 100644 --- a/compendium_v2/static/HTMLLegendPlugin-sjJV-MGB.js +++ b/compendium_v2/static/HTMLLegendPlugin-Cg92GHTT.js @@ -1 +1 @@ -import{c as g,j as p}from"./index.js";import{f as m,C as c}from"./useData-Ct8E3VVL.js";const C=o=>{const e=g.c(8);let{children:s,location:t}=o;t||(t="both");const r=t==="top"||t==="both",a=t==="bottom"||t==="both";let n;e[0]!==r?(n=r&&p.jsx("div",{style:{paddingLeft:"33%",paddingTop:"2.5rem",paddingBottom:"1.5rem"},id:"legendtop"}),e[0]=r,e[1]=n):n=e[1];let l;e[2]!==a?(l=a&&p.jsx("div",{style:{paddingLeft:"33%",paddingTop:"1.5rem"},id:"legendbottom"}),e[2]=a,e[3]=l):l=e[3];let i;return e[4]!==s||e[5]!==n||e[6]!==l?(i=p.jsxs(m,{children:[n,s,l]}),e[4]=s,e[5]=n,e[6]=l,e[7]=i):i=e[7],i},u=(o,e)=>{const s=document.getElementById(e);if(!s)return null;let t=s.querySelector("ul");return t||(t=document.createElement("ul"),t.style.display="flex",t.style.flexDirection="row",t.style.margin="0",t.style.padding="0",s.appendChild(t)),t},b={id:"htmlLegend",afterUpdate(o,e,s){for(const t of s.containerIDs){const r=u(o,t);if(!r)return;for(;r.firstChild;)r.firstChild.remove();o.options.plugins.legend.labels.generateLabels(o).forEach(n=>{const l=document.createElement("li");l.style.alignItems="center",l.style.cursor="pointer",l.style.display="flex",l.style.flexDirection="row",l.style.marginLeft="10px",l.onclick=()=>{const{type:f}=o.config;f==="pie"||f==="doughnut"?o.toggleDataVisibility(n.index):o.setDatasetVisibility(n.datasetIndex,!o.isDatasetVisible(n.datasetIndex)),o.update()};const i=document.createElement("span");i.style.background=n.fillStyle,i.style.borderColor=n.strokeStyle,i.style.borderWidth=n.lineWidth+"px",i.style.display="inline-block",i.style.height="1rem",i.style.marginRight="10px",i.style.width="2.5rem";const d=document.createElement("p");d.style.color=n.fontColor,d.style.margin="0",d.style.padding="0",d.style.textDecoration=n.hidden?"line-through":"",d.style.fontSize=`${c.defaults.font.size}px`,d.style.fontFamily=`${c.defaults.font.family}`,d.style.fontWeight=`${c.defaults.font.weight}`;const y=document.createTextNode(n.text);d.appendChild(y),l.appendChild(i),l.appendChild(d),r.appendChild(l)})}}};export{C as W,b as h}; +import{c as g,j as p}from"./index.js";import{f as m,C as c}from"./useData-CYCBVZdC.js";const C=o=>{const e=g.c(8);let{children:s,location:t}=o;t||(t="both");const r=t==="top"||t==="both",a=t==="bottom"||t==="both";let n;e[0]!==r?(n=r&&p.jsx("div",{style:{paddingLeft:"33%",paddingTop:"2.5rem",paddingBottom:"1.5rem"},id:"legendtop"}),e[0]=r,e[1]=n):n=e[1];let l;e[2]!==a?(l=a&&p.jsx("div",{style:{paddingLeft:"33%",paddingTop:"1.5rem"},id:"legendbottom"}),e[2]=a,e[3]=l):l=e[3];let i;return e[4]!==s||e[5]!==n||e[6]!==l?(i=p.jsxs(m,{children:[n,s,l]}),e[4]=s,e[5]=n,e[6]=l,e[7]=i):i=e[7],i},u=(o,e)=>{const s=document.getElementById(e);if(!s)return null;let t=s.querySelector("ul");return t||(t=document.createElement("ul"),t.style.display="flex",t.style.flexDirection="row",t.style.margin="0",t.style.padding="0",s.appendChild(t)),t},b={id:"htmlLegend",afterUpdate(o,e,s){for(const t of s.containerIDs){const r=u(o,t);if(!r)return;for(;r.firstChild;)r.firstChild.remove();o.options.plugins.legend.labels.generateLabels(o).forEach(n=>{const l=document.createElement("li");l.style.alignItems="center",l.style.cursor="pointer",l.style.display="flex",l.style.flexDirection="row",l.style.marginLeft="10px",l.onclick=()=>{const{type:f}=o.config;f==="pie"||f==="doughnut"?o.toggleDataVisibility(n.index):o.setDatasetVisibility(n.datasetIndex,!o.isDatasetVisible(n.datasetIndex)),o.update()};const i=document.createElement("span");i.style.background=n.fillStyle,i.style.borderColor=n.strokeStyle,i.style.borderWidth=n.lineWidth+"px",i.style.display="inline-block",i.style.height="1rem",i.style.marginRight="10px",i.style.width="2.5rem";const d=document.createElement("p");d.style.color=n.fontColor,d.style.margin="0",d.style.padding="0",d.style.textDecoration=n.hidden?"line-through":"",d.style.fontSize=`${c.defaults.font.size}px`,d.style.fontFamily=`${c.defaults.font.family}`,d.style.fontWeight=`${c.defaults.font.weight}`;const y=document.createTextNode(n.text);d.appendChild(y),l.appendChild(i),l.appendChild(d),r.appendChild(l)})}}};export{C as W,b as h}; diff --git a/compendium_v2/static/IRUDuration-C1dUeB3y.js b/compendium_v2/static/IRUDuration-CX0U79PZ.js similarity index 90% rename from compendium_v2/static/IRUDuration-C1dUeB3y.js rename to compendium_v2/static/IRUDuration-CX0U79PZ.js index 5cc6a16d..46bd52bf 100644 --- a/compendium_v2/static/IRUDuration-C1dUeB3y.js +++ b/compendium_v2/static/IRUDuration-CX0U79PZ.js @@ -1 +1 @@ -import{c as C,r as D,F as L,j as n,t as R,S as j}from"./index.js";import{L as E}from"./index-C4Nuqrw6.js";import{C as v,a as k,L as F,P as I,b as U,p as P,c as w,d as O,u as Y,e as T,D as $,F as q,f as z}from"./useData-Ct8E3VVL.js";import{g as A}from"./charthelpers-DmM6tvdh.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";v.register(k,F,I,U,P,w,O);function W(){const e=C.c(24);let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=r=>r.iru_duration!=null,e[0]=o):o=e[0];const N=o,{filterSelection:t,setFilterSelection:c}=D.useContext(L),{data:g,nrens:_}=Y("/api/dark-fibre-lease",c,N);let a,f;if(e[1]!==g||e[2]!==t.selectedNrens){let r;e[5]!==t.selectedNrens?(r=S=>t.selectedNrens.includes(S.nren),e[5]=t.selectedNrens,e[6]=r):r=e[6],a=g.filter(r),f=T(a,"iru_duration"),e[1]=g,e[2]=t.selectedNrens,e[3]=a,e[4]=f}else a=e[3],f=e[4];const x=f;let m;e[7]===Symbol.for("react.memo_cache_sentinel")?(m=[],e[7]=m):m=e[7];let s;e[8]!==_?(s=_.values(),e[8]=_,e[9]=s):s=e[9];let i;e[10]!==s?(i={availableYears:m,availableNrens:[...s]},e[10]=s,e[11]=i):i=e[11];let d;e[12]!==t||e[13]!==c||e[14]!==i?(d=n.jsx(q,{filterOptions:i,filterSelection:t,setFilterSelection:c}),e[12]=t,e[13]=c,e[14]=i,e[15]=d):d=e[15];const y=d;let p;e[16]===Symbol.for("react.memo_cache_sentinel")?(p=A({title:"Lease Duration In Years",tooltipUnit:"years",tickLimit:999}),e[16]=p):p=e[16];const b=p;let u;e[17]===Symbol.for("react.memo_cache_sentinel")?(u=n.jsx("span",{children:"NRENs sometimes take out an IRU (Indefeasible Right of Use), which is essentially a long-term lease, on a portion of the capacity of a cable rather than laying cable themselves. This graph shows the average duration, in years, of the IRUs of NRENs."}),e[17]=u):u=e[17];let l;e[18]!==x?(l=n.jsx(z,{children:n.jsx(E,{data:x,options:b})}),e[18]=x,e[19]=l):l=e[19];let h;return e[20]!==y||e[21]!==a||e[22]!==l?(h=n.jsx($,{title:R["iru-duration"],description:u,category:j.Network,filter:y,data:a,filename:"iru_duration_data",children:l}),e[20]=y,e[21]=a,e[22]=l,e[23]=h):h=e[23],h}export{W as default}; +import{c as C,r as D,F as L,j as n,t as R,S as j}from"./index.js";import{L as E}from"./index-BfhfJiKe.js";import{C as v,a as k,L as F,P as I,b as U,p as P,c as w,d as O,u as Y,e as T,D as $,F as q,f as z}from"./useData-CYCBVZdC.js";import{g as A}from"./charthelpers-CdmocpOu.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";v.register(k,F,I,U,P,w,O);function W(){const e=C.c(24);let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=r=>r.iru_duration!=null,e[0]=o):o=e[0];const N=o,{filterSelection:t,setFilterSelection:c}=D.useContext(L),{data:g,nrens:_}=Y("/api/dark-fibre-lease",c,N);let a,f;if(e[1]!==g||e[2]!==t.selectedNrens){let r;e[5]!==t.selectedNrens?(r=S=>t.selectedNrens.includes(S.nren),e[5]=t.selectedNrens,e[6]=r):r=e[6],a=g.filter(r),f=T(a,"iru_duration"),e[1]=g,e[2]=t.selectedNrens,e[3]=a,e[4]=f}else a=e[3],f=e[4];const x=f;let m;e[7]===Symbol.for("react.memo_cache_sentinel")?(m=[],e[7]=m):m=e[7];let s;e[8]!==_?(s=_.values(),e[8]=_,e[9]=s):s=e[9];let i;e[10]!==s?(i={availableYears:m,availableNrens:[...s]},e[10]=s,e[11]=i):i=e[11];let d;e[12]!==t||e[13]!==c||e[14]!==i?(d=n.jsx(q,{filterOptions:i,filterSelection:t,setFilterSelection:c}),e[12]=t,e[13]=c,e[14]=i,e[15]=d):d=e[15];const y=d;let p;e[16]===Symbol.for("react.memo_cache_sentinel")?(p=A({title:"Lease Duration In Years",tooltipUnit:"years",tickLimit:999}),e[16]=p):p=e[16];const b=p;let u;e[17]===Symbol.for("react.memo_cache_sentinel")?(u=n.jsx("span",{children:"NRENs sometimes take out an IRU (Indefeasible Right of Use), which is essentially a long-term lease, on a portion of the capacity of a cable rather than laying cable themselves. This graph shows the average duration, in years, of the IRUs of NRENs."}),e[17]=u):u=e[17];let l;e[18]!==x?(l=n.jsx(z,{children:n.jsx(E,{data:x,options:b})}),e[18]=x,e[19]=l):l=e[19];let h;return e[20]!==y||e[21]!==a||e[22]!==l?(h=n.jsx($,{title:R["iru-duration"],description:u,category:j.Network,filter:y,data:a,filename:"iru_duration_data",children:l}),e[20]=y,e[21]=a,e[22]=l,e[23]=h):h=e[23],h}export{W as default}; diff --git a/compendium_v2/static/MonitoringTools-BrAyjiGW.js b/compendium_v2/static/MonitoringTools-sTAJWOEm.js similarity index 97% rename from compendium_v2/static/MonitoringTools-BrAyjiGW.js rename to compendium_v2/static/MonitoringTools-sTAJWOEm.js index 0b7cfb9d..b6fd8bea 100644 --- a/compendium_v2/static/MonitoringTools-BrAyjiGW.js +++ b/compendium_v2/static/MonitoringTools-sTAJWOEm.js @@ -1,2 +1,2 @@ -import{c as v,r as S,F as T,j as h,t as Y,S as j}from"./index.js";import{u as F,g as D,n as E,D as L,F as C,f as P}from"./useData-Ct8E3VVL.js";import{P as R}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function J(){const e=v.c(29),{filterSelection:t,setFilterSelection:c}=S.useContext(T),{data:w,years:_,nrens:N}=F("/api/monitoring-tools",c);let s,f;if(e[0]!==w||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let u;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(u=x=>t.selectedYears.includes(x.year)&&t.selectedNrens.includes(x.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=u):u=e[7],s=w.filter(u);const k=D(s,"tool_descriptions");f=E(k,M),e[0]=w,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=f}else s=e[3],f=e[4];const g=f;let o,p;e[8]===Symbol.for("react.memo_cache_sentinel")?(o=["Looking Glass","Network or Services Status Dashboard","Historical traffic volume information","Netflow analysis tool"],p=new Map([[o[0],"looking_glass"],[o[1],"status_dashboard"],[o[2],"historical_traffic_volumes"],[o[3],"netflow_analysis"]]),e[8]=o,e[9]=p):(o=e[8],p=e[9]);const y=p;let l;e[10]!==_?(l=[..._],e[10]=_,e[11]=l):l=e[11];let i;e[12]!==N?(i=N.values(),e[12]=N,e[13]=i):i=e[13];let r;e[14]!==i?(r=[...i],e[14]=i,e[15]=r):r=e[15];let a;e[16]!==l||e[17]!==r?(a={availableYears:l,availableNrens:r},e[16]=l,e[17]=r,e[18]=a):a=e[18];let d;e[19]!==t||e[20]!==c||e[21]!==a?(d=h.jsx(C,{filterOptions:a,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[19]=t,e[20]=c,e[21]=a,e[22]=d):d=e[22];const b=d;let n;e[23]!==g?(n=h.jsx(P,{children:h.jsx(R,{columns:o,columnLookup:y,dataLookup:g})}),e[23]=g,e[24]=n):n=e[24];let m;return e[25]!==b||e[26]!==s||e[27]!==n?(m=h.jsx(L,{title:Y["monitoring-tools"],description:`The table below shows which tools the NREN offers to client institutions to allow them to monitor the network and troubleshoot any issues which arise. +import{c as v,r as S,F as T,j as h,t as Y,S as j}from"./index.js";import{u as F,g as D,n as E,D as L,F as C,f as P}from"./useData-CYCBVZdC.js";import{P as R}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function J(){const e=v.c(29),{filterSelection:t,setFilterSelection:c}=S.useContext(T),{data:w,years:_,nrens:N}=F("/api/monitoring-tools",c);let s,f;if(e[0]!==w||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let u;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(u=x=>t.selectedYears.includes(x.year)&&t.selectedNrens.includes(x.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=u):u=e[7],s=w.filter(u);const k=D(s,"tool_descriptions");f=E(k,M),e[0]=w,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=f}else s=e[3],f=e[4];const g=f;let o,p;e[8]===Symbol.for("react.memo_cache_sentinel")?(o=["Looking Glass","Network or Services Status Dashboard","Historical traffic volume information","Netflow analysis tool"],p=new Map([[o[0],"looking_glass"],[o[1],"status_dashboard"],[o[2],"historical_traffic_volumes"],[o[3],"netflow_analysis"]]),e[8]=o,e[9]=p):(o=e[8],p=e[9]);const y=p;let l;e[10]!==_?(l=[..._],e[10]=_,e[11]=l):l=e[11];let i;e[12]!==N?(i=N.values(),e[12]=N,e[13]=i):i=e[13];let r;e[14]!==i?(r=[...i],e[14]=i,e[15]=r):r=e[15];let a;e[16]!==l||e[17]!==r?(a={availableYears:l,availableNrens:r},e[16]=l,e[17]=r,e[18]=a):a=e[18];let d;e[19]!==t||e[20]!==c||e[21]!==a?(d=h.jsx(C,{filterOptions:a,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[19]=t,e[20]=c,e[21]=a,e[22]=d):d=e[22];const b=d;let n;e[23]!==g?(n=h.jsx(P,{children:h.jsx(R,{columns:o,columnLookup:y,dataLookup:g})}),e[23]=g,e[24]=n):n=e[24];let m;return e[25]!==b||e[26]!==s||e[27]!==n?(m=h.jsx(L,{title:Y["monitoring-tools"],description:`The table below shows which tools the NREN offers to client institutions to allow them to monitor the network and troubleshoot any issues which arise. Four common tools are named, however NRENs also have the opportunity to add their own tools to the table.`,category:j.Network,filter:b,data:s,filename:"monitoring_tools_nrens_per_year",children:n}),e[25]=b,e[26]=s,e[27]=n,e[28]=m):m=e[28],m}function M(e,t){if(e==="netflow_analysis"&&t.netflow_processing_description)return t.netflow_processing_description}export{J as default}; diff --git a/compendium_v2/static/NetworkFunctionVirtualisation-BSD5a3W2.js b/compendium_v2/static/NetworkFunctionVirtualisation-mpEVvRIs.js similarity index 98% rename from compendium_v2/static/NetworkFunctionVirtualisation-BSD5a3W2.js rename to compendium_v2/static/NetworkFunctionVirtualisation-mpEVvRIs.js index d82aa390..17f029f6 100644 --- a/compendium_v2/static/NetworkFunctionVirtualisation-BSD5a3W2.js +++ b/compendium_v2/static/NetworkFunctionVirtualisation-mpEVvRIs.js @@ -1 +1 @@ -import{c as W,r as X,F as Z,S as k,j as t,t as ee}from"./index.js";import{u as te,g as se,F as le,D as re,f as ne}from"./useData-Ct8E3VVL.js";import{C as I}from"./ColorPill-CXvWIfWz.js";import{T as ae}from"./Table-ClWM2_rS.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";function ue(){const e=W.c(67),{filterSelection:n,setFilterSelection:h}=X.useContext(Z),{data:J,years:c,nrens:R}=te("/api/nfv",h);let f,p,x,j,m,u,g,v,b,o,d,w,S,Y,N;if(e[0]!==J||e[1]!==n||e[2]!==R||e[3]!==h||e[4]!==c){let A;e[20]!==n.selectedNrens||e[21]!==n.selectedYears?(A=E=>n.selectedYears.includes(E.year)&&n.selectedNrens.includes(E.nren),e[20]=n.selectedNrens,e[21]=n.selectedYears,e[22]=A):A=e[22];const K=J.filter(A),Q=se(K,"nfv_specifics");let C;e[23]!==c?(C=[...c],e[23]=c,e[24]=C):C=e[24];let T;e[25]!==R?(T=R.values(),e[25]=R,e[26]=T):T=e[26];let $;e[27]!==T?($=[...T],e[27]=T,e[28]=$):$=e[28];let D;e[29]!==C||e[30]!==$?(D={availableYears:C,availableNrens:$},e[29]=C,e[30]=$,e[31]=D):D=e[31];let L;e[32]!==n||e[33]!==h||e[34]!==D?(L=t.jsx(le,{filterOptions:D,filterSelection:n,setFilterSelection:h,coloredYears:!0}),e[32]=n,e[33]=h,e[34]=D,e[35]=L):L=e[35];const U=L;let O;e[36]!==c?(O=E=>c.has(E),e[36]=c,e[37]=O):O=e[37];const M=[...n.selectedYears.filter(O)].sort();x=re,w=ee.nfv,S="The table below shows the kinds of Network Function Virtualisation (NFV) used by NRENs.",Y=k.Network,N=U,u=K,g="network_function_virtualisation_nrens_per_year",p=ne,f=ae,m="charging-struct-table",v=!0,b=!0;let _;e[38]===Symbol.for("react.memo_cache_sentinel")?(_=t.jsx("col",{span:1,style:{width:"20%"}}),e[38]=_):_=e[38];let q;e[39]===Symbol.for("react.memo_cache_sentinel")?(q=t.jsx("col",{span:2,style:{width:"16%"}}),e[39]=q):q=e[39];let z;e[40]===Symbol.for("react.memo_cache_sentinel")?(z=t.jsx("col",{span:2,style:{width:"16%"}}),e[40]=z):z=e[40];let B;e[41]===Symbol.for("react.memo_cache_sentinel")?(B=t.jsx("col",{span:2,style:{width:"16%"}}),e[41]=B):B=e[41];let G;e[42]===Symbol.for("react.memo_cache_sentinel")?(G=t.jsx("col",{span:2,style:{width:"16%"}}),e[42]=G):G=e[42],e[43]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsxs("colgroup",{children:[_,q,z,B,G,t.jsx("col",{span:2,style:{width:"16%"}})]}),d=t.jsxs("thead",{children:[t.jsxs("tr",{children:[t.jsx("th",{}),t.jsx("th",{colSpan:2,children:"Routers/switches"}),t.jsx("th",{colSpan:2,children:"Firewalls"}),t.jsx("th",{colSpan:2,children:"Load balancers"}),t.jsx("th",{colSpan:2,children:"VPN Concentrator Services"}),t.jsx("th",{colSpan:2,children:"Other"})]}),t.jsxs("tr",{children:[t.jsx("th",{}),t.jsx("th",{children:"Yes"}),t.jsx("th",{children:"Planned"}),t.jsx("th",{children:"Yes"}),t.jsx("th",{children:"Planned"}),t.jsx("th",{children:"Yes"}),t.jsx("th",{children:"Planned"}),t.jsx("th",{children:"Yes"}),t.jsx("th",{children:"Planned"}),t.jsx("th",{children:"Yes"}),t.jsx("th",{children:"Planned"})]})]}),e[43]=o,e[44]=d):(o=e[43],d=e[44]),j=Array.from(Q.entries()).map(E=>{const[H,i]=E;return t.jsxs("tr",{children:[t.jsx("td",{children:H}),["routers","firewalls","load_balancers","vpn_concentrators"].map(l=>t.jsxs(t.Fragment,{children:[t.jsx("td",{children:i.has(l)&&M.map(s=>{const a=i.get(l),r=a.get(s);return t.jsx(I,{year:s,active:a.has(s)&&!!(r&&r.nfv=="yes"),tooltip:"",rounded:!0},s)})},`${l}-yes`),t.jsx("td",{children:i.has(l)&&M.map(s=>{const a=i.get(l),r=a.get(s);return t.jsx(I,{year:s,active:a.has(s)&&!!(r&&r.nfv=="planned"),tooltip:"",rounded:!0},s)})},`${l}-planned`)]})),t.jsx("td",{children:Array.from(i.keys()).filter(ce).map(l=>t.jsx("div",{children:i.has(l)&&M.map(s=>{const a=i.get(l),r=a.get(s);return t.jsx(I,{year:s,active:a.has(s)&&!!(r&&(r==null?void 0:r.nfv)=="yes"),tooltip:l,rounded:!0},s)})},`${l}-yes`))},`${H}-other-yes`),t.jsx("td",{children:Array.from(i.keys()).filter(ie).map(l=>t.jsx("div",{children:i.has(l)&&M.map(s=>{const a=i.get(l),r=a.get(s);return t.jsx(I,{year:s,active:a.has(s)&&!!(r&&(r==null?void 0:r.nfv)=="planned"),tooltip:l,rounded:!0},s)})},`${l}-planned`))},`${H}-other-planned`)]},H)}),e[0]=J,e[1]=n,e[2]=R,e[3]=h,e[4]=c,e[5]=f,e[6]=p,e[7]=x,e[8]=j,e[9]=m,e[10]=u,e[11]=g,e[12]=v,e[13]=b,e[14]=o,e[15]=d,e[16]=w,e[17]=S,e[18]=Y,e[19]=N}else f=e[5],p=e[6],x=e[7],j=e[8],m=e[9],u=e[10],g=e[11],v=e[12],b=e[13],o=e[14],d=e[15],w=e[16],S=e[17],Y=e[18],N=e[19];let F;e[45]!==j?(F=t.jsx("tbody",{children:j}),e[45]=j,e[46]=F):F=e[46];let y;e[47]!==f||e[48]!==m||e[49]!==F||e[50]!==v||e[51]!==b||e[52]!==o||e[53]!==d?(y=t.jsxs(f,{className:m,striped:v,bordered:b,children:[o,d,F]}),e[47]=f,e[48]=m,e[49]=F,e[50]=v,e[51]=b,e[52]=o,e[53]=d,e[54]=y):y=e[54];let P;e[55]!==p||e[56]!==y?(P=t.jsx(p,{children:y}),e[55]=p,e[56]=y,e[57]=P):P=e[57];let V;return e[58]!==x||e[59]!==u||e[60]!==g||e[61]!==P||e[62]!==w||e[63]!==S||e[64]!==Y||e[65]!==N?(V=t.jsx(x,{title:w,description:S,category:Y,filter:N,data:u,filename:g,children:P}),e[58]=x,e[59]=u,e[60]=g,e[61]=P,e[62]=w,e[63]=S,e[64]=Y,e[65]=N,e[66]=V):V=e[66],V}function ie(e){return!["routers","firewalls","load_balancers","vpn_concentrators"].includes(e)}function ce(e){return!["routers","firewalls","load_balancers","vpn_concentrators"].includes(e)}export{ue as default}; +import{c as W,r as X,F as Z,S as k,j as t,t as ee}from"./index.js";import{u as te,g as se,F as le,D as re,f as ne}from"./useData-CYCBVZdC.js";import{C as I}from"./ColorPill-CXvWIfWz.js";import{T as ae}from"./Table-ClWM2_rS.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";function ue(){const e=W.c(67),{filterSelection:n,setFilterSelection:h}=X.useContext(Z),{data:J,years:c,nrens:R}=te("/api/nfv",h);let f,p,x,j,m,u,g,v,b,o,d,w,S,Y,N;if(e[0]!==J||e[1]!==n||e[2]!==R||e[3]!==h||e[4]!==c){let A;e[20]!==n.selectedNrens||e[21]!==n.selectedYears?(A=E=>n.selectedYears.includes(E.year)&&n.selectedNrens.includes(E.nren),e[20]=n.selectedNrens,e[21]=n.selectedYears,e[22]=A):A=e[22];const K=J.filter(A),Q=se(K,"nfv_specifics");let C;e[23]!==c?(C=[...c],e[23]=c,e[24]=C):C=e[24];let T;e[25]!==R?(T=R.values(),e[25]=R,e[26]=T):T=e[26];let $;e[27]!==T?($=[...T],e[27]=T,e[28]=$):$=e[28];let D;e[29]!==C||e[30]!==$?(D={availableYears:C,availableNrens:$},e[29]=C,e[30]=$,e[31]=D):D=e[31];let L;e[32]!==n||e[33]!==h||e[34]!==D?(L=t.jsx(le,{filterOptions:D,filterSelection:n,setFilterSelection:h,coloredYears:!0}),e[32]=n,e[33]=h,e[34]=D,e[35]=L):L=e[35];const U=L;let O;e[36]!==c?(O=E=>c.has(E),e[36]=c,e[37]=O):O=e[37];const M=[...n.selectedYears.filter(O)].sort();x=re,w=ee.nfv,S="The table below shows the kinds of Network Function Virtualisation (NFV) used by NRENs.",Y=k.Network,N=U,u=K,g="network_function_virtualisation_nrens_per_year",p=ne,f=ae,m="charging-struct-table",v=!0,b=!0;let _;e[38]===Symbol.for("react.memo_cache_sentinel")?(_=t.jsx("col",{span:1,style:{width:"20%"}}),e[38]=_):_=e[38];let q;e[39]===Symbol.for("react.memo_cache_sentinel")?(q=t.jsx("col",{span:2,style:{width:"16%"}}),e[39]=q):q=e[39];let z;e[40]===Symbol.for("react.memo_cache_sentinel")?(z=t.jsx("col",{span:2,style:{width:"16%"}}),e[40]=z):z=e[40];let B;e[41]===Symbol.for("react.memo_cache_sentinel")?(B=t.jsx("col",{span:2,style:{width:"16%"}}),e[41]=B):B=e[41];let G;e[42]===Symbol.for("react.memo_cache_sentinel")?(G=t.jsx("col",{span:2,style:{width:"16%"}}),e[42]=G):G=e[42],e[43]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsxs("colgroup",{children:[_,q,z,B,G,t.jsx("col",{span:2,style:{width:"16%"}})]}),d=t.jsxs("thead",{children:[t.jsxs("tr",{children:[t.jsx("th",{}),t.jsx("th",{colSpan:2,children:"Routers/switches"}),t.jsx("th",{colSpan:2,children:"Firewalls"}),t.jsx("th",{colSpan:2,children:"Load balancers"}),t.jsx("th",{colSpan:2,children:"VPN Concentrator Services"}),t.jsx("th",{colSpan:2,children:"Other"})]}),t.jsxs("tr",{children:[t.jsx("th",{}),t.jsx("th",{children:"Yes"}),t.jsx("th",{children:"Planned"}),t.jsx("th",{children:"Yes"}),t.jsx("th",{children:"Planned"}),t.jsx("th",{children:"Yes"}),t.jsx("th",{children:"Planned"}),t.jsx("th",{children:"Yes"}),t.jsx("th",{children:"Planned"}),t.jsx("th",{children:"Yes"}),t.jsx("th",{children:"Planned"})]})]}),e[43]=o,e[44]=d):(o=e[43],d=e[44]),j=Array.from(Q.entries()).map(E=>{const[H,i]=E;return t.jsxs("tr",{children:[t.jsx("td",{children:H}),["routers","firewalls","load_balancers","vpn_concentrators"].map(l=>t.jsxs(t.Fragment,{children:[t.jsx("td",{children:i.has(l)&&M.map(s=>{const a=i.get(l),r=a.get(s);return t.jsx(I,{year:s,active:a.has(s)&&!!(r&&r.nfv=="yes"),tooltip:"",rounded:!0},s)})},`${l}-yes`),t.jsx("td",{children:i.has(l)&&M.map(s=>{const a=i.get(l),r=a.get(s);return t.jsx(I,{year:s,active:a.has(s)&&!!(r&&r.nfv=="planned"),tooltip:"",rounded:!0},s)})},`${l}-planned`)]})),t.jsx("td",{children:Array.from(i.keys()).filter(ce).map(l=>t.jsx("div",{children:i.has(l)&&M.map(s=>{const a=i.get(l),r=a.get(s);return t.jsx(I,{year:s,active:a.has(s)&&!!(r&&(r==null?void 0:r.nfv)=="yes"),tooltip:l,rounded:!0},s)})},`${l}-yes`))},`${H}-other-yes`),t.jsx("td",{children:Array.from(i.keys()).filter(ie).map(l=>t.jsx("div",{children:i.has(l)&&M.map(s=>{const a=i.get(l),r=a.get(s);return t.jsx(I,{year:s,active:a.has(s)&&!!(r&&(r==null?void 0:r.nfv)=="planned"),tooltip:l,rounded:!0},s)})},`${l}-planned`))},`${H}-other-planned`)]},H)}),e[0]=J,e[1]=n,e[2]=R,e[3]=h,e[4]=c,e[5]=f,e[6]=p,e[7]=x,e[8]=j,e[9]=m,e[10]=u,e[11]=g,e[12]=v,e[13]=b,e[14]=o,e[15]=d,e[16]=w,e[17]=S,e[18]=Y,e[19]=N}else f=e[5],p=e[6],x=e[7],j=e[8],m=e[9],u=e[10],g=e[11],v=e[12],b=e[13],o=e[14],d=e[15],w=e[16],S=e[17],Y=e[18],N=e[19];let F;e[45]!==j?(F=t.jsx("tbody",{children:j}),e[45]=j,e[46]=F):F=e[46];let y;e[47]!==f||e[48]!==m||e[49]!==F||e[50]!==v||e[51]!==b||e[52]!==o||e[53]!==d?(y=t.jsxs(f,{className:m,striped:v,bordered:b,children:[o,d,F]}),e[47]=f,e[48]=m,e[49]=F,e[50]=v,e[51]=b,e[52]=o,e[53]=d,e[54]=y):y=e[54];let P;e[55]!==p||e[56]!==y?(P=t.jsx(p,{children:y}),e[55]=p,e[56]=y,e[57]=P):P=e[57];let V;return e[58]!==x||e[59]!==u||e[60]!==g||e[61]!==P||e[62]!==w||e[63]!==S||e[64]!==Y||e[65]!==N?(V=t.jsx(x,{title:w,description:S,category:Y,filter:N,data:u,filename:g,children:P}),e[58]=x,e[59]=u,e[60]=g,e[61]=P,e[62]=w,e[63]=S,e[64]=Y,e[65]=N,e[66]=V):V=e[66],V}function ie(e){return!["routers","firewalls","load_balancers","vpn_concentrators"].includes(e)}function ce(e){return!["routers","firewalls","load_balancers","vpn_concentrators"].includes(e)}export{ue as default}; diff --git a/compendium_v2/static/NetworkMapUrls-iZSn2qqQ.js b/compendium_v2/static/NetworkMapUrls-B9qEmtVH.js similarity index 92% rename from compendium_v2/static/NetworkMapUrls-iZSn2qqQ.js rename to compendium_v2/static/NetworkMapUrls-B9qEmtVH.js index e3e331b4..b53a6de5 100644 --- a/compendium_v2/static/NetworkMapUrls-iZSn2qqQ.js +++ b/compendium_v2/static/NetworkMapUrls-B9qEmtVH.js @@ -1 +1 @@ -import{c as b,r as h,F as j,j as u,t as y,S as _}from"./index.js";import{u as g,q as v,k as S,i as F,D as C,F as E,f as L,s as R}from"./useData-Ct8E3VVL.js";import{N as T}from"./NrenYearTable-iS8aEX43.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function z(){const e=b.c(21),{filterSelection:t,setFilterSelection:r}=h.useContext(j),{data:a,nrens:i}=g("/api/network-map-urls",r);let s,c;if(e[0]!==a||e[1]!==t.selectedNrens){const x=a?v(a):[];let d;e[4]!==t.selectedNrens?(d=w=>t.selectedNrens.includes(w.nren),e[4]=t.selectedNrens,e[5]=d):d=e[5],s=x.filter(d);const D=S(s);c=F(D,Y),e[0]=a,e[1]=t.selectedNrens,e[2]=s,e[3]=c}else s=e[2],c=e[3];const k=c;let p;e[6]===Symbol.for("react.memo_cache_sentinel")?(p=[],e[6]=p):p=e[6];let o;e[7]!==i?(o=i.values(),e[7]=i,e[8]=o):o=e[8];let l;e[9]!==o?(l={availableYears:p,availableNrens:[...o]},e[9]=o,e[10]=l):l=e[10];let f;e[11]!==t||e[12]!==r||e[13]!==l?(f=u.jsx(E,{filterOptions:l,filterSelection:t,setFilterSelection:r,coloredYears:!0}),e[11]=t,e[12]=r,e[13]=l,e[14]=f):f=e[14];const N=f;let n;e[15]!==k?(n=u.jsx(L,{children:u.jsx(T,{data:k,columnTitle:"Network Map",dottedBorder:!0,noDots:!0,keysAreURLs:!0,removeDecoration:!0})}),e[15]=k,e[16]=n):n=e[16];let m;return e[17]!==N||e[18]!==s||e[19]!==n?(m=u.jsx(C,{title:y["network-map"],description:"This table provides links to NREN network maps, showing layers 1, 2, and 3 of their networks.",category:_.Network,filter:N,data:s,filename:"network_map_nrens_per_year",children:n}),e[17]=N,e[18]=s,e[19]=n,e[20]=m):m=e[20],m}function Y(e,t){const r=R(t);if(r!=null)for(const[a,i]of Object.entries(r))e[a]=i}export{z as default}; +import{c as b,r as h,F as j,j as u,t as y,S as _}from"./index.js";import{u as g,q as v,k as S,i as F,D as C,F as E,f as L,s as R}from"./useData-CYCBVZdC.js";import{N as T}from"./NrenYearTable-RI8l8hwG.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function z(){const e=b.c(21),{filterSelection:t,setFilterSelection:r}=h.useContext(j),{data:a,nrens:i}=g("/api/network-map-urls",r);let s,c;if(e[0]!==a||e[1]!==t.selectedNrens){const x=a?v(a):[];let d;e[4]!==t.selectedNrens?(d=w=>t.selectedNrens.includes(w.nren),e[4]=t.selectedNrens,e[5]=d):d=e[5],s=x.filter(d);const D=S(s);c=F(D,Y),e[0]=a,e[1]=t.selectedNrens,e[2]=s,e[3]=c}else s=e[2],c=e[3];const k=c;let p;e[6]===Symbol.for("react.memo_cache_sentinel")?(p=[],e[6]=p):p=e[6];let o;e[7]!==i?(o=i.values(),e[7]=i,e[8]=o):o=e[8];let l;e[9]!==o?(l={availableYears:p,availableNrens:[...o]},e[9]=o,e[10]=l):l=e[10];let f;e[11]!==t||e[12]!==r||e[13]!==l?(f=u.jsx(E,{filterOptions:l,filterSelection:t,setFilterSelection:r,coloredYears:!0}),e[11]=t,e[12]=r,e[13]=l,e[14]=f):f=e[14];const N=f;let n;e[15]!==k?(n=u.jsx(L,{children:u.jsx(T,{data:k,columnTitle:"Network Map",dottedBorder:!0,noDots:!0,keysAreURLs:!0,removeDecoration:!0})}),e[15]=k,e[16]=n):n=e[16];let m;return e[17]!==N||e[18]!==s||e[19]!==n?(m=u.jsx(C,{title:y["network-map"],description:"This table provides links to NREN network maps, showing layers 1, 2, and 3 of their networks.",category:_.Network,filter:N,data:s,filename:"network_map_nrens_per_year",children:n}),e[17]=N,e[18]=s,e[19]=n,e[20]=m):m=e[20],m}function Y(e,t){const r=R(t);if(r!=null)for(const[a,i]of Object.entries(r))e[a]=i}export{z as default}; diff --git a/compendium_v2/static/NonRAndEPeer-Cn_ozVAu.js b/compendium_v2/static/NonRAndEPeer-C1U-VeeG.js similarity index 89% rename from compendium_v2/static/NonRAndEPeer-Cn_ozVAu.js rename to compendium_v2/static/NonRAndEPeer-C1U-VeeG.js index 103ba409..c9edf186 100644 --- a/compendium_v2/static/NonRAndEPeer-Cn_ozVAu.js +++ b/compendium_v2/static/NonRAndEPeer-C1U-VeeG.js @@ -1,2 +1,2 @@ -import{c as D,r as F,F as Y,j as u,S as v,t as k}from"./index.js";import{B as A}from"./index-C4Nuqrw6.js";import{C as L,a as O,L as T,B as $,p as G,c as I,d as M,u as q,o as z,D as H,F as J,f as K}from"./useData-Ct8E3VVL.js";import{p as Q}from"./chartjs-plugin-datalabels.esm-BI98Iz1j.js";import{a as U}from"./charthelpers-DmM6tvdh.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";L.register(O,T,$,G,I,M);function ne(){const e=D.c(38),{filterSelection:t,setFilterSelection:r}=F.useContext(Y),{data:b,years:d,nrens:h}=q("/api/non-re-peers",r);let a,l,s,g;if(e[0]!==b||e[1]!==t||e[2]!==h||e[3]!==r||e[4]!==d){let S;e[9]!==t.selectedNrens||e[10]!==t.selectedYears?(S=E=>t.selectedYears.includes(E.year)&&t.selectedNrens.includes(E.nren),e[9]=t.selectedNrens,e[10]=t.selectedYears,e[11]=S):S=e[11],s=b.filter(S),a=z(s,"nr_of_non_r_and_e_peers","Number of Peers");let c;e[12]!==d?(c=[...d],e[12]=d,e[13]=c):c=e[13];let m;e[14]!==h?(m=h.values(),e[14]=h,e[15]=m):m=e[15];let p;e[16]!==m?(p=[...m],e[16]=m,e[17]=p):p=e[17];let f;e[18]!==c||e[19]!==p?(f={availableYears:c,availableNrens:p},e[18]=c,e[19]=p,e[20]=f):f=e[20];let C;e[21]!==t||e[22]!==r||e[23]!==f?(C=u.jsx(J,{filterOptions:f,filterSelection:t,setFilterSelection:r}),e[21]=t,e[22]=r,e[23]=f,e[24]=C):C=e[24],l=C,g=Array.from(new Set(s.map(V))),e[0]=b,e[1]=t,e[2]=h,e[3]=r,e[4]=d,e[5]=a,e[6]=l,e[7]=s,e[8]=g}else a=e[5],l=e[6],s=e[7],g=e[8];const j=g.length,w=Math.max(j*t.selectedYears.length*1.5+5,50),B=k["non-rne-peers"],P=`The graph below shows the number of non-Research and Education networks +import{c as D,r as F,F as Y,j as u,S as v,t as k}from"./index.js";import{B as A}from"./index-BfhfJiKe.js";import{C as L,a as O,L as T,B as $,p as G,c as I,d as M,u as q,o as z,D as H,F as J,f as K}from"./useData-CYCBVZdC.js";import{p as Q}from"./chartjs-plugin-datalabels.esm-CzQRWEly.js";import{a as U}from"./charthelpers-CdmocpOu.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";L.register(O,T,$,G,I,M);function ne(){const e=D.c(38),{filterSelection:t,setFilterSelection:r}=F.useContext(Y),{data:b,years:d,nrens:h}=q("/api/non-re-peers",r);let a,l,s,g;if(e[0]!==b||e[1]!==t||e[2]!==h||e[3]!==r||e[4]!==d){let S;e[9]!==t.selectedNrens||e[10]!==t.selectedYears?(S=E=>t.selectedYears.includes(E.year)&&t.selectedNrens.includes(E.nren),e[9]=t.selectedNrens,e[10]=t.selectedYears,e[11]=S):S=e[11],s=b.filter(S),a=z(s,"nr_of_non_r_and_e_peers","Number of Peers");let c;e[12]!==d?(c=[...d],e[12]=d,e[13]=c):c=e[13];let m;e[14]!==h?(m=h.values(),e[14]=h,e[15]=m):m=e[15];let p;e[16]!==m?(p=[...m],e[16]=m,e[17]=p):p=e[17];let f;e[18]!==c||e[19]!==p?(f={availableYears:c,availableNrens:p},e[18]=c,e[19]=p,e[20]=f):f=e[20];let C;e[21]!==t||e[22]!==r||e[23]!==f?(C=u.jsx(J,{filterOptions:f,filterSelection:t,setFilterSelection:r}),e[21]=t,e[22]=r,e[23]=f,e[24]=C):C=e[24],l=C,g=Array.from(new Set(s.map(V))),e[0]=b,e[1]=t,e[2]=h,e[3]=r,e[4]=d,e[5]=a,e[6]=l,e[7]=s,e[8]=g}else a=e[5],l=e[6],s=e[7],g=e[8];const j=g.length,w=Math.max(j*t.selectedYears.length*1.5+5,50),B=k["non-rne-peers"],P=`The graph below shows the number of non-Research and Education networks NRENs peer with. This includes all direct IP-peerings to commercial networks, eg. Google`;let _;e[25]===Symbol.for("react.memo_cache_sentinel")?(_=U({title:"Number of Non-R&E Peers"}),e[25]=_):_=e[25];const R=_,y=`${w}rem`;let n;e[26]!==y?(n={height:y},e[26]=y,e[27]=n):n=e[27];let N;e[28]===Symbol.for("react.memo_cache_sentinel")?(N=[Q],e[28]=N):N=e[28];let i;e[29]!==a?(i=u.jsx(A,{data:a,options:R,plugins:N}),e[29]=a,e[30]=i):i=e[30];let o;e[31]!==n||e[32]!==i?(o=u.jsx(K,{children:u.jsx("div",{className:"chart-container",style:n,children:i})}),e[31]=n,e[32]=i,e[33]=o):o=e[33];let x;return e[34]!==l||e[35]!==s||e[36]!==o?(x=u.jsx(H,{title:B,description:P,category:v.Network,filter:l,data:s,filename:"non_r_and_e_peering",children:o}),e[34]=l,e[35]=s,e[36]=o,e[37]=x):x=e[37],x}function V(e){return e.nren}export{ne as default}; diff --git a/compendium_v2/static/NrenYearTable-iS8aEX43.js b/compendium_v2/static/NrenYearTable-RI8l8hwG.js similarity index 96% rename from compendium_v2/static/NrenYearTable-iS8aEX43.js rename to compendium_v2/static/NrenYearTable-RI8l8hwG.js index b7b91992..da97bf28 100644 --- a/compendium_v2/static/NrenYearTable-iS8aEX43.js +++ b/compendium_v2/static/NrenYearTable-RI8l8hwG.js @@ -1 +1 @@ -import{c as j,j as r}from"./index.js";import{w as p}from"./useData-Ct8E3VVL.js";import{T as u}from"./Table-ClWM2_rS.js";function N(f,e,s,l,t){return f?l.startsWith("http")?r.jsx("li",{children:r.jsx("a",{href:p(l),target:"_blank",rel:"noopener noreferrer",style:e,children:t})},s):r.jsx("li",{children:r.jsx("span",{children:t})},s):r.jsx("li",{children:r.jsx("span",{children:t})},s)}function b(f,{dottedBorder:e=!1,noDots:s=!1,keysAreURLs:l=!1,removeDecoration:t=!1}){return Array.from(f.entries()).map(([i,x])=>Array.from(x.entries()).map(([o,m],d)=>{const n={};return t&&(n.textDecoration="none"),r.jsxs("tr",{className:e?"dotted-border":"",children:[r.jsx("td",{className:"pt-3 nren-column text-nowrap",children:d===0&&i}),r.jsx("td",{className:"pt-3 year-column",children:o}),r.jsx("td",{className:"pt-3 blue-column",children:r.jsx("ul",{className:s?"no-list-style-type":"",children:Array.from(Object.entries(m)).map(([a,c],h)=>N(l,n,h,c,a))})})]},i+o)}))}function _(f){const e=j.c(15),{data:s,columnTitle:l,dottedBorder:t,noDots:i,keysAreURLs:x,removeDecoration:o}=f;let m;e[0]===Symbol.for("react.memo_cache_sentinel")?(m=r.jsx("th",{className:"nren-column",children:r.jsx("span",{children:"NREN"})}),e[0]=m):m=e[0];let d;e[1]===Symbol.for("react.memo_cache_sentinel")?(d=r.jsx("th",{className:"year-column",children:r.jsx("span",{children:"Year"})}),e[1]=d):d=e[1];let n;e[2]!==l?(n=r.jsx("thead",{children:r.jsxs("tr",{children:[m,d,r.jsx("th",{className:"blue-column",children:r.jsx("span",{children:l})})]})}),e[2]=l,e[3]=n):n=e[3];let a;e[4]!==s||e[5]!==t||e[6]!==x||e[7]!==i||e[8]!==o?(a=b(s,{dottedBorder:t,noDots:i,keysAreURLs:x,removeDecoration:o}),e[4]=s,e[5]=t,e[6]=x,e[7]=i,e[8]=o,e[9]=a):a=e[9];let c;e[10]!==a?(c=r.jsx("tbody",{children:a}),e[10]=a,e[11]=c):c=e[11];let h;return e[12]!==n||e[13]!==c?(h=r.jsxs(u,{borderless:!0,className:"compendium-table",children:[n,c]}),e[12]=n,e[13]=c,e[14]=h):h=e[14],h}export{_ as N}; +import{c as j,j as r}from"./index.js";import{w as p}from"./useData-CYCBVZdC.js";import{T as u}from"./Table-ClWM2_rS.js";function N(f,e,s,l,t){return f?l.startsWith("http")?r.jsx("li",{children:r.jsx("a",{href:p(l),target:"_blank",rel:"noopener noreferrer",style:e,children:t})},s):r.jsx("li",{children:r.jsx("span",{children:t})},s):r.jsx("li",{children:r.jsx("span",{children:t})},s)}function b(f,{dottedBorder:e=!1,noDots:s=!1,keysAreURLs:l=!1,removeDecoration:t=!1}){return Array.from(f.entries()).map(([i,x])=>Array.from(x.entries()).map(([o,m],d)=>{const n={};return t&&(n.textDecoration="none"),r.jsxs("tr",{className:e?"dotted-border":"",children:[r.jsx("td",{className:"pt-3 nren-column text-nowrap",children:d===0&&i}),r.jsx("td",{className:"pt-3 year-column",children:o}),r.jsx("td",{className:"pt-3 blue-column",children:r.jsx("ul",{className:s?"no-list-style-type":"",children:Array.from(Object.entries(m)).map(([a,c],h)=>N(l,n,h,c,a))})})]},i+o)}))}function _(f){const e=j.c(15),{data:s,columnTitle:l,dottedBorder:t,noDots:i,keysAreURLs:x,removeDecoration:o}=f;let m;e[0]===Symbol.for("react.memo_cache_sentinel")?(m=r.jsx("th",{className:"nren-column",children:r.jsx("span",{children:"NREN"})}),e[0]=m):m=e[0];let d;e[1]===Symbol.for("react.memo_cache_sentinel")?(d=r.jsx("th",{className:"year-column",children:r.jsx("span",{children:"Year"})}),e[1]=d):d=e[1];let n;e[2]!==l?(n=r.jsx("thead",{children:r.jsxs("tr",{children:[m,d,r.jsx("th",{className:"blue-column",children:r.jsx("span",{children:l})})]})}),e[2]=l,e[3]=n):n=e[3];let a;e[4]!==s||e[5]!==t||e[6]!==x||e[7]!==i||e[8]!==o?(a=b(s,{dottedBorder:t,noDots:i,keysAreURLs:x,removeDecoration:o}),e[4]=s,e[5]=t,e[6]=x,e[7]=i,e[8]=o,e[9]=a):a=e[9];let c;e[10]!==a?(c=r.jsx("tbody",{children:a}),e[10]=a,e[11]=c):c=e[11];let h;return e[12]!==n||e[13]!==c?(h=r.jsxs(u,{borderless:!0,className:"compendium-table",children:[n,c]}),e[12]=n,e[13]=c,e[14]=h):h=e[14],h}export{_ as N}; diff --git a/compendium_v2/static/OPsAutomation-Bc59w9gr.js b/compendium_v2/static/OPsAutomation-DAHkdRQE.js similarity index 94% rename from compendium_v2/static/OPsAutomation-Bc59w9gr.js rename to compendium_v2/static/OPsAutomation-DAHkdRQE.js index 5c2d07b9..df1361a7 100644 --- a/compendium_v2/static/OPsAutomation-Bc59w9gr.js +++ b/compendium_v2/static/OPsAutomation-DAHkdRQE.js @@ -1,3 +1,3 @@ -import{c as y,r as P,F as S,j as h,t as g,S as k}from"./index.js";import{u as v,g as F,n as C,D,F as E,f as L}from"./useData-Ct8E3VVL.js";import{P as R}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function J(){const e=y.c(29),{filterSelection:t,setFilterSelection:c}=P.useContext(S),{data:N,years:x,nrens:_}=v("/api/ops-automation",c);let s,p;if(e[0]!==N||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let d;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(d=b=>t.selectedYears.includes(b.year)&&t.selectedNrens.includes(b.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=d):d=e[7],s=N.filter(d);const j=F(s,"ops_automation");p=C(j,M),e[0]=N,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=p}else s=e[3],p=e[4];const w=p;let o,m;e[8]===Symbol.for("react.memo_cache_sentinel")?(o=["Yes","Planned","No"],m=new Map([[o[0],"yes"],[o[1],"planned"],[o[2],"no"]]),e[8]=o,e[9]=m):(o=e[8],m=e[9]);const T=m;let a;e[10]!==x?(a=[...x],e[10]=x,e[11]=a):a=e[11];let l;e[12]!==_?(l=_.values(),e[12]=_,e[13]=l):l=e[13];let i;e[14]!==l?(i=[...l],e[14]=l,e[15]=i):i=e[15];let r;e[16]!==a||e[17]!==i?(r={availableYears:a,availableNrens:i},e[16]=a,e[17]=i,e[18]=r):r=e[18];let u;e[19]!==t||e[20]!==c||e[21]!==r?(u=h.jsx(E,{filterOptions:r,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[19]=t,e[20]=c,e[21]=r,e[22]=u):u=e[22];const Y=u;let n;e[23]!==w?(n=h.jsx(L,{children:h.jsx(R,{columns:o,columnLookup:T,dataLookup:w})}),e[23]=w,e[24]=n):n=e[24];let f;return e[25]!==Y||e[26]!==s||e[27]!==n?(f=h.jsx(D,{title:g["ops-automation"],description:`The table below shows which NRENs have, or plan to, automate their +import{c as y,r as P,F as S,j as h,t as g,S as k}from"./index.js";import{u as v,g as F,n as C,D,F as E,f as L}from"./useData-CYCBVZdC.js";import{P as R}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function J(){const e=y.c(29),{filterSelection:t,setFilterSelection:c}=P.useContext(S),{data:N,years:x,nrens:_}=v("/api/ops-automation",c);let s,p;if(e[0]!==N||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let d;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(d=b=>t.selectedYears.includes(b.year)&&t.selectedNrens.includes(b.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=d):d=e[7],s=N.filter(d);const j=F(s,"ops_automation");p=C(j,M),e[0]=N,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=p}else s=e[3],p=e[4];const w=p;let o,m;e[8]===Symbol.for("react.memo_cache_sentinel")?(o=["Yes","Planned","No"],m=new Map([[o[0],"yes"],[o[1],"planned"],[o[2],"no"]]),e[8]=o,e[9]=m):(o=e[8],m=e[9]);const T=m;let a;e[10]!==x?(a=[...x],e[10]=x,e[11]=a):a=e[11];let l;e[12]!==_?(l=_.values(),e[12]=_,e[13]=l):l=e[13];let i;e[14]!==l?(i=[...l],e[14]=l,e[15]=i):i=e[15];let r;e[16]!==a||e[17]!==i?(r={availableYears:a,availableNrens:i},e[16]=a,e[17]=i,e[18]=r):r=e[18];let u;e[19]!==t||e[20]!==c||e[21]!==r?(u=h.jsx(E,{filterOptions:r,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[19]=t,e[20]=c,e[21]=r,e[22]=u):u=e[22];const Y=u;let n;e[23]!==w?(n=h.jsx(L,{children:h.jsx(R,{columns:o,columnLookup:T,dataLookup:w})}),e[23]=w,e[24]=n):n=e[24];let f;return e[25]!==Y||e[26]!==s||e[27]!==n?(f=h.jsx(D,{title:g["ops-automation"],description:`The table below shows which NRENs have, or plan to, automate their operational processes, with specification of which processes, and the names of software and tools used for this given when appropriate.`,category:k.Network,filter:Y,data:s,filename:"ops_automation_nrens_per_year",children:n}),e[25]=Y,e[26]=s,e[27]=n,e[28]=f):f=e[28],f}function M(e,t){if(t.ops_automation_specifics)return t.ops_automation_specifics}export{J as default}; diff --git a/compendium_v2/static/ParentOrganisation-BqnVV9Ka.js b/compendium_v2/static/ParentOrganisation-Bpo7P6u6.js similarity index 93% rename from compendium_v2/static/ParentOrganisation-BqnVV9Ka.js rename to compendium_v2/static/ParentOrganisation-Bpo7P6u6.js index c9548602..a610a6ec 100644 --- a/compendium_v2/static/ParentOrganisation-BqnVV9Ka.js +++ b/compendium_v2/static/ParentOrganisation-Bpo7P6u6.js @@ -1 +1 @@ -import{c as b,r as y,F as j,j as p,S as v}from"./index.js";import{u as E,k as O,i as S,D as F,F as P,f as R}from"./useData-Ct8E3VVL.js";import{N as w}from"./NrenYearTable-iS8aEX43.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function q(){const e=b.c(27),{filterSelection:t,setFilterSelection:a}=y.useContext(j),{data:u,years:g,nrens:N}=E("/api/parent-organizations",a);let s,c;if(e[0]!==t.selectedNrens||e[1]!==t.selectedYears||e[2]!==u){let m;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(m=h=>t.selectedYears.includes(h.year)&&t.selectedNrens.includes(h.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=m):m=e[7],s=u.filter(m);const Y=O(s);c=S(Y,C),e[0]=t.selectedNrens,e[1]=t.selectedYears,e[2]=u,e[3]=s,e[4]=c}else s=e[3],c=e[4];const x=c;let r;e[8]!==g?(r=[...g],e[8]=g,e[9]=r):r=e[9];let i;e[10]!==N?(i=N.values(),e[10]=N,e[11]=i):i=e[11];let n;e[12]!==i?(n=[...i],e[12]=i,e[13]=n):n=e[13];let l;e[14]!==r||e[15]!==n?(l={availableYears:r,availableNrens:n},e[14]=r,e[15]=n,e[16]=l):l=e[16];let d;e[17]!==t||e[18]!==a||e[19]!==l?(d=p.jsx(P,{filterOptions:l,filterSelection:t,setFilterSelection:a,max1year:!0}),e[17]=t,e[18]=a,e[19]=l,e[20]=d):d=e[20];const D=d;let o;e[21]!==x?(o=p.jsx(R,{children:p.jsx(w,{data:x,columnTitle:"Parent Organisation",dottedBorder:!0,noDots:!0})}),e[21]=x,e[22]=o):o=e[22];let f;return e[23]!==D||e[24]!==s||e[25]!==o?(f=p.jsx(F,{title:"NREN Parent Organisations",description:"Some NRENs are part of larger organisations, including Ministries or universities. These are shown in the table below. Only NRENs who are managed in this way are available to select.",category:v.Organisation,filter:D,data:s,filename:"nren_parent_organisations",children:o}),e[23]=D,e[24]=s,e[25]=o,e[26]=f):f=e[26],f}function C(e,t){const a=t.name;e[a]=a}export{q as default}; +import{c as b,r as y,F as j,j as p,S as v}from"./index.js";import{u as E,k as O,i as S,D as F,F as P,f as R}from"./useData-CYCBVZdC.js";import{N as w}from"./NrenYearTable-RI8l8hwG.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function q(){const e=b.c(27),{filterSelection:t,setFilterSelection:a}=y.useContext(j),{data:u,years:g,nrens:N}=E("/api/parent-organizations",a);let s,c;if(e[0]!==t.selectedNrens||e[1]!==t.selectedYears||e[2]!==u){let m;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(m=h=>t.selectedYears.includes(h.year)&&t.selectedNrens.includes(h.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=m):m=e[7],s=u.filter(m);const Y=O(s);c=S(Y,C),e[0]=t.selectedNrens,e[1]=t.selectedYears,e[2]=u,e[3]=s,e[4]=c}else s=e[3],c=e[4];const x=c;let r;e[8]!==g?(r=[...g],e[8]=g,e[9]=r):r=e[9];let i;e[10]!==N?(i=N.values(),e[10]=N,e[11]=i):i=e[11];let n;e[12]!==i?(n=[...i],e[12]=i,e[13]=n):n=e[13];let l;e[14]!==r||e[15]!==n?(l={availableYears:r,availableNrens:n},e[14]=r,e[15]=n,e[16]=l):l=e[16];let d;e[17]!==t||e[18]!==a||e[19]!==l?(d=p.jsx(P,{filterOptions:l,filterSelection:t,setFilterSelection:a,max1year:!0}),e[17]=t,e[18]=a,e[19]=l,e[20]=d):d=e[20];const D=d;let o;e[21]!==x?(o=p.jsx(R,{children:p.jsx(w,{data:x,columnTitle:"Parent Organisation",dottedBorder:!0,noDots:!0})}),e[21]=x,e[22]=o):o=e[22];let f;return e[23]!==D||e[24]!==s||e[25]!==o?(f=p.jsx(F,{title:"NREN Parent Organisations",description:"Some NRENs are part of larger organisations, including Ministries or universities. These are shown in the table below. Only NRENs who are managed in this way are available to select.",category:v.Organisation,filter:D,data:s,filename:"nren_parent_organisations",children:o}),e[23]=D,e[24]=s,e[25]=o,e[26]=f):f=e[26],f}function C(e,t){const a=t.name;e[a]=a}export{q as default}; diff --git a/compendium_v2/static/PassiveMonitoring-NXmN_EjG.js b/compendium_v2/static/PassiveMonitoring-Bn2t9Pmf.js similarity index 93% rename from compendium_v2/static/PassiveMonitoring-NXmN_EjG.js rename to compendium_v2/static/PassiveMonitoring-Bn2t9Pmf.js index 937f03d8..e36fef87 100644 --- a/compendium_v2/static/PassiveMonitoring-NXmN_EjG.js +++ b/compendium_v2/static/PassiveMonitoring-Bn2t9Pmf.js @@ -1 +1 @@ -import{c as Y,r as j,F as _,j as N,t as y,S as F}from"./index.js";import{u as T,g as k,D as w,F as A,f as C}from"./useData-Ct8E3VVL.js";import{P as D}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function z(){const e=Y.c(29),{filterSelection:t,setFilterSelection:c}=j.useContext(_),{data:h,years:x,nrens:g}=T("/api/passive-monitoring",c);let o,p;if(e[0]!==h||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let u;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(u=S=>t.selectedYears.includes(S.year)&&t.selectedNrens.includes(S.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=u):u=e[7],o=h.filter(u),p=k(o,"method",!0),e[0]=h,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=o,e[4]=p}else o=e[3],p=e[4];const v=p;let l;e[8]!==x?(l=[...x],e[8]=x,e[9]=l):l=e[9];let r;e[10]!==g?(r=g.values(),e[10]=g,e[11]=r):r=e[11];let i;e[12]!==r?(i=[...r],e[12]=r,e[13]=i):i=e[13];let a;e[14]!==l||e[15]!==i?(a={availableYears:l,availableNrens:i},e[14]=l,e[15]=i,e[16]=a):a=e[16];let m;e[17]!==t||e[18]!==c||e[19]!==a?(m=N.jsx(A,{filterOptions:a,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[17]=t,e[18]=c,e[19]=a,e[20]=m):m=e[20];const P=m;let s,f;e[21]===Symbol.for("react.memo_cache_sentinel")?(s=["No monitoring occurs","SPAN ports","Passive optical TAPS","Both SPAN ports and passive optical TAPS"],f=new Map([[s[0],"null"],[s[1],"span_ports"],[s[2],"taps"],[s[3],"both"]]),e[21]=s,e[22]=f):(s=e[21],f=e[22]);const b=f;let n;e[23]!==v?(n=N.jsx(C,{children:N.jsx(D,{columns:s,dataLookup:v,columnLookup:b})}),e[23]=v,e[24]=n):n=e[24];let d;return e[25]!==P||e[26]!==o||e[27]!==n?(d=N.jsx(w,{title:y["passive-monitoring"],description:"The table below shows the methods NRENs use for the passive monitoring of international traffic.",category:F.Network,filter:P,data:o,filename:"passive_monitoring_nrens_per_year",children:n}),e[25]=P,e[26]=o,e[27]=n,e[28]=d):d=e[28],d}export{z as default}; +import{c as Y,r as j,F as _,j as N,t as y,S as F}from"./index.js";import{u as T,g as k,D as w,F as A,f as C}from"./useData-CYCBVZdC.js";import{P as D}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function z(){const e=Y.c(29),{filterSelection:t,setFilterSelection:c}=j.useContext(_),{data:h,years:x,nrens:g}=T("/api/passive-monitoring",c);let o,p;if(e[0]!==h||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let u;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(u=S=>t.selectedYears.includes(S.year)&&t.selectedNrens.includes(S.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=u):u=e[7],o=h.filter(u),p=k(o,"method",!0),e[0]=h,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=o,e[4]=p}else o=e[3],p=e[4];const v=p;let l;e[8]!==x?(l=[...x],e[8]=x,e[9]=l):l=e[9];let r;e[10]!==g?(r=g.values(),e[10]=g,e[11]=r):r=e[11];let i;e[12]!==r?(i=[...r],e[12]=r,e[13]=i):i=e[13];let a;e[14]!==l||e[15]!==i?(a={availableYears:l,availableNrens:i},e[14]=l,e[15]=i,e[16]=a):a=e[16];let m;e[17]!==t||e[18]!==c||e[19]!==a?(m=N.jsx(A,{filterOptions:a,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[17]=t,e[18]=c,e[19]=a,e[20]=m):m=e[20];const P=m;let s,f;e[21]===Symbol.for("react.memo_cache_sentinel")?(s=["No monitoring occurs","SPAN ports","Passive optical TAPS","Both SPAN ports and passive optical TAPS"],f=new Map([[s[0],"null"],[s[1],"span_ports"],[s[2],"taps"],[s[3],"both"]]),e[21]=s,e[22]=f):(s=e[21],f=e[22]);const b=f;let n;e[23]!==v?(n=N.jsx(C,{children:N.jsx(D,{columns:s,dataLookup:v,columnLookup:b})}),e[23]=v,e[24]=n):n=e[24];let d;return e[25]!==P||e[26]!==o||e[27]!==n?(d=N.jsx(w,{title:y["passive-monitoring"],description:"The table below shows the methods NRENs use for the passive monitoring of international traffic.",category:F.Network,filter:P,data:o,filename:"passive_monitoring_nrens_per_year",children:n}),e[25]=P,e[26]=o,e[27]=n,e[28]=d):d=e[28],d}export{z as default}; diff --git a/compendium_v2/static/PertTeam-64HTdccQ.js b/compendium_v2/static/PertTeam-C-4MgsmN.js similarity index 93% rename from compendium_v2/static/PertTeam-64HTdccQ.js rename to compendium_v2/static/PertTeam-C-4MgsmN.js index 7aa7a12a..181b5c04 100644 --- a/compendium_v2/static/PertTeam-64HTdccQ.js +++ b/compendium_v2/static/PertTeam-C-4MgsmN.js @@ -1,2 +1,2 @@ -import{c as E,r as _,F as b,j as N,t as g,S as k}from"./index.js";import{u as v,g as F,D as R,F as T,f as C}from"./useData-Ct8E3VVL.js";import{P as D}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function B(){const e=E.c(29),{filterSelection:t,setFilterSelection:c}=_.useContext(b),{data:x,years:P,nrens:Y}=v("/api/pert-team",c);let s,m;if(e[0]!==x||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let u;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(u=j=>t.selectedYears.includes(j.year)&&t.selectedNrens.includes(j.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=u):u=e[7],s=x.filter(u),m=F(s,"pert_team"),e[0]=x,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=m}else s=e[3],m=e[4];const h=m;let r,p;e[8]===Symbol.for("react.memo_cache_sentinel")?(r=["Yes","Planned","No"],p=new Map([[r[0],"yes"],[r[1],"planned"],[r[2],"no"]]),e[8]=r,e[9]=p):(r=e[8],p=e[9]);const y=p;let a;e[10]!==P?(a=[...P],e[10]=P,e[11]=a):a=e[11];let l;e[12]!==Y?(l=Y.values(),e[12]=Y,e[13]=l):l=e[13];let n;e[14]!==l?(n=[...l],e[14]=l,e[15]=n):n=e[15];let o;e[16]!==a||e[17]!==n?(o={availableYears:a,availableNrens:n},e[16]=a,e[17]=n,e[18]=o):o=e[18];let f;e[19]!==t||e[20]!==c||e[21]!==o?(f=N.jsx(T,{filterOptions:o,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[19]=t,e[20]=c,e[21]=o,e[22]=f):f=e[22];const S=f;let i;e[23]!==h?(i=N.jsx(C,{children:N.jsx(D,{columns:r,columnLookup:y,dataLookup:h})}),e[23]=h,e[24]=i):i=e[24];let d;return e[25]!==S||e[26]!==s||e[27]!==i?(d=N.jsx(R,{title:g["pert-team"],description:`Some NRENs have an in-house Performance Enhancement Response Team, +import{c as E,r as _,F as b,j as N,t as g,S as k}from"./index.js";import{u as v,g as F,D as R,F as T,f as C}from"./useData-CYCBVZdC.js";import{P as D}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function B(){const e=E.c(29),{filterSelection:t,setFilterSelection:c}=_.useContext(b),{data:x,years:P,nrens:Y}=v("/api/pert-team",c);let s,m;if(e[0]!==x||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let u;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(u=j=>t.selectedYears.includes(j.year)&&t.selectedNrens.includes(j.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=u):u=e[7],s=x.filter(u),m=F(s,"pert_team"),e[0]=x,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=m}else s=e[3],m=e[4];const h=m;let r,p;e[8]===Symbol.for("react.memo_cache_sentinel")?(r=["Yes","Planned","No"],p=new Map([[r[0],"yes"],[r[1],"planned"],[r[2],"no"]]),e[8]=r,e[9]=p):(r=e[8],p=e[9]);const y=p;let a;e[10]!==P?(a=[...P],e[10]=P,e[11]=a):a=e[11];let l;e[12]!==Y?(l=Y.values(),e[12]=Y,e[13]=l):l=e[13];let n;e[14]!==l?(n=[...l],e[14]=l,e[15]=n):n=e[15];let o;e[16]!==a||e[17]!==n?(o={availableYears:a,availableNrens:n},e[16]=a,e[17]=n,e[18]=o):o=e[18];let f;e[19]!==t||e[20]!==c||e[21]!==o?(f=N.jsx(T,{filterOptions:o,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[19]=t,e[20]=c,e[21]=o,e[22]=f):f=e[22];const S=f;let i;e[23]!==h?(i=N.jsx(C,{children:N.jsx(D,{columns:r,columnLookup:y,dataLookup:h})}),e[23]=h,e[24]=i):i=e[24];let d;return e[25]!==S||e[26]!==s||e[27]!==i?(d=N.jsx(R,{title:g["pert-team"],description:`Some NRENs have an in-house Performance Enhancement Response Team, or PERT, to investigate network performance issues.`,category:k.Network,filter:S,data:s,filename:"pert_team_nrens_per_year",children:i}),e[25]=S,e[26]=s,e[27]=i,e[28]=d):d=e[28],d}export{B as default}; diff --git a/compendium_v2/static/Policy-DTXx03Vh.js b/compendium_v2/static/Policy-BdndWxZz.js similarity index 96% rename from compendium_v2/static/Policy-DTXx03Vh.js rename to compendium_v2/static/Policy-BdndWxZz.js index 0b3204c4..905bb7e3 100644 --- a/compendium_v2/static/Policy-DTXx03Vh.js +++ b/compendium_v2/static/Policy-BdndWxZz.js @@ -1 +1 @@ -import{c as h,r as v,F as E,j as y,t as _,S as b}from"./index.js";import{u as g,q as j,k,i as S,D as q,F as C,f as F}from"./useData-Ct8E3VVL.js";import{N as R}from"./NrenYearTable-iS8aEX43.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function W(){const e=h.c(21),{filterSelection:t,setFilterSelection:n}=v.useContext(E),{data:a,nrens:c}=g("/api/policy",n);let i,o;if(e[0]!==a||e[1]!==t.selectedNrens){const D=a?j(a):[];let u;e[4]!==t.selectedNrens?(u=x=>t.selectedNrens.includes(x.nren),e[4]=t.selectedNrens,e[5]=u):u=e[5],i=D.filter(u);const P=k(i);o=S(P,T),e[0]=a,e[1]=t.selectedNrens,e[2]=i,e[3]=o}else i=e[2],o=e[3];const d=o;let p;e[6]===Symbol.for("react.memo_cache_sentinel")?(p=[],e[6]=p):p=e[6];let l;e[7]!==c?(l=c.values(),e[7]=c,e[8]=l):l=e[8];let s;e[9]!==l?(s={availableYears:p,availableNrens:[...l]},e[9]=l,e[10]=s):s=e[10];let f;e[11]!==t||e[12]!==n||e[13]!==s?(f=y.jsx(C,{filterOptions:s,filterSelection:t,setFilterSelection:n}),e[11]=t,e[12]=n,e[13]=s,e[14]=f):f=e[14];const N=f;let r;e[15]!==d?(r=y.jsx(F,{children:y.jsx(R,{data:d,columnTitle:"Policies",noDots:!0,dottedBorder:!0,keysAreURLs:!0,removeDecoration:!0})}),e[15]=d,e[16]=r):r=e[16];let m;return e[17]!==N||e[18]!==i||e[19]!==r?(m=y.jsx(q,{title:_.policy,description:"The table shows links to the NRENs policies. We only include links from the most recent response from each NREN.",category:b.Policy,filter:N,data:i,filename:"nren_policies",children:r}),e[17]=N,e[18]=i,e[19]=r,e[20]=m):m=e[20],m}function T(e,t){[["acceptable_use","Acceptable Use Policy"],["connectivity","Connectivity Policy"],["data_protection","Data Protection Policy"],["environmental","Environmental Policy"],["equal_opportunity","Equal Opportunity Policy"],["gender_equality","Gender Equality Plan"],["privacy_notice","Privacy Notice"]].forEach(a=>{const[c,i]=a,o=t[c];o&&(e[i]=o)})}export{W as default}; +import{c as h,r as v,F as E,j as y,t as _,S as b}from"./index.js";import{u as g,q as j,k,i as S,D as q,F as C,f as F}from"./useData-CYCBVZdC.js";import{N as R}from"./NrenYearTable-RI8l8hwG.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function W(){const e=h.c(21),{filterSelection:t,setFilterSelection:n}=v.useContext(E),{data:a,nrens:c}=g("/api/policy",n);let i,o;if(e[0]!==a||e[1]!==t.selectedNrens){const D=a?j(a):[];let u;e[4]!==t.selectedNrens?(u=x=>t.selectedNrens.includes(x.nren),e[4]=t.selectedNrens,e[5]=u):u=e[5],i=D.filter(u);const P=k(i);o=S(P,T),e[0]=a,e[1]=t.selectedNrens,e[2]=i,e[3]=o}else i=e[2],o=e[3];const d=o;let p;e[6]===Symbol.for("react.memo_cache_sentinel")?(p=[],e[6]=p):p=e[6];let l;e[7]!==c?(l=c.values(),e[7]=c,e[8]=l):l=e[8];let s;e[9]!==l?(s={availableYears:p,availableNrens:[...l]},e[9]=l,e[10]=s):s=e[10];let f;e[11]!==t||e[12]!==n||e[13]!==s?(f=y.jsx(C,{filterOptions:s,filterSelection:t,setFilterSelection:n}),e[11]=t,e[12]=n,e[13]=s,e[14]=f):f=e[14];const N=f;let r;e[15]!==d?(r=y.jsx(F,{children:y.jsx(R,{data:d,columnTitle:"Policies",noDots:!0,dottedBorder:!0,keysAreURLs:!0,removeDecoration:!0})}),e[15]=d,e[16]=r):r=e[16];let m;return e[17]!==N||e[18]!==i||e[19]!==r?(m=y.jsx(q,{title:_.policy,description:"The table shows links to the NRENs policies. We only include links from the most recent response from each NREN.",category:b.Policy,filter:N,data:i,filename:"nren_policies",children:r}),e[17]=N,e[18]=i,e[19]=r,e[20]=m):m=e[20],m}function T(e,t){[["acceptable_use","Acceptable Use Policy"],["connectivity","Connectivity Policy"],["data_protection","Data Protection Policy"],["environmental","Environmental Policy"],["equal_opportunity","Equal Opportunity Policy"],["gender_equality","Gender Equality Plan"],["privacy_notice","Privacy Notice"]].forEach(a=>{const[c,i]=a,o=t[c];o&&(e[i]=o)})}export{W as default}; diff --git a/compendium_v2/static/RemoteCampuses-DiA5hlnD.js b/compendium_v2/static/RemoteCampuses-CWuoHcc1.js similarity index 98% rename from compendium_v2/static/RemoteCampuses-DiA5hlnD.js rename to compendium_v2/static/RemoteCampuses-CWuoHcc1.js index 411c6563..1e89b6e6 100644 --- a/compendium_v2/static/RemoteCampuses-DiA5hlnD.js +++ b/compendium_v2/static/RemoteCampuses-CWuoHcc1.js @@ -1 +1 @@ -import{c as S,j as n,r as D,F as R,t as E,S as g}from"./index.js";import{u as w,h as F,i as k,D as T,F as B,f as L}from"./useData-Ct8E3VVL.js";import{T as O}from"./Table-ClWM2_rS.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";function $({data:e,dottedBorder:t=!1,columns:o}){return Array.from(e.entries()).map(([s,a])=>Array.from(a.entries()).map(([i,d],c)=>n.jsxs("tr",{className:t?"dotted-border":"",children:[n.jsx("td",{className:"pt-3 nren-column text-nowrap",children:c===0&&s}),n.jsx("td",{className:"pt-3 year-column",children:i}),Object.keys(o).map((r,l)=>n.jsx("td",{className:"pt-3 blue-column",children:d[r]},l))]},s+i)))}function A(e){const t=S.c(15),{data:o,dottedBorder:s,columns:a}=e;let i;t[0]===Symbol.for("react.memo_cache_sentinel")?(i=n.jsx("th",{className:"nren-column",children:n.jsx("span",{children:"NREN"})}),t[0]=i):i=t[0];let d;t[1]===Symbol.for("react.memo_cache_sentinel")?(d=n.jsx("th",{className:"year-column",children:n.jsx("span",{children:"Year"})}),t[1]=d):d=t[1];let c;t[2]!==a?(c=Object.values(a).map(P),t[2]=a,t[3]=c):c=t[3];let r;t[4]!==c?(r=n.jsx("thead",{children:n.jsxs("tr",{children:[i,d,c]})}),t[4]=c,t[5]=r):r=t[5];let l;t[6]!==a||t[7]!==o||t[8]!==s?(l=$({data:o,dottedBorder:s,columns:a}),t[6]=a,t[7]=o,t[8]=s,t[9]=l):l=t[9];let u;t[10]!==l?(u=n.jsx("tbody",{children:l}),t[10]=l,t[11]=u):u=t[11];let m;return t[12]!==r||t[13]!==u?(m=n.jsxs(O,{borderless:!0,className:"compendium-table",children:[r,u]}),t[12]=r,t[13]=u,t[14]=m):m=t[14],m}function P(e,t){return n.jsx("th",{className:"blue-column",children:n.jsx("span",{children:e})},t)}function Q(){const e=S.c(29);let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=x=>!!x.remote_campus_connectivity,e[0]=t):t=e[0];const o=t,{filterSelection:s,setFilterSelection:a}=D.useContext(R),{data:i,years:d,nrens:c}=w("/api/remote-campuses",a,o);let r,l;if(e[1]!==i||e[2]!==s.selectedNrens||e[3]!==s.selectedYears){let x;e[6]!==s.selectedNrens||e[7]!==s.selectedYears?(x=C=>s.selectedYears.includes(C.year)&&s.selectedNrens.includes(C.nren),e[6]=s.selectedNrens,e[7]=s.selectedYears,e[8]=x):x=e[8],r=i.filter(x);const v=F(r);l=k(v,J),e[1]=i,e[2]=s.selectedNrens,e[3]=s.selectedYears,e[4]=r,e[5]=l}else r=e[4],l=e[5];const u=l;let m;e[9]!==d?(m=[...d],e[9]=d,e[10]=m):m=e[10];let f;e[11]!==c?(f=c.values(),e[11]=c,e[12]=f):f=e[12];let p;e[13]!==f?(p=[...f],e[13]=f,e[14]=p):p=e[14];let h;e[15]!==m||e[16]!==p?(h={availableYears:m,availableNrens:p},e[15]=m,e[16]=p,e[17]=h):h=e[17];let j;e[18]!==s||e[19]!==a||e[20]!==h?(j=n.jsx(B,{filterOptions:h,filterSelection:s,setFilterSelection:a}),e[18]=s,e[19]=a,e[20]=h,e[21]=j):j=e[21];const b=j;let N;e[22]===Symbol.for("react.memo_cache_sentinel")?(N={countries:"Countries with Remote Campuses",local_r_and_e_connection:"Local R&E Connection"},e[22]=N):N=e[22];const Y=N;let _;e[23]!==u?(_=n.jsx(L,{children:n.jsx(A,{data:u,columns:Y,dottedBorder:!0})}),e[23]=u,e[24]=_):_=e[24];let y;return e[25]!==b||e[26]!==r||e[27]!==_?(y=n.jsx(T,{title:E["remote-campuses"],description:"NRENs are asked whether they have remote campuses in other countries, and if so, to list the countries where they have remote campuses and whether they are connected to the local R&E network.",category:g.ConnectedUsers,filter:b,data:r,filename:"nren_remote_campuses",children:_}),e[25]=b,e[26]=r,e[27]=_,e[28]=y):y=e[28],y}function J(e,t){for(const o of t){if(!o.remote_campus_connectivity)continue;const s=o.connections.map(X).join(", ");e.countries=s,e.local_r_and_e_connection=o.connections.map(U).join(", ")}}function U(e){return e.local_r_and_e_connection?"Yes":"No"}function X(e){return e.country}export{Q as default}; +import{c as S,j as n,r as D,F as R,t as E,S as g}from"./index.js";import{u as w,h as F,i as k,D as T,F as B,f as L}from"./useData-CYCBVZdC.js";import{T as O}from"./Table-ClWM2_rS.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";function $({data:e,dottedBorder:t=!1,columns:o}){return Array.from(e.entries()).map(([s,a])=>Array.from(a.entries()).map(([i,d],c)=>n.jsxs("tr",{className:t?"dotted-border":"",children:[n.jsx("td",{className:"pt-3 nren-column text-nowrap",children:c===0&&s}),n.jsx("td",{className:"pt-3 year-column",children:i}),Object.keys(o).map((r,l)=>n.jsx("td",{className:"pt-3 blue-column",children:d[r]},l))]},s+i)))}function A(e){const t=S.c(15),{data:o,dottedBorder:s,columns:a}=e;let i;t[0]===Symbol.for("react.memo_cache_sentinel")?(i=n.jsx("th",{className:"nren-column",children:n.jsx("span",{children:"NREN"})}),t[0]=i):i=t[0];let d;t[1]===Symbol.for("react.memo_cache_sentinel")?(d=n.jsx("th",{className:"year-column",children:n.jsx("span",{children:"Year"})}),t[1]=d):d=t[1];let c;t[2]!==a?(c=Object.values(a).map(P),t[2]=a,t[3]=c):c=t[3];let r;t[4]!==c?(r=n.jsx("thead",{children:n.jsxs("tr",{children:[i,d,c]})}),t[4]=c,t[5]=r):r=t[5];let l;t[6]!==a||t[7]!==o||t[8]!==s?(l=$({data:o,dottedBorder:s,columns:a}),t[6]=a,t[7]=o,t[8]=s,t[9]=l):l=t[9];let u;t[10]!==l?(u=n.jsx("tbody",{children:l}),t[10]=l,t[11]=u):u=t[11];let m;return t[12]!==r||t[13]!==u?(m=n.jsxs(O,{borderless:!0,className:"compendium-table",children:[r,u]}),t[12]=r,t[13]=u,t[14]=m):m=t[14],m}function P(e,t){return n.jsx("th",{className:"blue-column",children:n.jsx("span",{children:e})},t)}function Q(){const e=S.c(29);let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t=x=>!!x.remote_campus_connectivity,e[0]=t):t=e[0];const o=t,{filterSelection:s,setFilterSelection:a}=D.useContext(R),{data:i,years:d,nrens:c}=w("/api/remote-campuses",a,o);let r,l;if(e[1]!==i||e[2]!==s.selectedNrens||e[3]!==s.selectedYears){let x;e[6]!==s.selectedNrens||e[7]!==s.selectedYears?(x=C=>s.selectedYears.includes(C.year)&&s.selectedNrens.includes(C.nren),e[6]=s.selectedNrens,e[7]=s.selectedYears,e[8]=x):x=e[8],r=i.filter(x);const v=F(r);l=k(v,J),e[1]=i,e[2]=s.selectedNrens,e[3]=s.selectedYears,e[4]=r,e[5]=l}else r=e[4],l=e[5];const u=l;let m;e[9]!==d?(m=[...d],e[9]=d,e[10]=m):m=e[10];let f;e[11]!==c?(f=c.values(),e[11]=c,e[12]=f):f=e[12];let p;e[13]!==f?(p=[...f],e[13]=f,e[14]=p):p=e[14];let h;e[15]!==m||e[16]!==p?(h={availableYears:m,availableNrens:p},e[15]=m,e[16]=p,e[17]=h):h=e[17];let j;e[18]!==s||e[19]!==a||e[20]!==h?(j=n.jsx(B,{filterOptions:h,filterSelection:s,setFilterSelection:a}),e[18]=s,e[19]=a,e[20]=h,e[21]=j):j=e[21];const b=j;let N;e[22]===Symbol.for("react.memo_cache_sentinel")?(N={countries:"Countries with Remote Campuses",local_r_and_e_connection:"Local R&E Connection"},e[22]=N):N=e[22];const Y=N;let _;e[23]!==u?(_=n.jsx(L,{children:n.jsx(A,{data:u,columns:Y,dottedBorder:!0})}),e[23]=u,e[24]=_):_=e[24];let y;return e[25]!==b||e[26]!==r||e[27]!==_?(y=n.jsx(T,{title:E["remote-campuses"],description:"NRENs are asked whether they have remote campuses in other countries, and if so, to list the countries where they have remote campuses and whether they are connected to the local R&E network.",category:g.ConnectedUsers,filter:b,data:r,filename:"nren_remote_campuses",children:_}),e[25]=b,e[26]=r,e[27]=_,e[28]=y):y=e[28],y}function J(e,t){for(const o of t){if(!o.remote_campus_connectivity)continue;const s=o.connections.map(X).join(", ");e.countries=s,e.local_r_and_e_connection=o.connections.map(U).join(", ")}}function U(e){return e.local_r_and_e_connection?"Yes":"No"}function X(e){return e.country}export{Q as default}; diff --git a/compendium_v2/static/SecurityControls-TM-ptOes.js b/compendium_v2/static/SecurityControls-Ba4coYqK.js similarity index 97% rename from compendium_v2/static/SecurityControls-TM-ptOes.js rename to compendium_v2/static/SecurityControls-Ba4coYqK.js index b423e9f2..5543b7d3 100644 --- a/compendium_v2/static/SecurityControls-TM-ptOes.js +++ b/compendium_v2/static/SecurityControls-Ba4coYqK.js @@ -1,2 +1,2 @@ -import{c as T,r as E,F as L,S as A,j,t as I}from"./index.js";import{u as M,g as O,F as R,D as V,f as W}from"./useData-Ct8E3VVL.js";import{P as $}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function Z(){const e=T.c(51),{filterSelection:t,setFilterSelection:i}=E.useContext(L),{data:w,years:D,nrens:Y}=M("/api/security-controls",i);let s,S;if(e[0]!==w||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let r;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(r=P=>t.selectedYears.includes(P.year)&&t.selectedNrens.includes(P.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=r):r=e[7],s=w.filter(r),S=O(s,"security_control_descriptions"),e[0]=w,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=S}else s=e[3],S=e[4];const C=S;let l;e[8]!==D?(l=[...D],e[8]=D,e[9]=l):l=e[9];let o;e[10]!==Y?(o=Y.values(),e[10]=Y,e[11]=o):o=e[11];let n;e[12]!==o?(n=[...o],e[12]=o,e[13]=n):n=e[13];let a;e[14]!==l||e[15]!==n?(a={availableYears:l,availableNrens:n},e[14]=l,e[15]=n,e[16]=a):a=e[16];let b;e[17]!==t||e[18]!==i||e[19]!==a?(b=j.jsx(R,{filterOptions:a,filterSelection:t,setFilterSelection:i,coloredYears:!0}),e[17]=t,e[18]=i,e[19]=a,e[20]=b):b=e[20];const F=b;let c,u,m,p,f,d,y,g,h,N,x;if(e[21]!==F||e[22]!==s){const r={anti_virus:"Anti Virus",anti_spam:"Anti-Spam",firewall:"Firewall",ddos_mitigation:"DDoS mitigation",monitoring:"Network monitoring",ips_ids:"IPS/IDS",acl:"ACL",segmentation:"Network segmentation",integrity_checking:"Integrity checking"};p=new Map(Object.entries(r).map(q)),m=V,h=I["security-control"],N=`The table below shows the different security controls, such as anti-virus, integrity checkers, and systemic firewalls used by +import{c as T,r as E,F as L,S as A,j,t as I}from"./index.js";import{u as M,g as O,F as R,D as V,f as W}from"./useData-CYCBVZdC.js";import{P as $}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function Z(){const e=T.c(51),{filterSelection:t,setFilterSelection:i}=E.useContext(L),{data:w,years:D,nrens:Y}=M("/api/security-controls",i);let s,S;if(e[0]!==w||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let r;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(r=P=>t.selectedYears.includes(P.year)&&t.selectedNrens.includes(P.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=r):r=e[7],s=w.filter(r),S=O(s,"security_control_descriptions"),e[0]=w,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=S}else s=e[3],S=e[4];const C=S;let l;e[8]!==D?(l=[...D],e[8]=D,e[9]=l):l=e[9];let o;e[10]!==Y?(o=Y.values(),e[10]=Y,e[11]=o):o=e[11];let n;e[12]!==o?(n=[...o],e[12]=o,e[13]=n):n=e[13];let a;e[14]!==l||e[15]!==n?(a={availableYears:l,availableNrens:n},e[14]=l,e[15]=n,e[16]=a):a=e[16];let b;e[17]!==t||e[18]!==i||e[19]!==a?(b=j.jsx(R,{filterOptions:a,filterSelection:t,setFilterSelection:i,coloredYears:!0}),e[17]=t,e[18]=i,e[19]=a,e[20]=b):b=e[20];const F=b;let c,u,m,p,f,d,y,g,h,N,x;if(e[21]!==F||e[22]!==s){const r={anti_virus:"Anti Virus",anti_spam:"Anti-Spam",firewall:"Firewall",ddos_mitigation:"DDoS mitigation",monitoring:"Network monitoring",ips_ids:"IPS/IDS",acl:"ACL",segmentation:"Network segmentation",integrity_checking:"Integrity checking"};p=new Map(Object.entries(r).map(q)),m=V,h=I["security-control"],N=`The table below shows the different security controls, such as anti-virus, integrity checkers, and systemic firewalls used by NRENs to protect their assets. Where 'other' controls are mentioned, hover over the marker for more information.`,x=A.Policy,f=F,d=s,y="security_control_nrens_per_year",u=W,c=$,g=Object.values(r),e[21]=F,e[22]=s,e[23]=c,e[24]=u,e[25]=m,e[26]=p,e[27]=f,e[28]=d,e[29]=y,e[30]=g,e[31]=h,e[32]=N,e[33]=x}else c=e[23],u=e[24],m=e[25],p=e[26],f=e[27],d=e[28],y=e[29],g=e[30],h=e[31],N=e[32],x=e[33];let _;e[34]!==c||e[35]!==p||e[36]!==C||e[37]!==g?(_=j.jsx(c,{columns:g,dataLookup:C,circle:!0,columnLookup:p}),e[34]=c,e[35]=p,e[36]=C,e[37]=g,e[38]=_):_=e[38];let k;e[39]!==u||e[40]!==_?(k=j.jsx(u,{children:_}),e[39]=u,e[40]=_,e[41]=k):k=e[41];let v;return e[42]!==m||e[43]!==f||e[44]!==d||e[45]!==y||e[46]!==k||e[47]!==h||e[48]!==N||e[49]!==x?(v=j.jsx(m,{title:h,description:N,category:x,filter:f,data:d,filename:y,children:k}),e[42]=m,e[43]=f,e[44]=d,e[45]=y,e[46]=k,e[47]=h,e[48]=N,e[49]=x,e[50]=v):v=e[50],v}function q(e){const[t,i]=e;return[i,t]}export{Z as default}; diff --git a/compendium_v2/static/ServiceLevelTargets-DMHnzoF5.js b/compendium_v2/static/ServiceLevelTargets-pvc5MWdl.js similarity index 96% rename from compendium_v2/static/ServiceLevelTargets-DMHnzoF5.js rename to compendium_v2/static/ServiceLevelTargets-pvc5MWdl.js index 3ec7608f..05670067 100644 --- a/compendium_v2/static/ServiceLevelTargets-DMHnzoF5.js +++ b/compendium_v2/static/ServiceLevelTargets-pvc5MWdl.js @@ -1,2 +1,2 @@ -import{c as y,r as j,F,j as v,t as T,S as _}from"./index.js";import{u as E,g as L,D as P,F as w,f as C}from"./useData-Ct8E3VVL.js";import{P as D}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function A(){const e=y.c(29),{filterSelection:t,setFilterSelection:n}=j.useContext(F),{data:h,years:N,nrens:x}=E("/api/service-management",n);let s,f;if(e[0]!==h||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let p;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(p=Y=>t.selectedYears.includes(Y.year)&&t.selectedNrens.includes(Y.nren)&&Y.service_level_targets!==null,e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=p):p=e[7],s=h.filter(p),f=L(s,"service_level_targets"),e[0]=h,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=f}else s=e[3],f=e[4];const g=f;let l,d;e[8]===Symbol.for("react.memo_cache_sentinel")?(l=["Yes","No"],d=new Map([[l[0],"True"],[l[1],"False"]]),e[8]=l,e[9]=d):(l=e[8],d=e[9]);const b=d;let r;e[10]!==N?(r=[...N],e[10]=N,e[11]=r):r=e[11];let a;e[12]!==x?(a=x.values(),e[12]=x,e[13]=a):a=e[13];let i;e[14]!==a?(i=[...a],e[14]=a,e[15]=i):i=e[15];let o;e[16]!==r||e[17]!==i?(o={availableYears:r,availableNrens:i},e[16]=r,e[17]=i,e[18]=o):o=e[18];let m;e[19]!==t||e[20]!==n||e[21]!==o?(m=v.jsx(w,{filterOptions:o,filterSelection:t,setFilterSelection:n,coloredYears:!0}),e[19]=t,e[20]=n,e[21]=o,e[22]=m):m=e[22];const S=m;let c;e[23]!==g?(c=v.jsx(C,{children:v.jsx(D,{columns:l,columnLookup:b,dataLookup:g})}),e[23]=g,e[24]=c):c=e[24];let u;return e[25]!==S||e[26]!==s||e[27]!==c?(u=v.jsx(P,{title:T["service-level-targets"],description:`The table below shows which NRENs offer Service Levels Targets for their services. +import{c as y,r as j,F,j as v,t as T,S as _}from"./index.js";import{u as E,g as L,D as P,F as w,f as C}from"./useData-CYCBVZdC.js";import{P as D}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function A(){const e=y.c(29),{filterSelection:t,setFilterSelection:n}=j.useContext(F),{data:h,years:N,nrens:x}=E("/api/service-management",n);let s,f;if(e[0]!==h||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let p;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(p=Y=>t.selectedYears.includes(Y.year)&&t.selectedNrens.includes(Y.nren)&&Y.service_level_targets!==null,e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=p):p=e[7],s=h.filter(p),f=L(s,"service_level_targets"),e[0]=h,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=f}else s=e[3],f=e[4];const g=f;let l,d;e[8]===Symbol.for("react.memo_cache_sentinel")?(l=["Yes","No"],d=new Map([[l[0],"True"],[l[1],"False"]]),e[8]=l,e[9]=d):(l=e[8],d=e[9]);const b=d;let r;e[10]!==N?(r=[...N],e[10]=N,e[11]=r):r=e[11];let a;e[12]!==x?(a=x.values(),e[12]=x,e[13]=a):a=e[13];let i;e[14]!==a?(i=[...a],e[14]=a,e[15]=i):i=e[15];let o;e[16]!==r||e[17]!==i?(o={availableYears:r,availableNrens:i},e[16]=r,e[17]=i,e[18]=o):o=e[18];let m;e[19]!==t||e[20]!==n||e[21]!==o?(m=v.jsx(w,{filterOptions:o,filterSelection:t,setFilterSelection:n,coloredYears:!0}),e[19]=t,e[20]=n,e[21]=o,e[22]=m):m=e[22];const S=m;let c;e[23]!==g?(c=v.jsx(C,{children:v.jsx(D,{columns:l,columnLookup:b,dataLookup:g})}),e[23]=g,e[24]=c):c=e[24];let u;return e[25]!==S||e[26]!==s||e[27]!==c?(u=v.jsx(P,{title:T["service-level-targets"],description:`The table below shows which NRENs offer Service Levels Targets for their services. If NRENs have never responded to this question in the survey, they are excluded. `,category:_.Policy,filter:S,data:s,filename:"service_level_targets",children:c}),e[25]=S,e[26]=s,e[27]=c,e[28]=u):u=e[28],u}export{A as default}; diff --git a/compendium_v2/static/ServiceManagementFramework-D-rGA4sI.js b/compendium_v2/static/ServiceManagementFramework-Cy_R2T5K.js similarity index 93% rename from compendium_v2/static/ServiceManagementFramework-D-rGA4sI.js rename to compendium_v2/static/ServiceManagementFramework-Cy_R2T5K.js index 8c9af445..e0c871c6 100644 --- a/compendium_v2/static/ServiceManagementFramework-D-rGA4sI.js +++ b/compendium_v2/static/ServiceManagementFramework-Cy_R2T5K.js @@ -1,2 +1,2 @@ -import{c as b,r as F,F as S,j as h,t as j,S as _}from"./index.js";import{u as y,g as E,D as P,F as C,f as D}from"./useData-Ct8E3VVL.js";import{P as R}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function B(){const e=b.c(29),{filterSelection:t,setFilterSelection:c}=F.useContext(S),{data:v,years:N,nrens:w}=y("/api/service-management",c);let s,m;if(e[0]!==v||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let u;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(u=k=>t.selectedYears.includes(k.year)&&t.selectedNrens.includes(k.nren)&&k.service_management_framework!==null,e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=u):u=e[7],s=v.filter(u),m=E(s,"service_management_framework"),e[0]=v,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=m}else s=e[3],m=e[4];const g=m;let r,f;e[8]===Symbol.for("react.memo_cache_sentinel")?(r=["Yes","No"],f=new Map([[r[0],"True"],[r[1],"False"]]),e[8]=r,e[9]=f):(r=e[8],f=e[9]);const Y=f;let a;e[10]!==N?(a=[...N],e[10]=N,e[11]=a):a=e[11];let l;e[12]!==w?(l=w.values(),e[12]=w,e[13]=l):l=e[13];let i;e[14]!==l?(i=[...l],e[14]=l,e[15]=i):i=e[15];let o;e[16]!==a||e[17]!==i?(o={availableYears:a,availableNrens:i},e[16]=a,e[17]=i,e[18]=o):o=e[18];let p;e[19]!==t||e[20]!==c||e[21]!==o?(p=h.jsx(C,{filterOptions:o,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[19]=t,e[20]=c,e[21]=o,e[22]=p):p=e[22];const x=p;let n;e[23]!==g?(n=h.jsx(D,{children:h.jsx(R,{columns:r,columnLookup:Y,dataLookup:g})}),e[23]=g,e[24]=n):n=e[24];let d;return e[25]!==x||e[26]!==s||e[27]!==n?(d=h.jsx(P,{title:j["service-management-framework"],description:`The chart below shows which NRENs operate a formal service management framework +import{c as b,r as F,F as S,j as h,t as j,S as _}from"./index.js";import{u as y,g as E,D as P,F as C,f as D}from"./useData-CYCBVZdC.js";import{P as R}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function B(){const e=b.c(29),{filterSelection:t,setFilterSelection:c}=F.useContext(S),{data:v,years:N,nrens:w}=y("/api/service-management",c);let s,m;if(e[0]!==v||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let u;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(u=k=>t.selectedYears.includes(k.year)&&t.selectedNrens.includes(k.nren)&&k.service_management_framework!==null,e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=u):u=e[7],s=v.filter(u),m=E(s,"service_management_framework"),e[0]=v,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=m}else s=e[3],m=e[4];const g=m;let r,f;e[8]===Symbol.for("react.memo_cache_sentinel")?(r=["Yes","No"],f=new Map([[r[0],"True"],[r[1],"False"]]),e[8]=r,e[9]=f):(r=e[8],f=e[9]);const Y=f;let a;e[10]!==N?(a=[...N],e[10]=N,e[11]=a):a=e[11];let l;e[12]!==w?(l=w.values(),e[12]=w,e[13]=l):l=e[13];let i;e[14]!==l?(i=[...l],e[14]=l,e[15]=i):i=e[15];let o;e[16]!==a||e[17]!==i?(o={availableYears:a,availableNrens:i},e[16]=a,e[17]=i,e[18]=o):o=e[18];let p;e[19]!==t||e[20]!==c||e[21]!==o?(p=h.jsx(C,{filterOptions:o,filterSelection:t,setFilterSelection:c,coloredYears:!0}),e[19]=t,e[20]=c,e[21]=o,e[22]=p):p=e[22];const x=p;let n;e[23]!==g?(n=h.jsx(D,{children:h.jsx(R,{columns:r,columnLookup:Y,dataLookup:g})}),e[23]=g,e[24]=n):n=e[24];let d;return e[25]!==x||e[26]!==s||e[27]!==n?(d=h.jsx(P,{title:j["service-management-framework"],description:`The chart below shows which NRENs operate a formal service management framework for all of their services. NRENs which have never answered this question cannot be selected.`,category:_.Policy,filter:x,data:s,filename:"service_management_framework",children:n}),e[25]=x,e[26]=s,e[27]=n,e[28]=d):d=e[28],d}export{B as default}; diff --git a/compendium_v2/static/Services-5TAXBWqD.js b/compendium_v2/static/Services-fP_6uX0f.js similarity index 98% rename from compendium_v2/static/Services-5TAXBWqD.js rename to compendium_v2/static/Services-fP_6uX0f.js index bed80b50..c44d5ee3 100644 --- a/compendium_v2/static/Services-5TAXBWqD.js +++ b/compendium_v2/static/Services-fP_6uX0f.js @@ -1,4 +1,4 @@ -import{$ as se,c as U,j as s,r as ie,F as re,a0 as g,S as ae,t as N}from"./index.js";import{u as oe,g as le,F as ce,D as ne,f as de}from"./useData-Ct8E3VVL.js";import{T as me}from"./Table-ClWM2_rS.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";function Q(v){return se({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"m10 15.586-3.293-3.293-1.414 1.414L10 18.414l9.707-9.707-1.414-1.414z"},child:[]}]})(v)}function pe(v){const e=U.c(9),{year:i,active:t,serviceInfo:l,tickServiceIndex:u,current:a}=v;let r="No additional information available";if(l!==void 0){const x=l.service_name;let n=l.product_name,d=l.official_description,m=l.additional_information;(n!=""||d!=""||m!="")&&(n=n||"N/A",d=d||"N/A",m=m||"N/A",r=x+` +import{$ as se,c as U,j as s,r as ie,F as re,a0 as g,S as ae,t as N}from"./index.js";import{u as oe,g as le,F as ce,D as ne,f as de}from"./useData-CYCBVZdC.js";import{T as me}from"./Table-ClWM2_rS.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";function Q(v){return se({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"m10 15.586-3.293-3.293-1.414 1.414L10 18.414l9.707-9.707-1.414-1.414z"},child:[]}]})(v)}function pe(v){const e=U.c(9),{year:i,active:t,serviceInfo:l,tickServiceIndex:u,current:a}=v;let r="No additional information available";if(l!==void 0){const x=l.service_name;let n=l.product_name,d=l.official_description,m=l.additional_information;(n!=""||d!=""||m!="")&&(n=n||"N/A",d=d||"N/A",m=m||"N/A",r=x+` `+n+` Description: `+d+` diff --git a/compendium_v2/static/ServicesOffered-BQGRxlwg.js b/compendium_v2/static/ServicesOffered-C8SRGlPW.js similarity index 97% rename from compendium_v2/static/ServicesOffered-BQGRxlwg.js rename to compendium_v2/static/ServicesOffered-C8SRGlPW.js index 13b94184..10e6367e 100644 --- a/compendium_v2/static/ServicesOffered-BQGRxlwg.js +++ b/compendium_v2/static/ServicesOffered-C8SRGlPW.js @@ -1 +1 @@ -import{c as b,r as w,F as j,j as c,t as k,S as C,U as E}from"./index.js";import{u as Y,r as F,D as I,F as P,f as R}from"./useData-Ct8E3VVL.js";import{S as D}from"./ScrollableMatrix-Dxr22l4i.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function z(){const e=b.c(29),{filterSelection:t,setFilterSelection:n}=w.useContext(j),{data:h,years:g,nrens:v}=Y("/api/services-offered",n);let s,f;if(e[0]!==t.selectedNrens||e[1]!==t.selectedYears||e[2]!==h){let y;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(y=S=>t.selectedYears.includes(S.year)&&t.selectedNrens.includes(S.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=y):y=e[7],s=h.filter(y),f=F(s,["service_category"],"user_category"),e[0]=t.selectedNrens,e[1]=t.selectedYears,e[2]=h,e[3]=s,e[4]=f}else s=e[3],f=e[4];const x=f;let r;e[8]!==g?(r=[...g],e[8]=g,e[9]=r):r=e[9];let i;e[10]!==v?(i=v.values(),e[10]=v,e[11]=i):i=e[11];let o;e[12]!==i?(o=[...i],e[12]=i,e[13]=o):o=e[13];let a;e[14]!==r||e[15]!==o?(a={availableYears:r,availableNrens:o},e[14]=r,e[15]=o,e[16]=a):a=e[16];let d;e[17]!==t||e[18]!==n||e[19]!==a?(d=c.jsx(P,{filterOptions:a,filterSelection:t,setFilterSelection:n}),e[17]=t,e[18]=n,e[19]=a,e[20]=d):d=e[20];const N=d;let p;e[21]===Symbol.for("react.memo_cache_sentinel")?(p={"Identity/T&I":"identity",Multimedia:"multimedia","Professional services":"professional_services","Network services":"network_services",Collaboration:"collaboration",Security:"security","Storage and Hosting":"storage_and_hosting","ISP support":"isp_support"},e[21]=p):p=e[21];const _=p;let u;e[22]===Symbol.for("react.memo_cache_sentinel")?(u=c.jsx("span",{children:"The table below shows the different types of users served by NRENs. Selecting the institution type will expand the detail to show the categories of services offered by NRENs, with a tick indicating that the NREN offers a specific category of service to the type of user."}),e[22]=u):u=e[22];let l;e[23]!==x?(l=c.jsx(R,{children:c.jsx(D,{dataLookup:x,rowInfo:_,categoryLookup:E,isTickIcon:!0})}),e[23]=x,e[24]=l):l=e[24];let m;return e[25]!==N||e[26]!==s||e[27]!==l?(m=c.jsx(I,{title:k["services-offered"],description:u,category:C.Policy,filter:N,data:s,filename:"nren_services_offered",children:l}),e[25]=N,e[26]=s,e[27]=l,e[28]=m):m=e[28],m}export{z as default}; +import{c as b,r as w,F as j,j as c,t as k,S as C,U as E}from"./index.js";import{u as Y,r as F,D as I,F as P,f as R}from"./useData-CYCBVZdC.js";import{S as D}from"./ScrollableMatrix-Dxr22l4i.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function z(){const e=b.c(29),{filterSelection:t,setFilterSelection:n}=w.useContext(j),{data:h,years:g,nrens:v}=Y("/api/services-offered",n);let s,f;if(e[0]!==t.selectedNrens||e[1]!==t.selectedYears||e[2]!==h){let y;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(y=S=>t.selectedYears.includes(S.year)&&t.selectedNrens.includes(S.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=y):y=e[7],s=h.filter(y),f=F(s,["service_category"],"user_category"),e[0]=t.selectedNrens,e[1]=t.selectedYears,e[2]=h,e[3]=s,e[4]=f}else s=e[3],f=e[4];const x=f;let r;e[8]!==g?(r=[...g],e[8]=g,e[9]=r):r=e[9];let i;e[10]!==v?(i=v.values(),e[10]=v,e[11]=i):i=e[11];let o;e[12]!==i?(o=[...i],e[12]=i,e[13]=o):o=e[13];let a;e[14]!==r||e[15]!==o?(a={availableYears:r,availableNrens:o},e[14]=r,e[15]=o,e[16]=a):a=e[16];let d;e[17]!==t||e[18]!==n||e[19]!==a?(d=c.jsx(P,{filterOptions:a,filterSelection:t,setFilterSelection:n}),e[17]=t,e[18]=n,e[19]=a,e[20]=d):d=e[20];const N=d;let p;e[21]===Symbol.for("react.memo_cache_sentinel")?(p={"Identity/T&I":"identity",Multimedia:"multimedia","Professional services":"professional_services","Network services":"network_services",Collaboration:"collaboration",Security:"security","Storage and Hosting":"storage_and_hosting","ISP support":"isp_support"},e[21]=p):p=e[21];const _=p;let u;e[22]===Symbol.for("react.memo_cache_sentinel")?(u=c.jsx("span",{children:"The table below shows the different types of users served by NRENs. Selecting the institution type will expand the detail to show the categories of services offered by NRENs, with a tick indicating that the NREN offers a specific category of service to the type of user."}),e[22]=u):u=e[22];let l;e[23]!==x?(l=c.jsx(R,{children:c.jsx(D,{dataLookup:x,rowInfo:_,categoryLookup:E,isTickIcon:!0})}),e[23]=x,e[24]=l):l=e[24];let m;return e[25]!==N||e[26]!==s||e[27]!==l?(m=c.jsx(I,{title:k["services-offered"],description:u,category:C.Policy,filter:N,data:s,filename:"nren_services_offered",children:l}),e[25]=N,e[26]=s,e[27]=l,e[28]=m):m=e[28],m}export{z as default}; diff --git a/compendium_v2/static/SiemVendors-Ba9ZMN9z.js b/compendium_v2/static/SiemVendors-kLcSDwOx.js similarity index 93% rename from compendium_v2/static/SiemVendors-Ba9ZMN9z.js rename to compendium_v2/static/SiemVendors-kLcSDwOx.js index daf0e05b..8421eb05 100644 --- a/compendium_v2/static/SiemVendors-Ba9ZMN9z.js +++ b/compendium_v2/static/SiemVendors-kLcSDwOx.js @@ -1 +1 @@ -import{c as Y,r as j,F as E,j as u,t as _,S as g}from"./index.js";import{u as k,g as C,D as F,F as D,f as P}from"./useData-Ct8E3VVL.js";import{P as R}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function $(){const e=Y.c(28),{filterSelection:t,setFilterSelection:n}=j.useContext(E),{data:x,years:N,nrens:S}=k("/api/siem-vendors",n);let s,c;if(e[0]!==x||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let p;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(p=v=>t.selectedYears.includes(v.year)&&t.selectedNrens.includes(v.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=p):p=e[7],s=x.filter(p),c=C(s,"vendor_names"),e[0]=x,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=c}else s=e[3],c=e[4];const b=c;let r;e[8]!==N?(r=[...N],e[8]=N,e[9]=r):r=e[9];let l;e[10]!==S?(l=S.values(),e[10]=S,e[11]=l):l=e[11];let a;e[12]!==l?(a=[...l],e[12]=l,e[13]=a):a=e[13];let i;e[14]!==r||e[15]!==a?(i={availableYears:r,availableNrens:a},e[14]=r,e[15]=a,e[16]=i):i=e[16];let d;e[17]!==t||e[18]!==n||e[19]!==i?(d=u.jsx(D,{filterOptions:i,filterSelection:t,setFilterSelection:n,coloredYears:!0}),e[17]=t,e[18]=n,e[19]=i,e[20]=d):d=e[20];const h=d;let m;e[21]===Symbol.for("react.memo_cache_sentinel")?(m=["Splunk","IBM Qradar","Exabeam","LogRythm","Securonix"],e[21]=m):m=e[21];const y=m;let o;e[22]!==b?(o=u.jsx(P,{children:u.jsx(R,{columns:y,dataLookup:b,circle:!0})}),e[22]=b,e[23]=o):o=e[23];let f;return e[24]!==h||e[25]!==s||e[26]!==o?(f=u.jsx(F,{title:_["siem-vendors"],description:"The table below shows the kinds of vendors of SIEM/SOC systems used by NRENs.",category:g.Network,filter:h,data:s,filename:"siem_vendor_nrens_per_year",children:o}),e[24]=h,e[25]=s,e[26]=o,e[27]=f):f=e[27],f}export{$ as default}; +import{c as Y,r as j,F as E,j as u,t as _,S as g}from"./index.js";import{u as k,g as C,D as F,F as D,f as P}from"./useData-CYCBVZdC.js";import{P as R}from"./PillTable-Cnj0nnFy.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./ColorPill-CXvWIfWz.js";import"./Table-ClWM2_rS.js";function $(){const e=Y.c(28),{filterSelection:t,setFilterSelection:n}=j.useContext(E),{data:x,years:N,nrens:S}=k("/api/siem-vendors",n);let s,c;if(e[0]!==x||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let p;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(p=v=>t.selectedYears.includes(v.year)&&t.selectedNrens.includes(v.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=p):p=e[7],s=x.filter(p),c=C(s,"vendor_names"),e[0]=x,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=s,e[4]=c}else s=e[3],c=e[4];const b=c;let r;e[8]!==N?(r=[...N],e[8]=N,e[9]=r):r=e[9];let l;e[10]!==S?(l=S.values(),e[10]=S,e[11]=l):l=e[11];let a;e[12]!==l?(a=[...l],e[12]=l,e[13]=a):a=e[13];let i;e[14]!==r||e[15]!==a?(i={availableYears:r,availableNrens:a},e[14]=r,e[15]=a,e[16]=i):i=e[16];let d;e[17]!==t||e[18]!==n||e[19]!==i?(d=u.jsx(D,{filterOptions:i,filterSelection:t,setFilterSelection:n,coloredYears:!0}),e[17]=t,e[18]=n,e[19]=i,e[20]=d):d=e[20];const h=d;let m;e[21]===Symbol.for("react.memo_cache_sentinel")?(m=["Splunk","IBM Qradar","Exabeam","LogRythm","Securonix"],e[21]=m):m=e[21];const y=m;let o;e[22]!==b?(o=u.jsx(P,{children:u.jsx(R,{columns:y,dataLookup:b,circle:!0})}),e[22]=b,e[23]=o):o=e[23];let f;return e[24]!==h||e[25]!==s||e[26]!==o?(f=u.jsx(F,{title:_["siem-vendors"],description:"The table below shows the kinds of vendors of SIEM/SOC systems used by NRENs.",category:g.Network,filter:h,data:s,filename:"siem_vendor_nrens_per_year",children:o}),e[24]=h,e[25]=s,e[26]=o,e[27]=f):f=e[27],f}export{$ as default}; diff --git a/compendium_v2/static/StaffGraph-DXD4Tgbx.js b/compendium_v2/static/StaffGraph-HNfHQ0pm.js similarity index 94% rename from compendium_v2/static/StaffGraph-DXD4Tgbx.js rename to compendium_v2/static/StaffGraph-HNfHQ0pm.js index 48c0d229..4b938ea0 100644 --- a/compendium_v2/static/StaffGraph-DXD4Tgbx.js +++ b/compendium_v2/static/StaffGraph-HNfHQ0pm.js @@ -1,4 +1,4 @@ -import{c as $,r as B,F as A,j as x,S as M,t as R}from"./index.js";import{B as P}from"./index-C4Nuqrw6.js";import{C as g,a as q,L as W,B as G,p as V,c as z,d as H,u as J,l as K,D as Q,F as U}from"./useData-Ct8E3VVL.js";import{h as X,W as Z}from"./HTMLLegendPlugin-sjJV-MGB.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";g.register(q,W,G,V,z,H);const I={maintainAspectRatio:!1,animation:{duration:0},plugins:{htmlLegend:{containerIDs:["legendtop","legendbottom"]},legend:{display:!1},tooltip:{callbacks:{label:function(t){let e=t.dataset.label||"";return t.parsed.x!==null&&(e+=`: ${t.parsed.x}%`),e}}}},scales:{x:{position:"top",stacked:!0,ticks:{callback:(t,e)=>`${e*10}%`}},x2:{ticks:{callback:t=>typeof t=="number"?`${t}%`:t},grid:{drawOnChartArea:!1},afterDataLimits:function(t){const e=Object.keys(g.instances);let r=-999999,s=999999;for(const n of e)g.instances[n]&&t.chart.scales.x2&&(s=Math.min(g.instances[n].scales.x.min,s),r=Math.max(g.instances[n].scales.x.max,r));t.chart.scales.x2.options.min=s,t.chart.scales.x2.options.max=r,t.chart.scales.x2.min=s,t.chart.scales.x2.max=r}},y:{stacked:!0,ticks:{autoSkip:!1}}},indexAxis:"y"};function ce(t){const e=$.c(39),{roles:r}=t,s=r===void 0?!1:r;let n;e[0]!==s?(n=function(i){return s&&i.technical_fte>0&&i.non_technical_fte>0||!s&&i.permanent_fte>0&&i.subcontracted_fte>0},e[0]=s,e[1]=n):n=e[1];const Y=n,{filterSelection:a,setFilterSelection:y}=B.useContext(A),{data:k,years:S,nrens:w}=J("/api/staff",y,Y);let l,b;if(e[2]!==k||e[3]!==a.selectedNrens||e[4]!==a.selectedYears||e[5]!==s){let u;e[8]!==a.selectedNrens||e[9]!==a.selectedYears?(u=i=>a.selectedYears.includes(i.year)&&a.selectedNrens.includes(i.nren),e[8]=a.selectedNrens,e[9]=a.selectedYears,e[10]=u):u=e[10],l=k.filter(u),b=K(l,s,a.selectedYears[0]),e[2]=k,e[3]=a.selectedNrens,e[4]=a.selectedYears,e[5]=s,e[6]=l,e[7]=b}else l=e[6],b=e[7];const F=b;let c;e[11]!==S?(c=[...S],e[11]=S,e[12]=c):c=e[12];let o;e[13]!==w?(o=w.values(),e[13]=w,e[14]=o):o=e[14];let f;e[15]!==o?(f=[...o],e[15]=o,e[16]=f):f=e[16];let d;e[17]!==c||e[18]!==f?(d={availableYears:c,availableNrens:f},e[17]=c,e[18]=f,e[19]=d):d=e[19];let N;e[20]!==a||e[21]!==y||e[22]!==d?(N=x.jsx(U,{max1year:!0,filterOptions:d,filterSelection:a,setFilterSelection:y}),e[20]=a,e[21]=y,e[22]=d,e[23]=N):N=e[23];const T=N,L=l.length,O=Math.max(L*1.5,20),v=s?R.roles:R.employment,C=s?`The graph shows division of staff FTEs (Full Time Equivalents) between technical and non-techical role per NREN. +import{c as $,r as B,F as A,j as x,S as M,t as R}from"./index.js";import{B as P}from"./index-BfhfJiKe.js";import{C as g,a as q,L as W,B as G,p as V,c as z,d as H,u as J,l as K,D as Q,F as U}from"./useData-CYCBVZdC.js";import{h as X,W as Z}from"./HTMLLegendPlugin-Cg92GHTT.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";g.register(q,W,G,V,z,H);const I={maintainAspectRatio:!1,animation:{duration:0},plugins:{htmlLegend:{containerIDs:["legendtop","legendbottom"]},legend:{display:!1},tooltip:{callbacks:{label:function(t){let e=t.dataset.label||"";return t.parsed.x!==null&&(e+=`: ${t.parsed.x}%`),e}}}},scales:{x:{position:"top",stacked:!0,ticks:{callback:(t,e)=>`${e*10}%`}},x2:{ticks:{callback:t=>typeof t=="number"?`${t}%`:t},grid:{drawOnChartArea:!1},afterDataLimits:function(t){const e=Object.keys(g.instances);let r=-999999,s=999999;for(const n of e)g.instances[n]&&t.chart.scales.x2&&(s=Math.min(g.instances[n].scales.x.min,s),r=Math.max(g.instances[n].scales.x.max,r));t.chart.scales.x2.options.min=s,t.chart.scales.x2.options.max=r,t.chart.scales.x2.min=s,t.chart.scales.x2.max=r}},y:{stacked:!0,ticks:{autoSkip:!1}}},indexAxis:"y"};function ce(t){const e=$.c(39),{roles:r}=t,s=r===void 0?!1:r;let n;e[0]!==s?(n=function(i){return s&&i.technical_fte>0&&i.non_technical_fte>0||!s&&i.permanent_fte>0&&i.subcontracted_fte>0},e[0]=s,e[1]=n):n=e[1];const Y=n,{filterSelection:a,setFilterSelection:y}=B.useContext(A),{data:k,years:S,nrens:w}=J("/api/staff",y,Y);let l,b;if(e[2]!==k||e[3]!==a.selectedNrens||e[4]!==a.selectedYears||e[5]!==s){let u;e[8]!==a.selectedNrens||e[9]!==a.selectedYears?(u=i=>a.selectedYears.includes(i.year)&&a.selectedNrens.includes(i.nren),e[8]=a.selectedNrens,e[9]=a.selectedYears,e[10]=u):u=e[10],l=k.filter(u),b=K(l,s,a.selectedYears[0]),e[2]=k,e[3]=a.selectedNrens,e[4]=a.selectedYears,e[5]=s,e[6]=l,e[7]=b}else l=e[6],b=e[7];const F=b;let c;e[11]!==S?(c=[...S],e[11]=S,e[12]=c):c=e[12];let o;e[13]!==w?(o=w.values(),e[13]=w,e[14]=o):o=e[14];let f;e[15]!==o?(f=[...o],e[15]=o,e[16]=f):f=e[16];let d;e[17]!==c||e[18]!==f?(d={availableYears:c,availableNrens:f},e[17]=c,e[18]=f,e[19]=d):d=e[19];let N;e[20]!==a||e[21]!==y||e[22]!==d?(N=x.jsx(U,{max1year:!0,filterOptions:d,filterSelection:a,setFilterSelection:y}),e[20]=a,e[21]=y,e[22]=d,e[23]=N):N=e[23];const T=N,L=l.length,O=Math.max(L*1.5,20),v=s?R.roles:R.employment,C=s?`The graph shows division of staff FTEs (Full Time Equivalents) between technical and non-techical role per NREN. The exact figures of how many FTEs are dedicated to these two different functional areas can be accessed by downloading the data in either CSV or Excel format`:`The graph shows the percentage of NREN staff who are permanent, and those who are subcontracted. The structures and models of NRENs differ across the community, which is reflected in the types of employment offered. The NRENs are asked to provide the Full Time Equivalents (FTEs) rather absolute numbers of staff.`,j=s?"roles_of_nren_employees":"types_of_employment_for_nrens",D=`${O}rem`;let m;e[24]!==D?(m={height:D},e[24]=D,e[25]=m):m=e[25];let _;e[26]===Symbol.for("react.memo_cache_sentinel")?(_=[X],e[26]=_):_=e[26];let h;e[27]!==F?(h=x.jsx(P,{data:F,options:I,plugins:_}),e[27]=F,e[28]=h):h=e[28];let p;e[29]!==m||e[30]!==h?(p=x.jsx(Z,{children:x.jsx("div",{className:"chart-container",style:m,children:h})}),e[29]=m,e[30]=h,e[31]=p):p=e[31];let E;return e[32]!==C||e[33]!==j||e[34]!==T||e[35]!==l||e[36]!==p||e[37]!==v?(E=x.jsx(Q,{title:v,description:C,category:M.Organisation,filter:T,data:l,filename:j,children:p}),e[32]=C,e[33]=j,e[34]=T,e[35]=l,e[36]=p,e[37]=v,e[38]=E):E=e[38],E}export{ce as default}; diff --git a/compendium_v2/static/StaffGraphAbsolute-A86Vah2E.js b/compendium_v2/static/StaffGraphAbsolute-Bq1qlgS8.js similarity index 90% rename from compendium_v2/static/StaffGraphAbsolute-A86Vah2E.js rename to compendium_v2/static/StaffGraphAbsolute-Bq1qlgS8.js index af2a8031..dac13807 100644 --- a/compendium_v2/static/StaffGraphAbsolute-A86Vah2E.js +++ b/compendium_v2/static/StaffGraphAbsolute-Bq1qlgS8.js @@ -1 +1 @@ -import{c as D,r as Y,F as B,j as d,S as T,t as P}from"./index.js";import{B as A}from"./index-C4Nuqrw6.js";import{C as O,a as q,L,B as $,p as k,c as G,d as M,u as W,m as z,D as H,F as I,f as J}from"./useData-Ct8E3VVL.js";import{p as K}from"./chartjs-plugin-datalabels.esm-BI98Iz1j.js";import{a as Q}from"./charthelpers-DmM6tvdh.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";O.register(q,L,$,k,G,M);function re(){const e=D.c(38),{filterSelection:t,setFilterSelection:a}=Y.useContext(B),{data:b,years:p,nrens:u}=W("/api/staff",a);let i,n,s,g;if(e[0]!==b||e[1]!==t||e[2]!==u||e[3]!==a||e[4]!==p){let E;e[9]!==t.selectedNrens||e[10]!==t.selectedYears?(E=v=>t.selectedYears.includes(v.year)&&t.selectedNrens.includes(v.nren),e[9]=t.selectedNrens,e[10]=t.selectedYears,e[11]=E):E=e[11],s=b.filter(E),n=z(s,t.selectedYears);let c;e[12]!==p?(c=[...p],e[12]=p,e[13]=c):c=e[13];let f;e[14]!==u?(f=u.values(),e[14]=u,e[15]=f):f=e[15];let m;e[16]!==f?(m=[...f],e[16]=f,e[17]=m):m=e[17];let h;e[18]!==c||e[19]!==m?(h={availableYears:c,availableNrens:m},e[18]=c,e[19]=m,e[20]=h):h=e[20];let S;e[21]!==t||e[22]!==a||e[23]!==h?(S=d.jsx(I,{filterOptions:h,filterSelection:t,setFilterSelection:a}),e[21]=t,e[22]=a,e[23]=h,e[24]=S):S=e[24],i=S,g=Array.from(new Set(s.map(U))),e[0]=b,e[1]=t,e[2]=u,e[3]=a,e[4]=p,e[5]=i,e[6]=n,e[7]=s,e[8]=g}else i=e[5],n=e[6],s=e[7],g=e[8];const R=g.length,w=Math.max(R*t.selectedYears.length*1.5+5,50),C=P["employee-count"],F='The graph shows the total number of employees (in FTEs) at each NREN. When filling in the survey, NRENs are asked about the number of staff engaged (whether permanent or subcontracted) in NREN activities. Please note that diversity within the NREN community means that there is not one single definition of what constitutes "NREN activities". Therefore due to differences in how their organisations are arranged, and the relationship, in some cases, with parent organisations, there can be inconsistencies in how NRENs approach this question.';let N;e[25]===Symbol.for("react.memo_cache_sentinel")?(N=Q({tooltipPrefix:"FTEs",title:"Full-Time Equivalents"}),e[25]=N):N=e[25];const j=N,_=`${w}rem`;let r;e[26]!==_?(r={height:_},e[26]=_,e[27]=r):r=e[27];let x;e[28]===Symbol.for("react.memo_cache_sentinel")?(x=[K],e[28]=x):x=e[28];let l;e[29]!==n?(l=d.jsx(A,{data:n,options:j,plugins:x}),e[29]=n,e[30]=l):l=e[30];let o;e[31]!==r||e[32]!==l?(o=d.jsx(J,{children:d.jsx("div",{className:"chart-container",style:r,children:l})}),e[31]=r,e[32]=l,e[33]=o):o=e[33];let y;return e[34]!==i||e[35]!==s||e[36]!==o?(y=d.jsx(H,{title:C,description:F,category:T.Organisation,filter:i,data:s,filename:"number_of_nren_employees",children:o}),e[34]=i,e[35]=s,e[36]=o,e[37]=y):y=e[37],y}function U(e){return e.nren}export{re as default}; +import{c as D,r as Y,F as B,j as d,S as T,t as P}from"./index.js";import{B as A}from"./index-BfhfJiKe.js";import{C as O,a as q,L,B as $,p as k,c as G,d as M,u as W,m as z,D as H,F as I,f as J}from"./useData-CYCBVZdC.js";import{p as K}from"./chartjs-plugin-datalabels.esm-CzQRWEly.js";import{a as Q}from"./charthelpers-CdmocpOu.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";O.register(q,L,$,k,G,M);function re(){const e=D.c(38),{filterSelection:t,setFilterSelection:a}=Y.useContext(B),{data:b,years:p,nrens:u}=W("/api/staff",a);let i,n,s,g;if(e[0]!==b||e[1]!==t||e[2]!==u||e[3]!==a||e[4]!==p){let E;e[9]!==t.selectedNrens||e[10]!==t.selectedYears?(E=v=>t.selectedYears.includes(v.year)&&t.selectedNrens.includes(v.nren),e[9]=t.selectedNrens,e[10]=t.selectedYears,e[11]=E):E=e[11],s=b.filter(E),n=z(s,t.selectedYears);let c;e[12]!==p?(c=[...p],e[12]=p,e[13]=c):c=e[13];let f;e[14]!==u?(f=u.values(),e[14]=u,e[15]=f):f=e[15];let m;e[16]!==f?(m=[...f],e[16]=f,e[17]=m):m=e[17];let h;e[18]!==c||e[19]!==m?(h={availableYears:c,availableNrens:m},e[18]=c,e[19]=m,e[20]=h):h=e[20];let S;e[21]!==t||e[22]!==a||e[23]!==h?(S=d.jsx(I,{filterOptions:h,filterSelection:t,setFilterSelection:a}),e[21]=t,e[22]=a,e[23]=h,e[24]=S):S=e[24],i=S,g=Array.from(new Set(s.map(U))),e[0]=b,e[1]=t,e[2]=u,e[3]=a,e[4]=p,e[5]=i,e[6]=n,e[7]=s,e[8]=g}else i=e[5],n=e[6],s=e[7],g=e[8];const R=g.length,w=Math.max(R*t.selectedYears.length*1.5+5,50),C=P["employee-count"],F='The graph shows the total number of employees (in FTEs) at each NREN. When filling in the survey, NRENs are asked about the number of staff engaged (whether permanent or subcontracted) in NREN activities. Please note that diversity within the NREN community means that there is not one single definition of what constitutes "NREN activities". Therefore due to differences in how their organisations are arranged, and the relationship, in some cases, with parent organisations, there can be inconsistencies in how NRENs approach this question.';let N;e[25]===Symbol.for("react.memo_cache_sentinel")?(N=Q({tooltipPrefix:"FTEs",title:"Full-Time Equivalents"}),e[25]=N):N=e[25];const j=N,_=`${w}rem`;let r;e[26]!==_?(r={height:_},e[26]=_,e[27]=r):r=e[27];let x;e[28]===Symbol.for("react.memo_cache_sentinel")?(x=[K],e[28]=x):x=e[28];let l;e[29]!==n?(l=d.jsx(A,{data:n,options:j,plugins:x}),e[29]=n,e[30]=l):l=e[30];let o;e[31]!==r||e[32]!==l?(o=d.jsx(J,{children:d.jsx("div",{className:"chart-container",style:r,children:l})}),e[31]=r,e[32]=l,e[33]=o):o=e[33];let y;return e[34]!==i||e[35]!==s||e[36]!==o?(y=d.jsx(H,{title:C,description:F,category:T.Organisation,filter:i,data:s,filename:"number_of_nren_employees",children:o}),e[34]=i,e[35]=s,e[36]=o,e[37]=y):y=e[37],y}function U(e){return e.nren}export{re as default}; diff --git a/compendium_v2/static/SubOrganisation-ldENjIwX.js b/compendium_v2/static/SubOrganisation-CXMlieI0.js similarity index 96% rename from compendium_v2/static/SubOrganisation-ldENjIwX.js rename to compendium_v2/static/SubOrganisation-CXMlieI0.js index 429f596e..ee538ce0 100644 --- a/compendium_v2/static/SubOrganisation-ldENjIwX.js +++ b/compendium_v2/static/SubOrganisation-CXMlieI0.js @@ -1 +1 @@ -import{c as Y,r as y,F as C,j as p,t as S,S as j}from"./index.js";import{u as v,h as F,i as E,D as R,F as T,f as O}from"./useData-Ct8E3VVL.js";import{N as P}from"./NrenYearTable-iS8aEX43.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function A(){const e=Y.c(27),{filterSelection:t,setFilterSelection:s}=y.useContext(C),{data:r,years:g,nrens:h}=v("/api/sub-organizations",s);let a,d;if(e[0]!==r||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let u;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(u=b=>t.selectedYears.includes(b.year)&&t.selectedNrens.includes(b.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=u):u=e[7],a=r.filter(u);const D=F(a);d=E(D,$),e[0]=r,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=a,e[4]=d}else a=e[3],d=e[4];const x=d;let n;e[8]!==g?(n=[...g],e[8]=g,e[9]=n):n=e[9];let o;e[10]!==h?(o=h.values(),e[10]=h,e[11]=o):o=e[11];let i;e[12]!==o?(i=[...o],e[12]=o,e[13]=i):i=e[13];let l;e[14]!==n||e[15]!==i?(l={availableYears:n,availableNrens:i},e[14]=n,e[15]=i,e[16]=l):l=e[16];let f;e[17]!==t||e[18]!==s||e[19]!==l?(f=p.jsx(T,{filterOptions:l,filterSelection:t,setFilterSelection:s}),e[17]=t,e[18]=s,e[19]=l,e[20]=f):f=e[20];const N=f;let c;e[21]!==x?(c=p.jsx(O,{children:p.jsx(P,{data:x,columnTitle:"Suborganisation and Role",dottedBorder:!0})}),e[21]=x,e[22]=c):c=e[22];let m;return e[23]!==N||e[24]!==a||e[25]!==c?(m=p.jsx(R,{title:S.suborganisations,description:"NRENs are asked whether they have any sub-organisations, and to give the name and role of these organisations. These organisations can include HPC centres or IDC federations, amongst many others.",category:j.Organisation,filter:N,data:a,filename:"nren_suborganisations",children:c}),e[23]=N,e[24]=a,e[25]=c,e[26]=m):m=e[26],m}function $(e,t){for(const s of t.sort(k)){const r=`${s.name} (${s.role})`;e[r]=r}}function k(e,t){return e.name.localeCompare(t.name)}export{A as default}; +import{c as Y,r as y,F as C,j as p,t as S,S as j}from"./index.js";import{u as v,h as F,i as E,D as R,F as T,f as O}from"./useData-CYCBVZdC.js";import{N as P}from"./NrenYearTable-RI8l8hwG.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function A(){const e=Y.c(27),{filterSelection:t,setFilterSelection:s}=y.useContext(C),{data:r,years:g,nrens:h}=v("/api/sub-organizations",s);let a,d;if(e[0]!==r||e[1]!==t.selectedNrens||e[2]!==t.selectedYears){let u;e[5]!==t.selectedNrens||e[6]!==t.selectedYears?(u=b=>t.selectedYears.includes(b.year)&&t.selectedNrens.includes(b.nren),e[5]=t.selectedNrens,e[6]=t.selectedYears,e[7]=u):u=e[7],a=r.filter(u);const D=F(a);d=E(D,$),e[0]=r,e[1]=t.selectedNrens,e[2]=t.selectedYears,e[3]=a,e[4]=d}else a=e[3],d=e[4];const x=d;let n;e[8]!==g?(n=[...g],e[8]=g,e[9]=n):n=e[9];let o;e[10]!==h?(o=h.values(),e[10]=h,e[11]=o):o=e[11];let i;e[12]!==o?(i=[...o],e[12]=o,e[13]=i):i=e[13];let l;e[14]!==n||e[15]!==i?(l={availableYears:n,availableNrens:i},e[14]=n,e[15]=i,e[16]=l):l=e[16];let f;e[17]!==t||e[18]!==s||e[19]!==l?(f=p.jsx(T,{filterOptions:l,filterSelection:t,setFilterSelection:s}),e[17]=t,e[18]=s,e[19]=l,e[20]=f):f=e[20];const N=f;let c;e[21]!==x?(c=p.jsx(O,{children:p.jsx(P,{data:x,columnTitle:"Suborganisation and Role",dottedBorder:!0})}),e[21]=x,e[22]=c):c=e[22];let m;return e[23]!==N||e[24]!==a||e[25]!==c?(m=p.jsx(R,{title:S.suborganisations,description:"NRENs are asked whether they have any sub-organisations, and to give the name and role of these organisations. These organisations can include HPC centres or IDC federations, amongst many others.",category:j.Organisation,filter:N,data:a,filename:"nren_suborganisations",children:c}),e[23]=N,e[24]=a,e[25]=c,e[26]=m):m=e[26],m}function $(e,t){for(const s of t.sort(k)){const r=`${s.name} (${s.role})`;e[r]=r}}function k(e,t){return e.name.localeCompare(t.name)}export{A as default}; diff --git a/compendium_v2/static/TrafficRatio-p8ISc0n1.js b/compendium_v2/static/TrafficRatio-BkOFtVPl.js similarity index 93% rename from compendium_v2/static/TrafficRatio-p8ISc0n1.js rename to compendium_v2/static/TrafficRatio-BkOFtVPl.js index c46e6220..a7853151 100644 --- a/compendium_v2/static/TrafficRatio-p8ISc0n1.js +++ b/compendium_v2/static/TrafficRatio-BkOFtVPl.js @@ -1 +1 @@ -import{c as C,r as L,F as E,j as x,S as F,t as Y}from"./index.js";import{B as $}from"./index-C4Nuqrw6.js";import{C as g,a as v,L as A,B,p as O,c as M,d as P,u as T,N as W,D as q,F as z}from"./useData-Ct8E3VVL.js";import{h as G,W as H}from"./HTMLLegendPlugin-sjJV-MGB.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";g.register(v,A,B,O,M,P);const J={maintainAspectRatio:!1,animation:{duration:0},plugins:{htmlLegend:{containerIDs:["legendtop","legendbottom"]},legend:{display:!1},tooltip:{callbacks:{label:function(e){let t=e.dataset.label||"";return e.parsed.x!==null&&(t+=`: ${e.parsed.x}%`),t}}}},scales:{x:{position:"top",stacked:!0,ticks:{callback:(e,t)=>`${t*10}%`}},x2:{ticks:{callback:e=>typeof e=="number"?`${e}%`:e},grid:{drawOnChartArea:!1},afterDataLimits:function(e){const t=Object.keys(g.instances);let a=-999999,i=999999;for(const s of t)g.instances[s]&&e.chart.scales.x2&&(i=Math.min(g.instances[s].scales.x.min,i),a=Math.max(g.instances[s].scales.x.max,a));e.chart.scales.x2.options.min=i,e.chart.scales.x2.options.max=a,e.chart.scales.x2.min=i,e.chart.scales.x2.max=a}},y:{stacked:!0,ticks:{autoSkip:!1}}},indexAxis:"y"};function ie(){const e=C.c(37),{filterSelection:t,setFilterSelection:a}=L.useContext(E),{data:i,years:s,nrens:n}=T("/api/traffic-ratio",a);let l,r,y,c;if(e[0]!==t||e[1]!==n||e[2]!==a||e[3]!==i||e[4]!==s){let b;e[9]!==t.selectedNrens||e[10]!==t.selectedYears?(b=S=>t.selectedYears.includes(S.year)&&t.selectedNrens.includes(S.nren),e[9]=t.selectedNrens,e[10]=t.selectedYears,e[11]=b):b=e[11],r=i.filter(b),c=W(r,t.selectedYears[0]);let d;e[12]!==s?(d=[...s],e[12]=s,e[13]=d):d=e[13];let p;e[14]!==n?(p=n.values(),e[14]=n,e[15]=p):p=e[15];let u;e[16]!==p?(u=[...p],e[16]=p,e[17]=u):u=e[17];let h;e[18]!==d||e[19]!==u?(h={availableYears:d,availableNrens:u},e[18]=d,e[19]=u,e[20]=h):h=e[20];let _;e[21]!==t||e[22]!==a||e[23]!==h?(_=x.jsx(z,{max1year:!0,filterOptions:h,filterSelection:t,setFilterSelection:a}),e[21]=t,e[22]=a,e[23]=h,e[24]=_):_=e[24],l=_,y=Array.from(new Set(r.map(Q))).map(S=>n.get(S)).filter(K),e[0]=t,e[1]=n,e[2]=a,e[3]=i,e[4]=s,e[5]=l,e[6]=r,e[7]=y,e[8]=c}else l=e[5],r=e[6],y=e[7],c=e[8];const j=y.length,R=Math.max(j*1.5,20),w=Y["traffic-ratio"],D=`${R}rem`;let o;e[25]!==D?(o={height:D},e[25]=D,e[26]=o):o=e[26];let k;e[27]===Symbol.for("react.memo_cache_sentinel")?(k=[G],e[27]=k):k=e[27];let f;e[28]!==c?(f=x.jsx($,{data:c,options:J,plugins:k}),e[28]=c,e[29]=f):f=e[29];let m;e[30]!==o||e[31]!==f?(m=x.jsx(H,{children:x.jsx("div",{className:"chart-container",style:o,children:f})}),e[30]=o,e[31]=f,e[32]=m):m=e[32];let N;return e[33]!==l||e[34]!==r||e[35]!==m?(N=x.jsx(q,{title:w,description:"The graph shows the ratio of commodity versus research and education traffic in NREN networks",category:F.Network,filter:l,data:r,filename:"types_of_traffic_in_nren_networks",children:m}),e[33]=l,e[34]=r,e[35]=m,e[36]=N):N=e[36],N}function K(e){return!!e}function Q(e){return e.nren}export{ie as default}; +import{c as C,r as L,F as E,j as x,S as F,t as Y}from"./index.js";import{B as $}from"./index-BfhfJiKe.js";import{C as g,a as v,L as A,B,p as O,c as M,d as P,u as T,N as W,D as q,F as z}from"./useData-CYCBVZdC.js";import{h as G,W as H}from"./HTMLLegendPlugin-Cg92GHTT.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";g.register(v,A,B,O,M,P);const J={maintainAspectRatio:!1,animation:{duration:0},plugins:{htmlLegend:{containerIDs:["legendtop","legendbottom"]},legend:{display:!1},tooltip:{callbacks:{label:function(e){let t=e.dataset.label||"";return e.parsed.x!==null&&(t+=`: ${e.parsed.x}%`),t}}}},scales:{x:{position:"top",stacked:!0,ticks:{callback:(e,t)=>`${t*10}%`}},x2:{ticks:{callback:e=>typeof e=="number"?`${e}%`:e},grid:{drawOnChartArea:!1},afterDataLimits:function(e){const t=Object.keys(g.instances);let a=-999999,i=999999;for(const s of t)g.instances[s]&&e.chart.scales.x2&&(i=Math.min(g.instances[s].scales.x.min,i),a=Math.max(g.instances[s].scales.x.max,a));e.chart.scales.x2.options.min=i,e.chart.scales.x2.options.max=a,e.chart.scales.x2.min=i,e.chart.scales.x2.max=a}},y:{stacked:!0,ticks:{autoSkip:!1}}},indexAxis:"y"};function ie(){const e=C.c(37),{filterSelection:t,setFilterSelection:a}=L.useContext(E),{data:i,years:s,nrens:n}=T("/api/traffic-ratio",a);let l,r,y,c;if(e[0]!==t||e[1]!==n||e[2]!==a||e[3]!==i||e[4]!==s){let b;e[9]!==t.selectedNrens||e[10]!==t.selectedYears?(b=S=>t.selectedYears.includes(S.year)&&t.selectedNrens.includes(S.nren),e[9]=t.selectedNrens,e[10]=t.selectedYears,e[11]=b):b=e[11],r=i.filter(b),c=W(r,t.selectedYears[0]);let d;e[12]!==s?(d=[...s],e[12]=s,e[13]=d):d=e[13];let p;e[14]!==n?(p=n.values(),e[14]=n,e[15]=p):p=e[15];let u;e[16]!==p?(u=[...p],e[16]=p,e[17]=u):u=e[17];let h;e[18]!==d||e[19]!==u?(h={availableYears:d,availableNrens:u},e[18]=d,e[19]=u,e[20]=h):h=e[20];let _;e[21]!==t||e[22]!==a||e[23]!==h?(_=x.jsx(z,{max1year:!0,filterOptions:h,filterSelection:t,setFilterSelection:a}),e[21]=t,e[22]=a,e[23]=h,e[24]=_):_=e[24],l=_,y=Array.from(new Set(r.map(Q))).map(S=>n.get(S)).filter(K),e[0]=t,e[1]=n,e[2]=a,e[3]=i,e[4]=s,e[5]=l,e[6]=r,e[7]=y,e[8]=c}else l=e[5],r=e[6],y=e[7],c=e[8];const j=y.length,R=Math.max(j*1.5,20),w=Y["traffic-ratio"],D=`${R}rem`;let o;e[25]!==D?(o={height:D},e[25]=D,e[26]=o):o=e[26];let k;e[27]===Symbol.for("react.memo_cache_sentinel")?(k=[G],e[27]=k):k=e[27];let f;e[28]!==c?(f=x.jsx($,{data:c,options:J,plugins:k}),e[28]=c,e[29]=f):f=e[29];let m;e[30]!==o||e[31]!==f?(m=x.jsx(H,{children:x.jsx("div",{className:"chart-container",style:o,children:f})}),e[30]=o,e[31]=f,e[32]=m):m=e[32];let N;return e[33]!==l||e[34]!==r||e[35]!==m?(N=x.jsx(q,{title:w,description:"The graph shows the ratio of commodity versus research and education traffic in NREN networks",category:F.Network,filter:l,data:r,filename:"types_of_traffic_in_nren_networks",children:m}),e[33]=l,e[34]=r,e[35]=m,e[36]=N):N=e[36],N}function K(e){return!!e}function Q(e){return e.nren}export{ie as default}; diff --git a/compendium_v2/static/TrafficUrl-Cupk7MWX.js b/compendium_v2/static/TrafficUrl-ppIreNuJ.js similarity index 92% rename from compendium_v2/static/TrafficUrl-Cupk7MWX.js rename to compendium_v2/static/TrafficUrl-ppIreNuJ.js index b356aa76..4ccd3eaa 100644 --- a/compendium_v2/static/TrafficUrl-Cupk7MWX.js +++ b/compendium_v2/static/TrafficUrl-ppIreNuJ.js @@ -1 +1 @@ -import{c as j,r as k,F as S,j as p,t as _,S as g}from"./index.js";import{u as v,q as y,k as L,i as R,D as T,F,f as U,s as w}from"./useData-Ct8E3VVL.js";import{N as C}from"./NrenYearTable-iS8aEX43.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function G(){const e=j.c(21),{filterSelection:t,setFilterSelection:s}=k.useContext(S),{data:r,nrens:n}=v("/api/traffic-stats",s);let a,c;if(e[0]!==r||e[1]!==t.selectedNrens){const D=r?y(r):[];let m;e[4]!==t.selectedNrens?(m=h=>t.selectedNrens.includes(h.nren),e[4]=t.selectedNrens,e[5]=m):m=e[5],a=D.filter(m);const b=L(a);c=R(b,E),e[0]=r,e[1]=t.selectedNrens,e[2]=a,e[3]=c}else a=e[2],c=e[3];const x=c;let f;e[6]===Symbol.for("react.memo_cache_sentinel")?(f=[],e[6]=f):f=e[6];let i;e[7]!==n?(i=n.values(),e[7]=n,e[8]=i):i=e[8];let l;e[9]!==i?(l={availableYears:f,availableNrens:[...i]},e[9]=i,e[10]=l):l=e[10];let u;e[11]!==t||e[12]!==s||e[13]!==l?(u=p.jsx(F,{filterOptions:l,filterSelection:t,setFilterSelection:s,coloredYears:!0}),e[11]=t,e[12]=s,e[13]=l,e[14]=u):u=e[14];const N=u;let o;e[15]!==x?(o=p.jsx(U,{children:p.jsx(C,{data:x,columnTitle:"Traffic Statistics URL",dottedBorder:!0,noDots:!0,keysAreURLs:!0,removeDecoration:!0})}),e[15]=x,e[16]=o):o=e[16];let d;return e[17]!==N||e[18]!==a||e[19]!==o?(d=p.jsx(T,{title:_["traffic-stats"],description:"This table shows the URL links to NREN websites showing traffic statistics, if available.",category:g.Network,filter:N,data:a,filename:"traffic_stats_nrens_per_year",children:o}),e[17]=N,e[18]=a,e[19]=o,e[20]=d):d=e[20],d}function E(e,t){const s=w(t);if(s!=null)for(const[r,n]of Object.entries(s))e[r]=n}export{G as default}; +import{c as j,r as k,F as S,j as p,t as _,S as g}from"./index.js";import{u as v,q as y,k as L,i as R,D as T,F,f as U,s as w}from"./useData-CYCBVZdC.js";import{N as C}from"./NrenYearTable-RI8l8hwG.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function G(){const e=j.c(21),{filterSelection:t,setFilterSelection:s}=k.useContext(S),{data:r,nrens:n}=v("/api/traffic-stats",s);let a,c;if(e[0]!==r||e[1]!==t.selectedNrens){const D=r?y(r):[];let m;e[4]!==t.selectedNrens?(m=h=>t.selectedNrens.includes(h.nren),e[4]=t.selectedNrens,e[5]=m):m=e[5],a=D.filter(m);const b=L(a);c=R(b,E),e[0]=r,e[1]=t.selectedNrens,e[2]=a,e[3]=c}else a=e[2],c=e[3];const x=c;let f;e[6]===Symbol.for("react.memo_cache_sentinel")?(f=[],e[6]=f):f=e[6];let i;e[7]!==n?(i=n.values(),e[7]=n,e[8]=i):i=e[8];let l;e[9]!==i?(l={availableYears:f,availableNrens:[...i]},e[9]=i,e[10]=l):l=e[10];let u;e[11]!==t||e[12]!==s||e[13]!==l?(u=p.jsx(F,{filterOptions:l,filterSelection:t,setFilterSelection:s,coloredYears:!0}),e[11]=t,e[12]=s,e[13]=l,e[14]=u):u=e[14];const N=u;let o;e[15]!==x?(o=p.jsx(U,{children:p.jsx(C,{data:x,columnTitle:"Traffic Statistics URL",dottedBorder:!0,noDots:!0,keysAreURLs:!0,removeDecoration:!0})}),e[15]=x,e[16]=o):o=e[16];let d;return e[17]!==N||e[18]!==a||e[19]!==o?(d=p.jsx(T,{title:_["traffic-stats"],description:"This table shows the URL links to NREN websites showing traffic statistics, if available.",category:g.Network,filter:N,data:a,filename:"traffic_stats_nrens_per_year",children:o}),e[17]=N,e[18]=a,e[19]=o,e[20]=d):d=e[20],d}function E(e,t){const s=w(t);if(s!=null)for(const[r,n]of Object.entries(s))e[r]=n}export{G as default}; diff --git a/compendium_v2/static/TrafficVolume-C0Yprx37.js b/compendium_v2/static/TrafficVolume-DjVPocrC.js similarity index 95% rename from compendium_v2/static/TrafficVolume-C0Yprx37.js rename to compendium_v2/static/TrafficVolume-DjVPocrC.js index 8040e12b..95455a63 100644 --- a/compendium_v2/static/TrafficVolume-C0Yprx37.js +++ b/compendium_v2/static/TrafficVolume-DjVPocrC.js @@ -1 +1 @@ -import{c as A,r as G,F as U,j as t,t as Y,S as $,C as P,R as W}from"./index.js";import{L as k}from"./index-C4Nuqrw6.js";import{C as q,a as H,L as I,P as J,b as K,p as M,c as Q,d as X,u as Z,e as v,D as ee,F as te,f as se}from"./useData-Ct8E3VVL.js";import{g as le}from"./charthelpers-DmM6tvdh.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";q.register(H,I,J,K,M,Q,X);function de(){const e=A.c(47),{filterSelection:l,setFilterSelection:_}=G.useContext(U),{data:V,nrens:B}=Z("/api/traffic-volume",_);let o,a,s,g,i;if(e[0]!==V||e[1]!==l.selectedNrens){let r;e[7]!==l.selectedNrens?(r=O=>l.selectedNrens.includes(O.nren),e[7]=l.selectedNrens,e[8]=r):r=e[8],s=V.filter(r),o=v(s,"from_customers"),i=v(s,"to_customers"),a=v(s,"from_external"),g=v(s,"to_external"),e[0]=V,e[1]=l.selectedNrens,e[2]=o,e[3]=a,e[4]=s,e[5]=g,e[6]=i}else o=e[2],a=e[3],s=e[4],g=e[5],i=e[6];const F=g;let N;e[9]===Symbol.for("react.memo_cache_sentinel")?(N=le({title:"Traffic Volume in PB",tooltipUnit:"PB",valueTransform(r){return r?r/1e3:0}}),e[9]=N):N=e[9];const b=N;let j;e[10]===Symbol.for("react.memo_cache_sentinel")?(j=[],e[10]=j):j=e[10];let n;e[11]!==B?(n=B.values(),e[11]=B,e[12]=n):n=e[12];let c;e[13]!==n?(c={availableYears:j,availableNrens:[...n]},e[13]=n,e[14]=c):c=e[14];let S;e[15]!==l||e[16]!==_||e[17]!==c?(S=t.jsx(te,{filterOptions:c,filterSelection:l,setFilterSelection:_}),e[15]=l,e[16]=_,e[17]=c,e[18]=S):S=e[18];const z=S;let y;e[19]===Symbol.for("react.memo_cache_sentinel")?(y=t.jsx("span",{children:"The four graphs below show the estimates of total annual traffic in PB (1000 TB) to & from NREN customers, and to & from external networks. NREN customers are taken to mean sources that are part of the NREN's connectivity remit, while external networks are understood as outside sources including GÉANT, the general/commercial internet, internet exchanges, peerings, other NRENs, etc."}),e[19]=y):y=e[19];let T;e[20]===Symbol.for("react.memo_cache_sentinel")?(T={marginBottom:"30px"},e[20]=T):T=e[20];let E;e[21]===Symbol.for("react.memo_cache_sentinel")?(E=t.jsx("span",{style:{fontSize:"20px",color:"rgb(85, 96, 156)",fontWeight:"bold"},children:"Traffic from NREN customer"}),e[21]=E):E=e[21];let f;e[22]!==o?(f=t.jsxs(P,{children:[E,t.jsx(k,{data:o,options:b})]}),e[22]=o,e[23]=f):f=e[23];let C;e[24]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx("span",{style:{fontSize:"20px",color:"rgb(221, 100, 57)",fontWeight:"bold"},children:"Traffic to NREN customer"}),e[24]=C):C=e[24];let m;e[25]!==i?(m=t.jsxs(P,{children:[C,t.jsx(k,{data:i,options:b})]}),e[25]=i,e[26]=m):m=e[26];let d;e[27]!==m||e[28]!==f?(d=t.jsxs(W,{style:T,children:[f,m]}),e[27]=m,e[28]=f,e[29]=d):d=e[29];let R;e[30]===Symbol.for("react.memo_cache_sentinel")?(R={marginTop:"30px"},e[30]=R):R=e[30];let w;e[31]===Symbol.for("react.memo_cache_sentinel")?(w=t.jsx("span",{style:{fontSize:"20px",color:"rgb(63, 143, 77)",fontWeight:"bold"},children:"Traffic from external network"}),e[31]=w):w=e[31];let h;e[32]!==a?(h=t.jsxs(P,{children:[w,t.jsx(k,{data:a,options:b})]}),e[32]=a,e[33]=h):h=e[33];let D;e[34]===Symbol.for("react.memo_cache_sentinel")?(D=t.jsx("span",{style:{fontSize:"20px",color:"rgb(173, 48, 51)",fontWeight:"bold"},children:"Traffic to external network"}),e[34]=D):D=e[34];let x;e[35]!==F?(x=t.jsxs(P,{children:[D,t.jsx(k,{data:F,options:b})]}),e[35]=F,e[36]=x):x=e[36];let p;e[37]!==h||e[38]!==x?(p=t.jsxs(W,{style:R,children:[h,x]}),e[37]=h,e[38]=x,e[39]=p):p=e[39];let u;e[40]!==d||e[41]!==p?(u=t.jsxs(se,{children:[d,p]}),e[40]=d,e[41]=p,e[42]=u):u=e[42];let L;return e[43]!==z||e[44]!==s||e[45]!==u?(L=t.jsx(ee,{title:Y["traffic-volume"],description:y,category:$.Network,filter:z,data:s,filename:"NREN_traffic_estimates_data",children:u}),e[43]=z,e[44]=s,e[45]=u,e[46]=L):L=e[46],L}export{de as default}; +import{c as A,r as G,F as U,j as t,t as Y,S as $,C as P,R as W}from"./index.js";import{L as k}from"./index-BfhfJiKe.js";import{C as q,a as H,L as I,P as J,b as K,p as M,c as Q,d as X,u as Z,e as v,D as ee,F as te,f as se}from"./useData-CYCBVZdC.js";import{g as le}from"./charthelpers-CdmocpOu.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";q.register(H,I,J,K,M,Q,X);function de(){const e=A.c(47),{filterSelection:l,setFilterSelection:_}=G.useContext(U),{data:V,nrens:B}=Z("/api/traffic-volume",_);let o,a,s,g,i;if(e[0]!==V||e[1]!==l.selectedNrens){let r;e[7]!==l.selectedNrens?(r=O=>l.selectedNrens.includes(O.nren),e[7]=l.selectedNrens,e[8]=r):r=e[8],s=V.filter(r),o=v(s,"from_customers"),i=v(s,"to_customers"),a=v(s,"from_external"),g=v(s,"to_external"),e[0]=V,e[1]=l.selectedNrens,e[2]=o,e[3]=a,e[4]=s,e[5]=g,e[6]=i}else o=e[2],a=e[3],s=e[4],g=e[5],i=e[6];const F=g;let N;e[9]===Symbol.for("react.memo_cache_sentinel")?(N=le({title:"Traffic Volume in PB",tooltipUnit:"PB",valueTransform(r){return r?r/1e3:0}}),e[9]=N):N=e[9];const b=N;let j;e[10]===Symbol.for("react.memo_cache_sentinel")?(j=[],e[10]=j):j=e[10];let n;e[11]!==B?(n=B.values(),e[11]=B,e[12]=n):n=e[12];let c;e[13]!==n?(c={availableYears:j,availableNrens:[...n]},e[13]=n,e[14]=c):c=e[14];let S;e[15]!==l||e[16]!==_||e[17]!==c?(S=t.jsx(te,{filterOptions:c,filterSelection:l,setFilterSelection:_}),e[15]=l,e[16]=_,e[17]=c,e[18]=S):S=e[18];const z=S;let y;e[19]===Symbol.for("react.memo_cache_sentinel")?(y=t.jsx("span",{children:"The four graphs below show the estimates of total annual traffic in PB (1000 TB) to & from NREN customers, and to & from external networks. NREN customers are taken to mean sources that are part of the NREN's connectivity remit, while external networks are understood as outside sources including GÉANT, the general/commercial internet, internet exchanges, peerings, other NRENs, etc."}),e[19]=y):y=e[19];let T;e[20]===Symbol.for("react.memo_cache_sentinel")?(T={marginBottom:"30px"},e[20]=T):T=e[20];let E;e[21]===Symbol.for("react.memo_cache_sentinel")?(E=t.jsx("span",{style:{fontSize:"20px",color:"rgb(85, 96, 156)",fontWeight:"bold"},children:"Traffic from NREN customer"}),e[21]=E):E=e[21];let f;e[22]!==o?(f=t.jsxs(P,{children:[E,t.jsx(k,{data:o,options:b})]}),e[22]=o,e[23]=f):f=e[23];let C;e[24]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx("span",{style:{fontSize:"20px",color:"rgb(221, 100, 57)",fontWeight:"bold"},children:"Traffic to NREN customer"}),e[24]=C):C=e[24];let m;e[25]!==i?(m=t.jsxs(P,{children:[C,t.jsx(k,{data:i,options:b})]}),e[25]=i,e[26]=m):m=e[26];let d;e[27]!==m||e[28]!==f?(d=t.jsxs(W,{style:T,children:[f,m]}),e[27]=m,e[28]=f,e[29]=d):d=e[29];let R;e[30]===Symbol.for("react.memo_cache_sentinel")?(R={marginTop:"30px"},e[30]=R):R=e[30];let w;e[31]===Symbol.for("react.memo_cache_sentinel")?(w=t.jsx("span",{style:{fontSize:"20px",color:"rgb(63, 143, 77)",fontWeight:"bold"},children:"Traffic from external network"}),e[31]=w):w=e[31];let h;e[32]!==a?(h=t.jsxs(P,{children:[w,t.jsx(k,{data:a,options:b})]}),e[32]=a,e[33]=h):h=e[33];let D;e[34]===Symbol.for("react.memo_cache_sentinel")?(D=t.jsx("span",{style:{fontSize:"20px",color:"rgb(173, 48, 51)",fontWeight:"bold"},children:"Traffic to external network"}),e[34]=D):D=e[34];let x;e[35]!==F?(x=t.jsxs(P,{children:[D,t.jsx(k,{data:F,options:b})]}),e[35]=F,e[36]=x):x=e[36];let p;e[37]!==h||e[38]!==x?(p=t.jsxs(W,{style:R,children:[h,x]}),e[37]=h,e[38]=x,e[39]=p):p=e[39];let u;e[40]!==d||e[41]!==p?(u=t.jsxs(se,{children:[d,p]}),e[40]=d,e[41]=p,e[42]=u):u=e[42];let L;return e[43]!==z||e[44]!==s||e[45]!==u?(L=t.jsx(ee,{title:Y["traffic-volume"],description:y,category:$.Network,filter:z,data:s,filename:"NREN_traffic_estimates_data",children:u}),e[43]=z,e[44]=s,e[45]=u,e[46]=L):L=e[46],L}export{de as default}; diff --git a/compendium_v2/static/WeatherMap-DPu2PGnk.js b/compendium_v2/static/WeatherMap-CtO7coD7.js similarity index 92% rename from compendium_v2/static/WeatherMap-DPu2PGnk.js rename to compendium_v2/static/WeatherMap-CtO7coD7.js index f891776e..b92b3949 100644 --- a/compendium_v2/static/WeatherMap-DPu2PGnk.js +++ b/compendium_v2/static/WeatherMap-CtO7coD7.js @@ -1 +1 @@ -import{c as b,r as k,F as w,j as m,t as g,S as j}from"./index.js";import{u as S,q as v,k as y,i as F,D as L,F as R,f as C}from"./useData-Ct8E3VVL.js";import{N as E}from"./NrenYearTable-iS8aEX43.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function O(){const e=b.c(21),{filterSelection:t,setFilterSelection:o}=k.useContext(w),{data:i,nrens:d}=S("/api/weather-map",o);let a,n;if(e[0]!==i||e[1]!==t.selectedNrens){const x=i?v(i):[];let u;e[4]!==t.selectedNrens?(u=_=>t.selectedNrens.includes(_.nren),e[4]=t.selectedNrens,e[5]=u):u=e[5],a=x.filter(u);const D=y(a);n=F(D,T),e[0]=i,e[1]=t.selectedNrens,e[2]=a,e[3]=n}else a=e[2],n=e[3];const h=n;let c;e[6]===Symbol.for("react.memo_cache_sentinel")?(c=[],e[6]=c):c=e[6];let s;e[7]!==d?(s=d.values(),e[7]=d,e[8]=s):s=e[8];let r;e[9]!==s?(r={availableYears:c,availableNrens:[...s]},e[9]=s,e[10]=r):r=e[10];let f;e[11]!==t||e[12]!==o||e[13]!==r?(f=m.jsx(R,{filterOptions:r,filterSelection:t,setFilterSelection:o,coloredYears:!0}),e[11]=t,e[12]=o,e[13]=r,e[14]=f):f=e[14];const N=f;let l;e[15]!==h?(l=m.jsx(C,{children:m.jsx(E,{data:h,columnTitle:"Network Weather Map",dottedBorder:!0,noDots:!0,keysAreURLs:!0,removeDecoration:!0})}),e[15]=h,e[16]=l):l=e[16];let p;return e[17]!==N||e[18]!==a||e[19]!==l?(p=m.jsx(L,{title:g["weather-map"],description:"This table shows the URL links to NREN websites showing weather map, if available.",category:j.Network,filter:N,data:a,filename:"weather_map_nrens_per_year",children:l}),e[17]=N,e[18]=a,e[19]=l,e[20]=p):p=e[20],p}function T(e,t){!!t.url&&(e[t.url]=t.url)}export{O as default}; +import{c as b,r as k,F as w,j as m,t as g,S as j}from"./index.js";import{u as S,q as v,k as y,i as F,D as L,F as R,f as C}from"./useData-CYCBVZdC.js";import{N as E}from"./NrenYearTable-RI8l8hwG.js";import"./SideBar-CkoMfgfL.js";import"./xlsx-BHRztzV8.js";import"./index-DIBz8YrO.js";import"./hook-GVc5uk5F.js";import"./Table-ClWM2_rS.js";function O(){const e=b.c(21),{filterSelection:t,setFilterSelection:o}=k.useContext(w),{data:i,nrens:d}=S("/api/weather-map",o);let a,n;if(e[0]!==i||e[1]!==t.selectedNrens){const x=i?v(i):[];let u;e[4]!==t.selectedNrens?(u=_=>t.selectedNrens.includes(_.nren),e[4]=t.selectedNrens,e[5]=u):u=e[5],a=x.filter(u);const D=y(a);n=F(D,T),e[0]=i,e[1]=t.selectedNrens,e[2]=a,e[3]=n}else a=e[2],n=e[3];const h=n;let c;e[6]===Symbol.for("react.memo_cache_sentinel")?(c=[],e[6]=c):c=e[6];let s;e[7]!==d?(s=d.values(),e[7]=d,e[8]=s):s=e[8];let r;e[9]!==s?(r={availableYears:c,availableNrens:[...s]},e[9]=s,e[10]=r):r=e[10];let f;e[11]!==t||e[12]!==o||e[13]!==r?(f=m.jsx(R,{filterOptions:r,filterSelection:t,setFilterSelection:o,coloredYears:!0}),e[11]=t,e[12]=o,e[13]=r,e[14]=f):f=e[14];const N=f;let l;e[15]!==h?(l=m.jsx(C,{children:m.jsx(E,{data:h,columnTitle:"Network Weather Map",dottedBorder:!0,noDots:!0,keysAreURLs:!0,removeDecoration:!0})}),e[15]=h,e[16]=l):l=e[16];let p;return e[17]!==N||e[18]!==a||e[19]!==l?(p=m.jsx(L,{title:g["weather-map"],description:"This table shows the URL links to NREN websites showing weather map, if available.",category:j.Network,filter:N,data:a,filename:"weather_map_nrens_per_year",children:l}),e[17]=N,e[18]=a,e[19]=l,e[20]=p):p=e[20],p}function T(e,t){!!t.url&&(e[t.url]=t.url)}export{O as default}; diff --git a/compendium_v2/static/charthelpers-DmM6tvdh.js b/compendium_v2/static/charthelpers-CdmocpOu.js similarity index 96% rename from compendium_v2/static/charthelpers-DmM6tvdh.js rename to compendium_v2/static/charthelpers-CdmocpOu.js index c7097f63..7beaaa6e 100644 --- a/compendium_v2/static/charthelpers-DmM6tvdh.js +++ b/compendium_v2/static/charthelpers-CdmocpOu.js @@ -1 +1 @@ -import{C as l}from"./useData-Ct8E3VVL.js";const x=({title:i,unit:c,tooltipPrefix:r,tooltipUnit:o,tickLimit:n,valueTransform:t})=>({responsive:!0,elements:{point:{pointStyle:"circle",pointRadius:4,pointBorderWidth:2,pointBackgroundColor:"white"}},animation:{duration:0},plugins:{legend:{display:!1},tooltip:{callbacks:{label:function(a){let s=r??(a.dataset.label||"");const e=t?t(a.parsed.y):a.parsed.y;return a.parsed.y!==null&&(s+=`: ${e} ${o||""}`),s}}}},scales:{y:{title:{display:!!i,text:i||""},ticks:{autoSkip:!0,maxTicksLimit:n,callback:a=>`${typeof a=="string"?a:t?t(a):a} ${c||""}`}}}}),y=({title:i,unit:c,tooltipPrefix:r,tooltipUnit:o,valueTransform:n})=>({maintainAspectRatio:!1,layout:{padding:{right:60}},animation:{duration:0},plugins:{legend:{display:!1},chartDataLabels:{font:{family:'"Open Sans", sans-serif'}},tooltip:{callbacks:{label:function(t){let a=r??(t.dataset.label||"");const s=n?n(t.parsed.x):t.parsed.x;return t.parsed.y!==null&&(a+=`: ${s} ${o||""}`),a}}}},scales:{x:{title:{display:!!i,text:i||""},position:"top",ticks:{callback:t=>t&&`${n?n(t):t} ${c||""}`}},x2:{title:{display:!!i,text:i||""},ticks:{callback:t=>t&&`${n?n(t):t} ${c||""}`},grid:{drawOnChartArea:!1},afterDataLimits:function(t){const a=Object.keys(l.instances);let s=-999999,e=999999;for(const d of a)l.instances[d]&&t.chart.scales.x2&&(e=Math.min(l.instances[d].scales.x.min,e),s=Math.max(l.instances[d].scales.x.max,s));t.chart.scales.x2.options.min=e,t.chart.scales.x2.options.max=s,t.chart.scales.x2.min=e,t.chart.scales.x2.max=s}},y:{stacked:!0,ticks:{autoSkip:!1}}},indexAxis:"y"});export{y as a,x as g}; +import{C as l}from"./useData-CYCBVZdC.js";const x=({title:i,unit:c,tooltipPrefix:r,tooltipUnit:o,tickLimit:n,valueTransform:t})=>({responsive:!0,elements:{point:{pointStyle:"circle",pointRadius:4,pointBorderWidth:2,pointBackgroundColor:"white"}},animation:{duration:0},plugins:{legend:{display:!1},tooltip:{callbacks:{label:function(a){let s=r??(a.dataset.label||"");const e=t?t(a.parsed.y):a.parsed.y;return a.parsed.y!==null&&(s+=`: ${e} ${o||""}`),s}}}},scales:{y:{title:{display:!!i,text:i||""},ticks:{autoSkip:!0,maxTicksLimit:n,callback:a=>`${typeof a=="string"?a:t?t(a):a} ${c||""}`}}}}),y=({title:i,unit:c,tooltipPrefix:r,tooltipUnit:o,valueTransform:n})=>({maintainAspectRatio:!1,layout:{padding:{right:60}},animation:{duration:0},plugins:{legend:{display:!1},chartDataLabels:{font:{family:'"Open Sans", sans-serif'}},tooltip:{callbacks:{label:function(t){let a=r??(t.dataset.label||"");const s=n?n(t.parsed.x):t.parsed.x;return t.parsed.y!==null&&(a+=`: ${s} ${o||""}`),a}}}},scales:{x:{title:{display:!!i,text:i||""},position:"top",ticks:{callback:t=>t&&`${n?n(t):t} ${c||""}`}},x2:{title:{display:!!i,text:i||""},ticks:{callback:t=>t&&`${n?n(t):t} ${c||""}`},grid:{drawOnChartArea:!1},afterDataLimits:function(t){const a=Object.keys(l.instances);let s=-999999,e=999999;for(const d of a)l.instances[d]&&t.chart.scales.x2&&(e=Math.min(l.instances[d].scales.x.min,e),s=Math.max(l.instances[d].scales.x.max,s));t.chart.scales.x2.options.min=e,t.chart.scales.x2.options.max=s,t.chart.scales.x2.min=e,t.chart.scales.x2.max=s}},y:{stacked:!0,ticks:{autoSkip:!1}}},indexAxis:"y"});export{y as a,x as g}; diff --git a/compendium_v2/static/chartjs-plugin-datalabels.esm-BI98Iz1j.js b/compendium_v2/static/chartjs-plugin-datalabels.esm-CzQRWEly.js similarity index 99% rename from compendium_v2/static/chartjs-plugin-datalabels.esm-BI98Iz1j.js rename to compendium_v2/static/chartjs-plugin-datalabels.esm-CzQRWEly.js index 2b94bbc1..9fc4bce6 100644 --- a/compendium_v2/static/chartjs-plugin-datalabels.esm-BI98Iz1j.js +++ b/compendium_v2/static/chartjs-plugin-datalabels.esm-CzQRWEly.js @@ -1,4 +1,4 @@ -import{x as g,y as J,z as f,A as K,E as q,G as V,H as W,I as p,J as Y,P as Q,B as Z,K as ee,M as re}from"./useData-Ct8E3VVL.js";/*! +import{x as g,y as J,z as f,A as K,E as q,G as V,H as W,I as p,J as Y,P as Q,B as Z,K as ee,M as re}from"./useData-CYCBVZdC.js";/*! * chartjs-plugin-datalabels v2.2.0 * https://chartjs-plugin-datalabels.netlify.app * (c) 2017-2022 chartjs-plugin-datalabels contributors diff --git a/compendium_v2/static/index-C4Nuqrw6.js b/compendium_v2/static/index-BfhfJiKe.js similarity index 96% rename from compendium_v2/static/index-C4Nuqrw6.js rename to compendium_v2/static/index-BfhfJiKe.js index df6cbb83..3db32e61 100644 --- a/compendium_v2/static/index-C4Nuqrw6.js +++ b/compendium_v2/static/index-BfhfJiKe.js @@ -1 +1 @@ -import{r as a,f as h}from"./index.js";import{C as b,t as L,v}from"./useData-Ct8E3VVL.js";const C="label";function m(t,e){typeof t=="function"?t(e):t&&(t.current=e)}function B(t,e){const n=t.options;n&&e&&Object.assign(n,e)}function y(t,e){t.labels=e}function E(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:C;const o=[];t.datasets=e.map(s=>{const u=t.datasets.find(i=>i[n]===s[n]);return!u||!s.data||o.includes(u)?{...s}:(o.push(u),Object.assign(u,s),u)})}function T(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:C;const n={labels:[],datasets:[]};return y(n,t.labels),E(n,t.datasets,e),n}function j(t,e){const{height:n=150,width:o=300,redraw:s=!1,datasetIdKey:u,type:i,data:c,options:f,plugins:w=[],fallbackContent:I,updateMode:g,...K}=t,l=a.useRef(null),r=a.useRef(null),d=()=>{l.current&&(r.current=new b(l.current,{type:i,data:T(c,u),options:f&&{...f},plugins:w}),m(e,r.current))},p=()=>{m(e,null),r.current&&(r.current.destroy(),r.current=null)};return a.useEffect(()=>{!s&&r.current&&f&&B(r.current,f)},[s,f]),a.useEffect(()=>{!s&&r.current&&y(r.current.config.data,c.labels)},[s,c.labels]),a.useEffect(()=>{!s&&r.current&&c.datasets&&E(r.current.config.data,c.datasets,u)},[s,c.datasets]),a.useEffect(()=>{r.current&&(s?(p(),setTimeout(d)):r.current.update(g))},[s,f,c.labels,c.datasets,g]),a.useEffect(()=>{r.current&&(p(),setTimeout(d))},[i]),a.useEffect(()=>(d(),()=>p()),[]),h.createElement("canvas",{ref:l,role:"img",height:n,width:o,...K},I)}const D=a.forwardRef(j);function R(t,e){return b.register(e),a.forwardRef((n,o)=>h.createElement(D,{...n,ref:o,type:t}))}const M=R("line",L),P=R("bar",v);export{P as B,M as L}; +import{r as a,f as h}from"./index.js";import{C as b,t as L,v}from"./useData-CYCBVZdC.js";const C="label";function m(t,e){typeof t=="function"?t(e):t&&(t.current=e)}function B(t,e){const n=t.options;n&&e&&Object.assign(n,e)}function y(t,e){t.labels=e}function E(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:C;const o=[];t.datasets=e.map(s=>{const u=t.datasets.find(i=>i[n]===s[n]);return!u||!s.data||o.includes(u)?{...s}:(o.push(u),Object.assign(u,s),u)})}function T(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:C;const n={labels:[],datasets:[]};return y(n,t.labels),E(n,t.datasets,e),n}function j(t,e){const{height:n=150,width:o=300,redraw:s=!1,datasetIdKey:u,type:i,data:c,options:f,plugins:w=[],fallbackContent:I,updateMode:g,...K}=t,l=a.useRef(null),r=a.useRef(null),d=()=>{l.current&&(r.current=new b(l.current,{type:i,data:T(c,u),options:f&&{...f},plugins:w}),m(e,r.current))},p=()=>{m(e,null),r.current&&(r.current.destroy(),r.current=null)};return a.useEffect(()=>{!s&&r.current&&f&&B(r.current,f)},[s,f]),a.useEffect(()=>{!s&&r.current&&y(r.current.config.data,c.labels)},[s,c.labels]),a.useEffect(()=>{!s&&r.current&&c.datasets&&E(r.current.config.data,c.datasets,u)},[s,c.datasets]),a.useEffect(()=>{r.current&&(s?(p(),setTimeout(d)):r.current.update(g))},[s,f,c.labels,c.datasets,g]),a.useEffect(()=>{r.current&&(p(),setTimeout(d))},[i]),a.useEffect(()=>(d(),()=>p()),[]),h.createElement("canvas",{ref:l,role:"img",height:n,width:o,...K},I)}const D=a.forwardRef(j);function R(t,e){return b.register(e),a.forwardRef((n,o)=>h.createElement(D,{...n,ref:o,type:t}))}const M=R("line",L),P=R("bar",v);export{P as B,M as L}; diff --git a/compendium_v2/static/index.js b/compendium_v2/static/index.js index 6415df93..18ace6bd 100644 --- a/compendium_v2/static/index.js +++ b/compendium_v2/static/index.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["Budget-BVbbdsI6.js","index-C4Nuqrw6.js","useData-Ct8E3VVL.js","SideBar-CkoMfgfL.js","xlsx-BHRztzV8.js","index-DIBz8YrO.js","hook-GVc5uk5F.js","charthelpers-DmM6tvdh.js","ChargingStructure-D6vHlJZ3.js","PillTable-Cnj0nnFy.js","ColorPill-CXvWIfWz.js","Table-ClWM2_rS.js","ECProjects-CT3RTMct.js","NrenYearTable-iS8aEX43.js","FundingSource-C4jAa4nC.js","chartjs-plugin-datalabels.esm-BI98Iz1j.js","ParentOrganisation-BqnVV9Ka.js","StaffGraph-DXD4Tgbx.js","HTMLLegendPlugin-sjJV-MGB.js","StaffGraphAbsolute-A86Vah2E.js","SubOrganisation-ldENjIwX.js","Audits-BldRnziS.js","BusinessContinuity-CLtH4Vxm.js","CentralProcurement-ufKA5cDY.js","CorporateStrategy-CQ2aByV3.js","CrisisExercises-Bw4pZ1iW.js","CrisisManagement-TH7W12RY.js","EOSCListings-v4hLpISP.js","Policy-DTXx03Vh.js","SecurityControls-TM-ptOes.js","ServiceLevelTargets-DMHnzoF5.js","ServiceManagementFramework-D-rGA4sI.js","ServicesOffered-BQGRxlwg.js","ScrollableMatrix-Dxr22l4i.js","ConnectedInstitutionsURLs-gUMBROcH.js","ConnectedUser-C39phNBn.js","RemoteCampuses-DiA5hlnD.js","AlienWave-DhaC80F-.js","AlienWaveInternal-CeuaDpIY.js","Automation-BAaw7w82.js","CapacityCoreIP-CjzYJH11.js","CapacityLargestLink-CCiZ1Jtj.js","CertificateProvider-S4Idgrmz.js","DarkFibreLease-C_DLt-sT.js","DarkFibreInstalled-XMYWXP4t.js","ExternalConnections-Ds1slbkO.js","FibreLight-C4tQtRYN.js","IRUDuration-C1dUeB3y.js","MonitoringTools-BrAyjiGW.js","NetworkFunctionVirtualisation-BSD5a3W2.js","NetworkMapUrls-iZSn2qqQ.js","NonRAndEPeer-Cn_ozVAu.js","OPsAutomation-Bc59w9gr.js","PassiveMonitoring-NXmN_EjG.js","PertTeam-64HTdccQ.js","SiemVendors-Ba9ZMN9z.js","TrafficRatio-p8ISc0n1.js","TrafficUrl-Cupk7MWX.js","TrafficVolume-C0Yprx37.js","WeatherMap-DPu2PGnk.js","Services-5TAXBWqD.js","Landing-B1Sq71Lu.js","survey-3meXCY6T.js","SurveySidebar-CG0gwQ6b.js","SurveyContainerComponent-BmuW9EVe.js","index-BGZcCZJE.js","survey.core-D1mOb2z9.js","validation-COFmylEH.js","Du0IQ9wh.css","SurveyManagementComponent-BvOZUwZZ.js","lodash-CeHp3pZo.js","UserManagementComponent-BsFczL9E.js"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["Budget-BD3tWhAz.js","index-BfhfJiKe.js","useData-CYCBVZdC.js","SideBar-CkoMfgfL.js","xlsx-BHRztzV8.js","index-DIBz8YrO.js","hook-GVc5uk5F.js","charthelpers-CdmocpOu.js","ChargingStructure-Bv0NJy9P.js","PillTable-Cnj0nnFy.js","ColorPill-CXvWIfWz.js","Table-ClWM2_rS.js","ECProjects-Cxw57QLP.js","NrenYearTable-RI8l8hwG.js","FundingSource-M1iQBQ3K.js","chartjs-plugin-datalabels.esm-CzQRWEly.js","ParentOrganisation-Bpo7P6u6.js","StaffGraph-HNfHQ0pm.js","HTMLLegendPlugin-Cg92GHTT.js","StaffGraphAbsolute-Bq1qlgS8.js","SubOrganisation-CXMlieI0.js","Audits-CuvZdHfU.js","BusinessContinuity-MvRfhQYb.js","CentralProcurement-CnLdUN2O.js","CorporateStrategy-D3wglOhj.js","CrisisExercises-DuZg-gGP.js","CrisisManagement-B9EB2EWM.js","EOSCListings-Gq2b1C2V.js","Policy-BdndWxZz.js","SecurityControls-Ba4coYqK.js","ServiceLevelTargets-pvc5MWdl.js","ServiceManagementFramework-Cy_R2T5K.js","ServicesOffered-C8SRGlPW.js","ScrollableMatrix-Dxr22l4i.js","ConnectedInstitutionsURLs-C_G2PNvX.js","ConnectedUser-D-CAsrxc.js","RemoteCampuses-CWuoHcc1.js","AlienWave-AJrmdFtI.js","AlienWaveInternal-BkYZMjCR.js","Automation-DItliT93.js","CapacityCoreIP-BYeiJxnz.js","CapacityLargestLink-Bov4w9OF.js","CertificateProvider-C0MtpALT.js","DarkFibreLease-DOa-O_Mg.js","DarkFibreInstalled-2D1iNkw5.js","ExternalConnections-ldDiu0-q.js","FibreLight-CitJL-tj.js","IRUDuration-CX0U79PZ.js","MonitoringTools-sTAJWOEm.js","NetworkFunctionVirtualisation-mpEVvRIs.js","NetworkMapUrls-B9qEmtVH.js","NonRAndEPeer-C1U-VeeG.js","OPsAutomation-DAHkdRQE.js","PassiveMonitoring-Bn2t9Pmf.js","PertTeam-C-4MgsmN.js","SiemVendors-kLcSDwOx.js","TrafficRatio-BkOFtVPl.js","TrafficUrl-ppIreNuJ.js","TrafficVolume-DjVPocrC.js","WeatherMap-CtO7coD7.js","Services-fP_6uX0f.js","Landing-B1Sq71Lu.js","survey-3meXCY6T.js","SurveySidebar-CG0gwQ6b.js","SurveyContainerComponent-BmuW9EVe.js","index-BGZcCZJE.js","survey.core-D1mOb2z9.js","validation-COFmylEH.js","Du0IQ9wh.css","SurveyManagementComponent-BvOZUwZZ.js","lodash-CeHp3pZo.js","UserManagementComponent-BsFczL9E.js"])))=>i.map(i=>d[i]); var Kg=Object.defineProperty;var $g=(l,n,c)=>n in l?Kg(l,n,{enumerable:!0,configurable:!0,writable:!0,value:c}):l[n]=c;var wm=(l,n,c)=>$g(l,typeof n!="symbol"?n+"":n,c);(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const u of document.querySelectorAll('link[rel="modulepreload"]'))s(u);new MutationObserver(u=>{for(const f of u)if(f.type==="childList")for(const d of f.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&s(d)}).observe(document,{childList:!0,subtree:!0});function c(u){const f={};return u.integrity&&(f.integrity=u.integrity),u.referrerPolicy&&(f.referrerPolicy=u.referrerPolicy),u.crossOrigin==="use-credentials"?f.credentials="include":u.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function s(u){if(u.ep)return;u.ep=!0;const f=c(u);fetch(u.href,f)}})();var U2=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function fr(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}var to={exports:{}},er={};/** * @license React * react-jsx-runtime.production.js @@ -80,4 +80,4 @@ Please change the parent <Route path="${q}"> to <Route path="${q==="/"?"*":`${q} Copyright (c) 2018 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames -*/var dy;function AE(){return dy||(dy=1,function(l){(function(){var n={}.hasOwnProperty;function c(){for(var f="",d=0;d<arguments.length;d++){var y=arguments[d];y&&(f=u(f,s(y)))}return f}function s(f){if(typeof f=="string"||typeof f=="number")return f;if(typeof f!="object")return"";if(Array.isArray(f))return c.apply(null,f);if(f.toString!==Object.prototype.toString&&!f.toString.toString().includes("[native code]"))return f.toString();var d="";for(var y in f)n.call(f,y)&&f[y]&&(d=u(d,y));return d}function u(f,d){return d?f?f+" "+d:f+d:f}l.exports?(c.default=c,l.exports=c):window.classNames=c})()}(po)),po.exports}var ME=AE();const Ae=fr(ME);function zE(l,n){if(l==null)return{};var c={};for(var s in l)if({}.hasOwnProperty.call(l,s)){if(n.includes(s))continue;c[s]=l[s]}return c}function Ao(l,n){return Ao=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(c,s){return c.__proto__=s,c},Ao(l,n)}function LE(l,n){l.prototype=Object.create(n.prototype),l.prototype.constructor=l,Ao(l,n)}const UE=["xxl","xl","lg","md","sm","xs"],HE="xs",Zu=g.createContext({prefixes:{},breakpoints:UE,minBreakpoint:HE});function Qe(l,n){const{prefixes:c}=g.useContext(Zu);return l||c[n]||n}function tp(){const{breakpoints:l}=g.useContext(Zu);return l}function np(){const{minBreakpoint:l}=g.useContext(Zu);return l}function BE(){const{dir:l}=g.useContext(Zu);return l==="rtl"}function Ku(l){return l&&l.ownerDocument||document}function qE(l){var n=Ku(l);return n&&n.defaultView||window}function VE(l,n){return qE(l).getComputedStyle(l,n)}var YE=/([A-Z])/g;function GE(l){return l.replace(YE,"-$1").toLowerCase()}var kE=/^ms-/;function Ou(l){return GE(l).replace(kE,"-ms-")}var XE=/^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;function QE(l){return!!(l&&XE.test(l))}function gl(l,n){var c="",s="";if(typeof n=="string")return l.style.getPropertyValue(Ou(n))||VE(l).getPropertyValue(Ou(n));Object.keys(n).forEach(function(u){var f=n[u];!f&&f!==0?l.style.removeProperty(Ou(u)):QE(u)?s+=u+"("+f+") ":c+=Ou(u)+": "+f+";"}),s&&(c+="transform: "+s+";"),l.style.cssText+=";"+c}var vo={exports:{}},go,hy;function ZE(){if(hy)return go;hy=1;var l="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return go=l,go}var Eo,my;function KE(){if(my)return Eo;my=1;var l=ZE();function n(){}function c(){}return c.resetWarningCache=n,Eo=function(){function s(d,y,v,p,b,R){if(R!==l){var S=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw S.name="Invariant Violation",S}}s.isRequired=s;function u(){return s}var f={array:s,bigint:s,bool:s,func:s,number:s,object:s,string:s,symbol:s,any:s,arrayOf:u,element:s,elementType:s,instanceOf:u,node:s,objectOf:u,oneOf:u,oneOfType:u,shape:u,exact:u,checkPropTypes:c,resetWarningCache:n};return f.PropTypes=f,f},Eo}var yy;function $E(){return yy||(yy=1,vo.exports=KE()()),vo.exports}var FE=$E();const fa=fr(FE),py={disabled:!1},ap=Yt.createContext(null);var JE=function(n){return n.scrollTop},cr="unmounted",hl="exited",Ba="entering",yl="entered",Mo="exiting",ha=function(l){LE(n,l);function n(s,u){var f;f=l.call(this,s,u)||this;var d=u,y=d&&!d.isMounting?s.enter:s.appear,v;return f.appearStatus=null,s.in?y?(v=hl,f.appearStatus=Ba):v=yl:s.unmountOnExit||s.mountOnEnter?v=cr:v=hl,f.state={status:v},f.nextCallback=null,f}n.getDerivedStateFromProps=function(u,f){var d=u.in;return d&&f.status===cr?{status:hl}:null};var c=n.prototype;return c.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},c.componentDidUpdate=function(u){var f=null;if(u!==this.props){var d=this.state.status;this.props.in?d!==Ba&&d!==yl&&(f=Ba):(d===Ba||d===yl)&&(f=Mo)}this.updateStatus(!1,f)},c.componentWillUnmount=function(){this.cancelNextCallback()},c.getTimeouts=function(){var u=this.props.timeout,f,d,y;return f=d=y=u,u!=null&&typeof u!="number"&&(f=u.exit,d=u.enter,y=u.appear!==void 0?u.appear:d),{exit:f,enter:d,appear:y}},c.updateStatus=function(u,f){if(u===void 0&&(u=!1),f!==null)if(this.cancelNextCallback(),f===Ba){if(this.props.unmountOnExit||this.props.mountOnEnter){var d=this.props.nodeRef?this.props.nodeRef.current:ii.findDOMNode(this);d&&JE(d)}this.performEnter(u)}else this.performExit();else this.props.unmountOnExit&&this.state.status===hl&&this.setState({status:cr})},c.performEnter=function(u){var f=this,d=this.props.enter,y=this.context?this.context.isMounting:u,v=this.props.nodeRef?[y]:[ii.findDOMNode(this),y],p=v[0],b=v[1],R=this.getTimeouts(),S=y?R.appear:R.enter;if(!u&&!d||py.disabled){this.safeSetState({status:yl},function(){f.props.onEntered(p)});return}this.props.onEnter(p,b),this.safeSetState({status:Ba},function(){f.props.onEntering(p,b),f.onTransitionEnd(S,function(){f.safeSetState({status:yl},function(){f.props.onEntered(p,b)})})})},c.performExit=function(){var u=this,f=this.props.exit,d=this.getTimeouts(),y=this.props.nodeRef?void 0:ii.findDOMNode(this);if(!f||py.disabled){this.safeSetState({status:hl},function(){u.props.onExited(y)});return}this.props.onExit(y),this.safeSetState({status:Mo},function(){u.props.onExiting(y),u.onTransitionEnd(d.exit,function(){u.safeSetState({status:hl},function(){u.props.onExited(y)})})})},c.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},c.safeSetState=function(u,f){f=this.setNextCallback(f),this.setState(u,f)},c.setNextCallback=function(u){var f=this,d=!0;return this.nextCallback=function(y){d&&(d=!1,f.nextCallback=null,u(y))},this.nextCallback.cancel=function(){d=!1},this.nextCallback},c.onTransitionEnd=function(u,f){this.setNextCallback(f);var d=this.props.nodeRef?this.props.nodeRef.current:ii.findDOMNode(this),y=u==null&&!this.props.addEndListener;if(!d||y){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var v=this.props.nodeRef?[this.nextCallback]:[d,this.nextCallback],p=v[0],b=v[1];this.props.addEndListener(p,b)}u!=null&&setTimeout(this.nextCallback,u)},c.render=function(){var u=this.state.status;if(u===cr)return null;var f=this.props,d=f.children;f.in,f.mountOnEnter,f.unmountOnExit,f.appear,f.enter,f.exit,f.timeout,f.addEndListener,f.onEnter,f.onEntering,f.onEntered,f.onExit,f.onExiting,f.onExited,f.nodeRef;var y=zE(f,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return Yt.createElement(ap.Provider,{value:null},typeof d=="function"?d(u,y):Yt.cloneElement(Yt.Children.only(d),y))},n}(Yt.Component);ha.contextType=ap;ha.propTypes={};function ei(){}ha.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:ei,onEntering:ei,onEntered:ei,onExit:ei,onExiting:ei,onExited:ei};ha.UNMOUNTED=cr;ha.EXITED=hl;ha.ENTERING=Ba;ha.ENTERED=yl;ha.EXITING=Mo;function PE(l){return l.code==="Escape"||l.keyCode===27}function WE(){const l=g.version.split(".");return{major:+l[0],minor:+l[1],patch:+l[2]}}function $u(l){if(!l||typeof l=="function")return null;const{major:n}=WE();return n>=19?l.props.ref:l.ref}const ri=!!(typeof window<"u"&&window.document&&window.document.createElement);var zo=!1,Lo=!1;try{var bo={get passive(){return zo=!0},get once(){return Lo=zo=!0}};ri&&(window.addEventListener("test",bo,bo),window.removeEventListener("test",bo,!0))}catch{}function lp(l,n,c,s){if(s&&typeof s!="boolean"&&!Lo){var u=s.once,f=s.capture,d=c;!Lo&&u&&(d=c.__once||function y(v){this.removeEventListener(n,y,f),c.call(this,v)},c.__once=d),l.addEventListener(n,d,zo?s:f)}l.addEventListener(n,c,s)}function Uo(l,n,c,s){var u=s&&typeof s!="boolean"?s.capture:s;l.removeEventListener(n,c,u),c.__once&&l.removeEventListener(n,c.__once,u)}function Bu(l,n,c,s){return lp(l,n,c,s),function(){Uo(l,n,c,s)}}function IE(l,n,c,s){if(s===void 0&&(s=!0),l){var u=document.createEvent("HTMLEvents");u.initEvent(n,c,s),l.dispatchEvent(u)}}function eb(l){var n=gl(l,"transitionDuration")||"",c=n.indexOf("ms")===-1?1e3:1;return parseFloat(n)*c}function tb(l,n,c){c===void 0&&(c=5);var s=!1,u=setTimeout(function(){s||IE(l,"transitionend",!0)},n+c),f=Bu(l,"transitionend",function(){s=!0},{once:!0});return function(){clearTimeout(u),f()}}function ip(l,n,c,s){c==null&&(c=eb(l)||0);var u=tb(l,c,s),f=Bu(l,"transitionend",n);return function(){u(),f()}}function vy(l,n){const c=gl(l,n)||"",s=c.indexOf("ms")===-1?1e3:1;return parseFloat(c)*s}function nb(l,n){const c=vy(l,"transitionDuration"),s=vy(l,"transitionDelay"),u=ip(l,f=>{f.target===l&&(u(),n(f))},c+s)}function ab(l){l.offsetHeight}const gy=l=>!l||typeof l=="function"?l:n=>{l.current=n};function lb(l,n){const c=gy(l),s=gy(n);return u=>{c&&c(u),s&&s(u)}}function rp(l,n){return g.useMemo(()=>lb(l,n),[l,n])}function ib(l){return l&&"setState"in l?ii.findDOMNode(l):l??null}const rb=Yt.forwardRef(({onEnter:l,onEntering:n,onEntered:c,onExit:s,onExiting:u,onExited:f,addEndListener:d,children:y,childRef:v,...p},b)=>{const R=g.useRef(null),S=rp(R,v),_=N=>{S(ib(N))},O=N=>W=>{N&&R.current&&N(R.current,W)},H=g.useCallback(O(l),[l]),U=g.useCallback(O(n),[n]),M=g.useCallback(O(c),[c]),q=g.useCallback(O(s),[s]),Y=g.useCallback(O(u),[u]),J=g.useCallback(O(f),[f]),k=g.useCallback(O(d),[d]);return h.jsx(ha,{ref:b,...p,onEnter:H,onEntered:M,onEntering:U,onExit:q,onExited:J,onExiting:Y,addEndListener:k,nodeRef:R,children:typeof y=="function"?(N,W)=>y(N,{...W,ref:_}):Yt.cloneElement(y,{ref:_})})});function ub(l){const n=g.useRef(l);return g.useEffect(()=>{n.current=l},[l]),n}function Ho(l){const n=ub(l);return g.useCallback(function(...c){return n.current&&n.current(...c)},[n])}const Po=l=>g.forwardRef((n,c)=>h.jsx("div",{...n,ref:c,className:Ae(n.className,l)}));function cb(l){const n=g.useRef(l);return g.useEffect(()=>{n.current=l},[l]),n}function pl(l){const n=cb(l);return g.useCallback(function(...c){return n.current&&n.current(...c)},[n])}function sb(){const l=g.useRef(!0),n=g.useRef(()=>l.current);return g.useEffect(()=>(l.current=!0,()=>{l.current=!1}),[]),n.current}function ob(l){const n=g.useRef(null);return g.useEffect(()=>{n.current=l}),n.current}const fb=typeof global<"u"&&global.navigator&&global.navigator.product==="ReactNative",db=typeof document<"u",Ey=db||fb?g.useLayoutEffect:g.useEffect,hb=["as","disabled"];function mb(l,n){if(l==null)return{};var c={};for(var s in l)if({}.hasOwnProperty.call(l,s)){if(n.indexOf(s)>=0)continue;c[s]=l[s]}return c}function yb(l){return!l||l.trim()==="#"}function up({tagName:l,disabled:n,href:c,target:s,rel:u,role:f,onClick:d,tabIndex:y=0,type:v}){l||(c!=null||s!=null||u!=null?l="a":l="button");const p={tagName:l};if(l==="button")return[{type:v||"button",disabled:n},p];const b=S=>{if((n||l==="a"&&yb(c))&&S.preventDefault(),n){S.stopPropagation();return}d==null||d(S)},R=S=>{S.key===" "&&(S.preventDefault(),b(S))};return l==="a"&&(c||(c="#"),n&&(c=void 0)),[{role:f??"button",disabled:void 0,tabIndex:n?void 0:y,href:c,target:l==="a"?s:void 0,"aria-disabled":n||void 0,rel:l==="a"?u:void 0,onClick:b,onKeyDown:R},p]}const pb=g.forwardRef((l,n)=>{let{as:c,disabled:s}=l,u=mb(l,hb);const[f,{tagName:d}]=up(Object.assign({tagName:c,disabled:s},u));return h.jsx(d,Object.assign({},u,f,{ref:n}))});pb.displayName="Button";const vb={[Ba]:"show",[yl]:"show"},Wo=g.forwardRef(({className:l,children:n,transitionClasses:c={},onEnter:s,...u},f)=>{const d={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1,...u},y=g.useCallback((v,p)=>{ab(v),s==null||s(v,p)},[s]);return h.jsx(rb,{ref:f,addEndListener:nb,...d,onEnter:y,childRef:$u(n),children:(v,p)=>g.cloneElement(n,{...p,className:Ae("fade",l,n.props.className,vb[v],c[v])})})});Wo.displayName="Fade";const gb={"aria-label":fa.string,onClick:fa.func,variant:fa.oneOf(["white"])},Io=g.forwardRef(({className:l,variant:n,"aria-label":c="Close",...s},u)=>h.jsx("button",{ref:u,type:"button",className:Ae("btn-close",n&&`btn-close-${n}`,l),"aria-label":c,...s}));Io.displayName="CloseButton";Io.propTypes=gb;const Bo=g.forwardRef(({as:l,bsPrefix:n,variant:c="primary",size:s,active:u=!1,disabled:f=!1,className:d,...y},v)=>{const p=Qe(n,"btn"),[b,{tagName:R}]=up({tagName:l,disabled:f,...y}),S=R;return h.jsx(S,{...b,...y,ref:v,disabled:f,className:Ae(d,p,u&&"active",c&&`${p}-${c}`,s&&`${p}-${s}`,y.href&&f&&"disabled")})});Bo.displayName="Button";const ef=g.forwardRef(({className:l,bsPrefix:n,as:c="div",...s},u)=>(n=Qe(n,"card-body"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));ef.displayName="CardBody";const cp=g.forwardRef(({className:l,bsPrefix:n,as:c="div",...s},u)=>(n=Qe(n,"card-footer"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));cp.displayName="CardFooter";const sp=g.createContext(null);sp.displayName="CardHeaderContext";const op=g.forwardRef(({bsPrefix:l,className:n,as:c="div",...s},u)=>{const f=Qe(l,"card-header"),d=g.useMemo(()=>({cardHeaderBsPrefix:f}),[f]);return h.jsx(sp.Provider,{value:d,children:h.jsx(c,{ref:u,...s,className:Ae(n,f)})})});op.displayName="CardHeader";const fp=g.forwardRef(({bsPrefix:l,className:n,variant:c,as:s="img",...u},f)=>{const d=Qe(l,"card-img");return h.jsx(s,{ref:f,className:Ae(c?`${d}-${c}`:d,n),...u})});fp.displayName="CardImg";const dp=g.forwardRef(({className:l,bsPrefix:n,as:c="div",...s},u)=>(n=Qe(n,"card-img-overlay"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));dp.displayName="CardImgOverlay";const hp=g.forwardRef(({className:l,bsPrefix:n,as:c="a",...s},u)=>(n=Qe(n,"card-link"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));hp.displayName="CardLink";const Eb=Po("h6"),mp=g.forwardRef(({className:l,bsPrefix:n,as:c=Eb,...s},u)=>(n=Qe(n,"card-subtitle"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));mp.displayName="CardSubtitle";const yp=g.forwardRef(({className:l,bsPrefix:n,as:c="p",...s},u)=>(n=Qe(n,"card-text"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));yp.displayName="CardText";const bb=Po("h5"),pp=g.forwardRef(({className:l,bsPrefix:n,as:c=bb,...s},u)=>(n=Qe(n,"card-title"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));pp.displayName="CardTitle";const vp=g.forwardRef(({bsPrefix:l,className:n,bg:c,text:s,border:u,body:f=!1,children:d,as:y="div",...v},p)=>{const b=Qe(l,"card");return h.jsx(y,{ref:p,...v,className:Ae(n,b,c&&`bg-${c}`,s&&`text-${s}`,u&&`border-${u}`),children:f?h.jsx(ef,{children:d}):d})});vp.displayName="Card";const Yn=Object.assign(vp,{Img:fp,Title:pp,Subtitle:mp,Body:ef,Link:hp,Text:yp,Header:op,Footer:cp,ImgOverlay:dp});function Sb(l){const n=g.useRef(l);return n.current=l,n}function xb(l){const n=Sb(l);g.useEffect(()=>()=>n.current(),[])}function _b(l,n){return g.Children.toArray(l).some(c=>g.isValidElement(c)&&c.type===n)}function Rb({as:l,bsPrefix:n,className:c,...s}){n=Qe(n,"col");const u=tp(),f=np(),d=[],y=[];return u.forEach(v=>{const p=s[v];delete s[v];let b,R,S;typeof p=="object"&&p!=null?{span:b,offset:R,order:S}=p:b=p;const _=v!==f?`-${v}`:"";b&&d.push(b===!0?`${n}${_}`:`${n}${_}-${b}`),S!=null&&y.push(`order${_}-${S}`),R!=null&&y.push(`offset${_}-${R}`)}),[{...s,className:Ae(c,...d,...y)},{as:l,bsPrefix:n,spans:d}]}const ln=g.forwardRef((l,n)=>{const[{className:c,...s},{as:u="div",bsPrefix:f,spans:d}]=Rb(l);return h.jsx(u,{...s,ref:n,className:Ae(c,!d.length&&f)})});ln.displayName="Col";const Ya=g.forwardRef(({bsPrefix:l,fluid:n=!1,as:c="div",className:s,...u},f)=>{const d=Qe(l,"container"),y=typeof n=="string"?`-${n}`:"-fluid";return h.jsx(c,{ref:f,...u,className:Ae(s,n?`${d}${y}`:d)})});Ya.displayName="Container";var Tb=Function.prototype.bind.call(Function.prototype.call,[].slice);function ti(l,n){return Tb(l.querySelectorAll(n))}function by(l,n){if(l.contains)return l.contains(n);if(l.compareDocumentPosition)return l===n||!!(l.compareDocumentPosition(n)&16)}var So,Sy;function Nb(){if(Sy)return So;Sy=1;var l=function(){};return So=l,So}var Cb=Nb();const q2=fr(Cb),jb="data-rr-ui-";function Ob(l){return`${jb}${l}`}const gp=g.createContext(ri?window:void 0);gp.Provider;function tf(){return g.useContext(gp)}const Db={type:fa.string,tooltip:fa.bool,as:fa.elementType},Fu=g.forwardRef(({as:l="div",className:n,type:c="valid",tooltip:s=!1,...u},f)=>h.jsx(l,{...u,ref:f,className:Ae(n,`${c}-${s?"tooltip":"feedback"}`)}));Fu.displayName="Feedback";Fu.propTypes=Db;const da=g.createContext({}),nf=g.forwardRef(({id:l,bsPrefix:n,className:c,type:s="checkbox",isValid:u=!1,isInvalid:f=!1,as:d="input",...y},v)=>{const{controlId:p}=g.useContext(da);return n=Qe(n,"form-check-input"),h.jsx(d,{...y,ref:v,type:s,id:l||p,className:Ae(c,n,u&&"is-valid",f&&"is-invalid")})});nf.displayName="FormCheckInput";const qu=g.forwardRef(({bsPrefix:l,className:n,htmlFor:c,...s},u)=>{const{controlId:f}=g.useContext(da);return l=Qe(l,"form-check-label"),h.jsx("label",{...s,ref:u,htmlFor:c||f,className:Ae(n,l)})});qu.displayName="FormCheckLabel";const Ep=g.forwardRef(({id:l,bsPrefix:n,bsSwitchPrefix:c,inline:s=!1,reverse:u=!1,disabled:f=!1,isValid:d=!1,isInvalid:y=!1,feedbackTooltip:v=!1,feedback:p,feedbackType:b,className:R,style:S,title:_="",type:O="checkbox",label:H,children:U,as:M="input",...q},Y)=>{n=Qe(n,"form-check"),c=Qe(c,"form-switch");const{controlId:J}=g.useContext(da),k=g.useMemo(()=>({controlId:l||J}),[J,l]),N=!U&&H!=null&&H!==!1||_b(U,qu),W=h.jsx(nf,{...q,type:O==="switch"?"checkbox":O,ref:Y,isValid:d,isInvalid:y,disabled:f,as:M});return h.jsx(da.Provider,{value:k,children:h.jsx("div",{style:S,className:Ae(R,N&&n,s&&`${n}-inline`,u&&`${n}-reverse`,O==="switch"&&c),children:U||h.jsxs(h.Fragment,{children:[W,N&&h.jsx(qu,{title:_,children:H}),p&&h.jsx(Fu,{type:b,tooltip:v,children:p})]})})})});Ep.displayName="FormCheck";const Vu=Object.assign(Ep,{Input:nf,Label:qu}),bp=g.forwardRef(({bsPrefix:l,type:n,size:c,htmlSize:s,id:u,className:f,isValid:d=!1,isInvalid:y=!1,plaintext:v,readOnly:p,as:b="input",...R},S)=>{const{controlId:_}=g.useContext(da);return l=Qe(l,"form-control"),h.jsx(b,{...R,type:n,size:s,ref:S,readOnly:p,id:u||_,className:Ae(f,v?`${l}-plaintext`:l,c&&`${l}-${c}`,n==="color"&&`${l}-color`,d&&"is-valid",y&&"is-invalid")})});bp.displayName="FormControl";const wb=Object.assign(bp,{Feedback:Fu}),Sp=g.forwardRef(({className:l,bsPrefix:n,as:c="div",...s},u)=>(n=Qe(n,"form-floating"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));Sp.displayName="FormFloating";const af=g.forwardRef(({controlId:l,as:n="div",...c},s)=>{const u=g.useMemo(()=>({controlId:l}),[l]);return h.jsx(da.Provider,{value:u,children:h.jsx(n,{...c,ref:s})})});af.displayName="FormGroup";const xp=g.forwardRef(({as:l="label",bsPrefix:n,column:c=!1,visuallyHidden:s=!1,className:u,htmlFor:f,...d},y)=>{const{controlId:v}=g.useContext(da);n=Qe(n,"form-label");let p="col-form-label";typeof c=="string"&&(p=`${p} ${p}-${c}`);const b=Ae(u,n,s&&"visually-hidden",c&&p);return f=f||v,c?h.jsx(ln,{ref:y,as:"label",className:b,htmlFor:f,...d}):h.jsx(l,{ref:y,className:b,htmlFor:f,...d})});xp.displayName="FormLabel";const _p=g.forwardRef(({bsPrefix:l,className:n,id:c,...s},u)=>{const{controlId:f}=g.useContext(da);return l=Qe(l,"form-range"),h.jsx("input",{...s,type:"range",ref:u,className:Ae(n,l),id:c||f})});_p.displayName="FormRange";const Rp=g.forwardRef(({bsPrefix:l,size:n,htmlSize:c,className:s,isValid:u=!1,isInvalid:f=!1,id:d,...y},v)=>{const{controlId:p}=g.useContext(da);return l=Qe(l,"form-select"),h.jsx("select",{...y,size:c,ref:v,className:Ae(s,l,n&&`${l}-${n}`,u&&"is-valid",f&&"is-invalid"),id:d||p})});Rp.displayName="FormSelect";const Tp=g.forwardRef(({bsPrefix:l,className:n,as:c="small",muted:s,...u},f)=>(l=Qe(l,"form-text"),h.jsx(c,{...u,ref:f,className:Ae(n,l,s&&"text-muted")})));Tp.displayName="FormText";const Np=g.forwardRef((l,n)=>h.jsx(Vu,{...l,ref:n,type:"switch"}));Np.displayName="Switch";const Ab=Object.assign(Np,{Input:Vu.Input,Label:Vu.Label}),Cp=g.forwardRef(({bsPrefix:l,className:n,children:c,controlId:s,label:u,...f},d)=>(l=Qe(l,"form-floating"),h.jsxs(af,{ref:d,className:Ae(n,l),controlId:s,...f,children:[c,h.jsx("label",{htmlFor:s,children:u})]})));Cp.displayName="FloatingLabel";const Mb={_ref:fa.any,validated:fa.bool,as:fa.elementType},lf=g.forwardRef(({className:l,validated:n,as:c="form",...s},u)=>h.jsx(c,{...s,ref:u,className:Ae(l,n&&"was-validated")}));lf.displayName="Form";lf.propTypes=Mb;const Du=Object.assign(lf,{Group:af,Control:wb,Floating:Sp,Check:Vu,Switch:Ab,Label:xp,Text:Tp,Range:_p,Select:Rp,FloatingLabel:Cp}),xy=l=>!l||typeof l=="function"?l:n=>{l.current=n};function zb(l,n){const c=xy(l),s=xy(n);return u=>{c&&c(u),s&&s(u)}}function rf(l,n){return g.useMemo(()=>zb(l,n),[l,n])}var wu;function _y(l){if((!wu&&wu!==0||l)&&ri){var n=document.createElement("div");n.style.position="absolute",n.style.top="-9999px",n.style.width="50px",n.style.height="50px",n.style.overflow="scroll",document.body.appendChild(n),wu=n.offsetWidth-n.clientWidth,document.body.removeChild(n)}return wu}function Lb(){return g.useState(null)}function xo(l){l===void 0&&(l=Ku());try{var n=l.activeElement;return!n||!n.nodeName?null:n}catch{return l.body}}function Ub(l){const n=g.useRef(l);return n.current=l,n}function Hb(l){const n=Ub(l);g.useEffect(()=>()=>n.current(),[])}function Bb(l=document){const n=l.defaultView;return Math.abs(n.innerWidth-l.documentElement.clientWidth)}const Ry=Ob("modal-open");class uf{constructor({ownerDocument:n,handleContainerOverflow:c=!0,isRTL:s=!1}={}){this.handleContainerOverflow=c,this.isRTL=s,this.modals=[],this.ownerDocument=n}getScrollbarWidth(){return Bb(this.ownerDocument)}getElement(){return(this.ownerDocument||document).body}setModalAttributes(n){}removeModalAttributes(n){}setContainerStyle(n){const c={overflow:"hidden"},s=this.isRTL?"paddingLeft":"paddingRight",u=this.getElement();n.style={overflow:u.style.overflow,[s]:u.style[s]},n.scrollBarWidth&&(c[s]=`${parseInt(gl(u,s)||"0",10)+n.scrollBarWidth}px`),u.setAttribute(Ry,""),gl(u,c)}reset(){[...this.modals].forEach(n=>this.remove(n))}removeContainerStyle(n){const c=this.getElement();c.removeAttribute(Ry),Object.assign(c.style,n.style)}add(n){let c=this.modals.indexOf(n);return c!==-1||(c=this.modals.length,this.modals.push(n),this.setModalAttributes(n),c!==0)||(this.state={scrollBarWidth:this.getScrollbarWidth(),style:{}},this.handleContainerOverflow&&this.setContainerStyle(this.state)),c}remove(n){const c=this.modals.indexOf(n);c!==-1&&(this.modals.splice(c,1),!this.modals.length&&this.handleContainerOverflow&&this.removeContainerStyle(this.state),this.removeModalAttributes(n))}isTopModal(n){return!!this.modals.length&&this.modals[this.modals.length-1]===n}}const _o=(l,n)=>ri?l==null?(n||Ku()).body:(typeof l=="function"&&(l=l()),l&&"current"in l&&(l=l.current),l&&("nodeType"in l||l.getBoundingClientRect)?l:null):null;function qb(l,n){const c=tf(),[s,u]=g.useState(()=>_o(l,c==null?void 0:c.document));if(!s){const f=_o(l);f&&u(f)}return g.useEffect(()=>{},[n,s]),g.useEffect(()=>{const f=_o(l);f!==s&&u(f)},[l,s]),s}function Vb({children:l,in:n,onExited:c,mountOnEnter:s,unmountOnExit:u}){const f=g.useRef(null),d=g.useRef(n),y=pl(c);g.useEffect(()=>{n?d.current=!0:y(f.current)},[n,y]);const v=rf(f,$u(l)),p=g.cloneElement(l,{ref:v});return n?p:u||!d.current&&s?null:p}const Yb=["onEnter","onEntering","onEntered","onExit","onExiting","onExited","addEndListener","children"];function Gb(l,n){if(l==null)return{};var c={};for(var s in l)if({}.hasOwnProperty.call(l,s)){if(n.indexOf(s)>=0)continue;c[s]=l[s]}return c}function kb(l){let{onEnter:n,onEntering:c,onEntered:s,onExit:u,onExiting:f,onExited:d,addEndListener:y,children:v}=l,p=Gb(l,Yb);const b=g.useRef(null),R=rf(b,$u(v)),S=J=>k=>{J&&b.current&&J(b.current,k)},_=g.useCallback(S(n),[n]),O=g.useCallback(S(c),[c]),H=g.useCallback(S(s),[s]),U=g.useCallback(S(u),[u]),M=g.useCallback(S(f),[f]),q=g.useCallback(S(d),[d]),Y=g.useCallback(S(y),[y]);return Object.assign({},p,{nodeRef:b},n&&{onEnter:_},c&&{onEntering:O},s&&{onEntered:H},u&&{onExit:U},f&&{onExiting:M},d&&{onExited:q},y&&{addEndListener:Y},{children:typeof v=="function"?(J,k)=>v(J,Object.assign({},k,{ref:R})):g.cloneElement(v,{ref:R})})}const Xb=["component"];function Qb(l,n){if(l==null)return{};var c={};for(var s in l)if({}.hasOwnProperty.call(l,s)){if(n.indexOf(s)>=0)continue;c[s]=l[s]}return c}const Zb=g.forwardRef((l,n)=>{let{component:c}=l,s=Qb(l,Xb);const u=kb(s);return h.jsx(c,Object.assign({ref:n},u))});function Kb({in:l,onTransition:n}){const c=g.useRef(null),s=g.useRef(!0),u=pl(n);return Ey(()=>{if(!c.current)return;let f=!1;return u({in:l,element:c.current,initial:s.current,isStale:()=>f}),()=>{f=!0}},[l,u]),Ey(()=>(s.current=!1,()=>{s.current=!0}),[]),c}function $b({children:l,in:n,onExited:c,onEntered:s,transition:u}){const[f,d]=g.useState(!n);n&&f&&d(!1);const y=Kb({in:!!n,onTransition:p=>{const b=()=>{p.isStale()||(p.in?s==null||s(p.element,p.initial):(d(!0),c==null||c(p.element)))};Promise.resolve(u(p)).then(b,R=>{throw p.in||d(!0),R})}}),v=rf(y,$u(l));return f&&!n?null:g.cloneElement(l,{ref:v})}function Ty(l,n,c){return l?h.jsx(Zb,Object.assign({},c,{component:l})):n?h.jsx($b,Object.assign({},c,{transition:n})):h.jsx(Vb,Object.assign({},c))}const Fb=["show","role","className","style","children","backdrop","keyboard","onBackdropClick","onEscapeKeyDown","transition","runTransition","backdropTransition","runBackdropTransition","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","manager","container","onShow","onHide","onExit","onExited","onExiting","onEnter","onEntering","onEntered"];function Jb(l,n){if(l==null)return{};var c={};for(var s in l)if({}.hasOwnProperty.call(l,s)){if(n.indexOf(s)>=0)continue;c[s]=l[s]}return c}let Ro;function Pb(l){return Ro||(Ro=new uf({ownerDocument:l==null?void 0:l.document})),Ro}function Wb(l){const n=tf(),c=l||Pb(n),s=g.useRef({dialog:null,backdrop:null});return Object.assign(s.current,{add:()=>c.add(s.current),remove:()=>c.remove(s.current),isTopModal:()=>c.isTopModal(s.current),setDialogRef:g.useCallback(u=>{s.current.dialog=u},[]),setBackdropRef:g.useCallback(u=>{s.current.backdrop=u},[])})}const jp=g.forwardRef((l,n)=>{let{show:c=!1,role:s="dialog",className:u,style:f,children:d,backdrop:y=!0,keyboard:v=!0,onBackdropClick:p,onEscapeKeyDown:b,transition:R,runTransition:S,backdropTransition:_,runBackdropTransition:O,autoFocus:H=!0,enforceFocus:U=!0,restoreFocus:M=!0,restoreFocusOptions:q,renderDialog:Y,renderBackdrop:J=De=>h.jsx("div",Object.assign({},De)),manager:k,container:N,onShow:W,onHide:ie=()=>{},onExit:X,onExited:I,onExiting:de,onEnter:Ne,onEntering:Ye,onEntered:Be}=l,ze=Jb(l,Fb);const K=tf(),ce=qb(N),ne=Wb(k),Re=sb(),T=ob(c),[Q,le]=g.useState(!c),te=g.useRef(null);g.useImperativeHandle(n,()=>ne,[ne]),ri&&!T&&c&&(te.current=xo(K==null?void 0:K.document)),c&&Q&&le(!1);const P=pl(()=>{if(ne.add(),Ee.current=Bu(document,"keydown",Ce),Le.current=Bu(document,"focus",()=>setTimeout(ye),!0),W&&W(),H){var De,Rt;const St=xo((De=(Rt=ne.dialog)==null?void 0:Rt.ownerDocument)!=null?De:K==null?void 0:K.document);ne.dialog&&St&&!by(ne.dialog,St)&&(te.current=St,ne.dialog.focus())}}),ge=pl(()=>{if(ne.remove(),Ee.current==null||Ee.current(),Le.current==null||Le.current(),M){var De;(De=te.current)==null||De.focus==null||De.focus(q),te.current=null}});g.useEffect(()=>{!c||!ce||P()},[c,ce,P]),g.useEffect(()=>{Q&&ge()},[Q,ge]),Hb(()=>{ge()});const ye=pl(()=>{if(!U||!Re()||!ne.isTopModal())return;const De=xo(K==null?void 0:K.document);ne.dialog&&De&&!by(ne.dialog,De)&&ne.dialog.focus()}),Je=pl(De=>{De.target===De.currentTarget&&(p==null||p(De),y===!0&&ie())}),Ce=pl(De=>{v&&PE(De)&&ne.isTopModal()&&(b==null||b(De),De.defaultPrevented||ie())}),Le=g.useRef(),Ee=g.useRef(),Ze=(...De)=>{le(!0),I==null||I(...De)};if(!ce)return null;const vt=Object.assign({role:s,ref:ne.setDialogRef,"aria-modal":s==="dialog"?!0:void 0},ze,{style:f,className:u,tabIndex:-1});let it=Y?Y(vt):h.jsx("div",Object.assign({},vt,{children:g.cloneElement(d,{role:"document"})}));it=Ty(R,S,{unmountOnExit:!0,mountOnEnter:!0,appear:!0,in:!!c,onExit:X,onExiting:de,onExited:Ze,onEnter:Ne,onEntering:Ye,onEntered:Be,children:it});let lt=null;return y&&(lt=J({ref:ne.setBackdropRef,onClick:Je}),lt=Ty(_,O,{in:!!c,appear:!0,mountOnEnter:!0,unmountOnExit:!0,children:lt})),h.jsx(h.Fragment,{children:ii.createPortal(h.jsxs(h.Fragment,{children:[lt,it]}),ce)})});jp.displayName="Modal";const Ib=Object.assign(jp,{Manager:uf});function eS(l,n){return l.classList?l.classList.contains(n):(" "+(l.className.baseVal||l.className)+" ").indexOf(" "+n+" ")!==-1}function tS(l,n){l.classList?l.classList.add(n):eS(l,n)||(typeof l.className=="string"?l.className=l.className+" "+n:l.setAttribute("class",(l.className&&l.className.baseVal||"")+" "+n))}function Ny(l,n){return l.replace(new RegExp("(^|\\s)"+n+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function nS(l,n){l.classList?l.classList.remove(n):typeof l.className=="string"?l.className=Ny(l.className,n):l.setAttribute("class",Ny(l.className&&l.className.baseVal||"",n))}const ni={FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"};class aS extends uf{adjustAndStore(n,c,s){const u=c.style[n];c.dataset[n]=u,gl(c,{[n]:`${parseFloat(gl(c,n))+s}px`})}restore(n,c){const s=c.dataset[n];s!==void 0&&(delete c.dataset[n],gl(c,{[n]:s}))}setContainerStyle(n){super.setContainerStyle(n);const c=this.getElement();if(tS(c,"modal-open"),!n.scrollBarWidth)return;const s=this.isRTL?"paddingLeft":"paddingRight",u=this.isRTL?"marginLeft":"marginRight";ti(c,ni.FIXED_CONTENT).forEach(f=>this.adjustAndStore(s,f,n.scrollBarWidth)),ti(c,ni.STICKY_CONTENT).forEach(f=>this.adjustAndStore(u,f,-n.scrollBarWidth)),ti(c,ni.NAVBAR_TOGGLER).forEach(f=>this.adjustAndStore(u,f,n.scrollBarWidth))}removeContainerStyle(n){super.removeContainerStyle(n);const c=this.getElement();nS(c,"modal-open");const s=this.isRTL?"paddingLeft":"paddingRight",u=this.isRTL?"marginLeft":"marginRight";ti(c,ni.FIXED_CONTENT).forEach(f=>this.restore(s,f)),ti(c,ni.STICKY_CONTENT).forEach(f=>this.restore(u,f)),ti(c,ni.NAVBAR_TOGGLER).forEach(f=>this.restore(u,f))}}let To;function lS(l){return To||(To=new aS(l)),To}const Op=g.forwardRef(({className:l,bsPrefix:n,as:c="div",...s},u)=>(n=Qe(n,"modal-body"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));Op.displayName="ModalBody";const Dp=g.createContext({onHide(){}}),cf=g.forwardRef(({bsPrefix:l,className:n,contentClassName:c,centered:s,size:u,fullscreen:f,children:d,scrollable:y,...v},p)=>{l=Qe(l,"modal");const b=`${l}-dialog`,R=typeof f=="string"?`${l}-fullscreen-${f}`:`${l}-fullscreen`;return h.jsx("div",{...v,ref:p,className:Ae(b,n,u&&`${l}-${u}`,s&&`${b}-centered`,y&&`${b}-scrollable`,f&&R),children:h.jsx("div",{className:Ae(`${l}-content`,c),children:d})})});cf.displayName="ModalDialog";const wp=g.forwardRef(({className:l,bsPrefix:n,as:c="div",...s},u)=>(n=Qe(n,"modal-footer"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));wp.displayName="ModalFooter";const iS=g.forwardRef(({closeLabel:l="Close",closeVariant:n,closeButton:c=!1,onHide:s,children:u,...f},d)=>{const y=g.useContext(Dp),v=Ho(()=>{y==null||y.onHide(),s==null||s()});return h.jsxs("div",{ref:d,...f,children:[u,c&&h.jsx(Io,{"aria-label":l,variant:n,onClick:v})]})}),Ap=g.forwardRef(({bsPrefix:l,className:n,closeLabel:c="Close",closeButton:s=!1,...u},f)=>(l=Qe(l,"modal-header"),h.jsx(iS,{ref:f,...u,className:Ae(n,l),closeLabel:c,closeButton:s})));Ap.displayName="ModalHeader";const rS=Po("h4"),Mp=g.forwardRef(({className:l,bsPrefix:n,as:c=rS,...s},u)=>(n=Qe(n,"modal-title"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));Mp.displayName="ModalTitle";function uS(l){return h.jsx(Wo,{...l,timeout:null})}function cS(l){return h.jsx(Wo,{...l,timeout:null})}const zp=g.forwardRef(({bsPrefix:l,className:n,style:c,dialogClassName:s,contentClassName:u,children:f,dialogAs:d=cf,"data-bs-theme":y,"aria-labelledby":v,"aria-describedby":p,"aria-label":b,show:R=!1,animation:S=!0,backdrop:_=!0,keyboard:O=!0,onEscapeKeyDown:H,onShow:U,onHide:M,container:q,autoFocus:Y=!0,enforceFocus:J=!0,restoreFocus:k=!0,restoreFocusOptions:N,onEntered:W,onExit:ie,onExiting:X,onEnter:I,onEntering:de,onExited:Ne,backdropClassName:Ye,manager:Be,...ze},K)=>{const[ce,ne]=g.useState({}),[Re,T]=g.useState(!1),Q=g.useRef(!1),le=g.useRef(!1),te=g.useRef(null),[P,ge]=Lb(),ye=rp(K,ge),Je=Ho(M),Ce=BE();l=Qe(l,"modal");const Le=g.useMemo(()=>({onHide:Je}),[Je]);function Ee(){return Be||lS({isRTL:Ce})}function Ze(_e){if(!ri)return;const Ie=Ee().getScrollbarWidth()>0,Gt=_e.scrollHeight>Ku(_e).documentElement.clientHeight;ne({paddingRight:Ie&&!Gt?_y():void 0,paddingLeft:!Ie&&Gt?_y():void 0})}const vt=Ho(()=>{P&&Ze(P.dialog)});xb(()=>{Uo(window,"resize",vt),te.current==null||te.current()});const it=()=>{Q.current=!0},lt=_e=>{Q.current&&P&&_e.target===P.dialog&&(le.current=!0),Q.current=!1},De=()=>{T(!0),te.current=ip(P.dialog,()=>{T(!1)})},Rt=_e=>{_e.target===_e.currentTarget&&De()},St=_e=>{if(_==="static"){Rt(_e);return}if(le.current||_e.target!==_e.currentTarget){le.current=!1;return}M==null||M()},Pt=_e=>{O?H==null||H(_e):(_e.preventDefault(),_==="static"&&De())},Zt=(_e,Ie)=>{_e&&Ze(_e),I==null||I(_e,Ie)},un=_e=>{te.current==null||te.current(),ie==null||ie(_e)},cn=(_e,Ie)=>{de==null||de(_e,Ie),lp(window,"resize",vt)},Ut=_e=>{_e&&(_e.style.display=""),Ne==null||Ne(_e),Uo(window,"resize",vt)},Ht=g.useCallback(_e=>h.jsx("div",{..._e,className:Ae(`${l}-backdrop`,Ye,!S&&"show")}),[S,Ye,l]),mt={...c,...ce};mt.display="block";const Kt=_e=>h.jsx("div",{role:"dialog",..._e,style:mt,className:Ae(n,l,Re&&`${l}-static`,!S&&"show"),onClick:_?St:void 0,onMouseUp:lt,"data-bs-theme":y,"aria-label":b,"aria-labelledby":v,"aria-describedby":p,children:h.jsx(d,{...ze,onMouseDown:it,className:s,contentClassName:u,children:f})});return h.jsx(Dp.Provider,{value:Le,children:h.jsx(Ib,{show:R,ref:ye,backdrop:_,container:q,keyboard:!0,autoFocus:Y,enforceFocus:J,restoreFocus:k,restoreFocusOptions:N,onEscapeKeyDown:Pt,onShow:U,onHide:M,onEnter:Zt,onEntering:cn,onEntered:W,onExit:un,onExiting:X,onExited:Ut,manager:Ee(),transition:S?uS:void 0,backdropTransition:S?cS:void 0,renderBackdrop:Ht,renderDialog:Kt})})});zp.displayName="Modal";const ir=Object.assign(zp,{Body:Op,Header:Ap,Title:Mp,Footer:wp,Dialog:cf,TRANSITION_DURATION:300,BACKDROP_TRANSITION_DURATION:150}),Rn=g.forwardRef(({bsPrefix:l,className:n,as:c="div",...s},u)=>{const f=Qe(l,"row"),d=tp(),y=np(),v=`${f}-cols`,p=[];return d.forEach(b=>{const R=s[b];delete s[b];let S;R!=null&&typeof R=="object"?{cols:S}=R:S=R;const _=b!==y?`-${b}`:"";S!=null&&p.push(`${v}${_}-${S}`)}),h.jsx(c,{ref:u,...s,className:Ae(n,f,...p)})});Rn.displayName="Row";const sS="/static/DY3vaYXT.svg";function oS(){const l=Ke.c(6),{user:n}=g.useContext(Fo),{pathname:c}=Xn();let s;l[0]===Symbol.for("react.memo_cache_sentinel")?(s=h.jsx(ln,{xs:10,children:h.jsx("div",{className:"nav-wrapper",children:h.jsxs("nav",{className:"header-nav",children:[h.jsx("a",{href:"https://geant.org/",children:h.jsx("img",{src:sS,alt:"GÉANT Logo"})}),h.jsxs("ul",{children:[h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://network.geant.org/",children:"NETWORK"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://geant.org/services/",children:"SERVICES"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://community.geant.org/",children:"COMMUNITY"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://tnc23.geant.org/",children:"TNC"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://geant.org/projects/",children:"PROJECTS"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://connect.geant.org/",children:"CONNECT"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://impact.geant.org/",children:"IMPACT"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://careers.geant.org/",children:"CAREERS"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://about.geant.org/",children:"ABOUT"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://connect.geant.org/community-news",children:"NEWS"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://resources.geant.org/",children:"RESOURCES"})}),h.jsx("li",{children:h.jsx(Tn,{className:"nav-link-entry",to:"/",children:"COMPENDIUM"})})]})]})})}),l[0]=s):s=l[0];let u;l[1]!==c||l[2]!==n.permissions.admin?(u=n.permissions.admin&&!c.includes("survey")&&h.jsx("div",{className:"nav-link",style:{float:"right"},children:h.jsx(Tn,{className:"nav-link-entry",to:"/survey",children:h.jsx("span",{children:"Go to Survey"})})}),l[1]=c,l[2]=n.permissions.admin,l[3]=u):u=l[3];let f;return l[4]!==u?(f=h.jsx("div",{className:"external-page-nav-bar",children:h.jsx(Ya,{children:h.jsxs(Rn,{children:[s,h.jsx(ln,{xs:2,children:u})]})})}),l[4]=u,l[5]=f):f=l[5],f}const fS="/static/A3T3A-a_.svg",dS="/static/DOOiIGTs.png";function hS(){const l=Ke.c(9);let n;l[0]===Symbol.for("react.memo_cache_sentinel")?(n=h.jsx("a",{href:"https://geant.org",children:h.jsx("img",{src:fS,className:"m-3",style:{maxWidth:"100px"},alt:"GÉANT Logo"})}),l[0]=n):n=l[0];let c;l[1]===Symbol.for("react.memo_cache_sentinel")?(c=h.jsxs(ln,{children:[n,h.jsx("img",{src:dS,className:"m-3",style:{maxWidth:"200px"},alt:"European Union Flag"})]}),l[1]=c):c=l[1];let s,u;l[2]===Symbol.for("react.memo_cache_sentinel")?(s=h.jsx("a",{className:"mx-3 footer-link",href:"https://geant.org/Disclaimer/",children:"Disclaimer"}),u=h.jsx("wbr",{}),l[2]=s,l[3]=u):(s=l[2],u=l[3]);let f,d;l[4]===Symbol.for("react.memo_cache_sentinel")?(f=h.jsx("a",{className:"mx-3 footer-link",href:"https://geant.org/geant-anti-slavery-policy/",children:"GEANT Anti‑Slavery Policy"}),d=h.jsx("wbr",{}),l[4]=f,l[5]=d):(f=l[4],d=l[5]);let y,v;l[6]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("a",{className:"mx-3 footer-link",href:"https://geant.org/Privacy-Notice/",children:"Privacy Policy"}),v=h.jsx("wbr",{}),l[6]=y,l[7]=v):(y=l[6],v=l[7]);let p;return l[8]===Symbol.for("react.memo_cache_sentinel")?(p=h.jsx("footer",{className:"page-footer pt-3",children:h.jsx(Ya,{children:h.jsxs(Rn,{children:[c,h.jsx(ln,{className:"mt-4 text-end",children:h.jsxs("span",{children:[s,u,"|",f,d,"|",y,v,"|",h.jsx("a",{className:"mx-3 footer-link",style:{cursor:"pointer"},onClick:mS,children:"Analytics Consent"})]})})]})})}),l[8]=p):p=l[8],p}function mS(){localStorage.removeItem("matomo_consent"),window.location.reload()}const Lp="/static/C4lsyu6A.svg",Up="/static/DhA-EmEc.svg";function Hp(){const l=Ke.c(16),n=g.useContext(ep);let c;l[0]!==n?(c=O=>n==null?void 0:n.trackPageView(O),l[0]=n,l[1]=c):c=l[1];const s=c;let u;l[2]!==n?(u=O=>n==null?void 0:n.trackEvent(O),l[2]=n,l[3]=u):u=l[3];const f=u;let d;l[4]!==n?(d=()=>n==null?void 0:n.trackEvents(),l[4]=n,l[5]=d):d=l[5];const y=d;let v;l[6]!==n?(v=O=>n==null?void 0:n.trackLink(O),l[6]=n,l[7]=v):v=l[7];const p=v,b=yS;let R;l[8]!==n?(R=(O,...H)=>{const U=H;n==null||n.pushInstruction(O,...U)},l[8]=n,l[9]=R):R=l[9];const S=R;let _;return l[10]!==S||l[11]!==f||l[12]!==y||l[13]!==p||l[14]!==s?(_={trackEvent:f,trackEvents:y,trackPageView:s,trackLink:p,enableLinkTracking:b,pushInstruction:S},l[10]=S,l[11]=f,l[12]=y,l[13]=p,l[14]=s,l[15]=_):_=l[15],_}function yS(){}function Bp(){const l=Ke.c(13),{trackPageView:n}=Hp();let c,s;l[0]!==n?(c=()=>{n({documentTitle:"GEANT Compendium Landing Page"})},s=[n],l[0]=n,l[1]=c,l[2]=s):(c=l[1],s=l[2]),g.useEffect(c,s);let u;l[3]===Symbol.for("react.memo_cache_sentinel")?(u=h.jsx("h1",{className:"geant-header",children:"THE GÉANT COMPENDIUM OF NRENS"}),l[3]=u):u=l[3];let f;l[4]===Symbol.for("react.memo_cache_sentinel")?(f=h.jsx(Rn,{children:h.jsxs("div",{className:"center-text",children:[u,h.jsxs("div",{className:"wordwrap pt-4",children:[h.jsx("p",{style:{textAlign:"left",fontSize:"20px"},children:"Each year GÉANT invites European National Research and Eduction Networks to fill in a questionnaire asking about their network, their organisation, standards and policies, connected users, and the services they offer their users. This Compendium of responses is an authoritative reference source for anyone with an interest in the development of research and education networking in Europe and beyond. No two NRENs are identical, with great diversity in their structures, funding, size, and focus."}),h.jsx("p",{style:{textAlign:"left",fontSize:"20px"},children:"The GÉANT Compendium of NRENs Report is published annually, using both data from the Compendium from other sources, including surveys and studies carried out within different teams within GÉANT and the NREN community. The Report gives a broad overview of the European NREN landscape, identifying developments and trends."}),h.jsx("p",{style:{textAlign:"left",fontSize:"20px"},children:"Compendium Data, the responses from the NRENs, are made available to be viewed and downloaded. Graphs, charts, and tables can be customised to show as many or few NRENs as required, across different years. These can be downloaded as images or in PDF form."})]})]})}),l[4]=f):f=l[4];let d;l[5]===Symbol.for("react.memo_cache_sentinel")?(d={backgroundColor:"white"},l[5]=d):d=l[5];let y;l[6]===Symbol.for("react.memo_cache_sentinel")?(y={width:"18rem"},l[6]=y):y=l[6];let v;l[7]===Symbol.for("react.memo_cache_sentinel")?(v=h.jsx(Yn.Img,{src:Lp}),l[7]=v):v=l[7];let p;l[8]===Symbol.for("react.memo_cache_sentinel")?(p=h.jsx(Yn.Title,{children:"Compendium Data"}),l[8]=p):p=l[8];let b;l[9]===Symbol.for("react.memo_cache_sentinel")?(b=h.jsx(ln,{align:"center",children:h.jsx(Yn,{border:"light",style:y,children:h.jsxs(Tn,{to:"/data",className:"link-text",children:[v,h.jsxs(Yn.Body,{children:[p,h.jsx(Yn.Text,{children:h.jsx("span",{children:"Statistical representation of the annual Compendium Survey data is available here"})})]})]})})}),l[9]=b):b=l[9];let R;l[10]===Symbol.for("react.memo_cache_sentinel")?(R={width:"18rem"},l[10]=R):R=l[10];let S;l[11]===Symbol.for("react.memo_cache_sentinel")?(S=h.jsx(Yn.Img,{src:Up}),l[11]=S):S=l[11];let _;return l[12]===Symbol.for("react.memo_cache_sentinel")?(_=h.jsxs(Ya,{className:"py-5 grey-container",children:[f,h.jsx(Rn,{children:h.jsx(ln,{children:h.jsx(Ya,{style:d,className:"rounded-border",children:h.jsxs(Rn,{className:"justify-content-md-center",children:[b,h.jsx(ln,{align:"center",children:h.jsx(Yn,{border:"light",style:R,children:h.jsxs("a",{href:"https://resources.geant.org/geant-compendia/",className:"link-text",target:"_blank",rel:"noreferrer",children:[S,h.jsxs(Yn.Body,{children:[h.jsx(Yn.Title,{children:"Compendium Reports"}),h.jsx(Yn.Text,{children:"A GÉANT Compendium Report is published annually, drawing on data from the Compendium Survey filled in by NRENs, complemented by information from other surveys"})]})]})})})]})})})})]}),l[12]=_):_=l[12],_}var qp={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Cy=Yt.createContext&&Yt.createContext(qp),pS=["attr","size","title"];function vS(l,n){if(l==null)return{};var c=gS(l,n),s,u;if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(l);for(u=0;u<f.length;u++)s=f[u],!(n.indexOf(s)>=0)&&Object.prototype.propertyIsEnumerable.call(l,s)&&(c[s]=l[s])}return c}function gS(l,n){if(l==null)return{};var c={};for(var s in l)if(Object.prototype.hasOwnProperty.call(l,s)){if(n.indexOf(s)>=0)continue;c[s]=l[s]}return c}function Yu(){return Yu=Object.assign?Object.assign.bind():function(l){for(var n=1;n<arguments.length;n++){var c=arguments[n];for(var s in c)Object.prototype.hasOwnProperty.call(c,s)&&(l[s]=c[s])}return l},Yu.apply(this,arguments)}function jy(l,n){var c=Object.keys(l);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(l);n&&(s=s.filter(function(u){return Object.getOwnPropertyDescriptor(l,u).enumerable})),c.push.apply(c,s)}return c}function Gu(l){for(var n=1;n<arguments.length;n++){var c=arguments[n]!=null?arguments[n]:{};n%2?jy(Object(c),!0).forEach(function(s){ES(l,s,c[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(c)):jy(Object(c)).forEach(function(s){Object.defineProperty(l,s,Object.getOwnPropertyDescriptor(c,s))})}return l}function ES(l,n,c){return n=bS(n),n in l?Object.defineProperty(l,n,{value:c,enumerable:!0,configurable:!0,writable:!0}):l[n]=c,l}function bS(l){var n=SS(l,"string");return typeof n=="symbol"?n:n+""}function SS(l,n){if(typeof l!="object"||!l)return l;var c=l[Symbol.toPrimitive];if(c!==void 0){var s=c.call(l,n||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(n==="string"?String:Number)(l)}function Vp(l){return l&&l.map((n,c)=>Yt.createElement(n.tag,Gu({key:c},n.attr),Vp(n.child)))}function Yp(l){return n=>Yt.createElement(xS,Yu({attr:Gu({},l.attr)},n),Vp(l.child))}function xS(l){var n=c=>{var{attr:s,size:u,title:f}=l,d=vS(l,pS),y=u||c.size||"1em",v;return c.className&&(v=c.className),l.className&&(v=(v?v+" ":"")+l.className),Yt.createElement("svg",Yu({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},c.attr,s,d,{className:v,style:Gu(Gu({color:l.color||c.color},c.style),l.style),height:y,width:y,xmlns:"http://www.w3.org/2000/svg"}),f&&Yt.createElement("title",null,f),l.children)};return Cy!==void 0?Yt.createElement(Cy.Consumer,null,c=>n(c)):n(qp)}function _S(l){return Yp({tag:"svg",attr:{viewBox:"0 0 1024 1024",fill:"currentColor",fillRule:"evenodd"},child:[{tag:"path",attr:{d:"M799.855 166.312c.023.007.043.018.084.059l57.69 57.69c.041.041.052.06.059.084a.118.118 0 0 1 0 .069c-.007.023-.018.042-.059.083L569.926 512l287.703 287.703c.041.04.052.06.059.083a.118.118 0 0 1 0 .07c-.007.022-.018.042-.059.083l-57.69 57.69c-.041.041-.06.052-.084.059a.118.118 0 0 1-.069 0c-.023-.007-.042-.018-.083-.059L512 569.926 224.297 857.629c-.04.041-.06.052-.083.059a.118.118 0 0 1-.07 0c-.022-.007-.042-.018-.083-.059l-57.69-57.69c-.041-.041-.052-.06-.059-.084a.118.118 0 0 1 0-.069c.007-.023.018-.042.059-.083L454.073 512 166.371 224.297c-.041-.04-.052-.06-.059-.083a.118.118 0 0 1 0-.07c.007-.022.018-.042.059-.083l57.69-57.69c.041-.041.06-.052.084-.059a.118.118 0 0 1 .069 0c.023.007.042.018.083.059L512 454.073l287.703-287.702c.04-.041.06-.052.083-.059a.118.118 0 0 1 .07 0Z"},child:[]}]})(l)}function RS(l){return Yp({tag:"svg",attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8Z"},child:[]},{tag:"path",attr:{d:"M192 474h672q8 0 8 8v60q0 8-8 8H160q-8 0-8-8v-60q0-8 8-8Z"},child:[]}]})(l)}const rr=l=>{const n=Ke.c(23),{title:c,children:s,startCollapsed:u,theme:f}=l,d=f===void 0?"":f,[y,v]=g.useState(!!u);let p;n[0]===Symbol.for("react.memo_cache_sentinel")?(p={color:"white",paddingBottom:"3px",marginTop:"3px",marginLeft:"3px",scale:"1.3"},n[0]=p):p=n[0];let b=p;if(d){let k;n[1]===Symbol.for("react.memo_cache_sentinel")?(k={...b,color:"black",fontWeight:"bold"},n[1]=k):k=n[1],b=k}const R=`collapsible-box${d} p-0`;let S;n[2]!==c?(S=h.jsx(ln,{children:h.jsx("h1",{className:"bold-caps-16pt dark-teal pt-3 ps-3",children:c})}),n[2]=c,n[3]=S):S=n[3];const _=`toggle-btn${d} p-${d?3:2}`;let O;n[4]!==y?(O=()=>v(!y),n[4]=y,n[5]=O):O=n[5];let H;n[6]!==y||n[7]!==b?(H=y?h.jsx(RS,{style:b}):h.jsx(_S,{style:b}),n[6]=y,n[7]=b,n[8]=H):H=n[8];let U;n[9]!==_||n[10]!==O||n[11]!==H?(U=h.jsx(ln,{className:"flex-grow-0 flex-shrink-1",children:h.jsx("div",{className:_,onClick:O,children:H})}),n[9]=_,n[10]=O,n[11]=H,n[12]=U):U=n[12];let M;n[13]!==S||n[14]!==U?(M=h.jsxs(Rn,{children:[S,U]}),n[13]=S,n[14]=U,n[15]=M):M=n[15];const q=`collapsible-content${y?" collapsed":""}`;let Y;n[16]!==s||n[17]!==q?(Y=h.jsx("div",{className:q,children:s}),n[16]=s,n[17]=q,n[18]=Y):Y=n[18];let J;return n[19]!==Y||n[20]!==R||n[21]!==M?(J=h.jsxs("div",{className:R,children:[M,Y]}),n[19]=Y,n[20]=R,n[21]=M,n[22]=J):J=n[22],J};function TS(l){const n=Ke.c(8),{section:c}=l;let s;n[0]===Symbol.for("react.memo_cache_sentinel")?(s={display:"flex",alignSelf:"right",lineHeight:"1.5rem",marginTop:"0.5rem"},n[0]=s):s=n[0];let u,f;n[1]===Symbol.for("react.memo_cache_sentinel")?(u=h.jsx("br",{}),f={float:"right"},n[1]=u,n[2]=f):(u=n[1],f=n[2]);let d;n[3]!==c?(d=h.jsx("div",{style:s,children:h.jsxs("span",{children:["Compendium ",u,h.jsx("span",{style:f,children:c})]})}),n[3]=c,n[4]=d):d=n[4];let y;n[5]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("img",{src:Up,style:{maxWidth:"4rem"},alt:"Compendium Data logo"}),n[5]=y):y=n[5];let v;return n[6]!==d?(v=h.jsxs("div",{className:"bold-caps-17pt section-container",children:[d,y]}),n[6]=d,n[7]=v):v=n[7],v}function NS(l){const n=Ke.c(14),{type:c}=l;let s="";c=="data"?s=" compendium-data-header":c=="reports"&&(s=" compendium-reports-header");let u;n[0]===Symbol.for("react.memo_cache_sentinel")?(u={marginTop:"0.5rem"},n[0]=u):u=n[0];const f=c==="data"?"/data":"/";let d;n[1]===Symbol.for("react.memo_cache_sentinel")?(d={textDecoration:"none",color:"white"},n[1]=d):d=n[1];const y=c==="data"?"Data":"Reports";let v;n[2]!==y?(v=h.jsxs("span",{children:["Compendium ",y]}),n[2]=y,n[3]=v):v=n[3];let p;n[4]!==f||n[5]!==v?(p=h.jsx(ln,{sm:8,children:h.jsx("h1",{className:"bold-caps-30pt",style:u,children:h.jsx(Tn,{to:f,style:d,children:v})})}),n[4]=f,n[5]=v,n[6]=p):p=n[6];let b;n[7]===Symbol.for("react.memo_cache_sentinel")?(b={color:"inherit"},n[7]=b):b=n[7];let R;n[8]===Symbol.for("react.memo_cache_sentinel")?(R=h.jsx(ln,{sm:4,children:h.jsx("a",{style:b,href:"https://resources.geant.org/geant-compendia/",target:"_blank",rel:"noreferrer",children:h.jsx(TS,{section:"Reports"})})}),n[8]=R):R=n[8];let S;n[9]!==p?(S=h.jsx(Ya,{children:h.jsxs(Rn,{children:[p,R]})}),n[9]=p,n[10]=S):S=n[10];let _;return n[11]!==s||n[12]!==S?(_=h.jsx("div",{className:s,children:S}),n[11]=s,n[12]=S,n[13]=_):_=n[13],_}function CS(l){const n=Ke.c(8),{children:c,type:s}=l;let u="";s=="data"?u=" compendium-data-banner":s=="reports"&&(u=" compendium-reports-banner");let f,d;n[0]===Symbol.for("react.memo_cache_sentinel")?(f=h.jsx("img",{src:Lp,style:{maxWidth:"7rem",marginBottom:"1rem"},alt:"Compendium Data logo"}),d={display:"flex",alignSelf:"right"},n[0]=f,n[1]=d):(f=n[0],d=n[1]);let y;n[2]===Symbol.for("react.memo_cache_sentinel")?(y={paddingTop:"1rem"},n[2]=y):y=n[2];let v;n[3]!==c?(v=h.jsx(Ya,{children:h.jsx(Rn,{children:h.jsx(Rn,{children:h.jsxs("div",{className:"section-container",children:[f,h.jsx("div",{style:d,children:h.jsx("div",{className:"center-text",style:y,children:c})})]})})})}),n[3]=c,n[4]=v):v=n[4];let p;return n[5]!==u||n[6]!==v?(p=h.jsx("div",{className:u,children:v}),n[5]=u,n[6]=v,n[7]=p):p=n[7],p}var li=(l=>(l.Organisation="ORGANISATION",l.Policy="STANDARDS AND POLICIES",l.ConnectedUsers="CONNECTED USERS",l.Network="NETWORK",l.Services="SERVICES",l))(li||{}),jS=(l=>(l.CSV="CSV",l.EXCEL="EXCEL",l))(jS||{}),OS=(l=>(l.PNG="png",l.JPEG="jpeg",l.SVG="svg",l))(OS||{});const V2={universities:"Universities & Other (ISCED 6-8)",further_education:"Further education (ISCED 4-5)",secondary_schools:"Secondary schools (ISCED 2-3)",primary_schools:"Primary schools (ISCED 1)",institutes:"Research Institutes",cultural:"Libraries, Museums, Archives, Cultural institutions",hospitals:"Non-university public Hospitals",government:"Government departments (national, regional, local)",iros:"International (virtual) research organisations",for_profit_orgs:"For-profit organisations"},Y2={commercial_r_and_e:"Commercial R&E traffic only",commercial_general:"Commercial general",commercial_collaboration:"Commercial for collaboration only (project/time limited)",commercial_service_provider:"Commercial Service Provider",university_spin_off:"University Spin Off/Incubator"},G2={collaboration:"Connection to your network for collaboration with R&E users",service_supplier:"Connection to your network for supplying services for R&E",direct_peering:"Direct peering (e.g. direct peering or cloud peering)"};function DS(){const l=Ke.c(7),{preview:n,setPreview:c}=g.useContext(Iy),{user:s}=g.useContext(Fo),[u]=lE();let f;l[0]!==u?(f=u.get("preview"),l[0]=u,l[1]=f):f=l[1];const d=f;let y,v;return l[2]!==d||l[3]!==c||l[4]!==s?(y=()=>{d!==null&&(s.permissions.admin||s.role=="observer")&&c(!0)},v=[d,c,s],l[2]=d,l[3]=c,l[4]=s,l[5]=y,l[6]=v):(y=l[5],v=l[6]),g.useEffect(y,v),n}function yr(l){const n=Ke.c(9),{to:c,children:s}=l,u=window.location.pathname===c,f=g.useRef(null);let d,y;n[0]!==u?(d=()=>{u&&f.current&&f.current.scrollIntoView({behavior:"smooth",block:"center"})},y=[u],n[0]=u,n[1]=d,n[2]=y):(d=n[1],y=n[2]),g.useEffect(d,y);let v;n[3]!==s||n[4]!==u?(v=u?h.jsx("b",{children:s}):s,n[3]=s,n[4]=u,n[5]=v):v=n[5];let p;return n[6]!==v||n[7]!==c?(p=h.jsx(Rn,{children:h.jsx(Tn,{to:c,className:"link-text-underline",ref:f,children:v})}),n[6]=v,n[7]=c,n[8]=p):p=n[8],p}const se={budget:"Budget of NRENs per Year",funding:"Income Source of NRENs",charging:"Charging Mechanism of NRENs","employee-count":"Number of NREN Employees",roles:"Roles of NREN employees (Technical v. Non-Technical)",employment:"Types of Employment within NRENs",suborganisations:"NREN Sub-Organisations",parentorganisation:"NREN Parent Organisations","ec-projects":"NREN Involvement in European Commission Projects",policy:"NREN Policies",audits:"External and Internal Audits of Information Security Management Systems","business-continuity":"NREN Business Continuity Planning","central-procurement":"Value of Software Procured for Customers by NRENs","crisis-management":"Crisis Management Procedures","crisis-exercise":"Crisis Exercises - NREN Operation and Participation",eosc_listings:"NREN Services Listed on the EOSC Portal","security-control":"Security Controls Used by NRENs","services-offered":"Services Offered by NRENs by Types of Users","corporate-strategy":"NREN Corporate Strategies","service-level-targets":"NRENs Offering Service Level Targets","service-management-framework":"NRENs Operating a Formal Service Management Framework","institutions-urls":"Webpages Listing Institutions and Organisations Connected to NREN Networks","connected-proportion":"Proportion of Different Categories of Institutions Served by NRENs","connectivity-level":"Level of IP Connectivity by Institution Type","connection-carrier":"Methods of Carrying IP Traffic to Users","connectivity-load":"Connectivity Load","connectivity-growth":"Connectivity Growth","remote-campuses":"NREN Connectivity to Remote Campuses in Other Countries","commercial-charging-level":"Commercial Charging Level","commercial-connectivity":"Commercial Connectivity","traffic-volume":"NREN Traffic - NREN Customers & External Networks","iru-duration":"Average Duration of IRU leases of Fibre by NRENs","fibre-light":"Approaches to lighting NREN fibre networks","dark-fibre-lease":"Kilometres of Leased Dark Fibre (National)","dark-fibre-lease-international":"Kilometres of Leased Dark Fibre (International)","dark-fibre-installed":"Kilometres of Installed Dark Fibre","network-map":"NREN Network Maps","monitoring-tools":"Tools for Monitoring or Troubleshooting the Network - Offered to Client Institutions","pert-team":"NRENs with Performance Enhancement Response Teams","passive-monitoring":"Methods for Passively Monitoring International Traffic","traffic-stats":"Traffic Statistics","weather-map":"NREN Online Network Weather Maps","certificate-provider":"Certification Services used by NRENs","siem-vendors":"Vendors of SIEM/SOC systems used by NRENs","alien-wave":"NREN Use of 3rd Party Alienwave/Lightpath Services","alien-wave-internal":"Internal NREN Use of Alien Waves","capacity-largest-link":"Capacity of the Largest Link in an NREN Network","external-connections":"NREN External IP Connections","capacity-core-ip":"NREN Core IP Capacity","non-rne-peers":"Number of Non-R&E Networks NRENs Peer With","traffic-ratio":"Types of traffic in NREN networks (Commodity v. Research & Education)","ops-automation":"NREN Automation of Operational Processes","network-automation":"Network Tasks for which NRENs Use Automation",nfv:"Kinds of Network Function Virtualisation used by NRENs","network-services":"NREN Network services matrix","isp-support-services":"NREN ISP support services matrix","security-services":"NREN Security services matrix","identity-services":"NREN Identity services matrix","collaboration-services":"NREN Collaboration services matrix","multimedia-services":"NREN Multimedia services matrix","storage-and-hosting-services":"NREN Storage and hosting services matrix","professional-services":"NREN Professional services matrix"};function wS(l){const n=Ke.c(52),{sidebar:c}=l,s=c===void 0?!1:c,u=s?yr:Tn,f=s?"":"link-text-underline";let d;n[0]!==s?(d=s&&h.jsx("h5",{children:"Organisation"}),n[0]=s,n[1]=d):d=n[1];let y;n[2]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("h6",{className:"section-title",children:"Budget, Income and Billing"}),n[2]=y):y=n[2];let v;n[3]===Symbol.for("react.memo_cache_sentinel")?(v=h.jsx("span",{children:se.budget}),n[3]=v):v=n[3];let p;n[4]!==u||n[5]!==f?(p=h.jsx(u,{to:"/budget",className:f,children:v}),n[4]=u,n[5]=f,n[6]=p):p=n[6];let b;n[7]===Symbol.for("react.memo_cache_sentinel")?(b=h.jsx("span",{children:se.funding}),n[7]=b):b=n[7];let R;n[8]!==u||n[9]!==f?(R=h.jsx(u,{to:"/funding",className:f,children:b}),n[8]=u,n[9]=f,n[10]=R):R=n[10];let S;n[11]===Symbol.for("react.memo_cache_sentinel")?(S=h.jsx("span",{children:se.charging}),n[11]=S):S=n[11];let _;n[12]!==u||n[13]!==f?(_=h.jsx(u,{to:"/charging",className:f,children:S}),n[12]=u,n[13]=f,n[14]=_):_=n[14];let O,H;n[15]===Symbol.for("react.memo_cache_sentinel")?(O=h.jsx("hr",{className:"fake-divider"}),H=h.jsx("h6",{className:"section-title",children:"Staff and Projects"}),n[15]=O,n[16]=H):(O=n[15],H=n[16]);let U;n[17]===Symbol.for("react.memo_cache_sentinel")?(U=h.jsx("span",{children:se["employee-count"]}),n[17]=U):U=n[17];let M;n[18]!==u||n[19]!==f?(M=h.jsx(u,{to:"/employee-count",className:f,children:U}),n[18]=u,n[19]=f,n[20]=M):M=n[20];let q;n[21]===Symbol.for("react.memo_cache_sentinel")?(q=h.jsx("span",{children:se.employment}),n[21]=q):q=n[21];let Y;n[22]!==u||n[23]!==f?(Y=h.jsx(u,{to:"/employment",className:f,children:q}),n[22]=u,n[23]=f,n[24]=Y):Y=n[24];let J;n[25]===Symbol.for("react.memo_cache_sentinel")?(J=h.jsx("span",{children:se.roles}),n[25]=J):J=n[25];let k;n[26]!==u||n[27]!==f?(k=h.jsx(u,{to:"/roles",className:f,children:J}),n[26]=u,n[27]=f,n[28]=k):k=n[28];let N;n[29]===Symbol.for("react.memo_cache_sentinel")?(N=h.jsx("span",{children:se.parentorganisation}),n[29]=N):N=n[29];let W;n[30]!==u||n[31]!==f?(W=h.jsx(u,{to:"/parentorganisation",className:f,children:N}),n[30]=u,n[31]=f,n[32]=W):W=n[32];let ie;n[33]===Symbol.for("react.memo_cache_sentinel")?(ie=h.jsx("span",{children:se.suborganisations}),n[33]=ie):ie=n[33];let X;n[34]!==u||n[35]!==f?(X=h.jsx(u,{to:"/suborganisations",className:f,children:ie}),n[34]=u,n[35]=f,n[36]=X):X=n[36];let I;n[37]===Symbol.for("react.memo_cache_sentinel")?(I=h.jsx("span",{children:se["ec-projects"]}),n[37]=I):I=n[37];let de;n[38]!==u||n[39]!==f?(de=h.jsx(u,{to:"/ec-projects",className:f,children:I}),n[38]=u,n[39]=f,n[40]=de):de=n[40];let Ne;return n[41]!==M||n[42]!==Y||n[43]!==k||n[44]!==W||n[45]!==d||n[46]!==X||n[47]!==de||n[48]!==p||n[49]!==R||n[50]!==_?(Ne=h.jsxs(h.Fragment,{children:[d,y,p,R,_,O,H,M,Y,k,W,X,de]}),n[41]=M,n[42]=Y,n[43]=k,n[44]=W,n[45]=d,n[46]=X,n[47]=de,n[48]=p,n[49]=R,n[50]=_,n[51]=Ne):Ne=n[51],Ne}function AS(l){const n=Ke.c(61),{sidebar:c}=l,s=c===void 0?!1:c,u=s?yr:Tn,f=s?"":"link-text-underline";let d;n[0]!==s?(d=s&&h.jsx("h5",{children:"Standards And Policies"}),n[0]=s,n[1]=d):d=n[1];let y;n[2]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("h6",{className:"section-title",children:"Policy & Portfolio"}),n[2]=y):y=n[2];let v;n[3]===Symbol.for("react.memo_cache_sentinel")?(v=h.jsx("span",{children:se["corporate-strategy"]}),n[3]=v):v=n[3];let p;n[4]!==u||n[5]!==f?(p=h.jsx(u,{to:"/corporate-strategy",className:f,children:v}),n[4]=u,n[5]=f,n[6]=p):p=n[6];let b;n[7]===Symbol.for("react.memo_cache_sentinel")?(b=h.jsx("span",{children:se.policy}),n[7]=b):b=n[7];let R;n[8]!==u||n[9]!==f?(R=h.jsx(u,{to:"/policy",className:f,children:b}),n[8]=u,n[9]=f,n[10]=R):R=n[10];let S;n[11]===Symbol.for("react.memo_cache_sentinel")?(S=h.jsx("span",{children:se["central-procurement"]}),n[11]=S):S=n[11];let _;n[12]!==u||n[13]!==f?(_=h.jsx(u,{to:"/central-procurement",className:f,children:S}),n[12]=u,n[13]=f,n[14]=_):_=n[14];let O;n[15]===Symbol.for("react.memo_cache_sentinel")?(O=h.jsx("span",{children:se["service-management-framework"]}),n[15]=O):O=n[15];let H;n[16]!==u||n[17]!==f?(H=h.jsx(u,{to:"/service-management-framework",className:f,children:O}),n[16]=u,n[17]=f,n[18]=H):H=n[18];let U;n[19]===Symbol.for("react.memo_cache_sentinel")?(U=h.jsx("span",{children:se["service-level-targets"]}),n[19]=U):U=n[19];let M;n[20]!==u||n[21]!==f?(M=h.jsx(u,{to:"/service-level-targets",className:f,children:U}),n[20]=u,n[21]=f,n[22]=M):M=n[22];let q;n[23]===Symbol.for("react.memo_cache_sentinel")?(q=h.jsx("span",{children:se["services-offered"]}),n[23]=q):q=n[23];let Y;n[24]!==u||n[25]!==f?(Y=h.jsx(u,{to:"/services-offered",className:f,children:q}),n[24]=u,n[25]=f,n[26]=Y):Y=n[26];let J;n[27]===Symbol.for("react.memo_cache_sentinel")?(J=h.jsx("h6",{className:"section-title",children:"Standards"}),n[27]=J):J=n[27];let k;n[28]===Symbol.for("react.memo_cache_sentinel")?(k=h.jsx("span",{children:se.audits}),n[28]=k):k=n[28];let N;n[29]!==u||n[30]!==f?(N=h.jsx(u,{to:"/audits",className:f,children:k}),n[29]=u,n[30]=f,n[31]=N):N=n[31];let W;n[32]===Symbol.for("react.memo_cache_sentinel")?(W=h.jsx("span",{children:se["business-continuity"]}),n[32]=W):W=n[32];let ie;n[33]!==u||n[34]!==f?(ie=h.jsx(u,{to:"/business-continuity",className:f,children:W}),n[33]=u,n[34]=f,n[35]=ie):ie=n[35];let X;n[36]===Symbol.for("react.memo_cache_sentinel")?(X=h.jsx("span",{children:se["crisis-management"]}),n[36]=X):X=n[36];let I;n[37]!==u||n[38]!==f?(I=h.jsx(u,{to:"/crisis-management",className:f,children:X}),n[37]=u,n[38]=f,n[39]=I):I=n[39];let de;n[40]===Symbol.for("react.memo_cache_sentinel")?(de=h.jsx("span",{children:se["crisis-exercise"]}),n[40]=de):de=n[40];let Ne;n[41]!==u||n[42]!==f?(Ne=h.jsx(u,{to:"/crisis-exercise",className:f,children:de}),n[41]=u,n[42]=f,n[43]=Ne):Ne=n[43];let Ye;n[44]===Symbol.for("react.memo_cache_sentinel")?(Ye=h.jsx("span",{children:se["security-control"]}),n[44]=Ye):Ye=n[44];let Be;n[45]!==u||n[46]!==f?(Be=h.jsx(u,{to:"/security-control",className:f,children:Ye}),n[45]=u,n[46]=f,n[47]=Be):Be=n[47];let ze;return n[48]!==H||n[49]!==M||n[50]!==Y||n[51]!==N||n[52]!==d||n[53]!==ie||n[54]!==I||n[55]!==Ne||n[56]!==Be||n[57]!==p||n[58]!==R||n[59]!==_?(ze=h.jsxs(h.Fragment,{children:[d,y,p,R,_,H,M,Y,J,N,ie,I,Ne,Be]}),n[48]=H,n[49]=M,n[50]=Y,n[51]=N,n[52]=d,n[53]=ie,n[54]=I,n[55]=Ne,n[56]=Be,n[57]=p,n[58]=R,n[59]=_,n[60]=ze):ze=n[60],ze}function MS(l){const n=Ke.c(52),{sidebar:c}=l,s=c===void 0?!1:c,u=s?yr:Tn,f=s?"":"link-text-underline";let d;n[0]!==s?(d=s&&h.jsx("h5",{children:"Connected Users"}),n[0]=s,n[1]=d):d=n[1];let y;n[2]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("h6",{className:"section-title",children:"Connected Users"}),n[2]=y):y=n[2];let v;n[3]===Symbol.for("react.memo_cache_sentinel")?(v=h.jsx("span",{children:se["institutions-urls"]}),n[3]=v):v=n[3];let p;n[4]!==u||n[5]!==f?(p=h.jsx(u,{to:"/institutions-urls",className:f,children:v}),n[4]=u,n[5]=f,n[6]=p):p=n[6];let b;n[7]===Symbol.for("react.memo_cache_sentinel")?(b=h.jsx("span",{children:se["connected-proportion"]}),n[7]=b):b=n[7];let R;n[8]!==u||n[9]!==f?(R=h.jsx(u,{to:"/connected-proportion",className:f,children:b}),n[8]=u,n[9]=f,n[10]=R):R=n[10];let S;n[11]===Symbol.for("react.memo_cache_sentinel")?(S=h.jsx("span",{children:se["connectivity-level"]}),n[11]=S):S=n[11];let _;n[12]!==u||n[13]!==f?(_=h.jsx(u,{to:"/connectivity-level",className:f,children:S}),n[12]=u,n[13]=f,n[14]=_):_=n[14];let O;n[15]===Symbol.for("react.memo_cache_sentinel")?(O=h.jsx("span",{children:se["connection-carrier"]}),n[15]=O):O=n[15];let H;n[16]!==u||n[17]!==f?(H=h.jsx(u,{to:"/connection-carrier",className:f,children:O}),n[16]=u,n[17]=f,n[18]=H):H=n[18];let U;n[19]===Symbol.for("react.memo_cache_sentinel")?(U=h.jsx("span",{children:se["connectivity-load"]}),n[19]=U):U=n[19];let M;n[20]!==u||n[21]!==f?(M=h.jsx(u,{to:"/connectivity-load",className:f,children:U}),n[20]=u,n[21]=f,n[22]=M):M=n[22];let q;n[23]===Symbol.for("react.memo_cache_sentinel")?(q=h.jsx("span",{children:se["connectivity-growth"]}),n[23]=q):q=n[23];let Y;n[24]!==u||n[25]!==f?(Y=h.jsx(u,{to:"/connectivity-growth",className:f,children:q}),n[24]=u,n[25]=f,n[26]=Y):Y=n[26];let J;n[27]===Symbol.for("react.memo_cache_sentinel")?(J=h.jsx("span",{children:se["remote-campuses"]}),n[27]=J):J=n[27];let k;n[28]!==u||n[29]!==f?(k=h.jsx(u,{to:"/remote-campuses",className:f,children:J}),n[28]=u,n[29]=f,n[30]=k):k=n[30];let N,W;n[31]===Symbol.for("react.memo_cache_sentinel")?(N=h.jsx("hr",{className:"fake-divider"}),W=h.jsx("h6",{className:"section-title",children:"Connected Users - Commercial"}),n[31]=N,n[32]=W):(N=n[31],W=n[32]);let ie;n[33]===Symbol.for("react.memo_cache_sentinel")?(ie=h.jsx("span",{children:se["commercial-charging-level"]}),n[33]=ie):ie=n[33];let X;n[34]!==u||n[35]!==f?(X=h.jsx(u,{to:"/commercial-charging-level",className:f,children:ie}),n[34]=u,n[35]=f,n[36]=X):X=n[36];let I;n[37]===Symbol.for("react.memo_cache_sentinel")?(I=h.jsx("span",{children:se["commercial-connectivity"]}),n[37]=I):I=n[37];let de;n[38]!==u||n[39]!==f?(de=h.jsx(u,{to:"/commercial-connectivity",className:f,children:I}),n[38]=u,n[39]=f,n[40]=de):de=n[40];let Ne;return n[41]!==H||n[42]!==M||n[43]!==Y||n[44]!==k||n[45]!==d||n[46]!==X||n[47]!==de||n[48]!==p||n[49]!==R||n[50]!==_?(Ne=h.jsxs(h.Fragment,{children:[d,y,p,R,_,H,M,Y,k,N,W,X,de]}),n[41]=H,n[42]=M,n[43]=Y,n[44]=k,n[45]=d,n[46]=X,n[47]=de,n[48]=p,n[49]=R,n[50]=_,n[51]=Ne):Ne=n[51],Ne}function zS(l){const n=Ke.c(133),{sidebar:c}=l,s=c===void 0?!1:c,u=s?yr:Tn,f=s?"":"link-text-underline";let d;n[0]!==s?(d=s&&h.jsx("h5",{children:"Network"}),n[0]=s,n[1]=d):d=n[1];let y;n[2]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("h6",{className:"section-title",children:"Connectivity"}),n[2]=y):y=n[2];let v;n[3]===Symbol.for("react.memo_cache_sentinel")?(v=h.jsx("span",{children:se["dark-fibre-lease"]}),n[3]=v):v=n[3];let p;n[4]!==u||n[5]!==f?(p=h.jsx(u,{to:"/dark-fibre-lease",className:f,children:v}),n[4]=u,n[5]=f,n[6]=p):p=n[6];let b;n[7]===Symbol.for("react.memo_cache_sentinel")?(b=h.jsx("span",{children:se["dark-fibre-lease-international"]}),n[7]=b):b=n[7];let R;n[8]!==u||n[9]!==f?(R=h.jsx(u,{to:"/dark-fibre-lease-international",className:f,children:b}),n[8]=u,n[9]=f,n[10]=R):R=n[10];let S;n[11]===Symbol.for("react.memo_cache_sentinel")?(S=h.jsx("span",{children:se["iru-duration"]}),n[11]=S):S=n[11];let _;n[12]!==u||n[13]!==f?(_=h.jsx(u,{to:"/iru-duration",className:f,children:S}),n[12]=u,n[13]=f,n[14]=_):_=n[14];let O;n[15]===Symbol.for("react.memo_cache_sentinel")?(O=h.jsx("span",{children:se["dark-fibre-installed"]}),n[15]=O):O=n[15];let H;n[16]!==u||n[17]!==f?(H=h.jsx(u,{to:"/dark-fibre-installed",className:f,children:O}),n[16]=u,n[17]=f,n[18]=H):H=n[18];let U;n[19]===Symbol.for("react.memo_cache_sentinel")?(U=h.jsx("span",{children:se["fibre-light"]}),n[19]=U):U=n[19];let M;n[20]!==u||n[21]!==f?(M=h.jsx(u,{to:"/fibre-light",className:f,children:U}),n[20]=u,n[21]=f,n[22]=M):M=n[22];let q;n[23]===Symbol.for("react.memo_cache_sentinel")?(q=h.jsx("span",{children:se["network-map"]}),n[23]=q):q=n[23];let Y;n[24]!==u||n[25]!==f?(Y=h.jsx(u,{to:"/network-map",className:f,children:q}),n[24]=u,n[25]=f,n[26]=Y):Y=n[26];let J,k;n[27]===Symbol.for("react.memo_cache_sentinel")?(J=h.jsx("hr",{className:"fake-divider"}),k=h.jsx("h6",{className:"section-title",children:"Performance Monitoring & Management"}),n[27]=J,n[28]=k):(J=n[27],k=n[28]);let N;n[29]===Symbol.for("react.memo_cache_sentinel")?(N=h.jsx("span",{children:se["monitoring-tools"]}),n[29]=N):N=n[29];let W;n[30]!==u||n[31]!==f?(W=h.jsx(u,{to:"/monitoring-tools",className:f,children:N}),n[30]=u,n[31]=f,n[32]=W):W=n[32];let ie;n[33]===Symbol.for("react.memo_cache_sentinel")?(ie=h.jsx("span",{children:se["passive-monitoring"]}),n[33]=ie):ie=n[33];let X;n[34]!==u||n[35]!==f?(X=h.jsx(u,{to:"/passive-monitoring",className:f,children:ie}),n[34]=u,n[35]=f,n[36]=X):X=n[36];let I;n[37]===Symbol.for("react.memo_cache_sentinel")?(I=h.jsx("span",{children:se["traffic-stats"]}),n[37]=I):I=n[37];let de;n[38]!==u||n[39]!==f?(de=h.jsx(u,{to:"/traffic-stats",className:f,children:I}),n[38]=u,n[39]=f,n[40]=de):de=n[40];let Ne;n[41]===Symbol.for("react.memo_cache_sentinel")?(Ne=h.jsx("span",{children:se["siem-vendors"]}),n[41]=Ne):Ne=n[41];let Ye;n[42]!==u||n[43]!==f?(Ye=h.jsx(u,{to:"/siem-vendors",className:f,children:Ne}),n[42]=u,n[43]=f,n[44]=Ye):Ye=n[44];let Be;n[45]===Symbol.for("react.memo_cache_sentinel")?(Be=h.jsx("span",{children:se["certificate-provider"]}),n[45]=Be):Be=n[45];let ze;n[46]!==u||n[47]!==f?(ze=h.jsx(u,{to:"/certificate-provider",className:f,children:Be}),n[46]=u,n[47]=f,n[48]=ze):ze=n[48];let K;n[49]===Symbol.for("react.memo_cache_sentinel")?(K=h.jsx("span",{children:se["weather-map"]}),n[49]=K):K=n[49];let ce;n[50]!==u||n[51]!==f?(ce=h.jsx(u,{to:"/weather-map",className:f,children:K}),n[50]=u,n[51]=f,n[52]=ce):ce=n[52];let ne;n[53]===Symbol.for("react.memo_cache_sentinel")?(ne=h.jsx("span",{children:se["pert-team"]}),n[53]=ne):ne=n[53];let Re;n[54]!==u||n[55]!==f?(Re=h.jsx(u,{to:"/pert-team",className:f,children:ne}),n[54]=u,n[55]=f,n[56]=Re):Re=n[56];let T,Q;n[57]===Symbol.for("react.memo_cache_sentinel")?(T=h.jsx("hr",{className:"fake-divider"}),Q=h.jsx("h6",{className:"section-title",children:"Alienwave"}),n[57]=T,n[58]=Q):(T=n[57],Q=n[58]);let le;n[59]===Symbol.for("react.memo_cache_sentinel")?(le=h.jsx("span",{children:se["alien-wave"]}),n[59]=le):le=n[59];let te;n[60]!==u||n[61]!==f?(te=h.jsx(u,{to:"/alien-wave",className:f,children:le}),n[60]=u,n[61]=f,n[62]=te):te=n[62];let P;n[63]===Symbol.for("react.memo_cache_sentinel")?(P=h.jsx("span",{children:se["alien-wave-internal"]}),n[63]=P):P=n[63];let ge;n[64]!==u||n[65]!==f?(ge=h.jsx(u,{to:"/alien-wave-internal",className:f,children:P}),n[64]=u,n[65]=f,n[66]=ge):ge=n[66];let ye,Je;n[67]===Symbol.for("react.memo_cache_sentinel")?(ye=h.jsx("hr",{className:"fake-divider"}),Je=h.jsx("h6",{className:"section-title",children:"Capacity"}),n[67]=ye,n[68]=Je):(ye=n[67],Je=n[68]);let Ce;n[69]===Symbol.for("react.memo_cache_sentinel")?(Ce=h.jsx("span",{children:se["capacity-largest-link"]}),n[69]=Ce):Ce=n[69];let Le;n[70]!==u||n[71]!==f?(Le=h.jsx(u,{to:"/capacity-largest-link",className:f,children:Ce}),n[70]=u,n[71]=f,n[72]=Le):Le=n[72];let Ee;n[73]===Symbol.for("react.memo_cache_sentinel")?(Ee=h.jsx("span",{children:se["capacity-core-ip"]}),n[73]=Ee):Ee=n[73];let Ze;n[74]!==u||n[75]!==f?(Ze=h.jsx(u,{to:"/capacity-core-ip",className:f,children:Ee}),n[74]=u,n[75]=f,n[76]=Ze):Ze=n[76];let vt;n[77]===Symbol.for("react.memo_cache_sentinel")?(vt=h.jsx("span",{children:se["external-connections"]}),n[77]=vt):vt=n[77];let it;n[78]!==u||n[79]!==f?(it=h.jsx(u,{to:"/external-connections",className:f,children:vt}),n[78]=u,n[79]=f,n[80]=it):it=n[80];let lt;n[81]===Symbol.for("react.memo_cache_sentinel")?(lt=h.jsx("span",{children:se["non-rne-peers"]}),n[81]=lt):lt=n[81];let De;n[82]!==u||n[83]!==f?(De=h.jsx(u,{to:"/non-rne-peers",className:f,children:lt}),n[82]=u,n[83]=f,n[84]=De):De=n[84];let Rt;n[85]===Symbol.for("react.memo_cache_sentinel")?(Rt=h.jsx("span",{children:se["traffic-volume"]}),n[85]=Rt):Rt=n[85];let St;n[86]!==u||n[87]!==f?(St=h.jsx(u,{to:"/traffic-volume",className:f,children:Rt}),n[86]=u,n[87]=f,n[88]=St):St=n[88];let Pt;n[89]===Symbol.for("react.memo_cache_sentinel")?(Pt=h.jsx("span",{children:se["traffic-ratio"]}),n[89]=Pt):Pt=n[89];let Zt;n[90]!==u||n[91]!==f?(Zt=h.jsx(u,{to:"/traffic-ratio",className:f,children:Pt}),n[90]=u,n[91]=f,n[92]=Zt):Zt=n[92];let un,cn;n[93]===Symbol.for("react.memo_cache_sentinel")?(un=h.jsx("hr",{className:"fake-divider"}),cn=h.jsx("h6",{className:"section-title",children:"Software-Defined Networking (SDN) & Network Function Virtualisation(NFV)"}),n[93]=un,n[94]=cn):(un=n[93],cn=n[94]);let Ut;n[95]===Symbol.for("react.memo_cache_sentinel")?(Ut=h.jsx("span",{children:se["ops-automation"]}),n[95]=Ut):Ut=n[95];let Ht;n[96]!==u||n[97]!==f?(Ht=h.jsx(u,{to:"/ops-automation",className:f,children:Ut}),n[96]=u,n[97]=f,n[98]=Ht):Ht=n[98];let mt;n[99]===Symbol.for("react.memo_cache_sentinel")?(mt=h.jsx("span",{children:se.nfv}),n[99]=mt):mt=n[99];let Kt;n[100]!==u||n[101]!==f?(Kt=h.jsx(u,{to:"/nfv",className:f,children:mt}),n[100]=u,n[101]=f,n[102]=Kt):Kt=n[102];let _e;n[103]===Symbol.for("react.memo_cache_sentinel")?(_e=h.jsx("span",{children:se["network-automation"]}),n[103]=_e):_e=n[103];let Ie;n[104]!==u||n[105]!==f?(Ie=h.jsx(u,{to:"/network-automation",className:f,children:_e}),n[104]=u,n[105]=f,n[106]=Ie):Ie=n[106];let Gt;return n[107]!==H||n[108]!==M||n[109]!==Y||n[110]!==W||n[111]!==d||n[112]!==X||n[113]!==de||n[114]!==Ye||n[115]!==ze||n[116]!==ce||n[117]!==Re||n[118]!==te||n[119]!==ge||n[120]!==Le||n[121]!==Ze||n[122]!==it||n[123]!==De||n[124]!==St||n[125]!==p||n[126]!==Zt||n[127]!==Ht||n[128]!==Kt||n[129]!==Ie||n[130]!==R||n[131]!==_?(Gt=h.jsxs(h.Fragment,{children:[d,y,p,R,_,H,M,Y,J,k,W,X,de,Ye,ze,ce,Re,T,Q,te,ge,ye,Je,Le,Ze,it,De,St,Zt,un,cn,Ht,Kt,Ie]}),n[107]=H,n[108]=M,n[109]=Y,n[110]=W,n[111]=d,n[112]=X,n[113]=de,n[114]=Ye,n[115]=ze,n[116]=ce,n[117]=Re,n[118]=te,n[119]=ge,n[120]=Le,n[121]=Ze,n[122]=it,n[123]=De,n[124]=St,n[125]=p,n[126]=Zt,n[127]=Ht,n[128]=Kt,n[129]=Ie,n[130]=R,n[131]=_,n[132]=Gt):Gt=n[132],Gt}function LS(l){const n=Ke.c(44),{sidebar:c}=l,s=c===void 0?!1:c,u=s?yr:Tn,f=s?"":"link-text-underline";let d;n[0]!==s?(d=s&&h.jsx("h5",{children:"Services"}),n[0]=s,n[1]=d):d=n[1];let y;n[2]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("span",{children:se["network-services"]}),n[2]=y):y=n[2];let v;n[3]!==u||n[4]!==f?(v=h.jsx(u,{to:"/network-services",className:f,children:y}),n[3]=u,n[4]=f,n[5]=v):v=n[5];let p;n[6]===Symbol.for("react.memo_cache_sentinel")?(p=h.jsx("span",{children:se["isp-support-services"]}),n[6]=p):p=n[6];let b;n[7]!==u||n[8]!==f?(b=h.jsx(u,{to:"/isp-support-services",className:f,children:p}),n[7]=u,n[8]=f,n[9]=b):b=n[9];let R;n[10]===Symbol.for("react.memo_cache_sentinel")?(R=h.jsx("span",{children:se["security-services"]}),n[10]=R):R=n[10];let S;n[11]!==u||n[12]!==f?(S=h.jsx(u,{to:"/security-services",className:f,children:R}),n[11]=u,n[12]=f,n[13]=S):S=n[13];let _;n[14]===Symbol.for("react.memo_cache_sentinel")?(_=h.jsx("span",{children:se["identity-services"]}),n[14]=_):_=n[14];let O;n[15]!==u||n[16]!==f?(O=h.jsx(u,{to:"/identity-services",className:f,children:_}),n[15]=u,n[16]=f,n[17]=O):O=n[17];let H;n[18]===Symbol.for("react.memo_cache_sentinel")?(H=h.jsx("span",{children:se["storage-and-hosting-services"]}),n[18]=H):H=n[18];let U;n[19]!==u||n[20]!==f?(U=h.jsx(u,{to:"/storage-and-hosting-services",className:f,children:H}),n[19]=u,n[20]=f,n[21]=U):U=n[21];let M;n[22]===Symbol.for("react.memo_cache_sentinel")?(M=h.jsx("span",{children:se["multimedia-services"]}),n[22]=M):M=n[22];let q;n[23]!==u||n[24]!==f?(q=h.jsx(u,{to:"/multimedia-services",className:f,children:M}),n[23]=u,n[24]=f,n[25]=q):q=n[25];let Y;n[26]===Symbol.for("react.memo_cache_sentinel")?(Y=h.jsx("span",{children:se["collaboration-services"]}),n[26]=Y):Y=n[26];let J;n[27]!==u||n[28]!==f?(J=h.jsx(u,{to:"/collaboration-services",className:f,children:Y}),n[27]=u,n[28]=f,n[29]=J):J=n[29];let k;n[30]===Symbol.for("react.memo_cache_sentinel")?(k=h.jsx("span",{children:se["professional-services"]}),n[30]=k):k=n[30];let N;n[31]!==u||n[32]!==f?(N=h.jsx(u,{to:"/professional-services",className:f,children:k}),n[31]=u,n[32]=f,n[33]=N):N=n[33];let W;return n[34]!==O||n[35]!==U||n[36]!==q||n[37]!==J||n[38]!==N||n[39]!==d||n[40]!==v||n[41]!==b||n[42]!==S?(W=h.jsxs(h.Fragment,{children:[d,v,b,S,O,U,q,J,N]}),n[34]=O,n[35]=U,n[36]=q,n[37]=J,n[38]=N,n[39]=d,n[40]=v,n[41]=b,n[42]=S,n[43]=W):W=n[43],W}function US(){const l=Ke.c(10);DS();const{trackPageView:n}=Hp();let c,s;l[0]!==n?(c=()=>{n({documentTitle:"Compendium Data"})},s=[n],l[0]=n,l[1]=c,l[2]=s):(c=l[1],s=l[2]),Yt.useEffect(c,s);let u;l[3]===Symbol.for("react.memo_cache_sentinel")?(u=h.jsx(NS,{type:"data"}),l[3]=u):u=l[3];let f;l[4]===Symbol.for("react.memo_cache_sentinel")?(f=h.jsx(CS,{type:"data",children:h.jsx("p",{className:"wordwrap",children:"The GÉANT Compendium provides an authoritative reference source for anyone with an interest in the development of research and education networking in Europe and beyond. Published since 2001, the Compendium provides information on key areas such as users, services, traffic, budget and staffing."})}),l[4]=f):f=l[4];let d;l[5]===Symbol.for("react.memo_cache_sentinel")?(d=h.jsx(rr,{title:li.Organisation,children:h.jsx(wS,{})}),l[5]=d):d=l[5];let y;l[6]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx(rr,{title:li.Policy,startCollapsed:!0,children:h.jsx(AS,{})}),l[6]=y):y=l[6];let v;l[7]===Symbol.for("react.memo_cache_sentinel")?(v=h.jsx(rr,{title:li.ConnectedUsers,startCollapsed:!0,children:h.jsx(MS,{})}),l[7]=v):v=l[7];let p;l[8]===Symbol.for("react.memo_cache_sentinel")?(p=h.jsx(rr,{title:li.Network,startCollapsed:!0,children:h.jsx(zS,{})}),l[8]=p):p=l[8];let b;return l[9]===Symbol.for("react.memo_cache_sentinel")?(b=h.jsxs(h.Fragment,{children:[u,f,h.jsx(Ya,{className:"mt-5 mb-5",children:h.jsxs(Rn,{children:[d,y,v,p,h.jsx(rr,{title:li.Services,startCollapsed:!0,children:h.jsx(LS,{})})]})})]}),l[9]=b):b=l[9],b}const HS=()=>{const l=Ke.c(26),{consent:n,setConsent:c}=g.useContext(Jo),[s,u]=g.useState(n===null);let f;l[0]===Symbol.for("react.memo_cache_sentinel")?(f=()=>{u(!1),window.location.reload()},l[0]=f):f=l[0];const d=f,[y,v]=g.useState(!0);let p;l[1]!==c?(p=N=>{const W=new Date;W.setDate(W.getDate()+30),localStorage.setItem("matomo_consent",JSON.stringify({consent:N,expiry:W})),c(N)},l[1]=c,l[2]=p):p=l[2];const b=p;let R;l[3]===Symbol.for("react.memo_cache_sentinel")?(R=h.jsx(ir.Header,{closeButton:!0,children:h.jsx(ir.Title,{children:"Privacy on this site"})}),l[3]=R):R=l[3];let S;l[4]===Symbol.for("react.memo_cache_sentinel")?(S=h.jsx("a",{href:"https://geant.org/Privacy-Notice/",children:"Privacy Policy"}),l[4]=S):S=l[4];let _;l[5]===Symbol.for("react.memo_cache_sentinel")?(_=h.jsxs("p",{children:["On our site we use Matomo to collect and process data about your visit to better understand how it is used. For more information, see our ",S,".",h.jsx("br",{}),"Below, you can choose to accept or decline to have this data collected."]}),l[5]=_):_=l[5];let O;l[6]!==y?(O=()=>v(!y),l[6]=y,l[7]=O):O=l[7];let H;l[8]!==y||l[9]!==O?(H=h.jsx(Du.Check,{type:"checkbox",label:"Analytics",checked:y,onChange:O}),l[8]=y,l[9]=O,l[10]=H):H=l[10];let U;l[11]===Symbol.for("react.memo_cache_sentinel")?(U=h.jsx(Du.Text,{className:"text-muted",children:"We collect information about your visit on the compendium site — this helps us understand how the site is used, and how we can improve it."}),l[11]=U):U=l[11];let M;l[12]!==H?(M=h.jsxs(ir.Body,{children:[_,h.jsx(Du,{children:h.jsxs(Du.Group,{className:"mb-3",children:[H,U]})})]}),l[12]=H,l[13]=M):M=l[13];let q;l[14]!==b?(q=h.jsx(Bo,{variant:"secondary",onClick:()=>{b(!1),d()},children:"Decline all"}),l[14]=b,l[15]=q):q=l[15];let Y;l[16]!==y||l[17]!==b?(Y=h.jsx(Bo,{variant:"primary",onClick:()=>{b(y),d()},children:"Save consent for 30 days"}),l[16]=y,l[17]=b,l[18]=Y):Y=l[18];let J;l[19]!==Y||l[20]!==q?(J=h.jsxs(ir.Footer,{children:[q,Y]}),l[19]=Y,l[20]=q,l[21]=J):J=l[21];let k;return l[22]!==s||l[23]!==J||l[24]!==M?(k=h.jsxs(ir,{show:s,centered:!0,children:[R,M,J]}),l[22]=s,l[23]=J,l[24]=M,l[25]=k):k=l[25],k},BS=g.lazy(()=>be(()=>import("./Budget-BVbbdsI6.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),qS=g.lazy(()=>be(()=>import("./ChargingStructure-D6vHlJZ3.js"),__vite__mapDeps([8,2,3,4,5,6,9,10,11]))),VS=g.lazy(()=>be(()=>import("./ECProjects-CT3RTMct.js"),__vite__mapDeps([12,2,3,4,5,6,13,11]))),YS=g.lazy(()=>be(()=>import("./FundingSource-C4jAa4nC.js"),__vite__mapDeps([14,1,2,3,4,5,6,15]))),GS=g.lazy(()=>be(()=>import("./ParentOrganisation-BqnVV9Ka.js"),__vite__mapDeps([16,2,3,4,5,6,13,11]))),Oy=g.lazy(()=>be(()=>import("./StaffGraph-DXD4Tgbx.js"),__vite__mapDeps([17,1,2,3,4,5,6,18]))),kS=g.lazy(()=>be(()=>import("./StaffGraphAbsolute-A86Vah2E.js"),__vite__mapDeps([19,1,2,3,4,5,6,15,7]))),XS=g.lazy(()=>be(()=>import("./SubOrganisation-ldENjIwX.js"),__vite__mapDeps([20,2,3,4,5,6,13,11]))),QS=g.lazy(()=>be(()=>import("./Audits-BldRnziS.js"),__vite__mapDeps([21,2,3,4,5,6,9,10,11]))),ZS=g.lazy(()=>be(()=>import("./BusinessContinuity-CLtH4Vxm.js"),__vite__mapDeps([22,2,3,4,5,6,9,10,11]))),KS=g.lazy(()=>be(()=>import("./CentralProcurement-ufKA5cDY.js"),__vite__mapDeps([23,2,3,4,5,6,15,1,7]))),$S=g.lazy(()=>be(()=>import("./CorporateStrategy-CQ2aByV3.js"),__vite__mapDeps([24,2,3,4,5,6,13,11]))),FS=g.lazy(()=>be(()=>import("./CrisisExercises-Bw4pZ1iW.js"),__vite__mapDeps([25,2,3,4,5,6,9,10,11]))),JS=g.lazy(()=>be(()=>import("./CrisisManagement-TH7W12RY.js"),__vite__mapDeps([26,2,3,4,5,6,9,10,11]))),PS=g.lazy(()=>be(()=>import("./EOSCListings-v4hLpISP.js"),__vite__mapDeps([27,2,3,4,5,6,13,11]))),WS=g.lazy(()=>be(()=>import("./Policy-DTXx03Vh.js"),__vite__mapDeps([28,2,3,4,5,6,13,11]))),IS=g.lazy(()=>be(()=>import("./SecurityControls-TM-ptOes.js"),__vite__mapDeps([29,2,3,4,5,6,9,10,11]))),e2=g.lazy(()=>be(()=>import("./ServiceLevelTargets-DMHnzoF5.js"),__vite__mapDeps([30,2,3,4,5,6,9,10,11]))),t2=g.lazy(()=>be(()=>import("./ServiceManagementFramework-D-rGA4sI.js"),__vite__mapDeps([31,2,3,4,5,6,9,10,11]))),n2=g.lazy(()=>be(()=>import("./ServicesOffered-BQGRxlwg.js"),__vite__mapDeps([32,2,3,4,5,6,33,11]))),a2=g.lazy(()=>be(()=>import("./ConnectedInstitutionsURLs-gUMBROcH.js"),__vite__mapDeps([34,2,3,4,5,6,13,11]))),dl=g.lazy(()=>be(()=>import("./ConnectedUser-C39phNBn.js"),__vite__mapDeps([35,2,3,4,5,6,33,11]))),l2=g.lazy(()=>be(()=>import("./RemoteCampuses-DiA5hlnD.js"),__vite__mapDeps([36,2,3,4,5,6,11]))),i2=g.lazy(()=>be(()=>import("./AlienWave-DhaC80F-.js"),__vite__mapDeps([37,2,3,4,5,6,9,10,11]))),r2=g.lazy(()=>be(()=>import("./AlienWaveInternal-CeuaDpIY.js"),__vite__mapDeps([38,2,3,4,5,6,9,10,11]))),u2=g.lazy(()=>be(()=>import("./Automation-BAaw7w82.js"),__vite__mapDeps([39,2,3,4,5,6,10,11]))),c2=g.lazy(()=>be(()=>import("./CapacityCoreIP-CjzYJH11.js"),__vite__mapDeps([40,1,2,3,4,5,6,15,7]))),s2=g.lazy(()=>be(()=>import("./CapacityLargestLink-CCiZ1Jtj.js"),__vite__mapDeps([41,1,2,3,4,5,6,15,7]))),o2=g.lazy(()=>be(()=>import("./CertificateProvider-S4Idgrmz.js"),__vite__mapDeps([42,2,3,4,5,6,9,10,11]))),Dy=g.lazy(()=>be(()=>import("./DarkFibreLease-C_DLt-sT.js"),__vite__mapDeps([43,1,2,3,4,5,6,7]))),f2=g.lazy(()=>be(()=>import("./DarkFibreInstalled-XMYWXP4t.js"),__vite__mapDeps([44,1,2,3,4,5,6,7]))),d2=g.lazy(()=>be(()=>import("./ExternalConnections-Ds1slbkO.js"),__vite__mapDeps([45,2,3,4,5,6,11]))),h2=g.lazy(()=>be(()=>import("./FibreLight-C4tQtRYN.js"),__vite__mapDeps([46,2,3,4,5,6,9,10,11]))),m2=g.lazy(()=>be(()=>import("./IRUDuration-C1dUeB3y.js"),__vite__mapDeps([47,1,2,3,4,5,6,7]))),y2=g.lazy(()=>be(()=>import("./MonitoringTools-BrAyjiGW.js"),__vite__mapDeps([48,2,3,4,5,6,9,10,11]))),p2=g.lazy(()=>be(()=>import("./NetworkFunctionVirtualisation-BSD5a3W2.js"),__vite__mapDeps([49,2,3,4,5,6,10,11]))),v2=g.lazy(()=>be(()=>import("./NetworkMapUrls-iZSn2qqQ.js"),__vite__mapDeps([50,2,3,4,5,6,13,11]))),g2=g.lazy(()=>be(()=>import("./NonRAndEPeer-Cn_ozVAu.js"),__vite__mapDeps([51,1,2,3,4,5,6,15,7]))),E2=g.lazy(()=>be(()=>import("./OPsAutomation-Bc59w9gr.js"),__vite__mapDeps([52,2,3,4,5,6,9,10,11]))),b2=g.lazy(()=>be(()=>import("./PassiveMonitoring-NXmN_EjG.js"),__vite__mapDeps([53,2,3,4,5,6,9,10,11]))),S2=g.lazy(()=>be(()=>import("./PertTeam-64HTdccQ.js"),__vite__mapDeps([54,2,3,4,5,6,9,10,11]))),x2=g.lazy(()=>be(()=>import("./SiemVendors-Ba9ZMN9z.js"),__vite__mapDeps([55,2,3,4,5,6,9,10,11]))),_2=g.lazy(()=>be(()=>import("./TrafficRatio-p8ISc0n1.js"),__vite__mapDeps([56,1,2,3,4,5,6,18]))),R2=g.lazy(()=>be(()=>import("./TrafficUrl-Cupk7MWX.js"),__vite__mapDeps([57,2,3,4,5,6,13,11]))),T2=g.lazy(()=>be(()=>import("./TrafficVolume-C0Yprx37.js"),__vite__mapDeps([58,1,2,3,4,5,6,7]))),N2=g.lazy(()=>be(()=>import("./WeatherMap-DPu2PGnk.js"),__vite__mapDeps([59,2,3,4,5,6,13,11]))),Ua=g.lazy(()=>be(()=>import("./Services-5TAXBWqD.js"),__vite__mapDeps([60,2,3,4,5,6,11]))),C2=g.lazy(()=>be(()=>import("./Landing-B1Sq71Lu.js"),__vite__mapDeps([61,62,63,3,4,11]))),No=g.lazy(()=>be(()=>import("./SurveyContainerComponent-BmuW9EVe.js"),__vite__mapDeps([64,65,66,67,63,3,68]))),j2=g.lazy(()=>be(()=>import("./SurveyManagementComponent-BvOZUwZZ.js"),__vite__mapDeps([69,70,6,11,65,67,62,63,3]))),O2=g.lazy(()=>be(()=>import("./UserManagementComponent-BsFczL9E.js"),__vite__mapDeps([71,65,63,3,5,70,6,11]))),D2=()=>{const l=Ke.c(9),{pathname:n}=Xn(),c=n!=="/";let s;l[0]===Symbol.for("react.memo_cache_sentinel")?(s=h.jsx(oS,{}),l[0]=s):s=l[0];let u;l[1]!==c?(u=h.jsx("main",{className:"grow",children:c?h.jsx(T0,{}):h.jsx(Bp,{})}),l[1]=c,l[2]=u):u=l[2];let f;l[3]===Symbol.for("react.memo_cache_sentinel")?(f=h.jsx(HS,{}),l[3]=f):f=l[3];let d;l[4]!==u?(d=h.jsxs(wE,{children:[s,u,f]}),l[4]=u,l[5]=d):d=l[5];let y;l[6]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx(hS,{}),l[6]=y):y=l[6];let v;return l[7]!==d?(v=h.jsxs(h.Fragment,{children:[d,y]}),l[7]=d,l[8]=v):v=l[8],v},w2=P0([{path:"",element:h.jsx(D2,{}),children:[{path:"/budget",element:h.jsx(BS,{})},{path:"/funding",element:h.jsx(YS,{})},{path:"/employment",element:h.jsx(Oy,{},"staffgraph")},{path:"/traffic-ratio",element:h.jsx(_2,{})},{path:"/roles",element:h.jsx(Oy,{roles:!0},"staffgraphroles")},{path:"/employee-count",element:h.jsx(kS,{})},{path:"/charging",element:h.jsx(qS,{})},{path:"/suborganisations",element:h.jsx(XS,{})},{path:"/parentorganisation",element:h.jsx(GS,{})},{path:"/ec-projects",element:h.jsx(VS,{})},{path:"/policy",element:h.jsx(WS,{})},{path:"/traffic-volume",element:h.jsx(T2,{})},{path:"/data",element:h.jsx(US,{})},{path:"/institutions-urls",element:h.jsx(a2,{})},{path:"/connected-proportion",element:h.jsx(dl,{page:Qt.ConnectedProportion},Qt.ConnectedProportion)},{path:"/connectivity-level",element:h.jsx(dl,{page:Qt.ConnectivityLevel},Qt.ConnectivityLevel)},{path:"/connectivity-growth",element:h.jsx(dl,{page:Qt.ConnectivityGrowth},Qt.ConnectivityGrowth)},{path:"/connection-carrier",element:h.jsx(dl,{page:Qt.ConnectionCarrier},Qt.ConnectionCarrier)},{path:"/connectivity-load",element:h.jsx(dl,{page:Qt.ConnectivityLoad},Qt.ConnectivityLoad)},{path:"/commercial-charging-level",element:h.jsx(dl,{page:Qt.CommercialChargingLevel},Qt.CommercialChargingLevel)},{path:"/commercial-connectivity",element:h.jsx(dl,{page:Qt.CommercialConnectivity},Qt.CommercialConnectivity)},{path:"/network-services",element:h.jsx(Ua,{category:Lt.network_services},Lt.network_services)},{path:"/isp-support-services",element:h.jsx(Ua,{category:Lt.isp_support},Lt.isp_support)},{path:"/security-services",element:h.jsx(Ua,{category:Lt.security},Lt.security)},{path:"/identity-services",element:h.jsx(Ua,{category:Lt.identity},Lt.identity)},{path:"/collaboration-services",element:h.jsx(Ua,{category:Lt.collaboration},Lt.collaboration)},{path:"/multimedia-services",element:h.jsx(Ua,{category:Lt.multimedia},Lt.multimedia)},{path:"/storage-and-hosting-services",element:h.jsx(Ua,{category:Lt.storage_and_hosting},Lt.storage_and_hosting)},{path:"/professional-services",element:h.jsx(Ua,{category:Lt.professional_services},Lt.professional_services)},{path:"/dark-fibre-lease",element:h.jsx(Dy,{national:!0},"darkfibrenational")},{path:"/dark-fibre-lease-international",element:h.jsx(Dy,{},"darkfibreinternational")},{path:"/dark-fibre-installed",element:h.jsx(f2,{})},{path:"/remote-campuses",element:h.jsx(l2,{})},{path:"/eosc-listings",element:h.jsx(PS,{})},{path:"/fibre-light",element:h.jsx(h2,{})},{path:"/monitoring-tools",element:h.jsx(y2,{})},{path:"/pert-team",element:h.jsx(S2,{})},{path:"/passive-monitoring",element:h.jsx(b2,{})},{path:"/alien-wave",element:h.jsx(i2,{})},{path:"/alien-wave-internal",element:h.jsx(r2,{})},{path:"/external-connections",element:h.jsx(d2,{})},{path:"/ops-automation",element:h.jsx(E2,{})},{path:"/network-automation",element:h.jsx(u2,{})},{path:"/traffic-stats",element:h.jsx(R2,{})},{path:"/weather-map",element:h.jsx(N2,{})},{path:"/network-map",element:h.jsx(v2,{})},{path:"/nfv",element:h.jsx(p2,{})},{path:"/certificate-providers",element:h.jsx(o2,{})},{path:"/siem-vendors",element:h.jsx(x2,{})},{path:"/capacity-largest-link",element:h.jsx(s2,{})},{path:"/capacity-core-ip",element:h.jsx(c2,{})},{path:"/non-rne-peers",element:h.jsx(g2,{})},{path:"/iru-duration",element:h.jsx(m2,{})},{path:"/audits",element:h.jsx(QS,{})},{path:"/business-continuity",element:h.jsx(ZS,{})},{path:"/crisis-management",element:h.jsx(JS,{})},{path:"/crisis-exercise",element:h.jsx(FS,{})},{path:"/central-procurement",element:h.jsx(KS,{})},{path:"/security-control",element:h.jsx(IS,{})},{path:"/services-offered",element:h.jsx(n2,{})},{path:"/service-management-framework",element:h.jsx(t2,{})},{path:"/service-level-targets",element:h.jsx(e2,{})},{path:"/corporate-strategy",element:h.jsx($S,{})},{path:"/survey/admin/surveys",element:h.jsx(j2,{})},{path:"/survey/admin/users",element:h.jsx(O2,{})},{path:"/survey/admin/inspect/:year",element:h.jsx(No,{loadFrom:"/api/response/inspect/"})},{path:"/survey/admin/try/:year",element:h.jsx(No,{loadFrom:"/api/response/try/"})},{path:"/survey/response/:year/:nren",element:h.jsx(No,{loadFrom:"/api/response/load/"})},{path:"/survey/*",element:h.jsx(C2,{})},{path:"*",element:h.jsx(Bp,{})}]}]);function A2(){const l=Ke.c(1);let n;return l[0]===Symbol.for("react.memo_cache_sentinel")?(n=h.jsx("div",{className:"app",children:h.jsx(oE,{router:w2})}),l[0]=n):n=l[0],n}const M2=document.getElementById("root"),z2=a1.createRoot(M2);z2.render(h.jsx(Yt.StrictMode,{children:h.jsx(A2,{})}));export{Yp as $,Ho as A,pb as B,ln as C,Xy as D,Ya as E,yE as F,MS as G,LS as H,jS as I,vE as J,OS as K,Tn as L,Iy as M,zS as N,wS as O,AS as P,Hp as Q,Rn as R,li as S,NS as T,V2 as U,SE as V,Du as W,DS as X,_S as Y,RS as Z,zE as _,Qt as a,Lt as a0,Fo as a1,yr as a2,ku as a3,wy as a4,B2 as a5,H2 as a6,be as a7,rb as a8,nb as a9,$u as aa,gl as ab,hl as ac,Mo as ad,Ba as ae,yl as af,ab as ag,U2 as ah,nf as ai,OE as aj,Y2 as b,Ke as c,G2 as d,rr as e,Yt as f,up as g,Qe as h,Ae as i,h as j,sb as k,by as l,Bu as m,Ob as n,Ku as o,tf as p,ob as q,g as r,ti as s,se as t,pl as u,lp as v,q2 as w,rp as x,Bo as y,BE as z}; +*/var dy;function AE(){return dy||(dy=1,function(l){(function(){var n={}.hasOwnProperty;function c(){for(var f="",d=0;d<arguments.length;d++){var y=arguments[d];y&&(f=u(f,s(y)))}return f}function s(f){if(typeof f=="string"||typeof f=="number")return f;if(typeof f!="object")return"";if(Array.isArray(f))return c.apply(null,f);if(f.toString!==Object.prototype.toString&&!f.toString.toString().includes("[native code]"))return f.toString();var d="";for(var y in f)n.call(f,y)&&f[y]&&(d=u(d,y));return d}function u(f,d){return d?f?f+" "+d:f+d:f}l.exports?(c.default=c,l.exports=c):window.classNames=c})()}(po)),po.exports}var ME=AE();const Ae=fr(ME);function zE(l,n){if(l==null)return{};var c={};for(var s in l)if({}.hasOwnProperty.call(l,s)){if(n.includes(s))continue;c[s]=l[s]}return c}function Ao(l,n){return Ao=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(c,s){return c.__proto__=s,c},Ao(l,n)}function LE(l,n){l.prototype=Object.create(n.prototype),l.prototype.constructor=l,Ao(l,n)}const UE=["xxl","xl","lg","md","sm","xs"],HE="xs",Zu=g.createContext({prefixes:{},breakpoints:UE,minBreakpoint:HE});function Qe(l,n){const{prefixes:c}=g.useContext(Zu);return l||c[n]||n}function tp(){const{breakpoints:l}=g.useContext(Zu);return l}function np(){const{minBreakpoint:l}=g.useContext(Zu);return l}function BE(){const{dir:l}=g.useContext(Zu);return l==="rtl"}function Ku(l){return l&&l.ownerDocument||document}function qE(l){var n=Ku(l);return n&&n.defaultView||window}function VE(l,n){return qE(l).getComputedStyle(l,n)}var YE=/([A-Z])/g;function GE(l){return l.replace(YE,"-$1").toLowerCase()}var kE=/^ms-/;function Ou(l){return GE(l).replace(kE,"-ms-")}var XE=/^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;function QE(l){return!!(l&&XE.test(l))}function gl(l,n){var c="",s="";if(typeof n=="string")return l.style.getPropertyValue(Ou(n))||VE(l).getPropertyValue(Ou(n));Object.keys(n).forEach(function(u){var f=n[u];!f&&f!==0?l.style.removeProperty(Ou(u)):QE(u)?s+=u+"("+f+") ":c+=Ou(u)+": "+f+";"}),s&&(c+="transform: "+s+";"),l.style.cssText+=";"+c}var vo={exports:{}},go,hy;function ZE(){if(hy)return go;hy=1;var l="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return go=l,go}var Eo,my;function KE(){if(my)return Eo;my=1;var l=ZE();function n(){}function c(){}return c.resetWarningCache=n,Eo=function(){function s(d,y,v,p,b,R){if(R!==l){var S=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw S.name="Invariant Violation",S}}s.isRequired=s;function u(){return s}var f={array:s,bigint:s,bool:s,func:s,number:s,object:s,string:s,symbol:s,any:s,arrayOf:u,element:s,elementType:s,instanceOf:u,node:s,objectOf:u,oneOf:u,oneOfType:u,shape:u,exact:u,checkPropTypes:c,resetWarningCache:n};return f.PropTypes=f,f},Eo}var yy;function $E(){return yy||(yy=1,vo.exports=KE()()),vo.exports}var FE=$E();const fa=fr(FE),py={disabled:!1},ap=Yt.createContext(null);var JE=function(n){return n.scrollTop},cr="unmounted",hl="exited",Ba="entering",yl="entered",Mo="exiting",ha=function(l){LE(n,l);function n(s,u){var f;f=l.call(this,s,u)||this;var d=u,y=d&&!d.isMounting?s.enter:s.appear,v;return f.appearStatus=null,s.in?y?(v=hl,f.appearStatus=Ba):v=yl:s.unmountOnExit||s.mountOnEnter?v=cr:v=hl,f.state={status:v},f.nextCallback=null,f}n.getDerivedStateFromProps=function(u,f){var d=u.in;return d&&f.status===cr?{status:hl}:null};var c=n.prototype;return c.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},c.componentDidUpdate=function(u){var f=null;if(u!==this.props){var d=this.state.status;this.props.in?d!==Ba&&d!==yl&&(f=Ba):(d===Ba||d===yl)&&(f=Mo)}this.updateStatus(!1,f)},c.componentWillUnmount=function(){this.cancelNextCallback()},c.getTimeouts=function(){var u=this.props.timeout,f,d,y;return f=d=y=u,u!=null&&typeof u!="number"&&(f=u.exit,d=u.enter,y=u.appear!==void 0?u.appear:d),{exit:f,enter:d,appear:y}},c.updateStatus=function(u,f){if(u===void 0&&(u=!1),f!==null)if(this.cancelNextCallback(),f===Ba){if(this.props.unmountOnExit||this.props.mountOnEnter){var d=this.props.nodeRef?this.props.nodeRef.current:ii.findDOMNode(this);d&&JE(d)}this.performEnter(u)}else this.performExit();else this.props.unmountOnExit&&this.state.status===hl&&this.setState({status:cr})},c.performEnter=function(u){var f=this,d=this.props.enter,y=this.context?this.context.isMounting:u,v=this.props.nodeRef?[y]:[ii.findDOMNode(this),y],p=v[0],b=v[1],R=this.getTimeouts(),S=y?R.appear:R.enter;if(!u&&!d||py.disabled){this.safeSetState({status:yl},function(){f.props.onEntered(p)});return}this.props.onEnter(p,b),this.safeSetState({status:Ba},function(){f.props.onEntering(p,b),f.onTransitionEnd(S,function(){f.safeSetState({status:yl},function(){f.props.onEntered(p,b)})})})},c.performExit=function(){var u=this,f=this.props.exit,d=this.getTimeouts(),y=this.props.nodeRef?void 0:ii.findDOMNode(this);if(!f||py.disabled){this.safeSetState({status:hl},function(){u.props.onExited(y)});return}this.props.onExit(y),this.safeSetState({status:Mo},function(){u.props.onExiting(y),u.onTransitionEnd(d.exit,function(){u.safeSetState({status:hl},function(){u.props.onExited(y)})})})},c.cancelNextCallback=function(){this.nextCallback!==null&&(this.nextCallback.cancel(),this.nextCallback=null)},c.safeSetState=function(u,f){f=this.setNextCallback(f),this.setState(u,f)},c.setNextCallback=function(u){var f=this,d=!0;return this.nextCallback=function(y){d&&(d=!1,f.nextCallback=null,u(y))},this.nextCallback.cancel=function(){d=!1},this.nextCallback},c.onTransitionEnd=function(u,f){this.setNextCallback(f);var d=this.props.nodeRef?this.props.nodeRef.current:ii.findDOMNode(this),y=u==null&&!this.props.addEndListener;if(!d||y){setTimeout(this.nextCallback,0);return}if(this.props.addEndListener){var v=this.props.nodeRef?[this.nextCallback]:[d,this.nextCallback],p=v[0],b=v[1];this.props.addEndListener(p,b)}u!=null&&setTimeout(this.nextCallback,u)},c.render=function(){var u=this.state.status;if(u===cr)return null;var f=this.props,d=f.children;f.in,f.mountOnEnter,f.unmountOnExit,f.appear,f.enter,f.exit,f.timeout,f.addEndListener,f.onEnter,f.onEntering,f.onEntered,f.onExit,f.onExiting,f.onExited,f.nodeRef;var y=zE(f,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]);return Yt.createElement(ap.Provider,{value:null},typeof d=="function"?d(u,y):Yt.cloneElement(Yt.Children.only(d),y))},n}(Yt.Component);ha.contextType=ap;ha.propTypes={};function ei(){}ha.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:ei,onEntering:ei,onEntered:ei,onExit:ei,onExiting:ei,onExited:ei};ha.UNMOUNTED=cr;ha.EXITED=hl;ha.ENTERING=Ba;ha.ENTERED=yl;ha.EXITING=Mo;function PE(l){return l.code==="Escape"||l.keyCode===27}function WE(){const l=g.version.split(".");return{major:+l[0],minor:+l[1],patch:+l[2]}}function $u(l){if(!l||typeof l=="function")return null;const{major:n}=WE();return n>=19?l.props.ref:l.ref}const ri=!!(typeof window<"u"&&window.document&&window.document.createElement);var zo=!1,Lo=!1;try{var bo={get passive(){return zo=!0},get once(){return Lo=zo=!0}};ri&&(window.addEventListener("test",bo,bo),window.removeEventListener("test",bo,!0))}catch{}function lp(l,n,c,s){if(s&&typeof s!="boolean"&&!Lo){var u=s.once,f=s.capture,d=c;!Lo&&u&&(d=c.__once||function y(v){this.removeEventListener(n,y,f),c.call(this,v)},c.__once=d),l.addEventListener(n,d,zo?s:f)}l.addEventListener(n,c,s)}function Uo(l,n,c,s){var u=s&&typeof s!="boolean"?s.capture:s;l.removeEventListener(n,c,u),c.__once&&l.removeEventListener(n,c.__once,u)}function Bu(l,n,c,s){return lp(l,n,c,s),function(){Uo(l,n,c,s)}}function IE(l,n,c,s){if(s===void 0&&(s=!0),l){var u=document.createEvent("HTMLEvents");u.initEvent(n,c,s),l.dispatchEvent(u)}}function eb(l){var n=gl(l,"transitionDuration")||"",c=n.indexOf("ms")===-1?1e3:1;return parseFloat(n)*c}function tb(l,n,c){c===void 0&&(c=5);var s=!1,u=setTimeout(function(){s||IE(l,"transitionend",!0)},n+c),f=Bu(l,"transitionend",function(){s=!0},{once:!0});return function(){clearTimeout(u),f()}}function ip(l,n,c,s){c==null&&(c=eb(l)||0);var u=tb(l,c,s),f=Bu(l,"transitionend",n);return function(){u(),f()}}function vy(l,n){const c=gl(l,n)||"",s=c.indexOf("ms")===-1?1e3:1;return parseFloat(c)*s}function nb(l,n){const c=vy(l,"transitionDuration"),s=vy(l,"transitionDelay"),u=ip(l,f=>{f.target===l&&(u(),n(f))},c+s)}function ab(l){l.offsetHeight}const gy=l=>!l||typeof l=="function"?l:n=>{l.current=n};function lb(l,n){const c=gy(l),s=gy(n);return u=>{c&&c(u),s&&s(u)}}function rp(l,n){return g.useMemo(()=>lb(l,n),[l,n])}function ib(l){return l&&"setState"in l?ii.findDOMNode(l):l??null}const rb=Yt.forwardRef(({onEnter:l,onEntering:n,onEntered:c,onExit:s,onExiting:u,onExited:f,addEndListener:d,children:y,childRef:v,...p},b)=>{const R=g.useRef(null),S=rp(R,v),_=N=>{S(ib(N))},O=N=>W=>{N&&R.current&&N(R.current,W)},H=g.useCallback(O(l),[l]),U=g.useCallback(O(n),[n]),M=g.useCallback(O(c),[c]),q=g.useCallback(O(s),[s]),Y=g.useCallback(O(u),[u]),J=g.useCallback(O(f),[f]),k=g.useCallback(O(d),[d]);return h.jsx(ha,{ref:b,...p,onEnter:H,onEntered:M,onEntering:U,onExit:q,onExited:J,onExiting:Y,addEndListener:k,nodeRef:R,children:typeof y=="function"?(N,W)=>y(N,{...W,ref:_}):Yt.cloneElement(y,{ref:_})})});function ub(l){const n=g.useRef(l);return g.useEffect(()=>{n.current=l},[l]),n}function Ho(l){const n=ub(l);return g.useCallback(function(...c){return n.current&&n.current(...c)},[n])}const Po=l=>g.forwardRef((n,c)=>h.jsx("div",{...n,ref:c,className:Ae(n.className,l)}));function cb(l){const n=g.useRef(l);return g.useEffect(()=>{n.current=l},[l]),n}function pl(l){const n=cb(l);return g.useCallback(function(...c){return n.current&&n.current(...c)},[n])}function sb(){const l=g.useRef(!0),n=g.useRef(()=>l.current);return g.useEffect(()=>(l.current=!0,()=>{l.current=!1}),[]),n.current}function ob(l){const n=g.useRef(null);return g.useEffect(()=>{n.current=l}),n.current}const fb=typeof global<"u"&&global.navigator&&global.navigator.product==="ReactNative",db=typeof document<"u",Ey=db||fb?g.useLayoutEffect:g.useEffect,hb=["as","disabled"];function mb(l,n){if(l==null)return{};var c={};for(var s in l)if({}.hasOwnProperty.call(l,s)){if(n.indexOf(s)>=0)continue;c[s]=l[s]}return c}function yb(l){return!l||l.trim()==="#"}function up({tagName:l,disabled:n,href:c,target:s,rel:u,role:f,onClick:d,tabIndex:y=0,type:v}){l||(c!=null||s!=null||u!=null?l="a":l="button");const p={tagName:l};if(l==="button")return[{type:v||"button",disabled:n},p];const b=S=>{if((n||l==="a"&&yb(c))&&S.preventDefault(),n){S.stopPropagation();return}d==null||d(S)},R=S=>{S.key===" "&&(S.preventDefault(),b(S))};return l==="a"&&(c||(c="#"),n&&(c=void 0)),[{role:f??"button",disabled:void 0,tabIndex:n?void 0:y,href:c,target:l==="a"?s:void 0,"aria-disabled":n||void 0,rel:l==="a"?u:void 0,onClick:b,onKeyDown:R},p]}const pb=g.forwardRef((l,n)=>{let{as:c,disabled:s}=l,u=mb(l,hb);const[f,{tagName:d}]=up(Object.assign({tagName:c,disabled:s},u));return h.jsx(d,Object.assign({},u,f,{ref:n}))});pb.displayName="Button";const vb={[Ba]:"show",[yl]:"show"},Wo=g.forwardRef(({className:l,children:n,transitionClasses:c={},onEnter:s,...u},f)=>{const d={in:!1,timeout:300,mountOnEnter:!1,unmountOnExit:!1,appear:!1,...u},y=g.useCallback((v,p)=>{ab(v),s==null||s(v,p)},[s]);return h.jsx(rb,{ref:f,addEndListener:nb,...d,onEnter:y,childRef:$u(n),children:(v,p)=>g.cloneElement(n,{...p,className:Ae("fade",l,n.props.className,vb[v],c[v])})})});Wo.displayName="Fade";const gb={"aria-label":fa.string,onClick:fa.func,variant:fa.oneOf(["white"])},Io=g.forwardRef(({className:l,variant:n,"aria-label":c="Close",...s},u)=>h.jsx("button",{ref:u,type:"button",className:Ae("btn-close",n&&`btn-close-${n}`,l),"aria-label":c,...s}));Io.displayName="CloseButton";Io.propTypes=gb;const Bo=g.forwardRef(({as:l,bsPrefix:n,variant:c="primary",size:s,active:u=!1,disabled:f=!1,className:d,...y},v)=>{const p=Qe(n,"btn"),[b,{tagName:R}]=up({tagName:l,disabled:f,...y}),S=R;return h.jsx(S,{...b,...y,ref:v,disabled:f,className:Ae(d,p,u&&"active",c&&`${p}-${c}`,s&&`${p}-${s}`,y.href&&f&&"disabled")})});Bo.displayName="Button";const ef=g.forwardRef(({className:l,bsPrefix:n,as:c="div",...s},u)=>(n=Qe(n,"card-body"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));ef.displayName="CardBody";const cp=g.forwardRef(({className:l,bsPrefix:n,as:c="div",...s},u)=>(n=Qe(n,"card-footer"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));cp.displayName="CardFooter";const sp=g.createContext(null);sp.displayName="CardHeaderContext";const op=g.forwardRef(({bsPrefix:l,className:n,as:c="div",...s},u)=>{const f=Qe(l,"card-header"),d=g.useMemo(()=>({cardHeaderBsPrefix:f}),[f]);return h.jsx(sp.Provider,{value:d,children:h.jsx(c,{ref:u,...s,className:Ae(n,f)})})});op.displayName="CardHeader";const fp=g.forwardRef(({bsPrefix:l,className:n,variant:c,as:s="img",...u},f)=>{const d=Qe(l,"card-img");return h.jsx(s,{ref:f,className:Ae(c?`${d}-${c}`:d,n),...u})});fp.displayName="CardImg";const dp=g.forwardRef(({className:l,bsPrefix:n,as:c="div",...s},u)=>(n=Qe(n,"card-img-overlay"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));dp.displayName="CardImgOverlay";const hp=g.forwardRef(({className:l,bsPrefix:n,as:c="a",...s},u)=>(n=Qe(n,"card-link"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));hp.displayName="CardLink";const Eb=Po("h6"),mp=g.forwardRef(({className:l,bsPrefix:n,as:c=Eb,...s},u)=>(n=Qe(n,"card-subtitle"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));mp.displayName="CardSubtitle";const yp=g.forwardRef(({className:l,bsPrefix:n,as:c="p",...s},u)=>(n=Qe(n,"card-text"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));yp.displayName="CardText";const bb=Po("h5"),pp=g.forwardRef(({className:l,bsPrefix:n,as:c=bb,...s},u)=>(n=Qe(n,"card-title"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));pp.displayName="CardTitle";const vp=g.forwardRef(({bsPrefix:l,className:n,bg:c,text:s,border:u,body:f=!1,children:d,as:y="div",...v},p)=>{const b=Qe(l,"card");return h.jsx(y,{ref:p,...v,className:Ae(n,b,c&&`bg-${c}`,s&&`text-${s}`,u&&`border-${u}`),children:f?h.jsx(ef,{children:d}):d})});vp.displayName="Card";const Yn=Object.assign(vp,{Img:fp,Title:pp,Subtitle:mp,Body:ef,Link:hp,Text:yp,Header:op,Footer:cp,ImgOverlay:dp});function Sb(l){const n=g.useRef(l);return n.current=l,n}function xb(l){const n=Sb(l);g.useEffect(()=>()=>n.current(),[])}function _b(l,n){return g.Children.toArray(l).some(c=>g.isValidElement(c)&&c.type===n)}function Rb({as:l,bsPrefix:n,className:c,...s}){n=Qe(n,"col");const u=tp(),f=np(),d=[],y=[];return u.forEach(v=>{const p=s[v];delete s[v];let b,R,S;typeof p=="object"&&p!=null?{span:b,offset:R,order:S}=p:b=p;const _=v!==f?`-${v}`:"";b&&d.push(b===!0?`${n}${_}`:`${n}${_}-${b}`),S!=null&&y.push(`order${_}-${S}`),R!=null&&y.push(`offset${_}-${R}`)}),[{...s,className:Ae(c,...d,...y)},{as:l,bsPrefix:n,spans:d}]}const ln=g.forwardRef((l,n)=>{const[{className:c,...s},{as:u="div",bsPrefix:f,spans:d}]=Rb(l);return h.jsx(u,{...s,ref:n,className:Ae(c,!d.length&&f)})});ln.displayName="Col";const Ya=g.forwardRef(({bsPrefix:l,fluid:n=!1,as:c="div",className:s,...u},f)=>{const d=Qe(l,"container"),y=typeof n=="string"?`-${n}`:"-fluid";return h.jsx(c,{ref:f,...u,className:Ae(s,n?`${d}${y}`:d)})});Ya.displayName="Container";var Tb=Function.prototype.bind.call(Function.prototype.call,[].slice);function ti(l,n){return Tb(l.querySelectorAll(n))}function by(l,n){if(l.contains)return l.contains(n);if(l.compareDocumentPosition)return l===n||!!(l.compareDocumentPosition(n)&16)}var So,Sy;function Nb(){if(Sy)return So;Sy=1;var l=function(){};return So=l,So}var Cb=Nb();const q2=fr(Cb),jb="data-rr-ui-";function Ob(l){return`${jb}${l}`}const gp=g.createContext(ri?window:void 0);gp.Provider;function tf(){return g.useContext(gp)}const Db={type:fa.string,tooltip:fa.bool,as:fa.elementType},Fu=g.forwardRef(({as:l="div",className:n,type:c="valid",tooltip:s=!1,...u},f)=>h.jsx(l,{...u,ref:f,className:Ae(n,`${c}-${s?"tooltip":"feedback"}`)}));Fu.displayName="Feedback";Fu.propTypes=Db;const da=g.createContext({}),nf=g.forwardRef(({id:l,bsPrefix:n,className:c,type:s="checkbox",isValid:u=!1,isInvalid:f=!1,as:d="input",...y},v)=>{const{controlId:p}=g.useContext(da);return n=Qe(n,"form-check-input"),h.jsx(d,{...y,ref:v,type:s,id:l||p,className:Ae(c,n,u&&"is-valid",f&&"is-invalid")})});nf.displayName="FormCheckInput";const qu=g.forwardRef(({bsPrefix:l,className:n,htmlFor:c,...s},u)=>{const{controlId:f}=g.useContext(da);return l=Qe(l,"form-check-label"),h.jsx("label",{...s,ref:u,htmlFor:c||f,className:Ae(n,l)})});qu.displayName="FormCheckLabel";const Ep=g.forwardRef(({id:l,bsPrefix:n,bsSwitchPrefix:c,inline:s=!1,reverse:u=!1,disabled:f=!1,isValid:d=!1,isInvalid:y=!1,feedbackTooltip:v=!1,feedback:p,feedbackType:b,className:R,style:S,title:_="",type:O="checkbox",label:H,children:U,as:M="input",...q},Y)=>{n=Qe(n,"form-check"),c=Qe(c,"form-switch");const{controlId:J}=g.useContext(da),k=g.useMemo(()=>({controlId:l||J}),[J,l]),N=!U&&H!=null&&H!==!1||_b(U,qu),W=h.jsx(nf,{...q,type:O==="switch"?"checkbox":O,ref:Y,isValid:d,isInvalid:y,disabled:f,as:M});return h.jsx(da.Provider,{value:k,children:h.jsx("div",{style:S,className:Ae(R,N&&n,s&&`${n}-inline`,u&&`${n}-reverse`,O==="switch"&&c),children:U||h.jsxs(h.Fragment,{children:[W,N&&h.jsx(qu,{title:_,children:H}),p&&h.jsx(Fu,{type:b,tooltip:v,children:p})]})})})});Ep.displayName="FormCheck";const Vu=Object.assign(Ep,{Input:nf,Label:qu}),bp=g.forwardRef(({bsPrefix:l,type:n,size:c,htmlSize:s,id:u,className:f,isValid:d=!1,isInvalid:y=!1,plaintext:v,readOnly:p,as:b="input",...R},S)=>{const{controlId:_}=g.useContext(da);return l=Qe(l,"form-control"),h.jsx(b,{...R,type:n,size:s,ref:S,readOnly:p,id:u||_,className:Ae(f,v?`${l}-plaintext`:l,c&&`${l}-${c}`,n==="color"&&`${l}-color`,d&&"is-valid",y&&"is-invalid")})});bp.displayName="FormControl";const wb=Object.assign(bp,{Feedback:Fu}),Sp=g.forwardRef(({className:l,bsPrefix:n,as:c="div",...s},u)=>(n=Qe(n,"form-floating"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));Sp.displayName="FormFloating";const af=g.forwardRef(({controlId:l,as:n="div",...c},s)=>{const u=g.useMemo(()=>({controlId:l}),[l]);return h.jsx(da.Provider,{value:u,children:h.jsx(n,{...c,ref:s})})});af.displayName="FormGroup";const xp=g.forwardRef(({as:l="label",bsPrefix:n,column:c=!1,visuallyHidden:s=!1,className:u,htmlFor:f,...d},y)=>{const{controlId:v}=g.useContext(da);n=Qe(n,"form-label");let p="col-form-label";typeof c=="string"&&(p=`${p} ${p}-${c}`);const b=Ae(u,n,s&&"visually-hidden",c&&p);return f=f||v,c?h.jsx(ln,{ref:y,as:"label",className:b,htmlFor:f,...d}):h.jsx(l,{ref:y,className:b,htmlFor:f,...d})});xp.displayName="FormLabel";const _p=g.forwardRef(({bsPrefix:l,className:n,id:c,...s},u)=>{const{controlId:f}=g.useContext(da);return l=Qe(l,"form-range"),h.jsx("input",{...s,type:"range",ref:u,className:Ae(n,l),id:c||f})});_p.displayName="FormRange";const Rp=g.forwardRef(({bsPrefix:l,size:n,htmlSize:c,className:s,isValid:u=!1,isInvalid:f=!1,id:d,...y},v)=>{const{controlId:p}=g.useContext(da);return l=Qe(l,"form-select"),h.jsx("select",{...y,size:c,ref:v,className:Ae(s,l,n&&`${l}-${n}`,u&&"is-valid",f&&"is-invalid"),id:d||p})});Rp.displayName="FormSelect";const Tp=g.forwardRef(({bsPrefix:l,className:n,as:c="small",muted:s,...u},f)=>(l=Qe(l,"form-text"),h.jsx(c,{...u,ref:f,className:Ae(n,l,s&&"text-muted")})));Tp.displayName="FormText";const Np=g.forwardRef((l,n)=>h.jsx(Vu,{...l,ref:n,type:"switch"}));Np.displayName="Switch";const Ab=Object.assign(Np,{Input:Vu.Input,Label:Vu.Label}),Cp=g.forwardRef(({bsPrefix:l,className:n,children:c,controlId:s,label:u,...f},d)=>(l=Qe(l,"form-floating"),h.jsxs(af,{ref:d,className:Ae(n,l),controlId:s,...f,children:[c,h.jsx("label",{htmlFor:s,children:u})]})));Cp.displayName="FloatingLabel";const Mb={_ref:fa.any,validated:fa.bool,as:fa.elementType},lf=g.forwardRef(({className:l,validated:n,as:c="form",...s},u)=>h.jsx(c,{...s,ref:u,className:Ae(l,n&&"was-validated")}));lf.displayName="Form";lf.propTypes=Mb;const Du=Object.assign(lf,{Group:af,Control:wb,Floating:Sp,Check:Vu,Switch:Ab,Label:xp,Text:Tp,Range:_p,Select:Rp,FloatingLabel:Cp}),xy=l=>!l||typeof l=="function"?l:n=>{l.current=n};function zb(l,n){const c=xy(l),s=xy(n);return u=>{c&&c(u),s&&s(u)}}function rf(l,n){return g.useMemo(()=>zb(l,n),[l,n])}var wu;function _y(l){if((!wu&&wu!==0||l)&&ri){var n=document.createElement("div");n.style.position="absolute",n.style.top="-9999px",n.style.width="50px",n.style.height="50px",n.style.overflow="scroll",document.body.appendChild(n),wu=n.offsetWidth-n.clientWidth,document.body.removeChild(n)}return wu}function Lb(){return g.useState(null)}function xo(l){l===void 0&&(l=Ku());try{var n=l.activeElement;return!n||!n.nodeName?null:n}catch{return l.body}}function Ub(l){const n=g.useRef(l);return n.current=l,n}function Hb(l){const n=Ub(l);g.useEffect(()=>()=>n.current(),[])}function Bb(l=document){const n=l.defaultView;return Math.abs(n.innerWidth-l.documentElement.clientWidth)}const Ry=Ob("modal-open");class uf{constructor({ownerDocument:n,handleContainerOverflow:c=!0,isRTL:s=!1}={}){this.handleContainerOverflow=c,this.isRTL=s,this.modals=[],this.ownerDocument=n}getScrollbarWidth(){return Bb(this.ownerDocument)}getElement(){return(this.ownerDocument||document).body}setModalAttributes(n){}removeModalAttributes(n){}setContainerStyle(n){const c={overflow:"hidden"},s=this.isRTL?"paddingLeft":"paddingRight",u=this.getElement();n.style={overflow:u.style.overflow,[s]:u.style[s]},n.scrollBarWidth&&(c[s]=`${parseInt(gl(u,s)||"0",10)+n.scrollBarWidth}px`),u.setAttribute(Ry,""),gl(u,c)}reset(){[...this.modals].forEach(n=>this.remove(n))}removeContainerStyle(n){const c=this.getElement();c.removeAttribute(Ry),Object.assign(c.style,n.style)}add(n){let c=this.modals.indexOf(n);return c!==-1||(c=this.modals.length,this.modals.push(n),this.setModalAttributes(n),c!==0)||(this.state={scrollBarWidth:this.getScrollbarWidth(),style:{}},this.handleContainerOverflow&&this.setContainerStyle(this.state)),c}remove(n){const c=this.modals.indexOf(n);c!==-1&&(this.modals.splice(c,1),!this.modals.length&&this.handleContainerOverflow&&this.removeContainerStyle(this.state),this.removeModalAttributes(n))}isTopModal(n){return!!this.modals.length&&this.modals[this.modals.length-1]===n}}const _o=(l,n)=>ri?l==null?(n||Ku()).body:(typeof l=="function"&&(l=l()),l&&"current"in l&&(l=l.current),l&&("nodeType"in l||l.getBoundingClientRect)?l:null):null;function qb(l,n){const c=tf(),[s,u]=g.useState(()=>_o(l,c==null?void 0:c.document));if(!s){const f=_o(l);f&&u(f)}return g.useEffect(()=>{},[n,s]),g.useEffect(()=>{const f=_o(l);f!==s&&u(f)},[l,s]),s}function Vb({children:l,in:n,onExited:c,mountOnEnter:s,unmountOnExit:u}){const f=g.useRef(null),d=g.useRef(n),y=pl(c);g.useEffect(()=>{n?d.current=!0:y(f.current)},[n,y]);const v=rf(f,$u(l)),p=g.cloneElement(l,{ref:v});return n?p:u||!d.current&&s?null:p}const Yb=["onEnter","onEntering","onEntered","onExit","onExiting","onExited","addEndListener","children"];function Gb(l,n){if(l==null)return{};var c={};for(var s in l)if({}.hasOwnProperty.call(l,s)){if(n.indexOf(s)>=0)continue;c[s]=l[s]}return c}function kb(l){let{onEnter:n,onEntering:c,onEntered:s,onExit:u,onExiting:f,onExited:d,addEndListener:y,children:v}=l,p=Gb(l,Yb);const b=g.useRef(null),R=rf(b,$u(v)),S=J=>k=>{J&&b.current&&J(b.current,k)},_=g.useCallback(S(n),[n]),O=g.useCallback(S(c),[c]),H=g.useCallback(S(s),[s]),U=g.useCallback(S(u),[u]),M=g.useCallback(S(f),[f]),q=g.useCallback(S(d),[d]),Y=g.useCallback(S(y),[y]);return Object.assign({},p,{nodeRef:b},n&&{onEnter:_},c&&{onEntering:O},s&&{onEntered:H},u&&{onExit:U},f&&{onExiting:M},d&&{onExited:q},y&&{addEndListener:Y},{children:typeof v=="function"?(J,k)=>v(J,Object.assign({},k,{ref:R})):g.cloneElement(v,{ref:R})})}const Xb=["component"];function Qb(l,n){if(l==null)return{};var c={};for(var s in l)if({}.hasOwnProperty.call(l,s)){if(n.indexOf(s)>=0)continue;c[s]=l[s]}return c}const Zb=g.forwardRef((l,n)=>{let{component:c}=l,s=Qb(l,Xb);const u=kb(s);return h.jsx(c,Object.assign({ref:n},u))});function Kb({in:l,onTransition:n}){const c=g.useRef(null),s=g.useRef(!0),u=pl(n);return Ey(()=>{if(!c.current)return;let f=!1;return u({in:l,element:c.current,initial:s.current,isStale:()=>f}),()=>{f=!0}},[l,u]),Ey(()=>(s.current=!1,()=>{s.current=!0}),[]),c}function $b({children:l,in:n,onExited:c,onEntered:s,transition:u}){const[f,d]=g.useState(!n);n&&f&&d(!1);const y=Kb({in:!!n,onTransition:p=>{const b=()=>{p.isStale()||(p.in?s==null||s(p.element,p.initial):(d(!0),c==null||c(p.element)))};Promise.resolve(u(p)).then(b,R=>{throw p.in||d(!0),R})}}),v=rf(y,$u(l));return f&&!n?null:g.cloneElement(l,{ref:v})}function Ty(l,n,c){return l?h.jsx(Zb,Object.assign({},c,{component:l})):n?h.jsx($b,Object.assign({},c,{transition:n})):h.jsx(Vb,Object.assign({},c))}const Fb=["show","role","className","style","children","backdrop","keyboard","onBackdropClick","onEscapeKeyDown","transition","runTransition","backdropTransition","runBackdropTransition","autoFocus","enforceFocus","restoreFocus","restoreFocusOptions","renderDialog","renderBackdrop","manager","container","onShow","onHide","onExit","onExited","onExiting","onEnter","onEntering","onEntered"];function Jb(l,n){if(l==null)return{};var c={};for(var s in l)if({}.hasOwnProperty.call(l,s)){if(n.indexOf(s)>=0)continue;c[s]=l[s]}return c}let Ro;function Pb(l){return Ro||(Ro=new uf({ownerDocument:l==null?void 0:l.document})),Ro}function Wb(l){const n=tf(),c=l||Pb(n),s=g.useRef({dialog:null,backdrop:null});return Object.assign(s.current,{add:()=>c.add(s.current),remove:()=>c.remove(s.current),isTopModal:()=>c.isTopModal(s.current),setDialogRef:g.useCallback(u=>{s.current.dialog=u},[]),setBackdropRef:g.useCallback(u=>{s.current.backdrop=u},[])})}const jp=g.forwardRef((l,n)=>{let{show:c=!1,role:s="dialog",className:u,style:f,children:d,backdrop:y=!0,keyboard:v=!0,onBackdropClick:p,onEscapeKeyDown:b,transition:R,runTransition:S,backdropTransition:_,runBackdropTransition:O,autoFocus:H=!0,enforceFocus:U=!0,restoreFocus:M=!0,restoreFocusOptions:q,renderDialog:Y,renderBackdrop:J=De=>h.jsx("div",Object.assign({},De)),manager:k,container:N,onShow:W,onHide:ie=()=>{},onExit:X,onExited:I,onExiting:de,onEnter:Ne,onEntering:Ye,onEntered:Be}=l,ze=Jb(l,Fb);const K=tf(),ce=qb(N),ne=Wb(k),Re=sb(),T=ob(c),[Q,le]=g.useState(!c),te=g.useRef(null);g.useImperativeHandle(n,()=>ne,[ne]),ri&&!T&&c&&(te.current=xo(K==null?void 0:K.document)),c&&Q&&le(!1);const P=pl(()=>{if(ne.add(),Ee.current=Bu(document,"keydown",Ce),Le.current=Bu(document,"focus",()=>setTimeout(ye),!0),W&&W(),H){var De,Rt;const St=xo((De=(Rt=ne.dialog)==null?void 0:Rt.ownerDocument)!=null?De:K==null?void 0:K.document);ne.dialog&&St&&!by(ne.dialog,St)&&(te.current=St,ne.dialog.focus())}}),ge=pl(()=>{if(ne.remove(),Ee.current==null||Ee.current(),Le.current==null||Le.current(),M){var De;(De=te.current)==null||De.focus==null||De.focus(q),te.current=null}});g.useEffect(()=>{!c||!ce||P()},[c,ce,P]),g.useEffect(()=>{Q&&ge()},[Q,ge]),Hb(()=>{ge()});const ye=pl(()=>{if(!U||!Re()||!ne.isTopModal())return;const De=xo(K==null?void 0:K.document);ne.dialog&&De&&!by(ne.dialog,De)&&ne.dialog.focus()}),Je=pl(De=>{De.target===De.currentTarget&&(p==null||p(De),y===!0&&ie())}),Ce=pl(De=>{v&&PE(De)&&ne.isTopModal()&&(b==null||b(De),De.defaultPrevented||ie())}),Le=g.useRef(),Ee=g.useRef(),Ze=(...De)=>{le(!0),I==null||I(...De)};if(!ce)return null;const vt=Object.assign({role:s,ref:ne.setDialogRef,"aria-modal":s==="dialog"?!0:void 0},ze,{style:f,className:u,tabIndex:-1});let it=Y?Y(vt):h.jsx("div",Object.assign({},vt,{children:g.cloneElement(d,{role:"document"})}));it=Ty(R,S,{unmountOnExit:!0,mountOnEnter:!0,appear:!0,in:!!c,onExit:X,onExiting:de,onExited:Ze,onEnter:Ne,onEntering:Ye,onEntered:Be,children:it});let lt=null;return y&&(lt=J({ref:ne.setBackdropRef,onClick:Je}),lt=Ty(_,O,{in:!!c,appear:!0,mountOnEnter:!0,unmountOnExit:!0,children:lt})),h.jsx(h.Fragment,{children:ii.createPortal(h.jsxs(h.Fragment,{children:[lt,it]}),ce)})});jp.displayName="Modal";const Ib=Object.assign(jp,{Manager:uf});function eS(l,n){return l.classList?l.classList.contains(n):(" "+(l.className.baseVal||l.className)+" ").indexOf(" "+n+" ")!==-1}function tS(l,n){l.classList?l.classList.add(n):eS(l,n)||(typeof l.className=="string"?l.className=l.className+" "+n:l.setAttribute("class",(l.className&&l.className.baseVal||"")+" "+n))}function Ny(l,n){return l.replace(new RegExp("(^|\\s)"+n+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function nS(l,n){l.classList?l.classList.remove(n):typeof l.className=="string"?l.className=Ny(l.className,n):l.setAttribute("class",Ny(l.className&&l.className.baseVal||"",n))}const ni={FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"};class aS extends uf{adjustAndStore(n,c,s){const u=c.style[n];c.dataset[n]=u,gl(c,{[n]:`${parseFloat(gl(c,n))+s}px`})}restore(n,c){const s=c.dataset[n];s!==void 0&&(delete c.dataset[n],gl(c,{[n]:s}))}setContainerStyle(n){super.setContainerStyle(n);const c=this.getElement();if(tS(c,"modal-open"),!n.scrollBarWidth)return;const s=this.isRTL?"paddingLeft":"paddingRight",u=this.isRTL?"marginLeft":"marginRight";ti(c,ni.FIXED_CONTENT).forEach(f=>this.adjustAndStore(s,f,n.scrollBarWidth)),ti(c,ni.STICKY_CONTENT).forEach(f=>this.adjustAndStore(u,f,-n.scrollBarWidth)),ti(c,ni.NAVBAR_TOGGLER).forEach(f=>this.adjustAndStore(u,f,n.scrollBarWidth))}removeContainerStyle(n){super.removeContainerStyle(n);const c=this.getElement();nS(c,"modal-open");const s=this.isRTL?"paddingLeft":"paddingRight",u=this.isRTL?"marginLeft":"marginRight";ti(c,ni.FIXED_CONTENT).forEach(f=>this.restore(s,f)),ti(c,ni.STICKY_CONTENT).forEach(f=>this.restore(u,f)),ti(c,ni.NAVBAR_TOGGLER).forEach(f=>this.restore(u,f))}}let To;function lS(l){return To||(To=new aS(l)),To}const Op=g.forwardRef(({className:l,bsPrefix:n,as:c="div",...s},u)=>(n=Qe(n,"modal-body"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));Op.displayName="ModalBody";const Dp=g.createContext({onHide(){}}),cf=g.forwardRef(({bsPrefix:l,className:n,contentClassName:c,centered:s,size:u,fullscreen:f,children:d,scrollable:y,...v},p)=>{l=Qe(l,"modal");const b=`${l}-dialog`,R=typeof f=="string"?`${l}-fullscreen-${f}`:`${l}-fullscreen`;return h.jsx("div",{...v,ref:p,className:Ae(b,n,u&&`${l}-${u}`,s&&`${b}-centered`,y&&`${b}-scrollable`,f&&R),children:h.jsx("div",{className:Ae(`${l}-content`,c),children:d})})});cf.displayName="ModalDialog";const wp=g.forwardRef(({className:l,bsPrefix:n,as:c="div",...s},u)=>(n=Qe(n,"modal-footer"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));wp.displayName="ModalFooter";const iS=g.forwardRef(({closeLabel:l="Close",closeVariant:n,closeButton:c=!1,onHide:s,children:u,...f},d)=>{const y=g.useContext(Dp),v=Ho(()=>{y==null||y.onHide(),s==null||s()});return h.jsxs("div",{ref:d,...f,children:[u,c&&h.jsx(Io,{"aria-label":l,variant:n,onClick:v})]})}),Ap=g.forwardRef(({bsPrefix:l,className:n,closeLabel:c="Close",closeButton:s=!1,...u},f)=>(l=Qe(l,"modal-header"),h.jsx(iS,{ref:f,...u,className:Ae(n,l),closeLabel:c,closeButton:s})));Ap.displayName="ModalHeader";const rS=Po("h4"),Mp=g.forwardRef(({className:l,bsPrefix:n,as:c=rS,...s},u)=>(n=Qe(n,"modal-title"),h.jsx(c,{ref:u,className:Ae(l,n),...s})));Mp.displayName="ModalTitle";function uS(l){return h.jsx(Wo,{...l,timeout:null})}function cS(l){return h.jsx(Wo,{...l,timeout:null})}const zp=g.forwardRef(({bsPrefix:l,className:n,style:c,dialogClassName:s,contentClassName:u,children:f,dialogAs:d=cf,"data-bs-theme":y,"aria-labelledby":v,"aria-describedby":p,"aria-label":b,show:R=!1,animation:S=!0,backdrop:_=!0,keyboard:O=!0,onEscapeKeyDown:H,onShow:U,onHide:M,container:q,autoFocus:Y=!0,enforceFocus:J=!0,restoreFocus:k=!0,restoreFocusOptions:N,onEntered:W,onExit:ie,onExiting:X,onEnter:I,onEntering:de,onExited:Ne,backdropClassName:Ye,manager:Be,...ze},K)=>{const[ce,ne]=g.useState({}),[Re,T]=g.useState(!1),Q=g.useRef(!1),le=g.useRef(!1),te=g.useRef(null),[P,ge]=Lb(),ye=rp(K,ge),Je=Ho(M),Ce=BE();l=Qe(l,"modal");const Le=g.useMemo(()=>({onHide:Je}),[Je]);function Ee(){return Be||lS({isRTL:Ce})}function Ze(_e){if(!ri)return;const Ie=Ee().getScrollbarWidth()>0,Gt=_e.scrollHeight>Ku(_e).documentElement.clientHeight;ne({paddingRight:Ie&&!Gt?_y():void 0,paddingLeft:!Ie&&Gt?_y():void 0})}const vt=Ho(()=>{P&&Ze(P.dialog)});xb(()=>{Uo(window,"resize",vt),te.current==null||te.current()});const it=()=>{Q.current=!0},lt=_e=>{Q.current&&P&&_e.target===P.dialog&&(le.current=!0),Q.current=!1},De=()=>{T(!0),te.current=ip(P.dialog,()=>{T(!1)})},Rt=_e=>{_e.target===_e.currentTarget&&De()},St=_e=>{if(_==="static"){Rt(_e);return}if(le.current||_e.target!==_e.currentTarget){le.current=!1;return}M==null||M()},Pt=_e=>{O?H==null||H(_e):(_e.preventDefault(),_==="static"&&De())},Zt=(_e,Ie)=>{_e&&Ze(_e),I==null||I(_e,Ie)},un=_e=>{te.current==null||te.current(),ie==null||ie(_e)},cn=(_e,Ie)=>{de==null||de(_e,Ie),lp(window,"resize",vt)},Ut=_e=>{_e&&(_e.style.display=""),Ne==null||Ne(_e),Uo(window,"resize",vt)},Ht=g.useCallback(_e=>h.jsx("div",{..._e,className:Ae(`${l}-backdrop`,Ye,!S&&"show")}),[S,Ye,l]),mt={...c,...ce};mt.display="block";const Kt=_e=>h.jsx("div",{role:"dialog",..._e,style:mt,className:Ae(n,l,Re&&`${l}-static`,!S&&"show"),onClick:_?St:void 0,onMouseUp:lt,"data-bs-theme":y,"aria-label":b,"aria-labelledby":v,"aria-describedby":p,children:h.jsx(d,{...ze,onMouseDown:it,className:s,contentClassName:u,children:f})});return h.jsx(Dp.Provider,{value:Le,children:h.jsx(Ib,{show:R,ref:ye,backdrop:_,container:q,keyboard:!0,autoFocus:Y,enforceFocus:J,restoreFocus:k,restoreFocusOptions:N,onEscapeKeyDown:Pt,onShow:U,onHide:M,onEnter:Zt,onEntering:cn,onEntered:W,onExit:un,onExiting:X,onExited:Ut,manager:Ee(),transition:S?uS:void 0,backdropTransition:S?cS:void 0,renderBackdrop:Ht,renderDialog:Kt})})});zp.displayName="Modal";const ir=Object.assign(zp,{Body:Op,Header:Ap,Title:Mp,Footer:wp,Dialog:cf,TRANSITION_DURATION:300,BACKDROP_TRANSITION_DURATION:150}),Rn=g.forwardRef(({bsPrefix:l,className:n,as:c="div",...s},u)=>{const f=Qe(l,"row"),d=tp(),y=np(),v=`${f}-cols`,p=[];return d.forEach(b=>{const R=s[b];delete s[b];let S;R!=null&&typeof R=="object"?{cols:S}=R:S=R;const _=b!==y?`-${b}`:"";S!=null&&p.push(`${v}${_}-${S}`)}),h.jsx(c,{ref:u,...s,className:Ae(n,f,...p)})});Rn.displayName="Row";const sS="/static/DY3vaYXT.svg";function oS(){const l=Ke.c(6),{user:n}=g.useContext(Fo),{pathname:c}=Xn();let s;l[0]===Symbol.for("react.memo_cache_sentinel")?(s=h.jsx(ln,{xs:10,children:h.jsx("div",{className:"nav-wrapper",children:h.jsxs("nav",{className:"header-nav",children:[h.jsx("a",{href:"https://geant.org/",children:h.jsx("img",{src:sS,alt:"GÉANT Logo"})}),h.jsxs("ul",{children:[h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://network.geant.org/",children:"NETWORK"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://geant.org/services/",children:"SERVICES"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://community.geant.org/",children:"COMMUNITY"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://tnc23.geant.org/",children:"TNC"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://geant.org/projects/",children:"PROJECTS"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://connect.geant.org/",children:"CONNECT"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://impact.geant.org/",children:"IMPACT"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://careers.geant.org/",children:"CAREERS"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://about.geant.org/",children:"ABOUT"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://connect.geant.org/community-news",children:"NEWS"})}),h.jsx("li",{children:h.jsx("a",{className:"nav-link-entry",href:"https://resources.geant.org/",children:"RESOURCES"})}),h.jsx("li",{children:h.jsx(Tn,{className:"nav-link-entry",to:"/",children:"COMPENDIUM"})})]})]})})}),l[0]=s):s=l[0];let u;l[1]!==c||l[2]!==n.permissions.admin?(u=n.permissions.admin&&!c.includes("survey")&&h.jsx("div",{className:"nav-link",style:{float:"right"},children:h.jsx(Tn,{className:"nav-link-entry",to:"/survey",children:h.jsx("span",{children:"Go to Survey"})})}),l[1]=c,l[2]=n.permissions.admin,l[3]=u):u=l[3];let f;return l[4]!==u?(f=h.jsx("div",{className:"external-page-nav-bar",children:h.jsx(Ya,{children:h.jsxs(Rn,{children:[s,h.jsx(ln,{xs:2,children:u})]})})}),l[4]=u,l[5]=f):f=l[5],f}const fS="/static/A3T3A-a_.svg",dS="/static/DOOiIGTs.png";function hS(){const l=Ke.c(9);let n;l[0]===Symbol.for("react.memo_cache_sentinel")?(n=h.jsx("a",{href:"https://geant.org",children:h.jsx("img",{src:fS,className:"m-3",style:{maxWidth:"100px"},alt:"GÉANT Logo"})}),l[0]=n):n=l[0];let c;l[1]===Symbol.for("react.memo_cache_sentinel")?(c=h.jsxs(ln,{children:[n,h.jsx("img",{src:dS,className:"m-3",style:{maxWidth:"200px"},alt:"European Union Flag"})]}),l[1]=c):c=l[1];let s,u;l[2]===Symbol.for("react.memo_cache_sentinel")?(s=h.jsx("a",{className:"mx-3 footer-link",href:"https://geant.org/Disclaimer/",children:"Disclaimer"}),u=h.jsx("wbr",{}),l[2]=s,l[3]=u):(s=l[2],u=l[3]);let f,d;l[4]===Symbol.for("react.memo_cache_sentinel")?(f=h.jsx("a",{className:"mx-3 footer-link",href:"https://geant.org/geant-anti-slavery-policy/",children:"GEANT Anti‑Slavery Policy"}),d=h.jsx("wbr",{}),l[4]=f,l[5]=d):(f=l[4],d=l[5]);let y,v;l[6]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("a",{className:"mx-3 footer-link",href:"https://geant.org/Privacy-Notice/",children:"Privacy Policy"}),v=h.jsx("wbr",{}),l[6]=y,l[7]=v):(y=l[6],v=l[7]);let p;return l[8]===Symbol.for("react.memo_cache_sentinel")?(p=h.jsx("footer",{className:"page-footer pt-3",children:h.jsx(Ya,{children:h.jsxs(Rn,{children:[c,h.jsx(ln,{className:"mt-4 text-end",children:h.jsxs("span",{children:[s,u,"|",f,d,"|",y,v,"|",h.jsx("a",{className:"mx-3 footer-link",style:{cursor:"pointer"},onClick:mS,children:"Analytics Consent"})]})})]})})}),l[8]=p):p=l[8],p}function mS(){localStorage.removeItem("matomo_consent"),window.location.reload()}const Lp="/static/C4lsyu6A.svg",Up="/static/DhA-EmEc.svg";function Hp(){const l=Ke.c(16),n=g.useContext(ep);let c;l[0]!==n?(c=O=>n==null?void 0:n.trackPageView(O),l[0]=n,l[1]=c):c=l[1];const s=c;let u;l[2]!==n?(u=O=>n==null?void 0:n.trackEvent(O),l[2]=n,l[3]=u):u=l[3];const f=u;let d;l[4]!==n?(d=()=>n==null?void 0:n.trackEvents(),l[4]=n,l[5]=d):d=l[5];const y=d;let v;l[6]!==n?(v=O=>n==null?void 0:n.trackLink(O),l[6]=n,l[7]=v):v=l[7];const p=v,b=yS;let R;l[8]!==n?(R=(O,...H)=>{const U=H;n==null||n.pushInstruction(O,...U)},l[8]=n,l[9]=R):R=l[9];const S=R;let _;return l[10]!==S||l[11]!==f||l[12]!==y||l[13]!==p||l[14]!==s?(_={trackEvent:f,trackEvents:y,trackPageView:s,trackLink:p,enableLinkTracking:b,pushInstruction:S},l[10]=S,l[11]=f,l[12]=y,l[13]=p,l[14]=s,l[15]=_):_=l[15],_}function yS(){}function Bp(){const l=Ke.c(13),{trackPageView:n}=Hp();let c,s;l[0]!==n?(c=()=>{n({documentTitle:"GEANT Compendium Landing Page"})},s=[n],l[0]=n,l[1]=c,l[2]=s):(c=l[1],s=l[2]),g.useEffect(c,s);let u;l[3]===Symbol.for("react.memo_cache_sentinel")?(u=h.jsx("h1",{className:"geant-header",children:"THE GÉANT COMPENDIUM OF NRENS"}),l[3]=u):u=l[3];let f;l[4]===Symbol.for("react.memo_cache_sentinel")?(f=h.jsx(Rn,{children:h.jsxs("div",{className:"center-text",children:[u,h.jsxs("div",{className:"wordwrap pt-4",children:[h.jsx("p",{style:{textAlign:"left",fontSize:"20px"},children:"Each year GÉANT invites European National Research and Eduction Networks to fill in a questionnaire asking about their network, their organisation, standards and policies, connected users, and the services they offer their users. This Compendium of responses is an authoritative reference source for anyone with an interest in the development of research and education networking in Europe and beyond. No two NRENs are identical, with great diversity in their structures, funding, size, and focus."}),h.jsx("p",{style:{textAlign:"left",fontSize:"20px"},children:"The GÉANT Compendium of NRENs Report is published annually, using both data from the Compendium from other sources, including surveys and studies carried out within different teams within GÉANT and the NREN community. The Report gives a broad overview of the European NREN landscape, identifying developments and trends."}),h.jsx("p",{style:{textAlign:"left",fontSize:"20px"},children:"Compendium Data, the responses from the NRENs, are made available to be viewed and downloaded. Graphs, charts, and tables can be customised to show as many or few NRENs as required, across different years. These can be downloaded as images or in PDF form."})]})]})}),l[4]=f):f=l[4];let d;l[5]===Symbol.for("react.memo_cache_sentinel")?(d={backgroundColor:"white"},l[5]=d):d=l[5];let y;l[6]===Symbol.for("react.memo_cache_sentinel")?(y={width:"18rem"},l[6]=y):y=l[6];let v;l[7]===Symbol.for("react.memo_cache_sentinel")?(v=h.jsx(Yn.Img,{src:Lp}),l[7]=v):v=l[7];let p;l[8]===Symbol.for("react.memo_cache_sentinel")?(p=h.jsx(Yn.Title,{children:"Compendium Data"}),l[8]=p):p=l[8];let b;l[9]===Symbol.for("react.memo_cache_sentinel")?(b=h.jsx(ln,{align:"center",children:h.jsx(Yn,{border:"light",style:y,children:h.jsxs(Tn,{to:"/data",className:"link-text",children:[v,h.jsxs(Yn.Body,{children:[p,h.jsx(Yn.Text,{children:h.jsx("span",{children:"Statistical representation of the annual Compendium Survey data is available here"})})]})]})})}),l[9]=b):b=l[9];let R;l[10]===Symbol.for("react.memo_cache_sentinel")?(R={width:"18rem"},l[10]=R):R=l[10];let S;l[11]===Symbol.for("react.memo_cache_sentinel")?(S=h.jsx(Yn.Img,{src:Up}),l[11]=S):S=l[11];let _;return l[12]===Symbol.for("react.memo_cache_sentinel")?(_=h.jsxs(Ya,{className:"py-5 grey-container",children:[f,h.jsx(Rn,{children:h.jsx(ln,{children:h.jsx(Ya,{style:d,className:"rounded-border",children:h.jsxs(Rn,{className:"justify-content-md-center",children:[b,h.jsx(ln,{align:"center",children:h.jsx(Yn,{border:"light",style:R,children:h.jsxs("a",{href:"https://resources.geant.org/geant-compendia/",className:"link-text",target:"_blank",rel:"noreferrer",children:[S,h.jsxs(Yn.Body,{children:[h.jsx(Yn.Title,{children:"Compendium Reports"}),h.jsx(Yn.Text,{children:"A GÉANT Compendium Report is published annually, drawing on data from the Compendium Survey filled in by NRENs, complemented by information from other surveys"})]})]})})})]})})})})]}),l[12]=_):_=l[12],_}var qp={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},Cy=Yt.createContext&&Yt.createContext(qp),pS=["attr","size","title"];function vS(l,n){if(l==null)return{};var c=gS(l,n),s,u;if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(l);for(u=0;u<f.length;u++)s=f[u],!(n.indexOf(s)>=0)&&Object.prototype.propertyIsEnumerable.call(l,s)&&(c[s]=l[s])}return c}function gS(l,n){if(l==null)return{};var c={};for(var s in l)if(Object.prototype.hasOwnProperty.call(l,s)){if(n.indexOf(s)>=0)continue;c[s]=l[s]}return c}function Yu(){return Yu=Object.assign?Object.assign.bind():function(l){for(var n=1;n<arguments.length;n++){var c=arguments[n];for(var s in c)Object.prototype.hasOwnProperty.call(c,s)&&(l[s]=c[s])}return l},Yu.apply(this,arguments)}function jy(l,n){var c=Object.keys(l);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(l);n&&(s=s.filter(function(u){return Object.getOwnPropertyDescriptor(l,u).enumerable})),c.push.apply(c,s)}return c}function Gu(l){for(var n=1;n<arguments.length;n++){var c=arguments[n]!=null?arguments[n]:{};n%2?jy(Object(c),!0).forEach(function(s){ES(l,s,c[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(l,Object.getOwnPropertyDescriptors(c)):jy(Object(c)).forEach(function(s){Object.defineProperty(l,s,Object.getOwnPropertyDescriptor(c,s))})}return l}function ES(l,n,c){return n=bS(n),n in l?Object.defineProperty(l,n,{value:c,enumerable:!0,configurable:!0,writable:!0}):l[n]=c,l}function bS(l){var n=SS(l,"string");return typeof n=="symbol"?n:n+""}function SS(l,n){if(typeof l!="object"||!l)return l;var c=l[Symbol.toPrimitive];if(c!==void 0){var s=c.call(l,n||"default");if(typeof s!="object")return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return(n==="string"?String:Number)(l)}function Vp(l){return l&&l.map((n,c)=>Yt.createElement(n.tag,Gu({key:c},n.attr),Vp(n.child)))}function Yp(l){return n=>Yt.createElement(xS,Yu({attr:Gu({},l.attr)},n),Vp(l.child))}function xS(l){var n=c=>{var{attr:s,size:u,title:f}=l,d=vS(l,pS),y=u||c.size||"1em",v;return c.className&&(v=c.className),l.className&&(v=(v?v+" ":"")+l.className),Yt.createElement("svg",Yu({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},c.attr,s,d,{className:v,style:Gu(Gu({color:l.color||c.color},c.style),l.style),height:y,width:y,xmlns:"http://www.w3.org/2000/svg"}),f&&Yt.createElement("title",null,f),l.children)};return Cy!==void 0?Yt.createElement(Cy.Consumer,null,c=>n(c)):n(qp)}function _S(l){return Yp({tag:"svg",attr:{viewBox:"0 0 1024 1024",fill:"currentColor",fillRule:"evenodd"},child:[{tag:"path",attr:{d:"M799.855 166.312c.023.007.043.018.084.059l57.69 57.69c.041.041.052.06.059.084a.118.118 0 0 1 0 .069c-.007.023-.018.042-.059.083L569.926 512l287.703 287.703c.041.04.052.06.059.083a.118.118 0 0 1 0 .07c-.007.022-.018.042-.059.083l-57.69 57.69c-.041.041-.06.052-.084.059a.118.118 0 0 1-.069 0c-.023-.007-.042-.018-.083-.059L512 569.926 224.297 857.629c-.04.041-.06.052-.083.059a.118.118 0 0 1-.07 0c-.022-.007-.042-.018-.083-.059l-57.69-57.69c-.041-.041-.052-.06-.059-.084a.118.118 0 0 1 0-.069c.007-.023.018-.042.059-.083L454.073 512 166.371 224.297c-.041-.04-.052-.06-.059-.083a.118.118 0 0 1 0-.07c.007-.022.018-.042.059-.083l57.69-57.69c.041-.041.06-.052.084-.059a.118.118 0 0 1 .069 0c.023.007.042.018.083.059L512 454.073l287.703-287.702c.04-.041.06-.052.083-.059a.118.118 0 0 1 .07 0Z"},child:[]}]})(l)}function RS(l){return Yp({tag:"svg",attr:{viewBox:"0 0 1024 1024"},child:[{tag:"path",attr:{d:"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8Z"},child:[]},{tag:"path",attr:{d:"M192 474h672q8 0 8 8v60q0 8-8 8H160q-8 0-8-8v-60q0-8 8-8Z"},child:[]}]})(l)}const rr=l=>{const n=Ke.c(23),{title:c,children:s,startCollapsed:u,theme:f}=l,d=f===void 0?"":f,[y,v]=g.useState(!!u);let p;n[0]===Symbol.for("react.memo_cache_sentinel")?(p={color:"white",paddingBottom:"3px",marginTop:"3px",marginLeft:"3px",scale:"1.3"},n[0]=p):p=n[0];let b=p;if(d){let k;n[1]===Symbol.for("react.memo_cache_sentinel")?(k={...b,color:"black",fontWeight:"bold"},n[1]=k):k=n[1],b=k}const R=`collapsible-box${d} p-0`;let S;n[2]!==c?(S=h.jsx(ln,{children:h.jsx("h1",{className:"bold-caps-16pt dark-teal pt-3 ps-3",children:c})}),n[2]=c,n[3]=S):S=n[3];const _=`toggle-btn${d} p-${d?3:2}`;let O;n[4]!==y?(O=()=>v(!y),n[4]=y,n[5]=O):O=n[5];let H;n[6]!==y||n[7]!==b?(H=y?h.jsx(RS,{style:b}):h.jsx(_S,{style:b}),n[6]=y,n[7]=b,n[8]=H):H=n[8];let U;n[9]!==_||n[10]!==O||n[11]!==H?(U=h.jsx(ln,{className:"flex-grow-0 flex-shrink-1",children:h.jsx("div",{className:_,onClick:O,children:H})}),n[9]=_,n[10]=O,n[11]=H,n[12]=U):U=n[12];let M;n[13]!==S||n[14]!==U?(M=h.jsxs(Rn,{children:[S,U]}),n[13]=S,n[14]=U,n[15]=M):M=n[15];const q=`collapsible-content${y?" collapsed":""}`;let Y;n[16]!==s||n[17]!==q?(Y=h.jsx("div",{className:q,children:s}),n[16]=s,n[17]=q,n[18]=Y):Y=n[18];let J;return n[19]!==Y||n[20]!==R||n[21]!==M?(J=h.jsxs("div",{className:R,children:[M,Y]}),n[19]=Y,n[20]=R,n[21]=M,n[22]=J):J=n[22],J};function TS(l){const n=Ke.c(8),{section:c}=l;let s;n[0]===Symbol.for("react.memo_cache_sentinel")?(s={display:"flex",alignSelf:"right",lineHeight:"1.5rem",marginTop:"0.5rem"},n[0]=s):s=n[0];let u,f;n[1]===Symbol.for("react.memo_cache_sentinel")?(u=h.jsx("br",{}),f={float:"right"},n[1]=u,n[2]=f):(u=n[1],f=n[2]);let d;n[3]!==c?(d=h.jsx("div",{style:s,children:h.jsxs("span",{children:["Compendium ",u,h.jsx("span",{style:f,children:c})]})}),n[3]=c,n[4]=d):d=n[4];let y;n[5]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("img",{src:Up,style:{maxWidth:"4rem"},alt:"Compendium Data logo"}),n[5]=y):y=n[5];let v;return n[6]!==d?(v=h.jsxs("div",{className:"bold-caps-17pt section-container",children:[d,y]}),n[6]=d,n[7]=v):v=n[7],v}function NS(l){const n=Ke.c(14),{type:c}=l;let s="";c=="data"?s=" compendium-data-header":c=="reports"&&(s=" compendium-reports-header");let u;n[0]===Symbol.for("react.memo_cache_sentinel")?(u={marginTop:"0.5rem"},n[0]=u):u=n[0];const f=c==="data"?"/data":"/";let d;n[1]===Symbol.for("react.memo_cache_sentinel")?(d={textDecoration:"none",color:"white"},n[1]=d):d=n[1];const y=c==="data"?"Data":"Reports";let v;n[2]!==y?(v=h.jsxs("span",{children:["Compendium ",y]}),n[2]=y,n[3]=v):v=n[3];let p;n[4]!==f||n[5]!==v?(p=h.jsx(ln,{sm:8,children:h.jsx("h1",{className:"bold-caps-30pt",style:u,children:h.jsx(Tn,{to:f,style:d,children:v})})}),n[4]=f,n[5]=v,n[6]=p):p=n[6];let b;n[7]===Symbol.for("react.memo_cache_sentinel")?(b={color:"inherit"},n[7]=b):b=n[7];let R;n[8]===Symbol.for("react.memo_cache_sentinel")?(R=h.jsx(ln,{sm:4,children:h.jsx("a",{style:b,href:"https://resources.geant.org/geant-compendia/",target:"_blank",rel:"noreferrer",children:h.jsx(TS,{section:"Reports"})})}),n[8]=R):R=n[8];let S;n[9]!==p?(S=h.jsx(Ya,{children:h.jsxs(Rn,{children:[p,R]})}),n[9]=p,n[10]=S):S=n[10];let _;return n[11]!==s||n[12]!==S?(_=h.jsx("div",{className:s,children:S}),n[11]=s,n[12]=S,n[13]=_):_=n[13],_}function CS(l){const n=Ke.c(8),{children:c,type:s}=l;let u="";s=="data"?u=" compendium-data-banner":s=="reports"&&(u=" compendium-reports-banner");let f,d;n[0]===Symbol.for("react.memo_cache_sentinel")?(f=h.jsx("img",{src:Lp,style:{maxWidth:"7rem",marginBottom:"1rem"},alt:"Compendium Data logo"}),d={display:"flex",alignSelf:"right"},n[0]=f,n[1]=d):(f=n[0],d=n[1]);let y;n[2]===Symbol.for("react.memo_cache_sentinel")?(y={paddingTop:"1rem"},n[2]=y):y=n[2];let v;n[3]!==c?(v=h.jsx(Ya,{children:h.jsx(Rn,{children:h.jsx(Rn,{children:h.jsxs("div",{className:"section-container",children:[f,h.jsx("div",{style:d,children:h.jsx("div",{className:"center-text",style:y,children:c})})]})})})}),n[3]=c,n[4]=v):v=n[4];let p;return n[5]!==u||n[6]!==v?(p=h.jsx("div",{className:u,children:v}),n[5]=u,n[6]=v,n[7]=p):p=n[7],p}var li=(l=>(l.Organisation="ORGANISATION",l.Policy="STANDARDS AND POLICIES",l.ConnectedUsers="CONNECTED USERS",l.Network="NETWORK",l.Services="SERVICES",l))(li||{}),jS=(l=>(l.CSV="CSV",l.EXCEL="EXCEL",l))(jS||{}),OS=(l=>(l.PNG="png",l.JPEG="jpeg",l.SVG="svg",l))(OS||{});const V2={universities:"Universities & Other (ISCED 6-8)",further_education:"Further education (ISCED 4-5)",secondary_schools:"Secondary schools (ISCED 2-3)",primary_schools:"Primary schools (ISCED 1)",institutes:"Research Institutes",cultural:"Libraries, Museums, Archives, Cultural institutions",hospitals:"Non-university public Hospitals",government:"Government departments (national, regional, local)",iros:"International (virtual) research organisations",for_profit_orgs:"For-profit organisations"},Y2={commercial_r_and_e:"Commercial R&E traffic only",commercial_general:"Commercial general",commercial_collaboration:"Commercial for collaboration only (project/time limited)",commercial_service_provider:"Commercial Service Provider",university_spin_off:"University Spin Off/Incubator"},G2={collaboration:"Connection to your network for collaboration with R&E users",service_supplier:"Connection to your network for supplying services for R&E",direct_peering:"Direct peering (e.g. direct peering or cloud peering)"};function DS(){const l=Ke.c(7),{preview:n,setPreview:c}=g.useContext(Iy),{user:s}=g.useContext(Fo),[u]=lE();let f;l[0]!==u?(f=u.get("preview"),l[0]=u,l[1]=f):f=l[1];const d=f;let y,v;return l[2]!==d||l[3]!==c||l[4]!==s?(y=()=>{d!==null&&(s.permissions.admin||s.role=="observer")&&c(!0)},v=[d,c,s],l[2]=d,l[3]=c,l[4]=s,l[5]=y,l[6]=v):(y=l[5],v=l[6]),g.useEffect(y,v),n}function yr(l){const n=Ke.c(9),{to:c,children:s}=l,u=window.location.pathname===c,f=g.useRef(null);let d,y;n[0]!==u?(d=()=>{u&&f.current&&f.current.scrollIntoView({behavior:"smooth",block:"center"})},y=[u],n[0]=u,n[1]=d,n[2]=y):(d=n[1],y=n[2]),g.useEffect(d,y);let v;n[3]!==s||n[4]!==u?(v=u?h.jsx("b",{children:s}):s,n[3]=s,n[4]=u,n[5]=v):v=n[5];let p;return n[6]!==v||n[7]!==c?(p=h.jsx(Rn,{children:h.jsx(Tn,{to:c,className:"link-text-underline",ref:f,children:v})}),n[6]=v,n[7]=c,n[8]=p):p=n[8],p}const se={budget:"Budget of NRENs per Year",funding:"Income Source of NRENs",charging:"Charging Mechanism of NRENs","employee-count":"Number of NREN Employees",roles:"Roles of NREN employees (Technical v. Non-Technical)",employment:"Types of Employment within NRENs",suborganisations:"NREN Sub-Organisations",parentorganisation:"NREN Parent Organisations","ec-projects":"NREN Involvement in European Commission Projects",policy:"NREN Policies",audits:"External and Internal Audits of Information Security Management Systems","business-continuity":"NREN Business Continuity Planning","central-procurement":"Value of Software Procured for Customers by NRENs","crisis-management":"Crisis Management Procedures","crisis-exercise":"Crisis Exercises - NREN Operation and Participation",eosc_listings:"NREN Services Listed on the EOSC Portal","security-control":"Security Controls Used by NRENs","services-offered":"Services Offered by NRENs by Types of Users","corporate-strategy":"NREN Corporate Strategies","service-level-targets":"NRENs Offering Service Level Targets","service-management-framework":"NRENs Operating a Formal Service Management Framework","institutions-urls":"Webpages Listing Institutions and Organisations Connected to NREN Networks","connected-proportion":"Proportion of Different Categories of Institutions Served by NRENs","connectivity-level":"Level of IP Connectivity by Institution Type","connection-carrier":"Methods of Carrying IP Traffic to Users","connectivity-load":"Connectivity Load","connectivity-growth":"Connectivity Growth","remote-campuses":"NREN Connectivity to Remote Campuses in Other Countries","commercial-charging-level":"Commercial Charging Level","commercial-connectivity":"Commercial Connectivity","traffic-volume":"NREN Traffic - NREN Customers & External Networks","iru-duration":"Average Duration of IRU leases of Fibre by NRENs","fibre-light":"Approaches to lighting NREN fibre networks","dark-fibre-lease":"Kilometres of Leased Dark Fibre (National)","dark-fibre-lease-international":"Kilometres of Leased Dark Fibre (International)","dark-fibre-installed":"Kilometres of Installed Dark Fibre","network-map":"NREN Network Maps","monitoring-tools":"Tools for Monitoring or Troubleshooting the Network - Offered to Client Institutions","pert-team":"NRENs with Performance Enhancement Response Teams","passive-monitoring":"Methods for Passively Monitoring International Traffic","traffic-stats":"Traffic Statistics","weather-map":"NREN Online Network Weather Maps","certificate-provider":"Certification Services used by NRENs","siem-vendors":"Vendors of SIEM/SOC systems used by NRENs","alien-wave":"NREN Use of 3rd Party Alienwave/Lightpath Services","alien-wave-internal":"Internal NREN Use of Alien Waves","capacity-largest-link":"Capacity of the Largest Link in an NREN Network","external-connections":"NREN External IP Connections","capacity-core-ip":"NREN Core IP Capacity","non-rne-peers":"Number of Non-R&E Networks NRENs Peer With","traffic-ratio":"Types of traffic in NREN networks (Commodity v. Research & Education)","ops-automation":"NREN Automation of Operational Processes","network-automation":"Network Tasks for which NRENs Use Automation",nfv:"Kinds of Network Function Virtualisation used by NRENs","network-services":"NREN Network services matrix","isp-support-services":"NREN ISP support services matrix","security-services":"NREN Security services matrix","identity-services":"NREN Identity services matrix","collaboration-services":"NREN Collaboration services matrix","multimedia-services":"NREN Multimedia services matrix","storage-and-hosting-services":"NREN Storage and hosting services matrix","professional-services":"NREN Professional services matrix"};function wS(l){const n=Ke.c(52),{sidebar:c}=l,s=c===void 0?!1:c,u=s?yr:Tn,f=s?"":"link-text-underline";let d;n[0]!==s?(d=s&&h.jsx("h5",{children:"Organisation"}),n[0]=s,n[1]=d):d=n[1];let y;n[2]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("h6",{className:"section-title",children:"Budget, Income and Billing"}),n[2]=y):y=n[2];let v;n[3]===Symbol.for("react.memo_cache_sentinel")?(v=h.jsx("span",{children:se.budget}),n[3]=v):v=n[3];let p;n[4]!==u||n[5]!==f?(p=h.jsx(u,{to:"/budget",className:f,children:v}),n[4]=u,n[5]=f,n[6]=p):p=n[6];let b;n[7]===Symbol.for("react.memo_cache_sentinel")?(b=h.jsx("span",{children:se.funding}),n[7]=b):b=n[7];let R;n[8]!==u||n[9]!==f?(R=h.jsx(u,{to:"/funding",className:f,children:b}),n[8]=u,n[9]=f,n[10]=R):R=n[10];let S;n[11]===Symbol.for("react.memo_cache_sentinel")?(S=h.jsx("span",{children:se.charging}),n[11]=S):S=n[11];let _;n[12]!==u||n[13]!==f?(_=h.jsx(u,{to:"/charging",className:f,children:S}),n[12]=u,n[13]=f,n[14]=_):_=n[14];let O,H;n[15]===Symbol.for("react.memo_cache_sentinel")?(O=h.jsx("hr",{className:"fake-divider"}),H=h.jsx("h6",{className:"section-title",children:"Staff and Projects"}),n[15]=O,n[16]=H):(O=n[15],H=n[16]);let U;n[17]===Symbol.for("react.memo_cache_sentinel")?(U=h.jsx("span",{children:se["employee-count"]}),n[17]=U):U=n[17];let M;n[18]!==u||n[19]!==f?(M=h.jsx(u,{to:"/employee-count",className:f,children:U}),n[18]=u,n[19]=f,n[20]=M):M=n[20];let q;n[21]===Symbol.for("react.memo_cache_sentinel")?(q=h.jsx("span",{children:se.employment}),n[21]=q):q=n[21];let Y;n[22]!==u||n[23]!==f?(Y=h.jsx(u,{to:"/employment",className:f,children:q}),n[22]=u,n[23]=f,n[24]=Y):Y=n[24];let J;n[25]===Symbol.for("react.memo_cache_sentinel")?(J=h.jsx("span",{children:se.roles}),n[25]=J):J=n[25];let k;n[26]!==u||n[27]!==f?(k=h.jsx(u,{to:"/roles",className:f,children:J}),n[26]=u,n[27]=f,n[28]=k):k=n[28];let N;n[29]===Symbol.for("react.memo_cache_sentinel")?(N=h.jsx("span",{children:se.parentorganisation}),n[29]=N):N=n[29];let W;n[30]!==u||n[31]!==f?(W=h.jsx(u,{to:"/parentorganisation",className:f,children:N}),n[30]=u,n[31]=f,n[32]=W):W=n[32];let ie;n[33]===Symbol.for("react.memo_cache_sentinel")?(ie=h.jsx("span",{children:se.suborganisations}),n[33]=ie):ie=n[33];let X;n[34]!==u||n[35]!==f?(X=h.jsx(u,{to:"/suborganisations",className:f,children:ie}),n[34]=u,n[35]=f,n[36]=X):X=n[36];let I;n[37]===Symbol.for("react.memo_cache_sentinel")?(I=h.jsx("span",{children:se["ec-projects"]}),n[37]=I):I=n[37];let de;n[38]!==u||n[39]!==f?(de=h.jsx(u,{to:"/ec-projects",className:f,children:I}),n[38]=u,n[39]=f,n[40]=de):de=n[40];let Ne;return n[41]!==M||n[42]!==Y||n[43]!==k||n[44]!==W||n[45]!==d||n[46]!==X||n[47]!==de||n[48]!==p||n[49]!==R||n[50]!==_?(Ne=h.jsxs(h.Fragment,{children:[d,y,p,R,_,O,H,M,Y,k,W,X,de]}),n[41]=M,n[42]=Y,n[43]=k,n[44]=W,n[45]=d,n[46]=X,n[47]=de,n[48]=p,n[49]=R,n[50]=_,n[51]=Ne):Ne=n[51],Ne}function AS(l){const n=Ke.c(61),{sidebar:c}=l,s=c===void 0?!1:c,u=s?yr:Tn,f=s?"":"link-text-underline";let d;n[0]!==s?(d=s&&h.jsx("h5",{children:"Standards And Policies"}),n[0]=s,n[1]=d):d=n[1];let y;n[2]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("h6",{className:"section-title",children:"Policy & Portfolio"}),n[2]=y):y=n[2];let v;n[3]===Symbol.for("react.memo_cache_sentinel")?(v=h.jsx("span",{children:se["corporate-strategy"]}),n[3]=v):v=n[3];let p;n[4]!==u||n[5]!==f?(p=h.jsx(u,{to:"/corporate-strategy",className:f,children:v}),n[4]=u,n[5]=f,n[6]=p):p=n[6];let b;n[7]===Symbol.for("react.memo_cache_sentinel")?(b=h.jsx("span",{children:se.policy}),n[7]=b):b=n[7];let R;n[8]!==u||n[9]!==f?(R=h.jsx(u,{to:"/policy",className:f,children:b}),n[8]=u,n[9]=f,n[10]=R):R=n[10];let S;n[11]===Symbol.for("react.memo_cache_sentinel")?(S=h.jsx("span",{children:se["central-procurement"]}),n[11]=S):S=n[11];let _;n[12]!==u||n[13]!==f?(_=h.jsx(u,{to:"/central-procurement",className:f,children:S}),n[12]=u,n[13]=f,n[14]=_):_=n[14];let O;n[15]===Symbol.for("react.memo_cache_sentinel")?(O=h.jsx("span",{children:se["service-management-framework"]}),n[15]=O):O=n[15];let H;n[16]!==u||n[17]!==f?(H=h.jsx(u,{to:"/service-management-framework",className:f,children:O}),n[16]=u,n[17]=f,n[18]=H):H=n[18];let U;n[19]===Symbol.for("react.memo_cache_sentinel")?(U=h.jsx("span",{children:se["service-level-targets"]}),n[19]=U):U=n[19];let M;n[20]!==u||n[21]!==f?(M=h.jsx(u,{to:"/service-level-targets",className:f,children:U}),n[20]=u,n[21]=f,n[22]=M):M=n[22];let q;n[23]===Symbol.for("react.memo_cache_sentinel")?(q=h.jsx("span",{children:se["services-offered"]}),n[23]=q):q=n[23];let Y;n[24]!==u||n[25]!==f?(Y=h.jsx(u,{to:"/services-offered",className:f,children:q}),n[24]=u,n[25]=f,n[26]=Y):Y=n[26];let J;n[27]===Symbol.for("react.memo_cache_sentinel")?(J=h.jsx("h6",{className:"section-title",children:"Standards"}),n[27]=J):J=n[27];let k;n[28]===Symbol.for("react.memo_cache_sentinel")?(k=h.jsx("span",{children:se.audits}),n[28]=k):k=n[28];let N;n[29]!==u||n[30]!==f?(N=h.jsx(u,{to:"/audits",className:f,children:k}),n[29]=u,n[30]=f,n[31]=N):N=n[31];let W;n[32]===Symbol.for("react.memo_cache_sentinel")?(W=h.jsx("span",{children:se["business-continuity"]}),n[32]=W):W=n[32];let ie;n[33]!==u||n[34]!==f?(ie=h.jsx(u,{to:"/business-continuity",className:f,children:W}),n[33]=u,n[34]=f,n[35]=ie):ie=n[35];let X;n[36]===Symbol.for("react.memo_cache_sentinel")?(X=h.jsx("span",{children:se["crisis-management"]}),n[36]=X):X=n[36];let I;n[37]!==u||n[38]!==f?(I=h.jsx(u,{to:"/crisis-management",className:f,children:X}),n[37]=u,n[38]=f,n[39]=I):I=n[39];let de;n[40]===Symbol.for("react.memo_cache_sentinel")?(de=h.jsx("span",{children:se["crisis-exercise"]}),n[40]=de):de=n[40];let Ne;n[41]!==u||n[42]!==f?(Ne=h.jsx(u,{to:"/crisis-exercise",className:f,children:de}),n[41]=u,n[42]=f,n[43]=Ne):Ne=n[43];let Ye;n[44]===Symbol.for("react.memo_cache_sentinel")?(Ye=h.jsx("span",{children:se["security-control"]}),n[44]=Ye):Ye=n[44];let Be;n[45]!==u||n[46]!==f?(Be=h.jsx(u,{to:"/security-control",className:f,children:Ye}),n[45]=u,n[46]=f,n[47]=Be):Be=n[47];let ze;return n[48]!==H||n[49]!==M||n[50]!==Y||n[51]!==N||n[52]!==d||n[53]!==ie||n[54]!==I||n[55]!==Ne||n[56]!==Be||n[57]!==p||n[58]!==R||n[59]!==_?(ze=h.jsxs(h.Fragment,{children:[d,y,p,R,_,H,M,Y,J,N,ie,I,Ne,Be]}),n[48]=H,n[49]=M,n[50]=Y,n[51]=N,n[52]=d,n[53]=ie,n[54]=I,n[55]=Ne,n[56]=Be,n[57]=p,n[58]=R,n[59]=_,n[60]=ze):ze=n[60],ze}function MS(l){const n=Ke.c(52),{sidebar:c}=l,s=c===void 0?!1:c,u=s?yr:Tn,f=s?"":"link-text-underline";let d;n[0]!==s?(d=s&&h.jsx("h5",{children:"Connected Users"}),n[0]=s,n[1]=d):d=n[1];let y;n[2]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("h6",{className:"section-title",children:"Connected Users"}),n[2]=y):y=n[2];let v;n[3]===Symbol.for("react.memo_cache_sentinel")?(v=h.jsx("span",{children:se["institutions-urls"]}),n[3]=v):v=n[3];let p;n[4]!==u||n[5]!==f?(p=h.jsx(u,{to:"/institutions-urls",className:f,children:v}),n[4]=u,n[5]=f,n[6]=p):p=n[6];let b;n[7]===Symbol.for("react.memo_cache_sentinel")?(b=h.jsx("span",{children:se["connected-proportion"]}),n[7]=b):b=n[7];let R;n[8]!==u||n[9]!==f?(R=h.jsx(u,{to:"/connected-proportion",className:f,children:b}),n[8]=u,n[9]=f,n[10]=R):R=n[10];let S;n[11]===Symbol.for("react.memo_cache_sentinel")?(S=h.jsx("span",{children:se["connectivity-level"]}),n[11]=S):S=n[11];let _;n[12]!==u||n[13]!==f?(_=h.jsx(u,{to:"/connectivity-level",className:f,children:S}),n[12]=u,n[13]=f,n[14]=_):_=n[14];let O;n[15]===Symbol.for("react.memo_cache_sentinel")?(O=h.jsx("span",{children:se["connection-carrier"]}),n[15]=O):O=n[15];let H;n[16]!==u||n[17]!==f?(H=h.jsx(u,{to:"/connection-carrier",className:f,children:O}),n[16]=u,n[17]=f,n[18]=H):H=n[18];let U;n[19]===Symbol.for("react.memo_cache_sentinel")?(U=h.jsx("span",{children:se["connectivity-load"]}),n[19]=U):U=n[19];let M;n[20]!==u||n[21]!==f?(M=h.jsx(u,{to:"/connectivity-load",className:f,children:U}),n[20]=u,n[21]=f,n[22]=M):M=n[22];let q;n[23]===Symbol.for("react.memo_cache_sentinel")?(q=h.jsx("span",{children:se["connectivity-growth"]}),n[23]=q):q=n[23];let Y;n[24]!==u||n[25]!==f?(Y=h.jsx(u,{to:"/connectivity-growth",className:f,children:q}),n[24]=u,n[25]=f,n[26]=Y):Y=n[26];let J;n[27]===Symbol.for("react.memo_cache_sentinel")?(J=h.jsx("span",{children:se["remote-campuses"]}),n[27]=J):J=n[27];let k;n[28]!==u||n[29]!==f?(k=h.jsx(u,{to:"/remote-campuses",className:f,children:J}),n[28]=u,n[29]=f,n[30]=k):k=n[30];let N,W;n[31]===Symbol.for("react.memo_cache_sentinel")?(N=h.jsx("hr",{className:"fake-divider"}),W=h.jsx("h6",{className:"section-title",children:"Connected Users - Commercial"}),n[31]=N,n[32]=W):(N=n[31],W=n[32]);let ie;n[33]===Symbol.for("react.memo_cache_sentinel")?(ie=h.jsx("span",{children:se["commercial-charging-level"]}),n[33]=ie):ie=n[33];let X;n[34]!==u||n[35]!==f?(X=h.jsx(u,{to:"/commercial-charging-level",className:f,children:ie}),n[34]=u,n[35]=f,n[36]=X):X=n[36];let I;n[37]===Symbol.for("react.memo_cache_sentinel")?(I=h.jsx("span",{children:se["commercial-connectivity"]}),n[37]=I):I=n[37];let de;n[38]!==u||n[39]!==f?(de=h.jsx(u,{to:"/commercial-connectivity",className:f,children:I}),n[38]=u,n[39]=f,n[40]=de):de=n[40];let Ne;return n[41]!==H||n[42]!==M||n[43]!==Y||n[44]!==k||n[45]!==d||n[46]!==X||n[47]!==de||n[48]!==p||n[49]!==R||n[50]!==_?(Ne=h.jsxs(h.Fragment,{children:[d,y,p,R,_,H,M,Y,k,N,W,X,de]}),n[41]=H,n[42]=M,n[43]=Y,n[44]=k,n[45]=d,n[46]=X,n[47]=de,n[48]=p,n[49]=R,n[50]=_,n[51]=Ne):Ne=n[51],Ne}function zS(l){const n=Ke.c(133),{sidebar:c}=l,s=c===void 0?!1:c,u=s?yr:Tn,f=s?"":"link-text-underline";let d;n[0]!==s?(d=s&&h.jsx("h5",{children:"Network"}),n[0]=s,n[1]=d):d=n[1];let y;n[2]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("h6",{className:"section-title",children:"Connectivity"}),n[2]=y):y=n[2];let v;n[3]===Symbol.for("react.memo_cache_sentinel")?(v=h.jsx("span",{children:se["dark-fibre-lease"]}),n[3]=v):v=n[3];let p;n[4]!==u||n[5]!==f?(p=h.jsx(u,{to:"/dark-fibre-lease",className:f,children:v}),n[4]=u,n[5]=f,n[6]=p):p=n[6];let b;n[7]===Symbol.for("react.memo_cache_sentinel")?(b=h.jsx("span",{children:se["dark-fibre-lease-international"]}),n[7]=b):b=n[7];let R;n[8]!==u||n[9]!==f?(R=h.jsx(u,{to:"/dark-fibre-lease-international",className:f,children:b}),n[8]=u,n[9]=f,n[10]=R):R=n[10];let S;n[11]===Symbol.for("react.memo_cache_sentinel")?(S=h.jsx("span",{children:se["iru-duration"]}),n[11]=S):S=n[11];let _;n[12]!==u||n[13]!==f?(_=h.jsx(u,{to:"/iru-duration",className:f,children:S}),n[12]=u,n[13]=f,n[14]=_):_=n[14];let O;n[15]===Symbol.for("react.memo_cache_sentinel")?(O=h.jsx("span",{children:se["dark-fibre-installed"]}),n[15]=O):O=n[15];let H;n[16]!==u||n[17]!==f?(H=h.jsx(u,{to:"/dark-fibre-installed",className:f,children:O}),n[16]=u,n[17]=f,n[18]=H):H=n[18];let U;n[19]===Symbol.for("react.memo_cache_sentinel")?(U=h.jsx("span",{children:se["fibre-light"]}),n[19]=U):U=n[19];let M;n[20]!==u||n[21]!==f?(M=h.jsx(u,{to:"/fibre-light",className:f,children:U}),n[20]=u,n[21]=f,n[22]=M):M=n[22];let q;n[23]===Symbol.for("react.memo_cache_sentinel")?(q=h.jsx("span",{children:se["network-map"]}),n[23]=q):q=n[23];let Y;n[24]!==u||n[25]!==f?(Y=h.jsx(u,{to:"/network-map",className:f,children:q}),n[24]=u,n[25]=f,n[26]=Y):Y=n[26];let J,k;n[27]===Symbol.for("react.memo_cache_sentinel")?(J=h.jsx("hr",{className:"fake-divider"}),k=h.jsx("h6",{className:"section-title",children:"Performance Monitoring & Management"}),n[27]=J,n[28]=k):(J=n[27],k=n[28]);let N;n[29]===Symbol.for("react.memo_cache_sentinel")?(N=h.jsx("span",{children:se["monitoring-tools"]}),n[29]=N):N=n[29];let W;n[30]!==u||n[31]!==f?(W=h.jsx(u,{to:"/monitoring-tools",className:f,children:N}),n[30]=u,n[31]=f,n[32]=W):W=n[32];let ie;n[33]===Symbol.for("react.memo_cache_sentinel")?(ie=h.jsx("span",{children:se["passive-monitoring"]}),n[33]=ie):ie=n[33];let X;n[34]!==u||n[35]!==f?(X=h.jsx(u,{to:"/passive-monitoring",className:f,children:ie}),n[34]=u,n[35]=f,n[36]=X):X=n[36];let I;n[37]===Symbol.for("react.memo_cache_sentinel")?(I=h.jsx("span",{children:se["traffic-stats"]}),n[37]=I):I=n[37];let de;n[38]!==u||n[39]!==f?(de=h.jsx(u,{to:"/traffic-stats",className:f,children:I}),n[38]=u,n[39]=f,n[40]=de):de=n[40];let Ne;n[41]===Symbol.for("react.memo_cache_sentinel")?(Ne=h.jsx("span",{children:se["siem-vendors"]}),n[41]=Ne):Ne=n[41];let Ye;n[42]!==u||n[43]!==f?(Ye=h.jsx(u,{to:"/siem-vendors",className:f,children:Ne}),n[42]=u,n[43]=f,n[44]=Ye):Ye=n[44];let Be;n[45]===Symbol.for("react.memo_cache_sentinel")?(Be=h.jsx("span",{children:se["certificate-provider"]}),n[45]=Be):Be=n[45];let ze;n[46]!==u||n[47]!==f?(ze=h.jsx(u,{to:"/certificate-provider",className:f,children:Be}),n[46]=u,n[47]=f,n[48]=ze):ze=n[48];let K;n[49]===Symbol.for("react.memo_cache_sentinel")?(K=h.jsx("span",{children:se["weather-map"]}),n[49]=K):K=n[49];let ce;n[50]!==u||n[51]!==f?(ce=h.jsx(u,{to:"/weather-map",className:f,children:K}),n[50]=u,n[51]=f,n[52]=ce):ce=n[52];let ne;n[53]===Symbol.for("react.memo_cache_sentinel")?(ne=h.jsx("span",{children:se["pert-team"]}),n[53]=ne):ne=n[53];let Re;n[54]!==u||n[55]!==f?(Re=h.jsx(u,{to:"/pert-team",className:f,children:ne}),n[54]=u,n[55]=f,n[56]=Re):Re=n[56];let T,Q;n[57]===Symbol.for("react.memo_cache_sentinel")?(T=h.jsx("hr",{className:"fake-divider"}),Q=h.jsx("h6",{className:"section-title",children:"Alienwave"}),n[57]=T,n[58]=Q):(T=n[57],Q=n[58]);let le;n[59]===Symbol.for("react.memo_cache_sentinel")?(le=h.jsx("span",{children:se["alien-wave"]}),n[59]=le):le=n[59];let te;n[60]!==u||n[61]!==f?(te=h.jsx(u,{to:"/alien-wave",className:f,children:le}),n[60]=u,n[61]=f,n[62]=te):te=n[62];let P;n[63]===Symbol.for("react.memo_cache_sentinel")?(P=h.jsx("span",{children:se["alien-wave-internal"]}),n[63]=P):P=n[63];let ge;n[64]!==u||n[65]!==f?(ge=h.jsx(u,{to:"/alien-wave-internal",className:f,children:P}),n[64]=u,n[65]=f,n[66]=ge):ge=n[66];let ye,Je;n[67]===Symbol.for("react.memo_cache_sentinel")?(ye=h.jsx("hr",{className:"fake-divider"}),Je=h.jsx("h6",{className:"section-title",children:"Capacity"}),n[67]=ye,n[68]=Je):(ye=n[67],Je=n[68]);let Ce;n[69]===Symbol.for("react.memo_cache_sentinel")?(Ce=h.jsx("span",{children:se["capacity-largest-link"]}),n[69]=Ce):Ce=n[69];let Le;n[70]!==u||n[71]!==f?(Le=h.jsx(u,{to:"/capacity-largest-link",className:f,children:Ce}),n[70]=u,n[71]=f,n[72]=Le):Le=n[72];let Ee;n[73]===Symbol.for("react.memo_cache_sentinel")?(Ee=h.jsx("span",{children:se["capacity-core-ip"]}),n[73]=Ee):Ee=n[73];let Ze;n[74]!==u||n[75]!==f?(Ze=h.jsx(u,{to:"/capacity-core-ip",className:f,children:Ee}),n[74]=u,n[75]=f,n[76]=Ze):Ze=n[76];let vt;n[77]===Symbol.for("react.memo_cache_sentinel")?(vt=h.jsx("span",{children:se["external-connections"]}),n[77]=vt):vt=n[77];let it;n[78]!==u||n[79]!==f?(it=h.jsx(u,{to:"/external-connections",className:f,children:vt}),n[78]=u,n[79]=f,n[80]=it):it=n[80];let lt;n[81]===Symbol.for("react.memo_cache_sentinel")?(lt=h.jsx("span",{children:se["non-rne-peers"]}),n[81]=lt):lt=n[81];let De;n[82]!==u||n[83]!==f?(De=h.jsx(u,{to:"/non-rne-peers",className:f,children:lt}),n[82]=u,n[83]=f,n[84]=De):De=n[84];let Rt;n[85]===Symbol.for("react.memo_cache_sentinel")?(Rt=h.jsx("span",{children:se["traffic-volume"]}),n[85]=Rt):Rt=n[85];let St;n[86]!==u||n[87]!==f?(St=h.jsx(u,{to:"/traffic-volume",className:f,children:Rt}),n[86]=u,n[87]=f,n[88]=St):St=n[88];let Pt;n[89]===Symbol.for("react.memo_cache_sentinel")?(Pt=h.jsx("span",{children:se["traffic-ratio"]}),n[89]=Pt):Pt=n[89];let Zt;n[90]!==u||n[91]!==f?(Zt=h.jsx(u,{to:"/traffic-ratio",className:f,children:Pt}),n[90]=u,n[91]=f,n[92]=Zt):Zt=n[92];let un,cn;n[93]===Symbol.for("react.memo_cache_sentinel")?(un=h.jsx("hr",{className:"fake-divider"}),cn=h.jsx("h6",{className:"section-title",children:"Software-Defined Networking (SDN) & Network Function Virtualisation(NFV)"}),n[93]=un,n[94]=cn):(un=n[93],cn=n[94]);let Ut;n[95]===Symbol.for("react.memo_cache_sentinel")?(Ut=h.jsx("span",{children:se["ops-automation"]}),n[95]=Ut):Ut=n[95];let Ht;n[96]!==u||n[97]!==f?(Ht=h.jsx(u,{to:"/ops-automation",className:f,children:Ut}),n[96]=u,n[97]=f,n[98]=Ht):Ht=n[98];let mt;n[99]===Symbol.for("react.memo_cache_sentinel")?(mt=h.jsx("span",{children:se.nfv}),n[99]=mt):mt=n[99];let Kt;n[100]!==u||n[101]!==f?(Kt=h.jsx(u,{to:"/nfv",className:f,children:mt}),n[100]=u,n[101]=f,n[102]=Kt):Kt=n[102];let _e;n[103]===Symbol.for("react.memo_cache_sentinel")?(_e=h.jsx("span",{children:se["network-automation"]}),n[103]=_e):_e=n[103];let Ie;n[104]!==u||n[105]!==f?(Ie=h.jsx(u,{to:"/network-automation",className:f,children:_e}),n[104]=u,n[105]=f,n[106]=Ie):Ie=n[106];let Gt;return n[107]!==H||n[108]!==M||n[109]!==Y||n[110]!==W||n[111]!==d||n[112]!==X||n[113]!==de||n[114]!==Ye||n[115]!==ze||n[116]!==ce||n[117]!==Re||n[118]!==te||n[119]!==ge||n[120]!==Le||n[121]!==Ze||n[122]!==it||n[123]!==De||n[124]!==St||n[125]!==p||n[126]!==Zt||n[127]!==Ht||n[128]!==Kt||n[129]!==Ie||n[130]!==R||n[131]!==_?(Gt=h.jsxs(h.Fragment,{children:[d,y,p,R,_,H,M,Y,J,k,W,X,de,Ye,ze,ce,Re,T,Q,te,ge,ye,Je,Le,Ze,it,De,St,Zt,un,cn,Ht,Kt,Ie]}),n[107]=H,n[108]=M,n[109]=Y,n[110]=W,n[111]=d,n[112]=X,n[113]=de,n[114]=Ye,n[115]=ze,n[116]=ce,n[117]=Re,n[118]=te,n[119]=ge,n[120]=Le,n[121]=Ze,n[122]=it,n[123]=De,n[124]=St,n[125]=p,n[126]=Zt,n[127]=Ht,n[128]=Kt,n[129]=Ie,n[130]=R,n[131]=_,n[132]=Gt):Gt=n[132],Gt}function LS(l){const n=Ke.c(44),{sidebar:c}=l,s=c===void 0?!1:c,u=s?yr:Tn,f=s?"":"link-text-underline";let d;n[0]!==s?(d=s&&h.jsx("h5",{children:"Services"}),n[0]=s,n[1]=d):d=n[1];let y;n[2]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx("span",{children:se["network-services"]}),n[2]=y):y=n[2];let v;n[3]!==u||n[4]!==f?(v=h.jsx(u,{to:"/network-services",className:f,children:y}),n[3]=u,n[4]=f,n[5]=v):v=n[5];let p;n[6]===Symbol.for("react.memo_cache_sentinel")?(p=h.jsx("span",{children:se["isp-support-services"]}),n[6]=p):p=n[6];let b;n[7]!==u||n[8]!==f?(b=h.jsx(u,{to:"/isp-support-services",className:f,children:p}),n[7]=u,n[8]=f,n[9]=b):b=n[9];let R;n[10]===Symbol.for("react.memo_cache_sentinel")?(R=h.jsx("span",{children:se["security-services"]}),n[10]=R):R=n[10];let S;n[11]!==u||n[12]!==f?(S=h.jsx(u,{to:"/security-services",className:f,children:R}),n[11]=u,n[12]=f,n[13]=S):S=n[13];let _;n[14]===Symbol.for("react.memo_cache_sentinel")?(_=h.jsx("span",{children:se["identity-services"]}),n[14]=_):_=n[14];let O;n[15]!==u||n[16]!==f?(O=h.jsx(u,{to:"/identity-services",className:f,children:_}),n[15]=u,n[16]=f,n[17]=O):O=n[17];let H;n[18]===Symbol.for("react.memo_cache_sentinel")?(H=h.jsx("span",{children:se["storage-and-hosting-services"]}),n[18]=H):H=n[18];let U;n[19]!==u||n[20]!==f?(U=h.jsx(u,{to:"/storage-and-hosting-services",className:f,children:H}),n[19]=u,n[20]=f,n[21]=U):U=n[21];let M;n[22]===Symbol.for("react.memo_cache_sentinel")?(M=h.jsx("span",{children:se["multimedia-services"]}),n[22]=M):M=n[22];let q;n[23]!==u||n[24]!==f?(q=h.jsx(u,{to:"/multimedia-services",className:f,children:M}),n[23]=u,n[24]=f,n[25]=q):q=n[25];let Y;n[26]===Symbol.for("react.memo_cache_sentinel")?(Y=h.jsx("span",{children:se["collaboration-services"]}),n[26]=Y):Y=n[26];let J;n[27]!==u||n[28]!==f?(J=h.jsx(u,{to:"/collaboration-services",className:f,children:Y}),n[27]=u,n[28]=f,n[29]=J):J=n[29];let k;n[30]===Symbol.for("react.memo_cache_sentinel")?(k=h.jsx("span",{children:se["professional-services"]}),n[30]=k):k=n[30];let N;n[31]!==u||n[32]!==f?(N=h.jsx(u,{to:"/professional-services",className:f,children:k}),n[31]=u,n[32]=f,n[33]=N):N=n[33];let W;return n[34]!==O||n[35]!==U||n[36]!==q||n[37]!==J||n[38]!==N||n[39]!==d||n[40]!==v||n[41]!==b||n[42]!==S?(W=h.jsxs(h.Fragment,{children:[d,v,b,S,O,U,q,J,N]}),n[34]=O,n[35]=U,n[36]=q,n[37]=J,n[38]=N,n[39]=d,n[40]=v,n[41]=b,n[42]=S,n[43]=W):W=n[43],W}function US(){const l=Ke.c(10);DS();const{trackPageView:n}=Hp();let c,s;l[0]!==n?(c=()=>{n({documentTitle:"Compendium Data"})},s=[n],l[0]=n,l[1]=c,l[2]=s):(c=l[1],s=l[2]),Yt.useEffect(c,s);let u;l[3]===Symbol.for("react.memo_cache_sentinel")?(u=h.jsx(NS,{type:"data"}),l[3]=u):u=l[3];let f;l[4]===Symbol.for("react.memo_cache_sentinel")?(f=h.jsx(CS,{type:"data",children:h.jsx("p",{className:"wordwrap",children:"The GÉANT Compendium provides an authoritative reference source for anyone with an interest in the development of research and education networking in Europe and beyond. Published since 2001, the Compendium provides information on key areas such as users, services, traffic, budget and staffing."})}),l[4]=f):f=l[4];let d;l[5]===Symbol.for("react.memo_cache_sentinel")?(d=h.jsx(rr,{title:li.Organisation,children:h.jsx(wS,{})}),l[5]=d):d=l[5];let y;l[6]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx(rr,{title:li.Policy,startCollapsed:!0,children:h.jsx(AS,{})}),l[6]=y):y=l[6];let v;l[7]===Symbol.for("react.memo_cache_sentinel")?(v=h.jsx(rr,{title:li.ConnectedUsers,startCollapsed:!0,children:h.jsx(MS,{})}),l[7]=v):v=l[7];let p;l[8]===Symbol.for("react.memo_cache_sentinel")?(p=h.jsx(rr,{title:li.Network,startCollapsed:!0,children:h.jsx(zS,{})}),l[8]=p):p=l[8];let b;return l[9]===Symbol.for("react.memo_cache_sentinel")?(b=h.jsxs(h.Fragment,{children:[u,f,h.jsx(Ya,{className:"mt-5 mb-5",children:h.jsxs(Rn,{children:[d,y,v,p,h.jsx(rr,{title:li.Services,startCollapsed:!0,children:h.jsx(LS,{})})]})})]}),l[9]=b):b=l[9],b}const HS=()=>{const l=Ke.c(26),{consent:n,setConsent:c}=g.useContext(Jo),[s,u]=g.useState(n===null);let f;l[0]===Symbol.for("react.memo_cache_sentinel")?(f=()=>{u(!1),window.location.reload()},l[0]=f):f=l[0];const d=f,[y,v]=g.useState(!0);let p;l[1]!==c?(p=N=>{const W=new Date;W.setDate(W.getDate()+30),localStorage.setItem("matomo_consent",JSON.stringify({consent:N,expiry:W})),c(N)},l[1]=c,l[2]=p):p=l[2];const b=p;let R;l[3]===Symbol.for("react.memo_cache_sentinel")?(R=h.jsx(ir.Header,{closeButton:!0,children:h.jsx(ir.Title,{children:"Privacy on this site"})}),l[3]=R):R=l[3];let S;l[4]===Symbol.for("react.memo_cache_sentinel")?(S=h.jsx("a",{href:"https://geant.org/Privacy-Notice/",children:"Privacy Policy"}),l[4]=S):S=l[4];let _;l[5]===Symbol.for("react.memo_cache_sentinel")?(_=h.jsxs("p",{children:["On our site we use Matomo to collect and process data about your visit to better understand how it is used. For more information, see our ",S,".",h.jsx("br",{}),"Below, you can choose to accept or decline to have this data collected."]}),l[5]=_):_=l[5];let O;l[6]!==y?(O=()=>v(!y),l[6]=y,l[7]=O):O=l[7];let H;l[8]!==y||l[9]!==O?(H=h.jsx(Du.Check,{type:"checkbox",label:"Analytics",checked:y,onChange:O}),l[8]=y,l[9]=O,l[10]=H):H=l[10];let U;l[11]===Symbol.for("react.memo_cache_sentinel")?(U=h.jsx(Du.Text,{className:"text-muted",children:"We collect information about your visit on the compendium site — this helps us understand how the site is used, and how we can improve it."}),l[11]=U):U=l[11];let M;l[12]!==H?(M=h.jsxs(ir.Body,{children:[_,h.jsx(Du,{children:h.jsxs(Du.Group,{className:"mb-3",children:[H,U]})})]}),l[12]=H,l[13]=M):M=l[13];let q;l[14]!==b?(q=h.jsx(Bo,{variant:"secondary",onClick:()=>{b(!1),d()},children:"Decline all"}),l[14]=b,l[15]=q):q=l[15];let Y;l[16]!==y||l[17]!==b?(Y=h.jsx(Bo,{variant:"primary",onClick:()=>{b(y),d()},children:"Save consent for 30 days"}),l[16]=y,l[17]=b,l[18]=Y):Y=l[18];let J;l[19]!==Y||l[20]!==q?(J=h.jsxs(ir.Footer,{children:[q,Y]}),l[19]=Y,l[20]=q,l[21]=J):J=l[21];let k;return l[22]!==s||l[23]!==J||l[24]!==M?(k=h.jsxs(ir,{show:s,centered:!0,children:[R,M,J]}),l[22]=s,l[23]=J,l[24]=M,l[25]=k):k=l[25],k},BS=g.lazy(()=>be(()=>import("./Budget-BD3tWhAz.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),qS=g.lazy(()=>be(()=>import("./ChargingStructure-Bv0NJy9P.js"),__vite__mapDeps([8,2,3,4,5,6,9,10,11]))),VS=g.lazy(()=>be(()=>import("./ECProjects-Cxw57QLP.js"),__vite__mapDeps([12,2,3,4,5,6,13,11]))),YS=g.lazy(()=>be(()=>import("./FundingSource-M1iQBQ3K.js"),__vite__mapDeps([14,1,2,3,4,5,6,15]))),GS=g.lazy(()=>be(()=>import("./ParentOrganisation-Bpo7P6u6.js"),__vite__mapDeps([16,2,3,4,5,6,13,11]))),Oy=g.lazy(()=>be(()=>import("./StaffGraph-HNfHQ0pm.js"),__vite__mapDeps([17,1,2,3,4,5,6,18]))),kS=g.lazy(()=>be(()=>import("./StaffGraphAbsolute-Bq1qlgS8.js"),__vite__mapDeps([19,1,2,3,4,5,6,15,7]))),XS=g.lazy(()=>be(()=>import("./SubOrganisation-CXMlieI0.js"),__vite__mapDeps([20,2,3,4,5,6,13,11]))),QS=g.lazy(()=>be(()=>import("./Audits-CuvZdHfU.js"),__vite__mapDeps([21,2,3,4,5,6,9,10,11]))),ZS=g.lazy(()=>be(()=>import("./BusinessContinuity-MvRfhQYb.js"),__vite__mapDeps([22,2,3,4,5,6,9,10,11]))),KS=g.lazy(()=>be(()=>import("./CentralProcurement-CnLdUN2O.js"),__vite__mapDeps([23,2,3,4,5,6,15,1,7]))),$S=g.lazy(()=>be(()=>import("./CorporateStrategy-D3wglOhj.js"),__vite__mapDeps([24,2,3,4,5,6,13,11]))),FS=g.lazy(()=>be(()=>import("./CrisisExercises-DuZg-gGP.js"),__vite__mapDeps([25,2,3,4,5,6,9,10,11]))),JS=g.lazy(()=>be(()=>import("./CrisisManagement-B9EB2EWM.js"),__vite__mapDeps([26,2,3,4,5,6,9,10,11]))),PS=g.lazy(()=>be(()=>import("./EOSCListings-Gq2b1C2V.js"),__vite__mapDeps([27,2,3,4,5,6,13,11]))),WS=g.lazy(()=>be(()=>import("./Policy-BdndWxZz.js"),__vite__mapDeps([28,2,3,4,5,6,13,11]))),IS=g.lazy(()=>be(()=>import("./SecurityControls-Ba4coYqK.js"),__vite__mapDeps([29,2,3,4,5,6,9,10,11]))),e2=g.lazy(()=>be(()=>import("./ServiceLevelTargets-pvc5MWdl.js"),__vite__mapDeps([30,2,3,4,5,6,9,10,11]))),t2=g.lazy(()=>be(()=>import("./ServiceManagementFramework-Cy_R2T5K.js"),__vite__mapDeps([31,2,3,4,5,6,9,10,11]))),n2=g.lazy(()=>be(()=>import("./ServicesOffered-C8SRGlPW.js"),__vite__mapDeps([32,2,3,4,5,6,33,11]))),a2=g.lazy(()=>be(()=>import("./ConnectedInstitutionsURLs-C_G2PNvX.js"),__vite__mapDeps([34,2,3,4,5,6,13,11]))),dl=g.lazy(()=>be(()=>import("./ConnectedUser-D-CAsrxc.js"),__vite__mapDeps([35,2,3,4,5,6,33,11]))),l2=g.lazy(()=>be(()=>import("./RemoteCampuses-CWuoHcc1.js"),__vite__mapDeps([36,2,3,4,5,6,11]))),i2=g.lazy(()=>be(()=>import("./AlienWave-AJrmdFtI.js"),__vite__mapDeps([37,2,3,4,5,6,9,10,11]))),r2=g.lazy(()=>be(()=>import("./AlienWaveInternal-BkYZMjCR.js"),__vite__mapDeps([38,2,3,4,5,6,9,10,11]))),u2=g.lazy(()=>be(()=>import("./Automation-DItliT93.js"),__vite__mapDeps([39,2,3,4,5,6,10,11]))),c2=g.lazy(()=>be(()=>import("./CapacityCoreIP-BYeiJxnz.js"),__vite__mapDeps([40,1,2,3,4,5,6,15,7]))),s2=g.lazy(()=>be(()=>import("./CapacityLargestLink-Bov4w9OF.js"),__vite__mapDeps([41,1,2,3,4,5,6,15,7]))),o2=g.lazy(()=>be(()=>import("./CertificateProvider-C0MtpALT.js"),__vite__mapDeps([42,2,3,4,5,6,9,10,11]))),Dy=g.lazy(()=>be(()=>import("./DarkFibreLease-DOa-O_Mg.js"),__vite__mapDeps([43,1,2,3,4,5,6,7]))),f2=g.lazy(()=>be(()=>import("./DarkFibreInstalled-2D1iNkw5.js"),__vite__mapDeps([44,1,2,3,4,5,6,7]))),d2=g.lazy(()=>be(()=>import("./ExternalConnections-ldDiu0-q.js"),__vite__mapDeps([45,2,3,4,5,6,11]))),h2=g.lazy(()=>be(()=>import("./FibreLight-CitJL-tj.js"),__vite__mapDeps([46,2,3,4,5,6,9,10,11]))),m2=g.lazy(()=>be(()=>import("./IRUDuration-CX0U79PZ.js"),__vite__mapDeps([47,1,2,3,4,5,6,7]))),y2=g.lazy(()=>be(()=>import("./MonitoringTools-sTAJWOEm.js"),__vite__mapDeps([48,2,3,4,5,6,9,10,11]))),p2=g.lazy(()=>be(()=>import("./NetworkFunctionVirtualisation-mpEVvRIs.js"),__vite__mapDeps([49,2,3,4,5,6,10,11]))),v2=g.lazy(()=>be(()=>import("./NetworkMapUrls-B9qEmtVH.js"),__vite__mapDeps([50,2,3,4,5,6,13,11]))),g2=g.lazy(()=>be(()=>import("./NonRAndEPeer-C1U-VeeG.js"),__vite__mapDeps([51,1,2,3,4,5,6,15,7]))),E2=g.lazy(()=>be(()=>import("./OPsAutomation-DAHkdRQE.js"),__vite__mapDeps([52,2,3,4,5,6,9,10,11]))),b2=g.lazy(()=>be(()=>import("./PassiveMonitoring-Bn2t9Pmf.js"),__vite__mapDeps([53,2,3,4,5,6,9,10,11]))),S2=g.lazy(()=>be(()=>import("./PertTeam-C-4MgsmN.js"),__vite__mapDeps([54,2,3,4,5,6,9,10,11]))),x2=g.lazy(()=>be(()=>import("./SiemVendors-kLcSDwOx.js"),__vite__mapDeps([55,2,3,4,5,6,9,10,11]))),_2=g.lazy(()=>be(()=>import("./TrafficRatio-BkOFtVPl.js"),__vite__mapDeps([56,1,2,3,4,5,6,18]))),R2=g.lazy(()=>be(()=>import("./TrafficUrl-ppIreNuJ.js"),__vite__mapDeps([57,2,3,4,5,6,13,11]))),T2=g.lazy(()=>be(()=>import("./TrafficVolume-DjVPocrC.js"),__vite__mapDeps([58,1,2,3,4,5,6,7]))),N2=g.lazy(()=>be(()=>import("./WeatherMap-CtO7coD7.js"),__vite__mapDeps([59,2,3,4,5,6,13,11]))),Ua=g.lazy(()=>be(()=>import("./Services-fP_6uX0f.js"),__vite__mapDeps([60,2,3,4,5,6,11]))),C2=g.lazy(()=>be(()=>import("./Landing-B1Sq71Lu.js"),__vite__mapDeps([61,62,63,3,4,11]))),No=g.lazy(()=>be(()=>import("./SurveyContainerComponent-BmuW9EVe.js"),__vite__mapDeps([64,65,66,67,63,3,68]))),j2=g.lazy(()=>be(()=>import("./SurveyManagementComponent-BvOZUwZZ.js"),__vite__mapDeps([69,70,6,11,65,67,62,63,3]))),O2=g.lazy(()=>be(()=>import("./UserManagementComponent-BsFczL9E.js"),__vite__mapDeps([71,65,63,3,5,70,6,11]))),D2=()=>{const l=Ke.c(9),{pathname:n}=Xn(),c=n!=="/";let s;l[0]===Symbol.for("react.memo_cache_sentinel")?(s=h.jsx(oS,{}),l[0]=s):s=l[0];let u;l[1]!==c?(u=h.jsx("main",{className:"grow",children:c?h.jsx(T0,{}):h.jsx(Bp,{})}),l[1]=c,l[2]=u):u=l[2];let f;l[3]===Symbol.for("react.memo_cache_sentinel")?(f=h.jsx(HS,{}),l[3]=f):f=l[3];let d;l[4]!==u?(d=h.jsxs(wE,{children:[s,u,f]}),l[4]=u,l[5]=d):d=l[5];let y;l[6]===Symbol.for("react.memo_cache_sentinel")?(y=h.jsx(hS,{}),l[6]=y):y=l[6];let v;return l[7]!==d?(v=h.jsxs(h.Fragment,{children:[d,y]}),l[7]=d,l[8]=v):v=l[8],v},w2=P0([{path:"",element:h.jsx(D2,{}),children:[{path:"/budget",element:h.jsx(BS,{})},{path:"/funding",element:h.jsx(YS,{})},{path:"/employment",element:h.jsx(Oy,{},"staffgraph")},{path:"/traffic-ratio",element:h.jsx(_2,{})},{path:"/roles",element:h.jsx(Oy,{roles:!0},"staffgraphroles")},{path:"/employee-count",element:h.jsx(kS,{})},{path:"/charging",element:h.jsx(qS,{})},{path:"/suborganisations",element:h.jsx(XS,{})},{path:"/parentorganisation",element:h.jsx(GS,{})},{path:"/ec-projects",element:h.jsx(VS,{})},{path:"/policy",element:h.jsx(WS,{})},{path:"/traffic-volume",element:h.jsx(T2,{})},{path:"/data",element:h.jsx(US,{})},{path:"/institutions-urls",element:h.jsx(a2,{})},{path:"/connected-proportion",element:h.jsx(dl,{page:Qt.ConnectedProportion},Qt.ConnectedProportion)},{path:"/connectivity-level",element:h.jsx(dl,{page:Qt.ConnectivityLevel},Qt.ConnectivityLevel)},{path:"/connectivity-growth",element:h.jsx(dl,{page:Qt.ConnectivityGrowth},Qt.ConnectivityGrowth)},{path:"/connection-carrier",element:h.jsx(dl,{page:Qt.ConnectionCarrier},Qt.ConnectionCarrier)},{path:"/connectivity-load",element:h.jsx(dl,{page:Qt.ConnectivityLoad},Qt.ConnectivityLoad)},{path:"/commercial-charging-level",element:h.jsx(dl,{page:Qt.CommercialChargingLevel},Qt.CommercialChargingLevel)},{path:"/commercial-connectivity",element:h.jsx(dl,{page:Qt.CommercialConnectivity},Qt.CommercialConnectivity)},{path:"/network-services",element:h.jsx(Ua,{category:Lt.network_services},Lt.network_services)},{path:"/isp-support-services",element:h.jsx(Ua,{category:Lt.isp_support},Lt.isp_support)},{path:"/security-services",element:h.jsx(Ua,{category:Lt.security},Lt.security)},{path:"/identity-services",element:h.jsx(Ua,{category:Lt.identity},Lt.identity)},{path:"/collaboration-services",element:h.jsx(Ua,{category:Lt.collaboration},Lt.collaboration)},{path:"/multimedia-services",element:h.jsx(Ua,{category:Lt.multimedia},Lt.multimedia)},{path:"/storage-and-hosting-services",element:h.jsx(Ua,{category:Lt.storage_and_hosting},Lt.storage_and_hosting)},{path:"/professional-services",element:h.jsx(Ua,{category:Lt.professional_services},Lt.professional_services)},{path:"/dark-fibre-lease",element:h.jsx(Dy,{national:!0},"darkfibrenational")},{path:"/dark-fibre-lease-international",element:h.jsx(Dy,{},"darkfibreinternational")},{path:"/dark-fibre-installed",element:h.jsx(f2,{})},{path:"/remote-campuses",element:h.jsx(l2,{})},{path:"/eosc-listings",element:h.jsx(PS,{})},{path:"/fibre-light",element:h.jsx(h2,{})},{path:"/monitoring-tools",element:h.jsx(y2,{})},{path:"/pert-team",element:h.jsx(S2,{})},{path:"/passive-monitoring",element:h.jsx(b2,{})},{path:"/alien-wave",element:h.jsx(i2,{})},{path:"/alien-wave-internal",element:h.jsx(r2,{})},{path:"/external-connections",element:h.jsx(d2,{})},{path:"/ops-automation",element:h.jsx(E2,{})},{path:"/network-automation",element:h.jsx(u2,{})},{path:"/traffic-stats",element:h.jsx(R2,{})},{path:"/weather-map",element:h.jsx(N2,{})},{path:"/network-map",element:h.jsx(v2,{})},{path:"/nfv",element:h.jsx(p2,{})},{path:"/certificate-providers",element:h.jsx(o2,{})},{path:"/siem-vendors",element:h.jsx(x2,{})},{path:"/capacity-largest-link",element:h.jsx(s2,{})},{path:"/capacity-core-ip",element:h.jsx(c2,{})},{path:"/non-rne-peers",element:h.jsx(g2,{})},{path:"/iru-duration",element:h.jsx(m2,{})},{path:"/audits",element:h.jsx(QS,{})},{path:"/business-continuity",element:h.jsx(ZS,{})},{path:"/crisis-management",element:h.jsx(JS,{})},{path:"/crisis-exercise",element:h.jsx(FS,{})},{path:"/central-procurement",element:h.jsx(KS,{})},{path:"/security-control",element:h.jsx(IS,{})},{path:"/services-offered",element:h.jsx(n2,{})},{path:"/service-management-framework",element:h.jsx(t2,{})},{path:"/service-level-targets",element:h.jsx(e2,{})},{path:"/corporate-strategy",element:h.jsx($S,{})},{path:"/survey/admin/surveys",element:h.jsx(j2,{})},{path:"/survey/admin/users",element:h.jsx(O2,{})},{path:"/survey/admin/inspect/:year",element:h.jsx(No,{loadFrom:"/api/response/inspect/"})},{path:"/survey/admin/try/:year",element:h.jsx(No,{loadFrom:"/api/response/try/"})},{path:"/survey/response/:year/:nren",element:h.jsx(No,{loadFrom:"/api/response/load/"})},{path:"/survey/*",element:h.jsx(C2,{})},{path:"*",element:h.jsx(Bp,{})}]}]);function A2(){const l=Ke.c(1);let n;return l[0]===Symbol.for("react.memo_cache_sentinel")?(n=h.jsx("div",{className:"app",children:h.jsx(oE,{router:w2})}),l[0]=n):n=l[0],n}const M2=document.getElementById("root"),z2=a1.createRoot(M2);z2.render(h.jsx(Yt.StrictMode,{children:h.jsx(A2,{})}));export{Yp as $,Ho as A,pb as B,ln as C,Xy as D,Ya as E,yE as F,MS as G,LS as H,jS as I,vE as J,OS as K,Tn as L,Iy as M,zS as N,wS as O,AS as P,Hp as Q,Rn as R,li as S,NS as T,V2 as U,SE as V,Du as W,DS as X,_S as Y,RS as Z,zE as _,Qt as a,Lt as a0,Fo as a1,yr as a2,ku as a3,wy as a4,B2 as a5,H2 as a6,be as a7,rb as a8,nb as a9,$u as aa,gl as ab,hl as ac,Mo as ad,Ba as ae,yl as af,ab as ag,U2 as ah,nf as ai,OE as aj,Y2 as b,Ke as c,G2 as d,rr as e,Yt as f,up as g,Qe as h,Ae as i,h as j,sb as k,by as l,Bu as m,Ob as n,Ku as o,tf as p,ob as q,g as r,ti as s,se as t,pl as u,lp as v,q2 as w,rp as x,Bo as y,BE as z}; diff --git a/compendium_v2/static/useData-Ct8E3VVL.js b/compendium_v2/static/useData-CYCBVZdC.js similarity index 98% rename from compendium_v2/static/useData-Ct8E3VVL.js rename to compendium_v2/static/useData-CYCBVZdC.js index 803466e0..34fc3e54 100644 --- a/compendium_v2/static/useData-Ct8E3VVL.js +++ b/compendium_v2/static/useData-CYCBVZdC.js @@ -1,4 +1,4 @@ -var za=Object.defineProperty;var Na=(e,t,n)=>t in e?za(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var T=(e,t,n)=>Na(e,typeof t!="symbol"?t+"":t,n);import{r as A,u as Vt,g as Ba,j as M,h as Kt,i as qt,k as Ha,w as Wa,l as ms,o as Va,m as un,f as ue,n as ar,B as Ya,p as Ua,q as Xa,s as bs,v as Ka,x as lr,y as Ft,z as qa,A as Ga,c as wt,O as Ja,D as Za,S as G,E as cr,R as se,P as Qa,N as tl,G as el,H as nl,I as xe,J as hr,K as ge,M as il,Q as sl,T as ol,L as rl,V as al,C as xs,W as Jn,X as ll}from"./index.js";import{S as sn}from"./SideBar-CkoMfgfL.js";import{u as Zn,w as cl}from"./xlsx-BHRztzV8.js";import{c as ur,F as dr}from"./index-DIBz8YrO.js";import{u as hl}from"./hook-GVc5uk5F.js";function ul(){return A.useState(null)}function dl(e,t,n,i=!1){const s=Vt(n);A.useEffect(()=>{const o=typeof e=="function"?e():e;return o.addEventListener(t,s,i),()=>o.removeEventListener(t,s,i)},[e])}const fl=["onKeyDown"];function pl(e,t){if(e==null)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(t.indexOf(i)>=0)continue;n[i]=e[i]}return n}function gl(e){return!e||e.trim()==="#"}const fr=A.forwardRef((e,t)=>{let{onKeyDown:n}=e,i=pl(e,fl);const[s]=Ba(Object.assign({tagName:"a"},i)),o=Vt(r=>{s.onKeyDown(r),n==null||n(r)});return gl(i.href)||i.role==="button"?M.jsx("a",Object.assign({ref:t},i,s,{onKeyDown:o})):M.jsx("a",Object.assign({ref:t},i,{onKeyDown:n}))});fr.displayName="Anchor";const Ti=A.forwardRef(({bsPrefix:e,className:t,role:n="toolbar",...i},s)=>{const o=Kt(e,"btn-toolbar");return M.jsx("div",{...i,ref:s,className:qt(t,o),role:n})});Ti.displayName="ButtonToolbar";function ml(e,t,n){const i=A.useRef(e!==void 0),[s,o]=A.useState(t),r=e!==void 0,a=i.current;return i.current=r,!r&&a&&s!==t&&o(t),[r?e:s,A.useCallback((...l)=>{const[c,...h]=l;let u=n==null?void 0:n(c,...h);return o(c),u},[n])]}function bl(){const[,e]=A.useReducer(t=>t+1,0);return e}const Yn=A.createContext(null);var ys=Object.prototype.hasOwnProperty;function vs(e,t,n){for(n of e.keys())if(Be(n,t))return n}function Be(e,t){var n,i,s;if(e===t)return!0;if(e&&t&&(n=e.constructor)===t.constructor){if(n===Date)return e.getTime()===t.getTime();if(n===RegExp)return e.toString()===t.toString();if(n===Array){if((i=e.length)===t.length)for(;i--&&Be(e[i],t[i]););return i===-1}if(n===Set){if(e.size!==t.size)return!1;for(i of e)if(s=i,s&&typeof s=="object"&&(s=vs(t,s),!s)||!t.has(s))return!1;return!0}if(n===Map){if(e.size!==t.size)return!1;for(i of e)if(s=i[0],s&&typeof s=="object"&&(s=vs(t,s),!s)||!Be(i[1],t.get(s)))return!1;return!0}if(n===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(n===DataView){if((i=e.byteLength)===t.byteLength)for(;i--&&e.getInt8(i)===t.getInt8(i););return i===-1}if(ArrayBuffer.isView(e)){if((i=e.byteLength)===t.byteLength)for(;i--&&e[i]===t[i];);return i===-1}if(!n||typeof e=="object"){i=0;for(n in e)if(ys.call(e,n)&&++i&&!ys.call(t,n)||!(n in t)||!Be(e[n],t[n]))return!1;return Object.keys(t).length===i}}return e!==e&&t!==t}function xl(e){const t=Ha();return[e[0],A.useCallback(n=>{if(t())return e[1](n)},[t,e[1]])]}var ut="top",xt="bottom",yt="right",dt="left",Ri="auto",on=[ut,xt,yt,dt],we="start",Ke="end",yl="clippingParents",pr="viewport",Te="popper",vl="reference",_s=on.reduce(function(e,t){return e.concat([t+"-"+we,t+"-"+Ke])},[]),gr=[].concat(on,[Ri]).reduce(function(e,t){return e.concat([t,t+"-"+we,t+"-"+Ke])},[]),_l="beforeRead",wl="read",Sl="afterRead",kl="beforeMain",Ml="main",Cl="afterMain",Pl="beforeWrite",Ol="write",Dl="afterWrite",Al=[_l,wl,Sl,kl,Ml,Cl,Pl,Ol,Dl];function Pt(e){return e.split("-")[0]}function gt(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function de(e){var t=gt(e).Element;return e instanceof t||e instanceof Element}function Ot(e){var t=gt(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Li(e){if(typeof ShadowRoot>"u")return!1;var t=gt(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}var ce=Math.max,Ln=Math.min,Se=Math.round;function yi(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function mr(){return!/^((?!chrome|android).)*safari/i.test(yi())}function ke(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var i=e.getBoundingClientRect(),s=1,o=1;t&&Ot(e)&&(s=e.offsetWidth>0&&Se(i.width)/e.offsetWidth||1,o=e.offsetHeight>0&&Se(i.height)/e.offsetHeight||1);var r=de(e)?gt(e):window,a=r.visualViewport,l=!mr()&&n,c=(i.left+(l&&a?a.offsetLeft:0))/s,h=(i.top+(l&&a?a.offsetTop:0))/o,u=i.width/s,d=i.height/o;return{width:u,height:d,top:h,right:c+u,bottom:h+d,left:c,x:c,y:h}}function Fi(e){var t=ke(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function br(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Li(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ut(e){return e?(e.nodeName||"").toLowerCase():null}function jt(e){return gt(e).getComputedStyle(e)}function El(e){return["table","td","th"].indexOf(Ut(e))>=0}function Gt(e){return((de(e)?e.ownerDocument:e.document)||window.document).documentElement}function Un(e){return Ut(e)==="html"?e:e.assignedSlot||e.parentNode||(Li(e)?e.host:null)||Gt(e)}function ws(e){return!Ot(e)||jt(e).position==="fixed"?null:e.offsetParent}function Tl(e){var t=/firefox/i.test(yi()),n=/Trident/i.test(yi());if(n&&Ot(e)){var i=jt(e);if(i.position==="fixed")return null}var s=Un(e);for(Li(s)&&(s=s.host);Ot(s)&&["html","body"].indexOf(Ut(s))<0;){var o=jt(s);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||t&&o.willChange==="filter"||t&&o.filter&&o.filter!=="none")return s;s=s.parentNode}return null}function rn(e){for(var t=gt(e),n=ws(e);n&&El(n)&&jt(n).position==="static";)n=ws(n);return n&&(Ut(n)==="html"||Ut(n)==="body"&&jt(n).position==="static")?t:n||Tl(e)||t}function Ii(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function He(e,t,n){return ce(e,Ln(t,n))}function Rl(e,t,n){var i=He(e,t,n);return i>n?n:i}function xr(){return{top:0,right:0,bottom:0,left:0}}function yr(e){return Object.assign({},xr(),e)}function vr(e,t){return t.reduce(function(n,i){return n[i]=e,n},{})}var Ll=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,yr(typeof t!="number"?t:vr(t,on))};function Fl(e){var t,n=e.state,i=e.name,s=e.options,o=n.elements.arrow,r=n.modifiersData.popperOffsets,a=Pt(n.placement),l=Ii(a),c=[dt,yt].indexOf(a)>=0,h=c?"height":"width";if(!(!o||!r)){var u=Ll(s.padding,n),d=Fi(o),f=l==="y"?ut:dt,g=l==="y"?xt:yt,m=n.rects.reference[h]+n.rects.reference[l]-r[l]-n.rects.popper[h],p=r[l]-n.rects.reference[l],b=rn(o),x=b?l==="y"?b.clientHeight||0:b.clientWidth||0:0,v=m/2-p/2,_=u[f],y=x-d[h]-u[g],w=x/2-d[h]/2+v,k=He(_,w,y),S=l;n.modifiersData[i]=(t={},t[S]=k,t.centerOffset=k-w,t)}}function Il(e){var t=e.state,n=e.options,i=n.element,s=i===void 0?"[data-popper-arrow]":i;s!=null&&(typeof s=="string"&&(s=t.elements.popper.querySelector(s),!s)||br(t.elements.popper,s)&&(t.elements.arrow=s))}const jl={name:"arrow",enabled:!0,phase:"main",fn:Fl,effect:Il,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Me(e){return e.split("-")[1]}var $l={top:"auto",right:"auto",bottom:"auto",left:"auto"};function zl(e,t){var n=e.x,i=e.y,s=t.devicePixelRatio||1;return{x:Se(n*s)/s||0,y:Se(i*s)/s||0}}function Ss(e){var t,n=e.popper,i=e.popperRect,s=e.placement,o=e.variation,r=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,h=e.roundOffsets,u=e.isFixed,d=r.x,f=d===void 0?0:d,g=r.y,m=g===void 0?0:g,p=typeof h=="function"?h({x:f,y:m}):{x:f,y:m};f=p.x,m=p.y;var b=r.hasOwnProperty("x"),x=r.hasOwnProperty("y"),v=dt,_=ut,y=window;if(c){var w=rn(n),k="clientHeight",S="clientWidth";if(w===gt(n)&&(w=Gt(n),jt(w).position!=="static"&&a==="absolute"&&(k="scrollHeight",S="scrollWidth")),w=w,s===ut||(s===dt||s===yt)&&o===Ke){_=xt;var P=u&&w===y&&y.visualViewport?y.visualViewport.height:w[k];m-=P-i.height,m*=l?1:-1}if(s===dt||(s===ut||s===xt)&&o===Ke){v=yt;var D=u&&w===y&&y.visualViewport?y.visualViewport.width:w[S];f-=D-i.width,f*=l?1:-1}}var C=Object.assign({position:a},c&&$l),O=h===!0?zl({x:f,y:m},gt(n)):{x:f,y:m};if(f=O.x,m=O.y,l){var E;return Object.assign({},C,(E={},E[_]=x?"0":"",E[v]=b?"0":"",E.transform=(y.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",E))}return Object.assign({},C,(t={},t[_]=x?m+"px":"",t[v]=b?f+"px":"",t.transform="",t))}function Nl(e){var t=e.state,n=e.options,i=n.gpuAcceleration,s=i===void 0?!0:i,o=n.adaptive,r=o===void 0?!0:o,a=n.roundOffsets,l=a===void 0?!0:a,c={placement:Pt(t.placement),variation:Me(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:s,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Ss(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:r,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ss(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const Bl={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Nl,data:{}};var dn={passive:!0};function Hl(e){var t=e.state,n=e.instance,i=e.options,s=i.scroll,o=s===void 0?!0:s,r=i.resize,a=r===void 0?!0:r,l=gt(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach(function(h){h.addEventListener("scroll",n.update,dn)}),a&&l.addEventListener("resize",n.update,dn),function(){o&&c.forEach(function(h){h.removeEventListener("scroll",n.update,dn)}),a&&l.removeEventListener("resize",n.update,dn)}}const Wl={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Hl,data:{}};var Vl={left:"right",right:"left",bottom:"top",top:"bottom"};function En(e){return e.replace(/left|right|bottom|top/g,function(t){return Vl[t]})}var Yl={start:"end",end:"start"};function ks(e){return e.replace(/start|end/g,function(t){return Yl[t]})}function ji(e){var t=gt(e),n=t.pageXOffset,i=t.pageYOffset;return{scrollLeft:n,scrollTop:i}}function $i(e){return ke(Gt(e)).left+ji(e).scrollLeft}function Ul(e,t){var n=gt(e),i=Gt(e),s=n.visualViewport,o=i.clientWidth,r=i.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=mr();(c||!c&&t==="fixed")&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+$i(e),y:l}}function Xl(e){var t,n=Gt(e),i=ji(e),s=(t=e.ownerDocument)==null?void 0:t.body,o=ce(n.scrollWidth,n.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ce(n.scrollHeight,n.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-i.scrollLeft+$i(e),l=-i.scrollTop;return jt(s||n).direction==="rtl"&&(a+=ce(n.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}function zi(e){var t=jt(e),n=t.overflow,i=t.overflowX,s=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+s+i)}function _r(e){return["html","body","#document"].indexOf(Ut(e))>=0?e.ownerDocument.body:Ot(e)&&zi(e)?e:_r(Un(e))}function We(e,t){var n;t===void 0&&(t=[]);var i=_r(e),s=i===((n=e.ownerDocument)==null?void 0:n.body),o=gt(i),r=s?[o].concat(o.visualViewport||[],zi(i)?i:[]):i,a=t.concat(r);return s?a:a.concat(We(Un(r)))}function vi(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Kl(e,t){var n=ke(e,!1,t==="fixed");return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function Ms(e,t,n){return t===pr?vi(Ul(e,n)):de(t)?Kl(t,n):vi(Xl(Gt(e)))}function ql(e){var t=We(Un(e)),n=["absolute","fixed"].indexOf(jt(e).position)>=0,i=n&&Ot(e)?rn(e):e;return de(i)?t.filter(function(s){return de(s)&&br(s,i)&&Ut(s)!=="body"}):[]}function Gl(e,t,n,i){var s=t==="clippingParents"?ql(e):[].concat(t),o=[].concat(s,[n]),r=o[0],a=o.reduce(function(l,c){var h=Ms(e,c,i);return l.top=ce(h.top,l.top),l.right=Ln(h.right,l.right),l.bottom=Ln(h.bottom,l.bottom),l.left=ce(h.left,l.left),l},Ms(e,r,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function wr(e){var t=e.reference,n=e.element,i=e.placement,s=i?Pt(i):null,o=i?Me(i):null,r=t.x+t.width/2-n.width/2,a=t.y+t.height/2-n.height/2,l;switch(s){case ut:l={x:r,y:t.y-n.height};break;case xt:l={x:r,y:t.y+t.height};break;case yt:l={x:t.x+t.width,y:a};break;case dt:l={x:t.x-n.width,y:a};break;default:l={x:t.x,y:t.y}}var c=s?Ii(s):null;if(c!=null){var h=c==="y"?"height":"width";switch(o){case we:l[c]=l[c]-(t[h]/2-n[h]/2);break;case Ke:l[c]=l[c]+(t[h]/2-n[h]/2);break}}return l}function qe(e,t){t===void 0&&(t={});var n=t,i=n.placement,s=i===void 0?e.placement:i,o=n.strategy,r=o===void 0?e.strategy:o,a=n.boundary,l=a===void 0?yl:a,c=n.rootBoundary,h=c===void 0?pr:c,u=n.elementContext,d=u===void 0?Te:u,f=n.altBoundary,g=f===void 0?!1:f,m=n.padding,p=m===void 0?0:m,b=yr(typeof p!="number"?p:vr(p,on)),x=d===Te?vl:Te,v=e.rects.popper,_=e.elements[g?x:d],y=Gl(de(_)?_:_.contextElement||Gt(e.elements.popper),l,h,r),w=ke(e.elements.reference),k=wr({reference:w,element:v,strategy:"absolute",placement:s}),S=vi(Object.assign({},v,k)),P=d===Te?S:w,D={top:y.top-P.top+b.top,bottom:P.bottom-y.bottom+b.bottom,left:y.left-P.left+b.left,right:P.right-y.right+b.right},C=e.modifiersData.offset;if(d===Te&&C){var O=C[s];Object.keys(D).forEach(function(E){var F=[yt,xt].indexOf(E)>=0?1:-1,R=[ut,xt].indexOf(E)>=0?"y":"x";D[E]+=O[R]*F})}return D}function Jl(e,t){t===void 0&&(t={});var n=t,i=n.placement,s=n.boundary,o=n.rootBoundary,r=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=l===void 0?gr:l,h=Me(i),u=h?a?_s:_s.filter(function(g){return Me(g)===h}):on,d=u.filter(function(g){return c.indexOf(g)>=0});d.length===0&&(d=u);var f=d.reduce(function(g,m){return g[m]=qe(e,{placement:m,boundary:s,rootBoundary:o,padding:r})[Pt(m)],g},{});return Object.keys(f).sort(function(g,m){return f[g]-f[m]})}function Zl(e){if(Pt(e)===Ri)return[];var t=En(e);return[ks(e),t,ks(t)]}function Ql(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var s=n.mainAxis,o=s===void 0?!0:s,r=n.altAxis,a=r===void 0?!0:r,l=n.fallbackPlacements,c=n.padding,h=n.boundary,u=n.rootBoundary,d=n.altBoundary,f=n.flipVariations,g=f===void 0?!0:f,m=n.allowedAutoPlacements,p=t.options.placement,b=Pt(p),x=b===p,v=l||(x||!g?[En(p)]:Zl(p)),_=[p].concat(v).reduce(function(U,X){return U.concat(Pt(X)===Ri?Jl(t,{placement:X,boundary:h,rootBoundary:u,padding:c,flipVariations:g,allowedAutoPlacements:m}):X)},[]),y=t.rects.reference,w=t.rects.popper,k=new Map,S=!0,P=_[0],D=0;D<_.length;D++){var C=_[D],O=Pt(C),E=Me(C)===we,F=[ut,xt].indexOf(O)>=0,R=F?"width":"height",L=qe(t,{placement:C,boundary:h,rootBoundary:u,altBoundary:d,padding:c}),I=F?E?yt:dt:E?xt:ut;y[R]>w[R]&&(I=En(I));var Y=En(I),$=[];if(o&&$.push(L[O]<=0),a&&$.push(L[I]<=0,L[Y]<=0),$.every(function(U){return U})){P=C,S=!1;break}k.set(C,$)}if(S)for(var N=g?3:1,tt=function(X){var q=_.find(function(At){var B=k.get(At);if(B)return B.slice(0,X).every(function(et){return et})});if(q)return P=q,"break"},Q=N;Q>0;Q--){var nt=tt(Q);if(nt==="break")break}t.placement!==P&&(t.modifiersData[i]._skip=!0,t.placement=P,t.reset=!0)}}const tc={name:"flip",enabled:!0,phase:"main",fn:Ql,requiresIfExists:["offset"],data:{_skip:!1}};function Cs(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Ps(e){return[ut,yt,xt,dt].some(function(t){return e[t]>=0})}function ec(e){var t=e.state,n=e.name,i=t.rects.reference,s=t.rects.popper,o=t.modifiersData.preventOverflow,r=qe(t,{elementContext:"reference"}),a=qe(t,{altBoundary:!0}),l=Cs(r,i),c=Cs(a,s,o),h=Ps(l),u=Ps(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":u})}const nc={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:ec};function ic(e,t,n){var i=Pt(e),s=[dt,ut].indexOf(i)>=0?-1:1,o=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[dt,yt].indexOf(i)>=0?{x:a,y:r}:{x:r,y:a}}function sc(e){var t=e.state,n=e.options,i=e.name,s=n.offset,o=s===void 0?[0,0]:s,r=gr.reduce(function(h,u){return h[u]=ic(u,t.rects,o),h},{}),a=r[t.placement],l=a.x,c=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=r}const oc={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:sc};function rc(e){var t=e.state,n=e.name;t.modifiersData[n]=wr({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const ac={name:"popperOffsets",enabled:!0,phase:"read",fn:rc,data:{}};function lc(e){return e==="x"?"y":"x"}function cc(e){var t=e.state,n=e.options,i=e.name,s=n.mainAxis,o=s===void 0?!0:s,r=n.altAxis,a=r===void 0?!1:r,l=n.boundary,c=n.rootBoundary,h=n.altBoundary,u=n.padding,d=n.tether,f=d===void 0?!0:d,g=n.tetherOffset,m=g===void 0?0:g,p=qe(t,{boundary:l,rootBoundary:c,padding:u,altBoundary:h}),b=Pt(t.placement),x=Me(t.placement),v=!x,_=Ii(b),y=lc(_),w=t.modifiersData.popperOffsets,k=t.rects.reference,S=t.rects.popper,P=typeof m=="function"?m(Object.assign({},t.rects,{placement:t.placement})):m,D=typeof P=="number"?{mainAxis:P,altAxis:P}:Object.assign({mainAxis:0,altAxis:0},P),C=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,O={x:0,y:0};if(w){if(o){var E,F=_==="y"?ut:dt,R=_==="y"?xt:yt,L=_==="y"?"height":"width",I=w[_],Y=I+p[F],$=I-p[R],N=f?-S[L]/2:0,tt=x===we?k[L]:S[L],Q=x===we?-S[L]:-k[L],nt=t.elements.arrow,U=f&&nt?Fi(nt):{width:0,height:0},X=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:xr(),q=X[F],At=X[R],B=He(0,k[L],U[L]),et=v?k[L]/2-N-B-q-D.mainAxis:tt-B-q-D.mainAxis,Ee=v?-k[L]/2+N+B+At+D.mainAxis:Q+B+At+D.mainAxis,zt=t.elements.arrow&&rn(t.elements.arrow),Jt=zt?_==="y"?zt.clientTop||0:zt.clientLeft||0:0,Zt=(E=C==null?void 0:C[_])!=null?E:0,lt=I+et-Zt-Jt,Ia=I+Ee-Zt,ls=He(f?Ln(Y,lt):Y,I,f?ce($,Ia):$);w[_]=ls,O[_]=ls-I}if(a){var cs,ja=_==="x"?ut:dt,$a=_==="x"?xt:yt,Qt=w[y],hn=y==="y"?"height":"width",hs=Qt+p[ja],us=Qt-p[$a],Gn=[ut,dt].indexOf(b)!==-1,ds=(cs=C==null?void 0:C[y])!=null?cs:0,fs=Gn?hs:Qt-k[hn]-S[hn]-ds+D.altAxis,ps=Gn?Qt+k[hn]+S[hn]-ds-D.altAxis:us,gs=f&&Gn?Rl(fs,Qt,ps):He(f?fs:hs,Qt,f?ps:us);w[y]=gs,O[y]=gs-Qt}t.modifiersData[i]=O}}const hc={name:"preventOverflow",enabled:!0,phase:"main",fn:cc,requiresIfExists:["offset"]};function uc(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function dc(e){return e===gt(e)||!Ot(e)?ji(e):uc(e)}function fc(e){var t=e.getBoundingClientRect(),n=Se(t.width)/e.offsetWidth||1,i=Se(t.height)/e.offsetHeight||1;return n!==1||i!==1}function pc(e,t,n){n===void 0&&(n=!1);var i=Ot(t),s=Ot(t)&&fc(t),o=Gt(t),r=ke(e,s,n),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(i||!i&&!n)&&((Ut(t)!=="body"||zi(o))&&(a=dc(t)),Ot(t)?(l=ke(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=$i(o))),{x:r.left+a.scrollLeft-l.x,y:r.top+a.scrollTop-l.y,width:r.width,height:r.height}}function gc(e){var t=new Map,n=new Set,i=[];e.forEach(function(o){t.set(o.name,o)});function s(o){n.add(o.name);var r=[].concat(o.requires||[],o.requiresIfExists||[]);r.forEach(function(a){if(!n.has(a)){var l=t.get(a);l&&s(l)}}),i.push(o)}return e.forEach(function(o){n.has(o.name)||s(o)}),i}function mc(e){var t=gc(e);return Al.reduce(function(n,i){return n.concat(t.filter(function(s){return s.phase===i}))},[])}function bc(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function xc(e){var t=e.reduce(function(n,i){var s=n[i.name];return n[i.name]=s?Object.assign({},s,i,{options:Object.assign({},s.options,i.options),data:Object.assign({},s.data,i.data)}):i,n},{});return Object.keys(t).map(function(n){return t[n]})}var Os={placement:"bottom",modifiers:[],strategy:"absolute"};function Ds(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some(function(i){return!(i&&typeof i.getBoundingClientRect=="function")})}function yc(e){e===void 0&&(e={});var t=e,n=t.defaultModifiers,i=n===void 0?[]:n,s=t.defaultOptions,o=s===void 0?Os:s;return function(a,l,c){c===void 0&&(c=o);var h={placement:"bottom",orderedModifiers:[],options:Object.assign({},Os,o),modifiersData:{},elements:{reference:a,popper:l},attributes:{},styles:{}},u=[],d=!1,f={state:h,setOptions:function(b){var x=typeof b=="function"?b(h.options):b;m(),h.options=Object.assign({},o,h.options,x),h.scrollParents={reference:de(a)?We(a):a.contextElement?We(a.contextElement):[],popper:We(l)};var v=mc(xc([].concat(i,h.options.modifiers)));return h.orderedModifiers=v.filter(function(_){return _.enabled}),g(),f.update()},forceUpdate:function(){if(!d){var b=h.elements,x=b.reference,v=b.popper;if(Ds(x,v)){h.rects={reference:pc(x,rn(v),h.options.strategy==="fixed"),popper:Fi(v)},h.reset=!1,h.placement=h.options.placement,h.orderedModifiers.forEach(function(D){return h.modifiersData[D.name]=Object.assign({},D.data)});for(var _=0;_<h.orderedModifiers.length;_++){if(h.reset===!0){h.reset=!1,_=-1;continue}var y=h.orderedModifiers[_],w=y.fn,k=y.options,S=k===void 0?{}:k,P=y.name;typeof w=="function"&&(h=w({state:h,options:S,name:P,instance:f})||h)}}}},update:bc(function(){return new Promise(function(p){f.forceUpdate(),p(h)})}),destroy:function(){m(),d=!0}};if(!Ds(a,l))return f;f.setOptions(c).then(function(p){!d&&c.onFirstUpdate&&c.onFirstUpdate(p)});function g(){h.orderedModifiers.forEach(function(p){var b=p.name,x=p.options,v=x===void 0?{}:x,_=p.effect;if(typeof _=="function"){var y=_({state:h,name:b,instance:f,options:v}),w=function(){};u.push(y||w)}})}function m(){u.forEach(function(p){return p()}),u=[]}return f}}const vc=yc({defaultModifiers:[nc,ac,Bl,Wl,oc,tc,hc,jl]}),_c=["enabled","placement","strategy","modifiers"];function wc(e,t){if(e==null)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(t.indexOf(i)>=0)continue;n[i]=e[i]}return n}const Sc={name:"applyStyles",enabled:!1,phase:"afterWrite",fn:()=>{}},kc={name:"ariaDescribedBy",enabled:!0,phase:"afterWrite",effect:({state:e})=>()=>{const{reference:t,popper:n}=e.elements;if("removeAttribute"in t){const i=(t.getAttribute("aria-describedby")||"").split(",").filter(s=>s.trim()!==n.id);i.length?t.setAttribute("aria-describedby",i.join(",")):t.removeAttribute("aria-describedby")}},fn:({state:e})=>{var t;const{popper:n,reference:i}=e.elements,s=(t=n.getAttribute("role"))==null?void 0:t.toLowerCase();if(n.id&&s==="tooltip"&&"setAttribute"in i){const o=i.getAttribute("aria-describedby");if(o&&o.split(",").indexOf(n.id)!==-1)return;i.setAttribute("aria-describedby",o?`${o},${n.id}`:n.id)}}},Mc=[];function Cc(e,t,n={}){let{enabled:i=!0,placement:s="bottom",strategy:o="absolute",modifiers:r=Mc}=n,a=wc(n,_c);const l=A.useRef(r),c=A.useRef(),h=A.useCallback(()=>{var p;(p=c.current)==null||p.update()},[]),u=A.useCallback(()=>{var p;(p=c.current)==null||p.forceUpdate()},[]),[d,f]=xl(A.useState({placement:s,update:h,forceUpdate:u,attributes:{},styles:{popper:{},arrow:{}}})),g=A.useMemo(()=>({name:"updateStateModifier",enabled:!0,phase:"write",requires:["computeStyles"],fn:({state:p})=>{const b={},x={};Object.keys(p.elements).forEach(v=>{b[v]=p.styles[v],x[v]=p.attributes[v]}),f({state:p,styles:b,attributes:x,update:h,forceUpdate:u,placement:p.placement})}}),[h,u,f]),m=A.useMemo(()=>(Be(l.current,r)||(l.current=r),l.current),[r]);return A.useEffect(()=>{!c.current||!i||c.current.setOptions({placement:s,strategy:o,modifiers:[...m,g,Sc]})},[o,s,g,i,m]),A.useEffect(()=>{if(!(!i||e==null||t==null))return c.current=vc(e,t,Object.assign({},a,{placement:s,strategy:o,modifiers:[...m,kc,g]})),()=>{c.current!=null&&(c.current.destroy(),c.current=void 0,f(p=>Object.assign({},p,{attributes:{},styles:{popper:{}}})))}},[i,e,t]),d}const As=()=>{};function Pc(e){return e.button===0}function Oc(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}const Qn=e=>e&&("current"in e?e.current:e),Es={click:"mousedown",mouseup:"mousedown",pointerup:"pointerdown"};function Dc(e,t=As,{disabled:n,clickTrigger:i="click"}={}){const s=A.useRef(!1),o=A.useRef(!1),r=A.useCallback(c=>{const h=Qn(e);Wa(!!h,"ClickOutside captured a close event but does not have a ref to compare it to. useClickOutside(), should be passed a ref that resolves to a DOM node"),s.current=!h||Oc(c)||!Pc(c)||!!ms(h,c.target)||o.current,o.current=!1},[e]),a=Vt(c=>{const h=Qn(e);h&&ms(h,c.target)?o.current=!0:o.current=!1}),l=Vt(c=>{s.current||t(c)});A.useEffect(()=>{var c,h;if(n||e==null)return;const u=Va(Qn(e)),d=u.defaultView||window;let f=(c=d.event)!=null?c:(h=d.parent)==null?void 0:h.event,g=null;Es[i]&&(g=un(u,Es[i],a,!0));const m=un(u,i,r,!0),p=un(u,i,x=>{if(x===f){f=void 0;return}l(x)});let b=[];return"ontouchstart"in u.documentElement&&(b=[].slice.call(u.body.children).map(x=>un(x,"mousemove",As))),()=>{g==null||g(),m(),p(),b.forEach(x=>x())}},[e,n,i,r,a,l])}function Ac(e){const t={};return Array.isArray(e)?(e==null||e.forEach(n=>{t[n.name]=n}),t):e||t}function Ec(e={}){return Array.isArray(e)?e:Object.keys(e).map(t=>(e[t].name=t,e[t]))}function Tc({enabled:e,enableEvents:t,placement:n,flip:i,offset:s,fixed:o,containerPadding:r,arrowElement:a,popperConfig:l={}}){var c,h,u,d,f;const g=Ac(l.modifiers);return Object.assign({},l,{placement:n,enabled:e,strategy:o?"fixed":l.strategy,modifiers:Ec(Object.assign({},g,{eventListeners:{enabled:t,options:(c=g.eventListeners)==null?void 0:c.options},preventOverflow:Object.assign({},g.preventOverflow,{options:r?Object.assign({padding:r},(h=g.preventOverflow)==null?void 0:h.options):(u=g.preventOverflow)==null?void 0:u.options}),offset:{options:Object.assign({offset:s},(d=g.offset)==null?void 0:d.options)},arrow:Object.assign({},g.arrow,{enabled:!!a,options:Object.assign({},(f=g.arrow)==null?void 0:f.options,{element:a})}),flip:Object.assign({enabled:!!i},g.flip)}))})}const Rc=["children","usePopper"];function Lc(e,t){if(e==null)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(t.indexOf(i)>=0)continue;n[i]=e[i]}return n}const Fc=()=>{};function Sr(e={}){const t=A.useContext(Yn),[n,i]=ul(),s=A.useRef(!1),{flip:o,offset:r,rootCloseEvent:a,fixed:l=!1,placement:c,popperConfig:h={},enableEventListeners:u=!0,usePopper:d=!!t}=e,f=(t==null?void 0:t.show)==null?!!e.show:t.show;f&&!s.current&&(s.current=!0);const g=w=>{t==null||t.toggle(!1,w)},{placement:m,setMenu:p,menuElement:b,toggleElement:x}=t||{},v=Cc(x,b,Tc({placement:c||m||"bottom-start",enabled:d,enableEvents:u??f,offset:r,flip:o,fixed:l,arrowElement:n,popperConfig:h})),_=Object.assign({ref:p||Fc,"aria-labelledby":x==null?void 0:x.id},v.attributes.popper,{style:v.styles.popper}),y={show:f,placement:m,hasShown:s.current,toggle:t==null?void 0:t.toggle,popper:d?v:null,arrowProps:d?Object.assign({ref:i},v.attributes.arrow,{style:v.styles.arrow}):{}};return Dc(b,g,{clickTrigger:a,disabled:!f}),[_,y]}function kr(e){let{children:t,usePopper:n=!0}=e,i=Lc(e,Rc);const[s,o]=Sr(Object.assign({},i,{usePopper:n}));return M.jsx(M.Fragment,{children:t(s,o)})}kr.displayName="DropdownMenu";const Ni={prefix:String(Math.round(Math.random()*1e10)),current:0},Mr=ue.createContext(Ni),Ic=ue.createContext(!1);let jc=!!(typeof window<"u"&&window.document&&window.document.createElement),ti=new WeakMap;function $c(e=!1){let t=A.useContext(Mr),n=A.useRef(null);if(n.current===null&&!e){var i,s;let o=(s=ue.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)===null||s===void 0||(i=s.ReactCurrentOwner)===null||i===void 0?void 0:i.current;if(o){let r=ti.get(o);r==null?ti.set(o,{id:t.current,state:o.memoizedState}):o.memoizedState!==r.state&&(t.current=r.id,ti.delete(o))}n.current=++t.current}return n.current}function zc(e){let t=A.useContext(Mr);t===Ni&&!jc&&console.warn("When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.");let n=$c(!!e),i=`react-aria${t.prefix}`;return e||`${i}-${n}`}function Nc(e){let t=ue.useId(),[n]=A.useState(Yc()),i=n?"react-aria":`react-aria${Ni.prefix}`;return e||`${i}-${t}`}const Bc=typeof ue.useId=="function"?Nc:zc;function Hc(){return!1}function Wc(){return!0}function Vc(e){return()=>{}}function Yc(){return typeof ue.useSyncExternalStore=="function"?ue.useSyncExternalStore(Vc,Hc,Wc):A.useContext(Ic)}const Cr=e=>{var t;return((t=e.getAttribute("role"))==null?void 0:t.toLowerCase())==="menu"},Ts=()=>{};function Pr(){const e=Bc(),{show:t=!1,toggle:n=Ts,setToggle:i,menuElement:s}=A.useContext(Yn)||{},o=A.useCallback(a=>{n(!t,a)},[t,n]),r={id:e,ref:i||Ts,onClick:o,"aria-expanded":!!t};return s&&Cr(s)&&(r["aria-haspopup"]=!0),[r,{show:t,toggle:n}]}function Or({children:e}){const[t,n]=Pr();return M.jsx(M.Fragment,{children:e(t,n)})}Or.displayName="DropdownToggle";const _i=A.createContext(null),Rs=(e,t=null)=>e!=null?String(e):t||null,Dr=A.createContext(null);Dr.displayName="NavContext";const Uc=["eventKey","disabled","onClick","active","as"];function Xc(e,t){if(e==null)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(t.indexOf(i)>=0)continue;n[i]=e[i]}return n}function Ar({key:e,href:t,active:n,disabled:i,onClick:s}){const o=A.useContext(_i),r=A.useContext(Dr),{activeKey:a}=r||{},l=Rs(e,t),c=n==null&&e!=null?Rs(a)===l:n;return[{onClick:Vt(u=>{i||(s==null||s(u),o&&!u.isPropagationStopped()&&o(l,u))}),"aria-disabled":i||void 0,"aria-selected":c,[ar("dropdown-item")]:""},{isActive:c}]}const Er=A.forwardRef((e,t)=>{let{eventKey:n,disabled:i,onClick:s,active:o,as:r=Ya}=e,a=Xc(e,Uc);const[l]=Ar({key:n,href:a.href,disabled:i,onClick:s,active:o});return M.jsx(r,Object.assign({},a,{ref:t},l))});Er.displayName="DropdownItem";function Ls(){const e=bl(),t=A.useRef(null),n=A.useCallback(i=>{t.current=i,e()},[e]);return[t,n]}function an({defaultShow:e,show:t,onSelect:n,onToggle:i,itemSelector:s=`* [${ar("dropdown-item")}]`,focusFirstItemOnShow:o,placement:r="bottom-start",children:a}){const l=Ua(),[c,h]=ml(t,e,i),[u,d]=Ls(),f=u.current,[g,m]=Ls(),p=g.current,b=Xa(c),x=A.useRef(null),v=A.useRef(!1),_=A.useContext(_i),y=A.useCallback((C,O,E=O==null?void 0:O.type)=>{h(C,{originalEvent:O,source:E})},[h]),w=Vt((C,O)=>{n==null||n(C,O),y(!1,O,"select"),O.isPropagationStopped()||_==null||_(C,O)}),k=A.useMemo(()=>({toggle:y,placement:r,show:c,menuElement:f,toggleElement:p,setMenu:d,setToggle:m}),[y,r,c,f,p,d,m]);f&&b&&!c&&(v.current=f.contains(f.ownerDocument.activeElement));const S=Vt(()=>{p&&p.focus&&p.focus()}),P=Vt(()=>{const C=x.current;let O=o;if(O==null&&(O=u.current&&Cr(u.current)?"keyboard":!1),O===!1||O==="keyboard"&&!/^key.+$/.test(C))return;const E=bs(u.current,s)[0];E&&E.focus&&E.focus()});A.useEffect(()=>{c?P():v.current&&(v.current=!1,S())},[c,v,S,P]),A.useEffect(()=>{x.current=null});const D=(C,O)=>{if(!u.current)return null;const E=bs(u.current,s);let F=E.indexOf(C)+O;return F=Math.max(0,Math.min(F,E.length)),E[F]};return dl(A.useCallback(()=>l.document,[l]),"keydown",C=>{var O,E;const{key:F}=C,R=C.target,L=(O=u.current)==null?void 0:O.contains(R),I=(E=g.current)==null?void 0:E.contains(R);if(/input|textarea/i.test(R.tagName)&&(F===" "||F!=="Escape"&&L||F==="Escape"&&R.type==="search")||!L&&!I||F==="Tab"&&(!u.current||!c))return;x.current=C.type;const $={originalEvent:C,source:C.type};switch(F){case"ArrowUp":{const N=D(R,-1);N&&N.focus&&N.focus(),C.preventDefault();return}case"ArrowDown":if(C.preventDefault(),!c)h(!0,$);else{const N=D(R,1);N&&N.focus&&N.focus()}return;case"Tab":Ka(R.ownerDocument,"keyup",N=>{var tt;(N.key==="Tab"&&!N.target||!((tt=u.current)!=null&&tt.contains(N.target)))&&h(!1,$)},{once:!0});break;case"Escape":F==="Escape"&&(C.preventDefault(),C.stopPropagation()),h(!1,$);break}}),M.jsx(_i.Provider,{value:w,children:M.jsx(Yn.Provider,{value:k,children:a})})}an.displayName="Dropdown";an.Menu=kr;an.Toggle=Or;an.Item=Er;const Bi=A.createContext({});Bi.displayName="DropdownContext";const Tr=A.forwardRef(({className:e,bsPrefix:t,as:n="hr",role:i="separator",...s},o)=>(t=Kt(t,"dropdown-divider"),M.jsx(n,{ref:o,className:qt(e,t),role:i,...s})));Tr.displayName="DropdownDivider";const Rr=A.forwardRef(({className:e,bsPrefix:t,as:n="div",role:i="heading",...s},o)=>(t=Kt(t,"dropdown-header"),M.jsx(n,{ref:o,className:qt(e,t),role:i,...s})));Rr.displayName="DropdownHeader";const Lr=A.forwardRef(({bsPrefix:e,className:t,eventKey:n,disabled:i=!1,onClick:s,active:o,as:r=fr,...a},l)=>{const c=Kt(e,"dropdown-item"),[h,u]=Ar({key:n,href:a.href,disabled:i,onClick:s,active:o});return M.jsx(r,{...a,...h,ref:l,className:qt(t,c,u.isActive&&"active",i&&"disabled")})});Lr.displayName="DropdownItem";const Fr=A.forwardRef(({className:e,bsPrefix:t,as:n="span",...i},s)=>(t=Kt(t,"dropdown-item-text"),M.jsx(n,{ref:s,className:qt(e,t),...i})));Fr.displayName="DropdownItemText";const Kc=typeof global<"u"&&global.navigator&&global.navigator.product==="ReactNative",qc=typeof document<"u",Gc=qc||Kc?A.useLayoutEffect:A.useEffect,Ir=A.createContext(null);Ir.displayName="NavbarContext";function jr(e,t){return e}function $r(e,t,n){const i=n?"top-end":"top-start",s=n?"top-start":"top-end",o=n?"bottom-end":"bottom-start",r=n?"bottom-start":"bottom-end",a=n?"right-start":"left-start",l=n?"right-end":"left-end",c=n?"left-start":"right-start",h=n?"left-end":"right-end";let u=e?r:o;return t==="up"?u=e?s:i:t==="end"?u=e?h:c:t==="start"?u=e?l:a:t==="down-centered"?u="bottom":t==="up-centered"&&(u="top"),u}const zr=A.forwardRef(({bsPrefix:e,className:t,align:n,rootCloseEvent:i,flip:s=!0,show:o,renderOnMount:r,as:a="div",popperConfig:l,variant:c,...h},u)=>{let d=!1;const f=A.useContext(Ir),g=Kt(e,"dropdown-menu"),{align:m,drop:p,isRTL:b}=A.useContext(Bi);n=n||m;const x=A.useContext(ur),v=[];if(n)if(typeof n=="object"){const C=Object.keys(n);if(C.length){const O=C[0],E=n[O];d=E==="start",v.push(`${g}-${O}-${E}`)}}else n==="end"&&(d=!0);const _=$r(d,p,b),[y,{hasShown:w,popper:k,show:S,toggle:P}]=Sr({flip:s,rootCloseEvent:i,show:o,usePopper:!f&&v.length===0,offset:[0,2],popperConfig:l,placement:_});if(y.ref=lr(jr(u),y.ref),Gc(()=>{S&&(k==null||k.update())},[S]),!w&&!r&&!x)return null;typeof a!="string"&&(y.show=S,y.close=()=>P==null?void 0:P(!1),y.align=n);let D=h.style;return k!=null&&k.placement&&(D={...h.style,...y.style},h["x-placement"]=k.placement),M.jsx(a,{...h,...y,style:D,...(v.length||f)&&{"data-bs-popper":"static"},className:qt(t,g,S&&"show",d&&`${g}-end`,c&&`${g}-${c}`,...v)})});zr.displayName="DropdownMenu";const Nr=A.forwardRef(({bsPrefix:e,split:t,className:n,childBsPrefix:i,as:s=Ft,...o},r)=>{const a=Kt(e,"dropdown-toggle"),l=A.useContext(Yn);i!==void 0&&(o.bsPrefix=i);const[c]=Pr();return c.ref=lr(c.ref,jr(r)),M.jsx(s,{className:qt(n,a,t&&`${a}-split`,(l==null?void 0:l.show)&&"show"),...c,...o})});Nr.displayName="DropdownToggle";const Br=A.forwardRef((e,t)=>{const{bsPrefix:n,drop:i="down",show:s,className:o,align:r="start",onSelect:a,onToggle:l,focusFirstItemOnShow:c,as:h="div",navbar:u,autoClose:d=!0,...f}=hl(e,{show:"onToggle"}),g=A.useContext(ur),m=Kt(n,"dropdown"),p=qa(),b=k=>d===!1?k==="click":d==="inside"?k!=="rootClose":d==="outside"?k!=="select":!0,x=Ga((k,S)=>{var P;!((P=S.originalEvent)==null||(P=P.target)==null)&&P.classList.contains("dropdown-toggle")&&S.source==="mousedown"||(S.originalEvent.currentTarget===document&&(S.source!=="keydown"||S.originalEvent.key==="Escape")&&(S.source="rootClose"),b(S.source)&&(l==null||l(k,S)))}),_=$r(r==="end",i,p),y=A.useMemo(()=>({align:r,drop:i,isRTL:p}),[r,i,p]),w={down:m,"down-centered":`${m}-center`,up:"dropup","up-centered":"dropup-center dropup",end:"dropend",start:"dropstart"};return M.jsx(Bi.Provider,{value:y,children:M.jsx(an,{placement:_,show:s,onSelect:a,onToggle:x,focusFirstItemOnShow:c,itemSelector:`.${m}-item:not(.disabled):not(:disabled)`,children:g?f.children:M.jsx(h,{...f,ref:t,className:qt(o,s&&"show",w[i])})})})});Br.displayName="Dropdown";const ei=Object.assign(Br,{Toggle:Nr,Menu:zr,Item:Lr,ItemText:Fr,Divider:Tr,Header:Rr});/*! +var za=Object.defineProperty;var Na=(e,t,n)=>t in e?za(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var T=(e,t,n)=>Na(e,typeof t!="symbol"?t+"":t,n);import{r as A,u as Vt,g as Ba,j as M,h as Kt,i as qt,k as Ha,w as Wa,l as ms,o as Va,m as un,f as ue,n as ar,B as Ya,p as Ua,q as Xa,s as bs,v as Ka,x as lr,y as Ft,z as qa,A as Ga,c as wt,D as Ja,S as G,E as cr,R as se,O as Za,P as Qa,G as tl,N as el,H as nl,I as xe,J as hr,K as ge,M as il,Q as sl,T as ol,L as rl,V as al,C as xs,W as Jn,X as ll}from"./index.js";import{S as sn}from"./SideBar-CkoMfgfL.js";import{u as Zn,w as cl}from"./xlsx-BHRztzV8.js";import{c as ur,F as dr}from"./index-DIBz8YrO.js";import{u as hl}from"./hook-GVc5uk5F.js";function ul(){return A.useState(null)}function dl(e,t,n,i=!1){const s=Vt(n);A.useEffect(()=>{const o=typeof e=="function"?e():e;return o.addEventListener(t,s,i),()=>o.removeEventListener(t,s,i)},[e])}const fl=["onKeyDown"];function pl(e,t){if(e==null)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(t.indexOf(i)>=0)continue;n[i]=e[i]}return n}function gl(e){return!e||e.trim()==="#"}const fr=A.forwardRef((e,t)=>{let{onKeyDown:n}=e,i=pl(e,fl);const[s]=Ba(Object.assign({tagName:"a"},i)),o=Vt(r=>{s.onKeyDown(r),n==null||n(r)});return gl(i.href)||i.role==="button"?M.jsx("a",Object.assign({ref:t},i,s,{onKeyDown:o})):M.jsx("a",Object.assign({ref:t},i,{onKeyDown:n}))});fr.displayName="Anchor";const Ti=A.forwardRef(({bsPrefix:e,className:t,role:n="toolbar",...i},s)=>{const o=Kt(e,"btn-toolbar");return M.jsx("div",{...i,ref:s,className:qt(t,o),role:n})});Ti.displayName="ButtonToolbar";function ml(e,t,n){const i=A.useRef(e!==void 0),[s,o]=A.useState(t),r=e!==void 0,a=i.current;return i.current=r,!r&&a&&s!==t&&o(t),[r?e:s,A.useCallback((...l)=>{const[c,...h]=l;let u=n==null?void 0:n(c,...h);return o(c),u},[n])]}function bl(){const[,e]=A.useReducer(t=>t+1,0);return e}const Yn=A.createContext(null);var ys=Object.prototype.hasOwnProperty;function vs(e,t,n){for(n of e.keys())if(Be(n,t))return n}function Be(e,t){var n,i,s;if(e===t)return!0;if(e&&t&&(n=e.constructor)===t.constructor){if(n===Date)return e.getTime()===t.getTime();if(n===RegExp)return e.toString()===t.toString();if(n===Array){if((i=e.length)===t.length)for(;i--&&Be(e[i],t[i]););return i===-1}if(n===Set){if(e.size!==t.size)return!1;for(i of e)if(s=i,s&&typeof s=="object"&&(s=vs(t,s),!s)||!t.has(s))return!1;return!0}if(n===Map){if(e.size!==t.size)return!1;for(i of e)if(s=i[0],s&&typeof s=="object"&&(s=vs(t,s),!s)||!Be(i[1],t.get(s)))return!1;return!0}if(n===ArrayBuffer)e=new Uint8Array(e),t=new Uint8Array(t);else if(n===DataView){if((i=e.byteLength)===t.byteLength)for(;i--&&e.getInt8(i)===t.getInt8(i););return i===-1}if(ArrayBuffer.isView(e)){if((i=e.byteLength)===t.byteLength)for(;i--&&e[i]===t[i];);return i===-1}if(!n||typeof e=="object"){i=0;for(n in e)if(ys.call(e,n)&&++i&&!ys.call(t,n)||!(n in t)||!Be(e[n],t[n]))return!1;return Object.keys(t).length===i}}return e!==e&&t!==t}function xl(e){const t=Ha();return[e[0],A.useCallback(n=>{if(t())return e[1](n)},[t,e[1]])]}var ut="top",xt="bottom",yt="right",dt="left",Ri="auto",on=[ut,xt,yt,dt],we="start",Ke="end",yl="clippingParents",pr="viewport",Te="popper",vl="reference",_s=on.reduce(function(e,t){return e.concat([t+"-"+we,t+"-"+Ke])},[]),gr=[].concat(on,[Ri]).reduce(function(e,t){return e.concat([t,t+"-"+we,t+"-"+Ke])},[]),_l="beforeRead",wl="read",Sl="afterRead",kl="beforeMain",Ml="main",Cl="afterMain",Pl="beforeWrite",Ol="write",Dl="afterWrite",Al=[_l,wl,Sl,kl,Ml,Cl,Pl,Ol,Dl];function Pt(e){return e.split("-")[0]}function gt(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function de(e){var t=gt(e).Element;return e instanceof t||e instanceof Element}function Ot(e){var t=gt(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Li(e){if(typeof ShadowRoot>"u")return!1;var t=gt(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}var ce=Math.max,Ln=Math.min,Se=Math.round;function yi(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function mr(){return!/^((?!chrome|android).)*safari/i.test(yi())}function ke(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!1);var i=e.getBoundingClientRect(),s=1,o=1;t&&Ot(e)&&(s=e.offsetWidth>0&&Se(i.width)/e.offsetWidth||1,o=e.offsetHeight>0&&Se(i.height)/e.offsetHeight||1);var r=de(e)?gt(e):window,a=r.visualViewport,l=!mr()&&n,c=(i.left+(l&&a?a.offsetLeft:0))/s,h=(i.top+(l&&a?a.offsetTop:0))/o,u=i.width/s,d=i.height/o;return{width:u,height:d,top:h,right:c+u,bottom:h+d,left:c,x:c,y:h}}function Fi(e){var t=ke(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function br(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Li(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ut(e){return e?(e.nodeName||"").toLowerCase():null}function jt(e){return gt(e).getComputedStyle(e)}function El(e){return["table","td","th"].indexOf(Ut(e))>=0}function Gt(e){return((de(e)?e.ownerDocument:e.document)||window.document).documentElement}function Un(e){return Ut(e)==="html"?e:e.assignedSlot||e.parentNode||(Li(e)?e.host:null)||Gt(e)}function ws(e){return!Ot(e)||jt(e).position==="fixed"?null:e.offsetParent}function Tl(e){var t=/firefox/i.test(yi()),n=/Trident/i.test(yi());if(n&&Ot(e)){var i=jt(e);if(i.position==="fixed")return null}var s=Un(e);for(Li(s)&&(s=s.host);Ot(s)&&["html","body"].indexOf(Ut(s))<0;){var o=jt(s);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||t&&o.willChange==="filter"||t&&o.filter&&o.filter!=="none")return s;s=s.parentNode}return null}function rn(e){for(var t=gt(e),n=ws(e);n&&El(n)&&jt(n).position==="static";)n=ws(n);return n&&(Ut(n)==="html"||Ut(n)==="body"&&jt(n).position==="static")?t:n||Tl(e)||t}function Ii(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function He(e,t,n){return ce(e,Ln(t,n))}function Rl(e,t,n){var i=He(e,t,n);return i>n?n:i}function xr(){return{top:0,right:0,bottom:0,left:0}}function yr(e){return Object.assign({},xr(),e)}function vr(e,t){return t.reduce(function(n,i){return n[i]=e,n},{})}var Ll=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,yr(typeof t!="number"?t:vr(t,on))};function Fl(e){var t,n=e.state,i=e.name,s=e.options,o=n.elements.arrow,r=n.modifiersData.popperOffsets,a=Pt(n.placement),l=Ii(a),c=[dt,yt].indexOf(a)>=0,h=c?"height":"width";if(!(!o||!r)){var u=Ll(s.padding,n),d=Fi(o),f=l==="y"?ut:dt,g=l==="y"?xt:yt,m=n.rects.reference[h]+n.rects.reference[l]-r[l]-n.rects.popper[h],p=r[l]-n.rects.reference[l],b=rn(o),x=b?l==="y"?b.clientHeight||0:b.clientWidth||0:0,v=m/2-p/2,_=u[f],y=x-d[h]-u[g],w=x/2-d[h]/2+v,k=He(_,w,y),S=l;n.modifiersData[i]=(t={},t[S]=k,t.centerOffset=k-w,t)}}function Il(e){var t=e.state,n=e.options,i=n.element,s=i===void 0?"[data-popper-arrow]":i;s!=null&&(typeof s=="string"&&(s=t.elements.popper.querySelector(s),!s)||br(t.elements.popper,s)&&(t.elements.arrow=s))}const jl={name:"arrow",enabled:!0,phase:"main",fn:Fl,effect:Il,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Me(e){return e.split("-")[1]}var $l={top:"auto",right:"auto",bottom:"auto",left:"auto"};function zl(e,t){var n=e.x,i=e.y,s=t.devicePixelRatio||1;return{x:Se(n*s)/s||0,y:Se(i*s)/s||0}}function Ss(e){var t,n=e.popper,i=e.popperRect,s=e.placement,o=e.variation,r=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,h=e.roundOffsets,u=e.isFixed,d=r.x,f=d===void 0?0:d,g=r.y,m=g===void 0?0:g,p=typeof h=="function"?h({x:f,y:m}):{x:f,y:m};f=p.x,m=p.y;var b=r.hasOwnProperty("x"),x=r.hasOwnProperty("y"),v=dt,_=ut,y=window;if(c){var w=rn(n),k="clientHeight",S="clientWidth";if(w===gt(n)&&(w=Gt(n),jt(w).position!=="static"&&a==="absolute"&&(k="scrollHeight",S="scrollWidth")),w=w,s===ut||(s===dt||s===yt)&&o===Ke){_=xt;var P=u&&w===y&&y.visualViewport?y.visualViewport.height:w[k];m-=P-i.height,m*=l?1:-1}if(s===dt||(s===ut||s===xt)&&o===Ke){v=yt;var D=u&&w===y&&y.visualViewport?y.visualViewport.width:w[S];f-=D-i.width,f*=l?1:-1}}var C=Object.assign({position:a},c&&$l),O=h===!0?zl({x:f,y:m},gt(n)):{x:f,y:m};if(f=O.x,m=O.y,l){var E;return Object.assign({},C,(E={},E[_]=x?"0":"",E[v]=b?"0":"",E.transform=(y.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",E))}return Object.assign({},C,(t={},t[_]=x?m+"px":"",t[v]=b?f+"px":"",t.transform="",t))}function Nl(e){var t=e.state,n=e.options,i=n.gpuAcceleration,s=i===void 0?!0:i,o=n.adaptive,r=o===void 0?!0:o,a=n.roundOffsets,l=a===void 0?!0:a,c={placement:Pt(t.placement),variation:Me(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:s,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Ss(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:r,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ss(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const Bl={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Nl,data:{}};var dn={passive:!0};function Hl(e){var t=e.state,n=e.instance,i=e.options,s=i.scroll,o=s===void 0?!0:s,r=i.resize,a=r===void 0?!0:r,l=gt(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach(function(h){h.addEventListener("scroll",n.update,dn)}),a&&l.addEventListener("resize",n.update,dn),function(){o&&c.forEach(function(h){h.removeEventListener("scroll",n.update,dn)}),a&&l.removeEventListener("resize",n.update,dn)}}const Wl={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Hl,data:{}};var Vl={left:"right",right:"left",bottom:"top",top:"bottom"};function En(e){return e.replace(/left|right|bottom|top/g,function(t){return Vl[t]})}var Yl={start:"end",end:"start"};function ks(e){return e.replace(/start|end/g,function(t){return Yl[t]})}function ji(e){var t=gt(e),n=t.pageXOffset,i=t.pageYOffset;return{scrollLeft:n,scrollTop:i}}function $i(e){return ke(Gt(e)).left+ji(e).scrollLeft}function Ul(e,t){var n=gt(e),i=Gt(e),s=n.visualViewport,o=i.clientWidth,r=i.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=mr();(c||!c&&t==="fixed")&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+$i(e),y:l}}function Xl(e){var t,n=Gt(e),i=ji(e),s=(t=e.ownerDocument)==null?void 0:t.body,o=ce(n.scrollWidth,n.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ce(n.scrollHeight,n.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-i.scrollLeft+$i(e),l=-i.scrollTop;return jt(s||n).direction==="rtl"&&(a+=ce(n.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}function zi(e){var t=jt(e),n=t.overflow,i=t.overflowX,s=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+s+i)}function _r(e){return["html","body","#document"].indexOf(Ut(e))>=0?e.ownerDocument.body:Ot(e)&&zi(e)?e:_r(Un(e))}function We(e,t){var n;t===void 0&&(t=[]);var i=_r(e),s=i===((n=e.ownerDocument)==null?void 0:n.body),o=gt(i),r=s?[o].concat(o.visualViewport||[],zi(i)?i:[]):i,a=t.concat(r);return s?a:a.concat(We(Un(r)))}function vi(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Kl(e,t){var n=ke(e,!1,t==="fixed");return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}function Ms(e,t,n){return t===pr?vi(Ul(e,n)):de(t)?Kl(t,n):vi(Xl(Gt(e)))}function ql(e){var t=We(Un(e)),n=["absolute","fixed"].indexOf(jt(e).position)>=0,i=n&&Ot(e)?rn(e):e;return de(i)?t.filter(function(s){return de(s)&&br(s,i)&&Ut(s)!=="body"}):[]}function Gl(e,t,n,i){var s=t==="clippingParents"?ql(e):[].concat(t),o=[].concat(s,[n]),r=o[0],a=o.reduce(function(l,c){var h=Ms(e,c,i);return l.top=ce(h.top,l.top),l.right=Ln(h.right,l.right),l.bottom=Ln(h.bottom,l.bottom),l.left=ce(h.left,l.left),l},Ms(e,r,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function wr(e){var t=e.reference,n=e.element,i=e.placement,s=i?Pt(i):null,o=i?Me(i):null,r=t.x+t.width/2-n.width/2,a=t.y+t.height/2-n.height/2,l;switch(s){case ut:l={x:r,y:t.y-n.height};break;case xt:l={x:r,y:t.y+t.height};break;case yt:l={x:t.x+t.width,y:a};break;case dt:l={x:t.x-n.width,y:a};break;default:l={x:t.x,y:t.y}}var c=s?Ii(s):null;if(c!=null){var h=c==="y"?"height":"width";switch(o){case we:l[c]=l[c]-(t[h]/2-n[h]/2);break;case Ke:l[c]=l[c]+(t[h]/2-n[h]/2);break}}return l}function qe(e,t){t===void 0&&(t={});var n=t,i=n.placement,s=i===void 0?e.placement:i,o=n.strategy,r=o===void 0?e.strategy:o,a=n.boundary,l=a===void 0?yl:a,c=n.rootBoundary,h=c===void 0?pr:c,u=n.elementContext,d=u===void 0?Te:u,f=n.altBoundary,g=f===void 0?!1:f,m=n.padding,p=m===void 0?0:m,b=yr(typeof p!="number"?p:vr(p,on)),x=d===Te?vl:Te,v=e.rects.popper,_=e.elements[g?x:d],y=Gl(de(_)?_:_.contextElement||Gt(e.elements.popper),l,h,r),w=ke(e.elements.reference),k=wr({reference:w,element:v,strategy:"absolute",placement:s}),S=vi(Object.assign({},v,k)),P=d===Te?S:w,D={top:y.top-P.top+b.top,bottom:P.bottom-y.bottom+b.bottom,left:y.left-P.left+b.left,right:P.right-y.right+b.right},C=e.modifiersData.offset;if(d===Te&&C){var O=C[s];Object.keys(D).forEach(function(E){var F=[yt,xt].indexOf(E)>=0?1:-1,R=[ut,xt].indexOf(E)>=0?"y":"x";D[E]+=O[R]*F})}return D}function Jl(e,t){t===void 0&&(t={});var n=t,i=n.placement,s=n.boundary,o=n.rootBoundary,r=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=l===void 0?gr:l,h=Me(i),u=h?a?_s:_s.filter(function(g){return Me(g)===h}):on,d=u.filter(function(g){return c.indexOf(g)>=0});d.length===0&&(d=u);var f=d.reduce(function(g,m){return g[m]=qe(e,{placement:m,boundary:s,rootBoundary:o,padding:r})[Pt(m)],g},{});return Object.keys(f).sort(function(g,m){return f[g]-f[m]})}function Zl(e){if(Pt(e)===Ri)return[];var t=En(e);return[ks(e),t,ks(t)]}function Ql(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var s=n.mainAxis,o=s===void 0?!0:s,r=n.altAxis,a=r===void 0?!0:r,l=n.fallbackPlacements,c=n.padding,h=n.boundary,u=n.rootBoundary,d=n.altBoundary,f=n.flipVariations,g=f===void 0?!0:f,m=n.allowedAutoPlacements,p=t.options.placement,b=Pt(p),x=b===p,v=l||(x||!g?[En(p)]:Zl(p)),_=[p].concat(v).reduce(function(U,X){return U.concat(Pt(X)===Ri?Jl(t,{placement:X,boundary:h,rootBoundary:u,padding:c,flipVariations:g,allowedAutoPlacements:m}):X)},[]),y=t.rects.reference,w=t.rects.popper,k=new Map,S=!0,P=_[0],D=0;D<_.length;D++){var C=_[D],O=Pt(C),E=Me(C)===we,F=[ut,xt].indexOf(O)>=0,R=F?"width":"height",L=qe(t,{placement:C,boundary:h,rootBoundary:u,altBoundary:d,padding:c}),I=F?E?yt:dt:E?xt:ut;y[R]>w[R]&&(I=En(I));var Y=En(I),$=[];if(o&&$.push(L[O]<=0),a&&$.push(L[I]<=0,L[Y]<=0),$.every(function(U){return U})){P=C,S=!1;break}k.set(C,$)}if(S)for(var N=g?3:1,tt=function(X){var q=_.find(function(At){var B=k.get(At);if(B)return B.slice(0,X).every(function(et){return et})});if(q)return P=q,"break"},Q=N;Q>0;Q--){var nt=tt(Q);if(nt==="break")break}t.placement!==P&&(t.modifiersData[i]._skip=!0,t.placement=P,t.reset=!0)}}const tc={name:"flip",enabled:!0,phase:"main",fn:Ql,requiresIfExists:["offset"],data:{_skip:!1}};function Cs(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Ps(e){return[ut,yt,xt,dt].some(function(t){return e[t]>=0})}function ec(e){var t=e.state,n=e.name,i=t.rects.reference,s=t.rects.popper,o=t.modifiersData.preventOverflow,r=qe(t,{elementContext:"reference"}),a=qe(t,{altBoundary:!0}),l=Cs(r,i),c=Cs(a,s,o),h=Ps(l),u=Ps(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":u})}const nc={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:ec};function ic(e,t,n){var i=Pt(e),s=[dt,ut].indexOf(i)>=0?-1:1,o=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[dt,yt].indexOf(i)>=0?{x:a,y:r}:{x:r,y:a}}function sc(e){var t=e.state,n=e.options,i=e.name,s=n.offset,o=s===void 0?[0,0]:s,r=gr.reduce(function(h,u){return h[u]=ic(u,t.rects,o),h},{}),a=r[t.placement],l=a.x,c=a.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=r}const oc={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:sc};function rc(e){var t=e.state,n=e.name;t.modifiersData[n]=wr({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}const ac={name:"popperOffsets",enabled:!0,phase:"read",fn:rc,data:{}};function lc(e){return e==="x"?"y":"x"}function cc(e){var t=e.state,n=e.options,i=e.name,s=n.mainAxis,o=s===void 0?!0:s,r=n.altAxis,a=r===void 0?!1:r,l=n.boundary,c=n.rootBoundary,h=n.altBoundary,u=n.padding,d=n.tether,f=d===void 0?!0:d,g=n.tetherOffset,m=g===void 0?0:g,p=qe(t,{boundary:l,rootBoundary:c,padding:u,altBoundary:h}),b=Pt(t.placement),x=Me(t.placement),v=!x,_=Ii(b),y=lc(_),w=t.modifiersData.popperOffsets,k=t.rects.reference,S=t.rects.popper,P=typeof m=="function"?m(Object.assign({},t.rects,{placement:t.placement})):m,D=typeof P=="number"?{mainAxis:P,altAxis:P}:Object.assign({mainAxis:0,altAxis:0},P),C=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,O={x:0,y:0};if(w){if(o){var E,F=_==="y"?ut:dt,R=_==="y"?xt:yt,L=_==="y"?"height":"width",I=w[_],Y=I+p[F],$=I-p[R],N=f?-S[L]/2:0,tt=x===we?k[L]:S[L],Q=x===we?-S[L]:-k[L],nt=t.elements.arrow,U=f&&nt?Fi(nt):{width:0,height:0},X=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:xr(),q=X[F],At=X[R],B=He(0,k[L],U[L]),et=v?k[L]/2-N-B-q-D.mainAxis:tt-B-q-D.mainAxis,Ee=v?-k[L]/2+N+B+At+D.mainAxis:Q+B+At+D.mainAxis,zt=t.elements.arrow&&rn(t.elements.arrow),Jt=zt?_==="y"?zt.clientTop||0:zt.clientLeft||0:0,Zt=(E=C==null?void 0:C[_])!=null?E:0,lt=I+et-Zt-Jt,Ia=I+Ee-Zt,ls=He(f?Ln(Y,lt):Y,I,f?ce($,Ia):$);w[_]=ls,O[_]=ls-I}if(a){var cs,ja=_==="x"?ut:dt,$a=_==="x"?xt:yt,Qt=w[y],hn=y==="y"?"height":"width",hs=Qt+p[ja],us=Qt-p[$a],Gn=[ut,dt].indexOf(b)!==-1,ds=(cs=C==null?void 0:C[y])!=null?cs:0,fs=Gn?hs:Qt-k[hn]-S[hn]-ds+D.altAxis,ps=Gn?Qt+k[hn]+S[hn]-ds-D.altAxis:us,gs=f&&Gn?Rl(fs,Qt,ps):He(f?fs:hs,Qt,f?ps:us);w[y]=gs,O[y]=gs-Qt}t.modifiersData[i]=O}}const hc={name:"preventOverflow",enabled:!0,phase:"main",fn:cc,requiresIfExists:["offset"]};function uc(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function dc(e){return e===gt(e)||!Ot(e)?ji(e):uc(e)}function fc(e){var t=e.getBoundingClientRect(),n=Se(t.width)/e.offsetWidth||1,i=Se(t.height)/e.offsetHeight||1;return n!==1||i!==1}function pc(e,t,n){n===void 0&&(n=!1);var i=Ot(t),s=Ot(t)&&fc(t),o=Gt(t),r=ke(e,s,n),a={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(i||!i&&!n)&&((Ut(t)!=="body"||zi(o))&&(a=dc(t)),Ot(t)?(l=ke(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=$i(o))),{x:r.left+a.scrollLeft-l.x,y:r.top+a.scrollTop-l.y,width:r.width,height:r.height}}function gc(e){var t=new Map,n=new Set,i=[];e.forEach(function(o){t.set(o.name,o)});function s(o){n.add(o.name);var r=[].concat(o.requires||[],o.requiresIfExists||[]);r.forEach(function(a){if(!n.has(a)){var l=t.get(a);l&&s(l)}}),i.push(o)}return e.forEach(function(o){n.has(o.name)||s(o)}),i}function mc(e){var t=gc(e);return Al.reduce(function(n,i){return n.concat(t.filter(function(s){return s.phase===i}))},[])}function bc(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function xc(e){var t=e.reduce(function(n,i){var s=n[i.name];return n[i.name]=s?Object.assign({},s,i,{options:Object.assign({},s.options,i.options),data:Object.assign({},s.data,i.data)}):i,n},{});return Object.keys(t).map(function(n){return t[n]})}var Os={placement:"bottom",modifiers:[],strategy:"absolute"};function Ds(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some(function(i){return!(i&&typeof i.getBoundingClientRect=="function")})}function yc(e){e===void 0&&(e={});var t=e,n=t.defaultModifiers,i=n===void 0?[]:n,s=t.defaultOptions,o=s===void 0?Os:s;return function(a,l,c){c===void 0&&(c=o);var h={placement:"bottom",orderedModifiers:[],options:Object.assign({},Os,o),modifiersData:{},elements:{reference:a,popper:l},attributes:{},styles:{}},u=[],d=!1,f={state:h,setOptions:function(b){var x=typeof b=="function"?b(h.options):b;m(),h.options=Object.assign({},o,h.options,x),h.scrollParents={reference:de(a)?We(a):a.contextElement?We(a.contextElement):[],popper:We(l)};var v=mc(xc([].concat(i,h.options.modifiers)));return h.orderedModifiers=v.filter(function(_){return _.enabled}),g(),f.update()},forceUpdate:function(){if(!d){var b=h.elements,x=b.reference,v=b.popper;if(Ds(x,v)){h.rects={reference:pc(x,rn(v),h.options.strategy==="fixed"),popper:Fi(v)},h.reset=!1,h.placement=h.options.placement,h.orderedModifiers.forEach(function(D){return h.modifiersData[D.name]=Object.assign({},D.data)});for(var _=0;_<h.orderedModifiers.length;_++){if(h.reset===!0){h.reset=!1,_=-1;continue}var y=h.orderedModifiers[_],w=y.fn,k=y.options,S=k===void 0?{}:k,P=y.name;typeof w=="function"&&(h=w({state:h,options:S,name:P,instance:f})||h)}}}},update:bc(function(){return new Promise(function(p){f.forceUpdate(),p(h)})}),destroy:function(){m(),d=!0}};if(!Ds(a,l))return f;f.setOptions(c).then(function(p){!d&&c.onFirstUpdate&&c.onFirstUpdate(p)});function g(){h.orderedModifiers.forEach(function(p){var b=p.name,x=p.options,v=x===void 0?{}:x,_=p.effect;if(typeof _=="function"){var y=_({state:h,name:b,instance:f,options:v}),w=function(){};u.push(y||w)}})}function m(){u.forEach(function(p){return p()}),u=[]}return f}}const vc=yc({defaultModifiers:[nc,ac,Bl,Wl,oc,tc,hc,jl]}),_c=["enabled","placement","strategy","modifiers"];function wc(e,t){if(e==null)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(t.indexOf(i)>=0)continue;n[i]=e[i]}return n}const Sc={name:"applyStyles",enabled:!1,phase:"afterWrite",fn:()=>{}},kc={name:"ariaDescribedBy",enabled:!0,phase:"afterWrite",effect:({state:e})=>()=>{const{reference:t,popper:n}=e.elements;if("removeAttribute"in t){const i=(t.getAttribute("aria-describedby")||"").split(",").filter(s=>s.trim()!==n.id);i.length?t.setAttribute("aria-describedby",i.join(",")):t.removeAttribute("aria-describedby")}},fn:({state:e})=>{var t;const{popper:n,reference:i}=e.elements,s=(t=n.getAttribute("role"))==null?void 0:t.toLowerCase();if(n.id&&s==="tooltip"&&"setAttribute"in i){const o=i.getAttribute("aria-describedby");if(o&&o.split(",").indexOf(n.id)!==-1)return;i.setAttribute("aria-describedby",o?`${o},${n.id}`:n.id)}}},Mc=[];function Cc(e,t,n={}){let{enabled:i=!0,placement:s="bottom",strategy:o="absolute",modifiers:r=Mc}=n,a=wc(n,_c);const l=A.useRef(r),c=A.useRef(),h=A.useCallback(()=>{var p;(p=c.current)==null||p.update()},[]),u=A.useCallback(()=>{var p;(p=c.current)==null||p.forceUpdate()},[]),[d,f]=xl(A.useState({placement:s,update:h,forceUpdate:u,attributes:{},styles:{popper:{},arrow:{}}})),g=A.useMemo(()=>({name:"updateStateModifier",enabled:!0,phase:"write",requires:["computeStyles"],fn:({state:p})=>{const b={},x={};Object.keys(p.elements).forEach(v=>{b[v]=p.styles[v],x[v]=p.attributes[v]}),f({state:p,styles:b,attributes:x,update:h,forceUpdate:u,placement:p.placement})}}),[h,u,f]),m=A.useMemo(()=>(Be(l.current,r)||(l.current=r),l.current),[r]);return A.useEffect(()=>{!c.current||!i||c.current.setOptions({placement:s,strategy:o,modifiers:[...m,g,Sc]})},[o,s,g,i,m]),A.useEffect(()=>{if(!(!i||e==null||t==null))return c.current=vc(e,t,Object.assign({},a,{placement:s,strategy:o,modifiers:[...m,kc,g]})),()=>{c.current!=null&&(c.current.destroy(),c.current=void 0,f(p=>Object.assign({},p,{attributes:{},styles:{popper:{}}})))}},[i,e,t]),d}const As=()=>{};function Pc(e){return e.button===0}function Oc(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}const Qn=e=>e&&("current"in e?e.current:e),Es={click:"mousedown",mouseup:"mousedown",pointerup:"pointerdown"};function Dc(e,t=As,{disabled:n,clickTrigger:i="click"}={}){const s=A.useRef(!1),o=A.useRef(!1),r=A.useCallback(c=>{const h=Qn(e);Wa(!!h,"ClickOutside captured a close event but does not have a ref to compare it to. useClickOutside(), should be passed a ref that resolves to a DOM node"),s.current=!h||Oc(c)||!Pc(c)||!!ms(h,c.target)||o.current,o.current=!1},[e]),a=Vt(c=>{const h=Qn(e);h&&ms(h,c.target)?o.current=!0:o.current=!1}),l=Vt(c=>{s.current||t(c)});A.useEffect(()=>{var c,h;if(n||e==null)return;const u=Va(Qn(e)),d=u.defaultView||window;let f=(c=d.event)!=null?c:(h=d.parent)==null?void 0:h.event,g=null;Es[i]&&(g=un(u,Es[i],a,!0));const m=un(u,i,r,!0),p=un(u,i,x=>{if(x===f){f=void 0;return}l(x)});let b=[];return"ontouchstart"in u.documentElement&&(b=[].slice.call(u.body.children).map(x=>un(x,"mousemove",As))),()=>{g==null||g(),m(),p(),b.forEach(x=>x())}},[e,n,i,r,a,l])}function Ac(e){const t={};return Array.isArray(e)?(e==null||e.forEach(n=>{t[n.name]=n}),t):e||t}function Ec(e={}){return Array.isArray(e)?e:Object.keys(e).map(t=>(e[t].name=t,e[t]))}function Tc({enabled:e,enableEvents:t,placement:n,flip:i,offset:s,fixed:o,containerPadding:r,arrowElement:a,popperConfig:l={}}){var c,h,u,d,f;const g=Ac(l.modifiers);return Object.assign({},l,{placement:n,enabled:e,strategy:o?"fixed":l.strategy,modifiers:Ec(Object.assign({},g,{eventListeners:{enabled:t,options:(c=g.eventListeners)==null?void 0:c.options},preventOverflow:Object.assign({},g.preventOverflow,{options:r?Object.assign({padding:r},(h=g.preventOverflow)==null?void 0:h.options):(u=g.preventOverflow)==null?void 0:u.options}),offset:{options:Object.assign({offset:s},(d=g.offset)==null?void 0:d.options)},arrow:Object.assign({},g.arrow,{enabled:!!a,options:Object.assign({},(f=g.arrow)==null?void 0:f.options,{element:a})}),flip:Object.assign({enabled:!!i},g.flip)}))})}const Rc=["children","usePopper"];function Lc(e,t){if(e==null)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(t.indexOf(i)>=0)continue;n[i]=e[i]}return n}const Fc=()=>{};function Sr(e={}){const t=A.useContext(Yn),[n,i]=ul(),s=A.useRef(!1),{flip:o,offset:r,rootCloseEvent:a,fixed:l=!1,placement:c,popperConfig:h={},enableEventListeners:u=!0,usePopper:d=!!t}=e,f=(t==null?void 0:t.show)==null?!!e.show:t.show;f&&!s.current&&(s.current=!0);const g=w=>{t==null||t.toggle(!1,w)},{placement:m,setMenu:p,menuElement:b,toggleElement:x}=t||{},v=Cc(x,b,Tc({placement:c||m||"bottom-start",enabled:d,enableEvents:u??f,offset:r,flip:o,fixed:l,arrowElement:n,popperConfig:h})),_=Object.assign({ref:p||Fc,"aria-labelledby":x==null?void 0:x.id},v.attributes.popper,{style:v.styles.popper}),y={show:f,placement:m,hasShown:s.current,toggle:t==null?void 0:t.toggle,popper:d?v:null,arrowProps:d?Object.assign({ref:i},v.attributes.arrow,{style:v.styles.arrow}):{}};return Dc(b,g,{clickTrigger:a,disabled:!f}),[_,y]}function kr(e){let{children:t,usePopper:n=!0}=e,i=Lc(e,Rc);const[s,o]=Sr(Object.assign({},i,{usePopper:n}));return M.jsx(M.Fragment,{children:t(s,o)})}kr.displayName="DropdownMenu";const Ni={prefix:String(Math.round(Math.random()*1e10)),current:0},Mr=ue.createContext(Ni),Ic=ue.createContext(!1);let jc=!!(typeof window<"u"&&window.document&&window.document.createElement),ti=new WeakMap;function $c(e=!1){let t=A.useContext(Mr),n=A.useRef(null);if(n.current===null&&!e){var i,s;let o=(s=ue.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED)===null||s===void 0||(i=s.ReactCurrentOwner)===null||i===void 0?void 0:i.current;if(o){let r=ti.get(o);r==null?ti.set(o,{id:t.current,state:o.memoizedState}):o.memoizedState!==r.state&&(t.current=r.id,ti.delete(o))}n.current=++t.current}return n.current}function zc(e){let t=A.useContext(Mr);t===Ni&&!jc&&console.warn("When server rendering, you must wrap your application in an <SSRProvider> to ensure consistent ids are generated between the client and server.");let n=$c(!!e),i=`react-aria${t.prefix}`;return e||`${i}-${n}`}function Nc(e){let t=ue.useId(),[n]=A.useState(Yc()),i=n?"react-aria":`react-aria${Ni.prefix}`;return e||`${i}-${t}`}const Bc=typeof ue.useId=="function"?Nc:zc;function Hc(){return!1}function Wc(){return!0}function Vc(e){return()=>{}}function Yc(){return typeof ue.useSyncExternalStore=="function"?ue.useSyncExternalStore(Vc,Hc,Wc):A.useContext(Ic)}const Cr=e=>{var t;return((t=e.getAttribute("role"))==null?void 0:t.toLowerCase())==="menu"},Ts=()=>{};function Pr(){const e=Bc(),{show:t=!1,toggle:n=Ts,setToggle:i,menuElement:s}=A.useContext(Yn)||{},o=A.useCallback(a=>{n(!t,a)},[t,n]),r={id:e,ref:i||Ts,onClick:o,"aria-expanded":!!t};return s&&Cr(s)&&(r["aria-haspopup"]=!0),[r,{show:t,toggle:n}]}function Or({children:e}){const[t,n]=Pr();return M.jsx(M.Fragment,{children:e(t,n)})}Or.displayName="DropdownToggle";const _i=A.createContext(null),Rs=(e,t=null)=>e!=null?String(e):t||null,Dr=A.createContext(null);Dr.displayName="NavContext";const Uc=["eventKey","disabled","onClick","active","as"];function Xc(e,t){if(e==null)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(t.indexOf(i)>=0)continue;n[i]=e[i]}return n}function Ar({key:e,href:t,active:n,disabled:i,onClick:s}){const o=A.useContext(_i),r=A.useContext(Dr),{activeKey:a}=r||{},l=Rs(e,t),c=n==null&&e!=null?Rs(a)===l:n;return[{onClick:Vt(u=>{i||(s==null||s(u),o&&!u.isPropagationStopped()&&o(l,u))}),"aria-disabled":i||void 0,"aria-selected":c,[ar("dropdown-item")]:""},{isActive:c}]}const Er=A.forwardRef((e,t)=>{let{eventKey:n,disabled:i,onClick:s,active:o,as:r=Ya}=e,a=Xc(e,Uc);const[l]=Ar({key:n,href:a.href,disabled:i,onClick:s,active:o});return M.jsx(r,Object.assign({},a,{ref:t},l))});Er.displayName="DropdownItem";function Ls(){const e=bl(),t=A.useRef(null),n=A.useCallback(i=>{t.current=i,e()},[e]);return[t,n]}function an({defaultShow:e,show:t,onSelect:n,onToggle:i,itemSelector:s=`* [${ar("dropdown-item")}]`,focusFirstItemOnShow:o,placement:r="bottom-start",children:a}){const l=Ua(),[c,h]=ml(t,e,i),[u,d]=Ls(),f=u.current,[g,m]=Ls(),p=g.current,b=Xa(c),x=A.useRef(null),v=A.useRef(!1),_=A.useContext(_i),y=A.useCallback((C,O,E=O==null?void 0:O.type)=>{h(C,{originalEvent:O,source:E})},[h]),w=Vt((C,O)=>{n==null||n(C,O),y(!1,O,"select"),O.isPropagationStopped()||_==null||_(C,O)}),k=A.useMemo(()=>({toggle:y,placement:r,show:c,menuElement:f,toggleElement:p,setMenu:d,setToggle:m}),[y,r,c,f,p,d,m]);f&&b&&!c&&(v.current=f.contains(f.ownerDocument.activeElement));const S=Vt(()=>{p&&p.focus&&p.focus()}),P=Vt(()=>{const C=x.current;let O=o;if(O==null&&(O=u.current&&Cr(u.current)?"keyboard":!1),O===!1||O==="keyboard"&&!/^key.+$/.test(C))return;const E=bs(u.current,s)[0];E&&E.focus&&E.focus()});A.useEffect(()=>{c?P():v.current&&(v.current=!1,S())},[c,v,S,P]),A.useEffect(()=>{x.current=null});const D=(C,O)=>{if(!u.current)return null;const E=bs(u.current,s);let F=E.indexOf(C)+O;return F=Math.max(0,Math.min(F,E.length)),E[F]};return dl(A.useCallback(()=>l.document,[l]),"keydown",C=>{var O,E;const{key:F}=C,R=C.target,L=(O=u.current)==null?void 0:O.contains(R),I=(E=g.current)==null?void 0:E.contains(R);if(/input|textarea/i.test(R.tagName)&&(F===" "||F!=="Escape"&&L||F==="Escape"&&R.type==="search")||!L&&!I||F==="Tab"&&(!u.current||!c))return;x.current=C.type;const $={originalEvent:C,source:C.type};switch(F){case"ArrowUp":{const N=D(R,-1);N&&N.focus&&N.focus(),C.preventDefault();return}case"ArrowDown":if(C.preventDefault(),!c)h(!0,$);else{const N=D(R,1);N&&N.focus&&N.focus()}return;case"Tab":Ka(R.ownerDocument,"keyup",N=>{var tt;(N.key==="Tab"&&!N.target||!((tt=u.current)!=null&&tt.contains(N.target)))&&h(!1,$)},{once:!0});break;case"Escape":F==="Escape"&&(C.preventDefault(),C.stopPropagation()),h(!1,$);break}}),M.jsx(_i.Provider,{value:w,children:M.jsx(Yn.Provider,{value:k,children:a})})}an.displayName="Dropdown";an.Menu=kr;an.Toggle=Or;an.Item=Er;const Bi=A.createContext({});Bi.displayName="DropdownContext";const Tr=A.forwardRef(({className:e,bsPrefix:t,as:n="hr",role:i="separator",...s},o)=>(t=Kt(t,"dropdown-divider"),M.jsx(n,{ref:o,className:qt(e,t),role:i,...s})));Tr.displayName="DropdownDivider";const Rr=A.forwardRef(({className:e,bsPrefix:t,as:n="div",role:i="heading",...s},o)=>(t=Kt(t,"dropdown-header"),M.jsx(n,{ref:o,className:qt(e,t),role:i,...s})));Rr.displayName="DropdownHeader";const Lr=A.forwardRef(({bsPrefix:e,className:t,eventKey:n,disabled:i=!1,onClick:s,active:o,as:r=fr,...a},l)=>{const c=Kt(e,"dropdown-item"),[h,u]=Ar({key:n,href:a.href,disabled:i,onClick:s,active:o});return M.jsx(r,{...a,...h,ref:l,className:qt(t,c,u.isActive&&"active",i&&"disabled")})});Lr.displayName="DropdownItem";const Fr=A.forwardRef(({className:e,bsPrefix:t,as:n="span",...i},s)=>(t=Kt(t,"dropdown-item-text"),M.jsx(n,{ref:s,className:qt(e,t),...i})));Fr.displayName="DropdownItemText";const Kc=typeof global<"u"&&global.navigator&&global.navigator.product==="ReactNative",qc=typeof document<"u",Gc=qc||Kc?A.useLayoutEffect:A.useEffect,Ir=A.createContext(null);Ir.displayName="NavbarContext";function jr(e,t){return e}function $r(e,t,n){const i=n?"top-end":"top-start",s=n?"top-start":"top-end",o=n?"bottom-end":"bottom-start",r=n?"bottom-start":"bottom-end",a=n?"right-start":"left-start",l=n?"right-end":"left-end",c=n?"left-start":"right-start",h=n?"left-end":"right-end";let u=e?r:o;return t==="up"?u=e?s:i:t==="end"?u=e?h:c:t==="start"?u=e?l:a:t==="down-centered"?u="bottom":t==="up-centered"&&(u="top"),u}const zr=A.forwardRef(({bsPrefix:e,className:t,align:n,rootCloseEvent:i,flip:s=!0,show:o,renderOnMount:r,as:a="div",popperConfig:l,variant:c,...h},u)=>{let d=!1;const f=A.useContext(Ir),g=Kt(e,"dropdown-menu"),{align:m,drop:p,isRTL:b}=A.useContext(Bi);n=n||m;const x=A.useContext(ur),v=[];if(n)if(typeof n=="object"){const C=Object.keys(n);if(C.length){const O=C[0],E=n[O];d=E==="start",v.push(`${g}-${O}-${E}`)}}else n==="end"&&(d=!0);const _=$r(d,p,b),[y,{hasShown:w,popper:k,show:S,toggle:P}]=Sr({flip:s,rootCloseEvent:i,show:o,usePopper:!f&&v.length===0,offset:[0,2],popperConfig:l,placement:_});if(y.ref=lr(jr(u),y.ref),Gc(()=>{S&&(k==null||k.update())},[S]),!w&&!r&&!x)return null;typeof a!="string"&&(y.show=S,y.close=()=>P==null?void 0:P(!1),y.align=n);let D=h.style;return k!=null&&k.placement&&(D={...h.style,...y.style},h["x-placement"]=k.placement),M.jsx(a,{...h,...y,style:D,...(v.length||f)&&{"data-bs-popper":"static"},className:qt(t,g,S&&"show",d&&`${g}-end`,c&&`${g}-${c}`,...v)})});zr.displayName="DropdownMenu";const Nr=A.forwardRef(({bsPrefix:e,split:t,className:n,childBsPrefix:i,as:s=Ft,...o},r)=>{const a=Kt(e,"dropdown-toggle"),l=A.useContext(Yn);i!==void 0&&(o.bsPrefix=i);const[c]=Pr();return c.ref=lr(c.ref,jr(r)),M.jsx(s,{className:qt(n,a,t&&`${a}-split`,(l==null?void 0:l.show)&&"show"),...c,...o})});Nr.displayName="DropdownToggle";const Br=A.forwardRef((e,t)=>{const{bsPrefix:n,drop:i="down",show:s,className:o,align:r="start",onSelect:a,onToggle:l,focusFirstItemOnShow:c,as:h="div",navbar:u,autoClose:d=!0,...f}=hl(e,{show:"onToggle"}),g=A.useContext(ur),m=Kt(n,"dropdown"),p=qa(),b=k=>d===!1?k==="click":d==="inside"?k!=="rootClose":d==="outside"?k!=="select":!0,x=Ga((k,S)=>{var P;!((P=S.originalEvent)==null||(P=P.target)==null)&&P.classList.contains("dropdown-toggle")&&S.source==="mousedown"||(S.originalEvent.currentTarget===document&&(S.source!=="keydown"||S.originalEvent.key==="Escape")&&(S.source="rootClose"),b(S.source)&&(l==null||l(k,S)))}),_=$r(r==="end",i,p),y=A.useMemo(()=>({align:r,drop:i,isRTL:p}),[r,i,p]),w={down:m,"down-centered":`${m}-center`,up:"dropup","up-centered":"dropup-center dropup",end:"dropend",start:"dropstart"};return M.jsx(Bi.Provider,{value:y,children:M.jsx(an,{placement:_,show:s,onSelect:a,onToggle:x,focusFirstItemOnShow:c,itemSelector:`.${m}-item:not(.disabled):not(:disabled)`,children:g?f.children:M.jsx(h,{...f,ref:t,className:qt(o,s&&"show",w[i])})})})});Br.displayName="Dropdown";const ei=Object.assign(Br,{Toggle:Nr,Menu:zr,Item:Lr,ItemText:Fr,Divider:Tr,Header:Rr});/*! * @kurkle/color v0.3.2 * https://github.com/kurkle/color#readme * (c) 2023 Jukka Kurkela @@ -15,6 +15,6 @@ var za=Object.defineProperty;var Na=(e,t,n)=>t in e?za(e,t,{enumerable:!0,config * Released under the MIT License */class Bu{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(t,n,i,s){const o=n.listeners[s],r=n.duration;o.forEach(a=>a({chart:t,initial:n.initial,numSteps:r,currentStep:Math.min(i-n.start,r)}))}_refresh(){this._request||(this._running=!0,this._request=qr.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let n=0;this._charts.forEach((i,s)=>{if(!i.running||!i.items.length)return;const o=i.items;let r=o.length-1,a=!1,l;for(;r>=0;--r)l=o[r],l._active?(l._total>i.duration&&(i.duration=l._total),l.tick(t),a=!0):(o[r]=o[o.length-1],o.pop());a&&(s.draw(),this._notify(s,i,t,"progress")),o.length||(i.running=!1,this._notify(s,i,t,"complete"),i.initial=!1),n+=o.length}),this._lastDate=t,n===0&&(this._running=!1)}_getAnims(t){const n=this._charts;let i=n.get(t);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(t,i)),i}listen(t,n,i){this._getAnims(t).listeners[n].push(i)}add(t,n){!n||!n.length||this._getAnims(t).items.push(...n)}has(t){return this._getAnims(t).items.length>0}start(t){const n=this._charts.get(t);n&&(n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((i,s)=>Math.max(i,s._duration),0),this._refresh())}running(t){if(!this._running)return!1;const n=this._charts.get(t);return!(!n||!n.running||!n.items.length)}stop(t){const n=this._charts.get(t);if(!n||!n.items.length)return;const i=n.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();n.items=[],this._notify(t,n,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var Tt=new Bu;const so="transparent",Hu={boolean(e,t,n){return n>.5?t:e},color(e,t,n){const i=Xs(e||so),s=i.valid&&Xs(t||so);return s&&s.valid?s.mix(i,n).hexString():t},number(e,t,n){return e+(t-e)*n}};class Wu{constructor(t,n,i,s){const o=n[i];s=bn([t.to,s,o,t.from]);const r=bn([t.from,o,s]);this._active=!0,this._fn=t.fn||Hu[t.type||typeof r],this._easing=Ue[t.easing]||Ue.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=n,this._prop=i,this._from=r,this._to=s,this._promises=void 0}active(){return this._active}update(t,n,i){if(this._active){this._notify(!1);const s=this._target[this._prop],o=i-this._start,r=this._duration-o;this._start=i,this._duration=Math.floor(Math.max(r,t.duration)),this._total+=o,this._loop=!!t.loop,this._to=bn([t.to,n,s,t.from]),this._from=bn([t.from,s,n])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const n=t-this._start,i=this._duration,s=this._prop,o=this._from,r=this._loop,a=this._to;let l;if(this._active=o!==a&&(r||n<i),!this._active){this._target[s]=a,this._notify(!0);return}if(n<0){this._target[s]=o;return}l=n/i%2,l=r&&l>1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[s]=this._fn(o,a,l)}wait(){const t=this._promises||(this._promises=[]);return new Promise((n,i)=>{t.push({res:n,rej:i})})}_notify(t){const n=t?"res":"rej",i=this._promises||[];for(let s=0;s<i.length;s++)i[s][n]()}}class ha{constructor(t,n){this._chart=t,this._properties=new Map,this.configure(n)}configure(t){if(!z(t))return;const n=Object.keys(K.animation),i=this._properties;Object.getOwnPropertyNames(t).forEach(s=>{const o=t[s];if(!z(o))return;const r={};for(const a of n)r[a]=o[a];(J(o.properties)&&o.properties||[s]).forEach(a=>{(a===s||!i.has(a))&&i.set(a,r)})})}_animateOptions(t,n){const i=n.options,s=Yu(t,i);if(!s)return[];const o=this._createAnimations(s,i);return i.$shared&&Vu(t.options.$animations,i).then(()=>{t.options=i},()=>{}),o}_createAnimations(t,n){const i=this._properties,s=[],o=t.$animations||(t.$animations={}),r=Object.keys(n),a=Date.now();let l;for(l=r.length-1;l>=0;--l){const c=r[l];if(c.charAt(0)==="$")continue;if(c==="options"){s.push(...this._animateOptions(t,n));continue}const h=n[c];let u=o[c];const d=i.get(c);if(u)if(d&&u.active()){u.update(d,h,a);continue}else u.cancel();if(!d||!d.duration){t[c]=h;continue}o[c]=u=new Wu(d,t,c,h),s.push(u)}return s}update(t,n){if(this._properties.size===0){Object.assign(t,n);return}const i=this._createAnimations(t,n);if(i.length)return Tt.add(this._chart,i),!0}}function Vu(e,t){const n=[],i=Object.keys(t);for(let s=0;s<i.length;s++){const o=e[i[s]];o&&o.active()&&n.push(o.wait())}return Promise.all(n)}function Yu(e,t){if(!t)return;let n=e.options;if(!n){e.options=t;return}return n.$shared&&(e.options=n=Object.assign({},n,{$shared:!1,$animations:{}})),n}function oo(e,t){const n=e&&e.options||{},i=n.reverse,s=n.min===void 0?t:0,o=n.max===void 0?t:0;return{start:i?o:s,end:i?s:o}}function Uu(e,t,n){if(n===!1)return!1;const i=oo(e,n),s=oo(t,n);return{top:s.end,right:i.end,bottom:s.start,left:i.start}}function Xu(e){let t,n,i,s;return z(e)?(t=e.top,n=e.right,i=e.bottom,s=e.left):t=n=i=s=e,{top:t,right:n,bottom:i,left:s,disabled:e===!1}}function ua(e,t){const n=[],i=e._getSortedDatasetMetas(t);let s,o;for(s=0,o=i.length;s<o;++s)n.push(i[s].index);return n}function ro(e,t,n,i={}){const s=e.keys,o=i.mode==="single";let r,a,l,c;if(t===null)return;let h=!1;for(r=0,a=s.length;r<a;++r){if(l=+s[r],l===n){if(h=!0,i.all)continue;break}c=e.values[l],vt(c)&&(o||t===0||Dt(t)===Dt(c))&&(t+=c)}return!h&&!i.all?0:t}function Ku(e,t){const{iScale:n,vScale:i}=t,s=n.axis==="x"?"x":"y",o=i.axis==="x"?"x":"y",r=Object.keys(e),a=new Array(r.length);let l,c,h;for(l=0,c=r.length;l<c;++l)h=r[l],a[l]={[s]:h,[o]:e[h]};return a}function oi(e,t){const n=e&&e.options.stacked;return n||n===void 0&&t.stack!==void 0}function qu(e,t,n){return`${e.id}.${t.id}.${n.stack||n.type}`}function Gu(e){const{min:t,max:n,minDefined:i,maxDefined:s}=e.getUserBounds();return{min:i?t:Number.NEGATIVE_INFINITY,max:s?n:Number.POSITIVE_INFINITY}}function Ju(e,t,n){const i=e[t]||(e[t]={});return i[n]||(i[n]={})}function ao(e,t,n,i){for(const s of t.getMatchingVisibleMetas(i).reverse()){const o=e[s.index];if(n&&o>0||!n&&o<0)return s.index}return null}function lo(e,t){const{chart:n,_cachedMeta:i}=e,s=n._stacks||(n._stacks={}),{iScale:o,vScale:r,index:a}=i,l=o.axis,c=r.axis,h=qu(o,r,i),u=t.length;let d;for(let f=0;f<u;++f){const g=t[f],{[l]:m,[c]:p}=g,b=g._stacks||(g._stacks={});d=b[c]=Ju(s,h,m),d[a]=p,d._top=ao(d,r,!0,i.type),d._bottom=ao(d,r,!1,i.type);const x=d._visualValues||(d._visualValues={});x[a]=p}}function ri(e,t){const n=e.scales;return Object.keys(n).filter(i=>n[i].axis===t).shift()}function Zu(e,t){return pe(e,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function Qu(e,t,n){return pe(e,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:n,index:t,mode:"default",type:"data"})}function Re(e,t){const n=e.controller.index,i=e.vScale&&e.vScale.axis;if(i){t=t||e._parsed;for(const s of t){const o=s._stacks;if(!o||o[i]===void 0||o[i][n]===void 0)return;delete o[i][n],o[i]._visualValues!==void 0&&o[i]._visualValues[n]!==void 0&&delete o[i]._visualValues[n]}}}const ai=e=>e==="reset"||e==="none",co=(e,t)=>t?e:Object.assign({},e),td=(e,t,n)=>e&&!t.hidden&&t._stacked&&{keys:ua(n,!0),values:null};class _e{constructor(t,n){this.chart=t,this._ctx=t.ctx,this.index=n,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=oi(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Re(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,n=this._cachedMeta,i=this.getDataset(),s=(u,d,f,g)=>u==="x"?d:u==="r"?g:f,o=n.xAxisID=j(i.xAxisID,ri(t,"x")),r=n.yAxisID=j(i.yAxisID,ri(t,"y")),a=n.rAxisID=j(i.rAxisID,ri(t,"r")),l=n.indexAxis,c=n.iAxisID=s(l,o,r,a),h=n.vAxisID=s(l,r,o,a);n.xScale=this.getScaleForId(o),n.yScale=this.getScaleForId(r),n.rScale=this.getScaleForId(a),n.iScale=this.getScaleForId(c),n.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const n=this._cachedMeta;return t===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&Vs(this._data,this),t._stacked&&Re(t)}_dataCheck(){const t=this.getDataset(),n=t.data||(t.data=[]),i=this._data;if(z(n)){const s=this._cachedMeta;this._data=Ku(n,s)}else if(i!==n){if(i){Vs(i,this);const s=this._cachedMeta;Re(s),s._parsed=[]}n&&Object.isExtensible(n)&&Ih(n,this),this._syncList=[],this._data=n}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const n=this._cachedMeta,i=this.getDataset();let s=!1;this._dataCheck();const o=n._stacked;n._stacked=oi(n.vScale,n),n.stack!==i.stack&&(s=!0,Re(n),n.stack=i.stack),this._resyncElements(t),(s||o!==n._stacked)&&(lo(this,n._parsed),n._stacked=oi(n.vScale,n))}configure(){const t=this.chart.config,n=t.datasetScopeKeys(this._type),i=t.getOptionScopes(this.getDataset(),n,!0);this.options=t.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,n){const{_cachedMeta:i,_data:s}=this,{iScale:o,_stacked:r}=i,a=o.axis;let l=t===0&&n===s.length?!0:i._sorted,c=t>0&&i._parsed[t-1],h,u,d;if(this._parsing===!1)i._parsed=s,i._sorted=!0,d=s;else{J(s[t])?d=this.parseArrayData(i,s,t,n):z(s[t])?d=this.parseObjectData(i,s,t,n):d=this.parsePrimitiveData(i,s,t,n);const f=()=>u[a]===null||c&&u[a]<c[a];for(h=0;h<n;++h)i._parsed[h+t]=u=d[h],l&&(f()&&(l=!1),c=u);i._sorted=l}r&&lo(this,d)}parsePrimitiveData(t,n,i,s){const{iScale:o,vScale:r}=t,a=o.axis,l=r.axis,c=o.getLabels(),h=o===r,u=new Array(s);let d,f,g;for(d=0,f=s;d<f;++d)g=d+i,u[d]={[a]:h||o.parse(c[g],g),[l]:r.parse(n[g],g)};return u}parseArrayData(t,n,i,s){const{xScale:o,yScale:r}=t,a=new Array(s);let l,c,h,u;for(l=0,c=s;l<c;++l)h=l+i,u=n[h],a[l]={x:o.parse(u[0],h),y:r.parse(u[1],h)};return a}parseObjectData(t,n,i,s){const{xScale:o,yScale:r}=t,{xAxisKey:a="x",yAxisKey:l="y"}=this._parsing,c=new Array(s);let h,u,d,f;for(h=0,u=s;h<u;++h)d=h+i,f=n[d],c[h]={x:o.parse(Ce(f,a),d),y:r.parse(Ce(f,l),d)};return c}getParsed(t){return this._cachedMeta._parsed[t]}getDataElement(t){return this._cachedMeta.data[t]}applyStack(t,n,i){const s=this.chart,o=this._cachedMeta,r=n[t.axis],a={keys:ua(s,!0),values:n._stacks[t.axis]._visualValues};return ro(a,r,o.index,{mode:i})}updateRangeFromParsed(t,n,i,s){const o=i[n.axis];let r=o===null?NaN:o;const a=s&&i._stacks[n.axis];s&&a&&(s.values=a,r=ro(s,o,this._cachedMeta.index)),t.min=Math.min(t.min,r),t.max=Math.max(t.max,r)}getMinMax(t,n){const i=this._cachedMeta,s=i._parsed,o=i._sorted&&t===i.iScale,r=s.length,a=this._getOtherScale(t),l=td(n,i,this.chart),c={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:h,max:u}=Gu(a);let d,f;function g(){f=s[d];const m=f[a.axis];return!vt(f[t.axis])||h>m||u<m}for(d=0;d<r&&!(!g()&&(this.updateRangeFromParsed(c,t,f,l),o));++d);if(o){for(d=r-1;d>=0;--d)if(!g()){this.updateRangeFromParsed(c,t,f,l);break}}return c}getAllParsedValues(t){const n=this._cachedMeta._parsed,i=[];let s,o,r;for(s=0,o=n.length;s<o;++s)r=n[s][t.axis],vt(r)&&i.push(r);return i}getMaxOverflow(){return!1}getLabelAndValue(t){const n=this._cachedMeta,i=n.iScale,s=n.vScale,o=this.getParsed(t);return{label:i?""+i.getLabelForValue(o[i.axis]):"",value:s?""+s.getLabelForValue(o[s.axis]):""}}_update(t){const n=this._cachedMeta;this.update(t||"default"),n._clip=Xu(j(this.options.clip,Uu(n.xScale,n.yScale,this.getMaxOverflow())))}update(t){}draw(){const t=this._ctx,n=this.chart,i=this._cachedMeta,s=i.data||[],o=n.chartArea,r=[],a=this._drawStart||0,l=this._drawCount||s.length-a,c=this.options.drawActiveElementsOnTop;let h;for(i.dataset&&i.dataset.draw(t,o,a,l),h=a;h<a+l;++h){const u=s[h];u.hidden||(u.active&&c?r.push(u):u.draw(t,o))}for(h=0;h<r.length;++h)r[h].draw(t,o)}getStyle(t,n){const i=n?"active":"default";return t===void 0&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(t||0,i)}getContext(t,n,i){const s=this.getDataset();let o;if(t>=0&&t<this._cachedMeta.data.length){const r=this._cachedMeta.data[t];o=r.$context||(r.$context=Qu(this.getContext(),t,r)),o.parsed=this.getParsed(t),o.raw=s.data[t],o.index=o.dataIndex=t}else o=this.$context||(this.$context=Zu(this.chart.getContext(),this.index)),o.dataset=s,o.index=o.datasetIndex=this.index;return o.active=!!n,o.mode=i,o}resolveDatasetElementOptions(t){return this._resolveElementOptions(this.datasetElementType.id,t)}resolveDataElementOptions(t,n){return this._resolveElementOptions(this.dataElementType.id,n,t)}_resolveElementOptions(t,n="default",i){const s=n==="active",o=this._cachedDataOpts,r=t+"-"+n,a=o[r],l=this.enableOptionSharing&&Ze(i);if(a)return co(a,l);const c=this.chart.config,h=c.datasetElementScopeKeys(this._type,t),u=s?[`${t}Hover`,"hover",t,""]:[t,""],d=c.getOptionScopes(this.getDataset(),h),f=Object.keys(K.elements[t]),g=()=>this.getContext(i,s,n),m=c.resolveNamedOptions(d,f,g,u);return m.$shared&&(m.$shared=l,o[r]=Object.freeze(co(m,l))),m}_resolveAnimations(t,n,i){const s=this.chart,o=this._cachedDataOpts,r=`animation-${n}`,a=o[r];if(a)return a;let l;if(s.options.animation!==!1){const h=this.chart.config,u=h.datasetAnimationScopeKeys(this._type,n),d=h.getOptionScopes(this.getDataset(),u);l=h.createResolver(d,this.getContext(t,i,n))}const c=new ha(s,l&&l.animations);return l&&l._cacheable&&(o[r]=Object.freeze(c)),c}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,n){return!n||ai(t)||this.chart._animationsDisabled}_getSharedOptions(t,n){const i=this.resolveDataElementOptions(t,n),s=this._sharedOptions,o=this.getSharedOptions(i),r=this.includeOptions(n,o)||o!==s;return this.updateSharedOptions(o,n,i),{sharedOptions:o,includeOptions:r}}updateElement(t,n,i,s){ai(s)?Object.assign(t,i):this._resolveAnimations(n,s).update(t,i)}updateSharedOptions(t,n,i){t&&!ai(n)&&this._resolveAnimations(void 0,n).update(t,i)}_setStyle(t,n,i,s){t.active=s;const o=this.getStyle(n,s);this._resolveAnimations(n,i,s).update(t,{options:!s&&this.getSharedOptions(o)||o})}removeHoverStyle(t,n,i){this._setStyle(t,i,"active",!1)}setHoverStyle(t,n,i){this._setStyle(t,i,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const n=this._data,i=this._cachedMeta.data;for(const[a,l,c]of this._syncList)this[a](l,c);this._syncList=[];const s=i.length,o=n.length,r=Math.min(o,s);r&&this.parse(0,r),o>s?this._insertElements(s,o-s,t):o<s&&this._removeElements(o,s-o)}_insertElements(t,n,i=!0){const s=this._cachedMeta,o=s.data,r=t+n;let a;const l=c=>{for(c.length+=n,a=c.length-1;a>=r;a--)c[a]=c[a-n]};for(l(o),a=t;a<r;++a)o[a]=new this.dataElementType;this._parsing&&l(s._parsed),this.parse(t,n),i&&this.updateElements(o,t,n,"reset")}updateElements(t,n,i,s){}_removeElements(t,n){const i=this._cachedMeta;if(this._parsing){const s=i._parsed.splice(t,n);i._stacked&&Re(i,s)}i.data.splice(t,n)}_sync(t){if(this._parsing)this._syncList.push(t);else{const[n,i,s]=t;this[n](i,s)}this.chart._dataChanges.push([this.index,...t])}_onDataPush(){const t=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-t,t])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(t,n){n&&this._sync(["_removeElements",t,n]);const i=arguments.length-2;i&&this._sync(["_insertElements",t,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}T(_e,"defaults",{}),T(_e,"datasetElementType",null),T(_e,"dataElementType",null);function ed(e,t){if(!e._cache.$bar){const n=e.getMatchingVisibleMetas(t);let i=[];for(let s=0,o=n.length;s<o;s++)i=i.concat(n[s].controller.getAllParsedValues(e));e._cache.$bar=Kr(i.sort((s,o)=>s-o))}return e._cache.$bar}function nd(e){const t=e.iScale,n=ed(t,e.type);let i=t._length,s,o,r,a;const l=()=>{r===32767||r===-32768||(Ze(a)&&(i=Math.min(i,Math.abs(r-a)||i)),a=r)};for(s=0,o=n.length;s<o;++s)r=t.getPixelForValue(n[s]),l();for(a=void 0,s=0,o=t.ticks.length;s<o;++s)r=t.getPixelForTick(s),l();return i}function id(e,t,n,i){const s=n.barThickness;let o,r;return W(s)?(o=t.min*n.categoryPercentage,r=n.barPercentage):(o=s*i,r=1),{chunk:o/i,ratio:r,start:t.pixels[e]-o/2}}function sd(e,t,n,i){const s=t.pixels,o=s[e];let r=e>0?s[e-1]:null,a=e<s.length-1?s[e+1]:null;const l=n.categoryPercentage;r===null&&(r=o-(a===null?t.end-t.start:a-o)),a===null&&(a=o+o-r);const c=o-(o-Math.min(r,a))/2*l;return{chunk:Math.abs(a-r)/2*l/i,ratio:n.barPercentage,start:c}}function od(e,t,n,i){const s=n.parse(e[0],i),o=n.parse(e[1],i),r=Math.min(s,o),a=Math.max(s,o);let l=r,c=a;Math.abs(r)>Math.abs(a)&&(l=a,c=r),t[n.axis]=c,t._custom={barStart:l,barEnd:c,start:s,end:o,min:r,max:a}}function da(e,t,n,i){return J(e)?od(e,t,n,i):t[n.axis]=n.parse(e,i),t}function ho(e,t,n,i){const s=e.iScale,o=e.vScale,r=s.getLabels(),a=s===o,l=[];let c,h,u,d;for(c=n,h=n+i;c<h;++c)d=t[c],u={},u[s.axis]=a||s.parse(r[c],c),l.push(da(d,u,o,c));return l}function li(e){return e&&e.barStart!==void 0&&e.barEnd!==void 0}function rd(e,t,n){return e!==0?Dt(e):(t.isHorizontal()?1:-1)*(t.min>=n?1:-1)}function ad(e){let t,n,i,s,o;return e.horizontal?(t=e.base>e.x,n="left",i="right"):(t=e.base<e.y,n="bottom",i="top"),t?(s="end",o="start"):(s="start",o="end"),{start:n,end:i,reverse:t,top:s,bottom:o}}function ld(e,t,n,i){let s=t.borderSkipped;const o={};if(!s){e.borderSkipped=o;return}if(s===!0){e.borderSkipped={top:!0,right:!0,bottom:!0,left:!0};return}const{start:r,end:a,reverse:l,top:c,bottom:h}=ad(e);s==="middle"&&n&&(e.enableBorderRadius=!0,(n._top||0)===i?s=c:(n._bottom||0)===i?s=h:(o[uo(h,r,a,l)]=!0,s=c)),o[uo(s,r,a,l)]=!0,e.borderSkipped=o}function uo(e,t,n,i){return i?(e=cd(e,t,n),e=fo(e,n,t)):e=fo(e,t,n),e}function cd(e,t,n){return e===t?n:e===n?t:e}function fo(e,t,n){return e==="start"?t:e==="end"?n:e}function hd(e,{inflateAmount:t},n){e.inflateAmount=t==="auto"?n===1?.33:0:t}class ci extends _e{parsePrimitiveData(t,n,i,s){return ho(t,n,i,s)}parseArrayData(t,n,i,s){return ho(t,n,i,s)}parseObjectData(t,n,i,s){const{iScale:o,vScale:r}=t,{xAxisKey:a="x",yAxisKey:l="y"}=this._parsing,c=o.axis==="x"?a:l,h=r.axis==="x"?a:l,u=[];let d,f,g,m;for(d=i,f=i+s;d<f;++d)m=n[d],g={},g[o.axis]=o.parse(Ce(m,c),d),u.push(da(Ce(m,h),g,r,d));return u}updateRangeFromParsed(t,n,i,s){super.updateRangeFromParsed(t,n,i,s);const o=i._custom;o&&n===this._cachedMeta.vScale&&(t.min=Math.min(t.min,o.min),t.max=Math.max(t.max,o.max))}getMaxOverflow(){return 0}getLabelAndValue(t){const n=this._cachedMeta,{iScale:i,vScale:s}=n,o=this.getParsed(t),r=o._custom,a=li(r)?"["+r.start+", "+r.end+"]":""+s.getLabelForValue(o[s.axis]);return{label:""+i.getLabelForValue(o[i.axis]),value:a}}initialize(){this.enableOptionSharing=!0,super.initialize();const t=this._cachedMeta;t.stack=this.getDataset().stack}update(t){const n=this._cachedMeta;this.updateElements(n.data,0,n.data.length,t)}updateElements(t,n,i,s){const o=s==="reset",{index:r,_cachedMeta:{vScale:a}}=this,l=a.getBasePixel(),c=a.isHorizontal(),h=this._getRuler(),{sharedOptions:u,includeOptions:d}=this._getSharedOptions(n,s);for(let f=n;f<n+i;f++){const g=this.getParsed(f),m=o||W(g[a.axis])?{base:l,head:l}:this._calculateBarValuePixels(f),p=this._calculateBarIndexPixels(f,h),b=(g._stacks||{})[a.axis],x={horizontal:c,base:m.base,enableBorderRadius:!b||li(g._custom)||r===b._top||r===b._bottom,x:c?m.head:p.center,y:c?p.center:m.head,height:c?p.size:Math.abs(m.size),width:c?Math.abs(m.size):p.size};d&&(x.options=u||this.resolveDataElementOptions(f,t[f].active?"active":s));const v=x.options||t[f].options;ld(x,v,b,r),hd(x,v,h.ratio),this.updateElement(t[f],f,x,s)}}_getStacks(t,n){const{iScale:i}=this._cachedMeta,s=i.getMatchingVisibleMetas(this._type).filter(h=>h.controller.options.grouped),o=i.options.stacked,r=[],a=this._cachedMeta.controller.getParsed(n),l=a&&a[i.axis],c=h=>{const u=h._parsed.find(f=>f[i.axis]===l),d=u&&u[h.vScale.axis];if(W(d)||isNaN(d))return!0};for(const h of s)if(!(n!==void 0&&c(h))&&((o===!1||r.indexOf(h.stack)===-1||o===void 0&&h.stack===void 0)&&r.push(h.stack),h.index===t))break;return r.length||r.push(void 0),r}_getStackCount(t){return this._getStacks(void 0,t).length}_getStackIndex(t,n,i){const s=this._getStacks(t,i),o=n!==void 0?s.indexOf(n):-1;return o===-1?s.length-1:o}_getRuler(){const t=this.options,n=this._cachedMeta,i=n.iScale,s=[];let o,r;for(o=0,r=n.data.length;o<r;++o)s.push(i.getPixelForValue(this.getParsed(o)[i.axis],o));const a=t.barThickness;return{min:a||nd(n),pixels:s,start:i._startPixel,end:i._endPixel,stackCount:this._getStackCount(),scale:i,grouped:t.grouped,ratio:a?1:t.categoryPercentage*t.barPercentage}}_calculateBarValuePixels(t){const{_cachedMeta:{vScale:n,_stacked:i,index:s},options:{base:o,minBarLength:r}}=this,a=o||0,l=this.getParsed(t),c=l._custom,h=li(c);let u=l[n.axis],d=0,f=i?this.applyStack(n,l,i):u,g,m;f!==u&&(d=f-u,f=u),h&&(u=c.barStart,f=c.barEnd-c.barStart,u!==0&&Dt(u)!==Dt(c.barEnd)&&(d=0),d+=u);const p=!W(o)&&!h?o:d;let b=n.getPixelForValue(p);if(this.chart.getDataVisibility(t)?g=n.getPixelForValue(d+f):g=b,m=g-b,Math.abs(m)<r){m=rd(m,n,a)*r,u===a&&(b-=m/2);const x=n.getPixelForDecimal(0),v=n.getPixelForDecimal(1),_=Math.min(x,v),y=Math.max(x,v);b=Math.max(Math.min(b,y),_),g=b+m,i&&!h&&(l._stacks[n.axis]._visualValues[s]=n.getValueForPixel(g)-n.getValueForPixel(b))}if(b===n.getPixelForValue(a)){const x=Dt(m)*n.getLineWidthForValue(a)/2;b+=x,m-=x}return{size:m,base:b,head:g,center:g+m/2}}_calculateBarIndexPixels(t,n){const i=n.scale,s=this.options,o=s.skipNull,r=j(s.maxBarThickness,1/0);let a,l;if(n.grouped){const c=o?this._getStackCount(t):n.stackCount,h=s.barThickness==="flex"?sd(t,n,s,c):id(t,n,s,c),u=this._getStackIndex(this.index,this._cachedMeta.stack,o?t:void 0);a=h.start+h.chunk*u+h.chunk/2,l=Math.min(r,h.chunk*h.ratio)}else a=i.getPixelForValue(this.getParsed(t)[i.axis],t),l=Math.min(r,n.min*n.ratio);return{base:a-l/2,head:a+l/2,center:a,size:l}}draw(){const t=this._cachedMeta,n=t.vScale,i=t.data,s=i.length;let o=0;for(;o<s;++o)this.getParsed(o)[n.axis]!==null&&!i[o].hidden&&i[o].draw(this._ctx)}}T(ci,"id","bar"),T(ci,"defaults",{datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}}),T(ci,"overrides",{scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}});class hi extends _e{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const n=this._cachedMeta,{dataset:i,data:s=[],_dataset:o}=n,r=this.chart._animationsDisabled;let{start:a,count:l}=zh(n,s,r);this._drawStart=a,this._drawCount=l,Nh(n)&&(a=0,l=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!o._decimated,i.points=s;const c=this.resolveDatasetElementOptions(t);this.options.showLine||(c.borderWidth=0),c.segment=this.options.segment,this.updateElement(i,void 0,{animated:!r,options:c},t),this.updateElements(s,a,l,t)}updateElements(t,n,i,s){const o=s==="reset",{iScale:r,vScale:a,_stacked:l,_dataset:c}=this._cachedMeta,{sharedOptions:h,includeOptions:u}=this._getSharedOptions(n,s),d=r.axis,f=a.axis,{spanGaps:g,segment:m}=this.options,p=Qe(g)?g:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||s==="none",x=n+i,v=t.length;let _=n>0&&this.getParsed(n-1);for(let y=0;y<v;++y){const w=t[y],k=b?w:{};if(y<n||y>=x){k.skip=!0;continue}const S=this.getParsed(y),P=W(S[f]),D=k[d]=r.getPixelForValue(S[d],y),C=k[f]=o||P?a.getBasePixel():a.getPixelForValue(l?this.applyStack(a,S,l):S[f],y);k.skip=isNaN(D)||isNaN(C)||P,k.stop=y>0&&Math.abs(S[d]-_[d])>p,m&&(k.parsed=S,k.raw=c.data[y]),u&&(k.options=h||this.resolveDataElementOptions(y,w.active?"active":s)),b||this.updateElement(w,y,k,s),_=S}}getMaxOverflow(){const t=this._cachedMeta,n=t.dataset,i=n.options&&n.options.borderWidth||0,s=t.data||[];if(!s.length)return i;const o=s[0].size(this.resolveDataElementOptions(0)),r=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,o,r)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}T(hi,"id","line"),T(hi,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),T(hi,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});function ne(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class ss{constructor(t){T(this,"options");this.options=t||{}}static override(t){Object.assign(ss.prototype,t)}init(){}formats(){return ne()}parse(){return ne()}format(){return ne()}add(){return ne()}diff(){return ne()}startOf(){return ne()}endOf(){return ne()}}var ud={_date:ss};function dd(e,t,n,i){const{controller:s,data:o,_sorted:r}=e,a=s._cachedMeta.iScale;if(a&&t===a.axis&&t!=="r"&&r&&o.length){const l=a._reversePixels?Lh:le;if(i){if(s._sharedOptions){const c=o[0],h=typeof c.getRange=="function"&&c.getRange(t);if(h){const u=l(o,t,n-h),d=l(o,t,n+h);return{lo:u.lo,hi:d.hi}}}}else return l(o,t,n)}return{lo:0,hi:o.length-1}}function cn(e,t,n,i,s){const o=e.getSortedVisibleDatasetMetas(),r=n[t];for(let a=0,l=o.length;a<l;++a){const{index:c,data:h}=o[a],{lo:u,hi:d}=dd(o[a],t,r,s);for(let f=u;f<=d;++f){const g=h[f];g.skip||i(g,c,f)}}}function fd(e){const t=e.indexOf("x")!==-1,n=e.indexOf("y")!==-1;return function(i,s){const o=t?Math.abs(i.x-s.x):0,r=n?Math.abs(i.y-s.y):0;return Math.sqrt(Math.pow(o,2)+Math.pow(r,2))}}function ui(e,t,n,i,s){const o=[];return!s&&!e.isPointInArea(t)||cn(e,n,t,function(a,l,c){!s&&!tn(a,e.chartArea,0)||a.inRange(t.x,t.y,i)&&o.push({element:a,datasetIndex:l,index:c})},!0),o}function pd(e,t,n,i){let s=[];function o(r,a,l){const{startAngle:c,endAngle:h}=r.getProps(["startAngle","endAngle"],i),{angle:u}=Ur(r,{x:t.x,y:t.y});Ui(u,c,h)&&s.push({element:r,datasetIndex:a,index:l})}return cn(e,n,t,o),s}function gd(e,t,n,i,s,o){let r=[];const a=fd(n);let l=Number.POSITIVE_INFINITY;function c(h,u,d){const f=h.inRange(t.x,t.y,s);if(i&&!f)return;const g=h.getCenterPoint(s);if(!(!!o||e.isPointInArea(g))&&!f)return;const p=a(t,g);p<l?(r=[{element:h,datasetIndex:u,index:d}],l=p):p===l&&r.push({element:h,datasetIndex:u,index:d})}return cn(e,n,t,c),r}function di(e,t,n,i,s,o){return!o&&!e.isPointInArea(t)?[]:n==="r"&&!i?pd(e,t,n,s):gd(e,t,n,i,s,o)}function po(e,t,n,i,s){const o=[],r=n==="x"?"inXRange":"inYRange";let a=!1;return cn(e,n,t,(l,c,h)=>{l[r]&&l[r](t[n],s)&&(o.push({element:l,datasetIndex:c,index:h}),a=a||l.inRange(t.x,t.y,s))}),i&&!a?[]:o}var md={evaluateInteractionItems:cn,modes:{index(e,t,n,i){const s=oe(t,e),o=n.axis||"x",r=n.includeInvisible||!1,a=n.intersect?ui(e,s,o,i,r):di(e,s,o,!1,i,r),l=[];return a.length?(e.getSortedVisibleDatasetMetas().forEach(c=>{const h=a[0].index,u=c.data[h];u&&!u.skip&&l.push({element:u,datasetIndex:c.index,index:h})}),l):[]},dataset(e,t,n,i){const s=oe(t,e),o=n.axis||"xy",r=n.includeInvisible||!1;let a=n.intersect?ui(e,s,o,i,r):di(e,s,o,!1,i,r);if(a.length>0){const l=a[0].datasetIndex,c=e.getDatasetMeta(l).data;a=[];for(let h=0;h<c.length;++h)a.push({element:c[h],datasetIndex:l,index:h})}return a},point(e,t,n,i){const s=oe(t,e),o=n.axis||"xy",r=n.includeInvisible||!1;return ui(e,s,o,i,r)},nearest(e,t,n,i){const s=oe(t,e),o=n.axis||"xy",r=n.includeInvisible||!1;return di(e,s,o,n.intersect,i,r)},x(e,t,n,i){const s=oe(t,e);return po(e,s,"x",n.intersect,i)},y(e,t,n,i){const s=oe(t,e);return po(e,s,"y",n.intersect,i)}}};const fa=["left","top","right","bottom"];function Le(e,t){return e.filter(n=>n.pos===t)}function go(e,t){return e.filter(n=>fa.indexOf(n.pos)===-1&&n.box.axis===t)}function Fe(e,t){return e.sort((n,i)=>{const s=t?i:n,o=t?n:i;return s.weight===o.weight?s.index-o.index:s.weight-o.weight})}function bd(e){const t=[];let n,i,s,o,r,a;for(n=0,i=(e||[]).length;n<i;++n)s=e[n],{position:o,options:{stack:r,stackWeight:a=1}}=s,t.push({index:n,box:s,pos:o,horizontal:s.isHorizontal(),weight:s.weight,stack:r&&o+r,stackWeight:a});return t}function xd(e){const t={};for(const n of e){const{stack:i,pos:s,stackWeight:o}=n;if(!i||!fa.includes(s))continue;const r=t[i]||(t[i]={count:0,placed:0,weight:0,size:0});r.count++,r.weight+=o}return t}function yd(e,t){const n=xd(e),{vBoxMaxWidth:i,hBoxMaxHeight:s}=t;let o,r,a;for(o=0,r=e.length;o<r;++o){a=e[o];const{fullSize:l}=a.box,c=n[a.stack],h=c&&a.stackWeight/c.weight;a.horizontal?(a.width=h?h*i:l&&t.availableWidth,a.height=s):(a.width=i,a.height=h?h*s:l&&t.availableHeight)}return n}function vd(e){const t=bd(e),n=Fe(t.filter(c=>c.box.fullSize),!0),i=Fe(Le(t,"left"),!0),s=Fe(Le(t,"right")),o=Fe(Le(t,"top"),!0),r=Fe(Le(t,"bottom")),a=go(t,"x"),l=go(t,"y");return{fullSize:n,leftAndTop:i.concat(o),rightAndBottom:s.concat(l).concat(r).concat(a),chartArea:Le(t,"chartArea"),vertical:i.concat(s).concat(l),horizontal:o.concat(r).concat(a)}}function mo(e,t,n,i){return Math.max(e[n],t[n])+Math.max(e[i],t[i])}function pa(e,t){e.top=Math.max(e.top,t.top),e.left=Math.max(e.left,t.left),e.bottom=Math.max(e.bottom,t.bottom),e.right=Math.max(e.right,t.right)}function _d(e,t,n,i){const{pos:s,box:o}=n,r=e.maxPadding;if(!z(s)){n.size&&(e[s]-=n.size);const u=i[n.stack]||{size:0,count:1};u.size=Math.max(u.size,n.horizontal?o.height:o.width),n.size=u.size/u.count,e[s]+=n.size}o.getPadding&&pa(r,o.getPadding());const a=Math.max(0,t.outerWidth-mo(r,e,"left","right")),l=Math.max(0,t.outerHeight-mo(r,e,"top","bottom")),c=a!==e.w,h=l!==e.h;return e.w=a,e.h=l,n.horizontal?{same:c,other:h}:{same:h,other:c}}function wd(e){const t=e.maxPadding;function n(i){const s=Math.max(t[i]-e[i],0);return e[i]+=s,s}e.y+=n("top"),e.x+=n("left"),n("right"),n("bottom")}function Sd(e,t){const n=t.maxPadding;function i(s){const o={left:0,top:0,right:0,bottom:0};return s.forEach(r=>{o[r]=Math.max(t[r],n[r])}),o}return i(e?["left","right"]:["top","bottom"])}function ze(e,t,n,i){const s=[];let o,r,a,l,c,h;for(o=0,r=e.length,c=0;o<r;++o){a=e[o],l=a.box,l.update(a.width||t.w,a.height||t.h,Sd(a.horizontal,t));const{same:u,other:d}=_d(t,n,a,i);c|=u&&s.length,h=h||d,l.fullSize||s.push(a)}return c&&ze(s,t,n,i)||h}function vn(e,t,n,i,s){e.top=n,e.left=t,e.right=t+i,e.bottom=n+s,e.width=i,e.height=s}function bo(e,t,n,i){const s=n.padding;let{x:o,y:r}=t;for(const a of e){const l=a.box,c=i[a.stack]||{count:1,placed:0,weight:1},h=a.stackWeight/c.weight||1;if(a.horizontal){const u=t.w*h,d=c.size||l.height;Ze(c.start)&&(r=c.start),l.fullSize?vn(l,s.left,r,n.outerWidth-s.right-s.left,d):vn(l,t.left+c.placed,r,u,d),c.start=r,c.placed+=u,r=l.bottom}else{const u=t.h*h,d=c.size||l.width;Ze(c.start)&&(o=c.start),l.fullSize?vn(l,o,s.top,d,n.outerHeight-s.bottom-s.top):vn(l,o,t.top+c.placed,d,u),c.start=o,c.placed+=u,o=l.right}}t.x=o,t.y=r}var bt={addBox(e,t){e.boxes||(e.boxes=[]),t.fullSize=t.fullSize||!1,t.position=t.position||"top",t.weight=t.weight||0,t._layers=t._layers||function(){return[{z:0,draw(n){t.draw(n)}}]},e.boxes.push(t)},removeBox(e,t){const n=e.boxes?e.boxes.indexOf(t):-1;n!==-1&&e.boxes.splice(n,1)},configure(e,t,n){t.fullSize=n.fullSize,t.position=n.position,t.weight=n.weight},update(e,t,n,i){if(!e)return;const s=_t(e.options.layout.padding),o=Math.max(t-s.width,0),r=Math.max(n-s.height,0),a=vd(e.boxes),l=a.vertical,c=a.horizontal;H(e.boxes,m=>{typeof m.beforeLayout=="function"&&m.beforeLayout()});const h=l.reduce((m,p)=>p.box.options&&p.box.options.display===!1?m:m+1,0)||1,u=Object.freeze({outerWidth:t,outerHeight:n,padding:s,availableWidth:o,availableHeight:r,vBoxMaxWidth:o/2/h,hBoxMaxHeight:r/2}),d=Object.assign({},s);pa(d,_t(i));const f=Object.assign({maxPadding:d,w:o,h:r,x:s.left,y:s.top},s),g=yd(l.concat(c),u);ze(a.fullSize,f,u,g),ze(l,f,u,g),ze(c,f,u,g)&&ze(l,f,u,g),wd(f),bo(a.leftAndTop,f,u,g),f.x+=f.w,f.y+=f.h,bo(a.rightAndBottom,f,u,g),e.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},H(a.chartArea,m=>{const p=m.box;Object.assign(p,e.chartArea),p.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})})}};class ga{acquireContext(t,n){}releaseContext(t){return!1}addEventListener(t,n,i){}removeEventListener(t,n,i){}getDevicePixelRatio(){return 1}getMaximumSize(t,n,i,s){return n=Math.max(0,n||t.width),i=i||t.height,{width:n,height:Math.max(0,s?Math.floor(n/s):i)}}isAttached(t){return!0}updateConfig(t){}}class kd extends ga{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const Tn="$chartjs",Md={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},xo=e=>e===null||e==="";function Cd(e,t){const n=e.style,i=e.getAttribute("height"),s=e.getAttribute("width");if(e[Tn]={initial:{height:i,width:s,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",xo(s)){const o=to(e,"width");o!==void 0&&(e.width=o)}if(xo(i))if(e.style.height==="")e.height=e.width/(t||2);else{const o=to(e,"height");o!==void 0&&(e.height=o)}return e}const ma=Ou?{passive:!0}:!1;function Pd(e,t,n){e&&e.addEventListener(t,n,ma)}function Od(e,t,n){e&&e.canvas&&e.canvas.removeEventListener(t,n,ma)}function Dd(e,t){const n=Md[e.type]||e.type,{x:i,y:s}=oe(e,t);return{type:n,chart:t,native:e,x:i!==void 0?i:null,y:s!==void 0?s:null}}function Nn(e,t){for(const n of e)if(n===t||n.contains(t))return!0}function Ad(e,t,n){const i=e.canvas,s=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||Nn(a.addedNodes,i),r=r&&!Nn(a.removedNodes,i);r&&n()});return s.observe(document,{childList:!0,subtree:!0}),s}function Ed(e,t,n){const i=e.canvas,s=new MutationObserver(o=>{let r=!1;for(const a of o)r=r||Nn(a.removedNodes,i),r=r&&!Nn(a.addedNodes,i);r&&n()});return s.observe(document,{childList:!0,subtree:!0}),s}const nn=new Map;let yo=0;function ba(){const e=window.devicePixelRatio;e!==yo&&(yo=e,nn.forEach((t,n)=>{n.currentDevicePixelRatio!==e&&t()}))}function Td(e,t){nn.size||window.addEventListener("resize",ba),nn.set(e,t)}function Rd(e){nn.delete(e),nn.size||window.removeEventListener("resize",ba)}function Ld(e,t,n){const i=e.canvas,s=i&&is(i);if(!s)return;const o=Gr((a,l)=>{const c=s.clientWidth;n(a,l),c<s.clientWidth&&n()},window),r=new ResizeObserver(a=>{const l=a[0],c=l.contentRect.width,h=l.contentRect.height;c===0&&h===0||o(c,h)});return r.observe(s),Td(e,o),r}function fi(e,t,n){n&&n.disconnect(),t==="resize"&&Rd(e)}function Fd(e,t,n){const i=e.canvas,s=Gr(o=>{e.ctx!==null&&n(Dd(o,e))},e);return Pd(i,t,s),s}class Id extends ga{acquireContext(t,n){const i=t&&t.getContext&&t.getContext("2d");return i&&i.canvas===t?(Cd(t,n),i):null}releaseContext(t){const n=t.canvas;if(!n[Tn])return!1;const i=n[Tn].initial;["height","width"].forEach(o=>{const r=i[o];W(r)?n.removeAttribute(o):n.setAttribute(o,r)});const s=i.style||{};return Object.keys(s).forEach(o=>{n.style[o]=s[o]}),n.width=n.width,delete n[Tn],!0}addEventListener(t,n,i){this.removeEventListener(t,n);const s=t.$proxies||(t.$proxies={}),r={attach:Ad,detach:Ed,resize:Ld}[n]||Fd;s[n]=r(t,n,i)}removeEventListener(t,n){const i=t.$proxies||(t.$proxies={}),s=i[n];if(!s)return;({attach:fi,detach:fi,resize:fi}[n]||Od)(t,n,s),i[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,n,i,s){return Pu(t,n,i,s)}isAttached(t){const n=t&&is(t);return!!(n&&n.isConnected)}}function jd(e){return!ns()||typeof OffscreenCanvas<"u"&&e instanceof OffscreenCanvas?kd:Id}var An;let $t=(An=class{constructor(){T(this,"x");T(this,"y");T(this,"active",!1);T(this,"options");T(this,"$animations")}tooltipPosition(t){const{x:n,y:i}=this.getProps(["x","y"],t);return{x:n,y:i}}hasValue(){return Qe(this.x)&&Qe(this.y)}getProps(t,n){const i=this.$animations;if(!n||!i)return this;const s={};return t.forEach(o=>{s[o]=i[o]&&i[o].active()?i[o]._to:this[o]}),s}},T(An,"defaults",{}),T(An,"defaultRoutes"),An);function $d(e,t){const n=e.options.ticks,i=zd(e),s=Math.min(n.maxTicksLimit||i,i),o=n.major.enabled?Bd(t):[],r=o.length,a=o[0],l=o[r-1],c=[];if(r>s)return Hd(t,c,o,r/s),c;const h=Nd(o,t,s);if(r>0){let u,d;const f=r>1?Math.round((l-a)/(r-1)):null;for(_n(t,c,h,W(f)?0:a-f,a),u=0,d=r-1;u<d;u++)_n(t,c,h,o[u],o[u+1]);return _n(t,c,h,l,W(f)?t.length:l+f),c}return _n(t,c,h),c}function zd(e){const t=e.options.offset,n=e._tickSize(),i=e._length/n+(t?0:1),s=e._maxLength/n;return Math.floor(Math.min(i,s))}function Nd(e,t,n){const i=Wd(e),s=t.length/n;if(!i)return Math.max(s,1);const o=Oh(i);for(let r=0,a=o.length-1;r<a;r++){const l=o[r];if(l>s)return l}return Math.max(s,1)}function Bd(e){const t=[];let n,i;for(n=0,i=e.length;n<i;n++)e[n].major&&t.push(n);return t}function Hd(e,t,n,i){let s=0,o=n[0],r;for(i=Math.ceil(i),r=0;r<e.length;r++)r===o&&(t.push(e[r]),s++,o=n[s*i])}function _n(e,t,n,i,s){const o=j(i,0),r=Math.min(j(s,e.length),e.length);let a=0,l,c,h;for(n=Math.ceil(n),s&&(l=s-i,n=l/Math.floor(l/n)),h=o;h<0;)a++,h=Math.round(o+a*n);for(c=Math.max(o,0);c<r;c++)c===h&&(t.push(e[c]),a++,h=Math.round(o+a*n))}function Wd(e){const t=e.length;let n,i;if(t<2)return!1;for(i=e[0],n=1;n<t;++n)if(e[n]-e[n-1]!==i)return!1;return i}const Vd=e=>e==="left"?"right":e==="right"?"left":e,vo=(e,t,n)=>t==="top"||t==="left"?e[t]+n:e[t]-n,_o=(e,t)=>Math.min(t||e,e);function wo(e,t){const n=[],i=e.length/t,s=e.length;let o=0;for(;o<s;o+=i)n.push(e[Math.floor(o)]);return n}function Yd(e,t,n){const i=e.ticks.length,s=Math.min(t,i-1),o=e._startPixel,r=e._endPixel,a=1e-6;let l=e.getPixelForTick(s),c;if(!(n&&(i===1?c=Math.max(l-o,r-l):t===0?c=(e.getPixelForTick(1)-l)/2:c=(l-e.getPixelForTick(s-1))/2,l+=s<t?c:-c,l<o-a||l>r+a)))return l}function Ud(e,t){H(e,n=>{const i=n.gc,s=i.length/2;let o;if(s>t){for(o=0;o<s;++o)delete n.data[i[o]];i.splice(0,s)}})}function Ie(e){return e.drawTicks?e.tickLength:0}function So(e,t){if(!e.display)return 0;const n=at(e.font,t),i=_t(e.padding);return(J(e.text)?e.text.length:1)*n.lineHeight+i.height}function Xd(e,t){return pe(e,{scale:t,type:"scale"})}function Kd(e,t,n){return pe(e,{tick:n,index:t,type:"tick"})}function qd(e,t,n){let i=Ki(e);return(n&&t!=="right"||!n&&t==="right")&&(i=Vd(i)),i}function Gd(e,t,n,i){const{top:s,left:o,bottom:r,right:a,chart:l}=e,{chartArea:c,scales:h}=l;let u=0,d,f,g;const m=r-s,p=a-o;if(e.isHorizontal()){if(f=ot(i,o,a),z(n)){const b=Object.keys(n)[0],x=n[b];g=h[b].getPixelForValue(x)+m-t}else n==="center"?g=(c.bottom+c.top)/2+m-t:g=vo(e,n,t);d=a-o}else{if(z(n)){const b=Object.keys(n)[0],x=n[b];f=h[b].getPixelForValue(x)-p+t}else n==="center"?f=(c.left+c.right)/2-p+t:f=vo(e,n,t);g=ot(i,r,s),u=n==="left"?-it:it}return{titleX:f,titleY:g,maxWidth:d,rotation:u}}class De extends $t{constructor(t){super(),this.id=t.id,this.type=t.type,this.options=void 0,this.ctx=t.ctx,this.chart=t.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(t){this.options=t.setContext(this.getContext()),this.axis=t.axis,this._userMin=this.parse(t.min),this._userMax=this.parse(t.max),this._suggestedMin=this.parse(t.suggestedMin),this._suggestedMax=this.parse(t.suggestedMax)}parse(t,n){return t}getUserBounds(){let{_userMin:t,_userMax:n,_suggestedMin:i,_suggestedMax:s}=this;return t=St(t,Number.POSITIVE_INFINITY),n=St(n,Number.NEGATIVE_INFINITY),i=St(i,Number.POSITIVE_INFINITY),s=St(s,Number.NEGATIVE_INFINITY),{min:St(t,i),max:St(n,s),minDefined:vt(t),maxDefined:vt(n)}}getMinMax(t){let{min:n,max:i,minDefined:s,maxDefined:o}=this.getUserBounds(),r;if(s&&o)return{min:n,max:i};const a=this.getMatchingVisibleMetas();for(let l=0,c=a.length;l<c;++l)r=a[l].controller.getMinMax(this,t),s||(n=Math.min(n,r.min)),o||(i=Math.max(i,r.max));return n=o&&n>i?i:n,i=s&&n>i?n:i,{min:St(n,St(i,n)),max:St(i,St(n,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){V(this.options.beforeUpdate,[this])}update(t,n,i){const{beginAtZero:s,grace:o,ticks:r}=this.options,a=r.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=n,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=ou(this,o,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=a<this.ticks.length;this._convertTicksToLabels(l?wo(this.ticks,a):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),r.display&&(r.autoSkip||r.source==="auto")&&(this.ticks=$d(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),l&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let t=this.options.reverse,n,i;this.isHorizontal()?(n=this.left,i=this.right):(n=this.top,i=this.bottom,t=!t),this._startPixel=n,this._endPixel=i,this._reversePixels=t,this._length=i-n,this._alignToPixels=this.options.alignToPixels}afterUpdate(){V(this.options.afterUpdate,[this])}beforeSetDimensions(){V(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){V(this.options.afterSetDimensions,[this])}_callHooks(t){this.chart.notifyPlugins(t,this.getContext()),V(this.options[t],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){V(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(t){const n=this.options.ticks;let i,s,o;for(i=0,s=t.length;i<s;i++)o=t[i],o.label=V(n.callback,[o.value,i,t],this)}afterTickToLabelConversion(){V(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){V(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const t=this.options,n=t.ticks,i=_o(this.ticks.length,t.ticks.maxTicksLimit),s=n.minRotation||0,o=n.maxRotation;let r=s,a,l,c;if(!this._isVisible()||!n.display||s>=o||i<=1||!this.isHorizontal()){this.labelRotation=s;return}const h=this._getLabelSizes(),u=h.widest.width,d=h.highest.height,f=rt(this.chart.width-u,0,this.maxWidth);a=t.offset?this.maxWidth/i:f/(i-1),u+6>a&&(a=f/(i-(t.offset?.5:1)),l=this.maxHeight-Ie(t.grid)-n.padding-So(t.title,this.chart.options.font),c=Math.sqrt(u*u+d*d),r=Eh(Math.min(Math.asin(rt((h.highest.height+6)/a,-1,1)),Math.asin(rt(l/c,-1,1))-Math.asin(rt(d/c,-1,1)))),r=Math.max(s,Math.min(o,r))),this.labelRotation=r}afterCalculateLabelRotation(){V(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){V(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:n,options:{ticks:i,title:s,grid:o}}=this,r=this._isVisible(),a=this.isHorizontal();if(r){const l=So(s,n.options.font);if(a?(t.width=this.maxWidth,t.height=Ie(o)+l):(t.height=this.maxHeight,t.width=Ie(o)+l),i.display&&this.ticks.length){const{first:c,last:h,widest:u,highest:d}=this._getLabelSizes(),f=i.padding*2,g=ae(this.labelRotation),m=Math.cos(g),p=Math.sin(g);if(a){const b=i.mirror?0:p*u.width+m*d.height;t.height=Math.min(this.maxHeight,t.height+b+f)}else{const b=i.mirror?0:m*u.width+p*d.height;t.width=Math.min(this.maxWidth,t.width+b+f)}this._calculatePadding(c,h,p,m)}}this._handleMargins(),a?(this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,n,i,s){const{ticks:{align:o,padding:r},position:a}=this.options,l=this.labelRotation!==0,c=a!=="top"&&this.axis==="x";if(this.isHorizontal()){const h=this.getPixelForTick(0)-this.left,u=this.right-this.getPixelForTick(this.ticks.length-1);let d=0,f=0;l?c?(d=s*t.width,f=i*n.height):(d=i*t.height,f=s*n.width):o==="start"?f=n.width:o==="end"?d=t.width:o!=="inner"&&(d=t.width/2,f=n.width/2),this.paddingLeft=Math.max((d-h+r)*this.width/(this.width-h),0),this.paddingRight=Math.max((f-u+r)*this.width/(this.width-u),0)}else{let h=n.height/2,u=t.height/2;o==="start"?(h=0,u=t.height):o==="end"&&(h=n.height,u=0),this.paddingTop=h+r,this.paddingBottom=u+r}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){V(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:n}=this.options;return n==="top"||n==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let n,i;for(n=0,i=t.length;n<i;n++)W(t[n].label)&&(t.splice(n,1),i--,n--);this.afterTickToLabelConversion()}_getLabelSizes(){let t=this._labelSizes;if(!t){const n=this.options.ticks.sampleSize;let i=this.ticks;n<i.length&&(i=wo(i,n)),this._labelSizes=t=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return t}_computeLabelSizes(t,n,i){const{ctx:s,_longestTextCache:o}=this,r=[],a=[],l=Math.floor(n/_o(n,i));let c=0,h=0,u,d,f,g,m,p,b,x,v,_,y;for(u=0;u<n;u+=l){if(g=t[u].label,m=this._resolveTickFontOptions(u),s.font=p=m.string,b=o[p]=o[p]||{data:{},gc:[]},x=m.lineHeight,v=_=0,!W(g)&&!J(g))v=qs(s,b.data,b.gc,v,g),_=x;else if(J(g))for(d=0,f=g.length;d<f;++d)y=g[d],!W(y)&&!J(y)&&(v=qs(s,b.data,b.gc,v,y),_+=x);r.push(v),a.push(_),c=Math.max(v,c),h=Math.max(_,h)}Ud(o,n);const w=r.indexOf(c),k=a.indexOf(h),S=P=>({width:r[P]||0,height:a[P]||0});return{first:S(0),last:S(n-1),widest:S(w),highest:S(k),widths:r,heights:a}}getLabelForValue(t){return t}getPixelForValue(t,n){return NaN}getValueForPixel(t){}getPixelForTick(t){const n=this.ticks;return t<0||t>n.length-1?null:this.getPixelForValue(n[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const n=this._startPixel+t*this._length;return Rh(this._alignToPixels?ee(this.chart,n,0):n)}getDecimalForPixel(t){const n=(t-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:n}=this;return t<0&&n<0?n:t>0&&n>0?t:0}getContext(t){const n=this.ticks||[];if(t>=0&&t<n.length){const i=n[t];return i.$context||(i.$context=Kd(this.getContext(),t,i))}return this.$context||(this.$context=Xd(this.chart.getContext(),this))}_tickSize(){const t=this.options.ticks,n=ae(this.labelRotation),i=Math.abs(Math.cos(n)),s=Math.abs(Math.sin(n)),o=this._getLabelSizes(),r=t.autoSkipPadding||0,a=o?o.widest.width+r:0,l=o?o.highest.height+r:0;return this.isHorizontal()?l*i>a*s?a/i:l/s:l*s<a*i?l/i:a/s}_isVisible(){const t=this.options.display;return t!=="auto"?!!t:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(t){const n=this.axis,i=this.chart,s=this.options,{grid:o,position:r,border:a}=s,l=o.offset,c=this.isHorizontal(),u=this.ticks.length+(l?1:0),d=Ie(o),f=[],g=a.setContext(this.getContext()),m=g.display?g.width:0,p=m/2,b=function(L){return ee(i,L,m)};let x,v,_,y,w,k,S,P,D,C,O,E;if(r==="top")x=b(this.bottom),k=this.bottom-d,P=x-p,C=b(t.top)+p,E=t.bottom;else if(r==="bottom")x=b(this.top),C=t.top,E=b(t.bottom)-p,k=x+p,P=this.top+d;else if(r==="left")x=b(this.right),w=this.right-d,S=x-p,D=b(t.left)+p,O=t.right;else if(r==="right")x=b(this.left),D=t.left,O=b(t.right)-p,w=x+p,S=this.left+d;else if(n==="x"){if(r==="center")x=b((t.top+t.bottom)/2+.5);else if(z(r)){const L=Object.keys(r)[0],I=r[L];x=b(this.chart.scales[L].getPixelForValue(I))}C=t.top,E=t.bottom,k=x+p,P=k+d}else if(n==="y"){if(r==="center")x=b((t.left+t.right)/2);else if(z(r)){const L=Object.keys(r)[0],I=r[L];x=b(this.chart.scales[L].getPixelForValue(I))}w=x-p,S=w-d,D=t.left,O=t.right}const F=j(s.ticks.maxTicksLimit,u),R=Math.max(1,Math.ceil(u/F));for(v=0;v<u;v+=R){const L=this.getContext(v),I=o.setContext(L),Y=a.setContext(L),$=I.lineWidth,N=I.color,tt=Y.dash||[],Q=Y.dashOffset,nt=I.tickWidth,U=I.tickColor,X=I.tickBorderDash||[],q=I.tickBorderDashOffset;_=Yd(this,v,l),_!==void 0&&(y=ee(i,_,$),c?w=S=D=O=y:k=P=C=E=y,f.push({tx1:w,ty1:k,tx2:S,ty2:P,x1:D,y1:C,x2:O,y2:E,width:$,color:N,borderDash:tt,borderDashOffset:Q,tickWidth:nt,tickColor:U,tickBorderDash:X,tickBorderDashOffset:q}))}return this._ticksLength=u,this._borderValue=x,f}_computeLabelItems(t){const n=this.axis,i=this.options,{position:s,ticks:o}=i,r=this.isHorizontal(),a=this.ticks,{align:l,crossAlign:c,padding:h,mirror:u}=o,d=Ie(i.grid),f=d+h,g=u?-h:f,m=-ae(this.labelRotation),p=[];let b,x,v,_,y,w,k,S,P,D,C,O,E="middle";if(s==="top")w=this.bottom-g,k=this._getXAxisLabelAlignment();else if(s==="bottom")w=this.top+g,k=this._getXAxisLabelAlignment();else if(s==="left"){const R=this._getYAxisLabelAlignment(d);k=R.textAlign,y=R.x}else if(s==="right"){const R=this._getYAxisLabelAlignment(d);k=R.textAlign,y=R.x}else if(n==="x"){if(s==="center")w=(t.top+t.bottom)/2+f;else if(z(s)){const R=Object.keys(s)[0],L=s[R];w=this.chart.scales[R].getPixelForValue(L)+f}k=this._getXAxisLabelAlignment()}else if(n==="y"){if(s==="center")y=(t.left+t.right)/2-f;else if(z(s)){const R=Object.keys(s)[0],L=s[R];y=this.chart.scales[R].getPixelForValue(L)}k=this._getYAxisLabelAlignment(d).textAlign}n==="y"&&(l==="start"?E="top":l==="end"&&(E="bottom"));const F=this._getLabelSizes();for(b=0,x=a.length;b<x;++b){v=a[b],_=v.label;const R=o.setContext(this.getContext(b));S=this.getPixelForTick(b)+o.labelOffset,P=this._resolveTickFontOptions(b),D=P.lineHeight,C=J(_)?_.length:1;const L=C/2,I=R.color,Y=R.textStrokeColor,$=R.textStrokeWidth;let N=k;r?(y=S,k==="inner"&&(b===x-1?N=this.options.reverse?"left":"right":b===0?N=this.options.reverse?"right":"left":N="center"),s==="top"?c==="near"||m!==0?O=-C*D+D/2:c==="center"?O=-F.highest.height/2-L*D+D:O=-F.highest.height+D/2:c==="near"||m!==0?O=D/2:c==="center"?O=F.highest.height/2-L*D:O=F.highest.height-C*D,u&&(O*=-1),m!==0&&!R.showLabelBackdrop&&(y+=D/2*Math.sin(m))):(w=S,O=(1-C)*D/2);let tt;if(R.showLabelBackdrop){const Q=_t(R.backdropPadding),nt=F.heights[b],U=F.widths[b];let X=O-Q.top,q=0-Q.left;switch(E){case"middle":X-=nt/2;break;case"bottom":X-=nt;break}switch(k){case"center":q-=U/2;break;case"right":q-=U;break;case"inner":b===x-1?q-=U:b>0&&(q-=U/2);break}tt={left:q,top:X,width:U+Q.width,height:nt+Q.height,color:R.backdropColor}}p.push({label:_,font:P,textOffset:O,options:{rotation:m,color:I,strokeColor:Y,strokeWidth:$,textAlign:N,textBaseline:E,translation:[y,w],backdrop:tt}})}return p}_getXAxisLabelAlignment(){const{position:t,ticks:n}=this.options;if(-ae(this.labelRotation))return t==="top"?"left":"right";let s="center";return n.align==="start"?s="left":n.align==="end"?s="right":n.align==="inner"&&(s="inner"),s}_getYAxisLabelAlignment(t){const{position:n,ticks:{crossAlign:i,mirror:s,padding:o}}=this.options,r=this._getLabelSizes(),a=t+o,l=r.widest.width;let c,h;return n==="left"?s?(h=this.right+o,i==="near"?c="left":i==="center"?(c="center",h+=l/2):(c="right",h+=l)):(h=this.right-a,i==="near"?c="right":i==="center"?(c="center",h-=l/2):(c="left",h=this.left)):n==="right"?s?(h=this.left+o,i==="near"?c="right":i==="center"?(c="center",h-=l/2):(c="left",h-=l)):(h=this.left+a,i==="near"?c="left":i==="center"?(c="center",h+=l/2):(c="right",h=this.right)):c="right",{textAlign:c,x:h}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,n=this.options.position;if(n==="left"||n==="right")return{top:0,left:this.left,bottom:t.height,right:this.right};if(n==="top"||n==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:t.width}}drawBackground(){const{ctx:t,options:{backgroundColor:n},left:i,top:s,width:o,height:r}=this;n&&(t.save(),t.fillStyle=n,t.fillRect(i,s,o,r),t.restore())}getLineWidthForValue(t){const n=this.options.grid;if(!this._isVisible()||!n.display)return 0;const s=this.ticks.findIndex(o=>o.value===t);return s>=0?n.setContext(this.getContext(s)).lineWidth:0}drawGrid(t){const n=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let o,r;const a=(l,c,h)=>{!h.width||!h.color||(i.save(),i.lineWidth=h.width,i.strokeStyle=h.color,i.setLineDash(h.borderDash||[]),i.lineDashOffset=h.borderDashOffset,i.beginPath(),i.moveTo(l.x,l.y),i.lineTo(c.x,c.y),i.stroke(),i.restore())};if(n.display)for(o=0,r=s.length;o<r;++o){const l=s[o];n.drawOnChartArea&&a({x:l.x1,y:l.y1},{x:l.x2,y:l.y2},l),n.drawTicks&&a({x:l.tx1,y:l.ty1},{x:l.tx2,y:l.ty2},{color:l.tickColor,width:l.tickWidth,borderDash:l.tickBorderDash,borderDashOffset:l.tickBorderDashOffset})}}drawBorder(){const{chart:t,ctx:n,options:{border:i,grid:s}}=this,o=i.setContext(this.getContext()),r=i.display?o.width:0;if(!r)return;const a=s.setContext(this.getContext(0)).lineWidth,l=this._borderValue;let c,h,u,d;this.isHorizontal()?(c=ee(t,this.left,r)-r/2,h=ee(t,this.right,a)+a/2,u=d=l):(u=ee(t,this.top,r)-r/2,d=ee(t,this.bottom,a)+a/2,c=h=l),n.save(),n.lineWidth=o.width,n.strokeStyle=o.color,n.beginPath(),n.moveTo(c,u),n.lineTo(h,d),n.stroke(),n.restore()}drawLabels(t){if(!this.options.ticks.display)return;const i=this.ctx,s=this._computeLabelArea();s&&Gi(i,s);const o=this.getLabelItems(t);for(const r of o){const a=r.options,l=r.font,c=r.label,h=r.textOffset;en(i,c,0,h,l,a)}s&&Ji(i)}drawTitle(){const{ctx:t,options:{position:n,title:i,reverse:s}}=this;if(!i.display)return;const o=at(i.font),r=_t(i.padding),a=i.align;let l=o.lineHeight/2;n==="bottom"||n==="center"||z(n)?(l+=r.bottom,J(i.text)&&(l+=o.lineHeight*(i.text.length-1))):l+=r.top;const{titleX:c,titleY:h,maxWidth:u,rotation:d}=Gd(this,l,n,a);en(t,i.text,0,0,o,{color:i.color,maxWidth:u,rotation:d,textAlign:qd(a,n,s),textBaseline:"middle",translation:[c,h]})}draw(t){this._isVisible()&&(this.drawBackground(),this.drawGrid(t),this.drawBorder(),this.drawTitle(),this.drawLabels(t))}_layers(){const t=this.options,n=t.ticks&&t.ticks.z||0,i=j(t.grid&&t.grid.z,-1),s=j(t.border&&t.border.z,0);return!this._isVisible()||this.draw!==De.prototype.draw?[{z:n,draw:o=>{this.draw(o)}}]:[{z:i,draw:o=>{this.drawBackground(),this.drawGrid(o),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:n,draw:o=>{this.drawLabels(o)}}]}getMatchingVisibleMetas(t){const n=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let o,r;for(o=0,r=n.length;o<r;++o){const a=n[o];a[i]===this.id&&(!t||a.type===t)&&s.push(a)}return s}_resolveTickFontOptions(t){const n=this.options.ticks.setContext(this.getContext(t));return at(n.font)}_maxDigits(){const t=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/t}}class wn{constructor(t,n,i){this.type=t,this.scope=n,this.override=i,this.items=Object.create(null)}isForType(t){return Object.prototype.isPrototypeOf.call(this.type.prototype,t.prototype)}register(t){const n=Object.getPrototypeOf(t);let i;Qd(n)&&(i=this.register(n));const s=this.items,o=t.id,r=this.scope+"."+o;if(!o)throw new Error("class does not have id: "+t);return o in s||(s[o]=t,Jd(t,r,i),this.override&&K.override(t.id,t.overrides)),r}get(t){return this.items[t]}unregister(t){const n=this.items,i=t.id,s=this.scope;i in n&&delete n[i],s&&i in K[s]&&(delete K[s][i],this.override&&delete fe[i])}}function Jd(e,t,n){const i=Je(Object.create(null),[n?K.get(n):{},K.get(t),e.defaults]);K.set(t,i),e.defaultRoutes&&Zd(t,e.defaultRoutes),e.descriptors&&K.describe(t,e.descriptors)}function Zd(e,t){Object.keys(t).forEach(n=>{const i=n.split("."),s=i.pop(),o=[e].concat(i).join("."),r=t[n].split("."),a=r.pop(),l=r.join(".");K.route(o,s,l,a)})}function Qd(e){return"id"in e&&"defaults"in e}class tf{constructor(){this.controllers=new wn(_e,"datasets",!0),this.elements=new wn($t,"elements"),this.plugins=new wn(Object,"plugins"),this.scales=new wn(De,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,n,i){[...n].forEach(s=>{const o=i||this._getRegistryForType(s);i||o.isForType(s)||o===this.plugins&&s.id?this._exec(t,o,s):H(s,r=>{const a=i||this._getRegistryForType(r);this._exec(t,a,r)})})}_exec(t,n,i){const s=Yi(t);V(i["before"+s],[],i),n[t](i),V(i["after"+s],[],i)}_getRegistryForType(t){for(let n=0;n<this._typedRegistries.length;n++){const i=this._typedRegistries[n];if(i.isForType(t))return i}return this.plugins}_get(t,n,i){const s=n.get(t);if(s===void 0)throw new Error('"'+t+'" is not a registered '+i+".");return s}}var Mt=new tf;class ef{constructor(){this._init=[]}notify(t,n,i,s){n==="beforeInit"&&(this._init=this._createDescriptors(t,!0),this._notify(this._init,t,"install"));const o=s?this._descriptors(t).filter(s):this._descriptors(t),r=this._notify(o,t,n,i);return n==="afterDestroy"&&(this._notify(o,t,"stop"),this._notify(this._init,t,"uninstall")),r}_notify(t,n,i,s){s=s||{};for(const o of t){const r=o.plugin,a=r[i],l=[n,s,o.options];if(V(a,l,r)===!1&&s.cancelable)return!1}return!0}invalidate(){W(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(t){if(this._cache)return this._cache;const n=this._cache=this._createDescriptors(t);return this._notifyStateChanges(t),n}_createDescriptors(t,n){const i=t&&t.config,s=j(i.options&&i.options.plugins,{}),o=nf(i);return s===!1&&!n?[]:of(t,o,s,n)}_notifyStateChanges(t){const n=this._oldCache||[],i=this._cache,s=(o,r)=>o.filter(a=>!r.some(l=>a.plugin.id===l.plugin.id));this._notify(s(n,i),t,"stop"),this._notify(s(i,n),t,"start")}}function nf(e){const t={},n=[],i=Object.keys(Mt.plugins.items);for(let o=0;o<i.length;o++)n.push(Mt.getPlugin(i[o]));const s=e.plugins||[];for(let o=0;o<s.length;o++){const r=s[o];n.indexOf(r)===-1&&(n.push(r),t[r.id]=!0)}return{plugins:n,localIds:t}}function sf(e,t){return!t&&e===!1?null:e===!0?{}:e}function of(e,{plugins:t,localIds:n},i,s){const o=[],r=e.getContext();for(const a of t){const l=a.id,c=sf(i[l],s);c!==null&&o.push({plugin:a,options:rf(e.config,{plugin:a,local:n[l]},c,r)})}return o}function rf(e,{plugin:t,local:n},i,s){const o=e.pluginScopeKeys(t),r=e.getOptionScopes(i,o);return n&&t.defaults&&r.push(t.defaults),e.createResolver(r,s,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function Pi(e,t){const n=K.datasets[e]||{};return((t.datasets||{})[e]||{}).indexAxis||t.indexAxis||n.indexAxis||"x"}function af(e,t){let n=e;return e==="_index_"?n=t:e==="_value_"&&(n=t==="x"?"y":"x"),n}function lf(e,t){return e===t?"_index_":"_value_"}function ko(e){if(e==="x"||e==="y"||e==="r")return e}function cf(e){if(e==="top"||e==="bottom")return"x";if(e==="left"||e==="right")return"y"}function Oi(e,...t){if(ko(e))return e;for(const n of t){const i=n.axis||cf(n.position)||e.length>1&&ko(e[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${e}' axis. Please provide 'axis' or 'position' option.`)}function Mo(e,t,n){if(n[t+"AxisID"]===e)return{axis:t}}function hf(e,t){if(t.data&&t.data.datasets){const n=t.data.datasets.filter(i=>i.xAxisID===e||i.yAxisID===e);if(n.length)return Mo(e,"x",n[0])||Mo(e,"y",n[0])}return{}}function uf(e,t){const n=fe[e.type]||{scales:{}},i=t.scales||{},s=Pi(e.type,t),o=Object.create(null);return Object.keys(i).forEach(r=>{const a=i[r];if(!z(a))return console.error(`Invalid scale configuration for scale: ${r}`);if(a._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${r}`);const l=Oi(r,a,hf(r,e),K.scales[a.type]),c=lf(l,s),h=n.scales||{};o[r]=Ve(Object.create(null),[{axis:l},a,h[l],h[c]])}),e.data.datasets.forEach(r=>{const a=r.type||e.type,l=r.indexAxis||Pi(a,t),h=(fe[a]||{}).scales||{};Object.keys(h).forEach(u=>{const d=af(u,l),f=r[d+"AxisID"]||d;o[f]=o[f]||Object.create(null),Ve(o[f],[{axis:d},i[f],h[u]])})}),Object.keys(o).forEach(r=>{const a=o[r];Ve(a,[K.scales[a.type],K.scale])}),o}function xa(e){const t=e.options||(e.options={});t.plugins=j(t.plugins,{}),t.scales=uf(e,t)}function ya(e){return e=e||{},e.datasets=e.datasets||[],e.labels=e.labels||[],e}function df(e){return e=e||{},e.data=ya(e.data),xa(e),e}const Co=new Map,va=new Set;function Sn(e,t){let n=Co.get(e);return n||(n=t(),Co.set(e,n),va.add(n)),n}const je=(e,t,n)=>{const i=Ce(t,n);i!==void 0&&e.add(i)};class ff{constructor(t){this._config=df(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=ya(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),xa(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Sn(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,n){return Sn(`${t}.transition.${n}`,()=>[[`datasets.${t}.transitions.${n}`,`transitions.${n}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,n){return Sn(`${t}-${n}`,()=>[[`datasets.${t}.elements.${n}`,`datasets.${t}`,`elements.${n}`,""]])}pluginScopeKeys(t){const n=t.id,i=this.type;return Sn(`${i}-plugin-${n}`,()=>[[`plugins.${n}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,n){const i=this._scopeCache;let s=i.get(t);return(!s||n)&&(s=new Map,i.set(t,s)),s}getOptionScopes(t,n,i){const{options:s,type:o}=this,r=this._cachedScopes(t,i),a=r.get(n);if(a)return a;const l=new Set;n.forEach(h=>{t&&(l.add(t),h.forEach(u=>je(l,t,u))),h.forEach(u=>je(l,s,u)),h.forEach(u=>je(l,fe[o]||{},u)),h.forEach(u=>je(l,K,u)),h.forEach(u=>je(l,Mi,u))});const c=Array.from(l);return c.length===0&&c.push(Object.create(null)),va.has(n)&&r.set(n,c),c}chartOptionScopes(){const{options:t,type:n}=this;return[t,fe[n]||{},K.datasets[n]||{},{type:n},K,Mi]}resolveNamedOptions(t,n,i,s=[""]){const o={$shared:!0},{resolver:r,subPrefixes:a}=Po(this._resolverCache,t,s);let l=r;if(gf(r,n)){o.$shared=!1,i=Xt(i)?i():i;const c=this.createResolver(t,i,a);l=Pe(r,i,c)}for(const c of n)o[c]=l[c];return o}createResolver(t,n,i=[""],s){const{resolver:o}=Po(this._resolverCache,t,i);return z(n)?Pe(o,n,void 0,s):o}}function Po(e,t,n){let i=e.get(t);i||(i=new Map,e.set(t,i));const s=n.join();let o=i.get(s);return o||(o={resolver:Qi(t,n),subPrefixes:n.filter(a=>!a.toLowerCase().includes("hover"))},i.set(s,o)),o}const pf=e=>z(e)&&Object.getOwnPropertyNames(e).some(t=>Xt(e[t]));function gf(e,t){const{isScriptable:n,isIndexable:i}=na(e);for(const s of t){const o=n(s),r=i(s),a=(r||o)&&e[s];if(o&&(Xt(a)||pf(a))||r&&J(a))return!0}return!1}var mf="4.4.7";const bf=["top","bottom","left","right","chartArea"];function Oo(e,t){return e==="top"||e==="bottom"||bf.indexOf(e)===-1&&t==="x"}function Do(e,t){return function(n,i){return n[e]===i[e]?n[t]-i[t]:n[e]-i[e]}}function Ao(e){const t=e.chart,n=t.options.animation;t.notifyPlugins("afterRender"),V(n&&n.onComplete,[e],t)}function xf(e){const t=e.chart,n=t.options.animation;V(n&&n.onProgress,[e],t)}function _a(e){return ns()&&typeof e=="string"?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}const Rn={},Eo=e=>{const t=_a(e);return Object.values(Rn).filter(n=>n.canvas===t).pop()};function yf(e,t,n){const i=Object.keys(e);for(const s of i){const o=+s;if(o>=t){const r=e[s];delete e[s],(n>0||o>t)&&(e[o+n]=r)}}}function vf(e,t,n,i){return!n||e.type==="mouseout"?null:i?t:e}function kn(e,t,n){return e.options.clip?e[n]:t[n]}function _f(e,t){const{xScale:n,yScale:i}=e;return n&&i?{left:kn(n,t,"left"),right:kn(n,t,"right"),top:kn(i,t,"top"),bottom:kn(i,t,"bottom")}:t}class Ct{static register(...t){Mt.add(...t),To()}static unregister(...t){Mt.remove(...t),To()}constructor(t,n){const i=this.config=new ff(n),s=_a(t),o=Eo(s);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const r=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||jd(s)),this.platform.updateConfig(i);const a=this.platform.acquireContext(s,r.aspectRatio),l=a&&a.canvas,c=l&&l.height,h=l&&l.width;if(this.id=yh(),this.ctx=a,this.canvas=l,this.width=h,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new ef,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=jh(u=>this.update(u),r.resizeDelay||0),this._dataChanges=[],Rn[this.id]=this,!a||!l){console.error("Failed to create chart: can't acquire context from the given item");return}Tt.listen(this,"complete",Ao),Tt.listen(this,"progress",xf),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:n},width:i,height:s,_aspectRatio:o}=this;return W(t)?n&&o?o:s?i/s:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return Mt}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Qs(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Gs(this.canvas,this.ctx),this}stop(){return Tt.stop(this),this}resize(t,n){Tt.running(this)?this._resizeBeforeDraw={width:t,height:n}:this._resize(t,n)}_resize(t,n){const i=this.options,s=this.canvas,o=i.maintainAspectRatio&&this.aspectRatio,r=this.platform.getMaximumSize(s,t,n,o),a=i.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=r.width,this.height=r.height,this._aspectRatio=this.aspectRatio,Qs(this,a,!0)&&(this.notifyPlugins("resize",{size:r}),V(i.onResize,[this,r],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const n=this.options.scales||{};H(n,(i,s)=>{i.id=s})}buildOrUpdateScales(){const t=this.options,n=t.scales,i=this.scales,s=Object.keys(i).reduce((r,a)=>(r[a]=!1,r),{});let o=[];n&&(o=o.concat(Object.keys(n).map(r=>{const a=n[r],l=Oi(r,a),c=l==="r",h=l==="x";return{options:a,dposition:c?"chartArea":h?"bottom":"left",dtype:c?"radialLinear":h?"category":"linear"}}))),H(o,r=>{const a=r.options,l=a.id,c=Oi(l,a),h=j(a.type,r.dtype);(a.position===void 0||Oo(a.position,c)!==Oo(r.dposition))&&(a.position=r.dposition),s[l]=!0;let u=null;if(l in i&&i[l].type===h)u=i[l];else{const d=Mt.getScale(h);u=new d({id:l,type:h,ctx:this.ctx,chart:this}),i[u.id]=u}u.init(a,t)}),H(s,(r,a)=>{r||delete i[a]}),H(i,r=>{bt.configure(this,r,r.options),bt.addBox(this,r)})}_updateMetasets(){const t=this._metasets,n=this.data.datasets.length,i=t.length;if(t.sort((s,o)=>s.index-o.index),i>n){for(let s=n;s<i;++s)this._destroyDatasetMeta(s);t.splice(n,i-n)}this._sortedMetasets=t.slice(0).sort(Do("order","index"))}_removeUnreferencedMetasets(){const{_metasets:t,data:{datasets:n}}=this;t.length>n.length&&delete this._stacks,t.forEach((i,s)=>{n.filter(o=>o===i._dataset).length===0&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){const t=[],n=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=n.length;i<s;i++){const o=n[i];let r=this.getDatasetMeta(i);const a=o.type||this.config.type;if(r.type&&r.type!==a&&(this._destroyDatasetMeta(i),r=this.getDatasetMeta(i)),r.type=a,r.indexAxis=o.indexAxis||Pi(a,this.options),r.order=o.order||0,r.index=i,r.label=""+o.label,r.visible=this.isDatasetVisible(i),r.controller)r.controller.updateIndex(i),r.controller.linkScales();else{const l=Mt.getController(a),{datasetElementType:c,dataElementType:h}=K.datasets[a];Object.assign(l,{dataElementType:Mt.getElement(h),datasetElementType:c&&Mt.getElement(c)}),r.controller=new l(this,i),t.push(r.controller)}}return this._updateMetasets(),t}_resetElements(){H(this.data.datasets,(t,n)=>{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const n=this.config;n.update();const i=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;const o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let r=0;for(let c=0,h=this.data.datasets.length;c<h;c++){const{controller:u}=this.getDatasetMeta(c),d=!s&&o.indexOf(u)===-1;u.buildOrUpdateElements(d),r=Math.max(+u.getMaxOverflow(),r)}r=this._minPadding=i.layout.autoPadding?r:0,this._updateLayout(r),s||H(o,c=>{c.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(Do("z","_idx"));const{_active:a,_lastEvent:l}=this;l?this._eventHandler(l,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){H(this.scales,t=>{bt.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,n=new Set(Object.keys(this._listeners)),i=new Set(t.events);(!Ns(n,i)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,n=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:o}of n){const r=i==="_removeElements"?-o:o;yf(t,s,r)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const n=this.data.datasets.length,i=o=>new Set(t.filter(r=>r[0]===o).map((r,a)=>a+","+r.splice(1).join(","))),s=i(0);for(let o=1;o<n;o++)if(!Ns(s,i(o)))return;return Array.from(s).map(o=>o.split(",")).map(o=>({method:o[1],start:+o[2],count:+o[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;bt.update(this,this.width,this.height,t);const n=this.chartArea,i=n.width<=0||n.height<=0;this._layers=[],H(this.boxes,s=>{i&&s.position==="chartArea"||(s.configure&&s.configure(),this._layers.push(...s._layers()))},this),this._layers.forEach((s,o)=>{s._idx=o}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let n=0,i=this.data.datasets.length;n<i;++n)this.getDatasetMeta(n).controller.configure();for(let n=0,i=this.data.datasets.length;n<i;++n)this._updateDataset(n,Xt(t)?t({datasetIndex:n}):t);this.notifyPlugins("afterDatasetsUpdate",{mode:t})}}_updateDataset(t,n){const i=this.getDatasetMeta(t),s={meta:i,index:t,mode:n,cancelable:!0};this.notifyPlugins("beforeDatasetUpdate",s)!==!1&&(i.controller._update(n),s.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",s))}render(){this.notifyPlugins("beforeRender",{cancelable:!0})!==!1&&(Tt.has(this)?this.attached&&!Tt.running(this)&&Tt.start(this):(this.draw(),Ao({chart:this})))}draw(){let t;if(this._resizeBeforeDraw){const{width:i,height:s}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(i,s)}if(this.clear(),this.width<=0||this.height<=0||this.notifyPlugins("beforeDraw",{cancelable:!0})===!1)return;const n=this._layers;for(t=0;t<n.length&&n[t].z<=0;++t)n[t].draw(this.chartArea);for(this._drawDatasets();t<n.length;++t)n[t].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(t){const n=this._sortedMetasets,i=[];let s,o;for(s=0,o=n.length;s<o;++s){const r=n[s];(!t||r.visible)&&i.push(r)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0})===!1)return;const t=this.getSortedVisibleDatasetMetas();for(let n=t.length-1;n>=0;--n)this._drawDataset(t[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const n=this.ctx,i=t._clip,s=!i.disabled,o=_f(t,this.chartArea),r={meta:t,index:t.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",r)!==!1&&(s&&Gi(n,{left:i.left===!1?0:o.left-i.left,right:i.right===!1?this.width:o.right+i.right,top:i.top===!1?0:o.top-i.top,bottom:i.bottom===!1?this.height:o.bottom+i.bottom}),t.controller.draw(),s&&Ji(n),r.cancelable=!1,this.notifyPlugins("afterDatasetDraw",r))}isPointInArea(t){return tn(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,n,i,s){const o=md.modes[n];return typeof o=="function"?o(this,t,i,s):[]}getDatasetMeta(t){const n=this.data.datasets[t],i=this._metasets;let s=i.filter(o=>o&&o._dataset===n).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:t,_dataset:n,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=pe(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const n=this.data.datasets[t];if(!n)return!1;const i=this.getDatasetMeta(t);return typeof i.hidden=="boolean"?!i.hidden:!n.hidden}setDatasetVisibility(t,n){const i=this.getDatasetMeta(t);i.hidden=!n}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,n,i){const s=i?"show":"hide",o=this.getDatasetMeta(t),r=o.controller._resolveAnimations(void 0,s);Ze(n)?(o.data[n].hidden=!i,this.update()):(this.setDatasetVisibility(t,i),r.update(o,{visible:i}),this.update(a=>a.datasetIndex===t?s:void 0))}hide(t,n){this._updateVisibility(t,n,!1)}show(t,n){this._updateVisibility(t,n,!0)}_destroyDatasetMeta(t){const n=this._metasets[t];n&&n.controller&&n.controller._destroy(),delete this._metasets[t]}_stop(){let t,n;for(this.stop(),Tt.remove(this),t=0,n=this.data.datasets.length;t<n;++t)this._destroyDatasetMeta(t)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:t,ctx:n}=this;this._stop(),this.config.clearCache(),t&&(this.unbindEvents(),Gs(t,n),this.platform.releaseContext(n),this.canvas=null,this.ctx=null),delete Rn[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...t){return this.canvas.toDataURL(...t)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const t=this._listeners,n=this.platform,i=(o,r)=>{n.addEventListener(this,o,r),t[o]=r},s=(o,r,a)=>{o.offsetX=r,o.offsetY=a,this._eventHandler(o)};H(this.options.events,o=>i(o,s))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,n=this.platform,i=(l,c)=>{n.addEventListener(this,l,c),t[l]=c},s=(l,c)=>{t[l]&&(n.removeEventListener(this,l,c),delete t[l])},o=(l,c)=>{this.canvas&&this.resize(l,c)};let r;const a=()=>{s("attach",a),this.attached=!0,this.resize(),i("resize",o),i("detach",r)};r=()=>{this.attached=!1,s("resize",o),this._stop(),this._resize(0,0),i("attach",a)},n.isAttached(this.canvas)?a():r()}unbindEvents(){H(this._listeners,(t,n)=>{this.platform.removeEventListener(this,n,t)}),this._listeners={},H(this._responsiveListeners,(t,n)=>{this.platform.removeEventListener(this,n,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,n,i){const s=i?"set":"remove";let o,r,a,l;for(n==="dataset"&&(o=this.getDatasetMeta(t[0].datasetIndex),o.controller["_"+s+"DatasetHoverStyle"]()),a=0,l=t.length;a<l;++a){r=t[a];const c=r&&this.getDatasetMeta(r.datasetIndex).controller;c&&c[s+"HoverStyle"](r.element,r.datasetIndex,r.index)}}getActiveElements(){return this._active||[]}setActiveElements(t){const n=this._active||[],i=t.map(({datasetIndex:o,index:r})=>{const a=this.getDatasetMeta(o);if(!a)throw new Error("No dataset found at index "+o);return{datasetIndex:o,element:a.data[r],index:r}});!Fn(i,n)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,n))}notifyPlugins(t,n,i){return this._plugins.notify(this,t,n,i)}isPluginEnabled(t){return this._plugins._cache.filter(n=>n.plugin.id===t).length===1}_updateHoverStyles(t,n,i){const s=this.options.hover,o=(l,c)=>l.filter(h=>!c.some(u=>h.datasetIndex===u.datasetIndex&&h.index===u.index)),r=o(n,t),a=i?t:o(t,n);r.length&&this.updateHoverStyle(r,s.mode,!1),a.length&&s.mode&&this.updateHoverStyle(a,s.mode,!0)}_eventHandler(t,n){const i={event:t,replay:n,cancelable:!0,inChartArea:this.isPointInArea(t)},s=r=>(r.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",i,s)===!1)return;const o=this._handleEvent(t,n,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(o||i.changed)&&this.render(),this}_handleEvent(t,n,i){const{_active:s=[],options:o}=this,r=n,a=this._getActiveElements(t,s,i,r),l=Mh(t),c=vf(t,this._lastEvent,i,l);i&&(this._lastEvent=null,V(o.onHover,[t,a,this],this),l&&V(o.onClick,[t,a,this],this));const h=!Fn(a,s);return(h||n)&&(this._active=a,this._updateHoverStyles(a,s,n)),this._lastEvent=c,h}_getActiveElements(t,n,i,s){if(t.type==="mouseout")return[];if(!i)return n;const o=this.options.hover;return this.getElementsAtEventForMode(t,o.mode,o,s)}}T(Ct,"defaults",K),T(Ct,"instances",Rn),T(Ct,"overrides",fe),T(Ct,"registry",Mt),T(Ct,"version",mf),T(Ct,"getChart",Eo);function To(){return H(Ct.instances,e=>e._plugins.invalidate())}function wf(e,t,n){const{startAngle:i,pixelMargin:s,x:o,y:r,outerRadius:a,innerRadius:l}=t;let c=s/a;e.beginPath(),e.arc(o,r,a,i-c,n+c),l>s?(c=s/l,e.arc(o,r,l,n+c,i-c,!0)):e.arc(o,r,s,n+it,i-it),e.closePath(),e.clip()}function Sf(e){return Zi(e,["outerStart","outerEnd","innerStart","innerEnd"])}function kf(e,t,n,i){const s=Sf(e.options.borderRadius),o=(n-t)/2,r=Math.min(o,i*t/2),a=l=>{const c=(n-Math.min(o,l))*i/2;return rt(l,0,Math.min(o,c))};return{outerStart:a(s.outerStart),outerEnd:a(s.outerEnd),innerStart:rt(s.innerStart,0,r),innerEnd:rt(s.innerEnd,0,r)}}function be(e,t,n,i){return{x:n+e*Math.cos(t),y:i+e*Math.sin(t)}}function Bn(e,t,n,i,s,o){const{x:r,y:a,startAngle:l,pixelMargin:c,innerRadius:h}=t,u=Math.max(t.outerRadius+i+n-c,0),d=h>0?h+i+n+c:0;let f=0;const g=s-l;if(i){const R=h>0?h-i:0,L=u>0?u-i:0,I=(R+L)/2,Y=I!==0?g*I/(I+i):g;f=(g-Y)/2}const m=Math.max(.001,g*u-n/Z)/u,p=(g-m)/2,b=l+p+f,x=s-p-f,{outerStart:v,outerEnd:_,innerStart:y,innerEnd:w}=kf(t,d,u,x-b),k=u-v,S=u-_,P=b+v/k,D=x-_/S,C=d+y,O=d+w,E=b+y/C,F=x-w/O;if(e.beginPath(),o){const R=(P+D)/2;if(e.arc(r,a,u,P,R),e.arc(r,a,u,R,D),_>0){const $=be(S,D,r,a);e.arc($.x,$.y,_,D,x+it)}const L=be(O,x,r,a);if(e.lineTo(L.x,L.y),w>0){const $=be(O,F,r,a);e.arc($.x,$.y,w,x+it,F+Math.PI)}const I=(x-w/d+(b+y/d))/2;if(e.arc(r,a,d,x-w/d,I,!0),e.arc(r,a,d,I,b+y/d,!0),y>0){const $=be(C,E,r,a);e.arc($.x,$.y,y,E+Math.PI,b-it)}const Y=be(k,b,r,a);if(e.lineTo(Y.x,Y.y),v>0){const $=be(k,P,r,a);e.arc($.x,$.y,v,b-it,P)}}else{e.moveTo(r,a);const R=Math.cos(P)*u+r,L=Math.sin(P)*u+a;e.lineTo(R,L);const I=Math.cos(D)*u+r,Y=Math.sin(D)*u+a;e.lineTo(I,Y)}e.closePath()}function Mf(e,t,n,i,s){const{fullCircles:o,startAngle:r,circumference:a}=t;let l=t.endAngle;if(o){Bn(e,t,n,i,l,s);for(let c=0;c<o;++c)e.fill();isNaN(a)||(l=r+(a%st||st))}return Bn(e,t,n,i,l,s),e.fill(),l}function Cf(e,t,n,i,s){const{fullCircles:o,startAngle:r,circumference:a,options:l}=t,{borderWidth:c,borderJoinStyle:h,borderDash:u,borderDashOffset:d}=l,f=l.borderAlign==="inner";if(!c)return;e.setLineDash(u||[]),e.lineDashOffset=d,f?(e.lineWidth=c*2,e.lineJoin=h||"round"):(e.lineWidth=c,e.lineJoin=h||"bevel");let g=t.endAngle;if(o){Bn(e,t,n,i,g,s);for(let m=0;m<o;++m)e.stroke();isNaN(a)||(g=r+(a%st||st))}f&&wf(e,t,g),o||(Bn(e,t,n,i,g,s),e.stroke())}class Mn extends $t{constructor(n){super();T(this,"circumference");T(this,"endAngle");T(this,"fullCircles");T(this,"innerRadius");T(this,"outerRadius");T(this,"pixelMargin");T(this,"startAngle");this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,n&&Object.assign(this,n)}inRange(n,i,s){const o=this.getProps(["x","y"],s),{angle:r,distance:a}=Ur(o,{x:n,y:i}),{startAngle:l,endAngle:c,innerRadius:h,outerRadius:u,circumference:d}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],s),f=(this.options.spacing+this.options.borderWidth)/2,g=j(d,c-l),m=Ui(r,l,c)&&l!==c,p=g>=st||m,b=Ht(a,h+f,u+f);return p&&b}getCenterPoint(n){const{x:i,y:s,startAngle:o,endAngle:r,innerRadius:a,outerRadius:l}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],n),{offset:c,spacing:h}=this.options,u=(o+r)/2,d=(a+l+h+c)/2;return{x:i+Math.cos(u)*d,y:s+Math.sin(u)*d}}tooltipPosition(n){return this.getCenterPoint(n)}draw(n){const{options:i,circumference:s}=this,o=(i.offset||0)/4,r=(i.spacing||0)/2,a=i.circular;if(this.pixelMargin=i.borderAlign==="inner"?.33:0,this.fullCircles=s>st?Math.floor(s/st):0,s===0||this.innerRadius<0||this.outerRadius<0)return;n.save();const l=(this.startAngle+this.endAngle)/2;n.translate(Math.cos(l)*o,Math.sin(l)*o);const c=1-Math.sin(Math.min(Z,s||0)),h=o*c;n.fillStyle=i.backgroundColor,n.strokeStyle=i.borderColor,Mf(n,this,h,r,a),Cf(n,this,h,r,a),n.restore()}}T(Mn,"id","arc"),T(Mn,"defaults",{borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0}),T(Mn,"defaultRoutes",{backgroundColor:"backgroundColor"}),T(Mn,"descriptors",{_scriptable:!0,_indexable:n=>n!=="borderDash"});function wa(e,t,n=t){e.lineCap=j(n.borderCapStyle,t.borderCapStyle),e.setLineDash(j(n.borderDash,t.borderDash)),e.lineDashOffset=j(n.borderDashOffset,t.borderDashOffset),e.lineJoin=j(n.borderJoinStyle,t.borderJoinStyle),e.lineWidth=j(n.borderWidth,t.borderWidth),e.strokeStyle=j(n.borderColor,t.borderColor)}function Pf(e,t,n){e.lineTo(n.x,n.y)}function Of(e){return e.stepped?Gh:e.tension||e.cubicInterpolationMode==="monotone"?Jh:Pf}function Sa(e,t,n={}){const i=e.length,{start:s=0,end:o=i-1}=n,{start:r,end:a}=t,l=Math.max(s,r),c=Math.min(o,a),h=s<r&&o<r||s>a&&o>a;return{count:i,start:l,loop:t.loop,ilen:c<l&&!h?i+c-l:c-l}}function Df(e,t,n,i){const{points:s,options:o}=t,{count:r,start:a,loop:l,ilen:c}=Sa(s,n,i),h=Of(o);let{move:u=!0,reverse:d}=i||{},f,g,m;for(f=0;f<=c;++f)g=s[(a+(d?c-f:f))%r],!g.skip&&(u?(e.moveTo(g.x,g.y),u=!1):h(e,m,g,d,o.stepped),m=g);return l&&(g=s[(a+(d?c:0))%r],h(e,m,g,d,o.stepped)),!!l}function Af(e,t,n,i){const s=t.points,{count:o,start:r,ilen:a}=Sa(s,n,i),{move:l=!0,reverse:c}=i||{};let h=0,u=0,d,f,g,m,p,b;const x=_=>(r+(c?a-_:_))%o,v=()=>{m!==p&&(e.lineTo(h,p),e.lineTo(h,m),e.lineTo(h,b))};for(l&&(f=s[x(0)],e.moveTo(f.x,f.y)),d=0;d<=a;++d){if(f=s[x(d)],f.skip)continue;const _=f.x,y=f.y,w=_|0;w===g?(y<m?m=y:y>p&&(p=y),h=(u*h+_)/++u):(v(),e.lineTo(_,y),g=w,u=0,m=p=y),b=y}v()}function Di(e){const t=e.options,n=t.borderDash&&t.borderDash.length;return!e._decimated&&!e._loop&&!t.tension&&t.cubicInterpolationMode!=="monotone"&&!t.stepped&&!n?Af:Df}function Ef(e){return e.stepped?Du:e.tension||e.cubicInterpolationMode==="monotone"?Au:re}function Tf(e,t,n,i){let s=t._path;s||(s=t._path=new Path2D,t.path(s,n,i)&&s.closePath()),wa(e,t.options),e.stroke(s)}function Rf(e,t,n,i){const{segments:s,options:o}=t,r=Di(t);for(const a of s)wa(e,o,a.style),e.beginPath(),r(e,t,a,{start:n,end:n+i-1})&&e.closePath(),e.stroke()}const Lf=typeof Path2D=="function";function Ff(e,t,n,i){Lf&&!t.options.segment?Tf(e,t,n,i):Rf(e,t,n,i)}class Cn extends $t{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,n){const i=this.options;if((i.tension||i.cubicInterpolationMode==="monotone")&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;_u(this._points,i,t,s,n),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=$u(this,this.options.segment))}first(){const t=this.segments,n=this.points;return t.length&&n[t[0].start]}last(){const t=this.segments,n=this.points,i=t.length;return i&&n[t[i-1].end]}interpolate(t,n){const i=this.options,s=t[n],o=this.points,r=Fu(this,{property:n,start:s,end:s});if(!r.length)return;const a=[],l=Ef(i);let c,h;for(c=0,h=r.length;c<h;++c){const{start:u,end:d}=r[c],f=o[u],g=o[d];if(f===g){a.push(f);continue}const m=Math.abs((s-f[n])/(g[n]-f[n])),p=l(f,g,m,i.stepped);p[n]=t[n],a.push(p)}return a.length===1?a[0]:a}pathSegment(t,n,i){return Di(this)(t,this,n,i)}path(t,n,i){const s=this.segments,o=Di(this);let r=this._loop;n=n||0,i=i||this.points.length-n;for(const a of s)r&=o(t,this,a,{start:n,end:n+i-1});return!!r}draw(t,n,i,s){const o=this.options||{};(this.points||[]).length&&o.borderWidth&&(t.save(),Ff(t,this,i,s),t.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}T(Cn,"id","line"),T(Cn,"defaults",{borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0}),T(Cn,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"}),T(Cn,"descriptors",{_scriptable:!0,_indexable:t=>t!=="borderDash"&&t!=="fill"});function Ro(e,t,n,i){const s=e.options,{[n]:o}=e.getProps([n],i);return Math.abs(t-o)<s.radius+s.hitRadius}class pi extends $t{constructor(n){super();T(this,"parsed");T(this,"skip");T(this,"stop");this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,n&&Object.assign(this,n)}inRange(n,i,s){const o=this.options,{x:r,y:a}=this.getProps(["x","y"],s);return Math.pow(n-r,2)+Math.pow(i-a,2)<Math.pow(o.hitRadius+o.radius,2)}inXRange(n,i){return Ro(this,n,"x",i)}inYRange(n,i){return Ro(this,n,"y",i)}getCenterPoint(n){const{x:i,y:s}=this.getProps(["x","y"],n);return{x:i,y:s}}size(n){n=n||this.options||{};let i=n.radius||0;i=Math.max(i,i&&n.hoverRadius||0);const s=i&&n.borderWidth||0;return(i+s)*2}draw(n,i){const s=this.options;this.skip||s.radius<.1||!tn(this,i,this.size(s)/2)||(n.strokeStyle=s.borderColor,n.lineWidth=s.borderWidth,n.fillStyle=s.backgroundColor,Ci(n,s,this.x,this.y))}getRange(){const n=this.options||{};return n.radius+n.hitRadius}}T(pi,"id","point"),T(pi,"defaults",{borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0}),T(pi,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"});function ka(e,t){const{x:n,y:i,base:s,width:o,height:r}=e.getProps(["x","y","base","width","height"],t);let a,l,c,h,u;return e.horizontal?(u=r/2,a=Math.min(n,s),l=Math.max(n,s),c=i-u,h=i+u):(u=o/2,a=n-u,l=n+u,c=Math.min(i,s),h=Math.max(i,s)),{left:a,top:c,right:l,bottom:h}}function Wt(e,t,n,i){return e?0:rt(t,n,i)}function If(e,t,n){const i=e.options.borderWidth,s=e.borderSkipped,o=ea(i);return{t:Wt(s.top,o.top,0,n),r:Wt(s.right,o.right,0,t),b:Wt(s.bottom,o.bottom,0,n),l:Wt(s.left,o.left,0,t)}}function jf(e,t,n){const{enableBorderRadius:i}=e.getProps(["enableBorderRadius"]),s=e.options.borderRadius,o=ye(s),r=Math.min(t,n),a=e.borderSkipped,l=i||z(s);return{topLeft:Wt(!l||a.top||a.left,o.topLeft,0,r),topRight:Wt(!l||a.top||a.right,o.topRight,0,r),bottomLeft:Wt(!l||a.bottom||a.left,o.bottomLeft,0,r),bottomRight:Wt(!l||a.bottom||a.right,o.bottomRight,0,r)}}function $f(e){const t=ka(e),n=t.right-t.left,i=t.bottom-t.top,s=If(e,n/2,i/2),o=jf(e,n/2,i/2);return{outer:{x:t.left,y:t.top,w:n,h:i,radius:o},inner:{x:t.left+s.l,y:t.top+s.t,w:n-s.l-s.r,h:i-s.t-s.b,radius:{topLeft:Math.max(0,o.topLeft-Math.max(s.t,s.l)),topRight:Math.max(0,o.topRight-Math.max(s.t,s.r)),bottomLeft:Math.max(0,o.bottomLeft-Math.max(s.b,s.l)),bottomRight:Math.max(0,o.bottomRight-Math.max(s.b,s.r))}}}}function gi(e,t,n,i){const s=t===null,o=n===null,a=e&&!(s&&o)&&ka(e,i);return a&&(s||Ht(t,a.left,a.right))&&(o||Ht(n,a.top,a.bottom))}function zf(e){return e.topLeft||e.topRight||e.bottomLeft||e.bottomRight}function Nf(e,t){e.rect(t.x,t.y,t.w,t.h)}function mi(e,t,n={}){const i=e.x!==n.x?-t:0,s=e.y!==n.y?-t:0,o=(e.x+e.w!==n.x+n.w?t:0)-i,r=(e.y+e.h!==n.y+n.h?t:0)-s;return{x:e.x+i,y:e.y+s,w:e.w+o,h:e.h+r,radius:e.radius}}class bi extends $t{constructor(t){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,t&&Object.assign(this,t)}draw(t){const{inflateAmount:n,options:{borderColor:i,backgroundColor:s}}=this,{inner:o,outer:r}=$f(this),a=zf(r.radius)?$n:Nf;t.save(),(r.w!==o.w||r.h!==o.h)&&(t.beginPath(),a(t,mi(r,n,o)),t.clip(),a(t,mi(o,-n,r)),t.fillStyle=i,t.fill("evenodd")),t.beginPath(),a(t,mi(o,n)),t.fillStyle=s,t.fill(),t.restore()}inRange(t,n,i){return gi(this,t,n,i)}inXRange(t,n){return gi(this,t,null,n)}inYRange(t,n){return gi(this,null,t,n)}getCenterPoint(t){const{x:n,y:i,base:s,horizontal:o}=this.getProps(["x","y","base","horizontal"],t);return{x:o?(n+s)/2:n,y:o?i:(i+s)/2}}getRange(t){return t==="x"?this.width/2:this.height/2}}T(bi,"id","bar"),T(bi,"defaults",{borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0}),T(bi,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"});const Lo=(e,t)=>{let{boxHeight:n=t,boxWidth:i=t}=e;return e.usePointStyle&&(n=Math.min(n,t),i=e.pointStyleWidth||Math.min(i,t)),{boxWidth:i,boxHeight:n,itemHeight:Math.max(t,n)}},Bf=(e,t)=>e!==null&&t!==null&&e.datasetIndex===t.datasetIndex&&e.index===t.index;class Fo extends $t{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,n,i){this.maxWidth=t,this.maxHeight=n,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let n=V(t.generateLabels,[this.chart],this)||[];t.filter&&(n=n.filter(i=>t.filter(i,this.chart.data))),t.sort&&(n=n.sort((i,s)=>t.sort(i,s,this.chart.data))),this.options.reverse&&n.reverse(),this.legendItems=n}fit(){const{options:t,ctx:n}=this;if(!t.display){this.width=this.height=0;return}const i=t.labels,s=at(i.font),o=s.size,r=this._computeTitleHeight(),{boxWidth:a,itemHeight:l}=Lo(i,o);let c,h;n.font=s.string,this.isHorizontal()?(c=this.maxWidth,h=this._fitRows(r,o,a,l)+10):(h=this.maxHeight,c=this._fitCols(r,s,a,l)+10),this.width=Math.min(c,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,n,i,s){const{ctx:o,maxWidth:r,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],h=s+a;let u=t;o.textAlign="left",o.textBaseline="middle";let d=-1,f=-h;return this.legendItems.forEach((g,m)=>{const p=i+n/2+o.measureText(g.text).width;(m===0||c[c.length-1]+p+2*a>r)&&(u+=h,c[c.length-(m>0?0:1)]=0,f+=h,d++),l[m]={left:0,top:f,row:d,width:p,height:s},c[c.length-1]+=p+a}),u}_fitCols(t,n,i,s){const{ctx:o,maxHeight:r,options:{labels:{padding:a}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],h=r-t;let u=a,d=0,f=0,g=0,m=0;return this.legendItems.forEach((p,b)=>{const{itemWidth:x,itemHeight:v}=Hf(i,n,o,p,s);b>0&&f+v+2*a>h&&(u+=d+a,c.push({width:d,height:f}),g+=d+a,m++,d=f=0),l[b]={left:g,top:f,col:m,width:x,height:v},d=Math.max(d,x),f+=v+a}),u+=d,c.push({width:d,height:f}),u}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:n,options:{align:i,labels:{padding:s},rtl:o}}=this,r=ve(o,this.left,this.width);if(this.isHorizontal()){let a=0,l=ot(i,this.left+s,this.right-this.lineWidths[a]);for(const c of n)a!==c.row&&(a=c.row,l=ot(i,this.left+s,this.right-this.lineWidths[a])),c.top+=this.top+t+s,c.left=r.leftForLtr(r.x(l),c.width),l+=c.width+s}else{let a=0,l=ot(i,this.top+t+s,this.bottom-this.columnSizes[a].height);for(const c of n)c.col!==a&&(a=c.col,l=ot(i,this.top+t+s,this.bottom-this.columnSizes[a].height)),c.top=l,c.left+=this.left+s,c.left=r.leftForLtr(r.x(c.left),c.width),l+=c.height+s}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const t=this.ctx;Gi(t,this),this._draw(),Ji(t)}}_draw(){const{options:t,columnSizes:n,lineWidths:i,ctx:s}=this,{align:o,labels:r}=t,a=K.color,l=ve(t.rtl,this.left,this.width),c=at(r.font),{padding:h}=r,u=c.size,d=u/2;let f;this.drawTitle(),s.textAlign=l.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=c.string;const{boxWidth:g,boxHeight:m,itemHeight:p}=Lo(r,u),b=function(w,k,S){if(isNaN(g)||g<=0||isNaN(m)||m<0)return;s.save();const P=j(S.lineWidth,1);if(s.fillStyle=j(S.fillStyle,a),s.lineCap=j(S.lineCap,"butt"),s.lineDashOffset=j(S.lineDashOffset,0),s.lineJoin=j(S.lineJoin,"miter"),s.lineWidth=P,s.strokeStyle=j(S.strokeStyle,a),s.setLineDash(j(S.lineDash,[])),r.usePointStyle){const D={radius:m*Math.SQRT2/2,pointStyle:S.pointStyle,rotation:S.rotation,borderWidth:P},C=l.xPlus(w,g/2),O=k+d;ta(s,D,C,O,r.pointStyleWidth&&g)}else{const D=k+Math.max((u-m)/2,0),C=l.leftForLtr(w,g),O=ye(S.borderRadius);s.beginPath(),Object.values(O).some(E=>E!==0)?$n(s,{x:C,y:D,w:g,h:m,radius:O}):s.rect(C,D,g,m),s.fill(),P!==0&&s.stroke()}s.restore()},x=function(w,k,S){en(s,S.text,w,k+p/2,c,{strikethrough:S.hidden,textAlign:l.textAlign(S.textAlign)})},v=this.isHorizontal(),_=this._computeTitleHeight();v?f={x:ot(o,this.left+h,this.right-i[0]),y:this.top+h+_,line:0}:f={x:this.left+h,y:ot(o,this.top+_+h,this.bottom-n[0].height),line:0},aa(this.ctx,t.textDirection);const y=p+h;this.legendItems.forEach((w,k)=>{s.strokeStyle=w.fontColor,s.fillStyle=w.fontColor;const S=s.measureText(w.text).width,P=l.textAlign(w.textAlign||(w.textAlign=r.textAlign)),D=g+d+S;let C=f.x,O=f.y;l.setWidth(this.width),v?k>0&&C+D+h>this.right&&(O=f.y+=y,f.line++,C=f.x=ot(o,this.left+h,this.right-i[f.line])):k>0&&O+y>this.bottom&&(C=f.x=C+n[f.line].width+h,f.line++,O=f.y=ot(o,this.top+_+h,this.bottom-n[f.line].height));const E=l.x(C);if(b(E,O,w),C=$h(P,C+g+d,v?C+D:this.right,t.rtl),x(l.x(C),O,w),v)f.x+=D+h;else if(typeof w.text!="string"){const F=c.lineHeight;f.y+=Ma(w,F)+h}else f.y+=y}),la(this.ctx,t.textDirection)}drawTitle(){const t=this.options,n=t.title,i=at(n.font),s=_t(n.padding);if(!n.display)return;const o=ve(t.rtl,this.left,this.width),r=this.ctx,a=n.position,l=i.size/2,c=s.top+l;let h,u=this.left,d=this.width;if(this.isHorizontal())d=Math.max(...this.lineWidths),h=this.top+c,u=ot(t.align,u,this.right-d);else{const g=this.columnSizes.reduce((m,p)=>Math.max(m,p.height),0);h=c+ot(t.align,this.top,this.bottom-g-t.labels.padding-this._computeTitleHeight())}const f=ot(a,u,u+d);r.textAlign=o.textAlign(Ki(a)),r.textBaseline="middle",r.strokeStyle=n.color,r.fillStyle=n.color,r.font=i.string,en(r,n.text,f,h,i)}_computeTitleHeight(){const t=this.options.title,n=at(t.font),i=_t(t.padding);return t.display?n.lineHeight+i.height:0}_getLegendItemAt(t,n){let i,s,o;if(Ht(t,this.left,this.right)&&Ht(n,this.top,this.bottom)){for(o=this.legendHitBoxes,i=0;i<o.length;++i)if(s=o[i],Ht(t,s.left,s.left+s.width)&&Ht(n,s.top,s.top+s.height))return this.legendItems[i]}return null}handleEvent(t){const n=this.options;if(!Yf(t.type,n))return;const i=this._getLegendItemAt(t.x,t.y);if(t.type==="mousemove"||t.type==="mouseout"){const s=this._hoveredItem,o=Bf(s,i);s&&!o&&V(n.onLeave,[t,s,this],this),this._hoveredItem=i,i&&!o&&V(n.onHover,[t,i,this],this)}else i&&V(n.onClick,[t,i,this],this)}}function Hf(e,t,n,i,s){const o=Wf(i,e,t,n),r=Vf(s,i,t.lineHeight);return{itemWidth:o,itemHeight:r}}function Wf(e,t,n,i){let s=e.text;return s&&typeof s!="string"&&(s=s.reduce((o,r)=>o.length>r.length?o:r)),t+n.size/2+i.measureText(s).width}function Vf(e,t,n){let i=e;return typeof t.text!="string"&&(i=Ma(t,n)),i}function Ma(e,t){const n=e.text?e.text.length:0;return t*n}function Yf(e,t){return!!((e==="mousemove"||e==="mouseout")&&(t.onHover||t.onLeave)||t.onClick&&(e==="click"||e==="mouseup"))}var kg={id:"legend",_element:Fo,start(e,t,n){const i=e.legend=new Fo({ctx:e.ctx,options:n,chart:e});bt.configure(e,i,n),bt.addBox(e,i)},stop(e){bt.removeBox(e,e.legend),delete e.legend},beforeUpdate(e,t,n){const i=e.legend;bt.configure(e,i,n),i.options=n},afterUpdate(e){const t=e.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(e,t){t.replay||e.legend.handleEvent(t.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(e,t,n){const i=t.datasetIndex,s=n.chart;s.isDatasetVisible(i)?(s.hide(i),t.hidden=!0):(s.show(i),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:e=>e.chart.options.color,boxWidth:40,padding:10,generateLabels(e){const t=e.data.datasets,{labels:{usePointStyle:n,pointStyle:i,textAlign:s,color:o,useBorderRadius:r,borderRadius:a}}=e.legend.options;return e._getSortedDatasetMetas().map(l=>{const c=l.controller.getStyle(n?0:void 0),h=_t(c.borderWidth);return{text:t[l.index].label,fillStyle:c.backgroundColor,fontColor:o,hidden:!l.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:c.borderColor,pointStyle:i||c.pointStyle,rotation:c.rotation,textAlign:s||c.textAlign,borderRadius:r&&(a||c.borderRadius),datasetIndex:l.index}},this)}},title:{color:e=>e.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:e=>!e.startsWith("on"),labels:{_scriptable:e=>!["generateLabels","filter","sort"].includes(e)}}};class Ca extends $t{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,n){const i=this.options;if(this.left=0,this.top=0,!i.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=t,this.height=this.bottom=n;const s=J(i.text)?i.text.length:1;this._padding=_t(i.padding);const o=s*at(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return t==="top"||t==="bottom"}_drawArgs(t){const{top:n,left:i,bottom:s,right:o,options:r}=this,a=r.align;let l=0,c,h,u;return this.isHorizontal()?(h=ot(a,i,o),u=n+t,c=o-i):(r.position==="left"?(h=i+t,u=ot(a,s,n),l=Z*-.5):(h=o-t,u=ot(a,n,s),l=Z*.5),c=s-n),{titleX:h,titleY:u,maxWidth:c,rotation:l}}draw(){const t=this.ctx,n=this.options;if(!n.display)return;const i=at(n.font),o=i.lineHeight/2+this._padding.top,{titleX:r,titleY:a,maxWidth:l,rotation:c}=this._drawArgs(o);en(t,n.text,0,0,i,{color:n.color,maxWidth:l,rotation:c,textAlign:Ki(n.align),textBaseline:"middle",translation:[r,a]})}}function Uf(e,t){const n=new Ca({ctx:e.ctx,options:t,chart:e});bt.configure(e,n,t),bt.addBox(e,n),e.titleBlock=n}var Mg={id:"title",_element:Ca,start(e,t,n){Uf(e,n)},stop(e){const t=e.titleBlock;bt.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){const i=e.titleBlock;bt.configure(e,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Ne={average(e){if(!e.length)return!1;let t,n,i=new Set,s=0,o=0;for(t=0,n=e.length;t<n;++t){const a=e[t].element;if(a&&a.hasValue()){const l=a.tooltipPosition();i.add(l.x),s+=l.y,++o}}return o===0||i.size===0?!1:{x:[...i].reduce((a,l)=>a+l)/i.size,y:s/o}},nearest(e,t){if(!e.length)return!1;let n=t.x,i=t.y,s=Number.POSITIVE_INFINITY,o,r,a;for(o=0,r=e.length;o<r;++o){const l=e[o].element;if(l&&l.hasValue()){const c=l.getCenterPoint(),h=ki(t,c);h<s&&(s=h,a=l)}}if(a){const l=a.tooltipPosition();n=l.x,i=l.y}return{x:n,y:i}}};function kt(e,t){return t&&(J(t)?Array.prototype.push.apply(e,t):e.push(t)),e}function Rt(e){return(typeof e=="string"||e instanceof String)&&e.indexOf(` `)>-1?e.split(` -`):e}function Xf(e,t){const{element:n,datasetIndex:i,index:s}=t,o=e.getDatasetMeta(i).controller,{label:r,value:a}=o.getLabelAndValue(s);return{chart:e,label:r,parsed:o.getParsed(s),raw:e.data.datasets[i].data[s],formattedValue:a,dataset:o.getDataset(),dataIndex:s,datasetIndex:i,element:n}}function Io(e,t){const n=e.chart.ctx,{body:i,footer:s,title:o}=e,{boxWidth:r,boxHeight:a}=t,l=at(t.bodyFont),c=at(t.titleFont),h=at(t.footerFont),u=o.length,d=s.length,f=i.length,g=_t(t.padding);let m=g.height,p=0,b=i.reduce((_,y)=>_+y.before.length+y.lines.length+y.after.length,0);if(b+=e.beforeBody.length+e.afterBody.length,u&&(m+=u*c.lineHeight+(u-1)*t.titleSpacing+t.titleMarginBottom),b){const _=t.displayColors?Math.max(a,l.lineHeight):l.lineHeight;m+=f*_+(b-f)*l.lineHeight+(b-1)*t.bodySpacing}d&&(m+=t.footerMarginTop+d*h.lineHeight+(d-1)*t.footerSpacing);let x=0;const v=function(_){p=Math.max(p,n.measureText(_).width+x)};return n.save(),n.font=c.string,H(e.title,v),n.font=l.string,H(e.beforeBody.concat(e.afterBody),v),x=t.displayColors?r+2+t.boxPadding:0,H(i,_=>{H(_.before,v),H(_.lines,v),H(_.after,v)}),x=0,n.font=h.string,H(e.footer,v),n.restore(),p+=g.width,{width:p,height:m}}function Kf(e,t){const{y:n,height:i}=t;return n<i/2?"top":n>e.height-i/2?"bottom":"center"}function qf(e,t,n,i){const{x:s,width:o}=i,r=n.caretSize+n.caretPadding;if(e==="left"&&s+o+r>t.width||e==="right"&&s-o-r<0)return!0}function Gf(e,t,n,i){const{x:s,width:o}=n,{width:r,chartArea:{left:a,right:l}}=e;let c="center";return i==="center"?c=s<=(a+l)/2?"left":"right":s<=o/2?c="left":s>=r-o/2&&(c="right"),qf(c,e,t,n)&&(c="center"),c}function jo(e,t,n){const i=n.yAlign||t.yAlign||Kf(e,n);return{xAlign:n.xAlign||t.xAlign||Gf(e,t,n,i),yAlign:i}}function Jf(e,t){let{x:n,width:i}=e;return t==="right"?n-=i:t==="center"&&(n-=i/2),n}function Zf(e,t,n){let{y:i,height:s}=e;return t==="top"?i+=n:t==="bottom"?i-=s+n:i-=s/2,i}function $o(e,t,n,i){const{caretSize:s,caretPadding:o,cornerRadius:r}=e,{xAlign:a,yAlign:l}=n,c=s+o,{topLeft:h,topRight:u,bottomLeft:d,bottomRight:f}=ye(r);let g=Jf(t,a);const m=Zf(t,l,c);return l==="center"?a==="left"?g+=c:a==="right"&&(g-=c):a==="left"?g-=Math.max(h,d)+s:a==="right"&&(g+=Math.max(u,f)+s),{x:rt(g,0,i.width-t.width),y:rt(m,0,i.height-t.height)}}function Pn(e,t,n){const i=_t(n.padding);return t==="center"?e.x+e.width/2:t==="right"?e.x+e.width-i.right:e.x+i.left}function zo(e){return kt([],Rt(e))}function Qf(e,t,n){return pe(e,{tooltip:t,tooltipItems:n,type:"tooltip"})}function No(e,t){const n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}const Pa={beforeTitle:Et,title(e){if(e.length>0){const t=e[0],n=t.chart.data.labels,i=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndex<i)return n[t.dataIndex]}return""},afterTitle:Et,beforeBody:Et,beforeLabel:Et,label(e){if(this&&this.options&&this.options.mode==="dataset")return e.label+": "+e.formattedValue||e.formattedValue;let t=e.dataset.label||"";t&&(t+=": ");const n=e.formattedValue;return W(n)||(t+=n),t},labelColor(e){const n=e.chart.getDatasetMeta(e.datasetIndex).controller.getStyle(e.dataIndex);return{borderColor:n.borderColor,backgroundColor:n.backgroundColor,borderWidth:n.borderWidth,borderDash:n.borderDash,borderDashOffset:n.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(e){const n=e.chart.getDatasetMeta(e.datasetIndex).controller.getStyle(e.dataIndex);return{pointStyle:n.pointStyle,rotation:n.rotation}},afterLabel:Et,afterBody:Et,beforeFooter:Et,footer:Et,afterFooter:Et};function ct(e,t,n,i){const s=e[t].call(n,i);return typeof s>"u"?Pa[t].call(n,i):s}class Ai extends $t{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const n=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&n.options.animation&&i.animations,o=new ha(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=Qf(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,n){const{callbacks:i}=n,s=ct(i,"beforeTitle",this,t),o=ct(i,"title",this,t),r=ct(i,"afterTitle",this,t);let a=[];return a=kt(a,Rt(s)),a=kt(a,Rt(o)),a=kt(a,Rt(r)),a}getBeforeBody(t,n){return zo(ct(n.callbacks,"beforeBody",this,t))}getBody(t,n){const{callbacks:i}=n,s=[];return H(t,o=>{const r={before:[],lines:[],after:[]},a=No(i,o);kt(r.before,Rt(ct(a,"beforeLabel",this,o))),kt(r.lines,ct(a,"label",this,o)),kt(r.after,Rt(ct(a,"afterLabel",this,o))),s.push(r)}),s}getAfterBody(t,n){return zo(ct(n.callbacks,"afterBody",this,t))}getFooter(t,n){const{callbacks:i}=n,s=ct(i,"beforeFooter",this,t),o=ct(i,"footer",this,t),r=ct(i,"afterFooter",this,t);let a=[];return a=kt(a,Rt(s)),a=kt(a,Rt(o)),a=kt(a,Rt(r)),a}_createItems(t){const n=this._active,i=this.chart.data,s=[],o=[],r=[];let a=[],l,c;for(l=0,c=n.length;l<c;++l)a.push(Xf(this.chart,n[l]));return t.filter&&(a=a.filter((h,u,d)=>t.filter(h,u,d,i))),t.itemSort&&(a=a.sort((h,u)=>t.itemSort(h,u,i))),H(a,h=>{const u=No(t.callbacks,h);s.push(ct(u,"labelColor",this,h)),o.push(ct(u,"labelPointStyle",this,h)),r.push(ct(u,"labelTextColor",this,h))}),this.labelColors=s,this.labelPointStyles=o,this.labelTextColors=r,this.dataPoints=a,a}update(t,n){const i=this.options.setContext(this.getContext()),s=this._active;let o,r=[];if(!s.length)this.opacity!==0&&(o={opacity:0});else{const a=Ne[i.position].call(this,s,this._eventPosition);r=this._createItems(i),this.title=this.getTitle(r,i),this.beforeBody=this.getBeforeBody(r,i),this.body=this.getBody(r,i),this.afterBody=this.getAfterBody(r,i),this.footer=this.getFooter(r,i);const l=this._size=Io(this,i),c=Object.assign({},a,l),h=jo(this.chart,i,c),u=$o(i,c,h,this.chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,o={opacity:1,x:u.x,y:u.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=r,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(t,n,i,s){const o=this.getCaretPosition(t,i,s);n.lineTo(o.x1,o.y1),n.lineTo(o.x2,o.y2),n.lineTo(o.x3,o.y3)}getCaretPosition(t,n,i){const{xAlign:s,yAlign:o}=this,{caretSize:r,cornerRadius:a}=i,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:u}=ye(a),{x:d,y:f}=t,{width:g,height:m}=n;let p,b,x,v,_,y;return o==="center"?(_=f+m/2,s==="left"?(p=d,b=p-r,v=_+r,y=_-r):(p=d+g,b=p+r,v=_-r,y=_+r),x=p):(s==="left"?b=d+Math.max(l,h)+r:s==="right"?b=d+g-Math.max(c,u)-r:b=this.caretX,o==="top"?(v=f,_=v-r,p=b-r,x=b+r):(v=f+m,_=v+r,p=b+r,x=b-r),y=v),{x1:p,x2:b,x3:x,y1:v,y2:_,y3:y}}drawTitle(t,n,i){const s=this.title,o=s.length;let r,a,l;if(o){const c=ve(i.rtl,this.x,this.width);for(t.x=Pn(this,i.titleAlign,i),n.textAlign=c.textAlign(i.titleAlign),n.textBaseline="middle",r=at(i.titleFont),a=i.titleSpacing,n.fillStyle=i.titleColor,n.font=r.string,l=0;l<o;++l)n.fillText(s[l],c.x(t.x),t.y+r.lineHeight/2),t.y+=r.lineHeight+a,l+1===o&&(t.y+=i.titleMarginBottom-a)}}_drawColorBox(t,n,i,s,o){const r=this.labelColors[i],a=this.labelPointStyles[i],{boxHeight:l,boxWidth:c}=o,h=at(o.bodyFont),u=Pn(this,"left",o),d=s.x(u),f=l<h.lineHeight?(h.lineHeight-l)/2:0,g=n.y+f;if(o.usePointStyle){const m={radius:Math.min(c,l)/2,pointStyle:a.pointStyle,rotation:a.rotation,borderWidth:1},p=s.leftForLtr(d,c)+c/2,b=g+l/2;t.strokeStyle=o.multiKeyBackground,t.fillStyle=o.multiKeyBackground,Ci(t,m,p,b),t.strokeStyle=r.borderColor,t.fillStyle=r.backgroundColor,Ci(t,m,p,b)}else{t.lineWidth=z(r.borderWidth)?Math.max(...Object.values(r.borderWidth)):r.borderWidth||1,t.strokeStyle=r.borderColor,t.setLineDash(r.borderDash||[]),t.lineDashOffset=r.borderDashOffset||0;const m=s.leftForLtr(d,c),p=s.leftForLtr(s.xPlus(d,1),c-2),b=ye(r.borderRadius);Object.values(b).some(x=>x!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,$n(t,{x:m,y:g,w:c,h:l,radius:b}),t.fill(),t.stroke(),t.fillStyle=r.backgroundColor,t.beginPath(),$n(t,{x:p,y:g+1,w:c-2,h:l-2,radius:b}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(m,g,c,l),t.strokeRect(m,g,c,l),t.fillStyle=r.backgroundColor,t.fillRect(p,g+1,c-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,n,i){const{body:s}=this,{bodySpacing:o,bodyAlign:r,displayColors:a,boxHeight:l,boxWidth:c,boxPadding:h}=i,u=at(i.bodyFont);let d=u.lineHeight,f=0;const g=ve(i.rtl,this.x,this.width),m=function(S){n.fillText(S,g.x(t.x+f),t.y+d/2),t.y+=d+o},p=g.textAlign(r);let b,x,v,_,y,w,k;for(n.textAlign=r,n.textBaseline="middle",n.font=u.string,t.x=Pn(this,p,i),n.fillStyle=i.bodyColor,H(this.beforeBody,m),f=a&&p!=="right"?r==="center"?c/2+h:c+2+h:0,_=0,w=s.length;_<w;++_){for(b=s[_],x=this.labelTextColors[_],n.fillStyle=x,H(b.before,m),v=b.lines,a&&v.length&&(this._drawColorBox(n,t,_,g,i),d=Math.max(u.lineHeight,l)),y=0,k=v.length;y<k;++y)m(v[y]),d=u.lineHeight;H(b.after,m)}f=0,d=u.lineHeight,H(this.afterBody,m),t.y-=o}drawFooter(t,n,i){const s=this.footer,o=s.length;let r,a;if(o){const l=ve(i.rtl,this.x,this.width);for(t.x=Pn(this,i.footerAlign,i),t.y+=i.footerMarginTop,n.textAlign=l.textAlign(i.footerAlign),n.textBaseline="middle",r=at(i.footerFont),n.fillStyle=i.footerColor,n.font=r.string,a=0;a<o;++a)n.fillText(s[a],l.x(t.x),t.y+r.lineHeight/2),t.y+=r.lineHeight+i.footerSpacing}}drawBackground(t,n,i,s){const{xAlign:o,yAlign:r}=this,{x:a,y:l}=t,{width:c,height:h}=i,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:g}=ye(s.cornerRadius);n.fillStyle=s.backgroundColor,n.strokeStyle=s.borderColor,n.lineWidth=s.borderWidth,n.beginPath(),n.moveTo(a+u,l),r==="top"&&this.drawCaret(t,n,i,s),n.lineTo(a+c-d,l),n.quadraticCurveTo(a+c,l,a+c,l+d),r==="center"&&o==="right"&&this.drawCaret(t,n,i,s),n.lineTo(a+c,l+h-g),n.quadraticCurveTo(a+c,l+h,a+c-g,l+h),r==="bottom"&&this.drawCaret(t,n,i,s),n.lineTo(a+f,l+h),n.quadraticCurveTo(a,l+h,a,l+h-f),r==="center"&&o==="left"&&this.drawCaret(t,n,i,s),n.lineTo(a,l+u),n.quadraticCurveTo(a,l,a+u,l),n.closePath(),n.fill(),s.borderWidth>0&&n.stroke()}_updateAnimationTarget(t){const n=this.chart,i=this.$animations,s=i&&i.x,o=i&&i.y;if(s||o){const r=Ne[t.position].call(this,this._active,this._eventPosition);if(!r)return;const a=this._size=Io(this,t),l=Object.assign({},r,this._size),c=jo(n,t,l),h=$o(t,l,c,n);(s._to!==h.x||o._to!==h.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=a.width,this.height=a.height,this.caretX=r.x,this.caretY=r.y,this._resolveAnimations().update(this,h))}}_willRender(){return!!this.opacity}draw(t){const n=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(n);const s={width:this.width,height:this.height},o={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const r=_t(n.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(o,t,s,n),aa(t,n.textDirection),o.y+=r.top,this.drawTitle(o,t,n),this.drawBody(o,t,n),this.drawFooter(o,t,n),la(t,n.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,n){const i=this._active,s=t.map(({datasetIndex:a,index:l})=>{const c=this.chart.getDatasetMeta(a);if(!c)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:c.data[l],index:l}}),o=!Fn(i,s),r=this._positionChanged(s,n);(o||r)&&(this._active=s,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,n,i=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,o=this._active||[],r=this._getActiveElements(t,o,n,i),a=this._positionChanged(r,t),l=n||!Fn(r,o)||a;return l&&(this._active=r,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,n))),l}_getActiveElements(t,n,i,s){const o=this.options;if(t.type==="mouseout")return[];if(!s)return n.filter(a=>this.chart.data.datasets[a.datasetIndex]&&this.chart.getDatasetMeta(a.datasetIndex).controller.getParsed(a.index)!==void 0);const r=this.chart.getElementsAtEventForMode(t,o.mode,o,i);return o.reverse&&r.reverse(),r}_positionChanged(t,n){const{caretX:i,caretY:s,options:o}=this,r=Ne[o.position].call(this,t,n);return r!==!1&&(i!==r.x||s!==r.y)}}T(Ai,"positioners",Ne);var Cg={id:"tooltip",_element:Ai,positioners:Ne,afterInit(e,t,n){n&&(e.tooltip=new Ai({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){const t=e.tooltip;if(t&&t._willRender()){const n={tooltip:t};if(e.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",n)}},afterEvent(e,t){if(e.tooltip){const n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Pa},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:e=>e!=="filter"&&e!=="itemSort"&&e!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const tp=(e,t,n,i)=>(typeof t=="string"?(n=e.push(t)-1,i.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function ep(e,t,n,i){const s=e.indexOf(t);if(s===-1)return tp(e,t,n,i);const o=e.lastIndexOf(t);return s!==o?n:s}const np=(e,t)=>e===null?null:rt(Math.round(e),0,t);function Bo(e){const t=this.getLabels();return e>=0&&e<t.length?t[e]:e}class Ho extends De{constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const n=this._addedLabels;if(n.length){const i=this.getLabels();for(const{index:s,label:o}of n)i[s]===o&&i.splice(s,1);this._addedLabels=[]}super.init(t)}parse(t,n){if(W(t))return null;const i=this.getLabels();return n=isFinite(n)&&i[n]===t?n:ep(i,t,j(n,t),this._addedLabels),np(n,i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:n}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);this.options.bounds==="ticks"&&(t||(i=0),n||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,n=this.max,i=this.options.offset,s=[];let o=this.getLabels();o=t===0&&n===o.length-1?o:o.slice(t,n+1),this._valueRange=Math.max(o.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let r=t;r<=n;r++)s.push({value:r});return s}getLabelForValue(t){return Bo.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return typeof t!="number"&&(t=this.parse(t)),t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const n=this.ticks;return t<0||t>n.length-1?null:this.getPixelForValue(n[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}T(Ho,"id","category"),T(Ho,"defaults",{ticks:{callback:Bo}});function ip(e,t){const n=[],{bounds:s,step:o,min:r,max:a,precision:l,count:c,maxTicks:h,maxDigits:u,includeBounds:d}=e,f=o||1,g=h-1,{min:m,max:p}=t,b=!W(r),x=!W(a),v=!W(c),_=(p-m)/(u+1);let y=Hs((p-m)/g/f)*f,w,k,S,P;if(y<1e-14&&!b&&!x)return[{value:m},{value:p}];P=Math.ceil(p/y)-Math.floor(m/y),P>g&&(y=Hs(P*y/g/f)*f),W(l)||(w=Math.pow(10,l),y=Math.ceil(y*w)/w),s==="ticks"?(k=Math.floor(m/y)*y,S=Math.ceil(p/y)*y):(k=m,S=p),b&&x&&o&&Dh((a-r)/o,y/1e3)?(P=Math.round(Math.min((a-r)/y,h)),y=(a-r)/P,k=r,S=a):v?(k=b?r:k,S=x?a:S,P=c-1,y=(S-k)/P):(P=(S-k)/y,Ye(P,Math.round(P),y/1e3)?P=Math.round(P):P=Math.ceil(P));const D=Math.max(Ws(y),Ws(k));w=Math.pow(10,W(l)?D:l),k=Math.round(k*w)/w,S=Math.round(S*w)/w;let C=0;for(b&&(d&&k!==r?(n.push({value:r}),k<r&&C++,Ye(Math.round((k+C*y)*w)/w,r,Wo(r,_,e))&&C++):k<r&&C++);C<P;++C){const O=Math.round((k+C*y)*w)/w;if(x&&O>a)break;n.push({value:O})}return x&&d&&S!==a?n.length&&Ye(n[n.length-1].value,a,Wo(a,_,e))?n[n.length-1].value=a:n.push({value:a}):(!x||S===a)&&n.push({value:S}),n}function Wo(e,t,{horizontal:n,minRotation:i}){const s=ae(i),o=(n?Math.sin(s):Math.cos(s))||.001,r=.75*t*(""+e).length;return Math.min(t/o,r)}class sp extends De{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,n){return W(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:n,maxDefined:i}=this.getUserBounds();let{min:s,max:o}=this;const r=l=>s=n?s:l,a=l=>o=i?o:l;if(t){const l=Dt(s),c=Dt(o);l<0&&c<0?a(0):l>0&&c>0&&r(0)}if(s===o){let l=o===0?1:Math.abs(o*.05);a(o+l),t||r(s-l)}this.min=s,this.max=o}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:n,stepSize:i}=t,s;return i?(s=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),n=n||11),n&&(s=Math.min(n,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,n=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s={maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},o=this._range||this,r=ip(s,o);return t.bounds==="ticks"&&Ah(r,this,"value"),t.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){const t=this.ticks;let n=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-n)/Math.max(t.length-1,1)/2;n-=s,i+=s}this._startValue=n,this._endValue=i,this._valueRange=i-n}getLabelForValue(t){return Jr(t,this.chart.options.locale,this.options.ticks.format)}}class Vo extends sp{determineDataLimits(){const{min:t,max:n}=this.getMinMax(!0);this.min=vt(t)?t:0,this.max=vt(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),n=t?this.width:this.height,i=ae(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,o.lineHeight/s))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}T(Vo,"id","linear"),T(Vo,"defaults",{ticks:{callback:Qr.formatters.numeric}});const Kn={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ht=Object.keys(Kn);function Yo(e,t){return e-t}function Uo(e,t){if(W(t))return null;const n=e._adapter,{parser:i,round:s,isoWeekday:o}=e._parseOpts;let r=t;return typeof i=="function"&&(r=i(r)),vt(r)||(r=typeof i=="string"?n.parse(r,i):n.parse(r)),r===null?null:(s&&(r=s==="week"&&(Qe(o)||o===!0)?n.startOf(r,"isoWeek",o):n.startOf(r,s)),+r)}function Xo(e,t,n,i){const s=ht.length;for(let o=ht.indexOf(e);o<s-1;++o){const r=Kn[ht[o]],a=r.steps?r.steps:Number.MAX_SAFE_INTEGER;if(r.common&&Math.ceil((n-t)/(a*r.size))<=i)return ht[o]}return ht[s-1]}function op(e,t,n,i,s){for(let o=ht.length-1;o>=ht.indexOf(n);o--){const r=ht[o];if(Kn[r].common&&e._adapter.diff(s,i,r)>=t-1)return r}return ht[n?ht.indexOf(n):0]}function rp(e){for(let t=ht.indexOf(e)+1,n=ht.length;t<n;++t)if(Kn[ht[t]].common)return ht[t]}function Ko(e,t,n){if(!n)e[t]=!0;else if(n.length){const{lo:i,hi:s}=Xi(n,t),o=n[i]>=t?n[i]:n[s];e[o]=!0}}function ap(e,t,n,i){const s=e._adapter,o=+s.startOf(t[0].value,i),r=t[t.length-1].value;let a,l;for(a=o;a<=r;a=+s.add(a,1,i))l=n[a],l>=0&&(t[l].major=!0);return t}function qo(e,t,n){const i=[],s={},o=t.length;let r,a;for(r=0;r<o;++r)a=t[r],s[a]=r,i.push({value:a,major:!1});return o===0||!n?i:ap(e,i,s,n)}class Hn extends De{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,n={}){const i=t.time||(t.time={}),s=this._adapter=new ud._date(t.adapters.date);s.init(n),Ve(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=n.normalized}parse(t,n){return t===void 0?null:Uo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,n=this._adapter,i=t.time.unit||"day";let{min:s,max:o,minDefined:r,maxDefined:a}=this.getUserBounds();function l(c){!r&&!isNaN(c.min)&&(s=Math.min(s,c.min)),!a&&!isNaN(c.max)&&(o=Math.max(o,c.max))}(!r||!a)&&(l(this._getLabelBounds()),(t.bounds!=="ticks"||t.ticks.source!=="labels")&&l(this.getMinMax(!1))),s=vt(s)&&!isNaN(s)?s:+n.startOf(Date.now(),i),o=vt(o)&&!isNaN(o)?o:+n.endOf(Date.now(),i)+1,this.min=Math.min(s,o-1),this.max=Math.max(s+1,o)}_getLabelBounds(){const t=this.getLabelTimestamps();let n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(n=t[0],i=t[t.length-1]),{min:n,max:i}}buildTicks(){const t=this.options,n=t.time,i=t.ticks,s=i.source==="labels"?this.getLabelTimestamps():this._generate();t.bounds==="ticks"&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const o=this.min,r=this.max,a=Fh(s,o,r);return this._unit=n.unit||(i.autoSkip?Xo(n.minUnit,this.min,this.max,this._getLabelCapacity(o)):op(this,a.length,n.minUnit,this.min,this.max)),this._majorUnit=!i.major.enabled||this._unit==="year"?void 0:rp(this._unit),this.initOffsets(s),t.reverse&&a.reverse(),qo(this,a,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(t=>+t.value))}initOffsets(t=[]){let n=0,i=0,s,o;this.options.offset&&t.length&&(s=this.getDecimalForValue(t[0]),t.length===1?n=1-s:n=(this.getDecimalForValue(t[1])-s)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?i=o:i=(o-this.getDecimalForValue(t[t.length-2]))/2);const r=t.length<3?.5:.25;n=rt(n,0,r),i=rt(i,0,r),this._offsets={start:n,end:i,factor:1/(n+1+i)}}_generate(){const t=this._adapter,n=this.min,i=this.max,s=this.options,o=s.time,r=o.unit||Xo(o.minUnit,n,i,this._getLabelCapacity(n)),a=j(s.ticks.stepSize,1),l=r==="week"?o.isoWeekday:!1,c=Qe(l)||l===!0,h={};let u=n,d,f;if(c&&(u=+t.startOf(u,"isoWeek",l)),u=+t.startOf(u,c?"day":r),t.diff(i,n,r)>1e5*a)throw new Error(n+" and "+i+" are too far apart with stepSize of "+a+" "+r);const g=s.ticks.source==="data"&&this.getDataTimestamps();for(d=u,f=0;d<i;d=+t.add(d,a,r),f++)Ko(h,d,g);return(d===i||s.bounds==="ticks"||f===1)&&Ko(h,d,g),Object.keys(h).sort(Yo).map(m=>+m)}getLabelForValue(t){const n=this._adapter,i=this.options.time;return i.tooltipFormat?n.format(t,i.tooltipFormat):n.format(t,i.displayFormats.datetime)}format(t,n){const s=this.options.time.displayFormats,o=this._unit,r=n||s[o];return this._adapter.format(t,r)}_tickFormatFunction(t,n,i,s){const o=this.options,r=o.ticks.callback;if(r)return V(r,[t,n,i],this);const a=o.time.displayFormats,l=this._unit,c=this._majorUnit,h=l&&a[l],u=c&&a[c],d=i[n],f=c&&u&&d&&d.major;return this._adapter.format(t,s||(f?u:h))}generateTickLabels(t){let n,i,s;for(n=0,i=t.length;n<i;++n)s=t[n],s.label=this._tickFormatFunction(s.value,n,t)}getDecimalForValue(t){return t===null?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const n=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((n.start+i)*n.factor)}getValueForPixel(t){const n=this._offsets,i=this.getDecimalForPixel(t)/n.factor-n.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const n=this.options.ticks,i=this.ctx.measureText(t).width,s=ae(this.isHorizontal()?n.maxRotation:n.minRotation),o=Math.cos(s),r=Math.sin(s),a=this._resolveTickFontOptions(0).size;return{w:i*o+a*r,h:i*r+a*o}}_getLabelCapacity(t){const n=this.options.time,i=n.displayFormats,s=i[n.unit]||i.millisecond,o=this._tickFormatFunction(t,0,qo(this,[t],this._majorUnit),s),r=this._getLabelSize(o),a=Math.floor(this.isHorizontal()?this.width/r.w:this.height/r.h)-1;return a>0?a:1}getDataTimestamps(){let t=this._cache.data||[],n,i;if(t.length)return t;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(n=0,i=s.length;n<i;++n)t=t.concat(s[n].controller.getAllParsedValues(this));return this._cache.data=this.normalize(t)}getLabelTimestamps(){const t=this._cache.labels||[];let n,i;if(t.length)return t;const s=this.getLabels();for(n=0,i=s.length;n<i;++n)t.push(Uo(this,s[n]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return Kr(t.sort(Yo))}}T(Hn,"id","time"),T(Hn,"defaults",{bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}});function On(e,t,n){let i=0,s=e.length-1,o,r,a,l;n?(t>=e[i].pos&&t<=e[s].pos&&({lo:i,hi:s}=le(e,"pos",t)),{pos:o,time:a}=e[i],{pos:r,time:l}=e[s]):(t>=e[i].time&&t<=e[s].time&&({lo:i,hi:s}=le(e,"time",t)),{time:o,pos:a}=e[i],{time:r,pos:l}=e[s]);const c=r-o;return c?a+(l-a)*(t-o)/c:a}class Go extends Hn{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(t);this._minPos=On(n,this.min),this._tableRange=On(n,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:n,max:i}=this,s=[],o=[];let r,a,l,c,h;for(r=0,a=t.length;r<a;++r)c=t[r],c>=n&&c<=i&&s.push(c);if(s.length<2)return[{time:n,pos:0},{time:i,pos:1}];for(r=0,a=s.length;r<a;++r)h=s[r+1],l=s[r-1],c=s[r],Math.round((h+l)/2)!==c&&o.push({time:c,pos:r/(a-1)});return o}_generate(){const t=this.min,n=this.max;let i=super.getDataTimestamps();return(!i.includes(t)||!i.length)&&i.splice(0,0,t),(!i.includes(n)||i.length===1)&&i.push(n),i.sort((s,o)=>s-o)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const n=this.getDataTimestamps(),i=this.getLabelTimestamps();return n.length&&i.length?t=this.normalize(n.concat(i)):t=n.length?n:i,t=this._cache.all=t,t}getDecimalForValue(t){return(On(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const n=this._offsets,i=this.getDecimalForPixel(t)/n.factor-n.end;return On(this._table,i*this._tableRange+this._minPos,!0)}}T(Go,"id","timeseries"),T(Go,"defaults",Hn.defaults);var ie={},Jo;function lp(){if(Jo)return ie;Jo=1,Object.defineProperty(ie,"__esModule",{value:!0}),ie.cartesianProductGenerator=ie.cartesianProduct=void 0;function e(...i){if(!Array.isArray(i))throw new TypeError("Please, send an array.");const[s,o,...r]=i,a=n(s,o);return r.length?e(a,...r):a}ie.cartesianProduct=e;function*t(...i){if(!Array.isArray(i))throw new TypeError("Please, send an array.");const[s,o,...r]=i,a=n(s,o);yield a,r.length&&(yield*t(a,...r))}ie.cartesianProductGenerator=t;function n(i,s){const o=[];for(let r=0;r<i.length;r++){if(!s){o.push([i[r]]);continue}for(let a=0;a<s.length;a++)Array.isArray(i[r])?o.push([...i[r],s[a]]):o.push([i[r],s[a]])}return o}return ie}var os=lp();const cp=function(e){let t=0;for(let i=0;i<e.length;i++)t=e.charCodeAt(i)+((t<<5)-t);let n="#";for(let i=0;i<3;i++){const o="00"+(t>>i*8&255).toString(16);n+=o.substring(o.length-2)}return n};function Pg(e,t=(n,i)=>{}){const n=new Map;for(const[i,s]of e){const o=new Map;for(const[r,a]of s){const l=new Map;for(const[c,h]of a){const u=t(r,h);if(u){l.set(c,{tooltip:u});continue}l.set(c,{})}o.set(r,l)}n.set(i,o)}return n}function Og(e){const t=new Map;return e.forEach(n=>{const i=t.get(n.nren);(!i||i.year<n.year)&&t.set(n.nren,n)}),Array.from(t.values())}function Dg(e){return e.match(/^[a-zA-Z]+:\/\//)?e:"https://"+e}const Ag=e=>{const t={};return!e.urls&&!e.url||(e.urls&&e.urls.forEach(n=>{t[n]=n}),e.url&&(t[e.url]=e.url)),t};function Eg(e){const t=new Map;return e.forEach(n=>{let i=t.get(n.nren);i||(i=new Map);let s=i.get(n.year);s||(s=[]),s.push(n),i.set(n.year,s),t.set(n.nren,i)}),t}function Ae(e){const t=new Map;return e.forEach(n=>{let i=t.get(n.nren);i||(i=new Map),i.set(n.year,n),t.set(n.nren,i)}),t}function Tg(e,t){const n=new Map;return e.forEach((i,s)=>{const o=new Map;Array.from(i.keys()).sort((a,l)=>l-a).forEach(a=>{const l=i.get(a),c=o.get(a)||{};t(c,l),Object.keys(c).length>0&&o.set(a,c)}),n.set(s,o)}),n}function Rg(e,t,n=!1){const i=new Map;return e.forEach(s=>{const o=a=>{let l=i.get(s.nren);l||(l=new Map);let c=l.get(a);c||(c=new Map),c.set(s.year,s),l.set(a,c),i.set(s.nren,l)};let r=s[t];typeof r=="boolean"&&(r=r?"True":"False"),n&&r==null&&(r=`${r}`),Array.isArray(r)?r.forEach(o):o(r)}),i}function Lg(e,t,n,i=!0,s){const o=new Map,r=(a,l,c)=>{a.forEach(h=>{let u=l?h[l]:c;typeof u=="boolean"&&(u=u?"True":"False");const d=h.nren,f=h.year,g=o.get(d)||new Map,m=g.get(f)||new Map,p=m.get(u)||{},b=h[c];if(b==null)return;const x=i?b:c,v=p[x]||{};v[`${b}`]=b,p[x]=v,m.set(u,p),g.set(f,m),o.set(d,g)})};if(n)for(const a of t)r(e,n,a);else for(const a of t)r(e,void 0,a);return o}const Fg=e=>{function t(){const u=(f,g,m)=>"#"+[f,g,m].map(p=>{const b=p.toString(16);return b.length===1?"0"+b:b}).join(""),d=new Map;return d.set("client_institutions",u(157,40,114)),d.set("commercial",u(241,224,79)),d.set("european_funding",u(219,42,76)),d.set("gov_public_bodies",u(237,141,24)),d.set("other",u(137,166,121)),d}const n=Ae(e),i=t(),s=[...new Set(e.map(u=>u.year))].sort(),o=[...new Set(e.map(u=>u.nren))].sort(),r={client_institutions:"Client Institutions",commercial:"Commercial",european_funding:"European Funding",gov_public_bodies:"Government/Public Bodies",other:"Other"},a=Object.keys(r),l=os.cartesianProduct(Object.keys(r),s).reduce((u,[d,f])=>{const g=`${d},${f}`;return u[g]={},u},{});return n.forEach((u,d)=>{u.forEach((f,g)=>{const m=a.map(b=>f[b]||0);if(m.reduce((b,x)=>b+x,0)!==0)for(const b of a){const x=`${b},${g}`,v=a.indexOf(b);l[x][d]=m[v]}})}),{datasets:Array.from(Object.entries(l)).map(([u,d])=>{const[f,g]=u.split(",");return{backgroundColor:i.get(f)||"black",label:r[f]+" ("+g+")",data:o.map(p=>d[p]),stack:g,borderSkipped:!0,barPercentage:.8,borderWidth:.5,categoryPercentage:.8,hidden:!1,datalabels:{display:f==a[0],formatter:function(p,b){return b.dataset.stack},font:{family:'"Open Sans", sans-serif',size:16,weight:"700"},anchor:"start",align:"end",offset:function(p){return p.chart.chartArea.width}}}}),labels:o.map(u=>u.toString())}};function Ig(e,t){const n=[...new Set(e.map(r=>r.year))].sort(),i=[...new Set(e.map(r=>r.nren))].sort(),s=Ae(e);return{datasets:i.map(r=>{const a=cp(r);return{backgroundColor:a,borderColor:a,data:n.map(l=>{const c=s.get(r);if(!c)return null;const h=c.get(l);return h?h[t]:null}),label:r,hidden:!1}}),labels:n.map(r=>r.toString())}}const jg=(e,t,n)=>{let i;t?i=["Technical FTE","Non-technical FTE"]:i=["Permanent FTE","Subcontracted FTE"];const s={"Technical FTE":"technical_fte","Non-technical FTE":"non_technical_fte","Permanent FTE":"permanent_fte","Subcontracted FTE":"subcontracted_fte"},[o,r]=i,[a,l]=[s[o],s[r]];function c(p){const b=p[a],x=p[l],v=b+x,_=(b/v||0)*100,y=(x/v||0)*100,w={};return w[o]=Math.round(Math.floor(_*100))/100,w[r]=Math.round(Math.floor(y*100))/100,w}const h=Ae(e),u=[n].sort(),d=[...new Set(e.map(p=>p.nren))].sort((p,b)=>p.localeCompare(b));return{datasets:os.cartesianProduct(i,u).map(function([p,b]){let x="";return p==="Technical FTE"?x="rgba(40, 40, 250, 0.8)":p==="Permanent FTE"?x="rgba(159, 129, 235, 1)":p==="Subcontracted FTE"?x="rgba(173, 216, 229, 1)":p==="Non-technical FTE"&&(x="rgba(116, 216, 242, 0.54)"),{backgroundColor:x,label:`${p} (${b})`,data:d.map(v=>{const _=h.get(v).get(b);return _?c(_)[p]:0}),stack:b,borderRadius:10,borderSkipped:!0,barPercentage:.8,borderWidth:.5,categoryPercentage:.8,hidden:!1}}),labels:d}},$g=(e,t)=>{const n=["Research & Education","Commodity"],i={"Research & Education":"r_and_e_percentage",Commodity:"commodity_percentage"},s=Ae(e),o=[t].sort(),r=[...new Set(e.map(h=>h.nren))].sort((h,u)=>h.localeCompare(u));return{datasets:os.cartesianProduct(n,o).map(function([h,u]){let d="";return h==="Research & Education"?d="rgba(40, 40, 250, 0.8)":h==="Commodity"&&(d="rgba(116, 216, 242, 0.54)"),{backgroundColor:d,label:`${h} (${u})`,data:r.map(f=>{const g=s.get(f).get(u);return g?g[i[h]]:0}),stack:u,borderRadius:10,borderSkipped:!0,barPercentage:.8,borderWidth:.5,categoryPercentage:.8,hidden:!1}}),labels:r}},zg=(e,t)=>{const n=["Permanent FTE","Subcontracted FTE"],i={"Technical FTE":"technical_fte","Non-technical FTE":"non_technical_fte","Permanent FTE":"permanent_fte","Subcontracted FTE":"subcontracted_fte"},[s,o]=n,[r,a]=[i[s],i[o]],l=Ae(e),c=[...new Set(e.map(f=>f.nren))].sort((f,g)=>f.localeCompare(g));function h(f,g){return{backgroundColor:"rgba(219, 42, 76, 1)",label:`Number of FTEs (${f})`,data:c.map(p=>{const b=l.get(p).get(f);return b?(b[r]??0)+(b[a]??0):0}),stack:`${f}`,borderRadius:10,borderSkipped:!0,barPercentage:.8,borderWidth:.5,categoryPercentage:.8,hidden:!1,datalabels:{display:!0,formatter:function(p,b){return b.dataset.stack},font:{family:'"Open Sans", sans-serif',size:16,weight:"700"},anchor:"start",align:"end",offset:function(p){return p.chart.chartArea.width}}}}return{datasets:t.sort().map(h),labels:c}},Ng=(e,t,n)=>{const i=Ae(e),s=[...new Set(e.map(l=>l.nren))].sort((l,c)=>l.localeCompare(c)),o=[...new Set(e.map(l=>l.year))].sort();function r(l,c){return{backgroundColor:"rgba(219, 42, 76, 1)",label:`${n} (${l})`,data:s.map(u=>{const d=i.get(u).get(l);return d?d[t]??0:0}),stack:`${l}`,borderRadius:10,borderSkipped:!0,barPercentage:.8,borderWidth:.5,categoryPercentage:.8,hidden:!1,datalabels:{display:!0,formatter:function(u,d){return d.dataset.stack},font:{family:'"Open Sans", sans-serif',size:16,weight:"700"},anchor:"start",align:"end",offset:function(u){return u.chart.chartArea.width}}}}return{datasets:o.sort().map(r),labels:s}},hp=()=>{const e=wt.c(1);let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=M.jsx(sn,{children:M.jsx(Ja,{sidebar:!0})}),e[0]=t):t=e[0],t},up=e=>{const t=wt.c(41),{activeCategory:n}=e,i=Za();let s;t[0]!==n||t[1]!==i?(s=()=>i(n===G.Organisation?".":"/funding"),t[0]=n,t[1]=i,t[2]=s):s=t[2];const o=n===G.Organisation;let r;t[3]===Symbol.for("react.memo_cache_sentinel")?(r=M.jsx("span",{children:G.Organisation}),t[3]=r):r=t[3];let a;t[4]!==s||t[5]!==o?(a=M.jsx(Ft,{onClick:s,variant:"nav-box",active:o,children:r}),t[4]=s,t[5]=o,t[6]=a):a=t[6];let l;t[7]!==n||t[8]!==i?(l=()=>i(n===G.Policy?".":"/policy"),t[7]=n,t[8]=i,t[9]=l):l=t[9];const c=n===G.Policy;let h;t[10]===Symbol.for("react.memo_cache_sentinel")?(h=M.jsx("span",{children:G.Policy}),t[10]=h):h=t[10];let u;t[11]!==l||t[12]!==c?(u=M.jsx(Ft,{onClick:l,variant:"nav-box",active:c,children:h}),t[11]=l,t[12]=c,t[13]=u):u=t[13];let d;t[14]!==n||t[15]!==i?(d=()=>i(n===G.ConnectedUsers?".":"/institutions-urls"),t[14]=n,t[15]=i,t[16]=d):d=t[16];const f=n===G.ConnectedUsers;let g;t[17]===Symbol.for("react.memo_cache_sentinel")?(g=M.jsx("span",{children:G.ConnectedUsers}),t[17]=g):g=t[17];let m;t[18]!==f||t[19]!==d?(m=M.jsx(Ft,{onClick:d,variant:"nav-box",active:f,children:g}),t[18]=f,t[19]=d,t[20]=m):m=t[20];let p;t[21]!==n||t[22]!==i?(p=()=>i(n===G.Network?".":"/traffic-volume"),t[21]=n,t[22]=i,t[23]=p):p=t[23];const b=n===G.Network;let x;t[24]===Symbol.for("react.memo_cache_sentinel")?(x=M.jsx("span",{children:G.Network}),t[24]=x):x=t[24];let v;t[25]!==p||t[26]!==b?(v=M.jsx(Ft,{onClick:p,variant:"nav-box",active:b,children:x}),t[25]=p,t[26]=b,t[27]=v):v=t[27];let _;t[28]!==n||t[29]!==i?(_=()=>i(n===G.Services?".":"/network-services"),t[28]=n,t[29]=i,t[30]=_):_=t[30];const y=n===G.Services;let w;t[31]===Symbol.for("react.memo_cache_sentinel")?(w=M.jsx("span",{children:G.Services}),t[31]=w):w=t[31];let k;t[32]!==_||t[33]!==y?(k=M.jsx(Ft,{onClick:_,variant:"nav-box",active:y,children:w}),t[32]=_,t[33]=y,t[34]=k):k=t[34];let S;return t[35]!==m||t[36]!==v||t[37]!==k||t[38]!==a||t[39]!==u?(S=M.jsx(cr,{children:M.jsx(se,{children:M.jsxs(Ti,{className:"navbox-bar gap-2 m-3",children:[a,u,m,v,k]})})}),t[35]=m,t[36]=v,t[37]=k,t[38]=a,t[39]=u,t[40]=S):S=t[40],S},dp=()=>{const e=wt.c(1);let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=M.jsx(sn,{children:M.jsx(Qa,{sidebar:!0})}),e[0]=t):t=e[0],t},fp=()=>{const e=wt.c(1);let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=M.jsx(sn,{children:M.jsx(tl,{sidebar:!0})}),e[0]=t):t=e[0],t},pp=()=>{const e=wt.c(1);let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=M.jsx(sn,{children:M.jsx(el,{sidebar:!0})}),e[0]=t):t=e[0],t},gp=()=>{const e=wt.c(1);let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=M.jsx(sn,{children:M.jsx(nl,{sidebar:!0})}),e[0]=t):t=e[0],t};function mp(e,t){return e.map(n=>t.map(i=>{const s=n[i];return s===null?"":typeof s=="string"?`"${s.replace(/"/g,'""')}"`:s}).join(","))}function bp(e){if(!e.length)return"";const t=Object.keys(e[0]),n=mp(e,t);return[t.join(","),...n].join(`\r +`):e}function Xf(e,t){const{element:n,datasetIndex:i,index:s}=t,o=e.getDatasetMeta(i).controller,{label:r,value:a}=o.getLabelAndValue(s);return{chart:e,label:r,parsed:o.getParsed(s),raw:e.data.datasets[i].data[s],formattedValue:a,dataset:o.getDataset(),dataIndex:s,datasetIndex:i,element:n}}function Io(e,t){const n=e.chart.ctx,{body:i,footer:s,title:o}=e,{boxWidth:r,boxHeight:a}=t,l=at(t.bodyFont),c=at(t.titleFont),h=at(t.footerFont),u=o.length,d=s.length,f=i.length,g=_t(t.padding);let m=g.height,p=0,b=i.reduce((_,y)=>_+y.before.length+y.lines.length+y.after.length,0);if(b+=e.beforeBody.length+e.afterBody.length,u&&(m+=u*c.lineHeight+(u-1)*t.titleSpacing+t.titleMarginBottom),b){const _=t.displayColors?Math.max(a,l.lineHeight):l.lineHeight;m+=f*_+(b-f)*l.lineHeight+(b-1)*t.bodySpacing}d&&(m+=t.footerMarginTop+d*h.lineHeight+(d-1)*t.footerSpacing);let x=0;const v=function(_){p=Math.max(p,n.measureText(_).width+x)};return n.save(),n.font=c.string,H(e.title,v),n.font=l.string,H(e.beforeBody.concat(e.afterBody),v),x=t.displayColors?r+2+t.boxPadding:0,H(i,_=>{H(_.before,v),H(_.lines,v),H(_.after,v)}),x=0,n.font=h.string,H(e.footer,v),n.restore(),p+=g.width,{width:p,height:m}}function Kf(e,t){const{y:n,height:i}=t;return n<i/2?"top":n>e.height-i/2?"bottom":"center"}function qf(e,t,n,i){const{x:s,width:o}=i,r=n.caretSize+n.caretPadding;if(e==="left"&&s+o+r>t.width||e==="right"&&s-o-r<0)return!0}function Gf(e,t,n,i){const{x:s,width:o}=n,{width:r,chartArea:{left:a,right:l}}=e;let c="center";return i==="center"?c=s<=(a+l)/2?"left":"right":s<=o/2?c="left":s>=r-o/2&&(c="right"),qf(c,e,t,n)&&(c="center"),c}function jo(e,t,n){const i=n.yAlign||t.yAlign||Kf(e,n);return{xAlign:n.xAlign||t.xAlign||Gf(e,t,n,i),yAlign:i}}function Jf(e,t){let{x:n,width:i}=e;return t==="right"?n-=i:t==="center"&&(n-=i/2),n}function Zf(e,t,n){let{y:i,height:s}=e;return t==="top"?i+=n:t==="bottom"?i-=s+n:i-=s/2,i}function $o(e,t,n,i){const{caretSize:s,caretPadding:o,cornerRadius:r}=e,{xAlign:a,yAlign:l}=n,c=s+o,{topLeft:h,topRight:u,bottomLeft:d,bottomRight:f}=ye(r);let g=Jf(t,a);const m=Zf(t,l,c);return l==="center"?a==="left"?g+=c:a==="right"&&(g-=c):a==="left"?g-=Math.max(h,d)+s:a==="right"&&(g+=Math.max(u,f)+s),{x:rt(g,0,i.width-t.width),y:rt(m,0,i.height-t.height)}}function Pn(e,t,n){const i=_t(n.padding);return t==="center"?e.x+e.width/2:t==="right"?e.x+e.width-i.right:e.x+i.left}function zo(e){return kt([],Rt(e))}function Qf(e,t,n){return pe(e,{tooltip:t,tooltipItems:n,type:"tooltip"})}function No(e,t){const n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}const Pa={beforeTitle:Et,title(e){if(e.length>0){const t=e[0],n=t.chart.data.labels,i=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndex<i)return n[t.dataIndex]}return""},afterTitle:Et,beforeBody:Et,beforeLabel:Et,label(e){if(this&&this.options&&this.options.mode==="dataset")return e.label+": "+e.formattedValue||e.formattedValue;let t=e.dataset.label||"";t&&(t+=": ");const n=e.formattedValue;return W(n)||(t+=n),t},labelColor(e){const n=e.chart.getDatasetMeta(e.datasetIndex).controller.getStyle(e.dataIndex);return{borderColor:n.borderColor,backgroundColor:n.backgroundColor,borderWidth:n.borderWidth,borderDash:n.borderDash,borderDashOffset:n.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(e){const n=e.chart.getDatasetMeta(e.datasetIndex).controller.getStyle(e.dataIndex);return{pointStyle:n.pointStyle,rotation:n.rotation}},afterLabel:Et,afterBody:Et,beforeFooter:Et,footer:Et,afterFooter:Et};function ct(e,t,n,i){const s=e[t].call(n,i);return typeof s>"u"?Pa[t].call(n,i):s}class Ai extends $t{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const n=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&n.options.animation&&i.animations,o=new ha(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=Qf(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,n){const{callbacks:i}=n,s=ct(i,"beforeTitle",this,t),o=ct(i,"title",this,t),r=ct(i,"afterTitle",this,t);let a=[];return a=kt(a,Rt(s)),a=kt(a,Rt(o)),a=kt(a,Rt(r)),a}getBeforeBody(t,n){return zo(ct(n.callbacks,"beforeBody",this,t))}getBody(t,n){const{callbacks:i}=n,s=[];return H(t,o=>{const r={before:[],lines:[],after:[]},a=No(i,o);kt(r.before,Rt(ct(a,"beforeLabel",this,o))),kt(r.lines,ct(a,"label",this,o)),kt(r.after,Rt(ct(a,"afterLabel",this,o))),s.push(r)}),s}getAfterBody(t,n){return zo(ct(n.callbacks,"afterBody",this,t))}getFooter(t,n){const{callbacks:i}=n,s=ct(i,"beforeFooter",this,t),o=ct(i,"footer",this,t),r=ct(i,"afterFooter",this,t);let a=[];return a=kt(a,Rt(s)),a=kt(a,Rt(o)),a=kt(a,Rt(r)),a}_createItems(t){const n=this._active,i=this.chart.data,s=[],o=[],r=[];let a=[],l,c;for(l=0,c=n.length;l<c;++l)a.push(Xf(this.chart,n[l]));return t.filter&&(a=a.filter((h,u,d)=>t.filter(h,u,d,i))),t.itemSort&&(a=a.sort((h,u)=>t.itemSort(h,u,i))),H(a,h=>{const u=No(t.callbacks,h);s.push(ct(u,"labelColor",this,h)),o.push(ct(u,"labelPointStyle",this,h)),r.push(ct(u,"labelTextColor",this,h))}),this.labelColors=s,this.labelPointStyles=o,this.labelTextColors=r,this.dataPoints=a,a}update(t,n){const i=this.options.setContext(this.getContext()),s=this._active;let o,r=[];if(!s.length)this.opacity!==0&&(o={opacity:0});else{const a=Ne[i.position].call(this,s,this._eventPosition);r=this._createItems(i),this.title=this.getTitle(r,i),this.beforeBody=this.getBeforeBody(r,i),this.body=this.getBody(r,i),this.afterBody=this.getAfterBody(r,i),this.footer=this.getFooter(r,i);const l=this._size=Io(this,i),c=Object.assign({},a,l),h=jo(this.chart,i,c),u=$o(i,c,h,this.chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,o={opacity:1,x:u.x,y:u.y,width:l.width,height:l.height,caretX:a.x,caretY:a.y}}this._tooltipItems=r,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(t,n,i,s){const o=this.getCaretPosition(t,i,s);n.lineTo(o.x1,o.y1),n.lineTo(o.x2,o.y2),n.lineTo(o.x3,o.y3)}getCaretPosition(t,n,i){const{xAlign:s,yAlign:o}=this,{caretSize:r,cornerRadius:a}=i,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:u}=ye(a),{x:d,y:f}=t,{width:g,height:m}=n;let p,b,x,v,_,y;return o==="center"?(_=f+m/2,s==="left"?(p=d,b=p-r,v=_+r,y=_-r):(p=d+g,b=p+r,v=_-r,y=_+r),x=p):(s==="left"?b=d+Math.max(l,h)+r:s==="right"?b=d+g-Math.max(c,u)-r:b=this.caretX,o==="top"?(v=f,_=v-r,p=b-r,x=b+r):(v=f+m,_=v+r,p=b+r,x=b-r),y=v),{x1:p,x2:b,x3:x,y1:v,y2:_,y3:y}}drawTitle(t,n,i){const s=this.title,o=s.length;let r,a,l;if(o){const c=ve(i.rtl,this.x,this.width);for(t.x=Pn(this,i.titleAlign,i),n.textAlign=c.textAlign(i.titleAlign),n.textBaseline="middle",r=at(i.titleFont),a=i.titleSpacing,n.fillStyle=i.titleColor,n.font=r.string,l=0;l<o;++l)n.fillText(s[l],c.x(t.x),t.y+r.lineHeight/2),t.y+=r.lineHeight+a,l+1===o&&(t.y+=i.titleMarginBottom-a)}}_drawColorBox(t,n,i,s,o){const r=this.labelColors[i],a=this.labelPointStyles[i],{boxHeight:l,boxWidth:c}=o,h=at(o.bodyFont),u=Pn(this,"left",o),d=s.x(u),f=l<h.lineHeight?(h.lineHeight-l)/2:0,g=n.y+f;if(o.usePointStyle){const m={radius:Math.min(c,l)/2,pointStyle:a.pointStyle,rotation:a.rotation,borderWidth:1},p=s.leftForLtr(d,c)+c/2,b=g+l/2;t.strokeStyle=o.multiKeyBackground,t.fillStyle=o.multiKeyBackground,Ci(t,m,p,b),t.strokeStyle=r.borderColor,t.fillStyle=r.backgroundColor,Ci(t,m,p,b)}else{t.lineWidth=z(r.borderWidth)?Math.max(...Object.values(r.borderWidth)):r.borderWidth||1,t.strokeStyle=r.borderColor,t.setLineDash(r.borderDash||[]),t.lineDashOffset=r.borderDashOffset||0;const m=s.leftForLtr(d,c),p=s.leftForLtr(s.xPlus(d,1),c-2),b=ye(r.borderRadius);Object.values(b).some(x=>x!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,$n(t,{x:m,y:g,w:c,h:l,radius:b}),t.fill(),t.stroke(),t.fillStyle=r.backgroundColor,t.beginPath(),$n(t,{x:p,y:g+1,w:c-2,h:l-2,radius:b}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(m,g,c,l),t.strokeRect(m,g,c,l),t.fillStyle=r.backgroundColor,t.fillRect(p,g+1,c-2,l-2))}t.fillStyle=this.labelTextColors[i]}drawBody(t,n,i){const{body:s}=this,{bodySpacing:o,bodyAlign:r,displayColors:a,boxHeight:l,boxWidth:c,boxPadding:h}=i,u=at(i.bodyFont);let d=u.lineHeight,f=0;const g=ve(i.rtl,this.x,this.width),m=function(S){n.fillText(S,g.x(t.x+f),t.y+d/2),t.y+=d+o},p=g.textAlign(r);let b,x,v,_,y,w,k;for(n.textAlign=r,n.textBaseline="middle",n.font=u.string,t.x=Pn(this,p,i),n.fillStyle=i.bodyColor,H(this.beforeBody,m),f=a&&p!=="right"?r==="center"?c/2+h:c+2+h:0,_=0,w=s.length;_<w;++_){for(b=s[_],x=this.labelTextColors[_],n.fillStyle=x,H(b.before,m),v=b.lines,a&&v.length&&(this._drawColorBox(n,t,_,g,i),d=Math.max(u.lineHeight,l)),y=0,k=v.length;y<k;++y)m(v[y]),d=u.lineHeight;H(b.after,m)}f=0,d=u.lineHeight,H(this.afterBody,m),t.y-=o}drawFooter(t,n,i){const s=this.footer,o=s.length;let r,a;if(o){const l=ve(i.rtl,this.x,this.width);for(t.x=Pn(this,i.footerAlign,i),t.y+=i.footerMarginTop,n.textAlign=l.textAlign(i.footerAlign),n.textBaseline="middle",r=at(i.footerFont),n.fillStyle=i.footerColor,n.font=r.string,a=0;a<o;++a)n.fillText(s[a],l.x(t.x),t.y+r.lineHeight/2),t.y+=r.lineHeight+i.footerSpacing}}drawBackground(t,n,i,s){const{xAlign:o,yAlign:r}=this,{x:a,y:l}=t,{width:c,height:h}=i,{topLeft:u,topRight:d,bottomLeft:f,bottomRight:g}=ye(s.cornerRadius);n.fillStyle=s.backgroundColor,n.strokeStyle=s.borderColor,n.lineWidth=s.borderWidth,n.beginPath(),n.moveTo(a+u,l),r==="top"&&this.drawCaret(t,n,i,s),n.lineTo(a+c-d,l),n.quadraticCurveTo(a+c,l,a+c,l+d),r==="center"&&o==="right"&&this.drawCaret(t,n,i,s),n.lineTo(a+c,l+h-g),n.quadraticCurveTo(a+c,l+h,a+c-g,l+h),r==="bottom"&&this.drawCaret(t,n,i,s),n.lineTo(a+f,l+h),n.quadraticCurveTo(a,l+h,a,l+h-f),r==="center"&&o==="left"&&this.drawCaret(t,n,i,s),n.lineTo(a,l+u),n.quadraticCurveTo(a,l,a+u,l),n.closePath(),n.fill(),s.borderWidth>0&&n.stroke()}_updateAnimationTarget(t){const n=this.chart,i=this.$animations,s=i&&i.x,o=i&&i.y;if(s||o){const r=Ne[t.position].call(this,this._active,this._eventPosition);if(!r)return;const a=this._size=Io(this,t),l=Object.assign({},r,this._size),c=jo(n,t,l),h=$o(t,l,c,n);(s._to!==h.x||o._to!==h.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=a.width,this.height=a.height,this.caretX=r.x,this.caretY=r.y,this._resolveAnimations().update(this,h))}}_willRender(){return!!this.opacity}draw(t){const n=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(n);const s={width:this.width,height:this.height},o={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const r=_t(n.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&a&&(t.save(),t.globalAlpha=i,this.drawBackground(o,t,s,n),aa(t,n.textDirection),o.y+=r.top,this.drawTitle(o,t,n),this.drawBody(o,t,n),this.drawFooter(o,t,n),la(t,n.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,n){const i=this._active,s=t.map(({datasetIndex:a,index:l})=>{const c=this.chart.getDatasetMeta(a);if(!c)throw new Error("Cannot find a dataset at index "+a);return{datasetIndex:a,element:c.data[l],index:l}}),o=!Fn(i,s),r=this._positionChanged(s,n);(o||r)&&(this._active=s,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,n,i=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,o=this._active||[],r=this._getActiveElements(t,o,n,i),a=this._positionChanged(r,t),l=n||!Fn(r,o)||a;return l&&(this._active=r,(s.enabled||s.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,n))),l}_getActiveElements(t,n,i,s){const o=this.options;if(t.type==="mouseout")return[];if(!s)return n.filter(a=>this.chart.data.datasets[a.datasetIndex]&&this.chart.getDatasetMeta(a.datasetIndex).controller.getParsed(a.index)!==void 0);const r=this.chart.getElementsAtEventForMode(t,o.mode,o,i);return o.reverse&&r.reverse(),r}_positionChanged(t,n){const{caretX:i,caretY:s,options:o}=this,r=Ne[o.position].call(this,t,n);return r!==!1&&(i!==r.x||s!==r.y)}}T(Ai,"positioners",Ne);var Cg={id:"tooltip",_element:Ai,positioners:Ne,afterInit(e,t,n){n&&(e.tooltip=new Ai({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){const t=e.tooltip;if(t&&t._willRender()){const n={tooltip:t};if(e.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;t.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",n)}},afterEvent(e,t){if(e.tooltip){const n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Pa},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:e=>e!=="filter"&&e!=="itemSort"&&e!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const tp=(e,t,n,i)=>(typeof t=="string"?(n=e.push(t)-1,i.unshift({index:n,label:t})):isNaN(t)&&(n=null),n);function ep(e,t,n,i){const s=e.indexOf(t);if(s===-1)return tp(e,t,n,i);const o=e.lastIndexOf(t);return s!==o?n:s}const np=(e,t)=>e===null?null:rt(Math.round(e),0,t);function Bo(e){const t=this.getLabels();return e>=0&&e<t.length?t[e]:e}class Ho extends De{constructor(t){super(t),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(t){const n=this._addedLabels;if(n.length){const i=this.getLabels();for(const{index:s,label:o}of n)i[s]===o&&i.splice(s,1);this._addedLabels=[]}super.init(t)}parse(t,n){if(W(t))return null;const i=this.getLabels();return n=isFinite(n)&&i[n]===t?n:ep(i,t,j(n,t),this._addedLabels),np(n,i.length-1)}determineDataLimits(){const{minDefined:t,maxDefined:n}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);this.options.bounds==="ticks"&&(t||(i=0),n||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const t=this.min,n=this.max,i=this.options.offset,s=[];let o=this.getLabels();o=t===0&&n===o.length-1?o:o.slice(t,n+1),this._valueRange=Math.max(o.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let r=t;r<=n;r++)s.push({value:r});return s}getLabelForValue(t){return Bo.call(this,t)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(t){return typeof t!="number"&&(t=this.parse(t)),t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getPixelForTick(t){const n=this.ticks;return t<0||t>n.length-1?null:this.getPixelForValue(n[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}T(Ho,"id","category"),T(Ho,"defaults",{ticks:{callback:Bo}});function ip(e,t){const n=[],{bounds:s,step:o,min:r,max:a,precision:l,count:c,maxTicks:h,maxDigits:u,includeBounds:d}=e,f=o||1,g=h-1,{min:m,max:p}=t,b=!W(r),x=!W(a),v=!W(c),_=(p-m)/(u+1);let y=Hs((p-m)/g/f)*f,w,k,S,P;if(y<1e-14&&!b&&!x)return[{value:m},{value:p}];P=Math.ceil(p/y)-Math.floor(m/y),P>g&&(y=Hs(P*y/g/f)*f),W(l)||(w=Math.pow(10,l),y=Math.ceil(y*w)/w),s==="ticks"?(k=Math.floor(m/y)*y,S=Math.ceil(p/y)*y):(k=m,S=p),b&&x&&o&&Dh((a-r)/o,y/1e3)?(P=Math.round(Math.min((a-r)/y,h)),y=(a-r)/P,k=r,S=a):v?(k=b?r:k,S=x?a:S,P=c-1,y=(S-k)/P):(P=(S-k)/y,Ye(P,Math.round(P),y/1e3)?P=Math.round(P):P=Math.ceil(P));const D=Math.max(Ws(y),Ws(k));w=Math.pow(10,W(l)?D:l),k=Math.round(k*w)/w,S=Math.round(S*w)/w;let C=0;for(b&&(d&&k!==r?(n.push({value:r}),k<r&&C++,Ye(Math.round((k+C*y)*w)/w,r,Wo(r,_,e))&&C++):k<r&&C++);C<P;++C){const O=Math.round((k+C*y)*w)/w;if(x&&O>a)break;n.push({value:O})}return x&&d&&S!==a?n.length&&Ye(n[n.length-1].value,a,Wo(a,_,e))?n[n.length-1].value=a:n.push({value:a}):(!x||S===a)&&n.push({value:S}),n}function Wo(e,t,{horizontal:n,minRotation:i}){const s=ae(i),o=(n?Math.sin(s):Math.cos(s))||.001,r=.75*t*(""+e).length;return Math.min(t/o,r)}class sp extends De{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,n){return W(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:n,maxDefined:i}=this.getUserBounds();let{min:s,max:o}=this;const r=l=>s=n?s:l,a=l=>o=i?o:l;if(t){const l=Dt(s),c=Dt(o);l<0&&c<0?a(0):l>0&&c>0&&r(0)}if(s===o){let l=o===0?1:Math.abs(o*.05);a(o+l),t||r(s-l)}this.min=s,this.max=o}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:n,stepSize:i}=t,s;return i?(s=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),n=n||11),n&&(s=Math.min(n,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,n=t.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s={maxTicks:i,bounds:t.bounds,min:t.min,max:t.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},o=this._range||this,r=ip(s,o);return t.bounds==="ticks"&&Ah(r,this,"value"),t.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}configure(){const t=this.ticks;let n=this.min,i=this.max;if(super.configure(),this.options.offset&&t.length){const s=(i-n)/Math.max(t.length-1,1)/2;n-=s,i+=s}this._startValue=n,this._endValue=i,this._valueRange=i-n}getLabelForValue(t){return Jr(t,this.chart.options.locale,this.options.ticks.format)}}class Vo extends sp{determineDataLimits(){const{min:t,max:n}=this.getMinMax(!0);this.min=vt(t)?t:0,this.max=vt(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),n=t?this.width:this.height,i=ae(this.options.ticks.minRotation),s=(t?Math.sin(i):Math.cos(i))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,o.lineHeight/s))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}T(Vo,"id","linear"),T(Vo,"defaults",{ticks:{callback:Qr.formatters.numeric}});const Kn={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ht=Object.keys(Kn);function Yo(e,t){return e-t}function Uo(e,t){if(W(t))return null;const n=e._adapter,{parser:i,round:s,isoWeekday:o}=e._parseOpts;let r=t;return typeof i=="function"&&(r=i(r)),vt(r)||(r=typeof i=="string"?n.parse(r,i):n.parse(r)),r===null?null:(s&&(r=s==="week"&&(Qe(o)||o===!0)?n.startOf(r,"isoWeek",o):n.startOf(r,s)),+r)}function Xo(e,t,n,i){const s=ht.length;for(let o=ht.indexOf(e);o<s-1;++o){const r=Kn[ht[o]],a=r.steps?r.steps:Number.MAX_SAFE_INTEGER;if(r.common&&Math.ceil((n-t)/(a*r.size))<=i)return ht[o]}return ht[s-1]}function op(e,t,n,i,s){for(let o=ht.length-1;o>=ht.indexOf(n);o--){const r=ht[o];if(Kn[r].common&&e._adapter.diff(s,i,r)>=t-1)return r}return ht[n?ht.indexOf(n):0]}function rp(e){for(let t=ht.indexOf(e)+1,n=ht.length;t<n;++t)if(Kn[ht[t]].common)return ht[t]}function Ko(e,t,n){if(!n)e[t]=!0;else if(n.length){const{lo:i,hi:s}=Xi(n,t),o=n[i]>=t?n[i]:n[s];e[o]=!0}}function ap(e,t,n,i){const s=e._adapter,o=+s.startOf(t[0].value,i),r=t[t.length-1].value;let a,l;for(a=o;a<=r;a=+s.add(a,1,i))l=n[a],l>=0&&(t[l].major=!0);return t}function qo(e,t,n){const i=[],s={},o=t.length;let r,a;for(r=0;r<o;++r)a=t[r],s[a]=r,i.push({value:a,major:!1});return o===0||!n?i:ap(e,i,s,n)}class Hn extends De{constructor(t){super(t),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(t,n={}){const i=t.time||(t.time={}),s=this._adapter=new ud._date(t.adapters.date);s.init(n),Ve(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(t),this._normalized=n.normalized}parse(t,n){return t===void 0?null:Uo(this,t)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const t=this.options,n=this._adapter,i=t.time.unit||"day";let{min:s,max:o,minDefined:r,maxDefined:a}=this.getUserBounds();function l(c){!r&&!isNaN(c.min)&&(s=Math.min(s,c.min)),!a&&!isNaN(c.max)&&(o=Math.max(o,c.max))}(!r||!a)&&(l(this._getLabelBounds()),(t.bounds!=="ticks"||t.ticks.source!=="labels")&&l(this.getMinMax(!1))),s=vt(s)&&!isNaN(s)?s:+n.startOf(Date.now(),i),o=vt(o)&&!isNaN(o)?o:+n.endOf(Date.now(),i)+1,this.min=Math.min(s,o-1),this.max=Math.max(s+1,o)}_getLabelBounds(){const t=this.getLabelTimestamps();let n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return t.length&&(n=t[0],i=t[t.length-1]),{min:n,max:i}}buildTicks(){const t=this.options,n=t.time,i=t.ticks,s=i.source==="labels"?this.getLabelTimestamps():this._generate();t.bounds==="ticks"&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const o=this.min,r=this.max,a=Fh(s,o,r);return this._unit=n.unit||(i.autoSkip?Xo(n.minUnit,this.min,this.max,this._getLabelCapacity(o)):op(this,a.length,n.minUnit,this.min,this.max)),this._majorUnit=!i.major.enabled||this._unit==="year"?void 0:rp(this._unit),this.initOffsets(s),t.reverse&&a.reverse(),qo(this,a,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(t=>+t.value))}initOffsets(t=[]){let n=0,i=0,s,o;this.options.offset&&t.length&&(s=this.getDecimalForValue(t[0]),t.length===1?n=1-s:n=(this.getDecimalForValue(t[1])-s)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?i=o:i=(o-this.getDecimalForValue(t[t.length-2]))/2);const r=t.length<3?.5:.25;n=rt(n,0,r),i=rt(i,0,r),this._offsets={start:n,end:i,factor:1/(n+1+i)}}_generate(){const t=this._adapter,n=this.min,i=this.max,s=this.options,o=s.time,r=o.unit||Xo(o.minUnit,n,i,this._getLabelCapacity(n)),a=j(s.ticks.stepSize,1),l=r==="week"?o.isoWeekday:!1,c=Qe(l)||l===!0,h={};let u=n,d,f;if(c&&(u=+t.startOf(u,"isoWeek",l)),u=+t.startOf(u,c?"day":r),t.diff(i,n,r)>1e5*a)throw new Error(n+" and "+i+" are too far apart with stepSize of "+a+" "+r);const g=s.ticks.source==="data"&&this.getDataTimestamps();for(d=u,f=0;d<i;d=+t.add(d,a,r),f++)Ko(h,d,g);return(d===i||s.bounds==="ticks"||f===1)&&Ko(h,d,g),Object.keys(h).sort(Yo).map(m=>+m)}getLabelForValue(t){const n=this._adapter,i=this.options.time;return i.tooltipFormat?n.format(t,i.tooltipFormat):n.format(t,i.displayFormats.datetime)}format(t,n){const s=this.options.time.displayFormats,o=this._unit,r=n||s[o];return this._adapter.format(t,r)}_tickFormatFunction(t,n,i,s){const o=this.options,r=o.ticks.callback;if(r)return V(r,[t,n,i],this);const a=o.time.displayFormats,l=this._unit,c=this._majorUnit,h=l&&a[l],u=c&&a[c],d=i[n],f=c&&u&&d&&d.major;return this._adapter.format(t,s||(f?u:h))}generateTickLabels(t){let n,i,s;for(n=0,i=t.length;n<i;++n)s=t[n],s.label=this._tickFormatFunction(s.value,n,t)}getDecimalForValue(t){return t===null?NaN:(t-this.min)/(this.max-this.min)}getPixelForValue(t){const n=this._offsets,i=this.getDecimalForValue(t);return this.getPixelForDecimal((n.start+i)*n.factor)}getValueForPixel(t){const n=this._offsets,i=this.getDecimalForPixel(t)/n.factor-n.end;return this.min+i*(this.max-this.min)}_getLabelSize(t){const n=this.options.ticks,i=this.ctx.measureText(t).width,s=ae(this.isHorizontal()?n.maxRotation:n.minRotation),o=Math.cos(s),r=Math.sin(s),a=this._resolveTickFontOptions(0).size;return{w:i*o+a*r,h:i*r+a*o}}_getLabelCapacity(t){const n=this.options.time,i=n.displayFormats,s=i[n.unit]||i.millisecond,o=this._tickFormatFunction(t,0,qo(this,[t],this._majorUnit),s),r=this._getLabelSize(o),a=Math.floor(this.isHorizontal()?this.width/r.w:this.height/r.h)-1;return a>0?a:1}getDataTimestamps(){let t=this._cache.data||[],n,i;if(t.length)return t;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(n=0,i=s.length;n<i;++n)t=t.concat(s[n].controller.getAllParsedValues(this));return this._cache.data=this.normalize(t)}getLabelTimestamps(){const t=this._cache.labels||[];let n,i;if(t.length)return t;const s=this.getLabels();for(n=0,i=s.length;n<i;++n)t.push(Uo(this,s[n]));return this._cache.labels=this._normalized?t:this.normalize(t)}normalize(t){return Kr(t.sort(Yo))}}T(Hn,"id","time"),T(Hn,"defaults",{bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}});function On(e,t,n){let i=0,s=e.length-1,o,r,a,l;n?(t>=e[i].pos&&t<=e[s].pos&&({lo:i,hi:s}=le(e,"pos",t)),{pos:o,time:a}=e[i],{pos:r,time:l}=e[s]):(t>=e[i].time&&t<=e[s].time&&({lo:i,hi:s}=le(e,"time",t)),{time:o,pos:a}=e[i],{time:r,pos:l}=e[s]);const c=r-o;return c?a+(l-a)*(t-o)/c:a}class Go extends Hn{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(t);this._minPos=On(n,this.min),this._tableRange=On(n,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:n,max:i}=this,s=[],o=[];let r,a,l,c,h;for(r=0,a=t.length;r<a;++r)c=t[r],c>=n&&c<=i&&s.push(c);if(s.length<2)return[{time:n,pos:0},{time:i,pos:1}];for(r=0,a=s.length;r<a;++r)h=s[r+1],l=s[r-1],c=s[r],Math.round((h+l)/2)!==c&&o.push({time:c,pos:r/(a-1)});return o}_generate(){const t=this.min,n=this.max;let i=super.getDataTimestamps();return(!i.includes(t)||!i.length)&&i.splice(0,0,t),(!i.includes(n)||i.length===1)&&i.push(n),i.sort((s,o)=>s-o)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const n=this.getDataTimestamps(),i=this.getLabelTimestamps();return n.length&&i.length?t=this.normalize(n.concat(i)):t=n.length?n:i,t=this._cache.all=t,t}getDecimalForValue(t){return(On(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const n=this._offsets,i=this.getDecimalForPixel(t)/n.factor-n.end;return On(this._table,i*this._tableRange+this._minPos,!0)}}T(Go,"id","timeseries"),T(Go,"defaults",Hn.defaults);var ie={},Jo;function lp(){if(Jo)return ie;Jo=1,Object.defineProperty(ie,"__esModule",{value:!0}),ie.cartesianProductGenerator=ie.cartesianProduct=void 0;function e(...i){if(!Array.isArray(i))throw new TypeError("Please, send an array.");const[s,o,...r]=i,a=n(s,o);return r.length?e(a,...r):a}ie.cartesianProduct=e;function*t(...i){if(!Array.isArray(i))throw new TypeError("Please, send an array.");const[s,o,...r]=i,a=n(s,o);yield a,r.length&&(yield*t(a,...r))}ie.cartesianProductGenerator=t;function n(i,s){const o=[];for(let r=0;r<i.length;r++){if(!s){o.push([i[r]]);continue}for(let a=0;a<s.length;a++)Array.isArray(i[r])?o.push([...i[r],s[a]]):o.push([i[r],s[a]])}return o}return ie}var os=lp();const cp=function(e){let t=0;for(let i=0;i<e.length;i++)t=e.charCodeAt(i)+((t<<5)-t);let n="#";for(let i=0;i<3;i++){const o="00"+(t>>i*8&255).toString(16);n+=o.substring(o.length-2)}return n};function Pg(e,t=(n,i)=>{}){const n=new Map;for(const[i,s]of e){const o=new Map;for(const[r,a]of s){const l=new Map;for(const[c,h]of a){const u=t(r,h);if(u){l.set(c,{tooltip:u});continue}l.set(c,{})}o.set(r,l)}n.set(i,o)}return n}function Og(e){const t=new Map;return e.forEach(n=>{const i=t.get(n.nren);(!i||i.year<n.year)&&t.set(n.nren,n)}),Array.from(t.values())}function Dg(e){return e.match(/^[a-zA-Z]+:\/\//)?e:"https://"+e}const Ag=e=>{const t={};return!e.urls&&!e.url||(e.urls&&e.urls.forEach(n=>{t[n]=n}),e.url&&(t[e.url]=e.url)),t};function Eg(e){const t=new Map;return e.forEach(n=>{let i=t.get(n.nren);i||(i=new Map);let s=i.get(n.year);s||(s=[]),s.push(n),i.set(n.year,s),t.set(n.nren,i)}),t}function Ae(e){const t=new Map;return e.forEach(n=>{let i=t.get(n.nren);i||(i=new Map),i.set(n.year,n),t.set(n.nren,i)}),t}function Tg(e,t){const n=new Map;return e.forEach((i,s)=>{const o=new Map;Array.from(i.keys()).sort((a,l)=>l-a).forEach(a=>{const l=i.get(a),c=o.get(a)||{};t(c,l),Object.keys(c).length>0&&o.set(a,c)}),n.set(s,o)}),n}function Rg(e,t,n=!1){const i=new Map;return e.forEach(s=>{const o=a=>{let l=i.get(s.nren);l||(l=new Map);let c=l.get(a);c||(c=new Map),c.set(s.year,s),l.set(a,c),i.set(s.nren,l)};let r=s[t];typeof r=="boolean"&&(r=r?"True":"False"),n&&r==null&&(r=`${r}`),Array.isArray(r)?r.forEach(o):o(r)}),i}function Lg(e,t,n,i=!0,s){const o=new Map,r=(a,l,c)=>{a.forEach(h=>{let u=l?h[l]:c;typeof u=="boolean"&&(u=u?"True":"False");const d=h.nren,f=h.year,g=o.get(d)||new Map,m=g.get(f)||new Map,p=m.get(u)||{},b=h[c];if(b==null)return;const x=i?b:c,v=p[x]||{};v[`${b}`]=b,p[x]=v,m.set(u,p),g.set(f,m),o.set(d,g)})};if(n)for(const a of t)r(e,n,a);else for(const a of t)r(e,void 0,a);return o}const Fg=e=>{function t(){const u=(f,g,m)=>"#"+[f,g,m].map(p=>{const b=p.toString(16);return b.length===1?"0"+b:b}).join(""),d=new Map;return d.set("client_institutions",u(157,40,114)),d.set("commercial",u(241,224,79)),d.set("european_funding",u(219,42,76)),d.set("gov_public_bodies",u(237,141,24)),d.set("other",u(137,166,121)),d}const n=Ae(e),i=t(),s=[...new Set(e.map(u=>u.year))].sort(),o=[...new Set(e.map(u=>u.nren))].sort(),r={client_institutions:"Client Institutions",commercial:"Commercial",european_funding:"European Funding",gov_public_bodies:"Government/Public Bodies",other:"Other"},a=Object.keys(r),l=os.cartesianProduct(Object.keys(r),s).reduce((u,[d,f])=>{const g=`${d},${f}`;return u[g]={},u},{});return n.forEach((u,d)=>{u.forEach((f,g)=>{const m=a.map(b=>f[b]||0);if(m.reduce((b,x)=>b+x,0)!==0)for(const b of a){const x=`${b},${g}`,v=a.indexOf(b);l[x][d]=m[v]}})}),{datasets:Array.from(Object.entries(l)).map(([u,d])=>{const[f,g]=u.split(",");return{backgroundColor:i.get(f)||"black",label:r[f]+" ("+g+")",data:o.map(p=>d[p]),stack:g,borderSkipped:!0,barPercentage:.8,borderWidth:.5,categoryPercentage:.8,hidden:!1,datalabels:{display:f==a[0],formatter:function(p,b){return b.dataset.stack},font:{family:'"Open Sans", sans-serif',size:16,weight:"700"},anchor:"start",align:"end",offset:function(p){return p.chart.chartArea.width}}}}),labels:o.map(u=>u.toString())}};function Ig(e,t){const n=[...new Set(e.map(r=>r.year))].sort(),i=[...new Set(e.map(r=>r.nren))].sort(),s=Ae(e);return{datasets:i.map(r=>{const a=cp(r);return{backgroundColor:a,borderColor:a,data:n.map(l=>{const c=s.get(r);if(!c)return null;const h=c.get(l);return h?h[t]:null}),label:r,hidden:!1}}),labels:n.map(r=>r.toString())}}const jg=(e,t,n)=>{let i;t?i=["Technical FTE","Non-technical FTE"]:i=["Permanent FTE","Subcontracted FTE"];const s={"Technical FTE":"technical_fte","Non-technical FTE":"non_technical_fte","Permanent FTE":"permanent_fte","Subcontracted FTE":"subcontracted_fte"},[o,r]=i,[a,l]=[s[o],s[r]];function c(p){const b=p[a],x=p[l],v=b+x,_=(b/v||0)*100,y=(x/v||0)*100,w={};return w[o]=Math.round(Math.floor(_*100))/100,w[r]=Math.round(Math.floor(y*100))/100,w}const h=Ae(e),u=[n].sort(),d=[...new Set(e.map(p=>p.nren))].sort((p,b)=>p.localeCompare(b));return{datasets:os.cartesianProduct(i,u).map(function([p,b]){let x="";return p==="Technical FTE"?x="rgba(40, 40, 250, 0.8)":p==="Permanent FTE"?x="rgba(159, 129, 235, 1)":p==="Subcontracted FTE"?x="rgba(173, 216, 229, 1)":p==="Non-technical FTE"&&(x="rgba(116, 216, 242, 0.54)"),{backgroundColor:x,label:`${p} (${b})`,data:d.map(v=>{const _=h.get(v).get(b);return _?c(_)[p]:0}),stack:b,borderRadius:10,borderSkipped:!0,barPercentage:.8,borderWidth:.5,categoryPercentage:.8,hidden:!1}}),labels:d}},$g=(e,t)=>{const n=["Research & Education","Commodity"],i={"Research & Education":"r_and_e_percentage",Commodity:"commodity_percentage"},s=Ae(e),o=[t].sort(),r=[...new Set(e.map(h=>h.nren))].sort((h,u)=>h.localeCompare(u));return{datasets:os.cartesianProduct(n,o).map(function([h,u]){let d="";return h==="Research & Education"?d="rgba(40, 40, 250, 0.8)":h==="Commodity"&&(d="rgba(116, 216, 242, 0.54)"),{backgroundColor:d,label:`${h} (${u})`,data:r.map(f=>{const g=s.get(f).get(u);return g?g[i[h]]:0}),stack:u,borderRadius:10,borderSkipped:!0,barPercentage:.8,borderWidth:.5,categoryPercentage:.8,hidden:!1}}),labels:r}},zg=(e,t)=>{const n=["Permanent FTE","Subcontracted FTE"],i={"Technical FTE":"technical_fte","Non-technical FTE":"non_technical_fte","Permanent FTE":"permanent_fte","Subcontracted FTE":"subcontracted_fte"},[s,o]=n,[r,a]=[i[s],i[o]],l=Ae(e),c=[...new Set(e.map(f=>f.nren))].sort((f,g)=>f.localeCompare(g));function h(f,g){return{backgroundColor:"rgba(219, 42, 76, 1)",label:`Number of FTEs (${f})`,data:c.map(p=>{const b=l.get(p).get(f);return b?(b[r]??0)+(b[a]??0):0}),stack:`${f}`,borderRadius:10,borderSkipped:!0,barPercentage:.8,borderWidth:.5,categoryPercentage:.8,hidden:!1,datalabels:{display:!0,formatter:function(p,b){return b.dataset.stack},font:{family:'"Open Sans", sans-serif',size:16,weight:"700"},anchor:"start",align:"end",offset:function(p){return p.chart.chartArea.width}}}}return{datasets:t.sort().map(h),labels:c}},Ng=(e,t,n)=>{const i=Ae(e),s=[...new Set(e.map(l=>l.nren))].sort((l,c)=>l.localeCompare(c)),o=[...new Set(e.map(l=>l.year))].sort();function r(l,c){return{backgroundColor:"rgba(219, 42, 76, 1)",label:`${n} (${l})`,data:s.map(u=>{const d=i.get(u).get(l);return d?d[t]??0:0}),stack:`${l}`,borderRadius:10,borderSkipped:!0,barPercentage:.8,borderWidth:.5,categoryPercentage:.8,hidden:!1,datalabels:{display:!0,formatter:function(u,d){return d.dataset.stack},font:{family:'"Open Sans", sans-serif',size:16,weight:"700"},anchor:"start",align:"end",offset:function(u){return u.chart.chartArea.width}}}}return{datasets:o.sort().map(r),labels:s}},hp=e=>{const t=wt.c(41),{activeCategory:n}=e,i=Ja();let s;t[0]!==n||t[1]!==i?(s=()=>i(n===G.Organisation?".":"/funding"),t[0]=n,t[1]=i,t[2]=s):s=t[2];const o=n===G.Organisation;let r;t[3]===Symbol.for("react.memo_cache_sentinel")?(r=M.jsx("span",{children:G.Organisation}),t[3]=r):r=t[3];let a;t[4]!==s||t[5]!==o?(a=M.jsx(Ft,{onClick:s,variant:"nav-box",active:o,children:r}),t[4]=s,t[5]=o,t[6]=a):a=t[6];let l;t[7]!==n||t[8]!==i?(l=()=>i(n===G.Policy?".":"/corporate-strategy"),t[7]=n,t[8]=i,t[9]=l):l=t[9];const c=n===G.Policy;let h;t[10]===Symbol.for("react.memo_cache_sentinel")?(h=M.jsx("span",{children:G.Policy}),t[10]=h):h=t[10];let u;t[11]!==l||t[12]!==c?(u=M.jsx(Ft,{onClick:l,variant:"nav-box",active:c,children:h}),t[11]=l,t[12]=c,t[13]=u):u=t[13];let d;t[14]!==n||t[15]!==i?(d=()=>i(n===G.ConnectedUsers?".":"/institutions-urls"),t[14]=n,t[15]=i,t[16]=d):d=t[16];const f=n===G.ConnectedUsers;let g;t[17]===Symbol.for("react.memo_cache_sentinel")?(g=M.jsx("span",{children:G.ConnectedUsers}),t[17]=g):g=t[17];let m;t[18]!==f||t[19]!==d?(m=M.jsx(Ft,{onClick:d,variant:"nav-box",active:f,children:g}),t[18]=f,t[19]=d,t[20]=m):m=t[20];let p;t[21]!==n||t[22]!==i?(p=()=>i(n===G.Network?".":"/dark-fibre-lease"),t[21]=n,t[22]=i,t[23]=p):p=t[23];const b=n===G.Network;let x;t[24]===Symbol.for("react.memo_cache_sentinel")?(x=M.jsx("span",{children:G.Network}),t[24]=x):x=t[24];let v;t[25]!==p||t[26]!==b?(v=M.jsx(Ft,{onClick:p,variant:"nav-box",active:b,children:x}),t[25]=p,t[26]=b,t[27]=v):v=t[27];let _;t[28]!==n||t[29]!==i?(_=()=>i(n===G.Services?".":"/network-services"),t[28]=n,t[29]=i,t[30]=_):_=t[30];const y=n===G.Services;let w;t[31]===Symbol.for("react.memo_cache_sentinel")?(w=M.jsx("span",{children:G.Services}),t[31]=w):w=t[31];let k;t[32]!==_||t[33]!==y?(k=M.jsx(Ft,{onClick:_,variant:"nav-box",active:y,children:w}),t[32]=_,t[33]=y,t[34]=k):k=t[34];let S;return t[35]!==m||t[36]!==v||t[37]!==k||t[38]!==a||t[39]!==u?(S=M.jsx(cr,{children:M.jsx(se,{children:M.jsxs(Ti,{className:"navbox-bar gap-2 m-3",children:[a,u,m,v,k]})})}),t[35]=m,t[36]=v,t[37]=k,t[38]=a,t[39]=u,t[40]=S):S=t[40],S},up=()=>{const e=wt.c(1);let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=M.jsx(sn,{children:M.jsx(Za,{sidebar:!0})}),e[0]=t):t=e[0],t},dp=()=>{const e=wt.c(1);let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=M.jsx(sn,{children:M.jsx(Qa,{sidebar:!0})}),e[0]=t):t=e[0],t},fp=()=>{const e=wt.c(1);let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=M.jsx(sn,{children:M.jsx(tl,{sidebar:!0})}),e[0]=t):t=e[0],t},pp=()=>{const e=wt.c(1);let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=M.jsx(sn,{children:M.jsx(el,{sidebar:!0})}),e[0]=t):t=e[0],t},gp=()=>{const e=wt.c(1);let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=M.jsx(sn,{children:M.jsx(nl,{sidebar:!0})}),e[0]=t):t=e[0],t};function mp(e,t){return e.map(n=>t.map(i=>{const s=n[i];return s===null?"":typeof s=="string"?`"${s.replace(/"/g,'""')}"`:s}).join(","))}function bp(e){if(!e.length)return"";const t=Object.keys(e[0]),n=mp(e,t);return[t.join(","),...n].join(`\r `)}function xp(e,t="Sheet1"){const n=Zn.json_to_sheet(e),i=Zn.book_new();Zn.book_append_sheet(i,n,t);const s=cl(i,{bookType:"xlsx",type:"binary"}),o=new ArrayBuffer(s.length),r=new Uint8Array(o);for(let a=0;a<s.length;a++)r[a]=s.charCodeAt(a)&255;return new Blob([o],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8"})}const Zo=({data:e,filename:t,exportType:n})=>{const i=()=>{let o,r,a;switch(n){case xe.EXCEL:{o=xp(e),r="xlsx",a="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8";break}case xe.CSV:default:{o=bp(e),r="csv",a="text/csv;charset=UTF-8";break}}const l=new Blob([o],{type:a});t=t.endsWith(r)?t:`${t}.${r}`;const c=document.createElement("a");c.href=URL.createObjectURL(l),c.download=t,document.body.appendChild(c),c.click(),document.body.removeChild(c)};let s="downloadbutton";return n===xe.CSV?s+=" downloadcsv":n===xe.EXCEL&&(s+=" downloadexcel"),M.jsxs("button",{className:s,onClick:i,children:[n," ",M.jsx(dr,{})]})};function yp(e,t){if(e.match(/^[a-z]+:\/\//i))return e;if(e.match(/^\/\//))return window.location.protocol+e;if(e.match(/^[a-z]+:/i))return e;const n=document.implementation.createHTMLDocument(),i=n.createElement("base"),s=n.createElement("a");return n.head.appendChild(i),n.body.appendChild(s),t&&(i.href=t),s.href=e,s.href}const vp=(()=>{let e=0;const t=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(e+=1,`u${t()}${e}`)})();function It(e){const t=[];for(let n=0,i=e.length;n<i;n++)t.push(e[n]);return t}function Wn(e,t){const i=(e.ownerDocument.defaultView||window).getComputedStyle(e).getPropertyValue(t);return i?parseFloat(i.replace("px","")):0}function _p(e){const t=Wn(e,"border-left-width"),n=Wn(e,"border-right-width");return e.clientWidth+t+n}function wp(e){const t=Wn(e,"border-top-width"),n=Wn(e,"border-bottom-width");return e.clientHeight+t+n}function Oa(e,t={}){const n=t.width||_p(e),i=t.height||wp(e);return{width:n,height:i}}function Sp(){let e,t;try{t=process}catch{}const n=t&&t.env?t.env.devicePixelRatio:null;return n&&(e=parseInt(n,10),Number.isNaN(e)&&(e=1)),e||window.devicePixelRatio||1}const pt=16384;function kp(e){(e.width>pt||e.height>pt)&&(e.width>pt&&e.height>pt?e.width>e.height?(e.height*=pt/e.width,e.width=pt):(e.width*=pt/e.height,e.height=pt):e.width>pt?(e.height*=pt/e.width,e.width=pt):(e.width*=pt/e.height,e.height=pt))}function Vn(e){return new Promise((t,n)=>{const i=new Image;i.decode=()=>t(i),i.onload=()=>t(i),i.onerror=n,i.crossOrigin="anonymous",i.decoding="async",i.src=e})}async function Mp(e){return Promise.resolve().then(()=>new XMLSerializer().serializeToString(e)).then(encodeURIComponent).then(t=>`data:image/svg+xml;charset=utf-8,${t}`)}async function Cp(e,t,n){const i="http://www.w3.org/2000/svg",s=document.createElementNS(i,"svg"),o=document.createElementNS(i,"foreignObject");return s.setAttribute("width",`${t}`),s.setAttribute("height",`${n}`),s.setAttribute("viewBox",`0 0 ${t} ${n}`),o.setAttribute("width","100%"),o.setAttribute("height","100%"),o.setAttribute("x","0"),o.setAttribute("y","0"),o.setAttribute("externalResourcesRequired","true"),s.appendChild(o),o.appendChild(e),Mp(s)}const ft=(e,t)=>{if(e instanceof t)return!0;const n=Object.getPrototypeOf(e);return n===null?!1:n.constructor.name===t.name||ft(n,t)};function Pp(e){const t=e.getPropertyValue("content");return`${e.cssText} content: '${t.replace(/'|"/g,"")}';`}function Op(e){return It(e).map(t=>{const n=e.getPropertyValue(t),i=e.getPropertyPriority(t);return`${t}: ${n}${i?" !important":""};`}).join(" ")}function Dp(e,t,n){const i=`.${e}:${t}`,s=n.cssText?Pp(n):Op(n);return document.createTextNode(`${i}{${s}}`)}function Qo(e,t,n){const i=window.getComputedStyle(e,n),s=i.getPropertyValue("content");if(s===""||s==="none")return;const o=vp();try{t.className=`${t.className} ${o}`}catch{return}const r=document.createElement("style");r.appendChild(Dp(o,n,i)),t.appendChild(r)}function Ap(e,t){Qo(e,t,":before"),Qo(e,t,":after")}const tr="application/font-woff",er="image/jpeg",Ep={woff:tr,woff2:tr,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:er,jpeg:er,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml",webp:"image/webp"};function Tp(e){const t=/\.([^./]*?)$/g.exec(e);return t?t[1]:""}function rs(e){const t=Tp(e).toLowerCase();return Ep[t]||""}function Rp(e){return e.split(/,/)[1]}function Ei(e){return e.search(/^(data:)/)!==-1}function Lp(e,t){return`data:${t};base64,${e}`}async function Da(e,t,n){const i=await fetch(e,t);if(i.status===404)throw new Error(`Resource "${i.url}" not found`);const s=await i.blob();return new Promise((o,r)=>{const a=new FileReader;a.onerror=r,a.onloadend=()=>{try{o(n({res:i,result:a.result}))}catch(l){r(l)}},a.readAsDataURL(s)})}const xi={};function Fp(e,t,n){let i=e.replace(/\?.*/,"");return n&&(i=e),/ttf|otf|eot|woff2?/i.test(i)&&(i=i.replace(/.*\//,"")),t?`[${t}]${i}`:i}async function as(e,t,n){const i=Fp(e,t,n.includeQueryParams);if(xi[i]!=null)return xi[i];n.cacheBust&&(e+=(/\?/.test(e)?"&":"?")+new Date().getTime());let s;try{const o=await Da(e,n.fetchRequestInit,({res:r,result:a})=>(t||(t=r.headers.get("Content-Type")||""),Rp(a)));s=Lp(o,t)}catch(o){s=n.imagePlaceholder||"";let r=`Failed to fetch resource: ${e}`;o&&(r=typeof o=="string"?o:o.message),r&&console.warn(r)}return xi[i]=s,s}async function Ip(e){const t=e.toDataURL();return t==="data:,"?e.cloneNode(!1):Vn(t)}async function jp(e,t){if(e.currentSrc){const o=document.createElement("canvas"),r=o.getContext("2d");o.width=e.clientWidth,o.height=e.clientHeight,r==null||r.drawImage(e,0,0,o.width,o.height);const a=o.toDataURL();return Vn(a)}const n=e.poster,i=rs(n),s=await as(n,i,t);return Vn(s)}async function $p(e){var t;try{if(!((t=e==null?void 0:e.contentDocument)===null||t===void 0)&&t.body)return await qn(e.contentDocument.body,{},!0)}catch{}return e.cloneNode(!1)}async function zp(e,t){return ft(e,HTMLCanvasElement)?Ip(e):ft(e,HTMLVideoElement)?jp(e,t):ft(e,HTMLIFrameElement)?$p(e):e.cloneNode(!1)}const Np=e=>e.tagName!=null&&e.tagName.toUpperCase()==="SLOT";async function Bp(e,t,n){var i,s;let o=[];return Np(e)&&e.assignedNodes?o=It(e.assignedNodes()):ft(e,HTMLIFrameElement)&&(!((i=e.contentDocument)===null||i===void 0)&&i.body)?o=It(e.contentDocument.body.childNodes):o=It(((s=e.shadowRoot)!==null&&s!==void 0?s:e).childNodes),o.length===0||ft(e,HTMLVideoElement)||await o.reduce((r,a)=>r.then(()=>qn(a,n)).then(l=>{l&&t.appendChild(l)}),Promise.resolve()),t}function Hp(e,t){const n=t.style;if(!n)return;const i=window.getComputedStyle(e);i.cssText?(n.cssText=i.cssText,n.transformOrigin=i.transformOrigin):It(i).forEach(s=>{let o=i.getPropertyValue(s);s==="font-size"&&o.endsWith("px")&&(o=`${Math.floor(parseFloat(o.substring(0,o.length-2)))-.1}px`),ft(e,HTMLIFrameElement)&&s==="display"&&o==="inline"&&(o="block"),s==="d"&&t.getAttribute("d")&&(o=`path(${t.getAttribute("d")})`),n.setProperty(s,o,i.getPropertyPriority(s))})}function Wp(e,t){ft(e,HTMLTextAreaElement)&&(t.innerHTML=e.value),ft(e,HTMLInputElement)&&t.setAttribute("value",e.value)}function Vp(e,t){if(ft(e,HTMLSelectElement)){const n=t,i=Array.from(n.children).find(s=>e.value===s.getAttribute("value"));i&&i.setAttribute("selected","")}}function Yp(e,t){return ft(t,Element)&&(Hp(e,t),Ap(e,t),Wp(e,t),Vp(e,t)),t}async function Up(e,t){const n=e.querySelectorAll?e.querySelectorAll("use"):[];if(n.length===0)return e;const i={};for(let o=0;o<n.length;o++){const a=n[o].getAttribute("xlink:href");if(a){const l=e.querySelector(a),c=document.querySelector(a);!l&&c&&!i[a]&&(i[a]=await qn(c,t,!0))}}const s=Object.values(i);if(s.length){const o="http://www.w3.org/1999/xhtml",r=document.createElementNS(o,"svg");r.setAttribute("xmlns",o),r.style.position="absolute",r.style.width="0",r.style.height="0",r.style.overflow="hidden",r.style.display="none";const a=document.createElementNS(o,"defs");r.appendChild(a);for(let l=0;l<s.length;l++)a.appendChild(s[l]);e.appendChild(r)}return e}async function qn(e,t,n){return!n&&t.filter&&!t.filter(e)?null:Promise.resolve(e).then(i=>zp(i,t)).then(i=>Bp(e,i,t)).then(i=>Yp(e,i)).then(i=>Up(i,t))}const Aa=/url\((['"]?)([^'"]+?)\1\)/g,Xp=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,Kp=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function qp(e){const t=e.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return new RegExp(`(url\\(['"]?)(${t})(['"]?\\))`,"g")}function Gp(e){const t=[];return e.replace(Aa,(n,i,s)=>(t.push(s),n)),t.filter(n=>!Ei(n))}async function Jp(e,t,n,i,s){try{const o=n?yp(t,n):t,r=rs(t);let a;return s||(a=await as(o,r,i)),e.replace(qp(t),`$1${a}$3`)}catch{}return e}function Zp(e,{preferredFontFormat:t}){return t?e.replace(Kp,n=>{for(;;){const[i,,s]=Xp.exec(n)||[];if(!s)return"";if(s===t)return`src: ${i};`}}):e}function Ea(e){return e.search(Aa)!==-1}async function Ta(e,t,n){if(!Ea(e))return e;const i=Zp(e,n);return Gp(i).reduce((o,r)=>o.then(a=>Jp(a,r,t,n)),Promise.resolve(i))}async function Dn(e,t,n){var i;const s=(i=t.style)===null||i===void 0?void 0:i.getPropertyValue(e);if(s){const o=await Ta(s,null,n);return t.style.setProperty(e,o,t.style.getPropertyPriority(e)),!0}return!1}async function Qp(e,t){await Dn("background",e,t)||await Dn("background-image",e,t),await Dn("mask",e,t)||await Dn("mask-image",e,t)}async function tg(e,t){const n=ft(e,HTMLImageElement);if(!(n&&!Ei(e.src))&&!(ft(e,SVGImageElement)&&!Ei(e.href.baseVal)))return;const i=n?e.src:e.href.baseVal,s=await as(i,rs(i),t);await new Promise((o,r)=>{e.onload=o,e.onerror=r;const a=e;a.decode&&(a.decode=o),a.loading==="lazy"&&(a.loading="eager"),n?(e.srcset="",e.src=s):e.href.baseVal=s})}async function eg(e,t){const i=It(e.childNodes).map(s=>Ra(s,t));await Promise.all(i).then(()=>e)}async function Ra(e,t){ft(e,Element)&&(await Qp(e,t),await tg(e,t),await eg(e,t))}function ng(e,t){const{style:n}=e;t.backgroundColor&&(n.backgroundColor=t.backgroundColor),t.width&&(n.width=`${t.width}px`),t.height&&(n.height=`${t.height}px`);const i=t.style;return i!=null&&Object.keys(i).forEach(s=>{n[s]=i[s]}),e}const nr={};async function ir(e){let t=nr[e];if(t!=null)return t;const i=await(await fetch(e)).text();return t={url:e,cssText:i},nr[e]=t,t}async function sr(e,t){let n=e.cssText;const i=/url\(["']?([^"')]+)["']?\)/g,o=(n.match(/url\([^)]+\)/g)||[]).map(async r=>{let a=r.replace(i,"$1");return a.startsWith("https://")||(a=new URL(a,e.url).href),Da(a,t.fetchRequestInit,({result:l})=>(n=n.replace(r,`url(${l})`),[r,l]))});return Promise.all(o).then(()=>n)}function or(e){if(e==null)return[];const t=[],n=/(\/\*[\s\S]*?\*\/)/gi;let i=e.replace(n,"");const s=new RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})","gi");for(;;){const l=s.exec(i);if(l===null)break;t.push(l[0])}i=i.replace(s,"");const o=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,r="((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})",a=new RegExp(r,"gi");for(;;){let l=o.exec(i);if(l===null){if(l=a.exec(i),l===null)break;o.lastIndex=a.lastIndex}else a.lastIndex=o.lastIndex;t.push(l[0])}return t}async function ig(e,t){const n=[],i=[];return e.forEach(s=>{if("cssRules"in s)try{It(s.cssRules||[]).forEach((o,r)=>{if(o.type===CSSRule.IMPORT_RULE){let a=r+1;const l=o.href,c=ir(l).then(h=>sr(h,t)).then(h=>or(h).forEach(u=>{try{s.insertRule(u,u.startsWith("@import")?a+=1:s.cssRules.length)}catch(d){console.error("Error inserting rule from remote css",{rule:u,error:d})}})).catch(h=>{console.error("Error loading remote css",h.toString())});i.push(c)}})}catch(o){const r=e.find(a=>a.href==null)||document.styleSheets[0];s.href!=null&&i.push(ir(s.href).then(a=>sr(a,t)).then(a=>or(a).forEach(l=>{r.insertRule(l,s.cssRules.length)})).catch(a=>{console.error("Error loading remote stylesheet",a)})),console.error("Error inlining remote css file",o)}}),Promise.all(i).then(()=>(e.forEach(s=>{if("cssRules"in s)try{It(s.cssRules||[]).forEach(o=>{n.push(o)})}catch(o){console.error(`Error while reading CSS rules from ${s.href}`,o)}}),n))}function sg(e){return e.filter(t=>t.type===CSSRule.FONT_FACE_RULE).filter(t=>Ea(t.style.getPropertyValue("src")))}async function og(e,t){if(e.ownerDocument==null)throw new Error("Provided element is not within a Document");const n=It(e.ownerDocument.styleSheets),i=await ig(n,t);return sg(i)}async function rg(e,t){const n=await og(e,t);return(await Promise.all(n.map(s=>{const o=s.parentStyleSheet?s.parentStyleSheet.href:null;return Ta(s.cssText,o,t)}))).join(` -`)}async function ag(e,t){const n=t.fontEmbedCSS!=null?t.fontEmbedCSS:t.skipFonts?null:await rg(e,t);if(n){const i=document.createElement("style"),s=document.createTextNode(n);i.appendChild(s),e.firstChild?e.insertBefore(i,e.firstChild):e.appendChild(i)}}async function La(e,t={}){const{width:n,height:i}=Oa(e,t),s=await qn(e,t,!0);return await ag(s,t),await Ra(s,t),ng(s,t),await Cp(s,n,i)}async function Fa(e,t={}){const{width:n,height:i}=Oa(e,t),s=await La(e,t),o=await Vn(s),r=document.createElement("canvas"),a=r.getContext("2d"),l=t.pixelRatio||Sp(),c=t.canvasWidth||n,h=t.canvasHeight||i;return r.width=c*l,r.height=h*l,t.skipAutoScale||kp(r),r.style.width=`${c}`,r.style.height=`${h}`,t.backgroundColor&&(a.fillStyle=t.backgroundColor,a.fillRect(0,0,r.width,r.height)),a.drawImage(o,0,0,r.width,r.height),r}async function lg(e,t={}){return(await Fa(e,t)).toDataURL()}async function cg(e,t={}){return(await Fa(e,t)).toDataURL("image/jpeg",t.quality||1)}const hg=e=>{const t=wt.c(17),{filename:n}=e,i=A.useContext(hr),[s,o]=A.useState(!1),r=A.useRef(null);let a;t[0]!==i||t[1]!==n?(a=async v=>{if(i!=null&&i.current){o(!1);const _={transform:"scale(1)","transform-origin":"top left",background:"white"};let y;t:switch(v){case ge.JPEG:{y=await cg(i.current,{quality:.95,style:_});break t}case ge.SVG:{y=await La(i.current,{style:_});break t}case ge.PNG:default:y=await lg(i.current,{style:_})}const w=document.createElement("a");w.href=typeof y=="string"?y:URL.createObjectURL(y),w.download=`${n}.${v}`,document.body.appendChild(w),w.click(),document.body.removeChild(w)}},t[0]=i,t[1]=n,t[2]=a):a=t[2];const l=a;let c;t[3]!==s?(c=()=>{o(!s)},t[3]=s,t[4]=c):c=t[4];const h=c;let u;t[5]===Symbol.for("react.memo_cache_sentinel")?(u=v=>{r.current&&!r.current.contains(v.target)&&o(!1)},t[5]=u):u=t[5];const d=u;let f,g;t[6]===Symbol.for("react.memo_cache_sentinel")?(f=()=>(document.addEventListener("mousedown",d),()=>{document.removeEventListener("mousedown",d)}),g=[],t[6]=f,t[7]=g):(f=t[6],g=t[7]),A.useEffect(f,g);let m;t[8]===Symbol.for("react.memo_cache_sentinel")?(m=M.jsx(dr,{}),t[8]=m):m=t[8];let p;t[9]!==h?(p=M.jsxs("button",{className:"downloadbutton downloadimage",onClick:h,children:["IMAGE ",m]}),t[9]=h,t[10]=p):p=t[10];let b;t[11]!==l||t[12]!==s?(b=s&&M.jsxs("div",{className:"image-options",children:[M.jsx("div",{className:"imageoption downloadpng",onClick:()=>l(ge.PNG),children:M.jsx("span",{children:"PNG"})}),M.jsx("div",{className:"imageoption downloadjpeg",onClick:()=>l(ge.JPEG),children:M.jsx("span",{children:"JPEG"})}),M.jsx("div",{className:"imageoption downloadsvg",onClick:()=>l(ge.SVG),children:M.jsx("span",{children:"SVG"})})]}),t[11]=l,t[12]=s,t[13]=b):b=t[13];let x;return t[14]!==p||t[15]!==b?(x=M.jsxs("div",{className:"image-dropdown",ref:r,children:[p,b]}),t[14]=p,t[15]=b,t[16]=x):x=t[16],x},ug=e=>{const t=wt.c(12),{data:n,filename:i}=e,s=`${i}.csv`;let o;t[0]!==n||t[1]!==s?(o=M.jsx(Zo,{data:n,filename:s,exportType:xe.CSV}),t[0]=n,t[1]=s,t[2]=o):o=t[2];const r=`${i}.xlsx`;let a;t[3]!==n||t[4]!==r?(a=M.jsx(Zo,{data:n,filename:r,exportType:xe.EXCEL}),t[3]=n,t[4]=r,t[5]=a):a=t[5];let l;t[6]!==i?(l=M.jsx(hg,{filename:i}),t[6]=i,t[7]=l):l=t[7];let c;return t[8]!==o||t[9]!==a||t[10]!==l?(c=M.jsxs("div",{className:"downloadcontainer",children:[o,a,l]}),t[8]=o,t[9]=a,t[10]=l,t[11]=c):c=t[11],c};Ct.defaults.font.size=16;Ct.defaults.font.family="Open Sans";Ct.defaults.font.weight=700;function Bg(e){const t=wt.c(47),{title:n,description:i,filter:s,children:o,category:r,data:a,filename:l}=e,{preview:c,setPreview:h}=A.useContext(il),u=window.location.origin+window.location.pathname,{trackPageView:d}=sl();let f,g;t[0]!==n||t[1]!==d?(f=()=>{d({documentTitle:n})},g=[d,n],t[0]=n,t[1]=d,t[2]=f,t[3]=g):(f=t[2],g=t[3]),A.useEffect(f,g);let m;t[4]!==r?(m=r===G.Organisation&&M.jsx(hp,{}),t[4]=r,t[5]=m):m=t[5];let p;t[6]!==r?(p=r===G.Policy&&M.jsx(dp,{}),t[6]=r,t[7]=p):p=t[7];let b;t[8]!==r?(b=r===G.Network&&M.jsx(fp,{}),t[8]=r,t[9]=b):b=t[9];let x;t[10]!==r?(x=r===G.ConnectedUsers&&M.jsx(pp,{}),t[10]=r,t[11]=x):x=t[11];let v;t[12]!==r?(v=r===G.Services&&M.jsx(gp,{}),t[12]=r,t[13]=v):v=t[13];let _;t[14]===Symbol.for("react.memo_cache_sentinel")?(_=M.jsx(ol,{type:"data"}),t[14]=_):_=t[14];let y;t[15]!==c||t[16]!==h?(y=c&&M.jsx(se,{className:"preview-banner",children:M.jsxs("span",{children:["You are viewing a preview of the website which includes pre-published survey data. ",M.jsx(rl,{to:u,onClick:()=>h(!1),children:"Click here"})," to deactivate preview mode."]})}),t[15]=c,t[16]=h,t[17]=y):y=t[17];let w;t[18]!==r?(w=M.jsx(up,{activeCategory:r}),t[18]=r,t[19]=w):w=t[19];let k;t[20]!==n?(k=M.jsx(se,{children:M.jsx("h3",{className:"m-1",children:n})}),t[20]=n,t[21]=k):k=t[21];let S;t[22]!==i?(S=M.jsx(se,{children:M.jsx("p",{className:"p-md-4",children:i})}),t[22]=i,t[23]=S):S=t[23];let P;t[24]===Symbol.for("react.memo_cache_sentinel")?(P={position:"relative"},t[24]=P):P=t[24];let D;t[25]!==a||t[26]!==l?(D=M.jsx(se,{align:"right",style:P,children:M.jsx(ug,{data:a,filename:l})}),t[25]=a,t[26]=l,t[27]=D):D=t[27];let C;t[28]!==s?(C=M.jsx(se,{children:s}),t[28]=s,t[29]=C):C=t[29];let O;t[30]!==o?(O=M.jsx(se,{children:o}),t[30]=o,t[31]=O):O=t[31];let E;t[32]!==k||t[33]!==S||t[34]!==D||t[35]!==C||t[36]!==O?(E=M.jsxs(cr,{className:"mb-5 grow",children:[k,S,D,C,O]}),t[32]=k,t[33]=S,t[34]=D,t[35]=C,t[36]=O,t[37]=E):E=t[37];let F;return t[38]!==w||t[39]!==E||t[40]!==m||t[41]!==p||t[42]!==b||t[43]!==x||t[44]!==v||t[45]!==y?(F=M.jsxs(M.Fragment,{children:[m,p,b,x,v,_,y,w,E]}),t[38]=w,t[39]=E,t[40]=m,t[41]=p,t[42]=b,t[43]=x,t[44]=v,t[45]=y,t[46]=F):F=t[46],F}function Hg(e){const t=wt.c(81),{filterOptions:n,filterSelection:i,setFilterSelection:s,max1year:o,coloredYears:r}=e,a=o===void 0?!1:o,l=r===void 0?!1:r,[c,h]=A.useState(!0),{nrens:u}=A.useContext(al);let d,f;if(t[0]===Symbol.for("react.memo_cache_sentinel")?(d=()=>{const B=()=>h(window.innerWidth>=992);return window.addEventListener("resize",B),()=>{window.removeEventListener("resize",B)}},f=[],t[0]=d,t[1]=f):(d=t[0],f=t[1]),A.useEffect(d,f),a&&i.selectedYears.length>1){const B=Math.max(...i.selectedYears);s({selectedYears:[B],selectedNrens:[...i.selectedNrens]})}let g;t[2]!==i.selectedNrens||t[3]!==i.selectedYears||t[4]!==s?(g=B=>{i.selectedNrens.includes(B)?s({selectedYears:[...i.selectedYears],selectedNrens:i.selectedNrens.filter(et=>et!==B)}):s({selectedYears:[...i.selectedYears],selectedNrens:[...i.selectedNrens,B]})},t[2]=i.selectedNrens,t[3]=i.selectedYears,t[4]=s,t[5]=g):g=t[5];const m=g;let p;t[6]!==i.selectedNrens||t[7]!==i.selectedYears||t[8]!==a||t[9]!==s?(p=B=>{i.selectedYears.includes(B)?s({selectedYears:i.selectedYears.filter(et=>et!==B),selectedNrens:[...i.selectedNrens]}):s({selectedYears:a?[B]:[...i.selectedYears,B],selectedNrens:[...i.selectedNrens]})},t[6]=i.selectedNrens,t[7]=i.selectedYears,t[8]=a,t[9]=s,t[10]=p):p=t[10];const b=p;let x;t[11]!==n.availableNrens||t[12]!==i.selectedYears||t[13]!==s?(x=()=>{s({selectedYears:[...i.selectedYears],selectedNrens:n.availableNrens.map(pg)})},t[11]=n.availableNrens,t[12]=i.selectedYears,t[13]=s,t[14]=x):x=t[14];const v=x;let _;t[15]!==i.selectedYears||t[16]!==s?(_=()=>{s({selectedYears:[...i.selectedYears],selectedNrens:[]})},t[15]=i.selectedYears,t[16]=s,t[17]=_):_=t[17];const y=_,w=c?3:2,k=Math.ceil(u.length/w);let S,P,D,C,O,E,F,R,L,I;if(t[18]!==n.availableNrens||t[19]!==i.selectedNrens||t[20]!==m||t[21]!==w||t[22]!==k||t[23]!==u){const B=Array.from(Array(w),fg);u.sort(dg).forEach((Jt,Zt)=>{const lt=Math.floor(Zt/k);B[lt].push(Jt)});let et;t[34]!==n.availableNrens?(et=Jt=>n.availableNrens.find(lt=>lt.name===Jt.name)!==void 0,t[34]=n.availableNrens,t[35]=et):et=t[35];const Ee=et;D=xs,L=3,P=ei,E="outside",F="m-3",t[36]===Symbol.for("react.memo_cache_sentinel")?(R=M.jsx(ei.Toggle,{id:"nren-dropdown-toggle",variant:"compendium",children:"Select NRENs "}),t[36]=R):R=t[36],S=ei.Menu,t[37]===Symbol.for("react.memo_cache_sentinel")?(O={borderRadius:0},t[37]=O):O=t[37],I="d-flex fit-max-content mt-4 mx-3";let zt;t[38]!==i.selectedNrens||t[39]!==m||t[40]!==Ee?(zt=(Jt,Zt)=>M.jsx("div",{className:"flex-fill",children:Jt.map(lt=>M.jsx("div",{className:"filter-dropdown-item flex-fill py-1 px-3",children:M.jsxs(Jn.Check,{type:"checkbox",children:[M.jsx(Jn.Check.Input,{id:lt.name,readOnly:!0,type:"checkbox",onClick:()=>m(lt.name),checked:i.selectedNrens.includes(lt.name),className:"nren-checkbox",disabled:!Ee(lt)}),M.jsxs(Jn.Check.Label,{htmlFor:lt.name,className:"nren-checkbox-label",children:[lt.name," ",M.jsxs("span",{style:{fontWeight:"lighter"},children:["(",lt.country,")"]})]})]})},lt.name))},Zt),t[38]=i.selectedNrens,t[39]=m,t[40]=Ee,t[41]=zt):zt=t[41],C=B.map(zt),t[18]=n.availableNrens,t[19]=i.selectedNrens,t[20]=m,t[21]=w,t[22]=k,t[23]=u,t[24]=S,t[25]=P,t[26]=D,t[27]=C,t[28]=O,t[29]=E,t[30]=F,t[31]=R,t[32]=L,t[33]=I}else S=t[24],P=t[25],D=t[26],C=t[27],O=t[28],E=t[29],F=t[30],R=t[31],L=t[32],I=t[33];let Y;t[42]!==C||t[43]!==I?(Y=M.jsx("div",{className:I,children:C}),t[42]=C,t[43]=I,t[44]=Y):Y=t[44];let $;t[45]!==v?($=M.jsx(Ft,{variant:"compendium",className:"flex-fill",onClick:v,children:"Select all NRENs"}),t[45]=v,t[46]=$):$=t[46];let N;t[47]!==y?(N=M.jsx(Ft,{variant:"compendium",className:"flex-fill",onClick:y,children:"Unselect all NRENs"}),t[47]=y,t[48]=N):N=t[48];let tt;t[49]!==$||t[50]!==N?(tt=M.jsxs("div",{className:"d-flex fit-max-content gap-2 mx-4 my-3",children:[$,N]}),t[49]=$,t[50]=N,t[51]=tt):tt=t[51];let Q;t[52]!==S||t[53]!==O||t[54]!==Y||t[55]!==tt?(Q=M.jsxs(S,{style:O,children:[Y,tt]}),t[52]=S,t[53]=O,t[54]=Y,t[55]=tt,t[56]=Q):Q=t[56];let nt;t[57]!==P||t[58]!==E||t[59]!==F||t[60]!==R||t[61]!==Q?(nt=M.jsxs(P,{autoClose:E,className:F,children:[R,Q]}),t[57]=P,t[58]=E,t[59]=F,t[60]=R,t[61]=Q,t[62]=nt):nt=t[62];let U;t[63]!==D||t[64]!==L||t[65]!==nt?(U=M.jsx(D,{xs:L,children:nt}),t[63]=D,t[64]=L,t[65]=nt,t[66]=U):U=t[66];let X;if(t[67]!==l||t[68]!==n.availableYears||t[69]!==i.selectedYears||t[70]!==b){let B;t[72]!==l||t[73]!==i.selectedYears||t[74]!==b?(B=et=>M.jsx(Ft,{variant:l?"compendium-year-"+et%9:"compendium-year",active:i.selectedYears.includes(et),onClick:()=>b(et),children:et},et),t[72]=l,t[73]=i.selectedYears,t[74]=b,t[75]=B):B=t[75],X=n.availableYears.sort().map(B),t[67]=l,t[68]=n.availableYears,t[69]=i.selectedYears,t[70]=b,t[71]=X}else X=t[71];let q;t[76]!==X?(q=M.jsx(xs,{children:M.jsx(Ti,{className:"d-flex justify-content-end gap-2 m-3",children:X})}),t[76]=X,t[77]=q):q=t[77];let At;return t[78]!==U||t[79]!==q?(At=M.jsxs(M.Fragment,{children:[U,q]}),t[78]=U,t[79]=q,t[80]=At):At=t[80],At}function dg(e,t){return e.name.localeCompare(t.name)}function fg(){return[]}function pg(e){return e.name}const Wg=e=>{const t=wt.c(3),{children:n}=e,i=A.useContext(hr);let s;return t[0]!==n||t[1]!==i?(s=M.jsx("div",{ref:i,children:n}),t[0]=n,t[1]=i,t[2]=s):s=t[2],s};function rr(e){const t=new Set,n=new Map;return e.forEach(i=>{t.add(i.year),n.set(i.nren,{name:i.nren,country:i.nren_country})}),{years:t,nrens:n}}function Vg(e,t,n){const i=wt.c(14),s=n===void 0?mg:n;let o;i[0]===Symbol.for("react.memo_cache_sentinel")?(o=[],i[0]=o):o=i[0];const[r,a]=A.useState(o),l=ll(),c=e+(l?"?preview":"");let h;i[1]!==c||i[2]!==t||i[3]!==s?(h=()=>{fetch(c).then(gg).then(b=>{const x=b.filter(s);a(x);const{years:v,nrens:_}=rr(x);t(y=>{const k=y.selectedYears.filter(D=>v.has(D)).length?y.selectedYears:[Math.max(...v)],P=y.selectedNrens.filter(D=>_.has(D)).length?y.selectedNrens:[..._.keys()];return{selectedYears:k,selectedNrens:P}})})},i[1]=c,i[2]=t,i[3]=s,i[4]=h):h=i[4];let u;i[5]!==c||i[6]!==t?(u=[c,t],i[5]=c,i[6]=t,i[7]=u):u=i[7],A.useEffect(h,u);let d,f;i[8]!==r?(f=rr(r),i[8]=r,i[9]=f):f=i[9],d=f;const{years:g,nrens:m}=d;let p;return i[10]!==r||i[11]!==m||i[12]!==g?(p={data:r,years:g,nrens:m},i[10]=r,i[11]=m,i[12]=g,i[13]=p):p=i[13],p}function gg(e){return e.json()}function mg(){return!0}export{K as A,bi as B,Ct as C,Bg as D,_t as E,Hg as F,j as G,V as H,W as I,Mn as J,H as K,Vo as L,z as M,$g as N,pi as P,Ho as a,Cn as b,Cg as c,kg as d,Ig as e,Wg as f,Rg as g,Eg as h,Tg as i,Fg as j,Ae as k,jg as l,zg as m,Pg as n,Ng as o,Mg as p,Og as q,Lg as r,Ag as s,hi as t,Vg as u,ci as v,Dg as w,Je as x,at as y,bn as z}; +`)}async function ag(e,t){const n=t.fontEmbedCSS!=null?t.fontEmbedCSS:t.skipFonts?null:await rg(e,t);if(n){const i=document.createElement("style"),s=document.createTextNode(n);i.appendChild(s),e.firstChild?e.insertBefore(i,e.firstChild):e.appendChild(i)}}async function La(e,t={}){const{width:n,height:i}=Oa(e,t),s=await qn(e,t,!0);return await ag(s,t),await Ra(s,t),ng(s,t),await Cp(s,n,i)}async function Fa(e,t={}){const{width:n,height:i}=Oa(e,t),s=await La(e,t),o=await Vn(s),r=document.createElement("canvas"),a=r.getContext("2d"),l=t.pixelRatio||Sp(),c=t.canvasWidth||n,h=t.canvasHeight||i;return r.width=c*l,r.height=h*l,t.skipAutoScale||kp(r),r.style.width=`${c}`,r.style.height=`${h}`,t.backgroundColor&&(a.fillStyle=t.backgroundColor,a.fillRect(0,0,r.width,r.height)),a.drawImage(o,0,0,r.width,r.height),r}async function lg(e,t={}){return(await Fa(e,t)).toDataURL()}async function cg(e,t={}){return(await Fa(e,t)).toDataURL("image/jpeg",t.quality||1)}const hg=e=>{const t=wt.c(17),{filename:n}=e,i=A.useContext(hr),[s,o]=A.useState(!1),r=A.useRef(null);let a;t[0]!==i||t[1]!==n?(a=async v=>{if(i!=null&&i.current){o(!1);const _={transform:"scale(1)","transform-origin":"top left",background:"white"};let y;t:switch(v){case ge.JPEG:{y=await cg(i.current,{quality:.95,style:_});break t}case ge.SVG:{y=await La(i.current,{style:_});break t}case ge.PNG:default:y=await lg(i.current,{style:_})}const w=document.createElement("a");w.href=typeof y=="string"?y:URL.createObjectURL(y),w.download=`${n}.${v}`,document.body.appendChild(w),w.click(),document.body.removeChild(w)}},t[0]=i,t[1]=n,t[2]=a):a=t[2];const l=a;let c;t[3]!==s?(c=()=>{o(!s)},t[3]=s,t[4]=c):c=t[4];const h=c;let u;t[5]===Symbol.for("react.memo_cache_sentinel")?(u=v=>{r.current&&!r.current.contains(v.target)&&o(!1)},t[5]=u):u=t[5];const d=u;let f,g;t[6]===Symbol.for("react.memo_cache_sentinel")?(f=()=>(document.addEventListener("mousedown",d),()=>{document.removeEventListener("mousedown",d)}),g=[],t[6]=f,t[7]=g):(f=t[6],g=t[7]),A.useEffect(f,g);let m;t[8]===Symbol.for("react.memo_cache_sentinel")?(m=M.jsx(dr,{}),t[8]=m):m=t[8];let p;t[9]!==h?(p=M.jsxs("button",{className:"downloadbutton downloadimage",onClick:h,children:["IMAGE ",m]}),t[9]=h,t[10]=p):p=t[10];let b;t[11]!==l||t[12]!==s?(b=s&&M.jsxs("div",{className:"image-options",children:[M.jsx("div",{className:"imageoption downloadpng",onClick:()=>l(ge.PNG),children:M.jsx("span",{children:"PNG"})}),M.jsx("div",{className:"imageoption downloadjpeg",onClick:()=>l(ge.JPEG),children:M.jsx("span",{children:"JPEG"})}),M.jsx("div",{className:"imageoption downloadsvg",onClick:()=>l(ge.SVG),children:M.jsx("span",{children:"SVG"})})]}),t[11]=l,t[12]=s,t[13]=b):b=t[13];let x;return t[14]!==p||t[15]!==b?(x=M.jsxs("div",{className:"image-dropdown",ref:r,children:[p,b]}),t[14]=p,t[15]=b,t[16]=x):x=t[16],x},ug=e=>{const t=wt.c(12),{data:n,filename:i}=e,s=`${i}.csv`;let o;t[0]!==n||t[1]!==s?(o=M.jsx(Zo,{data:n,filename:s,exportType:xe.CSV}),t[0]=n,t[1]=s,t[2]=o):o=t[2];const r=`${i}.xlsx`;let a;t[3]!==n||t[4]!==r?(a=M.jsx(Zo,{data:n,filename:r,exportType:xe.EXCEL}),t[3]=n,t[4]=r,t[5]=a):a=t[5];let l;t[6]!==i?(l=M.jsx(hg,{filename:i}),t[6]=i,t[7]=l):l=t[7];let c;return t[8]!==o||t[9]!==a||t[10]!==l?(c=M.jsxs("div",{className:"downloadcontainer",children:[o,a,l]}),t[8]=o,t[9]=a,t[10]=l,t[11]=c):c=t[11],c};Ct.defaults.font.size=16;Ct.defaults.font.family="Open Sans";Ct.defaults.font.weight=700;function Bg(e){const t=wt.c(47),{title:n,description:i,filter:s,children:o,category:r,data:a,filename:l}=e,{preview:c,setPreview:h}=A.useContext(il),u=window.location.origin+window.location.pathname,{trackPageView:d}=sl();let f,g;t[0]!==n||t[1]!==d?(f=()=>{d({documentTitle:n})},g=[d,n],t[0]=n,t[1]=d,t[2]=f,t[3]=g):(f=t[2],g=t[3]),A.useEffect(f,g);let m;t[4]!==r?(m=r===G.Organisation&&M.jsx(up,{}),t[4]=r,t[5]=m):m=t[5];let p;t[6]!==r?(p=r===G.Policy&&M.jsx(dp,{}),t[6]=r,t[7]=p):p=t[7];let b;t[8]!==r?(b=r===G.Network&&M.jsx(pp,{}),t[8]=r,t[9]=b):b=t[9];let x;t[10]!==r?(x=r===G.ConnectedUsers&&M.jsx(fp,{}),t[10]=r,t[11]=x):x=t[11];let v;t[12]!==r?(v=r===G.Services&&M.jsx(gp,{}),t[12]=r,t[13]=v):v=t[13];let _;t[14]===Symbol.for("react.memo_cache_sentinel")?(_=M.jsx(ol,{type:"data"}),t[14]=_):_=t[14];let y;t[15]!==c||t[16]!==h?(y=c&&M.jsx(se,{className:"preview-banner",children:M.jsxs("span",{children:["You are viewing a preview of the website which includes pre-published survey data. ",M.jsx(rl,{to:u,onClick:()=>h(!1),children:"Click here"})," to deactivate preview mode."]})}),t[15]=c,t[16]=h,t[17]=y):y=t[17];let w;t[18]!==r?(w=M.jsx(hp,{activeCategory:r}),t[18]=r,t[19]=w):w=t[19];let k;t[20]!==n?(k=M.jsx(se,{children:M.jsx("h3",{className:"m-1",children:n})}),t[20]=n,t[21]=k):k=t[21];let S;t[22]!==i?(S=M.jsx(se,{children:M.jsx("p",{className:"p-md-4",children:i})}),t[22]=i,t[23]=S):S=t[23];let P;t[24]===Symbol.for("react.memo_cache_sentinel")?(P={position:"relative"},t[24]=P):P=t[24];let D;t[25]!==a||t[26]!==l?(D=M.jsx(se,{align:"right",style:P,children:M.jsx(ug,{data:a,filename:l})}),t[25]=a,t[26]=l,t[27]=D):D=t[27];let C;t[28]!==s?(C=M.jsx(se,{children:s}),t[28]=s,t[29]=C):C=t[29];let O;t[30]!==o?(O=M.jsx(se,{children:o}),t[30]=o,t[31]=O):O=t[31];let E;t[32]!==k||t[33]!==S||t[34]!==D||t[35]!==C||t[36]!==O?(E=M.jsxs(cr,{className:"mb-5 grow",children:[k,S,D,C,O]}),t[32]=k,t[33]=S,t[34]=D,t[35]=C,t[36]=O,t[37]=E):E=t[37];let F;return t[38]!==w||t[39]!==E||t[40]!==m||t[41]!==p||t[42]!==b||t[43]!==x||t[44]!==v||t[45]!==y?(F=M.jsxs(M.Fragment,{children:[m,p,b,x,v,_,y,w,E]}),t[38]=w,t[39]=E,t[40]=m,t[41]=p,t[42]=b,t[43]=x,t[44]=v,t[45]=y,t[46]=F):F=t[46],F}function Hg(e){const t=wt.c(81),{filterOptions:n,filterSelection:i,setFilterSelection:s,max1year:o,coloredYears:r}=e,a=o===void 0?!1:o,l=r===void 0?!1:r,[c,h]=A.useState(!0),{nrens:u}=A.useContext(al);let d,f;if(t[0]===Symbol.for("react.memo_cache_sentinel")?(d=()=>{const B=()=>h(window.innerWidth>=992);return window.addEventListener("resize",B),()=>{window.removeEventListener("resize",B)}},f=[],t[0]=d,t[1]=f):(d=t[0],f=t[1]),A.useEffect(d,f),a&&i.selectedYears.length>1){const B=Math.max(...i.selectedYears);s({selectedYears:[B],selectedNrens:[...i.selectedNrens]})}let g;t[2]!==i.selectedNrens||t[3]!==i.selectedYears||t[4]!==s?(g=B=>{i.selectedNrens.includes(B)?s({selectedYears:[...i.selectedYears],selectedNrens:i.selectedNrens.filter(et=>et!==B)}):s({selectedYears:[...i.selectedYears],selectedNrens:[...i.selectedNrens,B]})},t[2]=i.selectedNrens,t[3]=i.selectedYears,t[4]=s,t[5]=g):g=t[5];const m=g;let p;t[6]!==i.selectedNrens||t[7]!==i.selectedYears||t[8]!==a||t[9]!==s?(p=B=>{i.selectedYears.includes(B)?s({selectedYears:i.selectedYears.filter(et=>et!==B),selectedNrens:[...i.selectedNrens]}):s({selectedYears:a?[B]:[...i.selectedYears,B],selectedNrens:[...i.selectedNrens]})},t[6]=i.selectedNrens,t[7]=i.selectedYears,t[8]=a,t[9]=s,t[10]=p):p=t[10];const b=p;let x;t[11]!==n.availableNrens||t[12]!==i.selectedYears||t[13]!==s?(x=()=>{s({selectedYears:[...i.selectedYears],selectedNrens:n.availableNrens.map(pg)})},t[11]=n.availableNrens,t[12]=i.selectedYears,t[13]=s,t[14]=x):x=t[14];const v=x;let _;t[15]!==i.selectedYears||t[16]!==s?(_=()=>{s({selectedYears:[...i.selectedYears],selectedNrens:[]})},t[15]=i.selectedYears,t[16]=s,t[17]=_):_=t[17];const y=_,w=c?3:2,k=Math.ceil(u.length/w);let S,P,D,C,O,E,F,R,L,I;if(t[18]!==n.availableNrens||t[19]!==i.selectedNrens||t[20]!==m||t[21]!==w||t[22]!==k||t[23]!==u){const B=Array.from(Array(w),fg);u.sort(dg).forEach((Jt,Zt)=>{const lt=Math.floor(Zt/k);B[lt].push(Jt)});let et;t[34]!==n.availableNrens?(et=Jt=>n.availableNrens.find(lt=>lt.name===Jt.name)!==void 0,t[34]=n.availableNrens,t[35]=et):et=t[35];const Ee=et;D=xs,L=3,P=ei,E="outside",F="m-3",t[36]===Symbol.for("react.memo_cache_sentinel")?(R=M.jsx(ei.Toggle,{id:"nren-dropdown-toggle",variant:"compendium",children:"Select NRENs "}),t[36]=R):R=t[36],S=ei.Menu,t[37]===Symbol.for("react.memo_cache_sentinel")?(O={borderRadius:0},t[37]=O):O=t[37],I="d-flex fit-max-content mt-4 mx-3";let zt;t[38]!==i.selectedNrens||t[39]!==m||t[40]!==Ee?(zt=(Jt,Zt)=>M.jsx("div",{className:"flex-fill",children:Jt.map(lt=>M.jsx("div",{className:"filter-dropdown-item flex-fill py-1 px-3",children:M.jsxs(Jn.Check,{type:"checkbox",children:[M.jsx(Jn.Check.Input,{id:lt.name,readOnly:!0,type:"checkbox",onClick:()=>m(lt.name),checked:i.selectedNrens.includes(lt.name),className:"nren-checkbox",disabled:!Ee(lt)}),M.jsxs(Jn.Check.Label,{htmlFor:lt.name,className:"nren-checkbox-label",children:[lt.name," ",M.jsxs("span",{style:{fontWeight:"lighter"},children:["(",lt.country,")"]})]})]})},lt.name))},Zt),t[38]=i.selectedNrens,t[39]=m,t[40]=Ee,t[41]=zt):zt=t[41],C=B.map(zt),t[18]=n.availableNrens,t[19]=i.selectedNrens,t[20]=m,t[21]=w,t[22]=k,t[23]=u,t[24]=S,t[25]=P,t[26]=D,t[27]=C,t[28]=O,t[29]=E,t[30]=F,t[31]=R,t[32]=L,t[33]=I}else S=t[24],P=t[25],D=t[26],C=t[27],O=t[28],E=t[29],F=t[30],R=t[31],L=t[32],I=t[33];let Y;t[42]!==C||t[43]!==I?(Y=M.jsx("div",{className:I,children:C}),t[42]=C,t[43]=I,t[44]=Y):Y=t[44];let $;t[45]!==v?($=M.jsx(Ft,{variant:"compendium",className:"flex-fill",onClick:v,children:"Select all NRENs"}),t[45]=v,t[46]=$):$=t[46];let N;t[47]!==y?(N=M.jsx(Ft,{variant:"compendium",className:"flex-fill",onClick:y,children:"Unselect all NRENs"}),t[47]=y,t[48]=N):N=t[48];let tt;t[49]!==$||t[50]!==N?(tt=M.jsxs("div",{className:"d-flex fit-max-content gap-2 mx-4 my-3",children:[$,N]}),t[49]=$,t[50]=N,t[51]=tt):tt=t[51];let Q;t[52]!==S||t[53]!==O||t[54]!==Y||t[55]!==tt?(Q=M.jsxs(S,{style:O,children:[Y,tt]}),t[52]=S,t[53]=O,t[54]=Y,t[55]=tt,t[56]=Q):Q=t[56];let nt;t[57]!==P||t[58]!==E||t[59]!==F||t[60]!==R||t[61]!==Q?(nt=M.jsxs(P,{autoClose:E,className:F,children:[R,Q]}),t[57]=P,t[58]=E,t[59]=F,t[60]=R,t[61]=Q,t[62]=nt):nt=t[62];let U;t[63]!==D||t[64]!==L||t[65]!==nt?(U=M.jsx(D,{xs:L,children:nt}),t[63]=D,t[64]=L,t[65]=nt,t[66]=U):U=t[66];let X;if(t[67]!==l||t[68]!==n.availableYears||t[69]!==i.selectedYears||t[70]!==b){let B;t[72]!==l||t[73]!==i.selectedYears||t[74]!==b?(B=et=>M.jsx(Ft,{variant:l?"compendium-year-"+et%9:"compendium-year",active:i.selectedYears.includes(et),onClick:()=>b(et),children:et},et),t[72]=l,t[73]=i.selectedYears,t[74]=b,t[75]=B):B=t[75],X=n.availableYears.sort().map(B),t[67]=l,t[68]=n.availableYears,t[69]=i.selectedYears,t[70]=b,t[71]=X}else X=t[71];let q;t[76]!==X?(q=M.jsx(xs,{children:M.jsx(Ti,{className:"d-flex justify-content-end gap-2 m-3",children:X})}),t[76]=X,t[77]=q):q=t[77];let At;return t[78]!==U||t[79]!==q?(At=M.jsxs(M.Fragment,{children:[U,q]}),t[78]=U,t[79]=q,t[80]=At):At=t[80],At}function dg(e,t){return e.name.localeCompare(t.name)}function fg(){return[]}function pg(e){return e.name}const Wg=e=>{const t=wt.c(3),{children:n}=e,i=A.useContext(hr);let s;return t[0]!==n||t[1]!==i?(s=M.jsx("div",{ref:i,children:n}),t[0]=n,t[1]=i,t[2]=s):s=t[2],s};function rr(e){const t=new Set,n=new Map;return e.forEach(i=>{t.add(i.year),n.set(i.nren,{name:i.nren,country:i.nren_country})}),{years:t,nrens:n}}function Vg(e,t,n){const i=wt.c(14),s=n===void 0?mg:n;let o;i[0]===Symbol.for("react.memo_cache_sentinel")?(o=[],i[0]=o):o=i[0];const[r,a]=A.useState(o),l=ll(),c=e+(l?"?preview":"");let h;i[1]!==c||i[2]!==t||i[3]!==s?(h=()=>{fetch(c).then(gg).then(b=>{const x=b.filter(s);a(x);const{years:v,nrens:_}=rr(x);t(y=>{const k=y.selectedYears.filter(D=>v.has(D)).length?y.selectedYears:[Math.max(...v)],P=y.selectedNrens.filter(D=>_.has(D)).length?y.selectedNrens:[..._.keys()];return{selectedYears:k,selectedNrens:P}})})},i[1]=c,i[2]=t,i[3]=s,i[4]=h):h=i[4];let u;i[5]!==c||i[6]!==t?(u=[c,t],i[5]=c,i[6]=t,i[7]=u):u=i[7],A.useEffect(h,u);let d,f;i[8]!==r?(f=rr(r),i[8]=r,i[9]=f):f=i[9],d=f;const{years:g,nrens:m}=d;let p;return i[10]!==r||i[11]!==m||i[12]!==g?(p={data:r,years:g,nrens:m},i[10]=r,i[11]=m,i[12]=g,i[13]=p):p=i[13],p}function gg(e){return e.json()}function mg(){return!0}export{K as A,bi as B,Ct as C,Bg as D,_t as E,Hg as F,j as G,V as H,W as I,Mn as J,H as K,Vo as L,z as M,$g as N,pi as P,Ho as a,Cn as b,Cg as c,kg as d,Ig as e,Wg as f,Rg as g,Eg as h,Tg as i,Fg as j,Ae as k,jg as l,zg as m,Pg as n,Ng as o,Mg as p,Og as q,Lg as r,Ag as s,hi as t,Vg as u,ci as v,Dg as w,Je as x,at as y,bn as z}; -- GitLab