diff --git a/Changelog.md b/Changelog.md
index cd3aa36835124a275975f97d947d195cfd18e1c4..c785f3ed652e318a414cca3e4dbdc6b070995af8 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -2,6 +2,9 @@
 
 All notable changes to this project will be documented in this file.
 
+## [0.91] - 2025-02-13
+- Only allow valid survey responses to be published
+- Add NREN exclusions which limits data from view / publishing for a given NREN & Year. If an NREN has an exclusion, they will not be able to answer the survey.
 
 ## [0.90] - 2025-02-12
 - Fix incorrect link in sidebar/frontpage
diff --git a/compendium-frontend/src/survey/Landing.tsx b/compendium-frontend/src/survey/Landing.tsx
index eadd3e87f98390ec0511ed5491e26a6860bd2503..db1bcc1d86643b965e74225801dd3e5650f9171b 100644
--- a/compendium-frontend/src/survey/Landing.tsx
+++ b/compendium-frontend/src/survey/Landing.tsx
@@ -1,12 +1,144 @@
 import { ReactElement, useContext, useState, useEffect } from "react";
 import { useNavigate, Link } from "react-router-dom";
 import { Table, Container, Row } from "react-bootstrap";
+import * as XLSX from "xlsx";
+import SurveySidebar from "compendium/survey/management/SurveySidebar";
+import useMatomo from "compendium/matomo/UseMatomo";
 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 "compendium/matomo/UseMatomo";
+
+interface NRENExclusion {
+    nren: string;
+    year: number;
+}
+
+const NrenExclusionsTable = () => {
+    const [nrenExclusions, setNrenExclusions] = useState<NRENExclusion[]>([]);
+    const [nrens, setNrens] = useState<string[]>([]);
+
+    function fetchNrenExclusions() {
+        fetch('/api/nren-exclusions')
+            .then(response => response.json())
+            .then(data => {
+                setNrenExclusions(data);
+            })
+            .catch(error => {
+                console.error('Error fetching NREN exclusions:', error);
+            });
+    }
+
+    useEffect(() => {
+        fetch('/api/nren/list')
+            .then(response => response.json())
+            .then(data => {
+                const nrenNames = data.map(nren => nren.name);
+                setNrens(nrenNames);
+            })
+            .catch(error => {
+                console.error('Error fetching NRENs:', error);
+            });
+    }, []);
+
+    async function addNrenExclusion(nren: string, year: number) {
+        const response = await fetch('/api/nren-exclusions', {
+            method: 'POST',
+            headers: {
+                'Content-Type': 'application/json',
+            },
+            body: JSON.stringify({ nren, year }),
+        });
+
+        const json = await response.json();
+
+        if (response.ok) {
+            setNrenExclusions(json);
+        } else {
+            alert(json.message)
+        }
+        (document.getElementById('excludenren') as HTMLInputElement).value = '';
+        (document.getElementById('excludeyear') as HTMLInputElement).value = '';
+    }
+
+    async function deleteNrenExclusion(nren: string, year: number) {
+        const response = await fetch(`/api/nren-exclusions`, {
+            method: 'DELETE',
+            headers: {
+                'Content-Type': 'application/json',
+            },
+            body: JSON.stringify({ nren, year }),
+        });
+
+        const json = await response.json();
+
+        if (response.ok) {
+            setNrenExclusions(json);
+        } else {
+            alert(json.message)
+        }
+    }
+
+    useEffect(() => {
+        fetchNrenExclusions();
+    }, []);
+
+    return (
+        <>
+            <hr className="fake-divider" />
+            <h2>NREN Exclusions</h2>
+            <p>Use this table to exclude data for a specific NREN and year.</p>
+            <p>If an NREN shows up in this table, they will not be allowed to view/edit or answer their survey.</p>
+            <Table striped bordered responsive>
+                <thead>
+                    <tr>
+                        <th>NREN</th>
+                        <th>Year</th>
+                        <th>Actions</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    <tr>
+                        <td>
+                            <select id="excludenren">
+                                <option value="">Select NREN</option>
+                                {nrens.map(nren => (
+                                    <option key={nren} value={nren}>{nren}</option>
+                                ))}
+                            </select>
+                        </td>
+                        <td>
+                            <input id="excludeyear" type="year" name="year" />
+                        </td>
+                        <td>
+                            <button className="btn btn-primary" onClick={() => {
+                                const nren = (document.getElementById('excludenren') as HTMLInputElement).value;
+                                const year = parseInt((document.getElementById('excludeyear') as HTMLInputElement).value);
+                                if (!nren || !year) {
+                                    alert('Please enter an NREN and year');
+                                    return;
+                                }
+                                addNrenExclusion(nren, year);
+                            }}>Add Exclusion</button>
+                        </td>
+                    </tr>
+                    {nrenExclusions.map(exclusion => (
+                        <tr key={exclusion.nren + exclusion.year}>
+                            <td>{exclusion.nren}</td>
+                            <td>{exclusion.year}</td>
+                            <td>
+                                <button className="btn btn-danger" onClick={
+                                    () => deleteNrenExclusion(exclusion.nren, exclusion.year)
+                                }>Delete</button>
+                            </td>
+                        </tr>
+                    ))}
+                </tbody>
+            </Table>
+            <hr className="fake-divider" />
+        </>
+
+    );
+}
 
 const SurveyTable = () => {
 
@@ -186,6 +318,7 @@ function Landing(): ReactElement {
                                 {loggedIn && !isObserver && !hasNren && <li><span>Once you have been approved, you will immediately be directed to the relevant survey upon visiting this page</span></li>}
                                 {loggedIn && isObserver && <li><span>You have read-only access to the following surveys:</span></li>}
                             </ul>}
+                            {isAdmin && <NrenExclusionsTable />}
                             {loggedIn && isObserver && <SurveyTable />}
                         </div>
                     </div>
diff --git a/compendium_v2/db/presentation_models.py b/compendium_v2/db/presentation_models.py
index 8ed7b290ab3a861a20c1d7b9411290c46eddda45..703863744f23c4919499afba89d7a4542fecee1e 100644
--- a/compendium_v2/db/presentation_models.py
+++ b/compendium_v2/db/presentation_models.py
@@ -67,6 +67,20 @@ class NREN(PresentationModel):
     name: Mapped[str256]
     country: Mapped[str256]
 
+    exclusions = relationship('NRENExclusion', lazy='selectin')
+
+    def can_answer_survey(self):
+        """
+        Some NRENs are excluded from the survey and data for certain years will not be published.
+        If any exclusions for an NREN are found, future surveys should not be created for that NREN.
+
+        Each exclusion is a year, for which the responses for that year are not published.
+        """
+        return not self.exclusions
+
+    def can_publish_response(self, year):
+        return not any(exclusion.year == year for exclusion in self.exclusions)
+
     def to_dict(self, download=False):
         return {
             'nren': self.name,
@@ -90,6 +104,20 @@ class NREN(PresentationModel):
         return hasattr(other, 'id') and self.id == other.id
 
 
+class NRENExclusion(PresentationModel):
+    __tablename__ = 'nren_exclusion'
+    nren_id: Mapped[int_pk_fkNREN]
+    year: Mapped[int_pk]
+
+    nren = relationship(NREN, lazy='joined', back_populates='exclusions')
+
+    def to_dict(self, download=False):
+        return {
+            'nren': self.nren.name,
+            'year': self.year,
+        }
+
+
 class BudgetEntry(PresentationModel):
     """
     The BudgetEntry model represents the budget of an NREN for a specific year.
diff --git a/compendium_v2/helpers.py b/compendium_v2/helpers.py
index c687168b8e70ca71a6bf1233e01c67fdcaa85d43..ca1355328d668945703919c3823bd7416ad49a81 100644
--- a/compendium_v2/helpers.py
+++ b/compendium_v2/helpers.py
@@ -9,7 +9,8 @@ from typing import Type, Sequence, TypeVar, Dict, Any
 from itertools import chain
 
 from compendium_v2.db import db
-from compendium_v2.db.presentation_models import NREN, PreviewYear, PresentationModel, ExternalConnections
+from compendium_v2.db.presentation_models import (
+    NREN, NRENExclusion, PreviewYear, PresentationModel, ExternalConnections)
 from sqlalchemy import select
 
 T = TypeVar('T', bound=PresentationModel)
@@ -19,7 +20,9 @@ def get_data(table_class: Type[T]) -> Sequence[T]:
     if table_class == NREN:
         data = [extract_model_data(n) for n in db.session.scalars(select(NREN).order_by(NREN.name.asc()))]
         return list(chain(*data))
-    select_statement = select(table_class).join(NREN).order_by(NREN.name.asc(), table_class.year.asc())
+    select_statement = select(table_class).join(NREN).order_by(NREN.name.asc(), table_class.year.asc()).where(
+        ~table_class.nren_id.in_(select(NRENExclusion.nren_id).where(NRENExclusion.year == table_class.year))
+    )
 
     can_preview = (not current_user.is_anonymous) and current_user.can_preview
     preview = can_preview and request.args.get('preview') is not None
diff --git a/compendium_v2/migrations/versions/c49b3a8b3c30_add_nren_exclusions.py b/compendium_v2/migrations/versions/c49b3a8b3c30_add_nren_exclusions.py
new file mode 100644
index 0000000000000000000000000000000000000000..035d590d89eeb773c0974ddbf91a994d20d7743e
--- /dev/null
+++ b/compendium_v2/migrations/versions/c49b3a8b3c30_add_nren_exclusions.py
@@ -0,0 +1,30 @@
+"""Add NREN exclusions
+
+Revision ID: c49b3a8b3c30
+Revises: 7d1a8783770d
+Create Date: 2025-02-12 16:24:27.204181
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = 'c49b3a8b3c30'
+down_revision = '7d1a8783770d'
+branch_labels = None
+depends_on = None
+
+
+def upgrade():
+    op.create_table(
+        'nren_exclusion',
+        sa.Column('nren_id', sa.Integer(), nullable=False),
+        sa.Column('year', sa.Integer(), nullable=False),
+        sa.ForeignKeyConstraint(['nren_id'], ['nren.id'], name=op.f('fk_nren_exclusion_nren_id_nren')),
+        sa.PrimaryKeyConstraint('nren_id', 'year', name=op.f('pk_nren_exclusion'))
+    )
+
+
+def downgrade():
+    op.drop_table('nren_exclusion')
diff --git a/compendium_v2/publishers/survey_publisher.py b/compendium_v2/publishers/survey_publisher.py
index a789022f21e6b4d862916df44ada4524403a4337..7b7686aa2b627d6fa8c39ef1d25b2e4019451f5c 100644
--- a/compendium_v2/publishers/survey_publisher.py
+++ b/compendium_v2/publishers/survey_publisher.py
@@ -23,6 +23,7 @@ from compendium_v2.db.survey_models import ResponseStatus, SurveyResponse
 from compendium_v2.publishers.year.map_2023 import map_2023
 from compendium_v2.publishers.year.map_2024 import map_2024
 from compendium_v2.db.presentation_models import (
+    NRENExclusion,
     PresentationModel,
     AlienWave,
     BudgetEntry,
@@ -294,8 +295,12 @@ def save_data(year: int, data: Dict[PresentationModel, Sequence[Dict[str, Any]]]
 
 def publish(year, dry_run=False):
     responses = db.session.scalars(
-        select(SurveyResponse).where(SurveyResponse.survey_year == year)
-                              .where(SurveyResponse.status == ResponseStatus.completed)
+        select(SurveyResponse).where(
+            SurveyResponse.survey_year == year, SurveyResponse.status == ResponseStatus.completed,
+            SurveyResponse.valid == True).where(~SurveyResponse.nren_id.in_(  # noqa: E712
+                select(NRENExclusion.nren_id).where(NRENExclusion.year == year)
+            )
+        )
     ).unique().all()
 
     question_mapping = {
diff --git a/compendium_v2/routes/api.py b/compendium_v2/routes/api.py
index 4735f79bcb6bee098fc237aa272c06d1b0767b40..adec71717d083a22e851a2ffb8f024e555c2d79c 100644
--- a/compendium_v2/routes/api.py
+++ b/compendium_v2/routes/api.py
@@ -1,5 +1,8 @@
 import logging
-from flask import Blueprint, jsonify
+from flask import Blueprint, jsonify, request
+from sqlalchemy import func
+from compendium_v2.auth.session_management import admin_required
+from compendium_v2.db import db
 from compendium_v2.helpers import get_data
 from compendium_v2.routes import common
 from compendium_v2.routes.survey import routes as survey
@@ -7,6 +10,7 @@ from compendium_v2.routes.user import routes as user_routes
 from compendium_v2.routes.response import routes as response_routes
 from compendium_v2.routes.data_download import routes as data_download
 from compendium_v2.db.presentation_models import (
+    NRENExclusion,
     BudgetEntry, FundingSource, ChargingStructure, NrenStaff, ParentOrganization, SubOrganization,
     ECProject, Policy, TrafficVolume, InstitutionURLs, CentralProcurement, ServiceManagement,
     ServiceUserTypes, EOSCListings, Standards, CrisisExercises, SecurityControls, ConnectedProportion,
@@ -75,6 +79,48 @@ models = [
 ]
 
 
+@routes.route('/nren-exclusions', methods=['GET', 'POST', 'DELETE'])
+@admin_required
+@common.require_accepts_json
+def nren_exclusions():
+
+    if request.method == 'POST':
+        data = request.get_json()
+        nren_name = data.get('nren')
+        year = data.get('year')
+
+        nren = db.session.query(NREN).filter(func.lower(NREN.name) == nren_name.lower()).first()
+        if not nren:
+            return jsonify({'message': f'NREN {nren_name} not found'}), 400
+
+        exists = next((exclusion for exclusion in nren.exclusions if exclusion.year == year), None)
+        if exists:
+            return jsonify({'message': f'Exclusion for {nren_name} in {year} already exists'}), 400
+
+        exclusion = NRENExclusion(nren=nren, year=year)
+        db.session.add(exclusion)
+        db.session.commit()
+
+    elif request.method == 'DELETE':
+        data = request.get_json()
+        nren_name = data.get('nren')
+        year = data.get('year')
+
+        nren = db.session.query(NREN).filter(func.lower(NREN.name) == nren_name.lower()).first()
+        if not nren:
+            return jsonify({'message': f'NREN {nren_name} not found'}), 400
+
+        exclusion = next((exclusion for exclusion in nren.exclusions if exclusion.year == year), None)
+        if not exclusion:
+            return jsonify({'message': f'Exclusion for {nren_name} in {year} not found'}), 400
+
+        db.session.delete(exclusion)
+        db.session.commit()
+
+    exclusions = db.session.query(NRENExclusion).all()
+    return jsonify([exclusion.to_dict() for exclusion in exclusions])
+
+
 def create_view_func(model):
     return lambda: jsonify(get_data(model))
 
diff --git a/compendium_v2/routes/response.py b/compendium_v2/routes/response.py
index ee9ccda249f6c9636e06ed860c071240c2c978ed..2daed7fe5bf02fcd16d37977470aa9cd759d6c4e 100644
--- a/compendium_v2/routes/response.py
+++ b/compendium_v2/routes/response.py
@@ -78,11 +78,13 @@ class SurveyMode(str, Enum):
     Edit = "edit"
 
 
-def check_access_nren_read(user: User, nren: str) -> bool:
+def check_access_nren_read(user: User, nren: NREN) -> bool:
     if user.is_anonymous:
         return False
     if user.is_admin:
         return True
+    if not nren.can_answer_survey():
+        return False
     if user.is_observer:
         return True
     if nren == user.nren:
@@ -90,7 +92,7 @@ def check_access_nren_read(user: User, nren: str) -> bool:
     return False
 
 
-def check_access_nren_write(user: User, nren: str) -> bool:
+def check_access_nren_write(user: User, nren: NREN) -> bool:
     if not check_access_nren_read(user, nren):
         # if you can't read it, you definitely shouldn't write to it
         return False
diff --git a/compendium_v2/routes/survey.py b/compendium_v2/routes/survey.py
index 32ba5d69e9f3e2449a80387414af769babab396a..986cf3552d5b6ec000738debfe467a079f8ea13b 100644
--- a/compendium_v2/routes/survey.py
+++ b/compendium_v2/routes/survey.py
@@ -147,7 +147,7 @@ def list_surveys() -> Any:
         return response.status.value + response.nren.name.lower()
 
     all_nrens = db.session.scalars(select(NREN)).all()
-    nrens = {nren.name: nren.id for nren in all_nrens}
+    nrens = {nren.name: nren for nren in all_nrens}
     nren_names = set(nrens.keys())
 
     all_surveys: List[SurveyDict] = []
@@ -166,13 +166,17 @@ def list_surveys() -> Any:
             nrens_with_responses = set([r["nren"]["name"] for r in survey_dict["responses"]])
             missing_responses = nren_names.difference(nrens_with_responses)
             for nren_name in sorted(missing_responses, key=str.lower):
+                nren = nrens[nren_name]
+                if not nren.can_answer_survey():
+                    # exclude nrens that are not allowed to answer the survey
+                    continue
                 responses.append({
                     "status": RESPONSE_NOT_STARTED if status == SurveyStatus.open else RESPONSE_NOT_COMPLETED,
                     "lock_description": "",
                     "valid": False,
                     "nren": {
                         'name': nren_name,
-                        'id': nrens[nren_name]
+                        'id': nren.id
                     },
                 })
 
diff --git a/compendium_v2/static/Landing-35TvxyJ6.js b/compendium_v2/static/Landing-35TvxyJ6.js
new file mode 100644
index 0000000000000000000000000000000000000000..7c44e34ae3546f3b157978ad51e41ced4790b34a
--- /dev/null
+++ b/compendium_v2/static/Landing-35TvxyJ6.js
@@ -0,0 +1 @@
+import{c as Q,Q as K,r as L,a1 as X,D as Z,j as t,L as z,E as ee,R as te}from"./index.js";import{u as W,w as ne}from"./xlsx-BHRztzV8.js";import{S as re}from"./SurveySidebar-CG0gwQ6b.js";import{f as se,a as le}from"./survey-3meXCY6T.js";import{T as q}from"./Table-ClWM2_rS.js";import"./SideBar-CkoMfgfL.js";const oe=()=>{const e=Q.c(32);let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=[],e[0]=i):i=e[0];const[u,m]=L.useState(i);let n;e[1]===Symbol.for("react.memo_cache_sentinel")?(n=[],e[1]=n):n=e[1];const[a,h]=L.useState(n);let s;e[2]===Symbol.for("react.memo_cache_sentinel")?(s=function(){fetch("/api/nren-exclusions").then(de).then(r=>{m(r)}).catch(me)},e[2]=s):s=e[2];const c=s;let f,P;e[3]===Symbol.for("react.memo_cache_sentinel")?(f=()=>{fetch("/api/nren/list").then(he).then(l=>{const r=l.map(ue);h(r)}).catch(fe)},P=[],e[3]=f,e[4]=P):(f=e[3],P=e[4]),L.useEffect(f,P);let E;e[5]===Symbol.for("react.memo_cache_sentinel")?(E=async function(r,D){const N=await fetch("/api/nren-exclusions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({nren:r,year:D})}),$=await N.json();N.ok?m($):alert($.message),document.getElementById("excludenren").value="",document.getElementById("excludeyear").value=""},e[5]=E):E=e[5];const G=E;let S;e[6]===Symbol.for("react.memo_cache_sentinel")?(S=async function(r,D){const N=await fetch("/api/nren-exclusions",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({nren:r,year:D})}),$=await N.json();N.ok?m($):alert($.message)},e[6]=S):S=e[6];const H=S;let w,M;e[7]===Symbol.for("react.memo_cache_sentinel")?(w=()=>{c()},M=[],e[7]=w,e[8]=M):(w=e[7],M=e[8]),L.useEffect(w,M);let x,C,k,R;e[9]===Symbol.for("react.memo_cache_sentinel")?(R=t.jsx("hr",{className:"fake-divider"}),x=t.jsx("h2",{children:"NREN Exclusions"}),C=t.jsx("p",{children:"Use this table to exclude data for a specific NREN and year."}),k=t.jsx("p",{children:"If an NREN shows up in this table, they will not be allowed to view/edit or answer their survey."}),e[9]=x,e[10]=C,e[11]=k,e[12]=R):(x=e[9],C=e[10],k=e[11],R=e[12]);let T;e[13]===Symbol.for("react.memo_cache_sentinel")?(T=t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"NREN"}),t.jsx("th",{children:"Year"}),t.jsx("th",{children:"Actions"})]})}),e[13]=T):T=e[13];let A;e[14]===Symbol.for("react.memo_cache_sentinel")?(A=t.jsx("option",{value:"",children:"Select NREN"}),e[14]=A):A=e[14];let y;e[15]!==a?(y=a.map(xe),e[15]=a,e[16]=y):y=e[16];let p;e[17]!==y?(p=t.jsx("td",{children:t.jsxs("select",{id:"excludenren",children:[A,y]})}),e[17]=y,e[18]=p):p=e[18];let O;e[19]===Symbol.for("react.memo_cache_sentinel")?(O=t.jsx("td",{children:t.jsx("input",{id:"excludeyear",type:"year",name:"year"})}),e[19]=O):O=e[19];let I;e[20]===Symbol.for("react.memo_cache_sentinel")?(I=t.jsx("td",{children:t.jsx("button",{className:"btn btn-primary",onClick:()=>{const l=document.getElementById("excludenren").value,r=parseInt(document.getElementById("excludeyear").value);if(!l||!r){alert("Please enter an NREN and year");return}G(l,r)},children:"Add Exclusion"})}),e[20]=I):I=e[20];let j;e[21]!==p?(j=t.jsxs("tr",{children:[p,O,I]}),e[21]=p,e[22]=j):j=e[22];let b;if(e[23]!==u){let l;e[25]===Symbol.for("react.memo_cache_sentinel")?(l=r=>t.jsxs("tr",{children:[t.jsx("td",{children:r.nren}),t.jsx("td",{children:r.year}),t.jsx("td",{children:t.jsx("button",{className:"btn btn-danger",onClick:()=>H(r.nren,r.year),children:"Delete"})})]},r.nren+r.year),e[25]=l):l=e[25],b=u.map(l),e[23]=u,e[24]=b}else b=e[24];let d;e[26]!==j||e[27]!==b?(d=t.jsxs(q,{striped:!0,bordered:!0,responsive:!0,children:[T,t.jsxs("tbody",{children:[j,b]})]}),e[26]=j,e[27]=b,e[28]=d):d=e[28];let _;e[29]===Symbol.for("react.memo_cache_sentinel")?(_=t.jsx("hr",{className:"fake-divider"}),e[29]=_):_=e[29];let v;return e[30]!==d?(v=t.jsxs(t.Fragment,{children:[R,x,C,k,d,_]}),e[30]=d,e[31]=v):v=e[31],v},ce=()=>{const e=Q.c(7),[i,u]=L.useState();let m,n;e[0]===Symbol.for("react.memo_cache_sentinel")?(m=()=>{le().then(c=>{u(c[0])})},n=[],e[0]=m,e[1]=n):(m=e[0],n=e[1]),L.useEffect(m,n);let a;e[2]===Symbol.for("react.memo_cache_sentinel")?(a=t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"(N)REN"}),t.jsx("th",{children:"Link"}),t.jsx("th",{children:"Survey Status"})]})}),e[2]=a):a=e[2];let h;e[3]!==i?(h=i&&i.responses.map(c=>t.jsxs("tr",{children:[t.jsx("td",{children:c.nren.name}),t.jsx("td",{children:t.jsx(z,{to:`/survey/response/${i.year}/${c.nren.name}`,children:t.jsx("span",{children:"Navigate to survey"})})}),t.jsx("td",{children:c.status})]},c.nren.id)),e[3]=i,e[4]=h):h=e[4];let s;return e[5]!==h?(s=t.jsxs(q,{striped:!0,bordered:!0,responsive:!0,children:[a,t.jsx("tbody",{children:h})]}),e[5]=h,e[6]=s):s=e[6],s};function ge(){const e=Q.c(40),{trackPageView:i}=K(),{user:u}=L.useContext(X),m=Z(),n=!!u.id,a=n?!!u.nrens.length:!1,h=a?u.nrens[0]:"",s=n?u.permissions.admin:!1,c=n?u.role==="observer":!1,[f,P]=L.useState(null);let E,G;e[0]!==i?(E=()=>{(async()=>{const N=await se();P(N)})(),i({documentTitle:"GEANT Survey Landing Page"})},G=[i],e[0]=i,e[1]=E,e[2]=G):(E=e[1],G=e[2]),L.useEffect(E,G);let S;e[3]!==h||e[4]!==f||e[5]!==m?(S=()=>{try{return m(`/survey/response/${f}/${h}`),t.jsx("li",{children:"Redirecting to survey..."})}catch(D){return console.error("Error navigating:",D),null}},e[3]=h,e[4]=f,e[5]=m,e[6]=S):S=e[6];const H=S;let w;if(e[7]===Symbol.for("react.memo_cache_sentinel")){const D=function(Y,F,g){const B=W.decode_range(Y["!ref"]??"");let J=-1;for(let o=B.s.c;o<=B.e.c;o++){const U=W.encode_cell({r:B.s.r,c:o}),V=Y[U];if(V&&typeof V.v=="string"&&V.v===F){J=o;break}}if(J===-1){console.error(`Column '${F}' not found.`);return}for(let o=B.s.r+1;o<=B.e.r;++o){const U=W.encode_cell({r:o,c:J});Y[U]&&Y[U].t==="n"&&(Y[U].z=g)}},N=function(Y){const F=W.book_new();Y.forEach(o=>{const U=W.json_to_sheet(o.data);o.meta&&D(U,o.meta.columnName,o.meta.format),W.book_append_sheet(F,U,o.name)});const g=ne(F,{bookType:"xlsx",type:"binary"}),B=new ArrayBuffer(g.length),J=new Uint8Array(B);for(let o=0;o<g.length;o++)J[o]=g.charCodeAt(o)&255;return new Blob([B],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8"})};w=function(){fetch("/api/data-download").then(ae).then(Y=>{const F=N(Y),g=document.createElement("a");g.href=URL.createObjectURL(F),g.download="data.xlsx",document.body.appendChild(g),g.click(),document.body.removeChild(g)}).catch(ie)},e[7]=w}else w=e[7];const M=w;let x;e[8]!==s?(x=s&&t.jsx(re,{}),e[8]=s,e[9]=x):x=e[9];let C;e[10]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx("h1",{className:"geant-header",children:"THE GÉANT COMPENDIUM OF NRENS SURVEY"}),e[10]=C):C=e[10];let k,R;e[11]===Symbol.for("react.memo_cache_sentinel")?(k={maxWidth:"75rem"},R={textAlign:"left"},e[11]=k,e[12]=R):(k=e[11],R=e[12]);let T;e[13]===Symbol.for("react.memo_cache_sentinel")?(T=t.jsx("br",{}),e[13]=T):T=e[13];let A;e[14]===Symbol.for("react.memo_cache_sentinel")?(A=t.jsx("a",{href:"/login",children:"here"}),e[14]=A):A=e[14];let y;e[15]===Symbol.for("react.memo_cache_sentinel")?(y=t.jsx("br",{}),e[15]=y):y=e[15];let p;e[16]===Symbol.for("react.memo_cache_sentinel")?(p=t.jsx("br",{}),e[16]=p):p=e[16];let O,I,j,b;e[17]===Symbol.for("react.memo_cache_sentinel")?(O=t.jsxs("p",{style:R,children:["Hello,",T,"Welcome to the GÉANT Compendium Survey. (N)REN Compendium administrators can login via Single Sign On (SSO) ",A,", which will complete their registration to fill in the latest Compendium survey. This will send a notification to the Compendium administration team and they will assign you to your (N)REN.",y,"Once this step has been completed, you will receive an email from the administration team. We aim to get back to you the same working day, but sometimes may take a little longer.",p,"If you are not sure whether you are a Compendium Administrator for your (N)REN, please contact your GÉANT Partner Relations relationship manager.",t.jsx("br",{}),"Thank you."]}),I=t.jsx("span",{children:"Current registration status:"}),j=t.jsx("br",{}),b=t.jsx("br",{}),e[17]=O,e[18]=I,e[19]=j,e[20]=b):(O=e[17],I=e[18],j=e[19],b=e[20]);let d;e[21]!==f||e[22]!==a||e[23]!==s||e[24]!==c||e[25]!==n||e[26]!==H?(d=s?t.jsxs("ul",{children:[t.jsx("li",{children:t.jsx("span",{children:"You are logged in as a Compendium Administrator"})}),t.jsx("li",{children:t.jsxs("span",{children:["Click ",t.jsx(z,{to:"/survey/admin/surveys",children:"here"})," to access the survey management page."]})}),t.jsx("li",{children:t.jsxs("span",{children:["Click ",t.jsx(z,{to:"/survey/admin/users",children:"here"})," to access the user management page."]})}),t.jsx("li",{children:t.jsxs("span",{children:["Click ",t.jsx("a",{href:"#",onClick:M,children:"here"})," to do the full data download."]})})]}):t.jsxs("ul",{children:[f&&!s&&!c&&a&&H(),n?t.jsx("li",{children:t.jsx("span",{children:"You are logged in"})}):t.jsx("li",{children:t.jsx("span",{children:"You are not logged in"})}),n&&!c&&!a&&t.jsx("li",{children:t.jsx("span",{children:"Your access to the survey has not yet been approved"})}),n&&!c&&!a&&t.jsx("li",{children:t.jsx("span",{children:"Once you have been approved, you will immediately be directed to the relevant survey upon visiting this page"})}),n&&c&&t.jsx("li",{children:t.jsx("span",{children:"You have read-only access to the following surveys:"})})]}),e[21]=f,e[22]=a,e[23]=s,e[24]=c,e[25]=n,e[26]=H,e[27]=d):d=e[27];let _;e[28]!==s?(_=s&&t.jsx(oe,{}),e[28]=s,e[29]=_):_=e[29];let v;e[30]!==c||e[31]!==n?(v=n&&c&&t.jsx(ce,{}),e[30]=c,e[31]=n,e[32]=v):v=e[32];let l;e[33]!==d||e[34]!==_||e[35]!==v?(l=t.jsx(ee,{className:"py-5 grey-container",children:t.jsx(te,{children:t.jsxs("div",{className:"center-text",children:[C,t.jsxs("div",{className:"wordwrap pt-4",style:k,children:[O,I,j,b,d,_,v]})]})})}),e[33]=d,e[34]=_,e[35]=v,e[36]=l):l=e[36];let r;return e[37]!==l||e[38]!==x?(r=t.jsxs(t.Fragment,{children:[x,l]}),e[37]=l,e[38]=x,e[39]=r):r=e[39],r}function ie(e){console.error("Error fetching data:",e),alert("An error occurred while creating the data download Excel file.")}function ae(e){if(!e.ok)throw new Error("Network response was not ok");return e.json()}function de(e){return e.json()}function me(e){console.error("Error fetching NREN exclusions:",e)}function he(e){return e.json()}function ue(e){return e.name}function fe(e){console.error("Error fetching NRENs:",e)}function xe(e){return t.jsx("option",{value:e,children:e},e)}export{ge as default};
diff --git a/compendium_v2/static/Landing-B1Sq71Lu.js b/compendium_v2/static/Landing-B1Sq71Lu.js
deleted file mode 100644
index 3d53f7158e4c91e2c288fe0664f4bdb40a1e5468..0000000000000000000000000000000000000000
--- a/compendium_v2/static/Landing-B1Sq71Lu.js
+++ /dev/null
@@ -1 +0,0 @@
-import{c as V,Q as q,r as _,a1 as J,D as K,j as t,L as W,E as X,R as Z}from"./index.js";import{f as ee,a as te}from"./survey-3meXCY6T.js";import{S as ne}from"./SurveySidebar-CG0gwQ6b.js";import{u as b,w as re}from"./xlsx-BHRztzV8.js";import{T as se}from"./Table-ClWM2_rS.js";import"./SideBar-CkoMfgfL.js";const oe=()=>{const e=V.c(7),[i,f]=_.useState();let h,r;e[0]===Symbol.for("react.memo_cache_sentinel")?(h=()=>{te().then(s=>{f(s[0])})},r=[],e[0]=h,e[1]=r):(h=e[0],r=e[1]),_.useEffect(h,r);let l;e[2]===Symbol.for("react.memo_cache_sentinel")?(l=t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{children:"(N)REN"}),t.jsx("th",{children:"Link"}),t.jsx("th",{children:"Survey Status"})]})}),e[2]=l):l=e[2];let c;e[3]!==i?(c=i&&i.responses.map(s=>t.jsxs("tr",{children:[t.jsx("td",{children:s.nren.name}),t.jsx("td",{children:t.jsx(W,{to:`/survey/response/${i.year}/${s.nren.name}`,children:t.jsx("span",{children:"Navigate to survey"})})}),t.jsx("td",{children:s.status})]},s.nren.id)),e[3]=i,e[4]=c):c=e[4];let o;return e[5]!==c?(o=t.jsxs(se,{striped:!0,bordered:!0,responsive:!0,children:[l,t.jsx("tbody",{children:c})]}),e[5]=c,e[6]=o):o=e[6],o};function fe(){const e=V.c(37),{trackPageView:i}=q(),{user:f}=_.useContext(J),h=K(),r=!!f.id,l=r?!!f.nrens.length:!1,c=l?f.nrens[0]:"",o=r?f.permissions.admin:!1,s=r?f.role==="observer":!1,[y,z]=_.useState(null);let w,E;e[0]!==i?(w=()=>{(async()=>{const P=await ee();z(P)})(),i({documentTitle:"GEANT Survey Landing Page"})},E=[i],e[0]=i,e[1]=w,e[2]=E):(w=e[1],E=e[2]),_.useEffect(w,E);let N;e[3]!==c||e[4]!==y||e[5]!==h?(N=()=>{try{return h(`/survey/response/${y}/${c}`),t.jsx("li",{children:"Redirecting to survey..."})}catch(I){return console.error("Error navigating:",I),null}},e[3]=c,e[4]=y,e[5]=h,e[6]=N):N=e[6];const B=N;let C;if(e[7]===Symbol.for("react.memo_cache_sentinel")){const I=function(d,x,a){const m=b.decode_range(d["!ref"]??"");let S=-1;for(let n=m.s.c;n<=m.e.c;n++){const u=b.encode_cell({r:m.s.r,c:n}),M=d[u];if(M&&typeof M.v=="string"&&M.v===x){S=n;break}}if(S===-1){console.error(`Column '${x}' not found.`);return}for(let n=m.s.r+1;n<=m.e.r;++n){const u=b.encode_cell({r:n,c:S});d[u]&&d[u].t==="n"&&(d[u].z=a)}},P=function(d){const x=b.book_new();d.forEach(n=>{const u=b.json_to_sheet(n.data);n.meta&&I(u,n.meta.columnName,n.meta.format),b.book_append_sheet(x,u,n.name)});const a=re(x,{bookType:"xlsx",type:"binary"}),m=new ArrayBuffer(a.length),S=new Uint8Array(m);for(let n=0;n<a.length;n++)S[n]=a.charCodeAt(n)&255;return new Blob([m],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8"})};C=function(){fetch("/api/data-download").then(ae).then(d=>{const x=P(d),a=document.createElement("a");a.href=URL.createObjectURL(x),a.download="data.xlsx",document.body.appendChild(a),a.click(),document.body.removeChild(a)}).catch(le)},e[7]=C}else C=e[7];const Q=C;let p;e[8]!==o?(p=o&&t.jsx(ne,{}),e[8]=o,e[9]=p):p=e[9];let k;e[10]===Symbol.for("react.memo_cache_sentinel")?(k=t.jsx("h1",{className:"geant-header",children:"THE GÉANT COMPENDIUM OF NRENS SURVEY"}),e[10]=k):k=e[10];let T,A;e[11]===Symbol.for("react.memo_cache_sentinel")?(T={maxWidth:"75rem"},A={textAlign:"left"},e[11]=T,e[12]=A):(T=e[11],A=e[12]);let R;e[13]===Symbol.for("react.memo_cache_sentinel")?(R=t.jsx("br",{}),e[13]=R):R=e[13];let Y;e[14]===Symbol.for("react.memo_cache_sentinel")?(Y=t.jsx("a",{href:"/login",children:"here"}),e[14]=Y):Y=e[14];let L;e[15]===Symbol.for("react.memo_cache_sentinel")?(L=t.jsx("br",{}),e[15]=L):L=e[15];let O;e[16]===Symbol.for("react.memo_cache_sentinel")?(O=t.jsx("br",{}),e[16]=O):O=e[16];let $,D,U,F;e[17]===Symbol.for("react.memo_cache_sentinel")?($=t.jsxs("p",{style:A,children:["Hello,",R,"Welcome to the GÉANT Compendium Survey. (N)REN Compendium administrators can login via Single Sign On (SSO) ",Y,", which will complete their registration to fill in the latest Compendium survey. This will send a notification to the Compendium administration team and they will assign you to your (N)REN.",L,"Once this step has been completed, you will receive an email from the administration team. We aim to get back to you the same working day, but sometimes may take a little longer.",O,"If you are not sure whether you are a Compendium Administrator for your (N)REN, please contact your GÉANT Partner Relations relationship manager.",t.jsx("br",{}),"Thank you."]}),D=t.jsx("span",{children:"Current registration status:"}),U=t.jsx("br",{}),F=t.jsx("br",{}),e[17]=$,e[18]=D,e[19]=U,e[20]=F):($=e[17],D=e[18],U=e[19],F=e[20]);let j;e[21]!==y||e[22]!==l||e[23]!==o||e[24]!==s||e[25]!==r||e[26]!==B?(j=o?t.jsxs("ul",{children:[t.jsx("li",{children:t.jsx("span",{children:"You are logged in as a Compendium Administrator"})}),t.jsx("li",{children:t.jsxs("span",{children:["Click ",t.jsx(W,{to:"/survey/admin/surveys",children:"here"})," to access the survey management page."]})}),t.jsx("li",{children:t.jsxs("span",{children:["Click ",t.jsx(W,{to:"/survey/admin/users",children:"here"})," to access the user management page."]})}),t.jsx("li",{children:t.jsxs("span",{children:["Click ",t.jsx("a",{href:"#",onClick:Q,children:"here"})," to do the full data download."]})})]}):t.jsxs("ul",{children:[y&&!o&&!s&&l&&B(),r?t.jsx("li",{children:t.jsx("span",{children:"You are logged in"})}):t.jsx("li",{children:t.jsx("span",{children:"You are not logged in"})}),r&&!s&&!l&&t.jsx("li",{children:t.jsx("span",{children:"Your access to the survey has not yet been approved"})}),r&&!s&&!l&&t.jsx("li",{children:t.jsx("span",{children:"Once you have been approved, you will immediately be directed to the relevant survey upon visiting this page"})}),r&&s&&t.jsx("li",{children:t.jsx("span",{children:"You have read-only access to the following surveys:"})})]}),e[21]=y,e[22]=l,e[23]=o,e[24]=s,e[25]=r,e[26]=B,e[27]=j):j=e[27];let v;e[28]!==s||e[29]!==r?(v=r&&s&&t.jsx(oe,{}),e[28]=s,e[29]=r,e[30]=v):v=e[30];let g;e[31]!==j||e[32]!==v?(g=t.jsx(X,{className:"py-5 grey-container",children:t.jsx(Z,{children:t.jsxs("div",{className:"center-text",children:[k,t.jsxs("div",{className:"wordwrap pt-4",style:T,children:[$,D,U,F,j,v]})]})})}),e[31]=j,e[32]=v,e[33]=g):g=e[33];let G;return e[34]!==g||e[35]!==p?(G=t.jsxs(t.Fragment,{children:[p,g]}),e[34]=g,e[35]=p,e[36]=G):G=e[36],G}function le(e){console.error("Error fetching data:",e),alert("An error occurred while creating the data download Excel file.")}function ae(e){if(!e.ok)throw new Error("Network response was not ok");return e.json()}export{fe as default};
diff --git a/compendium_v2/static/index.js b/compendium_v2/static/index.js
index b85dd4b9c104f9cb1469e63a7bf3af664fffdf56..a3d2323ad38a04bb9c911d9da19ed8c9aeb2d4a2 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-DX8h4kEm.js","index-CjWPDfDC.js","useData-CxftshCa.js","SideBar-CkoMfgfL.js","xlsx-BHRztzV8.js","index-ZGgT6a2u.js","hook-BbhLqP_c.js","charthelpers-B0zLHD4s.js","ChargingStructure-BiXVfonj.js","PillTable-Cnj0nnFy.js","ColorPill-CXvWIfWz.js","Table-ClWM2_rS.js","ECProjects-Ixano_sS.js","NrenYearTable-tQrmAmRo.js","FundingSource-DoZCzgMa.js","chartjs-plugin-datalabels.esm-CjG-nxnq.js","ParentOrganisation-OrE_JaGF.js","StaffGraph-D3mBN476.js","HTMLLegendPlugin-C-L3dIU1.js","StaffGraphAbsolute-I7Y3C-nj.js","SubOrganisation-C7B4_RD0.js","Audits-DfjcC9VL.js","BusinessContinuity-CswNIFcO.js","CentralProcurement-_z44vsb4.js","CorporateStrategy-BrErbevP.js","CrisisExercises-mu7CJTN3.js","CrisisManagement-BxTFYm8e.js","EOSCListings-DWYL3kBM.js","Policy-C19_KfRY.js","SecurityControls-CkjbRt2j.js","ServiceLevelTargets-BQyQ1ynP.js","ServiceManagementFramework-DDW7v-XJ.js","ServicesOffered-BnmNlrgs.js","ScrollableMatrix-Dxr22l4i.js","ConnectedInstitutionsURLs-BSBw8xZy.js","ConnectedUser-DXYx3bSL.js","RemoteCampuses-Bu_1Ucwy.js","AlienWave-DO1S2459.js","AlienWaveInternal-BhuqQCyf.js","Automation-DzfRRQiO.js","CapacityCoreIP-P2rbPvQY.js","CapacityLargestLink-CGhxu47M.js","CertificateProvider-CpWnMPbq.js","DarkFibreLease-Nz1_rVx9.js","DarkFibreInstalled-Uox2eGX8.js","ExternalConnections-BVnV4NEl.js","FibreLight-UtHnGi0p.js","IRUDuration-CI7E3kyS.js","MonitoringTools-C61NJKaR.js","NetworkFunctionVirtualisation-DLW-vjXN.js","NetworkMapUrls-B3Qc49It.js","NonRAndEPeer-Cg_pAdU8.js","OPsAutomation-BoFZP12U.js","PassiveMonitoring-Cv8zkVr2.js","PertTeam-Cf_GEMUq.js","SiemVendors-pjqFJlX2.js","TrafficRatio-BELkAOlA.js","TrafficUrl-BLm4mZku.js","TrafficVolume-1MvPPErr.js","WeatherMap-CZPcsrK6.js","Services-kzZ5IOvA.js","Landing-B1Sq71Lu.js","survey-3meXCY6T.js","SurveySidebar-CG0gwQ6b.js","SurveyContainerComponent-DxT_-mC9.js","index-BGZcCZJE.js","survey.core-D1mOb2z9.js","validation-COFmylEH.js","DZ9kPoxi.css","SurveyManagementComponent-DygIuffI.js","lodash-0qAddrJ1.js","UserManagementComponent-DK-BhUBG.js"])))=>i.map(i=>d[i]);
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["Budget-DX8h4kEm.js","index-CjWPDfDC.js","useData-CxftshCa.js","SideBar-CkoMfgfL.js","xlsx-BHRztzV8.js","index-ZGgT6a2u.js","hook-BbhLqP_c.js","charthelpers-B0zLHD4s.js","ChargingStructure-BiXVfonj.js","PillTable-Cnj0nnFy.js","ColorPill-CXvWIfWz.js","Table-ClWM2_rS.js","ECProjects-Ixano_sS.js","NrenYearTable-tQrmAmRo.js","FundingSource-DoZCzgMa.js","chartjs-plugin-datalabels.esm-CjG-nxnq.js","ParentOrganisation-OrE_JaGF.js","StaffGraph-D3mBN476.js","HTMLLegendPlugin-C-L3dIU1.js","StaffGraphAbsolute-I7Y3C-nj.js","SubOrganisation-C7B4_RD0.js","Audits-DfjcC9VL.js","BusinessContinuity-CswNIFcO.js","CentralProcurement-_z44vsb4.js","CorporateStrategy-BrErbevP.js","CrisisExercises-mu7CJTN3.js","CrisisManagement-BxTFYm8e.js","EOSCListings-DWYL3kBM.js","Policy-C19_KfRY.js","SecurityControls-CkjbRt2j.js","ServiceLevelTargets-BQyQ1ynP.js","ServiceManagementFramework-DDW7v-XJ.js","ServicesOffered-BnmNlrgs.js","ScrollableMatrix-Dxr22l4i.js","ConnectedInstitutionsURLs-BSBw8xZy.js","ConnectedUser-DXYx3bSL.js","RemoteCampuses-Bu_1Ucwy.js","AlienWave-DO1S2459.js","AlienWaveInternal-BhuqQCyf.js","Automation-DzfRRQiO.js","CapacityCoreIP-P2rbPvQY.js","CapacityLargestLink-CGhxu47M.js","CertificateProvider-CpWnMPbq.js","DarkFibreLease-Nz1_rVx9.js","DarkFibreInstalled-Uox2eGX8.js","ExternalConnections-BVnV4NEl.js","FibreLight-UtHnGi0p.js","IRUDuration-CI7E3kyS.js","MonitoringTools-C61NJKaR.js","NetworkFunctionVirtualisation-DLW-vjXN.js","NetworkMapUrls-B3Qc49It.js","NonRAndEPeer-Cg_pAdU8.js","OPsAutomation-BoFZP12U.js","PassiveMonitoring-Cv8zkVr2.js","PertTeam-Cf_GEMUq.js","SiemVendors-pjqFJlX2.js","TrafficRatio-BELkAOlA.js","TrafficUrl-BLm4mZku.js","TrafficVolume-1MvPPErr.js","WeatherMap-CZPcsrK6.js","Services-kzZ5IOvA.js","Landing-35TvxyJ6.js","SurveySidebar-CG0gwQ6b.js","survey-3meXCY6T.js","SurveyContainerComponent-DxT_-mC9.js","index-BGZcCZJE.js","survey.core-D1mOb2z9.js","validation-COFmylEH.js","DZ9kPoxi.css","SurveyManagementComponent-DygIuffI.js","lodash-0qAddrJ1.js","UserManagementComponent-DK-BhUBG.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-providers",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-DX8h4kEm.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),qS=g.lazy(()=>be(()=>import("./ChargingStructure-BiXVfonj.js"),__vite__mapDeps([8,2,3,4,5,6,9,10,11]))),VS=g.lazy(()=>be(()=>import("./ECProjects-Ixano_sS.js"),__vite__mapDeps([12,2,3,4,5,6,13,11]))),YS=g.lazy(()=>be(()=>import("./FundingSource-DoZCzgMa.js"),__vite__mapDeps([14,1,2,3,4,5,6,15]))),GS=g.lazy(()=>be(()=>import("./ParentOrganisation-OrE_JaGF.js"),__vite__mapDeps([16,2,3,4,5,6,13,11]))),Oy=g.lazy(()=>be(()=>import("./StaffGraph-D3mBN476.js"),__vite__mapDeps([17,1,2,3,4,5,6,18]))),kS=g.lazy(()=>be(()=>import("./StaffGraphAbsolute-I7Y3C-nj.js"),__vite__mapDeps([19,1,2,3,4,5,6,15,7]))),XS=g.lazy(()=>be(()=>import("./SubOrganisation-C7B4_RD0.js"),__vite__mapDeps([20,2,3,4,5,6,13,11]))),QS=g.lazy(()=>be(()=>import("./Audits-DfjcC9VL.js"),__vite__mapDeps([21,2,3,4,5,6,9,10,11]))),ZS=g.lazy(()=>be(()=>import("./BusinessContinuity-CswNIFcO.js"),__vite__mapDeps([22,2,3,4,5,6,9,10,11]))),KS=g.lazy(()=>be(()=>import("./CentralProcurement-_z44vsb4.js"),__vite__mapDeps([23,2,3,4,5,6,15,1,7]))),$S=g.lazy(()=>be(()=>import("./CorporateStrategy-BrErbevP.js"),__vite__mapDeps([24,2,3,4,5,6,13,11]))),FS=g.lazy(()=>be(()=>import("./CrisisExercises-mu7CJTN3.js"),__vite__mapDeps([25,2,3,4,5,6,9,10,11]))),JS=g.lazy(()=>be(()=>import("./CrisisManagement-BxTFYm8e.js"),__vite__mapDeps([26,2,3,4,5,6,9,10,11]))),PS=g.lazy(()=>be(()=>import("./EOSCListings-DWYL3kBM.js"),__vite__mapDeps([27,2,3,4,5,6,13,11]))),WS=g.lazy(()=>be(()=>import("./Policy-C19_KfRY.js"),__vite__mapDeps([28,2,3,4,5,6,13,11]))),IS=g.lazy(()=>be(()=>import("./SecurityControls-CkjbRt2j.js"),__vite__mapDeps([29,2,3,4,5,6,9,10,11]))),e2=g.lazy(()=>be(()=>import("./ServiceLevelTargets-BQyQ1ynP.js"),__vite__mapDeps([30,2,3,4,5,6,9,10,11]))),t2=g.lazy(()=>be(()=>import("./ServiceManagementFramework-DDW7v-XJ.js"),__vite__mapDeps([31,2,3,4,5,6,9,10,11]))),n2=g.lazy(()=>be(()=>import("./ServicesOffered-BnmNlrgs.js"),__vite__mapDeps([32,2,3,4,5,6,33,11]))),a2=g.lazy(()=>be(()=>import("./ConnectedInstitutionsURLs-BSBw8xZy.js"),__vite__mapDeps([34,2,3,4,5,6,13,11]))),dl=g.lazy(()=>be(()=>import("./ConnectedUser-DXYx3bSL.js"),__vite__mapDeps([35,2,3,4,5,6,33,11]))),l2=g.lazy(()=>be(()=>import("./RemoteCampuses-Bu_1Ucwy.js"),__vite__mapDeps([36,2,3,4,5,6,11]))),i2=g.lazy(()=>be(()=>import("./AlienWave-DO1S2459.js"),__vite__mapDeps([37,2,3,4,5,6,9,10,11]))),r2=g.lazy(()=>be(()=>import("./AlienWaveInternal-BhuqQCyf.js"),__vite__mapDeps([38,2,3,4,5,6,9,10,11]))),u2=g.lazy(()=>be(()=>import("./Automation-DzfRRQiO.js"),__vite__mapDeps([39,2,3,4,5,6,10,11]))),c2=g.lazy(()=>be(()=>import("./CapacityCoreIP-P2rbPvQY.js"),__vite__mapDeps([40,1,2,3,4,5,6,15,7]))),s2=g.lazy(()=>be(()=>import("./CapacityLargestLink-CGhxu47M.js"),__vite__mapDeps([41,1,2,3,4,5,6,15,7]))),o2=g.lazy(()=>be(()=>import("./CertificateProvider-CpWnMPbq.js"),__vite__mapDeps([42,2,3,4,5,6,9,10,11]))),Dy=g.lazy(()=>be(()=>import("./DarkFibreLease-Nz1_rVx9.js"),__vite__mapDeps([43,1,2,3,4,5,6,7]))),f2=g.lazy(()=>be(()=>import("./DarkFibreInstalled-Uox2eGX8.js"),__vite__mapDeps([44,1,2,3,4,5,6,7]))),d2=g.lazy(()=>be(()=>import("./ExternalConnections-BVnV4NEl.js"),__vite__mapDeps([45,2,3,4,5,6,11]))),h2=g.lazy(()=>be(()=>import("./FibreLight-UtHnGi0p.js"),__vite__mapDeps([46,2,3,4,5,6,9,10,11]))),m2=g.lazy(()=>be(()=>import("./IRUDuration-CI7E3kyS.js"),__vite__mapDeps([47,1,2,3,4,5,6,7]))),y2=g.lazy(()=>be(()=>import("./MonitoringTools-C61NJKaR.js"),__vite__mapDeps([48,2,3,4,5,6,9,10,11]))),p2=g.lazy(()=>be(()=>import("./NetworkFunctionVirtualisation-DLW-vjXN.js"),__vite__mapDeps([49,2,3,4,5,6,10,11]))),v2=g.lazy(()=>be(()=>import("./NetworkMapUrls-B3Qc49It.js"),__vite__mapDeps([50,2,3,4,5,6,13,11]))),g2=g.lazy(()=>be(()=>import("./NonRAndEPeer-Cg_pAdU8.js"),__vite__mapDeps([51,1,2,3,4,5,6,15,7]))),E2=g.lazy(()=>be(()=>import("./OPsAutomation-BoFZP12U.js"),__vite__mapDeps([52,2,3,4,5,6,9,10,11]))),b2=g.lazy(()=>be(()=>import("./PassiveMonitoring-Cv8zkVr2.js"),__vite__mapDeps([53,2,3,4,5,6,9,10,11]))),S2=g.lazy(()=>be(()=>import("./PertTeam-Cf_GEMUq.js"),__vite__mapDeps([54,2,3,4,5,6,9,10,11]))),x2=g.lazy(()=>be(()=>import("./SiemVendors-pjqFJlX2.js"),__vite__mapDeps([55,2,3,4,5,6,9,10,11]))),_2=g.lazy(()=>be(()=>import("./TrafficRatio-BELkAOlA.js"),__vite__mapDeps([56,1,2,3,4,5,6,18]))),R2=g.lazy(()=>be(()=>import("./TrafficUrl-BLm4mZku.js"),__vite__mapDeps([57,2,3,4,5,6,13,11]))),T2=g.lazy(()=>be(()=>import("./TrafficVolume-1MvPPErr.js"),__vite__mapDeps([58,1,2,3,4,5,6,7]))),N2=g.lazy(()=>be(()=>import("./WeatherMap-CZPcsrK6.js"),__vite__mapDeps([59,2,3,4,5,6,13,11]))),Ua=g.lazy(()=>be(()=>import("./Services-kzZ5IOvA.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-DxT_-mC9.js"),__vite__mapDeps([64,65,66,67,63,3,68]))),j2=g.lazy(()=>be(()=>import("./SurveyManagementComponent-DygIuffI.js"),__vite__mapDeps([69,70,6,11,65,67,62,63,3]))),O2=g.lazy(()=>be(()=>import("./UserManagementComponent-DK-BhUBG.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{zE 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,Yp 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-providers",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-DX8h4kEm.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]))),qS=g.lazy(()=>be(()=>import("./ChargingStructure-BiXVfonj.js"),__vite__mapDeps([8,2,3,4,5,6,9,10,11]))),VS=g.lazy(()=>be(()=>import("./ECProjects-Ixano_sS.js"),__vite__mapDeps([12,2,3,4,5,6,13,11]))),YS=g.lazy(()=>be(()=>import("./FundingSource-DoZCzgMa.js"),__vite__mapDeps([14,1,2,3,4,5,6,15]))),GS=g.lazy(()=>be(()=>import("./ParentOrganisation-OrE_JaGF.js"),__vite__mapDeps([16,2,3,4,5,6,13,11]))),Oy=g.lazy(()=>be(()=>import("./StaffGraph-D3mBN476.js"),__vite__mapDeps([17,1,2,3,4,5,6,18]))),kS=g.lazy(()=>be(()=>import("./StaffGraphAbsolute-I7Y3C-nj.js"),__vite__mapDeps([19,1,2,3,4,5,6,15,7]))),XS=g.lazy(()=>be(()=>import("./SubOrganisation-C7B4_RD0.js"),__vite__mapDeps([20,2,3,4,5,6,13,11]))),QS=g.lazy(()=>be(()=>import("./Audits-DfjcC9VL.js"),__vite__mapDeps([21,2,3,4,5,6,9,10,11]))),ZS=g.lazy(()=>be(()=>import("./BusinessContinuity-CswNIFcO.js"),__vite__mapDeps([22,2,3,4,5,6,9,10,11]))),KS=g.lazy(()=>be(()=>import("./CentralProcurement-_z44vsb4.js"),__vite__mapDeps([23,2,3,4,5,6,15,1,7]))),$S=g.lazy(()=>be(()=>import("./CorporateStrategy-BrErbevP.js"),__vite__mapDeps([24,2,3,4,5,6,13,11]))),FS=g.lazy(()=>be(()=>import("./CrisisExercises-mu7CJTN3.js"),__vite__mapDeps([25,2,3,4,5,6,9,10,11]))),JS=g.lazy(()=>be(()=>import("./CrisisManagement-BxTFYm8e.js"),__vite__mapDeps([26,2,3,4,5,6,9,10,11]))),PS=g.lazy(()=>be(()=>import("./EOSCListings-DWYL3kBM.js"),__vite__mapDeps([27,2,3,4,5,6,13,11]))),WS=g.lazy(()=>be(()=>import("./Policy-C19_KfRY.js"),__vite__mapDeps([28,2,3,4,5,6,13,11]))),IS=g.lazy(()=>be(()=>import("./SecurityControls-CkjbRt2j.js"),__vite__mapDeps([29,2,3,4,5,6,9,10,11]))),e2=g.lazy(()=>be(()=>import("./ServiceLevelTargets-BQyQ1ynP.js"),__vite__mapDeps([30,2,3,4,5,6,9,10,11]))),t2=g.lazy(()=>be(()=>import("./ServiceManagementFramework-DDW7v-XJ.js"),__vite__mapDeps([31,2,3,4,5,6,9,10,11]))),n2=g.lazy(()=>be(()=>import("./ServicesOffered-BnmNlrgs.js"),__vite__mapDeps([32,2,3,4,5,6,33,11]))),a2=g.lazy(()=>be(()=>import("./ConnectedInstitutionsURLs-BSBw8xZy.js"),__vite__mapDeps([34,2,3,4,5,6,13,11]))),dl=g.lazy(()=>be(()=>import("./ConnectedUser-DXYx3bSL.js"),__vite__mapDeps([35,2,3,4,5,6,33,11]))),l2=g.lazy(()=>be(()=>import("./RemoteCampuses-Bu_1Ucwy.js"),__vite__mapDeps([36,2,3,4,5,6,11]))),i2=g.lazy(()=>be(()=>import("./AlienWave-DO1S2459.js"),__vite__mapDeps([37,2,3,4,5,6,9,10,11]))),r2=g.lazy(()=>be(()=>import("./AlienWaveInternal-BhuqQCyf.js"),__vite__mapDeps([38,2,3,4,5,6,9,10,11]))),u2=g.lazy(()=>be(()=>import("./Automation-DzfRRQiO.js"),__vite__mapDeps([39,2,3,4,5,6,10,11]))),c2=g.lazy(()=>be(()=>import("./CapacityCoreIP-P2rbPvQY.js"),__vite__mapDeps([40,1,2,3,4,5,6,15,7]))),s2=g.lazy(()=>be(()=>import("./CapacityLargestLink-CGhxu47M.js"),__vite__mapDeps([41,1,2,3,4,5,6,15,7]))),o2=g.lazy(()=>be(()=>import("./CertificateProvider-CpWnMPbq.js"),__vite__mapDeps([42,2,3,4,5,6,9,10,11]))),Dy=g.lazy(()=>be(()=>import("./DarkFibreLease-Nz1_rVx9.js"),__vite__mapDeps([43,1,2,3,4,5,6,7]))),f2=g.lazy(()=>be(()=>import("./DarkFibreInstalled-Uox2eGX8.js"),__vite__mapDeps([44,1,2,3,4,5,6,7]))),d2=g.lazy(()=>be(()=>import("./ExternalConnections-BVnV4NEl.js"),__vite__mapDeps([45,2,3,4,5,6,11]))),h2=g.lazy(()=>be(()=>import("./FibreLight-UtHnGi0p.js"),__vite__mapDeps([46,2,3,4,5,6,9,10,11]))),m2=g.lazy(()=>be(()=>import("./IRUDuration-CI7E3kyS.js"),__vite__mapDeps([47,1,2,3,4,5,6,7]))),y2=g.lazy(()=>be(()=>import("./MonitoringTools-C61NJKaR.js"),__vite__mapDeps([48,2,3,4,5,6,9,10,11]))),p2=g.lazy(()=>be(()=>import("./NetworkFunctionVirtualisation-DLW-vjXN.js"),__vite__mapDeps([49,2,3,4,5,6,10,11]))),v2=g.lazy(()=>be(()=>import("./NetworkMapUrls-B3Qc49It.js"),__vite__mapDeps([50,2,3,4,5,6,13,11]))),g2=g.lazy(()=>be(()=>import("./NonRAndEPeer-Cg_pAdU8.js"),__vite__mapDeps([51,1,2,3,4,5,6,15,7]))),E2=g.lazy(()=>be(()=>import("./OPsAutomation-BoFZP12U.js"),__vite__mapDeps([52,2,3,4,5,6,9,10,11]))),b2=g.lazy(()=>be(()=>import("./PassiveMonitoring-Cv8zkVr2.js"),__vite__mapDeps([53,2,3,4,5,6,9,10,11]))),S2=g.lazy(()=>be(()=>import("./PertTeam-Cf_GEMUq.js"),__vite__mapDeps([54,2,3,4,5,6,9,10,11]))),x2=g.lazy(()=>be(()=>import("./SiemVendors-pjqFJlX2.js"),__vite__mapDeps([55,2,3,4,5,6,9,10,11]))),_2=g.lazy(()=>be(()=>import("./TrafficRatio-BELkAOlA.js"),__vite__mapDeps([56,1,2,3,4,5,6,18]))),R2=g.lazy(()=>be(()=>import("./TrafficUrl-BLm4mZku.js"),__vite__mapDeps([57,2,3,4,5,6,13,11]))),T2=g.lazy(()=>be(()=>import("./TrafficVolume-1MvPPErr.js"),__vite__mapDeps([58,1,2,3,4,5,6,7]))),N2=g.lazy(()=>be(()=>import("./WeatherMap-CZPcsrK6.js"),__vite__mapDeps([59,2,3,4,5,6,13,11]))),Ua=g.lazy(()=>be(()=>import("./Services-kzZ5IOvA.js"),__vite__mapDeps([60,2,3,4,5,6,11]))),C2=g.lazy(()=>be(()=>import("./Landing-35TvxyJ6.js"),__vite__mapDeps([61,4,62,3,63,11]))),No=g.lazy(()=>be(()=>import("./SurveyContainerComponent-DxT_-mC9.js"),__vite__mapDeps([64,65,66,67,62,3,68]))),j2=g.lazy(()=>be(()=>import("./SurveyManagementComponent-DygIuffI.js"),__vite__mapDeps([69,70,6,11,65,67,63,62,3]))),O2=g.lazy(()=>be(()=>import("./UserManagementComponent-DK-BhUBG.js"),__vite__mapDeps([71,65,62,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{zE 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,Yp 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/setup.py b/setup.py
index bfca59086e6a6b81fbcb08814d116daa1bf58eb2..752d917a167457d863be1ed0f5844d6430870e1f 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
 
 setup(
     name='compendium-v2',
-    version="0.90",
+    version="0.91",
     author='GEANT',
     author_email='swd@geant.org',
     description='Flask and React project for displaying '
diff --git a/test/test_data_download.py b/test/test_data_download.py
new file mode 100644
index 0000000000000000000000000000000000000000..18601f7fe74d6aea91eb18abc47f74749591853c
--- /dev/null
+++ b/test/test_data_download.py
@@ -0,0 +1,69 @@
+import json
+import pathlib
+from sqlalchemy import select
+from compendium_v2.routes.api import models
+from compendium_v2.db import db
+from compendium_v2.db.presentation_models import NREN, NRENService, Service
+
+TEST_DATA_DIR = pathlib.Path(__file__).parent / 'data' / 'presentation_models_data'
+
+
+def _get_data(model):
+    filename = TEST_DATA_DIR / f'{model.__name__}.json'
+    if not filename.exists():
+        raise FileNotFoundError(
+            f'Data file for {model.__name__} not found at {filename}. Run test_data_dump.py to generate it.')
+    with open(filename, 'r') as f:
+        return json.load(f)
+
+
+def setup(model, nrens):
+    if model == NREN:
+        return
+
+    if model == NRENService:
+        services = {s.name_key: s for s in db.session.scalars(select(Service)).all()}
+
+    def _create_instance(model, data):
+        nren = nrens[data['nren_id']]
+        if model == NRENService:
+            service = services[data['service_key']]
+            return model(nren=nren, service=service, **data)
+
+        return model(nren=nren, **data)
+
+    data = _get_data(model)
+    instances = list(filter(lambda i: i is not None, [_create_instance(model, instance) for instance in data]))
+    db.session.add_all(instances)
+    db.session.commit()
+
+
+def test_data_download(app, client, mocked_admin_user, nren_services):
+    nren_services(app)
+
+    with app.app_context():
+        # set up the presentation model data for NREN first, as the instances are needed for other models
+        nren_data = _get_data(NREN)
+        nrens = {
+            nren['id']: NREN(**nren)
+            for nren in nren_data
+        }
+        db.session.add_all(nrens.values())
+        db.session.commit()
+
+        response = client.get('/api/data-download/', headers={'Accept': ['application/json']})
+        assert response.status_code == 200
+        json = response.get_json()
+        assert not any([d.get('data') for d in json])
+
+        for model, *_ in models:
+            setup(model, nrens)
+
+        response = client.get('/api/data-download/', headers={'Accept': ['application/json']})
+        assert response.status_code == 200
+        json = response.get_json()
+        data_counts = [len(d['data']) for d in json]
+        assert sum(data_counts) > 0
+
+        assert all([len(d['data']) > 0 for d in json if d['name'] != 'Survey Comments'])
+        assert len([d for d in json if len(d['data']) == 0]) == 1  # only no data for survey comments
diff --git a/test/test_survey_publisher.py b/test/test_survey_publisher.py
index 620edf576b0d452fa9dea9207fc883ccb04f1103..1c151aff9cac9ad03cd5102b445f60291bd4d4f7 100644
--- a/test/test_survey_publisher.py
+++ b/test/test_survey_publisher.py
@@ -38,14 +38,15 @@ def test_v2_publisher_full(app):
         nren = presentation_models.NREN(name='name', country='country')
         db.session.add(nren)
         survey = Survey(year=2023, survey={}, status=SurveyStatus.open)
-        response = SurveyResponse(survey=survey, nren=nren, answers={"data": data}, status=ResponseStatus.completed)
+        response = SurveyResponse(survey=survey, nren=nren, answers={
+                                  "data": data}, status=ResponseStatus.completed, valid=True)
         db.session.add(survey)
         db.session.add(response)
         db.session.commit()
 
         survey_2024 = Survey(year=2024, survey={}, status=SurveyStatus.open)
         response_2024 = SurveyResponse(survey=survey_2024, nren=nren, answers={
-                                       "data": data}, status=ResponseStatus.completed)
+                                       "data": data}, status=ResponseStatus.completed, valid=True)
         db.session.add(survey_2024)
         db.session.add(response_2024)
         db.session.commit()