diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000..6e68142 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 374eac2a491c1b044bdea554a19923be +tags: d77d1c0d9ca2f4c8421862c7c5a0d620 diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index ef24834..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,24 +0,0 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file - -version: 2 -updates: - - package-ecosystem: "pip" - directory: "/" - schedule: - interval: "weekly" - day: "saturday" - time: "16:00" - ignore: - - dependency-name: '*' - update-types: ['version-update:semver-patch'] - labels: ['dependencies'] - - package-ecosystem: "github-actions" # See documentation for possible values - directory: "/" # Location of package manifests - schedule: - interval: "weekly" - day: "saturday" - time: "16:00" - labels: ["dependencies"] \ No newline at end of file diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index 3e9c8ec..0000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,42 +0,0 @@ ---- -name: CI - -on: - pull_request: - branches: - - main - -jobs: - deploy: - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v5 - - - name: Install uv - uses: astral-sh/setup-uv@v6 - - - name: Set Locale - run: | - sudo apt-get update && sudo apt-get install tzdata locales -y - sudo locale-gen es_ES.UTF-8 - sudo localectl set-locale LANG="es_ES.UTF-8" - export LANG="es_ES.UTF-8" - export LANGUAGE="es_ES.UTF-8" - sudo update-locale - locale -a - locale - locale -c -k LC_NUMERIC - localectl status - - - name: Install graphviz - run: | - sudo apt-get install graphviz nodejs npm - - - name: Install Dependencies - run: | - uv sync - npm install - - - name: Build Blog - run: | - uv run poe build diff --git a/.github/workflows/deploy-site.yml b/.github/workflows/deploy-site.yml deleted file mode 100644 index 398f368..0000000 --- a/.github/workflows/deploy-site.yml +++ /dev/null @@ -1,55 +0,0 @@ ---- -name: Deploy Python Perú to GitHub Pages - -on: - push: - branches: - - main - -permissions: - contents: write - -jobs: - deploy: - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v5 - - - name: Install uv - uses: astral-sh/setup-uv@v6 - - - name: Set Locale - run: | - sudo apt-get update && sudo apt-get install tzdata locales -y && sudo locale-gen es_ES.UTF-8 - sudo localectl set-locale LANG="es_ES.UTF-8" - export LANG="es_ES.UTF-8" - export LANGUAGE="es_ES.UTF-8" - sudo update-locale - locale -a - locale - locale -c -k LC_NUMERIC - localectl status - - - name: Install graphviz - run: | - sudo apt-get install graphviz nodejs npm - - - name: Install Dependencies - run: | - uv sync - npm install - - - name: Build Blog - run: | - uv run poe build - - - name: Publish to GitHub Pages - uses: peaceiris/actions-gh-pages@v4 - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} - with: - publish_branch: gh-pages - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: _website/ - exclude_assets: '.github' - force_orphan: true - cname: python.pe diff --git a/.gitignore b/.gitignore deleted file mode 100644 index f747999..0000000 --- a/.gitignore +++ /dev/null @@ -1,219 +0,0 @@ -# Created by https://www.toptal.com/developers/gitignore/api/macos,python -# Edit at https://www.toptal.com/developers/gitignore?templates=macos,python - -### macOS ### -# General -.DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -### macOS Patch ### -# iCloud generated files -*.icloud - -### Python ### -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -.python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# poetry -# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control -#poetry.lock - -# pdm -# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. -#pdm.lock -# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it -# in version control. -# https://pdm.fming.dev/#use-with-ide -.pdm.toml - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Cython debug symbols -cython_debug/ - -# PyCharm -# JetBrains specific template is maintained in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ - -### Python Patch ### -# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration -poetry.toml - -# ruff -.ruff_cache/ - -# LSP config files -pyrightconfig.json - -# End of https://www.toptal.com/developers/gitignore/api/macos,python - -# ablog -_website/ -.doctrees/ - -# python.pe -_static/images/gravatar/ -_static/images/sketchviz/ - -node_modules/ \ No newline at end of file diff --git a/_templates/ablog/catalog.html b/.nojekyll similarity index 100% rename from _templates/ablog/catalog.html rename to .nojekyll diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index aa67cd9..0000000 --- a/AUTHORS +++ /dev/null @@ -1,16 +0,0 @@ -Joe Doe(joe) -Ider Delzo(soloidx) -Jean-Pierre Chauvel(hellhound) -Nefi Arroyo(nefi) -Jonathan Bolo(jbolo) -Sergio Infante(neosergio) -Antonio Ognio(gnrfan) -Richard Cancino(richi) -Oscar Giraldo Castillo(oscargicast) -Jean Pierre Mandujano Gutierrez(manduinca) -Jonatan Tisnado(jotisa) -Darwin Vasquez (darwin) -Mario Inga (mario21ic) -Erick Navarro (erickgnavar) -Miguel Angel Fernández Rodríguez(Mangel) -Miguel Ángel Fernández Rodríguez(Mangel) \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..0852a26 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +python.pe diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 3e01f11..0000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2024 Python Perú - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/README.md b/README.md deleted file mode 100644 index 0cc79a5..0000000 --- a/README.md +++ /dev/null @@ -1,75 +0,0 @@ -# Python Peru's Website - -## Install build tools - -To build, first you need to install graphviz: - -1. macOS with Homebrew - -```sh -brew install graphviz -``` - -2. macOS with MacPorts - -```sh -sudo port install graphviz -``` - -3. apt-based Linux distribution - -```sh -sudo apt install graphviz -``` - -Then make sure you have installed node and npm - -1. macOS with Homebrew - -```sh -brew install node -``` - -2. macOS with MacPorts - -```sh -sudo port install nodejs21 npm10 -``` - -3. apt-based Linux distribution - -```sh -sudo apt install nodejs npm -``` - -Install sketchviz - -```sh -npm i -``` - -Install `uv`, follow the instructions in their documentation -https://docs.astral.sh/uv/getting-started/installation/, `uv` will handle all -the dependencies and the python installation as well. So we don't need to -install `python` separately. - -Then install all the necessary packages (make sure to change to the root -directory of the project): - -```shell -uv sync -``` - -## Building the site - -You can build the html files of the blog by running the following command: - -```shell -uv run poe build -``` - -Then you can serve the files locally using this command: - -```sh -uv run ablog serve -``` diff --git a/_images/2023-10-21-segundo-meetup.png b/_images/2023-10-21-segundo-meetup.png new file mode 100644 index 0000000..b07aec3 Binary files /dev/null and b/_images/2023-10-21-segundo-meetup.png differ diff --git a/_images/2024-06-11-meetup-headline.jpeg b/_images/2024-06-11-meetup-headline.jpeg new file mode 100644 index 0000000..85ff528 Binary files /dev/null and b/_images/2024-06-11-meetup-headline.jpeg differ diff --git a/_images/2024-06-11-speakers.jpeg b/_images/2024-06-11-speakers.jpeg new file mode 100644 index 0000000..9242c36 Binary files /dev/null and b/_images/2024-06-11-speakers.jpeg differ diff --git a/_images/2024-12-12-ultimo-byte-meetup.webp b/_images/2024-12-12-ultimo-byte-meetup.webp new file mode 100644 index 0000000..c72baf4 Binary files /dev/null and b/_images/2024-12-12-ultimo-byte-meetup.webp differ diff --git a/_images/2025-01-24-primer-meetup.webp b/_images/2025-01-24-primer-meetup.webp new file mode 100644 index 0000000..6455250 Binary files /dev/null and b/_images/2025-01-24-primer-meetup.webp differ diff --git a/_images/2025-08-07-segundo-meetup.webp b/_images/2025-08-07-segundo-meetup.webp new file mode 100644 index 0000000..549ff74 Binary files /dev/null and b/_images/2025-08-07-segundo-meetup.webp differ diff --git a/_images/main_image.png b/_images/main_image.png new file mode 100644 index 0000000..eabf54e Binary files /dev/null and b/_images/main_image.png differ diff --git a/about.md b/_sources/about.md.txt similarity index 100% rename from about.md rename to _sources/about.md.txt diff --git a/blog/events/2023-10-21-segundo-meetup.md b/_sources/blog/events/2023-10-21-segundo-meetup.md.txt similarity index 100% rename from blog/events/2023-10-21-segundo-meetup.md rename to _sources/blog/events/2023-10-21-segundo-meetup.md.txt diff --git a/blog/events/2024-06-11-primer-meetup-presencial-2004.md b/_sources/blog/events/2024-06-11-primer-meetup-presencial-2004.md.txt similarity index 100% rename from blog/events/2024-06-11-primer-meetup-presencial-2004.md rename to _sources/blog/events/2024-06-11-primer-meetup-presencial-2004.md.txt diff --git a/blog/events/2024-12-12-ultimo-byte-meetup.md b/_sources/blog/events/2024-12-12-ultimo-byte-meetup.md.txt similarity index 100% rename from blog/events/2024-12-12-ultimo-byte-meetup.md rename to _sources/blog/events/2024-12-12-ultimo-byte-meetup.md.txt diff --git a/blog/events/2025-01-24-primer-meetup.md b/_sources/blog/events/2025-01-24-primer-meetup.md.txt similarity index 100% rename from blog/events/2025-01-24-primer-meetup.md rename to _sources/blog/events/2025-01-24-primer-meetup.md.txt diff --git a/blog/events/2025-08-07-segundo-meetup.md b/_sources/blog/events/2025-08-07-segundo-meetup.md.txt similarity index 100% rename from blog/events/2025-08-07-segundo-meetup.md rename to _sources/blog/events/2025-08-07-segundo-meetup.md.txt diff --git a/blog/members/darwin.md b/_sources/blog/members/darwin.md.txt similarity index 100% rename from blog/members/darwin.md rename to _sources/blog/members/darwin.md.txt diff --git a/blog/members/draft-member.md b/_sources/blog/members/draft-member.md.txt similarity index 100% rename from blog/members/draft-member.md rename to _sources/blog/members/draft-member.md.txt diff --git a/blog/members/erickgnavar.md b/_sources/blog/members/erickgnavar.md.txt similarity index 100% rename from blog/members/erickgnavar.md rename to _sources/blog/members/erickgnavar.md.txt diff --git a/blog/members/hellhound.md b/_sources/blog/members/hellhound.md.txt similarity index 100% rename from blog/members/hellhound.md rename to _sources/blog/members/hellhound.md.txt diff --git a/blog/members/jbolo.md b/_sources/blog/members/jbolo.md.txt similarity index 100% rename from blog/members/jbolo.md rename to _sources/blog/members/jbolo.md.txt diff --git a/blog/members/jotisa.md b/_sources/blog/members/jotisa.md.txt similarity index 100% rename from blog/members/jotisa.md rename to _sources/blog/members/jotisa.md.txt diff --git a/blog/members/manduinca.md b/_sources/blog/members/manduinca.md.txt similarity index 100% rename from blog/members/manduinca.md rename to _sources/blog/members/manduinca.md.txt diff --git a/blog/members/mangel-de6021aa.md b/_sources/blog/members/mangel-de6021aa.md.txt similarity index 100% rename from blog/members/mangel-de6021aa.md rename to _sources/blog/members/mangel-de6021aa.md.txt diff --git a/blog/members/mario21ic.md b/_sources/blog/members/mario21ic.md.txt similarity index 100% rename from blog/members/mario21ic.md rename to _sources/blog/members/mario21ic.md.txt diff --git a/blog/members/oscargicast.md b/_sources/blog/members/oscargicast.md.txt similarity index 100% rename from blog/members/oscargicast.md rename to _sources/blog/members/oscargicast.md.txt diff --git a/blog/members/richi.md b/_sources/blog/members/richi.md.txt similarity index 100% rename from blog/members/richi.md rename to _sources/blog/members/richi.md.txt diff --git a/blog/members/soloidx.md b/_sources/blog/members/soloidx.md.txt similarity index 100% rename from blog/members/soloidx.md rename to _sources/blog/members/soloidx.md.txt diff --git a/blog/members/zodiacfireworks.md b/_sources/blog/members/zodiacfireworks.md.txt similarity index 100% rename from blog/members/zodiacfireworks.md rename to _sources/blog/members/zodiacfireworks.md.txt diff --git a/code-of-conduct.md b/_sources/code-of-conduct.md.txt similarity index 100% rename from code-of-conduct.md rename to _sources/code-of-conduct.md.txt diff --git a/events.md b/_sources/events.md.txt similarity index 100% rename from events.md rename to _sources/events.md.txt diff --git a/index.md b/_sources/index.md.txt similarity index 100% rename from index.md rename to _sources/index.md.txt diff --git a/learning-path/cloud-devops.md b/_sources/learning-path/cloud-devops.md.txt similarity index 100% rename from learning-path/cloud-devops.md rename to _sources/learning-path/cloud-devops.md.txt diff --git a/learning-path/data-science.md b/_sources/learning-path/data-science.md.txt similarity index 100% rename from learning-path/data-science.md rename to _sources/learning-path/data-science.md.txt diff --git a/learning-path/index.md b/_sources/learning-path/index.md.txt similarity index 100% rename from learning-path/index.md rename to _sources/learning-path/index.md.txt diff --git a/learning-path/machine-learning-ai.md b/_sources/learning-path/machine-learning-ai.md.txt similarity index 100% rename from learning-path/machine-learning-ai.md rename to _sources/learning-path/machine-learning-ai.md.txt diff --git a/learning-path/python-developer.md b/_sources/learning-path/python-developer.md.txt similarity index 100% rename from learning-path/python-developer.md rename to _sources/learning-path/python-developer.md.txt diff --git a/learning-path/web-developer.md b/_sources/learning-path/web-developer.md.txt similarity index 100% rename from learning-path/web-developer.md rename to _sources/learning-path/web-developer.md.txt diff --git a/talk-brainstorming.md b/_sources/talk-brainstorming.md.txt similarity index 100% rename from talk-brainstorming.md rename to _sources/talk-brainstorming.md.txt diff --git a/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css b/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css new file mode 100644 index 0000000..eb19f69 --- /dev/null +++ b/_sphinx_design_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/_sphinx_design_static/design-tabs.js b/_sphinx_design_static/design-tabs.js new file mode 100644 index 0000000..36b38cf --- /dev/null +++ b/_sphinx_design_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_static/base-stemmer.js b/_static/base-stemmer.js new file mode 100644 index 0000000..ca6cca1 --- /dev/null +++ b/_static/base-stemmer.js @@ -0,0 +1,294 @@ +/**@constructor*/ +BaseStemmer = function() { + this.setCurrent = function(value) { + this.current = value; + this.cursor = 0; + this.limit = this.current.length; + this.limit_backward = 0; + this.bra = this.cursor; + this.ket = this.limit; + }; + + this.getCurrent = function() { + return this.current; + }; + + this.copy_from = function(other) { + this.current = other.current; + this.cursor = other.cursor; + this.limit = other.limit; + this.limit_backward = other.limit_backward; + this.bra = other.bra; + this.ket = other.ket; + }; + + this.in_grouping = function(s, min, max) { + if (this.cursor >= this.limit) return false; + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; + this.cursor++; + return true; + }; + + this.in_grouping_b = function(s, min, max) { + if (this.cursor <= this.limit_backward) return false; + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) return false; + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false; + this.cursor--; + return true; + }; + + this.out_grouping = function(s, min, max) { + if (this.cursor >= this.limit) return false; + var ch = this.current.charCodeAt(this.cursor); + if (ch > max || ch < min) { + this.cursor++; + return true; + } + ch -= min; + if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) { + this.cursor++; + return true; + } + return false; + }; + + this.out_grouping_b = function(s, min, max) { + if (this.cursor <= this.limit_backward) return false; + var ch = this.current.charCodeAt(this.cursor - 1); + if (ch > max || ch < min) { + this.cursor--; + return true; + } + ch -= min; + if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) { + this.cursor--; + return true; + } + return false; + }; + + this.eq_s = function(s) + { + if (this.limit - this.cursor < s.length) return false; + if (this.current.slice(this.cursor, this.cursor + s.length) != s) + { + return false; + } + this.cursor += s.length; + return true; + }; + + this.eq_s_b = function(s) + { + if (this.cursor - this.limit_backward < s.length) return false; + if (this.current.slice(this.cursor - s.length, this.cursor) != s) + { + return false; + } + this.cursor -= s.length; + return true; + }; + + /** @return {number} */ this.find_among = function(v) + { + var i = 0; + var j = v.length; + + var c = this.cursor; + var l = this.limit; + + var common_i = 0; + var common_j = 0; + + var first_key_inspected = false; + + while (true) + { + var k = i + ((j - i) >>> 1); + var diff = 0; + var common = common_i < common_j ? common_i : common_j; // smaller + // w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional) + var w = v[k]; + var i2; + for (i2 = common; i2 < w[0].length; i2++) + { + if (c + common == l) + { + diff = -1; + break; + } + diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2); + if (diff != 0) break; + common++; + } + if (diff < 0) + { + j = k; + common_j = common; + } + else + { + i = k; + common_i = common; + } + if (j - i <= 1) + { + if (i > 0) break; // v->s has been inspected + if (j == i) break; // only one item in v + + // - but now we need to go round once more to get + // v->s inspected. This looks messy, but is actually + // the optimal approach. + + if (first_key_inspected) break; + first_key_inspected = true; + } + } + do { + var w = v[i]; + if (common_i >= w[0].length) + { + this.cursor = c + w[0].length; + if (w.length < 4) return w[2]; + var res = w[3](this); + this.cursor = c + w[0].length; + if (res) return w[2]; + } + i = w[1]; + } while (i >= 0); + return 0; + }; + + // find_among_b is for backwards processing. Same comments apply + this.find_among_b = function(v) + { + var i = 0; + var j = v.length + + var c = this.cursor; + var lb = this.limit_backward; + + var common_i = 0; + var common_j = 0; + + var first_key_inspected = false; + + while (true) + { + var k = i + ((j - i) >> 1); + var diff = 0; + var common = common_i < common_j ? common_i : common_j; + var w = v[k]; + var i2; + for (i2 = w[0].length - 1 - common; i2 >= 0; i2--) + { + if (c - common == lb) + { + diff = -1; + break; + } + diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2); + if (diff != 0) break; + common++; + } + if (diff < 0) + { + j = k; + common_j = common; + } + else + { + i = k; + common_i = common; + } + if (j - i <= 1) + { + if (i > 0) break; + if (j == i) break; + if (first_key_inspected) break; + first_key_inspected = true; + } + } + do { + var w = v[i]; + if (common_i >= w[0].length) + { + this.cursor = c - w[0].length; + if (w.length < 4) return w[2]; + var res = w[3](this); + this.cursor = c - w[0].length; + if (res) return w[2]; + } + i = w[1]; + } while (i >= 0); + return 0; + }; + + /* to replace chars between c_bra and c_ket in this.current by the + * chars in s. + */ + this.replace_s = function(c_bra, c_ket, s) + { + var adjustment = s.length - (c_ket - c_bra); + this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket); + this.limit += adjustment; + if (this.cursor >= c_ket) this.cursor += adjustment; + else if (this.cursor > c_bra) this.cursor = c_bra; + return adjustment; + }; + + this.slice_check = function() + { + if (this.bra < 0 || + this.bra > this.ket || + this.ket > this.limit || + this.limit > this.current.length) + { + return false; + } + return true; + }; + + this.slice_from = function(s) + { + var result = false; + if (this.slice_check()) + { + this.replace_s(this.bra, this.ket, s); + result = true; + } + return result; + }; + + this.slice_del = function() + { + return this.slice_from(""); + }; + + this.insert = function(c_bra, c_ket, s) + { + var adjustment = this.replace_s(c_bra, c_ket, s); + if (c_bra <= this.bra) this.bra += adjustment; + if (c_bra <= this.ket) this.ket += adjustment; + }; + + this.slice_to = function() + { + var result = ''; + if (this.slice_check()) + { + result = this.current.slice(this.bra, this.ket); + } + return result; + }; + + this.assign_to = function() + { + return this.current.slice(0, this.limit); + }; +}; diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 0000000..30fee9d --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 0000000..92fad4b --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 0000000..54b3c46 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 0000000..f1916ec --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 0000000..2ea7ff3 --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 0000000..dbe1aaa --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css b/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css new file mode 100644 index 0000000..eb19f69 --- /dev/null +++ b/_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem} diff --git a/_static/design-tabs.js b/_static/design-tabs.js new file mode 100644 index 0000000..36b38cf --- /dev/null +++ b/_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 0000000..d06a71d --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 0000000..73a0066 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'es', + COLLAPSE_INDEX: false, + BUILDER: 'dirhtml', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/favicon-48x48.png b/_static/favicon-48x48.png new file mode 100644 index 0000000..38d94ba Binary files /dev/null and b/_static/favicon-48x48.png differ diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000..a858a41 Binary files /dev/null and b/_static/file.png differ diff --git a/_static/images/sketchviz/36852b42d61a6c6af8b74ae935bdcb51200f80a4294cfa81e9425d100a36df8c.svg b/_static/images/sketchviz/36852b42d61a6c6af8b74ae935bdcb51200f80a4294cfa81e9425d100a36df8c.svg new file mode 100644 index 0000000..4e72e7c --- /dev/null +++ b/_static/images/sketchviz/36852b42d61a6c6af8b74ae935bdcb51200f80a4294cfa81e9425d100a36df8c.svg @@ -0,0 +1,81 @@ + + +G + + +cluster_basic_python + + + + +bp3 + + +📹 6 Proyectos de Python Básicos +Curso Completo Paso a Paso + + + + + +bp2 + + +📝 Estructura del proyecto +para una aplicación Python + + + + + +bp1 + + +📝 25 Proyectos en Python +para principiantes: +Ideas para comenzar +a programar en Python + + + + + +basic_projects + +Proyectos +Básicos + + + +basic_projects->bp3 + + + + + +basic_projects->bp2 + + + + + +basic_projects->bp1 + + + + + \ No newline at end of file diff --git a/_static/images/sketchviz/9c0ed9e4ee4a34fe6b11903d62aa1a04fc618625e76654838eafb153519c87da.svg b/_static/images/sketchviz/9c0ed9e4ee4a34fe6b11903d62aa1a04fc618625e76654838eafb153519c87da.svg new file mode 100644 index 0000000..de1cf4a --- /dev/null +++ b/_static/images/sketchviz/9c0ed9e4ee4a34fe6b11903d62aa1a04fc618625e76654838eafb153519c87da.svg @@ -0,0 +1,94 @@ + + +G + + +cluster_basic_python + + + + +as4 + + +🧑‍💻 How to Do a Binary Search in Python* + + + + + +as3 + + +🧑‍💻 30 days of Python* + + + + + +as2 + + +📗 Data Structures & Algorithms +in Python* + + + + + +as1 + + +📝 Estructuras de datos: +Una guía completa con ejemplos en Python + + + + + +algostruct + +Estructura de Datos +y +Algoritmos Básicos + + + +algostruct->as4 + + + + + +algostruct->as3 + + + + + +algostruct->as2 + + + + + +algostruct->as1 + + + + + \ No newline at end of file diff --git a/_static/images/sketchviz/a6ed3cf33f0ab44a6d84a5e2410263e248ac67501ba6e8ab35de1bdf3baaac5f.svg b/_static/images/sketchviz/a6ed3cf33f0ab44a6d84a5e2410263e248ac67501ba6e8ab35de1bdf3baaac5f.svg new file mode 100644 index 0000000..c006789 --- /dev/null +++ b/_static/images/sketchviz/a6ed3cf33f0ab44a6d84a5e2410263e248ac67501ba6e8ab35de1bdf3baaac5f.svg @@ -0,0 +1,235 @@ + + +G + +cluster_advanced_python + + + + +lc3 + +Tópico 18 + + + +lc2 + +Tópico 17 + + + +lc1 + +Tópico 16 + + + +db3 + +Tópico 15 + + + +db2 + +Tópico 14 + + + +db1 + +Tópico 13 + + + +pp3 + +Tópico 12 + + + +pp2 + +Tópico 11 + + + +pp1 + +Tópico 10 + + + +cl3 + +Tópico 9 + + + +cl2 + +Tópico 8 + + + +cl1 + +Tópico 7 + + + +dp3 + +Tópico 6 + + + +dp2 + +Tópico 5 + + + +dp1 + +Tópico 4 + + + +design_patterns + +Patrones de Diseño +en Python + + + +design_patterns->dp3 + + + + + +design_patterns->dp2 + + + + + +design_patterns->dp1 + + + + + +command_line + +Línea de Comandos +en Python + + + +command_line->cl3 + + + + + +command_line->cl2 + + + + + +command_line->cl1 + + + + + +python_projects + +Proyectos en Python + + + +python_projects->pp3 + + + + + +python_projects->pp2 + + + + + +python_projects->pp1 + + + + + +db + +Bases de Datos + + + +db->db3 + + + + + +db->db2 + + + + + +db->db1 + + + + + +leetcode + +Leetcode + + + +leetcode->lc3 + + + + + +leetcode->lc2 + + + + + +leetcode->lc1 + + + + + \ No newline at end of file diff --git a/_static/images/sketchviz/a8d195f2b42ebf38736de879086102e4d23eb80ee284d380b96fa732b49a3a90.svg b/_static/images/sketchviz/a8d195f2b42ebf38736de879086102e4d23eb80ee284d380b96fa732b49a3a90.svg new file mode 100644 index 0000000..fcf42d6 --- /dev/null +++ b/_static/images/sketchviz/a8d195f2b42ebf38736de879086102e4d23eb80ee284d380b96fa732b49a3a90.svg @@ -0,0 +1,203 @@ + + +G + +cluster_python + + +Desarrollador Python + + + + +cluster_web + + +Desarrollador Web + + + + +cluster_science + + +Ciencias de Datos + + + + +cluster_devops + + +Cloud y DevOps + + + + +cluster_ml + + +Machine Learning e IA + + + + + +p_1 + + +Python Básico + + + + + +p_2 + + +Python Avanzado + + + + + +p_1->p_2 + + + + + +d_1 + + +Desarrollador I + + + + + +p_2->d_1 + + + + + +ds_1 + + +Ciencias de Datos Básico + + + + + +p_2->ds_1 + + + + + +d_2 + + +Desarrollador II + + + + + +d_1->d_2 + + + + + +dv_1 + + +Despliegue + + + + + +d_2->dv_1 + + + + + +ds_2 + + +Ciencias de Datos Avanzado + + + + + +ds_1->ds_2 + + + + + +ml_1 + + +ML Básico + + + + + +ds_2->ml_1 + + + + + +dv_2 + + +Cloud + + + + + +dv_1->dv_2 + + + + + +ml_2 + + +ML Avanzado + + + + + +ml_1->ml_2 + + + + + \ No newline at end of file diff --git a/_static/images/sketchviz/c080749e8617ffc3e5cc3a5d0ba7a14ad0100459090b85a004afbed70137c75f.svg b/_static/images/sketchviz/c080749e8617ffc3e5cc3a5d0ba7a14ad0100459090b85a004afbed70137c75f.svg new file mode 100644 index 0000000..f708520 --- /dev/null +++ b/_static/images/sketchviz/c080749e8617ffc3e5cc3a5d0ba7a14ad0100459090b85a004afbed70137c75f.svg @@ -0,0 +1,60 @@ + + +G + + +cluster_basic_python + + + + +cc2 + + +📝 Clean Code in Python* + + + + + +cc1 + + +📝 Guía en Español: Clean Code Python + + + + + +clean_code + +Clean Code + + + +clean_code->cc2 + + + + + +clean_code->cc1 + + + + + \ No newline at end of file diff --git a/_static/images/sketchviz/f0bc7359125693d044168c8e6524caf9e7a623bd1e71d253d64ef4fb1539172b.svg b/_static/images/sketchviz/f0bc7359125693d044168c8e6524caf9e7a623bd1e71d253d64ef4fb1539172b.svg new file mode 100644 index 0000000..8cc2db9 --- /dev/null +++ b/_static/images/sketchviz/f0bc7359125693d044168c8e6524caf9e7a623bd1e71d253d64ef4fb1539172b.svg @@ -0,0 +1,92 @@ + + +G + + +cluster_basic_python + + + + +cc4 + + +‍💻 Advanced Data Structures +with Python* + + + + + +cc3 + + +📝 Basic Data Structures* + + + + + +cc2 + + +📗 Grokking Algoritms* + + + + + +cc1 + + +🎓 Algoritmos avanzados con Python + + + + + +clean_code + +Estructura de datos +y algoritmos avanzados + + + +clean_code->cc4 + + + + + +clean_code->cc3 + + + + + +clean_code->cc2 + + + + + +clean_code->cc1 + + + + + \ No newline at end of file diff --git a/_static/images/sketchviz/f4f7e3bb952c06436ca9de2e7d784fdc51e49c96f63f8a43ae8fe6382bba4e66.svg b/_static/images/sketchviz/f4f7e3bb952c06436ca9de2e7d784fdc51e49c96f63f8a43ae8fe6382bba4e66.svg new file mode 100644 index 0000000..6ff3b44 --- /dev/null +++ b/_static/images/sketchviz/f4f7e3bb952c06436ca9de2e7d784fdc51e49c96f63f8a43ae8fe6382bba4e66.svg @@ -0,0 +1,93 @@ + + +G + + +cluster_basic_python + + + + +f4 + + +🧑‍💻 30 days of Python* + + + + + +f3 + + +🎓 Python para principiantes + (Microsoft) + + + + + +f2 + + +📗 Curso intensivo de python + + + + + +f1 + + +📹 Curso de Python 3 + para verdaderos principiantes + + + + + +fundamentals + +Fundamentos +Básicos de Python + + + +fundamentals->f4 + + + + + +fundamentals->f3 + + + + + +fundamentals->f2 + + + + + +fundamentals->f1 + + + + + \ No newline at end of file diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 0000000..6fef59a --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,19 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "al", "algo", "algunas", "algunos", "ante", "antes", "como", "con", "contra", "cual", "cuando", "de", "del", "desde", "donde", "durante", "e", "el", "ella", "ellas", "ellos", "en", "entre", "era", "erais", "eran", "eras", "eres", "es", "esa", "esas", "ese", "eso", "esos", "esta", "estaba", "estabais", "estaban", "estabas", "estad", "estada", "estadas", "estado", "estados", "estamos", "estando", "estar", "estaremos", "estar\u00e1", "estar\u00e1n", "estar\u00e1s", "estar\u00e9", "estar\u00e9is", "estar\u00eda", "estar\u00edais", "estar\u00edamos", "estar\u00edan", "estar\u00edas", "estas", "este", "estemos", "esto", "estos", "estoy", "estuve", "estuviera", "estuvierais", "estuvieran", "estuvieras", "estuvieron", "estuviese", "estuvieseis", "estuviesen", "estuvieses", "estuvimos", "estuviste", "estuvisteis", "estuvi\u00e9ramos", "estuvi\u00e9semos", "estuvo", "est\u00e1", "est\u00e1bamos", "est\u00e1is", "est\u00e1n", "est\u00e1s", "est\u00e9", "est\u00e9is", "est\u00e9n", "est\u00e9s", "fue", "fuera", "fuerais", "fueran", "fueras", "fueron", "fuese", "fueseis", "fuesen", "fueses", "fui", "fuimos", "fuiste", "fuisteis", "fu\u00e9ramos", "fu\u00e9semos", "ha", "habida", "habidas", "habido", "habidos", "habiendo", "habremos", "habr\u00e1", "habr\u00e1n", "habr\u00e1s", "habr\u00e9", "habr\u00e9is", "habr\u00eda", "habr\u00edais", "habr\u00edamos", "habr\u00edan", "habr\u00edas", "hab\u00e9is", "hab\u00eda", "hab\u00edais", "hab\u00edamos", "hab\u00edan", "hab\u00edas", "han", "has", "hasta", "hay", "haya", "hayamos", "hayan", "hayas", "hay\u00e1is", "he", "hemos", "hube", "hubiera", "hubierais", "hubieran", "hubieras", "hubieron", "hubiese", "hubieseis", "hubiesen", "hubieses", "hubimos", "hubiste", "hubisteis", "hubi\u00e9ramos", "hubi\u00e9semos", "hubo", "la", "las", "le", "les", "lo", "los", "me", "mi", "mis", "mucho", "muchos", "muy", "m\u00e1s", "m\u00ed", "m\u00eda", "m\u00edas", "m\u00edo", "m\u00edos", "nada", "ni", "no", "nos", "nosotras", "nosotros", "nuestra", "nuestras", "nuestro", "nuestros", "o", "os", "otra", "otras", "otro", "otros", "para", "pero", "poco", "por", "porque", "que", "quien", "quienes", "qu\u00e9", "se", "sea", "seamos", "sean", "seas", "seremos", "ser\u00e1", "ser\u00e1n", "ser\u00e1s", "ser\u00e9", "ser\u00e9is", "ser\u00eda", "ser\u00edais", "ser\u00edamos", "ser\u00edan", "ser\u00edas", "se\u00e1is", "sido", "siendo", "sin", "sobre", "sois", "somos", "son", "soy", "su", "sus", "suya", "suyas", "suyo", "suyos", "s\u00ed", "tambi\u00e9n", "tanto", "te", "tendremos", "tendr\u00e1", "tendr\u00e1n", "tendr\u00e1s", "tendr\u00e9", "tendr\u00e9is", "tendr\u00eda", "tendr\u00edais", "tendr\u00edamos", "tendr\u00edan", "tendr\u00edas", "tened", "tenemos", "tenga", "tengamos", "tengan", "tengas", "tengo", "teng\u00e1is", "tenida", "tenidas", "tenido", "tenidos", "teniendo", "ten\u00e9is", "ten\u00eda", "ten\u00edais", "ten\u00edamos", "ten\u00edan", "ten\u00edas", "ti", "tiene", "tienen", "tienes", "todo", "todos", "tu", "tus", "tuve", "tuviera", "tuvierais", "tuvieran", "tuvieras", "tuvieron", "tuviese", "tuvieseis", "tuviesen", "tuvieses", "tuvimos", "tuviste", "tuvisteis", "tuvi\u00e9ramos", "tuvi\u00e9semos", "tuvo", "tuya", "tuyas", "tuyo", "tuyos", "t\u00fa", "un", "una", "uno", "unos", "vosotras", "vosotros", "vuestra", "vuestras", "vuestro", "vuestros", "y", "ya", "yo", "\u00e9l", "\u00e9ramos"]; + + +/* Non-minified version is copied as a separate JS file, is available */ +BaseStemmer=function(){this.setCurrent=function(r){this.current=r;this.cursor=0;this.limit=this.current.length;this.limit_backward=0;this.bra=this.cursor;this.ket=this.limit};this.getCurrent=function(){return this.current};this.copy_from=function(r){this.current=r.current;this.cursor=r.cursor;this.limit=r.limit;this.limit_backward=r.limit_backward;this.bra=r.bra;this.ket=r.ket};this.in_grouping=function(r,t,i){if(this.cursor>=this.limit)return false;var s=this.current.charCodeAt(this.cursor);if(s>i||s>>3]&1<<(s&7))==0)return false;this.cursor++;return true};this.in_grouping_b=function(r,t,i){if(this.cursor<=this.limit_backward)return false;var s=this.current.charCodeAt(this.cursor-1);if(s>i||s>>3]&1<<(s&7))==0)return false;this.cursor--;return true};this.out_grouping=function(r,t,i){if(this.cursor>=this.limit)return false;var s=this.current.charCodeAt(this.cursor);if(s>i||s>>3]&1<<(s&7))==0){this.cursor++;return true}return false};this.out_grouping_b=function(r,t,i){if(this.cursor<=this.limit_backward)return false;var s=this.current.charCodeAt(this.cursor-1);if(s>i||s>>3]&1<<(s&7))==0){this.cursor--;return true}return false};this.eq_s=function(r){if(this.limit-this.cursor>>1);var a=0;var f=h0)break;if(i==t)break;if(n)break;n=true}}do{var l=r[t];if(h>=l[0].length){this.cursor=s+l[0].length;if(l.length<4)return l[2];var v=l[3](this);this.cursor=s+l[0].length;if(v)return l[2]}t=l[1]}while(t>=0);return 0};this.find_among_b=function(r){var t=0;var i=r.length;var s=this.cursor;var e=this.limit_backward;var h=0;var u=0;var n=false;while(true){var c=t+(i-t>>1);var a=0;var f=h=0;o--){if(s-f==e){a=-1;break}a=this.current.charCodeAt(s-1-f)-l[0].charCodeAt(o);if(a!=0)break;f++}if(a<0){i=c;u=f}else{t=c;h=f}if(i-t<=1){if(t>0)break;if(i==t)break;if(n)break;n=true}}do{var l=r[t];if(h>=l[0].length){this.cursor=s-l[0].length;if(l.length<4)return l[2];var v=l[3](this);this.cursor=s-l[0].length;if(v)return l[2]}t=l[1]}while(t>=0);return 0};this.replace_s=function(r,t,i){var s=i.length-(t-r);this.current=this.current.slice(0,r)+i+this.current.slice(t);this.limit+=s;if(this.cursor>=t)this.cursor+=s;else if(this.cursor>r)this.cursor=r;return s};this.slice_check=function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>this.current.length){return false}return true};this.slice_from=function(r){var t=false;if(this.slice_check()){this.replace_s(this.bra,this.ket,r);t=true}return t};this.slice_del=function(){return this.slice_from("")};this.insert=function(r,t,i){var s=this.replace_s(r,t,i);if(r<=this.bra)this.bra+=s;if(r<=this.ket)this.ket+=s};this.slice_to=function(){var r="";if(this.slice_check()){r=this.current.slice(this.bra,this.ket)}return r};this.assign_to=function(){return this.current.slice(0,this.limit)}}; +SpanishStemmer=function(){var r=new BaseStemmer;var e=[["",-1,6],["á",0,1],["é",0,2],["í",0,3],["ó",0,4],["ú",0,5]];var i=[["la",-1,-1],["sela",0,-1],["le",-1,-1],["me",-1,-1],["se",-1,-1],["lo",-1,-1],["selo",5,-1],["las",-1,-1],["selas",7,-1],["les",-1,-1],["los",-1,-1],["selos",10,-1],["nos",-1,-1]];var a=[["ando",-1,6],["iendo",-1,6],["yendo",-1,7],["ándo",-1,2],["iéndo",-1,1],["ar",-1,6],["er",-1,6],["ir",-1,6],["ár",-1,3],["ér",-1,4],["ír",-1,5]];var s=[["ic",-1,-1],["ad",-1,-1],["os",-1,-1],["iv",-1,1]];var u=[["able",-1,1],["ible",-1,1],["ante",-1,1]];var o=[["ic",-1,1],["abil",-1,1],["iv",-1,1]];var t=[["ica",-1,1],["ancia",-1,2],["encia",-1,5],["adora",-1,2],["osa",-1,1],["ista",-1,1],["iva",-1,9],["anza",-1,1],["logía",-1,3],["idad",-1,8],["able",-1,1],["ible",-1,1],["ante",-1,2],["mente",-1,7],["amente",13,6],["ación",-1,2],["ución",-1,4],["ico",-1,1],["ismo",-1,1],["oso",-1,1],["amiento",-1,1],["imiento",-1,1],["ivo",-1,9],["ador",-1,2],["icas",-1,1],["ancias",-1,2],["encias",-1,5],["adoras",-1,2],["osas",-1,1],["istas",-1,1],["ivas",-1,9],["anzas",-1,1],["logías",-1,3],["idades",-1,8],["ables",-1,1],["ibles",-1,1],["aciones",-1,2],["uciones",-1,4],["adores",-1,2],["antes",-1,2],["icos",-1,1],["ismos",-1,1],["osos",-1,1],["amientos",-1,1],["imientos",-1,1],["ivos",-1,9]];var c=[["ya",-1,1],["ye",-1,1],["yan",-1,1],["yen",-1,1],["yeron",-1,1],["yendo",-1,1],["yo",-1,1],["yas",-1,1],["yes",-1,1],["yais",-1,1],["yamos",-1,1],["yó",-1,1]];var l=[["aba",-1,2],["ada",-1,2],["ida",-1,2],["ara",-1,2],["iera",-1,2],["ía",-1,2],["aría",5,2],["ería",5,2],["iría",5,2],["ad",-1,2],["ed",-1,2],["id",-1,2],["ase",-1,2],["iese",-1,2],["aste",-1,2],["iste",-1,2],["an",-1,2],["aban",16,2],["aran",16,2],["ieran",16,2],["ían",16,2],["arían",20,2],["erían",20,2],["irían",20,2],["en",-1,1],["asen",24,2],["iesen",24,2],["aron",-1,2],["ieron",-1,2],["arán",-1,2],["erán",-1,2],["irán",-1,2],["ado",-1,2],["ido",-1,2],["ando",-1,2],["iendo",-1,2],["ar",-1,2],["er",-1,2],["ir",-1,2],["as",-1,2],["abas",39,2],["adas",39,2],["idas",39,2],["aras",39,2],["ieras",39,2],["ías",39,2],["arías",45,2],["erías",45,2],["irías",45,2],["es",-1,1],["ases",49,2],["ieses",49,2],["abais",-1,2],["arais",-1,2],["ierais",-1,2],["íais",-1,2],["aríais",55,2],["eríais",55,2],["iríais",55,2],["aseis",-1,2],["ieseis",-1,2],["asteis",-1,2],["isteis",-1,2],["áis",-1,2],["éis",-1,1],["aréis",64,2],["eréis",64,2],["iréis",64,2],["ados",-1,2],["idos",-1,2],["amos",-1,2],["ábamos",70,2],["áramos",70,2],["iéramos",70,2],["íamos",70,2],["aríamos",74,2],["eríamos",74,2],["iríamos",74,2],["emos",-1,1],["aremos",78,2],["eremos",78,2],["iremos",78,2],["ásemos",78,2],["iésemos",78,2],["imos",-1,2],["arás",-1,2],["erás",-1,2],["irás",-1,2],["ís",-1,2],["ará",-1,2],["erá",-1,2],["irá",-1,2],["aré",-1,2],["eré",-1,2],["iré",-1,2],["ió",-1,2]];var f=[["a",-1,1],["e",-1,2],["o",-1,1],["os",-1,1],["á",-1,1],["é",-1,2],["í",-1,1],["ó",-1,1]];var n=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,4,10];var b=0;var m=0;var k=0;function _(){k=r.limit;m=r.limit;b=r.limit;var e=r.cursor;r:{e:{var i=r.cursor;i:{if(!r.in_grouping(n,97,252)){break i}a:{var a=r.cursor;s:{if(!r.out_grouping(n,97,252)){break s}u:while(true){o:{if(!r.in_grouping(n,97,252)){break o}break u}if(r.cursor>=r.limit){break s}r.cursor++}break a}r.cursor=a;if(!r.in_grouping(n,97,252)){break i}s:while(true){u:{if(!r.out_grouping(n,97,252)){break u}break s}if(r.cursor>=r.limit){break i}r.cursor++}}break e}r.cursor=i;if(!r.out_grouping(n,97,252)){break r}i:{var s=r.cursor;a:{if(!r.out_grouping(n,97,252)){break a}s:while(true){u:{if(!r.in_grouping(n,97,252)){break u}break s}if(r.cursor>=r.limit){break a}r.cursor++}break i}r.cursor=s;if(!r.in_grouping(n,97,252)){break r}if(r.cursor>=r.limit){break r}r.cursor++}}k=r.cursor}r.cursor=e;var u=r.cursor;r:{e:while(true){i:{if(!r.in_grouping(n,97,252)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(n,97,252)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}m=r.cursor;e:while(true){i:{if(!r.in_grouping(n,97,252)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}e:while(true){i:{if(!r.out_grouping(n,97,252)){break i}break e}if(r.cursor>=r.limit){break r}r.cursor++}b=r.cursor}r.cursor=u;return true}function d(){var i;while(true){var a=r.cursor;r:{r.bra=r.cursor;i=r.find_among(e);if(i==0){break r}r.ket=r.cursor;switch(i){case 1:if(!r.slice_from("a")){return false}break;case 2:if(!r.slice_from("e")){return false}break;case 3:if(!r.slice_from("i")){return false}break;case 4:if(!r.slice_from("o")){return false}break;case 5:if(!r.slice_from("u")){return false}break;case 6:if(r.cursor>=r.limit){break r}r.cursor++;break}continue}r.cursor=a;break}return true}function v(){if(!(k<=r.cursor)){return false}return true}function g(){if(!(m<=r.cursor)){return false}return true}function w(){if(!(b<=r.cursor)){return false}return true}function h(){var e;r.ket=r.cursor;if(r.find_among_b(i)==0){return false}r.bra=r.cursor;e=r.find_among_b(a);if(e==0){return false}if(!v()){return false}switch(e){case 1:r.bra=r.cursor;if(!r.slice_from("iendo")){return false}break;case 2:r.bra=r.cursor;if(!r.slice_from("ando")){return false}break;case 3:r.bra=r.cursor;if(!r.slice_from("ar")){return false}break;case 4:r.bra=r.cursor;if(!r.slice_from("er")){return false}break;case 5:r.bra=r.cursor;if(!r.slice_from("ir")){return false}break;case 6:if(!r.slice_del()){return false}break;case 7:if(!r.eq_s_b("u")){return false}if(!r.slice_del()){return false}break}return true}function p(){var e;r.ket=r.cursor;e=r.find_among_b(t);if(e==0){return false}r.bra=r.cursor;switch(e){case 1:if(!w()){return false}if(!r.slice_del()){return false}break;case 2:if(!w()){return false}if(!r.slice_del()){return false}var i=r.limit-r.cursor;r:{r.ket=r.cursor;if(!r.eq_s_b("ic")){r.cursor=r.limit-i;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-i;break r}if(!r.slice_del()){return false}}break;case 3:if(!w()){return false}if(!r.slice_from("log")){return false}break;case 4:if(!w()){return false}if(!r.slice_from("u")){return false}break;case 5:if(!w()){return false}if(!r.slice_from("ente")){return false}break;case 6:if(!g()){return false}if(!r.slice_del()){return false}var a=r.limit-r.cursor;r:{r.ket=r.cursor;e=r.find_among_b(s);if(e==0){r.cursor=r.limit-a;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-a;break r}if(!r.slice_del()){return false}switch(e){case 1:r.ket=r.cursor;if(!r.eq_s_b("at")){r.cursor=r.limit-a;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-a;break r}if(!r.slice_del()){return false}break}}break;case 7:if(!w()){return false}if(!r.slice_del()){return false}var c=r.limit-r.cursor;r:{r.ket=r.cursor;if(r.find_among_b(u)==0){r.cursor=r.limit-c;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-c;break r}if(!r.slice_del()){return false}}break;case 8:if(!w()){return false}if(!r.slice_del()){return false}var l=r.limit-r.cursor;r:{r.ket=r.cursor;if(r.find_among_b(o)==0){r.cursor=r.limit-l;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-l;break r}if(!r.slice_del()){return false}}break;case 9:if(!w()){return false}if(!r.slice_del()){return false}var f=r.limit-r.cursor;r:{r.ket=r.cursor;if(!r.eq_s_b("at")){r.cursor=r.limit-f;break r}r.bra=r.cursor;if(!w()){r.cursor=r.limit-f;break r}if(!r.slice_del()){return false}}break}return true}function y(){if(r.cursor + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000..d96755f Binary files /dev/null and b/_static/minus.png differ diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000..7107cec Binary files /dev/null and b/_static/plus.png differ diff --git a/_static/print.css b/_static/print.css new file mode 100644 index 0000000..bd88769 --- /dev/null +++ b/_static/print.css @@ -0,0 +1,42 @@ +.sy-head { + position: static; + border-bottom: 1px solid var(--sy-c-divider); +} + +.sy-head-inner { + padding: 0; +} + +.sy-breadcrumbs { + display: none; +} + +h1, h2, h3, h4, h5, h6 { + page-break-inside: avoid; + page-break-after: avoid; +} + +.code-block-caption, +pre, code { + page-break-inside: avoid; + white-space: pre-wrap; + + -webkit-print-color-adjust: exact; +} + +.yue a.headerlink { + display: none; +} + +.highlight .linenos { + box-shadow: none; +} + +.admonition, +.sd-sphinx-override { + -webkit-print-color-adjust: exact; +} + +.sd-card { + page-break-inside: avoid; +} diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 0000000..449a846 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1 @@ +:root{--syntax-pre-bg: var(--accent-a2);--syntax-cap-bg: var(--accent-a3);--syntax-highlight-bg: var(--accent-a3);--syntax-linenos-divider: var(--gray-a6);--syntax-light-text: #24292f;--syntax-light-meta: #807c87;--syntax-light-comment: #6e7781;--syntax-light-constant: #0550ae;--syntax-light-entity: #268bd2;--syntax-light-property: #8250df;--syntax-light-definition: #24292f;--syntax-light-tag: #085;--syntax-light-builtin: #b58900;--syntax-light-keyword: #cf222e;--syntax-light-exception: #e6212e;--syntax-light-string: #0a3069;--syntax-light-regexp: #e40;--syntax-light-variable: #a4480f;--syntax-light-invalid-illegal-text: #f6f8fa;--syntax-light-invalid-illegal-bg: #82071e;--syntax-light-markup-heading: #0550ae;--syntax-light-markup-italic: #24292f;--syntax-light-markup-bold: #24292f;--syntax-light-markup-deleted-text: #82071e;--syntax-light-markup-deleted-bg: #FFEBE9;--syntax-light-markup-inserted-text: #116329;--syntax-light-markup-inserted-bg: #dafbe1;--syntax-light-markup-changed-text: #953800;--syntax-light-markup-changed-bg: #ffd8b5;--syntax-light-markup-ignored-text: #eaeef2;--syntax-light-markup-ignored-bg: #0550ae;--syntax-light-meta-diff-range: #8250df;--syntax-light-special-bg: #dccafa;--syntax-dark-text: #c9d1d9;--syntax-dark-meta: #6e7781;--syntax-dark-comment: #8b949e;--syntax-dark-constant: #79c0ff;--syntax-dark-entity: #47b0fa;--syntax-dark-property: #d2a8ff;--syntax-dark-definition: #c9d1d9;--syntax-dark-tag: #7ee787;--syntax-dark-builtin: #ffd34c;--syntax-dark-keyword: #ff7b72;--syntax-dark-exception: #da473c;--syntax-dark-string: #a5d6ff;--syntax-dark-regexp: #ef954e;--syntax-dark-variable: #ffa657;--syntax-dark-invalid-illegal-text: #f0f6fc;--syntax-dark-invalid-illegal-bg: #8e1519;--syntax-dark-markup-heading: #1f6feb;--syntax-dark-markup-italic: #c9d1d9;--syntax-dark-markup-bold: #c9d1d9;--syntax-dark-markup-deleted-text: #ffdcd7;--syntax-dark-markup-deleted-bg: #67060c;--syntax-dark-markup-inserted-text: #aff5b4;--syntax-dark-markup-inserted-bg: #033a16;--syntax-dark-markup-changed-text: #ffdfb6;--syntax-dark-markup-changed-bg: #5a1e02;--syntax-dark-markup-ignored-text: #c9d1d9;--syntax-dark-markup-ignored-bg: #1158c7;--syntax-dark-meta-diff-range: #d2a8ff;--syntax-dark-special-bg: #4f425d}:root,html.light{--syntax-text: var(--syntax-light-text);--syntax-meta: var(--syntax-light-meta);--syntax-comment: var(--syntax-light-comment);--syntax-constant: var(--syntax-light-constant);--syntax-entity: var(--syntax-light-entity);--syntax-property: var(--syntax-light-property);--syntax-definition: var(--syntax-light-definition);--syntax-tag: var(--syntax-light-tag);--syntax-builtin: var(--syntax-light-builtin);--syntax-keyword: var(--syntax-light-keyword);--syntax-exception: var(--syntax-light-exception);--syntax-string: var(--syntax-light-string);--syntax-regexp: var(--syntax-light-regexp);--syntax-variable: var(--syntax-light-variable);--syntax-invalid-illegal-text: var(--syntax-light-invalid-illegal-text);--syntax-invalid-illegal-bg: var(--syntax-light-invalid-illegal-bg);--syntax-markup-heading: var(--syntax-light-markup-heading);--syntax-markup-italic: var(--syntax-light-markup-italic);--syntax-markup-bold: var(--syntax-light-markup-bold);--syntax-markup-deleted-text: var(--syntax-light-markup-deleted-text);--syntax-markup-deleted-bg: var(--syntax-light-markup-deleted-bg);--syntax-markup-inserted-text: var(--syntax-light-markup-inserted-text);--syntax-markup-inserted-bg: var(--syntax-light-markup-inserted-bg);--syntax-markup-changed-text: var(--syntax-light-markup-changed-text);--syntax-markup-changed-bg: var(--syntax-light-markup-changed-bg);--syntax-markup-ignored-text: var(--syntax-light-markup-ignored-text);--syntax-markup-ignored-bg: var(--syntax-light-markup-ignored-bg);--syntax-meta-diff-range: var(--syntax-light-meta-diff-range);--syntax-special-bg: var(--syntax-light-special-bg)}@media (prefers-color-scheme: dark){:root{--syntax-text: var(--syntax-dark-text);--syntax-meta: var(--syntax-dark-meta);--syntax-comment: var(--syntax-dark-comment);--syntax-constant: var(--syntax-dark-constant);--syntax-entity: var(--syntax-dark-entity);--syntax-property: var(--syntax-dark-property);--syntax-definition: var(--syntax-dark-definition);--syntax-tag: var(--syntax-dark-tag);--syntax-builtin: var(--syntax-dark-builtin);--syntax-keyword: var(--syntax-dark-keyword);--syntax-exception: var(--syntax-dark-exception);--syntax-string: var(--syntax-dark-string);--syntax-regexp: var(--syntax-dark-regexp);--syntax-variable: var(--syntax-dark-variable);--syntax-invalid-illegal-text: var(--syntax-dark-invalid-illegal-text);--syntax-invalid-illegal-bg: var(--syntax-dark-invalid-illegal-bg);--syntax-markup-heading: var(--syntax-dark-markup-heading);--syntax-markup-italic: var(--syntax-dark-markup-italic);--syntax-markup-bold: var(--syntax-dark-markup-bold);--syntax-markup-deleted-text: var(--syntax-dark-markup-deleted-text);--syntax-markup-deleted-bg: var(--syntax-dark-markup-deleted-bg);--syntax-markup-inserted-text: var(--syntax-dark-markup-inserted-text);--syntax-markup-inserted-bg: var(--syntax-dark-markup-inserted-bg);--syntax-markup-changed-text: var(--syntax-dark-markup-changed-text);--syntax-markup-changed-bg: var(--syntax-dark-markup-changed-bg);--syntax-markup-ignored-text: var(--syntax-dark-markup-ignored-text);--syntax-markup-ignored-bg: var(--syntax-dark-markup-ignored-bg);--syntax-meta-diff-range: var(--syntax-dark-meta-diff-range);--syntax-special-bg: var(--syntax-dark-special-bg)}}html.dark{--syntax-text: var(--syntax-dark-text);--syntax-meta: var(--syntax-dark-meta);--syntax-comment: var(--syntax-dark-comment);--syntax-constant: var(--syntax-dark-constant);--syntax-entity: var(--syntax-dark-entity);--syntax-property: var(--syntax-dark-property);--syntax-definition: var(--syntax-dark-definition);--syntax-tag: var(--syntax-dark-tag);--syntax-builtin: var(--syntax-dark-builtin);--syntax-keyword: var(--syntax-dark-keyword);--syntax-exception: var(--syntax-dark-exception);--syntax-string: var(--syntax-dark-string);--syntax-regexp: var(--syntax-dark-regexp);--syntax-variable: var(--syntax-dark-variable);--syntax-invalid-illegal-text: var(--syntax-dark-invalid-illegal-text);--syntax-invalid-illegal-bg: var(--syntax-dark-invalid-illegal-bg);--syntax-markup-heading: var(--syntax-dark-markup-heading);--syntax-markup-italic: var(--syntax-dark-markup-italic);--syntax-markup-bold: var(--syntax-dark-markup-bold);--syntax-markup-deleted-text: var(--syntax-dark-markup-deleted-text);--syntax-markup-deleted-bg: var(--syntax-dark-markup-deleted-bg);--syntax-markup-inserted-text: var(--syntax-dark-markup-inserted-text);--syntax-markup-inserted-bg: var(--syntax-dark-markup-inserted-bg);--syntax-markup-changed-text: var(--syntax-dark-markup-changed-text);--syntax-markup-changed-bg: var(--syntax-dark-markup-changed-bg);--syntax-markup-ignored-text: var(--syntax-dark-markup-ignored-text);--syntax-markup-ignored-bg: var(--syntax-dark-markup-ignored-bg);--syntax-meta-diff-range: var(--syntax-dark-meta-diff-range);--syntax-special-bg: var(--syntax-dark-special-bg)}.light .dark-code{--syntax-pre-bg: var(--black-a12);--syntax-cap-bg: #1C2024;--syntax-highlight-bg: var(--white-a2);--syntax-linenos-divider: var(--white-a4);--syntax-text: var(--syntax-dark-text);--syntax-meta: var(--syntax-dark-meta);--syntax-comment: var(--syntax-dark-comment);--syntax-constant: var(--syntax-dark-constant);--syntax-entity: var(--syntax-dark-entity);--syntax-property: var(--syntax-dark-property);--syntax-definition: var(--syntax-dark-definition);--syntax-tag: var(--syntax-dark-tag);--syntax-builtin: var(--syntax-dark-builtin);--syntax-keyword: var(--syntax-dark-keyword);--syntax-exception: var(--syntax-dark-exception);--syntax-string: var(--syntax-dark-string);--syntax-regexp: var(--syntax-dark-regexp);--syntax-variable: var(--syntax-dark-variable);--syntax-invalid-illegal-text: var(--syntax-dark-invalid-illegal-text);--syntax-invalid-illegal-bg: var(--syntax-dark-invalid-illegal-bg);--syntax-markup-heading: var(--syntax-dark-markup-heading);--syntax-markup-italic: var(--syntax-dark-markup-italic);--syntax-markup-bold: var(--syntax-dark-markup-bold);--syntax-markup-deleted-text: var(--syntax-dark-markup-deleted-text);--syntax-markup-deleted-bg: var(--syntax-dark-markup-deleted-bg);--syntax-markup-inserted-text: var(--syntax-dark-markup-inserted-text);--syntax-markup-inserted-bg: var(--syntax-dark-markup-inserted-bg);--syntax-markup-changed-text: var(--syntax-dark-markup-changed-text);--syntax-markup-changed-bg: var(--syntax-dark-markup-changed-bg);--syntax-markup-ignored-text: var(--syntax-dark-markup-ignored-text);--syntax-markup-ignored-bg: var(--syntax-dark-markup-ignored-bg);--syntax-meta-diff-range: var(--syntax-dark-meta-diff-range);--syntax-special-bg: var(--syntax-dark-special-bg)}html.light .sd-tab-content,html.light .jupyter_container .cell_output{--syntax-pre-bg: var(--color-surface-accent);--syntax-cap-bg: var(--accent-3);--syntax-highlight-bg: var(--accent-a3);--syntax-text: var(--syntax-light-text);--syntax-meta: var(--syntax-light-meta);--syntax-comment: var(--syntax-light-comment);--syntax-constant: var(--syntax-light-constant);--syntax-entity: var(--syntax-light-entity);--syntax-property: var(--syntax-light-property);--syntax-definition: var(--syntax-light-definition);--syntax-tag: var(--syntax-light-tag);--syntax-builtin: var(--syntax-light-builtin);--syntax-keyword: var(--syntax-light-keyword);--syntax-exception: var(--syntax-light-exception);--syntax-string: var(--syntax-light-string);--syntax-regexp: var(--syntax-light-regexp);--syntax-variable: var(--syntax-light-variable);--syntax-invalid-illegal-text: var(--syntax-light-invalid-illegal-text);--syntax-invalid-illegal-bg: var(--syntax-light-invalid-illegal-bg);--syntax-markup-heading: var(--syntax-light-markup-heading);--syntax-markup-italic: var(--syntax-light-markup-italic);--syntax-markup-bold: var(--syntax-light-markup-bold);--syntax-markup-deleted-text: var(--syntax-light-markup-deleted-text);--syntax-markup-deleted-bg: var(--syntax-light-markup-deleted-bg);--syntax-markup-inserted-text: var(--syntax-light-markup-inserted-text);--syntax-markup-inserted-bg: var(--syntax-light-markup-inserted-bg);--syntax-markup-changed-text: var(--syntax-light-markup-changed-text);--syntax-markup-changed-bg: var(--syntax-light-markup-changed-bg);--syntax-markup-ignored-text: var(--syntax-light-markup-ignored-text);--syntax-markup-ignored-bg: var(--syntax-light-markup-ignored-bg);--syntax-meta-diff-range: var(--syntax-light-meta-diff-range);--syntax-highlight-bg: var(--syntax-light-highlight-bg);--syntax-special-bg: var(--syntax-light-special-bg)}.highlight{color:var(--syntax-text);background-color:transparent}.highlight .hll{display:block;background-color:var(--syntax-highlight-bg)}.highlight .c{color:var(--syntax-comment)}.highlight .err{color:var(--syntax-invalid-illegal-text);background-color:var(--syntax-invalid-illegal-bg)}.highlight .g{color:var(--syntax-meta)}.highlight .k{color:var(--syntax-keyword)}.highlight .l{color:var(--syntax-meta)}.highlight .o{color:var(--syntax-constant)}.highlight .x{color:var(--syntax-meta)}.highlight .cm{color:var(--syntax-comment)}.highlight .cp{color:var(--syntax-constant)}.highlight .c1{color:var(--syntax-comment)}.highlight .cs{color:var(--syntax-comment);background-color:var(--syntax-special-bg)}.highlight .gd{color:var(--syntax-markup-deleted-text);background-color:var(--syntax-markup-deleted-bg)}.highlight .ge{color:var(--syntax-markup-italic);font-style:italic}.highlight .gr{color:var(--syntax-invalid-illegal-text);background-color:var(--syntax-invalid-illegal-bg)}.highlight .gh{color:var(--syntax-markup-heading)}.highlight .gi{color:var(--syntax-markup-inserted-text);background-color:var(--syntax-markup-inserted-bg)}.highlight .go,.highlight .gp{color:var(--syntax-meta)}.highlight .gs{color:var(--syntax-markup-bold);font-weight:700}.highlight .gu{color:var(--syntax-markup-heading)}.highlight .gt{color:var(--syntax-meta)}.highlight .kc{color:var(--syntax-constant)}.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr{color:var(--syntax-keyword)}.highlight .kt{color:var(--syntax-entity)}.highlight .ld{color:var(--syntax-meta)}.highlight .m{color:var(--syntax-constant)}.highlight .s{color:var(--syntax-string)}.highlight .il,.highlight .na{color:var(--syntax-constant)}.highlight .nb{color:var(--syntax-builtin)}.highlight .nc{color:var(--syntax-definition)}.highlight .no{color:var(--syntax-constant)}.highlight .nd,.highlight .ni{color:var(--syntax-entity)}.highlight .ne{color:var(--syntax-exception)}.highlight .nf{color:var(--syntax-definition)}.highlight .nt{color:var(--syntax-tag)}.highlight .ow{color:var(--syntax-constant)}.highlight .w{color:var(--syntax-meta)}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:var(--syntax-constant)}.highlight .sb{color:var(--syntax-meta)}.highlight .sc{color:var(--syntax-string)}.highlight .sd{color:var(--syntax-comment)}.highlight .s2,.highlight .se{color:var(--syntax-string)}.highlight .sh{color:var(--syntax-comment)}.highlight .si,.highlight .sx{color:var(--syntax-string)}.highlight .sr{color:var(--syntax-regexp)}.highlight .s1,.highlight .ss{color:var(--syntax-string)}.highlight .bp,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--syntax-variable)} diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 0000000..7918c3f --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,574 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/shibuya.css b/_static/shibuya.css new file mode 100644 index 0000000..4a48752 --- /dev/null +++ b/_static/shibuya.css @@ -0,0 +1 @@ +*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.collapse{visibility:collapse}.order-last{order:9999}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mr-3{margin-right:.75rem}.block{display:block}.flex{display:flex}.table{display:table}.contents{display:contents}.hidden{display:none}.w-64{width:16rem}.w-8{width:2rem}.w-full{width:100%}.min-w-0{min-width:0}.max-w-6xl{max-width:72rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.-translate-x-1{--tw-translate-x:-0.25rem}.-translate-x-1,.-translate-x-2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-2{--tw-translate-x:-0.5rem}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pr-3{padding-right:.75rem}.pt-12{padding-top:3rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-sm{font-size:.875rem;line-height:1.25rem}@font-face{font-family:Twemoji Country Flags;unicode-range:u+1f1e6-1f1ff,u+1f3f4,u+e0062-e0063,u+e0065,u+e0067,u+e006c,u+e006e,u+e0073-e0074,u+e0077,u+e007f;src:url(https://cdn.jsdelivr.net/npm/country-flag-emoji-polyfill@0.1/dist/TwemojiCountryFlags.woff2) format("woff2")}::-moz-selection{color:var(--accent-a11);background-color:var(--accent-a3)}::selection{color:var(--accent-a11);background-color:var(--accent-a3)}html{scroll-behavior:smooth}body{font-family:var(--sy-f-text);color:var(--sy-c-text)}.win{font-family:"Twemoji Country Flags",var(--sy-f-text)}h1,h2,h3,h4,h5{color:var(--sy-c-heading);font-family:var(--sy-f-heading)}em,strong{color:var(--sy-c-bold)}.sy-container{max-width:90rem}.sy-scrollbar{overflow-y:auto;scrollbar-gutter:stable}.sy-scrollbar::-webkit-scrollbar{height:.75rem;width:.75rem}.sy-scrollbar::-webkit-scrollbar-thumb{border-radius:10px}.sy-scrollbar::-webkit-scrollbar-track{background-color:transparent}.sy-scrollbar:hover::-webkit-scrollbar-thumb{background-color:var(--gray-a3);background-clip:content-box;border:3px solid transparent}.i-lucide,iconify-icon{vertical-align:middle}.i-lucide{-webkit-mask:var(--icon-url) no-repeat;mask:var(--icon-url) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;width:1em;height:1em;display:inline-block;font-style:normal;background-color:currentColor}.theme-switch .theme-icon,[data-color-mode=auto] .theme-switch .theme-icon{--icon-url:var(--lucide-laptop-url)}[data-color-mode=light] .theme-switch .theme-icon{--icon-url:var(--lucide-sun-url)}[data-color-mode=dark] .theme-switch .theme-icon{--icon-url:var(--lucide-moon-url)}.light,.light-theme,:root{--tomato-1:#fffcfc;--tomato-2:#fff8f7;--tomato-3:#feebe7;--tomato-4:#ffdcd3;--tomato-5:#ffcdc2;--tomato-6:#fdbdaf;--tomato-7:#f5a898;--tomato-8:#ec8e7b;--tomato-9:#e54d2e;--tomato-10:#dd4425;--tomato-11:#d13415;--tomato-12:#5c271f}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--tomato-1:color(display-p3 0.998 0.989 0.988);--tomato-2:color(display-p3 0.994 0.974 0.969);--tomato-3:color(display-p3 0.985 0.924 0.909);--tomato-4:color(display-p3 0.996 0.868 0.835);--tomato-5:color(display-p3 0.98 0.812 0.77);--tomato-6:color(display-p3 0.953 0.75 0.698);--tomato-7:color(display-p3 0.917 0.673 0.611);--tomato-8:color(display-p3 0.875 0.575 0.502);--tomato-9:color(display-p3 0.831 0.345 0.231);--tomato-10:color(display-p3 0.802 0.313 0.2);--tomato-11:color(display-p3 0.755 0.259 0.152);--tomato-12:color(display-p3 0.335 0.165 0.132)}}}.dark,.dark-theme{--tomato-1:#181111;--tomato-2:#1f1513;--tomato-3:#391714;--tomato-4:#4e1511;--tomato-5:#5e1c16;--tomato-6:#6e2920;--tomato-7:#853a2d;--tomato-8:#ac4d39;--tomato-9:#e54d2e;--tomato-10:#ec6142;--tomato-11:#ff977d;--tomato-12:#fbd3cb}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--tomato-1:color(display-p3 0.09 0.068 0.067);--tomato-2:color(display-p3 0.115 0.084 0.076);--tomato-3:color(display-p3 0.205 0.097 0.083);--tomato-4:color(display-p3 0.282 0.099 0.077);--tomato-5:color(display-p3 0.339 0.129 0.101);--tomato-6:color(display-p3 0.398 0.179 0.141);--tomato-7:color(display-p3 0.487 0.245 0.194);--tomato-8:color(display-p3 0.629 0.322 0.248);--tomato-9:color(display-p3 0.831 0.345 0.231);--tomato-10:color(display-p3 0.862 0.415 0.298);--tomato-11:color(display-p3 1 0.585 0.455);--tomato-12:color(display-p3 0.959 0.833 0.802)}}}.light,.light-theme,:root{--tomato-a1:#ff000003;--tomato-a2:#ff200008;--tomato-a3:#f52b0018;--tomato-a4:#ff35002c;--tomato-a5:#ff2e003d;--tomato-a6:#f92d0050;--tomato-a7:#e7280067;--tomato-a8:#db250084;--tomato-a9:#df2600d1;--tomato-a10:#d72400da;--tomato-a11:#cd2200ea;--tomato-a12:#460900e0}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--tomato-a1:color(display-p3 0.675 0.024 0.024/0.012);--tomato-a2:color(display-p3 0.757 0.145 0.02/0.032);--tomato-a3:color(display-p3 0.831 0.184 0.012/0.091);--tomato-a4:color(display-p3 0.976 0.192 0.004/0.165);--tomato-a5:color(display-p3 0.918 0.192 0.004/0.232);--tomato-a6:color(display-p3 0.847 0.173 0.004/0.302);--tomato-a7:color(display-p3 0.788 0.165 0.004/0.389);--tomato-a8:color(display-p3 0.749 0.153 0.004/0.499);--tomato-a9:color(display-p3 0.78 0.149 0/0.769);--tomato-a10:color(display-p3 0.757 0.141 0/0.8);--tomato-a11:color(display-p3 0.755 0.259 0.152);--tomato-a12:color(display-p3 0.335 0.165 0.132)}}}.dark,.dark-theme{--tomato-a1:#f1121208;--tomato-a2:#ff55330f;--tomato-a3:#ff35232b;--tomato-a4:#fd201142;--tomato-a5:#fe332153;--tomato-a6:#ff4f3864;--tomato-a7:#fd644a7d;--tomato-a8:#fe6d4ea7;--tomato-a9:#fe5431e4;--tomato-a10:#ff6847eb;--tomato-a11:#ff977d;--tomato-a12:#ffd6cefb}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--tomato-a1:color(display-p3 0.973 0.071 0.071/0.026);--tomato-a2:color(display-p3 0.992 0.376 0.224/0.051);--tomato-a3:color(display-p3 0.996 0.282 0.176/0.148);--tomato-a4:color(display-p3 1 0.204 0.118/0.232);--tomato-a5:color(display-p3 1 0.286 0.192/0.29);--tomato-a6:color(display-p3 1 0.392 0.278/0.353);--tomato-a7:color(display-p3 1 0.459 0.349/0.45);--tomato-a8:color(display-p3 1 0.49 0.369/0.601);--tomato-a9:color(display-p3 1 0.408 0.267/0.82);--tomato-a10:color(display-p3 1 0.478 0.341/0.853);--tomato-a11:color(display-p3 1 0.585 0.455);--tomato-a12:color(display-p3 0.959 0.833 0.802)}}}.light,.light-theme,:root{--red-1:#fffcfc;--red-2:#fff7f7;--red-3:#feebec;--red-4:#ffdbdc;--red-5:#ffcdce;--red-6:#fdbdbe;--red-7:#f4a9aa;--red-8:#eb8e90;--red-9:#e5484d;--red-10:#dc3e42;--red-11:#ce2c31;--red-12:#641723}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--red-1:color(display-p3 0.998 0.989 0.988);--red-2:color(display-p3 0.995 0.971 0.971);--red-3:color(display-p3 0.985 0.925 0.925);--red-4:color(display-p3 0.999 0.866 0.866);--red-5:color(display-p3 0.984 0.812 0.811);--red-6:color(display-p3 0.955 0.751 0.749);--red-7:color(display-p3 0.915 0.675 0.672);--red-8:color(display-p3 0.872 0.575 0.572);--red-9:color(display-p3 0.83 0.329 0.324);--red-10:color(display-p3 0.798 0.294 0.285);--red-11:color(display-p3 0.744 0.234 0.222);--red-12:color(display-p3 0.36 0.115 0.143)}}}.dark,.dark-theme{--red-1:#191111;--red-2:#201314;--red-3:#3b1219;--red-4:#500f1c;--red-5:#611623;--red-6:#72232d;--red-7:#8c333a;--red-8:#b54548;--red-9:#e5484d;--red-10:#ec5d5e;--red-11:#ff9592;--red-12:#ffd1d9}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--red-1:color(display-p3 0.093 0.068 0.067);--red-2:color(display-p3 0.118 0.077 0.079);--red-3:color(display-p3 0.211 0.081 0.099);--red-4:color(display-p3 0.287 0.079 0.113);--red-5:color(display-p3 0.348 0.11 0.142);--red-6:color(display-p3 0.414 0.16 0.183);--red-7:color(display-p3 0.508 0.224 0.236);--red-8:color(display-p3 0.659 0.298 0.297);--red-9:color(display-p3 0.83 0.329 0.324);--red-10:color(display-p3 0.861 0.403 0.387);--red-11:color(display-p3 1 0.57 0.55);--red-12:color(display-p3 0.971 0.826 0.852)}}}.light,.light-theme,:root{--red-a1:#ff000003;--red-a2:#ff000008;--red-a3:#f3000d14;--red-a4:#ff000824;--red-a5:#ff000632;--red-a6:#f8000442;--red-a7:#df000356;--red-a8:#d2000571;--red-a9:#db0007b7;--red-a10:#d10005c1;--red-a11:#c40006d3;--red-a12:#55000de8}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--red-a1:color(display-p3 0.675 0.024 0.024/0.012);--red-a2:color(display-p3 0.863 0.024 0.024/0.028);--red-a3:color(display-p3 0.792 0.008 0.008/0.075);--red-a4:color(display-p3 1 0.008 0.008/0.134);--red-a5:color(display-p3 0.918 0.008 0.008/0.189);--red-a6:color(display-p3 0.831 0.02 0.004/0.251);--red-a7:color(display-p3 0.741 0.016 0.004/0.33);--red-a8:color(display-p3 0.698 0.012 0.004/0.428);--red-a9:color(display-p3 0.749 0.008 0/0.675);--red-a10:color(display-p3 0.714 0.012 0/0.714);--red-a11:color(display-p3 0.744 0.234 0.222);--red-a12:color(display-p3 0.36 0.115 0.143)}}}.dark,.dark-theme{--red-a1:#f4121209;--red-a2:#f22f3e11;--red-a3:#ff173f2d;--red-a4:#fe0a3b44;--red-a5:#ff204756;--red-a6:#ff3e5668;--red-a7:#ff536184;--red-a8:#ff5d61b0;--red-a9:#fe4e54e4;--red-a10:#ff6465eb;--red-a11:#ff9592;--red-a12:#ffd1d9}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--red-a1:color(display-p3 0.984 0.071 0.071/0.03);--red-a2:color(display-p3 0.996 0.282 0.282/0.055);--red-a3:color(display-p3 1 0.169 0.271/0.156);--red-a4:color(display-p3 1 0.118 0.267/0.236);--red-a5:color(display-p3 1 0.212 0.314/0.303);--red-a6:color(display-p3 1 0.318 0.38/0.374);--red-a7:color(display-p3 1 0.4 0.424/0.475);--red-a8:color(display-p3 1 0.431 0.431/0.635);--red-a9:color(display-p3 1 0.388 0.384/0.82);--red-a10:color(display-p3 1 0.463 0.447/0.853);--red-a11:color(display-p3 1 0.57 0.55);--red-a12:color(display-p3 0.971 0.826 0.852)}}}.light,.light-theme,:root{--ruby-1:#fffcfd;--ruby-2:#fff7f8;--ruby-3:#feeaed;--ruby-4:#ffdce1;--ruby-5:#ffced6;--ruby-6:#f8bfc8;--ruby-7:#efacb8;--ruby-8:#e592a3;--ruby-9:#e54666;--ruby-10:#dc3b5d;--ruby-11:#ca244d;--ruby-12:#64172b}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--ruby-1:color(display-p3 0.998 0.989 0.992);--ruby-2:color(display-p3 0.995 0.971 0.974);--ruby-3:color(display-p3 0.983 0.92 0.928);--ruby-4:color(display-p3 0.987 0.869 0.885);--ruby-5:color(display-p3 0.968 0.817 0.839);--ruby-6:color(display-p3 0.937 0.758 0.786);--ruby-7:color(display-p3 0.897 0.685 0.721);--ruby-8:color(display-p3 0.851 0.588 0.639);--ruby-9:color(display-p3 0.83 0.323 0.408);--ruby-10:color(display-p3 0.795 0.286 0.375);--ruby-11:color(display-p3 0.728 0.211 0.311);--ruby-12:color(display-p3 0.36 0.115 0.171)}}}.dark,.dark-theme{--ruby-1:#191113;--ruby-2:#1e1517;--ruby-3:#3a141e;--ruby-4:#4e1325;--ruby-5:#5e1a2e;--ruby-6:#6f2539;--ruby-7:#883447;--ruby-8:#b3445a;--ruby-9:#e54666;--ruby-10:#ec5a72;--ruby-11:#ff949d;--ruby-12:#fed2e1}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--ruby-1:color(display-p3 0.093 0.068 0.074);--ruby-2:color(display-p3 0.113 0.083 0.089);--ruby-3:color(display-p3 0.208 0.088 0.117);--ruby-4:color(display-p3 0.279 0.092 0.147);--ruby-5:color(display-p3 0.337 0.12 0.18);--ruby-6:color(display-p3 0.401 0.166 0.223);--ruby-7:color(display-p3 0.495 0.224 0.281);--ruby-8:color(display-p3 0.652 0.295 0.359);--ruby-9:color(display-p3 0.83 0.323 0.408);--ruby-10:color(display-p3 0.857 0.392 0.455);--ruby-11:color(display-p3 1 0.57 0.59);--ruby-12:color(display-p3 0.968 0.83 0.88)}}}.light,.light-theme,:root{--ruby-a1:#ff005503;--ruby-a2:#ff002008;--ruby-a3:#f3002515;--ruby-a4:#ff002523;--ruby-a5:#ff002a31;--ruby-a6:#e4002440;--ruby-a7:#ce002553;--ruby-a8:#c300286d;--ruby-a9:#db002cb9;--ruby-a10:#d2002cc4;--ruby-a11:#c10030db;--ruby-a12:#550016e8}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--ruby-a1:color(display-p3 0.675 0.024 0.349/0.012);--ruby-a2:color(display-p3 0.863 0.024 0.024/0.028);--ruby-a3:color(display-p3 0.804 0.008 0.11/0.079);--ruby-a4:color(display-p3 0.91 0.008 0.125/0.13);--ruby-a5:color(display-p3 0.831 0.004 0.133/0.185);--ruby-a6:color(display-p3 0.745 0.004 0.118/0.244);--ruby-a7:color(display-p3 0.678 0.004 0.114/0.314);--ruby-a8:color(display-p3 0.639 0.004 0.125/0.412);--ruby-a9:color(display-p3 0.753 0 0.129/0.679);--ruby-a10:color(display-p3 0.714 0 0.125/0.714);--ruby-a11:color(display-p3 0.728 0.211 0.311);--ruby-a12:color(display-p3 0.36 0.115 0.171)}}}.dark,.dark-theme{--ruby-a1:#f4124a09;--ruby-a2:#fe5a7f0e;--ruby-a3:#ff235d2c;--ruby-a4:#fd195e42;--ruby-a5:#fe2d6b53;--ruby-a6:#ff447665;--ruby-a7:#ff577d80;--ruby-a8:#ff5c7cae;--ruby-a9:#fe4c70e4;--ruby-a10:#ff617beb;--ruby-a11:#ff949d;--ruby-a12:#ffd3e2}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--ruby-a1:color(display-p3 0.984 0.071 0.329/0.03);--ruby-a2:color(display-p3 0.992 0.376 0.529/0.051);--ruby-a3:color(display-p3 0.996 0.196 0.404/0.152);--ruby-a4:color(display-p3 1 0.173 0.416/0.227);--ruby-a5:color(display-p3 1 0.259 0.459/0.29);--ruby-a6:color(display-p3 1 0.341 0.506/0.358);--ruby-a7:color(display-p3 1 0.412 0.541/0.458);--ruby-a8:color(display-p3 1 0.431 0.537/0.627);--ruby-a9:color(display-p3 1 0.376 0.482/0.82);--ruby-a10:color(display-p3 1 0.447 0.522/0.849);--ruby-a11:color(display-p3 1 0.57 0.59);--ruby-a12:color(display-p3 0.968 0.83 0.88)}}}.light,.light-theme,:root{--crimson-1:#fffcfd;--crimson-2:#fef7f9;--crimson-3:#ffe9f0;--crimson-4:#fedce7;--crimson-5:#facedd;--crimson-6:#f3bed1;--crimson-7:#eaacc3;--crimson-8:#e093b2;--crimson-9:#e93d82;--crimson-10:#df3478;--crimson-11:#cb1d63;--crimson-12:#621639}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--crimson-1:color(display-p3 0.998 0.989 0.992);--crimson-2:color(display-p3 0.991 0.969 0.976);--crimson-3:color(display-p3 0.987 0.917 0.941);--crimson-4:color(display-p3 0.975 0.866 0.904);--crimson-5:color(display-p3 0.953 0.813 0.864);--crimson-6:color(display-p3 0.921 0.755 0.817);--crimson-7:color(display-p3 0.88 0.683 0.761);--crimson-8:color(display-p3 0.834 0.592 0.694);--crimson-9:color(display-p3 0.843 0.298 0.507);--crimson-10:color(display-p3 0.807 0.266 0.468);--crimson-11:color(display-p3 0.731 0.195 0.388);--crimson-12:color(display-p3 0.352 0.111 0.221)}}}.dark,.dark-theme{--crimson-1:#191114;--crimson-2:#201318;--crimson-3:#381525;--crimson-4:#4d122f;--crimson-5:#5c1839;--crimson-6:#6d2545;--crimson-7:#873356;--crimson-8:#b0436e;--crimson-9:#e93d82;--crimson-10:#ee518a;--crimson-11:#ff92ad;--crimson-12:#fdd3e8}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--crimson-1:color(display-p3 0.093 0.068 0.078);--crimson-2:color(display-p3 0.117 0.078 0.095);--crimson-3:color(display-p3 0.203 0.091 0.143);--crimson-4:color(display-p3 0.277 0.087 0.182);--crimson-5:color(display-p3 0.332 0.115 0.22);--crimson-6:color(display-p3 0.394 0.162 0.268);--crimson-7:color(display-p3 0.489 0.222 0.336);--crimson-8:color(display-p3 0.638 0.289 0.429);--crimson-9:color(display-p3 0.843 0.298 0.507);--crimson-10:color(display-p3 0.864 0.364 0.539);--crimson-11:color(display-p3 1 0.56 0.66);--crimson-12:color(display-p3 0.966 0.834 0.906)}}}.light,.light-theme,:root{--crimson-a1:#ff005503;--crimson-a2:#e0004008;--crimson-a3:#ff005216;--crimson-a4:#f8005123;--crimson-a5:#e5004f31;--crimson-a6:#d0004b41;--crimson-a7:#bf004753;--crimson-a8:#b6004a6c;--crimson-a9:#e2005bc2;--crimson-a10:#d70056cb;--crimson-a11:#c4004fe2;--crimson-a12:#530026e9}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--crimson-a1:color(display-p3 0.675 0.024 0.349/0.012);--crimson-a2:color(display-p3 0.757 0.02 0.267/0.032);--crimson-a3:color(display-p3 0.859 0.008 0.294/0.083);--crimson-a4:color(display-p3 0.827 0.008 0.298/0.134);--crimson-a5:color(display-p3 0.753 0.008 0.275/0.189);--crimson-a6:color(display-p3 0.682 0.004 0.247/0.244);--crimson-a7:color(display-p3 0.62 0.004 0.251/0.318);--crimson-a8:color(display-p3 0.6 0.004 0.251/0.408);--crimson-a9:color(display-p3 0.776 0 0.298/0.702);--crimson-a10:color(display-p3 0.737 0 0.275/0.734);--crimson-a11:color(display-p3 0.731 0.195 0.388);--crimson-a12:color(display-p3 0.352 0.111 0.221)}}}.dark,.dark-theme{--crimson-a1:#f4126709;--crimson-a2:#f22f7a11;--crimson-a3:#fe2a8b2a;--crimson-a4:#fd158741;--crimson-a5:#fd278f51;--crimson-a6:#fe459763;--crimson-a7:#fd559b7f;--crimson-a8:#fe5b9bab;--crimson-a9:#fe418de8;--crimson-a10:#ff5693ed;--crimson-a11:#ff92ad;--crimson-a12:#ffd5eafd}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--crimson-a1:color(display-p3 0.984 0.071 0.463/0.03);--crimson-a2:color(display-p3 0.996 0.282 0.569/0.055);--crimson-a3:color(display-p3 0.996 0.227 0.573/0.148);--crimson-a4:color(display-p3 1 0.157 0.569/0.227);--crimson-a5:color(display-p3 1 0.231 0.604/0.286);--crimson-a6:color(display-p3 1 0.337 0.643/0.349);--crimson-a7:color(display-p3 1 0.416 0.663/0.454);--crimson-a8:color(display-p3 0.996 0.427 0.651/0.614);--crimson-a9:color(display-p3 1 0.345 0.596/0.832);--crimson-a10:color(display-p3 1 0.42 0.62/0.853);--crimson-a11:color(display-p3 1 0.56 0.66);--crimson-a12:color(display-p3 0.966 0.834 0.906)}}}.light,.light-theme,:root{--pink-1:#fffcfe;--pink-2:#fef7fb;--pink-3:#fee9f5;--pink-4:#fbdcef;--pink-5:#f6cee7;--pink-6:#efbfdd;--pink-7:#e7acd0;--pink-8:#dd93c2;--pink-9:#d6409f;--pink-10:#cf3897;--pink-11:#c2298a;--pink-12:#651249}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--pink-1:color(display-p3 0.998 0.989 0.996);--pink-2:color(display-p3 0.992 0.97 0.985);--pink-3:color(display-p3 0.981 0.917 0.96);--pink-4:color(display-p3 0.963 0.867 0.932);--pink-5:color(display-p3 0.939 0.815 0.899);--pink-6:color(display-p3 0.907 0.756 0.859);--pink-7:color(display-p3 0.869 0.683 0.81);--pink-8:color(display-p3 0.825 0.59 0.751);--pink-9:color(display-p3 0.775 0.297 0.61);--pink-10:color(display-p3 0.748 0.27 0.581);--pink-11:color(display-p3 0.698 0.219 0.528);--pink-12:color(display-p3 0.363 0.101 0.279)}}}.dark,.dark-theme{--pink-1:#191117;--pink-2:#21121d;--pink-3:#37172f;--pink-4:#4b143d;--pink-5:#591c47;--pink-6:#692955;--pink-7:#833869;--pink-8:#a84885;--pink-9:#d6409f;--pink-10:#de51a8;--pink-11:#ff8dcc;--pink-12:#fdd1ea}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--pink-1:color(display-p3 0.093 0.068 0.089);--pink-2:color(display-p3 0.121 0.073 0.11);--pink-3:color(display-p3 0.198 0.098 0.179);--pink-4:color(display-p3 0.271 0.095 0.231);--pink-5:color(display-p3 0.32 0.127 0.273);--pink-6:color(display-p3 0.382 0.177 0.326);--pink-7:color(display-p3 0.477 0.238 0.405);--pink-8:color(display-p3 0.612 0.304 0.51);--pink-9:color(display-p3 0.775 0.297 0.61);--pink-10:color(display-p3 0.808 0.356 0.645);--pink-11:color(display-p3 1 0.535 0.78);--pink-12:color(display-p3 0.964 0.826 0.912)}}}.light,.light-theme,:root{--pink-a1:#ff00aa03;--pink-a2:#e0008008;--pink-a3:#f4008c16;--pink-a4:#e2008b23;--pink-a5:#d1008331;--pink-a6:#c0007840;--pink-a7:#b6006f53;--pink-a8:#af006f6c;--pink-a9:#c8007fbf;--pink-a10:#c2007ac7;--pink-a11:#b60074d6;--pink-a12:#59003bed}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--pink-a1:color(display-p3 0.675 0.024 0.675/0.012);--pink-a2:color(display-p3 0.757 0.02 0.51/0.032);--pink-a3:color(display-p3 0.765 0.008 0.529/0.083);--pink-a4:color(display-p3 0.737 0.008 0.506/0.134);--pink-a5:color(display-p3 0.663 0.004 0.451/0.185);--pink-a6:color(display-p3 0.616 0.004 0.424/0.244);--pink-a7:color(display-p3 0.596 0.004 0.412/0.318);--pink-a8:color(display-p3 0.573 0.004 0.404/0.412);--pink-a9:color(display-p3 0.682 0 0.447/0.702);--pink-a10:color(display-p3 0.655 0 0.424/0.73);--pink-a11:color(display-p3 0.698 0.219 0.528);--pink-a12:color(display-p3 0.363 0.101 0.279)}}}.dark,.dark-theme{--pink-a1:#f412bc09;--pink-a2:#f420bb12;--pink-a3:#fe37cc29;--pink-a4:#fc1ec43f;--pink-a5:#fd35c24e;--pink-a6:#fd51c75f;--pink-a7:#fd62c87b;--pink-a8:#ff68c8a2;--pink-a9:#fe49bcd4;--pink-a10:#ff5cc0dc;--pink-a11:#ff8dcc;--pink-a12:#ffd3ecfd}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--pink-a1:color(display-p3 0.984 0.071 0.855/0.03);--pink-a2:color(display-p3 1 0.2 0.8/0.059);--pink-a3:color(display-p3 1 0.294 0.886/0.139);--pink-a4:color(display-p3 1 0.192 0.82/0.219);--pink-a5:color(display-p3 1 0.282 0.827/0.274);--pink-a6:color(display-p3 1 0.396 0.835/0.337);--pink-a7:color(display-p3 1 0.459 0.831/0.442);--pink-a8:color(display-p3 1 0.478 0.827/0.585);--pink-a9:color(display-p3 1 0.373 0.784/0.761);--pink-a10:color(display-p3 1 0.435 0.792/0.795);--pink-a11:color(display-p3 1 0.535 0.78);--pink-a12:color(display-p3 0.964 0.826 0.912)}}}.light,.light-theme,:root{--plum-1:#fefcff;--plum-2:#fdf7fd;--plum-3:#fbebfb;--plum-4:#f7def8;--plum-5:#f2d1f3;--plum-6:#e9c2ec;--plum-7:#deade3;--plum-8:#cf91d8;--plum-9:#ab4aba;--plum-10:#a144af;--plum-11:#953ea3;--plum-12:#53195d}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--plum-1:color(display-p3 0.995 0.988 0.999);--plum-2:color(display-p3 0.988 0.971 0.99);--plum-3:color(display-p3 0.973 0.923 0.98);--plum-4:color(display-p3 0.953 0.875 0.966);--plum-5:color(display-p3 0.926 0.825 0.945);--plum-6:color(display-p3 0.89 0.765 0.916);--plum-7:color(display-p3 0.84 0.686 0.877);--plum-8:color(display-p3 0.775 0.58 0.832);--plum-9:color(display-p3 0.624 0.313 0.708);--plum-10:color(display-p3 0.587 0.29 0.667);--plum-11:color(display-p3 0.543 0.263 0.619);--plum-12:color(display-p3 0.299 0.114 0.352)}}}.dark,.dark-theme{--plum-1:#181118;--plum-2:#201320;--plum-3:#351a35;--plum-4:#451d47;--plum-5:#512454;--plum-6:#5e3061;--plum-7:#734079;--plum-8:#92549c;--plum-9:#ab4aba;--plum-10:#b658c4;--plum-11:#e796f3;--plum-12:#f4d4f4}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--plum-1:color(display-p3 0.09 0.068 0.092);--plum-2:color(display-p3 0.118 0.077 0.121);--plum-3:color(display-p3 0.192 0.105 0.202);--plum-4:color(display-p3 0.25 0.121 0.271);--plum-5:color(display-p3 0.293 0.152 0.319);--plum-6:color(display-p3 0.343 0.198 0.372);--plum-7:color(display-p3 0.424 0.262 0.461);--plum-8:color(display-p3 0.54 0.341 0.595);--plum-9:color(display-p3 0.624 0.313 0.708);--plum-10:color(display-p3 0.666 0.365 0.748);--plum-11:color(display-p3 0.86 0.602 0.933);--plum-12:color(display-p3 0.936 0.836 0.949)}}}.light,.light-theme,:root{--plum-a1:#aa00ff03;--plum-a2:#c000c008;--plum-a3:#cc00cc14;--plum-a4:#c200c921;--plum-a5:#b700bd2e;--plum-a6:#a400b03d;--plum-a7:#9900a852;--plum-a8:#9000a56e;--plum-a9:#89009eb5;--plum-a10:#7f0092bb;--plum-a11:#730086c1;--plum-a12:#40004be6}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--plum-a1:color(display-p3 0.675 0.024 1/0.012);--plum-a2:color(display-p3 0.58 0.024 0.58/0.028);--plum-a3:color(display-p3 0.655 0.008 0.753/0.079);--plum-a4:color(display-p3 0.627 0.008 0.722/0.126);--plum-a5:color(display-p3 0.58 0.004 0.69/0.177);--plum-a6:color(display-p3 0.537 0.004 0.655/0.236);--plum-a7:color(display-p3 0.49 0.004 0.616/0.314);--plum-a8:color(display-p3 0.471 0.004 0.6/0.42);--plum-a9:color(display-p3 0.451 0 0.576/0.687);--plum-a10:color(display-p3 0.42 0 0.529/0.71);--plum-a11:color(display-p3 0.543 0.263 0.619);--plum-a12:color(display-p3 0.299 0.114 0.352)}}}.dark,.dark-theme{--plum-a1:#f112f108;--plum-a2:#f22ff211;--plum-a3:#fd4cfd27;--plum-a4:#f646ff3a;--plum-a5:#f455ff48;--plum-a6:#f66dff56;--plum-a7:#f07cfd70;--plum-a8:#ee84ff95;--plum-a9:#e961feb6;--plum-a10:#ed70ffc0;--plum-a11:#f19cfef3;--plum-a12:#feddfef4}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--plum-a1:color(display-p3 0.973 0.071 0.973/0.026);--plum-a2:color(display-p3 0.933 0.267 1/0.059);--plum-a3:color(display-p3 0.918 0.333 0.996/0.148);--plum-a4:color(display-p3 0.91 0.318 1/0.219);--plum-a5:color(display-p3 0.914 0.388 1/0.269);--plum-a6:color(display-p3 0.906 0.463 1/0.328);--plum-a7:color(display-p3 0.906 0.529 1/0.425);--plum-a8:color(display-p3 0.906 0.553 1/0.568);--plum-a9:color(display-p3 0.875 0.427 1/0.69);--plum-a10:color(display-p3 0.886 0.471 0.996/0.732);--plum-a11:color(display-p3 0.86 0.602 0.933);--plum-a12:color(display-p3 0.936 0.836 0.949)}}}.light,.light-theme,:root{--purple-1:#fefcfe;--purple-2:#fbf7fe;--purple-3:#f7edfe;--purple-4:#f2e2fc;--purple-5:#ead5f9;--purple-6:#e0c4f4;--purple-7:#d1afec;--purple-8:#be93e4;--purple-9:#8e4ec6;--purple-10:#8347b9;--purple-11:#8145b5;--purple-12:#402060}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--purple-1:color(display-p3 0.995 0.988 0.996);--purple-2:color(display-p3 0.983 0.971 0.993);--purple-3:color(display-p3 0.963 0.931 0.989);--purple-4:color(display-p3 0.937 0.888 0.981);--purple-5:color(display-p3 0.904 0.837 0.966);--purple-6:color(display-p3 0.86 0.774 0.942);--purple-7:color(display-p3 0.799 0.69 0.91);--purple-8:color(display-p3 0.719 0.583 0.874);--purple-9:color(display-p3 0.523 0.318 0.751);--purple-10:color(display-p3 0.483 0.289 0.7);--purple-11:color(display-p3 0.473 0.281 0.687);--purple-12:color(display-p3 0.234 0.132 0.363)}}}.dark,.dark-theme{--purple-1:#18111b;--purple-2:#1e1523;--purple-3:#301c3b;--purple-4:#3d224e;--purple-5:#48295c;--purple-6:#54346b;--purple-7:#664282;--purple-8:#8457aa;--purple-9:#8e4ec6;--purple-10:#9a5cd0;--purple-11:#d19dff;--purple-12:#ecd9fa}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--purple-1:color(display-p3 0.09 0.068 0.103);--purple-2:color(display-p3 0.113 0.082 0.134);--purple-3:color(display-p3 0.175 0.112 0.224);--purple-4:color(display-p3 0.224 0.137 0.297);--purple-5:color(display-p3 0.264 0.167 0.349);--purple-6:color(display-p3 0.311 0.208 0.406);--purple-7:color(display-p3 0.381 0.266 0.496);--purple-8:color(display-p3 0.49 0.349 0.649);--purple-9:color(display-p3 0.523 0.318 0.751);--purple-10:color(display-p3 0.57 0.373 0.791);--purple-11:color(display-p3 0.8 0.62 1);--purple-12:color(display-p3 0.913 0.854 0.971)}}}.light,.light-theme,:root{--purple-a1:#aa00aa03;--purple-a2:#8000e008;--purple-a3:#8e00f112;--purple-a4:#8d00e51d;--purple-a5:#8000db2a;--purple-a6:#7a01d03b;--purple-a7:#6d00c350;--purple-a8:#6600c06c;--purple-a9:#5c00adb1;--purple-a10:#53009eb8;--purple-a11:#52009aba;--purple-a12:#250049df}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--purple-a1:color(display-p3 0.675 0.024 0.675/0.012);--purple-a2:color(display-p3 0.443 0.024 0.722/0.028);--purple-a3:color(display-p3 0.506 0.008 0.835/0.071);--purple-a4:color(display-p3 0.451 0.004 0.831/0.114);--purple-a5:color(display-p3 0.431 0.004 0.788/0.165);--purple-a6:color(display-p3 0.384 0.004 0.745/0.228);--purple-a7:color(display-p3 0.357 0.004 0.71/0.31);--purple-a8:color(display-p3 0.322 0.004 0.702/0.416);--purple-a9:color(display-p3 0.298 0 0.639/0.683);--purple-a10:color(display-p3 0.271 0 0.58/0.71);--purple-a11:color(display-p3 0.473 0.281 0.687);--purple-a12:color(display-p3 0.234 0.132 0.363)}}}.dark,.dark-theme{--purple-a1:#b412f90b;--purple-a2:#b744f714;--purple-a3:#c150ff2d;--purple-a4:#bb53fd42;--purple-a5:#be5cfd51;--purple-a6:#c16dfd61;--purple-a7:#c378fd7a;--purple-a8:#c47effa4;--purple-a9:#b661ffc2;--purple-a10:#bc6fffcd;--purple-a11:#d19dff;--purple-a12:#f1ddfffa}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--purple-a1:color(display-p3 0.686 0.071 0.996/0.038);--purple-a2:color(display-p3 0.722 0.286 0.996/0.072);--purple-a3:color(display-p3 0.718 0.349 0.996/0.169);--purple-a4:color(display-p3 0.702 0.353 1/0.248);--purple-a5:color(display-p3 0.718 0.404 1/0.303);--purple-a6:color(display-p3 0.733 0.455 1/0.366);--purple-a7:color(display-p3 0.753 0.506 1/0.458);--purple-a8:color(display-p3 0.749 0.522 1/0.622);--purple-a9:color(display-p3 0.686 0.408 1/0.736);--purple-a10:color(display-p3 0.71 0.459 1/0.778);--purple-a11:color(display-p3 0.8 0.62 1);--purple-a12:color(display-p3 0.913 0.854 0.971)}}}.light,.light-theme,:root{--violet-1:#fdfcfe;--violet-2:#faf8ff;--violet-3:#f4f0fe;--violet-4:#ebe4ff;--violet-5:#e1d9ff;--violet-6:#d4cafe;--violet-7:#c2b5f5;--violet-8:#aa99ec;--violet-9:#6e56cf;--violet-10:#654dc4;--violet-11:#6550b9;--violet-12:#2f265f}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--violet-1:color(display-p3 0.991 0.988 0.995);--violet-2:color(display-p3 0.978 0.974 0.998);--violet-3:color(display-p3 0.953 0.943 0.993);--violet-4:color(display-p3 0.916 0.897 1);--violet-5:color(display-p3 0.876 0.851 1);--violet-6:color(display-p3 0.825 0.793 0.981);--violet-7:color(display-p3 0.752 0.712 0.943);--violet-8:color(display-p3 0.654 0.602 0.902);--violet-9:color(display-p3 0.417 0.341 0.784);--violet-10:color(display-p3 0.381 0.306 0.741);--violet-11:color(display-p3 0.383 0.317 0.702);--violet-12:color(display-p3 0.179 0.15 0.359)}}}.dark,.dark-theme{--violet-1:#14121f;--violet-2:#1b1525;--violet-3:#291f43;--violet-4:#33255b;--violet-5:#3c2e69;--violet-6:#473876;--violet-7:#56468b;--violet-8:#6958ad;--violet-9:#6e56cf;--violet-10:#7d66d9;--violet-11:#baa7ff;--violet-12:#e2ddfe}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--violet-1:color(display-p3 0.077 0.071 0.118);--violet-2:color(display-p3 0.101 0.084 0.141);--violet-3:color(display-p3 0.154 0.123 0.256);--violet-4:color(display-p3 0.191 0.148 0.345);--violet-5:color(display-p3 0.226 0.182 0.396);--violet-6:color(display-p3 0.269 0.223 0.449);--violet-7:color(display-p3 0.326 0.277 0.53);--violet-8:color(display-p3 0.399 0.346 0.656);--violet-9:color(display-p3 0.417 0.341 0.784);--violet-10:color(display-p3 0.477 0.402 0.823);--violet-11:color(display-p3 0.72 0.65 1);--violet-12:color(display-p3 0.883 0.867 0.986)}}}.light,.light-theme,:root{--violet-a1:#5500aa03;--violet-a2:#4900ff07;--violet-a3:#4400ee0f;--violet-a4:#4300ff1b;--violet-a5:#3600ff26;--violet-a6:#3100fb35;--violet-a7:#2d01dd4a;--violet-a8:#2b00d066;--violet-a9:#2400b7a9;--violet-a10:#2300abb2;--violet-a11:#1f0099af;--violet-a12:#0b0043d9}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--violet-a1:color(display-p3 0.349 0.024 0.675/0.012);--violet-a2:color(display-p3 0.161 0.024 0.863/0.028);--violet-a3:color(display-p3 0.204 0.004 0.871/0.059);--violet-a4:color(display-p3 0.196 0.004 1/0.102);--violet-a5:color(display-p3 0.165 0.008 1/0.15);--violet-a6:color(display-p3 0.153 0.004 0.906/0.208);--violet-a7:color(display-p3 0.141 0.004 0.796/0.287);--violet-a8:color(display-p3 0.133 0.004 0.753/0.397);--violet-a9:color(display-p3 0.114 0 0.675/0.659);--violet-a10:color(display-p3 0.11 0 0.627/0.695);--violet-a11:color(display-p3 0.383 0.317 0.702);--violet-a12:color(display-p3 0.179 0.15 0.359)}}}.dark,.dark-theme{--violet-a1:#4422ff0f;--violet-a2:#853ff916;--violet-a3:#8354fe36;--violet-a4:#7d51fd50;--violet-a5:#845ffd5f;--violet-a6:#8f6cfd6d;--violet-a7:#9879ff83;--violet-a8:#977dfea8;--violet-a9:#8668ffcc;--violet-a10:#9176fed7;--violet-a11:#baa7ff;--violet-a12:#e3deff}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--violet-a1:color(display-p3 0.282 0.141 0.996/0.055);--violet-a2:color(display-p3 0.51 0.263 1/0.08);--violet-a3:color(display-p3 0.494 0.337 0.996/0.202);--violet-a4:color(display-p3 0.49 0.345 1/0.299);--violet-a5:color(display-p3 0.525 0.392 1/0.353);--violet-a6:color(display-p3 0.569 0.455 1/0.408);--violet-a7:color(display-p3 0.588 0.494 1/0.496);--violet-a8:color(display-p3 0.596 0.51 1/0.631);--violet-a9:color(display-p3 0.522 0.424 1/0.769);--violet-a10:color(display-p3 0.576 0.482 1/0.811);--violet-a11:color(display-p3 0.72 0.65 1);--violet-a12:color(display-p3 0.883 0.867 0.986)}}}.light,.light-theme,:root{--iris-1:#fdfdff;--iris-2:#f8f8ff;--iris-3:#f0f1fe;--iris-4:#e6e7ff;--iris-5:#dadcff;--iris-6:#cbcdff;--iris-7:#b8baf8;--iris-8:#9b9ef0;--iris-9:#5b5bd6;--iris-10:#5151cd;--iris-11:#5753c6;--iris-12:#272962}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--iris-1:color(display-p3 0.992 0.992 0.999);--iris-2:color(display-p3 0.972 0.973 0.998);--iris-3:color(display-p3 0.943 0.945 0.992);--iris-4:color(display-p3 0.902 0.906 1);--iris-5:color(display-p3 0.857 0.861 1);--iris-6:color(display-p3 0.799 0.805 0.987);--iris-7:color(display-p3 0.721 0.727 0.955);--iris-8:color(display-p3 0.61 0.619 0.918);--iris-9:color(display-p3 0.357 0.357 0.81);--iris-10:color(display-p3 0.318 0.318 0.774);--iris-11:color(display-p3 0.337 0.326 0.748);--iris-12:color(display-p3 0.154 0.161 0.371)}}}.dark,.dark-theme{--iris-1:#13131e;--iris-2:#171625;--iris-3:#202248;--iris-4:#262a65;--iris-5:#303374;--iris-6:#3d3e82;--iris-7:#4a4a95;--iris-8:#5958b1;--iris-9:#5b5bd6;--iris-10:#6e6ade;--iris-11:#b1a9ff;--iris-12:#e0dffe}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--iris-1:color(display-p3 0.075 0.075 0.114);--iris-2:color(display-p3 0.089 0.086 0.14);--iris-3:color(display-p3 0.128 0.134 0.272);--iris-4:color(display-p3 0.153 0.165 0.382);--iris-5:color(display-p3 0.192 0.201 0.44);--iris-6:color(display-p3 0.239 0.241 0.491);--iris-7:color(display-p3 0.291 0.289 0.565);--iris-8:color(display-p3 0.35 0.345 0.673);--iris-9:color(display-p3 0.357 0.357 0.81);--iris-10:color(display-p3 0.428 0.416 0.843);--iris-11:color(display-p3 0.685 0.662 1);--iris-12:color(display-p3 0.878 0.875 0.986)}}}.light,.light-theme,:root{--iris-a1:#0000ff02;--iris-a2:#0000ff07;--iris-a3:#0011ee0f;--iris-a4:#000bff19;--iris-a5:#000eff25;--iris-a6:#000aff34;--iris-a7:#0008e647;--iris-a8:#0008d964;--iris-a9:#0000c0a4;--iris-a10:#0000b6ae;--iris-a11:#0600abac;--iris-a12:#000246d8}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--iris-a1:color(display-p3 0.02 0.02 1/0.008);--iris-a2:color(display-p3 0.024 0.024 0.863/0.028);--iris-a3:color(display-p3 0.004 0.071 0.871/0.059);--iris-a4:color(display-p3 0.012 0.051 1/0.099);--iris-a5:color(display-p3 0.008 0.035 1/0.142);--iris-a6:color(display-p3 0 0.02 0.941/0.2);--iris-a7:color(display-p3 0.004 0.02 0.847/0.279);--iris-a8:color(display-p3 0.004 0.024 0.788/0.389);--iris-a9:color(display-p3 0 0 0.706/0.644);--iris-a10:color(display-p3 0 0 0.667/0.683);--iris-a11:color(display-p3 0.337 0.326 0.748);--iris-a12:color(display-p3 0.154 0.161 0.371)}}}.dark,.dark-theme{--iris-a1:#3636fe0e;--iris-a2:#564bf916;--iris-a3:#525bff3b;--iris-a4:#4d58ff5a;--iris-a5:#5b62fd6b;--iris-a6:#6d6ffd7a;--iris-a7:#7777fe8e;--iris-a8:#7b7afeac;--iris-a9:#6a6afed4;--iris-a10:#7d79ffdc;--iris-a11:#b1a9ff;--iris-a12:#e1e0ff}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--iris-a1:color(display-p3 0.224 0.224 0.992/0.051);--iris-a2:color(display-p3 0.361 0.314 1/0.08);--iris-a3:color(display-p3 0.357 0.373 1/0.219);--iris-a4:color(display-p3 0.325 0.361 1/0.337);--iris-a5:color(display-p3 0.38 0.4 1/0.4);--iris-a6:color(display-p3 0.447 0.447 1/0.454);--iris-a7:color(display-p3 0.486 0.486 1/0.534);--iris-a8:color(display-p3 0.502 0.494 1/0.652);--iris-a9:color(display-p3 0.431 0.431 1/0.799);--iris-a10:color(display-p3 0.502 0.486 1/0.832);--iris-a11:color(display-p3 0.685 0.662 1);--iris-a12:color(display-p3 0.878 0.875 0.986)}}}.light,.light-theme,:root{--indigo-1:#fdfdfe;--indigo-2:#f7f9ff;--indigo-3:#edf2fe;--indigo-4:#e1e9ff;--indigo-5:#d2deff;--indigo-6:#c1d0ff;--indigo-7:#abbdf9;--indigo-8:#8da4ef;--indigo-9:#3e63dd;--indigo-10:#3358d4;--indigo-11:#3a5bc7;--indigo-12:#1f2d5c}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--indigo-1:color(display-p3 0.992 0.992 0.996);--indigo-2:color(display-p3 0.971 0.977 0.998);--indigo-3:color(display-p3 0.933 0.948 0.992);--indigo-4:color(display-p3 0.885 0.914 1);--indigo-5:color(display-p3 0.831 0.87 1);--indigo-6:color(display-p3 0.767 0.814 0.995);--indigo-7:color(display-p3 0.685 0.74 0.957);--indigo-8:color(display-p3 0.569 0.639 0.916);--indigo-9:color(display-p3 0.276 0.384 0.837);--indigo-10:color(display-p3 0.234 0.343 0.801);--indigo-11:color(display-p3 0.256 0.354 0.755);--indigo-12:color(display-p3 0.133 0.175 0.348)}}}.dark,.dark-theme{--indigo-1:#11131f;--indigo-2:#141726;--indigo-3:#182449;--indigo-4:#1d2e62;--indigo-5:#253974;--indigo-6:#304384;--indigo-7:#3a4f97;--indigo-8:#435db1;--indigo-9:#3e63dd;--indigo-10:#5472e4;--indigo-11:#9eb1ff;--indigo-12:#d6e1ff}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--indigo-1:color(display-p3 0.068 0.074 0.118);--indigo-2:color(display-p3 0.081 0.089 0.144);--indigo-3:color(display-p3 0.105 0.141 0.275);--indigo-4:color(display-p3 0.129 0.18 0.369);--indigo-5:color(display-p3 0.163 0.22 0.439);--indigo-6:color(display-p3 0.203 0.262 0.5);--indigo-7:color(display-p3 0.245 0.309 0.575);--indigo-8:color(display-p3 0.285 0.362 0.674);--indigo-9:color(display-p3 0.276 0.384 0.837);--indigo-10:color(display-p3 0.354 0.445 0.866);--indigo-11:color(display-p3 0.63 0.69 1);--indigo-12:color(display-p3 0.848 0.881 0.99)}}}.light,.light-theme,:root{--indigo-a1:#00008002;--indigo-a2:#0040ff08;--indigo-a3:#0047f112;--indigo-a4:#0044ff1e;--indigo-a5:#0044ff2d;--indigo-a6:#003eff3e;--indigo-a7:#0037ed54;--indigo-a8:#0034dc72;--indigo-a9:#0031d2c1;--indigo-a10:#002ec9cc;--indigo-a11:#002bb7c5;--indigo-a12:#001046e0}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--indigo-a1:color(display-p3 0.02 0.02 0.51/0.008);--indigo-a2:color(display-p3 0.024 0.161 0.863/0.028);--indigo-a3:color(display-p3 0.008 0.239 0.886/0.067);--indigo-a4:color(display-p3 0.004 0.247 1/0.114);--indigo-a5:color(display-p3 0.004 0.235 1/0.169);--indigo-a6:color(display-p3 0.004 0.208 0.984/0.232);--indigo-a7:color(display-p3 0.004 0.176 0.863/0.314);--indigo-a8:color(display-p3 0.004 0.165 0.812/0.432);--indigo-a9:color(display-p3 0 0.153 0.773/0.726);--indigo-a10:color(display-p3 0 0.137 0.737/0.765);--indigo-a11:color(display-p3 0.256 0.354 0.755);--indigo-a12:color(display-p3 0.133 0.175 0.348)}}}.dark,.dark-theme{--indigo-a1:#1133ff0f;--indigo-a2:#3354fa17;--indigo-a3:#2f62ff3c;--indigo-a4:#3566ff57;--indigo-a5:#4171fd6b;--indigo-a6:#5178fd7c;--indigo-a7:#5a7fff90;--indigo-a8:#5b81feac;--indigo-a9:#4671ffdb;--indigo-a10:#5c7efee3;--indigo-a11:#9eb1ff;--indigo-a12:#d6e1ff}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--indigo-a1:color(display-p3 0.071 0.212 0.996/0.055);--indigo-a2:color(display-p3 0.251 0.345 0.988/0.085);--indigo-a3:color(display-p3 0.243 0.404 1/0.223);--indigo-a4:color(display-p3 0.263 0.42 1/0.324);--indigo-a5:color(display-p3 0.314 0.451 1/0.4);--indigo-a6:color(display-p3 0.361 0.49 1/0.467);--indigo-a7:color(display-p3 0.388 0.51 1/0.547);--indigo-a8:color(display-p3 0.404 0.518 1/0.652);--indigo-a9:color(display-p3 0.318 0.451 1/0.824);--indigo-a10:color(display-p3 0.404 0.506 1/0.858);--indigo-a11:color(display-p3 0.63 0.69 1);--indigo-a12:color(display-p3 0.848 0.881 0.99)}}}.light,.light-theme,:root{--blue-1:#fbfdff;--blue-2:#f4faff;--blue-3:#e6f4fe;--blue-4:#d5efff;--blue-5:#c2e5ff;--blue-6:#acd8fc;--blue-7:#8ec8f6;--blue-8:#5eb1ef;--blue-9:#0090ff;--blue-10:#0588f0;--blue-11:#0d74ce;--blue-12:#113264}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--blue-1:color(display-p3 0.986 0.992 0.999);--blue-2:color(display-p3 0.96 0.979 0.998);--blue-3:color(display-p3 0.912 0.956 0.991);--blue-4:color(display-p3 0.853 0.932 1);--blue-5:color(display-p3 0.788 0.894 0.998);--blue-6:color(display-p3 0.709 0.843 0.976);--blue-7:color(display-p3 0.606 0.777 0.947);--blue-8:color(display-p3 0.451 0.688 0.917);--blue-9:color(display-p3 0.247 0.556 0.969);--blue-10:color(display-p3 0.234 0.523 0.912);--blue-11:color(display-p3 0.15 0.44 0.84);--blue-12:color(display-p3 0.102 0.193 0.379)}}}.dark,.dark-theme{--blue-1:#0d1520;--blue-2:#111927;--blue-3:#0d2847;--blue-4:#003362;--blue-5:#004074;--blue-6:#104d87;--blue-7:#205d9e;--blue-8:#2870bd;--blue-9:#0090ff;--blue-10:#3b9eff;--blue-11:#70b8ff;--blue-12:#c2e6ff}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--blue-1:color(display-p3 0.057 0.081 0.122);--blue-2:color(display-p3 0.072 0.098 0.147);--blue-3:color(display-p3 0.078 0.154 0.27);--blue-4:color(display-p3 0.033 0.197 0.37);--blue-5:color(display-p3 0.08 0.245 0.441);--blue-6:color(display-p3 0.14 0.298 0.511);--blue-7:color(display-p3 0.195 0.361 0.6);--blue-8:color(display-p3 0.239 0.434 0.72);--blue-9:color(display-p3 0.247 0.556 0.969);--blue-10:color(display-p3 0.344 0.612 0.973);--blue-11:color(display-p3 0.49 0.72 1);--blue-12:color(display-p3 0.788 0.898 0.99)}}}.light,.light-theme,:root{--blue-a1:#0080ff04;--blue-a2:#008cff0b;--blue-a3:#008ff519;--blue-a4:#009eff2a;--blue-a5:#0093ff3d;--blue-a6:#0088f653;--blue-a7:#0083eb71;--blue-a8:#0084e6a1;--blue-a9:#0090ff;--blue-a10:#0086f0fa;--blue-a11:#006dcbf2;--blue-a12:#002359ee}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--blue-a1:color(display-p3 0.024 0.514 1/0.016);--blue-a2:color(display-p3 0.024 0.514 0.906/0.04);--blue-a3:color(display-p3 0.012 0.506 0.914/0.087);--blue-a4:color(display-p3 0.008 0.545 1/0.146);--blue-a5:color(display-p3 0.004 0.502 0.984/0.212);--blue-a6:color(display-p3 0.004 0.463 0.922/0.291);--blue-a7:color(display-p3 0.004 0.431 0.863/0.393);--blue-a8:color(display-p3 0 0.427 0.851/0.55);--blue-a9:color(display-p3 0 0.412 0.961/0.753);--blue-a10:color(display-p3 0 0.376 0.886/0.765);--blue-a11:color(display-p3 0.15 0.44 0.84);--blue-a12:color(display-p3 0.102 0.193 0.379)}}}.dark,.dark-theme{--blue-a1:#004df211;--blue-a2:#1166fb18;--blue-a3:#0077ff3a;--blue-a4:#0075ff57;--blue-a5:#0081fd6b;--blue-a6:#0f89fd7f;--blue-a7:#2a91fe98;--blue-a8:#3094feb9;--blue-a9:#0090ff;--blue-a10:#3b9eff;--blue-a11:#70b8ff;--blue-a12:#c2e6ff}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--blue-a1:color(display-p3 0 0.333 1/0.059);--blue-a2:color(display-p3 0.114 0.435 0.988/0.085);--blue-a3:color(display-p3 0.122 0.463 1/0.219);--blue-a4:color(display-p3 0 0.467 1/0.324);--blue-a5:color(display-p3 0.098 0.51 1/0.4);--blue-a6:color(display-p3 0.224 0.557 1/0.475);--blue-a7:color(display-p3 0.294 0.584 1/0.572);--blue-a8:color(display-p3 0.314 0.592 1/0.702);--blue-a9:color(display-p3 0.251 0.573 0.996/0.967);--blue-a10:color(display-p3 0.357 0.631 1/0.971);--blue-a11:color(display-p3 0.49 0.72 1);--blue-a12:color(display-p3 0.788 0.898 0.99)}}}.light,.light-theme,:root{--cyan-1:#fafdfe;--cyan-2:#f2fafb;--cyan-3:#def7f9;--cyan-4:#caf1f6;--cyan-5:#b5e9f0;--cyan-6:#9ddde7;--cyan-7:#7dcedc;--cyan-8:#3db9cf;--cyan-9:#00a2c7;--cyan-10:#0797b9;--cyan-11:#107d98;--cyan-12:#0d3c48}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--cyan-1:color(display-p3 0.982 0.992 0.996);--cyan-2:color(display-p3 0.955 0.981 0.984);--cyan-3:color(display-p3 0.888 0.965 0.975);--cyan-4:color(display-p3 0.821 0.941 0.959);--cyan-5:color(display-p3 0.751 0.907 0.935);--cyan-6:color(display-p3 0.671 0.862 0.9);--cyan-7:color(display-p3 0.564 0.8 0.854);--cyan-8:color(display-p3 0.388 0.715 0.798);--cyan-9:color(display-p3 0.282 0.627 0.765);--cyan-10:color(display-p3 0.264 0.583 0.71);--cyan-11:color(display-p3 0.08 0.48 0.63);--cyan-12:color(display-p3 0.108 0.232 0.277)}}}.dark,.dark-theme{--cyan-1:#0b161a;--cyan-2:#101b20;--cyan-3:#082c36;--cyan-4:#003848;--cyan-5:#004558;--cyan-6:#045468;--cyan-7:#12677e;--cyan-8:#11809c;--cyan-9:#00a2c7;--cyan-10:#23afd0;--cyan-11:#4ccce6;--cyan-12:#b6ecf7}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--cyan-1:color(display-p3 0.053 0.085 0.098);--cyan-2:color(display-p3 0.072 0.105 0.122);--cyan-3:color(display-p3 0.073 0.168 0.209);--cyan-4:color(display-p3 0.063 0.216 0.277);--cyan-5:color(display-p3 0.091 0.267 0.336);--cyan-6:color(display-p3 0.137 0.324 0.4);--cyan-7:color(display-p3 0.186 0.398 0.484);--cyan-8:color(display-p3 0.23 0.496 0.6);--cyan-9:color(display-p3 0.282 0.627 0.765);--cyan-10:color(display-p3 0.331 0.675 0.801);--cyan-11:color(display-p3 0.446 0.79 0.887);--cyan-12:color(display-p3 0.757 0.919 0.962)}}}.light,.light-theme,:root{--cyan-a1:#0099cc05;--cyan-a2:#009db10d;--cyan-a3:#00c2d121;--cyan-a4:#00bcd435;--cyan-a5:#01b4cc4a;--cyan-a6:#00a7c162;--cyan-a7:#009fbb82;--cyan-a8:#00a3c0c2;--cyan-a9:#00a2c7;--cyan-a10:#0094b7f8;--cyan-a11:#007491ef;--cyan-a12:#00323ef2}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--cyan-a1:color(display-p3 0.02 0.608 0.804/0.02);--cyan-a2:color(display-p3 0.02 0.557 0.647/0.044);--cyan-a3:color(display-p3 0.004 0.694 0.796/0.114);--cyan-a4:color(display-p3 0.004 0.678 0.784/0.181);--cyan-a5:color(display-p3 0.004 0.624 0.733/0.248);--cyan-a6:color(display-p3 0.004 0.584 0.706/0.33);--cyan-a7:color(display-p3 0.004 0.541 0.667/0.436);--cyan-a8:color(display-p3 0 0.533 0.667/0.612);--cyan-a9:color(display-p3 0 0.482 0.675/0.718);--cyan-a10:color(display-p3 0 0.435 0.608/0.738);--cyan-a11:color(display-p3 0.08 0.48 0.63);--cyan-a12:color(display-p3 0.108 0.232 0.277)}}}.dark,.dark-theme{--cyan-a1:#0091f70a;--cyan-a2:#02a7f211;--cyan-a3:#00befd28;--cyan-a4:#00baff3b;--cyan-a5:#00befd4d;--cyan-a6:#00c7fd5e;--cyan-a7:#14cdff75;--cyan-a8:#11cfff95;--cyan-a9:#00cfffc3;--cyan-a10:#28d6ffcd;--cyan-a11:#52e1fee5;--cyan-a12:#bbf3fef7}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--cyan-a1:color(display-p3 0 0.647 0.992/0.034);--cyan-a2:color(display-p3 0.133 0.733 1/0.059);--cyan-a3:color(display-p3 0.122 0.741 0.996/0.152);--cyan-a4:color(display-p3 0.051 0.725 1/0.227);--cyan-a5:color(display-p3 0.149 0.757 1/0.29);--cyan-a6:color(display-p3 0.267 0.792 1/0.358);--cyan-a7:color(display-p3 0.333 0.808 1/0.446);--cyan-a8:color(display-p3 0.357 0.816 1/0.572);--cyan-a9:color(display-p3 0.357 0.82 1/0.748);--cyan-a10:color(display-p3 0.4 0.839 1/0.786);--cyan-a11:color(display-p3 0.446 0.79 0.887);--cyan-a12:color(display-p3 0.757 0.919 0.962)}}}.light,.light-theme,:root{--teal-1:#fafefd;--teal-2:#f3fbf9;--teal-3:#e0f8f3;--teal-4:#ccf3ea;--teal-5:#b8eae0;--teal-6:#a1ded2;--teal-7:#83cdc1;--teal-8:#53b9ab;--teal-9:#12a594;--teal-10:#0d9b8a;--teal-11:#008573;--teal-12:#0d3d38}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--teal-1:color(display-p3 0.983 0.996 0.992);--teal-2:color(display-p3 0.958 0.983 0.976);--teal-3:color(display-p3 0.895 0.971 0.952);--teal-4:color(display-p3 0.831 0.949 0.92);--teal-5:color(display-p3 0.761 0.914 0.878);--teal-6:color(display-p3 0.682 0.864 0.825);--teal-7:color(display-p3 0.581 0.798 0.756);--teal-8:color(display-p3 0.433 0.716 0.671);--teal-9:color(display-p3 0.297 0.637 0.581);--teal-10:color(display-p3 0.275 0.599 0.542);--teal-11:color(display-p3 0.08 0.5 0.43);--teal-12:color(display-p3 0.11 0.235 0.219)}}}.dark,.dark-theme{--teal-1:#0d1514;--teal-2:#111c1b;--teal-3:#0d2d2a;--teal-4:#023b37;--teal-5:#084843;--teal-6:#145750;--teal-7:#1c6961;--teal-8:#207e73;--teal-9:#12a594;--teal-10:#0eb39e;--teal-11:#0bd8b6;--teal-12:#adf0dd}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--teal-1:color(display-p3 0.059 0.083 0.079);--teal-2:color(display-p3 0.075 0.11 0.107);--teal-3:color(display-p3 0.087 0.175 0.165);--teal-4:color(display-p3 0.087 0.227 0.214);--teal-5:color(display-p3 0.12 0.277 0.261);--teal-6:color(display-p3 0.162 0.335 0.314);--teal-7:color(display-p3 0.205 0.406 0.379);--teal-8:color(display-p3 0.245 0.489 0.453);--teal-9:color(display-p3 0.297 0.637 0.581);--teal-10:color(display-p3 0.319 0.69 0.62);--teal-11:color(display-p3 0.388 0.835 0.719);--teal-12:color(display-p3 0.734 0.934 0.87)}}}.light,.light-theme,:root{--teal-a1:#00cc9905;--teal-a2:#00aa800c;--teal-a3:#00c69d1f;--teal-a4:#00c39633;--teal-a5:#00b49047;--teal-a6:#00a6855e;--teal-a7:#0099807c;--teal-a8:#009783ac;--teal-a9:#009e8ced;--teal-a10:#009684f2;--teal-a11:#008573;--teal-a12:#00332df2}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--teal-a1:color(display-p3 0.024 0.757 0.514/0.016);--teal-a2:color(display-p3 0.02 0.647 0.467/0.044);--teal-a3:color(display-p3 0.004 0.741 0.557/0.106);--teal-a4:color(display-p3 0.004 0.702 0.537/0.169);--teal-a5:color(display-p3 0.004 0.643 0.494/0.24);--teal-a6:color(display-p3 0.004 0.569 0.447/0.318);--teal-a7:color(display-p3 0.004 0.518 0.424/0.42);--teal-a8:color(display-p3 0 0.506 0.424/0.569);--teal-a9:color(display-p3 0 0.482 0.404/0.702);--teal-a10:color(display-p3 0 0.451 0.369/0.726);--teal-a11:color(display-p3 0.08 0.5 0.43);--teal-a12:color(display-p3 0.11 0.235 0.219)}}}.dark,.dark-theme{--teal-a1:#00deab05;--teal-a2:#12fbe60c;--teal-a3:#00ffe61e;--teal-a4:#00ffe92d;--teal-a5:#00ffea3b;--teal-a6:#1cffe84b;--teal-a7:#2efde85f;--teal-a8:#32ffe775;--teal-a9:#13ffe49f;--teal-a10:#0dffe0ae;--teal-a11:#0afed5d6;--teal-a12:#b8ffebef}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--teal-a1:color(display-p3 0 0.992 0.761/0.017);--teal-a2:color(display-p3 0.235 0.988 0.902/0.047);--teal-a3:color(display-p3 0.235 1 0.898/0.118);--teal-a4:color(display-p3 0.18 0.996 0.929/0.173);--teal-a5:color(display-p3 0.31 1 0.933/0.227);--teal-a6:color(display-p3 0.396 1 0.933/0.286);--teal-a7:color(display-p3 0.443 1 0.925/0.366);--teal-a8:color(display-p3 0.459 1 0.925/0.454);--teal-a9:color(display-p3 0.443 0.996 0.906/0.61);--teal-a10:color(display-p3 0.439 0.996 0.89/0.669);--teal-a11:color(display-p3 0.388 0.835 0.719);--teal-a12:color(display-p3 0.734 0.934 0.87)}}}.light,.light-theme,:root{--jade-1:#fbfefd;--jade-2:#f4fbf7;--jade-3:#e6f7ed;--jade-4:#d6f1e3;--jade-5:#c3e9d7;--jade-6:#acdec8;--jade-7:#8bceb6;--jade-8:#56ba9f;--jade-9:#29a383;--jade-10:#26997b;--jade-11:#208368;--jade-12:#1d3b31}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--jade-1:color(display-p3 0.986 0.996 0.992);--jade-2:color(display-p3 0.962 0.983 0.969);--jade-3:color(display-p3 0.912 0.965 0.932);--jade-4:color(display-p3 0.858 0.941 0.893);--jade-5:color(display-p3 0.795 0.909 0.847);--jade-6:color(display-p3 0.715 0.864 0.791);--jade-7:color(display-p3 0.603 0.802 0.718);--jade-8:color(display-p3 0.44 0.72 0.629);--jade-9:color(display-p3 0.319 0.63 0.521);--jade-10:color(display-p3 0.299 0.592 0.488);--jade-11:color(display-p3 0.15 0.5 0.37);--jade-12:color(display-p3 0.142 0.229 0.194)}}}.dark,.dark-theme{--jade-1:#0d1512;--jade-2:#121c18;--jade-3:#0f2e22;--jade-4:#0b3b2c;--jade-5:#114837;--jade-6:#1b5745;--jade-7:#246854;--jade-8:#2a7e68;--jade-9:#29a383;--jade-10:#27b08b;--jade-11:#1fd8a4;--jade-12:#adf0d4}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--jade-1:color(display-p3 0.059 0.083 0.071);--jade-2:color(display-p3 0.078 0.11 0.094);--jade-3:color(display-p3 0.091 0.176 0.138);--jade-4:color(display-p3 0.102 0.228 0.177);--jade-5:color(display-p3 0.133 0.279 0.221);--jade-6:color(display-p3 0.174 0.334 0.273);--jade-7:color(display-p3 0.219 0.402 0.335);--jade-8:color(display-p3 0.263 0.488 0.411);--jade-9:color(display-p3 0.319 0.63 0.521);--jade-10:color(display-p3 0.338 0.68 0.555);--jade-11:color(display-p3 0.4 0.835 0.656);--jade-12:color(display-p3 0.734 0.934 0.838)}}}.light,.light-theme,:root{--jade-a1:#00c08004;--jade-a2:#00a3460b;--jade-a3:#00ae4819;--jade-a4:#00a85129;--jade-a5:#00a2553c;--jade-a6:#009a5753;--jade-a7:#00945f74;--jade-a8:#00976ea9;--jade-a9:#00916bd6;--jade-a10:#008764d9;--jade-a11:#007152df;--jade-a12:#002217e2}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--jade-a1:color(display-p3 0.024 0.757 0.514/0.016);--jade-a2:color(display-p3 0.024 0.612 0.22/0.04);--jade-a3:color(display-p3 0.012 0.596 0.235/0.087);--jade-a4:color(display-p3 0.008 0.588 0.255/0.142);--jade-a5:color(display-p3 0.004 0.561 0.251/0.204);--jade-a6:color(display-p3 0.004 0.525 0.278/0.287);--jade-a7:color(display-p3 0.004 0.506 0.29/0.397);--jade-a8:color(display-p3 0 0.506 0.337/0.561);--jade-a9:color(display-p3 0 0.459 0.298/0.683);--jade-a10:color(display-p3 0 0.42 0.271/0.702);--jade-a11:color(display-p3 0.15 0.5 0.37);--jade-a12:color(display-p3 0.142 0.229 0.194)}}}.dark,.dark-theme{--jade-a1:#00de4505;--jade-a2:#27fba60c;--jade-a3:#02f99920;--jade-a4:#00ffaa2d;--jade-a5:#11ffb63b;--jade-a6:#34ffc24b;--jade-a7:#45fdc75e;--jade-a8:#48ffcf75;--jade-a9:#38feca9d;--jade-a10:#31fec7ab;--jade-a11:#21fec0d6;--jade-a12:#b8ffe1ef}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--jade-a1:color(display-p3 0 0.992 0.298/0.017);--jade-a2:color(display-p3 0.318 0.988 0.651/0.047);--jade-a3:color(display-p3 0.267 1 0.667/0.118);--jade-a4:color(display-p3 0.275 0.996 0.702/0.173);--jade-a5:color(display-p3 0.361 1 0.741/0.227);--jade-a6:color(display-p3 0.439 1 0.796/0.286);--jade-a7:color(display-p3 0.49 1 0.804/0.362);--jade-a8:color(display-p3 0.506 1 0.835/0.45);--jade-a9:color(display-p3 0.478 0.996 0.816/0.606);--jade-a10:color(display-p3 0.478 1 0.816/0.656);--jade-a11:color(display-p3 0.4 0.835 0.656);--jade-a12:color(display-p3 0.734 0.934 0.838)}}}.light,.light-theme,:root{--green-1:#fbfefc;--green-2:#f4fbf6;--green-3:#e6f6eb;--green-4:#d6f1df;--green-5:#c4e8d1;--green-6:#adddc0;--green-7:#8eceaa;--green-8:#5bb98b;--green-9:#30a46c;--green-10:#2b9a66;--green-11:#218358;--green-12:#193b2d}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--green-1:color(display-p3 0.986 0.996 0.989);--green-2:color(display-p3 0.963 0.983 0.967);--green-3:color(display-p3 0.913 0.964 0.925);--green-4:color(display-p3 0.859 0.94 0.879);--green-5:color(display-p3 0.796 0.907 0.826);--green-6:color(display-p3 0.718 0.863 0.761);--green-7:color(display-p3 0.61 0.801 0.675);--green-8:color(display-p3 0.451 0.715 0.559);--green-9:color(display-p3 0.332 0.634 0.442);--green-10:color(display-p3 0.308 0.595 0.417);--green-11:color(display-p3 0.19 0.5 0.32);--green-12:color(display-p3 0.132 0.228 0.18)}}}.dark,.dark-theme{--green-1:#0e1512;--green-2:#121b17;--green-3:#132d21;--green-4:#113b29;--green-5:#174933;--green-6:#20573e;--green-7:#28684a;--green-8:#2f7c57;--green-9:#30a46c;--green-10:#33b074;--green-11:#3dd68c;--green-12:#b1f1cb}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--green-1:color(display-p3 0.062 0.083 0.071);--green-2:color(display-p3 0.079 0.106 0.09);--green-3:color(display-p3 0.1 0.173 0.133);--green-4:color(display-p3 0.115 0.229 0.166);--green-5:color(display-p3 0.147 0.282 0.206);--green-6:color(display-p3 0.185 0.338 0.25);--green-7:color(display-p3 0.227 0.403 0.298);--green-8:color(display-p3 0.27 0.479 0.351);--green-9:color(display-p3 0.332 0.634 0.442);--green-10:color(display-p3 0.357 0.682 0.474);--green-11:color(display-p3 0.434 0.828 0.573);--green-12:color(display-p3 0.747 0.938 0.807)}}}.light,.light-theme,:root{--green-a1:#00c04004;--green-a2:#00a32f0b;--green-a3:#00a43319;--green-a4:#00a83829;--green-a5:#019c393b;--green-a6:#00963c52;--green-a7:#00914071;--green-a8:#00924ba4;--green-a9:#008f4acf;--green-a10:#008647d4;--green-a11:#00713fde;--green-a12:#002616e6}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--green-a1:color(display-p3 0.024 0.757 0.267/0.016);--green-a2:color(display-p3 0.024 0.565 0.129/0.036);--green-a3:color(display-p3 0.012 0.596 0.145/0.087);--green-a4:color(display-p3 0.008 0.588 0.145/0.142);--green-a5:color(display-p3 0.004 0.541 0.157/0.204);--green-a6:color(display-p3 0.004 0.518 0.157/0.283);--green-a7:color(display-p3 0.004 0.486 0.165/0.389);--green-a8:color(display-p3 0 0.478 0.2/0.55);--green-a9:color(display-p3 0 0.455 0.165/0.667);--green-a10:color(display-p3 0 0.416 0.153/0.691);--green-a11:color(display-p3 0.19 0.5 0.32);--green-a12:color(display-p3 0.132 0.228 0.18)}}}.dark,.dark-theme{--green-a1:#00de4505;--green-a2:#29f99d0b;--green-a3:#22ff991e;--green-a4:#11ff992d;--green-a5:#2bffa23c;--green-a6:#44ffaa4b;--green-a7:#50fdac5e;--green-a8:#54ffad73;--green-a9:#44ffa49e;--green-a10:#43fea4ab;--green-a11:#46fea5d4;--green-a12:#bbffd7f0}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--green-a1:color(display-p3 0 0.992 0.298/0.017);--green-a2:color(display-p3 0.341 0.98 0.616/0.043);--green-a3:color(display-p3 0.376 0.996 0.655/0.114);--green-a4:color(display-p3 0.341 0.996 0.635/0.173);--green-a5:color(display-p3 0.408 1 0.678/0.232);--green-a6:color(display-p3 0.475 1 0.706/0.29);--green-a7:color(display-p3 0.514 1 0.706/0.362);--green-a8:color(display-p3 0.529 1 0.718/0.442);--green-a9:color(display-p3 0.502 0.996 0.682/0.61);--green-a10:color(display-p3 0.506 1 0.682/0.66);--green-a11:color(display-p3 0.434 0.828 0.573);--green-a12:color(display-p3 0.747 0.938 0.807)}}}.light,.light-theme,:root{--grass-1:#fbfefb;--grass-2:#f5fbf5;--grass-3:#e9f6e9;--grass-4:#daf1db;--grass-5:#c9e8ca;--grass-6:#b2ddb5;--grass-7:#94ce9a;--grass-8:#65ba74;--grass-9:#46a758;--grass-10:#3e9b4f;--grass-11:#2a7e3b;--grass-12:#203c25}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--grass-1:color(display-p3 0.986 0.996 0.985);--grass-2:color(display-p3 0.966 0.983 0.964);--grass-3:color(display-p3 0.923 0.965 0.917);--grass-4:color(display-p3 0.872 0.94 0.865);--grass-5:color(display-p3 0.811 0.908 0.802);--grass-6:color(display-p3 0.733 0.864 0.724);--grass-7:color(display-p3 0.628 0.803 0.622);--grass-8:color(display-p3 0.477 0.72 0.482);--grass-9:color(display-p3 0.38 0.647 0.378);--grass-10:color(display-p3 0.344 0.598 0.342);--grass-11:color(display-p3 0.263 0.488 0.261);--grass-12:color(display-p3 0.151 0.233 0.153)}}}.dark,.dark-theme{--grass-1:#0e1511;--grass-2:#141a15;--grass-3:#1b2a1e;--grass-4:#1d3a24;--grass-5:#25482d;--grass-6:#2d5736;--grass-7:#366740;--grass-8:#3e7949;--grass-9:#46a758;--grass-10:#53b365;--grass-11:#71d083;--grass-12:#c2f0c2}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--grass-1:color(display-p3 0.062 0.083 0.067);--grass-2:color(display-p3 0.083 0.103 0.085);--grass-3:color(display-p3 0.118 0.163 0.122);--grass-4:color(display-p3 0.142 0.225 0.15);--grass-5:color(display-p3 0.178 0.279 0.186);--grass-6:color(display-p3 0.217 0.337 0.224);--grass-7:color(display-p3 0.258 0.4 0.264);--grass-8:color(display-p3 0.302 0.47 0.305);--grass-9:color(display-p3 0.38 0.647 0.378);--grass-10:color(display-p3 0.426 0.694 0.426);--grass-11:color(display-p3 0.535 0.807 0.542);--grass-12:color(display-p3 0.797 0.936 0.776)}}}.light,.light-theme,:root{--grass-a1:#00c00004;--grass-a2:#0099000a;--grass-a3:#00970016;--grass-a4:#009f0725;--grass-a5:#00930536;--grass-a6:#008f0a4d;--grass-a7:#018b0f6b;--grass-a8:#008d199a;--grass-a9:#008619b9;--grass-a10:#007b17c1;--grass-a11:#006514d5;--grass-a12:#002006df}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--grass-a1:color(display-p3 0.024 0.757 0.024/0.016);--grass-a2:color(display-p3 0.024 0.565 0.024/0.036);--grass-a3:color(display-p3 0.059 0.576 0.008/0.083);--grass-a4:color(display-p3 0.035 0.565 0.008/0.134);--grass-a5:color(display-p3 0.047 0.545 0.008/0.197);--grass-a6:color(display-p3 0.031 0.502 0.004/0.275);--grass-a7:color(display-p3 0.012 0.482 0.004/0.377);--grass-a8:color(display-p3 0 0.467 0.008/0.522);--grass-a9:color(display-p3 0.008 0.435 0/0.624);--grass-a10:color(display-p3 0.008 0.388 0/0.659);--grass-a11:color(display-p3 0.263 0.488 0.261);--grass-a12:color(display-p3 0.151 0.233 0.153)}}}.dark,.dark-theme{--grass-a1:#00de1205;--grass-a2:#5ef7780a;--grass-a3:#70fe8c1b;--grass-a4:#57ff802c;--grass-a5:#68ff8b3b;--grass-a6:#71ff8f4b;--grass-a7:#77fd925d;--grass-a8:#77fd9070;--grass-a9:#65ff82a1;--grass-a10:#72ff8dae;--grass-a11:#89ff9fcd;--grass-a12:#ceffceef}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--grass-a1:color(display-p3 0 0.992 0.071/0.017);--grass-a2:color(display-p3 0.482 0.996 0.584/0.038);--grass-a3:color(display-p3 0.549 0.992 0.588/0.106);--grass-a4:color(display-p3 0.51 0.996 0.557/0.169);--grass-a5:color(display-p3 0.553 1 0.588/0.227);--grass-a6:color(display-p3 0.584 1 0.608/0.29);--grass-a7:color(display-p3 0.604 1 0.616/0.358);--grass-a8:color(display-p3 0.608 1 0.62/0.433);--grass-a9:color(display-p3 0.573 1 0.569/0.622);--grass-a10:color(display-p3 0.6 0.996 0.6/0.673);--grass-a11:color(display-p3 0.535 0.807 0.542);--grass-a12:color(display-p3 0.797 0.936 0.776)}}}.light,.light-theme,:root{--orange-1:#fefcfb;--orange-2:#fff7ed;--orange-3:#ffefd6;--orange-4:#ffdfb5;--orange-5:#ffd19a;--orange-6:#ffc182;--orange-7:#f5ae73;--orange-8:#ec9455;--orange-9:#f76b15;--orange-10:#ef5f00;--orange-11:#cc4e00;--orange-12:#582d1d}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--orange-1:color(display-p3 0.995 0.988 0.985);--orange-2:color(display-p3 0.994 0.968 0.934);--orange-3:color(display-p3 0.989 0.938 0.85);--orange-4:color(display-p3 1 0.874 0.687);--orange-5:color(display-p3 1 0.821 0.583);--orange-6:color(display-p3 0.975 0.767 0.545);--orange-7:color(display-p3 0.919 0.693 0.486);--orange-8:color(display-p3 0.877 0.597 0.379);--orange-9:color(display-p3 0.9 0.45 0.2);--orange-10:color(display-p3 0.87 0.409 0.164);--orange-11:color(display-p3 0.76 0.34 0);--orange-12:color(display-p3 0.323 0.185 0.127)}}}.dark,.dark-theme{--orange-1:#17120e;--orange-2:#1e160f;--orange-3:#331e0b;--orange-4:#462100;--orange-5:#562800;--orange-6:#66350c;--orange-7:#7e451d;--orange-8:#a35829;--orange-9:#f76b15;--orange-10:#ff801f;--orange-11:#ffa057;--orange-12:#ffe0c2}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--orange-1:color(display-p3 0.088 0.07 0.057);--orange-2:color(display-p3 0.113 0.089 0.061);--orange-3:color(display-p3 0.189 0.12 0.056);--orange-4:color(display-p3 0.262 0.132 0);--orange-5:color(display-p3 0.315 0.168 0.016);--orange-6:color(display-p3 0.376 0.219 0.088);--orange-7:color(display-p3 0.465 0.283 0.147);--orange-8:color(display-p3 0.601 0.359 0.201);--orange-9:color(display-p3 0.9 0.45 0.2);--orange-10:color(display-p3 0.98 0.51 0.23);--orange-11:color(display-p3 1 0.63 0.38);--orange-12:color(display-p3 0.98 0.883 0.775)}}}.light,.light-theme,:root{--orange-a1:#c0400004;--orange-a2:#ff8e0012;--orange-a3:#ff9c0029;--orange-a4:#ff91014a;--orange-a5:#ff8b0065;--orange-a6:#ff81007d;--orange-a7:#ed6c008c;--orange-a8:#e35f00aa;--orange-a9:#f65e00ea;--orange-a10:#ef5f00;--orange-a11:#cc4e00;--orange-a12:#431200e2}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--orange-a1:color(display-p3 0.757 0.267 0.024/0.016);--orange-a2:color(display-p3 0.886 0.533 0.008/0.067);--orange-a3:color(display-p3 0.922 0.584 0.008/0.15);--orange-a4:color(display-p3 1 0.604 0.004/0.314);--orange-a5:color(display-p3 1 0.569 0.004/0.416);--orange-a6:color(display-p3 0.949 0.494 0.004/0.455);--orange-a7:color(display-p3 0.839 0.408 0/0.514);--orange-a8:color(display-p3 0.804 0.349 0/0.62);--orange-a9:color(display-p3 0.878 0.314 0/0.8);--orange-a10:color(display-p3 0.843 0.29 0/0.836);--orange-a11:color(display-p3 0.76 0.34 0);--orange-a12:color(display-p3 0.323 0.185 0.127)}}}.dark,.dark-theme{--orange-a1:#ec360007;--orange-a2:#fe6d000e;--orange-a3:#fb6a0025;--orange-a4:#ff590039;--orange-a5:#ff61004a;--orange-a6:#fd75045c;--orange-a7:#ff832c75;--orange-a8:#fe84389d;--orange-a9:#fe6d15f7;--orange-a10:#ff801f;--orange-a11:#ffa057;--orange-a12:#ffe0c2}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--orange-a1:color(display-p3 0.961 0.247 0/0.022);--orange-a2:color(display-p3 0.992 0.529 0/0.051);--orange-a3:color(display-p3 0.996 0.486 0/0.131);--orange-a4:color(display-p3 0.996 0.384 0/0.211);--orange-a5:color(display-p3 1 0.455 0/0.265);--orange-a6:color(display-p3 1 0.529 0.129/0.332);--orange-a7:color(display-p3 1 0.569 0.251/0.429);--orange-a8:color(display-p3 1 0.584 0.302/0.572);--orange-a9:color(display-p3 1 0.494 0.216/0.895);--orange-a10:color(display-p3 1 0.522 0.235/0.979);--orange-a11:color(display-p3 1 0.63 0.38);--orange-a12:color(display-p3 0.98 0.883 0.775)}}}.light,.light-theme,:root{--brown-1:#fefdfc;--brown-2:#fcf9f6;--brown-3:#f6eee7;--brown-4:#f0e4d9;--brown-5:#ebdaca;--brown-6:#e4cdb7;--brown-7:#dcbc9f;--brown-8:#cea37e;--brown-9:#ad7f58;--brown-10:#a07553;--brown-11:#815e46;--brown-12:#3e332e}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--brown-1:color(display-p3 0.995 0.992 0.989);--brown-2:color(display-p3 0.987 0.976 0.964);--brown-3:color(display-p3 0.959 0.936 0.909);--brown-4:color(display-p3 0.934 0.897 0.855);--brown-5:color(display-p3 0.909 0.856 0.798);--brown-6:color(display-p3 0.88 0.808 0.73);--brown-7:color(display-p3 0.841 0.742 0.639);--brown-8:color(display-p3 0.782 0.647 0.514);--brown-9:color(display-p3 0.651 0.505 0.368);--brown-10:color(display-p3 0.601 0.465 0.344);--brown-11:color(display-p3 0.485 0.374 0.288);--brown-12:color(display-p3 0.236 0.202 0.183)}}}.dark,.dark-theme{--brown-1:#12110f;--brown-2:#1c1816;--brown-3:#28211d;--brown-4:#322922;--brown-5:#3e3128;--brown-6:#4d3c2f;--brown-7:#614a39;--brown-8:#7c5f46;--brown-9:#ad7f58;--brown-10:#b88c67;--brown-11:#dbb594;--brown-12:#f2e1ca}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--brown-1:color(display-p3 0.071 0.067 0.059);--brown-2:color(display-p3 0.107 0.095 0.087);--brown-3:color(display-p3 0.151 0.13 0.115);--brown-4:color(display-p3 0.191 0.161 0.138);--brown-5:color(display-p3 0.235 0.194 0.162);--brown-6:color(display-p3 0.291 0.237 0.192);--brown-7:color(display-p3 0.365 0.295 0.232);--brown-8:color(display-p3 0.469 0.377 0.287);--brown-9:color(display-p3 0.651 0.505 0.368);--brown-10:color(display-p3 0.697 0.557 0.423);--brown-11:color(display-p3 0.835 0.715 0.597);--brown-12:color(display-p3 0.938 0.885 0.802)}}}.light,.light-theme,:root{--brown-a1:#aa550003;--brown-a2:#aa550009;--brown-a3:#a04b0018;--brown-a4:#9b4a0026;--brown-a5:#9f4d0035;--brown-a6:#a04e0048;--brown-a7:#a34e0060;--brown-a8:#9f4a0081;--brown-a9:#823c00a7;--brown-a10:#723300ac;--brown-a11:#522100b9;--brown-a12:#140600d1}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--brown-a1:color(display-p3 0.675 0.349 0.024/0.012);--brown-a2:color(display-p3 0.675 0.349 0.024/0.036);--brown-a3:color(display-p3 0.573 0.314 0.012/0.091);--brown-a4:color(display-p3 0.545 0.302 0.008/0.146);--brown-a5:color(display-p3 0.561 0.29 0.004/0.204);--brown-a6:color(display-p3 0.553 0.294 0.004/0.271);--brown-a7:color(display-p3 0.557 0.286 0.004/0.361);--brown-a8:color(display-p3 0.549 0.275 0.004/0.487);--brown-a9:color(display-p3 0.447 0.22 0/0.632);--brown-a10:color(display-p3 0.388 0.188 0/0.655);--brown-a11:color(display-p3 0.485 0.374 0.288);--brown-a12:color(display-p3 0.236 0.202 0.183)}}}.dark,.dark-theme{--brown-a1:#91110002;--brown-a2:#fba67c0c;--brown-a3:#fcb58c19;--brown-a4:#fbbb8a24;--brown-a5:#fcb88931;--brown-a6:#fdba8741;--brown-a7:#ffbb8856;--brown-a8:#ffbe8773;--brown-a9:#feb87da8;--brown-a10:#ffc18cb3;--brown-a11:#fed1aad9;--brown-a12:#feecd4f2}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--brown-a1:color(display-p3 0.855 0.071 0/0.005);--brown-a2:color(display-p3 0.98 0.706 0.525/0.043);--brown-a3:color(display-p3 0.996 0.745 0.576/0.093);--brown-a4:color(display-p3 1 0.765 0.592/0.135);--brown-a5:color(display-p3 1 0.761 0.588/0.181);--brown-a6:color(display-p3 1 0.773 0.592/0.24);--brown-a7:color(display-p3 0.996 0.776 0.58/0.32);--brown-a8:color(display-p3 1 0.78 0.573/0.433);--brown-a9:color(display-p3 1 0.769 0.549/0.627);--brown-a10:color(display-p3 1 0.792 0.596/0.677);--brown-a11:color(display-p3 0.835 0.715 0.597);--brown-a12:color(display-p3 0.938 0.885 0.802)}}}.light,.light-theme,:root{--sky-1:#f9feff;--sky-2:#f1fafd;--sky-3:#e1f6fd;--sky-4:#d1f0fa;--sky-5:#bee7f5;--sky-6:#a9daed;--sky-7:#8dcae3;--sky-8:#60b3d7;--sky-9:#7ce2fe;--sky-10:#74daf8;--sky-11:#00749e;--sky-12:#1d3e56}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--sky-1:color(display-p3 0.98 0.995 0.999);--sky-2:color(display-p3 0.953 0.98 0.99);--sky-3:color(display-p3 0.899 0.963 0.989);--sky-4:color(display-p3 0.842 0.937 0.977);--sky-5:color(display-p3 0.777 0.9 0.954);--sky-6:color(display-p3 0.701 0.851 0.921);--sky-7:color(display-p3 0.604 0.785 0.879);--sky-8:color(display-p3 0.457 0.696 0.829);--sky-9:color(display-p3 0.585 0.877 0.983);--sky-10:color(display-p3 0.555 0.845 0.959);--sky-11:color(display-p3 0.193 0.448 0.605);--sky-12:color(display-p3 0.145 0.241 0.329)}}}.dark,.dark-theme{--sky-1:#0d141f;--sky-2:#111a27;--sky-3:#112840;--sky-4:#113555;--sky-5:#154467;--sky-6:#1b537b;--sky-7:#1f6692;--sky-8:#197cae;--sky-9:#7ce2fe;--sky-10:#a8eeff;--sky-11:#75c7f0;--sky-12:#c2f3ff}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--sky-1:color(display-p3 0.056 0.078 0.116);--sky-2:color(display-p3 0.075 0.101 0.149);--sky-3:color(display-p3 0.089 0.154 0.244);--sky-4:color(display-p3 0.106 0.207 0.323);--sky-5:color(display-p3 0.135 0.261 0.394);--sky-6:color(display-p3 0.17 0.322 0.469);--sky-7:color(display-p3 0.205 0.394 0.557);--sky-8:color(display-p3 0.232 0.48 0.665);--sky-9:color(display-p3 0.585 0.877 0.983);--sky-10:color(display-p3 0.718 0.925 0.991);--sky-11:color(display-p3 0.536 0.772 0.924);--sky-12:color(display-p3 0.799 0.947 0.993)}}}.light,.light-theme,:root{--sky-a1:#00d5ff06;--sky-a2:#00a4db0e;--sky-a3:#00b3ee1e;--sky-a4:#00ace42e;--sky-a5:#00a1d841;--sky-a6:#0092ca56;--sky-a7:#0089c172;--sky-a8:#0085bf9f;--sky-a9:#00c7fe83;--sky-a10:#00bcf38b;--sky-a11:#00749e;--sky-a12:#002540e2}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--sky-a1:color(display-p3 0.02 0.804 1/0.02);--sky-a2:color(display-p3 0.024 0.592 0.757/0.048);--sky-a3:color(display-p3 0.004 0.655 0.886/0.102);--sky-a4:color(display-p3 0.004 0.604 0.851/0.157);--sky-a5:color(display-p3 0.004 0.565 0.792/0.224);--sky-a6:color(display-p3 0.004 0.502 0.737/0.299);--sky-a7:color(display-p3 0.004 0.459 0.694/0.397);--sky-a8:color(display-p3 0 0.435 0.682/0.542);--sky-a9:color(display-p3 0.004 0.71 0.965/0.416);--sky-a10:color(display-p3 0.004 0.647 0.914/0.444);--sky-a11:color(display-p3 0.193 0.448 0.605);--sky-a12:color(display-p3 0.145 0.241 0.329)}}}.dark,.dark-theme{--sky-a1:#0044ff0f;--sky-a2:#1171fb18;--sky-a3:#1184fc33;--sky-a4:#128fff49;--sky-a5:#1c9dfd5d;--sky-a6:#28a5ff72;--sky-a7:#2badfe8b;--sky-a8:#1db2fea9;--sky-a9:#7ce3ff;--sky-a10:#a8eeff;--sky-a11:#7cd3ffef;--sky-a12:#c2f3ff}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--sky-a1:color(display-p3 0 0.282 0.996/0.055);--sky-a2:color(display-p3 0.157 0.467 0.992/0.089);--sky-a3:color(display-p3 0.192 0.522 0.996/0.19);--sky-a4:color(display-p3 0.212 0.584 1/0.274);--sky-a5:color(display-p3 0.259 0.631 1/0.349);--sky-a6:color(display-p3 0.302 0.655 1/0.433);--sky-a7:color(display-p3 0.329 0.686 1/0.526);--sky-a8:color(display-p3 0.325 0.71 1/0.643);--sky-a9:color(display-p3 0.592 0.894 1/0.984);--sky-a10:color(display-p3 0.722 0.933 1/0.992);--sky-a11:color(display-p3 0.536 0.772 0.924);--sky-a12:color(display-p3 0.799 0.947 0.993)}}}.light,.light-theme,:root{--mint-1:#f9fefd;--mint-2:#f2fbf9;--mint-3:#ddf9f2;--mint-4:#c8f4e9;--mint-5:#b3ecde;--mint-6:#9ce0d0;--mint-7:#7ecfbd;--mint-8:#4cbba5;--mint-9:#86ead4;--mint-10:#7de0cb;--mint-11:#027864;--mint-12:#16433c}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--mint-1:color(display-p3 0.98 0.995 0.992);--mint-2:color(display-p3 0.957 0.985 0.977);--mint-3:color(display-p3 0.888 0.972 0.95);--mint-4:color(display-p3 0.819 0.951 0.916);--mint-5:color(display-p3 0.747 0.918 0.873);--mint-6:color(display-p3 0.668 0.87 0.818);--mint-7:color(display-p3 0.567 0.805 0.744);--mint-8:color(display-p3 0.42 0.724 0.649);--mint-9:color(display-p3 0.62 0.908 0.834);--mint-10:color(display-p3 0.585 0.871 0.797);--mint-11:color(display-p3 0.203 0.463 0.397);--mint-12:color(display-p3 0.136 0.259 0.236)}}}.dark,.dark-theme{--mint-1:#0e1515;--mint-2:#0f1b1b;--mint-3:#092c2b;--mint-4:#003a38;--mint-5:#004744;--mint-6:#105650;--mint-7:#1e685f;--mint-8:#277f70;--mint-9:#86ead4;--mint-10:#a8f5e5;--mint-11:#58d5ba;--mint-12:#c4f5e1}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--mint-1:color(display-p3 0.059 0.082 0.081);--mint-2:color(display-p3 0.068 0.104 0.105);--mint-3:color(display-p3 0.077 0.17 0.168);--mint-4:color(display-p3 0.068 0.224 0.22);--mint-5:color(display-p3 0.104 0.275 0.264);--mint-6:color(display-p3 0.154 0.332 0.313);--mint-7:color(display-p3 0.207 0.403 0.373);--mint-8:color(display-p3 0.258 0.49 0.441);--mint-9:color(display-p3 0.62 0.908 0.834);--mint-10:color(display-p3 0.725 0.954 0.898);--mint-11:color(display-p3 0.482 0.825 0.733);--mint-12:color(display-p3 0.807 0.955 0.887)}}}.light,.light-theme,:root{--mint-a1:#00d5aa06;--mint-a2:#00b18a0d;--mint-a3:#00d29e22;--mint-a4:#00cc9937;--mint-a5:#00c0914c;--mint-a6:#00b08663;--mint-a7:#00a17d81;--mint-a8:#009e7fb3;--mint-a9:#00d3a579;--mint-a10:#00c39982;--mint-a11:#007763fd;--mint-a12:#00312ae9}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--mint-a1:color(display-p3 0.02 0.804 0.608/0.02);--mint-a2:color(display-p3 0.02 0.647 0.467/0.044);--mint-a3:color(display-p3 0.004 0.761 0.553/0.114);--mint-a4:color(display-p3 0.004 0.741 0.545/0.181);--mint-a5:color(display-p3 0.004 0.678 0.51/0.255);--mint-a6:color(display-p3 0.004 0.616 0.463/0.334);--mint-a7:color(display-p3 0.004 0.549 0.412/0.432);--mint-a8:color(display-p3 0 0.529 0.392/0.581);--mint-a9:color(display-p3 0.004 0.765 0.569/0.381);--mint-a10:color(display-p3 0.004 0.69 0.51/0.416);--mint-a11:color(display-p3 0.203 0.463 0.397);--mint-a12:color(display-p3 0.136 0.259 0.236)}}}.dark,.dark-theme{--mint-a1:#00dede05;--mint-a2:#00f9f90b;--mint-a3:#00fff61d;--mint-a4:#00fff42c;--mint-a5:#00fff23a;--mint-a6:#0effeb4a;--mint-a7:#34fde55e;--mint-a8:#41ffdf76;--mint-a9:#92ffe7e9;--mint-a10:#aefeedf5;--mint-a11:#67ffded2;--mint-a12:#cbfee9f5}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--mint-a1:color(display-p3 0 0.992 0.992/0.017);--mint-a2:color(display-p3 0.071 0.98 0.98/0.043);--mint-a3:color(display-p3 0.176 0.996 0.996/0.11);--mint-a4:color(display-p3 0.071 0.996 0.973/0.169);--mint-a5:color(display-p3 0.243 1 0.949/0.223);--mint-a6:color(display-p3 0.369 1 0.933/0.286);--mint-a7:color(display-p3 0.459 1 0.914/0.362);--mint-a8:color(display-p3 0.49 1 0.89/0.454);--mint-a9:color(display-p3 0.678 0.996 0.914/0.904);--mint-a10:color(display-p3 0.761 1 0.941/0.95);--mint-a11:color(display-p3 0.482 0.825 0.733);--mint-a12:color(display-p3 0.807 0.955 0.887)}}}.light,.light-theme,:root{--lime-1:#fcfdfa;--lime-2:#f8faf3;--lime-3:#eef6d6;--lime-4:#e2f0bd;--lime-5:#d3e7a6;--lime-6:#c2da91;--lime-7:#abc978;--lime-8:#8db654;--lime-9:#bdee63;--lime-10:#b0e64c;--lime-11:#5c7c2f;--lime-12:#37401c}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--lime-1:color(display-p3 0.989 0.992 0.981);--lime-2:color(display-p3 0.975 0.98 0.954);--lime-3:color(display-p3 0.939 0.965 0.851);--lime-4:color(display-p3 0.896 0.94 0.76);--lime-5:color(display-p3 0.843 0.903 0.678);--lime-6:color(display-p3 0.778 0.852 0.599);--lime-7:color(display-p3 0.694 0.784 0.508);--lime-8:color(display-p3 0.585 0.707 0.378);--lime-9:color(display-p3 0.78 0.928 0.466);--lime-10:color(display-p3 0.734 0.896 0.397);--lime-11:color(display-p3 0.386 0.482 0.227);--lime-12:color(display-p3 0.222 0.25 0.128)}}}.dark,.dark-theme{--lime-1:#11130c;--lime-2:#151a10;--lime-3:#1f2917;--lime-4:#29371d;--lime-5:#334423;--lime-6:#3d522a;--lime-7:#496231;--lime-8:#577538;--lime-9:#bdee63;--lime-10:#d4ff70;--lime-11:#bde56c;--lime-12:#e3f7ba}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--lime-1:color(display-p3 0.067 0.073 0.048);--lime-2:color(display-p3 0.086 0.1 0.067);--lime-3:color(display-p3 0.13 0.16 0.099);--lime-4:color(display-p3 0.172 0.214 0.126);--lime-5:color(display-p3 0.213 0.266 0.153);--lime-6:color(display-p3 0.257 0.321 0.182);--lime-7:color(display-p3 0.307 0.383 0.215);--lime-8:color(display-p3 0.365 0.456 0.25);--lime-9:color(display-p3 0.78 0.928 0.466);--lime-10:color(display-p3 0.865 0.995 0.519);--lime-11:color(display-p3 0.771 0.893 0.485);--lime-12:color(display-p3 0.905 0.966 0.753)}}}.light,.light-theme,:root{--lime-a1:#66990005;--lime-a2:#6b95000c;--lime-a3:#96c80029;--lime-a4:#8fc60042;--lime-a5:#81bb0059;--lime-a6:#72aa006e;--lime-a7:#61990087;--lime-a8:#559200ab;--lime-a9:#93e4009c;--lime-a10:#8fdc00b3;--lime-a11:#375f00d0;--lime-a12:#1e2900e3}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--lime-a1:color(display-p3 0.412 0.608 0.02/0.02);--lime-a2:color(display-p3 0.514 0.592 0.024/0.048);--lime-a3:color(display-p3 0.584 0.765 0.008/0.15);--lime-a4:color(display-p3 0.561 0.757 0.004/0.24);--lime-a5:color(display-p3 0.514 0.698 0.004/0.322);--lime-a6:color(display-p3 0.443 0.627 0/0.4);--lime-a7:color(display-p3 0.376 0.561 0.004/0.491);--lime-a8:color(display-p3 0.333 0.529 0/0.624);--lime-a9:color(display-p3 0.588 0.867 0/0.534);--lime-a10:color(display-p3 0.561 0.827 0/0.604);--lime-a11:color(display-p3 0.386 0.482 0.227);--lime-a12:color(display-p3 0.222 0.25 0.128)}}}.dark,.dark-theme{--lime-a1:#11bb0003;--lime-a2:#78f7000a;--lime-a3:#9bfd4c1a;--lime-a4:#a7fe5c29;--lime-a5:#affe6537;--lime-a6:#b2fe6d46;--lime-a7:#b6ff6f57;--lime-a8:#b6fd6d6c;--lime-a9:#caff69ed;--lime-a10:#d4ff70;--lime-a11:#d1fe77e4;--lime-a12:#e9febff7}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--lime-a1:color(display-p3 0.067 0.941 0/0.009);--lime-a2:color(display-p3 0.584 0.996 0.071/0.038);--lime-a3:color(display-p3 0.69 1 0.38/0.101);--lime-a4:color(display-p3 0.729 1 0.435/0.16);--lime-a5:color(display-p3 0.745 1 0.471/0.215);--lime-a6:color(display-p3 0.769 1 0.482/0.274);--lime-a7:color(display-p3 0.769 1 0.506/0.341);--lime-a8:color(display-p3 0.784 1 0.51/0.416);--lime-a9:color(display-p3 0.839 1 0.502/0.925);--lime-a10:color(display-p3 0.871 1 0.522/0.996);--lime-a11:color(display-p3 0.771 0.893 0.485);--lime-a12:color(display-p3 0.905 0.966 0.753)}}}.light,.light-theme,:root{--yellow-1:#fdfdf9;--yellow-2:#fefce9;--yellow-3:#fffab8;--yellow-4:#fff394;--yellow-5:#ffe770;--yellow-6:#f3d768;--yellow-7:#e4c767;--yellow-8:#d5ae39;--yellow-9:#ffe629;--yellow-10:#ffdc00;--yellow-11:#9e6c00;--yellow-12:#473b1f}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--yellow-1:color(display-p3 0.992 0.992 0.978);--yellow-2:color(display-p3 0.995 0.99 0.922);--yellow-3:color(display-p3 0.997 0.982 0.749);--yellow-4:color(display-p3 0.992 0.953 0.627);--yellow-5:color(display-p3 0.984 0.91 0.51);--yellow-6:color(display-p3 0.934 0.847 0.474);--yellow-7:color(display-p3 0.876 0.785 0.46);--yellow-8:color(display-p3 0.811 0.689 0.313);--yellow-9:color(display-p3 1 0.92 0.22);--yellow-10:color(display-p3 0.977 0.868 0.291);--yellow-11:color(display-p3 0.6 0.44 0);--yellow-12:color(display-p3 0.271 0.233 0.137)}}}.dark,.dark-theme{--yellow-1:#14120b;--yellow-2:#1b180f;--yellow-3:#2d2305;--yellow-4:#362b00;--yellow-5:#433500;--yellow-6:#524202;--yellow-7:#665417;--yellow-8:#836a21;--yellow-9:#ffe629;--yellow-10:#ffff57;--yellow-11:#f5e147;--yellow-12:#f6eeb4}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--yellow-1:color(display-p3 0.078 0.069 0.047);--yellow-2:color(display-p3 0.103 0.094 0.063);--yellow-3:color(display-p3 0.168 0.137 0.039);--yellow-4:color(display-p3 0.209 0.169 0);--yellow-5:color(display-p3 0.255 0.209 0);--yellow-6:color(display-p3 0.31 0.261 0.07);--yellow-7:color(display-p3 0.389 0.331 0.135);--yellow-8:color(display-p3 0.497 0.42 0.182);--yellow-9:color(display-p3 1 0.92 0.22);--yellow-10:color(display-p3 1 1 0.456);--yellow-11:color(display-p3 0.948 0.885 0.392);--yellow-12:color(display-p3 0.959 0.934 0.731)}}}.light,.light-theme,:root{--yellow-a1:#aaaa0006;--yellow-a2:#f4dd0016;--yellow-a3:#ffee0047;--yellow-a4:#ffe3016b;--yellow-a5:#ffd5008f;--yellow-a6:#ebbc0097;--yellow-a7:#d2a10098;--yellow-a8:#c99700c6;--yellow-a9:#ffe100d6;--yellow-a10:#ffdc00;--yellow-a11:#9e6c00;--yellow-a12:#2e2000e0}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--yellow-a1:color(display-p3 0.675 0.675 0.024/0.024);--yellow-a2:color(display-p3 0.953 0.855 0.008/0.079);--yellow-a3:color(display-p3 0.988 0.925 0.004/0.251);--yellow-a4:color(display-p3 0.98 0.875 0.004/0.373);--yellow-a5:color(display-p3 0.969 0.816 0.004/0.491);--yellow-a6:color(display-p3 0.875 0.71 0/0.526);--yellow-a7:color(display-p3 0.769 0.604 0/0.542);--yellow-a8:color(display-p3 0.725 0.549 0/0.687);--yellow-a9:color(display-p3 1 0.898 0/0.781);--yellow-a10:color(display-p3 0.969 0.812 0/0.71);--yellow-a11:color(display-p3 0.6 0.44 0);--yellow-a12:color(display-p3 0.271 0.233 0.137)}}}.dark,.dark-theme{--yellow-a1:#d1510004;--yellow-a2:#f9b4000b;--yellow-a3:#ffaa001e;--yellow-a4:#fdb70028;--yellow-a5:#febb0036;--yellow-a6:#fec40046;--yellow-a7:#fdcb225c;--yellow-a8:#fdca327b;--yellow-a9:#ffe629;--yellow-a10:#ffff57;--yellow-a11:#fee949f5;--yellow-a12:#fef6baf6}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--yellow-a1:color(display-p3 0.973 0.369 0/0.013);--yellow-a2:color(display-p3 0.996 0.792 0/0.038);--yellow-a3:color(display-p3 0.996 0.71 0/0.11);--yellow-a4:color(display-p3 0.996 0.741 0/0.152);--yellow-a5:color(display-p3 0.996 0.765 0/0.202);--yellow-a6:color(display-p3 0.996 0.816 0.082/0.261);--yellow-a7:color(display-p3 1 0.831 0.263/0.345);--yellow-a8:color(display-p3 1 0.831 0.314/0.463);--yellow-a9:color(display-p3 1 0.922 0.22);--yellow-a10:color(display-p3 1 1 0.455);--yellow-a11:color(display-p3 0.948 0.885 0.392);--yellow-a12:color(display-p3 0.959 0.934 0.731)}}}.light,.light-theme,:root{--amber-1:#fefdfb;--amber-2:#fefbe9;--amber-3:#fff7c2;--amber-4:#ffee9c;--amber-5:#fbe577;--amber-6:#f3d673;--amber-7:#e9c162;--amber-8:#e2a336;--amber-9:#ffc53d;--amber-10:#ffba18;--amber-11:#ab6400;--amber-12:#4f3422}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--amber-1:color(display-p3 0.995 0.992 0.985);--amber-2:color(display-p3 0.994 0.986 0.921);--amber-3:color(display-p3 0.994 0.969 0.782);--amber-4:color(display-p3 0.989 0.937 0.65);--amber-5:color(display-p3 0.97 0.902 0.527);--amber-6:color(display-p3 0.936 0.844 0.506);--amber-7:color(display-p3 0.89 0.762 0.443);--amber-8:color(display-p3 0.85 0.65 0.3);--amber-9:color(display-p3 1 0.77 0.26);--amber-10:color(display-p3 0.959 0.741 0.274);--amber-11:color(display-p3 0.64 0.4 0);--amber-12:color(display-p3 0.294 0.208 0.145)}}}.dark,.dark-theme{--amber-1:#16120c;--amber-2:#1d180f;--amber-3:#302008;--amber-4:#3f2700;--amber-5:#4d3000;--amber-6:#5c3d05;--amber-7:#714f19;--amber-8:#8f6424;--amber-9:#ffc53d;--amber-10:#ffd60a;--amber-11:#ffca16;--amber-12:#ffe7b3}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--amber-1:color(display-p3 0.082 0.07 0.05);--amber-2:color(display-p3 0.111 0.094 0.064);--amber-3:color(display-p3 0.178 0.128 0.049);--amber-4:color(display-p3 0.239 0.156 0);--amber-5:color(display-p3 0.29 0.193 0);--amber-6:color(display-p3 0.344 0.245 0.076);--amber-7:color(display-p3 0.422 0.314 0.141);--amber-8:color(display-p3 0.535 0.399 0.189);--amber-9:color(display-p3 1 0.77 0.26);--amber-10:color(display-p3 1 0.87 0.15);--amber-11:color(display-p3 1 0.8 0.29);--amber-12:color(display-p3 0.984 0.909 0.726)}}}.light,.light-theme,:root{--amber-a1:#c0800004;--amber-a2:#f4d10016;--amber-a3:#ffde003d;--amber-a4:#ffd40063;--amber-a5:#f8cf0088;--amber-a6:#eab5008c;--amber-a7:#dc9b009d;--amber-a8:#da8a00c9;--amber-a9:#ffb300c2;--amber-a10:#ffb300e7;--amber-a11:#ab6400;--amber-a12:#341500dd}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--amber-a1:color(display-p3 0.757 0.514 0.024/0.016);--amber-a2:color(display-p3 0.902 0.804 0.008/0.079);--amber-a3:color(display-p3 0.965 0.859 0.004/0.22);--amber-a4:color(display-p3 0.969 0.82 0.004/0.35);--amber-a5:color(display-p3 0.933 0.796 0.004/0.475);--amber-a6:color(display-p3 0.875 0.682 0.004/0.495);--amber-a7:color(display-p3 0.804 0.573 0/0.557);--amber-a8:color(display-p3 0.788 0.502 0/0.699);--amber-a9:color(display-p3 1 0.686 0/0.742);--amber-a10:color(display-p3 0.945 0.643 0/0.726);--amber-a11:color(display-p3 0.64 0.4 0);--amber-a12:color(display-p3 0.294 0.208 0.145)}}}.dark,.dark-theme{--amber-a1:#e63c0006;--amber-a2:#fd9b000d;--amber-a3:#fa820022;--amber-a4:#fc820032;--amber-a5:#fd8b0041;--amber-a6:#fd9b0051;--amber-a7:#ffab2567;--amber-a8:#ffae3587;--amber-a9:#ffc53d;--amber-a10:#ffd60a;--amber-a11:#ffca16;--amber-a12:#ffe7b3}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--amber-a1:color(display-p3 0.992 0.298 0/0.017);--amber-a2:color(display-p3 0.988 0.651 0/0.047);--amber-a3:color(display-p3 1 0.6 0/0.118);--amber-a4:color(display-p3 1 0.557 0/0.185);--amber-a5:color(display-p3 1 0.592 0/0.24);--amber-a6:color(display-p3 1 0.659 0.094/0.299);--amber-a7:color(display-p3 1 0.714 0.263/0.383);--amber-a8:color(display-p3 0.996 0.729 0.306/0.5);--amber-a9:color(display-p3 1 0.769 0.259);--amber-a10:color(display-p3 1 0.871 0.149);--amber-a11:color(display-p3 1 0.8 0.29);--amber-a12:color(display-p3 0.984 0.909 0.726)}}}.light,.light-theme,:root{--gold-1:#fdfdfc;--gold-2:#faf9f2;--gold-3:#f2f0e7;--gold-4:#eae6db;--gold-5:#e1dccf;--gold-6:#d8d0bf;--gold-7:#cbc0aa;--gold-8:#b9a88d;--gold-9:#978365;--gold-10:#8c7a5e;--gold-11:#71624b;--gold-12:#3b352b}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--gold-1:color(display-p3 0.992 0.992 0.989);--gold-2:color(display-p3 0.98 0.976 0.953);--gold-3:color(display-p3 0.947 0.94 0.909);--gold-4:color(display-p3 0.914 0.904 0.865);--gold-5:color(display-p3 0.88 0.865 0.816);--gold-6:color(display-p3 0.84 0.818 0.756);--gold-7:color(display-p3 0.788 0.753 0.677);--gold-8:color(display-p3 0.715 0.66 0.565);--gold-9:color(display-p3 0.579 0.517 0.41);--gold-10:color(display-p3 0.538 0.479 0.38);--gold-11:color(display-p3 0.433 0.386 0.305);--gold-12:color(display-p3 0.227 0.209 0.173)}}}.dark,.dark-theme{--gold-1:#121211;--gold-2:#1b1a17;--gold-3:#24231f;--gold-4:#2d2b26;--gold-5:#38352e;--gold-6:#444039;--gold-7:#544f46;--gold-8:#696256;--gold-9:#978365;--gold-10:#a39073;--gold-11:#cbb99f;--gold-12:#e8e2d9}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--gold-1:color(display-p3 0.071 0.071 0.067);--gold-2:color(display-p3 0.104 0.101 0.09);--gold-3:color(display-p3 0.141 0.136 0.122);--gold-4:color(display-p3 0.177 0.17 0.152);--gold-5:color(display-p3 0.217 0.207 0.185);--gold-6:color(display-p3 0.265 0.252 0.225);--gold-7:color(display-p3 0.327 0.31 0.277);--gold-8:color(display-p3 0.407 0.384 0.342);--gold-9:color(display-p3 0.579 0.517 0.41);--gold-10:color(display-p3 0.628 0.566 0.463);--gold-11:color(display-p3 0.784 0.728 0.635);--gold-12:color(display-p3 0.906 0.887 0.855)}}}.light,.light-theme,:root{--gold-a1:#55550003;--gold-a2:#9d8a000d;--gold-a3:#75600018;--gold-a4:#6b4e0024;--gold-a5:#60460030;--gold-a6:#64440040;--gold-a7:#63420055;--gold-a8:#633d0072;--gold-a9:#5332009a;--gold-a10:#492d00a1;--gold-a11:#362100b4;--gold-a12:#130c00d4}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--gold-a1:color(display-p3 0.349 0.349 0.024/0.012);--gold-a2:color(display-p3 0.592 0.514 0.024/0.048);--gold-a3:color(display-p3 0.4 0.357 0.012/0.091);--gold-a4:color(display-p3 0.357 0.298 0.008/0.134);--gold-a5:color(display-p3 0.345 0.282 0.004/0.185);--gold-a6:color(display-p3 0.341 0.263 0.004/0.244);--gold-a7:color(display-p3 0.345 0.235 0.004/0.322);--gold-a8:color(display-p3 0.345 0.22 0.004/0.436);--gold-a9:color(display-p3 0.286 0.18 0/0.589);--gold-a10:color(display-p3 0.255 0.161 0/0.62);--gold-a11:color(display-p3 0.433 0.386 0.305);--gold-a12:color(display-p3 0.227 0.209 0.173)}}}.dark,.dark-theme{--gold-a1:#91911102;--gold-a2:#f9e29d0b;--gold-a3:#f8ecbb15;--gold-a4:#ffeec41e;--gold-a5:#feecc22a;--gold-a6:#feebcb37;--gold-a7:#ffedcd48;--gold-a8:#fdeaca5f;--gold-a9:#ffdba690;--gold-a10:#fedfb09d;--gold-a11:#fee7c6c8;--gold-a12:#fef7ede7}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--gold-a1:color(display-p3 0.855 0.855 0.071/0.005);--gold-a2:color(display-p3 0.98 0.89 0.616/0.043);--gold-a3:color(display-p3 1 0.949 0.753/0.08);--gold-a4:color(display-p3 1 0.933 0.8/0.118);--gold-a5:color(display-p3 1 0.949 0.804/0.16);--gold-a6:color(display-p3 1 0.925 0.8/0.215);--gold-a7:color(display-p3 1 0.945 0.831/0.278);--gold-a8:color(display-p3 1 0.937 0.82/0.366);--gold-a9:color(display-p3 0.996 0.882 0.69/0.551);--gold-a10:color(display-p3 1 0.894 0.725/0.601);--gold-a11:color(display-p3 0.784 0.728 0.635);--gold-a12:color(display-p3 0.906 0.887 0.855)}}}.light,.light-theme,:root{--bronze-1:#fdfcfc;--bronze-2:#fdf7f5;--bronze-3:#f6edea;--bronze-4:#efe4df;--bronze-5:#e7d9d3;--bronze-6:#dfcdc5;--bronze-7:#d3bcb3;--bronze-8:#c2a499;--bronze-9:#a18072;--bronze-10:#957468;--bronze-11:#7d5e54;--bronze-12:#43302b}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--bronze-1:color(display-p3 0.991 0.988 0.988);--bronze-2:color(display-p3 0.989 0.97 0.961);--bronze-3:color(display-p3 0.958 0.932 0.919);--bronze-4:color(display-p3 0.929 0.894 0.877);--bronze-5:color(display-p3 0.898 0.853 0.832);--bronze-6:color(display-p3 0.861 0.805 0.778);--bronze-7:color(display-p3 0.812 0.739 0.706);--bronze-8:color(display-p3 0.741 0.647 0.606);--bronze-9:color(display-p3 0.611 0.507 0.455);--bronze-10:color(display-p3 0.563 0.461 0.414);--bronze-11:color(display-p3 0.471 0.373 0.336);--bronze-12:color(display-p3 0.251 0.191 0.172)}}}.dark,.dark-theme{--bronze-1:#141110;--bronze-2:#1c1917;--bronze-3:#262220;--bronze-4:#302a27;--bronze-5:#3b3330;--bronze-6:#493e3a;--bronze-7:#5a4c47;--bronze-8:#6f5f58;--bronze-9:#a18072;--bronze-10:#ae8c7e;--bronze-11:#d4b3a5;--bronze-12:#ede0d9}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--bronze-1:color(display-p3 0.076 0.067 0.063);--bronze-2:color(display-p3 0.106 0.097 0.093);--bronze-3:color(display-p3 0.147 0.132 0.125);--bronze-4:color(display-p3 0.185 0.166 0.156);--bronze-5:color(display-p3 0.227 0.202 0.19);--bronze-6:color(display-p3 0.278 0.246 0.23);--bronze-7:color(display-p3 0.343 0.302 0.281);--bronze-8:color(display-p3 0.426 0.374 0.347);--bronze-9:color(display-p3 0.611 0.507 0.455);--bronze-10:color(display-p3 0.66 0.556 0.504);--bronze-11:color(display-p3 0.81 0.707 0.655);--bronze-12:color(display-p3 0.921 0.88 0.854)}}}.light,.light-theme,:root{--bronze-a1:#55000003;--bronze-a2:#cc33000a;--bronze-a3:#92250015;--bronze-a4:#80280020;--bronze-a5:#7423002c;--bronze-a6:#7324003a;--bronze-a7:#6c1f004c;--bronze-a8:#671c0066;--bronze-a9:#551a008d;--bronze-a10:#4c150097;--bronze-a11:#3d0f00ab;--bronze-a12:#1d0600d4}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--bronze-a1:color(display-p3 0.349 0.024 0.024/0.012);--bronze-a2:color(display-p3 0.71 0.22 0.024/0.04);--bronze-a3:color(display-p3 0.482 0.2 0.008/0.083);--bronze-a4:color(display-p3 0.424 0.133 0.004/0.122);--bronze-a5:color(display-p3 0.4 0.145 0.004/0.169);--bronze-a6:color(display-p3 0.388 0.125 0.004/0.224);--bronze-a7:color(display-p3 0.365 0.11 0.004/0.295);--bronze-a8:color(display-p3 0.341 0.102 0.004/0.393);--bronze-a9:color(display-p3 0.29 0.094 0/0.546);--bronze-a10:color(display-p3 0.255 0.082 0/0.585);--bronze-a11:color(display-p3 0.471 0.373 0.336);--bronze-a12:color(display-p3 0.251 0.191 0.172)}}}.dark,.dark-theme{--bronze-a1:#d1110004;--bronze-a2:#fbbc910c;--bronze-a3:#faceb817;--bronze-a4:#facdb622;--bronze-a5:#ffd2c12d;--bronze-a6:#ffd1c03c;--bronze-a7:#fdd0c04f;--bronze-a8:#ffd6c565;--bronze-a9:#fec7b09b;--bronze-a10:#fecab5a9;--bronze-a11:#ffd7c6d1;--bronze-a12:#fff1e9ec}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--bronze-a1:color(display-p3 0.941 0.067 0/0.009);--bronze-a2:color(display-p3 0.98 0.8 0.706/0.043);--bronze-a3:color(display-p3 0.988 0.851 0.761/0.085);--bronze-a4:color(display-p3 0.996 0.839 0.78/0.127);--bronze-a5:color(display-p3 0.996 0.863 0.773/0.173);--bronze-a6:color(display-p3 1 0.863 0.796/0.227);--bronze-a7:color(display-p3 1 0.867 0.8/0.295);--bronze-a8:color(display-p3 1 0.859 0.788/0.387);--bronze-a9:color(display-p3 1 0.82 0.733/0.585);--bronze-a10:color(display-p3 1 0.839 0.761/0.635);--bronze-a11:color(display-p3 0.81 0.707 0.655);--bronze-a12:color(display-p3 0.921 0.88 0.854)}}}.light,.light-theme,:root{--gray-1:#fcfcfc;--gray-2:#f9f9f9;--gray-3:#f0f0f0;--gray-4:#e8e8e8;--gray-5:#e0e0e0;--gray-6:#d9d9d9;--gray-7:#cecece;--gray-8:#bbb;--gray-9:#8d8d8d;--gray-10:#838383;--gray-11:#646464;--gray-12:#202020}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--gray-1:color(display-p3 0.988 0.988 0.988);--gray-2:color(display-p3 0.975 0.975 0.975);--gray-3:color(display-p3 0.939 0.939 0.939);--gray-4:color(display-p3 0.908 0.908 0.908);--gray-5:color(display-p3 0.88 0.88 0.88);--gray-6:color(display-p3 0.849 0.849 0.849);--gray-7:color(display-p3 0.807 0.807 0.807);--gray-8:color(display-p3 0.732 0.732 0.732);--gray-9:color(display-p3 0.553 0.553 0.553);--gray-10:color(display-p3 0.512 0.512 0.512);--gray-11:color(display-p3 0.392 0.392 0.392);--gray-12:color(display-p3 0.125 0.125 0.125)}}}.dark,.dark-theme{--gray-1:#111;--gray-2:#191919;--gray-3:#222;--gray-4:#2a2a2a;--gray-5:#313131;--gray-6:#3a3a3a;--gray-7:#484848;--gray-8:#606060;--gray-9:#6e6e6e;--gray-10:#7b7b7b;--gray-11:#b4b4b4;--gray-12:#eee}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--gray-1:color(display-p3 0.067 0.067 0.067);--gray-2:color(display-p3 0.098 0.098 0.098);--gray-3:color(display-p3 0.135 0.135 0.135);--gray-4:color(display-p3 0.163 0.163 0.163);--gray-5:color(display-p3 0.192 0.192 0.192);--gray-6:color(display-p3 0.228 0.228 0.228);--gray-7:color(display-p3 0.283 0.283 0.283);--gray-8:color(display-p3 0.375 0.375 0.375);--gray-9:color(display-p3 0.431 0.431 0.431);--gray-10:color(display-p3 0.484 0.484 0.484);--gray-11:color(display-p3 0.706 0.706 0.706);--gray-12:color(display-p3 0.933 0.933 0.933)}}}.light,.light-theme,:root{--gray-a1:#00000003;--gray-a2:#00000006;--gray-a3:#0000000f;--gray-a4:#00000017;--gray-a5:#0000001f;--gray-a6:#00000026;--gray-a7:#00000031;--gray-a8:#00000044;--gray-a9:#00000072;--gray-a10:#0000007c;--gray-a11:#0000009b;--gray-a12:#000000df}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--gray-a1:color(display-p3 0 0 0/0.012);--gray-a2:color(display-p3 0 0 0/0.024);--gray-a3:color(display-p3 0 0 0/0.063);--gray-a4:color(display-p3 0 0 0/0.09);--gray-a5:color(display-p3 0 0 0/0.122);--gray-a6:color(display-p3 0 0 0/0.153);--gray-a7:color(display-p3 0 0 0/0.192);--gray-a8:color(display-p3 0 0 0/0.267);--gray-a9:color(display-p3 0 0 0/0.447);--gray-a10:color(display-p3 0 0 0/0.486);--gray-a11:color(display-p3 0 0 0/0.608);--gray-a12:color(display-p3 0 0 0/0.875)}}}.dark,.dark-theme{--gray-a1:#00000000;--gray-a2:#ffffff09;--gray-a3:#ffffff12;--gray-a4:#ffffff1b;--gray-a5:#ffffff22;--gray-a6:#ffffff2c;--gray-a7:#ffffff3b;--gray-a8:#ffffff55;--gray-a9:#ffffff64;--gray-a10:#ffffff72;--gray-a11:#ffffffaf;--gray-a12:#ffffffed}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--gray-a1:color(display-p3 0 0 0/0);--gray-a2:color(display-p3 1 1 1/0.034);--gray-a3:color(display-p3 1 1 1/0.071);--gray-a4:color(display-p3 1 1 1/0.105);--gray-a5:color(display-p3 1 1 1/0.134);--gray-a6:color(display-p3 1 1 1/0.172);--gray-a7:color(display-p3 1 1 1/0.231);--gray-a8:color(display-p3 1 1 1/0.332);--gray-a9:color(display-p3 1 1 1/0.391);--gray-a10:color(display-p3 1 1 1/0.445);--gray-a11:color(display-p3 1 1 1/0.685);--gray-a12:color(display-p3 1 1 1/0.929)}}}.light,.light-theme,:root{--mauve-1:#fdfcfd;--mauve-2:#faf9fb;--mauve-3:#f2eff3;--mauve-4:#eae7ec;--mauve-5:#e3dfe6;--mauve-6:#dbd8e0;--mauve-7:#d0cdd7;--mauve-8:#bcbac7;--mauve-9:#8e8c99;--mauve-10:#84828e;--mauve-11:#65636d;--mauve-12:#211f26}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--mauve-1:color(display-p3 0.991 0.988 0.992);--mauve-2:color(display-p3 0.98 0.976 0.984);--mauve-3:color(display-p3 0.946 0.938 0.952);--mauve-4:color(display-p3 0.915 0.906 0.925);--mauve-5:color(display-p3 0.886 0.876 0.901);--mauve-6:color(display-p3 0.856 0.846 0.875);--mauve-7:color(display-p3 0.814 0.804 0.84);--mauve-8:color(display-p3 0.735 0.728 0.777);--mauve-9:color(display-p3 0.555 0.549 0.596);--mauve-10:color(display-p3 0.514 0.508 0.552);--mauve-11:color(display-p3 0.395 0.388 0.424);--mauve-12:color(display-p3 0.128 0.122 0.147)}}}.dark,.dark-theme{--mauve-1:#121113;--mauve-2:#1a191b;--mauve-3:#232225;--mauve-4:#2b292d;--mauve-5:#323035;--mauve-6:#3c393f;--mauve-7:#49474e;--mauve-8:#625f69;--mauve-9:#6f6d78;--mauve-10:#7c7a85;--mauve-11:#b5b2bc;--mauve-12:#eeeef0}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--mauve-1:color(display-p3 0.07 0.067 0.074);--mauve-2:color(display-p3 0.101 0.098 0.105);--mauve-3:color(display-p3 0.138 0.134 0.144);--mauve-4:color(display-p3 0.167 0.161 0.175);--mauve-5:color(display-p3 0.196 0.189 0.206);--mauve-6:color(display-p3 0.232 0.225 0.245);--mauve-7:color(display-p3 0.286 0.277 0.302);--mauve-8:color(display-p3 0.383 0.373 0.408);--mauve-9:color(display-p3 0.434 0.428 0.467);--mauve-10:color(display-p3 0.487 0.48 0.519);--mauve-11:color(display-p3 0.707 0.7 0.735);--mauve-12:color(display-p3 0.933 0.933 0.94)}}}.light,.light-theme,:root{--mauve-a1:#55005503;--mauve-a2:#2b005506;--mauve-a3:#30004010;--mauve-a4:#20003618;--mauve-a5:#20003820;--mauve-a6:#14003527;--mauve-a7:#10003332;--mauve-a8:#08003145;--mauve-a9:#05001d73;--mauve-a10:#0500197d;--mauve-a11:#0400119c;--mauve-a12:#020008e0}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--mauve-a1:color(display-p3 0.349 0.024 0.349/0.012);--mauve-a2:color(display-p3 0.184 0.024 0.349/0.024);--mauve-a3:color(display-p3 0.129 0.008 0.255/0.063);--mauve-a4:color(display-p3 0.094 0.012 0.216/0.095);--mauve-a5:color(display-p3 0.098 0.008 0.224/0.126);--mauve-a6:color(display-p3 0.055 0.004 0.18/0.153);--mauve-a7:color(display-p3 0.067 0.008 0.184/0.197);--mauve-a8:color(display-p3 0.02 0.004 0.176/0.271);--mauve-a9:color(display-p3 0.02 0.004 0.106/0.451);--mauve-a10:color(display-p3 0.012 0.004 0.09/0.491);--mauve-a11:color(display-p3 0.016 0 0.059/0.612);--mauve-a12:color(display-p3 0.008 0 0.027/0.879)}}}.dark,.dark-theme{--mauve-a1:#00000000;--mauve-a2:#f5f4f609;--mauve-a3:#ebeaf814;--mauve-a4:#eee5f81d;--mauve-a5:#efe6fe25;--mauve-a6:#f1e6fd30;--mauve-a7:#eee9ff40;--mauve-a8:#eee7ff5d;--mauve-a9:#eae6fd6e;--mauve-a10:#ece9fd7c;--mauve-a11:#f5f1ffb7;--mauve-a12:#fdfdffef}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--mauve-a1:color(display-p3 0 0 0/0);--mauve-a2:color(display-p3 0.996 0.992 1/0.034);--mauve-a3:color(display-p3 0.937 0.933 0.992/0.077);--mauve-a4:color(display-p3 0.957 0.918 0.996/0.111);--mauve-a5:color(display-p3 0.937 0.906 0.996/0.145);--mauve-a6:color(display-p3 0.953 0.925 0.996/0.183);--mauve-a7:color(display-p3 0.945 0.929 1/0.246);--mauve-a8:color(display-p3 0.937 0.918 1/0.361);--mauve-a9:color(display-p3 0.933 0.918 1/0.424);--mauve-a10:color(display-p3 0.941 0.925 1/0.479);--mauve-a11:color(display-p3 0.965 0.961 1/0.712);--mauve-a12:color(display-p3 0.992 0.992 1/0.937)}}}.light,.light-theme,:root{--slate-1:#fcfcfd;--slate-2:#f9f9fb;--slate-3:#f0f0f3;--slate-4:#e8e8ec;--slate-5:#e0e1e6;--slate-6:#d9d9e0;--slate-7:#cdced6;--slate-8:#b9bbc6;--slate-9:#8b8d98;--slate-10:#80838d;--slate-11:#60646c;--slate-12:#1c2024}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--slate-1:color(display-p3 0.988 0.988 0.992);--slate-2:color(display-p3 0.976 0.976 0.984);--slate-3:color(display-p3 0.94 0.941 0.953);--slate-4:color(display-p3 0.908 0.909 0.925);--slate-5:color(display-p3 0.88 0.881 0.901);--slate-6:color(display-p3 0.85 0.852 0.876);--slate-7:color(display-p3 0.805 0.808 0.838);--slate-8:color(display-p3 0.727 0.733 0.773);--slate-9:color(display-p3 0.547 0.553 0.592);--slate-10:color(display-p3 0.503 0.512 0.549);--slate-11:color(display-p3 0.379 0.392 0.421);--slate-12:color(display-p3 0.113 0.125 0.14)}}}.dark,.dark-theme{--slate-1:#111113;--slate-2:#18191b;--slate-3:#212225;--slate-4:#272a2d;--slate-5:#2e3135;--slate-6:#363a3f;--slate-7:#43484e;--slate-8:#5a6169;--slate-9:#696e77;--slate-10:#777b84;--slate-11:#b0b4ba;--slate-12:#edeef0}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--slate-1:color(display-p3 0.067 0.067 0.074);--slate-2:color(display-p3 0.095 0.098 0.105);--slate-3:color(display-p3 0.13 0.135 0.145);--slate-4:color(display-p3 0.156 0.163 0.176);--slate-5:color(display-p3 0.183 0.191 0.206);--slate-6:color(display-p3 0.215 0.226 0.244);--slate-7:color(display-p3 0.265 0.28 0.302);--slate-8:color(display-p3 0.357 0.381 0.409);--slate-9:color(display-p3 0.415 0.431 0.463);--slate-10:color(display-p3 0.469 0.483 0.514);--slate-11:color(display-p3 0.692 0.704 0.728);--slate-12:color(display-p3 0.93 0.933 0.94)}}}.light,.light-theme,:root{--slate-a1:#00005503;--slate-a2:#00005506;--slate-a3:#0000330f;--slate-a4:#00002d17;--slate-a5:#0009321f;--slate-a6:#00002f26;--slate-a7:#00062e32;--slate-a8:#00083046;--slate-a9:#00051d74;--slate-a10:#00071b7f;--slate-a11:#0007149f;--slate-a12:#000509e3}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--slate-a1:color(display-p3 0.024 0.024 0.349/0.012);--slate-a2:color(display-p3 0.024 0.024 0.349/0.024);--slate-a3:color(display-p3 0.004 0.004 0.204/0.059);--slate-a4:color(display-p3 0.012 0.012 0.184/0.091);--slate-a5:color(display-p3 0.004 0.039 0.2/0.122);--slate-a6:color(display-p3 0.008 0.008 0.165/0.15);--slate-a7:color(display-p3 0.008 0.027 0.184/0.197);--slate-a8:color(display-p3 0.004 0.031 0.176/0.275);--slate-a9:color(display-p3 0.004 0.02 0.106/0.455);--slate-a10:color(display-p3 0.004 0.027 0.098/0.499);--slate-a11:color(display-p3 0 0.02 0.063/0.62);--slate-a12:color(display-p3 0 0.012 0.031/0.887)}}}.dark,.dark-theme{--slate-a1:#00000000;--slate-a2:#d8f4f609;--slate-a3:#ddeaf814;--slate-a4:#d3edf81d;--slate-a5:#d9edfe25;--slate-a6:#d6ebfd30;--slate-a7:#d9edff40;--slate-a8:#d9edff5d;--slate-a9:#dfebfd6d;--slate-a10:#e5edfd7b;--slate-a11:#f1f7feb5;--slate-a12:#fcfdffef}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--slate-a1:color(display-p3 0 0 0/0);--slate-a2:color(display-p3 0.875 0.992 1/0.034);--slate-a3:color(display-p3 0.882 0.933 0.992/0.077);--slate-a4:color(display-p3 0.882 0.953 0.996/0.111);--slate-a5:color(display-p3 0.878 0.929 0.996/0.145);--slate-a6:color(display-p3 0.882 0.949 0.996/0.183);--slate-a7:color(display-p3 0.882 0.929 1/0.246);--slate-a8:color(display-p3 0.871 0.937 1/0.361);--slate-a9:color(display-p3 0.898 0.937 1/0.42);--slate-a10:color(display-p3 0.918 0.945 1/0.475);--slate-a11:color(display-p3 0.949 0.969 0.996/0.708);--slate-a12:color(display-p3 0.988 0.992 1/0.937)}}}.light,.light-theme,:root{--sage-1:#fbfdfc;--sage-2:#f7f9f8;--sage-3:#eef1f0;--sage-4:#e6e9e8;--sage-5:#dfe2e0;--sage-6:#d7dad9;--sage-7:#cbcfcd;--sage-8:#b8bcba;--sage-9:#868e8b;--sage-10:#7c8481;--sage-11:#5f6563;--sage-12:#1a211e}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--sage-1:color(display-p3 0.986 0.992 0.988);--sage-2:color(display-p3 0.97 0.977 0.974);--sage-3:color(display-p3 0.935 0.944 0.94);--sage-4:color(display-p3 0.904 0.913 0.909);--sage-5:color(display-p3 0.875 0.885 0.88);--sage-6:color(display-p3 0.844 0.854 0.849);--sage-7:color(display-p3 0.8 0.811 0.806);--sage-8:color(display-p3 0.725 0.738 0.732);--sage-9:color(display-p3 0.531 0.556 0.546);--sage-10:color(display-p3 0.492 0.515 0.506);--sage-11:color(display-p3 0.377 0.395 0.389);--sage-12:color(display-p3 0.107 0.129 0.118)}}}.dark,.dark-theme{--sage-1:#101211;--sage-2:#171918;--sage-3:#202221;--sage-4:#272a29;--sage-5:#2e3130;--sage-6:#373b39;--sage-7:#444947;--sage-8:#5b625f;--sage-9:#63706b;--sage-10:#717d79;--sage-11:#adb5b2;--sage-12:#eceeed}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--sage-1:color(display-p3 0.064 0.07 0.067);--sage-2:color(display-p3 0.092 0.098 0.094);--sage-3:color(display-p3 0.128 0.135 0.131);--sage-4:color(display-p3 0.155 0.164 0.159);--sage-5:color(display-p3 0.183 0.193 0.188);--sage-6:color(display-p3 0.218 0.23 0.224);--sage-7:color(display-p3 0.269 0.285 0.277);--sage-8:color(display-p3 0.362 0.382 0.373);--sage-9:color(display-p3 0.398 0.438 0.421);--sage-10:color(display-p3 0.453 0.49 0.474);--sage-11:color(display-p3 0.685 0.709 0.697);--sage-12:color(display-p3 0.927 0.933 0.93)}}}.light,.light-theme,:root{--sage-a1:#00804004;--sage-a2:#00402008;--sage-a3:#002d1e11;--sage-a4:#001f1519;--sage-a5:#00180820;--sage-a6:#00140d28;--sage-a7:#00140a34;--sage-a8:#000f0847;--sage-a9:#00110b79;--sage-a10:#00100a83;--sage-a11:#000a07a0;--sage-a12:#000805e5}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--sage-a1:color(display-p3 0.024 0.514 0.267/0.016);--sage-a2:color(display-p3 0.02 0.267 0.145/0.032);--sage-a3:color(display-p3 0.008 0.184 0.125/0.067);--sage-a4:color(display-p3 0.012 0.094 0.051/0.095);--sage-a5:color(display-p3 0.008 0.098 0.035/0.126);--sage-a6:color(display-p3 0.004 0.078 0.027/0.157);--sage-a7:color(display-p3 0 0.059 0.039/0.2);--sage-a8:color(display-p3 0.004 0.047 0.031/0.275);--sage-a9:color(display-p3 0.004 0.059 0.035/0.471);--sage-a10:color(display-p3 0 0.047 0.031/0.51);--sage-a11:color(display-p3 0 0.031 0.02/0.624);--sage-a12:color(display-p3 0 0.027 0.012/0.895)}}}.dark,.dark-theme{--sage-a1:#00000000;--sage-a2:#f0f2f108;--sage-a3:#f3f5f412;--sage-a4:#f2fefd1a;--sage-a5:#f1fbfa22;--sage-a6:#edfbf42d;--sage-a7:#edfcf73c;--sage-a8:#ebfdf657;--sage-a9:#dffdf266;--sage-a10:#e5fdf674;--sage-a11:#f4fefbb0;--sage-a12:#fdfffeed}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--sage-a1:color(display-p3 0 0 0/0);--sage-a2:color(display-p3 0.976 0.988 0.984/0.03);--sage-a3:color(display-p3 0.992 0.945 0.941/0.072);--sage-a4:color(display-p3 0.988 0.996 0.992/0.102);--sage-a5:color(display-p3 0.992 1 0.996/0.131);--sage-a6:color(display-p3 0.973 1 0.976/0.173);--sage-a7:color(display-p3 0.957 1 0.976/0.233);--sage-a8:color(display-p3 0.957 1 0.984/0.334);--sage-a9:color(display-p3 0.902 1 0.957/0.397);--sage-a10:color(display-p3 0.929 1 0.973/0.452);--sage-a11:color(display-p3 0.969 1 0.988/0.688);--sage-a12:color(display-p3 0.992 1 0.996/0.929)}}}.light,.light-theme,:root{--olive-1:#fcfdfc;--olive-2:#f8faf8;--olive-3:#eff1ef;--olive-4:#e7e9e7;--olive-5:#dfe2df;--olive-6:#d7dad7;--olive-7:#cccfcc;--olive-8:#b9bcb8;--olive-9:#898e87;--olive-10:#7f847d;--olive-11:#60655f;--olive-12:#1d211c}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--olive-1:color(display-p3 0.989 0.992 0.989);--olive-2:color(display-p3 0.974 0.98 0.973);--olive-3:color(display-p3 0.939 0.945 0.937);--olive-4:color(display-p3 0.907 0.914 0.905);--olive-5:color(display-p3 0.878 0.885 0.875);--olive-6:color(display-p3 0.846 0.855 0.843);--olive-7:color(display-p3 0.803 0.812 0.8);--olive-8:color(display-p3 0.727 0.738 0.723);--olive-9:color(display-p3 0.541 0.556 0.532);--olive-10:color(display-p3 0.5 0.515 0.491);--olive-11:color(display-p3 0.38 0.395 0.374);--olive-12:color(display-p3 0.117 0.129 0.111)}}}.dark,.dark-theme{--olive-1:#111210;--olive-2:#181917;--olive-3:#212220;--olive-4:#282a27;--olive-5:#2f312e;--olive-6:#383a36;--olive-7:#454843;--olive-8:#5c625b;--olive-9:#687066;--olive-10:#767d74;--olive-11:#afb5ad;--olive-12:#eceeec}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--olive-1:color(display-p3 0.067 0.07 0.063);--olive-2:color(display-p3 0.095 0.098 0.091);--olive-3:color(display-p3 0.131 0.135 0.126);--olive-4:color(display-p3 0.158 0.163 0.153);--olive-5:color(display-p3 0.186 0.192 0.18);--olive-6:color(display-p3 0.221 0.229 0.215);--olive-7:color(display-p3 0.273 0.284 0.266);--olive-8:color(display-p3 0.365 0.382 0.359);--olive-9:color(display-p3 0.414 0.438 0.404);--olive-10:color(display-p3 0.467 0.49 0.458);--olive-11:color(display-p3 0.69 0.709 0.682);--olive-12:color(display-p3 0.927 0.933 0.926)}}}.light,.light-theme,:root{--olive-a1:#00550003;--olive-a2:#00490007;--olive-a3:#00200010;--olive-a4:#00160018;--olive-a5:#00180020;--olive-a6:#00140028;--olive-a7:#000f0033;--olive-a8:#040f0047;--olive-a9:#050f0078;--olive-a10:#040e0082;--olive-a11:#020a00a0;--olive-a12:#010600e3}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--olive-a1:color(display-p3 0.024 0.349 0.024/0.012);--olive-a2:color(display-p3 0.024 0.302 0.024/0.028);--olive-a3:color(display-p3 0.008 0.129 0.008/0.063);--olive-a4:color(display-p3 0.012 0.094 0.012/0.095);--olive-a5:color(display-p3 0.035 0.098 0.008/0.126);--olive-a6:color(display-p3 0.027 0.078 0.004/0.157);--olive-a7:color(display-p3 0.02 0.059 0/0.2);--olive-a8:color(display-p3 0.02 0.059 0.004/0.279);--olive-a9:color(display-p3 0.02 0.051 0.004/0.467);--olive-a10:color(display-p3 0.024 0.047 0/0.51);--olive-a11:color(display-p3 0.012 0.039 0/0.628);--olive-a12:color(display-p3 0.008 0.024 0/0.891)}}}.dark,.dark-theme{--olive-a1:#00000000;--olive-a2:#f1f2f008;--olive-a3:#f4f5f312;--olive-a4:#f3fef21a;--olive-a5:#f2fbf122;--olive-a6:#f4faed2c;--olive-a7:#f2fced3b;--olive-a8:#edfdeb57;--olive-a9:#ebfde766;--olive-a10:#f0fdec74;--olive-a11:#f6fef4b0;--olive-a12:#fdfffded}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--olive-a1:color(display-p3 0 0 0/0);--olive-a2:color(display-p3 0.984 0.988 0.976/0.03);--olive-a3:color(display-p3 0.992 0.996 0.988/0.068);--olive-a4:color(display-p3 0.953 0.996 0.949/0.102);--olive-a5:color(display-p3 0.969 1 0.965/0.131);--olive-a6:color(display-p3 0.973 1 0.969/0.169);--olive-a7:color(display-p3 0.98 1 0.961/0.228);--olive-a8:color(display-p3 0.961 1 0.957/0.334);--olive-a9:color(display-p3 0.949 1 0.922/0.397);--olive-a10:color(display-p3 0.953 1 0.941/0.452);--olive-a11:color(display-p3 0.976 1 0.965/0.688);--olive-a12:color(display-p3 0.992 1 0.992/0.929)}}}.light,.light-theme,:root{--sand-1:#fdfdfc;--sand-2:#f9f9f8;--sand-3:#f1f0ef;--sand-4:#e9e8e6;--sand-5:#e2e1de;--sand-6:#dad9d6;--sand-7:#cfceca;--sand-8:#bcbbb5;--sand-9:#8d8d86;--sand-10:#82827c;--sand-11:#63635e;--sand-12:#21201c}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--sand-1:color(display-p3 0.992 0.992 0.989);--sand-2:color(display-p3 0.977 0.977 0.973);--sand-3:color(display-p3 0.943 0.942 0.936);--sand-4:color(display-p3 0.913 0.912 0.903);--sand-5:color(display-p3 0.885 0.883 0.873);--sand-6:color(display-p3 0.854 0.852 0.839);--sand-7:color(display-p3 0.813 0.81 0.794);--sand-8:color(display-p3 0.738 0.734 0.713);--sand-9:color(display-p3 0.553 0.553 0.528);--sand-10:color(display-p3 0.511 0.511 0.488);--sand-11:color(display-p3 0.388 0.388 0.37);--sand-12:color(display-p3 0.129 0.126 0.111)}}}.dark,.dark-theme{--sand-1:#111110;--sand-2:#191918;--sand-3:#222221;--sand-4:#2a2a28;--sand-5:#31312e;--sand-6:#3b3a37;--sand-7:#494844;--sand-8:#62605b;--sand-9:#6f6d66;--sand-10:#7c7b74;--sand-11:#b5b3ad;--sand-12:#eeeeec}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--sand-1:color(display-p3 0.067 0.067 0.063);--sand-2:color(display-p3 0.098 0.098 0.094);--sand-3:color(display-p3 0.135 0.135 0.129);--sand-4:color(display-p3 0.164 0.163 0.156);--sand-5:color(display-p3 0.193 0.192 0.183);--sand-6:color(display-p3 0.23 0.229 0.217);--sand-7:color(display-p3 0.285 0.282 0.267);--sand-8:color(display-p3 0.384 0.378 0.357);--sand-9:color(display-p3 0.434 0.428 0.403);--sand-10:color(display-p3 0.487 0.481 0.456);--sand-11:color(display-p3 0.707 0.703 0.68);--sand-12:color(display-p3 0.933 0.933 0.926)}}}.light,.light-theme,:root{--sand-a1:#55550003;--sand-a2:#25250007;--sand-a3:#20100010;--sand-a4:#1f150019;--sand-a5:#1f180021;--sand-a6:#19130029;--sand-a7:#19140035;--sand-a8:#1915014a;--sand-a9:#0f0f0079;--sand-a10:#0c0c0083;--sand-a11:#080800a1;--sand-a12:#060500e3}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.light,.light-theme,:root{--sand-a1:color(display-p3 0.349 0.349 0.024/0.012);--sand-a2:color(display-p3 0.161 0.161 0.024/0.028);--sand-a3:color(display-p3 0.067 0.067 0.008/0.063);--sand-a4:color(display-p3 0.129 0.129 0.012/0.099);--sand-a5:color(display-p3 0.098 0.067 0.008/0.126);--sand-a6:color(display-p3 0.102 0.075 0.004/0.161);--sand-a7:color(display-p3 0.098 0.098 0.004/0.208);--sand-a8:color(display-p3 0.086 0.075 0.004/0.287);--sand-a9:color(display-p3 0.051 0.051 0.004/0.471);--sand-a10:color(display-p3 0.047 0.047 0/0.514);--sand-a11:color(display-p3 0.031 0.031 0/0.632);--sand-a12:color(display-p3 0.024 0.02 0/0.891)}}}.dark,.dark-theme{--sand-a1:#00000000;--sand-a2:#f4f4f309;--sand-a3:#f6f6f513;--sand-a4:#fefef31b;--sand-a5:#fbfbeb23;--sand-a6:#fffaed2d;--sand-a7:#fffbed3c;--sand-a8:#fff9eb57;--sand-a9:#fffae965;--sand-a10:#fffdee73;--sand-a11:#fffcf4b0;--sand-a12:#fffffded}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){.dark,.dark-theme{--sand-a1:color(display-p3 0 0 0/0);--sand-a2:color(display-p3 0.992 0.992 0.988/0.034);--sand-a3:color(display-p3 0.996 0.996 0.992/0.072);--sand-a4:color(display-p3 0.992 0.992 0.953/0.106);--sand-a5:color(display-p3 1 1 0.965/0.135);--sand-a6:color(display-p3 1 0.976 0.929/0.177);--sand-a7:color(display-p3 1 0.984 0.929/0.236);--sand-a8:color(display-p3 1 0.976 0.925/0.341);--sand-a9:color(display-p3 1 0.98 0.925/0.395);--sand-a10:color(display-p3 1 0.992 0.933/0.45);--sand-a11:color(display-p3 1 0.996 0.961/0.685);--sand-a12:color(display-p3 1 1 0.992/0.929)}}}:root{--black-a1:rgba(0,0,0,.05);--black-a2:rgba(0,0,0,.1);--black-a3:rgba(0,0,0,.15);--black-a4:rgba(0,0,0,.2);--black-a5:rgba(0,0,0,.3);--black-a6:rgba(0,0,0,.4);--black-a7:rgba(0,0,0,.5);--black-a8:rgba(0,0,0,.6);--black-a9:rgba(0,0,0,.7);--black-a10:rgba(0,0,0,.8);--black-a11:rgba(0,0,0,.9);--black-a12:rgba(0,0,0,.95)}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){:root{--black-a1:color(display-p3 0 0 0/0.05);--black-a2:color(display-p3 0 0 0/0.1);--black-a3:color(display-p3 0 0 0/0.15);--black-a4:color(display-p3 0 0 0/0.2);--black-a5:color(display-p3 0 0 0/0.3);--black-a6:color(display-p3 0 0 0/0.4);--black-a7:color(display-p3 0 0 0/0.5);--black-a8:color(display-p3 0 0 0/0.6);--black-a9:color(display-p3 0 0 0/0.7);--black-a10:color(display-p3 0 0 0/0.8);--black-a11:color(display-p3 0 0 0/0.9);--black-a12:color(display-p3 0 0 0/0.95)}}}:root{--white-a1:hsla(0,0%,100%,.05);--white-a2:hsla(0,0%,100%,.1);--white-a3:hsla(0,0%,100%,.15);--white-a4:hsla(0,0%,100%,.2);--white-a5:hsla(0,0%,100%,.3);--white-a6:hsla(0,0%,100%,.4);--white-a7:hsla(0,0%,100%,.5);--white-a8:hsla(0,0%,100%,.6);--white-a9:hsla(0,0%,100%,.7);--white-a10:hsla(0,0%,100%,.8);--white-a11:hsla(0,0%,100%,.9);--white-a12:hsla(0,0%,100%,.95)}@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){:root{--white-a1:color(display-p3 1 1 1/0.05);--white-a2:color(display-p3 1 1 1/0.1);--white-a3:color(display-p3 1 1 1/0.15);--white-a4:color(display-p3 1 1 1/0.2);--white-a5:color(display-p3 1 1 1/0.3);--white-a6:color(display-p3 1 1 1/0.4);--white-a7:color(display-p3 1 1 1/0.5);--white-a8:color(display-p3 1 1 1/0.6);--white-a9:color(display-p3 1 1 1/0.7);--white-a10:color(display-p3 1 1 1/0.8);--white-a11:color(display-p3 1 1 1/0.9);--white-a12:color(display-p3 1 1 1/0.95)}}}:root{--tomato-contrast:#fff;--red-contrast:#fff;--ruby-contrast:#fff;--crimson-contrast:#fff;--pink-contrast:#fff;--plum-contrast:#fff;--purple-contrast:#fff;--violet-contrast:#fff;--iris-contrast:#fff;--indigo-contrast:#fff;--blue-contrast:#fff;--cyan-contrast:#fff;--teal-contrast:#fff;--jade-contrast:#fff;--green-contrast:#fff;--grass-contrast:#fff;--orange-contrast:#fff;--brown-contrast:#fff;--sky-contrast:#1c2024;--mint-contrast:#1a211e;--lime-contrast:#1d211c;--yellow-contrast:#21201c;--amber-contrast:#21201c;--gold-contrast:#fff;--bronze-contrast:#fff;--gray-contrast:#fff}.light,.light-theme,:root{--gray-surface:#ffffffcc;--mauve-surface:#ffffffcc;--slate-surface:#ffffffcc;--sage-surface:#ffffffcc;--olive-surface:#ffffffcc;--sand-surface:#ffffffcc;--tomato-surface:#fff6f5cc;--red-surface:#fff5f5cc;--ruby-surface:#fff5f6cc;--crimson-surface:#fef5f8cc;--pink-surface:#fef5facc;--plum-surface:#fdf5fdcc;--purple-surface:#faf5fecc;--violet-surface:#f9f6ffcc;--iris-surface:#f6f6ffcc;--indigo-surface:#f5f8ffcc;--blue-surface:#f1f9ffcc;--cyan-surface:#eff9facc;--teal-surface:#f0faf8cc;--jade-surface:#f1faf5cc;--green-surface:#f1faf4cc;--grass-surface:#f3faf3cc;--brown-surface:#fbf8f4cc;--bronze-surface:#fdf5f3cc;--gold-surface:#f9f8efcc;--sky-surface:#eef9fdcc;--mint-surface:#effaf8cc;--lime-surface:#f6f9f0cc;--yellow-surface:#fefbe4cc;--amber-surface:#fefae4cc;--orange-surface:#fff5e9cc;@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){&{--gray-surface:color(display-p3 1 1 1/0.8);--mauve-surface:color(display-p3 1 1 1/0.8);--slate-surface:color(display-p3 1 1 1/0.8);--sage-surface:color(display-p3 1 1 1/0.8);--olive-surface:color(display-p3 1 1 1/0.8);--sand-surface:color(display-p3 1 1 1/0.8);--tomato-surface:color(display-p3 0.9922 0.9647 0.9608/0.8);--red-surface:color(display-p3 0.9961 0.9647 0.9647/0.8);--ruby-surface:color(display-p3 0.9961 0.9647 0.9647/0.8);--crimson-surface:color(display-p3 0.9922 0.9608 0.9725/0.8);--pink-surface:color(display-p3 0.9922 0.9608 0.9804/0.8);--plum-surface:color(display-p3 0.9843 0.9647 0.9843/0.8);--purple-surface:color(display-p3 0.9804 0.9647 0.9922/0.8);--violet-surface:color(display-p3 0.9725 0.9647 0.9961/0.8);--iris-surface:color(display-p3 0.9647 0.9647 0.9961/0.8);--indigo-surface:color(display-p3 0.9647 0.9725 0.9961/0.8);--blue-surface:color(display-p3 0.9529 0.9765 0.9961/0.8);--cyan-surface:color(display-p3 0.9412 0.9765 0.9804/0.8);--teal-surface:color(display-p3 0.9451 0.9804 0.9725/0.8);--jade-surface:color(display-p3 0.9529 0.9804 0.9608/0.8);--green-surface:color(display-p3 0.9569 0.9804 0.9608/0.8);--grass-surface:color(display-p3 0.9569 0.9804 0.9569/0.8);--brown-surface:color(display-p3 0.9843 0.9725 0.9569/0.8);--bronze-surface:color(display-p3 0.9843 0.9608 0.9529/0.8);--gold-surface:color(display-p3 0.9765 0.9725 0.9412/0.8);--sky-surface:color(display-p3 0.9412 0.9765 0.9843/0.8);--mint-surface:color(display-p3 0.9451 0.9804 0.9725/0.8);--lime-surface:color(display-p3 0.9725 0.9765 0.9412/0.8);--yellow-surface:color(display-p3 0.9961 0.9922 0.902/0.8);--amber-surface:color(display-p3 0.9922 0.9843 0.902/0.8);--orange-surface:color(display-p3 0.9961 0.9608 0.9176/0.8)}}}}.dark,.dark-theme{--gray-surface:#21212180;--mauve-surface:#22212380;--slate-surface:#1f212380;--sage-surface:#1e201f80;--olive-surface:#1f201e80;--sand-surface:#21212080;--tomato-surface:#2d191580;--red-surface:#2f151780;--ruby-surface:#2b191d80;--crimson-surface:#2f151f80;--pink-surface:#31132980;--plum-surface:#2f152f80;--purple-surface:#2b173580;--violet-surface:#25193980;--iris-surface:#1d1b3980;--indigo-surface:#171d3b80;--blue-surface:#11213d80;--cyan-surface:#11252d80;--teal-surface:#13272580;--jade-surface:#13271f80;--green-surface:#15251d80;--grass-surface:#19231b80;--brown-surface:#271f1b80;--bronze-surface:#27211d80;--gold-surface:#25231d80;--sky-surface:#13233b80;--mint-surface:#15272780;--lime-surface:#1b211580;--yellow-surface:#231f1380;--amber-surface:#271f1380;--orange-surface:#271d1380;@supports (color:color(display-p3 1 1 1)){@media (color-gamut:p3){&{--gray-surface:color(display-p3 0.1255 0.1255 0.1255/0.5);--mauve-surface:color(display-p3 0.1333 0.1255 0.1333/0.5);--slate-surface:color(display-p3 0.1176 0.1255 0.1333/0.5);--sage-surface:color(display-p3 0.1176 0.1255 0.1176/0.5);--olive-surface:color(display-p3 0.1176 0.1255 0.1176/0.5);--sand-surface:color(display-p3 0.1255 0.1255 0.1255/0.5);--tomato-surface:color(display-p3 0.1569 0.0941 0.0784/0.5);--red-surface:color(display-p3 0.1647 0.0863 0.0863/0.5);--ruby-surface:color(display-p3 0.1569 0.0941 0.1098/0.5);--crimson-surface:color(display-p3 0.1647 0.0863 0.1176/0.5);--pink-surface:color(display-p3 0.1725 0.0784 0.149/0.5);--plum-surface:color(display-p3 0.1647 0.0863 0.1725/0.5);--purple-surface:color(display-p3 0.149 0.0941 0.1961/0.5);--violet-surface:color(display-p3 0.1333 0.102 0.2118/0.5);--iris-surface:color(display-p3 0.1098 0.102 0.2118/0.5);--indigo-surface:color(display-p3 0.0941 0.1098 0.2196/0.5);--blue-surface:color(display-p3 0.0706 0.1255 0.2196/0.5);--cyan-surface:color(display-p3 0.0784 0.1412 0.1725/0.5);--teal-surface:color(display-p3 0.0863 0.149 0.1412/0.5);--jade-surface:color(display-p3 0.0863 0.149 0.1176/0.5);--green-surface:color(display-p3 0.0941 0.1412 0.1098/0.5);--grass-surface:color(display-p3 0.102 0.1333 0.102/0.5);--brown-surface:color(display-p3 0.1412 0.1176 0.102/0.5);--bronze-surface:color(display-p3 0.1412 0.1255 0.1176/0.5);--gold-surface:color(display-p3 0.1412 0.1333 0.1098/0.5);--sky-surface:color(display-p3 0.0863 0.1333 0.2196/0.5);--mint-surface:color(display-p3 0.0941 0.149 0.1412/0.5);--lime-surface:color(display-p3 0.1098 0.1255 0.0784/0.5);--yellow-surface:color(display-p3 0.1333 0.1176 0.0706/0.5);--amber-surface:color(display-p3 0.1412 0.1176 0.0784/0.5);--orange-surface:color(display-p3 0.1412 0.1098 0.0706/0.5)}}}}[data-accent-color=tomato]{--color-surface-accent:var(--tomato-surface);--accent-1:var(--tomato-1);--accent-2:var(--tomato-2);--accent-3:var(--tomato-3);--accent-4:var(--tomato-4);--accent-5:var(--tomato-5);--accent-6:var(--tomato-6);--accent-7:var(--tomato-7);--accent-8:var(--tomato-8);--accent-9:var(--tomato-9);--accent-contrast:var(--tomato-contrast);--accent-10:var(--tomato-10);--accent-11:var(--tomato-11);--accent-12:var(--tomato-12);--accent-a1:var(--tomato-a1);--accent-a2:var(--tomato-a2);--accent-a3:var(--tomato-a3);--accent-a4:var(--tomato-a4);--accent-a5:var(--tomato-a5);--accent-a6:var(--tomato-a6);--accent-a7:var(--tomato-a7);--accent-a8:var(--tomato-a8);--accent-a9:var(--tomato-a9);--accent-a10:var(--tomato-a10);--accent-a11:var(--tomato-a11);--accent-a12:var(--tomato-a12)}[data-accent-color=red]{--color-surface-accent:var(--red-surface);--accent-1:var(--red-1);--accent-2:var(--red-2);--accent-3:var(--red-3);--accent-4:var(--red-4);--accent-5:var(--red-5);--accent-6:var(--red-6);--accent-7:var(--red-7);--accent-8:var(--red-8);--accent-9:var(--red-9);--accent-contrast:var(--red-contrast);--accent-10:var(--red-10);--accent-11:var(--red-11);--accent-12:var(--red-12);--accent-a1:var(--red-a1);--accent-a2:var(--red-a2);--accent-a3:var(--red-a3);--accent-a4:var(--red-a4);--accent-a5:var(--red-a5);--accent-a6:var(--red-a6);--accent-a7:var(--red-a7);--accent-a8:var(--red-a8);--accent-a9:var(--red-a9);--accent-a10:var(--red-a10);--accent-a11:var(--red-a11);--accent-a12:var(--red-a12)}[data-accent-color=ruby]{--color-surface-accent:var(--ruby-surface);--accent-1:var(--ruby-1);--accent-2:var(--ruby-2);--accent-3:var(--ruby-3);--accent-4:var(--ruby-4);--accent-5:var(--ruby-5);--accent-6:var(--ruby-6);--accent-7:var(--ruby-7);--accent-8:var(--ruby-8);--accent-9:var(--ruby-9);--accent-contrast:var(--ruby-contrast);--accent-10:var(--ruby-10);--accent-11:var(--ruby-11);--accent-12:var(--ruby-12);--accent-a1:var(--ruby-a1);--accent-a2:var(--ruby-a2);--accent-a3:var(--ruby-a3);--accent-a4:var(--ruby-a4);--accent-a5:var(--ruby-a5);--accent-a6:var(--ruby-a6);--accent-a7:var(--ruby-a7);--accent-a8:var(--ruby-a8);--accent-a9:var(--ruby-a9);--accent-a10:var(--ruby-a10);--accent-a11:var(--ruby-a11);--accent-a12:var(--ruby-a12)}[data-accent-color=crimson]{--color-surface-accent:var(--crimson-surface);--accent-1:var(--crimson-1);--accent-2:var(--crimson-2);--accent-3:var(--crimson-3);--accent-4:var(--crimson-4);--accent-5:var(--crimson-5);--accent-6:var(--crimson-6);--accent-7:var(--crimson-7);--accent-8:var(--crimson-8);--accent-9:var(--crimson-9);--accent-contrast:var(--crimson-contrast);--accent-10:var(--crimson-10);--accent-11:var(--crimson-11);--accent-12:var(--crimson-12);--accent-a1:var(--crimson-a1);--accent-a2:var(--crimson-a2);--accent-a3:var(--crimson-a3);--accent-a4:var(--crimson-a4);--accent-a5:var(--crimson-a5);--accent-a6:var(--crimson-a6);--accent-a7:var(--crimson-a7);--accent-a8:var(--crimson-a8);--accent-a9:var(--crimson-a9);--accent-a10:var(--crimson-a10);--accent-a11:var(--crimson-a11);--accent-a12:var(--crimson-a12)}[data-accent-color=pink]{--color-surface-accent:var(--pink-surface);--accent-1:var(--pink-1);--accent-2:var(--pink-2);--accent-3:var(--pink-3);--accent-4:var(--pink-4);--accent-5:var(--pink-5);--accent-6:var(--pink-6);--accent-7:var(--pink-7);--accent-8:var(--pink-8);--accent-9:var(--pink-9);--accent-contrast:var(--pink-contrast);--accent-10:var(--pink-10);--accent-11:var(--pink-11);--accent-12:var(--pink-12);--accent-a1:var(--pink-a1);--accent-a2:var(--pink-a2);--accent-a3:var(--pink-a3);--accent-a4:var(--pink-a4);--accent-a5:var(--pink-a5);--accent-a6:var(--pink-a6);--accent-a7:var(--pink-a7);--accent-a8:var(--pink-a8);--accent-a9:var(--pink-a9);--accent-a10:var(--pink-a10);--accent-a11:var(--pink-a11);--accent-a12:var(--pink-a12)}[data-accent-color=plum]{--color-surface-accent:var(--plum-surface);--accent-1:var(--plum-1);--accent-2:var(--plum-2);--accent-3:var(--plum-3);--accent-4:var(--plum-4);--accent-5:var(--plum-5);--accent-6:var(--plum-6);--accent-7:var(--plum-7);--accent-8:var(--plum-8);--accent-9:var(--plum-9);--accent-contrast:var(--plum-contrast);--accent-10:var(--plum-10);--accent-11:var(--plum-11);--accent-12:var(--plum-12);--accent-a1:var(--plum-a1);--accent-a2:var(--plum-a2);--accent-a3:var(--plum-a3);--accent-a4:var(--plum-a4);--accent-a5:var(--plum-a5);--accent-a6:var(--plum-a6);--accent-a7:var(--plum-a7);--accent-a8:var(--plum-a8);--accent-a9:var(--plum-a9);--accent-a10:var(--plum-a10);--accent-a11:var(--plum-a11);--accent-a12:var(--plum-a12)}[data-accent-color=purple]{--color-surface-accent:var(--purple-surface);--accent-1:var(--purple-1);--accent-2:var(--purple-2);--accent-3:var(--purple-3);--accent-4:var(--purple-4);--accent-5:var(--purple-5);--accent-6:var(--purple-6);--accent-7:var(--purple-7);--accent-8:var(--purple-8);--accent-9:var(--purple-9);--accent-contrast:var(--purple-contrast);--accent-10:var(--purple-10);--accent-11:var(--purple-11);--accent-12:var(--purple-12);--accent-a1:var(--purple-a1);--accent-a2:var(--purple-a2);--accent-a3:var(--purple-a3);--accent-a4:var(--purple-a4);--accent-a5:var(--purple-a5);--accent-a6:var(--purple-a6);--accent-a7:var(--purple-a7);--accent-a8:var(--purple-a8);--accent-a9:var(--purple-a9);--accent-a10:var(--purple-a10);--accent-a11:var(--purple-a11);--accent-a12:var(--purple-a12)}[data-accent-color=violet]{--color-surface-accent:var(--violet-surface);--accent-1:var(--violet-1);--accent-2:var(--violet-2);--accent-3:var(--violet-3);--accent-4:var(--violet-4);--accent-5:var(--violet-5);--accent-6:var(--violet-6);--accent-7:var(--violet-7);--accent-8:var(--violet-8);--accent-9:var(--violet-9);--accent-contrast:var(--violet-contrast);--accent-10:var(--violet-10);--accent-11:var(--violet-11);--accent-12:var(--violet-12);--accent-a1:var(--violet-a1);--accent-a2:var(--violet-a2);--accent-a3:var(--violet-a3);--accent-a4:var(--violet-a4);--accent-a5:var(--violet-a5);--accent-a6:var(--violet-a6);--accent-a7:var(--violet-a7);--accent-a8:var(--violet-a8);--accent-a9:var(--violet-a9);--accent-a10:var(--violet-a10);--accent-a11:var(--violet-a11);--accent-a12:var(--violet-a12)}[data-accent-color=iris]{--color-surface-accent:var(--iris-surface);--accent-1:var(--iris-1);--accent-2:var(--iris-2);--accent-3:var(--iris-3);--accent-4:var(--iris-4);--accent-5:var(--iris-5);--accent-6:var(--iris-6);--accent-7:var(--iris-7);--accent-8:var(--iris-8);--accent-9:var(--iris-9);--accent-contrast:var(--iris-contrast);--accent-10:var(--iris-10);--accent-11:var(--iris-11);--accent-12:var(--iris-12);--accent-a1:var(--iris-a1);--accent-a2:var(--iris-a2);--accent-a3:var(--iris-a3);--accent-a4:var(--iris-a4);--accent-a5:var(--iris-a5);--accent-a6:var(--iris-a6);--accent-a7:var(--iris-a7);--accent-a8:var(--iris-a8);--accent-a9:var(--iris-a9);--accent-a10:var(--iris-a10);--accent-a11:var(--iris-a11);--accent-a12:var(--iris-a12)}[data-accent-color=indigo]{--color-surface-accent:var(--indigo-surface);--accent-1:var(--indigo-1);--accent-2:var(--indigo-2);--accent-3:var(--indigo-3);--accent-4:var(--indigo-4);--accent-5:var(--indigo-5);--accent-6:var(--indigo-6);--accent-7:var(--indigo-7);--accent-8:var(--indigo-8);--accent-9:var(--indigo-9);--accent-contrast:var(--indigo-contrast);--accent-10:var(--indigo-10);--accent-11:var(--indigo-11);--accent-12:var(--indigo-12);--accent-a1:var(--indigo-a1);--accent-a2:var(--indigo-a2);--accent-a3:var(--indigo-a3);--accent-a4:var(--indigo-a4);--accent-a5:var(--indigo-a5);--accent-a6:var(--indigo-a6);--accent-a7:var(--indigo-a7);--accent-a8:var(--indigo-a8);--accent-a9:var(--indigo-a9);--accent-a10:var(--indigo-a10);--accent-a11:var(--indigo-a11);--accent-a12:var(--indigo-a12)}[data-accent-color=blue]{--color-surface-accent:var(--blue-surface);--accent-1:var(--blue-1);--accent-2:var(--blue-2);--accent-3:var(--blue-3);--accent-4:var(--blue-4);--accent-5:var(--blue-5);--accent-6:var(--blue-6);--accent-7:var(--blue-7);--accent-8:var(--blue-8);--accent-9:var(--blue-9);--accent-contrast:var(--blue-contrast);--accent-10:var(--blue-10);--accent-11:var(--blue-11);--accent-12:var(--blue-12);--accent-a1:var(--blue-a1);--accent-a2:var(--blue-a2);--accent-a3:var(--blue-a3);--accent-a4:var(--blue-a4);--accent-a5:var(--blue-a5);--accent-a6:var(--blue-a6);--accent-a7:var(--blue-a7);--accent-a8:var(--blue-a8);--accent-a9:var(--blue-a9);--accent-a10:var(--blue-a10);--accent-a11:var(--blue-a11);--accent-a12:var(--blue-a12)}[data-accent-color=cyan]{--color-surface-accent:var(--cyan-surface);--accent-1:var(--cyan-1);--accent-2:var(--cyan-2);--accent-3:var(--cyan-3);--accent-4:var(--cyan-4);--accent-5:var(--cyan-5);--accent-6:var(--cyan-6);--accent-7:var(--cyan-7);--accent-8:var(--cyan-8);--accent-9:var(--cyan-9);--accent-contrast:var(--cyan-contrast);--accent-10:var(--cyan-10);--accent-11:var(--cyan-11);--accent-12:var(--cyan-12);--accent-a1:var(--cyan-a1);--accent-a2:var(--cyan-a2);--accent-a3:var(--cyan-a3);--accent-a4:var(--cyan-a4);--accent-a5:var(--cyan-a5);--accent-a6:var(--cyan-a6);--accent-a7:var(--cyan-a7);--accent-a8:var(--cyan-a8);--accent-a9:var(--cyan-a9);--accent-a10:var(--cyan-a10);--accent-a11:var(--cyan-a11);--accent-a12:var(--cyan-a12)}[data-accent-color=teal]{--color-surface-accent:var(--teal-surface);--accent-1:var(--teal-1);--accent-2:var(--teal-2);--accent-3:var(--teal-3);--accent-4:var(--teal-4);--accent-5:var(--teal-5);--accent-6:var(--teal-6);--accent-7:var(--teal-7);--accent-8:var(--teal-8);--accent-9:var(--teal-9);--accent-contrast:var(--teal-contrast);--accent-10:var(--teal-10);--accent-11:var(--teal-11);--accent-12:var(--teal-12);--accent-a1:var(--teal-a1);--accent-a2:var(--teal-a2);--accent-a3:var(--teal-a3);--accent-a4:var(--teal-a4);--accent-a5:var(--teal-a5);--accent-a6:var(--teal-a6);--accent-a7:var(--teal-a7);--accent-a8:var(--teal-a8);--accent-a9:var(--teal-a9);--accent-a10:var(--teal-a10);--accent-a11:var(--teal-a11);--accent-a12:var(--teal-a12)}[data-accent-color=jade]{--color-surface-accent:var(--jade-surface);--accent-1:var(--jade-1);--accent-2:var(--jade-2);--accent-3:var(--jade-3);--accent-4:var(--jade-4);--accent-5:var(--jade-5);--accent-6:var(--jade-6);--accent-7:var(--jade-7);--accent-8:var(--jade-8);--accent-9:var(--jade-9);--accent-contrast:var(--jade-contrast);--accent-10:var(--jade-10);--accent-11:var(--jade-11);--accent-12:var(--jade-12);--accent-a1:var(--jade-a1);--accent-a2:var(--jade-a2);--accent-a3:var(--jade-a3);--accent-a4:var(--jade-a4);--accent-a5:var(--jade-a5);--accent-a6:var(--jade-a6);--accent-a7:var(--jade-a7);--accent-a8:var(--jade-a8);--accent-a9:var(--jade-a9);--accent-a10:var(--jade-a10);--accent-a11:var(--jade-a11);--accent-a12:var(--jade-a12)}[data-accent-color=green]{--color-surface-accent:var(--green-surface);--accent-1:var(--green-1);--accent-2:var(--green-2);--accent-3:var(--green-3);--accent-4:var(--green-4);--accent-5:var(--green-5);--accent-6:var(--green-6);--accent-7:var(--green-7);--accent-8:var(--green-8);--accent-9:var(--green-9);--accent-contrast:var(--green-contrast);--accent-10:var(--green-10);--accent-11:var(--green-11);--accent-12:var(--green-12);--accent-a1:var(--green-a1);--accent-a2:var(--green-a2);--accent-a3:var(--green-a3);--accent-a4:var(--green-a4);--accent-a5:var(--green-a5);--accent-a6:var(--green-a6);--accent-a7:var(--green-a7);--accent-a8:var(--green-a8);--accent-a9:var(--green-a9);--accent-a10:var(--green-a10);--accent-a11:var(--green-a11);--accent-a12:var(--green-a12)}[data-accent-color=grass]{--color-surface-accent:var(--grass-surface);--accent-1:var(--grass-1);--accent-2:var(--grass-2);--accent-3:var(--grass-3);--accent-4:var(--grass-4);--accent-5:var(--grass-5);--accent-6:var(--grass-6);--accent-7:var(--grass-7);--accent-8:var(--grass-8);--accent-9:var(--grass-9);--accent-contrast:var(--grass-contrast);--accent-10:var(--grass-10);--accent-11:var(--grass-11);--accent-12:var(--grass-12);--accent-a1:var(--grass-a1);--accent-a2:var(--grass-a2);--accent-a3:var(--grass-a3);--accent-a4:var(--grass-a4);--accent-a5:var(--grass-a5);--accent-a6:var(--grass-a6);--accent-a7:var(--grass-a7);--accent-a8:var(--grass-a8);--accent-a9:var(--grass-a9);--accent-a10:var(--grass-a10);--accent-a11:var(--grass-a11);--accent-a12:var(--grass-a12)}[data-accent-color=orange]{--color-surface-accent:var(--orange-surface);--accent-1:var(--orange-1);--accent-2:var(--orange-2);--accent-3:var(--orange-3);--accent-4:var(--orange-4);--accent-5:var(--orange-5);--accent-6:var(--orange-6);--accent-7:var(--orange-7);--accent-8:var(--orange-8);--accent-9:var(--orange-9);--accent-contrast:var(--orange-contrast);--accent-10:var(--orange-10);--accent-11:var(--orange-11);--accent-12:var(--orange-12);--accent-a1:var(--orange-a1);--accent-a2:var(--orange-a2);--accent-a3:var(--orange-a3);--accent-a4:var(--orange-a4);--accent-a5:var(--orange-a5);--accent-a6:var(--orange-a6);--accent-a7:var(--orange-a7);--accent-a8:var(--orange-a8);--accent-a9:var(--orange-a9);--accent-a10:var(--orange-a10);--accent-a11:var(--orange-a11);--accent-a12:var(--orange-a12)}[data-accent-color=brown]{--color-surface-accent:var(--brown-surface);--accent-1:var(--brown-1);--accent-2:var(--brown-2);--accent-3:var(--brown-3);--accent-4:var(--brown-4);--accent-5:var(--brown-5);--accent-6:var(--brown-6);--accent-7:var(--brown-7);--accent-8:var(--brown-8);--accent-9:var(--brown-9);--accent-contrast:var(--brown-contrast);--accent-10:var(--brown-10);--accent-11:var(--brown-11);--accent-12:var(--brown-12);--accent-a1:var(--brown-a1);--accent-a2:var(--brown-a2);--accent-a3:var(--brown-a3);--accent-a4:var(--brown-a4);--accent-a5:var(--brown-a5);--accent-a6:var(--brown-a6);--accent-a7:var(--brown-a7);--accent-a8:var(--brown-a8);--accent-a9:var(--brown-a9);--accent-a10:var(--brown-a10);--accent-a11:var(--brown-a11);--accent-a12:var(--brown-a12)}[data-accent-color=sky]{--color-surface-accent:var(--sky-surface);--accent-1:var(--sky-1);--accent-2:var(--sky-2);--accent-3:var(--sky-3);--accent-4:var(--sky-4);--accent-5:var(--sky-5);--accent-6:var(--sky-6);--accent-7:var(--sky-7);--accent-8:var(--sky-8);--accent-9:var(--sky-9);--accent-contrast:var(--sky-contrast);--accent-10:var(--sky-10);--accent-11:var(--sky-11);--accent-12:var(--sky-12);--accent-a1:var(--sky-a1);--accent-a2:var(--sky-a2);--accent-a3:var(--sky-a3);--accent-a4:var(--sky-a4);--accent-a5:var(--sky-a5);--accent-a6:var(--sky-a6);--accent-a7:var(--sky-a7);--accent-a8:var(--sky-a8);--accent-a9:var(--sky-a9);--accent-a10:var(--sky-a10);--accent-a11:var(--sky-a11);--accent-a12:var(--sky-a12)}[data-accent-color=mint]{--color-surface-accent:var(--mint-surface);--accent-1:var(--mint-1);--accent-2:var(--mint-2);--accent-3:var(--mint-3);--accent-4:var(--mint-4);--accent-5:var(--mint-5);--accent-6:var(--mint-6);--accent-7:var(--mint-7);--accent-8:var(--mint-8);--accent-9:var(--mint-9);--accent-contrast:var(--mint-contrast);--accent-10:var(--mint-10);--accent-11:var(--mint-11);--accent-12:var(--mint-12);--accent-a1:var(--mint-a1);--accent-a2:var(--mint-a2);--accent-a3:var(--mint-a3);--accent-a4:var(--mint-a4);--accent-a5:var(--mint-a5);--accent-a6:var(--mint-a6);--accent-a7:var(--mint-a7);--accent-a8:var(--mint-a8);--accent-a9:var(--mint-a9);--accent-a10:var(--mint-a10);--accent-a11:var(--mint-a11);--accent-a12:var(--mint-a12)}[data-accent-color=lime]{--color-surface-accent:var(--lime-surface);--accent-1:var(--lime-1);--accent-2:var(--lime-2);--accent-3:var(--lime-3);--accent-4:var(--lime-4);--accent-5:var(--lime-5);--accent-6:var(--lime-6);--accent-7:var(--lime-7);--accent-8:var(--lime-8);--accent-9:var(--lime-9);--accent-contrast:var(--lime-contrast);--accent-10:var(--lime-10);--accent-11:var(--lime-11);--accent-12:var(--lime-12);--accent-a1:var(--lime-a1);--accent-a2:var(--lime-a2);--accent-a3:var(--lime-a3);--accent-a4:var(--lime-a4);--accent-a5:var(--lime-a5);--accent-a6:var(--lime-a6);--accent-a7:var(--lime-a7);--accent-a8:var(--lime-a8);--accent-a9:var(--lime-a9);--accent-a10:var(--lime-a10);--accent-a11:var(--lime-a11);--accent-a12:var(--lime-a12)}[data-accent-color=yellow]{--color-surface-accent:var(--yellow-surface);--accent-1:var(--yellow-1);--accent-2:var(--yellow-2);--accent-3:var(--yellow-3);--accent-4:var(--yellow-4);--accent-5:var(--yellow-5);--accent-6:var(--yellow-6);--accent-7:var(--yellow-7);--accent-8:var(--yellow-8);--accent-9:var(--yellow-9);--accent-contrast:var(--yellow-contrast);--accent-10:var(--yellow-10);--accent-11:var(--yellow-11);--accent-12:var(--yellow-12);--accent-a1:var(--yellow-a1);--accent-a2:var(--yellow-a2);--accent-a3:var(--yellow-a3);--accent-a4:var(--yellow-a4);--accent-a5:var(--yellow-a5);--accent-a6:var(--yellow-a6);--accent-a7:var(--yellow-a7);--accent-a8:var(--yellow-a8);--accent-a9:var(--yellow-a9);--accent-a10:var(--yellow-a10);--accent-a11:var(--yellow-a11);--accent-a12:var(--yellow-a12)}[data-accent-color=amber]{--color-surface-accent:var(--amber-surface);--accent-1:var(--amber-1);--accent-2:var(--amber-2);--accent-3:var(--amber-3);--accent-4:var(--amber-4);--accent-5:var(--amber-5);--accent-6:var(--amber-6);--accent-7:var(--amber-7);--accent-8:var(--amber-8);--accent-9:var(--amber-9);--accent-contrast:var(--amber-contrast);--accent-10:var(--amber-10);--accent-11:var(--amber-11);--accent-12:var(--amber-12);--accent-a1:var(--amber-a1);--accent-a2:var(--amber-a2);--accent-a3:var(--amber-a3);--accent-a4:var(--amber-a4);--accent-a5:var(--amber-a5);--accent-a6:var(--amber-a6);--accent-a7:var(--amber-a7);--accent-a8:var(--amber-a8);--accent-a9:var(--amber-a9);--accent-a10:var(--amber-a10);--accent-a11:var(--amber-a11);--accent-a12:var(--amber-a12)}[data-accent-color=gold]{--color-surface-accent:var(--gold-surface);--accent-1:var(--gold-1);--accent-2:var(--gold-2);--accent-3:var(--gold-3);--accent-4:var(--gold-4);--accent-5:var(--gold-5);--accent-6:var(--gold-6);--accent-7:var(--gold-7);--accent-8:var(--gold-8);--accent-9:var(--gold-9);--accent-contrast:var(--gold-contrast);--accent-10:var(--gold-10);--accent-11:var(--gold-11);--accent-12:var(--gold-12);--accent-a1:var(--gold-a1);--accent-a2:var(--gold-a2);--accent-a3:var(--gold-a3);--accent-a4:var(--gold-a4);--accent-a5:var(--gold-a5);--accent-a6:var(--gold-a6);--accent-a7:var(--gold-a7);--accent-a8:var(--gold-a8);--accent-a9:var(--gold-a9);--accent-a10:var(--gold-a10);--accent-a11:var(--gold-a11);--accent-a12:var(--gold-a12)}[data-accent-color=bronze]{--color-surface-accent:var(--bronze-surface);--accent-1:var(--bronze-1);--accent-2:var(--bronze-2);--accent-3:var(--bronze-3);--accent-4:var(--bronze-4);--accent-5:var(--bronze-5);--accent-6:var(--bronze-6);--accent-7:var(--bronze-7);--accent-8:var(--bronze-8);--accent-9:var(--bronze-9);--accent-contrast:var(--bronze-contrast);--accent-10:var(--bronze-10);--accent-11:var(--bronze-11);--accent-12:var(--bronze-12);--accent-a1:var(--bronze-a1);--accent-a2:var(--bronze-a2);--accent-a3:var(--bronze-a3);--accent-a4:var(--bronze-a4);--accent-a5:var(--bronze-a5);--accent-a6:var(--bronze-a6);--accent-a7:var(--bronze-a7);--accent-a8:var(--bronze-a8);--accent-a9:var(--bronze-a9);--accent-a10:var(--bronze-a10);--accent-a11:var(--bronze-a11);--accent-a12:var(--bronze-a12)}[data-accent-color=gray]{--color-surface-accent:var(--gray-surface);--accent-1:var(--gray-1);--accent-2:var(--gray-2);--accent-3:var(--gray-3);--accent-4:var(--gray-4);--accent-5:var(--gray-5);--accent-6:var(--gray-6);--accent-7:var(--gray-7);--accent-8:var(--gray-8);--accent-9:var(--gray-9);--accent-contrast:var(--gray-contrast);--accent-10:var(--gray-10);--accent-11:var(--gray-11);--accent-12:var(--gray-12);--accent-a1:var(--gray-a1);--accent-a2:var(--gray-a2);--accent-a3:var(--gray-a3);--accent-a4:var(--gray-a4);--accent-a5:var(--gray-a5);--accent-a6:var(--gray-a6);--accent-a7:var(--gray-a7);--accent-a8:var(--gray-a8);--accent-a9:var(--gray-a9);--accent-a10:var(--gray-a10);--accent-a11:var(--gray-a11);--accent-a12:var(--gray-a12)}:root{--sy-f-sys:-apple-system,BlinkMacSystemFont,Segoe UI,Oxygen,Ubuntu,Droid Sans,Helvetica Neue;--sy-f-cjk:Noto Sans;--sy-f-heading:var(--sy-f-sys),var(--sy-f-cjk),sans-serif;--sy-f-text:var(--sy-f-sys),var(--sy-f-cjk),sans-serif;--sy-f-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--sy-s-banner-height:0rem;--sy-s-navbar-height:56px;--sy-s-offset-top:calc(var(--sy-s-navbar-height) + var(--sy-s-banner-height));--sy-c-divider:var(--gray-4);--sy-c-border:var(--gray-5);--sy-c-text:var(--gray-12);--sy-c-light:var(--gray-11);--sy-c-bold:var(--slate-12);--sy-c-heading:var(--sage-12);--sy-c-link:var(--accent-9);--sy-c-link-hover:var(--accent-a11);--sy-c-background:#fff;--sy-c-surface:var(--gray-a2);--sy-c-overlay:var(--black-a5);--sy-c-background-contrast:#000;--sy-c-foot-text:var(--sy-c-text);--sy-c-foot-background:var(--slate-2);--sy-c-foot-divider:var(--sy-c-divider);--sy-dropdown-shadow:0 12px 32px var(--gray-a6),0 2px 6px var(--gray-a4)}[lang=zh-CN],[lang=zh],[lang^=zh-Hans]{--sy-f-cjk:PingFang SC,Hiragino Sans GB,Noto Sans SC,Microsoft YaHei}[lang=zh-TW],[lang^=zh-Hant]{--sy-f-cjk:PingFang TC,Noto Sans TC,Microsoft JhengHei}[lang=zh-HK],[lang=zh-Hant-HK]{--sy-f-cjk:PingFang HK,Noto Sans HK,Microsoft JhengHei}[lang=ja]{--sy-f-cjk:Hiragino Sans,Noto Sans JP,Yu Gothic}[data-accent-color=amber],[data-accent-color=lime],[data-accent-color=mint],[data-accent-color=sky],[data-accent-color=yellow]{--sy-c-link:var(--accent-a10)}html.light{color-scheme:light;--sy-c-background:#fff;--sy-c-background-contrast:#000}html.dark{color-scheme:dark;--sy-c-background:var(--slate-1);--sy-c-overlay:var(--white-a2);--sy-c-background-contrast:var(--white-a10);--sy-c-foot-background:var(--black-a11);--sy-c-foot-divider:var(--black-a12)}html{color:var(--sy-c-text);background-color:var(--sy-c-background)}:root{--lucide-alert-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3zM12 9v4m0 4h.01'/%3E%3C/svg%3E");--lucide-arrows-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m7 15 5 5 5-5M7 9l5-5 5 5'/%3E%3C/svg%3E");--lucide-award-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='8' r='6'/%3E%3Cpath d='M15.477 12.89 17 22l-5-3-5 3 1.523-9.11'/%3E%3C/svg%3E");--lucide-bell-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9m-4.27 13a2 2 0 0 1-3.46 0'/%3E%3C/svg%3E");--lucide-bookmark-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z'/%3E%3C/svg%3E");--lucide-calendar-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='18' height='18' x='3' y='4' rx='2' ry='2'/%3E%3Cpath d='M16 2v4M8 2v4m-5 4h18'/%3E%3C/svg%3E");--lucide-check-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");--lucide-chevron-down-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' class='lucide lucide-chevron-down'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");--lucide-chevron-left-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' class='lucide lucide-chevron-left'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E");--lucide-chevron-right-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' class='lucide lucide-chevron-right'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E");--lucide-chevron-up-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' class='lucide lucide-chevron-up'%3E%3Cpath d='m18 15-6-6-6 6'/%3E%3C/svg%3E");--lucide-close-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E");--lucide-external-link-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M13 5h6v6m0-6L5 19'/%3E%3C/svg%3E");--lucide-flame-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z'/%3E%3C/svg%3E");--lucide-git-fork-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='18' r='3'/%3E%3Ccircle cx='6' cy='6' r='3'/%3E%3Ccircle cx='18' cy='6' r='3'/%3E%3Cpath d='M18 9v1a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2V9m6 3v3'/%3E%3C/svg%3E");--lucide-help-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3m.08 4h.01'/%3E%3C/svg%3E");--lucide-languages-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' class='lucide lucide-languages'%3E%3Cpath d='m5 8 6 6m-7 0 6-6 2-3M2 5h12M7 2h1m14 20-5-10-5 10m2-4h6'/%3E%3C/svg%3E");--lucide-laptop-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='18' height='12' x='3' y='4' rx='2' ry='2'/%3E%3Cpath d='M2 20h20'/%3E%3C/svg%3E");--lucide-link-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E");--lucide-menu-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' class='lucide lucide-menu'%3E%3Cpath d='M4 12h16M4 6h16M4 18h16'/%3E%3C/svg%3E");--lucide-milestone-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M18 6H5a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h13l4-3.5L18 6zm-6 7v8m0-18v3'/%3E%3C/svg%3E");--lucide-moon-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M12 3a6.364 6.364 0 0 0 9 9 9 9 0 1 1-9-9z'/%3E%3C/svg%3E");--lucide-outdent-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m7 8-4 4 4 4m14-4H11m10-6H11m10 12H11'/%3E%3C/svg%3E");--lucide-rocket-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09zM12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z'/%3E%3Cpath d='M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0m1 7v5s3.03-.55 4-2c1.08-1.62 0-5 0-5'/%3E%3C/svg%3E");--lucide-skull-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='9' cy='12' r='1'/%3E%3Ccircle cx='15' cy='12' r='1'/%3E%3Cpath d='M8 20v2h8v-2m-3.5-3-.5-1-.5 1h1z'/%3E%3Cpath d='M16 20a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20'/%3E%3C/svg%3E");--lucide-star-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m12 2 3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z'/%3E%3C/svg%3E");--lucide-sun-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32 1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E");--lucide-zap-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M13 2 3 14h9l-1 8 10-12h-9l1-8z'/%3E%3C/svg%3E")}.i-lucide.alert{--icon-url:var(--lucide-alert-url)}.i-lucide.arrows{--icon-url:var(--lucide-arrows-url)}.i-lucide.award{--icon-url:var(--lucide-award-url)}.i-lucide.bell{--icon-url:var(--lucide-bell-url)}.i-lucide.bookmark{--icon-url:var(--lucide-bookmark-url)}.i-lucide.calendar{--icon-url:var(--lucide-calendar-url)}.i-lucide.check{--icon-url:var(--lucide-check-url)}.i-lucide.chevron-down{--icon-url:var(--lucide-chevron-down-url)}.i-lucide.chevron-left{--icon-url:var(--lucide-chevron-left-url)}.i-lucide.chevron-right{--icon-url:var(--lucide-chevron-right-url)}.i-lucide.chevron-up{--icon-url:var(--lucide-chevron-up-url)}.i-lucide.close{--icon-url:var(--lucide-close-url)}.i-lucide.external-link{--icon-url:var(--lucide-external-link-url)}.i-lucide.flame{--icon-url:var(--lucide-flame-url)}.i-lucide.git-fork{--icon-url:var(--lucide-git-fork-url)}.i-lucide.help{--icon-url:var(--lucide-help-url)}.i-lucide.languages{--icon-url:var(--lucide-languages-url)}.i-lucide.laptop{--icon-url:var(--lucide-laptop-url)}.i-lucide.link{--icon-url:var(--lucide-link-url)}.i-lucide.menu{--icon-url:var(--lucide-menu-url)}.i-lucide.milestone{--icon-url:var(--lucide-milestone-url)}.i-lucide.moon{--icon-url:var(--lucide-moon-url)}.i-lucide.outdent{--icon-url:var(--lucide-outdent-url)}.i-lucide.rocket{--icon-url:var(--lucide-rocket-url)}.i-lucide.skull{--icon-url:var(--lucide-skull-url)}.i-lucide.star{--icon-url:var(--lucide-star-url)}.i-lucide.sun{--icon-url:var(--lucide-sun-url)}.i-lucide.zap{--icon-url:var(--lucide-zap-url)}:root{--simpleicons-bitbucket-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M.778 1.213a.768.768 0 0 0-.768.892l3.263 19.81c.084.5.515.868 1.022.873H19.95a.772.772 0 0 0 .77-.646l3.27-20.03a.768.768 0 0 0-.768-.891zM14.52 15.53H9.522L8.17 8.466h7.561z'/%3E%3C/svg%3E");--simpleicons-discord-url:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028 14.09 14.09 0 0 0 1.226-1.994.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z'/%3E%3C/svg%3E");--simpleicons-git-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.546 10.93 13.067.452a1.55 1.55 0 0 0-2.188 0L8.708 2.627l2.76 2.76a1.838 1.838 0 0 1 2.327 2.341l2.658 2.66a1.838 1.838 0 0 1 1.9 3.039 1.837 1.837 0 0 1-2.6 0 1.846 1.846 0 0 1-.404-1.996L12.86 8.955v6.525c.176.086.342.203.488.348a1.848 1.848 0 0 1 0 2.6 1.844 1.844 0 0 1-2.609 0 1.834 1.834 0 0 1 0-2.598c.182-.18.387-.316.605-.406V8.835a1.834 1.834 0 0 1-.996-2.41L7.636 3.7.45 10.881c-.6.605-.6 1.584 0 2.189l10.48 10.477a1.545 1.545 0 0 0 2.186 0l10.43-10.43a1.544 1.544 0 0 0 0-2.187'/%3E%3C/svg%3E");--simpleicons-github-url:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E");--simpleicons-gitlab-url:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m23.6 9.593-.033-.086L20.3.98a.851.851 0 0 0-.336-.405.875.875 0 0 0-1 .054.875.875 0 0 0-.29.44L16.47 7.818H7.537L5.332 1.07a.857.857 0 0 0-.29-.441.875.875 0 0 0-1-.054.859.859 0 0 0-.336.405L.433 9.502l-.032.086a6.066 6.066 0 0 0 2.012 7.01l.01.009.03.021 4.977 3.727 2.462 1.863 1.5 1.132a1.008 1.008 0 0 0 1.22 0l1.499-1.132 2.461-1.863 5.006-3.75.013-.01a6.068 6.068 0 0 0 2.01-7.002z'/%3E%3C/svg%3E");--simpleicons-linkedin-url:url("data:image/svg+xml;utf8,%3Csvg role='img' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Ctitle%3ELinkedIn%3C/title%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E");--simpleicons-mastodon-url:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E");--simpleicons-readthedocs-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.732 0a59.316 59.316 0 0 0-4.977.218V24a62.933 62.933 0 0 1 3.619-.687c.17-.028.34-.053.509-.078.215-.033.43-.066.644-.096l.205-.03zm1.18.003V22.96a61.042 61.042 0 0 1 12.333-.213V1.485A60.859 60.859 0 0 0 8.912.003zm1.707 1.81a.59.59 0 0 1 .015 0c3.06.088 6.125.404 9.167.95a.59.59 0 0 1 .476.686.59.59 0 0 1-.569.484.59.59 0 0 1-.116-.009 60.622 60.622 0 0 0-8.992-.931.59.59 0 0 1-.573-.607.59.59 0 0 1 .592-.572zm-4.212.028a.59.59 0 0 1 .578.565.59.59 0 0 1-.564.614 59.74 59.74 0 0 0-2.355.144.59.59 0 0 1-.04.002.59.59 0 0 1-.595-.542.59.59 0 0 1 .54-.635c.8-.065 1.6-.114 2.401-.148a.59.59 0 0 1 .035 0zm4.202 2.834a.59.59 0 0 1 .015 0 61.6 61.6 0 0 1 9.167.8.59.59 0 0 1 .488.677.59.59 0 0 1-.602.494.59.59 0 0 1-.076-.006 60.376 60.376 0 0 0-8.99-.786.59.59 0 0 1-.584-.596.59.59 0 0 1 .582-.583zm-4.211.097a.59.59 0 0 1 .587.555.59.59 0 0 1-.554.622c-.786.046-1.572.107-2.356.184a.59.59 0 0 1-.04.003.59.59 0 0 1-.603-.533.59.59 0 0 1 .53-.644c.8-.078 1.599-.14 2.4-.187a.59.59 0 0 1 .036 0zM10.6 7.535a.59.59 0 0 1 .015 0c3.06-.013 6.125.204 9.167.65a.59.59 0 0 1 .498.67.59.59 0 0 1-.593.504.59.59 0 0 1-.076-.006 60.142 60.142 0 0 0-8.992-.638.59.59 0 0 1-.592-.588.59.59 0 0 1 .573-.592zm1.153 2.846a61.093 61.093 0 0 1 8.02.515.59.59 0 0 1 .509.66.59.59 0 0 1-.586.514.59.59 0 0 1-.076-.005 59.982 59.982 0 0 0-8.99-.492.59.59 0 0 1-.603-.577.59.59 0 0 1 .578-.603c.382-.008.765-.012 1.148-.012zm1.139 2.832a60.92 60.92 0 0 1 6.871.394.59.59 0 0 1 .52.652.59.59 0 0 1-.577.523.59.59 0 0 1-.076-.004 59.936 59.936 0 0 0-8.991-.344.59.59 0 0 1-.61-.568.59.59 0 0 1 .567-.611c.765-.028 1.53-.042 2.296-.042z'/%3E%3C/svg%3E");--simpleicons-reddit-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 0C5.373 0 0 5.373 0 12c0 3.314 1.343 6.314 3.515 8.485l-2.286 2.286A.72.72 0 0 0 1.738 24H12c6.627 0 12-5.373 12-12S18.627 0 12 0Zm4.388 3.199a1.999 1.999 0 1 1-1.947 2.46v.002a2.368 2.368 0 0 0-2.032 2.341v.007c1.776.067 3.4.567 4.686 1.363a2.802 2.802 0 1 1 2.908 4.753c-.088 3.256-3.637 5.876-7.997 5.876-4.361 0-7.905-2.617-7.998-5.87a2.8 2.8 0 0 1 1.189-5.34c.645 0 1.239.218 1.712.585 1.275-.79 2.881-1.291 4.64-1.365v-.01a3.229 3.229 0 0 1 2.88-3.207 2 2 0 0 1 1.959-1.595Zm-8.085 8.376c-.784 0-1.459.78-1.506 1.797-.047 1.016.64 1.429 1.426 1.429.786 0 1.371-.369 1.418-1.385.047-1.017-.553-1.841-1.338-1.841Zm7.406 0c-.786 0-1.385.824-1.338 1.841.047 1.017.634 1.385 1.418 1.385.785 0 1.473-.413 1.426-1.429-.046-1.017-.721-1.797-1.506-1.797Zm-3.703 4.013c-.974 0-1.907.048-2.77.135a.222.222 0 0 0-.183.305 3.199 3.199 0 0 0 2.953 1.964 3.2 3.2 0 0 0 2.953-1.964.222.222 0 0 0-.184-.305 27.75 27.75 0 0 0-2.769-.135Z'/%3E%3C/svg%3E");--simpleicons-slack-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E");--simpleicons-x-twitter-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E");--simpleicons-youtube-url:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.i-icon.bitbucket,.i-simpleicons.bitbucket{--icon-url:var(--simpleicons-bitbucket-url)}.i-icon.discord,.i-simpleicons.discord{--icon-url:var(--simpleicons-discord-url)}.i-icon.git,.i-simpleicons.git{--icon-url:var(--simpleicons-git-url)}.i-icon.github,.i-simpleicons.github{--icon-url:var(--simpleicons-github-url)}.i-icon.gitlab,.i-simpleicons.gitlab{--icon-url:var(--simpleicons-gitlab-url)}.i-icon.linkedin,.i-simpleicons.linkedin{--icon-url:var(--simpleicons-linkedin-url)}.i-icon.mastodon,.i-simpleicons.mastodon{--icon-url:var(--simpleicons-mastodon-url)}.i-icon.readthedocs,.i-simpleicons.readthedocs{--icon-url:var(--simpleicons-readthedocs-url)}.i-icon.reddit,.i-simpleicons.reddit{--icon-url:var(--simpleicons-reddit-url)}.i-icon.slack,.i-simpleicons.slack{--icon-url:var(--simpleicons-slack-url)}.i-icon.x-twitter,.i-simpleicons.x-twitter{--icon-url:var(--simpleicons-x-twitter-url)}.i-icon.youtube,.i-simpleicons.youtube{--icon-url:var(--simpleicons-youtube-url)}:root{--yue-c-text:var(--sy-c-text);--yue-c-heading:var(--sy-c-heading);--yue-c-bold:var(--sy-c-bold);--yue-c-link-1:var(--sy-c-text);--yue-c-link-2:var(--sy-c-bold);--yue-c-link-border:var(--sy-c-link);--yue-c-ol-marker:var(--gray-9);--yue-c-ul-marker:var(--sage-a5);--yue-c-hr:var(--sy-c-border);--yue-c-quote:var(--sy-c-text);--yue-c-quote-border:var(--accent-a3);--yue-c-quote-symbol:var(--accent-9);--yue-c-caption:var(--sy-c-light);--yue-c-code-text:var(--accent-a11);--yue-c-code-background:var(--accent-a3);--yue-c-table-border:var(--gray-a5);--yue-c-th-background:var(--color-surface-accent);--yue-c-th-border:var(--gray-a5);--yue-c-td-border:var(--gray-a4);--yue-c-row-background:var(--sy-c-surface)}.yue{font-size:1rem;line-height:1.75;color:var(--yue-c-text)}.yue p{margin-top:1rem;margin-bottom:1.25rem}.yue a{color:var(--yue-c-link-1);font-weight:500;text-decoration:none;border-bottom:1px solid var(--yue-c-link-border)}.yue a:hover{color:var(--yue-c-link-2);border-bottom-width:2px}.yue pre a,.yue pre a:hover{border-bottom:none}.yue strong{color:var(--yue-c-bold);font-weight:600}.yue a strong,.yue blockquote strong,.yue thead th strong{color:inherit}.yue ol{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.yue ol,.yue ol[type="1"]{list-style-type:decimal}.yue ol.upperalpha,.yue ol[type=A]{list-style-type:upper-alpha}.yue ol.loweralpha,.yue ol[type=a]{list-style-type:lower-alpha}.yue ol.upperroman,.yue ol[type=I]{list-style-type:upper-roman}.yue ol.lowerroman,.yue ol[type=i]{list-style-type:lower-roman}.yue ul{list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.yue ol>li::marker{font-weight:400;color:var(--yue-c-ol-marker)}.yue ul>li::marker{color:var(--yue-c-ul-marker)}.yue dl{margin-top:1.5rem;margin-bottom:1.5rem}.yue dt{color:var(--yue-c-bold);font-weight:600}.yue dd{margin-left:1.5rem}.yue hr{border-color:var(--yue-c-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.yue blockquote{color:var(--yue-c-quote);border-left-width:.25rem;border-left-color:var(--yue-c-quote-border);margin-top:1.2rem;margin-bottom:1.2rem;padding-left:1rem}.yue blockquote .attribution{font-size:.85em;font-style:italic}[lang=ja] .yue blockquote .attribution,[lang=ko] .yue blockquote .attribution,[lang^=zh] .yue blockquote .attribution{font-style:normal}.yue h1{color:var(--yue-c-heading);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.yue h1 strong{font-weight:900;color:inherit}.yue h2{color:var(--yue-c-heading);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.yue h2 strong{font-weight:800;color:inherit}.yue h3{color:var(--yue-c-heading);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.yue h3 strong{font-weight:700;color:inherit}.yue h4{color:var(--yue-c-heading);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.yue h4 strong{font-weight:700;color:inherit}.yue h5,.yue h6{color:var(--yue-c-heading);font-weight:600}.yue img{display:inline;max-width:100%}.yue img.rounded{border-radius:.5rem}.yue a>img,.yue figure img,.yue figure>*{margin-top:0;margin-bottom:0}.yue figcaption{color:var(--yue-c-caption);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.yue figcaption>p{margin-top:0}.yue code{color:var(--yue-c-code-text);font-weight:600;font-size:.875em}.yue a code,.yue blockquote code,.yue h1 code,.yue h2 code,.yue h3 code,.yue h4 code,.yue th code{color:inherit}.yue h2 code{font-size:.875em}.yue li>code,.yue p>code{padding:2px 4px;border-radius:3px;font-weight:500;background-color:var(--yue-c-code-background)}.yue h3 code{font-size:.9em}.yue kbd{font-family:var(--sy-f-mono)}.yue figure,.yue video{margin-top:2em;margin-bottom:2em}.yue li{margin-top:.5em;margin-bottom:.5em}.yue ol>li,.yue ul>li{padding-left:.375em}.yue ol ol,.yue ol ul,.yue ul ol,.yue ul ul{margin-top:.75em;margin-bottom:.75em}.yue h2+*,.yue h3+*,.yue h4+*,.yue hr+*{margin-top:0}.yue table{width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.86em;line-height:1.7}.yue table>caption{margin-bottom:.4rem;color:var(--yue-c-caption)}.yue thead tr{border-bottom-width:1px;border-bottom-color:var(--yue-c-th-border)}.yue thead th{color:var(--yue-c-heading);font-weight:600;vertical-align:middle}.yue tbody tr{border-bottom-width:1px;border-bottom-color:var(--yue-c-td-border)}.yue tbody tr:last-child{border-bottom-width:0}.yue tbody td{vertical-align:middle}.yue tfoot{border-top-width:1px;border-top-color:var(--yue-c-th-border)}.yue tfoot td{vertical-align:top}.yue td>p{margin:.25rem 0}.yue thead th>p{margin:0}.yue tbody td,.yue tfoot td,.yue thead th{padding:.5rem}.yue section{clear:both}.yue section>div{margin-bottom:2rem}.yue dd>p:first-child{margin-top:0}.yue p.lead{font-size:1.2rem;color:var(--sy-c-light);margin-bottom:0}.yue p.lead+hr{margin-top:1rem}.yue p.rubric{color:var(--yue-c-heading);font-weight:600;margin-top:2rem}.yue .sidebar{background-color:var(--sy-c-surface);border:1px solid var(--sy-c-border);border-radius:6px;clear:right;float:right;margin-left:1rem;margin-bottom:1rem;margin-right:0;width:30%}@media (max-width:767px){.yue .sidebar{float:none;width:100%;margin-left:0}}.yue .sidebar>*{padding-left:1rem;padding-right:1rem}.yue .sidebar img{margin-top:1rem;margin-bottom:1rem}.yue .sidebar-title{font-weight:500;border-bottom:1px solid var(--sy-c-border);margin:0;padding-top:.5rem;padding-bottom:.5rem}.yue dl.simple>dd>p,.yue ol.simple>li>p,.yue ul.simple>li>p{margin:0}.yue a.headerlink{visibility:hidden;margin-left:6px;color:var(--sy-c-light);font-weight:300;font-size:58%;font-family:var(--sy-f-mono);--icon-url:var(--lucide-link-url);-webkit-mask:var(--icon-url) no-repeat;mask:var(--icon-url) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;width:1em;height:1em;display:inline-block;vertical-align:middle;font-style:normal;background-color:currentColor}.yue .math a.headerlink,h1:hover a.headerlink,h2:hover a.headerlink,h3:hover a.headerlink,h4:hover a.headerlink,h5:hover a.headerlink,h6:hover a.headerlink{visibility:visible}.yue .toctree-wrapper a,.yue a.image-reference{border-bottom:none}.yue .toctree-wrapper p.caption{font-size:.86rem;font-weight:500;font-family:var(--sy-f-heading);color:var(--sy-c-light);text-transform:uppercase;letter-spacing:.4px;padding:.8rem 0 .4rem;border-bottom:1px solid var(--sy-c-divider)}.yue .align-left{clear:left;float:left;margin:0 1rem 1rem}.yue .align-right{clear:right;float:right;margin:0 1rem 1rem}.yue .align-center{display:block;text-align:center}.yue .align-center,.yue figure.align-center img{margin-left:auto;margin-right:auto}a.footnote-reference{font-size:.65rem;vertical-align:top}aside.footnote>span,div.citation>span{float:left;font-weight:500;padding-right:.25rem}aside.footnote>p,div.citation>p{margin-bottom:.5rem;margin-top:.5rem;margin-left:2rem}.yue kbd.kbd:not(.compound){font-size:.86rem;padding:2px 5px;border-radius:3px;margin-right:.25rem}.yue kbd.compound>kbd{margin-left:.25rem}.yue .menuselection{font-weight:500;font-size:.86rem}.light .searchbox kbd,.light .yue kbd.kbd:not(.compound){border:0;background:linear-gradient(-225deg,#e6e6e6,#f8f8f8);box-shadow:inset 0 -2px #dbdbdb,inset 0 0 1px 1px #fff,0 1px 2px 1px #50505066}.dark .searchbox kbd,.dark .yue kbd.kbd:not(.compound){border:0;background:linear-gradient(-225deg,#353434,#141414);box-shadow:inset 0 -2px #373737,inset 0 0 1px 1px #222,0 1px 2px 1px #000}.yue p.centered{text-align:center}.yue section>img{margin-bottom:1rem}.hlist td{vertical-align:top}.dark .dark-hidden,.dark .light-only,.light .dark-only,.light .light-hidden{display:none}.yue .genindex-jumpbox,.yue .modindex-jumpbox{border-top:1px solid var(--sy-c-border);border-bottom:1px solid var(--sy-c-border);padding:2px .4rem}.yue table.modindextable td:first-of-type{width:28px}.yue table.modindextable img.toggler{margin:0}.yue table.modindextable tr.cap{font-size:1.12rem;background:var(--sy-c-surface);font-family:var(--sy-f-mono)}.yue h2+table.indextable,.yue table.indextable ul{margin-top:0}:root{--attention-icon:var(--lucide-alert-url);--attention-1:var(--crimson-surface);--attention-2:var(--crimson-a3);--attention-3:var(--crimson-9);--attention-4:var(--crimson-a11);--caution-icon:var(--lucide-zap-url);--caution-1:var(--amber-surface);--caution-2:var(--amber-a3);--caution-3:var(--amber-9);--caution-4:var(--amber-11);--danger-icon:var(--lucide-skull-url);--danger-1:var(--ruby-surface);--danger-2:var(--ruby-a3);--danger-3:var(--ruby-9);--danger-4:var(--ruby-a11);--error-icon:var(--lucide-close-url);--error-1:var(--red-surface);--error-2:var(--red-a3);--error-3:var(--red-9);--error-4:var(--red-a11);--hint-icon:var(--lucide-bell-url);--hint-1:var(--cyan-surface);--hint-2:var(--cyan-a3);--hint-3:var(--cyan-9);--hint-4:var(--cyan-a11);--important-icon:var(--lucide-flame-url);--important-1:var(--violet-surface);--important-2:var(--violet-a3);--important-3:var(--violet-9);--important-4:var(--violet-a11);--note-icon:var(--lucide-calendar-url);--note-1:var(--blue-surface);--note-2:var(--blue-a3);--note-3:var(--blue-9);--note-4:var(--blue-a11);--tip-icon:var(--lucide-rocket-url);--tip-1:var(--green-surface);--tip-2:var(--green-a3);--tip-3:var(--green-9);--tip-4:var(--green-a11);--warning-icon:var(--lucide-zap-url);--warning-1:var(--orange-surface);--warning-2:var(--orange-a3);--warning-3:var(--orange-9);--warning-4:var(--orange-a11);--seealso-icon:var(--lucide-link-url);--seealso-1:var(--gold-surface);--seealso-2:var(--gold-a3);--seealso-3:var(--gold-9);--seealso-4:var(--gold-a11);--todo-icon:var(--lucide-bookmark-url);--todo-1:var(--bronze-surface);--todo-2:var(--bronze-a3);--todo-3:var(--bronze-9);--todo-4:var(--bronze-a11);--versionadded-icon:var(--lucide-flame-url);--versionadded-1:var(--green-surface);--versionadded-2:var(--green-9);--versionchanged-icon:var(--lucide-zap-url);--versionchanged-1:var(--amber-surface);--versionchanged-2:var(--amber-9);--versionremoved-icon:var(--lucide-skull-url);--versionremoved-1:var(--red-surface);--versionremoved-2:var(--red-9);--deprecated-icon:var(--lucide-alert-url);--deprecated-1:var(--orange-surface);--deprecated-2:var(--orange-9)}.admonition{--icon-url:var(--lucide-bell-url);--color-1:var(--color-surface-accent);--color-2:var(--accent-a3);--color-3:var(--accent-9);--color-4:var(--accent-a11);display:flex;flex-direction:column;position:relative;padding:.825rem 1rem;margin-top:1rem;margin-bottom:1rem;border-left:4px solid var(--color-3);background-color:var(--color-1)}.admonition:before{position:absolute;content:"";top:6px;left:-12px;width:20px;height:20px;border-radius:100%;background-color:var(--color-3)}.admonition:after{position:absolute;content:"";top:10px;left:-8px;-webkit-mask:var(--icon-url) no-repeat;mask:var(--icon-url) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;font-style:normal;width:12px;height:12px;background-color:#fff}.admonition p.admonition-title{position:relative;margin:-.825rem -1rem .825rem -19px;padding:4px 18px;font-size:.85rem;font-weight:600;line-height:1.72;color:var(--color-4);background-color:var(--color-2);--yue-c-code:var(--color-4);--yue-c-bold:var(--color-4)}.admonition p.admonition-title svg{display:inline-block}.admonition.attention{--icon-url:var(--attention-icon);--color-1:var(--attention-1);--color-2:var(--attention-2);--color-3:var(--attention-3);--color-4:var(--attention-4)}.admonition.caution{--icon-url:var(--caution-icon);--color-1:var(--caution-1);--color-2:var(--caution-2);--color-3:var(--caution-3);--color-4:var(--caution-4)}.admonition.danger{--icon-url:var(--danger-icon);--color-1:var(--danger-1);--color-2:var(--danger-2);--color-3:var(--danger-3);--color-4:var(--danger-4)}.admonition.error{--icon-url:var(--error-icon);--color-1:var(--error-1);--color-2:var(--error-2);--color-3:var(--error-3);--color-4:var(--error-4)}.admonition.hint{--icon-url:var(--hint-icon);--color-1:var(--hint-1);--color-2:var(--hint-2);--color-3:var(--hint-3);--color-4:var(--hint-4)}.admonition.important{--icon-url:var(--important-icon);--color-1:var(--important-1);--color-2:var(--important-2);--color-3:var(--important-3);--color-4:var(--important-4)}.admonition.note{--icon-url:var(--note-icon);--color-1:var(--note-1);--color-2:var(--note-2);--color-3:var(--note-3);--color-4:var(--note-4)}.admonition.tip{--icon-url:var(--tip-icon);--color-1:var(--tip-1);--color-2:var(--tip-2);--color-3:var(--tip-3);--color-4:var(--tip-4)}.admonition.warning{--icon-url:var(--warning-icon);--color-1:var(--warning-1);--color-2:var(--warning-2);--color-3:var(--warning-3);--color-4:var(--warning-4)}.admonition.seealso{--icon-url:var(--seealso-icon);--color-1:var(--seealso-1);--color-2:var(--seealso-2);--color-3:var(--seealso-3);--color-4:var(--seealso-4)}.admonition.admonition-todo{--icon-url:var(--todo-icon);--color-1:var(--todo-1);--color-2:var(--todo-2);--color-3:var(--todo-3);--color-4:var(--todo-4)}.yue .admonition>*{margin-top:0;margin-bottom:1rem}.yue .admonition>:last-child{margin-bottom:0!important}span.versionmodified{color:var(--sy-c-bold);font-weight:600}div.deprecated,div.versionadded,div.versionchanged,div.versionremoved{position:relative;padding:6px 1rem;margin:1rem 0;border-left:4px solid var(--color-2);background-color:var(--color-1);line-height:1.72}div.deprecated:before,div.versionadded:before,div.versionchanged:before,div.versionremoved:before{position:absolute;content:"";top:10px;left:-12px;color:#fff;width:20px;height:20px;border-radius:100%;background-color:var(--color-2);text-align:center;font:normal 700 14px/20px var(--sy-f-mono)}div.deprecated:after,div.versionadded:after,div.versionchanged:after,div.versionremoved:after{position:absolute;content:"";top:14px;left:-8px;-webkit-mask:var(--icon-url) no-repeat;mask:var(--icon-url) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;font-style:normal;width:12px;height:12px;background-color:#fff}div.versionadded{--color-1:var(--versionadded-1);--color-2:var(--versionadded-2);--icon-url:var(--versionadded-icon)}div.versionchanged{--color-1:var(--versionchanged-1);--color-2:var(--versionchanged-2);--icon-url:var(--versionchanged-icon)}div.versionremoved{--color-1:var(--versionremoved-1);--color-2:var(--versionremoved-2);--icon-url:var(--versionremoved-icon)}div.deprecated{--color-1:var(--deprecated-1);--color-2:var(--deprecated-2);--icon-url:var(--deprecated-icon)}div.deprecated>p,div.versionadded>p,div.versionchanged>p,div.versionremoved>p{margin:0}.yue blockquote.epigraph{padding:1rem 2.4rem;border-left:0;text-align:center}.yue blockquote.highlights{border-left-width:4px;padding-top:.2rem;padding-bottom:.2rem;background-color:var(--sy-c-surface)}.yue blockquote.pull-quote{position:relative;font-size:1.24rem;padding:2.4rem 3.6rem 1.2rem;border-left:0}.yue blockquote.pull-quote:before{content:"\201c";position:absolute;top:0;left:.5rem;color:var(--yue-c-quote-symbol);font:700 4rem/1 Times New Roman,Georgia,Palatino,Times,serif}.yue blockquote.pull-quote .attribution{text-align:right}pre.literal-block{line-height:1.48;padding:1rem;font-size:.96rem;background-color:var(--syntax-pre-bg);border-radius:6px;overflow:auto}.highlight,.literal-block-wrapper{--margin:1rem;--radius:6px}.literal-block-wrapper div[class^=highlight-]{display:flex}.literal-block-wrapper .highlight{width:100%}.highlight>pre{line-height:1.48;padding:var(--margin);font-size:.96rem;font-family:var(--sy-f-mono);background-color:var(--syntax-pre-bg);border-radius:var(--radius);overflow:auto}.win .highlight>pre{font-family:"Twemoji Country Flags",var(--sy-f-mono)}.highlight .gp,.highlight .linenos{-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlight .linenos{display:inline-block;box-shadow:-.05rem 0 var(--syntax-linenos-divider) inset;margin-right:.8rem;padding-right:.8rem;opacity:.6}.highlight .hll{margin-left:calc(0rem - var(--margin));margin-right:calc(0rem - var(--margin));padding:0 var(--margin)}.code-block-caption{display:flex;font-size:.84rem;font-weight:600;color:var(--syntax-text);background-color:var(--syntax-cap-bg);padding:.4rem var(--margin);border-radius:var(--radius) var(--radius) 0 0}.code-block-caption+div>.highlight>pre{border-top-left-radius:0;border-top-right-radius:0}div[class^=highlight]>.highlight>pre{display:grid}.yue .table-wrapper{width:100%;overflow-x:auto;margin-top:2rem;margin-bottom:2rem;border:1px solid var(--yue-c-table-border);border-radius:6px}.yue .table-wrapper table{margin:0}.yue .table-wrapper thead tr{border-top:1px solid var(--yue-c-td-border)}.yue .table-wrapper thead tr:first-child{border-top:0}.yue .table-wrapper th{background-color:var(--yue-c-th-background);border-left:1px solid var(--yue-c-td-border);padding:.725rem 1rem}.yue .table-wrapper td{border-left:1px solid var(--yue-c-td-border);padding:.5rem 1rem}.yue .table-wrapper tr>td:first-child,.yue .table-wrapper tr>th:first-child{border-left:0}.yue .table-wrapper caption{padding:.5rem;margin:0;border-bottom:1px solid var(--yue-c-th-border)}.yue .table-wrapper tbody tr.row-odd{background-color:var(--yue-c-row-background)}.yue table.hlist td{vertical-align:top}.table-wrapper{overflow-x:auto;scrollbar-gutter:auto}.table-wrapper::-webkit-scrollbar{height:.75rem;width:.75rem}.table-wrapper::-webkit-scrollbar-thumb{border-radius:10px}.table-wrapper::-webkit-scrollbar-track{background-color:transparent}.table-wrapper:hover::-webkit-scrollbar-thumb{background-color:hsla(0,0%,61%,.2);background-clip:content-box;border:3px solid transparent}.yue table.ghost td,.yue table.ghost th{border-left:0;border-right:0;background-color:transparent}.yue table.ghost caption{margin-bottom:0;padding-bottom:.5rem;border-bottom:3px solid var(--yue-c-td-border)}.yue table.ghost thead tr:first-child{border-top:0;border-bottom-width:3px}.yue .table-wrapper.ghost{border:0}:root{--sig-property:var(--syntax-keyword);--sig-name:var(--syntax-property);--sig-typehint:var(--syntax-constant);--sig-param:var(--syntax-meta)}dt.sig{position:relative;font-size:.92rem;padding:.25rem .5rem .25rem 3rem;text-indent:-2.4rem;border-radius:6px}dt.sig:after{content:"";display:table;clear:both}dt.sig:hover{background:var(--sy-c-surface)}dt.sig+dd{font-size:.92rem;margin-left:2rem}dt.sig>em.property:first-child{color:var(--sig-property)}dl.field-list a{font-weight:400}dt.sig+dd>div{margin-bottom:1rem}dt.sig+dd>dl.field-list>dt{text-transform:uppercase;font-size:.76rem}em.property,em.sig-param{font-style:normal}em.sig-param{color:var(--sy-c-light)}span.sig-name,span.sig-prename{color:var(--sig-name)}span.sig-name{font-weight:600}span.sig-return-icon{color:var(--sy-c-light)}span.sig-return-typehint,span.sig-return-typehint>a{color:var(--sig-typehint)}span.pre,span.sig-paren{font-family:var(--sy-f-mono)}dt.sig>a.internal{font-size:.82rem;border:0;color:var(--sy-c-light)}dt.sig>a.internal:before{content:"\a";white-space:pre}.viewcode-block{position:relative}.viewcode-back{position:absolute;top:-1.5rem;font-size:.8rem}.classifier{font-style:oblique;font-weight:400}.classifier:before{font-style:normal;margin-left:.1rem;margin-right:.5rem;content:":";display:inline-block}.yue .table-wrapper.autosummary{border-left:0;border-right:0;border-radius:0}.yue .table-wrapper table.autosummary td{border:none;padding-top:.25rem;padding-bottom:.25rem}.yue p.rubric+div.autosummary{margin-top:0}.hamburger{position:relative;display:inline-block;width:16px;height:14px;overflow:hidden;cursor:pointer}.hamburger>span{position:absolute;width:16px;height:2px;left:0;background-color:var(--sy-c-text);transition:top .25s,transform .25s}.hamburger_1{top:0}.hamburger_2{top:6px}.hamburger_3{top:12px}button[aria-expanded=true] .hamburger .hamburger_1{top:6px;transform:translate(0) rotate(225deg)}button[aria-expanded=true] .hamburger .hamburger_2{top:6px;transform:translate(18px)}button[aria-expanded=true] .hamburger .hamburger_3{top:6px;transform:translate(0) rotate(135deg)}.searchbox{position:relative}.searchbox input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;padding:6px 12px;font-size:.92rem;font-family:var(--sy-f-text);border-radius:6px;outline:0;background:var(--sy-c-surface)}.searchbox button,.searchbox kbd{position:absolute;font-size:.68rem;font-weight:600;font-family:var(--sy-f-mono);padding:2px 6px;margin:6px;right:0;border-radius:3px;border:1px solid var(--sy-c-border);background-color:var(--sy-c-background);opacity:1;transition:opacity .2s ease}.searchbox input:focus+kbd{opacity:0}.searchform{display:flex;position:relative;align-items:center}.searchform input[name=q]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;padding:6px 12px;font-size:.92rem;font-family:var(--sy-f-text);border-radius:6px;outline:0;background:var(--sy-c-surface)}.searchform input[name=q]+button{position:absolute;font-size:.68rem;font-weight:600;font-family:var(--sy-f-text);padding:2px 6px;margin:6px;right:0;border-radius:3px;border:1px solid var(--sy-c-divider);background-color:var(--sy-c-background);opacity:1;transition:opacity .2s ease}.search .highlighted{background-color:var(--accent-a4)}#search-results{border-top:1px solid var(--sy-c-border)}#search-results h2{margin-top:2rem;margin-bottom:.725rem}#search-results .search-summary{font-weight:500;color:var(--sy-c-light)}#search-results ul.search{list-style-type:none;margin-left:0;padding-left:0;padding-top:.625rem;padding-bottom:2rem}#search-results ul.search>li{padding-left:0}#search-results ul.search>li+li{padding-top:1rem;border-top:1px solid var(--sy-c-divider)}#search-results ul.search li>a{font-weight:600}#search-results ul.search p.context{margin-top:.5rem;font-size:.875rem}.demo{border:1px solid var(--sy-c-border);border-radius:6px}.demo-code .highlight>pre{border-bottom-left-radius:0;border-bottom-right-radius:0}.demo-result{padding:1rem}.container.image-1,.container.video-1{border:.5rem solid var(--accent-a3);border-radius:6px}.container.image-1>img{border-radius:4px;margin:0}.container.video-1 iframe,.container.video-1 video{border-radius:4px;width:100%;margin:0}.container.image-2,.container.video-2{border:1px solid var(--sy-c-border);padding:1rem;border-radius:6px}.container.image-2>img,.container.video-2>video{margin:0}.container.buttons{margin:2rem 0 4.2rem}.container.buttons>p{display:flex;gap:1rem}.container.buttons a{display:inline-block;padding:0 2rem;line-height:2.6rem;border-radius:2.6rem;border:2px solid var(--sy-c-border);font-weight:600;background-color:var(--sy-c-surface);transition:all .2s ease}.container.buttons a:first-child{color:var(--accent-contrast);background-color:var(--accent-9);border-color:var(--accent-9)}.container.buttons a:hover{color:var(--sy-c-bold);border-color:var(--accent-9);background-color:var(--sy-c-background)}.container.rounded-image img{border-radius:99999px}#ethical-ad-placement .ethical-sidebar{position:relative;background-color:var(--sy-c-surface);border:none;padding:.8rem}#ethical-ad-placement .ethical-text a{color:var(--sy-c-text)!important}#ethical-ad-placement .ethical-text a:hover{color:var(--sy-c-link-hover)!important}.sy-main #ethical-ad-placement .ethical-sidebar{margin-left:0;max-width:380px}.sy-main #ethical-ad-placement .ethical-image-link{flex-shrink:0;margin-right:.4rem}.sy-main #ethical-ad-placement .ethical-content{display:flex}.sy-main #ethical-ad-placement .ethical-text{margin-top:0}.sy-main #ethical-ad-placement .ethical-callout{position:absolute;right:.4rem;bottom:.4rem}#carbonads{margin:1rem 0;position:relative;display:block;background-color:var(--sy-c-surface);border:none;border-radius:8px;padding:.8rem .8rem 1.6rem}#carbonads a{border:0;font-weight:400}#carbonads img{margin:0}.carbon-wrap{display:flex;align-items:center;justify-content:space-between;flex-direction:column}.carbon-text{display:block;margin:.5rem 0;line-height:1.42;font-size:.78rem;text-align:center}.carbon-text:hover{color:var(--sy-c-link-hover)}.carbon-poweredby{position:absolute;opacity:.68;right:.8rem;bottom:.5rem;font-size:.68rem;text-transform:uppercase}.carbon-poweredby:hover{text-decoration:underline}.sy-main #carbonads{max-width:380px;padding:1rem;margin-top:1.6rem}.sy-main .carbon-wrap{flex-direction:row;align-items:flex-start}.sy-main .carbon-text{text-align:left;margin-top:0;margin-left:1rem;font-size:.86rem}.bsa{margin:1rem 0}.bsa a{text-decoration:none;border-bottom:none}.bsa-container{display:flex;flex-flow:row nowrap;align-items:center;justify-content:space-between;padding:15px 20px;border-radius:6px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);text-decoration:none}.bsa-ad-via{text-align:right}.bsa-ad-via a{font-weight:300;font-size:10px;border:none;background:var(--gray-a3);padding:3px 10px;border-radius:2px}.bsa-main{display:flex;flex-grow:1;flex-flow:row nowrap;align-items:center;justify-content:center;margin:0 auto}.bsa-img{max-height:40px;margin-right:20px;line-height:0}.yue a.bsa-container .bsa-img{margin-top:0;margin-bottom:0}.bsa-details{display:flex;flex-flow:column nowrap;margin-right:20px}.bsa-tagline{margin-bottom:3px;font-weight:600;font-size:9px;line-height:1;letter-spacing:1.5px;text-transform:uppercase}.bsa-desc{max-width:600px;font-weight:400;font-size:12px;line-height:1.4;letter-spacing:1px}.bsa-cta{padding:10px 16px;transform:translateY(-1px);border-radius:3px;font-weight:600;font-size:10px;line-height:1;letter-spacing:1px;text-transform:uppercase;white-space:nowrap;transition:all .3s ease-in-out}@media (max-width:940px){.bsa-details{font-size:14px;margin-right:0}.bsa-cta{display:none}}@media (min-width:768px) and (max-width:820px){.bsa-img{display:none}}@media (max-width:480px){.bsa-img{display:none}}.repo-stats{margin-bottom:1rem;padding:.5rem;border:1px solid var(--sy-c-divider);border-radius:6px}.repo-stats:hover{background-color:var(--sy-c-surface)}.repo-stats-count{color:var(--sy-c-light)}.repo-stats strong{font-weight:500;font-family:var(--sy-f-mono);color:inherit}.edit-this-page{border-top:1px solid var(--sy-c-divider);margin:1rem 0;padding:.5rem 0;font-size:.8rem;font-weight:600}.repo-stats+.edit-this-page{border-top:0;margin-top:0;padding-top:0}.edit-this-page a{color:var(--sy-c-text)}.edit-this-page a:hover{color:var(--sy-c-link-hover)}.edit-this-page a:after{content:" →"}.back-to-top{display:none;align-items:center;gap:.25rem;position:fixed;z-index:10;bottom:68px;left:50%;transform:translateX(-50%);background:var(--sy-c-background);border-radius:2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 1px 0 hsla(220,9%,46%,.5);font-size:.8rem;padding:.4rem .8rem .4rem .6rem}.dark .back-to-top{background:var(--slate-2);box-shadow:0 .2rem .5rem hsla(0,0%,100%,.05),0 0 1px 0 rgba(154,164,184,.5)}.back-to-top:hover{color:var(--accent-contrast);background:var(--accent-9)}.back-to-top svg{height:1rem;width:1rem;fill:currentColor;display:inline-block}.back-to-top[data-visible=true]{display:flex}.icon-link,.icon-link span{display:inline-block}.icon-link span{vertical-align:middle}.icon-link .icon{padding:.1rem;border-radius:6px;border:1px solid var(--sy-c-border);margin-right:.4rem;opacity:.8}.icon-link svg{width:1.5rem;height:1.5rem}.icon-link:hover .icon{opacity:1}.announcement{position:sticky;top:0;left:0;width:100%;padding:.8rem 2rem;display:flex;align-items:center;color:var(--sy-c-banner,var(--accent-contrast));background-color:var(--sy-c-banner-bg,var(--accent-a11));z-index:20}.announcement a{text-decoration:underline}.announcement ::-moz-selection{color:var(--sy-c-banner,var(--accent-contrast))}.announcement ::selection{color:var(--sy-c-banner,var(--accent-contrast))}.announcement-inner{width:100%}.announcement-close{position:absolute;top:.8rem;right:1rem}.sy-head{position:sticky;top:var(--sy-s-banner-height);height:var(--sy-s-navbar-height);background-color:transparent;z-index:20}.sy-head-blur{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background-color:var(--sand-a1);box-shadow:0 0 var(--sy-c-background-contrast),0 2px 4px var(--gray-a1),0 1px 0 var(--sy-c-divider);z-index:-1}.sy-head-inner{display:flex;padding-left:max(env(safe-area-inset-right),1.5rem);padding-right:max(env(safe-area-inset-right),1rem);justify-content:space-between;align-items:center;height:var(--sy-s-navbar-height)}.sy-head-brand img{height:28px}.sy-head-brand .dark-logo,.sy-head-brand img+strong{display:none}.dark .sy-head-brand .dark-logo{display:inline}.dark .sy-head-brand .light-logo{display:none}.light .sy-head-brand .light-logo{display:inline}.light .sy-head-brand .dark-logo{display:none}.sy-head-links a,.sy-head-links button{padding:.5rem;font-size:.95rem;font-weight:500;white-space:nowrap}.sy-head-links .link i.external-link{font-size:68%;opacity:.6;color:var(--sy-c-light);margin-left:2px}.sy-head-links .link>ul a{display:block;white-space:normal}.sy-head-links .link>ul a:hover{background:var(--sy-c-surface);border-radius:6px}.sy-head-links .link>ul small{display:block;color:var(--sy-c-light);font-weight:400}.sy-head-socials,.sy-head-socials a{display:flex;align-items:center}.sy-head-socials a{padding:.5rem}.sy-head-actions button{height:var(--sy-s-navbar-height);padding:0 .5rem}@media (max-width:767px){body[data-expanded-headnav=true]{overflow:hidden}.sy-head-nav{display:none;position:fixed;top:var(--sy-s-offset-top);bottom:0;left:0;right:0;padding:4rem 1.8rem 0;width:100%;box-sizing:border-box;border-top:1px solid var(--sy-c-divider);background-color:var(--sy-c-background);overflow-y:auto}.sy-head-nav._expanded{display:block}.sy-head-links{margin-left:auto;margin-right:auto}.sy-head-links .link{margin:.5rem 0}.sy-head-links .link i.chevron{display:none}.sy-head-links .link>ul{margin:.5rem 0 .5rem 1rem}.sy-head-extra form.searchbox{position:absolute;top:1rem;left:1.8rem;right:1.8rem}.sy-head-extra{flex-direction:column;padding:2rem 0 1rem;width:100%}}@media (min-width:768px){.sy-head-inner{padding-right:max(env(safe-area-inset-right),1.5rem)}.sy-head-nav{display:flex;flex-grow:1;align-items:center;justify-content:space-between}.sy-head-links[data-align=right]{--head-links-justify-content:flex-end}.sy-head-links[data-align=center]{--head-links-justify-content:center}.sy-head-links{display:flex;flex-grow:1;white-space:nowrap;overflow:auto;padding:0 1rem;justify-content:var(--head-links-justify-content,flex-start)}.sy-head-links .link{display:inline-flex;align-items:center;height:var(--sy-s-navbar-height)}.sy-head-links a:hover{color:var(--sy-c-link-hover)}.sy-head-links .link:hover>a{background-color:var(--sy-c-surface);border-radius:6px}.sy-head-links .link i.chevron-down{color:var(--sy-c-light)}.sy-head-links .link>ul{position:absolute;height:0;visibility:hidden;background-color:var(--sy-c-background);top:var(--sy-s-navbar-height);margin-top:-10px;padding:15px;border-radius:6px;border:1px solid var(--sy-c-divider);box-shadow:var(--sy-dropdown-shadow);z-index:9;max-width:320px}.sy-head-links .link:hover>ul{height:auto;visibility:visible}.sy-head-links .link>ul>li{padding:.2rem 0}.sy-head-socials{margin-left:.5rem}}.sy-foot{border-top:1px solid var(--sy-c-foot-divider);padding-top:1.5rem;padding-bottom:1rem;color:var(--sy-c-foot-text);background-color:var(--sy-c-foot-background)}.sy-foot-inner{padding-left:max(env(safe-area-inset-right),1.5rem);padding-right:max(env(safe-area-inset-right),1.5rem)}.sy-foot-copyright{font-size:.84rem}.sy-foot-copyright a{font-weight:500}.sy-foot-copyright a:hover{text-decoration:underline}.sy-foot-socials a{font-size:1.4rem;color:var(--sy-c-foot-text)}.sy-foot-socials a+a{margin-left:.5rem}.sy-foot-socials a svg{display:inline-block;width:1.4rem;height:1.4rem}.sy-lside .sidebar-links{margin-bottom:2rem}@media (min-width:768px){.sy-lside .sy-lside-inner{top:var(--sy-s-offset-top)}.sy-lside .sy-scrollbar{max-height:calc(100vh - var(--sy-s-offset-top));overflow-x:hidden}}.yue *{scroll-margin-top:calc(var(--sy-s-offset-top) + 68px)}.sy-content,.sy-main{min-height:calc(100vh - var(--sy-s-offset-top) - 80px)}.sy-content{max-width:64rem}@media (max-width:767px){#lside{position:fixed;z-index:18;top:var(--sy-s-offset-top);left:0;bottom:0;width:300px;max-width:100%;height:calc(100vh - var(---sy-s-offset-top));overflow:auto;background:var(--sy-c-background);transform:translateX(-100%);transition:transform .2s ease}#lside._expanded{transform:translateX(0)}.lside-overlay{position:fixed;top:var(--sy-s-offset-top);left:0;width:0;height:0;background-color:var(--sy-c-overlay);opacity:0;transition:width 0 .25s,height 0 .25s,opacity .25s}#lside._expanded+.lside-overlay{width:100%;height:100%;opacity:1;z-index:16}}@media (max-width:1279px){.sy-rside{position:fixed;z-index:25;top:0;right:0;bottom:0;width:20rem;max-width:100%;padding-top:2rem;padding-bottom:1rem;overflow:auto;background:var(--sy-c-background);transform:translateX(110%);transition:transform .2s ease;box-shadow:0 0 var(--sy-c-background-contrast),-12px 0 16px var(--gray-a1)}#rside._expanded{transform:translateX(0)}.rside-close{position:absolute;top:16px;right:16px;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;font-size:1.4rem}.rside-overlay{position:fixed;top:0;left:0;width:0;height:0;background-color:var(--sy-c-overlay);opacity:0;transition:width 0 .25s,height 0 .25s,opacity .25s}#rside._expanded+.rside-overlay{width:100%;height:100%;opacity:1;z-index:22}}@media (min-width:768px){.sy-main{width:calc(100% - 18rem);max-width:52rem}}@media (min-width:1280px){.sy-main{width:calc(100% - 34rem);max-width:none}.sy-rside .sy-scrollbar{max-height:calc(100vh - var(--sy-s-offset-top) - env(safe-area-inset-bottom))}.yue *{scroll-margin-top:calc(var(--sy-s-offset-top) + 24px)}}.nav-languages button,.nav-versions button{cursor:pointer;padding:0;margin:0;background:transparent;border:0;white-space:nowrap}.nav-versions .chevron-down{color:var(--sy-c-light)}@media (max-width:767px){.nav-languages,.nav-versions{width:100%;background-color:var(--sy-c-surface);border-radius:6px;padding-bottom:.6rem;margin-bottom:1rem}.nav-languages button,.nav-versions button{padding:.5rem 1rem;font-weight:500;font-size:.76rem;color:var(--sy-c-light)}.nav-languages button>i,.nav-versions button>i{display:none}.nav-versions ul{padding:0 .6rem}.nav-versions li{padding:.2rem .4rem;display:inline-block}.nav-languages li{font-size:.94rem;padding:.32rem 1rem}}@media (min-width:768px){.nav-languages,.nav-versions{display:flex;align-items:center;position:relative;width:auto;height:var(--sy-s-navbar-height);background:transparent;color:var(--sy-c-text)}.nav-languages button,.nav-versions button{padding:0 .5rem;border-right:1px solid var(--gray-3)}.nav-languages-choices,.nav-versions-choices{position:absolute;visibility:hidden;top:3rem;right:-.6rem;min-width:120px;max-height:60vh;box-sizing:border-box;background-color:var(--sy-c-background);border-radius:6px;overflow-x:hidden;overflow-y:auto;padding:.8rem 1rem;box-shadow:var(--sy-dropdown-shadow)}.nav-languages:hover .nav-languages-choices,.nav-versions:hover .nav-versions-choices{visibility:visible}.nav-languages li,.nav-versions li{padding:.1rem 0}.nav-languages a,.nav-versions a{display:block;padding:.2rem .6rem;color:var(--sy-c-text);white-space:nowrap}.nav-languages a:hover,.nav-versions a:hover{color:var(--sy-c-link-hover);background:var(--sy-c-surface);border-radius:6px}}.sy-breadcrumbs{position:sticky;top:var(--sy-s-offset-top);background-color:var(--sy-c-background);padding:0 1.5rem;z-index:5}.sy-breadcrumbs-inner{padding:.8rem 0;border-bottom:1px solid var(--sy-c-divider)}.sy-breadcrumbs ol{display:flex;font-size:.94rem;white-space:nowrap;overflow:auto}.sy-breadcrumbs button{display:flex;align-items:center}.sy-breadcrumbs ol a{color:var(--sy-c-light)}.sy-breadcrumbs ol a:hover{color:var(--sy-c-bold)}.sy-breadcrumbs ol a+span{padding:0 .4rem;font-weight:300;color:var(--sy-c-light)}@media (min-width:1280px){.sy-breadcrumbs{display:none}}@media (min-width:768px){.sy-breadcrumbs-inner{padding:1.5rem 0 1rem}}.globaltoc{padding-bottom:20px}.globaltoc .caption{font-size:.86rem;font-weight:500;font-family:var(--sy-f-heading);color:var(--sy-c-light);text-transform:uppercase;letter-spacing:.4px;padding:.8rem 0 .4rem;border-top:1px solid var(--sy-c-divider)}.globaltoc>p.caption:first-of-type{padding-top:0;border-top:none}.globaltoc .caption+ul{margin-bottom:1.5rem}.globaltoc ul+.caption{margin-top:2.5rem}.globaltoc li{margin:.6rem 0}.globaltoc li>ul{margin-left:.6rem;font-size:.96rem}.globaltoc li.toctree-l1>ul{margin-left:.2rem;border-left:1px solid var(--gray-3)}.globaltoc li.toctree-l2{padding-left:.9rem;margin-left:-1px;border-left:1px solid transparent}.globaltoc li.toctree-l2.current{border-color:var(--sy-c-link)}.globaltoc>ul a.current{font-weight:500;color:var(--sy-c-link)}.globaltoc>ul a:hover{color:var(--sy-c-link-hover)}.globaltoc a.external:after{content:"";-webkit-mask:var(--lucide-external-link-url) no-repeat;mask:var(--lucide-external-link-url) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;width:.825rem;height:.825rem;margin-left:.2rem;display:inline-block;vertical-align:middle;font-style:normal;background-color:var(--sy-c-light)}.globaltoc li{position:relative}.globaltoc li>button{position:absolute;top:.2rem;right:0;display:flex;justify-content:center;align-items:center;width:1.2rem;height:1.2rem;border-radius:3px}.globaltoc li>button:hover{background-color:var(--sy-c-surface)}.globaltoc li._expand>ul,.globaltoc li.current>ul{display:block}.globaltoc li._collapse>ul,.globaltoc li>ul{display:none}.globaltoc li>button>i{transform:rotate(0deg);transition:transform .2s ease}.globaltoc li._expand>button>i,.globaltoc li.current>button>i{transform:rotate(90deg)}.globaltoc li._collapse>button>i{transform:rotate(0deg)}.sy-deprecated{padding:.8rem;font-size:.85rem;background-color:rgba(255,221,0,.1);border-radius:6px}.sy-deprecated a{color:var(--sy-c-link);text-decoration:underline}.sy-deprecated a:hover{color:var(--sy-c-link-hover)}.sy-rside-inner>div{margin-bottom:1rem}.sy-rside-inner>div>h3{font-size:.8rem;font-weight:500;letter-spacing:.4px;text-transform:uppercase;margin-bottom:1rem}html[lang=ja] .sy-rside-inner>div>h3,html[lang=ko] .sy-rside-inner>div>h3,html[lang=zh-TW] .sy-rside-inner>div>h3,html[lang=zh] .sy-rside-inner>div>h3{letter-spacing:0;font-size:.86rem;font-weight:600}.localtoc>ul li{margin-top:.36rem;margin-bottom:.36rem}.localtoc>ul li>a:hover{color:var(--sy-c-link-hover)}.localtoc>ul li.active>a{font-weight:500;color:var(--sy-c-link)}.localtoc>ul>li ul{padding-left:.8rem}.sy-rside ul.this-page-menu{margin-top:-.6rem}.sy-rside ul.this-page-menu a{font-size:.96rem}.sy-rside ul.this-page-menu a:hover{color:var(--sy-c-link-hover)}.navigation{gap:2rem;margin-top:2rem;padding-top:1rem;border-top:1px solid var(--sy-c-divider)}.navigation>div{width:100%}.navigation a{display:inline-flex;align-items:center}.navigation a:hover{color:var(--sy-c-link-hover)}.navigation-next{text-align:right}.navigation-next a{justify-content:end}.navigation .page-info{padding:0 8px}.navigation .page-info>span{font-size:.8rem;color:var(--sy-c-light)}:root{--readthedocs-search-font-family:var(--sy-f-text);--readthedocs-search-color:var(--sy-c-text);--readthedocs-search-input-background-color:var(--gray-3);--readthedocs-search-content-border-color:var(--gray-4);--readthedocs-search-content-background-color:var(--sy-c-background);--readthedocs-search-result-section-color:var(--sy-c-text);--readthedocs-search-result-section-subheading-color:var(--sy-c-heading);--readthedocs-search-result-section-highlight-color:var(--accent-9);--readthedocs-search-result-section-border-color:var(--sy-c-border)}.yue button.copybtn{align-items:center;justify-content:center;background-color:transparent;border:none;color:var(--syntax-text)}.yue button.copybtn>svg{width:1.4rem;height:1.4rem}.yue button.copybtn:hover{color:var(--syntax-meta)}.yue .highlight button.copybtn:hover,.yue button.copybtn:after{background-color:transparent}.yue button.copybtn:after{color:var(--syntax-text)}.yue button.copybtn.success{border-color:var(--green-a10);color:var(--green-a10)}.yue button.copybtn.success:after{color:var(--green-a10)}.yue{--sd-color-primary:var(--accent-a11);--sd-color-secondary:var(--gold-a11);--sd-color-success:var(--green-a11);--sd-color-info:var(--blue-a11);--sd-color-warning:var(--orange-a11);--sd-color-danger:var(--red-a11);--sd-color-light:var(--sand-a2);--sd-color-muted:var(--gray-8);--sd-color-dark:#212122;--sd-color-black:#000;--sd-color-white:#fff;--sd-color-primary-highlight:var(--accent-a8);--sd-color-secondary-highlight:var(--gold-a8);--sd-color-success-highlight:var(--green-a8);--sd-color-info-highlight:var(--blue-a8);--sd-color-warning-highlight:var(--orange-a8);--sd-color-danger-highlight:var(--red-a8);--sd-color-light-highlight:var(--gray-4);--sd-color-muted-highlight:var(--gray-11);--sd-color-dark-highlight:#121211;--sd-color-black-highlight:#000;--sd-color-white-highlight:#d9d9d9;--sd-color-primary-text:var(--accent-contrast);--sd-color-secondary-text:var(--gold-contrast);--sd-color-success-text:var(--green-contrast);--sd-color-info-text:var(--blue-contrast);--sd-color-warning-text:var(--orange-contrast);--sd-color-danger-text:var(--red-contrast);--sd-color-light-text:var(--sy-c-text);--sd-color-muted-text:#fff;--sd-color-dark-text:#fff;--sd-color-black-text:#fff;--sd-color-white-text:#212529;--sd-color-shadow:var(--gray-1);--sd-color-card-border:var(--sy-c-border);--sd-color-card-border-hover:var(--accent-a9);--sd-color-tabs-label-inactive:var(--sy-c-bold);--sd-color-tabs-label-active:var(--sd-color-primary);--sd-color-tabs-underline-active:var(--sd-color-primary);--sd-color-tabs-label-hover:var(--accent-9);--sd-color-tabs-underline-hover:var(--accent-9)}.yue .surface{--sd-color-card-text:var(--sy-c-light);--sd-color-card-border:transparent;--sd-color-card-background:var(--sy-c-surface)}.yue a.sd-badge,.yue a.sd-badge:hover{border-bottom:0}.yue .sd-badge{font-weight:600;border-radius:3px}.yue .sd-btn{border-color:var(--sy-c-border)}.yue .sd-tab-set>label{padding:1rem .25rem .5rem;font-size:.84rem;font-weight:500}.yue .sd-tab-set>label~label{margin-left:1rem}.yue .sd-tab-content{padding:0;box-shadow:0 -.0625rem var(--sy-c-divider)}.yue .sd-tab-content .code-block-caption,.yue .sd-tab-content .highlight pre{border-radius:0}.yue .sd-card-title{color:var(--sy-c-text)}.yue .sd-card-title>svg{position:relative;top:-1px;margin-right:.25rem}.yue .sd-card-hover:hover{transform:scale(1)}.yue .sd-card-hover:hover .sd-card-title{color:var(--sy-c-link-hover)}.yue .sd-card a,.yue .sd-card a:hover{border-bottom:0}.yue .surface .sd-card-body,.yue .surface .sd-card-footer,.yue .surface .sd-card-header{padding-left:1.5rem;padding-right:1.5rem}.yue .surface .sd-card-footer,.yue .surface .sd-card-header{border-color:var(--sy-c-border)}@media (print){.yue .sd-card{page-break-inside:avoid}}.yue a.sd-text-wrap:hover{border-bottom-width:1px}.sphinx-tabs [role=tablist]{border-color:var(--sy-c-divider)}.yue .sphinx-tabs-tab{color:var(--sy-c-text);line-height:inherit;padding:1rem .25rem .5rem;font-size:.84rem;font-weight:500;border:none;border-bottom:.125rem solid transparent}.yue .sphinx-tabs-tab:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.yue .sphinx-tabs-tab[aria-selected=true]{border:none;border-bottom:.125rem solid var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active);background-color:transparent}.yue .sphinx-tabs-tab+.sphinx-tabs-tab{margin-left:1rem}.yue .sphinx-tabs-panel{border:none;padding:0;margin:0;border-radius:0;background-color:transparent}.yue .sphinx-tabs-panel.code-tab{padding:0}.yue .sphinx-tabs-panel.code-tab .code-block-caption,.yue .sphinx-tabs-panel.code-tab .highlight pre{border-radius:0}.yue{--jp-widgets-input-border-color:var(--gray-5);--jp-widgets-input-focus-border-color:var(--gray-8);--jp-widgets-slider-active-handle-color:var(--gray-4);--jp-widgets-slider-handle-border-color:var(--sy-c-border)}.yue .jupyter_container{background-color:var(--sy-c-background);border:3px solid var(--sy-c-border);border-radius:6px;overflow:hidden;box-shadow:none}.sy-main .yue .jupyter_container div[class^=highlight]{padding:0}.yue .jupyter_container div.highlight{background-color:var(--syntax-pre-bg)}.yue .jupyter_container div.cell_input{background-color:var(--syntax-pre-bg);border:0;border-radius:0}.yue .jupyter_container div.code_cell pre{padding:0}.jupyter_container div.cell_output .output,.jupyter_container div.cell_output .stderr,.jupyter_container div.cell_output .widget-subarea{padding:.5rem}.jupyter_container div.cell_output .stderr .stderr{padding:0}.jupyter-widget-hslider .slider-container,.widget-hslider .slider-container{display:flex;align-items:center}.jupyter-widget-slider .noUi-target,.widget-slider .noUi-target{width:100%}.jupyter_container div.code_cell .highlight>pre{padding:1rem}.jupyter_container div.code_cell .highlight .hll{margin-left:-1rem;margin-right:-1rem;padding:0 1rem}.jupyter_container div.code_cell .highlight .linenos{margin-right:.8rem}.yue .jupyter_container .stderr{color:var(--red-a11);background-color:var(--red-a3)}.yue .jupyter_container .stderr .stderr{background-color:transparent}.nbinput .highlight{--radius:1px}.yue div.nblast.container{padding-top:5px}.yue div.nbinput.container div.input_area{border-color:var(--sy-c-border)}.yue div.nboutput.container div.output_area.stderr{color:var(--red-a11);background-color:var(--red-a3)}.yue div.nboutput.container div.output_area>.math-wrapper>div.math{padding-top:0}.yue .jp-RenderedHTMLCommon thead,.yue div.rendered_html thead{border-color:var(--sy-c-border)}.yue .jp-RenderedHTMLCommon tbody tr,.yue div.rendered_html tbody tr{color:var(--sy-c-text)}.yue .jp-RenderedHTMLCommon tbody tr:nth-child(odd),.yue div.rendered_html tbody tr:nth-child(odd){background-color:var(--sy-c-surface)}.yue .jp-RenderedHTMLCommon tbody tr:hover,.yue div.rendered_html tbody tr:hover{background-color:var(--color-surface-accent)}.yue{--sg-text-color:var(--sy-c-text);--sg-background-color:var(--sy-c-background);--sg-code-background-color:var(--syntax-pre-bg);--sg-tr-hover-color:var(--accent-a3);--sg-tr-odd-color:var(--sy-c-surface);--sg-tooltip-foreground:var(--sy-c-background-contrast);--sg-tooltip-background:var(--sy-c-background);--sg-tooltip-border:var(--gray-7) transparent;--sg-thumb-box-shadow-color:var(--gray-a4);--sg-thumb-hover-border:var(--accent-a9);--sg-script-out:var(--sy-c-light);--sg-script-pre:var(--syntax-pre-bg);--sg-pytb-foreground:var(--syntax-text);--sg-pytb-background:var(--red-a2);--sg-pytb-border-color:var(--red-a8);--sg-download-a-background-color:var(--accent-a3);--sg-download-a-background-image:none;--sg-download-a-border-color:1px solid var(--accent-a3);--sg-download-a-color:var(--accent-a11);--sg-download-a-hover-background-color:var(--accent-a4);--sg-download-a-hover-box-shadow-1:transparent;--sg-download-a-hover-box-shadow-2:transparent}.yue .sphx-glr-download a,.yue .sphx-glr-download a:hover,.yue .sphx-glr-thumbnails a{border-bottom:0}.yue p.sphx-glr-signature a{border-radius:0;border-bottom:0;text-decoration:underline}.yue p.sphx-glr-signature a:hover{color:var(--sy-c-link-hover)}.yue .sphx-glr-footer img{display:inline;margin:0}html.dark,html.light{--docsearch-primary-color:var(--accent-9);--docsearch-text-color:var(--sy-c-text);--docsearch-modal-background:var(--sy-c-background);--docsearch-footer-background:var(--sy-c-surface);--docsearch-searchbox-background:var(--sy-c-surface);--docsearch-searchbox-focus-background:var(--sy-c-background);--docsearch-muted-color:var(--sy-c-light);--docsearch-hit-color:var(--sy-c-text);--docsearch-hit-background:var(--sy-c-surface);--docsearch-hit-active-color:var(--accent-contrast);--docsearch-hit-shadow:inset 0 0 1px 0 var(--gray-a11);--docsearch-container-background:var(--sy-c-overlay)}html.light{--docsearch-key-gradient:linear-gradient(-225deg,#e6e6e6,#f8f8f8);--docsearch-key-shadow:inset 0 -2px #dbdbdb,inset 0 0 1px 1px #fff,0 1px 2px 1px #50505066}html.dark{--docsearch-key-gradient:linear-gradient(-225deg,#353434,#141414);--docsearch-key-shadow:inset 0 -2px #373737,inset 0 0 1px 1px #222,0 1px 2px 1px #000;--docsearch-footer-shadow:0 -1px 0 0 #373737,0 -3px 6px 0 #141414;--docsearch-modal-shadow:inset 1px 1px 0 0 #373737,0 3px 8px 0 #141414}#docsearch .DocSearch-Button{border-radius:6px}#docsearch .DocSearch-Button-Key,#docsearch .DocSearch-Button-Placeholder{font-size:.825rem}#docsearch .DocSearch-Button-Keys,#docsearch .DocSearch-Button-Placeholder{display:flex!important}#docsearch .DocSearch-Search-Icon{width:.875rem!important;height:.875rem!important}@media (max-width:767px){#docsearch{position:absolute;top:1rem;left:1.8rem;right:1.8rem}#docsearch .DocSearch-Button{margin-left:0;width:100%}}dl.sqla dt{color:var(--sig-name);margin-bottom:.5rem}dl.sqla dt>em{font-weight:400;font-style:normal;color:var(--sig-param)}dl.sqla dd>p.rubric{margin-top:1.5rem;text-transform:uppercase;font-size:.76rem}dl.sqla dd>p.rubric+.table-wrapper{margin-top:.75rem;border-left:0;border-right:0;border-radius:0}dl.sqla p.rubric+.table-wrapper td,dl.sqla p.rubric+.table-wrapper th{border-left:0;border-right:0;background-color:transparent}dl.sqla p.rubric+.table-wrapper td>p{margin:0}dl.sqla p.rubric+.table-wrapper tr.row-odd{background-color:transparent}dl.sqla p.rubric+.table-wrapper tr.row-even{background-color:var(--yue-c-row-background)}.yue details.toggle-details{background-color:var(--slate-a2);padding:0 1rem;border-radius:.2em}.yue details.toggle-details summary{border-left-color:var(--accent-a9);background-color:var(--gray-a2);margin-left:-1rem;margin-right:-1rem}.yue details.toggle-details[open] summary{border-radius:.2em .2em 0 0}.yue .toggle-details__container{margin-top:0;margin-bottom:0;padding-top:1rem;padding-bottom:1rem}.yue .toggle-details__container :first-child{margin-top:0}.yue .toggle-details__container :last-child{margin-bottom:0}.yue .admonition.toggle-hidden .admonition-title~*{margin-bottom:0!important}.sphinx-contributors .sphinx-contributors_contributor__contributions,.sphinx-contributors .sphinx-contributors_contributor__username{margin:0}.sphinx-contributors.sphinx-contributors--avatars .sphinx-contributors_list{justify-content:flex-start;padding-left:0;gap:1rem}.sphinx-contributors--avatars .sphinx-contributors_contributor__username{margin-top:.5rem}.sphinx-contributors--avatars .sphinx-contributors_contributor__contributions{font-size:.875rem}.sphinx-contributors--avatars .sphinx-contributors_contributor__contributions:before{content:"";padding:0}.yue{--xr-font-color0:var(--sy-c-heading);--xr-font-color2:var(--sy-c-text);--xr-font-color3:var(--sy-c-light);--xr-border-color:var(--sy-c-border);--xr-disabled-color:var(--gray-a6);--xr-background-color:var(--sy-c-background);--xr-background-color-row-even:var(--sy-c-background);--xr-background-color-row-odd:var(--gray-2)}.yue .xr-array-data pre{margin:0}@media not all and (min-width:640px){.max-sm\:max-w-full{max-width:100%}}@media (min-width:768px){.md\:sticky{position:sticky}.md\:inline{display:inline}.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-72{width:18rem}.md\:shrink-0{flex-shrink:0}}@media (min-width:1280px){.xl\:sticky{position:sticky}.xl\:top-16{top:4rem}.xl\:hidden{display:none}.xl\:px-12{padding-left:3rem;padding-right:3rem}.xl\:pl-0{padding-left:0}}@media print{.print\:hidden{display:none}.print\:pt-6{padding-top:1.5rem}} \ No newline at end of file diff --git a/_static/shibuya.js b/_static/shibuya.js new file mode 100644 index 0000000..214ac3e --- /dev/null +++ b/_static/shibuya.js @@ -0,0 +1,41 @@ +(()=>{var _t=Object.freeze({left:0,top:0,width:16,height:16}),M=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),O=Object.freeze({..._t,...M}),W=Object.freeze({...O,body:"",hidden:!1}),Xt=Object.freeze({width:null,height:null}),kt=Object.freeze({...Xt,...M});function Zt(t,e=0){let n=t.replace(/^-?[0-9.]*/,"");function s(o){for(;o<0;)o+=4;return o%4}if(n===""){let o=parseInt(t);return isNaN(o)?0:s(o)}else if(n!==t){let o=0;switch(n){case"%":o=25;break;case"deg":o=90}if(o){let i=parseFloat(t.slice(0,t.length-n.length));return isNaN(i)?0:(i=i/o,i%1===0?s(i):0)}}return e}var te=/[\s,]+/;function ee(t,e){e.split(te).forEach(n=>{switch(n.trim()){case"horizontal":t.hFlip=!0;break;case"vertical":t.vFlip=!0;break}})}var Lt={...kt,preserveAspectRatio:""};function ut(t){let e={...Lt},n=(s,o)=>t.getAttribute(s)||o;return e.width=n("width",null),e.height=n("height",null),e.rotate=Zt(n("rotate","")),ee(e,n("flip","")),e.preserveAspectRatio=n("preserveAspectRatio",n("preserveaspectratio","")),e}function ne(t,e){for(let n in Lt)if(t[n]!==e[n])return!0;return!1}var Et=/^[a-z0-9]+(-[a-z0-9]+)*$/,j=(t,e,n,s="")=>{let o=t.split(":");if(t.slice(0,1)==="@"){if(o.length<2||o.length>3)return null;s=o.shift().slice(1)}if(o.length>3||!o.length)return null;if(o.length>1){let r=o.pop(),l=o.pop(),a={provider:o.length>0?o[0]:s,prefix:l,name:r};return e&&!N(a)?null:a}let i=o[0],c=i.split("-");if(c.length>1){let r={provider:s,prefix:c.shift(),name:c.join("-")};return e&&!N(r)?null:r}if(n&&s===""){let r={provider:s,prefix:"",name:i};return e&&!N(r,n)?null:r}return null},N=(t,e)=>t?!!((e&&t.prefix===""||t.prefix)&&t.name):!1;function oe(t,e){let n={};!t.hFlip!=!e.hFlip&&(n.hFlip=!0),!t.vFlip!=!e.vFlip&&(n.vFlip=!0);let s=((t.rotate||0)+(e.rotate||0))%4;return s&&(n.rotate=s),n}function dt(t,e){let n=oe(t,e);for(let s in W)s in M?s in t&&!(s in n)&&(n[s]=M[s]):s in e?n[s]=e[s]:s in t&&(n[s]=t[s]);return n}function se(t,e){let n=t.icons,s=t.aliases||Object.create(null),o=Object.create(null);function i(c){if(n[c])return o[c]=[];if(!(c in o)){o[c]=null;let r=s[c]&&s[c].parent,l=r&&i(r);l&&(o[c]=[r].concat(l))}return o[c]}return Object.keys(n).concat(Object.keys(s)).forEach(i),o}function ie(t,e,n){let s=t.icons,o=t.aliases||Object.create(null),i={};function c(r){i=dt(s[r]||o[r],i)}return c(e),n.forEach(c),dt(t,i)}function Tt(t,e){let n=[];if(typeof t!="object"||typeof t.icons!="object")return n;t.not_found instanceof Array&&t.not_found.forEach(o=>{e(o,null),n.push(o)});let s=se(t);for(let o in s){let i=s[o];i&&(e(o,ie(t,o,i)),n.push(o))}return n}var re={provider:"",aliases:{},not_found:{},..._t};function J(t,e){for(let n in e)if(n in t&&typeof t[n]!=typeof e[n])return!1;return!0}function Ot(t){if(typeof t!="object"||t===null)return null;let e=t;if(typeof e.prefix!="string"||!t.icons||typeof t.icons!="object"||!J(t,re))return null;let n=e.icons;for(let o in n){let i=n[o];if(!o||typeof i.body!="string"||!J(i,W))return null}let s=e.aliases||Object.create(null);for(let o in s){let i=s[o],c=i.parent;if(!o||typeof c!="string"||!n[c]&&!s[c]||!J(i,W))return null}return e}var q=Object.create(null);function ce(t,e){return{provider:t,prefix:e,icons:Object.create(null),missing:new Set}}function v(t,e){let n=q[t]||(q[t]=Object.create(null));return n[e]||(n[e]=ce(t,e))}function jt(t,e){return Ot(e)?Tt(e,(n,s)=>{s?t.icons[n]=s:t.missing.add(n)}):[]}function le(t,e,n){try{if(typeof n.body=="string")return t.icons[e]={...n},!0}catch{}return!1}function ae(t,e){let n=[];return(typeof t=="string"?[t]:Object.keys(q)).forEach(o=>{(typeof o=="string"&&typeof e=="string"?[e]:Object.keys(q[o]||{})).forEach(c=>{let r=v(o,c);n=n.concat(Object.keys(r.icons).map(l=>(o!==""?"@"+o+":":"")+c+":"+l))})}),n}var E=!1;function Pt(t){return typeof t=="boolean"&&(E=t),E}function T(t){let e=typeof t=="string"?j(t,!0,E):t;if(e){let n=v(e.provider,e.prefix),s=e.name;return n.icons[s]||(n.missing.has(s)?null:void 0)}}function Nt(t,e){let n=j(t,!0,E);if(!n)return!1;let s=v(n.provider,n.prefix);return e?le(s,n.name,e):(s.missing.add(n.name),!0)}function ft(t,e){if(typeof t!="object")return!1;if(typeof e!="string"&&(e=t.provider||""),E&&!e&&!t.prefix){let o=!1;return Ot(t)&&(t.prefix="",Tt(t,(i,c)=>{Nt(i,c)&&(o=!0)})),o}let n=t.prefix;if(!N({provider:e,prefix:n,name:"a"}))return!1;let s=v(e,n);return!!jt(s,t)}function ht(t){return!!T(t)}function ue(t){let e=T(t);return e&&{...O,...e}}function de(t){let e={loaded:[],missing:[],pending:[]},n=Object.create(null);t.sort((o,i)=>o.provider!==i.provider?o.provider.localeCompare(i.provider):o.prefix!==i.prefix?o.prefix.localeCompare(i.prefix):o.name.localeCompare(i.name));let s={provider:"",prefix:"",name:""};return t.forEach(o=>{if(s.name===o.name&&s.prefix===o.prefix&&s.provider===o.provider)return;s=o;let i=o.provider,c=o.prefix,r=o.name,l=n[i]||(n[i]=Object.create(null)),a=l[c]||(l[c]=v(i,c)),u;r in a.icons?u=e.loaded:c===""||a.missing.has(r)?u=e.missing:u=e.pending;let d={provider:i,prefix:c,name:r};u.push(d)}),e}function Rt(t,e){t.forEach(n=>{let s=n.loaderCallbacks;s&&(n.loaderCallbacks=s.filter(o=>o.id!==e))})}function fe(t){t.pendingCallbacksFlag||(t.pendingCallbacksFlag=!0,setTimeout(()=>{t.pendingCallbacksFlag=!1;let e=t.loaderCallbacks?t.loaderCallbacks.slice(0):[];if(!e.length)return;let n=!1,s=t.provider,o=t.prefix;e.forEach(i=>{let c=i.icons,r=c.pending.length;c.pending=c.pending.filter(l=>{if(l.prefix!==o)return!0;let a=l.name;if(t.icons[a])c.loaded.push({provider:s,prefix:o,name:a});else if(t.missing.has(a))c.missing.push({provider:s,prefix:o,name:a});else return n=!0,!0;return!1}),c.pending.length!==r&&(n||Rt([t],i.id),i.callback(c.loaded.slice(0),c.missing.slice(0),c.pending.slice(0),i.abort))})}))}var he=0;function pe(t,e,n){let s=he++,o=Rt.bind(null,n,s);if(!e.pending.length)return o;let i={id:s,icons:e,callback:t,abort:o};return n.forEach(c=>{(c.loaderCallbacks||(c.loaderCallbacks=[])).push(i)}),o}var X=Object.create(null);function pt(t,e){X[t]=e}function Z(t){return X[t]||X[""]}function ge(t,e=!0,n=!1){let s=[];return t.forEach(o=>{let i=typeof o=="string"?j(o,e,n):o;i&&s.push(i)}),s}var me={resources:[],index:0,timeout:2e3,rotate:750,random:!1,dataAfterTimeout:!1};function be(t,e,n,s){let o=t.resources.length,i=t.random?Math.floor(Math.random()*o):t.index,c;if(t.random){let h=t.resources.slice(0);for(c=[];h.length>1;){let b=Math.floor(Math.random()*h.length);c.push(h[b]),h=h.slice(0,b).concat(h.slice(b+1))}c=c.concat(h)}else c=t.resources.slice(i).concat(t.resources.slice(0,i));let r=Date.now(),l="pending",a=0,u,d=null,f=[],p=[];typeof s=="function"&&p.push(s);function I(){d&&(clearTimeout(d),d=null)}function x(){l==="pending"&&(l="aborted"),I(),f.forEach(h=>{h.status==="pending"&&(h.status="aborted")}),f=[]}function g(h,b){b&&(p=[]),typeof h=="function"&&p.push(h)}function z(){return{startTime:r,payload:e,status:l,queriesSent:a,queriesPending:f.length,subscribe:g,abort:x}}function w(){l="failed",p.forEach(h=>{h(void 0,u)})}function y(){f.forEach(h=>{h.status==="pending"&&(h.status="aborted")}),f=[]}function m(h,b,C){let P=b!=="success";switch(f=f.filter(S=>S!==h),l){case"pending":break;case"failed":if(P||!t.dataAfterTimeout)return;break;default:return}if(b==="abort"){u=C,w();return}if(P){u=C,f.length||(c.length?G():w());return}if(I(),y(),!t.random){let S=t.resources.indexOf(h.resource);S!==-1&&S!==t.index&&(t.index=S)}l="completed",p.forEach(S=>{S(C)})}function G(){if(l!=="pending")return;I();let h=c.shift();if(h===void 0){if(f.length){d=setTimeout(()=>{I(),l==="pending"&&(y(),w())},t.timeout);return}w();return}let b={status:"pending",resource:h,callback:(C,P)=>{m(b,C,P)}};f.push(b),a++,d=setTimeout(G,t.rotate),n(h,e,b.callback)}return setTimeout(G),z}function Mt(t){let e={...me,...t},n=[];function s(){n=n.filter(r=>r().status==="pending")}function o(r,l,a){let u=be(e,r,l,(d,f)=>{s(),a&&a(d,f)});return n.push(u),u}function i(r){return n.find(l=>r(l))||null}return{query:o,find:i,setIndex:r=>{e.index=r},getIndex:()=>e.index,cleanup:s}}function ot(t){let e;if(typeof t.resources=="string")e=[t.resources];else if(e=t.resources,!(e instanceof Array)||!e.length)return null;return{resources:e,path:t.path||"/",maxURL:t.maxURL||500,rotate:t.rotate||750,timeout:t.timeout||5e3,random:t.random===!0,index:t.index||0,dataAfterTimeout:t.dataAfterTimeout!==!1}}var $=Object.create(null),_=["https://api.simplesvg.com","https://api.unisvg.com"],R=[];for(;_.length>0;)_.length===1||Math.random()>.5?R.push(_.shift()):R.push(_.pop());$[""]=ot({resources:["https://api.iconify.design"].concat(R)});function gt(t,e){let n=ot(e);return n===null?!1:($[t]=n,!0)}function D(t){return $[t]}function ye(){return Object.keys($)}function mt(){}var Y=Object.create(null);function ve(t){if(!Y[t]){let e=D(t);if(!e)return;let n=Mt(e),s={config:e,redundancy:n};Y[t]=s}return Y[t]}function qt(t,e,n){let s,o;if(typeof t=="string"){let i=Z(t);if(!i)return n(void 0,424),mt;o=i.send;let c=ve(t);c&&(s=c.redundancy)}else{let i=ot(t);if(i){s=Mt(i);let c=t.resources?t.resources[0]:"",r=Z(c);r&&(o=r.send)}}return!s||!o?(n(void 0,424),mt):s.query(e,o,n)().abort}function bt(){}function Ie(t){t.iconsLoaderFlag||(t.iconsLoaderFlag=!0,setTimeout(()=>{t.iconsLoaderFlag=!1,fe(t)}))}function xe(t){let e=[],n=[];return t.forEach(s=>{(s.match(Et)?e:n).push(s)}),{valid:e,invalid:n}}function k(t,e,n){function s(){let o=t.pendingIcons;e.forEach(i=>{o&&o.delete(i),t.icons[i]||t.missing.add(i)})}if(n&&typeof n=="object")try{if(!jt(t,n).length){s();return}}catch(o){console.error(o)}s(),Ie(t)}function yt(t,e){t instanceof Promise?t.then(n=>{e(n)}).catch(()=>{e(null)}):e(t)}function we(t,e){t.iconsToLoad?t.iconsToLoad=t.iconsToLoad.concat(e).sort():t.iconsToLoad=e,t.iconsQueueFlag||(t.iconsQueueFlag=!0,setTimeout(()=>{t.iconsQueueFlag=!1;let{provider:n,prefix:s}=t,o=t.iconsToLoad;if(delete t.iconsToLoad,!o||!o.length)return;let i=t.loadIcon;if(t.loadIcons&&(o.length>1||!i)){yt(t.loadIcons(o,s,n),u=>{k(t,o,u)});return}if(i){o.forEach(u=>{let d=i(u,s,n);yt(d,f=>{let p=f?{prefix:s,icons:{[u]:f}}:null;k(t,[u],p)})});return}let{valid:c,invalid:r}=xe(o);if(r.length&&k(t,r,null),!c.length)return;let l=s.match(Et)?Z(n):null;if(!l){k(t,c,null);return}l.prepare(n,s,c).forEach(u=>{qt(n,u,d=>{k(t,u.icons,d)})})}))}var st=(t,e)=>{let n=ge(t,!0,Pt()),s=de(n);if(!s.pending.length){let l=!0;return e&&setTimeout(()=>{l&&e(s.loaded,s.missing,s.pending,bt)}),()=>{l=!1}}let o=Object.create(null),i=[],c,r;return s.pending.forEach(l=>{let{provider:a,prefix:u}=l;if(u===r&&a===c)return;c=a,r=u,i.push(v(a,u));let d=o[a]||(o[a]=Object.create(null));d[u]||(d[u]=[])}),s.pending.forEach(l=>{let{provider:a,prefix:u,name:d}=l,f=v(a,u),p=f.pendingIcons||(f.pendingIcons=new Set);p.has(d)||(p.add(d),o[a][u].push(d))}),i.forEach(l=>{let a=o[l.provider][l.prefix];a.length&&we(l,a)}),e?pe(e,s,i):bt},Se=t=>new Promise((e,n)=>{let s=typeof t=="string"?j(t,!0):t;if(!s){n(t);return}st([s||t],o=>{if(o.length&&s){let i=T(s);if(i){e({...O,...i});return}}n(t)})});function vt(t){try{let e=typeof t=="string"?JSON.parse(t):t;if(typeof e.body=="string")return{...e}}catch{}}function Ae(t,e){if(typeof t=="object")return{data:vt(t),value:t};if(typeof t!="string")return{value:t};if(t.includes("{")){let i=vt(t);if(i)return{data:i,value:t}}let n=j(t,!0,!0);if(!n)return{value:t};let s=T(n);if(s!==void 0||!n.prefix)return{value:t,name:n,data:s};let o=st([n],()=>e(t,n,T(n)));return{value:t,name:n,loading:o}}var Ft=!1;try{Ft=navigator.vendor.indexOf("Apple")===0}catch{}function Ce(t,e){switch(e){case"svg":case"bg":case"mask":return e}return e!=="style"&&(Ft||t.indexOf("=0;){let o=t.indexOf(">",s),i=t.indexOf("",i);if(c===-1)break;n+=t.slice(o+1,i).trim(),t=t.slice(0,s).trim()+t.slice(c+1)}return{defs:n,content:t}}function Ee(t,e){return t?""+t+""+e:e}function Te(t,e,n){let s=Le(t);return Ee(s.defs,e+s.content+n)}var Oe=t=>t==="unset"||t==="undefined"||t==="none";function $t(t,e){let n={...O,...t},s={...kt,...e},o={left:n.left,top:n.top,width:n.width,height:n.height},i=n.body;[n,s].forEach(x=>{let g=[],z=x.hFlip,w=x.vFlip,y=x.rotate;z?w?y+=2:(g.push("translate("+(o.width+o.left).toString()+" "+(0-o.top).toString()+")"),g.push("scale(-1 1)"),o.top=o.left=0):w&&(g.push("translate("+(0-o.left).toString()+" "+(o.height+o.top).toString()+")"),g.push("scale(1 -1)"),o.top=o.left=0);let m;switch(y<0&&(y-=Math.floor(y/4)*4),y=y%4,y){case 1:m=o.height/2+o.top,g.unshift("rotate(90 "+m.toString()+" "+m.toString()+")");break;case 2:g.unshift("rotate(180 "+(o.width/2+o.left).toString()+" "+(o.height/2+o.top).toString()+")");break;case 3:m=o.width/2+o.left,g.unshift("rotate(-90 "+m.toString()+" "+m.toString()+")");break}y%2===1&&(o.left!==o.top&&(m=o.left,o.left=o.top,o.top=m),o.width!==o.height&&(m=o.width,o.width=o.height,o.height=m)),g.length&&(i=Te(i,'',""))});let c=s.width,r=s.height,l=o.width,a=o.height,u,d;c===null?(d=r===null?"1em":r==="auto"?a:r,u=tt(d,l/a)):(u=c==="auto"?l:c,d=r===null?tt(u,a/l):r==="auto"?a:r);let f={},p=(x,g)=>{Oe(g)||(f[x]=g.toString())};p("width",u),p("height",d);let I=[o.left,o.top,l,a];return f.viewBox=I.join(" "),{attributes:f,viewBox:I,body:i}}function it(t,e){let n=t.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let s in e)n+=" "+s+'="'+e[s]+'"';return'"+t+""}function je(t){return t.replace(/"/g,"'").replace(/%/g,"%25").replace(/#/g,"%23").replace(//g,"%3E").replace(/\s+/g," ")}function Pe(t){return"data:image/svg+xml,"+je(t)}function Dt(t){return'url("'+Pe(t)+'")'}var Ne=()=>{let t;try{if(t=fetch,typeof t=="function")return t}catch{}},F=Ne();function Re(t){F=t}function Me(){return F}function qe(t,e){let n=D(t);if(!n)return 0;let s;if(!n.maxURL)s=0;else{let o=0;n.resources.forEach(c=>{o=Math.max(o,c.length)});let i=e+".json?icons=";s=n.maxURL-o-n.path.length-i.length}return s}function Fe(t){return t===404}var $e=(t,e,n)=>{let s=[],o=qe(t,e),i="icons",c={type:i,provider:t,prefix:e,icons:[]},r=0;return n.forEach((l,a)=>{r+=l.length+1,r>=o&&a>0&&(s.push(c),c={type:i,provider:t,prefix:e,icons:[]},r=l.length),c.icons.push(l)}),s.push(c),s};function De(t){if(typeof t=="string"){let e=D(t);if(e)return e.path}return"/"}var He=(t,e,n)=>{if(!F){n("abort",424);return}let s=De(e.provider);switch(e.type){case"icons":{let i=e.prefix,r=e.icons.join(","),l=new URLSearchParams({icons:r});s+=i+".json?"+l.toString();break}case"custom":{let i=e.uri;s+=i.slice(0,1)==="/"?i.slice(1):i;break}default:n("abort",400);return}let o=503;F(t+s).then(i=>{let c=i.status;if(c!==200){setTimeout(()=>{n(Fe(c)?"abort":"next",c)});return}return o=501,i.json()}).then(i=>{if(typeof i!="object"||i===null){setTimeout(()=>{i===404?n("abort",i):n("next",o)});return}setTimeout(()=>{n("success",i)})}).catch(()=>{n("next",o)})},Qe={prepare:$e,send:He};function Ue(t,e,n){v(n||"",e).loadIcons=t}function Be(t,e,n){v(n||"",e).loadIcon=t}var K="data-style",Ht="";function Ve(t){Ht=t}function It(t,e){let n=Array.from(t.childNodes).find(s=>s.hasAttribute&&s.hasAttribute(K));n||(n=document.createElement("style"),n.setAttribute(K,K),t.appendChild(n)),n.textContent=":host{display:inline-block;vertical-align:"+(e?"-0.125em":"0")+"}span,svg{display:block;margin:auto}"+Ht}function Qt(){pt("",Qe),Pt(!0);let t;try{t=window}catch{}if(t){if(t.IconifyPreload!==void 0){let n=t.IconifyPreload,s="Invalid IconifyPreload syntax.";typeof n=="object"&&n!==null&&(n instanceof Array?n:[n]).forEach(o=>{try{(typeof o!="object"||o===null||o instanceof Array||typeof o.icons!="object"||typeof o.prefix!="string"||!ft(o))&&console.error(s)}catch{console.error(s)}})}if(t.IconifyProviders!==void 0){let n=t.IconifyProviders;if(typeof n=="object"&&n!==null)for(let s in n){let o="IconifyProviders["+s+"] is invalid.";try{let i=n[s];if(typeof i!="object"||!i||i.resources===void 0)continue;gt(s,i)||console.error(o)}catch{console.error(o)}}}}return{enableCache:n=>{},disableCache:n=>{},iconLoaded:ht,iconExists:ht,getIcon:ue,listIcons:ae,addIcon:Nt,addCollection:ft,calculateSize:tt,buildIcon:$t,iconToHTML:it,svgToURL:Dt,loadIcons:st,loadIcon:Se,addAPIProvider:gt,setCustomIconLoader:Be,setCustomIconsLoader:Ue,appendCustomStyle:Ve,_api:{getAPIConfig:D,setAPIModule:pt,sendAPIQuery:qt,setFetch:Re,getFetch:Me,listAPIProviders:ye}}}var et={"background-color":"currentColor"},Ut={"background-color":"transparent"},xt={image:"var(--svg)",repeat:"no-repeat",size:"100% 100%"},wt={"-webkit-mask":et,mask:et,background:Ut};for(let t in wt){let e=wt[t];for(let n in xt)e[t+"-"+n]=xt[n]}function St(t){return t?t+(t.match(/^[-0-9.]+$/)?"px":""):"inherit"}function ze(t,e,n){let s=document.createElement("span"),o=t.body;o.indexOf("");let i=t.attributes,c=it(o,{...i,width:e.width+"",height:e.height+""}),r=Dt(c),l=s.style,a={"--svg":r,width:St(i.width),height:St(i.height),...n?et:Ut};for(let u in a)l.setProperty(u,a[u]);return s}var L;function Ge(){try{L=window.trustedTypes.createPolicy("iconify",{createHTML:t=>t})}catch{L=null}}function Je(t){return L===void 0&&Ge(),L?L.createHTML(t):t}function Ye(t){let e=document.createElement("span"),n=t.attributes,s="";n.width||(s="width: inherit;"),n.height||(s+="height: inherit;"),s&&(n.style=s);let o=it(t.body,n);return e.innerHTML=Je(o),e.firstChild}function nt(t){return Array.from(t.childNodes).find(e=>{let n=e.tagName&&e.tagName.toUpperCase();return n==="SPAN"||n==="SVG"})}function At(t,e){let n=e.icon.data,s=e.customisations,o=$t(n,s);s.preserveAspectRatio&&(o.attributes.preserveAspectRatio=s.preserveAspectRatio);let i=e.renderedMode,c;switch(i){case"svg":c=Ye(o);break;default:c=ze(o,{...O,...n},i==="mask")}let r=nt(t);r?c.tagName==="SPAN"&&r.tagName===c.tagName?r.setAttribute("style",c.getAttribute("style")):t.replaceChild(c,r):t.appendChild(c)}function Ct(t,e,n){let s=n&&(n.rendered?n:n.lastRender);return{rendered:!1,inline:e,icon:t,lastRender:s}}function Ke(t="iconify-icon"){let e,n;try{e=window.customElements,n=window.HTMLElement}catch{return}if(!e||!n)return;let s=e.get(t);if(s)return s;let o=["icon","mode","inline","noobserver","width","height","rotate","flip"],i=class extends n{_shadowRoot;_initialised=!1;_state;_checkQueued=!1;_connected=!1;_observer=null;_visible=!0;constructor(){super();let r=this._shadowRoot=this.attachShadow({mode:"open"}),l=this.hasAttribute("inline");It(r,l),this._state=Ct({value:""},l),this._queueCheck()}connectedCallback(){this._connected=!0,this.startObserver()}disconnectedCallback(){this._connected=!1,this.stopObserver()}static get observedAttributes(){return o.slice(0)}attributeChangedCallback(r){switch(r){case"inline":{let l=this.hasAttribute("inline"),a=this._state;l!==a.inline&&(a.inline=l,It(this._shadowRoot,l));break}case"noobserver":{this.hasAttribute("noobserver")?this.startObserver():this.stopObserver();break}default:this._queueCheck()}}get icon(){let r=this.getAttribute("icon");if(r&&r.slice(0,1)==="{")try{return JSON.parse(r)}catch{}return r}set icon(r){typeof r=="object"&&(r=JSON.stringify(r)),this.setAttribute("icon",r)}get inline(){return this.hasAttribute("inline")}set inline(r){r?this.setAttribute("inline","true"):this.removeAttribute("inline")}get observer(){return this.hasAttribute("observer")}set observer(r){r?this.setAttribute("observer","true"):this.removeAttribute("observer")}restartAnimation(){let r=this._state;if(r.rendered){let l=this._shadowRoot;if(r.renderedMode==="svg")try{l.lastChild.setCurrentTime(0);return}catch{}At(l,r)}}get status(){let r=this._state;return r.rendered?"rendered":r.icon.data===null?"failed":"loading"}_queueCheck(){this._checkQueued||(this._checkQueued=!0,setTimeout(()=>{this._check()}))}_check(){if(!this._checkQueued)return;this._checkQueued=!1;let r=this._state,l=this.getAttribute("icon");if(l!==r.icon.value){this._iconChanged(l);return}if(!r.rendered||!this._visible)return;let a=this.getAttribute("mode"),u=ut(this);(r.attrMode!==a||ne(r.customisations,u)||!nt(this._shadowRoot))&&this._renderIcon(r.icon,u,a)}_iconChanged(r){let l=Ae(r,(a,u,d)=>{let f=this._state;if(f.rendered||this.getAttribute("icon")!==a)return;let p={value:a,name:u,data:d};p.data?this._gotIconData(p):f.icon=p});l.data?this._gotIconData(l):this._state=Ct(l,this._state.inline,this._state)}_forceRender(){if(!this._visible){let r=nt(this._shadowRoot);r&&this._shadowRoot.removeChild(r);return}this._queueCheck()}_gotIconData(r){this._checkQueued=!1,this._renderIcon(r,ut(this),this.getAttribute("mode"))}_renderIcon(r,l,a){let u=Ce(r.data.body,a),d=this._state.inline;At(this._shadowRoot,this._state={rendered:!0,icon:r,inline:d,customisations:l,attrMode:a,renderedMode:u})}startObserver(){if(!this._observer&&!this.hasAttribute("noobserver"))try{this._observer=new IntersectionObserver(r=>{let l=r.some(a=>a.isIntersecting);l!==this._visible&&(this._visible=l,this._forceRender())}),this._observer.observe(this)}catch{if(this._observer){try{this._observer.disconnect()}catch{}this._observer=null}}}stopObserver(){this._observer&&(this._observer.disconnect(),this._observer=null,this._visible=!0,this._connected&&this._forceRender())}};o.forEach(r=>{r in i.prototype||Object.defineProperty(i.prototype,r,{get:function(){return this.getAttribute(r)},set:function(l){l!==null?this.setAttribute(r,l):this.removeAttribute(r)}})});let c=Qt();for(let r in c)i[r]=i.prototype[r]=c[r];return e.define(t,i),i}var We=Ke()||Qt(),{enableCache:fn,disableCache:hn,iconLoaded:pn,iconExists:gn,getIcon:mn,listIcons:bn,addIcon:yn,addCollection:vn,calculateSize:In,buildIcon:xn,iconToHTML:wn,svgToURL:Sn,loadIcons:An,loadIcon:Cn,setCustomIconLoader:_n,setCustomIconsLoader:kn,addAPIProvider:Ln,_api:En}=We;function Xe(t){let e=t.getAttribute("aria-controls"),n=document.getElementById(e),s="data-expanded-"+e;t.addEventListener("click",function(){document.body.hasAttribute(s)?(document.body.removeAttribute(s),n.classList.remove("_expanded"),Bt(e,"false")):(document.body.setAttribute(s,"true"),n.classList.add("_expanded"),Bt(e,"true"))})}function Bt(t,e){let n=document.querySelectorAll('[aria-controls="'+t+'"]');for(el of n)el.setAttribute("aria-expanded",e)}var Vt=document.querySelectorAll(".js-menu");for(let t=0;t{H.parentNode.removeChild(H),document.head.removeChild(t)}),e(),window.addEventListener("resize",e)}var tn;var Q=["auto","light","dark"],U=document.querySelector(".js-theme");function en(){let t=zt();t+=1,Q[t]||(t=0);let e=Q[t];setColorMode(e),localStorage._theme=e,Gt(e)}function zt(){return Q.indexOf(document.documentElement.getAttribute("data-color-mode")||"auto")}function Gt(t){let e=U.getAttribute("data-aria-"+t);U.setAttribute("aria-label",e)}U&&(U.addEventListener("click",en),Gt(Q[zt()]||"auto"));function nn(){let t=document.querySelector(".globaltoc");if(!t)return;let e=parseInt(t.getAttribute("data-expand-depth"),10),n=o=>{if(!e)return!1;let i=0;for(;o.parentNode&&o.parentNode!==t;)o=o.parentNode,o.nodeName==="UL"&&(i+=1);return e>=i};t.querySelectorAll("li > ul").forEach(o=>{let i=o.parentNode;i.classList.contains("current")||n(i)?i.classList.add("_expand"):i.classList.add("_collapse");let c=on(o);i.appendChild(c)})}function on(t){let e=document.createElement("button");e.innerHTML='';let n=t.parentNode,s=t.previousSibling,o=s.textContent,i=()=>{n.classList.contains("_expand")?e.setAttribute("aria-label","Collapse "+o):e.setAttribute("aria-label","Expand "+o)};i();let c=r=>{r.preventDefault(),n.classList.contains("_expand")?(n.classList.remove("_expand"),n.classList.add("_collapse")):(n.classList.remove("_collapse"),n.classList.add("_expand")),i()};return s.getAttribute("href")==="#"&&s.addEventListener("click",c),e.addEventListener("click",c),e}var rt=document.querySelector(".globaltoc a.current");rt&&rt.scrollIntoViewIfNeeded&&rt.scrollIntoViewIfNeeded();nn();var Jt=0,ct=200,B=document.querySelectorAll(".yue > section section[id]"),A=document.querySelector(".back-to-top");function Yt(){let t=document.querySelector(".yue > section");t&&(ct=t.computedStyleMap().get("scroll-margin-top").value)}function sn(t){let e=t.getBoundingClientRect();return e.top<=ct&&e.bottom>=ct}function Kt(t){document.querySelectorAll(".localtoc li.active").forEach(e=>{e.classList.remove("active")}),document.querySelector(`.localtoc a[href="#${t}"]`).parentNode.classList.add("active")}function Wt(){let t;for(let e=0;e=document.body.offsetHeight){let t=B[B.length-1];t&&Kt(t.id)}else Wt();A&&(window.scrollY&&window.scrollY{window.scrollTo(0,0)});window.addEventListener("scroll",rn);window.addEventListener("DOMContentLoaded",()=>{Yt(),Wt()});window.addEventListener("resize",Yt);var V=document.querySelector(".js-repo-stats");async function cn(t,e){let n=`https://api.github.com/repos/${t}/${e}`,o=await(await fetch(n)).json(),i={stars:o.watchers,forks:o.forks};lt(i),sessionStorage.setItem("_sy/repo/stats",JSON.stringify(i))}async function ln(t,e){let n="https://gitlab.com/api/v4/projects/"+encodeURIComponent(t+"/"+e),o=await(await fetch(n)).json(),i={stars:o.star_count,forks:o.forks_count};lt(i),sessionStorage.setItem("_sy/repo/stats",JSON.stringify(i))}function lt({stars:t,forks:e}){t&&(document.querySelector(".js-repo-stars").textContent=t),e&&(document.querySelector(".js-repo-forks").textContent=e)}function an(){let t=sessionStorage.getItem("_sy/repo/stats");if(t)lt(JSON.parse(t));else{let e=V.getAttribute("data-user"),n=V.getAttribute("data-repo"),s=V.getAttribute("data-type");s==="github"?cn(e,n):s==="gitlab"&&ln(e,n)}}V&&an();function un(t,e){let n=document.createElement("script");n.id="_carbonads_js",n.src=`//cdn.carbonads.com/carbon.js?serve=${t}&placement=${e}`;let s=document.querySelector(".yue > section"),o=document.querySelector(".yue > section > section");if(o)s.insertBefore(n,o);else{let i=document.querySelector(".yue > section > p");i?s.insertBefore(n,i.nextSibling):s.appendChild(n)}}var at=document.querySelector(".js-carbon");if(at){let t=at.getAttribute("data-carbon-code"),e=at.getAttribute("data-carbon-placement");t&&e&&un(t,e)}var dn=` +:host > div .results .hit h2 { + color: var(--sy-c-heading); + margin-bottom: 0; + border-bottom: 0; + font-weight: 600; +} +:host > div .results .hit .hit-block .content { + color: var(--sy-c-text); +} +:host > div .results .hit-block a.hit:hover, :host > div .results .hit-block .hit.active { + background-color: var(--gray-5); + border-radius: 4px; +} + +:host > div div.hit-block a.hit-block-heading:hover { + text-decoration: underline; +} + +:host > div div.hit-block a.hit-block-heading i, +:host > div div.hit-block .hit-block-heading-container .close-icon { + color: var(--sy-c-light); + margin-bottom: 0; + display: flex; +} +`;document.addEventListener("readthedocs-addons-data-ready",function(t){document.querySelector(".searchbox input").addEventListener("focusin",()=>{let e=new CustomEvent("readthedocs-search-show");document.dispatchEvent(e)}),setTimeout(()=>{let e=document.querySelector("readthedocs-search");if(e){let n=document.createElement("style");n.textContent=dn,e.shadowRoot.appendChild(n)}},1e3)});/windows/i.test(navigator.userAgent)&&document.body.classList.add("win");})(); +/*! Bundled license information: + +iconify-icon/dist/iconify-icon.mjs: + (** + * (c) Iconify + * + * For the full copyright and license information, please view the license.txt + * files at https://github.com/iconify/iconify + * + * Licensed under MIT. + * + * @license MIT + * @version 2.3.0 + *) +*/ diff --git a/_static/spanish-stemmer.js b/_static/spanish-stemmer.js new file mode 100644 index 0000000..fffd616 --- /dev/null +++ b/_static/spanish-stemmer.js @@ -0,0 +1,990 @@ +// Generated by Snowball 2.1.0 - https://snowballstem.org/ + +/**@constructor*/ +SpanishStemmer = function() { + var base = new BaseStemmer(); + /** @const */ var a_0 = [ + ["", -1, 6], + ["\u00E1", 0, 1], + ["\u00E9", 0, 2], + ["\u00ED", 0, 3], + ["\u00F3", 0, 4], + ["\u00FA", 0, 5] + ]; + + /** @const */ var a_1 = [ + ["la", -1, -1], + ["sela", 0, -1], + ["le", -1, -1], + ["me", -1, -1], + ["se", -1, -1], + ["lo", -1, -1], + ["selo", 5, -1], + ["las", -1, -1], + ["selas", 7, -1], + ["les", -1, -1], + ["los", -1, -1], + ["selos", 10, -1], + ["nos", -1, -1] + ]; + + /** @const */ var a_2 = [ + ["ando", -1, 6], + ["iendo", -1, 6], + ["yendo", -1, 7], + ["\u00E1ndo", -1, 2], + ["i\u00E9ndo", -1, 1], + ["ar", -1, 6], + ["er", -1, 6], + ["ir", -1, 6], + ["\u00E1r", -1, 3], + ["\u00E9r", -1, 4], + ["\u00EDr", -1, 5] + ]; + + /** @const */ var a_3 = [ + ["ic", -1, -1], + ["ad", -1, -1], + ["os", -1, -1], + ["iv", -1, 1] + ]; + + /** @const */ var a_4 = [ + ["able", -1, 1], + ["ible", -1, 1], + ["ante", -1, 1] + ]; + + /** @const */ var a_5 = [ + ["ic", -1, 1], + ["abil", -1, 1], + ["iv", -1, 1] + ]; + + /** @const */ var a_6 = [ + ["ica", -1, 1], + ["ancia", -1, 2], + ["encia", -1, 5], + ["adora", -1, 2], + ["osa", -1, 1], + ["ista", -1, 1], + ["iva", -1, 9], + ["anza", -1, 1], + ["log\u00EDa", -1, 3], + ["idad", -1, 8], + ["able", -1, 1], + ["ible", -1, 1], + ["ante", -1, 2], + ["mente", -1, 7], + ["amente", 13, 6], + ["aci\u00F3n", -1, 2], + ["uci\u00F3n", -1, 4], + ["ico", -1, 1], + ["ismo", -1, 1], + ["oso", -1, 1], + ["amiento", -1, 1], + ["imiento", -1, 1], + ["ivo", -1, 9], + ["ador", -1, 2], + ["icas", -1, 1], + ["ancias", -1, 2], + ["encias", -1, 5], + ["adoras", -1, 2], + ["osas", -1, 1], + ["istas", -1, 1], + ["ivas", -1, 9], + ["anzas", -1, 1], + ["log\u00EDas", -1, 3], + ["idades", -1, 8], + ["ables", -1, 1], + ["ibles", -1, 1], + ["aciones", -1, 2], + ["uciones", -1, 4], + ["adores", -1, 2], + ["antes", -1, 2], + ["icos", -1, 1], + ["ismos", -1, 1], + ["osos", -1, 1], + ["amientos", -1, 1], + ["imientos", -1, 1], + ["ivos", -1, 9] + ]; + + /** @const */ var a_7 = [ + ["ya", -1, 1], + ["ye", -1, 1], + ["yan", -1, 1], + ["yen", -1, 1], + ["yeron", -1, 1], + ["yendo", -1, 1], + ["yo", -1, 1], + ["yas", -1, 1], + ["yes", -1, 1], + ["yais", -1, 1], + ["yamos", -1, 1], + ["y\u00F3", -1, 1] + ]; + + /** @const */ var a_8 = [ + ["aba", -1, 2], + ["ada", -1, 2], + ["ida", -1, 2], + ["ara", -1, 2], + ["iera", -1, 2], + ["\u00EDa", -1, 2], + ["ar\u00EDa", 5, 2], + ["er\u00EDa", 5, 2], + ["ir\u00EDa", 5, 2], + ["ad", -1, 2], + ["ed", -1, 2], + ["id", -1, 2], + ["ase", -1, 2], + ["iese", -1, 2], + ["aste", -1, 2], + ["iste", -1, 2], + ["an", -1, 2], + ["aban", 16, 2], + ["aran", 16, 2], + ["ieran", 16, 2], + ["\u00EDan", 16, 2], + ["ar\u00EDan", 20, 2], + ["er\u00EDan", 20, 2], + ["ir\u00EDan", 20, 2], + ["en", -1, 1], + ["asen", 24, 2], + ["iesen", 24, 2], + ["aron", -1, 2], + ["ieron", -1, 2], + ["ar\u00E1n", -1, 2], + ["er\u00E1n", -1, 2], + ["ir\u00E1n", -1, 2], + ["ado", -1, 2], + ["ido", -1, 2], + ["ando", -1, 2], + ["iendo", -1, 2], + ["ar", -1, 2], + ["er", -1, 2], + ["ir", -1, 2], + ["as", -1, 2], + ["abas", 39, 2], + ["adas", 39, 2], + ["idas", 39, 2], + ["aras", 39, 2], + ["ieras", 39, 2], + ["\u00EDas", 39, 2], + ["ar\u00EDas", 45, 2], + ["er\u00EDas", 45, 2], + ["ir\u00EDas", 45, 2], + ["es", -1, 1], + ["ases", 49, 2], + ["ieses", 49, 2], + ["abais", -1, 2], + ["arais", -1, 2], + ["ierais", -1, 2], + ["\u00EDais", -1, 2], + ["ar\u00EDais", 55, 2], + ["er\u00EDais", 55, 2], + ["ir\u00EDais", 55, 2], + ["aseis", -1, 2], + ["ieseis", -1, 2], + ["asteis", -1, 2], + ["isteis", -1, 2], + ["\u00E1is", -1, 2], + ["\u00E9is", -1, 1], + ["ar\u00E9is", 64, 2], + ["er\u00E9is", 64, 2], + ["ir\u00E9is", 64, 2], + ["ados", -1, 2], + ["idos", -1, 2], + ["amos", -1, 2], + ["\u00E1bamos", 70, 2], + ["\u00E1ramos", 70, 2], + ["i\u00E9ramos", 70, 2], + ["\u00EDamos", 70, 2], + ["ar\u00EDamos", 74, 2], + ["er\u00EDamos", 74, 2], + ["ir\u00EDamos", 74, 2], + ["emos", -1, 1], + ["aremos", 78, 2], + ["eremos", 78, 2], + ["iremos", 78, 2], + ["\u00E1semos", 78, 2], + ["i\u00E9semos", 78, 2], + ["imos", -1, 2], + ["ar\u00E1s", -1, 2], + ["er\u00E1s", -1, 2], + ["ir\u00E1s", -1, 2], + ["\u00EDs", -1, 2], + ["ar\u00E1", -1, 2], + ["er\u00E1", -1, 2], + ["ir\u00E1", -1, 2], + ["ar\u00E9", -1, 2], + ["er\u00E9", -1, 2], + ["ir\u00E9", -1, 2], + ["i\u00F3", -1, 2] + ]; + + /** @const */ var a_9 = [ + ["a", -1, 1], + ["e", -1, 2], + ["o", -1, 1], + ["os", -1, 1], + ["\u00E1", -1, 1], + ["\u00E9", -1, 2], + ["\u00ED", -1, 1], + ["\u00F3", -1, 1] + ]; + + /** @const */ var /** Array */ g_v = [17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10]; + + var /** number */ I_p2 = 0; + var /** number */ I_p1 = 0; + var /** number */ I_pV = 0; + + + /** @return {boolean} */ + function r_mark_regions() { + I_pV = base.limit; + I_p1 = base.limit; + I_p2 = base.limit; + var /** number */ v_1 = base.cursor; + lab0: { + lab1: { + var /** number */ v_2 = base.cursor; + lab2: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab2; + } + lab3: { + var /** number */ v_3 = base.cursor; + lab4: { + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab4; + } + golab5: while(true) + { + lab6: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab6; + } + break golab5; + } + if (base.cursor >= base.limit) + { + break lab4; + } + base.cursor++; + } + break lab3; + } + base.cursor = v_3; + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab2; + } + golab7: while(true) + { + lab8: { + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab8; + } + break golab7; + } + if (base.cursor >= base.limit) + { + break lab2; + } + base.cursor++; + } + } + break lab1; + } + base.cursor = v_2; + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab0; + } + lab9: { + var /** number */ v_6 = base.cursor; + lab10: { + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab10; + } + golab11: while(true) + { + lab12: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab12; + } + break golab11; + } + if (base.cursor >= base.limit) + { + break lab10; + } + base.cursor++; + } + break lab9; + } + base.cursor = v_6; + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab0; + } + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + } + } + I_pV = base.cursor; + } + base.cursor = v_1; + var /** number */ v_8 = base.cursor; + lab13: { + golab14: while(true) + { + lab15: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab15; + } + break golab14; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + golab16: while(true) + { + lab17: { + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab17; + } + break golab16; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + I_p1 = base.cursor; + golab18: while(true) + { + lab19: { + if (!(base.in_grouping(g_v, 97, 252))) + { + break lab19; + } + break golab18; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + golab20: while(true) + { + lab21: { + if (!(base.out_grouping(g_v, 97, 252))) + { + break lab21; + } + break golab20; + } + if (base.cursor >= base.limit) + { + break lab13; + } + base.cursor++; + } + I_p2 = base.cursor; + } + base.cursor = v_8; + return true; + }; + + /** @return {boolean} */ + function r_postlude() { + var /** number */ among_var; + while(true) + { + var /** number */ v_1 = base.cursor; + lab0: { + base.bra = base.cursor; + among_var = base.find_among(a_0); + if (among_var == 0) + { + break lab0; + } + base.ket = base.cursor; + switch (among_var) { + case 1: + if (!base.slice_from("a")) + { + return false; + } + break; + case 2: + if (!base.slice_from("e")) + { + return false; + } + break; + case 3: + if (!base.slice_from("i")) + { + return false; + } + break; + case 4: + if (!base.slice_from("o")) + { + return false; + } + break; + case 5: + if (!base.slice_from("u")) + { + return false; + } + break; + case 6: + if (base.cursor >= base.limit) + { + break lab0; + } + base.cursor++; + break; + } + continue; + } + base.cursor = v_1; + break; + } + return true; + }; + + /** @return {boolean} */ + function r_RV() { + if (!(I_pV <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R1() { + if (!(I_p1 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_R2() { + if (!(I_p2 <= base.cursor)) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_attached_pronoun() { + var /** number */ among_var; + base.ket = base.cursor; + if (base.find_among_b(a_1) == 0) + { + return false; + } + base.bra = base.cursor; + among_var = base.find_among_b(a_2); + if (among_var == 0) + { + return false; + } + if (!r_RV()) + { + return false; + } + switch (among_var) { + case 1: + base.bra = base.cursor; + if (!base.slice_from("iendo")) + { + return false; + } + break; + case 2: + base.bra = base.cursor; + if (!base.slice_from("ando")) + { + return false; + } + break; + case 3: + base.bra = base.cursor; + if (!base.slice_from("ar")) + { + return false; + } + break; + case 4: + base.bra = base.cursor; + if (!base.slice_from("er")) + { + return false; + } + break; + case 5: + base.bra = base.cursor; + if (!base.slice_from("ir")) + { + return false; + } + break; + case 6: + if (!base.slice_del()) + { + return false; + } + break; + case 7: + if (!(base.eq_s_b("u"))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_standard_suffix() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_6); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.eq_s_b("ic"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_1; + break lab0; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 3: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("log")) + { + return false; + } + break; + case 4: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("u")) + { + return false; + } + break; + case 5: + if (!r_R2()) + { + return false; + } + if (!base.slice_from("ente")) + { + return false; + } + break; + case 6: + if (!r_R1()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_2 = base.limit - base.cursor; + lab1: { + base.ket = base.cursor; + among_var = base.find_among_b(a_3); + if (among_var == 0) + { + base.cursor = base.limit - v_2; + break lab1; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_2; + break lab1; + } + if (!base.slice_del()) + { + return false; + } + switch (among_var) { + case 1: + base.ket = base.cursor; + if (!(base.eq_s_b("at"))) + { + base.cursor = base.limit - v_2; + break lab1; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_2; + break lab1; + } + if (!base.slice_del()) + { + return false; + } + break; + } + } + break; + case 7: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_3 = base.limit - base.cursor; + lab2: { + base.ket = base.cursor; + if (base.find_among_b(a_4) == 0) + { + base.cursor = base.limit - v_3; + break lab2; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_3; + break lab2; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 8: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_4 = base.limit - base.cursor; + lab3: { + base.ket = base.cursor; + if (base.find_among_b(a_5) == 0) + { + base.cursor = base.limit - v_4; + break lab3; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_4; + break lab3; + } + if (!base.slice_del()) + { + return false; + } + } + break; + case 9: + if (!r_R2()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_5 = base.limit - base.cursor; + lab4: { + base.ket = base.cursor; + if (!(base.eq_s_b("at"))) + { + base.cursor = base.limit - v_5; + break lab4; + } + base.bra = base.cursor; + if (!r_R2()) + { + base.cursor = base.limit - v_5; + break lab4; + } + if (!base.slice_del()) + { + return false; + } + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_y_verb_suffix() { + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + if (base.find_among_b(a_7) == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + if (!(base.eq_s_b("u"))) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + return true; + }; + + /** @return {boolean} */ + function r_verb_suffix() { + var /** number */ among_var; + if (base.cursor < I_pV) + { + return false; + } + var /** number */ v_2 = base.limit_backward; + base.limit_backward = I_pV; + base.ket = base.cursor; + among_var = base.find_among_b(a_8); + if (among_var == 0) + { + base.limit_backward = v_2; + return false; + } + base.bra = base.cursor; + base.limit_backward = v_2; + switch (among_var) { + case 1: + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + if (!(base.eq_s_b("u"))) + { + base.cursor = base.limit - v_3; + break lab0; + } + var /** number */ v_4 = base.limit - base.cursor; + if (!(base.eq_s_b("g"))) + { + base.cursor = base.limit - v_3; + break lab0; + } + base.cursor = base.limit - v_4; + } + base.bra = base.cursor; + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!base.slice_del()) + { + return false; + } + break; + } + return true; + }; + + /** @return {boolean} */ + function r_residual_suffix() { + var /** number */ among_var; + base.ket = base.cursor; + among_var = base.find_among_b(a_9); + if (among_var == 0) + { + return false; + } + base.bra = base.cursor; + switch (among_var) { + case 1: + if (!r_RV()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + break; + case 2: + if (!r_RV()) + { + return false; + } + if (!base.slice_del()) + { + return false; + } + var /** number */ v_1 = base.limit - base.cursor; + lab0: { + base.ket = base.cursor; + if (!(base.eq_s_b("u"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.bra = base.cursor; + var /** number */ v_2 = base.limit - base.cursor; + if (!(base.eq_s_b("g"))) + { + base.cursor = base.limit - v_1; + break lab0; + } + base.cursor = base.limit - v_2; + if (!r_RV()) + { + base.cursor = base.limit - v_1; + break lab0; + } + if (!base.slice_del()) + { + return false; + } + } + break; + } + return true; + }; + + this.stem = /** @return {boolean} */ function() { + r_mark_regions(); + base.limit_backward = base.cursor; base.cursor = base.limit; + var /** number */ v_2 = base.limit - base.cursor; + r_attached_pronoun(); + base.cursor = base.limit - v_2; + var /** number */ v_3 = base.limit - base.cursor; + lab0: { + lab1: { + var /** number */ v_4 = base.limit - base.cursor; + lab2: { + if (!r_standard_suffix()) + { + break lab2; + } + break lab1; + } + base.cursor = base.limit - v_4; + lab3: { + if (!r_y_verb_suffix()) + { + break lab3; + } + break lab1; + } + base.cursor = base.limit - v_4; + if (!r_verb_suffix()) + { + break lab0; + } + } + } + base.cursor = base.limit - v_3; + var /** number */ v_5 = base.limit - base.cursor; + r_residual_suffix(); + base.cursor = base.limit - v_5; + base.cursor = base.limit_backward; + var /** number */ v_6 = base.cursor; + r_postlude(); + base.cursor = v_6; + return true; + }; + + /**@return{string}*/ + this['stemWord'] = function(/**string*/word) { + base.setCurrent(word); + this.stem(); + return base.getCurrent(); + }; +}; diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 0000000..8a96c69 --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/_static/tabs.css b/_static/tabs.css new file mode 100644 index 0000000..957ba60 --- /dev/null +++ b/_static/tabs.css @@ -0,0 +1,89 @@ +.sphinx-tabs { + margin-bottom: 1rem; +} + +[role="tablist"] { + border-bottom: 1px solid #a0b3bf; +} + +.sphinx-tabs-tab { + position: relative; + font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif; + color: #1D5C87; + line-height: 24px; + margin: 0; + font-size: 16px; + font-weight: 400; + background-color: rgba(255, 255, 255, 0); + border-radius: 5px 5px 0 0; + border: 0; + padding: 1rem 1.5rem; + margin-bottom: 0; +} + +.sphinx-tabs-tab[aria-selected="true"] { + font-weight: 700; + border: 1px solid #a0b3bf; + border-bottom: 1px solid white; + margin: -1px; + background-color: white; +} + +.sphinx-tabs-tab:focus { + z-index: 1; + outline-offset: 1px; +} + +.sphinx-tabs-panel { + position: relative; + padding: 1rem; + border: 1px solid #a0b3bf; + margin: 0px -1px -1px -1px; + border-radius: 0 0 5px 5px; + border-top: 0; + background: white; +} + +.sphinx-tabs-panel.code-tab { + padding: 0.4rem; +} + +.sphinx-tab img { + margin-bottom: 24 px; +} + +/* Dark theme preference styling */ + +@media (prefers-color-scheme: dark) { + body[data-theme="auto"] .sphinx-tabs-panel { + color: white; + background-color: rgb(50, 50, 50); + } + + body[data-theme="auto"] .sphinx-tabs-tab { + color: white; + background-color: rgba(255, 255, 255, 0.05); + } + + body[data-theme="auto"] .sphinx-tabs-tab[aria-selected="true"] { + border-bottom: 1px solid rgb(50, 50, 50); + background-color: rgb(50, 50, 50); + } +} + +/* Explicit dark theme styling */ + +body[data-theme="dark"] .sphinx-tabs-panel { + color: white; + background-color: rgb(50, 50, 50); +} + +body[data-theme="dark"] .sphinx-tabs-tab { + color: white; + background-color: rgba(255, 255, 255, 0.05); +} + +body[data-theme="dark"] .sphinx-tabs-tab[aria-selected="true"] { + border-bottom: 2px solid rgb(50, 50, 50); + background-color: rgb(50, 50, 50); +} diff --git a/_static/tabs.js b/_static/tabs.js new file mode 100644 index 0000000..48dc303 --- /dev/null +++ b/_static/tabs.js @@ -0,0 +1,145 @@ +try { + var session = window.sessionStorage || {}; +} catch (e) { + var session = {}; +} + +window.addEventListener("DOMContentLoaded", () => { + const allTabs = document.querySelectorAll('.sphinx-tabs-tab'); + const tabLists = document.querySelectorAll('[role="tablist"]'); + + allTabs.forEach(tab => { + tab.addEventListener("click", changeTabs); + }); + + tabLists.forEach(tabList => { + tabList.addEventListener("keydown", keyTabs); + }); + + // Restore group tab selection from session + const lastSelected = session.getItem('sphinx-tabs-last-selected'); + if (lastSelected != null) selectNamedTabs(lastSelected); +}); + +/** + * Key focus left and right between sibling elements using arrows + * @param {Node} e the element in focus when key was pressed + */ +function keyTabs(e) { + const tab = e.target; + let nextTab = null; + if (e.keyCode === 39 || e.keyCode === 37) { + tab.setAttribute("tabindex", -1); + // Move right + if (e.keyCode === 39) { + nextTab = tab.nextElementSibling; + if (nextTab === null) { + nextTab = tab.parentNode.firstElementChild; + } + // Move left + } else if (e.keyCode === 37) { + nextTab = tab.previousElementSibling; + if (nextTab === null) { + nextTab = tab.parentNode.lastElementChild; + } + } + } + + if (nextTab !== null) { + nextTab.setAttribute("tabindex", 0); + nextTab.focus(); + } +} + +/** + * Select or deselect clicked tab. If a group tab + * is selected, also select tab in other tabLists. + * @param {Node} e the element that was clicked + */ +function changeTabs(e) { + // Use this instead of the element that was clicked, in case it's a child + const notSelected = this.getAttribute("aria-selected") === "false"; + const positionBefore = this.parentNode.getBoundingClientRect().top; + const notClosable = !this.parentNode.classList.contains("closeable"); + + deselectTabList(this); + + if (notSelected || notClosable) { + selectTab(this); + const name = this.getAttribute("name"); + selectNamedTabs(name, this.id); + + if (this.classList.contains("group-tab")) { + // Persist during session + session.setItem('sphinx-tabs-last-selected', name); + } + } + + const positionAfter = this.parentNode.getBoundingClientRect().top; + const positionDelta = positionAfter - positionBefore; + // Scroll to offset content resizing + window.scrollTo(0, window.scrollY + positionDelta); +} + +/** + * Select tab and show associated panel. + * @param {Node} tab tab to select + */ +function selectTab(tab) { + tab.setAttribute("aria-selected", true); + + // Show the associated panel + document + .getElementById(tab.getAttribute("aria-controls")) + .removeAttribute("hidden"); +} + +/** + * Hide the panels associated with all tabs within the + * tablist containing this tab. + * @param {Node} tab a tab within the tablist to deselect + */ +function deselectTabList(tab) { + const parent = tab.parentNode; + const grandparent = parent.parentNode; + + Array.from(parent.children) + .forEach(t => t.setAttribute("aria-selected", false)); + + Array.from(grandparent.children) + .slice(1) // Skip tablist + .forEach(panel => panel.setAttribute("hidden", true)); +} + +/** + * Select grouped tabs with the same name, but no the tab + * with the given id. + * @param {Node} name name of grouped tab to be selected + * @param {Node} clickedId id of clicked tab + */ +function selectNamedTabs(name, clickedId=null) { + const groupedTabs = document.querySelectorAll(`.sphinx-tabs-tab[name="${name}"]`); + const tabLists = Array.from(groupedTabs).map(tab => tab.parentNode); + + tabLists + .forEach(tabList => { + // Don't want to change the tabList containing the clicked tab + const clickedTab = tabList.querySelector(`[id="${clickedId}"]`); + if (clickedTab === null ) { + // Select first tab with matching name + const tab = tabList.querySelector(`.sphinx-tabs-tab[name="${name}"]`); + deselectTabList(tab); + selectTab(tab); + } + }) +} + +if (typeof exports === 'undefined') { + exports = {}; +} + +exports.keyTabs = keyTabs; +exports.changeTabs = changeTabs; +exports.selectTab = selectTab; +exports.deselectTabList = deselectTabList; +exports.selectNamedTabs = selectNamedTabs; diff --git a/_static/togglebutton.css b/_static/togglebutton.css new file mode 100644 index 0000000..54a6787 --- /dev/null +++ b/_static/togglebutton.css @@ -0,0 +1,160 @@ +/** + * Admonition-based toggles + */ + +/* Visibility of the target */ +.admonition.toggle .admonition-title ~ * { + transition: opacity .3s, height .3s; +} + +/* Toggle buttons inside admonitions so we see the title */ +.admonition.toggle { + position: relative; +} + +/* Titles should cut off earlier to avoid overlapping w/ button */ +.admonition.toggle .admonition-title { + padding-right: 25%; + cursor: pointer; +} + +/* Hovering will cause a slight shift in color to make it feel interactive */ +.admonition.toggle .admonition-title:hover { + box-shadow: inset 0 0 0px 20px rgb(0 0 0 / 1%); +} + +/* Hovering will cause a slight shift in color to make it feel interactive */ +.admonition.toggle .admonition-title:active { + box-shadow: inset 0 0 0px 20px rgb(0 0 0 / 3%); +} + +/* Remove extra whitespace below the admonition title when hidden */ +.admonition.toggle-hidden { + padding-bottom: 0; +} + +.admonition.toggle-hidden .admonition-title { + margin-bottom: 0; +} + +/* hides all the content of a page until de-toggled */ +.admonition.toggle-hidden .admonition-title ~ * { + height: 0; + margin: 0; + opacity: 0; + visibility: hidden; +} + +/* General button style and position*/ +button.toggle-button { + /** + * Background and shape. By default there's no background + * but users can style as they wish + */ + background: none; + border: none; + outline: none; + + /* Positioning just inside the admonition title */ + position: absolute; + right: 0.5em; + padding: 0px; + border: none; + outline: none; +} + +/* Display the toggle hint on wide screens */ +@media (min-width: 768px) { + button.toggle-button.toggle-button-hidden:before { + content: attr(data-toggle-hint); /* This will be filled in by JS */ + font-size: .8em; + align-self: center; + } +} + +/* Icon behavior */ +.tb-icon { + transition: transform .2s ease-out; + height: 1.5em; + width: 1.5em; + stroke: currentColor; /* So that we inherit the color of other text */ +} + +/* The icon should point right when closed, down when open. */ +/* Open */ +.admonition.toggle button .tb-icon { + transform: rotate(90deg); +} + +/* Closed */ +.admonition.toggle button.toggle-button-hidden .tb-icon { + transform: rotate(0deg); +} + +/* With details toggles, we don't rotate the icon so it points right */ +details.toggle-details .tb-icon { + height: 1.4em; + width: 1.4em; + margin-top: 0.1em; /* To center the button vertically */ +} + + +/** + * Details-based toggles. + * In this case, we wrap elements with `.toggle` in a details block. + */ + +/* Details blocks */ +details.toggle-details { + margin: 1em 0; +} + + +details.toggle-details summary { + display: flex; + align-items: center; + cursor: pointer; + list-style: none; + border-radius: .2em; + border-left: 3px solid #1976d2; + background-color: rgb(204 204 204 / 10%); + padding: 0.2em 0.7em 0.3em 0.5em; /* Less padding on left because the SVG has left margin */ + font-size: 0.9em; +} + +details.toggle-details summary:hover { + background-color: rgb(204 204 204 / 20%); +} + +details.toggle-details summary:active { + background: rgb(204 204 204 / 28%); +} + +.toggle-details__summary-text { + margin-left: 0.2em; +} + +details.toggle-details[open] summary { + margin-bottom: .5em; +} + +details.toggle-details[open] summary .tb-icon { + transform: rotate(90deg); +} + +details.toggle-details[open] summary ~ * { + animation: toggle-fade-in .3s ease-out; +} + +@keyframes toggle-fade-in { + from {opacity: 0%;} + to {opacity: 100%;} +} + +/* Print rules - we hide all toggle button elements at print */ +@media print { + /* Always hide the summary so the button doesn't show up */ + details.toggle-details summary { + display: none; + } +} \ No newline at end of file diff --git a/_static/togglebutton.js b/_static/togglebutton.js new file mode 100644 index 0000000..215a7ee --- /dev/null +++ b/_static/togglebutton.js @@ -0,0 +1,187 @@ +/** + * Add Toggle Buttons to elements + */ + +let toggleChevron = ` + + + +`; + +var initToggleItems = () => { + var itemsToToggle = document.querySelectorAll(togglebuttonSelector); + console.log(`[togglebutton]: Adding toggle buttons to ${itemsToToggle.length} items`) + // Add the button to each admonition and hook up a callback to toggle visibility + itemsToToggle.forEach((item, index) => { + if (item.classList.contains("admonition")) { + // If it's an admonition block, then we'll add a button inside + // Generate unique IDs for this item + var toggleID = `toggle-${index}`; + var buttonID = `button-${toggleID}`; + + item.setAttribute('id', toggleID); + if (!item.classList.contains("toggle")){ + item.classList.add("toggle"); + } + // This is the button that will be added to each item to trigger the toggle + var collapseButton = ` + `; + + title = item.querySelector(".admonition-title") + title.insertAdjacentHTML("beforeend", collapseButton); + thisButton = document.getElementById(buttonID); + + // Add click handlers for the button + admonition title (if admonition) + admonitionTitle = document.querySelector(`#${toggleID} > .admonition-title`) + if (admonitionTitle) { + // If an admonition, then make the whole title block clickable + admonitionTitle.addEventListener('click', toggleClickHandler); + admonitionTitle.dataset.target = toggleID + admonitionTitle.dataset.button = buttonID + } else { + // If not an admonition then we'll listen for the button click + thisButton.addEventListener('click', toggleClickHandler); + } + + // Now hide the item for this toggle button unless explicitly noted to show + if (!item.classList.contains("toggle-shown")) { + toggleHidden(thisButton); + } + } else { + // If not an admonition, wrap the block in a
block + // Define the structure of the details block and insert it as a sibling + var detailsBlock = ` +
+ + ${toggleChevron} + ${toggleHintShow} + +
`; + item.insertAdjacentHTML("beforebegin", detailsBlock); + + // Now move the toggle-able content inside of the details block + details = item.previousElementSibling + details.appendChild(item) + item.classList.add("toggle-details__container") + + // Set up a click trigger to change the text as needed + details.addEventListener('click', (click) => { + let parent = click.target.parentElement; + if (parent.tagName.toLowerCase() == "details") { + summary = parent.querySelector("summary"); + details = parent; + } else { + summary = parent; + details = parent.parentElement; + } + // Update the inner text for the proper hint + if (details.open) { + summary.querySelector("span.toggle-details__summary-text").innerText = toggleHintShow; + } else { + summary.querySelector("span.toggle-details__summary-text").innerText = toggleHintHide; + } + + }); + + // If we have a toggle-shown class, open details block should be open + if (item.classList.contains("toggle-shown")) { + details.click(); + } + } + }) +}; + +// This should simply add / remove the collapsed class and change the button text +var toggleHidden = (button) => { + target = button.dataset['target'] + var itemToToggle = document.getElementById(target); + if (itemToToggle.classList.contains("toggle-hidden")) { + itemToToggle.classList.remove("toggle-hidden"); + button.classList.remove("toggle-button-hidden"); + } else { + itemToToggle.classList.add("toggle-hidden"); + button.classList.add("toggle-button-hidden"); + } +} + +var toggleClickHandler = (click) => { + // Be cause the admonition title is clickable and extends to the whole admonition + // We only look for a click event on this title to trigger the toggle. + + if (click.target.classList.contains("admonition-title")) { + button = click.target.querySelector(".toggle-button"); + } else if (click.target.classList.contains("tb-icon")) { + // We've clicked the icon and need to search up one parent for the button + button = click.target.parentElement; + } else if (click.target.tagName == "polyline") { + // We've clicked the SVG elements inside the button, need to up 2 layers + button = click.target.parentElement.parentElement; + } else if (click.target.classList.contains("toggle-button")) { + // We've clicked the button itself and so don't need to do anything + button = click.target; + } else { + console.log(`[togglebutton]: Couldn't find button for ${click.target}`) + } + target = document.getElementById(button.dataset['button']); + toggleHidden(target); +} + +// If we want to blanket-add toggle classes to certain cells +var addToggleToSelector = () => { + const selector = ""; + if (selector.length > 0) { + document.querySelectorAll(selector).forEach((item) => { + item.classList.add("toggle"); + }) + } +} + +// Helper function to run when the DOM is finished +const sphinxToggleRunWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} +sphinxToggleRunWhenDOMLoaded(addToggleToSelector) +sphinxToggleRunWhenDOMLoaded(initToggleItems) + +/** Toggle details blocks to be open when printing */ +if (toggleOpenOnPrint == "true") { + window.addEventListener("beforeprint", () => { + // Open the details + document.querySelectorAll("details.toggle-details").forEach((el) => { + el.dataset["togglestatus"] = el.open; + el.open = true; + }); + + // Open the admonitions + document.querySelectorAll(".admonition.toggle.toggle-hidden").forEach((el) => { + console.log(el); + el.querySelector("button.toggle-button").click(); + el.dataset["toggle_after_print"] = "true"; + }); + }); + window.addEventListener("afterprint", () => { + // Re-close the details that were closed + document.querySelectorAll("details.toggle-details").forEach((el) => { + el.open = el.dataset["togglestatus"] == "true"; + delete el.dataset["togglestatus"]; + }); + + // Re-close the admonition toggle buttons + document.querySelectorAll(".admonition.toggle").forEach((el) => { + if (el.dataset["toggle_after_print"] == "true") { + el.querySelector("button.toggle-button").click(); + delete el.dataset["toggle_after_print"]; + } + }); + }); +} diff --git a/_static/translations.js b/_static/translations.js new file mode 100644 index 0000000..26dcfb7 --- /dev/null +++ b/_static/translations.js @@ -0,0 +1,60 @@ +Documentation.addTranslations({ + "locale": "es", + "messages": { + "%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", + "© %(copyright_prefix)s %(copyright)s.": "", + ", in ": ", en ", + "About these documents": "Sobre este documento", + "Automatically generated list of changes in version %(version)s": "Lista de cambios generada autom\u00e1ticamente en la versi\u00f3n %(version)s", + "C API changes": "Cambios en la API C", + "Changes in Version %(version)s — %(docstitle)s": "Cambios en la versi\u00f3n %(version)s — %(docstitle)s", + "Collapse sidebar": "Contraer barra lateral", + "Complete Table of Contents": "\u00cdndice de contenidos completo", + "Contents": "Contenidos", + "Copyright": "Copyright", + "Created using Sphinx %(sphinx_version)s.": "Creado usando Sphinx %(sphinx_version)s.", + "Expand sidebar": "Expandir barra lateral", + "Full index on one page": "\u00cdndice completo en una p\u00e1gina", + "General Index": "\u00cdndice General", + "Global Module Index": "\u00cdndice Global de M\u00f3dulos", + "Go": "Ir a", + "Hide Search Matches": "Ocultar coincidencias de la b\u00fasqueda", + "Index": "\u00cdndice", + "Index – %(key)s": "\u00cdndice – %(key)s", + "Index pages by letter": "\u00cdndice alfab\u00e9tico de p\u00e1ginas", + "Indices and tables:": "\u00cdndices y tablas:", + "Last updated on %(last_updated)s.": "Actualizado por \u00faltima vez en %(last_updated)s.", + "Library changes": "Cambios en la biblioteca", + "Navigation": "Navegaci\u00f3n", + "Next topic": "Pr\u00f3ximo tema", + "Other changes": "Otros cambios", + "Overview": "Resumen", + "Please activate JavaScript to enable the search\n functionality.": "Por favor, active JavaScript para habilitar la funcionalidad\n de b\u00fasqueda.", + "Preparing search...": "Preparando b\u00fasqueda...", + "Previous topic": "Tema anterior", + "Quick search": "B\u00fasqueda r\u00e1pida", + "Search": "B\u00fasqueda", + "Search Page": "P\u00e1gina de B\u00fasqueda", + "Search Results": "Resultados de la b\u00fasqueda", + "Search finished, found ${resultCount} page(s) matching the search query.": "B\u00fasqueda finalizada, se encontraron ${resultCount} p\u00e1ginas que coinciden con la consulta de b\u00fasqueda.", + "Search within %(docstitle)s": "Buscar en %(docstitle)s", + "Searching": "Buscando", + "Searching for multiple words only shows matches that contain\n all words.": "La b\u00fasqueda de varias palabras solo muestra coincidencias que contienen\n todas las palabras.", + "Show Source": "Mostrar el c\u00f3digo", + "Table of Contents": "Tabla de contenido", + "This Page": "Esta p\u00e1gina", + "Welcome! This is": "\u00a1Bienvenido! Este es", + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Su b\u00fasqueda no coincide con ning\u00fan documentos. Por favor, aseg\u00farese de que todas las palabras est\u00e9n correctamente escritas y que usted all\u00e1 seleccionado las suficientes categor\u00edas.", + "all functions, classes, terms": "todas las funciones, clases, t\u00e9rminos", + "can be huge": "puede ser muy grande", + "last updated": "actualizado por \u00faltima vez el", + "lists all sections and subsections": "muestra todas las secciones y subsecciones", + "next chapter": "pr\u00f3ximo cap\u00edtulo", + "previous chapter": "cap\u00edtulo anterior", + "quick access to all modules": "acceso r\u00e1pido a todos los m\u00f3dulos", + "search": "buscar", + "search this documentation": "buscar en esta documentaci\u00f3n", + "the documentation for": "la documentaci\u00f3n para" + }, + "plural_expr": "n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2" +}); \ No newline at end of file diff --git a/_templates/page.html b/_templates/page.html deleted file mode 100644 index 07ae95c..0000000 --- a/_templates/page.html +++ /dev/null @@ -1,18 +0,0 @@ -{%- extends "!page.html" %} - -{% block extrahead %} - {{ super() }} - - {# Verifies sphinx_version availability before rendering metatags - This check is crucial to prevent errors during site generation - when sphinxext.opengraph extension is not available #} - {% if sphinx_version %} - {{ metatags }} - {% endif %} - - {# Static meta tags manually defined to ensure consistency - These tags will remain unchanged regardless of Sphinx configuration - or its extensions, ensuring a constant site identity #} - - -{% endblock %} \ No newline at end of file diff --git a/_templates/partials/opengraph.html b/_templates/partials/opengraph.html deleted file mode 100644 index 3c0d60e..0000000 --- a/_templates/partials/opengraph.html +++ /dev/null @@ -1,3 +0,0 @@ -{% if metatags %} -{{ metatags }} -{% endif %} diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..0efeeba --- /dev/null +++ b/about/index.html @@ -0,0 +1,259 @@ + + + + + Acerca de la Comunidad de Python Perú - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Acerca de la Comunidad de Python Perú

+

Somos una comunidad apasionada de desarrolladores de Python que se esfuerza por +compartir conocimientos, organizar, colaborar en proyectos innovadores y +fomentar un ambiente inclusivo para todos los niveles de habilidad. Nuestro +objetivo es promover el aprendizaje continuo y el crecimiento personal en un +entorno amigable y acogedor.

+

Con una amplia gama de experiencias y habilidades, nuestros miembros provienen +de diversos ámbitos de la programación en Python, lo que nos permite ofrecer una +perspectiva única y enriquecedora en cada interacción. Nos enorgullecemos de +nuestra comunidad diversa y estamos comprometidos a brindar recursos de calidad +y apoyo mutuo para impulsar el éxito colectivo de nuestros miembros.

+
+

Truco

+

Si quieres crear/editar tu perfil de miembro, puedes hacerlo +ejecutando el siguiente comando en tu terminal (necesitas instalar +uv):

+
uvx edit-python-pe
+
+
+
+
+

Miembros

+ +
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/authors.py b/authors.py deleted file mode 100644 index 4de1e50..0000000 --- a/authors.py +++ /dev/null @@ -1,33 +0,0 @@ -import os -from typing import Tuple -from urllib.request import Request, urlopen - -REPO_OWNER = "pythonpe" -REPO = "pythonpe-blog" -BRANCH = "main" -AUTHORS_FILENAME = "AUTHORS" -HEADERS = {"Accept": "application/vnd.github.VERSION.raw"} -URL = ( - f"https://api.github.com/repos/{REPO_OWNER}/{REPO}/contents/" - f"{AUTHORS_FILENAME}?ref={BRANCH}" -) -AUTHORS_FILENAME = "AUTHORS" -AUTHORS_FILEPATH = os.path.join(os.path.dirname(__file__), AUTHORS_FILENAME) - - -def get_authors() -> Tuple[str, str]: - author_lines = set() - with open(AUTHORS_FILEPATH, "r") as fd: - author_lines = {line for line in fd.readlines()} - - req = Request(URL, headers=HEADERS) - with urlopen(req) as fd: - author_lines.update({line.decode("utf-8") for line in fd.readlines()}) - - for author_line in author_lines: - tokens = author_line.split("<") - email = tokens[1].strip()[:-1] - tokens = tokens[0].strip().split("(") - name = tokens[0] - nickname = tokens[1][:-1] - yield (nickname, name, f"mailto:{email}") diff --git a/_templates/ablog/collection.html b/blog/2023/index.html similarity index 100% rename from _templates/ablog/collection.html rename to blog/2023/index.html diff --git a/_templates/components/navigation.html b/blog/2024/index.html similarity index 100% rename from _templates/components/navigation.html rename to blog/2024/index.html diff --git a/ext/__init__.py b/blog/2025/index.html similarity index 100% rename from ext/__init__.py rename to blog/2025/index.html diff --git a/blog/archive/index.html b/blog/archive/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/atom.xml b/blog/atom.xml new file mode 100644 index 0000000..7c90449 --- /dev/null +++ b/blog/atom.xml @@ -0,0 +1,276 @@ + + + https://python.pe + Python Perú | Aprende y explora + 2025-09-04T18:14:55.572376+00:00 + + + ABlog + + https://python.pe/blog/members/mangel-de6021aa/ + Miguel Ángel Fernández Rodríguez + 2025-09-04T00:00:00+00:00 + + Miguel Angel Fernández Rodríguez + + <p class="ablog-post-excerpt"><p>Mangel</p> +<img alt="Python developer" class="member-gravatar" src="https://www.gravatar.com/avatar/cf7aa296aff79759801072883aa86a49?s=200" /></p> + + + MangelPython developer + 2025-09-04T00:00:00+00:00 + + + https://python.pe/blog/events/2025-08-07-segundo-meetup/ + ¡Segundo Meetup del 2025! + 2025-08-04T00:00:00+00:00 + + Jean-Pierre Chauvel + + <p class="ablog-post-excerpt"><p><img alt="Imagen del Meetup de Python Perú" src="https://python.pe/_images/2025-08-07-segundo-meetup.webp" /></p> +<p>¡Regresa el meetup mensual de la comunidad <strong>Python Perú</strong>! Este jueves 7 de +agosto tendremos una noche cargada de contenido, buenas prácticas, herramientas +modernas y mucha comunidad. Tres charlas con enfoque práctico sobre desarrollo +en Python, observabilidad, testing, arquitecturas limpias y herramientas en la +nube. El evento es <strong>gratuito y abierto al público</strong>, pensado tanto para +quienes están iniciando como para quienes ya tienen experiencia.</p> +</p> + + + Imagen del Meetup de Python Perú¡Regresa el meetup mensual de la comunidad Python Perú! Este jueves 7 de +agosto tendremos una noche cargada de contenido, buenas prácticas, herramientas +modernas y mucha comunidad. Tres charlas con enfoque práctico sobre desarrollo +en Python, observabilidad, testing, arquitecturas limpias y herramientas en la +nube. El evento es gratuito y abierto al público, pensado tanto para +quienes están iniciando como para quienes ya tienen experiencia. + 2025-08-04T00:00:00+00:00 + + + https://python.pe/blog/members/erickgnavar/ + Erick Navarro + 2025-03-15T00:00:00+00:00 + + Erick Navarro + + <p class="ablog-post-excerpt"><p>erickgnavar</p> +<img alt="Python developer" class="member-gravatar" src="https://www.gravatar.com/avatar/0c44573e5cbcd1b3d32c27e7d7b367da?s=200" /></p> + + + erickgnavarPython developer + 2025-03-15T00:00:00+00:00 + + + https://python.pe/blog/events/2025-01-24-primer-meetup/ + ¡Primer Meetup del 2025! + 2025-01-24T00:00:00+00:00 + + Jean-Pierre Chauvel + + <p class="ablog-post-excerpt"><p><img alt="Imagen del Meetup de Python Perú" src="https://python.pe/_images/2025-01-24-primer-meetup.webp" /></p> +<p>Comencemos el 2025 con energía! Únete al primer meetup del año de la comunidad +Python Perú, un espacio para compartir ideas, aprender de charlas inspiradoras y +conectar con otros apasionados por Python. Este evento está diseñado para todos, +desde principiantes hasta expertos, con el objetivo de planificar juntos las +actividades del año, fortalecer nuestra comunidad y soñar con un futuro PyCon en +Perú. 🌟</p> +</p> + + + Imagen del Meetup de Python PerúComencemos el 2025 con energía! Únete al primer meetup del año de la comunidad +Python Perú, un espacio para compartir ideas, aprender de charlas inspiradoras y +conectar con otros apasionados por Python. Este evento está diseñado para todos, +desde principiantes hasta expertos, con el objetivo de planificar juntos las +actividades del año, fortalecer nuestra comunidad y soñar con un futuro PyCon en +Perú. 🌟 + 2025-01-24T00:00:00+00:00 + + + https://python.pe/blog/events/2024-12-12-ultimo-byte-meetup/ + El Último Byte: Encuentro de Fin de Año + 2024-12-10T00:00:00+00:00 + + Jean-Pierre Chauvel + + <p class="ablog-post-excerpt"><p><img alt="Imagen del Meetup de Python Perú" src="https://python.pe/_images/2024-12-12-ultimo-byte-meetup.webp" /></p> +<p>Únete al evento de cierre de año de la comunidad Python Perú, donde +compartiremos conocimiento y construiremos juntos el camino para un 2025 lleno +de aprendizaje y colaboración.</p> +</p> + + + Imagen del Meetup de Python PerúÚnete al evento de cierre de año de la comunidad Python Perú, donde +compartiremos conocimiento y construiremos juntos el camino para un 2025 lleno +de aprendizaje y colaboración. + 2024-12-10T00:00:00+00:00 + + + https://python.pe/blog/members/zodiacfireworks/ + Martin Vuelta + 2024-06-15T00:00:00+00:00 + + zodiacfireworks + + <p class="ablog-post-excerpt"><p>zodiacfireworks</p> +<img alt="Python developer" class="member-gravatar" src="https://www.gravatar.com/avatar/8c312c2ba99fcb12205b7b2554503a87?s=200" /></p> + + + zodiacfireworksPython developer + 2024-06-15T00:00:00+00:00 + + + https://python.pe/blog/members/mario21ic/ + Mario Inga + 2024-06-14T00:00:00+00:00 + + Mario Inga + + <p class="ablog-post-excerpt"><p>mario21ic</p> +<img alt="Python developer" class="member-gravatar" src="https://www.gravatar.com/avatar/a706ed6a9fc17a2bc2b8067432d1e4ab?s=200" /></p> + + + mario21icPython developer + 2024-06-14T00:00:00+00:00 + + + https://python.pe/blog/members/jbolo/ + Jonathan Bolo Desposorio + 2024-06-14T00:00:00+00:00 + + Jonathan Bolo + + <p class="ablog-post-excerpt"><p>jbolo</p> +<img alt="Python developer" class="member-gravatar" src="https://www.gravatar.com/avatar/f3ddabbbd86e31001c3a36c5c8bf073a?s=200" /></p> + + + jboloPython developer + 2024-06-14T00:00:00+00:00 + + + https://python.pe/blog/members/jotisa/ + Jonatan Tisnado + 2024-06-14T00:00:00+00:00 + + Jonatan Tisnado + + <p class="ablog-post-excerpt"><p>jo</p> +<img alt="Python developer" class="member-gravatar" src="https://www.gravatar.com/avatar/8fa49c6cc5d73d028ef3b502daa3212a?s=200" /></p> + + + joPython developer + 2024-06-14T00:00:00+00:00 + + + https://python.pe/blog/members/manduinca/ + Jean Pierre Mandujano Gutierrez + 2024-06-14T00:00:00+00:00 + + Jean Pierre Mandujano Gutierrez + + <p class="ablog-post-excerpt"><p>manduinca</p> +<img alt="Python developer" class="member-gravatar" src="https://www.gravatar.com/avatar/cf2dcb3ade5e91d815eadcbb79d1cfb0?s=200" /></p> + + + manduincaPython developer + 2024-06-14T00:00:00+00:00 + + + https://python.pe/blog/members/darwin/ + Darwin Vasquez + 2024-06-14T00:00:00+00:00 + + Darwin Vasquez + + <p class="ablog-post-excerpt"><p>Darwin</p> +<img alt="Python developer" class="member-gravatar" src="https://www.gravatar.com/avatar/2f34db3a3210f04d6173c0a394323264?s=200" /></p> + + + DarwinPython developer + 2024-06-14T00:00:00+00:00 + + + https://python.pe/blog/events/2024-06-11-primer-meetup-presencial-2004/ + Primer Meetup Presencial 2024 + 2024-06-10T00:00:00+00:00 + + Ider Delzo + + <p class="ablog-post-excerpt"><p><img alt="Imagen del Meetup de Python Perú" src="https://python.pe/_images/2024-06-11-meetup-headline.jpeg" /></p> +<p>¡Te esperamos para una noche llena de aprendizaje, networking y crecimiento profesional en el Meetup Python Perú!</p> +</p> + + + Imagen del Meetup de Python Perú¡Te esperamos para una noche llena de aprendizaje, networking y crecimiento profesional en el Meetup Python Perú! + 2024-06-10T00:00:00+00:00 + + + https://python.pe/blog/members/oscargicast/ + Oscar Giraldo Castillo + 2024-04-27T00:00:00+00:00 + + Oscar Giraldo Castillo + + <p class="ablog-post-excerpt"><p>oscargicast</p> +<img alt="Python developer" class="member-gravatar" src="https://www.gravatar.com/avatar/2e9457bf0bb37c03d1850b8ab8bf06b8?s=200" /></p> + + + oscargicastPython developer + 2024-04-27T00:00:00+00:00 + + + https://python.pe/blog/members/richi/ + Richard Cancino + 2024-04-22T00:00:00+00:00 + + Richard Cancino + + <p class="ablog-post-excerpt"><p>richi</p> +<img alt="Python developer" class="member-gravatar" src="https://www.gravatar.com/avatar/e0abbdf781d6e6142466c3cb0bceb590?s=200" /></p> + + + richiPython developer + 2024-04-22T00:00:00+00:00 + + + https://python.pe/blog/members/soloidx/ + Ider Delzo + 2024-04-22T00:00:00+00:00 + + Ider Delzo + + <p class="ablog-post-excerpt"><p>soloidx</p> +<img alt="Python developer" class="member-gravatar" src="https://www.gravatar.com/avatar/32720c91d98b15d57166dcc8404f0d1e?s=200" /></p> + + + soloidxPython developer + 2024-04-22T00:00:00+00:00 + + + https://python.pe/blog/members/hellhound/ + Jean-Pierre Chauvel + 2024-04-19T00:00:00+00:00 + + Jean-Pierre Chauvel + + <p class="ablog-post-excerpt"><p>hellhound</p> +<img alt="Python developer" class="member-gravatar" src="https://www.gravatar.com/avatar/0d520a59095b64003f74c59589ccbc3a?s=200" /></p> + + + hellhoundPython developer + 2024-04-19T00:00:00+00:00 + + + https://python.pe/blog/events/2023-10-21-segundo-meetup/ + Segundo Meetup de Python Perú + 2023-10-21T00:00:00+00:00 + + Ider Delzo + + <p class="ablog-post-excerpt"><p><img alt="Imagen del segundo Meetup de Python Perú" src="https://python.pe/_images/2023-10-21-segundo-meetup.png" /></p> +<p>Descubre las aplicaciones de Python en Interligencia artificial y Programación de Hardware.</p> +</p> + + + Imagen del segundo Meetup de Python PerúDescubre las aplicaciones de Python en Interligencia artificial y Programación de Hardware. + 2023-10-21T00:00:00+00:00 + + diff --git a/blog/author/darwin-vasquez/index.html b/blog/author/darwin-vasquez/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/author/erick-navarro/index.html b/blog/author/erick-navarro/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/author/ider-delzo/index.html b/blog/author/ider-delzo/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/author/index.html b/blog/author/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/author/jean-pierre-chauvel/index.html b/blog/author/jean-pierre-chauvel/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/author/jean-pierre-mandujano-gutierrez/index.html b/blog/author/jean-pierre-mandujano-gutierrez/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/author/jonatan-tisnado/index.html b/blog/author/jonatan-tisnado/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/author/jonathan-bolo/index.html b/blog/author/jonathan-bolo/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/author/mario-inga/index.html b/blog/author/mario-inga/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/author/miguel-angel-fernandez-rodriguez/index.html b/blog/author/miguel-angel-fernandez-rodriguez/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/author/oscar-giraldo-castillo/index.html b/blog/author/oscar-giraldo-castillo/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/author/richard-cancino/index.html b/blog/author/richard-cancino/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/author/zodiacfireworks/index.html b/blog/author/zodiacfireworks/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/category/events/index.html b/blog/category/events/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/category/index.html b/blog/category/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/category/members/index.html b/blog/category/members/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/drafts/index.html b/blog/drafts/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/events/2023-10-21-segundo-meetup/index.html b/blog/events/2023-10-21-segundo-meetup/index.html new file mode 100644 index 0000000..fa03ba9 --- /dev/null +++ b/blog/events/2023-10-21-segundo-meetup/index.html @@ -0,0 +1,193 @@ + + + + + Segundo Meetup de Python Perú - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Segundo Meetup de Python Perú

+

Imagen del segundo Meetup de Python Perú

+

Descubre las aplicaciones de Python en Interligencia artificial y Programación de Hardware.

+

En esta charla nos acompañan:

+
    +
  • Gerardo Vilcamiza con: Ecos y Espejismos: GANs para el Futuro de la Imaginación Digital.

  • +
  • Enrique Suárez con: TinyML, el Futuro del Machine Learning en la Industria, el sector Energía y la Mineria.

  • +
  • Eduardo Yallico con: Introducción al maravilloso mundo del MicroPython.

  • +
+

Link del evento: Segundo Meetup de Python

+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/events/2024-06-11-primer-meetup-presencial-2004/index.html b/blog/events/2024-06-11-primer-meetup-presencial-2004/index.html new file mode 100644 index 0000000..b421f50 --- /dev/null +++ b/blog/events/2024-06-11-primer-meetup-presencial-2004/index.html @@ -0,0 +1,236 @@ + + + + + Primer Meetup Presencial 2024 - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Primer Meetup Presencial 2024

+

Imagen del Meetup de Python Perú

+

¡Te esperamos para una noche llena de aprendizaje, networking y crecimiento profesional en el Meetup Python Perú!

+
+

Expositores

+

En esta charla nos acompañan:

+

Speakers

+
+

Nefi Arroyo

+

Host y bienvenida:

+

Iniciaremos con una cálida bienvenida a todos los asistentes y una breve introducción sobre las actividades de la noche. Este será un espacio para conocer a los organizadores y tener una idea clara de lo que nos espera en este emocionante meetup.

+
+
+

Sergio Infante

+

Tema: Transforma tus Aplicaciones con FastAPI: Guía Práctica hacia una Arquitectura Limpia

+

En esta charla nos guiará a través de los principios de FastAPI y cómo utilizarlo para crear aplicaciones web eficientes y con una arquitectura limpia. Aprenderás buenas prácticas, patrones de diseño y cómo sacar el máximo provecho de esta poderosa herramienta de Python.

+
+
+

Manuel Solorzano

+

Tema: Tips Para Trabajar Remoto Directo Para USA

+

Únete al conversatorio interactivo donde compartirá sus experiencias y mejores consejos para trabajar de manera remota directamente para empresas en USA. Descubre estrategias para destacar en entrevistas, gestionar proyectos y mantener una comunicación efectiva con equipos internacionales.

+
+
+

Ider Delzo

+

Tema: Dominando el Envío de Datos con Estructuras de Python Avanzadas

+

Nos adentrará en el mundo de las estructuras avanzadas de Python para el manejo y envío eficiente de datos. Esta charla se enfocará en técnicas y ejemplos prácticos que te ayudarán a mejorar la performance y la eficiencia de tus aplicaciones.

+
+
+
+

OpenPUCP

+

Agradecemos a OpenPUCP por brindarnos el espacio para la reunión.

+

Les compartimos los datos de la conexión Wi-Fi:

+
    +
  • SSID: redpucp

  • +
  • Password: C9AA28BA93

  • +
+
+
+

MeetUp

+

¡Encuentra nuestras reuniones siempre en MeetUp!

+

Link del evento: Primer Meetup 2024

+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/events/2024-12-12-ultimo-byte-meetup/index.html b/blog/events/2024-12-12-ultimo-byte-meetup/index.html new file mode 100644 index 0000000..a35d9b3 --- /dev/null +++ b/blog/events/2024-12-12-ultimo-byte-meetup/index.html @@ -0,0 +1,216 @@ + + + + + El Último Byte: Encuentro de Fin de Año - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

El Último Byte: Encuentro de Fin de Año

+

Imagen del Meetup de Python Perú

+

Únete al evento de cierre de año de la comunidad Python Perú, donde +compartiremos conocimiento y construiremos juntos el camino para un 2025 lleno +de aprendizaje y colaboración.

+

Disfrutaremos de charlas relámpago, discusiones abiertas y un espacio para +generar ideas y propuestas que guiarán nuestras actividades futuras. Además, +será una excelente oportunidad para conectar con otros miembros de la comunidad +y despedir el año con entusiasmo y energía.

+
    +
  • 📅 Fecha: Jueves, 12 de diciembre de 2024

  • +
  • 🕒 Hora: 19:00 a 21:45

  • +
  • 🌐 Lugar: Open PUCP, Aula A10

  • +
+

¡Te esperamos para cerrar el año con ideas brillantes y mucho Python!

+
+

OpenPUCP

+

Agradecemos a OpenPUCP por brindarnos el espacio para la reunión.

+

Les compartimos los datos de la conexión Wi-Fi:

+
    +
  • SSID: redpucp

  • +
  • Password: C9AA28BA93

  • +
+
+
+

MeetUp

+

¡Encuentra nuestras reuniones siempre en MeetUp!

+

Link del evento: El Último Byte: Encuentro de Fin de Año

+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/events/2025-01-24-primer-meetup/index.html b/blog/events/2025-01-24-primer-meetup/index.html new file mode 100644 index 0000000..78df5d8 --- /dev/null +++ b/blog/events/2025-01-24-primer-meetup/index.html @@ -0,0 +1,216 @@ + + + + + ¡Primer Meetup del 2025! - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

¡Primer Meetup del 2025!

+

Imagen del Meetup de Python Perú

+

Comencemos el 2025 con energía! Únete al primer meetup del año de la comunidad +Python Perú, un espacio para compartir ideas, aprender de charlas inspiradoras y +conectar con otros apasionados por Python. Este evento está diseñado para todos, +desde principiantes hasta expertos, con el objetivo de planificar juntos las +actividades del año, fortalecer nuestra comunidad y soñar con un futuro PyCon en +Perú. 🌟

+
    +
  • 📅 Fecha: Viernes, 24 de enero de 2025

  • +
  • 🕒 Hora: 19:00 a 21:45

  • +
  • 🌐 Lugar: Open PUCP, Aula A10

  • +
+

¡Te esperamos para una noche llena de aprendizaje, networking y crecimiento +profesional en el Meetup Python Perú!

+
+

OpenPUCP

+

Agradecemos a OpenPUCP por brindarnos el espacio para la reunión.

+

Les compartimos los datos de la conexión Wi-Fi:

+
    +
  • SSID: redpucp

  • +
  • Password: C9AA28BA93

  • +
+
+
+

MeetUp

+

¡Encuentra nuestras reuniones siempre en MeetUp!

+

Link del evento: ¡Primer Meetup del 2025!

+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/events/2025-08-07-segundo-meetup/index.html b/blog/events/2025-08-07-segundo-meetup/index.html new file mode 100644 index 0000000..95d7c0b --- /dev/null +++ b/blog/events/2025-08-07-segundo-meetup/index.html @@ -0,0 +1,220 @@ + + + + + ¡Segundo Meetup del 2025! - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

¡Segundo Meetup del 2025!

+

Imagen del Meetup de Python Perú

+

¡Regresa el meetup mensual de la comunidad Python Perú! Este jueves 7 de +agosto tendremos una noche cargada de contenido, buenas prácticas, herramientas +modernas y mucha comunidad. Tres charlas con enfoque práctico sobre desarrollo +en Python, observabilidad, testing, arquitecturas limpias y herramientas en la +nube. El evento es gratuito y abierto al público, pensado tanto para +quienes están iniciando como para quienes ya tienen experiencia.

+
    +
  • 📅 Fecha: Jueves, 07 de agosto de 2025

  • +
  • 🕒 Hora: 19:00 a 22:00

  • +
  • 🌐 Lugar: Seguros Pacífico – Sala SUM, Piso 4

  • +
+

¡Te esperamos para una noche llena de aprendizaje, networking y crecimiento +profesional en el Meetup Python Perú!

+

🔹 Observabilidad con Python
+Ponente: Martín Vuelta
+Descubre cómo implementar observabilidad en tus aplicaciones usando herramientas. Logs, métricas, trazas y más para entender qué está pasando en tu sistema.

+

🔹 Testing con Arquitecturas Limpias: Python + AWS
+Ponente: Sergio Infante
+Aprenderemos cómo estructurar nuestras pruebas en un entorno basado en arquitectura limpia, utilizando herramientas modernas de Python y servicios de AWS.

+

🔹 Exploring Gemini CLI
+Ponente: Manuel Solorzano
+Explora el uso práctico de Gemini CLI, cómo esta herramienta puede integrarse en tus proyectos, y cómo mejora tus flujos de desarrollo.

+
+

Seguros Pacífico

+

Agradecemos a Seguros Pacífico por brindarnos el espacio para la reunión.

+
+
+

MeetUp

+

¡Encuentra nuestras reuniones siempre en MeetUp!

+

Link del evento: ¡Segundo Meetup del 2025!

+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/language/english/index.html b/blog/language/english/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/language/espanol/index.html b/blog/language/espanol/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/language/index.html b/blog/language/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/location/index.html b/blog/location/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/location/lima/index.html b/blog/location/lima/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/location/peru/index.html b/blog/location/peru/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/location/somewhere-in-the-cloud/index.html b/blog/location/somewhere-in-the-cloud/index.html new file mode 100644 index 0000000..e69de29 diff --git a/blog/members/darwin/index.html b/blog/members/darwin/index.html new file mode 100644 index 0000000..888a9c5 --- /dev/null +++ b/blog/members/darwin/index.html @@ -0,0 +1,245 @@ + + + + + Darwin Vasquez - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Darwin Vasquez

+Python developer +
+
Aliases:
+

Darwin

+
+
Ciudad:
+

Lima

+
+
Homepage:
+

404

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

Darwin, Venezolano, viviendo en Lima. Apasionado por la tecnologia y la filosofia, Ing de Sistemas de profesion. He sido voluntario en diversas comunidades de open source y difusion +de conocimiento. Disfruto un monton aprender y ayudar a otros.

+

Actualmente trabajo como sofware engineer en el backend, para PayPal (contractor), pese a que me contrataron para hacer python, he navegado en otras responsabilidades, haciendo DevOps.

+
+
+

¿Cómo programas en Python?

+

Principalmente manteniendo servicios web con Django, Flask o FastApi, aunque en mis tiempos libres, he hecho scrapping y cli applications. +Mis 2 editores favoritos son Atom y VsCode. Uso linux desde que tengo 18. Actualmente Ubuntu.

+

Si no estoy usando docker para mis apps, seguramente usare virtualenv. hasta ahora sigo prefiriendo pipenv para el manejo de paqueteria

+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

Fui voluntario en Venezuela, sostuve talleres y realice varios cursos, algunos pagos otros gratuitos. En Peru, aun no he tenido la oportunidad de aportar

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

Sii!. actualmente hago mentorias en upnotch de manera gratuita. Pueden solicitarme aca https://link.upnotch.com/Za1CPvfx5EJHYvK37. +Para lo demas, siempre es un gusto poder colaborar :)

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/members/draft-member/index.html b/blog/members/draft-member/index.html new file mode 100644 index 0000000..5ba7b72 --- /dev/null +++ b/blog/members/draft-member/index.html @@ -0,0 +1,265 @@ + + + + + Joe Doe - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Joe Doe

+Python developer +
+
Aliases:
+

joe

+
+
Ciudad:
+

Lima

+
+
Homepage:
+

https://joe-doe.org

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

Blah blah blah.

+
+
+

¿Cómo programas en Python?

+

Más blah.

+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

Mucho más blah.

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

Blah.

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/members/erickgnavar/index.html b/blog/members/erickgnavar/index.html new file mode 100644 index 0000000..57d7277 --- /dev/null +++ b/blog/members/erickgnavar/index.html @@ -0,0 +1,249 @@ + + + + + Erick Navarro - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Erick Navarro

+Python developer +
+
Aliases:
+

erickgnavar

+
+
Ciudad:
+

Somewhere in the cloud ☁️

+
+
Homepage:
+

https://erick.navarro.io

+
+
Twitch:
+

https://twitch.tv/erickgnavar

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

Soy programador, trabajé muchos años como desarrollador en diferentes lenguajes, python fue los primeros lenguajes que +aprendí y le guardo mucho cariño. Ahora trabajo como SRE pero sigo programando proyectos personales.

+
+
+

¿Cómo programas en Python?

+
    +
  • Entorno de desarrollo: Uso uv, gestiona todo lo necesario para proyectos python.

  • +
  • Editor: Uso emacs, lo llevo usando desde hace muchos años y no creo que cambie por otra cosa.

  • +
  • Terminal: alacritty, es una terminal simple, sobre ella uso tmux y con eso estoy cubierto para mi flujo de trabajo.

  • +
  • Hardware: Uso generalmente macOS para trabajar y como computador personal, también uso nixOS en una thinkpad.

  • +
+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

No, pero espero poder aportar en lo que esté a mi alcance :)

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

Si, en lo que pueda ayudar aquí ando atento :)

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/members/hellhound/index.html b/blog/members/hellhound/index.html new file mode 100644 index 0000000..44a6aef --- /dev/null +++ b/blog/members/hellhound/index.html @@ -0,0 +1,273 @@ + + + + + Jean-Pierre Chauvel - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Jean-Pierre Chauvel

+Python developer +
+
Aliases:
+

hellhound

+
+
Ciudad:
+

Lima

+
+
Homepage:
+

https://chauvel.org

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

Trabajo como Ingeniero de Software desde hace varios años.

+

Actualmente trabajo en Globant. Anteriormente +trabajaba en Encora, en Taller +Technologies y en Aureal.

+
+
+

¿Cómo programas en Python?

+

Vim es mi editor por elección, no uso otra cosa para editar texto/código. Uso +la terminal para casi todo, me desenvuelvo muy bien en ambiente basado en +caracteres.

+

Uso Poetry para virtualizar las dependencias de mis +proyectos, aunque recientemente he estado utilizado +PDM y cómo no el depurador +pdb de Python.

+

También utilizo screen tmux para multiplexar la terminal y así +administrar diferentes “ventanas” de la terminal: Una para editar, la otra para +correr el proyecto y la última para depurar ¡Genial!

+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

La verdad que tengo alguno que otro aporte muy pequeño que he hecho a lo largo +de mi carrera, solo algunos scriptcillos que están en mi cuenta de GitHub.

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

¡Claro!

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/members/jbolo/index.html b/blog/members/jbolo/index.html new file mode 100644 index 0000000..df62758 --- /dev/null +++ b/blog/members/jbolo/index.html @@ -0,0 +1,250 @@ + + + + + Jonathan Bolo Desposorio - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Jonathan Bolo Desposorio

+Python developer +
+
Aliases:
+

jbolo

+
+
Ciudad:
+

Lima, Peru

+
+
Homepage:
+

https://jbolo.dev

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

Soy Jonathan Bolo, apasionado por la tecnología y la automatización desde los primeros días con una PC equipada con procesador Intel MMX en los años 2000. Inicié mi camino con cursos de ensamblaje y electrónica básica, despertando así mi curiosidad por las computadoras.

+

Mi trayectoria profesional incluye estudios en Redes y Telecomunicaciones, sin embargo, los cursos de desarrollo (por aquel entonces PHP y JS) y sistemas operativos(Linux) fueron los que terminaron por captar mi interés. Me especializé en centrales telefónicas y callcenter basados en Asterisk OpenSource, desarrollando así módulos en C y paneles de administración web.

+

He trabajado en America Movil-Claro, especializándome en plataformas Core de Nokia y Huawei como los Charging System, Hlr, EAI(ESB, Middleware, Microservicios, etc) utilizando Java y Oracle para el desarrollo de Promociones Prepago a nivel nacional. En paralelo terminé la carrera de Ing. de sistemas.

+

Desde el 2019, trabajo en Telefónica del Peru como especialista en robotización de procesos, utilizando Python para desarrollar “robots” con técnicas avanzadas de scraping, DevOps y análisis de datos en la gerencia de Transformación Digital.

+

En mis momentos libres, además de programar, disfruto tocando el piano y leyendo filosofía.

+
+
+

¿Cómo programas en Python?

+
    +
  • Sistema operativo: Debian

  • +
  • Entorno de desarrollo: virtualenv, poetry, Docker, Jenking, microK8S, …

  • +
  • Herramientas y prácticas: pep8, flake8, entre otros linters y formatters.

  • +
  • Editor: Vim y VSCode. Probando (Neovim)[https://neovim.io/]

  • +
  • Terminal: Probando tmux

  • +
+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

Aunque actualmente tengo algunos scripts en mi cuenta de GitHub, mi objetivo es contribuir más activamente a la comunidad de Python Perú con publicaciones y colaboraciones.

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

Creo firmemente en compartir el conocimiento que he adquirido. Estoy disponible para mentoring y charlas relacionadas con Python y la automatización de procesos.

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/members/jotisa/index.html b/blog/members/jotisa/index.html new file mode 100644 index 0000000..e6f1e4b --- /dev/null +++ b/blog/members/jotisa/index.html @@ -0,0 +1,260 @@ + + + + + Jonatan Tisnado - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Jonatan Tisnado

+Python developer +
+
Aliases:
+

jo

+
+
Ciudad:
+

Lima

+
+
Homepage:
+

https://eucosmics.blogspot.com

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

Soy Jonatan G. Tisnado S. y estoy rodeado de sistemas desde toda la vida empezando con una Philips Odyssey luego una Commodore 64 para luego poseer una IBM PS/1. He sido analista, programador y gerente a lo largo de mi carrera. Actualmente estoy aprendiendo Python poco a poco.

+
+
+

¿Cómo programas en Python?

+

He empezado a usarlo en vscode y tambien he hecho trabajos en Colab de Google.

+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

Todavía.

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

Por ahora estoy dispuesto a colaborar con la comunidad en lo que pueda. Hago consultorías técnologicas ya que poseo 30+ años en el campo tecnológico.

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/members/manduinca/index.html b/blog/members/manduinca/index.html new file mode 100644 index 0000000..1456894 --- /dev/null +++ b/blog/members/manduinca/index.html @@ -0,0 +1,246 @@ + + + + + Jean Pierre Mandujano Gutierrez - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Jean Pierre Mandujano Gutierrez

+Python developer +
+
Aliases:
+

manduinca

+
+
Ciudad:
+

Lima

+
+
Homepage:
+

https://deepskill.space

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

Software Engineer, hago desarrollo de software y ciencia de datos, mi experiencia principal la he desarrollado bajo los ecosistemas de Python y Java. +Tengo más de 10 años de experiencia entre empresa corporativas y startups y en los últimos años también empecé a construir empresas, Deep Pit Technology (exit en 2022) y ahora Deep Skill Academy.

+
+
+

¿Cómo programas en Python?

+

Vim, Pycharm y Jupyter Notebook son los principales IDEs que uso, siempre con venv o docker para el manejo de ambientes.

+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

Producimos material de estudio libre con mi empresa, en nuestro canal de youtube: https://youtube.com/@deepskiller y en github: https://github.com/deep-skill/python-courses.

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

Para compartir conocimientos siempre, sobre todo si es en comunidad.

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/members/mangel-de6021aa/index.html b/blog/members/mangel-de6021aa/index.html new file mode 100644 index 0000000..18017b4 --- /dev/null +++ b/blog/members/mangel-de6021aa/index.html @@ -0,0 +1,230 @@ + + + + + Miguel Ángel Fernández Rodríguez - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Miguel Ángel Fernández Rodríguez

+Python developer +
+
Aliases:
+

Mangel

+
+
Ciudad:
+

Lima, Perú

+
+
Homepage:
+

https://mangel-portfolio.vercel.app

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

Ingeniero informático y desarrollador de software

+
+
+

¿Cómo programas en Python?

+

print(“Hola Mundo”)… Era broma. Programo principalmente usando frameworks como django, fastapi o realizando scripts, dependiendo del alcance y arquitectura del proyecto. Siempre usando las buenas prácticas como SOLID y CLEAN CODE para hacer el código más legible y escalable.

+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

He contribuido en el paquete de edit-python-pe de la comunidad de python.pe. Esperemos por más…

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

¡Yeaaaaaaaaa!

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/members/mario21ic/index.html b/blog/members/mario21ic/index.html new file mode 100644 index 0000000..684942c --- /dev/null +++ b/blog/members/mario21ic/index.html @@ -0,0 +1,249 @@ + + + + + Mario Inga - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Mario Inga

+Python developer +
+
Aliases:
+

mario21ic

+
+
Ciudad:
+

Lima

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

Me considero un apasionado por la tecnología, sobre todo la parte de seguridad. Me inicié en el Reversing engineering, pero en ese entonces nadie pagaba por ello, asi que tocó ser programador. Después di un paso al costado en la carrera para ser Engineering Manager y asi poder tener otro punto de vista en el mundo del Desarrollo de Software. +Luego al ver no habia buena integración entre las areas como Dev, QA, Negocios, Infraestructure, Architecture, Security, etc pivoteé a DevOps.

+

En mi experiencia, trabajo como Software Engineer desde hace mas de 15 años. Donde vi empresas de diferentes rubros, tales como:

+ +

Como todo en la vida a veces tocaba hacer desde cero, programando tus propios frameworks, plugins, libraries; otras veces viendo codigo legacy, modernizando projects, haciendo de bombero, realizando en investigación, cooperando con el open source, etc etc.

+
+
+

¿Cómo programas en Python?

+

Hablando de hardware pues la mayoría en la Macbook. A veces toca programar en un par de Raspberry Pi, otras en un Mini server que tengo en mi Homelab.

+

Del lado de software mi editor es VSCode, pero cuando solo hay CLi, entonces a full con Vim.

+

Python lo uso mayormente para automatizar, y por ahi algunos experimentos de Machine Learning & Deep Learning, por lo que desarrollé un amor odio con Conda.

+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

Aún no, pero pronto espero aportar con mi granito de arena.

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

Claro que si, siempre que no sea de un día para otro :D

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/members/oscargicast/index.html b/blog/members/oscargicast/index.html new file mode 100644 index 0000000..df7dcd2 --- /dev/null +++ b/blog/members/oscargicast/index.html @@ -0,0 +1,257 @@ + + + + + Oscar Giraldo Castillo - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Oscar Giraldo Castillo

+Python developer +
+
Aliases:
+

oscargicast

+
+
Ciudad:
+

Lima

+
+
Homepage:
+

https://oscargicast.com

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

De niño me gustaban los videojuegos RPG como Pokemon, mi primer contacto con la programación fue en el colegio con assembler para uC PIC y C, recuerdo intercambiar mi primer discman por un libro de ASM para procesadores Intel (Creo que me estafaron). Me gustaba ver Battlebots, Medabots y Transformers, y por eso decidí estudiar algo relacionado.

+

Me gusta coleccionar teclados mecánicos, en algún momento aprendí Dvorak y espero retomarlo en algún momento.

+

Terminé la carrera de Ing. Mecatrónica en la UNI el 2013 y desde entonces vengo trabajando como Ingeniero de Software principalmente con Python en los roles de Backend, Devops y actualmente Data Engineer en Foris.

+
+
+

¿Cómo programas en Python?

+
    +
  • Entorno de desarrollo: Utilizo pyenv junco con pyenv-virtualenv o poetry. O muchas veces simplemente Docker.

  • +
  • Herramientas y prácticas: Siguiendo los PEPs, con algunos linters y formatters.

  • +
  • Editor: Como editor he usado Vim hasta el año pasado (para no empezar desde cero recomiendo Lunar o Space Vim) que empecé a usar VS Code (para hacer peer programing por live share) siempre en evil mode para no olvidar vim :)

  • +
  • Terminal:

    + +
  • +
+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

En la universidad (hace mucho tiempo), fui parte de la organización de la comunidad Python UNI en donde dictamos talleres gratuitos de Python para estudiantes de la universidad. También colaboré en algunos talleres organizados por otras comunidades de Python y espero podamos retomar nuevamente este impulso con Python Perú.

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

¡Sí! Siempre es bueno compartir conocimiento y aprender de otros.

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/members/richi/index.html b/blog/members/richi/index.html new file mode 100644 index 0000000..8a06576 --- /dev/null +++ b/blog/members/richi/index.html @@ -0,0 +1,253 @@ + + + + + Richard Cancino - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Richard Cancino

+Python developer +
+
Aliases:
+

richi

+
+
Ciudad:
+

Lima

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

Soy Python lover desde la primera vez que toqué una pc y desarrollador de software, +empecé a trabajar hace 6 años y siempre intento crear cosas nuevas usando Python.

+

Me considero backend developer y tengo mucha atracción hacia DRF y FastAPI, (ambos +son mis frameworks favoritos). Así como también tuve la oportunidad de realizar +apps mobile usando React Native y Flutter; y realicé tareas como frontend developer +con React y Angular (casi por 2 años).

+

Ya llevo más de 3 años trabajando para proyectos de USA, tuve la oportunidad de +estar en Paypal alrededor de 2 años donde aprendí mucho sobre Django, AWS, K8s, +Terraform… y a como lidear con los famosos oncalls mediante Datadog y PDuty.

+
+
+

¿Cómo programas en Python?

+

Comencé con una Linux - Ubuntu (versión 12 creo que tenía en esos años) y actualemente +cuento con una MacBook Intel (no usen M1/M2/M3, consejo de conejo). Suelo dockerizar +mis proyectos o a veces toca trabajarlo como Dios lo mande.

+

En software suelo usar mucho Pycharm (cuando el proyecto es un monolito) y VsCode +(cuando son microservicios.)

+

Sobre Python, trato de trabajar con entornos virtuales la mayor parte del tiempo +(Poetry y venv), en relación a versiones de Python, uso Pyenv y para temas de +terminales, el magnífico iterm2 con .zsh

+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

Aún no, ya pronto dejaré su respectiva research de algo que me guste, ya me +iluminaré.

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

Sí claro, siempre soy todo oídos, es cuestión de que me avisen con tiempo.

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/members/soloidx/index.html b/blog/members/soloidx/index.html new file mode 100644 index 0000000..b8d7447 --- /dev/null +++ b/blog/members/soloidx/index.html @@ -0,0 +1,255 @@ + + + + + Ider Delzo - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Ider Delzo

+Python developer +
+
Aliases:
+

soloidx

+
+
Ciudad:
+

Lima

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

Soy un desarrollador de software que empezó trabajando con PHP (hace mas de 15 +años) y luego fue acogido por Python poco tiempo después.

+

Trabajo desde entonces principalmente como desarrollador web, mayormente backend +pero aprendí a trabajar en frontend, devops, moviles y a barrer el piso de la +oficina.

+

Como siguiente paso en mi carrera profesional me gustaria involucrarme en +proyectos de inteligencia artificial y trato de tomar proyectos relacionados +cada vez que puedo.

+

Sobre mi experiencia, he trabajado en distintas compañias, algunos con proyectos +desde cero, otras con código heredado, algunas ardiendo en llamas y pidiendo +todo para ayer por lo que puedo tener una visiónn flexible de la situación.

+
+
+

¿Cómo programas en Python?

+

En hardware mayormente trabajo con una Macbook (Aunque las mayorias de mis +herramientas son open source) una tablet para leer y diagramar y un microfono de +youtuber frustrado.

+

En software VSCode es mi editor actual, aunque entre temporadas alterno con Vim +y Emacs.

+

Sobre Python, trato de trabajar con entornos virtuales la mayor parte del tiempo +(PDM, Poetry, venv), Pyenv para mi manejo de versiones y Docker para manejar +servicios externos.

+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

Aún no tengo nada con la que pueda fanfarronear pero tengo en mente armar un +canal de YouTube con contenido de Python en español.

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

Definitivamente, siempre que me avisen con suficiente tiempo para prepararme.

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/members/zodiacfireworks/index.html b/blog/members/zodiacfireworks/index.html new file mode 100644 index 0000000..db61ea9 --- /dev/null +++ b/blog/members/zodiacfireworks/index.html @@ -0,0 +1,254 @@ + + + + + Martin Vuelta - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Martin Vuelta

+Python developer +
+
Aliases:
+

zodiacfireworks

+
+
Ciudad:
+

Lima

+
+
+
+

Sobre mí

+
+

¿Quién eres y a qué te dedicas?

+

Actualmente trabajo como CTO de Dynova en donde desarrollamos proyectos de Desarrollo de Software y Observabilidad.

+

Estudié fisica y me incline por la física computacional desde donde di el salto a la ingenieria de sistemas. Hace más de 10 años que trabajo en desarrollo de software con Python, principalmente, y muchos otros lenguajes.

+
+
+

¿Cómo programas en Python?

+

Actualmente dirjo equipos y participo activamente del desarrollo integraciones y soluciones de observabilidad, procesamiento de datos y sistemas web. Cada tanto tambien hago algunas cosas de computación cientifica, modelamiento numerico (especialmente en física y matematica) y computacion cuantica como entretenimiento personal.

+

Sobre mis herramientas del dia a dia: mi combo favorito es Pyenv + Poetry, en la medidia de lo posible todo en Linux (cualquier distro basada en Debian o Redhat). Los editores que uso son VSCode, Vim o lo que haya a la mano. Uso contenedores en todo lo que sea posible y necesario.

+
+
+

¿Tienes algún aporte a la comunidad de Python?

+

Tengo algunos proyectos open source (https://pypi.org/user/zodiacfireworks/). Tambien he participado organizando meetups y dando charlas acerca de Python y sus usos en varios eventos.

+
+
+

¿Estás disponible para hacer mentoring, consultorías, charlas?

+

Claro que sí :D ¿Alguien dijo Python? :v Solo avisen con tiempo suficiente :3

+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/code-of-conduct/index.html b/code-of-conduct/index.html new file mode 100644 index 0000000..3e29158 --- /dev/null +++ b/code-of-conduct/index.html @@ -0,0 +1,270 @@ + + + + + Conducta - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Conducta

+
    +
  • Nos comprometemos a proporcionar un entorno amigable, seguro y acogedor para +todos, independientemente del nivel de experiencia, identidad de género y +expresión, orientación sexual, discapacidad, apariencia personal, tamaño +corporal, raza, etnia, edad, religión, nacionalidad u otra característica +similar.

  • +
  • Por favor, evita el uso de alias o apodos de naturaleza sexual u otros que +puedan afectar la amabilidad, seguridad y bienvenida para todos.

  • +
  • Sé amable y cortés. No es necesario ser grosero o maleducado.

  • +
  • Respeta que las personas tengan diferencias de opinión y que cada elección de +diseño o implementación conlleva un intercambio y numerosos costos. Rara vez +hay una única respuesta correcta.

  • +
  • Por favor, limita las críticas no estructuradas. Si tienes ideas sólidas que +desees experimentar, haz una copia y observa cómo funciona.

  • +
  • Te excluiremos de la interacción si insultas, menosprecias o acosas a alguien. +Ese comportamiento no es bienvenido. Interpretamos el término “acoso” según la +definición en el Citizen Code of +Conduct; +si tienes dudas sobre lo que podría incluirse en ese concepto, por favor, +consulta su definición. En particular, no toleramos el comportamiento que +excluye a personas pertenecientes a grupos socialmente marginados.

  • +
  • El acoso privado también es inaceptable. No importa quién seas, si sientes que +has sido acosado o te sientes incómodo por un miembro de la comunidad, por +favor ponte en contacto inmediatamente con uno de los operadores del canal o con +cualquier miembro del equipo de moderación de Python Perú. Ya seas un +colaborador habitual o un recién llegado, nos importa que esta comunidad sea un +lugar seguro para ti y te respaldamos.

  • +
  • Del mismo modo, cualquier forma de spam, troleo, provocación o comportamiento +que llame la atención no es bienvenido.

  • +
+
+
+

Moderación

+

Estas son las políticas para mantener los estándares de conducta de nuestra +comunidad. Si sientes que un hilo necesita moderación, por favor contacta al +equipo de moderación de Python Perú.

+
    +
  1. Los comentarios que violen los estándares de conducta de Python Perú, +incluidos los comentarios odiosos, hirientes, opresivos o excluyentes, no están +permitidos. (Se permite el uso de palabras malsonantes, pero nunca dirigidas a +otro usuario y nunca de manera odiosa).

  2. +
  3. Los comentarios que los moderadores consideren inapropiados, ya sea que estén +enumerados en el código de conducta o no, tampoco están permitidos.

  4. +
  5. Los moderadores responderán inicialmente a dichos comentarios con una +advertencia.

  6. +
  7. Si la advertencia no es atendida, el usuario será “expulsado”, es decir, +eliminado del canal de comunicación para calmarse.

  8. +
  9. Si el usuario regresa y continúa causando problemas, será baneado, es decir, +excluido indefinidamente.

  10. +
  11. Los moderadores pueden optar, a su discreción, desbanear al usuario si fue la +primera ofensa y ofrece una disculpa genuina a la parte ofendida.

  12. +
  13. Si un moderador banea a alguien y consideras que fue injustificado, por favor +trátalo con ese moderador, o con un moderador diferente, en privado. Las quejas +sobre baneos en el canal no están permitidas.

  14. +
  15. Los moderadores están sujetos a un estándar más alto que otros miembros de la +comunidad. Si un moderador crea una situación inapropiada, deben esperar menos +margen de maniobra que los demás.

  16. +
+

En la comunidad de Python Perú, nos esforzamos por dar un paso adicional para +cuidarnos mutuamente. No solo apuntes a ser técnicamente impeclable, intenta ser +tu mejor versión. En particular, evita coquetear con temas ofensivos o +sensibles, especialmente si son fuera de tema; esto conduce con demasiada +frecuencia a peleas innecesarias, sentimientos heridos y falta de confianza; +peor aún, puede alejar por completo a las personas de la comunidad.

+

Y si alguien cuestiona algo que dijiste o hiciste, resiste la tentación de ser +defensivo. Simplemente deja de hacer lo que te reclamaron y discúlpate. Incluso +si sientes que fuiste malinterpretado o acusado injustamente, es probable que +haya algo que podrías haber comunicado mejor; recuerda que es tu responsabilidad +hacer que tus compañeros Pythonistas se sientan cómodos. Todos quieren llevarse +bien y estamos todos aquí en primer lugar porque queremos hablar sobre +tecnología genial. Descubrirás que la gente estará deseosa de asumir una buena +intención y perdonar siempre que ganes su confianza.

+

Las políticas de aplicación enumeradas arriba se aplican a todos los lugares +oficiales de Python Perú. Para otros proyectos que adopten el Código de Conducta +de Python Perú, por favor contacta a los mantenedores de esos proyectos para la +aplicación. Si deseas utilizar este código de conducta para tu propio proyecto, +considera mencionar explícitamente tu política de moderación o hacer una copia +con tu propia política de moderación para evitar confusiones.

+

Adaptado de la Node.js Policy on +Trolling, así como de +la Contributor Covenant +v1.3.0.

+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/conf.py b/conf.py deleted file mode 100644 index 42e05e5..0000000 --- a/conf.py +++ /dev/null @@ -1,437 +0,0 @@ -#!/usr/bin/env python - - -# Python Perú build configuration file, created by -# `ablog start` on Fri Apr 5 20:18:51 2024. -# -# Note that not all possible configuration values are present in this file. -# All configuration values have a default; values that are commented out -# serve to show the default. - -import locale -import sys -from pathlib import Path - -from authors import get_authors - -sys.path.append(str(Path(".").resolve())) -sys.path.append(str(Path("./ext").resolve())) - -try: - locale.setlocale(locale.LC_ALL, "es_ES.UTF-8") -except locale.Error: - pass - -# -- General ABlog Options ---------------------------------------------------- - -# A path relative to the configuration directory for blog archive pages. -blog_path = "blog" - -# The "title" for the blog, used in active pages. Default is ``'Blog'``. -blog_title = "Python Perú | Aprende y explora" - -# Base URL for the website, required for generating feeds. -# e.g. blog_baseurl = "http://example.com/" -blog_baseurl = "https://python.pe" - -# Base URL for sphinx-sitemap -html_baseurl = "https://python.pe/" - -# Choose to archive only post titles. Archiving only titles can speed -# up project building. -# blog_archive_titles = False - -# -- Blog Authors, Languages, and Locations ----------------------------------- - -# A dictionary of author names mapping to author full display names and -# links. Dictionary keys are what should be used in ``post`` directive -# to refer to the author. Default is ``{}``. -blog_authors = { - nickname: (name, email_link) - for nickname, name, email_link in get_authors() -} - - -# A dictionary of language code names mapping to full display names and -# links of these languages. Similar to :confval:`blog_authors`, dictionary -# keys should be used in ``post`` directive to refer to the locations. -# Default is ``{}``. -# blog_languages = { -# 'en': ('English', None), -# } - - -# A dictionary of location names mapping to full display names and -# links of these locations. Similar to :confval:`blog_authors`, dictionary -# keys should be used in ``post`` directive to refer to the locations. -# Default is ``{}``. -# blog_locations = { -# 'Earth': ('The Blue Planet', 'https://en.wikipedia.org/wiki/Earth), -# } - -# This will prevent ablog from injecting its own templates into the Sphinx -# build. This is only useful when you have a custom template bridge (rare). -# See https://github.com/sunpy/ablog/pull/144 for the full context. -skip_injecting_base_ablog_templates = True - -# -- Blog Post Related -------------------------------------------------------- - -# Format date for a post. -# post_date_format = '%%b %%d, %%Y' - -# Number of paragraphs (default is ``1``) that will be displayed as an excerpt -# from the post. Setting this ``0`` will result in displaying no post excerpt -# in archive pages. This option can be set on a per post basis using -post_auto_excerpt = 2 - -# Index of the image that will be displayed in the excerpt of the post. -# Default is ``0``, meaning no image. Setting this to ``1`` will include -# the first image, when available, to the excerpt. This option can be set -# on a per post basis using :rst:dir:`post` directive option ``image``. -# post_auto_image = 0 - -# Number of seconds (default is ``5``) that a redirect page waits before -# refreshing the page to redirect to the post. -# post_redirect_refresh = 5 - -# When ``True``, post title and excerpt is always taken from the section that -# contains the :rst:dir:`post` directive, instead of the document. This is the -# behavior when :rst:dir:`post` is used multiple times in a document. Default -# is ``False``. -# post_always_section = False - -# When ``True``, links to the previous and next posts will be rendered at the -# bottom of the page. -# Default is ``True`` -post_show_prev_next = False - -# When ``False``, the :rst:dir:`orphan` directive is not automatically set -# for each post. Without this directive, Sphinx will warn about posts that -# are not explicitly referenced via another document. :rst:dir:`orphan` can -# be set on a per-post basis as well if this is false. Default is ``True``. -# post_auto_orphan = True - -# -- ABlog Sidebars ------------------------------------------------------- - -# There are seven sidebars you can include in your HTML output. -# postcard.html provides information regarding the current post. -# recentposts.html lists most recent five posts. Others provide -# a link to a archive pages generated for each tag, category, and year. -# In addition, there are authors.html, languages.html, and locations.html -# sidebars that link to author and location archive pages. -# html_sidebars = {} - -# -- Blog Feed Options -------------------------------------------------------- - -# Turn feeds by setting :confval:`blog_baseurl` configuration variable. -# Choose to create feeds per author, location, tag, category, and year, -# default is ``False``. -# blog_feed_archives = False - -# Choose to display full text in blog feeds, default is ``False``. -# blog_feed_fulltext = False - -# Blog feed subtitle, default is ``None``. -# blog_feed_subtitle = None - -# Choose to feed only post titles, default is ``False``. -# blog_feed_titles = False - -# Specify custom Jinja2 templates for feed entry elements: -# `title`, `summary`, or `content` -# For example, to add an additional feed for posting to social media: -# blog_feed_templates = { -# # Use defaults, no templates -# "atom": {}, -# # Create content text suitable posting to social media -# "social": { -# # Format tags as hashtags and append to the content -# "content": "{ title }{% for tag in post.tags %}" -# " #{ tag.name|trim()|replace(' ', '') }" -# "{% endfor %}", -# }, -# } -# Default: Create one `atom.xml` feed without any templates -# blog_feed_templates = {"atom": {} } - -# Specify number of recent posts to include in feeds, default is ``None`` -# for all posts. -# blog_feed_length = None - -# -- Font-Awesome Options ----------------------------------------------------- - -# ABlog templates will use of Font Awesome icons if one of the following -# is ``True`` - -# Link to `Font Awesome`_ at `Bootstrap CDN`_ and use icons in sidebars -# and post footers. Default: ``None`` -# fontawesome_link_cdn = None - -# Sphinx_ theme already links to `Font Awesome`_. Default: ``False`` -# fontawesome_included = False - -# Alternatively, you can provide the path to `Font Awesome`_ :file:`.css` -# with the configuration option: fontawesome_css_file -# Path to `Font Awesome`_ :file:`.css` (default is ``None``) that will -# be linked to in HTML output by ABlog. -# fontawesome_css_file = None - -# -- Disqus Integration ------------------------------------------------------- - -# You can enable Disqus_ by setting ``disqus_shortname`` variable. -# Disqus_ short name for the blog. -# disqus_shortname = None - -# Choose to disqus pages that are not posts, default is ``False``. -# disqus_pages = False - -# Choose to disqus posts that are drafts (without a published date), -# default is ``False``. -# disqus_drafts = False - -# -- Sphinx Options ----------------------------------------------------------- - -# If your project needs a minimal Sphinx version, state it here. -needs_sphinx = "1.2" - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - "sphinx.ext.extlinks", - "sphinx.ext.intersphinx", - "sphinx.ext.todo", - "sphinx.ext.autodoc", - "sphinx.ext.autosummary", - "ablog", - "myst_parser", - "sphinxcontrib.youtube", - "sphinx_copybutton", - "sphinx_design", - "sphinx_tabs.tabs", - "sphinx_togglebutton", - "sphinx_sitemap", - "sphinxext.opengraph", - "embed", - "gravatar", - "sketchviz", - "notion", -] - -myst_enable_extensions = [ - "amsmath", - "attrs_inline", - "attrs_block", - "colon_fence", - "deflist", - "dollarmath", - "fieldlist", - "html_admonition", - "html_image", - "linkify", - "replacements", - "smartquotes", - "strikethrough", - "substitution", - "tasklist", -] - -# The suffix(es) of source filenames. -source_suffix = ".rst" - -# The encoding of source files. -# source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = "index" - -# General information about the project. -project = "Python Perú" -copyright = "Copyright © 2024, Python Perú" -author = "Python Perú" - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = "" -# The full version, including alpha/beta/rc tags. -release = "" - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = "es" - -# sphinx-sitemap locales -sitemap_locales = [None] - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -# today = '' -# Else, today_fmt is used as the format for a strftime call. -# today_fmt = '%%B %%d, %%Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = [ - "posts/*/.ipynb_checkpoints/*", - ".github/*", - ".history", - "github_submodule/*", - "LICENSE.md", - "README.md", - ".venv/*", - "node_modules/*", -] - -# The reST default role (used for this markup: `text`) to use for all -# documents. -# default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -# add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -# add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -# show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = "sphinx" - -# A list of ignored prefixes for module index sorting. -# modindex_common_prefix = [] - -# If true, keep warnings as "system message" paragraphs in the built documents. -# keep_warnings = False - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = "shibuya" - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -html_theme_options = { - "accent_color": "tomato", - "globaltoc_expand_depth": 1, -} - -# Add any paths that contain custom themes here, relative to this directory. -# html_theme_path = [alabaster.get_path()] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -html_title = "Python Perú" - -# A shorter title for the navigation bar. Default is the same as html_title. -# html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -html_logo = "_static/logo/logo.svg" - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -html_favicon = "_static/favicon/favicon-48x48.png" - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ["_static"] - -html_css_files = ["css/markdown.css"] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ["_templates"] - -# Add any extra paths that contain custom files (such as robots.txt or -# .htaccess) here, relative to this directory. These files are copied -# directly to the root of the documentation. -# html_extra_path = [] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -# html_last_updated_fmt = '%%b %%d, %%Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -# html_use_smartypants = True - -# Additional templates that should be rendered to pages, maps page names to -# template names. -# html_additional_pages = {} - -# If false, no module index is generated. -# html_domain_indices = True - -# If false, no index is generated. -# html_use_index = True - -# If true, the index is split into individual pages for each letter. -# html_split_index = False - -# If true, links to the reST sources are added to the pages. -# html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -# html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -# html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -# html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -# html_file_suffix = None - -# Language to be used for generating the HTML full-text search index. -# Sphinx supports the following languages: -# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' -# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' -html_search_language = "es" - -# A dictionary with options for the search language support, empty by default. -# Now only 'ja' uses this config value -# html_search_options = {'type': 'default'} - -# The name of a javascript file (relative to the configuration directory) that -# implements a search results scorer. If empty, the default will be used. -# html_search_scorer = 'scorer.js' - -# Output file base name for HTML help builder. -htmlhelp_basename = "PythonPerdoc" - -# sphinx-sitemap URL scheme -sitemap_url_scheme = "{link}" - -# A list of paths that contain extra files not directly related to the -# documentation. -html_extra_path = ["_extra"] - -# OpenGraph options -ogp_site_url = "https://www.python.pe" -ogp_enable_meta_description = True -ogp_social_cards = { - "line_color": "#4078c0", - "image": "_static/logo/logo.png", -} -# Ensures og:image meta tag generation which is not always generated by sphinxext.opengraph -ogp_image = "_static/logo/logo.png" diff --git a/events/index.html b/events/index.html new file mode 100644 index 0000000..1c504f8 --- /dev/null +++ b/events/index.html @@ -0,0 +1,220 @@ + + + + + Eventos - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Eventos

+
    +
  • ¡Segundo Meetup del 2025! publicado el lunes, agosto 04, 2025

    +

    Imagen del Meetup de Python Perú

    +

    ¡Regresa el meetup mensual de la comunidad Python Perú! Este jueves 7 de +agosto tendremos una noche cargada de contenido, buenas prácticas, herramientas +modernas y mucha comunidad. Tres charlas con enfoque práctico sobre desarrollo +en Python, observabilidad, testing, arquitecturas limpias y herramientas en la +nube. El evento es gratuito y abierto al público, pensado tanto para +quienes están iniciando como para quienes ya tienen experiencia.

    +
  • +
  • ¡Primer Meetup del 2025! publicado el viernes, enero 24, 2025

    +

    Imagen del Meetup de Python Perú

    +

    Comencemos el 2025 con energía! Únete al primer meetup del año de la comunidad +Python Perú, un espacio para compartir ideas, aprender de charlas inspiradoras y +conectar con otros apasionados por Python. Este evento está diseñado para todos, +desde principiantes hasta expertos, con el objetivo de planificar juntos las +actividades del año, fortalecer nuestra comunidad y soñar con un futuro PyCon en +Perú. 🌟

    +
  • +
  • El Último Byte: Encuentro de Fin de Año publicado el martes, diciembre 10, 2024

    +

    Imagen del Meetup de Python Perú

    +

    Únete al evento de cierre de año de la comunidad Python Perú, donde +compartiremos conocimiento y construiremos juntos el camino para un 2025 lleno +de aprendizaje y colaboración.

    +
  • +
  • Primer Meetup Presencial 2024 publicado el lunes, junio 10, 2024

    +

    Imagen del Meetup de Python Perú

    +

    ¡Te esperamos para una noche llena de aprendizaje, networking y crecimiento profesional en el Meetup Python Perú!

    +
  • +
  • Segundo Meetup de Python Perú publicado el sábado, octubre 21, 2023

    +

    Imagen del segundo Meetup de Python Perú

    +

    Descubre las aplicaciones de Python en Interligencia artificial y Programación de Hardware.

    +
  • +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ext/embed.py b/ext/embed.py deleted file mode 100644 index 9f7017b..0000000 --- a/ext/embed.py +++ /dev/null @@ -1,73 +0,0 @@ -"""Allows embedding generic iframes into the docs. -""" - -from docutils import nodes -from docutils.parsers.rst import Directive -from jinja2 import BaseLoader, Environment -from sphinx.application import Sphinx - -TEMPLATE = """ -
-
- -""" - - -def _split(a): - return {s.strip() for s in (a or "").split(",")} - - -def _to_boolean(argument: str) -> str: - return argument.lower().strip() == "true" - - -class Embed(Directive): - arguments = 1 - has_content = True - final_argument_whitespace = False - option_spec = { - "class": lambda a: a.strip(), - "style": lambda a: a.strip(), - } - - def run(self): - url = self.content[0] - klass = self.options.get("class") - style = self.options.get("style") - - template = Environment(loader=BaseLoader).from_string(TEMPLATE) - out = template.render( - url=url, - klass=klass, - style=style, - ) - # Use a raw pass-through node - para = nodes.raw("", out, format="html") - return [para] - - -def setup(app: Sphinx): - app.add_directive("embed", Embed) - - return { - "version": "0.1", - "parallel_read_safe": True, - "parallel_write_safe": True, - } diff --git a/ext/gravatar.py b/ext/gravatar.py deleted file mode 100644 index 54a89dc..0000000 --- a/ext/gravatar.py +++ /dev/null @@ -1,54 +0,0 @@ -"""A directive to generate an image tag with a Gravatar pic. -""" - -from docutils import nodes -from docutils.parsers.rst import Directive -from libgravatar import Gravatar -from sphinx.application import Sphinx -from sphinx.util import logging - -logger = logging.getLogger(__name__) - - -def _split(value: str) -> list: - return [v.strip() for v in value.split(",")] - - -class GravatarImage(Directive): - arguments = 1 - has_content = True - final_argument_whitespace = False - option_spec = { - "alt": lambda a: a.strip(), - "class": _split, - "width": lambda a: a.strip(), - } - - def run(self): - email = self.content[0] - alt = self.options.get("alt", "Python developer") - klass = self.options.get("class") - width = self.options.get("width") - - logger.info(f"Getting Gravatar image for email: {email}") - url = Gravatar(email).get_image() - if width is not None: - url = f"{url}?s={width}" - logger.info(f"Got image URL: {url}") - - data = {} - if klass is not None: - data["classes"] = klass - - image = nodes.image(alt=alt, classes=klass, uri=url) - return [image] - - -def setup(app: Sphinx): - app.add_directive("gravatar", GravatarImage) - - return { - "version": "0.1", - "parallel_read_safe": True, - "parallel_write_safe": True, - } diff --git a/ext/notion.py b/ext/notion.py deleted file mode 100644 index 8fbe304..0000000 --- a/ext/notion.py +++ /dev/null @@ -1,52 +0,0 @@ -"""A directive to generate an iframe with a Notion page.""" - -import urllib.parse - -from docutils import nodes -from docutils.parsers.rst import Directive -from sphinx.application import Sphinx -from sphinx.util import logging - -logger = logging.getLogger(__name__) - -TEMPLATE: str = """ - -""" - - -class Notion(Directive): - has_content = True - final_argument_whitespace = False - - def run(self): - if not self.content: - raise self.error("Notion directive requires a URL") - if len(self.content) > 1: - raise self.error("Notion directive only accepts a single URL") - url = self.content[0] - # Basic validation that it's a Notion URL - if ( - not url.startswith( - ("https://notion.site", "https://www.notion.so") - ) - and "notion" not in url - ): - raise self.error("URL does not appear to be a valid Notion URL") - - para = nodes.raw( - "", - TEMPLATE.format(url=urllib.parse.quote(url, safe=":/?&=+")), - format="html", - ) - return [para] - - -def setup(app: Sphinx): - app.add_directive("notion", Notion) - - return { - "version": "0.1", - "parallel_read_safe": True, - "parallel_write_safe": True, - } diff --git a/ext/sketchviz.py b/ext/sketchviz.py deleted file mode 100644 index e4fb85e..0000000 --- a/ext/sketchviz.py +++ /dev/null @@ -1,91 +0,0 @@ -"""A directive to generate an embedded svg image using Graphviz/Sketchviz -backend parsers -""" - -import hashlib -import os -import subprocess -from tempfile import NamedTemporaryFile - -from ablog.commands import find_confdir, read_conf -from docutils import nodes -from docutils.parsers.rst import Directive -from jinja2 import BaseLoader, Environment -from sphinx.application import Sphinx -from sphinx.util import logging - -logger = logging.getLogger(__name__) - -TEMPLATE = """ -
- -
-""" -FILENAME_EXT = ".svg" - - -class SketchvizError(Exception): - pass - - -class Sketchviz(Directive): - arguments = 1 - has_content = True - final_argument_whitespace = False - option_spec = { - "static-subdir": lambda a: a.strip(), - } - - def run(self): - static_subdir = self.options.get("static-subdir", "images/sketchviz") - confdir = find_confdir() - conf = read_conf(confdir) - html_static_path = getattr(conf, "html_static_path", []) - - if len(html_static_path) == 0: - raise SketchvizError( - "html_static_path should have at least one path configured" - ) - - # We choose the first path as the default path for the image - save_path = os.path.join(html_static_path[0], static_subdir) - - # Try to make the dir if it doesn't exist - os.makedirs(save_path, exist_ok=True) - - temp_name = None - h = hashlib.new("sha256") - with NamedTemporaryFile( - mode="w", encoding="utf-8", delete=False, delete_on_close=False - ) as fd: - for content in self.content: - line = f"{content}\n" - h.update(line.encode()) - fd.write(line) - temp_name = fd.name - - filename = h.digest().hex() - filename = f"{filename}{FILENAME_EXT}" - save_path = os.path.join(save_path, filename) - # TODO: add a proper way to alert user when this binary is not found - binary_path = os.environ.get("SKETCHVIZ_BINARY") - subprocess.run([binary_path, temp_name, save_path], check=True) - os.remove(temp_name) - logger.info(f"Sketchviz: Created SVG image: {save_path}") - - template = Environment(loader=BaseLoader).from_string(TEMPLATE) - - out = template.render(url=save_path) - # User a raw pass-through node - para = nodes.raw("", out, format="html") - return [para] - - -def setup(app: Sphinx): - app.add_directive("sketchviz", Sketchviz) - - return { - "version": "0.1", - "parallel_read_safe": True, - "parallel_write_safe": True, - } diff --git a/genindex/index.html b/genindex/index.html new file mode 100644 index 0000000..5a1c5ef --- /dev/null +++ b/genindex/index.html @@ -0,0 +1,103 @@ + + + + + Índice - Python Perú + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+
+ + +

Índice

+ +
+ +
+ + +
+ +
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..92ffb33 --- /dev/null +++ b/index.html @@ -0,0 +1,239 @@ + + + + + Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+
+
+

Python Perú

+

¡Bienvenidos a la Comunidad Peruana de Python!

+ +
+
+
+
+
+
+ Nosotros
+

Conoce un poco más sobre nosotros y sobre nuestros miembros de la comunidad +Python Perú.

+
+
+
+
+
+
+
+ Eventos
+

Entérate de los últimos eventos locales de nuestra comunidad y otras.

+
+
+
+
+
+
+
+ Blog
+

Infórmate de lo último de lo que acontece en nuestra comunidad.

+
+
+
+
+
+
+
+ Código de Conducta
+

Revisa nuestras normas de como integrarte en la comunidad de Python Perú.

+
+
+
+
+
+

Python developer

+ +
+
+
+
+
+ +
+ + + +
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/learning-path/cloud-devops/index.html b/learning-path/cloud-devops/index.html new file mode 100644 index 0000000..c91b247 --- /dev/null +++ b/learning-path/cloud-devops/index.html @@ -0,0 +1,229 @@ + + + + + Cloud y DevOps - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Cloud y DevOps

+

En esta sección, hemos recopilado una selección de recursos especialmente +diseñados para potenciar las habilidades de los Pythonistas que se especializan +en Cloud y DevOps. Tanto si estás dando tus primeros pasos en este ámbito como +si ya eres un experto en Cloud y DevOps, encontrarás enlaces a herramientas +clave, libros imprescindibles, blogs especializados y videos tutoriales que te +ayudarán a dominar Python en el contexto de la nube y la infraestructura como +código.

+

Para aquellos que están incursionando en Cloud y DevOps con Python, te +recomendamos explorar recursos que te introduzcan a conceptos fundamentales como +despliegue automatizado, orquestación de contenedores con Docker y Kubernetes, +gestión de infraestructura con herramientas como Terraform, y cómo utilizar +Python para automatizar tareas de DevOps. Estos recursos te brindarán una base +sólida para trabajar de manera eficiente en entornos de Cloud y DevOps con +Python.

+

Para los Pythonistas con experiencia en Cloud y DevOps, te ofrecemos recursos +avanzados como libros especializados en arquitectura cloud, implementación de +pipelines de CI/CD con Python, blogs que exploran casos de uso reales en Cloud y +DevOps, videos sobre técnicas avanzadas de despliegue y gestión de +infraestructura en la nube, y tutoriales prácticos que te desafiarán a optimizar +y escalar tus procesos de desarrollo en la nube. Con estos recursos a tu +disposición, podrás llevar tus habilidades de Python en Cloud y DevOps al +siguiente nivel, mejorar la eficiencia de tus proyectos y destacarte como un +experto en este campo en constante evolución. ¡Explora, aprende y conviértete en +un Pythonista líder en Cloud y DevOps!

+

Leyenda:

+

📗: Libro

+

📹: Video tutorial

+

🎓: Curso

+

🧑‍💻: Código práctico

+

📝: Blog post

+

Los nombres con asterisco al final (*) son con contenido en inglés.

+
+

Despliegue

+
+
+

Cloud

+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/learning-path/data-science/index.html b/learning-path/data-science/index.html new file mode 100644 index 0000000..096da84 --- /dev/null +++ b/learning-path/data-science/index.html @@ -0,0 +1,227 @@ + + + + + Ciencias de Datos - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Ciencias de Datos

+

En esta sección, hemos recopilado una lista de recursos cuidadosamente +seleccionados para impulsar las habilidades de los Pythonistas interesados en el +mundo de la Ciencia de Datos. Ya sea que estés dando tus primeros pasos en este +campo apasionante o que ya seas un experto en la materia, encontrarás enlaces a +herramientas especializadas, libros fundamentales, blogs relevantes y videos +instructivos que te ayudarán a dominar Python para la Ciencia de Datos.

+

Para aquellos que están comenzando en la Ciencia de Datos con Python, te +recomendamos explorar recursos que te introduzcan en las bibliotecas clave como +NumPy, Pandas, Matplotlib y Scikit-Learn, así como tutoriales que te guíen a +través de la manipulación de datos, visualización y análisis estadístico con +Python. Estos recursos te proporcionarán una base sólida para comprender y +trabajar eficazmente con datos utilizando Python.

+

Para los Pythonistas con experiencia en Ciencia de Datos, te ofrecemos recursos +avanzados como libros especializados en análisis predictivo, blogs que +profundizan en conceptos avanzados de Ciencia de Datos aplicados con Python, +videos sobre técnicas de modelado y visualización de datos avanzados, y +tutoriales que te desafiarán a resolver problemas complejos y a explorar nuevas +áreas de aplicación de Python en la Ciencia de Datos. Con estos recursos, podrás +expandir tus habilidades, mantenerte actualizado con las últimas tecnologías en +Ciencia de Datos y avanzar en tu carrera como un Pythonista experto en este +emocionante campo. ¡Explora, aprende y conviértete en un maestro en la Ciencia +de Datos con Python!

+

Leyenda:

+

📗: Libro

+

📹: Video tutorial

+

🎓: Curso

+

🧑‍💻: Código práctico

+

📝: Blog post

+

Los nombres con asterisco al final (*) son con contenido en inglés.

+
+

Ciencias de Datos Básico

+
+
+

Ciencias de Datos Avanzado

+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/learning-path/index.html b/learning-path/index.html new file mode 100644 index 0000000..eb941a1 --- /dev/null +++ b/learning-path/index.html @@ -0,0 +1,205 @@ + + + + + ¡Python de cero a Pro! - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

¡Python de cero a Pro!

+
+

Atención

+

Nuestra ruta de aprendizaje se encuentra actualmente en desarrollo.

+
+

En el vasto mundo del aprendizaje, las rutas de aprendizaje se erigen como faros +guía, iluminando el camino hacia el conocimiento. Imagina un sendero +serpenteante, tejido con módulos y habilidades específicas, diseñado para que +cada estudiante trace su propio recorrido. Estas rutas no solo fomentan la +autonomía y el compromiso, sino también reducen la deserción y aceleran la +asimilación de saberes. ¿Te atreves a explorarlas?

+

Con nuestras recomendaciones podrás explorar cada tópico del desarrollo de +software enfocado en Python e incluyendo algunos tópicos de ayuda como Docker o +integración continua, te invitamos a revisar y complementar tus conocimientos +con los recursos a continuación.

+

Como mapa general estos son los tópicos que cubriremos en nuestra ruta de +aprendizaje:

+ +
+ +
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/learning-path/machine-learning-ai/index.html b/learning-path/machine-learning-ai/index.html new file mode 100644 index 0000000..70b5784 --- /dev/null +++ b/learning-path/machine-learning-ai/index.html @@ -0,0 +1,229 @@ + + + + + Machine Learning e IA - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Machine Learning e IA

+

En esta sección, hemos recopilado una cuidadosa selección de recursos para +potenciar las habilidades de los Pythonistas interesados en el campo del Machine +Learning e Inteligencia Artificial. Tanto si estás comenzando en este +apasionante campo como si ya tienes experiencia en Machine Learning e IA, +encontrarás enlaces a herramientas especializadas, libros clave, blogs +relevantes y videos tutoriales que te guiarán en el uso de Python para +desarrollar y aplicar algoritmos de Machine Learning e IA.

+

Para aquellos que están incursionando en Machine Learning e IA con Python, te +recomendamos explorar recursos que te introduzcan en conceptos básicos como la +manipulación de datos, construcción de modelos de Machine Learning con +bibliotecas como Scikit-Learn y TensorFlow, y la implementación de redes +neuronales con Keras. Estos recursos te permitirán comprender los fundamentos +del Machine Learning e IA y cómo aplicarlos utilizando Python.

+

Para los Pythonistas con experiencia en Machine Learning e IA, te ofrecemos +recursos avanzados como libros especializados en deep learning, modelos +avanzados de Machine Learning, blogs que exploran casos de estudio y +aplicaciones innovadoras de Machine Learning e IA, videos sobre técnicas +avanzadas de modelado y optimización de algoritmos, y tutoriales prácticos que +te desafiarán a resolver problemas complejos en el campo de Machine Learning e +IA con Python. Con estos recursos a tu disposición, podrás mejorar tus +habilidades, explorar nuevas áreas de aplicación de Python en Machine Learning e +IA y destacarte como un experto en este campo en constante evolución. ¡Explora, +aprende y conviértete en un Pythonista líder en Machine Learning e Inteligencia +Artificial!

+

Leyenda:

+

📗: Libro

+

📹: Video tutorial

+

🎓: Curso

+

🧑‍💻: Código práctico

+

📝: Blog post

+

Los nombres con asterisco al final (*) son con contenido en inglés.

+
+

ML Básico

+
+
+

ML Avanzado

+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/learning-path/python-developer/index.html b/learning-path/python-developer/index.html new file mode 100644 index 0000000..8f4f07b --- /dev/null +++ b/learning-path/python-developer/index.html @@ -0,0 +1,254 @@ + + + + + Desarrollador Python - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Desarrollador Python

+

En esta sección, ofrecemos una selección de recursos esenciales para desarrolladores de Python de todos los niveles. Desde tutoriales básicos hasta avanzados, documentación oficial, libros clave, blogs y videos, todo diseñado para fortalecer tu desarrollo en Python. Para principiantes, sugerimos comenzar con fundamentos del lenguaje, avanzando gradualmente hacia temas más complejos como programación orientada a objetos y arquitectura de software.

+

Para los más experimentados, presentamos recursos avanzados que incluyen libros especializados, blogs de expertos, y tutoriales que desafían tus habilidades, manteniéndote al día con las últimas tendencias y prácticas en Python. Estos recursos están pensados para ayudarte a perfeccionar tus habilidades y convertirte en un desarrollador de Python más competente y versátil.

+

Leyenda:

+

📗: Libro

+

📹: Video tutorial

+

🎓: Curso

+

🧑‍💻: Código práctico

+

📝: Blog post

+

Los nombres con asterisco al final (*) son con contenido en inglés.

+
+

Python Básico

+
+

Fundamentos básicos de Python:

+

Estos recursos te ayudaran si realmente no tienes ninguna noción de cómo programar con Python, los tres primeros links son cursos que puedes ver, leer, o llevar mientras que 30 days of Python son una serie de pequeños ejercicios que puedes hacer uno al día y puedes ir aprendiendo con cada ejercicio completado.

+ +
+ +
+
+

Estructura de datos y algoritmos básicos:

+

Aquí encontrarás recursos para aprender sobre las estructuras de datos más comunes (listas, pilas, colas, árboles, grafos, etc.) y los algoritmos básicos (búsqueda, ordenamiento, recursión, etc.) que son fundamentales para resolver problemas de programación.

+ +
+ +
+
+

Clean code:

+

En esta sección se proporcionarán guías y mejores prácticas para escribir código limpio y mantenible. Aprenderás sobre la importancia de los nombres significativos, la organización del código, la eliminación de duplicaciones y la simplicidad.

+ +
+ +
+
+

Proyectos básicos

+

Esta sección incluirá ideas y ejemplos de proyectos básicos que puedes realizar para practicar tus habilidades de programación en Python. Los proyectos pueden incluir desde simples scripts de automatización hasta pequeñas aplicaciones web o juegos.

+ +
+ +
+
+
+

Python Avanzado

+
+

Estructura de datos y algoritmos avanzados

+

Estos recursos proporcionan más detalle sobre estructura de datos y algoritmos, la mayoria de estos recursos se encuentran en inglés.

+ +
+ +
+
+ +
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/learning-path/web-developer/index.html b/learning-path/web-developer/index.html new file mode 100644 index 0000000..e1cf275 --- /dev/null +++ b/learning-path/web-developer/index.html @@ -0,0 +1,227 @@ + + + + + Desarrollador Web - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Desarrollador Web

+

En esta sección, hemos recopilado cuidadosamente una variedad de recursos +especialmente seleccionados para potenciar las habilidades de los Pythonistas +enfocados en el desarrollo web. Tanto si estás dando tus primeros pasos en el +mundo de Python para web como si ya eres un experto, encontrarás enlaces a +herramientas fundamentales, libros especializados, blogs destacados y videos +tutoriales que te guiarán en la creación de aplicaciones web robustas y +eficientes con Python.

+

Para desarrolladores web que están comenzando con Python, te aconsejamos +explorar recursos que te enseñen conceptos básicos de Python aplicados al +desarrollo web, frameworks populares como Django o Flask, manejo de bases de +datos y creación de API RESTful con Python. Estos recursos te brindarán una base +sólida para crear aplicaciones web desde cero y familiarizarte con las mejores +prácticas del desarrollo web.

+

Para los Pythonistas con experiencia en desarrollo web, te ofrecemos recursos +avanzados tales como libros especializados en construcción de aplicaciones web +escalables, blogs que exploran temas actuales en el mundo del desarrollo web con +Python, videos sobre técnicas avanzadas de optimización y seguridad, así como +tutoriales prácticos que te desafiarán a mejorar tus habilidades y a estar al +tanto de las últimas tendencias en el desarrollo web. Con estos recursos a tu +disposición, podrás perfeccionar tus habilidades y convertirte en un Pythonista +aún más competente y exitoso en el mundo del desarrollo web. ¡Explora, aprende y +lleva tus habilidades a nuevos horizontes!

+

Leyenda:

+

📗: Libro

+

📹: Video tutorial

+

🎓: Curso

+

🧑‍💻: Código práctico

+

📝: Blog post

+

Los nombres con asterisco al final (*) son con contenido en inglés.

+
+

Desarrollador I

+
+
+

Desarrollador II

+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000..40f087b Binary files /dev/null and b/objects.inv differ diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 88c79cc..0000000 --- a/package-lock.json +++ /dev/null @@ -1,790 +0,0 @@ -{ - "name": "python.pe", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "sketchviz": "github:gpotter2/sketchviz" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead" - }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "engines": { - "node": ">=16" - } - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", - "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==" - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hachure-fill": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", - "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==" - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" - }, - "node_modules/jsdom": { - "version": "18.1.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-18.1.1.tgz", - "integrity": "sha512-NmJQbjQ/gpS/1at/ce3nCx89HbXL/f5OcenBe8wU1Eik0ROhyUc3LtmG3567dEHAGXkN8rmILW/qtCOPxPHQJw==", - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.5.0", - "acorn-globals": "^6.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.1", - "decimal.js": "^10.3.1", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^3.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0", - "ws": "^8.2.3", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/nwsapi": { - "version": "2.2.18", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.18.tgz", - "integrity": "sha512-p1TRH/edngVEHVbwqWnxUViEmq5znDvyB+Sik5cmuLpGOIfDf/39zLiq3swPF8Vakqn+gvNiOQAZu8djYlQILA==" - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "node_modules/path-data-parser": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", - "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==" - }, - "node_modules/points-on-curve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", - "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==" - }, - "node_modules/points-on-path": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", - "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", - "dependencies": { - "path-data-parser": "0.1.0", - "points-on-curve": "0.2.0" - } - }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "node_modules/roughjs": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", - "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", - "dependencies": { - "hachure-fill": "^0.5.2", - "path-data-parser": "^0.1.0", - "points-on-curve": "^0.2.0", - "points-on-path": "^0.2.1" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sketchviz": { - "version": "0.0.1", - "resolved": "git+ssh://git@github.com/gpotter2/sketchviz.git#d9779055748745172507d41950c03e49acfcccd7", - "license": "MIT", - "dependencies": { - "commander": "^11.1.0", - "jsdom": "^18.0.0", - "roughjs": "^4.4.1" - }, - "bin": { - "sketchviz": "src/sketch.js" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz", - "integrity": "sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==", - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-10.0.0.tgz", - "integrity": "sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index cba39b3..0000000 --- a/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "sketchviz": "github:gpotter2/sketchviz" - } -} diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 47ce28f..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,39 +0,0 @@ -[project] -name = "python-pe" -version = "0.1.0" -description = "" -authors = ["Ider Delzo ", "Jean-Pierre Chauvel "] -license = "Apache License, Version 2.0" -readme = "README.md" -package-mode = false -requires-python = ">=3.13" -dependencies = [ - "ablog==0.11.6", - "libgravatar==1.0.4", - "matplotlib>=3.10.1", - "myst-parser[linkify]==4.0.1", - "shibuya==2025.2.28", - "sphinx==7.2.6", - "sphinx-copybutton==0.5.2", - "sphinx-design==0.5.0", - "sphinx-sitemap==2.7.2", - "sphinx-tabs==3.4.5", - "sphinx-togglebutton==0.3.2", - "sphinxcontrib-youtube==1.4.1", - "sphinxext-opengraph==0.10.0", -] - -[dependency-groups] -dev = [ - "black==25.9.0", - "isort==5.13.2", - "poethepoet>=0.33.1", -] - -[tool.poe.tasks.build] -cmd = "ablog build" -# we pass binary defined inside node package so sphinx can called when building the site -env = { SKETCHVIZ_BINARY = "./node_modules/.bin/sketchviz" } - -[tool.black] -line-length = 79 diff --git a/_extra/robots.txt b/robots.txt similarity index 100% rename from _extra/robots.txt rename to robots.txt diff --git a/search/index.html b/search/index.html new file mode 100644 index 0000000..f7648d7 --- /dev/null +++ b/search/index.html @@ -0,0 +1,129 @@ + + + + + Búsqueda - Python Perú + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+
+ +

Búsqueda

+ + + + +

+ La búsqueda de varias palabras solo muestra coincidencias que contienen + todas las palabras. +

+ + +
+ + +
+

+ + + +
+ +
+ + +
+ +
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 0000000..d9583df --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames": ["about", "blog/events/2023-10-21-segundo-meetup", "blog/events/2024-06-11-primer-meetup-presencial-2004", "blog/events/2024-12-12-ultimo-byte-meetup", "blog/events/2025-01-24-primer-meetup", "blog/events/2025-08-07-segundo-meetup", "blog/members/darwin", "blog/members/draft-member", "blog/members/erickgnavar", "blog/members/hellhound", "blog/members/jbolo", "blog/members/jotisa", "blog/members/manduinca", "blog/members/mangel-de6021aa", "blog/members/mario21ic", "blog/members/oscargicast", "blog/members/richi", "blog/members/soloidx", "blog/members/zodiacfireworks", "code-of-conduct", "events", "index", "learning-path/cloud-devops", "learning-path/data-science", "learning-path/index", "learning-path/machine-learning-ai", "learning-path/python-developer", "learning-path/web-developer", "talk-brainstorming"], "filenames": ["about.md", "blog/events/2023-10-21-segundo-meetup.md", "blog/events/2024-06-11-primer-meetup-presencial-2004.md", "blog/events/2024-12-12-ultimo-byte-meetup.md", "blog/events/2025-01-24-primer-meetup.md", "blog/events/2025-08-07-segundo-meetup.md", "blog/members/darwin.md", "blog/members/draft-member.md", "blog/members/erickgnavar.md", "blog/members/hellhound.md", "blog/members/jbolo.md", "blog/members/jotisa.md", "blog/members/manduinca.md", "blog/members/mangel-de6021aa.md", "blog/members/mario21ic.md", "blog/members/oscargicast.md", "blog/members/richi.md", "blog/members/soloidx.md", "blog/members/zodiacfireworks.md", "code-of-conduct.md", "events.md", "index.md", "learning-path/cloud-devops.md", "learning-path/data-science.md", "learning-path/index.md", "learning-path/machine-learning-ai.md", "learning-path/python-developer.md", "learning-path/web-developer.md", "talk-brainstorming.md"], "titles": ["Acerca de la Comunidad de Python Per\u00fa", "Segundo Meetup de Python Per\u00fa", "Primer Meetup Presencial 2024", "El \u00daltimo Byte: Encuentro de Fin de A\u00f1o", "\u00a1Primer Meetup del 2025!", "\u00a1Segundo Meetup del 2025!", "Darwin Vasquez", "Joe Doe", "Erick Navarro", "Jean-Pierre Chauvel", "Jonathan Bolo Desposorio", "Jonatan Tisnado", "Jean Pierre Mandujano Gutierrez", "Miguel \u00c1ngel Fern\u00e1ndez Rodr\u00edguez", "Mario Inga", "Oscar Giraldo Castillo", "Richard Cancino", "Ider Delzo", "Martin Vuelta", "Conducta", "Eventos", "Python Per\u00fa", "Cloud y DevOps", "Ciencias de Datos", "\u00a1Python de cero a Pro!", "Machine Learning e IA", "Desarrollador Python", "Desarrollador Web", "Brainstorming de Charlas"], "terms": {"som": 0, "apasion": [0, 4, 6, 10, 14, 20, 23, 25], "desarroll": [0, 5, 8, 10, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 24, 25], "esfuerz": 0, "compart": [0, 2, 3, 4, 10, 12, 15, 20], "conoc": [0, 2, 3, 6, 10, 12, 15, 20, 21, 24], "organiz": [0, 2, 15, 18, 26], "colabor": [0, 3, 6, 10, 11, 15, 19, 20], "proyect": [0, 2, 5, 8, 9, 13, 16, 17, 18, 19, 21, 22], "innov": [0, 25], "foment": [0, 24], "ambient": [0, 9, 12], "inclus": [0, 19], "par": [0, 1, 2, 3, 4, 5, 19, 20, 22, 23, 24, 25, 26, 27], "tod": [0, 2, 4, 8, 9, 11, 12, 14, 16, 17, 18, 19, 20, 26], "nivel": [0, 10, 19, 22, 26], "habil": [0, 22, 23, 24, 25, 26, 27], "nuestr": [0, 2, 3, 4, 5, 12, 19, 20, 21, 24], "objet": [0, 4, 10, 20, 26], "promov": 0, "aprendizaj": [0, 2, 3, 4, 5, 20, 24], "continu": [0, 19, 24], "crecimient": [0, 2, 4, 5, 20], "personal": [0, 8, 18, 19], "entorn": [0, 5, 8, 10, 15, 16, 17, 19, 22], "amig": [0, 19], "acogedor": [0, 19], "Con": [0, 22, 23, 24, 25, 27], "ampli": 0, "gam": 0, "experient": [0, 2, 5, 12, 14, 17, 19, 20, 22, 23, 25, 27], "provien": 0, "divers": [0, 6], "ambit": [0, 22], "program": [0, 1, 20, 21, 26], "permit": [0, 19, 25], "ofrec": [0, 19, 22, 23, 25, 26, 27], "perspect": 0, "unic": [0, 19], "enriquecedor": 0, "cad": [0, 17, 18, 19, 24, 26], "interaccion": [0, 19], "Nos": [0, 2, 19], "enorgullec": 0, "estam": [0, 19], "compromet": [0, 19], "brind": [0, 2, 3, 4, 5, 22, 27], "recurs": [0, 22, 23, 24, 25, 26, 27], "calid": 0, "apoy": 0, "mutu": [0, 19], "impuls": [0, 15, 23], "exit": [0, 12, 27], "colect": 0, "si": [0, 6, 8, 12, 14, 15, 16, 18, 19, 22, 25, 26, 27], "quier": [0, 15, 19], "cre": [0, 2, 8, 10, 15, 16, 19, 27], "edit": [0, 9, 13], "perfil": 0, "pued": [0, 5, 6, 8, 11, 17, 19, 26], "hac": [0, 19, 26], "ejecut": 0, "siguient": [0, 17, 22], "com": [0, 2, 5, 19, 20, 21, 22, 23, 24, 25, 26, 27], "terminal": [0, 8, 9, 10, 15, 16], "necesit": [0, 19], "instal": 0, "uv": [0, 8], "uvx": 0, "pe": [0, 13, 14], "miguel": 0, "angel": 0, "fernandez": 0, "rodriguez": 0, "mangel": [0, 13], "erick": 0, "navarr": 0, "erickgnav": [0, 8], "martin": [0, 5], "vuelt": [0, 5], "zodiacfireworks": [0, 18], "mari": 0, "inga": 0, "mario21ic": [0, 14], "jonath": 0, "bol": 0, "desposori": 0, "jbol": [0, 10], "jonat": 0, "tisn": 0, "jo": [0, 11], "jean": 0, "pierr": 0, "mandujan": 0, "gutierrez": 0, "manduinc": [0, 12], "darwin": 0, "vasquez": 0, "oscar": 0, "girald": 0, "castill": 0, "oscargicast": [0, 15], "richard": 0, "cancin": 0, "richi": [0, 16], "ider": 0, "delz": 0, "soloidx": [0, 17], "chauvel": 0, "hellhound": [0, 9], "descubr": [1, 2, 5, 19, 20], "aplic": [1, 2, 5, 19, 20, 23, 25, 26, 27], "interligent": [1, 20], "artificial": [1, 17, 20, 25], "hardwar": [1, 8, 14, 17, 20], "En": [1, 2, 6, 10, 14, 15, 16, 17, 19, 22, 23, 24, 25, 26, 27], "charl": [1, 2, 3, 4, 5, 20], "acompa\u00f1": [1, 2], "gerard": 1, "vilcamiz": 1, "ecos": 1, "espej": 1, "gans": 1, "futur": [1, 3, 4, 20], "imagin": [1, 24], "digital": [1, 10, 14], "enriqu": 1, "suarez": 1, "tinyml": 1, "machin": [1, 14], "learning": [1, 14], "industri": 1, "sector": 1, "energ": [1, 3, 4, 20], "mineri": 1, "eduard": 1, "yallic": 1, "introduccion": [1, 2], "maravill": 1, "mund": [1, 2, 13, 14, 23, 24, 27], "micropython": 1, "link": [1, 2, 3, 4, 5, 6, 15], "event": [1, 2, 3, 4, 5, 18, 21], "Te": [2, 3, 4, 5, 19, 20, 24], "esper": [2, 3, 4, 5, 8, 13, 14, 15, 19, 20], "noch": [2, 4, 5, 20], "llen": [2, 3, 4, 5, 20], "networking": [2, 4, 5, 20], "profesional": [2, 4, 5, 10, 17, 20], "python": [2, 3, 4, 5, 19, 20, 22, 23, 25, 27], "peru": [2, 3, 4, 5, 6, 10, 13, 14, 15, 19, 20], "host": 2, "bienven": [2, 19, 21], "inici": [2, 5, 10, 14, 20], "cal": 2, "asistent": 2, "brev": 2, "sobr": [2, 5, 19, 20, 21, 22, 23, 25, 26, 27], "activ": [2, 3, 4, 10, 18, 20], "Este": [2, 4, 5, 20], "ser": [2, 3, 14, 19], "espaci": [2, 3, 4, 5, 20], "ten": [2, 6, 14, 16, 17], "ide": [2, 3, 4, 19, 20, 26], "clar": [2, 9, 10, 14, 16, 18], "emocion": [2, 23], "tem": [2, 16, 19, 26, 27], "transform": [2, 10], "fastapi": [2, 6, 13, 16], "gui": [2, 3, 23, 24, 25, 26, 27], "practic": [2, 5, 10, 13, 15, 20, 22, 23, 25, 26, 27], "haci": [2, 16, 24, 26], "arquitectur": [2, 5, 13, 20, 22, 26], "limpi": [2, 5, 20, 26], "traves": [2, 23], "principi": [2, 4, 20, 26], "utiliz": [2, 5, 9, 10, 15, 19, 22, 23, 25], "web": [2, 6, 10, 17, 18, 26], "eficient": [2, 22, 27], "aprend": [2, 4, 5, 6, 8, 11, 15, 16, 17, 20, 22, 23, 25, 26, 27], "buen": [2, 5, 13, 14, 15, 19, 20], "patron": 2, "dise\u00f1": [2, 4, 19, 20, 22, 24, 26], "sac": 2, "maxim": 2, "provech": 2, "poder": 2, "herramient": [2, 5, 10, 15, 17, 18, 20, 22, 23, 25, 27], "tips": 2, "trabaj": [2, 6, 8, 9, 10, 11, 14, 15, 16, 17, 18, 22, 23], "remot": 2, "direct": 2, "usa": [2, 16], "unet": [2, 3, 4, 20], "conversatori": 2, "interact": 2, "dond": [2, 3, 14, 15, 16, 18, 20], "mejor": [2, 5, 19, 22, 25, 26, 27], "consej": [2, 16], "maner": [2, 6, 19, 22], "empres": [2, 12, 14], "estrategi": 2, "destac": [2, 27], "entrev": 2, "gestion": [2, 8, 14, 22], "manten": [2, 6, 19, 26], "comun": [2, 3, 4, 5, 19, 20, 21, 26], "efect": 2, "equip": [2, 10, 18, 19], "internacional": 2, "domin": [2, 22, 23], "envi": 2, "dat": [2, 3, 4, 10, 12, 15, 18, 25, 27], "estructur": [2, 5, 19], "avanz": [2, 10, 22, 27], "adentr": 2, "manej": [2, 6, 12, 17, 27], "Esta": [2, 26], "enfoc": [2, 24, 27], "tecnic": [2, 10, 19, 22, 23, 25, 27], "ejempl": [2, 26], "ayud": [2, 6, 8, 22, 23, 24, 26], "performanc": 2, "agradec": [2, 3, 4, 5], "reunion": [2, 3, 4, 5], "Les": [2, 3, 4], "conexion": [2, 3, 4], "wi": [2, 3, 4], "fi": [2, 3, 4], "ssid": [2, 3, 4], "redpucp": [2, 3, 4], "password": [2, 3, 4], "c9aa28ba93": [2, 3, 4], "encuentr": [2, 4, 5, 15, 20, 24, 26], "siempr": [2, 3, 4, 5, 6, 12, 13, 14, 15, 16, 17, 19], "cierr": [3, 20], "constru": [3, 12, 20], "junt": [3, 4, 20], "camin": [3, 10, 20, 24], "2025": [3, 20], "disfrut": [3, 6, 10], "relampag": 3, "discusion": 3, "abiert": [3, 5, 20], "gener": [3, 19], "propuest": 3, "ademas": [3, 10], "excelent": 3, "oportun": [3, 6, 16], "conect": [3, 4, 20], "miembr": [3, 19, 21], "desped": 3, "entusiasm": 3, "fech": [3, 4, 5], "juev": [3, 5, 20], "12": [3, 16], "diciembr": [3, 20], "2024": [3, 20], "hor": [3, 4, 5], "19": [3, 4, 5], "00": [3, 4, 5], "21": [3, 4, 20], "45": [3, 4], "lug": [3, 4, 5, 19], "open": [3, 4, 6, 14, 17, 18], "pucp": [3, 4], "aul": [3, 4], "a10": [3, 4], "cerr": 3, "brillant": 3, "much": [3, 5, 7, 8, 15, 16, 18, 20], "comenc": [4, 16, 20], "a\u00f1o": [4, 15, 20], "inspir": [4, 20], "desd": [4, 6, 8, 9, 10, 11, 14, 15, 16, 17, 18, 20, 26, 27], "hast": [4, 6, 15, 20, 26], "expert": [4, 20, 22, 23, 25, 26, 27], "planific": [4, 20], "fortalec": [4, 20, 26], "so\u00f1": [4, 20], "pycon": [4, 20], "viern": [4, 20], "24": [4, 20], "ener": [4, 20], "regres": [5, 19, 20], "mensual": [5, 20], "7": [5, 20], "agost": [5, 20], "tendr": [5, 20], "carg": [5, 20], "conten": [5, 17, 20, 22, 23, 25, 26, 27], "modern": [5, 20], "tres": [5, 20, 26], "enfoqu": [5, 20], "observ": [5, 18, 19, 20], "testing": [5, 20], "nub": [5, 20, 22], "El": [5, 19, 20], "gratuit": [5, 6, 15, 20], "public": [5, 10, 20], "pens": [5, 20, 26], "tant": [5, 18, 20, 22, 25, 27], "estan": [5, 9, 19, 20, 22, 23, 25, 26, 27], "tien": [5, 19, 20, 25, 26], "07": 5, "22": 5, "sal": 5, "sum": 5, "pis": [5, 17], "4": 5, "ponent": 5, "implement": [5, 19, 22, 25], "usand": [5, 6, 8, 13, 16], "logs": 5, "metric": 5, "traz": 5, "mas": [5, 7, 10, 12, 13, 14, 16, 17, 18, 19, 21, 26, 27], "entend": 5, "pas": [5, 14, 15, 17, 19, 22, 23, 27], "sistem": [5, 6, 10, 11, 18], "aws": [5, 16], "sergi": 5, "infant": 5, "prueb": 5, "bas": [5, 9, 10, 18, 22, 23, 27], "servici": [5, 6, 17], "exploring": 5, "gemini": 5, "cli": [5, 6, 14], "manuel": 5, "solorzan": 5, "explor": [5, 22, 23, 24, 25, 27], "uso": [5, 6, 8, 9, 12, 14, 16, 18, 19, 22, 25], "integr": [5, 14, 18, 24], "fluj": [5, 8], "ali": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], "ciud": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "lim": [6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "homepag": [6, 7, 8, 9, 10, 11, 12, 13, 15], "404": 6, "venezolan": 6, "viv": 6, "tecnologi": 6, "filosofi": 6, "ing": [6, 10, 15], "profesion": 6, "He": [6, 10, 11, 13], "sid": [6, 11, 19], "voluntari": 6, "sourc": [6, 14, 17, 18], "difusion": 6, "monton": 6, "actual": [6, 9, 10, 11, 15, 16, 17, 18, 24, 27], "sofwar": 6, "engin": [6, 12, 14, 15], "backend": [6, 15, 16, 17], "paypal": [6, 16], "contractor": 6, "pes": 6, "contrat": 6, "naveg": 6, "respons": [6, 19], "devops": [6, 10, 14, 15, 17], "principal": [6, 12, 13, 15, 17, 18], "djang": [6, 13, 16, 27], "flask": [6, 27], "aunqu": [6, 9, 10, 17], "tiemp": [6, 15, 16, 17, 18], "libr": [6, 10, 12, 15, 22, 23, 25, 26, 27], "hech": [6, 9, 11], "scrapping": 6, "applications": 6, "Mis": 6, "2": [6, 16], "editor": [6, 8, 9, 10, 14, 15, 17, 18], "favorit": [6, 16, 18], "atom": 6, "vscod": [6, 10, 11, 14, 16, 17, 18], "linux": [6, 10, 16, 18], "teng": [6, 9, 10, 12, 14, 16, 17, 18, 19], "18": 6, "ubuntu": [6, 16], "dock": [6, 10, 12, 15, 17, 22, 24], "apps": [6, 16], "segur": [6, 14, 19, 27], "usar": [6, 15, 16], "virtualenv": [6, 10, 15], "ahor": [6, 8, 11, 12, 15], "sig": [6, 8], "prefir": 6, "pipenv": 6, "paqueteri": 6, "Fui": 6, "venezuel": 6, "sostuv": 6, "taller": [6, 15], "realic": [6, 16], "vari": [6, 9, 18], "curs": [6, 10, 22, 23, 25, 26, 27], "pag": [6, 14], "aun": [6, 14, 16, 17, 19, 27], "sii": 6, "hag": [6, 11, 12, 18], "mentori": 6, "upnotch": 6, "solicit": 6, "aca": 6, "https": [6, 7, 8, 9, 10, 11, 12, 13, 15, 18], "za1cpvfx5ejhyvk37": 6, "dem": 6, "gust": [6, 15, 16], "pod": [6, 8, 14, 15], "org": [7, 9, 18], "blah": 7, "somewher": 8, "in": 8, "the": 8, "cloud": 8, "io": [8, 10], "twitch": 8, "tv": 8, "Soy": [8, 10, 11, 16, 17], "a\u00f1os": [8, 9, 10, 11, 12, 14, 16, 17, 18], "diferent": [8, 9, 14, 19], "lenguaj": [8, 18, 21, 26], "primer": [8, 10, 16, 19, 22, 23, 26, 27], "guard": 8, "cari\u00f1": 8, "sre": 8, "per": [8, 14, 17, 19], "necesari": [8, 18, 19], "emacs": [8, 17], "llev": [8, 16, 19, 22, 26, 27], "cambi": 8, "cos": [8, 9, 16, 18], "alacritty": 8, "simpl": [8, 26], "tmux": [8, 9, 10, 15], "cubiert": 8, "general": [8, 24], "mac": 8, "comput": [8, 10, 18], "tambien": [8, 9, 12, 15, 16, 19, 24], "nix": 8, "thinkp": 8, "No": [8, 19], "alcanc": [8, 13], "aqu": [8, 15, 19, 26], "ando": 8, "atent": 8, "ingenier": [9, 13, 15], "softwar": [9, 12, 13, 14, 15, 16, 17, 18, 24, 26], "globant": 9, "anterior": 9, "encor": 9, "tall": 9, "technologi": 9, "aureal": 9, "vim": [9, 10, 12, 14, 15, 17, 18], "eleccion": [9, 19], "text": 9, "codig": [9, 13, 14, 17, 19, 21, 22, 23, 25, 26, 27], "casi": [9, 16], "desenvuelv": 9, "bien": [9, 19], "caracter": 9, "poetry": [9, 10, 15, 16, 17, 18], "virtualiz": 9, "dependent": 9, "recient": 9, "pdm": [9, 17], "depur": 9, "pdb": 9, "scre": 9, "multiplex": 9, "asi": [9, 10, 14, 16, 19, 23, 27], "administr": [9, 10], "ventan": 9, "Una": 9, "corr": 9, "ultim": [9, 12, 20, 21, 23, 26, 27], "genial": [9, 19], "La": 9, "verd": 9, "peque\u00f1": [9, 26], "larg": [9, 11], "carrer": [9, 10, 11, 14, 15, 17, 23], "sol": [9, 13, 14, 18, 19, 22, 23, 24, 27], "scriptcill": 9, "cuent": [9, 10, 16], "github": [9, 10, 12], "dev": [10, 14], "tecnolog": [10, 11, 14, 19, 23], "automatiz": [10, 14, 22, 26], "dias": 10, "pc": [10, 16], "proces": [10, 15, 18, 22], "intel": [10, 15, 16], "mmx": 10, "2000": 10, "ensamblaj": 10, "electron": 10, "basic": [10, 27], "despert": 10, "curi": 10, "Mi": 10, "trayectori": 10, "inclu": [10, 19, 24, 26], "estudi": [10, 12, 15, 18, 24, 25], "red": [10, 25], "telecomun": 10, "embarg": 10, "aquel": 10, "entonc": [10, 14, 15, 17], "php": [10, 17], "js": [10, 19], "oper": [10, 19], "termin": [10, 15, 19], "capt": 10, "interes": [10, 23, 25], "Me": [10, 14, 15, 16], "especializ": [10, 22, 23, 25, 26, 27], "central": 10, "telefon": 10, "callcent": 10, "asterisk": 10, "opensourc": 10, "modul": [10, 24], "c": [10, 15], "panel": 10, "amer": 10, "movil": [10, 17], "plataform": 10, "cor": 10, "noki": 10, "huawei": 10, "charging": 10, "system": 10, "hlr": 10, "eai": 10, "esb": 10, "middlewar": 10, "microservici": [10, 16], "etc": [10, 14, 26], "jav": [10, 12], "oracl": 10, "promocion": 10, "prepag": 10, "nacional": [10, 19], "paralel": 10, "2019": 10, "especial": [10, 18, 19, 22, 27], "robotiz": 10, "robots": 10, "scraping": 10, "analisis": [10, 23], "gerenci": 10, "moment": [10, 15], "toc": [10, 14, 16], "pian": 10, "leyend": [10, 22, 23, 25, 26, 27], "filosof": 10, "debi": [10, 18], "jenking": 10, "microk8s": 10, "pep8": 10, "flake8": 10, "linters": [10, 15], "formatters": [10, 15], "prob": [10, 15], "neovim": 10, "scripts": [10, 13, 26], "contribu": [10, 13], "firmement": 10, "adquir": 10, "Estoy": 10, "relacion": [10, 15, 16, 17], "eucosmics": 11, "blogspot": 11, "g": 11, "s": 11, "rod": 11, "vid": [11, 14], "empez": [11, 15, 17], "philips": 11, "odyssey": 11, "lueg": [11, 14, 17], "commodor": 11, "64": 11, "pos": 11, "ibm": 11, "ps": 11, "1": 11, "anal": 11, "gerent": 11, "poc": [11, 17, 21], "usarl": 11, "tambi": [11, 18], "colab": 11, "googl": 11, "todav": 11, "Por": [11, 19], "dispuest": 11, "pose": 11, "30": [11, 26], "camp": [11, 22, 23, 25], "deepskill": 12, "spac": [12, 15], "cienci": 12, "baj": 12, "ecosistem": 12, "10": [12, 18, 20], "corpor": 12, "startups": [12, 14], "empec": [12, 15, 16], "deep": [12, 14, 25], "pit": 12, "technology": 12, "2022": 12, "skill": 12, "academy": 12, "pycharm": [12, 16], "jupyt": 12, "notebook": 12, "ides": 12, "venv": [12, 16, 17], "produc": 12, "material": 12, "canal": [12, 17, 19], "youtub": [12, 17], "cours": 12, "portfoli": 13, "vercel": 13, "app": 13, "informat": [13, 21], "print": 13, "hol": 13, "Era": 13, "brom": 13, "frameworks": [13, 14, 16, 21, 27], "realiz": [13, 14, 16, 26], "depend": 13, "cle": 13, "cod": [13, 15, 19], "legibl": 13, "escal": [13, 22, 27], "paquet": 13, "yeaaaaaaaa": 13, "consider": [14, 16, 19], "part": [14, 15, 16, 17, 19], "reversing": 14, "engineering": 14, "nadi": 14, "ello": 14, "despues": [14, 17], "di": [14, 18], "cost": [14, 19], "manag": 14, "punt": 14, "vist": 14, "ver": [14, 15, 26], "habi": 14, "are": [14, 23, 25], "qa": 14, "negoci": 14, "infraestructur": [14, 22], "architectur": 14, "security": 14, "pivote": 14, "15": [14, 17], "vi": 14, "rubr": 14, "tal": [14, 27], "ecommerc": 14, "aptitus": 14, "bookingmotor": 14, "evoting": 14, "scytl": 14, "medi": 14, "frecuenci": [14, 19], "latin": 14, "grup": [14, 19], "elcomerci": 14, "peru21": 14, "publimetr": 14, "depor": 14, "gec": 14, "trom": 14, "radi": 14, "rpp": 14, "lazon": 14, "studio92": 14, "reportajeperu": 14, "yaroslab": 14, "redbe": 14, "holimp": 14, "weclub": 14, "blazingdb": 14, "voltrondat": 14, "vec": [14, 15, 16], "cer": [14, 15, 17, 21, 27], "propi": [14, 19, 24], "plugins": 14, "librari": 14, "viend": 14, "legacy": 14, "moderniz": 14, "projects": 14, "bomber": 14, "investig": 14, "cooper": 14, "habl": [14, 19], "pues": 14, "mayor": [14, 16, 17], "macbook": [14, 16, 17], "A": 14, "raspberry": 14, "pi": 14, "mini": 14, "serv": 14, "homelab": 14, "Del": [14, 19], "lad": 14, "cuand": [14, 16], "full": 14, "ahi": 14, "experiment": [14, 19, 26], "amor": 14, "odi": 14, "cond": 14, "pront": [14, 16], "granit": 14, "aren": 14, "dia": [14, 18, 26], "d": [14, 18], "De": 15, "ni\u00f1": 15, "videojueg": 15, "rpg": 15, "pokemon": 15, "prim": [15, 19, 20], "contact": [15, 19], "colegi": 15, "assembl": 15, "uc": 15, "pic": 15, "recuerd": [15, 19], "intercambi": [15, 19], "discm": 15, "asm": 15, "estaf": 15, "battlebots": 15, "medabots": 15, "transformers": 15, "decid": 15, "coleccion": 15, "tecl": 15, "mecan": 15, "dvorak": 15, "retom": 15, "mecatron": 15, "uni": 15, "2013": 15, "veng": 15, "rol": 15, "foris": 15, "pyenv": [15, 16, 17, 18], "junc": 15, "O": 15, "simplement": [15, 19], "sigu": 15, "peps": 15, "usad": 15, "recom": 15, "lun": [15, 20], "vs": 15, "peer": 15, "programing": 15, "liv": 15, "shar": 15, "evil": 15, "mod": [15, 19], "olvid": 15, "Antes": 15, "iterm2": [15, 16], "tmuxinator": 15, "warp": 15, "descarg": 15, "darl": 15, "cuchar": 15, "univers": 15, "dict": 15, "nuev": [15, 16, 23, 25, 27], "lov": 16, "vez": [16, 17, 19], "toqu": 16, "6": 16, "intent": [16, 19], "develop": 16, "atraccion": 16, "drf": 16, "ambos": 16, "tuv": 16, "mobil": 16, "react": 16, "nativ": 16, "flutt": 16, "tar": [16, 22], "frontend": [16, 17], "angul": 16, "Ya": [16, 19, 23], "3": [16, 18, 19], "alrededor": 16, "k8s": 16, "terraform": [16, 22], "lid": [16, 22, 25], "famos": 16, "oncalls": 16, "mediant": 16, "datadog": 16, "pduty": 16, "version": [16, 17, 19], "usen": 16, "m1": 16, "m2": 16, "m3": 16, "conej": 16, "suel": 16, "dockeriz": 16, "dios": 16, "mand": 16, "monolit": 16, "trat": [16, 17], "virtual": [16, 17], "magnif": 16, "zsh": 16, "dej": [16, 19], "respect": 16, "research": 16, "ilumin": [16, 24], "oid": 16, "cuestion": [16, 19], "avis": [16, 17, 18], "acog": 17, "barr": 17, "oficin": 17, "gustari": 17, "involucr": 17, "inteligent": [17, 25], "tom": 17, "distint": 17, "compa\u00f1i": 17, "hered": 17, "ardiend": 17, "llam": [17, 19], "pid": 17, "ayer": 17, "visionn": 17, "flexibl": 17, "situacion": [17, 19], "mayori": [17, 26], "tablet": 17, "leer": [17, 26], "diagram": 17, "microfon": 17, "frustr": 17, "tempor": 17, "altern": 17, "extern": 17, "nad": 17, "fanfarron": 17, "ment": 17, "armar": 17, "espa\u00f1ol": 17, "definit": 17, "suficient": [17, 18], "prepar": 17, "cto": 18, "dynov": 18, "fisic": 18, "inclin": 18, "computacional": 18, "salt": 18, "ingenieri": 18, "dirj": 18, "particip": 18, "solucion": 18, "cientif": 18, "model": [18, 23, 25], "numer": [18, 19], "matemat": 18, "computacion": 18, "cuantic": 18, "entreten": 18, "comb": 18, "medidi": 18, "posibl": 18, "cualqui": [18, 19], "distr": 18, "redhat": 18, "Los": [18, 19, 22, 23, 25, 26, 27], "man": 18, "contenedor": [18, 22], "pypi": 18, "user": 18, "meetups": 18, "dand": [18, 22, 23, 27], "acerc": 18, "usos": 18, "algui": [18, 19], "dij": [18, 19], "v": 18, "proporcion": [19, 23, 26], "independient": 19, "ident": 19, "expresion": 19, "orient": [19, 26], "sexual": 19, "discapac": 19, "aparient": 19, "tama\u00f1": 19, "corporal": 19, "raz": 19, "etni": 19, "edad": 19, "religion": 19, "u": 19, "caracterist": 19, "simil": 19, "favor": 19, "evit": 19, "apod": 19, "naturalez": 19, "afect": 19, "amabil": 19, "S\u00e9": 19, "amabl": 19, "cortes": 19, "groser": 19, "maleduc": 19, "respet": 19, "person": 19, "opinion": 19, "conllev": 19, "rar": 19, "respuest": 19, "correct": 19, "limit": 19, "critic": 19, "des": 19, "haz": 19, "copi": 19, "funcion": 19, "exclu": 19, "insult": 19, "menospreci": 19, "acos": 19, "Ese": 19, "comport": 19, "interpret": 19, "segun": 19, "definicion": 19, "citiz": 19, "of": [19, 26], "dud": 19, "podr": 19, "concept": [19, 22, 23, 25, 27], "consult": 19, "particul": 19, "toler": 19, "pertenecient": 19, "social": 19, "margin": 19, "priv": 19, "inacept": 19, "import": [19, 26], "qui\u00e9n": 19, "sient": 19, "incomod": 19, "pont": 19, "inmediat": 19, "habitual": 19, "recien": 19, "lleg": 19, "respald": 19, "mism": 19, "form": 19, "spam": 19, "trole": 19, "provoc": 19, "atencion": 19, "Estas": [19, 24], "polit": 19, "estandar": 19, "hil": 19, "comentari": 19, "viol": 19, "odios": 19, "hirient": 19, "opres": 19, "excluyent": 19, "Se": 19, "palabr": 19, "malson": 19, "nunc": 19, "dirig": 19, "usuari": 19, "inapropi": 19, "esten": 19, "enumer": 19, "tampoc": 19, "respond": 19, "inicial": 19, "dich": 19, "advertent": 19, "atend": 19, "expuls": 19, "dec": 19, "elimin": [19, 26], "calm": 19, "caus": 19, "problem": [19, 23, 25, 26], "ban": 19, "indefinid": 19, "optar": 19, "discrecion": 19, "desban": 19, "ofens": 19, "disculp": 19, "genuin": 19, "ofend": 19, "bane": 19, "injustific": 19, "tratal": 19, "Las": 19, "quej": 19, "sujet": 19, "estand": 19, "alto": 19, "deb": 19, "men": 19, "marg": 19, "maniobr": 19, "demas": 19, "esforz": 19, "dar": 19, "adicional": 19, "cuid": 19, "apunt": 19, "impecl": 19, "coquet": 19, "sensibl": 19, "fuer": 19, "conduc": 19, "demasi": 19, "pel": 19, "innecesari": 19, "sentimient": 19, "her": 19, "falt": 19, "confianz": 19, "peor": 19, "alej": 19, "complet": [19, 26], "Y": 19, "hic": 19, "res": 19, "tentacion": 19, "defens": 19, "reclam": 19, "disculpat": 19, "fuist": 19, "malinterpret": 19, "acus": 19, "injust": 19, "probabl": 19, "hab": 19, "comunic": 19, "compa\u00f1er": 19, "pythonist": [19, 22, 23, 25, 27], "comod": 19, "porqu": 19, "quer": 19, "gent": 19, "deseos": 19, "asum": 19, "intencion": 19, "perdon": 19, "gan": 19, "arrib": 19, "lugar": 19, "oficial": [19, 26], "adopt": 19, "mantenedor": 19, "mencion": 19, "explicit": 19, "confusion": 19, "adapt": 19, "nod": 19, "policy": 19, "on": 19, "trolling": 19, "contributor": 19, "covenant": 19, "v1": 19, "0": 19, "segund": 20, "meetup": 20, "04": 20, "byte": 20, "fin": 20, "mart": 20, "presencial": 20, "juni": 20, "sab": 20, "octubr": 20, "2023": 20, "blog": [21, 22, 23, 25, 26, 27], "tutorial": [21, 22, 23, 25, 26, 27], "machine learnig": 21, "inteligencia artificial": 21, "ia": 21, "peruan": 21, "pro": 21, "nosotr": 21, "enterat": 21, "local": 21, "acontec": 21, "conduct": 21, "revis": [21, 24], "norm": 21, "integrart": 21, "seccion": [22, 23, 25, 26, 27], "hem": [22, 23, 25, 27], "recopil": [22, 23, 25, 27], "seleccion": [22, 23, 25, 26, 27], "potenci": [22, 25, 27], "encontr": [22, 23, 25, 26, 27], "enlac": [22, 23, 25, 27], "clav": [22, 23, 25, 26], "imprescind": 22, "blogs": [22, 23, 25, 26, 27], "vide": [22, 23, 25, 26, 27], "context": 22, "aquell": [22, 23, 25], "incursion": [22, 25], "recomend": [22, 23, 24, 25], "introduzc": [22, 23, 25], "fundamental": [22, 23, 26, 27], "orquest": 22, "kubernet": 22, "Estos": [22, 23, 25, 26, 27], "pipelin": 22, "ci": 22, "cd": 22, "cas": [22, 25], "real": 22, "desafi": [22, 23, 25, 27], "optimiz": [22, 25, 27], "disposicion": [22, 25, 27], "podras": [22, 23, 24, 25, 27], "destacart": [22, 25], "constant": [22, 25], "evolu": [22, 25], "conviertet": [22, 23, 25], "post": [22, 23, 25, 26, 27], "nombr": [22, 23, 25, 26, 27], "asterisc": [22, 23, 25, 26, 27], "final": [22, 23, 25, 26, 27], "ingles": [22, 23, 25, 26, 27], "list": [23, 26], "cuidad": [23, 25, 27], "estes": 23, "materi": 23, "relev": [23, 25], "instruct": 23, "comenz": [23, 25, 26, 27], "bibliotec": [23, 25], "numpy": 23, "pand": 23, "matplotlib": 23, "scikit": [23, 25], "learn": [23, 25], "manipul": [23, 25], "visualiz": 23, "estadist": 23, "comprend": [23, 25], "eficaz": 23, "predict": 23, "profundiz": 23, "resolv": [23, 25, 26], "complej": [23, 25, 26], "expand": 23, "mantenert": 23, "actualiz": 23, "maestr": 23, "rut": 24, "vast": 24, "erig": 24, "far": 24, "sender": 24, "serpent": 24, "tej": 24, "especif": 24, "trac": 24, "recorr": 24, "autonom": 24, "compromis": 24, "sino": 24, "reduc": 24, "desercion": 24, "aceler": 24, "asimil": 24, "saber": 24, "atrev": 24, "topic": 24, "algun": 24, "invit": 24, "complement": 24, "map": 24, "cubr": 24, "algoritm": 25, "construccion": [25, 27], "tensorflow": 25, "neuronal": 25, "ker": 25, "fundament": 25, "esencial": 26, "document": 26, "suger": 26, "gradual": 26, "present": 26, "desaf": 26, "manteniendot": 26, "tendenci": [26, 27], "ayudart": 26, "perfeccion": [26, 27], "convertirt": [26, 27], "competent": [26, 27], "versatil": 26, "realment": 26, "ningun": 26, "nocion": 26, "links": 26, "mientr": 26, "days": 26, "seri": 26, "ejercici": 26, "ir": 26, "pil": 26, "col": 26, "arbol": 26, "graf": 26, "busqued": 26, "orden": 26, "recursion": 26, "escrib": 26, "signific": 26, "duplic": 26, "simplic": 26, "jueg": 26, "detall": 26, "varied": 27, "creacion": 27, "robust": 27, "aconsej": 27, "ense\u00f1": 27, "popular": 27, "api": 27, "restful": 27, "familiarizart": 27, "horizont": 27}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"acerc": 0, "comun": [0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "python": [0, 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21, 24, 26], "peru": [0, 1, 21], "miembr": 0, "segund": [1, 5], "meetup": [1, 2, 3, 4, 5], "prim": [2, 4], "presencial": 2, "2024": 2, "expositor": 2, "nefi": 2, "arroy": 2, "sergi": 2, "infant": 2, "manuel": 2, "solorzan": 2, "ider": [2, 17], "delz": [2, 17], "openpucp": [2, 3, 4], "El": 3, "ultim": 3, "byte": 3, "encuentr": 3, "fin": 3, "a\u00f1o": 3, "2025": [4, 5], "segur": 5, "pacif": 5, "darwin": 6, "vasquez": 6, "sobr": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "Qui\u00e9n": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "dedic": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "com": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "program": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "tien": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "algun": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "aport": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "Est\u00e1s": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "dispon": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "par": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "hac": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "mentoring": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "consultor": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], "charl": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 28], "joe": 7, "doe": 7, "erick": 8, "navarr": 8, "jean": [9, 12], "pierr": [9, 12], "chauvel": 9, "jonath": 10, "bol": 10, "desposori": 10, "jonat": 11, "tisn": 11, "mandujan": 12, "gutierrez": 12, "miguel": 13, "angel": 13, "fernandez": 13, "rodriguez": 13, "mari": 14, "inga": 14, "oscar": 15, "girald": 15, "castill": 15, "richard": 16, "cancin": 16, "martin": 18, "vuelt": 18, "conduct": 19, "moder": 19, "event": 20, "cloud": 22, "devops": 22, "desplieg": 22, "cienci": 23, "dat": [23, 26], "basic": [23, 25, 26], "avanz": [23, 25, 26], "cer": 24, "pro": 24, "machin": 25, "learning": 25, "ia": 25, "ml": 25, "desarroll": [26, 27], "fundament": 26, "estructur": 26, "algoritm": 26, "cle": 26, "cod": 26, "proyect": 26, "web": 27, "i": 27, "ii": 27, "brainstorming": 28}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.todo": 2, "sphinxext.opengraph": 1, "sphinx": 60}, "alltitles": {"Acerca de la Comunidad de Python Per\u00fa": [[0, "acerca-de-la-comunidad-de-python-peru"]], "Miembros": [[0, "miembros"]], "Segundo Meetup de Python Per\u00fa": [[1, "segundo-meetup-de-python-peru"]], "Primer Meetup Presencial 2024": [[2, "primer-meetup-presencial-2024"]], "Expositores": [[2, "expositores"]], "Nefi Arroyo": [[2, "nefi-arroyo"]], "Sergio Infante": [[2, "sergio-infante"]], "Manuel Solorzano": [[2, "manuel-solorzano"]], "Ider Delzo": [[2, "ider-delzo"], [17, "ider-delzo"]], "OpenPUCP": [[2, "openpucp"], [3, "openpucp"], [4, "openpucp"]], "MeetUp": [[2, "meetup"], [3, "meetup"], [4, "meetup"], [5, "meetup"]], "El \u00daltimo Byte: Encuentro de Fin de A\u00f1o": [[3, "el-ultimo-byte-encuentro-de-fin-de-ano"]], "\u00a1Primer Meetup del 2025!": [[4, "primer-meetup-del-2025"]], "\u00a1Segundo Meetup del 2025!": [[5, "segundo-meetup-del-2025"]], "Seguros Pac\u00edfico": [[5, "seguros-pacifico"]], "Darwin Vasquez": [[6, "darwin-vasquez"]], "Sobre m\u00ed": [[6, "sobre-mi"], [7, "sobre-mi"], [8, "sobre-mi"], [9, "sobre-mi"], [10, "sobre-mi"], [11, "sobre-mi"], [12, "sobre-mi"], [13, "sobre-mi"], [14, "sobre-mi"], [15, "sobre-mi"], [16, "sobre-mi"], [17, "sobre-mi"], [18, "sobre-mi"]], "\u00bfQui\u00e9n eres y a qu\u00e9 te dedicas?": [[6, "quien-eres-y-a-que-te-dedicas"], [7, "quien-eres-y-a-que-te-dedicas"], [8, "quien-eres-y-a-que-te-dedicas"], [9, "quien-eres-y-a-que-te-dedicas"], [10, "quien-eres-y-a-que-te-dedicas"], [11, "quien-eres-y-a-que-te-dedicas"], [12, "quien-eres-y-a-que-te-dedicas"], [13, "quien-eres-y-a-que-te-dedicas"], [14, "quien-eres-y-a-que-te-dedicas"], [15, "quien-eres-y-a-que-te-dedicas"], [16, "quien-eres-y-a-que-te-dedicas"], [17, "quien-eres-y-a-que-te-dedicas"], [18, "quien-eres-y-a-que-te-dedicas"]], "\u00bfC\u00f3mo programas en Python?": [[6, "como-programas-en-python"], [7, "como-programas-en-python"], [8, "como-programas-en-python"], [9, "como-programas-en-python"], [10, "como-programas-en-python"], [11, "como-programas-en-python"], [12, "como-programas-en-python"], [13, "como-programas-en-python"], [14, "como-programas-en-python"], [15, "como-programas-en-python"], [16, "como-programas-en-python"], [17, "como-programas-en-python"], [18, "como-programas-en-python"]], "\u00bfTienes alg\u00fan aporte a la comunidad de Python?": [[6, "tienes-algun-aporte-a-la-comunidad-de-python"], [7, "tienes-algun-aporte-a-la-comunidad-de-python"], [8, "tienes-algun-aporte-a-la-comunidad-de-python"], [9, "tienes-algun-aporte-a-la-comunidad-de-python"], [10, "tienes-algun-aporte-a-la-comunidad-de-python"], [11, "tienes-algun-aporte-a-la-comunidad-de-python"], [12, "tienes-algun-aporte-a-la-comunidad-de-python"], [13, "tienes-algun-aporte-a-la-comunidad-de-python"], [14, "tienes-algun-aporte-a-la-comunidad-de-python"], [15, "tienes-algun-aporte-a-la-comunidad-de-python"], [16, "tienes-algun-aporte-a-la-comunidad-de-python"], [17, "tienes-algun-aporte-a-la-comunidad-de-python"], [18, "tienes-algun-aporte-a-la-comunidad-de-python"]], "\u00bfEst\u00e1s disponible para hacer mentoring, consultor\u00edas, charlas?": [[6, "estas-disponible-para-hacer-mentoring-consultorias-charlas"], [7, "estas-disponible-para-hacer-mentoring-consultorias-charlas"], [8, "estas-disponible-para-hacer-mentoring-consultorias-charlas"], [9, "estas-disponible-para-hacer-mentoring-consultorias-charlas"], [10, "estas-disponible-para-hacer-mentoring-consultorias-charlas"], [11, "estas-disponible-para-hacer-mentoring-consultorias-charlas"], [12, "estas-disponible-para-hacer-mentoring-consultorias-charlas"], [13, "estas-disponible-para-hacer-mentoring-consultorias-charlas"], [14, "estas-disponible-para-hacer-mentoring-consultorias-charlas"], [15, "estas-disponible-para-hacer-mentoring-consultorias-charlas"], [16, "estas-disponible-para-hacer-mentoring-consultorias-charlas"], [17, "estas-disponible-para-hacer-mentoring-consultorias-charlas"], [18, "estas-disponible-para-hacer-mentoring-consultorias-charlas"]], "Joe Doe": [[7, "joe-doe"]], "Erick Navarro": [[8, "erick-navarro"]], "Jean-Pierre Chauvel": [[9, "jean-pierre-chauvel"]], "Jonathan Bolo Desposorio": [[10, "jonathan-bolo-desposorio"]], "Jonatan Tisnado": [[11, "jonatan-tisnado"]], "Jean Pierre Mandujano Gutierrez": [[12, "jean-pierre-mandujano-gutierrez"]], "Miguel \u00c1ngel Fern\u00e1ndez Rodr\u00edguez": [[13, "miguel-angel-fernandez-rodriguez"]], "Mario Inga": [[14, "mario-inga"]], "Oscar Giraldo Castillo": [[15, "oscar-giraldo-castillo"]], "Richard Cancino": [[16, "richard-cancino"]], "Martin Vuelta": [[18, "martin-vuelta"]], "Conducta": [[19, "conducta"]], "Moderaci\u00f3n": [[19, "moderacion"]], "Eventos": [[20, "eventos"]], "Python Per\u00fa": [[21, "python-peru"]], "Cloud y DevOps": [[22, "cloud-y-devops"]], "Despliegue": [[22, "despliegue"]], "Cloud": [[22, "cloud"]], "Ciencias de Datos": [[23, "ciencias-de-datos"]], "Ciencias de Datos B\u00e1sico": [[23, "ciencias-de-datos-basico"]], "Ciencias de Datos Avanzado": [[23, "ciencias-de-datos-avanzado"]], "\u00a1Python de cero a Pro!": [[24, "python-de-cero-a-pro"]], "Machine Learning e IA": [[25, "machine-learning-e-ia"]], "ML B\u00e1sico": [[25, "ml-basico"]], "ML Avanzado": [[25, "ml-avanzado"]], "Desarrollador Python": [[26, "desarrollador-python"]], "Python B\u00e1sico": [[26, "python-basico"]], "Fundamentos b\u00e1sicos de Python:": [[26, "fundamentos-basicos-de-python"]], "Estructura de datos y algoritmos b\u00e1sicos:": [[26, "estructura-de-datos-y-algoritmos-basicos"]], "Clean code:": [[26, "clean-code"]], "Proyectos b\u00e1sicos": [[26, "proyectos-basicos"]], "Python Avanzado": [[26, "python-avanzado"]], "Estructura de datos y algoritmos avanzados": [[26, "estructura-de-datos-y-algoritmos-avanzados"]], "Desarrollador Web": [[27, "desarrollador-web"]], "Desarrollador I": [[27, "desarrollador-i"]], "Desarrollador II": [[27, "desarrollador-ii"]], "Brainstorming de Charlas": [[28, "brainstorming-de-charlas"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..f7a2dc6 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,2 @@ + +https://python.pe/about/https://python.pe/blog/events/2023-10-21-segundo-meetup/https://python.pe/blog/events/2024-06-11-primer-meetup-presencial-2004/https://python.pe/blog/events/2024-12-12-ultimo-byte-meetup/https://python.pe/blog/events/2025-01-24-primer-meetup/https://python.pe/blog/events/2025-08-07-segundo-meetup/https://python.pe/blog/members/darwin/https://python.pe/blog/members/draft-member/https://python.pe/blog/members/erickgnavar/https://python.pe/blog/members/hellhound/https://python.pe/blog/members/jbolo/https://python.pe/blog/members/jotisa/https://python.pe/blog/members/manduinca/https://python.pe/blog/members/mangel-de6021aa/https://python.pe/blog/members/mario21ic/https://python.pe/blog/members/oscargicast/https://python.pe/blog/members/richi/https://python.pe/blog/members/soloidx/https://python.pe/blog/members/zodiacfireworks/https://python.pe/code-of-conduct/https://python.pe/events/https://python.pe/https://python.pe/learning-path/cloud-devops/https://python.pe/learning-path/data-science/https://python.pe/learning-path/https://python.pe/learning-path/machine-learning-ai/https://python.pe/learning-path/python-developer/https://python.pe/learning-path/web-developer/https://python.pe/talk-brainstorming/https://python.pe/genindex/https://python.pe/blog/author/https://python.pe/blog/author/miguel-angel-fernandez-rodriguez/https://python.pe/blog/author/darwin-vasquez/https://python.pe/blog/author/erick-navarro/https://python.pe/blog/author/jean-pierre-chauvel/https://python.pe/blog/author/jonathan-bolo/https://python.pe/blog/author/jonatan-tisnado/https://python.pe/blog/author/jean-pierre-mandujano-gutierrez/https://python.pe/blog/author/mario-inga/https://python.pe/blog/author/oscar-giraldo-castillo/https://python.pe/blog/author/richard-cancino/https://python.pe/blog/author/ider-delzo/https://python.pe/blog/author/zodiacfireworks/https://python.pe/blog/location/https://python.pe/blog/location/lima/https://python.pe/blog/location/peru/https://python.pe/blog/location/somewhere-in-the-cloud/https://python.pe/blog/language/https://python.pe/blog/language/english/https://python.pe/blog/language/espanol/https://python.pe/blog/category/https://python.pe/blog/category/events/https://python.pe/blog/category/members/https://python.pe/blog/archive/https://python.pe/blog/2025/https://python.pe/blog/2024/https://python.pe/blog/2023/https://python.pe/blog/https://python.pe/blog/drafts/https://python.pe/search/ \ No newline at end of file diff --git a/talk-brainstorming/index.html b/talk-brainstorming/index.html new file mode 100644 index 0000000..0dfb6b6 --- /dev/null +++ b/talk-brainstorming/index.html @@ -0,0 +1,189 @@ + + + + + Brainstorming de Charlas - Python Perú + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + Python Perú + +
+ +
+
+
+
+
+
+
+ + + + +
+
+
+
+

Brainstorming de Charlas

+ + +
+ +
+
+
+
+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/uv.lock b/uv.lock deleted file mode 100644 index 5090776..0000000 --- a/uv.lock +++ /dev/null @@ -1,911 +0,0 @@ -version = 1 -revision = 1 -requires-python = ">=3.13" - -[[package]] -name = "ablog" -version = "0.11.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "docutils" }, - { name = "feedgen" }, - { name = "invoke" }, - { name = "packaging" }, - { name = "python-dateutil" }, - { name = "sphinx" }, - { name = "watchdog" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9d/71/f78b123c72ae948d21bc4c762b09ce27596ce6c26c6b21c38cf955a0cb99/ablog-0.11.6.tar.gz", hash = "sha256:7d5e16e006a2ab2aee233dce43bfe51a430f30a9b28856be7dd53641e7900afb", size = 102713 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/89/e0/5d53127fa151f899f48d90702953809f03322cf530bb4bc5d86906577374/ablog-0.11.6-py3-none-any.whl", hash = "sha256:8174585cd0bb01e418a34b26b8a009a4a327cf87ab2ff3d6151a908cf831892e", size = 71840 }, -] - -[[package]] -name = "alabaster" -version = "0.7.16" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c9/3e/13dd8e5ed9094e734ac430b5d0eb4f2bb001708a8b7856cbf8e084e001ba/alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65", size = 23776 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/34/d4e1c02d3bee589efb5dfa17f88ea08bdb3e3eac12bc475462aec52ed223/alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92", size = 13511 }, -] - -[[package]] -name = "babel" -version = "2.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, -] - -[[package]] -name = "black" -version = "24.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "mypy-extensions" }, - { name = "packaging" }, - { name = "pathspec" }, - { name = "platformdirs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8f/5f/bac24a952668c7482cfdb4ebf91ba57a796c9da8829363a772040c1a3312/black-24.3.0.tar.gz", hash = "sha256:a0c9c4a0771afc6919578cec71ce82a3e31e054904e7197deacbc9382671c41f", size = 634292 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/ea/31770a7e49f3eedfd8cd7b35e78b3a3aaad860400f8673994bc988318135/black-24.3.0-py3-none-any.whl", hash = "sha256:41622020d7120e01d377f74249e677039d20e6344ff5851de8a10f11f513bf93", size = 201493 }, -] - -[[package]] -name = "certifi" -version = "2025.1.31" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", size = 167577 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393 }, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698 }, - { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162 }, - { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263 }, - { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966 }, - { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992 }, - { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162 }, - { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972 }, - { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095 }, - { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668 }, - { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073 }, - { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732 }, - { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391 }, - { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702 }, - { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, -] - -[[package]] -name = "click" -version = "8.1.8" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, -] - -[[package]] -name = "colorama" -version = "0.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, -] - -[[package]] -name = "contourpy" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/25/c2/fc7193cc5383637ff390a712e88e4ded0452c9fbcf84abe3de5ea3df1866/contourpy-1.3.1.tar.gz", hash = "sha256:dfd97abd83335045a913e3bcc4a09c0ceadbe66580cf573fe961f4a825efa699", size = 13465753 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/e7/de62050dce687c5e96f946a93546910bc67e483fe05324439e329ff36105/contourpy-1.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a761d9ccfc5e2ecd1bf05534eda382aa14c3e4f9205ba5b1684ecfe400716ef2", size = 271548 }, - { url = "https://files.pythonhosted.org/packages/78/4d/c2a09ae014ae984c6bdd29c11e74d3121b25eaa117eca0bb76340efd7e1c/contourpy-1.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:523a8ee12edfa36f6d2a49407f705a6ef4c5098de4f498619787e272de93f2d5", size = 255576 }, - { url = "https://files.pythonhosted.org/packages/ab/8a/915380ee96a5638bda80cd061ccb8e666bfdccea38d5741cb69e6dbd61fc/contourpy-1.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece6df05e2c41bd46776fbc712e0996f7c94e0d0543af1656956d150c4ca7c81", size = 306635 }, - { url = "https://files.pythonhosted.org/packages/29/5c/c83ce09375428298acd4e6582aeb68b1e0d1447f877fa993d9bf6cd3b0a0/contourpy-1.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:573abb30e0e05bf31ed067d2f82500ecfdaec15627a59d63ea2d95714790f5c2", size = 345925 }, - { url = "https://files.pythonhosted.org/packages/29/63/5b52f4a15e80c66c8078a641a3bfacd6e07106835682454647aca1afc852/contourpy-1.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fa36448e6a3a1a9a2ba23c02012c43ed88905ec80163f2ffe2421c7192a5d7", size = 318000 }, - { url = "https://files.pythonhosted.org/packages/9a/e2/30ca086c692691129849198659bf0556d72a757fe2769eb9620a27169296/contourpy-1.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ea9924d28fc5586bf0b42d15f590b10c224117e74409dd7a0be3b62b74a501c", size = 322689 }, - { url = "https://files.pythonhosted.org/packages/6b/77/f37812ef700f1f185d348394debf33f22d531e714cf6a35d13d68a7003c7/contourpy-1.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5b75aa69cb4d6f137b36f7eb2ace9280cfb60c55dc5f61c731fdf6f037f958a3", size = 1268413 }, - { url = "https://files.pythonhosted.org/packages/3f/6d/ce84e79cdd128542ebeb268f84abb4b093af78e7f8ec504676673d2675bc/contourpy-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:041b640d4ec01922083645a94bb3b2e777e6b626788f4095cf21abbe266413c1", size = 1326530 }, - { url = "https://files.pythonhosted.org/packages/72/22/8282f4eae20c73c89bee7a82a19c4e27af9b57bb602ecaa00713d5bdb54d/contourpy-1.3.1-cp313-cp313-win32.whl", hash = "sha256:36987a15e8ace5f58d4d5da9dca82d498c2bbb28dff6e5d04fbfcc35a9cb3a82", size = 175315 }, - { url = "https://files.pythonhosted.org/packages/e3/d5/28bca491f65312b438fbf076589dcde7f6f966b196d900777f5811b9c4e2/contourpy-1.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:a7895f46d47671fa7ceec40f31fae721da51ad34bdca0bee83e38870b1f47ffd", size = 220987 }, - { url = "https://files.pythonhosted.org/packages/2f/24/a4b285d6adaaf9746e4700932f579f1a7b6f9681109f694cfa233ae75c4e/contourpy-1.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9ddeb796389dadcd884c7eb07bd14ef12408aaae358f0e2ae24114d797eede30", size = 285001 }, - { url = "https://files.pythonhosted.org/packages/48/1d/fb49a401b5ca4f06ccf467cd6c4f1fd65767e63c21322b29b04ec40b40b9/contourpy-1.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19c1555a6801c2f084c7ddc1c6e11f02eb6a6016ca1318dd5452ba3f613a1751", size = 268553 }, - { url = "https://files.pythonhosted.org/packages/79/1e/4aef9470d13fd029087388fae750dccb49a50c012a6c8d1d634295caa644/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841ad858cff65c2c04bf93875e384ccb82b654574a6d7f30453a04f04af71342", size = 310386 }, - { url = "https://files.pythonhosted.org/packages/b0/34/910dc706ed70153b60392b5305c708c9810d425bde12499c9184a1100888/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4318af1c925fb9a4fb190559ef3eec206845f63e80fb603d47f2d6d67683901c", size = 349806 }, - { url = "https://files.pythonhosted.org/packages/31/3c/faee6a40d66d7f2a87f7102236bf4780c57990dd7f98e5ff29881b1b1344/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:14c102b0eab282427b662cb590f2e9340a9d91a1c297f48729431f2dcd16e14f", size = 321108 }, - { url = "https://files.pythonhosted.org/packages/17/69/390dc9b20dd4bb20585651d7316cc3054b7d4a7b4f8b710b2b698e08968d/contourpy-1.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05e806338bfeaa006acbdeba0ad681a10be63b26e1b17317bfac3c5d98f36cda", size = 327291 }, - { url = "https://files.pythonhosted.org/packages/ef/74/7030b67c4e941fe1e5424a3d988080e83568030ce0355f7c9fc556455b01/contourpy-1.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4d76d5993a34ef3df5181ba3c92fabb93f1eaa5729504fb03423fcd9f3177242", size = 1263752 }, - { url = "https://files.pythonhosted.org/packages/f0/ed/92d86f183a8615f13f6b9cbfc5d4298a509d6ce433432e21da838b4b63f4/contourpy-1.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:89785bb2a1980c1bd87f0cb1517a71cde374776a5f150936b82580ae6ead44a1", size = 1318403 }, - { url = "https://files.pythonhosted.org/packages/b3/0e/c8e4950c77dcfc897c71d61e56690a0a9df39543d2164040301b5df8e67b/contourpy-1.3.1-cp313-cp313t-win32.whl", hash = "sha256:8eb96e79b9f3dcadbad2a3891672f81cdcab7f95b27f28f1c67d75f045b6b4f1", size = 185117 }, - { url = "https://files.pythonhosted.org/packages/c1/31/1ae946f11dfbd229222e6d6ad8e7bd1891d3d48bde5fbf7a0beb9491f8e3/contourpy-1.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:287ccc248c9e0d0566934e7d606201abd74761b5703d804ff3df8935f523d546", size = 236668 }, -] - -[[package]] -name = "cycler" -version = "0.12.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 }, -] - -[[package]] -name = "docutils" -version = "0.20.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1f/53/a5da4f2c5739cf66290fac1431ee52aff6851c7c8ffd8264f13affd7bcdd/docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b", size = 2058365 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/26/87/f238c0670b94533ac0353a4e2a1a771a0cc73277b88bff23d3ae35a256c1/docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6", size = 572666 }, -] - -[[package]] -name = "feedgen" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "lxml" }, - { name = "python-dateutil" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6b/59/be0a6f852b5dfbf19e6c8e962c8f41407697f9f52a7902250ed98683ae89/feedgen-1.0.0.tar.gz", hash = "sha256:d9bd51c3b5e956a2a52998c3708c4d2c729f2fcc311188e1e5d3b9726393546a", size = 258496 } - -[[package]] -name = "fonttools" -version = "4.56.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1c/8c/9ffa2a555af0e5e5d0e2ed7fdd8c9bef474ed676995bb4c57c9cd0014248/fonttools-4.56.0.tar.gz", hash = "sha256:a114d1567e1a1586b7e9e7fc2ff686ca542a82769a296cef131e4c4af51e58f4", size = 3462892 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/55/f06b48d48e0b4ec3a3489efafe9bd4d81b6e0802ac51026e3ee4634e89ba/fonttools-4.56.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f20e2c0dfab82983a90f3d00703ac0960412036153e5023eed2b4641d7d5e692", size = 2735127 }, - { url = "https://files.pythonhosted.org/packages/59/db/d2c7c9b6dd5cbd46f183e650a47403ffb88fca17484eb7c4b1cd88f9e513/fonttools-4.56.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f36a0868f47b7566237640c026c65a86d09a3d9ca5df1cd039e30a1da73098a0", size = 2272519 }, - { url = "https://files.pythonhosted.org/packages/4d/a2/da62d779c34a0e0c06415f02eab7fa3466de5d46df459c0275a255cefc65/fonttools-4.56.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62b4c6802fa28e14dba010e75190e0e6228513573f1eeae57b11aa1a39b7e5b1", size = 4762423 }, - { url = "https://files.pythonhosted.org/packages/be/6a/fd4018e0448c8a5e12138906411282c5eab51a598493f080a9f0960e658f/fonttools-4.56.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a05d1f07eb0a7d755fbe01fee1fd255c3a4d3730130cf1bfefb682d18fd2fcea", size = 4834442 }, - { url = "https://files.pythonhosted.org/packages/6d/63/fa1dec8efb35bc11ef9c39b2d74754b45d48a3ccb2cf78c0109c0af639e8/fonttools-4.56.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0073b62c3438cf0058488c002ea90489e8801d3a7af5ce5f7c05c105bee815c3", size = 4742800 }, - { url = "https://files.pythonhosted.org/packages/dd/f4/963247ae8c73ccc4cf2929e7162f595c81dbe17997d1d0ea77da24a217c9/fonttools-4.56.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e2cad98c94833465bcf28f51c248aaf07ca022efc6a3eba750ad9c1e0256d278", size = 4963746 }, - { url = "https://files.pythonhosted.org/packages/ea/e0/46f9600c39c644b54e4420f941f75fa200d9288c9ae171e5d80918b8cbb9/fonttools-4.56.0-cp313-cp313-win32.whl", hash = "sha256:d0cb73ccf7f6d7ca8d0bc7ea8ac0a5b84969a41c56ac3ac3422a24df2680546f", size = 2140927 }, - { url = "https://files.pythonhosted.org/packages/27/6d/3edda54f98a550a0473f032d8050315fbc8f1b76a0d9f3879b72ebb2cdd6/fonttools-4.56.0-cp313-cp313-win_amd64.whl", hash = "sha256:62cc1253827d1e500fde9dbe981219fea4eb000fd63402283472d38e7d8aa1c6", size = 2186709 }, - { url = "https://files.pythonhosted.org/packages/bf/ff/44934a031ce5a39125415eb405b9efb76fe7f9586b75291d66ae5cbfc4e6/fonttools-4.56.0-py3-none-any.whl", hash = "sha256:1088182f68c303b50ca4dc0c82d42083d176cba37af1937e1a976a31149d4d14", size = 1089800 }, -] - -[[package]] -name = "idna" -version = "3.10" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, -] - -[[package]] -name = "imagesize" -version = "1.4.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a7/84/62473fb57d61e31fef6e36d64a179c8781605429fd927b5dd608c997be31/imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a", size = 1280026 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", size = 8769 }, -] - -[[package]] -name = "invoke" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/42/127e6d792884ab860defc3f4d80a8f9812e48ace584ffc5a346de58cdc6c/invoke-2.2.0.tar.gz", hash = "sha256:ee6cbb101af1a859c7fe84f2a264c059020b0cb7fe3535f9424300ab568f6bd5", size = 299835 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/66/7f8c48009c72d73bc6bbe6eb87ac838d6a526146f7dab14af671121eb379/invoke-2.2.0-py3-none-any.whl", hash = "sha256:6ea924cc53d4f78e3d98bc436b08069a03077e6f85ad1ddaa8a116d7dad15820", size = 160274 }, -] - -[[package]] -name = "isort" -version = "5.13.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/87/f9/c1eb8635a24e87ade2efce21e3ce8cd6b8630bb685ddc9cdaca1349b2eb5/isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109", size = 175303 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/b3/8def84f539e7d2289a02f0524b944b15d7c75dab7628bedf1c4f0992029c/isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6", size = 92310 }, -] - -[[package]] -name = "jinja2" -version = "3.1.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markupsafe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, -] - -[[package]] -name = "kiwisolver" -version = "1.4.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156 }, - { url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555 }, - { url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071 }, - { url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053 }, - { url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278 }, - { url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139 }, - { url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517 }, - { url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952 }, - { url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132 }, - { url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997 }, - { url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060 }, - { url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471 }, - { url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793 }, - { url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855 }, - { url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430 }, - { url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294 }, - { url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736 }, - { url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194 }, - { url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942 }, - { url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341 }, - { url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455 }, - { url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138 }, - { url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857 }, - { url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129 }, - { url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538 }, - { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661 }, - { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710 }, - { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213 }, -] - -[[package]] -name = "libgravatar" -version = "1.0.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/e7/3e9c8d596dfad798be22ffa731dfc2ac8b5f72728a4beca56d722c07df6f/libgravatar-1.0.4.tar.gz", hash = "sha256:05cf4f8dfefe995d09078cd3d747c8f04dcf17d6004fc7bb542049a55f2238d9", size = 16969 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/cc/1c5f1d887800035bf0c93f204190ae26f859ab0e00f7ff523324395716b8/libgravatar-1.0.4-py2.py3-none-any.whl", hash = "sha256:f967619b38914e0f941e53387881005e43929814571103f6bbfa2afd75045e20", size = 17567 }, -] - -[[package]] -name = "linkify-it-py" -version = "2.0.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "uc-micro-py" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2a/ae/bb56c6828e4797ba5a4821eec7c43b8bf40f69cda4d4f5f8c8a2810ec96a/linkify-it-py-2.0.3.tar.gz", hash = "sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048", size = 27946 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/1e/b832de447dee8b582cac175871d2f6c3d5077cc56d5575cadba1fd1cccfa/linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79", size = 19820 }, -] - -[[package]] -name = "lxml" -version = "5.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ef/f6/c15ca8e5646e937c148e147244817672cf920b56ac0bf2cc1512ae674be8/lxml-5.3.1.tar.gz", hash = "sha256:106b7b5d2977b339f1e97efe2778e2ab20e99994cbb0ec5e55771ed0795920c8", size = 3678591 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/94/1c/724931daa1ace168e0237b929e44062545bf1551974102a5762c349c668d/lxml-5.3.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c093c7088b40d8266f57ed71d93112bd64c6724d31f0794c1e52cc4857c28e0e", size = 8171881 }, - { url = "https://files.pythonhosted.org/packages/67/0c/857b8fb6010c4246e66abeebb8639eaabba60a6d9b7c606554ecc5cbf1ee/lxml-5.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b0884e3f22d87c30694e625b1e62e6f30d39782c806287450d9dc2fdf07692fd", size = 4440394 }, - { url = "https://files.pythonhosted.org/packages/61/72/c9e81de6a000f9682ccdd13503db26e973b24c68ac45a7029173237e3eed/lxml-5.3.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1637fa31ec682cd5760092adfabe86d9b718a75d43e65e211d5931809bc111e7", size = 5037860 }, - { url = "https://files.pythonhosted.org/packages/24/26/942048c4b14835711b583b48cd7209bd2b5f0b6939ceed2381a494138b14/lxml-5.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a364e8e944d92dcbf33b6b494d4e0fb3499dcc3bd9485beb701aa4b4201fa414", size = 4782513 }, - { url = "https://files.pythonhosted.org/packages/e2/65/27792339caf00f610cc5be32b940ba1e3009b7054feb0c4527cebac228d4/lxml-5.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:779e851fd0e19795ccc8a9bb4d705d6baa0ef475329fe44a13cf1e962f18ff1e", size = 5305227 }, - { url = "https://files.pythonhosted.org/packages/18/e1/25f7aa434a4d0d8e8420580af05ea49c3e12db6d297cf5435ac0a054df56/lxml-5.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c4393600915c308e546dc7003d74371744234e8444a28622d76fe19b98fa59d1", size = 4829846 }, - { url = "https://files.pythonhosted.org/packages/fe/ed/faf235e0792547d24f61ee1448159325448a7e4f2ab706503049d8e5df19/lxml-5.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:673b9d8e780f455091200bba8534d5f4f465944cbdd61f31dc832d70e29064a5", size = 4949495 }, - { url = "https://files.pythonhosted.org/packages/e5/e1/8f572ad9ed6039ba30f26dd4c2c58fb90f79362d2ee35ca3820284767672/lxml-5.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:2e4a570f6a99e96c457f7bec5ad459c9c420ee80b99eb04cbfcfe3fc18ec6423", size = 4773415 }, - { url = "https://files.pythonhosted.org/packages/a3/75/6b57166b9d1983dac8f28f354e38bff8d6bcab013a241989c4d54c72701b/lxml-5.3.1-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:71f31eda4e370f46af42fc9f264fafa1b09f46ba07bdbee98f25689a04b81c20", size = 5337710 }, - { url = "https://files.pythonhosted.org/packages/cc/71/4aa56e2daa83bbcc66ca27b5155be2f900d996f5d0c51078eaaac8df9547/lxml-5.3.1-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:42978a68d3825eaac55399eb37a4d52012a205c0c6262199b8b44fcc6fd686e8", size = 4897362 }, - { url = "https://files.pythonhosted.org/packages/65/10/3fa2da152cd9b49332fd23356ed7643c9b74cad636ddd5b2400a9730d12b/lxml-5.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:8b1942b3e4ed9ed551ed3083a2e6e0772de1e5e3aca872d955e2e86385fb7ff9", size = 4977795 }, - { url = "https://files.pythonhosted.org/packages/de/d2/e1da0f7b20827e7b0ce934963cb6334c1b02cf1bb4aecd218c4496880cb3/lxml-5.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:85c4f11be9cf08917ac2a5a8b6e1ef63b2f8e3799cec194417e76826e5f1de9c", size = 4858104 }, - { url = "https://files.pythonhosted.org/packages/a5/35/063420e1b33d3308f5aa7fcbdd19ef6c036f741c9a7a4bd5dc8032486b27/lxml-5.3.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:231cf4d140b22a923b1d0a0a4e0b4f972e5893efcdec188934cc65888fd0227b", size = 5416531 }, - { url = "https://files.pythonhosted.org/packages/c3/83/93a6457d291d1e37adfb54df23498101a4701834258c840381dd2f6a030e/lxml-5.3.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:5865b270b420eda7b68928d70bb517ccbe045e53b1a428129bb44372bf3d7dd5", size = 5273040 }, - { url = "https://files.pythonhosted.org/packages/39/25/ad4ac8fac488505a2702656550e63c2a8db3a4fd63db82a20dad5689cecb/lxml-5.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dbf7bebc2275016cddf3c997bf8a0f7044160714c64a9b83975670a04e6d2252", size = 5050951 }, - { url = "https://files.pythonhosted.org/packages/82/74/f7d223c704c87e44b3d27b5e0dde173a2fcf2e89c0524c8015c2b3554876/lxml-5.3.1-cp313-cp313-win32.whl", hash = "sha256:d0751528b97d2b19a388b302be2a0ee05817097bab46ff0ed76feeec24951f78", size = 3485357 }, - { url = "https://files.pythonhosted.org/packages/80/83/8c54533b3576f4391eebea88454738978669a6cad0d8e23266224007939d/lxml-5.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:91fb6a43d72b4f8863d21f347a9163eecbf36e76e2f51068d59cd004c506f332", size = 3814484 }, -] - -[[package]] -name = "markdown-it-py" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mdurl" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, -] - -[[package]] -name = "markupsafe" -version = "3.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, - { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, -] - -[[package]] -name = "matplotlib" -version = "3.10.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "contourpy" }, - { name = "cycler" }, - { name = "fonttools" }, - { name = "kiwisolver" }, - { name = "numpy" }, - { name = "packaging" }, - { name = "pillow" }, - { name = "pyparsing" }, - { name = "python-dateutil" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2f/08/b89867ecea2e305f408fbb417139a8dd941ecf7b23a2e02157c36da546f0/matplotlib-3.10.1.tar.gz", hash = "sha256:e8d2d0e3881b129268585bf4765ad3ee73a4591d77b9a18c214ac7e3a79fb2ba", size = 36743335 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/73/6770ff5e5523d00f3bc584acb6031e29ee5c8adc2336b16cd1d003675fe0/matplotlib-3.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c42eee41e1b60fd83ee3292ed83a97a5f2a8239b10c26715d8a6172226988d7b", size = 8176112 }, - { url = "https://files.pythonhosted.org/packages/08/97/b0ca5da0ed54a3f6599c3ab568bdda65269bc27c21a2c97868c1625e4554/matplotlib-3.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4f0647b17b667ae745c13721602b540f7aadb2a32c5b96e924cd4fea5dcb90f1", size = 8046931 }, - { url = "https://files.pythonhosted.org/packages/df/9a/1acbdc3b165d4ce2dcd2b1a6d4ffb46a7220ceee960c922c3d50d8514067/matplotlib-3.10.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa3854b5f9473564ef40a41bc922be978fab217776e9ae1545c9b3a5cf2092a3", size = 8453422 }, - { url = "https://files.pythonhosted.org/packages/51/d0/2bc4368abf766203e548dc7ab57cf7e9c621f1a3c72b516cc7715347b179/matplotlib-3.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e496c01441be4c7d5f96d4e40f7fca06e20dcb40e44c8daa2e740e1757ad9e6", size = 8596819 }, - { url = "https://files.pythonhosted.org/packages/ab/1b/8b350f8a1746c37ab69dda7d7528d1fc696efb06db6ade9727b7887be16d/matplotlib-3.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5d45d3f5245be5b469843450617dcad9af75ca50568acf59997bed9311131a0b", size = 9402782 }, - { url = "https://files.pythonhosted.org/packages/89/06/f570373d24d93503988ba8d04f213a372fa1ce48381c5eb15da985728498/matplotlib-3.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:8e8e25b1209161d20dfe93037c8a7f7ca796ec9aa326e6e4588d8c4a5dd1e473", size = 8063812 }, - { url = "https://files.pythonhosted.org/packages/fc/e0/8c811a925b5a7ad75135f0e5af46408b78af88bbb02a1df775100ef9bfef/matplotlib-3.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:19b06241ad89c3ae9469e07d77efa87041eac65d78df4fcf9cac318028009b01", size = 8214021 }, - { url = "https://files.pythonhosted.org/packages/4a/34/319ec2139f68ba26da9d00fce2ff9f27679fb799a6c8e7358539801fd629/matplotlib-3.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:01e63101ebb3014e6e9f80d9cf9ee361a8599ddca2c3e166c563628b39305dbb", size = 8090782 }, - { url = "https://files.pythonhosted.org/packages/77/ea/9812124ab9a99df5b2eec1110e9b2edc0b8f77039abf4c56e0a376e84a29/matplotlib-3.10.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f06bad951eea6422ac4e8bdebcf3a70c59ea0a03338c5d2b109f57b64eb3972", size = 8478901 }, - { url = "https://files.pythonhosted.org/packages/c9/db/b05bf463689134789b06dea85828f8ebe506fa1e37593f723b65b86c9582/matplotlib-3.10.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3dfb036f34873b46978f55e240cff7a239f6c4409eac62d8145bad3fc6ba5a3", size = 8613864 }, - { url = "https://files.pythonhosted.org/packages/c2/04/41ccec4409f3023a7576df3b5c025f1a8c8b81fbfe922ecfd837ac36e081/matplotlib-3.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dc6ab14a7ab3b4d813b88ba957fc05c79493a037f54e246162033591e770de6f", size = 9409487 }, - { url = "https://files.pythonhosted.org/packages/ac/c2/0d5aae823bdcc42cc99327ecdd4d28585e15ccd5218c453b7bcd827f3421/matplotlib-3.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:bc411ebd5889a78dabbc457b3fa153203e22248bfa6eedc6797be5df0164dbf9", size = 8134832 }, -] - -[[package]] -name = "mdit-py-plugins" -version = "0.4.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown-it-py" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/19/03/a2ecab526543b152300717cf232bb4bb8605b6edb946c845016fa9c9c9fd/mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5", size = 43542 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636", size = 55316 }, -] - -[[package]] -name = "mdurl" -version = "0.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, -] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, -] - -[[package]] -name = "myst-parser" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "docutils" }, - { name = "jinja2" }, - { name = "markdown-it-py" }, - { name = "mdit-py-plugins" }, - { name = "pyyaml" }, - { name = "sphinx" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e8/c1/48ea47b78ade0bb0281f34c9e343e3ea0c681fbc81464dbfd134e983954f/myst_parser-2.0.0.tar.gz", hash = "sha256:ea929a67a6a0b1683cdbe19b8d2e724cd7643f8aa3e7bb18dd65beac3483bead", size = 85800 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/f6/6d61a023d758f488e36638076e8a4ec4447a2cdf86938cf6c60cf1c860e6/myst_parser-2.0.0-py3-none-any.whl", hash = "sha256:7c36344ae39c8e740dad7fdabf5aa6fc4897a813083c6cc9990044eb93656b14", size = 77158 }, -] - -[package.optional-dependencies] -linkify = [ - { name = "linkify-it-py" }, -] - -[[package]] -name = "numpy" -version = "2.2.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fb/90/8956572f5c4ae52201fdec7ba2044b2c882832dcec7d5d0922c9e9acf2de/numpy-2.2.3.tar.gz", hash = "sha256:dbdc15f0c81611925f382dfa97b3bd0bc2c1ce19d4fe50482cb0ddc12ba30020", size = 20262700 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/8b/88b98ed534d6a03ba8cddb316950fe80842885709b58501233c29dfa24a9/numpy-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bfdb06b395385ea9b91bf55c1adf1b297c9fdb531552845ff1d3ea6e40d5aba", size = 20916001 }, - { url = "https://files.pythonhosted.org/packages/d9/b4/def6ec32c725cc5fbd8bdf8af80f616acf075fe752d8a23e895da8c67b70/numpy-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:23c9f4edbf4c065fddb10a4f6e8b6a244342d95966a48820c614891e5059bb50", size = 14130721 }, - { url = "https://files.pythonhosted.org/packages/20/60/70af0acc86495b25b672d403e12cb25448d79a2b9658f4fc45e845c397a8/numpy-2.2.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:a0c03b6be48aaf92525cccf393265e02773be8fd9551a2f9adbe7db1fa2b60f1", size = 5130999 }, - { url = "https://files.pythonhosted.org/packages/2e/69/d96c006fb73c9a47bcb3611417cf178049aae159afae47c48bd66df9c536/numpy-2.2.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:2376e317111daa0a6739e50f7ee2a6353f768489102308b0d98fcf4a04f7f3b5", size = 6665299 }, - { url = "https://files.pythonhosted.org/packages/5a/3f/d8a877b6e48103733ac224ffa26b30887dc9944ff95dffdfa6c4ce3d7df3/numpy-2.2.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fb62fe3d206d72fe1cfe31c4a1106ad2b136fcc1606093aeab314f02930fdf2", size = 14064096 }, - { url = "https://files.pythonhosted.org/packages/e4/43/619c2c7a0665aafc80efca465ddb1f260287266bdbdce517396f2f145d49/numpy-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52659ad2534427dffcc36aac76bebdd02b67e3b7a619ac67543bc9bfe6b7cdb1", size = 16114758 }, - { url = "https://files.pythonhosted.org/packages/d9/79/ee4fe4f60967ccd3897aa71ae14cdee9e3c097e3256975cc9575d393cb42/numpy-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1b416af7d0ed3271cad0f0a0d0bee0911ed7eba23e66f8424d9f3dfcdcae1304", size = 15259880 }, - { url = "https://files.pythonhosted.org/packages/fb/c8/8b55cf05db6d85b7a7d414b3d1bd5a740706df00bfa0824a08bf041e52ee/numpy-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:1402da8e0f435991983d0a9708b779f95a8c98c6b18a171b9f1be09005e64d9d", size = 17876721 }, - { url = "https://files.pythonhosted.org/packages/21/d6/b4c2f0564b7dcc413117b0ffbb818d837e4b29996b9234e38b2025ed24e7/numpy-2.2.3-cp313-cp313-win32.whl", hash = "sha256:136553f123ee2951bfcfbc264acd34a2fc2f29d7cdf610ce7daf672b6fbaa693", size = 6290195 }, - { url = "https://files.pythonhosted.org/packages/97/e7/7d55a86719d0de7a6a597949f3febefb1009435b79ba510ff32f05a8c1d7/numpy-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:5b732c8beef1d7bc2d9e476dbba20aaff6167bf205ad9aa8d30913859e82884b", size = 12619013 }, - { url = "https://files.pythonhosted.org/packages/a6/1f/0b863d5528b9048fd486a56e0b97c18bf705e88736c8cea7239012119a54/numpy-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:435e7a933b9fda8126130b046975a968cc2d833b505475e588339e09f7672890", size = 20944621 }, - { url = "https://files.pythonhosted.org/packages/aa/99/b478c384f7a0a2e0736177aafc97dc9152fc036a3fdb13f5a3ab225f1494/numpy-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7678556eeb0152cbd1522b684dcd215250885993dd00adb93679ec3c0e6e091c", size = 14142502 }, - { url = "https://files.pythonhosted.org/packages/fb/61/2d9a694a0f9cd0a839501d362de2a18de75e3004576a3008e56bdd60fcdb/numpy-2.2.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:2e8da03bd561504d9b20e7a12340870dfc206c64ea59b4cfee9fceb95070ee94", size = 5176293 }, - { url = "https://files.pythonhosted.org/packages/33/35/51e94011b23e753fa33f891f601e5c1c9a3d515448659b06df9d40c0aa6e/numpy-2.2.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:c9aa4496fd0e17e3843399f533d62857cef5900facf93e735ef65aa4bbc90ef0", size = 6691874 }, - { url = "https://files.pythonhosted.org/packages/ff/cf/06e37619aad98a9d03bd8d65b8e3041c3a639be0f5f6b0a0e2da544538d4/numpy-2.2.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4ca91d61a4bf61b0f2228f24bbfa6a9facd5f8af03759fe2a655c50ae2c6610", size = 14036826 }, - { url = "https://files.pythonhosted.org/packages/0c/93/5d7d19955abd4d6099ef4a8ee006f9ce258166c38af259f9e5558a172e3e/numpy-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:deaa09cd492e24fd9b15296844c0ad1b3c976da7907e1c1ed3a0ad21dded6f76", size = 16096567 }, - { url = "https://files.pythonhosted.org/packages/af/53/d1c599acf7732d81f46a93621dab6aa8daad914b502a7a115b3f17288ab2/numpy-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:246535e2f7496b7ac85deffe932896a3577be7af8fb7eebe7146444680297e9a", size = 15242514 }, - { url = "https://files.pythonhosted.org/packages/53/43/c0f5411c7b3ea90adf341d05ace762dad8cb9819ef26093e27b15dd121ac/numpy-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:daf43a3d1ea699402c5a850e5313680ac355b4adc9770cd5cfc2940e7861f1bf", size = 17872920 }, - { url = "https://files.pythonhosted.org/packages/5b/57/6dbdd45ab277aff62021cafa1e15f9644a52f5b5fc840bc7591b4079fb58/numpy-2.2.3-cp313-cp313t-win32.whl", hash = "sha256:cf802eef1f0134afb81fef94020351be4fe1d6681aadf9c5e862af6602af64ef", size = 6346584 }, - { url = "https://files.pythonhosted.org/packages/97/9b/484f7d04b537d0a1202a5ba81c6f53f1846ae6c63c2127f8df869ed31342/numpy-2.2.3-cp313-cp313t-win_amd64.whl", hash = "sha256:aee2512827ceb6d7f517c8b85aa5d3923afe8fc7a57d028cffcd522f1c6fd082", size = 12706784 }, -] - -[[package]] -name = "packaging" -version = "24.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, -] - -[[package]] -name = "pastel" -version = "0.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/f1/4594f5e0fcddb6953e5b8fe00da8c317b8b41b547e2b3ae2da7512943c62/pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d", size = 7555 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/aa/18/a8444036c6dd65ba3624c63b734d3ba95ba63ace513078e1580590075d21/pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364", size = 5955 }, -] - -[[package]] -name = "pathspec" -version = "0.12.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, -] - -[[package]] -name = "pillow" -version = "11.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/af/c097e544e7bd278333db77933e535098c259609c4eb3b85381109602fb5b/pillow-11.1.0.tar.gz", hash = "sha256:368da70808b36d73b4b390a8ffac11069f8a5c85f29eff1f1b01bcf3ef5b2a20", size = 46742715 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/31/9ca79cafdce364fd5c980cd3416c20ce1bebd235b470d262f9d24d810184/pillow-11.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ae98e14432d458fc3de11a77ccb3ae65ddce70f730e7c76140653048c71bfcbc", size = 3226640 }, - { url = "https://files.pythonhosted.org/packages/ac/0f/ff07ad45a1f172a497aa393b13a9d81a32e1477ef0e869d030e3c1532521/pillow-11.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cc1331b6d5a6e144aeb5e626f4375f5b7ae9934ba620c0ac6b3e43d5e683a0f0", size = 3101437 }, - { url = "https://files.pythonhosted.org/packages/08/2f/9906fca87a68d29ec4530be1f893149e0cb64a86d1f9f70a7cfcdfe8ae44/pillow-11.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:758e9d4ef15d3560214cddbc97b8ef3ef86ce04d62ddac17ad39ba87e89bd3b1", size = 4326605 }, - { url = "https://files.pythonhosted.org/packages/b0/0f/f3547ee15b145bc5c8b336401b2d4c9d9da67da9dcb572d7c0d4103d2c69/pillow-11.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b523466b1a31d0dcef7c5be1f20b942919b62fd6e9a9be199d035509cbefc0ec", size = 4411173 }, - { url = "https://files.pythonhosted.org/packages/b1/df/bf8176aa5db515c5de584c5e00df9bab0713548fd780c82a86cba2c2fedb/pillow-11.1.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:9044b5e4f7083f209c4e35aa5dd54b1dd5b112b108648f5c902ad586d4f945c5", size = 4369145 }, - { url = "https://files.pythonhosted.org/packages/de/7c/7433122d1cfadc740f577cb55526fdc39129a648ac65ce64db2eb7209277/pillow-11.1.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:3764d53e09cdedd91bee65c2527815d315c6b90d7b8b79759cc48d7bf5d4f114", size = 4496340 }, - { url = "https://files.pythonhosted.org/packages/25/46/dd94b93ca6bd555588835f2504bd90c00d5438fe131cf01cfa0c5131a19d/pillow-11.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:31eba6bbdd27dde97b0174ddf0297d7a9c3a507a8a1480e1e60ef914fe23d352", size = 4296906 }, - { url = "https://files.pythonhosted.org/packages/a8/28/2f9d32014dfc7753e586db9add35b8a41b7a3b46540e965cb6d6bc607bd2/pillow-11.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b5d658fbd9f0d6eea113aea286b21d3cd4d3fd978157cbf2447a6035916506d3", size = 4431759 }, - { url = "https://files.pythonhosted.org/packages/33/48/19c2cbe7403870fbe8b7737d19eb013f46299cdfe4501573367f6396c775/pillow-11.1.0-cp313-cp313-win32.whl", hash = "sha256:f86d3a7a9af5d826744fabf4afd15b9dfef44fe69a98541f666f66fbb8d3fef9", size = 2291657 }, - { url = "https://files.pythonhosted.org/packages/3b/ad/285c556747d34c399f332ba7c1a595ba245796ef3e22eae190f5364bb62b/pillow-11.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:593c5fd6be85da83656b93ffcccc2312d2d149d251e98588b14fbc288fd8909c", size = 2626304 }, - { url = "https://files.pythonhosted.org/packages/e5/7b/ef35a71163bf36db06e9c8729608f78dedf032fc8313d19bd4be5c2588f3/pillow-11.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:11633d58b6ee5733bde153a8dafd25e505ea3d32e261accd388827ee987baf65", size = 2375117 }, - { url = "https://files.pythonhosted.org/packages/79/30/77f54228401e84d6791354888549b45824ab0ffde659bafa67956303a09f/pillow-11.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:70ca5ef3b3b1c4a0812b5c63c57c23b63e53bc38e758b37a951e5bc466449861", size = 3230060 }, - { url = "https://files.pythonhosted.org/packages/ce/b1/56723b74b07dd64c1010fee011951ea9c35a43d8020acd03111f14298225/pillow-11.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8000376f139d4d38d6851eb149b321a52bb8893a88dae8ee7d95840431977081", size = 3106192 }, - { url = "https://files.pythonhosted.org/packages/e1/cd/7bf7180e08f80a4dcc6b4c3a0aa9e0b0ae57168562726a05dc8aa8fa66b0/pillow-11.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ee85f0696a17dd28fbcfceb59f9510aa71934b483d1f5601d1030c3c8304f3c", size = 4446805 }, - { url = "https://files.pythonhosted.org/packages/97/42/87c856ea30c8ed97e8efbe672b58c8304dee0573f8c7cab62ae9e31db6ae/pillow-11.1.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:dd0e081319328928531df7a0e63621caf67652c8464303fd102141b785ef9547", size = 4530623 }, - { url = "https://files.pythonhosted.org/packages/ff/41/026879e90c84a88e33fb00cc6bd915ac2743c67e87a18f80270dfe3c2041/pillow-11.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e63e4e5081de46517099dc30abe418122f54531a6ae2ebc8680bcd7096860eab", size = 4465191 }, - { url = "https://files.pythonhosted.org/packages/e5/fb/a7960e838bc5df57a2ce23183bfd2290d97c33028b96bde332a9057834d3/pillow-11.1.0-cp313-cp313t-win32.whl", hash = "sha256:dda60aa465b861324e65a78c9f5cf0f4bc713e4309f83bc387be158b077963d9", size = 2295494 }, - { url = "https://files.pythonhosted.org/packages/d7/6c/6ec83ee2f6f0fda8d4cf89045c6be4b0373ebfc363ba8538f8c999f63fcd/pillow-11.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ad5db5781c774ab9a9b2c4302bbf0c1014960a0a7be63278d13ae6fdf88126fe", size = 2631595 }, - { url = "https://files.pythonhosted.org/packages/cf/6c/41c21c6c8af92b9fea313aa47c75de49e2f9a467964ee33eb0135d47eb64/pillow-11.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:67cd427c68926108778a9005f2a04adbd5e67c442ed21d95389fe1d595458756", size = 2377651 }, -] - -[[package]] -name = "platformdirs" -version = "4.3.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/fc/128cc9cb8f03208bdbf93d3aa862e16d376844a14f9a0ce5cf4507372de4/platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907", size = 21302 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/a6/bc1012356d8ece4d66dd75c4b9fc6c1f6650ddd5991e421177d9f8f671be/platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb", size = 18439 }, -] - -[[package]] -name = "poethepoet" -version = "0.33.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pastel" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cd/1d/ec87271390cc5fafdd5996137331ad3a7ce99b715e4ee68db554d202817f/poethepoet-0.33.1.tar.gz", hash = "sha256:8775e09b64f773278b5483659ff238a708723491efadeedd1c2cbf773558cb4c", size = 62536 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/34/ea/c476bfec360eb6831ce46df2719f76d1132b9a87da11c302081a9def5fce/poethepoet-0.33.1-py3-none-any.whl", hash = "sha256:b86d80a81b2ca4e4ce8e8f716cc6004a1a1cdead027778bc07d1c26cb3664770", size = 83512 }, -] - -[[package]] -name = "pygments" -version = "2.19.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, -] - -[[package]] -name = "pyparsing" -version = "3.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/1a/3544f4f299a47911c2ab3710f534e52fea62a633c96806995da5d25be4b2/pyparsing-3.2.1.tar.gz", hash = "sha256:61980854fd66de3a90028d679a954d5f2623e83144b5afe5ee86f43d762e5f0a", size = 1067694 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1c/a7/c8a2d361bf89c0d9577c934ebb7421b25dc84bf3a8e3ac0a40aed9acc547/pyparsing-3.2.1-py3-none-any.whl", hash = "sha256:506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1", size = 107716 }, -] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, -] - -[[package]] -name = "python-pe" -version = "0.1.0" -source = { virtual = "." } -dependencies = [ - { name = "ablog" }, - { name = "libgravatar" }, - { name = "matplotlib" }, - { name = "myst-parser", extra = ["linkify"] }, - { name = "shibuya" }, - { name = "sphinx" }, - { name = "sphinx-copybutton" }, - { name = "sphinx-design" }, - { name = "sphinx-sitemap" }, - { name = "sphinx-tabs" }, - { name = "sphinx-togglebutton" }, - { name = "sphinxcontrib-youtube" }, - { name = "sphinxext-opengraph" }, -] - -[package.dev-dependencies] -dev = [ - { name = "black" }, - { name = "isort" }, - { name = "poethepoet" }, -] - -[package.metadata] -requires-dist = [ - { name = "ablog", specifier = "==0.11.6" }, - { name = "libgravatar", specifier = "==1.0.4" }, - { name = "matplotlib", specifier = ">=3.10.1" }, - { name = "myst-parser", extras = ["linkify"], specifier = "==2.0.0" }, - { name = "shibuya", specifier = "==2025.2.28" }, - { name = "sphinx", specifier = "==7.2.6" }, - { name = "sphinx-copybutton", specifier = "==0.5.2" }, - { name = "sphinx-design", specifier = "==0.5.0" }, - { name = "sphinx-sitemap", specifier = "==2.5.1" }, - { name = "sphinx-tabs", specifier = "==3.4.5" }, - { name = "sphinx-togglebutton", specifier = "==0.3.2" }, - { name = "sphinxcontrib-youtube", specifier = "==1.4.1" }, - { name = "sphinxext-opengraph", specifier = "==0.9.1" }, -] - -[package.metadata.requires-dev] -dev = [ - { name = "black", specifier = "==24.3.0" }, - { name = "isort", specifier = "==5.13.2" }, - { name = "poethepoet", specifier = ">=0.33.1" }, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, -] - -[[package]] -name = "requests" -version = "2.32.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "charset-normalizer" }, - { name = "idna" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, -] - -[[package]] -name = "setuptools" -version = "76.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/32/d2/7b171caf085ba0d40d8391f54e1c75a1cda9255f542becf84575cfd8a732/setuptools-76.0.0.tar.gz", hash = "sha256:43b4ee60e10b0d0ee98ad11918e114c70701bc6051662a9a675a0496c1a158f4", size = 1349387 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/37/66/d2d7e6ad554f3a7c7297c3f8ef6e22643ad3d35ef5c63bf488bc89f32f31/setuptools-76.0.0-py3-none-any.whl", hash = "sha256:199466a166ff664970d0ee145839f5582cb9bca7a0a3a2e795b6a9cb2308e9c6", size = 1236106 }, -] - -[[package]] -name = "shibuya" -version = "2025.2.28" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "sphinx" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f3/8f/3c03c525fe8209ba777dc3f03115f4a8b2940f3f040e7e6f889acfc41003/shibuya-2025.2.28.tar.gz", hash = "sha256:ed76641d030cc70e4079c002cf0feb190e868b211ba0ebbd37f07ba394a62c3b", size = 80558 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3e/b1/9f9d4ca3ac7a43440ad9fe65127f8958e7add90a962b6838bdff7198dd5b/shibuya-2025.2.28-py3-none-any.whl", hash = "sha256:7bd78164db93d793865d04d58c278e36caf36fdb97a72b4ef4086bdeaf0c7dd7", size = 96191 }, -] - -[[package]] -name = "six" -version = "1.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, -] - -[[package]] -name = "snowballstemmer" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/7b/af302bebf22c749c56c9c3e8ae13190b5b5db37a33d9068652e8f73b7089/snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1", size = 86699 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a", size = 93002 }, -] - -[[package]] -name = "sphinx" -version = "7.2.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "alabaster" }, - { name = "babel" }, - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "docutils" }, - { name = "imagesize" }, - { name = "jinja2" }, - { name = "packaging" }, - { name = "pygments" }, - { name = "requests" }, - { name = "snowballstemmer" }, - { name = "sphinxcontrib-applehelp" }, - { name = "sphinxcontrib-devhelp" }, - { name = "sphinxcontrib-htmlhelp" }, - { name = "sphinxcontrib-jsmath" }, - { name = "sphinxcontrib-qthelp" }, - { name = "sphinxcontrib-serializinghtml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/73/8e/6e51da4b26665b4b92b1944ea18b2d9c825e753e19180cc5bdc818d0ed3b/sphinx-7.2.6.tar.gz", hash = "sha256:9a5160e1ea90688d5963ba09a2dcd8bdd526620edbb65c328728f1b2228d5ab5", size = 7015183 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/b6/8ed35256aa530a9d3da15d20bdc0ba888d5364441bb50a5a83ee7827affe/sphinx-7.2.6-py3-none-any.whl", hash = "sha256:1e09160a40b956dc623c910118fa636da93bd3ca0b9876a7b3df90f07d691560", size = 3207959 }, -] - -[[package]] -name = "sphinx-copybutton" -version = "0.5.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "sphinx" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/2b/a964715e7f5295f77509e59309959f4125122d648f86b4fe7d70ca1d882c/sphinx-copybutton-0.5.2.tar.gz", hash = "sha256:4cf17c82fb9646d1bc9ca92ac280813a3b605d8c421225fd9913154103ee1fbd", size = 23039 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/48/1ea60e74949eecb12cdd6ac43987f9fd331156388dcc2319b45e2ebb81bf/sphinx_copybutton-0.5.2-py3-none-any.whl", hash = "sha256:fb543fd386d917746c9a2c50360c7905b605726b9355cd26e9974857afeae06e", size = 13343 }, -] - -[[package]] -name = "sphinx-design" -version = "0.5.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "sphinx" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fd/d0/62a7cee178d30f7217c4badea17eeca020801c0053773098d9ff65636a60/sphinx_design-0.5.0.tar.gz", hash = "sha256:e8e513acea6f92d15c6de3b34e954458f245b8e761b45b63950f65373352ab00", size = 2152330 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/17/52/a1e9d72ecf56047df714a3dd0840a5148e4e83c100e8e0046bcea60a1054/sphinx_design-0.5.0-py3-none-any.whl", hash = "sha256:1af1267b4cea2eedd6724614f19dcc88fe2e15aff65d06b2f6252cee9c4f4c1e", size = 2173865 }, -] - -[[package]] -name = "sphinx-sitemap" -version = "2.5.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "sphinx" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fd/e0/aad3a7579edfed9a8543ea87ecfb7572850a135c611c1f73e8e05b4c5f65/sphinx-sitemap-2.5.1.tar.gz", hash = "sha256:984bef068bbdbc26cfae209a8b61392e9681abc9191b477cd30da406e3a60ee5", size = 5790 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/86/8df5a4eab62d5b12ebed22920cb02d236c5bd800dc321b2f5013a500a3b1/sphinx_sitemap-2.5.1-py3-none-any.whl", hash = "sha256:0b7bce2835f287687f75584d7695e4eb8efaec028e5e7b36e9f791de3c344686", size = 5536 }, -] - -[[package]] -name = "sphinx-tabs" -version = "3.4.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "docutils" }, - { name = "pygments" }, - { name = "sphinx" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/27/32/ab475e252dc2b704e82a91141fa404cdd8901a5cf34958fd22afacebfccd/sphinx-tabs-3.4.5.tar.gz", hash = "sha256:ba9d0c1e3e37aaadd4b5678449eb08176770e0fc227e769b6ce747df3ceea531", size = 16070 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/20/9f/4ac7dbb9f23a2ff5a10903a4f9e9f43e0ff051f63a313e989c962526e305/sphinx_tabs-3.4.5-py3-none-any.whl", hash = "sha256:92cc9473e2ecf1828ca3f6617d0efc0aa8acb06b08c56ba29d1413f2f0f6cf09", size = 9904 }, -] - -[[package]] -name = "sphinx-togglebutton" -version = "0.3.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "docutils" }, - { name = "setuptools" }, - { name = "sphinx" }, - { name = "wheel" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f0/df/d151dfbbe588116e450ca7e898750cb218dca6b2e557ced8de6f9bd7242b/sphinx-togglebutton-0.3.2.tar.gz", hash = "sha256:ab0c8b366427b01e4c89802d5d078472c427fa6e9d12d521c34fa0442559dc7a", size = 8324 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/18/267ce39f29d26cdc7177231428ba823fe5ca94db8c56d1bed69033b364c8/sphinx_togglebutton-0.3.2-py3-none-any.whl", hash = "sha256:9647ba7874b7d1e2d43413d8497153a85edc6ac95a3fea9a75ef9c1e08aaae2b", size = 8249 }, -] - -[[package]] -name = "sphinxcontrib-applehelp" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ba/6e/b837e84a1a704953c62ef8776d45c3e8d759876b4a84fe14eba2859106fe/sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1", size = 20053 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5", size = 119300 }, -] - -[[package]] -name = "sphinxcontrib-devhelp" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/d2/5beee64d3e4e747f316bae86b55943f51e82bb86ecd325883ef65741e7da/sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad", size = 12967 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2", size = 82530 }, -] - -[[package]] -name = "sphinxcontrib-htmlhelp" -version = "2.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/93/983afd9aa001e5201eab16b5a444ed5b9b0a7a010541e0ddfbbfd0b2470c/sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9", size = 22617 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", size = 98705 }, -] - -[[package]] -name = "sphinxcontrib-jsmath" -version = "1.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/e8/9ed3830aeed71f17c026a07a5097edcf44b692850ef215b161b8ad875729/sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8", size = 5787 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", size = 5071 }, -] - -[[package]] -name = "sphinxcontrib-qthelp" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/68/bc/9104308fc285eb3e0b31b67688235db556cd5b0ef31d96f30e45f2e51cae/sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab", size = 17165 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb", size = 88743 }, -] - -[[package]] -name = "sphinxcontrib-serializinghtml" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3b/44/6716b257b0aa6bfd51a1b31665d1c205fb12cb5ad56de752dfa15657de2f/sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d", size = 16080 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072 }, -] - -[[package]] -name = "sphinxcontrib-youtube" -version = "1.4.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "requests" }, - { name = "sphinx" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0a/56/fcc4aa7ec202c90cdd74ba6cf13ed5c6f1210295af6e98598b47c7f3833f/sphinxcontrib_youtube-1.4.1.tar.gz", hash = "sha256:eb7871c8af47fd2b5c9727615354b7f95bce554be8be45b9fa8e5bc022f88059", size = 6023 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/18/02842653778221bae87147d343a85dcd7c86ae5d86d32c5ab34003623db3/sphinxcontrib_youtube-1.4.1-py2.py3-none-any.whl", hash = "sha256:de9cb454f066d580a1e7ad64efae7dd9e12c1b1567a31faa330b1aeaeed40460", size = 6511 }, -] - -[[package]] -name = "sphinxext-opengraph" -version = "0.9.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "sphinx" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1c/5b/4302fe33c88dbfb572e2c1cad26735164c23f16fb8dba94ddb1867d0ef06/sphinxext-opengraph-0.9.1.tar.gz", hash = "sha256:dd2868a1e7c9497977fbbf44cc0844a42af39ca65fe1bb0272518af225d06fc5", size = 1034511 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/0a/970b80b4fa1feeb6deb6f2e22d4cb14e388b27b315a1afdb9db930ff91a4/sphinxext_opengraph-0.9.1-py3-none-any.whl", hash = "sha256:b3b230cc6a5b5189139df937f0d9c7b23c7c204493b22646273687969dcb760e", size = 1005241 }, -] - -[[package]] -name = "uc-micro-py" -version = "1.0.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/7a/146a99696aee0609e3712f2b44c6274566bc368dfe8375191278045186b8/uc-micro-py-1.0.3.tar.gz", hash = "sha256:d321b92cff673ec58027c04015fcaa8bb1e005478643ff4a500882eaab88c48a", size = 6043 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/37/87/1f677586e8ac487e29672e4b17455758fce261de06a0d086167bb760361a/uc_micro_py-1.0.3-py3-none-any.whl", hash = "sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5", size = 6229 }, -] - -[[package]] -name = "urllib3" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369 }, -] - -[[package]] -name = "watchdog" -version = "6.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, - { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, - { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, -] - -[[package]] -name = "wheel" -version = "0.45.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494 }, -]