From 05afd27e95f7711e4ed7316be3e8425f9b5ade57 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Fri, 17 Jan 2025 19:27:31 -0600 Subject: [PATCH 01/32] reorganize sidebar --- mkdocs.yml | 152 +++++++++++++++++++++++------------------------------ 1 file changed, 67 insertions(+), 85 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 3b8910a1b..ccd30ca9d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -117,69 +117,13 @@ nav: - HPSS: data-management/filesystem-and-storage/hpss.md - Disk Quota: data-management/filesystem-and-storage/disk-quota.md - - Facility Policies: - - Overview of Policies: policies/facility-policies.md - - ALCF Acknowledgement Policy: policies/alcf-acknowledgement-policy.md - - Account Policies: - - Accounts Policy: policies/accounts/accounts-policy.md - - Account Sponsorship & Retention Policy: policies/accounts/account-sponsorship-retention-policy.md - - User Authentication Policy: policies/accounts/user-authentication-policy.md - - Queue and Scheduling Policies: - - Queue and Scheduling Policy: policies/queue-scheduling/queue-and-scheduling-policy.md - - Refund Policy: policies/queue-scheduling/refund-policy.md - - Pullback Policy: policies/queue-scheduling/pullback-policy.md - - Data and Software Policies: - - Data Policy: policies/data-and-software-policies/data-policy.md - - Software Policy: policies/data-and-software-policies/software-policy.md + - Running Jobs with PBS at the ALCF: + - Job Scheduling and Execution: running-jobs/job-and-queue-scheduling.md + - Example Job Scripts: running-jobs/example-job-scripts.md + - Machine Reservations: running-jobs/machine-reservations.md + - Cobalt to PBS option Comparison: running-jobs/pbs-qsub-options-table.md - Machines: - - - AI Testbed: - - Getting Started: ai-testbed/getting-started.md - - Cerebras: - - System Overview: ai-testbed/cerebras/system-overview.md - - Getting Started: ai-testbed/cerebras/getting-started.md - - Running a Model/Program: ai-testbed/cerebras/running-a-model-or-program.md - - Customizing Environments: ai-testbed/cerebras/customizing-environment.md - - Job Queuing and Submission: ai-testbed/cerebras/job-queuing-and-submission.md - - Example Programs: ai-testbed/cerebras/example-programs.md - #- Performance Tools: ai-testbed/cerebras/performance-tools.md - - Tunneling and Forwarding Ports: ai-testbed/cerebras/tunneling-and-forwarding-ports.md - - Miscellaneous: ai-testbed/cerebras/miscellaneous.md - - Graphcore: - - System Overview: ai-testbed/graphcore/system-overview.md - - Getting Started: ai-testbed/graphcore/getting-started.md - - Virtual Environment: ai-testbed/graphcore/virtual-environments.md - - Running a Model/Program: ai-testbed/graphcore/running-a-model-or-program.md - - Job Queuing and Submission: ai-testbed/graphcore/job-queuing-and-submission.md - - Example Programs: ai-testbed/graphcore/example-programs.md - - Miscellaneous: ai-testbed/graphcore/miscellaneous.md - - Documentation: ai-testbed/graphcore/documentation.md - - Groq: - - System Overview: ai-testbed/groq/system-overview.md - - Getting Started: ai-testbed/groq/getting-started.md - - Running a Model/Program: ai-testbed/groq/running-a-model-or-program.md - #- Example Programs: ai-testbed/groq/example-programs.md - - Virtual Environments: ai-testbed/groq/virtual-environments.md - - Job Queueing and Submission: ai-testbed/groq/job-queuing-and-submission.md - - Profiling with GroqView: ai-testbed/groq/groqview.md - - SambaNova: - - System Overview: ai-testbed/sambanova/system-overview.md - - Getting Started: ai-testbed/sambanova/getting-started.md - - Virtual Environment: ai-testbed/sambanova/virtual-environment.md - - Running a Model/Program: ai-testbed/sambanova/running-a-model-or-program.md - - Job Queuing and Submission: ai-testbed/sambanova/job-queuing-and-submission.md - - Example Programs: ai-testbed/sambanova/example-programs.md - - Example Multi-Node Programs: ai-testbed/sambanova/example-multi-node-programs.md - # - Running BERT Large on Sambanova DataScale SN30-8: ai-testbed/sambanova/running-bert-large-on-sn30.md - - Modelzoo Samples: ai-testbed/sambanova/example-modelzoo-programs.md - - Tunneling and Forwarding Ports: ai-testbed/sambanova/tunneling-and-forwarding-ports.md - - SambaTune for profiling and performance tuning: ai-testbed/sambanova/sambatune.md - - Miscellaneous: ai-testbed/sambanova/miscellaneous.md - - SambaNova Documentation: ai-testbed/sambanova/documentation.md - # - Performance Tools: ai-testbed/sambanova/performance-tools.md - - Data Management: ai-testbed/data-management/data-management-overview.md - - Aurora: - Getting Started: aurora/getting-started-on-aurora.md - Aurora Programming Environment: aurora/aurora-pe.md @@ -194,7 +138,6 @@ nav: # - LLVM Compilers: aurora/compiling-and-linking/llvm-compilers-aurora.md # - GNU Compilers: aurora/compiling-and-linking/gnu-compilers-aurora.md # - CCE Compilers: aurora/compiling-and-linking/cce-compilers-aurora.md - # - Continuous Integration: aurora/compiling-and-linking/continuous-integration-aurora.md - Build Tools: - CMake: aurora/build-tools/cmake-aurora.md - Running Jobs: aurora/running-jobs-aurora.md @@ -216,14 +159,10 @@ nav: - Spack PE: aurora/applications-and-libraries/libraries/spack-pe.md - Containers: aurora/containers/containers.md - Data Science: - #- Julia: aurora/data-science/julia.md - Python: aurora/data-science/python.md - #- Applications: - #- gpt-neox: aurora/data-science/applications/gpt-neox.md - Profiling: aurora/data-science/profiling_dl.md - Frameworks: - DeepSpeed: aurora/data-science/frameworks/deepspeed.md - #- JAX: aurora/data-science/frameworks/jax.md - PyTorch: aurora/data-science/frameworks/pytorch.md - TensorFlow: aurora/data-science/frameworks/tensorflow.md - Dask: aurora/data-science/frameworks/dask.md @@ -238,7 +177,6 @@ nav: - Level Zero: aurora/programming-models/level-0.md - OpenCL: aurora/programming-models/opencl-aurora.md - OpenMP: aurora/programming-models/openmp-aurora.md - #- RAJA: aurora/programming-models/raja-aurora.md - SYCL: aurora/programming-models/sycl-aurora.md - Debugging Tools: - Overview: aurora/debugging/debugging-overview.md @@ -253,14 +191,57 @@ nav: # - ParaView: aurora/visualization/paraview.md - Services: - GitLab: aurora/services/gitlab-ci.md - #- JupyterHub: aurora/services/jupyterhub.md - Workflows: - - ADIOS2: aurora/workflows/adios.md - # - Balsam: aurora/workflows/balsam.md - # - DeepHyper: aurora/workflows/deephyper.md - # - libEnsemble: aurora/workflows/libensemble.md + - ADIOS2: aurora/workflows/adios.md - Parsl: aurora/workflows/parsl.md - SmartSim: aurora/workflows/smartsim.md + + - AI Testbed: + - Getting Started: ai-testbed/getting-started.md + - Cerebras: + - System Overview: ai-testbed/cerebras/system-overview.md + - Getting Started: ai-testbed/cerebras/getting-started.md + - Running a Model/Program: ai-testbed/cerebras/running-a-model-or-program.md + - Customizing Environments: ai-testbed/cerebras/customizing-environment.md + - Job Queuing and Submission: ai-testbed/cerebras/job-queuing-and-submission.md + - Example Programs: ai-testbed/cerebras/example-programs.md + #- Performance Tools: ai-testbed/cerebras/performance-tools.md + - Tunneling and Forwarding Ports: ai-testbed/cerebras/tunneling-and-forwarding-ports.md + - Miscellaneous: ai-testbed/cerebras/miscellaneous.md + - Graphcore: + - System Overview: ai-testbed/graphcore/system-overview.md + - Getting Started: ai-testbed/graphcore/getting-started.md + - Virtual Environment: ai-testbed/graphcore/virtual-environments.md + - Running a Model/Program: ai-testbed/graphcore/running-a-model-or-program.md + - Job Queuing and Submission: ai-testbed/graphcore/job-queuing-and-submission.md + - Example Programs: ai-testbed/graphcore/example-programs.md + - Miscellaneous: ai-testbed/graphcore/miscellaneous.md + - Documentation: ai-testbed/graphcore/documentation.md + - Groq: + - System Overview: ai-testbed/groq/system-overview.md + - Getting Started: ai-testbed/groq/getting-started.md + - Running a Model/Program: ai-testbed/groq/running-a-model-or-program.md + #- Example Programs: ai-testbed/groq/example-programs.md + - Virtual Environments: ai-testbed/groq/virtual-environments.md + - Job Queueing and Submission: ai-testbed/groq/job-queuing-and-submission.md + - Profiling with GroqView: ai-testbed/groq/groqview.md + - SambaNova: + - System Overview: ai-testbed/sambanova/system-overview.md + - Getting Started: ai-testbed/sambanova/getting-started.md + - Virtual Environment: ai-testbed/sambanova/virtual-environment.md + - Running a Model/Program: ai-testbed/sambanova/running-a-model-or-program.md + - Job Queuing and Submission: ai-testbed/sambanova/job-queuing-and-submission.md + - Example Programs: ai-testbed/sambanova/example-programs.md + - Example Multi-Node Programs: ai-testbed/sambanova/example-multi-node-programs.md + # - Running BERT Large on Sambanova DataScale SN30-8: ai-testbed/sambanova/running-bert-large-on-sn30.md + - Modelzoo Samples: ai-testbed/sambanova/example-modelzoo-programs.md + - Tunneling and Forwarding Ports: ai-testbed/sambanova/tunneling-and-forwarding-ports.md + - SambaTune for profiling and performance tuning: ai-testbed/sambanova/sambatune.md + - Miscellaneous: ai-testbed/sambanova/miscellaneous.md + - SambaNova Documentation: ai-testbed/sambanova/documentation.md + # - Performance Tools: ai-testbed/sambanova/performance-tools.md + - Data Management: ai-testbed/data-management/data-management-overview.md + - Crux: - Machine Overview: crux/hardware-overview/machine-overview.md - Getting Started: crux/getting-started.md @@ -369,11 +350,20 @@ nav: - General: services/continuous-integration.md - Gitlab-CI: services/gitlab-ci.md - - Running Jobs with PBS at the ALCF: - - Job Scheduling and Execution: running-jobs/job-and-queue-scheduling.md - - Example Job Scripts: running-jobs/example-job-scripts.md - - Machine Reservations: running-jobs/machine-reservations.md - - Cobalt to PBS option Comparison: running-jobs/pbs-qsub-options-table.md + - Facility Policies: + - Overview of Policies: policies/facility-policies.md + - ALCF Acknowledgement Policy: policies/alcf-acknowledgement-policy.md + - Account Policies: + - Accounts Policy: policies/accounts/accounts-policy.md + - Account Sponsorship & Retention Policy: policies/accounts/account-sponsorship-retention-policy.md + - User Authentication Policy: policies/accounts/user-authentication-policy.md + - Queue and Scheduling Policies: + - Queue and Scheduling Policy: policies/queue-scheduling/queue-and-scheduling-policy.md + - Refund Policy: policies/queue-scheduling/refund-policy.md + - Pullback Policy: policies/queue-scheduling/pullback-policy.md + - Data and Software Policies: + - Data Policy: policies/data-and-software-policies/data-policy.md + - Software Policy: policies/data-and-software-policies/software-policy.md - Questions / Issues: issues.md @@ -387,17 +377,9 @@ not_in_nav: | llvm-compilers-aurora.md gnu-compilers-aurora.md cce-compilers-aurora.md - continuous-integration-aurora.md aurora/applications-and-libraries/libraries/math-libraries.md aurora/applications-and-libraries/libraries/mkl.md aurora/applications-and-libraries/libraries/mpi.md - aurora/data-science/julia.md - aurora/data-science/applications/gpt-neox.md - aurora/data-science/frameworks/jax.md - aurora/programming-models/raja-aurora.md aurora/performance-tools/performance-overview.md aurora/visualization/paraview.md - aurora/services/jupyterhub.md aurora/workflows/balsam.md - aurora/workflows/deephyper.md - aurora/workflows/libensemble.md From 833ce1d322ab33092aea997067ca677def09ec49 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Sat, 18 Jan 2025 23:08:14 -0600 Subject: [PATCH 02/32] Add features: from #545 --- mkdocs.yml | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 29ac3594d..c26013a9a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -12,17 +12,25 @@ theme: font: text: proxima-nova features: - - tabs + - content.action.edit + - content.action.view + - content.code.copy + - content.code.annotate + #- content.code.select # experimental - instant - - search.highlight - - navigation.sections - - navigation.path - navigation.indexes + - navigation.path + # - navigation.prune + - navigation.tabs + - navigation.top + - navigation.tracking + - navigation.sections + - tabs - toc.follow + - toc.integrate + - search.highlight - search.suggest - - content.code.copy - - content.code.annotate - #- content.code.select # experimental + logo: images/logo.svg favicon: "images/favicon.svg" From 6170af7931836cb9a3ac4af9943cfb1c6af866ed Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Sat, 18 Jan 2025 23:12:43 -0600 Subject: [PATCH 03/32] Add other mkdocs.yml changes from #545 --- mkdocs.yml | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index c26013a9a..5e92c1130 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,15 +2,40 @@ site_name: ALCF User Guides repo_name: 'argonne-lcf/user-guides' repo_url: 'https://github.com/argonne-lcf/user-guides' site_url: 'https://docs.alcf.anl.gov/' +edit_url: 'edit/main/docs/' theme: name: 'material' custom_dir: overrides language: 'en' palette: - scheme: alcf + # Palette toggle for automatic mode + - media: "(prefers-color-scheme)" + toggle: + icon: material/brightness-auto + name: Switch to light mode + + # Palette toggle for light mode + - media: "(prefers-color-scheme: light)" + scheme: alcf + primary: custom + accent: custom + + toggle: + icon: material/brightness-7 + name: Switch to dark mode + + # Palette toggle for dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + primary: custom + accent: custom + toggle: + icon: material/brightness-4 + name: Switch to system preference font: - text: proxima-nova + text: proxima-nova # removed in #545. remove again? + features: - content.action.edit - content.action.view @@ -69,10 +94,13 @@ markdown_extensions: pygments_lang_class: true - pymdownx.tabbed: alternate_style: true + combine_header_slug: true - pymdownx.tasklist: custom_checkbox: true - pymdownx.blocks.definition + - toc: + permalink: true validation: omitted_files: warn absolute_links: warn @@ -81,9 +109,12 @@ validation: not_found: warn extra: + homepage: 'https://docs.alcf.anl.gov' social: - icon: 'fontawesome/brands/github-alt' link: 'https://github.com/argonne-lcf/user-guides' + - icon: 'fontawesome/brands/x-twitter' + link: 'https://x.com/argonne_lcf' analytics: provider: google property: G-4M48E2L33R @@ -94,6 +125,9 @@ plugins: title_mode: pymdownx.tabbed - search: lang: en + separator: '[\s\u200b\-_,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])' + - minify: + minify_html: true nav: - ALCF User Guides: From 26115e342b8a105d254adba1961e2929f2ba2753 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Sat, 18 Jan 2025 23:16:14 -0600 Subject: [PATCH 04/32] Port installations from #545 --- requirements.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/requirements.txt b/requirements.txt index 2d21f0fc1..c014c7927 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,7 @@ mkdocs-video mkdocs-include-markdown-plugin mkdocs-codeinclude-plugin>=0.2.1 pymdown-extensions>=9.10 +mkdocs-get-deps +#mkdocs-git-authors-plugin +mkdocs-material-extensions +mkdocs-minify-plugin From 8f9c525688bf70e5c95c3e3e23fce942f35e04b3 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Sat, 18 Jan 2025 23:17:04 -0600 Subject: [PATCH 05/32] Remove ds_store --- docs/polaris/hardware-overview/files/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/polaris/hardware-overview/files/.DS_Store diff --git a/docs/polaris/hardware-overview/files/.DS_Store b/docs/polaris/hardware-overview/files/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Sun, 19 Jan 2025 00:17:25 -0600 Subject: [PATCH 06/32] Fix indentation --- .../moving_data_to_aurora/globus.md | 47 +++++++++++-------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/docs/aurora/data-management/moving_data_to_aurora/globus.md b/docs/aurora/data-management/moving_data_to_aurora/globus.md index 7cf219c48..79bfcbb71 100644 --- a/docs/aurora/data-management/moving_data_to_aurora/globus.md +++ b/docs/aurora/data-management/moving_data_to_aurora/globus.md @@ -1,28 +1,35 @@ -# Transfering files through Globus -## During Acceptance Testing period +# Transferring files through Globus + +## During Acceptance Testing period + We have set up a temporary Globus endpoint for Flare that you can use to transfer data out. The endpoint is called "alcf#dtn_flare_at" and is set up for read-only access. The endpoint will be available through the acceptance testing (AT) period and will be shutdown after AT concludes. ## Before Acceptance Testing -Currently, only Globus personal is supported on Aurora. -Perform the following steps to transfer data to/from the Aurora login nodes. -1. On a fresh connection to the login nodes, ensuring no proxies are being set (which may require commenting the proxy settings in the `~/.bashrc` or `~/.bash_profile` files), execute -```bash -/soft/tools/proxychains/bin/proxychains4 -f /soft/tools/proxychains/etc/proxychains.conf /soft/tools/globusconnect/globusconnect -setup --no-gui -``` +Currently, only Globus Personal is supported on Aurora. Perform the following steps to transfer data to/from the Aurora login nodes. + +1. On a fresh connection to the login nodes, ensuring no proxies are being set + (which may require commenting the proxy settings in the `~/.bashrc` or + `~/.bash_profile` files), execute: + + ```bash + /soft/tools/proxychains/bin/proxychains4 -f /soft/tools/proxychains/etc/proxychains.conf /soft/tools/globusconnect/globusconnect -setup --no-gui + ``` + +1. Paste the link provided by the above command in a browser and follow the instructions to setup a personal endpoint + + - When requested, input your ALCF username and one-time password from your CRYPTOCard/MobilePASS+ token + - Select the Allow button + - Enter the authentication code generated back into the terminal + - Enter a name for the endpoint (e.g., `aurora_login_uan11`) -2. Paste the link provided by the above command in a browser and follow the instructions to setup a personal endpoint - * When requested, input your ALCF username and one-time password from your CRYPTOCard/MobilePASS+ token - * Select the Allow button - * Enter the authentication code generated back into the terminal - * Enter a name for the endpoint (e.g., `aurora_login_uan11`) +1. On the same terminal, execute: -3. On the same terminal, execute -```bash -/soft/tools/proxychains/bin/proxychains4 -f /soft/tools/proxychains/etc/proxychains.conf /soft/tools/globusconnect/globusconnect -start & -``` - * By default, the command only gives access to your home directory - * You can add `-restrict-paths /lus/flare/projects/YOURPROJECT` to access your project directory + ```bash + /soft/tools/proxychains/bin/proxychains4 -f /soft/tools/proxychains/etc/proxychains.conf /soft/tools/globusconnect/globusconnect -start & + ``` -4. Open the [Globus web app](https://app.globus.org/file-manager?destination_id=05d2c76a-e867-4f67-aa57-76edeb0beda0) and search for the endpoint name defined above. You will now see your home directory (and project directory, if requested) on Aurora and can initiate transfers with other endpoints (e.g., the Eagle file system on Polaris at `alcf#dtn_eagle`) + - By default, the command only gives access to your home directory + - You can add `-restrict-paths /lus/flare/projects/YOURPROJECT` to access your project directory +1. Open the [Globus web app](https://app.globus.org/file-manager?destination_id=05d2c76a-e867-4f67-aa57-76edeb0beda0) and search for the endpoint name defined above. You will now see your home directory (and project directory, if requested) on Aurora and can initiate transfers with other endpoints (e.g., the Eagle file system on Polaris at `alcf#dtn_eagle`) From d4232d803712df314284860322aeaafc9a825bf7 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Sun, 19 Jan 2025 00:18:51 -0600 Subject: [PATCH 07/32] Remove placeholder .md --- .../compiling-and-linking/continuous-integration-aurora.md | 1 - docs/aurora/data-science/applications/gpt-neox.md | 1 - docs/aurora/data-science/frameworks/jax.md | 1 - docs/aurora/data-science/julia.md | 1 - docs/aurora/programming-models/raja-aurora.md | 3 --- docs/aurora/services/jupyterhub.md | 3 --- docs/aurora/workflows/deephyper.md | 1 - docs/aurora/workflows/libensemble.md | 1 - docs/sophia/queueing-and-running-jobs/running-jobs.md | 2 +- 9 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 docs/aurora/compiling-and-linking/continuous-integration-aurora.md delete mode 100644 docs/aurora/data-science/applications/gpt-neox.md delete mode 100644 docs/aurora/data-science/frameworks/jax.md delete mode 100644 docs/aurora/data-science/julia.md delete mode 100644 docs/aurora/programming-models/raja-aurora.md delete mode 100644 docs/aurora/services/jupyterhub.md delete mode 100644 docs/aurora/workflows/deephyper.md delete mode 100644 docs/aurora/workflows/libensemble.md diff --git a/docs/aurora/compiling-and-linking/continuous-integration-aurora.md b/docs/aurora/compiling-and-linking/continuous-integration-aurora.md deleted file mode 100644 index f4b23cf4d..000000000 --- a/docs/aurora/compiling-and-linking/continuous-integration-aurora.md +++ /dev/null @@ -1 +0,0 @@ -# Continuous Integration Aurora diff --git a/docs/aurora/data-science/applications/gpt-neox.md b/docs/aurora/data-science/applications/gpt-neox.md deleted file mode 100644 index fbd0753bf..000000000 --- a/docs/aurora/data-science/applications/gpt-neox.md +++ /dev/null @@ -1 +0,0 @@ -Instruction for gpt-neox on Aurora diff --git a/docs/aurora/data-science/frameworks/jax.md b/docs/aurora/data-science/frameworks/jax.md deleted file mode 100644 index 57f25f6d1..000000000 --- a/docs/aurora/data-science/frameworks/jax.md +++ /dev/null @@ -1 +0,0 @@ -# Jax on Aurora diff --git a/docs/aurora/data-science/julia.md b/docs/aurora/data-science/julia.md deleted file mode 100644 index 407233540..000000000 --- a/docs/aurora/data-science/julia.md +++ /dev/null @@ -1 +0,0 @@ -# Julia on Aurora diff --git a/docs/aurora/programming-models/raja-aurora.md b/docs/aurora/programming-models/raja-aurora.md deleted file mode 100644 index b11cefb53..000000000 --- a/docs/aurora/programming-models/raja-aurora.md +++ /dev/null @@ -1,3 +0,0 @@ -# Raja - -Placeholder diff --git a/docs/aurora/services/jupyterhub.md b/docs/aurora/services/jupyterhub.md deleted file mode 100644 index e28e1f083..000000000 --- a/docs/aurora/services/jupyterhub.md +++ /dev/null @@ -1,3 +0,0 @@ -# JupyterHub - -Placeholder diff --git a/docs/aurora/workflows/deephyper.md b/docs/aurora/workflows/deephyper.md deleted file mode 100644 index c817f6cad..000000000 --- a/docs/aurora/workflows/deephyper.md +++ /dev/null @@ -1 +0,0 @@ -# DeepHyper diff --git a/docs/aurora/workflows/libensemble.md b/docs/aurora/workflows/libensemble.md deleted file mode 100644 index 88d9ddec6..000000000 --- a/docs/aurora/workflows/libensemble.md +++ /dev/null @@ -1 +0,0 @@ -libEnsemble on Aurora diff --git a/docs/sophia/queueing-and-running-jobs/running-jobs.md b/docs/sophia/queueing-and-running-jobs/running-jobs.md index 1695a1efb..e9346547f 100644 --- a/docs/sophia/queueing-and-running-jobs/running-jobs.md +++ b/docs/sophia/queueing-and-running-jobs/running-jobs.md @@ -16,7 +16,7 @@ There are three production queues you can target in your `qsub` command (`-q Date: Tue, 4 Feb 2025 12:53:39 -0600 Subject: [PATCH 08/32] edit_url ---> edit_uri --- mkdocs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index bd3e8c055..7d780f2db 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,7 +2,7 @@ site_name: ALCF User Guides repo_name: 'argonne-lcf/user-guides' repo_url: 'https://github.com/argonne-lcf/user-guides' site_url: 'https://docs.alcf.anl.gov/' -edit_url: 'edit/main/docs/' +edit_uri: 'edit/main/docs/' theme: name: 'material' @@ -46,7 +46,7 @@ theme: - navigation.indexes - navigation.path # - navigation.prune - - navigation.tabs + #- navigation.tabs - navigation.top - navigation.tracking - navigation.sections From ce2e8bb25413e003a9893cd321d900422eb216e0 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 5 Feb 2025 12:59:37 -0600 Subject: [PATCH 09/32] Remove unnecessary hardware-overview/ subdirs --- .../machine-overview.md | 0 .../machine-overview.md | 0 .../files => images}/Aries1.gif | Bin .../files => images}/Aries2.gif | Bin .../machine-overview.md | 24 +++++++++--------- .../machine-overview.md | 0 mkdocs.yml | 9 +++---- 7 files changed, 16 insertions(+), 17 deletions(-) rename docs/aurora/{hardware-overview => }/machine-overview.md (100%) rename docs/crux/{hardware-overview => }/machine-overview.md (100%) rename docs/polaris/{hardware-overview/files => images}/Aries1.gif (100%) rename docs/polaris/{hardware-overview/files => images}/Aries2.gif (100%) rename docs/polaris/{hardware-overview => }/machine-overview.md (91%) rename docs/sophia/{hardware-overview => }/machine-overview.md (100%) diff --git a/docs/aurora/hardware-overview/machine-overview.md b/docs/aurora/machine-overview.md similarity index 100% rename from docs/aurora/hardware-overview/machine-overview.md rename to docs/aurora/machine-overview.md diff --git a/docs/crux/hardware-overview/machine-overview.md b/docs/crux/machine-overview.md similarity index 100% rename from docs/crux/hardware-overview/machine-overview.md rename to docs/crux/machine-overview.md diff --git a/docs/polaris/hardware-overview/files/Aries1.gif b/docs/polaris/images/Aries1.gif similarity index 100% rename from docs/polaris/hardware-overview/files/Aries1.gif rename to docs/polaris/images/Aries1.gif diff --git a/docs/polaris/hardware-overview/files/Aries2.gif b/docs/polaris/images/Aries2.gif similarity index 100% rename from docs/polaris/hardware-overview/files/Aries2.gif rename to docs/polaris/images/Aries2.gif diff --git a/docs/polaris/hardware-overview/machine-overview.md b/docs/polaris/machine-overview.md similarity index 91% rename from docs/polaris/hardware-overview/machine-overview.md rename to docs/polaris/machine-overview.md index c230b73e7..b760afcc0 100644 --- a/docs/polaris/hardware-overview/machine-overview.md +++ b/docs/polaris/machine-overview.md @@ -1,4 +1,4 @@ -# Polaris Machine Overview +# Polaris Machine Overview Polaris is a 560-node HPE Apollo 6500 Gen 10+ based system. Each node has a single 2.8 GHz AMD EPYC Milan 7543P 32-core CPU with 512 GB of DDR4 RAM, four NVIDIA A100 GPUs connected via NVLink, a pair of local 1.6TB SSDs in RAID0 for user use, and a pair of Slingshot 11 network adapters. There are two nodes per chassis, seven chassis per rack, and 40 racks for a total of 560 nodes. More detailed specifications are as follows: ## Polaris Compute Nodes @@ -10,7 +10,7 @@ Polaris is a 560-node HPE Apollo 6500 Gen 10+ based system. Each node has a sing | GPUs | NVIDIA A100 | 4 | 2,240 | | Local SSD | 1.6 TB | 2/3.2 TB | 1,120/1.8 PB | -Note 1: 256 MB shared L3 cache, 512 KB L2 cache per core, 32 KB L1 cache per core +Note 1: 256 MB shared L3 cache, 512 KB L2 cache per core, 32 KB L1 cache per core Note 2: 8 memory channels rated at 204.8 GiB/s ## Polaris A100 GPU Information @@ -39,13 +39,13 @@ Note 2: 8 memory channels rated at 204.8 GiB/s ### Legend: -**X** = Self -**SYS** = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI) -**NODE** = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node -**PHB** = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU) -**PXB** = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge) -**PIX** = Connection traversing at most a single PCIe bridge -**NV#** = Connection traversing a bonded set of # NVLinks +**X** = Self +**SYS** = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI) +**NODE** = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node +**PHB** = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU) +**PXB** = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge) +**PIX** = Connection traversing at most a single PCIe bridge +**NV#** = Connection traversing a bonded set of # NVLinks Links to detailed NVIDIA A100 documentation: - [NVIDIA A100 Tensor Core GPU Architecture](https://images.nvidia.com/aem-dam/en-zz/Solutions/data-center/nvidia-ampere-architecture-whitepaper.pdf) @@ -64,12 +64,12 @@ All users share the same login nodes, so please be courteous and respectful of y | GPUs (Note 3) | No GPUs | 0 | 0 | | Local SSD | None | 0 | 0 | -Note 1: 256 MB shared L3 cache, 512 KB L2 cache per core, 32 KB L1 cache per core -Note 2: 8 memory channels rated at 204.8 GiB/s per socket +Note 1: 256 MB shared L3 cache, 512 KB L2 cache per core, 32 KB L1 cache per core +Note 2: 8 memory channels rated at 204.8 GiB/s per socket Note 3: If your build requires the physical presence of a GPU, you will need to build on a compute node. ## Gateway Nodes There are 50 gateway nodes. These nodes are not user-accessible but are used transparently for access to the storage systems. Each node has a single 200 Gbps HDR IB card for access to the storage area network. This gives a theoretical peak bandwidth of 1,250 GB/s, which is approximately the aggregate bandwidth of the global file systems (1,300 GB/s). ## Storage -Polaris has access to the ALCF global file systems. Details on storage can be found [here](../../data-management/filesystem-and-storage/data-storage.md). \ No newline at end of file +Polaris has access to the ALCF global file systems. Details on storage can be found [here](../../data-management/filesystem-and-storage/data-storage.md). diff --git a/docs/sophia/hardware-overview/machine-overview.md b/docs/sophia/machine-overview.md similarity index 100% rename from docs/sophia/hardware-overview/machine-overview.md rename to docs/sophia/machine-overview.md diff --git a/mkdocs.yml b/mkdocs.yml index 7d780f2db..3e3f81a57 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -173,7 +173,7 @@ nav: - Getting Started: aurora/getting-started-on-aurora.md - Aurora Programming Environment: aurora/aurora-pe.md - Early User Notes and Known Issues: aurora/known-issues.md - - Machine Overview: aurora/hardware-overview/machine-overview.md + - Machine Overview: aurora/machine-overview.md - Node Performance Overview: aurora/node-performance-overview/node-performance-overview.md - Compiling and Linking: - Compiling and Linking Overview: aurora/compiling-and-linking/compiling-and-linking-overview.md @@ -292,7 +292,7 @@ nav: - Data Management: ai-testbed/data-management/data-management-overview.md - Crux: - - Machine Overview: crux/hardware-overview/machine-overview.md + - Machine Overview: crux/machine-overview.md - Getting Started: crux/getting-started.md - Running Jobs: crux/queueing-and-running-jobs/running-jobs.md - Compiling and Linking: crux/compiling-and-linking/compiling-and-linking-overview.md @@ -308,8 +308,7 @@ nav: - System Updates: polaris/system-updates.md - Contacting Support and Software Requests: polaris/contacting-support.md - Known Issues: polaris/known-issues.md - - Machine Overview: polaris/hardware-overview/machine-overview.md - # - Polaris Machine Overview: polaris/hardware-overview/machine-overview.md + - Machine Overview: polaris/machine-overview.md - Compiling and Linking: - Compiling and Linking Overview: polaris/compiling-and-linking/compiling-and-linking-overview.md - Programming Models: polaris/compiling-and-linking/polaris-programming-models.md @@ -379,7 +378,7 @@ nav: - SmartSim: polaris/workflows/smartsim.md - Sophia: - - Machine Overview: sophia/hardware-overview/machine-overview.md + - Machine Overview: sophia/machine-overview.md - Getting Started: sophia/getting-started.md - Running Jobs: sophia/queueing-and-running-jobs/running-jobs.md - Compiling and Linking: sophia/compiling-and-linking/compiling-and-linking-overview.md From cd4deafaa02d020a1c31519bef029c645dbefcdd Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 5 Feb 2025 13:00:03 -0600 Subject: [PATCH 10/32] Remove unused Aries interconnect performance plots --- docs/polaris/images/Aries1.gif | Bin 61903 -> 0 bytes docs/polaris/images/Aries2.gif | Bin 84327 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/polaris/images/Aries1.gif delete mode 100644 docs/polaris/images/Aries2.gif diff --git a/docs/polaris/images/Aries1.gif b/docs/polaris/images/Aries1.gif deleted file mode 100644 index a9952496faebc0c492c1ca114ec7df971df9c2be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61903 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 QHOn%InrMe{PyDU|pC5 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�ume6>-z$k^fI`&~#?jOv~N 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%0A{uxj17un4K~63_7x4^RH%f?+g_l(8?Zec zYiu!>EV(MuQ@9s{vCnNKcU;yZ*yfAcC zeij2p>Y%JWC%W(*x!D$W9f@KOX_x41$NVjrb>|81f$?Wd8r8S96j1f6tvGo$TS}rD zd^T?CRc@YM_hMe1rGU=mqM69DJahoRq%e-yE8P+ECRxpsMH_(NjVu9-uM6xFDZiNJ zz|HcHo&%v1qQ}52E1#U>hO*_l?P&d=D|4to?0?JfI92Ha%XpX^<3OWklUu-%y_Z0u zyl17ri3bi;C!9R=C{-Wk>*X->>ilFS=^ZDzccE#Z7ou}^PuLPmBjg=#@M%sfpo-Cn zm@#~zJx714YbDIdkkDKYJ%=t`pU^rxF=?$HIh7SPK<}sj1Dh*d=Otd&e3ASqXWyUK z`RKSw?RE@QYLpM8gp8@aWnS_;6ze)|F{bYxJ7awrz5Y50dFw-c*ylnqKk)LAl+|EW zrEcMqODKcRtEdudMihGJi+6UpL=?9UN|}M>`5UHCl3kQ6m7?+n)e*U9%U-K@UnR_d zcczrn8@IF2$i0h+cRvg)ZDeFD+txMEJ^~_{@04NLFV?U2Jk*1*kglJ*!+p68kXP?m@1{L zqlZO$kjt37iL9g^m3`1k;1)s9DGU|Q4V8MA=YFWJtJMKw;dlTwDQM4B{0!_Q_A4Ay zL4pf}2+QAj3OYBO#hbTS9jQjjS3Wjep&zJazS%|0u~9eCVULJPq#CODY$=KgMm{AF z9RNUO;_6V64G<}Bf)hEe&I|fnNeyyH&Pt&u)<&SXFC3-&^6moAx$kUphz~2UtIf(J zC%s$Kl7I(PPn8eu`!y-(tMX+^BI$YmIg^n47pcH81(2LjHQVgMIe08|J|tZG!EIj( z>-buP@ipkfyS|jtG2;*SlHE#l;^-2Q9F~oBomN!9V9|~^u+$4p`%I$@5SAxR3t#Qc zC|s$WX=O>oFmm)8)wFym%)zbTN9q-+1bovTP2fURDJp1{Ot)7f5p5dw>9D({i^aS; z?|x29f@cXTrc?kuG>~ak92ceL&9BXh9Ne{1S}w9%f5!I6;ACW2WemZ)?PEviAY(!X zY59gst@$y@pHC>hC$i5TXwD4&T!ZOdaO+B$tjk}vjtzR_S7I{`A+8r^gJQhX^>@=b zu(ojf_p0f*5T9)+jtZFs`Mxl36~(8FL%72N=$m~Iq*Y~LgyYRIjxRHMmp65{7v!uS zblvq<)gc^#cJ>*iKdjk{YCUOnK2&>JeQ#brE@`%Da@a^e%I2-+KoB^HBTY7Ub@7}q zV#mIrqKyR$`zAR%<$9Rdk<2FtlFXl7rucL+q9GPZZl1BU{|w|$ot5_%zE->Dq_wG@ zt*|hW`$7{Me;d6*A&olToB>^VDm5g=6gf$vLTA2isS33D?Sq#D$=a3pdI@iAZ;Mxy?s#*Cz`5I znoLq}^!afRm|(fC`J3s@l3HP@#W}C!pP@CHb!4aUelOLzbzaAXvyk7D**2bOdGOPf zUZVpSC@aEOowsC1q$dlzQuf!0Oy34o*FMcXa+r|0SIiN9GG{=(=NN>h3ZRGKg@<rjcW=cRV{bkAuIE>8_lD}kR#<#*DJ zHeO_Zg5mP}U;r~NyYzAf-nZiF7x(Llob~m?nr#%Zv6oU-X(tn3xj(y699h*=8KO^b z?lhY-ui|bl&%-wh>v$@mA#-9jD$00@l8l>{CMg~r&x<=pBG2EC>*B|#;ul=`uB6Qn zFtWq`UfBD~Qs6R?z_To1StFU*z8oHHcLZ#9`PT+%odl70)(1Xy^>i(mzW{){symWY z;G6V9JDNW7vBo@QuX!TNTnY%*Y5iU#$2XLqPc-2E%F97rl zE{<9^Q>bBnorLzDC6L7PBf(c09IcwiAE*fhRk4LL@dlOv{uW1*&m2wDf;qcbPSr^} z70CoPX5Z;oD5c9-*O9aMZ_zl48Nmp9MH`!tRt`aTur`}>&_ngOKXoVqQ?is|_<{}= zMWO~{yyT5rlT_~$KY-2V7)R~wl^0bPh7$Do6y@u&@-MGYUU5O{LZ(D3Ic`YI7%2o7 zedw77$nGf1F9(EfBwhO0BBfkCGZO?X4`yVsmJmF>mW zpQ9zlgg{1A8eX_9w9~R;R7GB0MT3g>E;h{TGH)CjT$mp$jq@BQY$-kro%xETfV?Ik ze_c$ET-*_EqMn8IEal?v6na;&9iJNG&mJ{@<8ExRGFWlsNQ{ZQa|gOuxNV)X?Poi= zR5%0Hg?#tQelho`A}-HAJ(&Jp*=ZMId&J?82JFdP?VAr_(*yWdDvu4qFrsd5`YkHt zMGk4aP_uAJ63ZhSag#Z7FI!jD2_-EV#Wh`P<~$JcOCxHZN%CiLZEG&h)zApY;WAt$B*F z!5-D%(w3yJhJAdKA7PH?Gb~wQNE{?)G};xt8Q< z^W;RB1AMcS1fRk#lEBLpU%hx&5Lr1TT=}J%yp^|iFjV|r<8CcA*sqcuYMn$(q}t~r ziY$b5^^%v?v@b$c%%3hl(yw#;vi63Wqln{2GtswS^F4BnGODL~UFZnnTP74AT`>)K z)Jd9|J(OW?Y~SFUFzu@tDlf%HMTW{ik7@ZF6t?9U{(Kc%FN zB=gblW?!KO)&uye-6opv^_}~TxA*BEkc%q) zJ@)>ZUOCBMb8i<5bb@ITauvOiewC?e@-wWRO2tls+?FVcSqndrW9k8GlDF8w?unhh z_84uDdT0j&;H#aM_Q=;pR?#{;VPTL37IHDuS;EEs$49;M2Ku42fAt%5yNzb*hGCWX z_YKuB&kfzv2d{Ctq<5x=Z?mb_SujzdlX0?;0MNn59pPLfSV)n1D`1u}q}+a$r1Z>H zk`1w&4e|OQRUo52`s6?nRg@)&7J=ocD*n~rNSW)Ot^dIn27%;$1o-4P_XoWyHQwV<&zsoarJ0Ll!q&%YW3qS;oXkn0tl}Zg|&z z-OznCyVWf{K=CzTZ^tl6ipwVICX<>;EiLPwszG?M)9nH38H$b#epT3GFY(7KJHYJn za+9PZX<+}a&(y=Ya*f+RzY>ZO`q9h$5XU5U7>b~HjS@Mcyeb)ay*W03AN}AwY!Zb0 z6WT&~6!9U9zKtDtq7^P0U|DVMRVid%Bk+~S-Cg~|j!ld2NR&6S0lV&(PLm8cRAX%rASk18*PPy?*Y; zrHpBCsUa)#_cGL@oD8rg8N-*W)Q<_d=OhQdrlypor!1gV#s2Y;^?pk3SUDw2PLA3> zTz3&{AVZ{?4tsS8eFvh}1v=`$2Hk_J>r^6KQxXi^OZgBv#{fU5rFuxT=i;@)Q_nSP zp6O(D(3Pa(lZezmU1IS+mGqu4KL0iSH|KXPkp2d-mG9*IVC) z+XUB>W3L8pd+h9Pck^>0Yz|ZJI&jp#kxK{ba9aSn9gZEWA(8$1X!Ud({8g{3CbRBH zJG}9h_;8_}I5*=e>9?w<-Jbrvc3^cQ`tcKUNKcSFRYkJGV?84qpG9vUiioPt#n01m z$#u*nVZ}^>K4q#s_?ycIYSMC&{;df5_L~`6+_u_Vs5dd8@By`=ejH=F{=UQ$|4AUz zwpX#}4)m&bW)m?A3KGNg{(B8qJi?kq?$;&v-XqWhpaWpXz(#{S$zB6R>dbW!=9OpD z*LZ39y+*>$g4>>&sRr~kbK!H%D#s+H^9XC8&A<_^c|t3hBA&`uegkMx=8(w_!ama> zKG@=9IIH;4naM}2uinP0&CzTa{~)QGf|hWOc?G_}Z(zVwL$3DX)EA5&1ym^88n=h0 z)v@t$@LQs=(S2NfCSCrk)s7S)#sUngqTHXHd%5b8vD;BvrFJ?We33AV+!*6&fQt-& zSH^w=-W)Tz^HU?_m!lU?)AA>fn21>=c z`YL~^95Fe&qiZA1ed#fz7VjF--kkT`IFMv8c2@E3>%hOrNtK_-0c&@HUX8*xODhO|2loZkeWEn&Jtu}sX6jFJJdyKQp49?q`?Lm-EY)AFLh3; z+^jtAXjI+u$DUNmvNIxqHJ?&Ko(MW}c$@WLJe9g9`|iO3*KoRD2di}6=Lj=(fG060 zt(y2!{+p^ps6wP0folbW$m3O-@~PeavHL^bT@s6!GERiJQTF`9Y7fXCvuWSkAl$I8 zALVOH8r|>xr+RsqZ&3Niu)O(8{4QR@0(`wsvp&jm=&C0%*n)j{F`UH^Xx^(1T+^7@ zc>yWc`VxH`JCudDS zDNvC1r>ycCT+@-<2ebf)eYKnluDIgpSJkp4H4$q0_mIjQM+!*&wUXNz;gPXyR%)4; zg`Jd0&I+5aYs~T~!oA=9J^=J`8dwX+j{$cfpakYo|Y*YkibmV8`;T#+M-OsWSqidIZ?GkiB zB&FpV7di{BltXekY(}!Ta~S8n^*c$i-!IzY0E!Ba1B^qnzV2qTd$UywUBhw-4>&L> zGi`MTi=7Njggzw1x8M8+XbpCBMg36NIlF&RVM>Kb6T|YdQ(Ma#>5XPR0JRO2T29TO=LMq0}~k%HcILc$ZGD8hW*9GZ<_fh9mSpY zJfkF3g?;n#|KOWRg)h`OXb1UJ+%s;cOPu+m;s{adop_+fTE6B}?hk$nm6GweIoskB z`aoO^iS3t_MgVKU{(_z$2U-oTZu&?(b*xAtepOD~L315{wvSi*V%0pLw7UdjUzgQ zA4erVK>ZyKH0xxA-i5|*U!}b*suon8>}k*FsrkeL2Jfg4Ag#cI}X;ps22I7Bp_=tIt(^%db5B6x= zwf+Z3T;hy-f>O+w*YrE|u8u3K5(z|$?HLuT2jY3WrT*+PTZwj}SDoW@s+X62&>~Ky zD#G1&wIfiv7iB1RD*OG_C#Z;o1AExJGMp8>k2^X^Dkd~2OKne=@8mFyQFEba&m3tcMk5# zWkuDOV~IM=c>Vi(_MG~z>c56~+8z7WN!r$7;`VoOr$8d$zG4hDTl|v1|FzU``5)mV zB{A>Mm$%Ai{(NgVxAV`xmIL?x)XtsxB}oE_vh9q4{=;*zT*$LBOCZWqWoOj$gO-dI zL<}Qcp(an>p96iFOFM}Run)7IwznRF?T{qCppQ{AeH#I^*>3x-?mtX^j+eE4eionT zIw;pI%+}`5V)H8o)!^be_PhHD=NBE-Hh8(T-Pz_!B^Sw4dAJ8JdmefKu!2CovT98SpR~wMsY6QKR ziAl_>tJZt#&C)Y?PW@F^V#4?!{!sIRhn5#zv~dKSRFUx`+4p9?8fn5go~H zvQPdl0Qn8r=eOS999pcyMiR1QN9qtoqe7&MV35!_k(sihCRImq)D2=`_ZU%;6PwJY zEU%0wouT3($$ZRw(-x=^it*qFSm()lT4yYm$6SFs{r9!@fW>TR>GQ!nrK{O`f=QFL z`UU$K5eHV7psA?rQy}5!+@tx58E{5!$-a42wZ#ahc5!p4KrZu2K-0VWeQkjIY#FRR zqzPQZ)26?mU%GGfpb=pO6%4r*+O3Bows8?wlPMg05)-oJlU3^Ai0OutAd@pAcACby zDN_{CJEDu-It`kd3`VZfVT3I4g0#i=7||-#UZdAub}PAki9|_XXPmtx5ng}qroCB8 ziI)kezb!F;=13OpihrnHJg_6rtWdG&n+Ok#wk?G7V`!DRj9zW4Rfg8O^6WrngFdo86k3$YUW z9!kf~&~OIn{zp3eQVSZSM#-7}yF#-}3I-M2k+aGQMcHp!?fXvgyTq^C2X*~v*p~Ha z7}K}JcW?}4Zy(JpF_L<3o|iH%Ur;k|Ez$BpJ4=QhU|jk3jga@nii_ZXy*$B%{;38#usL znE8)kaINjq6R5G&HqZZld3brIEeC8T93SHzR00|hri(tvhr~f5)eCLAPg6{{qCw4q zlWpT0Dj=o|V4KC6(XKBApbFUeJ|2QlLzl`A7_tr#7fV_R#a(VSYqm;8j@I+drK-m1 zGIwN+ZDV#Huzr*Gdbda1O1r5Ibx+^0FlV z9F!7~hIe{0z)3=d>R4vRwp0+Hw|!NLQW0v+BxOpePm@F*QQihAoQG&)!C~qwNGyn& zd09#pmQR={<Ut>0qnzhBRP zy+&na8E(I~(bKQ^J=M?^7lzt+J{a=-{I)#Z!H{%h>;?RxF9k3Bju^EzHtZkT_RKk) z4{`a*S3HYM`>e53<1JN$G4{HzwvSXgVrch;|J=c;`0>>#w#HrCkgp3c#P!$nk%j;CLHw_3#zVhs}PWYLu z8!30UhuV-3^Uq`vT&tq(a)0*{jDB^Ho#x6c=N`NyJ9NonQ>lop5Xuw1>_=7+~ znua@RblB=fB5xIa*$BNxNP4grce4kv1*QKh3&Cyd*c~CN}EE^W?3Cz;(S~P zcHa(^3L9hqTVt9oN59A<^>QG@gJSf2Z?!Mz+t}&_w`mZlz{( zb0oP1Nzan7>*7cz5g`em((e(y$vts3Xei|Lf5j0X@}2);TN(0{zVKmok& zDJWh*y`2uKpOJl#9JB1k~h=!~<834J|J?0U&-O#1(;8Dnca%(40fL-|M0OjG%?mhQUQj zK?!J?%)IyHv$Ewd4~|G-(GpZWS2*hkYbnJaVdMoean<0UEhmlKgzSOb%v zP{GXrf&;(YShj3d#UPtz*lq$6+j@sx&Grc-%rKCe2}Wz+G9(D_Y8F9P|%YS}q8#90*$6B?v$Lbf)tY{eVVJ&2YeAOo&~ zTWHnhyf{A^=(hl>9RNGbPm)}P4W}UW1n>*17)b_Ni7)oA2Mf?KTRHhd0gQ8^vi}3z zWECn&!5!mh@1h}f_=uP-;Ti+4XH4`4t}9=bP)K z(hu?2rljo!xw=#_J8OzuEk+8(3eBPN$4WbkYGgM`um7m`&8@8bVfx<;oFXY5rP8dk z(VUZf&ix%{bFr}En|M5_x%5Z#uE3lmokr+rVS{(RJ3*4ju$Tn}6+5NWFlqQaCoRw^ zTttDL8-c>X$1|-?=K{fNt%dJ($6Iu~QjPu+o4>TQ)t-mB=T;R561=QLZ8aR_)aTK9 zBaN30c`j1eb-2s^Ky8QNwz)DHCsQV8Ve zVM~>wsi`&sTKMyJ6MEwtqG9qAIFV7A-4>RhU4dL}sMcz8Hw9s3C0v+*<}#7{{t~pP zvqbLvbi0mNTiBbq8dwq7mY?RbY6?xMtQyQKNxhu;JX*{Pl+A(tn32GzG!P+I5X-8m)kaHU_geH^DsO)z*R{jLMq$1Gm)OWw7e*D*{4E?M8823i?GN zER6wsF^DZ-z^b^|YcjaKeDnn0{Awa>FF$s30Nuey2GK;ZL0r^c;T{|x?R^P%kP)km zhW=pSySIV@x|j?J;}!;VHl26pG!Gjitm&W)x>y3>^HT%pL``M$X1#K}8j zJML-^n3kvBv5c^{^0}>7P9Q>&ck}NcT<&)5xceZ#uQUJ7T<{&W1ckeGw-x$teZbs( zy~A>{x^E>vvgc&quU*c{>O1^S?vP)#PZ7e$7DTqbLR-uqf-DU#LBY!sG*P<|Dvd6x zJy=%);0j#)Y9zKR2PD;e$L}kQM-Q-O4p`Fz`Y32=62fTl?t<>^Mi)ejKs^EucnQ_> z%M@V=^eFXMd%d9#UXUYOXG=|p^tyaBiR7>{G+cs^Cuytq*p4|P{1_7IhX`A!={yCW z%SCts2cassZF)OgdC+6P0MSTcei!1T5L32+eN2lM0Y^d;&{8JZ!)BoK>A*8iwlAW1 z&+gI8SBhl;tqLrkdn$-uT(KKsy+2bSl7H>uRuiQ@5QcqbavUkF8c!Irf# zuDpbO>CkQ(Vt+S$aaByj7ab_`kG{*qYeDT4dL;9pPznPQY;;-0dUSDiL{0qoPy$rD z{P@_cMrU!@d9QI*4&)w z_H&@nJN)9}Yi^9Qs08R+KWGFE?oW_)uQoBIJIq?8m9$Q6qcfM)&O zM&pdyO2Rz$!wNaJ@43Us{Y&3pQoGPBKC87>GV2 zbS&>x5(%LtL~mz+Yu4@)bt35-fsbEJjTEHZ>VN4on?h_hop>dFl=fE5IBoN;?~;+o zUP(NLvkh^4b(;xg0&36rIV@e%A`ik_Nxd;u()ajjD-BU1;_W2-c;FIt_}(;eVlp9@ z4iBpx5B;vtZ3L-Oh5Vj{Cm4wlnZpW2iTMmf1OM4!lDvr!u5j3@$Rl$8iO%%wTSaQj zcZ(w%k--N7AL||U*$P}Dy=0DZLA*$rT^C3pr*C0fi1dFJ3SKaI8s3cuRy*+qVZ4T<{>opC%mOBz`nPH_sq>&+KNBfG z20ez>s6_=!m3Y~Lx+$%&_u&SNivXg&bE!#5#&0#DOfM?KPR?I=aJ#ce%!woBMBD2G z_$Reos5HSa3*T*9gORrE*uatK?OWe6(e?)Xq|tkXw`Q%~LPWRYguy2Y@RkL#X)gTq z{4_y)hm`Ks7rFf)CKvC~_37aCIJIoThdz*__nc}!Xq0(yyTyk^sKQ~!Q8*xo9$$_> z@vP)HLPW!jv^2GizN#l+UUR=sGGgKm$;zi!MwS_xYy80Vf= z%`<627z`$@LY@oPKItOpTu}Lyut&pdokzd=exA==voDcC@Z{4-#J4w?`EF3yP2_*h$I@tv3b zn(64TT?iBIYmfkUm9xXa7%hGm(vybR(w{H#f0`G;7#E3>Mi!hd=rg|JNzTMj0=?** zxVG?5tXK6FiS|y3=DTK~+F03woX~3$e;2o~If)$;fn1DKy)5V=uGM$b(#OAKd(Rcd$GJPLS?%$OD zLe;V1j9HdZztC=)82tfm-yqprFRwRw?c-$Ej3R$)cEu$hj<{JSw((lwW@1Ey^m!-K zzb!S@0+n+G3ND4OdR225Yws{XH<*dXE-)Q`$9!1b5v%hsbfvPeSjxO~=ebu<*Vx7B z&I9)^?EiiIqx1_Bw~IDXs+}-56H5DAVka7V_4;16vT}TxPRiFm6H&MNm0etSC|ps! zs5+v;s7YJ5oMXEC2Wc0az7X&+-&U{|(OaALliJsn#T>B0iJ9c1$J=97YqRYfjh&?T zhELp5>vlafloLK036+oU@Wh{5kG|rfd}eoE->;RIeDOTFQF24xzZsIcY@v`Mrkh6| z#F~y=Q8kubM)HwqeM8xt=w4yF?rqIKhZGN_UJ>LU8-RG{;>~v#prfiRGZ3<6Ptcwu z5!8%kfAJwWXTGK*0cwvVglA}%HY}CwnUd}C-t{g~?VPIiuXpFvEf|oUe@)y6aJklk zg9@hZ+L<+}Lnp&>0Wg`q1kC=p~s%DvD$Bsx+&sW0H5IA)viXK!muUsXG+L}Mh2 z3;-mwSm!%vj!79r>=wG~djVSG54#k>IQR0MU^LwI*`A(`quV-Bg{#NGb%dz7eYwp9 z$8Gz0y_pl@$r@XPZ1T?x8Kctl1*ygHv)lD_@U-pS$1lDMef41s6<$!7(H@qLD<;RQ zxmb*bFCtM<9mlwCCMrDeA ztjx+0rj#wsB6N^^>HSbCvJ_m;o$!OeB>gJGNm^$n9O)gt*BrGmHelh zhqesW{c`6TA%unST8rKHgVl!I541OEEzUHRQc{TIi&U6Z>!f!2(o2M-YC83SiTa^E_td+psFp4VGl~4$lEtx;KJYNeZjB$EnOM zOg}w~?qUrd&R_nj`Qp;uS)k<-a4K+b`la=Fu>5*~1P^rJ77=Y-@D8I@MY%jt&%!H4 zvB}}Uqm~Yt>`J7jzR>8F9{npTe<%Q_;9icJqTDf;eNNo0yDfBXv{Th}k@&|gP*0MK zP_BEtmdrb6Y(^qX^ezyIKh<@ityn)Q++>{Z{Nm08N`YCdz}t>5*+7eGcC`j3?ak%d+!biff6 z#Y;C8P?a_Iub*fP1d*kx^rRP!k_a4F@JYB&0$vt|q~Y zHjPw{I-~yLYMR%;PWdx)5Z9w^qt~Mw_3QP-d?h+jL0GPs#n}>R(orTHnwy zA+~^6z+f^-A>_Jt{pv-NGe2`O;F)($o61EcD;lljKzJ7x7p%_MSVyV5{RD+b_%lsz zB=tdj`AVfVMjED5Ng7T3O03>asl`VW*o{1jqN8u-;?c{JgC8)`8~kRAEtQ^ZkLROU z)fVx+Svizm(6ysQi(H2m$L}Gheu<_H$+APZcZg7?qVKu#Jwnj;j~`ZoKQ8~uTfe_E zmCRNpA;O6*{!6xRKc<_|je0GavPfohGXGmqwlz`NAbDpxBi+^#G#e#pn4B5I-Q6H(8#looOKf$^ zV$bKQ|DNRRL=I$dE~L_=w=^-Sixzql>AxMeLo@7iIhlcLRKtwipMx!u0f>V)(@+1- z#;>!@qx!E~0}qSO^=+1GGTE^+;8=kDSuJ1UX5U>RTYoqDS~6Z-N29o;V(0BDi1@=e@#)8tFIhazIuyL)S(j5p=jpujVwV zLPfjyC~!e_zVrDdF_kv(5n}pH3HGgGI6J3UTQ=Lo)#N#4ho$QF6;$3$E*MWjz(IDy zivtL=i-BJ08bFIqE7RPPnF@B>Vp=nH7mWNH(6tw{nSPw=v-}SBBykyo}Lp zj|JI#giOOxW!DGS?4ef>?Vvs{ta3*V1(^{NPVGn^R$T%|NLET$*#6#Boz;Pn=owMS z3^4**Q?!|R_+a-7GCMB4Az=sm>&fl5uFz0omI)8McnKBJo^H+Q3iM);SE=e1*|)gt z7@@Pbuq8PsThbEbV4Z15*=fDW_9B}O|6+Fp=c~0|d(y_TXuUcdE1vM&oN|ywQ$WW8 z<2|h)QgVf6>rh{j&XbsnF?j{(zif~pC`{|QolQxtt zU}m;4^~p{5`Y$IDcMH&N!vP?#i7Z{pS@>qDYVNSXXnl!&rB1-Zj77jo$h0#8?_sii znFtaGni^G>MCHJGhG+pWK?fL1Z#izl^sLAXtN@ww$H+{6^w!)+%etR|>E@ye$kjiH z0Ai+>CCh46D|Zv@%>4(=|-5`mxD@LoMJ~l&X<%C%4<{2!D1_zDtrJ@#;T+>qkC^( z^iIDp3;wbM93(yl(^vqFMRna3_FT*SLDw1AJreAR76GlmZJh6xNf^c`af#_P@UHGG zP0Qi2MRm;kev0(eU<`Y!ePhgYXjufz$d^_Gh~M&4Klol6qBx*}jniI9_jlV4HA_zu z)M%|z%@?z)7TYc^51bDGL->H~&2-((0f3&lgLE~d7ZPC9=vt;oW^Of#*s&Gm*K^g! zz)a1kCtVyoVt6{-@2URPtmwLq-5=3YbNIsnmm)d~Z5U9m39+-QJ9A0hGu-TI)ofKk zdNwi-)u0Uz^}fRaL6A=jeIXf)bnj1abJAnq?>K9tI>TOwVKUqwm^mcOJ+_$(z2=|J zHMicMFUPne<(j=^vDK%u^k`rW*G%A=&K~QTv+rjjrTu~4ta^F$#NarO13BEgv#=@u zmyyKz0sr!#EFB3kKn11SHUM#R&J?5{vO(2|iXUCuD(Ex$duw5zS4=Kyzi3YbD{*qg zjq}$Fvc1TI$B2c82mxD5@uoc=Lt-;EFiv^kA)8FS-Yn^!D!JaQ{3m+ynK^n!0U1W; zy(cROx{lZX%MWuxE0Kmy_qecfY#~m_d0YKwe{F-y=3K%?ad*3>JYlo}cbd|7 zS6W|s@(ddVzE}WvUS-m@{735E@eW!qcuKmo+f}a84t!RtFBY;&JxOELX>=qmW_YeP zXhj93^YYOZgruD8GdV%tmaJ~|OsfFs^6wor0U4Ix9TvW0Z=51tmPTuE8$WTu%b}vhRAxtJ}-?xLTZ)G{L zi!V>?I`E!kC}Y=g`$6^HBF&k)w`_ufMM(bclfj4n2E;~rIsRl-kP6if`XVY;~y<}r_QUcl*;7i zBn0Fh4ayxC*kJ=$8jDnQPNqg{x*NmKSTRUC8FA|C$mzdbPC41O4AYa<>D@H~>|A8{ z-`+cJzAK|)hMt*+4oAu`;g?K`I;ErcIR%HFWiLzT#ql6{Z!maHX%SpDuGV<&XO7PU zL^y?SX9STFEit{zGWEWH(5hggAgCk(>%=LFw15>7l|_A#9s}e>bVOBjVI#Hs_eIS} zxw6PPY<)pYXCc_oV&~bW9rjhj}z^zh1T zH~6r;b4{0a>Z-5zy7uQlw%zOEPxBW7XS|z+J;%9hNnQ{W7ND4%HAmZJZxM@g3;5y6 zlJCtD$b9Nnj1Qach+T-RZ^g&R~prv4&GIto>*mS+qpIW20{m$k8U-1n%I3IWeKCQIj)F3%&cvOInll#+3O>RiOS}j z8x;&=|Elye%#0mm^-Y1MMWx2nh$jC24zI7Iw*_MPSBg6{rr(joZI%|5Z+?FN-9OKLo_o(Z?>X=L zezHfNf&(6!TZ-hF?F8Qkp!*nNX*x4VR^n9R_qmR%*a^5o2!F0&S`w?@;e1%8*2vu- zRG~^=t(3Hc-(v|{6+`z;_UFIrnb7|P3v*n$1+O{6V@NNEo{gC06REzL7$+?ixaa<*leXsC&wG%Qezb|V>cZ8rcBxm%51B_DT`BOG5yZi$ z_|y|32O4~lHJPj(FwP@`bOJJi#JX+$sXL_@`R_}Z!=95zK}yINH5_XLCFv5OnLkD)~d z(VOAOGe!xR$;Q%}y5!032VZNl9kj9z)WD-xq2F)i>*3yY7=!c!QrkM$v&?|2)&-hh zyHT_>RzzY>zi8NATWTu{;&w&h;oe*fpUCveib;Jwv76b9Q&8$impz*2Hb#(kLNd6N zlZ3uBI9ArqIvXXF$tNQ#h>Tw3s3y9VpI%-m%+{vX6~2DFG=e|;o4<J9@CUs7v=Usl`vf)g%%DQ+Ud8S4bwkC8Rh4JSf+z?cC&2_2m??Jt6am#aA zjy=;XZ&BFp+uXp2Y2jiB2xQj{y1t?kL3D+h(Jyp>st~bbw9F)H(lcCCNh&q%)WSP? z7^i0K+7C-+;lLIV4#OJ-cBV{ekR&3Ze1BPvJqm@Y-kvvWdmq<&PS z*H!Yry=a%rXC)?JY5N*fX?N0bKzJ5ci4!_b>U)V%4;TjX1}a!v z3D5#8B>*uuOBi?tmw@uzb!0vjhN@0NBkws*noGP7(WeLquEf#L2EAlG!$Iu{L*9tM zZL=_!Mh2(QWwI3Rfp7%?rVCIanx7oLDd!qlzWo?JfIn#|T`u5^|RqBG;UZ1n<*T}X?A~IK@D{oT%jT4&^E5u zPoKxNP;@?*aIZthXq21UA4<&mkH^>`5F-Vi5i%CzE$5w|sKx>!_z^#jfRyCHYxh=u z>Wqnaf`-#2c-;KeTN#+X2w&0i77xrNH(Q)g^ucoBLg-mkeb7(Utf)u4x^`g$w*!y3 z>iO+Js?2ououmVZ1>5}g0k@`&VW{uxA$X$sp$Yu-vA=;Pa@g+~pe^;u+-_Gw%GZ7M z2EO%NGq=EfFaZ`ZgQKD6Z=zLh*I)HL4wRe?9(AA zW}9PypUb2ulkKgo(r11lFDyR-5Wwv646ikg@LF- zeF7Vf1gKa5m+9!*f+6F4-Sy4uu=rrCwH#hQk|8Tp(uDbE2tF6k&@CRgkb?Z}oZ9YN zD07C3*jzeN(x9x78q6WuCpj76&P({YhRAw^aw>YSB9hSZklJ9dfSNx5KgI#8B01<) ztqg?`D&|P=d-L9n;-G{mzTN~T-%j~O)6ET4p;?OjO>jnRh8D`{&AWPJ21A0j9;vtg zK6OzT-f|t(@un=1n|=>%ofHapo0;V?&LHiC8)mjz^-Y}{gIhP?$<-wbiod~`hi^L> z%&^~SZf~cn5H^TpwzP{kB#Tp%WBzyHD2$=ild-(lhkxEe9pjgUsFnBeK$-!4YICJg zloF8A{+J}HoG&(B$G2RdD7CVYm(Y6M)YfoNy!1CqpFY55cAQtjZ^%EyJn8@#tjHKR>vgA`}XhZ)<0FygDTr-Pxcxh+5KeK4)21<=Mn!s#aPahG-QUb%R=P z+RHrE;3_3ftagT-M~4UONDEnxV&&27SKCAln;1taW8llu2inu5T4yGxS8_)f zP#x~cNW%>tV@@kdBFc?_tOPOqY)E#mNUO>N@0Te{)1w@r6GCj%_-@dAv3rc8$9O&+ zTWrMLym?09Y*5&nH;XeSuK*v!B8Sn+q{zIQuMCi&&o7~zwU>=^g4FW67LS}SE|b2>y%;hIo2vwU%kn`UtZ zo(F+N0bFgrk7`+V4EHWbW@nFFZUDScdjAVWMHWd&_F4W@%z#Ylp-DNYO4N6=>n0^I zmlj-ckfDy2o=2E(XcQoOG-GsM_Gf{d{r-`c25*b?>uittZhRq1saw+|rb?D_z0x1w z9s}px8wKmCDeADqZ=24)CPM8r4fMFst3qZKZhnBoMg5W9WBm6g4=YM}u4-DOUFXZ$ zAfT$7sr*Gx^3;}pVbAUOSdMjox-Ovum36gF-@088yg?NI^KvStb}=J*IekV5I1{+8 z#S5ACg~OCNhkFFd^m-Pdtr^y^xrviKO*u1}3w;<4`r9$;XLzZ!Orug#dY-1b4q!Na ztuA2WsF39TZxs7uzyJFrhqSPe(wxQq<({7E4;yJs)6OlYIUj%ax=i!S7_OR28?mPd zR*=nR*<$rx!%&>g8|bXNoiPmMP}cz+`EDc{@X$0l*o|MK4l z0&lwiKFkxyqh%OLFC%SdCl76hJTMCP2b;AUP-XIhehlE@(Y(KA0c6jO~xG+(!$gme-=fbZ=c1hZ-QUi-G#|BE? z1yQ5^o34%7%Sc%^yM(g6j=tQUVU&V6`O&1$bV6JIu~N?WVIATMqW?1=Ub!oNN$vO1 zXomBK(0@XPWZ1;}R9=;T{aaT|Hxr_AEMx*ua-vMlSYi$y*)Qx{Xaw}H;aEZYiU&)$s80H$ z0OkWCbnnL%!Z<;k?Cs0#QyP&NfciiT`~AZiI?L|he<0WC0YeY(v}uaz_h+stAeHab zp4(hO;b)T@moihwFuj8jA+=^b?`g)P5efphjQ+x%D})Kc>RLZ`cjhGxWFX2lqkBV0 zC-&|f&bpw$KKp@U7t0W;?BjFGLaXw5kjjBw!H< zXp0RpcG*%|IbDLl$p2D(fd`}({u;hfD_u^JRD@!u$?r~#-WBqr(9JM{W0JcArmY}? z36vFmB61M7k_r+`kn@g`V7k;bB`o@j=8)RBYWSSuk`d(&TZs(+-^w7x&BwT%DXdgQ z6DG^(GB~BmtG56Et)>C$WHg&74hYi$kg-vQr18wegha&dFbe5Eq;g?T&Mr;Sdf*Ms zT*i-J;lhC?$h&m+-F+%ZjV(W4DP>fXCgRF49d!L6Uw*xT{3{oU-4% z1%Q+t7lH=MNgi>4t3d~e7cri! zz3n~Ex32M;5u7El%amxSKu%f0tOtInWVk#;AJ}sBpff<@RKzTA!OO?K?N&9JFsw4j zWzpIvaL(2wi$6owr<)?^so-z!QmfIJIqh~bEhzYMmEP=!_FVw@`X0$12IihW_b}%d zEfOfF__*bakEHi6BZOScj9Uj3^Hxs%8=rJp*-f=I2Y-x~RoYu7gFH+Iu{iRon9}$N zMLeSt_nO?O%4u<45rr*l+*t78+~Sa{}c&OwS?`i9^u9iV(u}q!32u6lHSI*|+W{)o zvP^)f`UfT0?MJQ2Iz*zZWeyb#LWMY>fFUThRon;qR+?`}KM>nQh9bPUzor=hs@78K zeFDk_vQI}L^P@E+NNU7!lh9$q`zXO!8Oy^i6|x!VX>wWW2j-~`t9D!D&2P`>EH>bh_MuY@XS|3ci$Zh3b3 zTB&^t{;;LxPQGbPjcuO_Rg(Eqq4o$+)kH12`;s}bJHVXEZFx2-6>JHM0#{KjdhX@v z#mXp2_Lq6#nRblJCYDaB;g=#Pf|Y)IS+W^?XMD&jaJV5n?`4DQSxV*Qs`GVuXWH|| zoUD2m#lht3)X!srS}T_~StcB&?ilfr4tsRkQjZiyeEWKcls%pVt8mIdi*k%z>Zv{8 z`=7@V7)ntbtmq8!aX`4;XUbjuyb)=;XU|FnV>Nu*Cwhtsek6ov+>clg{SXxdfrM+& zgMkNs#yhk_A2nr6>5maCZ%_x*IqL;|yRpH~7i&E+;__ZzK{#Z zvH$G&{-_Ulsm@6H;G;Mn#54A`DKc)K`($xnrFPBU%tfA5{W{S4#5<6wx5JNhx#=x- zfSNOFo*2BODOR+v|4pF1Tvh6Bb0w88Q_y-bA+<66uJJ{{S0^mvt&inB{uS4 z$NREr@=Zym3vAW1^;Fx~_`#fFiB{0|AFy-Jx1Z1uMvwfUWJ{1F=aTCAS?SNW7jsaq zd344xVNxH)%M29-Zt94FWsCAQe50&N?B|(3pOwWiqRzRh}R zy4QdZ;>1D6K4R02pwG;E;)8c4SG;nxsj(m9FKh=LmzJcqp6{AWv_`omKu16Os*V_HkkbAb5VLfE{|{-AkciS^Ilr&WJt^Q`??A|CNh z9>PrXn)e)w*tx}8ANUuSxkfd=mGhEk(*ogg!o&lFSf$_#%zoQh(Bsm~mSFdZFMLgN zgUgU1R~&!k%8XAlYGut;TciJlhYLPL5l7|Dk!}qUk6^rXeKyE&HCNyY-p5xOTLa#+ z^RaL=@Yb8yG>7I|zddDssobd2;oOe{=GJZpl?SCc;U0oo2fz0LGYd@d!p?QRT*@$2;Jx?z%g%ZcYB;kvQAx{ zND;}vb|AsG&2j*}!O9W5Yy7!8ppe+iU=vgx>5$}#?OCIS41lBw7fv4}#ks65k!*uKw^o`ryuX@}pbU zJGoKj&MQPRQvl?9kcKmw;gVqi-M8%vsj-eN$Cy}HeiecpOF?SAeA}9Y(y6db=j2Z}> z(K-4Ft{<@V?C+D|b1FhTY*#t}ZW5)8;P@=ECO=s=9fQ5#EjKkj+;k>&L;z}e_~F!{ zr@baazLM18Q@cl!keyR~Al856f?a_hacsUp9D&m{M%MejK@I35W}t+2(#IwKbE$k7 z*%UC^B5tMueQ#QlEeXc%GNiNy70+d(g#ymm0pJWdta575MCvehdRd^4IPKWEvm1{- zE1v>MXbPA+Nf8t{V)Z-U$76!Zm~)v(b>$me#18HmCvYCW0Fl1`Hz)Gn^H-cJufGv- z%x_9(U&{ds5@1y{r|2Bd&m(DDVGolMcU?q#N4yWe)AC@wfrPw<=-Dw`1yhH89zH_< zbNSxGU(jzlGQ|A`3hY)U2Q-tj>6z-D3ApmwWtwnWY?GFx^#&3QbwN5cb8lu{%=YAy zN(heXH#bV|wBuM?4NF69rMH@*gB#J(|1?dEqpU}5jXZIc@*z$#!>hNIHi zp*t={0SZFw3Cp0q3KrclT>E^#{0Ic}wDMn)Ne$s@T0sHXo^NvO%tGx==m%vz8)4@0 zisV7%zK!>@L?2h}46r(Un!Y$;VdNOS=F zN>R@SZRe(~YZ`g<9~oc9CI&yWc^UfQx-8JYWPGY@wt8CBu01?9y{7IEJNKtfOKt9L z!q&+L+tsup!dCSyRpYCCHt1@_-A#<4!fsufz*1}|Si7H_%zOWb`u6Dkcc}Si2IuB> z+WI!Pwx6)g96WF4>bIyBH~;oqv>#qMJ9es}v)!+`P(x?jnulO0`3XnhBd3Fm5`cb+ z5!#%Ef=(FeC`-Kuc*j}>gJnA)dzF9F+NJ3e*#xxuoS9O-OOL|2Liyyo8#?FG#5&Id!|VW5fUk@1Iq{^PmjR=5)>H;L^qe4ABz8Ze2gQ z0zm!W;23-dAGs+xvietBU(cn>a^z_8;7_(`i71r_Xc&g zpUc)6_7y$R7q@usVw7b;p2*p{zE-F|Ew>8P*tOIi_vttot^Qj!)xH*UJ#>j9cej;z zuTpU*z7=$c7VII5*AlIJGUqyeMg3S&M?CUsE&W zd>;DsclQ>`Nn}Rl>cf@4+*tmB#EtH2?f!Xb3B$_kJrA$W=@u@NcYhufz`oHv*t2PQ zsns7LaoVV;l6^{Dn_?BpiaRvw-jVV)a7>29o*zu?_?9k_$ye`d{B zhC;=iZaRr1!-TGCV~)Z07`&Gs%P;SX@>B7UuFOM=B_thyPbMM`8V4#361PDRLxNc9vQ8v7M;C!ne;X+p#+bzhU9XulKAy<7%(5$NFV2>dB zbcHRQqJP*qU1Je*RufhLb7knh% zm|}@x+lsEbTbzcXQ+$y~PF-NLeuhBxRS9YQ(XY;Newpw%vt!9 za2I(hyMZw}(x{et>EJQjP=|K6cXf5d(bab?UF@Qn#X!CJ#pzf&wELxJ{aapymPd7X z!aP~TrCZ$T+EwII6u4q+ElUh7I+>F)#G{y_N83L0QZN0xPqO_jAGxg;ALa+5<-+Gv zO`giUio(Yn>;t#v>7ZT|#R~7ccc{985=f0})Zgpa^<@E1KShEHg4u^MVIH})~VA`{S7-sVf*$nC!IbcCpdV6RE( z%hZa0o~G$taVs>Gy)nhdaNxqzq;C#!N7LRmaK&eum^EUakMp-3QM!+pWDZ?c&hkdG z;hU%3Zjl?pReg_e!@;h$+sfa@fX=$tW&-qQR@sSg^z8{lZ0ExvV?#g4e2@~U_ZQtO^hv)1F3Kb!A=%O_?I z{e^{}T7VnSjd_j0?~FogI?839;!XHs^n|CMJ-pr5)(Y$-UHtP_ z{9Iwb#z&F$uXanaXL~H7t4xK}e#efuJ^x^^_ZxNy6vjzG$&)*6!g}7Tme+q$jMVLY zqLL0QpPf|N$^I~T0D$4XvmyY0J}0ymNGJ;A?61S%1YKo3WTDX{_Mkoo|NY4zYvC8L z&J)1gor{zr1AtgN)Lx5}#eVJ(RoD^^JFx-Vv@_9+L`@Jno$P*Yum}IqVb)QFwrbaQ z@^~v4dxSN?uWW>`77uLWd-#Emb!iAiuFlvZZfvj4l%+*lML|_Uyf{4Kq!zYfb4_LQ zM{@W^IrqcXnxJat^&-R(`tr%n1%!2aRU1o-nnl=e2BqbdYH>m5f9sTe0=bgI zp!Xwnh!Y=p+Rb^YY57fb%vXT)jK(X*gK9pS-ws+!;zg#N+J6}P)BG72;|1C7-%GF? zlfYc0# zwEI;!HrH*b&JBM6MD@g|haM-qfUwtSu3NIN;f4qu!^C-LHei|Zqg z%A0xAOG?-a-x^e^ww@DOY*`4)Dh}!aM|HSv#VGzBd!2;kkG{??%l=Oofi_MLsql zHLl}oHaH)nZof@>w6~5MB*;nG7RF2ZYSWLd30(vIXjz_aSB@re%Cj45p5LcJFb zK79czzG3);M?6#xRmTxGUzTs=E9c|Cr>}cmwM+-btFiqey^F4TjR6X$kr>Y9ZB|kn z92mcb(g9rYRO#$@wjkN;D=-QK`09v-U~^PSMz^j^@ZVFuJ;1t7-rH*KvL9AuD>DeN zF8Y2ID#{R~x}Dp$ToyE;y%*cqGRM#piNNmC&>a*N(5T;rLsgFE!Bj zBmd7fy?bNQsayf;*uwU7~!Um41aS}wl@4O&L=58V$2FZ=TXT=;ISWrXDlunuPl@`rI*m-peb zd9{kI-PO6ZpZ&ytfZ2c0atU0SJ4jpSdiYO1_SAxAke!tEL`&!}Ub2t!24C9BMl-bJ z_}EXB*Lb?QlAZl(cX9;(5u1059Bs_V4bQ8@1H`S)9}Iz;L7#}T&gX{$17j+@@E?Pc z*T7kH5fA}IZV(PZu#wBnGlHdd^~WsC@}>orrdCDdT=N|$T7d1tvjcCc_kkRH8zoyd zs@iFgU|)R^jFQa&M$#9yGlI8Jkr^l7Ng(@}H}h4n`TS(P#d4W-&2ZV$(txxR7XIM= z;@TS0#Zc}EsaOfWPVm(El2C%WJ^G{r1?^74RCSrogC<<8j`0?Xk1bJy-P&`j8Udra$S5ZU zjMM0^pdJ~ z?97((05oE|ytZ@Q`$owv>$o=essQ?8ODOo?3Mud(7E z$QvW}9&&}}>}TlqamPj64@I)|8ooRTo}OpjWkorlFYa-j{@U;;pE>-k{3c(&v$M`! z1_Ws9dp+nz{LD6TPS5k_N475rkhsB{If(CiBnM1}dpe5P{4(ZDgev(QQ3brtO;V+U zQw&RlDS4(#gy4iT0F*sPc1?LDZtGmG>3FK(6s!({B!s= zMnfiXa=*5FHo^K;XYOB(f+Zc^HsYm7F0YM0iqraDu`0ZYA*G6|X|UGbjp^m_N@oj z2A9OzF?Hli0Anazk*~P*KtwCZsTHD+yNBMR^K=>9752s8_6^WUq@phj`-%@;1S#)2 za1jS18&6t0%~trc%ivrZcv<@Ti{4Q?K7c74%#;YOy%2I57XD&zs}}A3<@!V$qM0o+ z7hmW5=Rp?N{1@-xw69&l>ISw4uO=D|P4(5m?(Q$?KCkR#Y}wFfTy&8U;;|YQtUEM9 zl<7*W$of{h#^wDAWF{wF|GoO%;esy2h!it$ese_p(AVqd6lL4QjzK>G9%8{Q3pXTi zH#?i_-g*{=W`WKED|Qf`K5o-<2E6n>w3|}(;+WiZ`Vk_JI5;8Sh%M+e_b~KA@jL?cWqlXF4kKz=|0s+WP9C-Yfmqk@vV6tFp$ zn&;qHiB1Rfi@w{$$?mj{K(SWOF&+s`i>g6F#mhBua225wggLuXA6H#G1vEb=2pprg zzhEP3ZAn{ni0%E}IA}=`L%OT#x#%5bIR>&Sw<2N~<3Ny}9+RD!OLKk@bbHYA6#G8D zS>`v&36ysiWP3dKO_eIgM=QWeG=(hcWlDZsB<b$Y#iTA6nl)Hi_OM z6Aq3cH=!5r`NZIha!I9o{x_}^v8v9O;6K4z|5RldPNLfGcCz#S7U?>)!5MRxUh|a8 zRbQX<8tRqzdf1IwR=i<;P6 z-Luz%^Z3TZclnfY1XP;YN&LoyhEz=$0cAOrBD08CBn-7gwj&-ud*fhkfQ-POQ73l6p72YH+$uc_>I@NluocHA6*+;gU4kg; zZ=_=@WD6wLd!3I(xVZ0i%uIa~k@ehAvP4n+$r@MRdv5jFeEfrZEgpyEMv@An6yp~j z)_HL8iHjg-8igjb@P2;UrE3eKQ*zYqFRVM3# zvXGTwk8*db(O1EVuSDTFjA5eoleJTomu6>p`n7n3Nvd_P;@vxSTR5Zp;kR{7|K(yJVu4(L=7ot~HGuLqAp!KSx@b_>*eq9M zW3ahfJmY4Z`Sn*w>L1NF&z=Suq6F`HRoS5$xwQe8PBoe=VWDTO5Aqc!*!A6CHN~$T z`ukh=-G@&hdn-@^Gl->nMX~7P?-AxJqqj42m$i;n^^)%<^M3p08e|*pUQhNTroje( z{E%6U;x$&ZHxs(9-9y&`Bo^}uHx>DaEgxBSO}d>t8e2@HK9DkTep<3GZ);Cu1H)% ztR6ME6tqYFY;)S)I5y~!CR)us_R>^t1g#Ukhbt@Jf;K`GIv@Q>`n zhkt)P!!}r>OmEprSKJYYhbNxed-C+Z!I`t5E*CQiAxv-yT81%35imgCe&{Q{K91`-w-IK$qrA~9Z_CUKrjw;xyae>!s5oFe)!J7aU$?I zGg!r*FC;TisKHFeM_ekTk{>BpAtHpdi(0bKlcWZmSPO_I+OS7ig;J!Kz|eV~)Viat z@W%AQKw~fe3HaE&#SjrWVb13%;tE)>v`4iD)N!sX3t{aq+9;$bk=y8-Ob8Ui?fZuC zSOY^35v3W=U<^CX50VjxoZq;5%B3>VOt7^JHCS=s?a9}A?013kr4eXfj}`|w{6nd8 zmp03HwkMi=LdWB@s??0KND121&QVdY(^mmupeqd>>P&IP!Lo|N>DNpXhh0!P!j2vO zHqsNo>s8J zC%mJ5u_tUjo43&cA82XMw*rYQNh3F?&}N0R-+Tkus&C0R)^- z{OjuY@^dN5(K{D>X(`@et*32&et-2|g7o6=Rdb_%yFdMZnZ6#_%&vsf3sWQ$D8_azo(%4&Qv8w z4_VMH7FfO{z+JCBE3kYbi{~>6lxGNKE_nS4BN*3glEBHZ=!F zR1tOa-eP5Fo7aL)_&NzxPn60P$jK-lI=WNX8}a3e2N$t*Q6vu zAked8`lf|W#c1)qrJvValx-%=TttzWekyc|z+C$iMY?|$(~(E((-hQWra?TXa{@|M zVWY;cAJ^j&$~pm^0dy^VSbbUzAJaWJ!~`9RR;+d?tIi~l-4kDPWW;e8H}!guQVqYp z^>5r^`7iQ1J792DB3>+KiKj9Ji7n?2$NpI41ywU{Ng6VfVT!!Gmz>sf0*6oN`4*4N z4d`y`FqQwn#n-y~^pv|Qhdj)V{Pg501enH;CSwSR#j*Ae;QLg1OVZ)9 zF5-deuFbY5EcrB5JAb6*`=7lA@z$5JR)kjS9PMc)n)eI^s~dd899?V+2oW`%bPf{`TOz8C$uG0d z7s|!iU<^y_GA1^Oa;%x7TRXC<1E1yitD|#laRU_LomFEet;{XSP z<9;Y(R2?95f={p=Pa^jG(nmC76iY+fb@y}5b@BItZmw~16fFDQ73{~E^}#9*AQ#XnWr-pkZwFDEk~pmH?arRD6>AzoDL~B{sBp* zj>VV(DF2>}vgg(M@OSnw1`Y;KUQ;qa|cWdAu2D?nN`Pbiru6U!O`D6}Rkwi~0`VtZfXZ#|VnvP@UCzzKzir zH$x~i_`Qg2;$WtNWeDvlz4UW$RqVtBHd0fS)+@i9ny2vznO=h|O%{Lx5-z&4j6Nrv zl3rV^5i5LTv&W;Nr6t7xpuJBN?j#=F4SvG_0$xzyX@-9tHUI?6Oy29$&!-Rc%7jOi zIXmF~$eXw4%U^`dFr*I}u`!7YdMZ-B61fz(x^IQiMgb(j1sfV8Ttr zrptX#fEMn&b@qtWxeAblzK8fVHb1P-;sXNqY68A_5^oQ{iazq2b*kNU3d%%SV*EuX za0(~ogA*MgzeEH*S$sPPYi;X8To*w-79VckDxc23rUiO)5;w*|m=8dNCuAb%XK`6* z+tYS5Aem>9#|vjtrFcMe6T8`-Q52Jb@;$OBB52QorR)em1mt2S;oxBrE0&gnhsPi| z>_IKw!yQz^!Qbu5@n9w}C*jhff?0lIG3{w~{Sds8R&slWVJ-C3{w{Tc!CR+|T2gS2 z)+IWFIuh`V4W9c6xY>|c!??tmU`OE~BbQiLzj1T)D{R;iO?P z7ZzN6gT-`&Wynia{P3&R#vTFm&iJPC>6LriNG3m)@L^}-^aPO{usa<3a-v8DB#*u8 z4tXhK2An71FFc^?TT}CunLfokxToifd269}N-@FQ#JEKK-uebl2u>hPMI>j*jS~6hU|c8rd|D<`xX;F-OZ%;?U&SQ+ zydP1e-92GSMum~XLxc>6hzf9WFLodt$xg2(ATum5nFaex3qt}iHcc0lCNq%tYu@r_ z%8^7X95e5Txfg9+PB4ddHj7;I$J1kQ&N#&0>kXm6Rq=H;HeXC2GDatni;Q%~Rr)1^ zPwcr69X`&NR5cEg6D($NeJ|*`;8SN1wQ~b2h-q;iSfsaAbx<7L+n9RWg7 z$fDs?cx}0aAAV`zvYd#JO*`n5Vu!$Aoh2S@h3KQ2~Zez-frO)}>UrW(4R`{3Pzb$w~xV=_UPkh%4sqnAf!pSpfz?go*L- zk83VJ6$2nYN6EGA2qfZ;CNZyu*SE*gVa2h{{DvYIf3%*C22M1Kd^;l-d%W!w3CdpQ z@0yhfR?~eqCSrYDWKW23qrisINP!*aoGqJ#cEMp~lmxljt}~PHHQ){m1UNqs4!A03 zD52U61a5Z+7i7B$aCmZ#<1SAgzS$y>IFq&fDrKF_>s|`}PfYLwp)(f={MT^=8{H|L zFK0h}SX7Jm5>DV6>#||oe(#>#a^1bUfJURdE8x?ZBniO`gwh)l)sxOlWCF*vs=6+K zfvDcqi@mF1*Hs$t#cHu>aHYb#Y9%_BPhu_CD>G-VXNg?oU(b;`qYXWCA1BEWFF;lv zd;wHFhO`aK&(iJ(k)>N^;cc7H&q4y2=pZ32)aeZYE#$3*!LW*G2bsO0_nAxP8rq!i;3Q|(^aenNOSP9~^e&^Gv+FZ?&_ zp+|Jjl)K2VP*O(CsHtO8t80fJO|5M5?q)^HgQ;r`}+o%WcrnPY;8)m#)w-oPr+o^&bY)`yzkSJ!&#C1P(rcw+$aFRB-& zP!rG0+q35H&d+Ba^B&Qmm%A_L`%zh0$Ge-DLp*)qvR0Q%D6r?1 znbY-%5v`u{iU^TVe3iJn8SW%u1FL`VqH7q@|6*oih|;Nc_b**n>LhLETN!!D$B-OV z0EpQ07pqCO^nkoA&MI}l&QlM4u`Qlql=q9DHuc4T>;>L| zT+gmOcu>ms!yP9@gIf?vl{*lAe{kCbtU)yJk2Z~E2;;kea z>h#;A!uat-N6fJL&~2+*dKbxEZ;gyb=Q5VCDx9$Phl1$qql>93H5{I~mmr=>vAjmU zjX$_zvDchv=x_S@>JF$Ep?Q^zD$seiTgdOIbWErnHZu&VnV95W;v>wzPga+yxE>SN zUj82lZfhs0)BYf-M}k(MSxv-xajN&osQMe+6%^*nFLxIJb}J7A^QNVRN9{c?IDMgZ z`dHc6;np#nBP7O8E*6I{Wn0>1XB`Y}InXb(QHaxVARqCCHAXEf*G{`=K}L_5$9C{N zwj)y{=U<2{9nci9(iEs@1nna&mo&dv2s{hOMsC7B zvC=3^$?7Ku<_hrwa~~?sVuZegr9>*d!Y%Sp&SI~zzt^8}T&@m80-m&22ud_26!ePV zWWbo2uAMp75qe8J1FUJkM&K$&W7=N6g_l?js#HDV6EKcCGApXI_tXy;LAxG+ff;Nx zrZ0Fo--W#{RW%^@k!>@c^+Q^nPDT*8$72?c6X?qqz~OGH!6(XN%y2FY3F1Mv z7god4h?3_%=Y##UfMMk<%@{yg?aZ`;c6%p20#JJ=JxNAEk2BW1GTI>vaLg%O-`V{I z0y6`s*%Pj{mtNeS@;a_{K>Q>|zi;F7Nq)Tv$Z9C(rn>iFQ*R#$pE-;@ZdA?zL2*A9LydPQL%elP+M)5gn@&lmJ1W zR)CLNeW7t)j90?GFdBS|XKehqunvUsBLy86`+p4GgewhLDW!F!fPjFMqPWp5ASxm%B?1=kL&SLHI>6jirjU4-LB?&Ta7GXK>e7vT>W2!-ezQ=GQdb`AGZe5#J7{ zA*9(}5}7+B7Wvi_{a)4L!t-n6L#7UNB@7OM-u=bmYpu&jd-S1PpqlG7P{G1f^gbi% z?slQ~2JL9-h$Rxhc1cH;fxlE;$M1e6tQ`iPLsNQGmVDHoN&MzviGKivPP$YUg!A2g zAko>ad}Ro19R=qjeeIEcwe*bT{vEfZOFxy#iZ~G3r8{h#I7&v!D=P}t7OGkqr14S0 zf(OuLU7_I|PK}W*Y@9TW=65H*TNutzg|@lvHkM3n3})LQIErREB3rU zXa#u$MMzVX9k%4#VRf*mvfDPIG)fbP>;Fqm|Z{1qB z0mo*`_U@0u6cGgku}i0F#UaZ42XH=Bk+{J0NE!((jJ4p!qXX8SehS8<} z?dx97!A411-ELQpnwv_rdhy;eHGSuuNM%p`OoT)n)O|k~ z%{eQ~oVu3q+)f=1lIKng?|YF@Lre<`=fVS*{ha+cf5U0A`p?^H2JmTm$HG(u2R}6p zZhA`nM&`=m+b^fK40u}xhtiG)FdQKfHqQ`E*7kkQI`VQ4`96wN4?1st-qjS-RC-Py zGJDIRIiP2Kg6eQ6f>}|+h5MZ{x+a`7xyD^v&DnsqW@l|KexoCb0qY zVVs3#`o1~Bs-jbRLlIJH&uEX8Q4?&jTK}C^%#883lO_#*Zj(&CJ!kxr$>l->~cn?G? zM%^=yHiz>-;TM^YJ|Thu-n&1$S6&!XGk>y@VaIl8-0bHxL0Al~PGVrnD3N zlqm@VQ;vOoQM=^oRPJ7dB>z>$I}F>)m(|3elOSFZDr$dD?*po>u|HGDtzpqevFS}0 zDaL19>w_`;oxA3u$~WX!qi~ckU!cf zvb?i?cszs4>O@}nd+FSkh6n2rFr4a3QjnP(Kpyu8;#DA#6tb2In{%!Fns%;CMa1Tr_RrjSh&ZS|$A_-} z%ppaHc@>%{o%m`z!c;>)KKh*1mbcD-g2%SSBQEtCx0pz?F@9J!<m0QagIg+V~TfU8&gNU~P5F2q%>C;heu-?<&nCby@*U*7r36qaHs=BP&- zrGQ$`RV~YTJ*R_kHY#i)i`C0pt0~3CzHAb-MFBg2y$$Bp7A-=wW;IkTM;^3g1vZ<~ zHYYol2rc}78s*<)vJUSwBP{h4-x)ZhXc%b)#yXHr?Zsv~PF1zv5Bxgbmhj>gF_k5; zbCE~WJzrB2U-wIcC*0CZ&{;ML97bD|daGY3(%?*fg8@A$daEWdyT+k~p~-8vkun_T zRWj}?^~R%_1>=Coq8?bk8Rz=_SchR$!)Cb5oCCCm=;Q(mI$mhKl7_jTt4Hr*~605{@u?uF0G{rAYZV^%t!tW%z9FLWTj`Mm=4&i2lT5uf z>5EP4XP#ScoutRgQduoaLv+44h;d%xKv5h_0{mMKr?OF+a853{_n z+iCFS$J4))uh@Lraa)U}$0|mY+VQrkK87}7A&d!2`y)fsX--hNm+{|#Y{azsz2S=; zGqDd&>oPriSdhlXrLZ(aw_?mH{ic}^>qw+_L1QbA^;T>D;qFZycXXipD}f%lFQExn z{`lOJSMQzd2#vm%*lx9=L7c;x7B-U7{U!$`;-9J;7ZEu1%TG|#X*Bw;KXOM_kC~o_ zI&)Lshvh=AYa<1zF!h-=68-b(%8uV1u^FzI8ZG1B4w+Z`zOa4L8yzv*+fKWeG^K2N zlsuQySD5@FK;jm8>R4s2y!>NDeG3DdYtbqZwy(t}Q7l@a%cJ`uYcpiev1_=?D^bi> zv~D+E;x`%gBz!8l^my}g%IdGw>)Dd|?1=9I8UMB_%2{@P4FDr&1pccnWEb|Zy+^|54aCbMgHQz{zRfe2Dwl0w^OUtZ#`TwF>Foqeo5MCzie{~H>|^Mx5})oVFU&re-n|D52g>Ve$Px=lK`<1LMTOh6o5 z()TX5TvHQ5x24`j>Qz7dvBu@(lI6FSU_cS1!RKU8>dq zAeEJ%*ha{hoUVfamk8*Jx_XjhI(J6SN=J!-N0ziZXzIly@}PhmhV_0Qg?;SVsWDdU zi(<8-J~$2_Iw5K9>G5Nl=9vvSARexTVgm(YXxm zREUHH(Y_dF=^benu2Ps)x;16x(lJE2FQ*HWD_Xq-&*9Sz!iGi^MFv7uTBA&?DnvA* zG=&5~5)TD&vlLuXDYjy;QJ$A|X&j|3oeM?jR-;aXQ5hs8eS@m=(ZLX#UOxg~6j8?jUpYFw%&aqz~4_!xDM{ z7x~mk_rdO!jL|%hwuMR7z9Rdq_><)ZPwc#CT{B&gEzSC@;|^n@e^DlLWtnvcvz z21W`VrFD_+vJQ%2jw}v*6$C=rx=+J@eaUJ-x6e0qjC!)JK0+5Y?KyOA_iU^wPhWf<_Rl za+bW3j;ux*<_7qT`k`X+gfhh-0Gu?D8cCJ3Narmh#CHvPNy?eY8PcX@Gnf(x1Ru zN8K1`fB2|S-~Myt%%QT-ZK>XiWo95-AyY6Tq8*}@@w}U&)c%HYy0=17@R;>afTHy5 za})u;De8cHSsW5DK9cYViJZGcZQrnA7sAu_rG#*LT7!FB!|l|OZ6R?uz+#-GHdf8S z=P1S}84A@ce>8Dvsk^XoZYx_Ki@f&`FQq$~rnhBzxLll7K7%#RIx2s5X}!29nRxK! z`Hd#|tj07SceRfuP8z1=Qn8i){W1m)cfpGJ8eqyOJDR_Ri_0-F@SkD=$4#8^vtB>qwMm&|(Gj+k#ac0#mm6mwEpyXAYOgn?eV4B0)Zs$zZk zZCIauA@c)UqTSz$N1*q2wOM-lhR*D0!-KYlDP_ltCQXuTkM9O4-TI$`ivisI%`}W0 zkVVQcit=!bbI%Hirxg-_pgfT9L#JyB*d%PaWbfI%cpn`jsIEKs%2x5(@LN{+QlG1j zLlz;6`GBP!!aMT5FlaePNUbxNdcCd~#*g96vy@1sT74|`QdvCPCAd)Q8&O5|n#5qn zEWU<9?DF1U9jCrcDb&IEA9T`qZP|mnis=E`z0EBP+cqtK+!AlhPS-*7F=t-uvsAiM z?@89`x4jidE%~^!7Jn76!@MbIKcm|(z^@1WnmQ&g?}rI`^(z>oqH3pjs2xl2&pCLX z^+VOgOhkXtSaZ*qgOP1Xb%w@f6^IF3d3bDdL($J*H)nABl|%e^m%N_EswY9*`nkb z3+Wv}h2A?!Pt&9$&Kb7|G+IMnU1TTuyuJzoo$H01+f9u{3q6}2zS_Uk!a_XvRlDbx zf3%yo_!c(Omon-lhl~K-_3cD%ZAnLTwvT(W@s$hVDCH#9uyUHd`^${*ZMBdsZ>7qV zxNY_SH1x!}3%5;*rb`n-fxF=pVMCD*raBxAG&p%PDHukp53WxW4ALVzsapLWUivHj zsj%1Q`*a9x?2KkPHD#|=dx*xbbZh~%3M3qE2L@3(52qT%1uiJjkVZx}t~9`b23l?~ zEXh}#4SB5)I?F|Fl3j_=2$Z4)r$)OMj;{qxQZtl7}CDo7--&9 z(%z|)%|}A&t4<46bR4@c6dIvFn)8Nox1Y-C9{O0)ybW2LrntEU?WdF_1N5)*C25ae zEwB|n@Hu4Pa^qMA9fxNz2jA7;x8hc~emwoGdTQIv9r8|aPse5R)LUMTmz+J~;=7;2 zCBw23_@NPN5$#)KxHkZfPV4tY0(6xAucE~d}qk?2I>Nw8|_gDf_NU4865@d zTmlkhOZPj#8E!&X;1PyB(c1CRT>$7ODEjpGVxQEo2jIEW0&^!`Y38KK{yTwKL9=Qr zaF^L<7_fb38!*Ph?(-MR$nP6I_bVZ_P5wZ6#xkTu+fq5Dw0d0`ebzo98|wsT>YDBv0W(hRV$;E zMY;sW*9P#Fq=iTPe0Xw(dz9V*&kr?cH_C~?cHgBHH@L}^=1h%{G)l2;Fv9C5oi@(` z>|#(k<+)eoE#4^(gOsdG-_~Gs5j1-^D-h~#h>|UyA>3oW+3vz;l!q?l+^35B#U(P; zdsZm$voW88Cv((8v>Pr)_I@}LJ?vnpAwCHxd9EPb{R@QFSz1qbZ+yGP1Xe{q6&j*zaUQXPmMD+WjDxR4c#Pk)h*biNPrxo!Zr^XxtISk1mO__!X~ z)3#Q#^jIWuxjjU&3vUPW03*MKWC{jGr;q49rrb=)%WG}r`5bbtMP~FKc>SUVY zDXBQYGbS?*H$L4qB3RbFF0OUD=hPDNqiGP~5JLVM(q{R%z(;#x*2C@I;_VA(>W#;x zQm0C7ZEwX8O7lF{j8D@<-m%l=?<{Y&9L^DvlZ>cqF#lxquYB@cBUBC zB!OD6Jo3MkmKyV^8k-2F&Qp(m*R7#!@f>(ZNsQD3RGhf2@P+10>lK2yc1TC_v7>+N z1OkrgG->4gU+asO=j@T)R*hK{!y*U9nMuEdgA^a?NCVy)To=3b1YLdD9jx1$uyVzYIsv9Q6 zohIB-G>qgVmMmBpw~pVj(r_WYPvt53Rdr27F>)eRyP}}h#HEvl7r~2mG!Rb*Xktik z7kuSO5R#}s@U1SJ&C7MT&7!5^2!ayLH#AYK4*UF0V%CCWG^a`Pal)){TXQ~|)2gAA zoV)BhsPJ&mjJM9N&u7uZMQOZkv_#pqE%nBA6bpaVT3KSNE8Pz&$@@`5dJw)7Qj5au z#M~N%iGXD%n(IkKYi;hSFEOrm z;-c23cBjnq4u`m78x9Z(hF({-U(Lp(Xq(ys*iI`e`HOR0vzr3yCN8^|v7AAthXyMJ zeG6xn!aJvDdG~y@LP)_Y*r2-5bDdPF-Q>ooz(ii@!4|vpW2ml&rXc0rTA|NS$0XbM zuIVy{Fw_0kBlSI+Z?gX2Q8!=qS;se0o;<3rIV~6GlLZvpF_--~BC+WroBRp|vfH}% zxSy*^)5PA8Yel1@wrHcKEg)4#@v|GuytoH9EM_m;WuNlk&+w}?nHU2n9~x{4=H?|` zlg+UGB%J!l(E8ui2WZZ1y?&>o4r2b-^diQM+ewpG+e0mQLPiTzN~WbTR-tC4Piv;OR-w1DNEWZ2HF_oQH#Ka!qHS#x=6$Wcp!s*`f)55 z#}r@;ucErG_2j83OGcA-&i$_gW0LKHr$#zSUT$tb?l0=}r6}jqv~S0A36W`T%FGdd z*$75PKuCgIe!dkB|Lj%_<Pr0P2q5`Q@)r+@ph!1J9m9y69GH>?(k93A$w@jV+>$n+pw)$_z|^ zFxh;Fi#+Sp#i)l$R%E7XpC#*qIj4%v3It~@dM1Uws;Y7&7ZY2+YVQ49$y|_CV=Fm3 zGJ7!Kh0*i$S@q1QJ0}&AGVtkF+n2i^`Vv`obK^216XiS$7e<0%_zi>)_i!<^0HF=-@=dYDIV?Y&%2G>@bSYCK!cqzKKwbBk2Yaic0ofSR4}LuQrw3ej)= zmCv!`AnEYuWuGF0`cxy}nDZDv`ZjOu8Cy)OB;PLCx{Utfg-1;lBzUk$wP^UZR-FA+ zYB0FmFu(Q{D|I<|K$z7HqSgTe8KoASmc>1G_NHlIQWgmHl(c&xQ1haE5}Vl>+6%G< z+m(o~L_c@C{KKm59@8`}`+~vDBSZt_4aq<`DUYWa!i2LG9=WV>%HL^ZyESdW(?Rz& z4A-@b-sj*SR?7dj|GkehwZvxB@9arj5%b|bAh(!^o=!Q;yi0j+KJrSD^S?-$hflv= zoL))cbTnbp49c{6h0o+6*N+;_lotCZmWnA=ozE~nm-}M*mU5eeWP(52Q!Pb4#f_@2 z;wu_Ok@w%;AH#s%kKM-QE!0i5c^=Q+TSUY^bK5fIG-cztJ;wV5b3UyIfo^cM{LyVt z@?f)6^q;T|pF!0;qC0!8-c57*ecyEcmp94hx7GP%-{tW=U{`6sMc|uLgp8kPvjXp0 z0vAB(_LP9voU08|irk^MvIjYSeIY3ry$g|dY_i%v`j4b~6+MPNgLPSKZx2l6cfTp3 z@*tc|3-#HdEk;DTgk|=|>)5-ucNr8xqt9t}*d=FxkbU%UdCiQ>%`LDowv?8UBwnB< zs~PZKULX8o-!~0p61^n+hC~+HPqC{Yom6;TCT*-_X*(b?vTjNEywiXRnVYaFTqg4e zJVghs^jtG+#UDSZ`Dw7*LHURVF~(n~QsO$Lwe%lkhzM&{^PZcOU_Aq8N6$V|E{TtH zK1!b2Zc9DSWrB*pYxuX!eM=5ll2pJ0D$`_^+9xJ%cyttL275E)yDz(EE!cppe&{K_ zHtZ5cnpM+C5u8VD$Tu>y5AWpnyyzneObi^lQ7NHEiSHcZf19FlTZM}qGEqTw-P|*k z&PU5w%>ET*LS7^daC12G=|LZ;IL&^{Lu%ab2>-7wIV1U$^iO4Qg~6=XbG+1U3|hPU zq48phk?9^xp?psz>TdHxwLGaMDKEw6!meI%kALYWn5NO~?sz5joWk}z8gAh?_oRJh zCuB=B9;*oJ++%dos^H}!FKaT; ztN-Egm&G1FjE+k&DdjDGk;RI<8W7+T81vRhrabW7O}^~Gd!Q^nRTI7=t6wTZ+^!^} zzckaB)l`PCz@huLaf*anRdZhHV={G786))~xQu@sIIcTCik0(WFC zkVy+7a@9~-lq6}3HK1__ONO+#LOCf|YtaGhSmtdUe7VYmwpgwoh|ti0&Yp#XPjdPd zL`j3;9_6#@26+`mQa8Jj1B^}hW5)1wg6J-$weIqNWUr8F86qimtVIKC zuegCRD}$qV1PA9K2d2WJ7|CVu^boD!;H>qDfcL~@@xW^pgf+#y*OhhGd2GsSat@U1 ze|?!@;Dbb8;SaP-Q`4{J<{#o(SWaJ_PHld#?Mg8`iE3m>i`n3B9OH+$mTg(%t*o@z z`5GW9v)rN{X=p0c;r!6|t}>1jcyx&mRzZ?$o}A=^D&$f5Q9?TnP=$B3H&x6X#}PmO zmuBUbvN&6AU%xh!lb=va(RL>x!a#amEcz{XJ&dqk5jSwIZ}B*a*s`x_MXIQ%M-?VT zL)6_*G?}j``M8c~fKI6SkjzwxKSE0yU5n=pLlWYV zj>7eg(>0;OL!35*-~{s5E)%8PdV3RY(K2hXDR4ylkhp41xY;K`F$(VpiW4V5Sn%V0 zB6#2O-sSmZ4tLs5W9XBH^TI)RCl`X|*)(xp0#^w;-|-Q`Q;WoY?cUWLj=_k!sZJ(R zepU}eaIiD6?3cjo3{gVtSQ|Dw2qwrjid7sIl7x6Zn{1E-ZogvY)tfiAVmYKo5Gvvm zpQ$2X&N-+Ii7F3xi>HWgoUd!B7wkyIWNxK^$#bP1x_h5OkS5@|1``wJ*>C(CUC`K_ z3rm!_j83NYVbSR$8pw@_*#ZUjvzOQL*f)^Ym;}$ujaMGWUX-Gm-WQGpxXkEYW2qP zh-Kj0R?zb79*W<4d86%2~dGdVa<7;M0!led${j43_?smM#S-#&l zwkx;vDL5>;o-mTYHH$=VPukqMxFcWIp7LkUrg?WJ_vNkT-3==jN;|*Fljq|ga>1LThrHF1R->m!i{8$l2Wgw^A!saAZ2#aCSF3K;?f1;u;dP&Pn{+2j< ziyhtmW$t&_Fzn*|du7fbm5_s}WP0datMYzH2uG*NQ`x%3ZWfqm%VL=o+g51*Hzg;% zi!%i(ufgn`y~%DL3F1KnJonJ@zl+aLwXC61IOJ6pqVVT8Cwhi2Ml18p5mhJoCC_?% z!y7Rf%{uj`(pP!3X>TG<)7fo2l(itB9ahY$@DC5=7uFCCxC-qx4lu z-VMswg}Tg=4acNP)9t^P2p9$w$h+2i_d+Qg7XPX`h3!HeBIeg3REu!age}geB(W~_ zLJOCA_%8U5I}30J;{5LOZxRwf!>^3VgoMN;xOq|*1C~*TXR8+i<&Zp9$f68)430hP zW>p3g#7W@Mn}!a}#-lT@>4}Ohw{dJyG0Q}~6cPuVs+vtP?A*nRGFbmxgdPq48zU68 zrd>0l_V0wUhk=n1koJ}~a2Dr@X;?{po?v6f^97=*MZqRgWbwB-Z17+&H63)tHJA4g zwM;Y*g0nOE&vA=7%AX{^!nn6;);qKf`Y;m`FxzK*=DRNhyx{%32q#uSOx6q6?tP8# zW$Kf`OMxdn<+N271~wo{sxOS6@m!o|NO%PdRi3!FxsMlRs@-F`0k=c3&%_!?5r46+ ziL1+GS$cX$$x7k1^>(4?|L`f6vebLr7P|qWdm%~5(5zGrt^7YX#;XrF^j|R1@&YhP zAmAzii3^UC4CagmYt@<_Der}BJd~z67^k;wC!n>C+i&KW8*@Hft$mn2X8!Py1Kd2! z)tT&t8iGa)=&(kYkZBN+T@+{gkK9p@q3E*OVQ8Dy&0nkl5~O1oZcv_)6hY+tL#u#l z^B#MXy2A^(J0ZXVC2;XOe@WvBv#?-00wrr0^?*3el?ZBSq#e;XUV7O*(*U<=WkgU> z#!fuEoj1EcwzOGe=SrvIhb8eA23eqUM!Wj{l!|YTM)!YIlW9D1?T!f+_1AuYI+@to z&N%5vpS#2CJl^~f1J}u8XVNVn8VGBilM9e*cdZ%e?j*3Cb~^8M$(sjyqpgzzPxF*g z)dAkiyuj2qk3a){gajn>*e45)G6X(=K@sipdD89}nnf?&{viisRYR zW<5GAAn7CpIFwbGroZ+^*1A*fYuG=F^O)r;rQu`^XMkgk66enKiFo}N@%Z&#cJp9Q zG9pq-^U8(2YnSxTM`{H;#of8z9@oao_as?R^osuEFZ`_j&E&kJlp7|;kU6~xHU|=u zpZAAaAmLu$`}4#h`j1|FF{ z7)&tI)NFcSdg17I)7yenK|>$+v;eKXTIu#C2*~n7Ld&xR)@({6f+3T#CkVOMa`*Rr zH58_T`L2Mez7@(wzt^btr^ne)OpBqROwtO1Jkg~{IpnsdC$?TN!+kRRnKzg?kJZ5Y|LJ{7?Dg3gt1pC??a=ZH8PkQe-0>UDif4f=HPsn}hR zu6OVUkti)F@rf=&f}^VM(fxH17P4X%v);|4 zm)q_8J*W;{+e`GZ6xal5069?#;?ceXivJpt;nF zUd{Q-^YyC?9sEg+-QxU5Ga;ORNRcDY1-o>uSlNx>JadH1X@!X+b?|nEghu$G^cX>+ zh1)q81YYkX(_oXGQ5W;1IbYFSq)lNekU1KcbS30`mpUOvEK6w;@xrE+#7Fu zzInD^2eFS>rQ*&G+Fbyv>X|h7kE<%-+mnQ>GIfmLI==1kQ9*Mxmc`;0A02pR!~^rT zFf|aG0_Ddl=)W7c)3l;~|C?KK{fy|SXWzkoN;$GV7IJMO<8YUHw@l^wrF*W4CB}Vy zt4*X;rx^Z}RURzXy?#gKX6SvxiMD9W!9DvOlTV;lZOem=Ut=Fh_IU^oFdUx)vi`G{ zi}>f2$ApPZh2P|bCPZjG$4@G#%xP3`sLwUAe;ufJ)wGhM!<}f6ruQXiXQ*NUl+yn~ z+W9=hJn4@=?&YVzGrE}V@IBB?3a2TOKB+Ca~(!a|O$(}d>(RLb=>o&3No z!)w6E?J_-#RZdex07SPb&#cf$_=kK^6}Q2$Uqw>xn1Vc`2?vY^Bjgzt+BhJa6?3Yt zrp$1eo|P^<6k}tr{iX@Sek7YnavqPT5IdF8Ks)PM*88h@v$BjJn>izAw`LKJTO1<% z#QOj|NUs@NIa`DW>_;8SDfbYlz0o@S1u3`)G%3~!b#plj@ z3K?AGlluWA`lUJjl0WgTb{6NQ6cz7(%i=KuX=dG!C1Kb@Dh=p2qQoHJa*xz^lH}Yn za`B*w$+sJs!kv}MSt9UUw+@X9-x}Fc#O{+XjK({xeX0mpVfv3NE=mPggls0u3ZaA6 zmU0a6>u0Ho4t}op8URQh4V`gZR&#AoI3p-Cx@@J0+JZ@klx=_cd_xk_HhKpH!I8)B z#N&%|wO{?h8OwCQn$r-TueO3ZLz`BMMwP0G9Fr=KyKqpgdkx^3KaVY9?z{<+6zj1) zSNY>42vUtKHY*|iC}A*2W8=TiRv8)Ras58cv9V{k2Dmi%cc{&J)c)A4yncs??Wc(= zu{S;wPt2h2J~4)Mupv3Fwj!o;RCTs0MUBOas!-3~or&$>Arp-L{Qmmv^gV?1(1*HP zTc0E-_4f%pR_WCWe}SZUa(Yk`aGT*Vidb(Opf%01c|;IchG}!FXQC%ujGyln!4@_5NomxUwG5OH|z$}y&nzA{|vltsGq#ummU z<861!W{M;)A;U_u)OiPYGuj9Q`IMKg*MJ3Y{HPPIaUYfE-^>j;W8~0{Uk&B%{drWTAe{$Bwilz| zbK2$tkq@>~1$)!yX0w&S>3Hs%SwP4)eO<#Q~DA;Pm{wCjQyl{fc^N|4f_Hlf$ zsURh-!7nu|xZ$Q${ADpk_bSeI(-A$ZRl3X+11M@4m;C4H^x=Kg!@GRnBHFo^x~}oZ zGG)F+aS>CMYcW==MlH^I7>Se2rsJo+8LmwH&Bc*!-VJizuE8Gk^WSw;zpGkA>06(l z+~(KIkgM_ae|-KV)WZG=%9+$Ny2i&=d4ehT{g;78*4z<9-O;zp`ApC|aN1RC8~_vd zF4W$2eJYzed{uwhw|(gKQ-vZM{?^ahznbb=VvHhflwY}L?5@~72qk71kkj?>s=1>1 z_8zCJ7x*xH!!~@@r~0!p*^^!)egy7a(_X9a5X6tq<|(@!w!uHtFR*91la75AF%F}m zn9-~H#7r4lCwEWk&{ZQ0&7aqwiQtrK&Z$ICzz`U&(1}QvF z%1~Jb;0{5zZ99_Fa>zBv;&*UXEgU(+oixU`dghuk_$&jh-;Kf#UmoT17B@-GsdOI@ zz!Fn+hV0a%kIXf{MWhQHR13)o3WJG?LOy***hKhnxv}I@X6DE03-u(PZ|7xV>|i3v z;_WlUDexumdG>gIM~5EQj!Twr)z>Av&Cn4Lph5(Ay`^pXg}h`gg@4OZ1y<=tOVSdc zRRT^#gCh2wQyk=l_B#2J)>W=F6+#tf{vh^M&aL<-)xuUO!|eZ#_nw`-7_E`cXbcFl za%E_Ns$)9MQWXZmbjPzv9%x0IOSo@;QYFP+AMQ@+mQv;Ef0qB$z#)S8{d7!7(qm1D z%YUD)oRYtyrIBZ@>wdLTjUg#M0i!Pji!*SpUhS@T^?Ac{qX84&k8JvM**{>ik-QV5PX}qFu^!!s?giRf(;(-dDfgU(TTPKCSp+_#t{VHip(m_WtjY{XCsh zJZon(?1V4no>P#xMHN55ktB1^mN^=GYz~z|6b??szqtDkGavovek^1_gIvr@n1v2v!D@)Z)4CqEMo%f;Evo|h^d#}IptIHW^V<= zzhK`RRkO7+cU!CSMb{{PYrzF+kX?M2x8J&=A7p~Cf71ARssU0#=a|B0AXrR>0MmFf z+j-^_KO(G%@m!}`*au`)ro>MC-iX4mB(4F6D^t0$fLwZ!-Ud2PRn7rzvNRR!W-m3Q zFhs|&`h$Ub%;5&i32XQbCCSn|8hlcG5U_I0CT-T!0KidbIYowm5ek0@e3V}2{af`$ zvSO%90m3r4l}VP-Xd z&DQ_K4K2{=4!N*^u`iea04azMnOKWUbNs7VeXcWWxFlb+nf_mc>cI?Q;BZc6>4B8S zro?8D9I@tSGgRWuC7!F)crVd!%xGWnd&hT+44FpO*n)kWS(MeHJx++k z_IDLouw`OEh9*c#BdZ^uN0J#uF)=3qt*HlUix*(o8<%i&)JBzrL6+tt zb#cXTsoGX`LmnA@DDJtv7VkXYt*<*P_HR0-OO4v=G*U@Lbk=Sec6V-&bfmBxCJ;@0 zoIqsjpcgg($LLe5(FtTYw-jelvWA4;2jMzMUKPiJxfF%0#yJ2$O;`XjegWtKXs->b zC+sjLisU>OW%f5<5m~(OQy7RNUlj!s+2{G&On9?YNctyT5${}1uY0;gnIWzV7tG2W zG{3Dc7!DynAGmlY0SsTF7cSG0@KH=XTC{^$iLxKJ|1PvWM!p~L{uITFK@{Y%e} z+#Dr!>P7r)H2ypt_Z~Q}<%gQuk~w7L@p1*kDS|-|;gN_FC0Hz2hAR<9*sg|z19(;< z@pRe}_~wW1I;DGDM32FASqNmHQ)+{36G~-`ZxKcM1y@_Z1j(jbGPZ2hdw1GpGvLQq zbjZcdOCnrE&J!T>fbKY8qnsHa{CmXWG02QZHlzU~zE;I@ZlFzX1Kzs8uk_N2-up(idQX>faHv`CP9P&~Y)EUyH z3^~;f8p3V`D%<5+$d`z}g>g|EdhFss$~g0vFdrjdD7&uo1FMyB3DS^@$;D7JF=yII zumyU&6({k^}kfgYf+479_KoIV%Ok4vNqT00>ebqJUxu)&mvl7F9eay zB}3SL7zNOcZbB_JQd}6E*>ytr?PgF z!3FI(JAQFG?dh9f)GlD7_s|S+`~1KJVv4@7f3IrMod0o^uPdGf7QnV}OUjcU`*@Ep zW&lQ7hdabd1vL0HQdq;fPFz=K{gi-{5YYBY@VksQow!F!7%`kSZ_CD`?z)uzVFU~E zSn*`0AhSz;i$Y@$4|Wl>6Z$;-6z1S<^K6D=XnoTHsqENvrd)(VvO z={!RqAdimnslicJ%sIi|t5xMt0BRKu;-7xKa#14(*XzLQyng9;LqThUp|8II2%~HcE@_A2jntsgCZJ<=lTK-Uh6tH_>YBaS;{wv# zYQzNSLS;1=O}5QUHCksh8uho&r8LlDG0JE>vak+pjQ~1oXrJS(gTW& ze-#E}k75S6Y_2GE4x}a$IeDkHrpVL@Qv3pWfPZ6kMz`eon}^kHOSyV-nVnOe^WJEB z`ua}n@`jyHbL{`PvDbi7H4wWWCR^ZPX;mrAlbmBsE{m=%>smupGnEP`D!sqJu$8_E zioE}T#KsS{^H?yD?njilh5?QR4%XOxk_~uC0y69DMf9x70k_to;957SwEtkIrL=H% z*7M1gk<~a(OILw|Fp|{8>A;Jt4HsK#VHS?5f1M4r!*jAd(0&XdRS^Bwn!~AI9G+yJ zAbd`phw{W~*{>By3SMa?_$UctGO{^vLZGgRD41r@!ol9$;_lR~PkES3Q+1k6r7NEo1hV zs)9qTo9HM5U-1})HpG(O~6lu?{bg_eVerwC_Quu3MV7mWc zGrn{FO+CiwtZ??~4ztedSuxpque6N6)-u3?Z<8mcYbIKkYoA;?=^jb}Zu*bD_4ax2 zcg<@jW$cmg$)chqa+I?1&lLhLmTkb#@c2Or=}l1J5?NC`S#y8 zp}!sY{3S@r(-7f{!%-c49K;)i?|Vh3tL6%=F2a*9=#GgEa3!jUrF`WBf{z#sE8+zz68_5NlE|4mqMvtY_G82 zkaCP4$};{9aYZ7{aur+kj`jU{lH$}OnMAHNKVYNV}4sf0z zzTsPOw~0$>ll>JSHWtL&@dWdVDd4?|>a@|o0VdNQd7qR^76JUzd)3j^Fu~MgR?`~T z;y)P_;Y|~EEmpE|vM<)*(|56V)y-9(XH*ciS3en*crZ`q&lxK>;N?$mDefxXiamp+ z(W`&Y^LIXZxk(p#!pP2`BKlXpf~dKSWGK6^Q3kGRAeBSJAPKHsJ#>Rt$@58udW~5+ zAAMmFt|2`nix0>!x}i}wk!`dD#Iy0>5#p$O|EK6o9GU(fKmOi5V+?a2ZLSbSxf0nJ z=E|HAGH31(rBZFf%soQRav!Cd$VZ~)rqCQAsYVo~LcXO^etv(&>v%q&k4GkzdN@cH zExXhdx7RKxC{WlOm%9+CY5@V27)Kh@(JZ#sV^?}S%UHk9l#<`@Z*I>LSgUVUy%a;xD8T2s_(xxPFo5pR zNmb9!)jlCFb4BJ^1EB?HgkBDwn(j}?Ri+_?aJb3G7sw*ui&L!0j zS`TxD78%?<@jc6ROmpXfl}Yu^xgOa{qHDL$frtOyBD;pvW8;=LE<8(?Q^1tl{>e zyXxzyi$&QEr;LW5?l1JSovum96VlhK#ELkyThA&I%1D-yPMDv048$-dRpAw_0V5$! z4ZthJHhfPzeoN&d1?|a6ph&!nWT*OLKrujmoKddGC3ltovBew`USZ&l(p0Y2W?VHh zNOCq{w^%mBwy#%Gz{$yhwkw3}DTgc~iJ8WN|rKf2W*a@D`Rh zun%TmJz!!4MslTm1Fc}U&h5N^e&F1QyOW%M)0TWgTJXZEEiw>vhg=`M=xgf`IR4t^ zVw7>NS)_V=pJe6c{yWZ|5%jRz1>nlsvtFW2mCaSLojj;lM9fCEu4T7HQg61-Zi=O{ zU`;lhW)ki+0P`#+9hE|BV-W9gF3FbKb}AMMn>c#1$)vDrzxat^f38hz=0t{6*q;YX zf@?*~m;##yv{?QIjiX2=)$U-|eu<&xS5w+Yg36P9w@VjRMq z|CaY;J9z{gP`FsxO|zBfSAwJuM6yXz!*x^LMoZXkkcYIi4n!<4fZAkp*thk>T-cpA zc1L3FLwY{t?aN8re0Io@hqL&+R-#e&*)h*alOdVa(B<4B;I(AM$c$nzs5F?B*mbx=)uaR)mJc5y8hok|Cel!Ih z%|0WMA$bPZt2V|(6Kd#^Gvj0l*>!}MHy(r3w*I6Z0*l@11~s(PWSY42!wKQajvfru zUXE~~9l!r@h*U?QDE*&l3r>SOVEdE|1Inpb@QwmNLkQMxa0F^>(}aEiS^?*6HU1HR zMXkfhr!-U*JUxP0d(J01uwYfx(d~2~uiE?Qn(KTfSsdGzSDd+mvHb-G_YChl-CPfU z)NUpBTMa^70n0C7Xa}uuNWD%yJVd*DSLPHU>HkRvG{8opgOdqQ(bw zBI1^?AdSa2v#10~5C^fZAfWymCDZ6CRECv&I1X=;gOF9ZUD;a--vqrlijE`s49=i=H9+l3c#?SxTeOd0>V zlCsK=i?%LPgoWIy6qE#E@IZ-fx_CtZT7p0&0;F^&T7|hmR7>f*2qoPf8T>@)kYCgnr``s&ef!99>m(-8g9Gaqk0_Ty?figjCWU6N$pV*AJk<&(S7B(GRoElf?cJhAUkcM9>&>y(&5dFs^|p zP&2LUHaZ%erXS>6!tdq$tuPoiM<1yWA(tK&)co3=*0IGngq*&AXyvl#h4p?jVd2r6 zx0hx*hy>RQ%HC{szn7g?-`oC9+%_b64URSRNFOK8OTOQ&8c? zzM{V4yOv#E?N+k*9$HWi^$;YNKHALBv_n>ThXd#RSLR3 zEp&Oaj)>$aVXjpSi8fK-mv~9?zdSk=+2g4SLKPyx(u<_v|DgI%Djd#LP`HW94xN4f zWuU==JWZLDn))m3%GFV^iio~pD7rU*>i|I+smci4;R7+KR2psnINX8eE?WuJVjorq z!K@0@o%k{8x^BAuQq?CfdBxN3OUj8ih~EECOnP0vsTx`_gVCqP_T_>tc&A--j<=+W z<9dKB3?vIj7U@=z1>&?^6-}+72P<3z78D$RB0QAhkxsC8@8PFzV2-=OhiF2?}#hwq$O~6$$MpG_HRXRLS!-S8sc5;awxnh)xBXJ-YYu4W- z+L0)RNc7Wk!)ZwlU}6ahqniTM3SoI%Iyg5KJsxskJ<>QIvHo5j%(ASiak3-`xmO_M zqpjeTHrDJk=mPw1GAU#mD$S!qE7jt4vaVYrboEh=TgUE46HdBj8C7Ln_K!(!PQ#=c zeq?3aRvHPhVmMX-h0>CT*I@{pya^bf07^r_2qFVsKa?(rN5FPHRpcv#rz%BW=EB#K zGTa%eq=}HiC8V(m);$3uPlf%`QS<22{$wD$$4=dP4;?kayzoGr4Ke*bEl|#ZdPfVx z*?H&%_)A=vROO*IJ;Z+Q^c0Cisn6|R#H%e}DM zh6v}tS9sSyucI;mLCAi8NZ)Du#*#b3CFvheJlGu&AaJ8`P61l(r?2$}9m)gGL_;)q za9bT{FHy>nqF!BuR?#_UF>yJR>-#4K5jlQt#9XkIh6p8y5=5y>R*19>^0jqDHXCtK z8M0PL9nvAiMnnHc5UvHzvx%qeoq|9(!2>+&4R?f{4kThmpsLnz6zAWC^O|nS^8Qi0 zp;K~!CwPH_gd9e^1dfDrkZ)&&Wb?AI#uCdc%g-y>5@D5sJ(c^NB(JmlW$UpsG=>Zv zy&C7eimQUeKy7*OX$-9NdubaUFd#@3QXI{6z{)g72|VN=HLjEgR^_5Y+3;wc@>ZO* zWHZQhKlEfY%$z`dhKaJ_SWNF;2!-eXQk3%-8bjSF8A7^(!jix_f0;$TS{U~{_Pi*E zZ6HGRiYKEY@rZg%ba}3UKnHS#N}z1Qz%|!SbA$&aU|)w^M3weD&p_a^j%?*k93SLbW-8%6x81f36$zJwYA(0VRrk4;?31{-o<8XRv4 z8t9TbMo0(zU$lTB23CN9Fm%qDR~?hA6y{!l>k(>_EIoc#2*WRmJ|j?_jBBAk5WYA? z=>_PGy;I53(>f+9Nk-I;j}4i_igIqbHTcIG)hka6v3VB+WkmwqgD=h=y08epOar$A z37zNB9Zs&jyHNLiKXnQYs~%`Z9I3)e9m&RZLks~QQRHE-=qjH+qFS$8A-Sp~wGs}( zGmBu;(dZ*#=zmnXE-UM!)6jo>^(zCAVjG0Xr-=Wk0x#+W>3VF*T=+cOmtN}|8l54r z0FUB;9OpbvBBhmps2QMW;Lvku%u1MQm6_y0oZEIFKK|jS6UkU#0{H zGu?tOC*-t?@+#%(*PEfDF14R9CYT6WXI9ZqPV2AKqS$7iRz!>)27fGJBZT4hsN`Ut zU|b9uNdwLF=^%N~GOo)%9T0*WJ+feJG;}9H-_D5zSjsGHH*rYV7z=*|bcP)A*eN&SUz z9mG{z6j-Y52`>L`TGy*PU1wu}4}od#+yb5}E1Q^?{iB&`0MNep{~p#q+MgfcX`^L^ zdunC{K-UBM!Vn)O&%x5zno}yj0i+2CNvmkGJ`Zo@bilhKvpy)C%!59w5LyOqM)8pk zUI$(ygib3%R#u_y&vU!%_CAl`L72QpmqVTEZU{O#yH==WdLmkMAi5@yO`bq&_0^x_ z*ez!RvHC+VdBw*xa2Xt7Hb)rBuyfQywLI#w8|ias5^d^kLkDVwH~*J+t_i=pprlce zV-#SGU$XwuSKViOPBmX#f&b{ofs@K?H1v^5ut1_Jq5KwAA*o9Ecxi~aop#JCm<=2H zoL?UGDg#0H017>Ps40iJpi319OM)=<6v~_BL^=W*OS9+*!K`_8i? z{T^ZJ0l`6>haMNriMEKs+z?iMoJv=KZIK4wC0ZTBHNzO zsXM$59ixdzMT54fP*BA_NX+p5+N)%p-tu*`$1U*BT+}2L^g|N-gnQ_+4q}6Y+%)!o zLO{V7FF0C+j<^e&8;lNOW68(cA643;EZXjw#*RK z&yus0U$#QWvrexI0TqxJl++B`{3u_Lq!k<hlYBmIjXd{#ptI%T16=?Z9c@ zX&`lBBy?O4Y{1XFOl_>i7NXvwM4Oj7MAJINtf_9+cilAoG*zXEhli>J7=R&;4yBuZ zjx@Cepnry@i;BcL=<9&~aRrVJfLEhwWjMIVb=a&9NWTJV3!q=W7rwz& z79@b5<)V#P>BllKu%jJRny;0t;4$i8D_@05d;bY@*Wy5m8%6qVhVg^Tu%>7jFb#V< zo-sd-d0+DQrk-#u!BdKg@{zqKzq@MFm}R~(eK4N8Tu#`RNEI;}xw?mlGttTNc^>wA zqL}C9avB4Rn-yHabOl`|SX>Y_5TBIJ1tX*1ND*lrehVK1n@bSyG;@V_BPX?Mv6N^e zI2$8@fgQdhO3&87H|!Z=grCKuw?_$wc@QURgzFx*l|2~;Kn-#56WXHE6bJ7+sL;2)Jf_2&`Yehr$9l^j9VH&^| zS{Ee9ZMXBqq+h>3AMhWqQb8aO_k;Z75*zCvY(zdgR=BwL%}ppM|VjRQ?JsLc#5i@bpST`&4iTTpk+Ha8Ub$lud21Lr2NO+43KcThbLjf)0v zM2A&#koP&lPxyi;+h`#a81v~EK%EB`mdDJDVU1W)5oN)g8TY{B&je+Wl%|1^uPMr1 z1Oc+9wtYa&uyvk5ZNC4{#N(2Ue(yZid23A#gywRSg2-vSW~q2qGQ%74fB%a zhj6G7Zw$0~8CR95WyrDVFL|i~sM`xF&BkK!7$7KeyRYQl+S~&Tsm%tCb=t02MC9C1 za%|-DEIFsyx10|*zMMMqb#3<7MnH0f7Zl0H=`!dFa5HA#YBUKiBJ*iv)j!dKh9j!! zt*4VRre&s8^&0*`5!o4sJ{b*ps`rlGFv}U^g*3mnPqXIy+X-cN62(NWJ&T;>BP|pS zrDcrA1BCY=J9LjL9tHz0I)OvK%j%^v6LXc`Z?48nR8kSGNL^O}>lO2T=E6V3orzgd zQ^*P~04?)N^9+7fFRZA;&cPqmBv_|{fAK9+!13)6G2c$0`9^Sw=TgBnG7*t%`eb_% zcOQEyKosMf04I@ks+6pA5;)m-MPVD*f1{U3tn}Y2I?k1-K#KZqfmYGfvl;>8QySJv za#dAe^}fxGXAI5u3EPzH20y|3r~7V$ukGZj+Z4qnKR{pOX^D-bt&N}^RcY<%smi%c zhwO@ID~)Q(`qd3!L5wBxMdo~dhz+h?Z^hA=n>>M2$k@4#5M1d?M+qemD#{DwYgy@s zFzsp?>b{n@!2qq{{_VIX<#6p2TIH-%Qzq@h3^jFDIYS%n^_(GhPiBqT6&3wKO!A=3 zU~#yXs4Bc4E9VFGi6XW&MPCi6xe4J1NMOv?c^}2i^o+C%JzOXEg2^FVl77^AJdmN@ zGu{uC-3qN2z}y~I?pTpeJDB!f{`iTbX>yc0`l%u#o809ez0fYsu}}a#p7{- zK&NV&oINp!20DoAlQ}Lq+IQG`t1O;d}l2bXG77gv9iJfro;6|$G)UEj1wcj09y zzx|z4@;L(-N%ID&?tA1^a<{oL0Q?jUIdqpZ6#`Q_KaM)v+JlIo_8y9$HNjN)atQ-*5=P4poRWH`&AsV8@1o{XDo<}J`wIs?Ghi~67+@L43WZaEeJS2Eua6d-dk zV%z-(8GcY)W~DR{fb9ZdPD1!KW$7h0ps6bW$hSTy;BugnfoUmf^Y6uewp(j|!)L>c zxF9P|w|<0uEs|LwCCN|1)^L)- z$sq9`9NK~DW|k$_AKTtOU^XS4BR&sEouh~%Pi&-Ixmg94ppMIb<)@tK#GxejDy+C> zxQggKxM9(d)HDDfX;gKXlet{%h5B`eWG%04@yhJ2qp$HAf?Awxp(;w2VkA*WDgxD* z4ZAL@hd+<)wmPj|i^w+Q&dluz!tn}ichXBpERs#Vd)9D~+RNjLt-Y6>Y}3(Nzkkl~l7s&wWQ zNDH#n653%iv033;L9KOe)1kdEnw%E5?O2?ZYIOK(#jW!ouU5Fa|9JL!S`WN}a1VWH zsF0cmdNibJp;krk{=@()HV&o0?&W59*C>+ap%1q`LooiJ3yw&7D?=sx;tDQZ_^BwEm! zZ=tEp;u5d9~ z7=#S5$RAx3DGr(1x5_dXN5%*1WsqXeR%l~OqLIT2V3ZeUsQB9i6n)B5E%q(gG0-{W zK*o}X69C>{W&csz1A>w@Z87tpgdVAXCF{k*1<`?3%5xQz1}~)K#f1+RLyypT;ud#q zoe6?+iYXk$R(L5J{Isd$h0-`5-&gU8x;rLY*!IATROK{0ynFG*wd@{rpm}%@WC5eT zqhEP<9?m75njLrx{`kqhGr%D}0btMjbZRqCJ^%H(2Y&vRh3@Kc!%Brj(blq~ek)yT z#c$d^^!@j8H0pT$FSy2@8*x(fvz7SVi$|E@veL+p>KyKL5!?rRFbhy85m5xAwuk*V zu|-dnQNqf0arxhoDe~$j0p2M+`f?hAbNe=%~xsh#qTv&QEZ8%*ez#DT~ypL*W317`p|R(383LL2#K&`OpTj;6mZ z=7&c0&bchSs?P5E@U-RobCH-$xsYP`DwB9L$xN~+U)&y_%j?<|D$57ww}>wh_pK568SN6W z9X78X09 zTryrxzW0@!1$2!lk#7F_F%hY9Tt>wlJz}AkZ&t6=Ef+yls_E(e-t+N2@!ezMtLp;z zCNtF?v$ki%YX6>n^SwS61lzuzLn4?Rn)yX4nuD#%?9tV@%$rJt(M0#jq;Bf{J!1ly>h27 zX&|Kn46qq4WR@DcEqSk(Swxdv8IWzD4Ml|d9OM@vebnv_h`O?n*q@}@FJ@RGy!B~@_D>Z}h zf!66wz_r`fDV>9vHP%-~hOWsn(o}}?B8JYp4x)^}v`*{x_4-3J>+^BLd280mCe~M6 z$!zFw@{VL&T}QR>}{{@SeGx^+zfnHr#E~%)24E1utv)^ zvt}r(^I6l)1ZTdiVyZ{D`J)vkNzSxTVIK%YIQb>tB+7*z(S^2$Q`9E{m?Z5HF6CbI5z!#s9u zL1k=FZ|ps3Y{_+OIdJSl+}OwDv6cKW<`9@1fQn$Xbd-#JSsMGgHTDhqVjcTpL*>P$ zp5w>)a@#wm*xR6`qc46Yzu3-y@vG*=@75Q8`W)9yQgV+FRil%3pgcf=@_ydxXQBi| z!Li6$A%a3_WYgjCypT2fFDfWx0ZOpELYB+BHOm9}2nZR`WQ(jt^c~GsDPor6>Z0W? z1WFU%Dtrqk(*PP{jiXi+LY6?g8tqOm7wEE7p2((Ee|lcYVzNjT7|POmS;@ewV-as4 zL&oEIMnJ^+0S_mJDt=tjZQQ|0LHi|2m)NOXtEns@aVRof{Vv69K~w}al))%KEKeM| z+qBP3A?mWGNDocj2x^#>cW6CT*tXLpq(k#%y6g(*zjYj+G+DxhYjBvB|6{q(^fnj9 zE!sivNa;PI$53|#pwU+3mq-*tQAAaI1ia6++R0;__uQCfutL`YUgq#Y>Hy7^JEh(T zKVj77mLlkff&dfuFC_r^wgztiIY%mlzjfYL1Y##4Tl0Y%Q=Gv}r)2vDo zcn9y&kNvOWzmAu?2enzs94k$-dpW?6I6W>F1?q{%DBrc+X96B%^6wnCd+E|`Ur zA7+G;-$KgYh7nj#Qr^6E*jvdRNp1kCx6=iXJ~;{c_bU_@Obf^@*|OA*S%>ScJ_@4> z9)@qkhk6_t@m5e4!yETn@Gc#*=&oqAx41QYc`{`^j3paSK2Q`rYo}; zA8Wx%36&pBsS#TOnhAHphvrTmbp}FwjJeE!*Ak6G8n1I3nWpm`8a$cn-~E@b8oEf6^qKXSLLrQgFf3M=QJkj8fcT3bN7vB?4F($aFO({dX~{; ziCT19w4%2l2hvH;1J?f@(GH%Mt8f=D1e>b*)hc<(02$htGvy6H<7ZLu6Q-Ji$3M3> zj0Bc;NK*AEBWKdeeK@EwgxXSaChf~>{Ad46F75U#n0`0y5GLtCyJltsIAX`EMqT{( z-#j&1D?WPZ>k|EYaZa|~tKvdrh{v)bov(3FY^~Mlt==i4$aL+Yn@X>Y$HM0XmkqwW zdh-O5p-%R!B70~U<+(O|QWt%UnuR~*!p#~Xj`}{tQ+^QM>&Z#iS zxM4BH2zauddR|*VhFzeQFs-~Ss2UQUYy>de^SUY)=y$d5>9Yj*qur;|EQV6zt&lS6 zv&#jjPnP06UseSCJDvc0xZJl61I&pNvky6+UxtFQi*KFe9%xgsLKSWZVG0*c3zu%H z+xydCVUky9bD*%~1TcWR)wi53u-@r^FfBX0ld)pdWwdAhb-&AHD!m;osDq^Rzq`eT zoVG;1>GiAPwWz*=Jf*rfzkiK~fK@|QAK%rOyA;7}7|RVw%4xCMdUEF$F333A_sQE? z?1OwW#dQT4ePh3yr?kJ^=P)T$Rw9$pc~3x)Oy5l~IMaJQXik@J${&sM*f6d5cA$~I z&n~cv>;KRhDP*L%&vE5N5bKq`$&Y_XyZ8-I2RyvJk;(+m{1cO`IID4n#aS$WK=^P! zx{&WJ5Tf&VTA<>!uz#gaY@Hnl;4szdAg3q4?JWBO9&Y-@(bqj#%1FUhkI6cnPF4fW zn-!(R4}P0}cCZd?C=H%_wplluboA-BEbv;(OBCpAzD73gi|5362eYUkU4SY%^#G?< z{PLz+`jutH|0%3ETcaRvd=Bd7q1_mTfAg@K!7>SuCp6!@kVQ{R&3&QZuD{>Iq58~i zuzJOY*`YXN^~IF2w_4M4J;Mrj&&}dj+IP`Ek%pem046kv@_j8Pkl3v*bxQGt16|_j zbW#P_Zh4cj9`Uy6o4_W@Q9u5TNphF^2Dv%gGbT7W;fK*5swNd=FHF5WfV@rla;ssL zS^H8u#K*9GPTPpqRtRE?Cv|=~`)29eXt|?e!-+dZz}%~-#%)GjK>B*Ymjd9|x@}K3Z-w z2@xOPP!>~6pwWefT%;kteXsWNH;obL;ePw-sp}ogIQ8v3I#Q4yNQKq@FwqVyVRF)BG)S{^1f4`84I6k)GF9t%Mhbci@Q5taY!njU`e!h*uCZ@R6>Sg8GCgP)n|5fD089KW* zGn5Wi;Z$8_R39e;is(C$_)f!&3i;Q5aLP93nEA!O!1J_5vry8DXne2MBpd>DPlvATnI_Iylx>cOnLW(y!SwhQRWc2SX<%T6 zQ}L3y=b*LR^|;)Z&u1aKV&0r}>ddu7c>&EzCk$I-NER9%7P3rN9QAaBYYhfQmY@*( zLAt+;B%LguLB-+Hp~GC|LKjt{780=Dd6bX$t4D$0Q8P+h~1=|vIrT2Tu*C*GNhK1Ef zyY`*Aamq`5<7Q)h+m;5{3t&^lrvnRXnp!?=t=c&U8sI|etI}s!HQ|lZY8L8-OL+$bXYJ*59!eMu_MStaK8b{^h{pHg6;d=qBbW6znkdr>4^#C4 zz=>*2J#7gym|bg@a?+b{vJknw>Y3MO&?DbMr)*!KjUW~Ls-zhX>kp!HzF;l0G$7rS z5fhJdN#_o)NWr>f_EK~}(tjy8SF2Nh?MA7-agmrOFY}GXeSd=rR<;dM-)eP4+EP>B z2{ekwo&DjjnaaXjV!iZKdKH6Rh@p3me?O^$iKXsgVF8b7sKjBCI?Nj{W%=rrh+m5( z%GSF#wXalxvr!7MBzCNphR+sE{-uX8-}Z(16wJt_EeYrKZ!O6aaU>~fa#X7c$5oFOL{fu`{r9 zao?*IF?$h%C{pX=;H~2y*}@T8FeE=2mV8EaMk^gPQgR}4N~!aPk)uf*m5AzdR~mSA zSmQ5ejt+=BHfJ9%~6!UZulJ z)yYDLtGg+5tBxkAkL^PexS)eS2xc$Gt0Dy)ZcN1BcjJ|4Mams$K};$}==M0F&5kJk zi8h`jPZe}B8YQZLp-SFE1dH`lERA#127Tbjw0d=+j&qW$(V<%+-Or^YE@h3Yq=njF zmJhRK05m)ao+HD# zofULgoKDT2cs018ujB<|oH(|b|9Lh8vD6{u`}BwVZ)qe4pVlP5Df{YBqNvh}E!}r& zQO14mC8Bgk+dQAkXw)D!M{CZlOK-{b%(q{0?F~#k=q?!r$yyPUB){367*HHh3MCYU`Sdqz02sqi%FRN8m zTZ%I-GJ=&WV*+3HKn0S?PVcb*3)CY#$AEqEZ)m>?k}a^rf?0CBoaEXt2c+HqMg(CL z1E}R~nWY?zj@GXoar~!5mms|K+?qIit9go2yGqdKK>Fs%#&y&WUbNuXm z#>Y)8ZBSO%pP#K$vsw^ZXulh|c3WPug-feJ?`yV7nxj~qtqL|g(7YV=tf78it#at5 z4V|*2L)W)!jSBWeOPtUJeWnZq?!K?i=Y>%~5uKzbKIIu6_p2n4VJHxPQ3u$zOKs)8 zdfKD-gNU>`?Y|pBYBgZn!I#42etp6nJ3%)S?gszbW}z-O=*MYc3VAhqb=U26&!21` zq1xqG+o2S#YT(clHcO7Q-+Gqub_5U5G;`*syPr2y=w15>n>BPgupx^iV3j_``Fy^(qI_L!$3 z6@)qNy#I$Q3dMdqa<|@KI8cdzdi3Z&i)-EEJz{B1$U?F=VtdXS6K) zOJUmgHbq`jQ?d4u&Z+qa(F??rIPA<&f6IGkdiuv!RfoONI$LbzFj!u{9$Eq-)meV&o4tSdw*;%VLSq3aS!OAl+iQ1Z%8!iBR8Q{B~xZ$)HAS zF76j;IxG3A{O%-X%EM&=j#+nx0YhsvrbYW?|7gE$x#B`IRj`9ExCl*1gWe1T!3QiS z9E1&K-=)VfD*@mdi6~O@ZZzVwvAQK{rId-amche(NT34zvlas4PE9Y^jeAw$rD$iG z7zOvf!3L%!%zXILt~1vd#Qmc{5})dq3}SJLZsc|r73yZd*5=)lQytquVD)`NdT&w* zGR$am)7<{W1a`WRB|?UJsDIzP9jLt?lV3Be@v9e&5qQrMl|Uv(g}SKiaYM%@N>f!*@s@qFN}9}b<0vLk+brCi?H$j^d?KZ{iyiFlEHO=a>5l`QAcTZt72Tw;XkA|*zk2M1vAX21Ra z&@SE5*@>b~iFs|wW&3^!mtovi*WcxW2nQqlx3DVLw1l6MQ(vSfk03nB`-N$#Pn} z^yIOyxaU!y2GJf|Lq$2Kh%D`|iie)4cy5(kjmx*E_BwBJEek(vYxhk#Ik|hM!}9%f zjY)q+S>b`8JXZdCqH-QvO0Tth*_F^zcJpdT#szN(+>=1^he~vkP>BI=2)uON4>yNX z_&@~{PcjLbSySumMv_^qU49EMOGpoOp`g*B>DEsgQyS>DdFZGa zVcqQH@}MIG%XQd6_w{SMK3kS^rVJ~B?3;~5o-`7vQ*+^5eTG80#R{i{ymbHC?UuCj zE`RIQ+dz7V=8K~PZYNgeuDhu!R}FwFl%tyZeQACy9#5*()=M7fB9+UPm5^C??5C)g zb}En4$@&Uf*UA{!Kt<*}K~jh~Gvy4!Av}4Lj7wq9JDNB?Z*6g|aS_=MnIoa+MFbPv zBNIX8_5ipkBw0$m zlZ{u%u>8Wi!9ySt-Klxb>AZST$?l9K;R2uk5*=HGMA9rxY$)y`Xes5}bd&fuUo;v(7_=+Qd)`(%CyZr`Nk*X$akKO^a^P@4gvj6WYbK zUdWgUK6GrHB3Cp>r1A)a?ltgPkw5Dq$CQg)X;^@U$xDuoIPFuH`D~*<>g_}+htS{L zPnqHhCtyVeVQ_4U*h|br4dc_p(yZixMQ@8=3VnWWM&!uWZKntZ(^jI9;SnR2s|21u z?Q4y?n+KIAxpwBU=0M5no#GO-jZhy;7a7VFyRiV z9-qBcq-)u`s^n&$&AY`Xt`MCXmV0gt$$e) z#P!%cBGMUW(S)j2D_0h9XZ^M6wRxQ?F{%zfAvrQ2M_%dchemr?T)91b>uZ+NHQPkw zGl5<5O83AQ+z7!OQ{x?CCAWL3!q8AyZE=GVv)sZfW0vm0h&Y-n)OxoUuqn*x{4Snu^cn zj3@Niqbq0)6ByayD0p;c7$RJ>qng8{BT!j&xPDKF37(Bzecrk z#_Dp_ z>89PqTYrvvoqvvw`$9_^qUIkx$9cB(?^p11uJ{^|{je=ezQb(Sa*Fpe2lHi+NLt6% zN&l>M42(BU_~p`|%0{9)y6k2=Qp8%jFP~+}O&zsrz}IVEy8HU~-S^1>-!EP?g&n@M zdo%CQsrvUFB4+7{I`j9FRxg~QrJZGoZBZx^xwK=$6_W8(J54WbLmydwcEHre{k#FX* zU#NT?J(xOg7i*V8!rj^2n`&TQ&Gn^vCjF#gE{DJqy&(ZV9sb*~b`FX8$(rmGEPe9r z@^GoiwG1IIcA^DlZMc3blGZx(z4!xRfu&;dJB{yOwp_1O(Sz_d^-FKP{4%qte}F)A z+!wmC8fj}{)$f~PTO$7W@y?XXm6v~JUZ48=q`quK(X~-vz&D4*SsR^dw8}^1|1;Sw zX=}fiyY|gvX~dk>7cg=LKD}?|n9T>h;NY<5zXTGe|NMOixyl#(mmXL!l3{;Ly1(;| z%MIygu@l2)?x=ldsNXZ!T)urjt$sp0f;}{qawniKa_LIk(L6DN)csqPBO+Hn-TC*a z<;k@dlAk`-Pvt;+6N=5Yhv`%OPxtlVDQ!njIOvCl2GE{OMMOJeh!s4iUJtPg`eeO_ z|GryX+p@cM_wrXFOsM_|!aT8i^)1)QBw613;?U0XKuxSz9_vo-%-}Vqw7toG(&od) zEbrF&t;uVDU+?~Xe~lj_*w&3EO!0}SRALfBbi!$K8CQVS$j8mjN>gcI$XjyKg6lp@?vXR zUX@jftaBJ;{FjcBf}(ytx!h)%mnG+^CD!-he<7YNXU6N?9v4P>{daa@py1ezC_9%Uq`Uz>Ld4`d{TDt+{YJ{uLlYb z^cxtOR(iL5*x(Z(Bb%u&Z3dF;{0AAt-~$RUX=(#Ru`Oj5}unQYR@ zC!vf|$|rOx$M%*FTo5`%rVI<)66r`OjFG@*=*CzH)oQ8hdsJOh>8mK zkZ-mMu*ssSgR)5BfS-6cq=|y&90Hm>DoBuyQ-Ht*&Pge)^b6dsiRz#xyh`Cd*J{|} z8Vg4CN>e)gxuL3_+W4rTCa$^0t4?<#D5)DhtyI@t$K=5u003yB0)r}m0)QyCkWGgF z3Uavth%BO24f;X}XtS7LSc2}X0a|RbLUd7OOyv*)BS0uO+qFTy}+TPx_=>k4=XtL8qjff^%^c2DlBv002%*wp;k& zeOwuXP~amdRX?N1r646_1*w88b|3aq0NOYV14-#-JF)qU6RHtvczagc@)}Dus$d7UV|EUM9pNVaeT4;BOi2ryu7tbwinigaae1i`>Y zC@6z3WB~vI0a^{<7d(O}1%Sqi!mMP~gy4Ckiy^e*9a&^NDx?D<1w6!6EZ{>WbS6(c zFytvp(x?dlARPkn&LG)V0nJ6N28ltyb~b1nDEwsz#v%_D5b!ud9x@#Om?EOE(F7<+ z!7EU}T2}z5krZrUP?4)2*bLdV4km;Oo#`SA@&YYRK*1WlL5OMqh(~2ElS9U%!?d2I z!xdUXDyivRb;ZBgWt~gsD)fU=@feC0VR_&+?HaY@? z2{gqxkORUN4$(UV0DwHj0l*eo`c9ZaL3Syj-8C3W2UrqIV@ZA9>)iQHck=U;G5~_< z4zf0{66AVVBM34>8dtdjXr!P7Ru-h9yIfGDG1pj$954s~M-5Ut1c5>>vbsil(&4Bk zDM$tIIhemCRwlb67ZuvDg;i0Z9Z~SdK}r~fTw%nDZDdm6b2zK%sp%9BTQX!vE0pKwIp}g%(ypq*W$}0t+S=w*X z$r5w<#UN@WRw?l+ktj$Mw&gXiaz;8B9zad66rqA`9eJlLG^%EQy2{6f1&taEVIUZQ z)oqWOjv-KC2zV)ptv(j7Q)HnB3)BjDqQHsn+-YYLD_=U4fXf$PN>q2Y?BD?z}zrF=kc)>6rRn3937x>)D*BFs!)!a)k7?v0a-bf38uvx)Vn5 zwGzT!gbH66EkeYoMwu*GB^`KY16M+Y{7o|3^|tqg*gY8HIyN&kV8NGFQa&Hvo8Sc( zkP=Z0vTLw_$C3$OOQ^7iBN&|G6<^O0gw_Ob;%qbFhPcH+9`fkqYY1RFx5!bRa+R-~ zQ%S;)v=y+t#6&{UHAIe!M?750029_P2aNs From 633c732e99fed78a6c3149dea7184a933b7684fd Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 5 Feb 2025 13:02:24 -0600 Subject: [PATCH 11/32] Reorder machine subpages; Machine Overview always first Then generally followed by Getting Started Then Known Issues and/or Timeline and/or Tips --- mkdocs.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 3e3f81a57..3468fead7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -170,11 +170,11 @@ nav: - Machines: - Aurora: - - Getting Started: aurora/getting-started-on-aurora.md - - Aurora Programming Environment: aurora/aurora-pe.md - - Early User Notes and Known Issues: aurora/known-issues.md - Machine Overview: aurora/machine-overview.md - Node Performance Overview: aurora/node-performance-overview/node-performance-overview.md + - Getting Started: aurora/getting-started-on-aurora.md + - Early User Notes and Known Issues: aurora/known-issues.md + - Aurora Programming Environment: aurora/aurora-pe.md - Compiling and Linking: - Compiling and Linking Overview: aurora/compiling-and-linking/compiling-and-linking-overview.md - Programming Models: aurora/compiling-and-linking/aurora-programming-models.md @@ -304,11 +304,11 @@ nav: #- ParaView (Launch from Client): crux/visualization/paraview.md - Polaris: + - Machine Overview: polaris/machine-overview.md - Getting Started: polaris/getting-started.md + - Known Issues: polaris/known-issues.md - System Updates: polaris/system-updates.md - Contacting Support and Software Requests: polaris/contacting-support.md - - Known Issues: polaris/known-issues.md - - Machine Overview: polaris/machine-overview.md - Compiling and Linking: - Compiling and Linking Overview: polaris/compiling-and-linking/compiling-and-linking-overview.md - Programming Models: polaris/compiling-and-linking/polaris-programming-models.md From 27e6e947d0d28b656bde623daa632645962e1464 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 5 Feb 2025 13:06:26 -0600 Subject: [PATCH 12/32] Post-AT clarification --- docs/aurora/data-management/moving_data_to_aurora/globus.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/aurora/data-management/moving_data_to_aurora/globus.md b/docs/aurora/data-management/moving_data_to_aurora/globus.md index 8756d4d7e..7ffd38a3f 100644 --- a/docs/aurora/data-management/moving_data_to_aurora/globus.md +++ b/docs/aurora/data-management/moving_data_to_aurora/globus.md @@ -1,6 +1,7 @@ # Transferring Files through Globus +For transfers to/from [Flare](../lustre/flare.md), you may use the Globus collection `alcf#dtn_flare`. -Currently, only Globus Personal is supported on Aurora. Perform the following steps to transfer data to/from the Aurora login nodes. +Currently, for transfers to/from Aurora `/home`, only Globus Connect Personal is supported. Perform the following steps to transfer data to/from there: 1. On a fresh connection to the login nodes, ensure no proxies are being set (which may require commenting out the proxy settings in the `~/.bashrc` or `~/.bash_profile` files), and execute: From 9ce74f61c7920c25c483b959797f8ebc2e86015f Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 5 Feb 2025 13:15:25 -0600 Subject: [PATCH 13/32] Fix broken links from hardware-overview/ subdir removal --- docs/aurora/getting-started-on-aurora.md | 2 +- docs/aurora/machine-overview.md | 4 ++-- .../compiling-and-linking/compiling-and-linking-overview.md | 4 ++-- docs/crux/getting-started.md | 4 ++-- docs/polaris/getting-started.md | 4 ++-- docs/polaris/machine-overview.md | 2 +- .../compiling-and-linking/compiling-and-linking-overview.md | 4 ++-- docs/sophia/getting-started.md | 4 ++-- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/aurora/getting-started-on-aurora.md b/docs/aurora/getting-started-on-aurora.md index 94d60e267..9ef398461 100644 --- a/docs/aurora/getting-started-on-aurora.md +++ b/docs/aurora/getting-started-on-aurora.md @@ -10,7 +10,7 @@ Then, type in the password from your CRYPTOCard/MobilePASS+ token. ## Hardware Overview -An overview of the Aurora system, including details on the compute node architecture, is available on the [Machine Overview](./hardware-overview/machine-overview.md) page. +An overview of the Aurora system, including details on the compute node architecture, is available on the [Machine Overview](./machine-overview.md) page. ## Compiling Applications diff --git a/docs/aurora/machine-overview.md b/docs/aurora/machine-overview.md index 938aab3d5..5e9e5afd3 100644 --- a/docs/aurora/machine-overview.md +++ b/docs/aurora/machine-overview.md @@ -2,7 +2,7 @@ Aurora is a 10,624-node HPE Cray-Ex based system. It has 166 racks with 21,248 CPUs and 63,744 GPUs. Each node consists of 2 Intel Xeon CPU Max Series (codename Sapphire Rapids or SPR) with on-package HBM and 6 Intel Data Center GPU Max Series (codename Ponte Vecchio or PVC). Each Xeon CPU has 52 physical cores supporting 2 hardware threads per core and 64 GB of HBM. Each CPU socket has 512 GB of DDR5 memory. The GPUs are connected all-to-all with Intel X^e^ Link interfaces. Each node has 8 HPE Slingshot-11 NICs, and the system is connected in a Dragonfly topology. The GPUs may send messages directly to the NIC via PCIe, without the need to copy into CPU memory. -![Aurora Node Diagram](../images/aurora_node_dataflow.png) +![Aurora Node Diagram](../aurora_node_dataflow.png) /// caption Figure 1: Summary of the compute, memory, and communication hardware contained within a single Aurora node. @@ -34,4 +34,4 @@ The Intel Data Center GPU Max Series is based on X^e^ Core. Each X^e^ core consi | L1 cache | | | 128 KiB | | Last Level cache | a.k.a. RAMBO cache | | 384 MiB per GPU | -See [Aurora Overview](https://www.alcf.anl.gov/sites/default/files/2024-11/Overview-of-Aurora-Oct-2024.pdf) for more information. \ No newline at end of file +See [Aurora Overview](https://www.alcf.anl.gov/sites/default/files/2024-11/Overview-of-Aurora-Oct-2024.pdf) for more information. diff --git a/docs/crux/compiling-and-linking/compiling-and-linking-overview.md b/docs/crux/compiling-and-linking/compiling-and-linking-overview.md index 38676dbcd..0d1c9d3d3 100644 --- a/docs/crux/compiling-and-linking/compiling-and-linking-overview.md +++ b/docs/crux/compiling-and-linking/compiling-and-linking-overview.md @@ -1,7 +1,7 @@ # Compiling and Linking on Crux ## Overview -Crux has AMD processors on the login nodes (crux-login-01,02) and AMD processors on the compute nodes (see [Machine Overview](../hardware-overview/machine-overview.md) page). The login nodes can be used to compile software, create containers, and launch jobs. For larger, parallel builds, it will be beneficial to compile those directly on the compute nodes. +Crux has AMD processors on the login nodes (crux-login-01,02) and AMD processors on the compute nodes (see [Machine Overview](../machine-overview.md) page). The login nodes can be used to compile software, create containers, and launch jobs. For larger, parallel builds, it will be beneficial to compile those directly on the compute nodes. To launch an interactive job and acquire a compute node for compiling, use: @@ -41,4 +41,4 @@ To load new modules, use: ```bash module load -``` \ No newline at end of file +``` diff --git a/docs/crux/getting-started.md b/docs/crux/getting-started.md index a4ba020dd..a946f5f51 100644 --- a/docs/crux/getting-started.md +++ b/docs/crux/getting-started.md @@ -10,7 +10,7 @@ Then, type in the password from your CRYPTOCard/MobilePASS+ token. Once logged i ## Hardware Overview -An overview of the Crux system, including details on the compute node architecture, is available on the [Machine Overview](./hardware-overview/machine-overview.md) page. +An overview of the Crux system, including details on the compute node architecture, is available on the [Machine Overview](./machine-overview.md) page. ## Compiling Applications @@ -73,4 +73,4 @@ export ftp_proxy="http://proxy.alcf.anl.gov:3128" Please direct all questions, requests, and feedback to [support@alcf.anl.gov](mailto:support@alcf.anl.gov). --- ---- \ No newline at end of file +--- diff --git a/docs/polaris/getting-started.md b/docs/polaris/getting-started.md index 9eaa3b26d..582e2fa7a 100644 --- a/docs/polaris/getting-started.md +++ b/docs/polaris/getting-started.md @@ -10,7 +10,7 @@ Then, type in the password from your CRYPTOCard/MobilePASS+ token. ## Hardware Overview -An overview of the Polaris system, including details on the compute node architecture, is available on the [Machine Overview](./hardware-overview/machine-overview.md) page. +An overview of the Polaris system, including details on the compute node architecture, is available on the [Machine Overview](./machine-overview.md) page. ## Compiling Applications @@ -52,4 +52,4 @@ export no_proxy="admin,polaris-adminvm-01,localhost,*.cm.polaris.alcf.anl.gov,po ## Getting Assistance -Please direct all questions, requests, and feedback to [support@alcf.anl.gov](mailto:support@alcf.anl.gov). \ No newline at end of file +Please direct all questions, requests, and feedback to [support@alcf.anl.gov](mailto:support@alcf.anl.gov). diff --git a/docs/polaris/machine-overview.md b/docs/polaris/machine-overview.md index b760afcc0..ccc2648b4 100644 --- a/docs/polaris/machine-overview.md +++ b/docs/polaris/machine-overview.md @@ -72,4 +72,4 @@ Note 3: If your build requires the physical presence of a GPU, you will need to There are 50 gateway nodes. These nodes are not user-accessible but are used transparently for access to the storage systems. Each node has a single 200 Gbps HDR IB card for access to the storage area network. This gives a theoretical peak bandwidth of 1,250 GB/s, which is approximately the aggregate bandwidth of the global file systems (1,300 GB/s). ## Storage -Polaris has access to the ALCF global file systems. Details on storage can be found [here](../../data-management/filesystem-and-storage/data-storage.md). +Polaris has access to the ALCF global file systems. Details on storage can be found [here](../data-management/filesystem-and-storage/data-storage.md). diff --git a/docs/sophia/compiling-and-linking/compiling-and-linking-overview.md b/docs/sophia/compiling-and-linking/compiling-and-linking-overview.md index 551714a1b..d301531f3 100644 --- a/docs/sophia/compiling-and-linking/compiling-and-linking-overview.md +++ b/docs/sophia/compiling-and-linking/compiling-and-linking-overview.md @@ -1,7 +1,7 @@ # Compiling and Linking on Sophia ## Overview -Sophia has AMD processors on the login nodes (`sophia-login-01,02`) and AMD processors and NVIDIA A100 GPUs on the compute nodes (see [Machine Overview](../hardware-overview/machine-overview.md) page). The login nodes can be used to create containers and launch jobs. +Sophia has AMD processors on the login nodes (`sophia-login-01,02`) and AMD processors and NVIDIA A100 GPUs on the compute nodes (see [Machine Overview](../machine-overview.md) page). The login nodes can be used to create containers and launch jobs. !!! warning inline end "Must compile on a compute node" @@ -76,4 +76,4 @@ elif [ -f /etc/bash.bashrc ] then . /etc/bash.bashrc fi -``` \ No newline at end of file +``` diff --git a/docs/sophia/getting-started.md b/docs/sophia/getting-started.md index 700c189f0..4c5aecf7c 100644 --- a/docs/sophia/getting-started.md +++ b/docs/sophia/getting-started.md @@ -10,7 +10,7 @@ Then, type in the password from your CRYPTOCard/MobilePASS+ token. Once logged i ## Hardware Overview -An overview of the Sophia system, including details on the compute node architecture, is available on the [Machine Overview](./hardware-overview/machine-overview.md) page. +An overview of the Sophia system, including details on the compute node architecture, is available on the [Machine Overview](./machine-overview.md) page. ## Compiling Applications @@ -53,4 +53,4 @@ export ftp_proxy="http://proxy.alcf.anl.gov:3128" Please direct all questions, requests, and feedback to [support@alcf.anl.gov](mailto:support@alcf.anl.gov). ---- \ No newline at end of file +--- From 0b6dd7f2178e8bf32bc6c0a8e27a93b7364988d9 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 5 Feb 2025 13:15:52 -0600 Subject: [PATCH 14/32] Revert toc.integrate --- mkdocs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 3468fead7..5a6705170 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -46,13 +46,13 @@ theme: - navigation.indexes - navigation.path # - navigation.prune - #- navigation.tabs + #- navigation.tabs # for non-mobile browsers, move top-level sections from left nav sidebar to top under header - navigation.top - navigation.tracking - navigation.sections - tabs - toc.follow - - toc.integrate + #- toc.integrate # move right-side intra-page TOC within left nav sidebar - search.highlight - search.suggest From 21452da4fa900522b383dd8a645e714c188c9c11 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 5 Feb 2025 13:19:45 -0600 Subject: [PATCH 15/32] One more broken link --- docs/aurora/machine-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/aurora/machine-overview.md b/docs/aurora/machine-overview.md index 5e9e5afd3..f758380dd 100644 --- a/docs/aurora/machine-overview.md +++ b/docs/aurora/machine-overview.md @@ -2,7 +2,7 @@ Aurora is a 10,624-node HPE Cray-Ex based system. It has 166 racks with 21,248 CPUs and 63,744 GPUs. Each node consists of 2 Intel Xeon CPU Max Series (codename Sapphire Rapids or SPR) with on-package HBM and 6 Intel Data Center GPU Max Series (codename Ponte Vecchio or PVC). Each Xeon CPU has 52 physical cores supporting 2 hardware threads per core and 64 GB of HBM. Each CPU socket has 512 GB of DDR5 memory. The GPUs are connected all-to-all with Intel X^e^ Link interfaces. Each node has 8 HPE Slingshot-11 NICs, and the system is connected in a Dragonfly topology. The GPUs may send messages directly to the NIC via PCIe, without the need to copy into CPU memory. -![Aurora Node Diagram](../aurora_node_dataflow.png) +![Aurora Node Diagram](./images/aurora_node_dataflow.png) /// caption Figure 1: Summary of the compute, memory, and communication hardware contained within a single Aurora node. From bbb93b84eb4299275d821cbf65662ae3c96316bd Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 5 Feb 2025 13:49:54 -0600 Subject: [PATCH 16/32] Notes on placeholders --- mkdocs.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 5a6705170..a0307e874 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -423,12 +423,12 @@ not_in_nav: | TODO.md notes.md # TODO: complete or remove Aurora placeholder pages - llvm-compilers-aurora.md - gnu-compilers-aurora.md - cce-compilers-aurora.md + aurora/compiling-and-linking/llvm-compilers-aurora.md + aurora/compiling-and-linking/gnu-compilers-aurora.md + aurora/compiling-and-linking/cce-compilers-aurora.md aurora/applications-and-libraries/libraries/math-libraries.md aurora/applications-and-libraries/libraries/mkl.md aurora/applications-and-libraries/libraries/mpi.md + # KGF: nothing in aurora/applications-and-libraries/applications/ ! aurora/performance-tools/performance-overview.md aurora/visualization/paraview.md - aurora/workflows/balsam.md From 1ff45783a959d9c73695d5f44ff4c22060941912 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 5 Feb 2025 14:02:17 -0600 Subject: [PATCH 17/32] Bump versions --- requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index 345d24b77..cf4ef4add 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ -mkdocs-material +mkdocs-material>=9.6.0 mkdocs>=1.5.0 -mkdocs-video +mkdocs-video>=1.6.1 mkdocs-include-markdown-plugin -mkdocs-codeinclude-plugin>=0.2.1 +mkdocs-codeinclude-plugin>=0.2.1 # TODO: remove this single example in favor of snippets pymdown-extensions>=10.12 mkdocs-get-deps #mkdocs-git-authors-plugin From 632fcc0232d51243d83664eb0648a37dc698e27a Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 5 Feb 2025 14:02:56 -0600 Subject: [PATCH 18/32] typo --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index cf4ef4add..559bad487 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ mkdocs-material>=9.6.0 -mkdocs>=1.5.0 -mkdocs-video>=1.6.1 +mkdocs>=1.6.1 +mkdocs-video mkdocs-include-markdown-plugin mkdocs-codeinclude-plugin>=0.2.1 # TODO: remove this single example in favor of snippets pymdown-extensions>=10.12 From 8f17e24ac2d08ff4a64a63ce38ef2840bb408317 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 12 Feb 2025 12:36:10 -0600 Subject: [PATCH 19/32] Add FB, YouTube links --- mkdocs.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 2bf68e5ca..275becfba 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -111,11 +111,15 @@ validation: extra: homepage: 'https://docs.alcf.anl.gov' - social: + social: # placed in overridden footer - icon: 'fontawesome/brands/github-alt' link: 'https://github.com/argonne-lcf/user-guides' + - icon: 'fontawesome/brands/youtube' + link: 'https://www.youtube.com/c/argonneleadershipcomputingfacility' - icon: 'fontawesome/brands/x-twitter' link: 'https://x.com/argonne_lcf' + - icon: 'fontawesome/brands/facebook' + link: 'https://www.facebook.com/argonne.lcf/' analytics: provider: google property: G-4M48E2L33R From eae0631b92f25199912420a13ce861752c941bb3 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 12 Feb 2025 12:40:41 -0600 Subject: [PATCH 20/32] Cleanup libEnsemble --- docs/aurora/workflows/libensemble.md | 33 ++++++++++++++-------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/docs/aurora/workflows/libensemble.md b/docs/aurora/workflows/libensemble.md index c82fc08a7..ec9a80f15 100644 --- a/docs/aurora/workflows/libensemble.md +++ b/docs/aurora/workflows/libensemble.md @@ -12,7 +12,7 @@ libEnsemble can be used in a consistent manner on laptops, clusters, and superco To obtain Python and create a virtual environment: -```bash +```bash linenums="1" module load frameworks python -m venv /path/to-venv --system-site-packages . /path/to-venv/bin/activate @@ -20,9 +20,9 @@ python -m venv /path/to-venv --system-site-packages where `/path/to-venv` can be anywhere you have write access. For future sessions, just load the frameworks module and run the activate line. -To obtain libEnsemble:: +To obtain libEnsemble, execute: -```bash +```bash linenums="1" pip install libensemble ``` @@ -35,46 +35,46 @@ To run the [forces_gpu](https://libensemble.readthedocs.io/en/main/tutorials/for To obtain the example, you can clone the `libEnsemble` repository--- although only the `forces` sub-directory is needed: -```bash +```bash linenums="1" git clone https://github.com/Libensemble/libensemble cd libensemble/libensemble/tests/scaling_tests/forces/forces_app ``` To compile `forces` (a C application with OpenMP target): -```bash +```bash linenums="1" mpicc -DGPU -O3 -fiopenmp -fopenmp-targets=spir64 -o forces.x forces.c ``` Now go to the `forces_gpu` directory: -```bash +```bash linenums="1" cd ../forces_gpu ``` To use all available GPUs, open `run_libe_forces.py` and adjust the exit criteria to perform more simulations. The following will run two simulations per worker: -```python +```python linenums="1" # Instruct libEnsemble to exit after this many simulations ensemble.exit_criteria = ExitCriteria(sim_max=nsim_workers*2) ``` Now grab an interactive session on two nodes (or use the batch script at `../submission_scripts/submit_pbs_aurora.sh`): -```bash +```bash linenums="1" qsub -A -l select=2 -l walltime=15:00 -lfilesystems=home:flare -q debug -I ``` Once in the interactive session, you may need to reactivate your virtual environment: -```bash +```bash linenums="1" cd $PBS_O_WORKDIR . /path/to-venv/bin/activate ``` Then, run: -```bash +```bash linenums="1" python run_libe_forces.py -n 13 ``` @@ -84,19 +84,19 @@ Looking at `libE_stats.txt` will provide a summary of the runs. Try running -```bash +```bash linenums="1" ./cleanup.sh python run_libe_forces.py -n 7 ``` -And you will see it runs with two cores (mpi ranks) and two GPUs are used per worker. +And you will see it runs with two cores (MPI ranks) and two GPUs are used per worker. ## Using Tiles as GPUs To treat each tile as its own GPU, add the `use_tiles_as_gpus=True` option to the `libE_specs` block in `run_libe_forces.py`: -```python +```python linenums="1" ensemble.libE_specs = LibeSpecs( num_resource_sets=nsim_workers, sim_dirs_make=True, @@ -106,7 +106,7 @@ ensemble.libE_specs = LibeSpecs( Now, rerun with twice the workers: -```bash +```bash linenums="1" python run_libe_forces.py -n 25 ``` @@ -122,7 +122,7 @@ number of workers can then be set to the number of simulation workers. Change the `libE_specs` in **run_libe_forces.py** as follows: -```python +```python linenums="1" nsim_workers = ensemble.nworkers # Persistent gen does not need resources @@ -132,7 +132,7 @@ ensemble.libE_specs = LibeSpecs( then the first run we did will use 12 instead of 13 workers: -```bash +```bash linenums="1" python run_libe_forces.py -n 12 ``` @@ -141,6 +141,7 @@ python run_libe_forces.py -n 12 A [video demonstration](https://youtu.be/H2fmbZ6DnVc) of the `forces_gpu` example on *Frontier* is available. The workflow is identical when running on *Aurora*, except for different compiler options and numbers of workers due to differing GPU counts per node. More details: + - [libEnsemble Documentation](https://libensemble.readthedocs.io) - [libEnsemble GitHub page](https://github.com/Libensemble/libensemble) - [libEnsemble Documentation Aurora page](https://libensemble.readthedocs.io/en/main/platforms/aurora.html) From e7f21ed82759c0dcbad74b3787411c05227f0a10 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 12 Feb 2025 14:31:46 -0600 Subject: [PATCH 21/32] Remove leftover overrides --- overrides/z_old/main.html | 1 - overrides/z_old/partials/header.html | 105 --------------------------- overrides/z_old/partials/logo.html | 24 ------ 3 files changed, 130 deletions(-) delete mode 100644 overrides/z_old/main.html delete mode 100644 overrides/z_old/partials/header.html delete mode 100644 overrides/z_old/partials/logo.html diff --git a/overrides/z_old/main.html b/overrides/z_old/main.html deleted file mode 100644 index 94d9808cc..000000000 --- a/overrides/z_old/main.html +++ /dev/null @@ -1 +0,0 @@ -{% extends "base.html" %} diff --git a/overrides/z_old/partials/header.html b/overrides/z_old/partials/header.html deleted file mode 100644 index e3f0f1cb4..000000000 --- a/overrides/z_old/partials/header.html +++ /dev/null @@ -1,105 +0,0 @@ - - - -{% set site_url = config.site_url | default(nav.homepage.url, true) | url %} -{% if not config.use_directory_urls and site_url[0] == site_url[-1] == "." %} - {% set site_url = site_url ~ "/index.html" %} -{% endif %} - - -
- - - -
diff --git a/overrides/z_old/partials/logo.html b/overrides/z_old/partials/logo.html deleted file mode 100644 index be81a66f0..000000000 --- a/overrides/z_old/partials/logo.html +++ /dev/null @@ -1,24 +0,0 @@ - - - -{% if config.theme.logo %} - logo -{% else %} -{% endif %} \ No newline at end of file From 7bbb9ca79bd92c982fe80b580223b6aa2462b78f Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 12 Feb 2025 17:33:52 -0600 Subject: [PATCH 22/32] Remove duplicates stylesheets/ alcf-extra.css and extra.css --- docs/ai-testbed/stylesheets/alcf-extra.css | 903 -------------------- docs/ai-testbed/stylesheets/extra.css | 54 -- docs/aurora/stylesheets/alcf-extra.css | 915 --------------------- docs/aurora/stylesheets/extra.css | 54 -- 4 files changed, 1926 deletions(-) delete mode 100644 docs/ai-testbed/stylesheets/alcf-extra.css delete mode 100644 docs/ai-testbed/stylesheets/extra.css delete mode 100644 docs/aurora/stylesheets/alcf-extra.css delete mode 100644 docs/aurora/stylesheets/extra.css diff --git a/docs/ai-testbed/stylesheets/alcf-extra.css b/docs/ai-testbed/stylesheets/alcf-extra.css deleted file mode 100644 index 95c620a9b..000000000 --- a/docs/ai-testbed/stylesheets/alcf-extra.css +++ /dev/null @@ -1,903 +0,0 @@ -[data-md-color-scheme="alcf"] { - /* Colors */ - --md-primary-fg-color: #0061af; - --md-primary-fg-color--light: #FFFFFF; - --md-primary-fg-color--dark: #080813; - --md-accent-fg-color: #118ACB; - --md-accent-fg-color--transparent: hsla(#{hex2hsl($md-accent-fg-color)}, 0.1); - --md-accent-bg-color: hsla(0, 0%, 100%, 1); - --md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7); -} - - - - -/* typography */ -body { - font-family: proxima-nova, sans-serif; -} -.md-typeset h1, .md-typeset h2, .md-typeset h3 { - font-weight: 600; -} - -.md-typeset h1, .md-typeset h2 { - color: #1d1651; -} - -.md-typeset h1 { - font-size: 60px; - line-height: 60px; - border-bottom: 1px solid rgb(216, 220, 225); - padding-bottom: .75rem; - margin: 0; -} - -.md-typeset h2 { - font-size: 36px; - line-height: 36px; -} - -.md-typeset h3 { - margin:3em 0 0; -; -} - -.md-typeset p, .md-typeset li { - font-size: 19px; - line-height: 27px; - font-weight: 400; - margin-block-start: .8em; -} - -.md-typeset li{ - margin-block-start: 0; -} - - -.md-typeset ul { - list-style-type: none; -} - -.md-typeset ul > li { - text-indent: -15px; -} - -.md-typeset ul > li:before { - content: "–"; - margin-right: 5px; - font-weight: 600; - color: #6e6e78; -} - - - - -/* layout(ish) */ - -.md-content__inner { - margin-bottom: 5rem; -} - -.md-header[data-md-state=shadow] { - box-shadow: none; -} - -.md-header__button.md-logo img { - height: auto; - width: 5rem; -} - - - - -/* primary header */ -/* ------------------------------------------------------------------------- */ - -.header--primary { - background-color: var(--md-primary-fg-color); - color: #e7f6fd; - border-bottom: 1px solid #1d1651; - height: 152px; - font-size: 19px; - line-height: 24px; -} - -@media only screen and (max-width: 960px) { - .header--primary { display: none; } -} - -.header--primary .grid{ - position: relative; - display: grid; - grid-template-columns: repeat(6, 1fr); - grid-template-rows: auto; - width: calc(100% - 28px * 2); - margin: 0 auto; - grid-column-gap: 24px; - column-gap: 24px; /* repeated due to change in spec */ - grid-row-gap: 0; - row-gap: 0; /* repeated due to change in spec */ - max-width: 59.8rem; -} - -.header--primary .header__nav-primary a { - color: #FFF; -} - -.header--primary .header__nav-secondary a { - color: #badef5; -} - -.header--primary .header__nav-secondary a:hover { - color: #118acb; -} - -.header--primary a:hover { - color: #118acb; -} - - -.header--primary .grid { - min-height: 152px; -} - -.header--primary .header__site-title { - grid-column: span 6; - grid-row: 2; - margin-top: 18px; - margin-bottom: -8px; -} - -.header--primary .header__site-title h1 { - color: #b8e2de; - font-size: 36px; - font-weight: 600; - line-height: 36px; -} - -.header--primary .header__nav-primary { - grid-column: span 6; - grid-row: 3; - position: relative; - height: 16px; -} - -.header--primary .header__nav-primary ul { - position: relative; - bottom: 4px; - margin-block-start: 0; - padding-inline-start: 0; - margin-block-end: 0; - grid-column: span 6; -} - -.header--primary .header__nav-primary li:last-child { - padding-bottom: 8px; - border-left: 1px solid #1d1651; -} - -.header--primary .header__nav-primary a { - padding-right: 27px; - font-weight: 600; - display: inline-block; - height: 30px; -} - -.header--primary .header__nav-primary .dropdown a { - height: auto; -} - -.header--primary .header__nav-primary .dropdown li { - display: block; -} - -.md-nav { - font-size: 15px; - line-height: 1; -} - -.md-nav__link { - margin-top: 6px; -} - -#nav-sup { - padding-left: 32px; -} - -.header--primary .header__nav-secondary { - grid-column: 2 / span 5; - grid-row: 1; - margin-top: 12px; - position: relative; - min-width: 380px; -} - -.header--primary .header__nav-secondary--right { - position: absolute; - right: 0; -} - -.header--primary .header__nav-secondary ul { - /*padding-right: 16px;*/ - display: inline-block; - position: relative; - top: -24px; /* hacky, to line up with search box, better way? */ -} - -.header--primary .header__nav-secondary li { - font-size: 14px; - line-height: 16px; - font-weight: 800; - padding-right: 16px; - letter-spacing: 1.4px; - text-transform: uppercase; -} - -.header--primary .header__nav-secondary li:last-child { - margin-right: 0; -} - -.header--primary .header__nav-secondary li, -.header--primary .header__nav-primary li { - display: inline; -} - -.header--primary .header__nav-secondary .md-search{ - display: inline-block; - position: relative; - top: -6px; -} - - -@media screen and (min-width: 60em) { - .header--primary .header__nav-secondary .md-search__inner { - width: 8rem; - } -} - -@media screen and (min-width: 60em) and (max-width: 76.1875em){ - [data-md-toggle=search]:checked~.md-header .md-search__inner { - width: 18rem; - } -} - -@media screen and (min-width: 76.25em) { - [data-md-toggle=search]:checked~.md-header .md-search__inner { - width: 18rem; - } -} - -[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap { - width: 100%; -} - -.md-search__scrollwrap h1, -.md-search__scrollwrap p { - text-transform: none; - letter-spacing: 0; -} - -.md-search-result__article--document .md-search-result__title { - font-weight: 600; - color: var(--md-typeset-a-color); -} - -.md-search__scrollwrap details, - .md-search__scrollwrap summary{ - font-size: 12px; - font-weight: 600; - color: var(--md-accent-fg-color); -} - -.md-search__scrollwrap p { - font-weight: 400; - color: rgba(0,0,0,0.87); - font-size: 15px; - line-height: 18px; -} - - - -.dropdown { - grid-column: 1 / span 5; - width: calc(83.3333% + 24px); - position: absolute; - grid-row: 4; - z-index: 50; - border-top: 1px solid #badef5; -} - - -.dropdown nav { - display: grid; - grid-template-columns: repeat(5, 1fr); - /*grid-template-rows: repeat(0, 1fr);*/ - grid-column-gap: 24px; - column-gap: 24px; - grid-row-gap: 0; - row-gap: 0; - grid-column: auto/span 5; - /*grid-row: span $rows;*/ - background-color: #080812; - color: #fff; - @include inset($top: m); - margin-left: -28px; - padding-left: 28px; - padding-right: 24px; -} - -.dropdown .dropdown__intro { - grid-column: span 2; -} - -.dropdown .dropdown__intro-subhead h2 { - font-size: 24px; - line-height: 28px; - font-weight: 600; - margin-bottom: 0; -} - -.dropdown .dropdown__intro-description p { - font-size: 19px; - line-height: 24px; - font-weight: 600; -} - -.dropdown .dropdown__links-1, -.dropdown .dropdown__links-2, -.dropdown .dropdown__links-21, -.dropdown .dropdown__links-22 { - grid-column: span 1; - padding-bottom: 8px; - padding-top: 4px; -} - -.dropdown .dropdown__links-21, -.dropdown .dropdown__links-22 { - grid-row: 2; -} - -.dropdown .dropdown__links-21 { - grid-column: 3 / span 1; -} - -.dropdown .dropdown__links-22 { - grid-column: 4 / span 1; -} - -.dropdown .dropdown__links-group { - padding-bottom: 16px; - padding-top: 1px; -} - -.dropdown .dropdown__links-group h3, -.dropdown__links-group li a { - font-size: 19px; - line-height: 24px; - font-weight: 600; - margin-bottom: 0; -} - -.dropdown .dropdown__links-group ul { - list-style: none; - padding-top: 8px; - padding-left: 0; - margin-top: 0; -} - -.dropdown .dropdown__links-group li { - border-top: 1px solid #118acb; - padding-top: 10px; - padding-bottom: 8px; - width: 100% -} - -.dropdown .dropdown__links-group li:last-child { - border-bottom: 1px solid #118acb; -} - -.dropdown .dropdown__links-group li a { - color: #badef5; - width: 100%; - display: inline-block; -} - -.dropdown .dropdown__links-group li a:hover { - color: #6e6e78; -} - -.dropdown .dropdown__featured { - grid-column: span 1; - padding-bottom: 16px; - padding-top: 4px; -} - -.dropdown .dropdown__featured-title { - padding-bottom: 8px; -} - -.dropdown .dropdown__featured-title h3 { - font-size: 19px; - line-height: 24px; - font-weight: 600; - margin-bottom: 0; -} - -.dropdown .dropdown__featured-image { - position: relative; - padding-bottom: 8px; -} - -.dropdown .dropdown__featured-image:before { - display: block; - content: ""; - padding-top: calc((548 / 965) * 100%); - width: 100%; -} - -.dropdown .dropdown__featured-image > div { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - overflow: hidden; -} - -.dropdown .dropdown__featured-image img { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - min-height: 100%; - min-width: 100%; - object-fit: cover; - width: 100%; -} - -.dropdown .dropdown__featured a { - color: #badef5; -} - -.dropdown .dropdown__featured a:hover { - color: #6e6e78; -} - - - - -/* mobile header */ - -.header--mobile { - background-color: var(--md-primary-fg-color); - color: #e7f6fd; - border-bottom: 1px solid #1d1651; - height: 66px; - font-size: 19px; - line-height: 24px; -} - -@media only screen and (min-width: 961px) { - .header--mobile { display: none; } -} - -.header--mobile .grid{ - position: relative; - display: grid; - grid-template-columns: repeat(6, 1fr); - grid-template-rows: auto; - width: calc(100% - 28px * 2); - margin: 0 auto; - grid-column-gap: 24px; - column-gap: 24px; /* repeated due to change in spec */ - grid-row-gap: 0; - row-gap: 0; /* repeated due to change in spec */ - max-width: 59.8rem; -} - -.header--mobile .header__nav-primary a { - color: #FFF; -} - -.header--mobile .header__nav-primary a span { - position: absolute; - right: 1px; -} - -.header--mobile .header__nav-secondary { - grid-column: span 6; - width: 100%; - display: grid; - grid-template-columns: repeat(6, 1fr); - grid-template-rows: auto; - margin: 0 auto; - grid-column-gap: 24px; - column-gap: 24px; /* repeated due to change in spec */ - grid-row-gap: 0; - row-gap: 0; /* repeated due to change in spec */ - max-width: 59.8rem; -} - -.header--mobile .header__nav-secondary .dropdown__links-1, -.header--mobile .header__nav-secondary .dropdown__links-2 { - grid-column: span 3; -} - -.header--mobile .header__nav-secondary a { - color: #badef5; -} - -.header--mobile .header__nav-secondary a:hover { - color: #118acb; -} - -.header--mobile a:hover { - color: #118acb; -} - -.header--mobile .header__site-title { - grid-column: span 4; - margin-top: 0; -} - -.header--mobile .header__site-title h1 { - color: #b8e2de; - font-size: 19px; - font-weight: 600; - line-height: 24px; - margin-top: 12px; -} - -@media only screen and (max-width: 960px) { - .header--mobile .header__site-title h1 { - font-size: 16px; - line-height: 18px; - margin-top: 14px; - } -} - -.header--mobile .header__mobIcons { - grid-column: span 2; -} - -.header--mobile .header__mobIcons { - grid-column: span 2; -} - -.header--mobile .header__mobIcons svg { - float: right; - height: 48px; - fill: #b8e2de; - margin-top: 8px; - margin-right: -6px; - transition: all .1s; -} - -.header--mobile .header__mobIcons svg:hover { - cursor: pointer; - fill: #118acb; -} - -.md-header__button { - margin-top: 0; - float: right; -} - - -.header--mobile .header__mobIcons .md-header__button svg { - margin-top: 0px; - width: 36px; -} - -.header--mobile .header__mobIcons .md-search__icon svg { - margin-top: -12px; - width: 36px; -} - - - - -.header--mobile .header__nav-primary a { - padding-right: 27px; - font-weight: 600; - display: inline-block; - margin-bottom: 8px; -} - -.header--mobile .header__nav-secondary ul { - padding-right: 16px; - display: inline-block; - position: relative; -} - -.header--mobile .header__nav-secondary li { - font-size: 14px; - line-height: 16px; - font-weight: 800; - padding-right: 16px; - padding-bottom: 16px; - letter-spacing: 1.4px; - text-transform: uppercase; - display: block; -} - -.header--mobile .dropdown { - grid-column: span 5; - width: calc(83.3333% + 24px); - position: absolute; - grid-row: 4; - z-index: 50; -} - -.header--mobile .dropdown nav { - display: grid; - grid-template-columns: repeat(5, 1fr); - /*grid-template-rows: repeat(0, 1fr);*/ - grid-column-gap: 24px; - column-gap: 24px; - grid-row-gap: 0; - row-gap: 0; - grid-column: auto/span 5; - /*grid-row: span $rows;*/ - background-color: #080812; - color: #fff; - @include inset($top: m); - margin-left: -28px; - padding-left: 28px; - padding-right: 24px; -} - -.header--mobile .dropdown .dropdown__links-1, -.header--mobile .dropdown .dropdown__links-2, -.header--mobile .dropdown .dropdown__links-21, -.header--mobile .dropdown .dropdown__links-22 { - grid-column: span 3; - padding-bottom: 8px; - padding-top: 4px; -} - -.header--mobile .dropdown .dropdown__links-21, -.header--mobile .dropdown .dropdown__links-22 { - grid-row: 2; -} - -.header--mobile .dropdown .dropdown__links-group { - padding-bottom: 16px; - padding-top: 1px; -} - -.header--mobile .dropdown .dropdown__links-group h3, -.header--mobile .dropdown__links-group li a { - font-size: 19px; - line-height: 24px; - font-weight: 600; - margin-bottom: 0; -} - -.header--mobile .dropdown .dropdown__links-group ul { - list-style: none; - padding-top: 8px; - padding-left: 0; - margin-top: 0; -} - -.header--mobile .dropdown .dropdown__links-group li { - border-top: 1px solid #118acb; - padding-top: 10px; - padding-bottom: 8px; - width: 100% -} - -.header--mobile .dropdown .dropdown__links-group li:last-child { - border-bottom: 1px solid #118acb; -} - -.header--mobile .dropdown .dropdown__links-group li a { - color: #badef5; - width: 100%; - display: inline-block; -} - -.header--mobile .dropdown .dropdown__links-group li a:hover { - color: #6e6e78; -} - - -.header--mobile .header__dropdownBG { - width: 100%; - top: 0; - bottom: 0; - z-index: 1000000; - position: fixed; - background-color: #080812; - overflow: auto; -} - - -.header--mobile .dropdown { - grid-column: span 6; - position: relative; - width: 100%; - display: grid; - grid-template-columns: repeat(6, 1fr); - grid-column-gap: 24px; - column-gap: 24px; - grid-row-gap: 0; - row-gap: 0; - background-color: #080812; - color: #fff; - border-top: none; -} - - -.header__nav-primary { - grid-column: span 6; - /*width: calc(83.3333% + 24px);*/ - display: grid; - grid-template-columns: repeat(6, 1fr); - grid-column-gap: 24px; - column-gap: 24px; - grid-row-gap: 0; - row-gap: 0; -} - -.header--mobile ul, -.header--mobile ul li { - list-style: none; - padding-left: 0; - grid-column: span 6; -} - -.header--mobile a.drawer-head { - border-bottom: 1px solid #badef5; - width: 100%; - padding-bottom: 8px; -} - -.header--mobile .dropdown .dropdown__links-group h3 { - margin-top: 8px; -} - -.menu--open { - display: block; -} - -.menu--closed { - display: none !important; -} - - -/* footer */ -/* ----------------------------------------------------------------- */ - -footer { - background-color: #080812; - color: #fff; - padding-top: 32px; - min-height: 320px; - font-size: 19px; - line-height: 24px; -} - -footer .grid{ - position: relative; - display: grid; - grid-template-columns: repeat(4, 1fr); - grid-template-rows: 2; - width: calc(100% - 28px * 2); - margin: 0 auto; - grid-column-gap: 24px; - column-gap: 24px; /* repeated due to change in spec */ - grid-row-gap: 0; - row-gap: 0; /* repeated due to change in spec */ - max-width: 59.8rem; -} - -.footer--attr { - grid-column: 1 / span 2; - grid-row: 1; - min-height: 240px; -} - -@media only screen and (max-width: 960px) { - .footer--attr { - grid-column: 1 / span 6; - min-height: 180px; - } -} - -.footer--address { - grid-column: 3 / span 1; - grid-row: 1; -} - -@media only screen and (max-width: 960px) { - .footer--address { - grid-column: 1 / span 6; - grid-row: 2; - } -} - -.footer--admin { - grid-column: 1 / span 1; - grid-row: 2; -} - -@media only screen and (max-width: 960px) { - .footer--admin { - grid-column: 1 / span 6; - grid-row: 3; - } -} - -.footer--copyright { - grid-column: 3 / span 1; - grid-row: 2; -} - -@media only screen and (max-width: 960px) { - .footer--copyright { - grid-column: 1 / span 6; - grid-row: 4; - } -} - -.footer--logos { - grid-column: 4 / span 1; - grid-row: 2; -} - -@media only screen and (max-width: 960px) { - .footer--logos { - grid-column: 1 / span 6; - grid-row: 5; - } -} - -.footer--attr h2 { - font-size: 36px; - line-height: 36px; - margin-top: 0; -} - -.footer--attr h2 span { - display: block; - font-size: 19px; - line-height: 24px; -} - -footer p { - margin-top: 0; -} - -footer a { - color: #badef5; - transition: color 0.2s; -} - - -footer a:hover { - color: #6e6e78; -} - -.footer--logos img { - max-width: 104px; - display: inline; - margin-right: 18px; -} - - -/*remove edit buttton by titles*/ -.md-typeset .md-content__button { - display: none; -} - - -/*// For the js script*/ -.js-dropdown-visible { - display: block; -} - -.js-dropdown-hidden { - display: none; -} diff --git a/docs/ai-testbed/stylesheets/extra.css b/docs/ai-testbed/stylesheets/extra.css deleted file mode 100644 index dc002c8e7..000000000 --- a/docs/ai-testbed/stylesheets/extra.css +++ /dev/null @@ -1,54 +0,0 @@ -/*body { overflow-x: hidden; font-family: 'Proxima Nova'; }*/ -/* Custom colors */ -/*$primary: {{ site.data.style.highlight | default: "#fed136" }} !default; -$white: {{ site.data.style.white | default: "#fff" }} !default; -$black: {{ site.data.style.black | default: "#000" }} !default;*/ -/*.text-primary { color: #009f90 !important; }*/ -header.md-header { background-color: #212529; color: #009f90;} -.md-header-nav__title {font-weight: 600;} -nav.md-tabs { background-color: #212529; color: #b8e2de;} -label.md-search__icon.md-icon {color: #b8e2de;} -a.md-nav__link.md-nav__link--active {color: #009f90;} -/*.md-nav__link.md-nav__link--hover {color: #006b61;}*/ -a {color: #009f90;} -.md-nav__link:focus { - color: #009f90; -} -.md-nav__link:hover {color: #006b61;} -.md-typeset a, a:focus { - color: #009f90; -} -.md-typeset a:hover {color: #006b61;} -html .md-footer-meta.md-typeset a:focus, html .md-footer-meta.md-typeset a {color: #b8e2de;} - -.md-announce, .md-footer, .md-footer-meta {background-color: #212529;} - -.md-header-nav__button.md-logo svg {display: none;} - -/*Hiding everything in left nav except for systems*/ -.md-nav__item:nth-child(1) {display: none;} -.md-nav__item:nth-child(2) {display: none;} -.md-nav__item:nth-child(3) {display: none;} -.md-nav__item:nth-child(7) {display: none;} -.md-nav__item:nth-child(8) {display: none;} - -/*Hide Graphcore in Header Nav*/ -.md-tabs__item:nth-child(4) {display: none;} - -/*Change Header Nav Tabs Color*/ -.md-tabs__link {color: white;} - -/*This is the command to display correct font*/ -body, input { -font-family: Proxima Nova,Montserrat,Arial,sans-serif; -} - -/*Hide Table of Contents*/ -.md-sidebar--secondary { - display: none; -} - -/*.md-header-nav__button.md-logo img { - width: 4.2rem; - height: 1.2rem; -}*/ diff --git a/docs/aurora/stylesheets/alcf-extra.css b/docs/aurora/stylesheets/alcf-extra.css deleted file mode 100644 index 589064f0e..000000000 --- a/docs/aurora/stylesheets/alcf-extra.css +++ /dev/null @@ -1,915 +0,0 @@ -[data-md-color-scheme="alcf"] { - /* Colors */ - --md-primary-fg-color: #0061af; - --md-primary-fg-color--light: #FFFFFF; - --md-primary-fg-color--dark: #080813; - --md-accent-fg-color: #118ACB; - --md-accent-fg-color--transparent: hsla(#{hex2hsl($md-accent-fg-color)}, 0.1); - --md-accent-bg-color: hsla(0, 0%, 100%, 1); - --md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7); -} - - - - -/* typography */ -body { - font-family: proxima-nova, sans-serif; -} -.md-typeset h1, .md-typeset h2, .md-typeset h3 { - font-weight: 600; -} - -.md-typeset h1, .md-typeset h2 { - color: #1d1651; -} - -.md-typeset h1 { -/* font-size: 60px; */ -/* line-height: 60px; */ - border-bottom: 1px solid rgb(216, 220, 225); - padding-bottom: .75rem; - margin: 0; -} - -.md-typeset h2 { -/* font-size: 36px; */ -/* line-height: 36px; */ -} - -.md-typeset h3 { -/* margin:3em 0 0; */ -; -} - -.md-typeset p, .md-typeset li { - font-size: 19px; - line-height: 27px; - font-weight: 400; - margin-block-start: .8em; -} - -.md-typeset li{ - margin-block-start: 0; -} - - -.md-typeset ul { - list-style-type: none; -} - -.md-typeset ul > li { - text-indent: -15px; -} - -.md-typeset ul > li:before { - content: "–"; - margin-right: 5px; - font-weight: 600; - color: #6e6e78; -} - -.md-typeset :target { - --md-scroll-margin: 9rem; -} - - - - -/* layout(ish) */ - -.md-content__inner { - margin-bottom: 5rem; -} - -.md-header-alcf[data-md-state=shadow] { - box-shadow: none; -} - -.md-header__inner .md-logo img { - height: auto; - width: 100px; -} - - - - -/* primary header */ -/* ------------------------------------------------------------------------- */ - -/* hide material header at large sizes, and the alcf header at small sizes */ -@media only screen and (max-width: 960px) { - .header--primary { display: none; } -} - -/*@media only screen and (min-width: 961px) { - .md-header { display: none; } -}*/ - -.header--primary { - background-color: var(--md-primary-fg-color); - color: #e7f6fd; - border-bottom: 1px solid #1d1651; - height: 152px; - font-size: 19px; - line-height: 24px; -} - - - - -.header--primary .grid{ - position: relative; - display: grid; - grid-template-columns: repeat(6, 1fr); - grid-template-rows: auto; - width: calc(100% - 28px * 2); - margin: 0 auto; - grid-column-gap: 24px; - column-gap: 24px; /* repeated due to change in spec */ - grid-row-gap: 0; - row-gap: 0; /* repeated due to change in spec */ - max-width: 59.8rem; -} - -.header--primary .header__nav-primary a { - color: #FFF; -} - -.header--primary .header__nav-secondary a { - color: #badef5; -} - -.header--primary .header__nav-secondary a:hover { - color: #118acb; -} - -.header--primary a:hover { - color: #118acb; -} - - -.header--primary .grid { - min-height: 152px; -} - -.header--primary .header__site-title { - grid-column: span 6; - grid-row: 2; - margin-top: 18px; - margin-bottom: -8px; -} - -.header--primary .header__site-title h1 { - color: #b8e2de; - font-size: 36px; - font-weight: 600; - line-height: 36px; -} - -.header--primary .header__nav-primary { - grid-column: span 6; - grid-row: 3; - position: relative; - height: 16px; -} - -.header--primary .header__nav-primary ul { - position: relative; - bottom: 4px; - margin-block-start: 0; - padding-inline-start: 0; - margin-block-end: 0; - grid-column: span 6; -} - -.header--primary .header__nav-primary li:last-child { - padding-bottom: 8px; - border-left: 1px solid #1d1651; -} - -.header--primary .header__nav-primary a { - padding-right: 27px; - font-weight: 600; - display: inline-block; - height: 30px; -} - -.header--primary .header__nav-primary .dropdown a { - height: auto; -} - -.header--primary .header__nav-primary .dropdown li { - display: block; -} - -.md-nav { - font-size: 15px; - line-height: 1; -} - -.md-nav__link { - margin-top: 6px; -} - -#nav-sup { - padding-left: 32px; -} - -.header--primary .header__nav-secondary { - grid-column: 2 / span 5; - grid-row: 1; - margin-top: 12px; - position: relative; - min-width: 380px; -} - -.header--primary .header__nav-secondary--right { - position: absolute; - right: 0; -} - -.header--primary .header__nav-secondary ul { - /*padding-right: 16px;*/ - display: inline-block; - position: relative; - top: -24px; /* hacky, to line up with search box, better way? */ -} - -.header--primary .header__nav-secondary li { - font-size: 14px; - line-height: 16px; - font-weight: 800; - padding-right: 16px; - letter-spacing: 1.4px; - text-transform: uppercase; -} - -.header--primary .header__nav-secondary li:last-child { - margin-right: 0; -} - -.header--primary .header__nav-secondary li, -.header--primary .header__nav-primary li { - display: inline; -} - -.header--primary .header__nav-secondary .md-search{ - display: inline-block; - position: relative; - top: -6px; -} - - -@media screen and (min-width: 60em) { - .header--primary .header__nav-secondary .md-search__inner { - width: 8rem; - } -} - -@media screen and (min-width: 60em) and (max-width: 76.1875em){ - [data-md-toggle=search]:checked~.md-header .md-search__inner { - width: 18rem; - } -} - -@media screen and (min-width: 76.25em) { - [data-md-toggle=search]:checked~.md-header .md-search__inner { - width: 18rem; - } -} - -[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap { - width: 100%; -} - -.md-search__scrollwrap h1, -.md-search__scrollwrap p { - text-transform: none; - letter-spacing: 0; -} - -.md-search-result__article--document .md-search-result__title { - font-weight: 600; - color: var(--md-typeset-a-color); -} - -.md-search__scrollwrap details, - .md-search__scrollwrap summary{ - font-size: 12px; - font-weight: 600; - color: var(--md-accent-fg-color); -} - -.md-search__scrollwrap p { - font-weight: 400; - color: rgba(0,0,0,0.87); - font-size: 15px; - line-height: 18px; -} - - - -.dropdown { - grid-column: 1 / span 5; - width: calc(83.3333% + 24px); - position: absolute; - grid-row: 4; - z-index: 50; - border-top: 1px solid #badef5; -} - - -.dropdown nav { - display: grid; - grid-template-columns: repeat(5, 1fr); - /*grid-template-rows: repeat(0, 1fr);*/ - grid-column-gap: 24px; - column-gap: 24px; - grid-row-gap: 0; - row-gap: 0; - grid-column: auto/span 5; - /*grid-row: span $rows;*/ - background-color: #080812; - color: #fff; - @include inset($top: m); - margin-left: -28px; - padding-left: 28px; - padding-right: 24px; -} - -.dropdown .dropdown__intro { - grid-column: span 2; -} - -.dropdown .dropdown__intro-subhead h2 { - font-size: 24px; - line-height: 28px; - font-weight: 600; - margin-bottom: 0; -} - -.dropdown .dropdown__intro-description p { - font-size: 19px; - line-height: 24px; - font-weight: 600; -} - -.dropdown .dropdown__links-1, -.dropdown .dropdown__links-2, -.dropdown .dropdown__links-21, -.dropdown .dropdown__links-22 { - grid-column: span 1; - padding-bottom: 8px; - padding-top: 4px; -} - -.dropdown .dropdown__links-21, -.dropdown .dropdown__links-22 { - grid-row: 2; -} - -.dropdown .dropdown__links-21 { - grid-column: 3 / span 1; -} - -.dropdown .dropdown__links-22 { - grid-column: 4 / span 1; -} - -.dropdown .dropdown__links-group { - padding-bottom: 16px; - padding-top: 1px; -} - -.dropdown .dropdown__links-group h3, -.dropdown__links-group li a { - font-size: 19px; - line-height: 24px; - font-weight: 600; - margin-bottom: 0; -} - -.dropdown .dropdown__links-group ul { - list-style: none; - padding-top: 8px; - padding-left: 0; - margin-top: 0; -} - -.dropdown .dropdown__links-group li { - border-top: 1px solid #118acb; - padding-top: 10px; - padding-bottom: 8px; - width: 100% -} - -.dropdown .dropdown__links-group li:last-child { - border-bottom: 1px solid #118acb; -} - -.dropdown .dropdown__links-group li a { - color: #badef5; - width: 100%; - display: inline-block; -} - -.dropdown .dropdown__links-group li a:hover { - color: #6e6e78; -} - -.dropdown .dropdown__featured { - grid-column: span 1; - padding-bottom: 16px; - padding-top: 4px; -} - -.dropdown .dropdown__featured-title { - padding-bottom: 8px; -} - -.dropdown .dropdown__featured-title h3 { - font-size: 19px; - line-height: 24px; - font-weight: 600; - margin-bottom: 0; -} - -.dropdown .dropdown__featured-image { - position: relative; - padding-bottom: 8px; -} - -.dropdown .dropdown__featured-image:before { - display: block; - content: ""; - padding-top: calc((548 / 965) * 100%); - width: 100%; -} - -.dropdown .dropdown__featured-image > div { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - overflow: hidden; -} - -.dropdown .dropdown__featured-image img { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - min-height: 100%; - min-width: 100%; - object-fit: cover; - width: 100%; -} - -.dropdown .dropdown__featured a { - color: #badef5; -} - -.dropdown .dropdown__featured a:hover { - color: #6e6e78; -} - - - - -/* mobile header */ - -.header--mobile { - background-color: var(--md-primary-fg-color); - color: #e7f6fd; - border-bottom: 1px solid #1d1651; - height: 66px; - font-size: 19px; - line-height: 24px; -} - -@media only screen and (min-width: 961px) { - .header--mobile { display: none; } -} - -.header--mobile .grid{ - position: relative; - display: grid; - grid-template-columns: repeat(6, 1fr); - grid-template-rows: auto; - width: calc(100% - 28px * 2); - margin: 0 auto; - grid-column-gap: 24px; - column-gap: 24px; /* repeated due to change in spec */ - grid-row-gap: 0; - row-gap: 0; /* repeated due to change in spec */ - max-width: 59.8rem; -} - -.header--mobile .header__nav-primary a { - color: #FFF; -} - -.header--mobile .header__nav-primary a span { - position: absolute; - right: 1px; -} - -.header--mobile .header__nav-secondary { - grid-column: span 6; - width: 100%; - display: grid; - grid-template-columns: repeat(6, 1fr); - grid-template-rows: auto; - margin: 0 auto; - grid-column-gap: 24px; - column-gap: 24px; /* repeated due to change in spec */ - grid-row-gap: 0; - row-gap: 0; /* repeated due to change in spec */ - max-width: 59.8rem; -} - -.header--mobile .header__nav-secondary .dropdown__links-1, -.header--mobile .header__nav-secondary .dropdown__links-2 { - grid-column: span 3; -} - -.header--mobile .header__nav-secondary a { - color: #badef5; -} - -.header--mobile .header__nav-secondary a:hover { - color: #118acb; -} - -.header--mobile a:hover { - color: #118acb; -} - -.header--mobile .header__site-title { - grid-column: span 4; - margin-top: 0; -} - -.header--mobile .header__site-title h1 { - color: #b8e2de; - font-size: 19px; - font-weight: 600; - line-height: 24px; - margin-top: 12px; -} - -@media only screen and (max-width: 960px) { - .header--mobile .header__site-title h1 { - font-size: 16px; - line-height: 18px; - margin-top: 14px; - } -} - -.header--mobile .header__mobIcons { - grid-column: span 2; -} - -.header--mobile .header__mobIcons { - grid-column: span 2; -} - -.header--mobile .header__mobIcons svg { - float: right; - height: 48px; - fill: #b8e2de; - margin-top: 8px; - margin-right: -6px; - transition: all .1s; -} - -.header--mobile .header__mobIcons svg:hover { - cursor: pointer; - fill: #118acb; -} - -.md-header__button { - margin-top: 0; - float: right; -} - - -.header--mobile .header__mobIcons .md-header__button svg { - margin-top: 0px; - width: 36px; -} - -.header--mobile .header__mobIcons .md-search__icon svg { - margin-top: -12px; - width: 36px; -} - - - - -.header--mobile .header__nav-primary a { - padding-right: 27px; - font-weight: 600; - display: inline-block; - margin-bottom: 8px; -} - -.header--mobile .header__nav-secondary ul { - padding-right: 16px; - display: inline-block; - position: relative; -} - -.header--mobile .header__nav-secondary li { - font-size: 14px; - line-height: 16px; - font-weight: 800; - padding-right: 16px; - padding-bottom: 16px; - letter-spacing: 1.4px; - text-transform: uppercase; - display: block; -} - -.header--mobile .dropdown { - grid-column: span 5; - width: calc(83.3333% + 24px); - position: absolute; - grid-row: 4; - z-index: 50; -} - -.header--mobile .dropdown nav { - display: grid; - grid-template-columns: repeat(5, 1fr); - /*grid-template-rows: repeat(0, 1fr);*/ - grid-column-gap: 24px; - column-gap: 24px; - grid-row-gap: 0; - row-gap: 0; - grid-column: auto/span 5; - /*grid-row: span $rows;*/ - background-color: #080812; - color: #fff; - @include inset($top: m); - margin-left: -28px; - padding-left: 28px; - padding-right: 24px; -} - -.header--mobile .dropdown .dropdown__links-1, -.header--mobile .dropdown .dropdown__links-2, -.header--mobile .dropdown .dropdown__links-21, -.header--mobile .dropdown .dropdown__links-22 { - grid-column: span 3; - padding-bottom: 8px; - padding-top: 4px; -} - -.header--mobile .dropdown .dropdown__links-21, -.header--mobile .dropdown .dropdown__links-22 { - grid-row: 2; -} - -.header--mobile .dropdown .dropdown__links-group { - padding-bottom: 16px; - padding-top: 1px; -} - -.header--mobile .dropdown .dropdown__links-group h3, -.header--mobile .dropdown__links-group li a { - font-size: 19px; - line-height: 24px; - font-weight: 600; - margin-bottom: 0; -} - -.header--mobile .dropdown .dropdown__links-group ul { - list-style: none; - padding-top: 8px; - padding-left: 0; - margin-top: 0; -} - -.header--mobile .dropdown .dropdown__links-group li { - border-top: 1px solid #118acb; - padding-top: 10px; - padding-bottom: 8px; - width: 100% -} - -.header--mobile .dropdown .dropdown__links-group li:last-child { - border-bottom: 1px solid #118acb; -} - -.header--mobile .dropdown .dropdown__links-group li a { - color: #badef5; - width: 100%; - display: inline-block; -} - -.header--mobile .dropdown .dropdown__links-group li a:hover { - color: #6e6e78; -} - - -.header--mobile .header__dropdownBG { - width: 100%; - top: 0; - bottom: 0; - z-index: 1000000; - position: fixed; - background-color: #080812; - overflow: auto; -} - - -.header--mobile .dropdown { - grid-column: span 6; - position: relative; - width: 100%; - display: grid; - grid-template-columns: repeat(6, 1fr); - grid-column-gap: 24px; - column-gap: 24px; - grid-row-gap: 0; - row-gap: 0; - background-color: #080812; - color: #fff; - border-top: none; -} - - -.header__nav-primary { - grid-column: span 6; - /*width: calc(83.3333% + 24px);*/ - display: grid; - grid-template-columns: repeat(6, 1fr); - grid-column-gap: 24px; - column-gap: 24px; - grid-row-gap: 0; - row-gap: 0; -} - -.header--mobile ul, -.header--mobile ul li { - list-style: none; - padding-left: 0; - grid-column: span 6; -} - -.header--mobile a.drawer-head { - border-bottom: 1px solid #badef5; - width: 100%; - padding-bottom: 8px; -} - -.header--mobile .dropdown .dropdown__links-group h3 { - margin-top: 8px; -} - -.menu--open { - display: block; -} - -.menu--closed { - display: none !important; -} - - -/* footer */ -/* ----------------------------------------------------------------- */ - -footer { - background-color: #080812; - color: #fff; - padding-top: 32px; - min-height: 320px; - font-size: 19px; - line-height: 24px; -} - -footer .grid{ - position: relative; - display: grid; - grid-template-columns: repeat(4, 1fr); - grid-template-rows: 2; - width: calc(100% - 28px * 2); - margin: 0 auto; - grid-column-gap: 24px; - column-gap: 24px; /* repeated due to change in spec */ - grid-row-gap: 0; - row-gap: 0; /* repeated due to change in spec */ - max-width: 59.8rem; -} - -.footer--attr { - grid-column: 1 / span 2; - grid-row: 1; - min-height: 240px; -} - -@media only screen and (max-width: 960px) { - .footer--attr { - grid-column: 1 / span 6; - min-height: 180px; - } -} - -.footer--address { - grid-column: 3 / span 1; - grid-row: 1; -} - -@media only screen and (max-width: 960px) { - .footer--address { - grid-column: 1 / span 6; - grid-row: 2; - } -} - -.footer--admin { - grid-column: 1 / span 1; - grid-row: 2; -} - -@media only screen and (max-width: 960px) { - .footer--admin { - grid-column: 1 / span 6; - grid-row: 3; - } -} - -.footer--copyright { - grid-column: 3 / span 1; - grid-row: 2; -} - -@media only screen and (max-width: 960px) { - .footer--copyright { - grid-column: 1 / span 6; - grid-row: 4; - } -} - -.footer--logos { - grid-column: 4 / span 1; - grid-row: 2; -} - -@media only screen and (max-width: 960px) { - .footer--logos { - grid-column: 1 / span 6; - grid-row: 5; - } -} - -.footer--attr h2 { - font-size: 36px; - line-height: 36px; - margin-top: 0; -} - -.footer--attr h2 span { - display: block; - font-size: 19px; - line-height: 24px; -} - -footer p { - margin-top: 0; -} - -footer a { - color: #badef5; - transition: color 0.2s; -} - - -footer a:hover { - color: #6e6e78; -} - -.footer--logos img { - max-width: 104px; - display: inline; - margin-right: 18px; -} - - -/*remove edit buttton by titles*/ -.md-typeset .md-content__button { - display: none; -} - - -/*// For the js script*/ -.js-dropdown-visible { - display: block; -} - -.js-dropdown-hidden { - display: none; -} diff --git a/docs/aurora/stylesheets/extra.css b/docs/aurora/stylesheets/extra.css deleted file mode 100644 index 4cc150bbd..000000000 --- a/docs/aurora/stylesheets/extra.css +++ /dev/null @@ -1,54 +0,0 @@ -/*body { overflow-x: hidden; font-family: 'Proxima Nova'; }*/ -/* Custom colors */ -/*$primary: {{ site.data.style.highlight | default: "#fed136" }} !default; -$white: {{ site.data.style.white | default: "#fff" }} !default; -$black: {{ site.data.style.black | default: "#000" }} !default;*/ -/*.text-primary { color: #009f90 !important; }*/ -header.md-header { background-color: #212529; color: #009f90;} -.md-header-nav__title {font-weight: 600;} -nav.md-tabs { background-color: #212529; color: #b8e2de;} -label.md-search__icon.md-icon {color: #b8e2de;} -a.md-nav__link.md-nav__link--active {color: #009f90;} -/*.md-nav__link.md-nav__link--hover {color: #006b61;}*/ -a {color: #009f90;} -.md-nav__link:focus { - color: #009f90; -} -.md-nav__link:hover {color: #006b61;} -.md-typeset a, a:focus { - color: #009f90; -} -.md-typeset a:hover {color: #006b61;} -html .md-footer-meta.md-typeset a:focus, html .md-footer-meta.md-typeset a {color: #b8e2de;} - -.md-announce, .md-footer, .md-footer-meta {background-color: #212529;} - -.md-header-nav__button.md-logo svg {display: none;} - -/*Hiding everything in left nav except for systems*/ -.md-nav__item:nth-child(1) {display: none;} -.md-nav__item:nth-child(2) {display: none;} -.md-nav__item:nth-child(3) {display: none;} -.md-nav__item:nth-child(7) {display: none;} -.md-nav__item:nth-child(8) {display: none;} - -/*Hide Graphcore in Header Nav*/ -.md-tabs__item:nth-child(4) {display: none;} - -/*Change Header Nav Tabs Color*/ -.md-tabs__link {color: white;} - -/*This is the command to display correct font*/ -body, input { -font-family: Proxima Nova,Montserrat,Arial,sans-serif; -} - -/*Hide Table of Contents*/ -.md-sidebar--secondary { - display: none; -} - -/*.md-header-nav__button.md-logo img { - width: 4.2rem; - height: 1.2rem; -}*/ \ No newline at end of file From b940ccbe39261391ba9556799183108b0068df75 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 12 Feb 2025 17:42:02 -0600 Subject: [PATCH 23/32] Rm unused extra.css Not touched since July 2022 --- docs/stylesheets/extra.css | 54 -------------------------------------- 1 file changed, 54 deletions(-) delete mode 100644 docs/stylesheets/extra.css diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css deleted file mode 100644 index 4cc150bbd..000000000 --- a/docs/stylesheets/extra.css +++ /dev/null @@ -1,54 +0,0 @@ -/*body { overflow-x: hidden; font-family: 'Proxima Nova'; }*/ -/* Custom colors */ -/*$primary: {{ site.data.style.highlight | default: "#fed136" }} !default; -$white: {{ site.data.style.white | default: "#fff" }} !default; -$black: {{ site.data.style.black | default: "#000" }} !default;*/ -/*.text-primary { color: #009f90 !important; }*/ -header.md-header { background-color: #212529; color: #009f90;} -.md-header-nav__title {font-weight: 600;} -nav.md-tabs { background-color: #212529; color: #b8e2de;} -label.md-search__icon.md-icon {color: #b8e2de;} -a.md-nav__link.md-nav__link--active {color: #009f90;} -/*.md-nav__link.md-nav__link--hover {color: #006b61;}*/ -a {color: #009f90;} -.md-nav__link:focus { - color: #009f90; -} -.md-nav__link:hover {color: #006b61;} -.md-typeset a, a:focus { - color: #009f90; -} -.md-typeset a:hover {color: #006b61;} -html .md-footer-meta.md-typeset a:focus, html .md-footer-meta.md-typeset a {color: #b8e2de;} - -.md-announce, .md-footer, .md-footer-meta {background-color: #212529;} - -.md-header-nav__button.md-logo svg {display: none;} - -/*Hiding everything in left nav except for systems*/ -.md-nav__item:nth-child(1) {display: none;} -.md-nav__item:nth-child(2) {display: none;} -.md-nav__item:nth-child(3) {display: none;} -.md-nav__item:nth-child(7) {display: none;} -.md-nav__item:nth-child(8) {display: none;} - -/*Hide Graphcore in Header Nav*/ -.md-tabs__item:nth-child(4) {display: none;} - -/*Change Header Nav Tabs Color*/ -.md-tabs__link {color: white;} - -/*This is the command to display correct font*/ -body, input { -font-family: Proxima Nova,Montserrat,Arial,sans-serif; -} - -/*Hide Table of Contents*/ -.md-sidebar--secondary { - display: none; -} - -/*.md-header-nav__button.md-logo img { - width: 4.2rem; - height: 1.2rem; -}*/ \ No newline at end of file From 07400a03759c93a71e4b11aac1fdb55c1365b03a Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 12 Feb 2025 17:45:12 -0600 Subject: [PATCH 24/32] GitLab capitalization --- mkdocs.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index e2964489b..1b2ea05b8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -241,7 +241,7 @@ nav: # - Visualization: # - ParaView: aurora/visualization/paraview.md - Services: - - GitLab: aurora/services/gitlab-ci.md + - GitLab CI: aurora/services/gitlab-ci.md - Workflows: - ADIOS2: aurora/workflows/adios.md - Balsam: aurora/workflows/balsam.md @@ -400,7 +400,7 @@ nav: - JupyterHub: services/jupyter-hub.md - Continuous Integration: - General: services/continuous-integration.md - - Gitlab-CI: services/gitlab-ci.md + - GitLab CI: services/gitlab-ci.md - Facility Policies: - Overview of Policies: policies/facility-policies.md From 5101869542d642961a81e1eea6f4ab4127c9283c Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 12 Feb 2025 17:47:32 -0600 Subject: [PATCH 25/32] rm unused .js duplicate --- docs/ai-testbed/javascripts/alcf-extra.js | 144 ---------------------- 1 file changed, 144 deletions(-) delete mode 100644 docs/ai-testbed/javascripts/alcf-extra.js diff --git a/docs/ai-testbed/javascripts/alcf-extra.js b/docs/ai-testbed/javascripts/alcf-extra.js deleted file mode 100644 index 7510cf11b..000000000 --- a/docs/ai-testbed/javascripts/alcf-extra.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - * Dropdown - * - * @description - * - * @param config An object of configuration settings: - * - * - * @return new instance of Dropdown - */ - - - - - -// Config defaults and init -// ---------------------------------------------------------------------------- - -var Dropdown = function (config) { - this.hook = config.hook || 'js-drop'; - this.menu = config.menu; - this.event = config.event || 'click'; - this.pane = document.getElementById(this.menu); -} - - -Dropdown.prototype.init = function() { - this.modifyHooks(this.hook, this.addListener.bind(this, this.event)); -} - - - - - -// Shared methods -// ---------------------------------------------------------------------------- - -// grab element -Dropdown.prototype.modifyHooks = function(hook, func) { - var elem = document.getElementById(hook); - // this.addBgListener(elem); - func(elem); -} - -// attach listeners to the document and menu items -Dropdown.prototype.addListener = function(event, elem) { - document.addEventListener("mouseover", function(e) { - if (e.target.closest("#"+this.hook)) { - this.toggleMenu(elem); - } - else if (e.target.closest("#"+this.menu)) {return;} - else if (this.pane.classList.contains('js-dropdown-visible')) { - this.toggleMenu(elem); - } - }.bind(this), false); - document.addEventListener("mouseout", function(e) { - if (e.target.closest("#"+this.hook)) { - this.toggleMenu(elem); - } - else if (e.target.closest("#"+this.menu)) {return;} - else if (this.pane.classList.contains('js-dropdown-visible')) { - this.toggleMenu(elem); - } - }.bind(this), false); -} - -// toggle menu pane visibility -Dropdown.prototype.toggleMenu = function(elem) { - if (this.pane.classList.contains('js-dropdown-hidden')) { - this.pane.classList.replace('js-dropdown-hidden', 'js-dropdown-visible'); - } else if (this.pane.classList.contains('js-dropdown-visible')) { - this.pane.classList.replace('js-dropdown-visible', 'js-dropdown-hidden'); - } -} - - - - -// Include the dropdowns -// ---------------------------------------------------------------------------- - -var dropdowns = document.getElementsByClassName('js-drop'); - -if (dropdowns.length > 0) { - var menus = []; - - Array.prototype.forEach.call(dropdowns, function(el) { - menus.push(new Dropdown({'hook': el.id, 'menu': el.dataset.menu})); - }); - - Array.prototype.forEach.call(menus, function(m) { - m.init(); - }); -} - - - - -// Include the mobile dropdowns (unlike above, just writing it all here) -// ---------------------------------------------------------------------------- - - -// open/close the big pane -var mobileOpen = document.getElementById('js-mobileOpen'); -var mobileClose = document.getElementById('js-mobileClose'); -var mobileMenu = document.getElementById('js-mobileMenu'); - -mobileOpen.addEventListener("click", function(e) { - mobileMenu .classList.replace("menu--closed", "menu--open"); -}); - -mobileClose.addEventListener("click", function(e) { - mobileMenu .classList.replace("menu--open", "menu--closed"); -}); - - -// open/close individual menus - -var drawerHeads = document.getElementsByClassName('drawer-head'); - -Array.prototype.forEach.call(drawerHeads, function(head){ - - head.addEventListener("click", function(e){ - var mobmenu = head.dataset.mobmenu; - mobmenu = document.getElementById(mobmenu); - var arrow = this.querySelector(".drawer-arrow"); - - if (mobmenu.classList.contains('menu--closed')) { - mobmenu.classList.remove('menu--closed'); - arrow.innerHTML = "▲" - } - else { - mobmenu.classList.add('menu--closed'); - arrow.innerHTML = "▼" - } - - }); -}); - -// add listener to each of the links that toggles menus - - - - From 87991eeaa7d56d0322ded6aa5e5dbbe63933f9e1 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Wed, 12 Feb 2025 18:36:23 -0600 Subject: [PATCH 26/32] remove some empty newlines --- overrides/partials/header.html | 66 +++------------------------------- 1 file changed, 5 insertions(+), 61 deletions(-) diff --git a/overrides/partials/header.html b/overrides/partials/header.html index dd232c8af..90df10182 100644 --- a/overrides/partials/header.html +++ b/overrides/partials/header.html @@ -2,32 +2,18 @@ - - {% set class = "md-header" %}
- -
- -
- - - - -
- - - - - - - -
- - - - - - - - - - -
+ + +
@@ -358,7 +317,7 @@

{% if "navigation.tabs.sticky" in features %} - {% if "navigation.tabs" in features %} - {% include "partials/tabs.html" %} - {% endif %} + {% if "navigation.tabs" in features %} + {% include "partials/tabs.html" %} + {% endif %} {% endif %} From 8101a04979ba063316e846f4d744890898983482 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Thu, 13 Feb 2025 01:54:30 -0600 Subject: [PATCH 28/32] Remove bug/nested comments in CSS See #730 --- docs/stylesheets/alcf-extra.css | 9 --------- 1 file changed, 9 deletions(-) diff --git a/docs/stylesheets/alcf-extra.css b/docs/stylesheets/alcf-extra.css index 6d6971ad0..1cf7829c6 100644 --- a/docs/stylesheets/alcf-extra.css +++ b/docs/stylesheets/alcf-extra.css @@ -30,15 +30,6 @@ body { margin: 0; } -/* .md-typeset h2 { */ -/* /* font-size: 36px; */ */ -/* /* line-height: 36px; */ */ -/* } */ -/**/ -/* .md-typeset h3 { */ -/* /* margin:3em 0 0; */ */ -/* ; */ -/* } */ .md-typeset p, .md-typeset li { font-size: 19px; From 7e9c5bd82d18d9ed02b592b42cead932e0b7e37c Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Thu, 13 Feb 2025 01:59:14 -0600 Subject: [PATCH 29/32] Fix lists --- .../hardware-overview/machine-overview.md | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/docs/polaris/hardware-overview/machine-overview.md b/docs/polaris/hardware-overview/machine-overview.md index c230b73e7..4d06b0ccb 100644 --- a/docs/polaris/hardware-overview/machine-overview.md +++ b/docs/polaris/hardware-overview/machine-overview.md @@ -1,4 +1,4 @@ -# Polaris Machine Overview +# Polaris Machine Overview Polaris is a 560-node HPE Apollo 6500 Gen 10+ based system. Each node has a single 2.8 GHz AMD EPYC Milan 7543P 32-core CPU with 512 GB of DDR4 RAM, four NVIDIA A100 GPUs connected via NVLink, a pair of local 1.6TB SSDs in RAID0 for user use, and a pair of Slingshot 11 network adapters. There are two nodes per chassis, seven chassis per rack, and 40 racks for a total of 560 nodes. More detailed specifications are as follows: ## Polaris Compute Nodes @@ -10,8 +10,8 @@ Polaris is a 560-node HPE Apollo 6500 Gen 10+ based system. Each node has a sing | GPUs | NVIDIA A100 | 4 | 2,240 | | Local SSD | 1.6 TB | 2/3.2 TB | 1,120/1.8 PB | -Note 1: 256 MB shared L3 cache, 512 KB L2 cache per core, 32 KB L1 cache per core -Note 2: 8 memory channels rated at 204.8 GiB/s +- _Note 1_: 256 MB shared L3 cache, 512 KB L2 cache per core, 32 KB L1 cache per core +- _Note 2_: 8 memory channels rated at 204.8 GiB/s ## Polaris A100 GPU Information | DESCRIPTION | A100 PCIe | A100 HGX (Polaris) | @@ -37,17 +37,18 @@ Note 2: 8 memory channels rated at 204.8 GiB/s | | | mlx5_0 | SYS | SYS | SYS | PHB | X | SYS | | | | mlx5_1 | SYS | PHB | SYS | SYS | SYS | X | -### Legend: +!!! info "Legend" -**X** = Self -**SYS** = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI) -**NODE** = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node -**PHB** = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU) -**PXB** = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge) -**PIX** = Connection traversing at most a single PCIe bridge -**NV#** = Connection traversing a bonded set of # NVLinks + - **X** = Self + - **SYS** = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI) + - **NODE** = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node + - **PHB** = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU) + - **PXB** = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge) + - **PIX** = Connection traversing at most a single PCIe bridge + - **NV#** = Connection traversing a bonded set of # NVLinks Links to detailed NVIDIA A100 documentation: + - [NVIDIA A100 Tensor Core GPU Architecture](https://images.nvidia.com/aem-dam/en-zz/Solutions/data-center/nvidia-ampere-architecture-whitepaper.pdf) - [NVIDIA Ampere Architecture In-Depth](https://developer.nvidia.com/blog/nvidia-ampere-architecture-in-depth/) @@ -64,12 +65,12 @@ All users share the same login nodes, so please be courteous and respectful of y | GPUs (Note 3) | No GPUs | 0 | 0 | | Local SSD | None | 0 | 0 | -Note 1: 256 MB shared L3 cache, 512 KB L2 cache per core, 32 KB L1 cache per core -Note 2: 8 memory channels rated at 204.8 GiB/s per socket -Note 3: If your build requires the physical presence of a GPU, you will need to build on a compute node. +- _Note 1_: 256 MB shared L3 cache, 512 KB L2 cache per core, 32 KB L1 cache per core +- _Note 2_: 8 memory channels rated at 204.8 GiB/s per socket +- _Note 3_: If your build requires the physical presence of a GPU, you will need to build on a compute node. ## Gateway Nodes There are 50 gateway nodes. These nodes are not user-accessible but are used transparently for access to the storage systems. Each node has a single 200 Gbps HDR IB card for access to the storage area network. This gives a theoretical peak bandwidth of 1,250 GB/s, which is approximately the aggregate bandwidth of the global file systems (1,300 GB/s). ## Storage -Polaris has access to the ALCF global file systems. Details on storage can be found [here](../../data-management/filesystem-and-storage/data-storage.md). \ No newline at end of file +Polaris has access to the ALCF global file systems. Details on storage can be found [here](../../data-management/filesystem-and-storage/data-storage.md). From 4ef056d35b33c33d2918c83708500485dba8e210 Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Thu, 13 Feb 2025 02:06:44 -0600 Subject: [PATCH 30/32] Fix renamed features --- mkdocs.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 1b2ea05b8..8ad4d1e0b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -41,16 +41,16 @@ theme: - content.action.view - content.code.copy - content.code.annotate - #- content.code.select # experimental - - instant + #- content.code.select # insiders-4.32.0 - navigation.indexes + - navigation.instant + - navigation.instant.progress - navigation.path - # - navigation.prune - #- navigation.tabs # for non-mobile browsers, move top-level sections from left nav sidebar to top under header + #- navigation.prune # for sites with 100s or 1k pages; only render visible navbar items (i.e. clicking on collapsed sections will navigate to the first page in that section, since it isnt rendered) + # - navigation.tabs # for non-mobile browsers, move top-level sections from left nav sidebar to top under header - navigation.top - navigation.tracking - navigation.sections - - tabs - toc.follow #- toc.integrate # move right-side intra-page TOC within left nav sidebar - search.highlight From 573e6469d0cda322e9812dbe74307e875964a45d Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Thu, 13 Feb 2025 02:13:07 -0600 Subject: [PATCH 31/32] Start porting changes to CSS from #545 - Adding dark mode theme - Stop hardcoding header font color --- docs/stylesheets/alcf-extra.css | 144 +++++++++++++++++++++++++++----- 1 file changed, 123 insertions(+), 21 deletions(-) diff --git a/docs/stylesheets/alcf-extra.css b/docs/stylesheets/alcf-extra.css index 1cf7829c6..299703a8f 100644 --- a/docs/stylesheets/alcf-extra.css +++ b/docs/stylesheets/alcf-extra.css @@ -1,36 +1,109 @@ -[data-md-color-scheme="alcf"] { - /* Colors */ - --md-primary-fg-color: #0061af; - --md-primary-fg-color--light: #FFFFFF; - --md-primary-fg-color--dark: #080813; - --md-accent-fg-color: #118ACB; - --md-accent-fg-color--transparent: hsla(#{hex2hsl($md-accent-fg-color)}, 0.1); - --md-accent-bg-color: hsla(0, 0%, 100%, 1); - --md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7); -} +/* ALCF Colors taken from branding guidelines */ +/* #A12B2F #CD202C */ +/* #FF7900 #F8B200 */ +/* #00A19C #03A669 #007836 */ +/* #00609C #0261AF #0061Af */ +/* #4582ec #118acb #0082CA */ +/* #5B0091 #0B1F8F #1d1651 */ +/* #b8e2de #e7f6fd #F2F2F2 */ +/* #D1D1D1 #666666 */ +[data-md-color-scheme="alcf"] { + /* Colors */ + --md-primary-fg-color: #0261AF; + --md-default-heading-color: #1d1651; /* added this setting in 2025; removed hardcoded versions from below */ + --md-primary-fg-color--light: #FFFFFF; + --md-primary-fg-color--dark: #080813; + /* --md-accent-fg-color: #118ACB; --- modified in 2025 to slightly darker blue, line below */ + --md-accent-fg-color: #0261AF; + --md-accent-fg-color--transparent: hsla(#{hex2hsl($md-accent-fg-color)}, 0.1); + --md-accent-bg-color: hsla(0, 0%, 100%, 1); + --md-accent-bg-color--light: hsla(0, 0%, 100%, 0.7); +} + +[data-md-color-scheme="slate"] { + --md-typeset-a-color: #badef5; + --md-default-heading-color: #b8e2de; + --md-primary-fg-color: #1A1C23; + --md-default-bg-color: #111317; + /* --md-default-bg-color: hsla(var(--md-hue), 15%, 14%, 1); */ + --md-default-fg-color: hsla(var(--md-hue), 15%, 90%, 0.82); + --md-default-fg-color--light: hsla(var(--md-hue), 15%, 90%, 0.56); + --md-default-fg-color--lighter: hsla(var(--md-hue), 15%, 90%, 0.32); + --md-default-fg-color--lightest: hsla(var(--md-hue), 15%, 90%, 0.12); + --md-default-bg-color--light: hsla(var(--md-hue), 15%, 14%, 0.54); + --md-default-bg-color--lighter: hsla(var(--md-hue), 15%, 14%, 0.26); + --md-default-bg-color--lightest: hsla(var(--md-hue), 15%, 14%, 0.07); + --md-code-fg-color: hsla(var(--md-hue), 18%, 86%, 0.82); + --md-code-bg-color: hsla(var(--md-hue), 15%, 18%, 1); + --md-code-hl-color: #2977ff; + --md-code-hl-color--light: #2977ff1a; + --md-code-hl-number-color: #e6695b; + --md-code-hl-special-color: #f06090; + --md-code-hl-function-color: #c973d9; + --md-code-hl-constant-color: #9383e2; + --md-code-hl-keyword-color: #6791e0; + --md-code-hl-string-color: #2fb170; + --md-code-hl-name-color: var(--md-code-fg-color); + --md-code-hl-operator-color: var(--md-default-fg-color--light); + --md-code-hl-punctuation-color: var(--md-default-fg-color--light); + --md-code-hl-comment-color: var(--md-default-fg-color--light); + --md-code-hl-generic-color: var(--md-default-fg-color--light); + --md-code-hl-variable-color: var(--md-default-fg-color--light); + --md-typeset-color: var(--md-default-fg-color); + --md-typeset-kbd-color: hsla(var(--md-hue), 15%, 90%, 0.12); + --md-typeset-kbd-accent-color: hsla(var(--md-hue), 15%, 90%, 0.2); + --md-typeset-kbd-border-color: hsla(var(--md-hue), 15%, 14%, 1); + --md-typeset-mark-color: #4287ff4d; + --md-typeset-table-color: hsla(var(--md-hue), 15%, 95%, 0.12); + --md-typeset-table-color--light: hsla(var(--md-hue), 15%, 95%, 0.035); + --md-admonition-fg-color: var(--md-default-fg-color); + --md-admonition-bg-color: var(--md-default-bg-color); + --md-footer-bg-color: hsla(var(--md-hue), 15%, 10%, 0.87); + --md-footer-bg-color--dark: hsla(var(--md-hue), 15%, 8%, 1); + --md-shadow-z1: 0 0.2rem 0.5rem #0000000d, 0 0 0.05rem #0000001a; + --md-shadow-z2: 0 0.2rem 0.5rem #00000040, 0 0 0.05rem #00000040; + --md-shadow-z3: 0 0.2rem 0.5rem #0006, 0 0 0.05rem #00000059; + color-scheme: dark; +} /* typography */ body { font-family: proxima-nova, sans-serif; } -.md-typeset h1, .md-typeset h2, .md-typeset h3 { - font-weight: 600; + +.md-header__inner .md-logo img { + height: auto; + width: 105 !important; } -.md-typeset h1, .md-typeset h2 { - color: #1d1651; +.md-header__inner { + align-items: center; + display: flex; + padding-inline: 5pt; +} + + +.md-typeset h1, +.md-typeset h2, +.md-typeset h3 { + font-weight: 600; +} + +.md-typeset h1, +.md-typeset h2 { + /* color: #1d1651; */ + color: var(--md-default-heading-color); } .md-typeset h1 { - border-bottom: 1px solid rgb(216, 220, 225); + border-bottom: 1px solid rgb(216, 220, 225); /* add dividing line after page h1 titles */ padding-bottom: .75rem; margin: 0; } - .md-typeset p, .md-typeset li { font-size: 19px; line-height: 27px; @@ -42,7 +115,6 @@ body { /* margin-block-start: 0; */ /* } */ - .md-typeset ul { list-style-type: disc; } @@ -63,8 +135,6 @@ body { } - - /* layout(ish) */ .md-content__inner { @@ -80,7 +150,41 @@ body { width: 100px; } +/* following 4x added in 2025: */ +.md-tabs__item { + height: auto; + padding-left: .6rem; + padding-right: .6rem; +} + +.md-header__button { + color: currentcolor; + cursor: pointer; + /* margin: .2rem; */ + outline-color: var(--md-accent-fg-color); + padding: .4rem; + position: relative; + transition: opacity .25s; + vertical-align: middle; + z-index: 1; +} + +.md-tabs__link { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + display: flex; + font-size: 0.75rem; + margin-top: auto; + outline-color: var(--md-accent-fg-color); + outline-offset: .2rem; + transition: transform .4s cubic-bezier(.1, .7, .1, 1), opacity .25s; + padding-block: 5pt; +} + +.md-header__button.md-logo { + padding-inline-start: 3px; +} /* primary header */ @@ -105,8 +209,6 @@ body { } - - .header--primary .grid{ position: relative; display: grid; From ebb95e27cf8ab75c9a0e8c80f77f0e0ab6ab3ebf Mon Sep 17 00:00:00 2001 From: Kyle Gerard Felker Date: Thu, 13 Feb 2025 12:41:32 -0600 Subject: [PATCH 32/32] Capitalization --- mkdocs.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 8ad4d1e0b..494005af7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -41,6 +41,7 @@ theme: - content.action.view - content.code.copy - content.code.annotate + - content.tooltips #- content.code.select # insiders-4.32.0 - navigation.indexes - navigation.instant @@ -168,7 +169,7 @@ nav: - Job Scheduling and Execution: running-jobs/job-and-queue-scheduling.md - Example Job Scripts: running-jobs/example-job-scripts.md - Machine Reservations: running-jobs/machine-reservations.md - - Cobalt to PBS option Comparison: running-jobs/pbs-qsub-options-table.md + - Cobalt to PBS- Comparing Options: running-jobs/pbs-qsub-options-table.md - Machines: - Aurora: