diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..6ef0525958b15fa276f20866829b880e0490b920 --- /dev/null +++ b/.gitignore @@ -0,0 +1,162 @@ +## Python: https://github.com/github/gitignore/blob/main/Python.gitignore + +# 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/ \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..4e9b517c6010a368eb4787175e1da19eae74fabb --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,19 @@ +build: + stage: build + tags: + - docker-builder + image: + name: gcr.io/kaniko-project/executor:debug + entrypoint: [""] + variables: + IMAGE_TAG: ${CI_COMMIT_REF_SLUG} + GIT_SUBMODULE_STRATEGY: recursive + GIT_SUBMODULE_DEPTH: 1 + GIT_SUBMODULE_UPDATE_FLAGS: --jobs 4 + before_script: + - echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"},\"$CI_DEPENDENCY_PROXY_SERVER\":{\"auth\":\"$(printf "%s:%s" ${CI_DEPENDENCY_PROXY_USER} "${CI_DEPENDENCY_PROXY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json + script: + - /kaniko/executor + --context "${CI_PROJECT_DIR}" + --dockerfile "${CI_PROJECT_DIR}/Dockerfile" + --destination "${CI_REGISTRY_IMAGE}:${IMAGE_TAG}" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..c8cd928494db61be68686563dae5dc498c176444 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,37 @@ +ARG BUILDER_BASE_IMAGE=jupyter/scipy-notebook:python-3.9 +FROM $BUILDER_BASE_IMAGE as builder + +# ================================================================================ +# Linux applications and libraries +# ================================================================================ + +# USER root +# +# RUN apt-get update \ +# && apt-get install --yes --quiet --no-install-recommends \ +# graphviz \ +# && apt-get clean \ +# && rm -rf /var/lib/apt/lists/* + +# ================================================================================ +# Install all needed Python Packages +# ================================================================================ + +USER ${NB_UID} + +# Install from the requirements.txt file +COPY --chown=${NB_UID}:${NB_GID} requirements.in /tmp/ +RUN pip install --no-cache-dir --requirement /tmp/requirements.in \ + && fix-permissions "${CONDA_DIR}" \ + && fix-permissions "/home/${NB_USER}" + +# ================================================================================ +# Setup the user +# ================================================================================ + +USER ${NB_UID} +WORKDIR "${HOME}" + +COPY --chown=${NB_UID}:${NB_GID} assets/ assets/ +COPY --chown=${NB_UID}:${NB_GID} clustering_tutorial.ipynb . + diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..10748f974d3efb24cf3b9f95ae2bc1df39c22ed2 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# tutorial-clustering-tutorial + +In this tutorial, we introduce to the most popular clustering algorithms. We focus on partitioning, hierarchical and density-based clustering algorithms. The methods are tested on synthetic datasets of increasing complexity + + +## Development + +Cloning the source code: +``` +git clone git@gitlab.mpcdf.mpg.de:nomad-lab/ai-toolkit/tutorial-clustering-tutorial.git +cd tutorial-clustering-tutorial +git checkout updates # use a special branch +``` + +Running notebook image and mounting local folder into teh work directory: +``` +docker run --rm -it -e DOCKER_STACKS_JUPYTER_CMD=notebook -p 8888:8888 -v $PWD:/home/jovyan/work gitlab-registry.mpcdf.mpg.de/nomad-lab/ai-toolkit/tutorial-clustering-tutorial:updates +``` + +Building the image (advanced): +``` +docker build --pull --rm -f "Dockerfile" -t gitlab-registry.mpcdf.mpg.de/nomad-lab/ai-toolkit/tutorial-clustering-tutorial:updates "." +``` + +Running container with sudo feature (advanced): +``` +docker run --rm -it --user root -e GRANT_SUDO=yes -e DOCKER_STACKS_JUPYTER_CMD=notebook -p 8888:8888 -v $PWD:/home/jovyan/work gitlab-registry.mpcdf.mpg.de/nomad-lab/ai-toolkit/tutorial-clustering-tutorial:updates +``` diff --git a/assets/clustering_tutorial/Logo_MPG.png b/assets/clustering_tutorial/Logo_MPG.png deleted file mode 100644 index 9c65d4be3575dc8e32da983ea00b728dca00845a..0000000000000000000000000000000000000000 Binary files a/assets/clustering_tutorial/Logo_MPG.png and /dev/null differ diff --git a/assets/clustering_tutorial/Logo_NOMAD.png b/assets/clustering_tutorial/Logo_NOMAD.png deleted file mode 100644 index 2187e3b9351e11aa693758559114c1f2a6670731..0000000000000000000000000000000000000000 Binary files a/assets/clustering_tutorial/Logo_NOMAD.png and /dev/null differ diff --git a/assets/clustering_tutorial/logo_HU.png b/assets/clustering_tutorial/logo_HU.png deleted file mode 100644 index 37ebf3b3287ca450576f3886be6bdd4fd3ad6aa9..0000000000000000000000000000000000000000 Binary files a/assets/clustering_tutorial/logo_HU.png and /dev/null differ diff --git a/assets/clustering_tutorial/logo_MPG.png b/assets/clustering_tutorial/logo_MPG.png deleted file mode 100644 index 9c65d4be3575dc8e32da983ea00b728dca00845a..0000000000000000000000000000000000000000 Binary files a/assets/clustering_tutorial/logo_MPG.png and /dev/null differ diff --git a/assets/clustering_tutorial/logo_NOMAD.png b/assets/clustering_tutorial/logo_NOMAD.png deleted file mode 100644 index 2187e3b9351e11aa693758559114c1f2a6670731..0000000000000000000000000000000000000000 Binary files a/assets/clustering_tutorial/logo_NOMAD.png and /dev/null differ diff --git a/assets/logos/hu-berlin.svg b/assets/logos/hu-berlin.svg new file mode 100644 index 0000000000000000000000000000000000000000..2f3a2813f2fe35763051b6db2289fe47ae567654 --- /dev/null +++ b/assets/logos/hu-berlin.svg @@ -0,0 +1,344 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + viewBox="0 0 290.35003 136.05999" + version="1.1" + id="svg6750" + width="290.35004" + height="136.05998" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs6594"> + <style + id="style6592"> + .cls-1 { + fill: none; + } + + .cls-2 { + fill: #00376c; + } + + .cls-3 { + fill: #fff; + } + </style> + </defs> + <g + id="Bounding_Box" + data-name="Bounding Box" + transform="translate(-5.3022053,-1.5338966)"> + <rect + class="cls-1" + width="365.67001" + height="202.67999" + id="rect6596" + x="0" + y="0" /> + </g> + <g + id="Logo_Siegel_Kombi" + data-name="Logo Siegel Kombi" + transform="translate(-41.09,-33.309998)"> + <circle + class="cls-3" + cx="263.41" + cy="101.34" + r="68.029999" + id="circle6599" /> + <g + id="g6661"> + <polygon + class="cls-2" + points="57.63,79.08 55.9,79.08 55.9,79.93 61.11,79.93 61.11,79.08 59.38,79.08 59.38,75 65.68,75 65.68,79.08 63.97,79.08 63.97,79.93 69.19,79.93 69.19,79.08 67.46,79.08 67.46,70.13 69.19,70.13 69.19,69.27 63.97,69.27 63.97,70.13 65.68,70.13 65.68,74.07 59.38,74.07 59.38,70.13 61.11,70.13 61.11,69.27 55.9,69.27 55.9,70.13 57.63,70.13 " + id="polygon6601" /> + <path + class="cls-2" + d="m 83.72,76.03 v -5.84 h 1.73 v -0.92 h -4.64 v 0.92 h 1.73 v 5.77 c 0,1.87 -1.25,3.21 -2.98,3.21 -1.73,0 -2.82,-1.29 -2.82,-3.18 V 70.2 h 1.75 V 69.28 H 73.25 V 70.2 H 75 v 6.28 c 0,2.17 1.8,3.76 4.27,3.76 2.63,0 4.43,-1.71 4.43,-4.2 z" + id="path6603" /> + <polygon + class="cls-2" + points="92.13,71.83 95.99,80.09 100.16,71.37 100.16,79.08 98.43,79.08 98.43,79.93 103.65,79.93 103.65,79.08 101.92,79.08 101.92,70.2 103.65,70.2 103.65,69.27 100.05,69.27 96.33,77.07 92.69,69.27 89.23,69.27 89.23,70.2 90.96,70.2 90.96,79.08 89.23,79.08 89.23,79.93 93.86,79.93 93.86,79.08 92.13,79.08 " + id="polygon6605" /> + <path + class="cls-2" + d="m 117.07,77.14 c 0,-1.73 -1.27,-2.77 -3.48,-2.84 1.68,0 2.91,-0.99 2.91,-2.38 0,-1.62 -1.25,-2.65 -3.21,-2.65 h -5.63 v 0.85 h 1.73 v 8.95 h -1.73 v 0.85 h 5.95 c 2.19,0 3.46,-1.02 3.46,-2.79 z m -5.93,-6.95 h 1.64 c 1.13,0 1.73,0.65 1.73,1.8 0,1.15 -0.74,1.94 -1.89,1.94 h -1.48 z m 0,8.82 v -4.15 h 1.66 c 1.52,0 2.28,0.74 2.28,2.17 0,1.32 -0.78,1.99 -2.31,1.99 h -1.64 z" + id="path6607" /> + <path + class="cls-2" + d="m 126.25,80.23 c 2.91,0 5.45,-2.63 5.45,-5.65 0,-3.02 -2.54,-5.58 -5.45,-5.58 -2.91,0 -5.49,2.58 -5.49,5.58 0,3 2.54,5.65 5.49,5.65 z m -0.02,-10.27 c 1.94,0 3.51,2.05 3.51,4.64 0,2.59 -1.55,4.66 -3.51,4.66 -1.96,0 -3.48,-2.08 -3.48,-4.68 0,-2.6 1.55,-4.62 3.48,-4.62 z" + id="path6609" /> + <polygon + class="cls-2" + points="137.5,79.08 135.77,79.08 135.77,79.93 143.96,79.93 143.96,77.6 143.13,77.6 143.13,79.01 139.26,79.01 139.26,70.2 140.99,70.2 140.99,69.27 135.77,69.27 135.77,70.2 137.5,70.2 " + id="polygon6611" /> + <path + class="cls-2" + d="m 158.17,74.6 c 0,-2.98 -2.45,-5.33 -5.58,-5.33 h -5.47 v 0.85 h 1.73 v 8.95 h -1.73 v 0.85 h 5.47 c 3.18,0 5.58,-2.28 5.58,-5.33 z m -7.57,4.41 v -8.82 h 1.82 c 2.12,0 3.76,1.94 3.76,4.43 0,2.49 -1.64,4.38 -3.78,4.38 h -1.8 z" + id="path6613" /> + <polygon + class="cls-2" + points="162.97,79.93 168.64,79.93 168.64,79.08 166.68,79.08 166.68,70.2 170.05,70.2 170.05,71.49 170.9,71.49 170.9,68.81 170.05,68.81 170.05,69.27 161.56,69.27 161.56,68.81 160.73,68.81 160.73,71.49 161.56,71.49 161.56,70.2 164.93,70.2 164.93,79.08 162.97,79.08 " + id="polygon6615" /> + <rect + class="cls-2" + x="172.75999" + y="74.489998" + width="3.96" + height="1.4" + id="rect6617" /> + <path + class="cls-2" + d="m 48.65,93.53 h 1.73 v 5.77 c 0,1.87 -1.25,3.21 -2.98,3.21 -1.73,0 -2.82,-1.29 -2.82,-3.18 v -5.79 h 1.75 v -0.92 h -5.24 v 0.92 h 1.75 v 6.28 c 0,2.17 1.8,3.76 4.27,3.76 2.63,0 4.43,-1.71 4.43,-4.2 v -5.84 h 1.73 v -0.92 h -4.64 v 0.92 z" + id="path6619" /> + <polygon + class="cls-2" + points="66.09,93.53 66.09,100.13 59.6,92.61 56.63,92.61 56.63,93.53 58.24,93.53 58.7,94.13 58.7,102.42 56.97,102.42 56.97,103.27 61.61,103.27 61.61,102.42 59.86,102.42 59.86,95.61 66.55,103.46 67.24,103.46 67.24,93.53 68.97,93.53 68.97,92.61 64.33,92.61 64.33,93.53 " + id="polygon6621" /> + <polygon + class="cls-2" + points="72.7,93.53 74.43,93.53 74.43,102.42 72.7,102.42 72.7,103.27 77.92,103.27 77.92,102.42 76.19,102.42 76.19,93.53 77.92,93.53 77.92,92.61 72.7,92.61 " + id="polygon6623" /> + <polygon + class="cls-2" + points="88.94,92.61 88.94,93.53 90.26,93.53 87.35,100.66 84.37,93.53 85.83,93.53 85.83,92.61 81.35,92.61 81.35,93.53 82.48,93.53 86.64,103.55 87.19,103.55 91.32,93.53 92.29,93.53 92.29,92.61 " + id="polygon6625" /> + <polygon + class="cls-2" + points="94.78,103.27 103.04,103.27 103.04,101.13 102.18,101.13 102.18,102.35 98.26,102.35 98.26,98.31 101.21,98.31 101.21,99.47 102.07,99.47 102.07,96.26 101.21,96.28 101.21,97.39 98.26,97.39 98.26,93.53 102.05,93.53 102.05,94.73 102.88,94.73 102.88,92.15 102.02,92.15 102.02,92.61 94.78,92.61 94.78,93.47 96.51,93.47 96.51,102.42 94.78,102.42 " + id="polygon6627" /> + <path + class="cls-2" + d="m 117.87,103.27 v -0.85 h -0.65 c -0.51,0 -0.95,-0.28 -1.34,-0.85 l -2.15,-3.14 c 1.52,-0.28 2.47,-1.41 2.47,-2.95 0,-1.87 -1.2,-2.86 -3.44,-2.86 h -5.45 v 0.92 h 1.73 v 8.88 h -1.73 v 0.85 h 5.21 v -0.85 h -1.73 v -3.83 h 1.13 l 2.47,3.72 c 0.58,0.88 0.76,0.97 1.78,0.97 h 1.68 z m -7.06,-5.61 v -4.13 h 1.62 c 1.2,0 1.85,0.72 1.85,2.01 0,1.29 -0.72,2.12 -1.82,2.12 h -1.64 z" + id="path6629" /> + <path + class="cls-2" + d="m 125.73,97.18 c -0.48,-0.28 -1.04,-0.6 -1.64,-0.95 -0.79,-0.46 -1.04,-0.78 -1.04,-1.38 0,-0.95 0.72,-1.55 1.8,-1.55 0.62,0 1.04,0.12 1.94,0.6 v 1.15 h 0.85 v -2.77 h -0.85 v 0.58 c -0.67,-0.37 -1.34,-0.53 -2.1,-0.53 -1.85,0 -3.3,1.32 -3.3,2.98 0,1.36 0.69,2.17 2.72,3.18 1.91,0.97 2.54,1.57 2.54,2.45 0,0.88 -0.83,1.55 -1.99,1.55 -0.79,0 -1.43,-0.21 -2.35,-0.76 v -1.2 h -0.85 v 2.88 h 0.85 v -0.6 c 0.9,0.51 1.73,0.76 2.61,0.76 1.91,0 3.35,-1.32 3.35,-3.05 0,-1.5 -0.56,-2.24 -2.54,-3.35 z" + id="path6631" /> + <polygon + class="cls-2" + points="137.47,102.42 135.74,102.42 135.74,93.53 137.47,93.53 137.47,92.61 132.26,92.61 132.26,93.53 133.99,93.53 133.99,102.42 132.26,102.42 132.26,103.27 137.47,103.27 " + id="polygon6633" /> + <polygon + class="cls-2" + points="140.44,94.83 141.27,94.83 141.27,93.53 144.64,93.53 144.64,102.42 142.68,102.42 142.68,103.27 148.36,103.27 148.36,102.42 146.4,102.42 146.4,93.53 149.77,93.53 149.77,94.83 150.62,94.83 150.62,92.15 149.77,92.15 149.77,92.61 141.27,92.61 141.27,92.15 140.44,92.15 " + id="polygon6635" /> + <path + class="cls-2" + d="m 155.62,88.53 c -0.65,0 -1.18,0.53 -1.18,1.18 0,0.65 0.53,1.15 1.18,1.15 0.65,0 1.15,-0.53 1.15,-1.15 0,-0.62 -0.53,-1.18 -1.15,-1.18 z" + id="path6637" /> + <path + class="cls-2" + d="m 159.31,103.27 h 3.88 v -0.85 h -0.97 l -4.25,-10.15 h -0.6 l -4.43,10.15 h -0.88 v 0.85 h 3.23 v -0.85 h -1.32 l 1.11,-2.52 h 4.2 l 1.04,2.52 h -1.02 v 0.85 z m -3.83,-4.27 1.75,-4.06 1.68,4.06 h -3.44 z" + id="path6639" /> + <path + class="cls-2" + d="m 159.71,90.86 c 0.62,0 1.16,-0.53 1.16,-1.15 0,-0.62 -0.53,-1.18 -1.16,-1.18 -0.63,0 -1.18,0.53 -1.18,1.18 0,0.65 0.53,1.15 1.18,1.15 z" + id="path6641" /> + <polygon + class="cls-2" + points="165.49,92.61 165.49,92.15 164.66,92.15 164.66,94.83 165.49,94.83 165.49,93.53 168.86,93.53 168.86,102.42 166.9,102.42 166.9,103.27 172.58,103.27 172.58,102.42 170.61,102.42 170.61,93.53 173.98,93.53 173.98,94.83 174.84,94.83 174.84,92.15 173.98,92.15 173.98,92.61 " + id="polygon6643" /> + <polygon + class="cls-2" + points="68.99,118.08 68.99,116.88 74.76,116.88 68.16,126.14 68.16,126.62 77.5,126.62 77.5,124.13 76.67,124.13 76.67,125.7 70.54,125.7 77.18,116.47 77.18,115.96 68.99,115.96 68.99,115.5 68.16,115.5 68.16,118.08 " + id="polygon6645" /> + <path + class="cls-2" + d="m 88.46,116.88 h 1.73 v 5.77 c 0,1.87 -1.25,3.21 -2.98,3.21 -1.73,0 -2.82,-1.29 -2.82,-3.18 v -5.79 h 1.75 v -0.92 H 80.9 v 0.92 h 1.75 v 6.28 c 0,2.17 1.8,3.76 4.27,3.76 2.63,0 4.43,-1.71 4.43,-4.2 v -5.84 h 1.73 v -0.92 h -4.64 v 0.92 z" + id="path6647" /> + <path + class="cls-2" + d="m 108.2,120.99 c 1.68,0 2.91,-0.99 2.91,-2.38 0,-1.62 -1.25,-2.65 -3.21,-2.65 h -5.63 v 0.85 H 104 v 8.95 h -1.73 v 0.85 h 5.95 c 2.19,0 3.46,-1.02 3.46,-2.79 0,-1.77 -1.27,-2.77 -3.48,-2.84 z m -2.45,-4.11 h 1.64 c 1.13,0 1.73,0.65 1.73,1.8 0,1.15 -0.74,1.94 -1.89,1.94 h -1.48 z m 1.64,8.82 h -1.64 v -4.15 h 1.66 c 1.52,0 2.28,0.74 2.28,2.17 0,1.32 -0.78,1.99 -2.31,1.99 z" + id="path6649" /> + <polygon + class="cls-2" + points="124,124.47 123.15,124.47 123.15,125.7 119.23,125.7 119.23,121.66 122.18,121.66 122.18,122.81 123.03,122.81 123.03,119.6 122.18,119.63 122.18,120.74 119.23,120.74 119.23,116.88 123.01,116.88 123.01,118.08 123.84,118.08 123.84,115.5 122.99,115.5 122.99,115.96 115.74,115.96 115.74,116.81 117.47,116.81 117.47,125.77 115.74,125.77 115.74,126.62 124,126.62 " + id="polygon6651" /> + <path + class="cls-2" + d="m 136.85,124.91 -2.15,-3.14 c 1.52,-0.28 2.47,-1.41 2.47,-2.95 0,-1.87 -1.2,-2.86 -3.44,-2.86 h -5.45 v 0.92 h 1.73 v 8.88 h -1.73 v 0.85 h 5.22 v -0.85 h -1.73 v -3.83 h 1.13 l 2.47,3.72 c 0.58,0.88 0.76,0.97 1.78,0.97 h 1.68 v -0.85 h -0.65 c -0.51,0 -0.95,-0.28 -1.34,-0.85 z m -5.08,-3.9 v -4.13 h 1.62 c 1.2,0 1.85,0.72 1.85,2.01 0,1.29 -0.71,2.12 -1.82,2.12 h -1.64 z" + id="path6653" /> + <polygon + class="cls-2" + points="142.01,126.62 150.2,126.62 150.2,124.29 149.37,124.29 149.37,125.7 145.5,125.7 145.5,116.88 147.23,116.88 147.23,115.96 142.01,115.96 142.01,116.88 143.74,116.88 143.74,125.77 142.01,125.77 " + id="polygon6655" /> + <polygon + class="cls-2" + points="153.36,116.88 155.09,116.88 155.09,125.77 153.36,125.77 153.36,126.62 158.58,126.62 158.58,125.77 156.85,125.77 156.85,116.88 158.58,116.88 158.58,115.96 153.36,115.96 " + id="polygon6657" /> + <polygon + class="cls-2" + points="165.47,115.96 162.49,115.96 162.49,116.88 164.11,116.88 164.57,117.48 164.57,125.77 162.84,125.77 162.84,126.62 167.48,126.62 167.48,125.77 165.73,125.77 165.73,118.96 172.42,126.8 173.11,126.8 173.11,116.88 174.84,116.88 174.84,115.96 170.2,115.96 170.2,116.88 171.96,116.88 171.96,123.48 " + id="polygon6659" /> + </g> + <g + id="g6747"> + <g + id="g6725"> + <g + id="g6721"> + <path + class="cls-2" + d="m 218.77,136.66 c 0.51,-0.39 0.6,-1.15 0.21,-1.66 -0.41,-0.52 -1.15,-0.6 -1.66,-0.21 -0.52,0.4 -0.61,1.14 -0.21,1.66 0.39,0.51 1.14,0.62 1.66,0.21 z" + id="path6663" /> + <polygon + class="cls-2" + points="225.88,138.63 224.69,140.05 225.14,140.44 225.7,139.78 228.88,142.44 220.96,144.49 220.74,144.76 225.89,149.09 227.04,147.71 226.58,147.33 225.86,148.19 222.48,145.35 230.41,143.34 230.64,143.06 226.13,139.27 226.34,139.01 " + id="polygon6665" /> + <path + class="cls-2" + d="m 241.23,149.51 -2.92,-1.62 -0.32,0.58 1.09,0.6 -2.01,3.63 c -0.65,1.18 -1.9,1.58 -2.99,0.98 -1.06,-0.59 -1.32,-1.8 -0.66,-2.99 l 2.02,-3.65 1.11,0.61 0.32,-0.58 -3.3,-1.83 -0.32,0.58 1.1,0.61 -2.19,3.95 c -0.76,1.37 -0.18,2.99 1.37,3.86 1.66,0.92 3.38,0.47 4.25,-1.1 l 2.04,-3.67 1.09,0.6 0.32,-0.58 v 0 z" + id="path6667" /> + <path + class="cls-2" + d="m 249.17,160.03 c 1.53,0.38 2.59,-0.11 2.9,-1.35 0.3,-1.21 -0.41,-2.16 -1.94,-2.59 1.18,0.29 2.2,-0.19 2.44,-1.15 0.28,-1.13 -0.41,-2.07 -1.78,-2.41 l -3.93,-0.98 -0.15,0.6 1.21,0.3 -1.56,6.25 -1.21,-0.3 -0.15,0.6 4.16,1.04 v 0 z m -0.84,-3.98 1.16,0.29 c 1.06,0.27 1.47,0.91 1.22,1.91 -0.23,0.92 -0.89,1.25 -1.96,0.98 l -1.14,-0.29 0.72,-2.9 v 0 z m 0.81,-3.25 1.14,0.29 c 0.79,0.2 1.1,0.75 0.89,1.56 -0.21,0.82 -0.85,1.22 -1.66,1.02 l -1.03,-0.26 0.65,-2.61 v 0 z" + id="path6669" /> + <polygon + class="cls-2" + points="257.56,161.37 263.51,161.57 263.56,160.03 262.95,160.01 262.91,160.89 260.09,160.79 260.19,157.89 262.32,157.96 262.29,158.79 262.9,158.81 262.99,156.5 262.37,156.5 262.34,157.3 260.22,157.22 260.32,154.45 263.04,154.55 263.01,155.41 263.61,155.43 263.67,153.57 263.05,153.55 263.04,153.88 257.83,153.7 257.81,154.31 259.06,154.36 258.83,160.8 257.59,160.75 " + id="polygon6671" /> + <path + class="cls-2" + d="m 276.92,159.44 -0.46,0.07 c -0.36,0.06 -0.7,-0.09 -1.05,-0.46 l -1.88,-1.99 c 1.05,-0.37 1.6,-1.28 1.42,-2.38 -0.21,-1.33 -1.17,-1.9 -2.76,-1.65 l -3.87,0.61 0.1,0.66 1.23,-0.19 1,6.31 -1.23,0.19 0.1,0.61 3.71,-0.59 -0.1,-0.61 -1.23,0.19 -0.43,-2.72 0.8,-0.13 2.17,2.36 c 0.51,0.56 0.65,0.6 1.37,0.49 l 1.2,-0.19 -0.1,-0.61 v 0 z m -6.02,-5.52 1.15,-0.18 c 0.85,-0.13 1.39,0.3 1.54,1.22 0.14,0.9 -0.27,1.59 -1.06,1.71 l -1.16,0.18 -0.47,-2.94 v 0 z" + id="path6673" /> + <polygon + class="cls-2" + points="283.08,157.35 281.91,157.79 282.13,158.37 287.64,156.26 287.04,154.69 286.48,154.9 286.84,155.85 284.24,156.85 281.96,150.93 283.13,150.48 282.89,149.86 279.38,151.2 279.62,151.82 280.78,151.38 " + id="polygon6675" /> + <polygon + class="cls-2" + points="294.73,151.62 293.67,152.26 290.37,146.78 291.44,146.14 291.1,145.57 287.88,147.5 288.22,148.07 289.29,147.43 292.59,152.91 291.52,153.55 291.83,154.08 295.05,152.14 " + id="polygon6677" /> + <polygon + class="cls-2" + points="299.08,139.31 299.54,139.79 300.46,138.93 303.7,142.41 296.59,141.63 295.03,143.09 295.48,143.58 296.33,142.79 296.87,142.87 300.93,147.23 300.02,148.08 300.44,148.53 302.88,146.26 302.46,145.81 301.54,146.67 298.2,143.09 305.57,143.93 305.94,143.59 301.07,138.37 301.98,137.52 301.53,137.03 " + id="polygon6679" /> + <path + class="cls-2" + d="m 309.26,133.04 c -0.53,-0.37 -1.28,-0.24 -1.65,0.29 -0.38,0.54 -0.24,1.28 0.29,1.65 0.54,0.38 1.27,0.25 1.65,-0.29 0.37,-0.52 0.25,-1.27 -0.29,-1.65 z" + id="path6681" /> + <polygon + class="cls-2" + points="213.05,120.95 213.55,122.08 214.12,121.83 212.59,118.4 212.03,118.65 212.54,119.78 206.65,122.41 206.14,121.27 205.58,121.52 207.11,124.95 207.67,124.7 207.17,123.57 209.76,122.42 211.61,126.56 209.01,127.72 208.51,126.58 207.94,126.83 209.47,130.26 210.03,130.01 209.53,128.87 215.41,126.25 215.92,127.39 216.48,127.14 214.95,123.71 214.39,123.96 214.9,125.1 212.21,126.29 210.37,122.15 " + id="polygon6683" /> + <path + class="cls-2" + d="m 202.46,106.31 0.52,3.3 0.66,-0.1 -0.19,-1.23 4.1,-0.65 c 1.33,-0.21 2.42,0.53 2.62,1.75 0.19,1.2 -0.6,2.15 -1.95,2.36 l -4.12,0.65 -0.2,-1.25 -0.66,0.1 0.59,3.72 0.66,-0.1 -0.2,-1.25 4.46,-0.71 c 1.54,-0.24 2.47,-1.7 2.19,-3.46 -0.3,-1.87 -1.71,-2.96 -3.49,-2.68 l -4.15,0.66 -0.19,-1.23 -0.66,0.1 v 0 z" + id="path6685" /> + <polygon + class="cls-2" + points="210.52,90.17 210.36,91.4 204.02,90.62 204.17,89.38 203.51,89.3 203.19,91.88 208.44,95.21 202.55,97.13 202.25,99.61 202.9,99.69 203.06,98.45 209.4,99.23 209.25,100.47 209.86,100.54 210.27,97.23 209.66,97.15 209.51,98.39 204.33,97.76 210.57,95.73 204.71,91.98 210.21,92.65 210.06,93.89 210.67,93.97 211.13,90.24 " + id="polygon6687" /> + <path + class="cls-2" + d="m 214.05,81.41 c 0.57,-1.47 0.21,-2.59 -0.98,-3.05 -1.16,-0.45 -2.19,0.14 -2.8,1.61 0.43,-1.13 0.08,-2.21 -0.85,-2.57 -1.08,-0.42 -2.1,0.15 -2.61,1.47 l -1.45,3.78 0.57,0.22 0.45,-1.16 6.02,2.31 -0.45,1.16 0.57,0.22 1.54,-4 v 0 z m -4.05,0.35 0.43,-1.12 c 0.39,-1.02 1.09,-1.35 2.05,-0.98 0.88,0.34 1.13,1.04 0.74,2.06 l -0.42,1.1 -2.79,-1.07 v 0 z m -3.13,-1.2 0.42,-1.1 c 0.29,-0.76 0.88,-1 1.66,-0.7 0.79,0.3 1.11,1 0.81,1.77 l -0.38,0.99 -2.51,-0.97 v 0 z" + id="path6689" /> + <path + class="cls-2" + d="m 219.4,71.99 c 1.2,-1.71 0.7,-4.3 -1.09,-5.54 -1.75,-1.23 -4.34,-0.81 -5.54,0.9 -1.22,1.74 -0.74,4.3 1.02,5.54 1.8,1.26 4.38,0.84 5.6,-0.9 v 0 z m -6.06,-4.23 c 0.8,-1.14 2.66,-1.22 4.18,-0.15 1.54,1.08 2.11,2.84 1.3,3.99 -0.8,1.14 -2.66,1.2 -4.2,0.12 -1.51,-1.06 -2.08,-2.82 -1.28,-3.96 z" + id="path6691" /> + <polygon + class="cls-2" + points="225.06,63.84 224.17,64.7 224.6,65.14 228.84,61.05 227.67,59.84 227.24,60.26 227.94,60.99 225.94,62.92 221.53,58.36 222.43,57.5 221.97,57.02 219.27,59.63 219.73,60.1 220.62,59.24 " + id="polygon6693" /> + <path + class="cls-2" + d="m 231.61,58.83 3.34,-2.09 c 1.94,-1.21 2.54,-3.52 1.38,-5.38 -1.14,-1.82 -3.53,-2.32 -5.44,-1.12 l -3.34,2.09 0.33,0.52 1.06,-0.66 3.42,5.46 -1.06,0.66 0.33,0.52 v 0 z m 1.77,-1.89 -3.36,-5.38 1.11,-0.69 c 1.3,-0.81 3.04,-0.25 3.98,1.27 0.95,1.52 0.67,3.3 -0.64,4.12 l -1.1,0.69 v 0 z" + id="path6695" /> + <polygon + class="cls-2" + points="246.03,45.13 246.62,44.93 245.99,43.11 245.41,43.31 245.52,43.62 239.74,45.61 239.63,45.3 239.06,45.49 239.69,47.31 240.26,47.12 239.95,46.24 242.25,45.45 244.33,51.5 242.99,51.95 243.19,52.53 247.06,51.21 246.86,50.63 245.52,51.08 243.44,45.04 245.73,44.25 " + id="polygon6697" /> + <polygon + class="cls-2" + points="254.53,44.94 251.41,45.51 251.63,46.75 254.75,46.19 " + id="polygon6699" /> + <path + class="cls-2" + d="m 267.74,41.25 -3.34,-0.06 v 0.67 c 0,0 1.23,0.02 1.23,0.02 l -0.07,4.15 c -0.02,1.35 -0.94,2.29 -2.18,2.27 -1.21,-0.02 -2.01,-0.97 -1.99,-2.33 l 0.07,-4.17 1.26,0.02 v -0.66 c 0,0 -3.76,-0.07 -3.76,-0.07 v 0.66 c 0,0 1.25,0.02 1.25,0.02 l -0.08,4.52 c -0.03,1.56 1.25,2.73 3.02,2.76 1.89,0.03 3.21,-1.17 3.24,-2.97 l 0.07,-4.2 1.24,0.02 v -0.66 h 0.01 z" + id="path6701" /> + <polygon + class="cls-2" + points="279.47,43.48 279.29,44.12 280.51,44.44 279.28,49.03 276.18,42.6 274.11,42.04 273.94,42.68 275.06,42.98 275.27,43.49 273.73,49.24 272.52,48.92 272.36,49.52 275.59,50.38 275.75,49.79 274.53,49.46 275.8,44.73 278.99,51.43 279.47,51.56 281.32,44.66 282.52,44.98 282.69,44.34 " + id="polygon6703" /> + <polygon + class="cls-2" + points="288.7,54.95 287.6,54.37 290.6,48.72 291.7,49.3 292.01,48.72 288.7,46.96 288.39,47.54 289.49,48.13 286.49,53.77 285.39,53.19 285.1,53.73 288.41,55.49 " + id="polygon6705" /> + <polygon + class="cls-2" + points="298.33,52.71 295.76,50.77 295.36,51.3 296.01,51.79 294.06,59.35 294.38,59.59 301.09,55.62 301.65,56.04 302.05,55.51 300.12,54.06 299.72,54.59 300.48,55.16 295.72,58 297.1,52.61 297.93,53.24 " + id="polygon6707" /> + <polygon + class="cls-2" + points="300.22,64.37 304.2,68.79 305.35,67.76 304.94,67.3 304.29,67.89 302.4,65.79 304.56,63.85 305.98,65.43 305.36,65.98 305.77,66.44 307.49,64.9 307.07,64.45 306.47,64.98 305.05,63.4 307.11,61.55 308.93,63.57 308.29,64.15 308.69,64.59 310.07,63.35 309.66,62.89 309.42,63.12 305.93,59.24 305.47,59.65 306.3,60.58 301.52,64.89 300.68,63.96 " + id="polygon6709" /> + <path + class="cls-2" + d="m 312.67,83.64 c -0.15,0.73 -0.14,1.35 0.06,1.96 0.43,1.31 1.65,2 2.83,1.61 1.03,-0.33 1.41,-0.88 1.72,-2.48 0.08,-0.39 0.18,-0.84 0.28,-1.33 0.14,-0.64 0.31,-0.89 0.72,-1.02 0.65,-0.21 1.22,0.15 1.46,0.89 0.14,0.43 0.15,0.74 0.02,1.46 l -0.79,0.26 0.19,0.58 1.89,-0.62 -0.19,-0.58 -0.39,0.13 c 0.1,-0.54 0.07,-1.03 -0.1,-1.56 -0.41,-1.26 -1.63,-1.97 -2.77,-1.6 -0.93,0.3 -1.33,0.96 -1.57,2.57 -0.24,1.53 -0.51,2.09 -1.11,2.28 -0.62,0.2 -1.24,-0.22 -1.5,-1.01 -0.18,-0.54 -0.18,-1.02 0,-1.78 l 0.82,-0.27 -0.19,-0.58 -1.97,0.64 0.19,0.58 0.41,-0.13 v 0 z" + id="path6711" /> + <polygon + class="cls-2" + points="315.77,95.98 315.59,94.74 321.92,93.85 322.1,95.09 322.76,94.99 322.23,91.28 321.58,91.37 321.75,92.6 315.42,93.49 315.24,92.26 314.64,92.35 315.16,96.06 " + id="polygon6713" /> + <polygon + class="cls-2" + points="321.33,106.86 321.31,107.48 323.23,107.54 323.26,106.93 322.92,106.92 323.14,100.81 323.47,100.82 323.49,100.23 321.57,100.16 321.54,100.76 322.47,100.79 322.39,103.21 316,102.99 316.05,101.58 315.43,101.56 315.29,105.64 315.9,105.66 315.95,104.25 322.34,104.47 322.26,106.89 " + id="polygon6715" /> + <path + class="cls-2" + d="m 313.49,118.08 0.17,-0.69 7.83,-1.2 0.1,-0.42 -6.32,-4.86 0.15,-0.61 -0.6,-0.15 -0.56,2.26 0.6,0.15 0.22,-0.9 1.57,1.19 -0.73,2.93 -1.94,0.29 0.18,-0.71 -0.6,-0.15 -0.67,2.71 0.59,0.16 v 0 z m 9.26,0.68 c 0.48,0.12 0.97,-0.18 1.08,-0.64 0.12,-0.48 -0.17,-0.97 -0.65,-1.09 -0.46,-0.11 -0.95,0.18 -1.07,0.66 -0.12,0.46 0.18,0.95 0.64,1.06 v 0 z m 0.71,-2.85 c 0.48,0.12 0.97,-0.18 1.08,-0.64 0.12,-0.47 -0.18,-0.97 -0.65,-1.08 -0.46,-0.12 -0.95,0.18 -1.07,0.66 -0.11,0.46 0.18,0.95 0.64,1.06 z m -6.24,-2.63 2.53,1.93 -3.13,0.47 z" + id="path6717" /> + <polygon + class="cls-2" + points="314.56,129.35 314.3,129.91 316.04,130.72 316.3,130.17 316,130.03 318.59,124.48 318.89,124.63 319.14,124.08 317.39,123.27 317.14,123.81 317.98,124.2 316.96,126.4 311.16,123.7 311.76,122.42 311.2,122.16 309.48,125.86 310.04,126.12 310.63,124.84 316.43,127.55 315.4,129.74 " + id="polygon6719" /> + </g> + <path + class="cls-2" + d="m 311.28,79.12 -0.23,-0.4 c -0.18,-0.32 -0.16,-0.69 0.06,-1.14 l 1.21,-2.45 c 0.71,0.86 1.75,1.05 2.72,0.51 1.17,-0.66 1.37,-1.76 0.58,-3.16 l -1.92,-3.42 -0.58,0.32 0.61,1.09 -5.57,3.13 -0.61,-1.09 -0.54,0.3 1.84,3.27 0.53,-0.3 -0.61,-1.09 2.4,-1.35 0.4,0.71 -1.46,2.86 c -0.35,0.67 -0.34,0.82 0.02,1.46 l 0.6,1.06 0.54,-0.3 v 0 z m 3.08,-7.56 0.57,1.01 c 0.42,0.75 0.2,1.41 -0.61,1.87 -0.8,0.45 -1.58,0.3 -1.97,-0.4 l -0.58,-1.03 2.59,-1.46 v 0 z" + id="path6723" /> + </g> + <g + id="g6745"> + <path + class="cls-2" + d="m 276.04,76.84 c -0.06,-0.03 -1.54,-0.66 -1.75,-0.71 -0.1,-0.02 -0.85,-0.54 -1.39,-0.92 -0.64,-0.45 -0.93,-0.64 -1,-0.66 -0.12,-0.03 -0.78,-0.35 -1.11,-0.51 l -1.65,-1.06 -1.65,-1.21 c 0,0 -0.32,-0.25 -0.68,-0.34 -0.01,0 -1,-0.36 -2.26,-0.24 -0.76,0.1 -2.75,0.35 -2.83,0.35 -0.09,0 -2.02,0.39 -2.15,0.47 -0.02,0.01 -1.58,0.99 -2.08,1.29 h -0.02 c 0,0 -0.2,1.14 -0.2,1.14 l 0.13,-0.13 c 0,0 1.36,-1.34 2.63,-1.73 0.03,0 2.75,-0.65 4.64,-0.55 0.02,0 1.94,0.04 3.34,1.08 l 1.25,1.04 1.82,0.95 c 0,0 1.37,1.1 4.38,2.32 0.02,0 1.63,0.62 2.54,1.52 l 0.08,0.08 0.02,-0.11 c 0.16,-0.88 -1.96,-2.02 -2.05,-2.07 z" + id="path6727" /> + <path + class="cls-2" + d="m 283.6,85.55 -0.3,-1.77 -0.2,-1.06 -0.35,-1.21 c -0.42,-1.53 -1.05,-2.56 -1.86,-3.62 -0.01,-0.03 -0.3,-0.68 -1.44,-1.66 -0.09,-0.08 -0.2,-0.18 -0.32,-0.29 -0.4,-0.38 -1.01,-0.95 -1.81,-1.41 -0.19,-0.12 -1.92,-1.16 -2.03,-1.2 -0.04,-0.01 -0.15,-0.05 -0.29,-0.1 -0.35,-0.13 -0.88,-0.32 -1.03,-0.35 -0.39,-0.1 -0.83,-0.16 -1.1,-0.19 l 0.2,-0.06 -0.54,0.03 v 0.02 c 0,0 -0.06,0.05 -0.06,0.1 0,0.09 0.11,0.22 0.87,0.42 0.18,0.05 1.8,0.65 1.8,0.65 0.02,0.01 1.95,1.18 2.27,1.39 0.02,0.01 1.56,1.17 2.57,2.7 0.01,0.02 1.32,1.69 2.05,4.69 l 0.93,2.6 1,1.79 -0.35,-1.46 z" + id="path6729" /> + <path + class="cls-2" + d="m 286.46,93.2 c -0.09,-0.71 -0.21,-1.59 -0.3,-2.11 -0.12,-0.76 -0.57,-2.15 -0.96,-2.8 -0.37,-0.63 -1.23,-1.24 -1.26,-1.27 l -0.17,-0.12 0.67,1.57 c 0,0 0.83,1.7 1.32,5.74 l -0.33,3.56 -0.38,1.3 c -0.13,1.23 -0.13,1.24 -0.06,1.25 h 0.03 c 0,0 0.02,-0.01 0.02,-0.01 0.03,-0.03 0.84,-0.78 1.04,-1.67 0.01,-0.06 0.29,-1.46 0.33,-1.79 0,-0.02 0.26,-2.11 0.17,-2.76 -0.03,-0.2 -0.07,-0.52 -0.12,-0.88 z" + id="path6731" /> + <path + class="cls-2" + d="m 292.45,112.56 c -0.68,-0.55 -0.5,-1.15 -0.49,-1.19 l 0.22,-2.56 c 0.02,-1.27 -0.53,-2.34 -0.53,-2.34 -0.18,-0.61 -1.13,-1.05 -1.18,-1.07 -0.56,-0.12 -1.33,-0.13 -1.62,-0.13 h -0.12 c -1.5,0.09 -1.91,0.31 -2.11,0.42 -0.09,0.05 -0.11,0.05 -0.16,0.04 0,-0.02 0.03,-0.12 0.06,-0.2 0.09,-0.22 0.23,-0.59 0.15,-1.06 -0.32,-0.85 -0.3,-1.73 -0.3,-1.86 l 1.12,-1.58 c 1.56,-2.77 1.32,-6.17 1.31,-6.2 -0.4,-5.83 -1.52,-9.01 -1.53,-9.04 -1.6,-5.18 -4.06,-9.86 -4.09,-9.91 -3.16,-5.09 -10.01,-6.08 -10.07,-6.09 -3.34,-0.68 -9.14,-0.44 -9.2,-0.44 -2.98,0.23 -4.71,0.98 -4.72,0.99 -0.03,0.01 -2.68,1.05 -3.79,2.81 -0.02,0.04 -0.18,0.43 -0.26,0.73 -0.21,0.17 -1.1,0.74 -2.36,-0.09 -1.12,-0.5 -1.31,-2.69 -1.31,-2.73 0,0 -0.28,-0.8 -1.11,-0.82 -2.73,-0.41 -4.26,0.6 -4.28,0.62 -0.06,0.05 -1.44,1.12 -1.9,2.22 -0.26,0.03 -1.74,0.28 -3.31,2.66 l -1.35,1.62 -1.81,1.58 v 0.02 c -0.04,0.06 -0.76,1.45 -0.31,4.18 0.06,0.24 0.58,0.63 1.6,1.2 0.02,0.01 0.03,0.02 0.05,0.03 0.17,0.27 0.15,3.12 -0.25,3.8 -0.03,0.05 -0.53,1.3 -0.62,1.54 l -0.64,1.05 c -0.06,0.05 -0.38,0.4 -0.36,1.39 v 0.82 c 0,0 -0.1,1.18 -0.52,1.73 l -1.3,1.75 -1.17,1.72 c 0,0 -0.77,1.42 -0.99,1.72 -0.05,0.06 -0.11,0.14 -0.2,0.24 -0.32,0.37 -0.81,0.94 -0.89,1.6 0,0.04 -0.03,0.93 0.57,1.53 0.34,0.34 0.81,0.51 1.39,0.51 h 0.08 l 0.61,-0.02 c 0,0 0,0.03 0.02,0.04 0,0.1 0.02,0.34 0.03,0.5 l 0.06,0.52 -0.06,1.06 c 0,0 -0.23,0.88 0.02,1.29 0,0 0.26,0.26 0.24,0.5 l -0.14,0.51 -0.11,0.34 c -0.02,0.1 -0.19,0.95 0.19,1.12 l 0.48,0.25 c 0,0 0.6,0.54 0.33,1.07 l -0.46,0.81 c 0,0 -0.45,0.52 -0.54,1.16 0,0.02 -0.31,1.51 0.54,2.79 0.59,0.89 1.59,1.47 2.96,1.72 l 2.66,0.33 2.95,0.54 c 0,0 0.82,0.22 0.8,1.27 l -0.03,0.44 c 0,0 0.05,0.78 0.41,1.44 l 0.65,1.41 0.7,1.28 0.7,1.7 c 0,0 0.6,1.53 0.58,3.36 l -0.13,3.48 v 0.06 c 0,0 0.96,0.02 0.96,0.02 h 0.06 l 0.05,-4.84 c 0,0 -0.23,-1.89 -1,-3.3 l -0.59,-1.23 -0.88,-1.52 c 0,0 -0.63,-1.2 -0.75,-2.86 l 0.03,-0.95 c 0.27,-0.09 1.88,-0.63 3.43,-1.35 0.18,-0.08 2.69,-1.73 3.67,-2.46 1.99,-1.68 2.53,-2.13 2.65,-2.27 0,0 0,0 0,0 v 0 c 0.2,-0.16 1.63,-1.37 2.13,-2.16 h 0.43 c 0,0 0.03,-0.02 0.04,-0.02 0.1,0 0.18,0.03 0.26,0.1 0.39,0.34 0.45,1.39 0.45,1.41 l 1.93,8.5 -2.44,3.64 -2.61,6.1 -2.08,7.42 -0.02,0.07 h 1.38 v -0.06 c 0.08,-6.02 4.7,-14.29 4.75,-14.36 l 4.36,-6.04 4.92,-5.36 4.29,-4.48 c 0.14,-0.1 3.51,-2.37 3.9,-2.7 0.1,-0.06 0.2,-0.07 0.29,-0.03 0.25,0.11 0.37,0.57 0.38,0.59 0.41,0.79 0.57,1.57 0.58,1.58 0.41,1.29 0.28,1.72 0.17,1.85 -0.07,0.08 -0.16,0.08 -0.15,0.08 v 0 c 0,0 0,0 0,0 -1.48,0.2 -2.16,1.3 -2.16,1.31 -0.84,1.33 -0.62,2.85 -0.51,3.35 -0.02,0.03 -0.03,0.06 -0.04,0.09 -0.08,0 -0.17,-0.01 -0.25,-0.01 -1.79,0 -2.34,1.39 -2.34,1.4 -1.24,2.35 -0.27,4.68 -0.26,4.69 0,0.02 0.31,1.54 0.24,2.64 0,0.18 -0.07,1.72 0.6,2.09 0.5,0.37 0.93,0.48 1.05,0.51 0.07,0.13 0.41,0.71 0.91,0.77 0.05,0 0.1,0.01 0.15,0.01 0.57,0 1.12,-0.42 1.63,-1.25 0.02,-0.04 0.04,-0.07 0.05,-0.07 0.06,-0.06 1.21,-1.11 1.22,-1.11 0,0 0.64,-0.41 1.51,-0.21 0.11,0.02 1.07,-0.05 1.26,-0.06 0.91,-0.05 1.39,-0.73 1.58,-1.08 0.07,0.69 0.41,2.75 2.01,3.29 -0.15,0.27 -0.14,0.68 -0.14,0.75 -0.38,1.64 0.82,2.46 0.83,2.47 2.56,1.56 5.18,0.08 5.2,0.07 1.55,-0.88 1.65,-3.07 1.65,-3.09 0.18,-1.75 -0.02,-2.79 -0.02,-2.8 v -0.02 c -1.39,-2.2 0.02,-3.75 0.03,-3.77 0.49,-0.44 0.83,-1.32 0.99,-2.6 v 0 c 0.19,-2.11 -0.86,-2.87 -0.91,-2.9 z m -1.43,9.2 c 0.6,0.98 0.3,3.11 0.3,3.13 -0.34,1.76 -1.85,2.32 -2.49,2.47 -1.26,0.32 -2.57,0 -3.18,-0.75 -0.34,-0.43 -0.44,-0.97 -0.31,-1.58 0.02,-0.04 0.04,-0.07 0.05,-0.13 0.17,-0.51 0.49,-1.48 2.66,-1.64 0.37,0 1.12,0.63 1.13,1.04 0,0.19 -0.17,0.29 -0.51,0.31 -0.03,0 -0.05,0 -0.08,0 -0.15,0 -0.28,-0.02 -0.29,-0.02 -0.24,0 -0.39,0.07 -0.46,0.18 -0.07,0.11 -0.02,0.24 -0.02,0.24 0,0.02 0.2,0.47 0.96,0.47 0.05,0 0.11,0 0.17,0 0.02,0 0.05,0 0.09,0 0.18,0 0.36,-0.02 0.42,-0.04 0.76,-0.22 0.69,-1.35 0.68,-1.39 -0.04,-0.75 -0.79,-1.19 -0.82,-1.21 l -0.85,-0.48 -0.54,-0.05 -0.93,0.12 c -1.09,0.23 -1.61,1.02 -1.81,1.44 -1.23,-0.99 -1.35,-1.81 -1.35,-1.83 l -0.49,-1.4 c 0.09,-0.16 0.21,-0.39 0.38,-0.7 l 0.44,0.15 c 0,0 1.12,0.26 2.24,0.26 0.15,0 0.3,0 0.44,-0.02 0.11,0 1.26,-0.11 1.3,-0.11 l 0.76,0.04 c 0,0 1.25,0.25 1.69,0.77 l 0.26,0.42 c 0.07,0.2 0.13,0.33 0.13,0.35 z m -17.39,-2.16 v -0.02 c 0,0 -0.02,-0.23 0.18,-0.44 0.21,-0.24 0.59,-0.37 1.11,-0.39 0.03,0 0.67,0.01 0.9,0.58 v 0.02 c 0,0 0.4,0.37 0.46,0.84 -0.21,0.02 -0.96,0.13 -1.59,0.57 -0.45,0.32 -0.75,0.76 -0.93,1.06 -0.16,-0.68 -0.2,-1.39 -0.22,-1.9 l 0.09,-0.3 z m 1.49,1.65 c 0.5,-0.3 1.11,-0.38 1.59,-0.18 l 0.83,0.71 c -0.02,0.31 -0.14,0.85 -0.79,1.23 l -0.02,0.02 c -0.49,0.64 -0.96,0.97 -1.35,0.97 -0.01,0 -0.02,0 -0.04,0 -0.36,-0.02 -0.54,-0.32 -0.55,-0.32 l -0.02,-0.02 c -0.2,-0.13 -0.36,-0.32 -0.5,-0.53 -0.02,-0.43 0.03,-1.37 0.84,-1.87 z m 2.92,0 -0.64,-0.38 c 0,0 -0.15,-0.1 -0.2,-0.25 l -0.62,-1.4 v 0 c -0.03,-0.05 -0.81,-1.02 -1.38,-1.07 h -0.13 c -0.32,0 -0.49,0.02 -0.57,0.04 -0.03,0 -0.05,0 -0.06,0 -0.07,0 -0.6,0.19 -0.85,0.27 h -0.45 c -0.43,-1.05 -0.06,-2.12 0.15,-2.59 0.13,-0.14 0.29,-0.27 0.51,-0.33 0.32,-0.09 0.69,0.02 1.07,0.31 l 1.08,1.12 0.7,0.87 c 0.11,0.18 1.1,1.72 1.44,1.89 v 0 c 0,0 0.07,0.03 0.1,0.03 0.04,0 0.07,-0.02 0.09,-0.04 0.15,-0.17 -0.17,-0.89 -0.45,-1.32 -0.09,-0.14 -0.19,-0.31 -0.31,-0.52 -0.39,-0.66 -0.92,-1.56 -1.48,-2.11 -0.07,-0.07 -0.14,-0.14 -0.21,-0.2 -0.58,-0.58 -1.07,-1.03 -1.86,-1.19 0.59,-0.68 1.46,-0.85 1.9,-0.89 v 0 c 0,0 0.53,0.27 0.53,0.27 l 0.41,0.34 0.5,0.61 0.36,0.53 0.42,1.07 0.24,0.82 0.35,0.74 0.76,1.1 0.02,0.02 c 0.25,0.16 0.5,0.24 0.76,0.24 0.11,0 0.21,-0.02 0.32,-0.04 0.53,-0.14 0.93,-0.62 1.12,-1.01 0.84,-1.68 -1.74,-5.41 -1.95,-5.7 -0.17,-1.64 0.99,-3.27 1.31,-3.7 0.56,-0.01 1.05,-0.05 1.49,-0.1 v 0.24 c 0,0 -0.15,1.14 -0.15,1.14 -0.05,0.18 -0.21,0.66 -0.37,0.79 -0.02,0.03 -0.57,0.82 -0.7,1.65 0,0.07 0,0.7 0.14,0.91 0.56,0.71 1.46,1.88 1.52,2.05 v 0.02 c 0.29,2.21 0.08,2.66 -0.49,3.84 -0.14,0.29 -0.3,0.64 -0.48,1.05 l -0.58,0.57 c -0.54,0.67 -1.85,0.68 -1.86,0.68 l -1.26,-0.1 c -0.07,-0.07 -0.16,-0.16 -0.25,-0.26 z m -1.84,-9.31 c 0.01,-0.75 0.48,-1.78 0.52,-1.87 0.75,-0.87 1.47,-1 1.47,-1 0.36,-0.02 0.62,-0.14 0.81,-0.34 0.36,0.02 0.68,0.03 1.01,0.03 -0.3,0.4 -2.18,2.99 -0.82,4.79 1.02,1.35 2.02,3.18 1.87,3.91 -0.03,0.13 -0.08,0.21 -0.18,0.26 h -0.02 c -0.34,0.39 -0.63,0.55 -0.87,0.49 -0.36,-0.09 -0.49,-0.64 -0.5,-0.66 l -0.54,-1.03 -0.34,-1.15 c -0.07,-0.3 -0.68,-1.1 -0.71,-1.14 l -0.33,-0.39 -0.3,-0.26 -0.43,-0.51 -0.35,-0.27 -0.24,-0.16 c 0,0 -0.05,-0.02 -0.08,-0.03 0,-0.25 0,-0.5 0,-0.68 z m -40.36,-4.2 c 0.12,-0.14 0.33,-0.28 0.58,-0.18 0.08,0.06 0.51,0.38 0.67,0.38 0,0 0.32,0 0.86,-0.04 0.18,0 0.26,-0.08 0.3,-0.15 0.08,-0.14 0.03,-0.33 -0.04,-0.44 -0.05,-0.08 -0.11,-0.12 -0.17,-0.12 v 0 c -0.18,0 -0.75,0.04 -0.75,0.04 h -0.02 c 0,0 -0.02,0.02 -0.02,0.02 0,0 -0.04,0.02 -0.1,0.02 -0.08,-0.01 -0.25,-0.09 -0.49,-0.46 -0.05,-0.09 -0.22,-0.22 -0.35,-0.25 -0.07,-0.02 -0.18,-0.03 -0.37,-0.05 l -0.18,-0.02 c -0.09,0 -0.16,-0.05 -0.2,-0.1 -0.08,-0.11 -0.04,-0.27 -0.04,-0.27 l 0.1,-0.54 c 0.01,-0.06 0.31,-1.3 0,-1.95 0.03,0.02 0.07,0.04 0.12,0.06 l 0.82,0.13 1.05,0.43 c 0,0 0.55,0.2 1.59,-0.46 l 0.03,-0.02 v -0.03 c -0.07,-0.88 -0.89,-2.07 -0.92,-2.12 l -0.05,-0.07 -0.25,0.36 v 0.03 c 0,0 0.23,0.55 0.3,0.73 0.17,0.47 0.22,0.69 0.18,0.78 -0.03,0.06 -0.1,0.08 -0.23,0.12 h -0.04 c -0.32,0.11 -0.92,0.21 -1.28,-0.3 l -0.02,-0.02 c 0,0 -0.65,-0.38 -1.55,-0.51 -0.01,0 -1.08,0.11 -1.37,0.12 -0.52,0.02 -0.86,-0.06 -1.04,-0.24 -0.19,-0.2 -0.17,-0.48 -0.15,-0.76 0,-0.11 0.01,-0.21 0,-0.3 0.09,-0.17 0.95,-1.66 1.6,-2.33 l 0.41,-0.53 1.17,-2 0.95,-1.21 c 0,0 1.09,-1.12 1.06,-2.01 l 0.07,-1.14 v 0 c 0,0 0,-0.02 0,-0.02 0,0 -0.11,-0.61 0.25,-1.28 l 0.51,-0.98 0.53,-1.43 0.35,-1.41 0.17,-1.94 v -0.27 c 0.2,-0.33 0.68,-1.13 0.77,-1.71 0.11,-0.7 0.81,-1.34 1.42,-1.64 0.34,-0.16 0.65,-0.29 0.88,-0.38 0.2,-0.08 0.34,-0.14 0.39,-0.18 h 0.01 c 0,0 0.18,-0.24 0.11,-0.44 -0.05,-0.13 -0.18,-0.21 -0.39,-0.25 0,0 0,0 -0.02,0 -0.16,0 -0.85,0.35 -1.11,0.49 -0.49,0.26 -0.97,0.58 -1.32,0.88 -0.2,0.17 -0.38,0.46 -0.56,0.74 -0.12,0.2 -0.24,0.38 -0.36,0.53 l -0.03,0.03 c -0.18,0.21 -0.28,0.32 -0.52,0.41 -0.66,-0.29 -1.11,-0.67 -1.14,-0.98 0,-0.01 0,-1.1 -0.03,-1.46 -0.02,-0.37 0.02,-1.18 0.46,-1.88 0.15,0.11 0.35,0.19 0.65,0.21 0.07,0 0.14,0 0.21,0 0.94,0 2.23,-0.41 2.95,-1.16 0.55,-0.57 1.42,-0.65 1.96,-0.64 -0.06,0.07 -0.12,0.15 -0.15,0.2 -0.15,0.24 -0.55,1.49 -0.38,1.77 0.04,0.07 0.09,0.18 0.14,0.31 0.15,0.36 0.34,0.81 0.63,0.81 0.04,0 0.08,-0.02 0.11,-0.05 0.08,-0.1 0.04,-0.33 -0.03,-0.67 -0.09,-0.47 -0.21,-1.13 0.03,-1.54 0.72,-1.22 2.13,-2.32 3.15,-2.79 1.31,-0.59 2.28,-0.73 2.87,-0.42 0.49,0.26 1.02,0.85 1.44,1.33 0.2,0.23 0.39,0.44 0.55,0.59 0.29,0.27 0.8,0.38 1.2,0.43 -0.1,0.27 -0.21,0.59 -0.33,0.97 -0.34,-0.03 -0.89,-0.04 -1.46,0.05 -0.52,-0.5 -2.2,-1.98 -3.29,-1.49 -1.17,0.52 -2.06,1.24 -2.37,1.55 -0.2,0.2 -0.54,0.73 -0.49,0.95 0.01,0.05 0.04,0.09 0.09,0.11 0.02,0 0.03,0 0.05,0 0.26,0 0.83,-0.53 1,-0.7 0.01,-0.01 1.35,-1.14 2.17,-1.14 v 0 c 0.67,0 1.59,0.65 1.94,0.95 -0.12,0.05 -0.24,0.1 -0.35,0.17 -0.81,0.51 -1.16,0.9 -1.41,1.18 -0.07,0.08 -0.13,0.15 -0.19,0.21 l -0.05,0.05 c -0.6,0.62 -1.04,0.94 -1.31,0.94 v 0 c -0.3,0 -0.87,-0.28 -1.33,-0.5 -0.23,-0.11 -0.44,-0.21 -0.56,-0.25 -0.3,-0.1 -0.66,-0.04 -1.08,0.17 -0.22,0.11 -0.51,0.32 -0.61,0.57 -0.02,0.04 -0.01,0.07 0.01,0.1 0.08,0.1 0.36,0.1 0.98,0.04 0.15,-0.01 0.28,-0.02 0.35,-0.02 0.18,0 0.77,0.3 1.25,0.54 0.25,0.13 0.49,0.25 0.65,0.32 0.07,0.03 0.15,0.05 0.23,0.05 0.63,0 1.57,-0.76 1.68,-0.86 0.12,-0.1 0.25,-0.27 0.42,-0.5 0.38,-0.5 0.9,-1.18 1.73,-1.62 0.68,-0.35 1.29,-0.3 1.68,-0.19 -0.11,0.28 -0.24,0.61 -0.35,0.88 -0.03,0.12 -0.06,0.23 -0.09,0.35 -0.16,0.1 -0.36,0.24 -0.61,0.49 -1.08,1.04 -2.44,1.74 -3.16,2.07 -0.03,0.02 -0.05,0.02 -0.06,0.03 -0.6,0.38 -2.33,0.02 -2.96,-0.19 -0.06,-0.02 -0.1,0 -0.12,0.02 -0.02,0.02 -0.04,0.05 -0.02,0.12 0.07,0.23 0.58,0.75 1.44,0.9 0,0 0.31,0.05 0.76,0.05 0.71,0 1.8,-0.13 2.66,-0.8 l 1.68,-1.27 c -0.02,0.06 -0.04,0.13 -0.04,0.15 -0.1,0.18 -0.8,1.85 -0.88,2.05 -0.29,1.52 -0.77,2.29 -0.77,2.29 l -4.05,6.19 c -0.47,0.86 -0.51,1.72 -0.4,2.06 0.13,0.4 0.25,0.64 0.69,0.64 0.2,0 0.47,0.02 0.72,0.04 0.21,0.02 0.42,0.04 0.55,0.04 0.02,0 0.04,0 0.06,0 0.62,0 0.67,0.49 0.67,0.5 0,0.07 0.02,1.84 0.04,1.99 0.02,0.18 0.05,1.08 0.05,1.09 0,0 -0.04,0.62 0.73,0.93 0.06,0.11 0.02,0.28 -0.14,0.53 -0.06,0.12 -0.26,1.19 -0.22,1.31 0,0.02 0.01,0.04 0.02,0.06 0.02,0.1 0.06,0.24 0.3,0.35 0.78,0.34 0.79,0.88 0.79,0.9 v 0.02 c 0.11,0.24 -0.37,1.21 -0.69,1.77 -0.51,0.8 -0.28,3.11 -0.26,3.22 0.28,1.12 2.41,1.55 2.51,1.57 2.09,0.09 3.59,0.31 3.62,0.31 l 0.59,-0.02 c -0.06,0.06 -0.11,0.1 -0.17,0.16 l -3.8,3.2 c 0,0 -4.36,4.05 -7.87,4.05 -0.07,0 -0.13,0 -0.2,0 -0.07,0 -0.58,-0.04 -1.08,-0.08 -0.57,-0.05 -0.93,-0.07 -0.96,-0.07 0,0 -0.08,-0.02 -0.17,-0.03 -0.41,-0.08 -1.5,-0.31 -2.46,-0.34 -2.33,0 -3.77,-0.92 -3.94,-2.53 -0.19,-1.14 0.03,-1.7 0.05,-1.77 0.1,-0.11 1.1,-1.23 1.09,-1.72 0,-0.04 -0.23,-1.04 -0.57,-1.33 l -0.02,-0.02 h -0.03 c -0.28,0.08 -0.47,0 -0.58,-0.18 -0.21,-0.34 -0.1,-1.05 0.22,-1.42 z m 52.11,-11.29 c -0.2,3.42 -1.66,4.71 -2.1,5.02 -0.02,0.01 -0.03,0.03 -0.04,0.04 0,0 0,0 0,0.02 -0.08,0.07 -0.17,0.14 -0.26,0.22 -0.31,0.29 -0.65,0.61 -1.22,0.88 -0.1,0.05 -0.2,0.1 -0.3,0.15 -0.09,0.04 -0.18,0.09 -0.29,0.14 -0.28,-0.12 -0.65,-0.31 -0.94,-0.6 0.23,-0.43 0.64,-1.35 0.37,-1.94 -0.24,-0.52 -0.45,-0.83 -0.61,-1.05 -0.07,-0.1 -0.14,-0.2 -0.19,-0.28 -0.05,-0.09 -0.09,-0.42 -0.12,-0.77 -0.07,-0.67 -0.16,-1.5 -0.44,-1.89 -0.57,-0.82 -1.67,-1.64 -2.21,-1.9 -0.28,-0.13 -0.74,-0.1 -1.11,-0.07 -0.24,0.02 -0.51,0.04 -0.57,-0.02 0,-0.87 -0.88,-3.33 -1.71,-4.14 -0.24,-0.24 -1.26,-0.41 -1.68,-0.28 -0.39,0.12 -1.45,0.2 -1.69,-0.16 -0.03,-0.04 -0.05,-0.08 -0.08,-0.12 -0.04,-0.06 -0.07,-0.12 -0.11,-0.19 -0.03,-0.06 -0.07,-0.13 -0.11,-0.19 0,-0.02 -0.03,-0.05 -0.03,-0.06 0,-0.1 -0.99,-3.03 -1.3,-3.93 -0.44,-0.85 -1.04,-1.02 -1.62,-1.19 -0.6,-0.17 -1.47,-0.52 -1.9,-0.83 -0.17,-0.12 -0.25,-0.58 -0.33,-1.06 -0.11,-0.68 -0.25,-1.46 -0.68,-1.88 -0.75,-0.73 -3.76,-1 -3.88,-1.01 -0.07,0 -0.28,-0.03 -0.48,-0.02 0.02,-0.11 0.03,-0.19 0.03,-0.19 l 0.11,-0.94 c 0.27,0.05 0.65,0.09 1.06,0.02 0.64,-0.11 1.81,-0.31 2.66,-0.25 0.62,0.05 1.01,0.48 1.52,1.02 0.14,0.15 0.28,0.3 0.44,0.46 0.32,0.32 0.61,0.88 0.92,1.47 0.42,0.81 0.9,1.73 1.58,2.34 0.94,0.85 2.29,1.42 3.1,1.76 0.2,0.09 0.37,0.15 0.47,0.21 0.28,0.14 0.32,0.34 0.42,0.77 0.06,0.27 0.14,0.63 0.3,1.11 0.47,1.35 1.2,1.98 1.85,2.41 0.38,0.25 1.26,0.56 2.12,0.86 0.83,0.29 1.7,0.59 1.97,0.81 0.29,0.23 0.37,0.68 0.46,1.16 0.07,0.4 0.14,0.81 0.34,1.13 0.28,0.44 0.98,1 1.61,1.5 0.36,0.28 0.69,0.55 0.9,0.76 0.3,0.3 0.45,0.77 0.57,1.11 0.08,0.26 0.13,0.4 0.22,0.43 0,0 0.01,0 0.02,0 0.02,0 0.05,0 0.08,-0.04 0.18,-0.18 0.08,-0.79 -0.13,-1.63 -0.07,-0.3 -0.55,-0.74 -1.1,-1.25 -0.09,-0.08 -0.18,-0.17 -0.28,-0.26 0.26,-0.29 0.61,-0.77 0.65,-1.39 0.06,-0.97 -0.31,-2.39 -0.82,-3.11 -0.51,-0.71 -1.12,-1.49 -2.08,-1.81 -0.22,-0.07 -0.39,-0.12 -0.52,-0.16 -0.45,-0.13 -0.53,-0.16 -0.9,-0.55 -0.47,-0.49 -0.97,-2.77 -1.13,-4.5 -0.11,-1.16 -0.63,-1.65 -1.37,-2.02 -0.42,-0.21 -1.24,-0.41 -2.11,-0.63 -0.71,-0.18 -1.45,-0.36 -2.01,-0.56 -0.83,-0.29 -2.42,-1.39 -3.58,-2.18 -0.59,-0.41 -1.11,-0.76 -1.4,-0.93 -0.91,-0.52 -4.66,-1.19 -5.47,-0.88 -0.42,0.16 -0.63,0.43 -0.73,0.66 -0.14,-0.25 -0.27,-0.33 -0.31,-0.35 -0.25,-0.2 -1.03,-0.46 -1.07,-0.47 -0.06,-0.02 -0.13,-0.03 -0.19,-0.05 0.22,-0.17 0.54,-0.4 0.86,-0.59 0.59,-0.34 1.79,-0.49 2.71,-0.49 1,0 1.42,-0.16 1.43,-0.17 l 0.12,-0.05 -0.11,-0.06 c 0,0 -0.35,-0.17 -1.02,-0.26 -0.43,-0.05 -1.34,0.03 -2.06,0.1 -0.41,0.04 -0.76,0.07 -0.94,0.07 -0.48,0 -1.87,1.07 -2.08,1.23 -0.42,-0.05 -0.8,-0.07 -1,-0.07 -0.03,0 -0.05,0 -0.07,0 -0.36,-0.03 -1.23,0.12 -1.27,0.13 -0.36,0.06 -0.76,0.22 -0.84,0.26 -0.18,-0.32 -0.29,-0.7 -0.25,-1.14 0.04,-0.45 0.19,-0.83 0.4,-0.99 h 0.01 c 0.37,-0.49 1.38,-1.19 1.39,-1.2 0.29,-0.22 3.15,-1.52 6.26,-1.62 2.76,-0.09 5.43,0.01 7.92,0.31 1.92,0.23 7.08,2.48 7.13,2.5 1.55,0.79 2.79,2.58 2.81,2.61 0.98,1.04 3.07,5.9 3.09,5.94 1.29,4.4 1.54,5.13 1.62,5.25 v 0 c 0.09,0.14 1.13,3.63 1.32,9.48 z m -1.99,8.66 c 0,0 0,0.06 -0.01,0.1 l -0.24,0.62 c -0.04,0.08 -0.07,0.16 -0.11,0.24 0,0 0,0.04 0,0.06 l -0.13,0.34 c -0.16,0.66 -3.35,1.36 -4.55,1.58 l -0.69,-0.03 h -0.59 L 279.31,108 c 0,-0.2 -0.03,-0.35 -0.04,-0.37 l -0.13,-0.58 c 0.05,-0.05 0.16,-0.07 0.2,-0.07 1.83,-0.03 3.41,-0.67 3.42,-0.68 0.05,-0.02 1.03,-0.43 1.41,-0.58 0.33,-0.13 0.69,-0.54 0.71,-0.76 0.01,-0.08 -0.02,-0.12 -0.05,-0.14 -0.07,-0.05 -0.19,-0.04 -0.36,0.04 -0.78,0.35 -3.45,1.25 -3.47,1.25 l -0.61,0.09 h -0.93 c -0.28,0 -0.48,-0.53 -0.6,-0.95 0.06,-0.08 0.3,-0.34 1.17,-0.34 0.12,0 0.25,0 0.4,0.02 h 0.02 c 0,0 2.79,-0.53 4.43,-1.7 0.14,-0.04 0.44,-0.09 0.67,-0.03 0.02,0.23 0.06,0.39 0.06,0.4 0.46,0.99 0.36,1.47 0.36,1.48 v 0.02 c 0,0 0,0.02 0,0.02 z m 4.86,13.6 v 0.02 c -0.11,0.45 -0.15,0.86 -0.16,1.22 -0.32,-0.31 -0.76,-0.57 -1.36,-0.6 -0.06,0 -0.61,-0.05 -0.9,-0.08 l -0.85,0.03 c -0.08,-0.5 -0.41,-2.13 -1.24,-2.95 -0.63,-0.63 -1.05,-0.94 -1.42,-1.21 -0.2,-0.15 -0.38,-0.28 -0.58,-0.45 -0.57,-0.5 -1.57,-1.28 -1.57,-1.28 -0.48,-0.6 -0.45,-1 0.14,-2.08 0.26,-0.25 0.41,-2.19 0.45,-2.76 0.39,-0.07 0.73,-0.15 1.01,-0.23 0,0.34 0.04,1.08 0.17,1.93 0.08,0.57 -0.11,1.23 -0.25,1.71 -0.09,0.34 -0.16,0.58 -0.13,0.71 0.1,0.33 1.29,1.42 1.78,1.66 0.1,0.05 0.23,0.11 0.39,0.19 0.64,0.31 1.71,0.84 2.14,1.14 0.31,0.21 0.81,0.75 1.26,1.22 0.33,0.35 0.61,0.65 0.77,0.77 0.19,0.15 0.4,0.46 0.56,0.72 -0.09,0.15 -0.17,0.28 -0.21,0.34 z m -7,-2.77 0.02,-0.21 0.11,0.04 1.19,0.92 1.01,1.03 c 0,0 0.49,0.49 0.51,0.96 l 0.02,0.67 h -0.24 c 0,0 -1.36,-0.07 -1.36,-0.07 h -0.02 l -0.02,0.02 c 0,0 -0.11,0.09 -0.33,0.03 h -0.02 c 0,0 -0.01,0 -0.02,0 -0.13,0 -0.7,-0.06 -0.94,-0.67 l 0.1,-1.09 0.09,-0.53 v 0 c 0,0 -0.09,-1.09 -0.09,-1.09 z m -0.5,-23.18 c -0.07,0.32 -0.22,0.61 -0.33,0.8 -0.23,-0.25 -0.42,-0.49 -0.5,-0.69 -0.08,-0.2 -0.13,-0.39 -0.18,-0.6 -0.17,-0.64 -0.35,-1.3 -1.21,-1.95 -0.59,-0.45 -1.48,-0.7 -2.34,-0.95 -0.77,-0.22 -1.57,-0.45 -2.12,-0.82 -0.37,-0.24 -0.62,-1.13 -0.86,-2 -0.16,-0.57 -0.33,-1.16 -0.53,-1.58 -0.42,-0.86 -1.33,-1.06 -2.06,-1.22 -0.18,-0.04 -0.35,-0.08 -0.5,-0.12 -0.74,-0.22 -2.29,-1.42 -3.29,-3.73 -0.98,-2.26 -2.08,-2.5 -2.67,-2.63 h -0.05 c -0.41,-0.1 -1.83,0.02 -2.78,0.1 -0.41,0.03 -0.73,0.06 -0.84,0.06 -0.13,0 -0.3,-0.1 -0.45,-0.21 0.13,-0.49 0.42,-1.17 1.01,-1.17 1,0 2.67,0 4.46,1.05 0.44,0.26 0.94,0.57 1.48,0.91 1.66,1.04 3.73,2.33 5.21,2.72 l 0.14,0.04 c 1.82,0.47 2.57,0.66 2.81,1.54 0.08,0.29 0.13,0.72 0.2,1.22 0.13,1.06 0.3,2.38 0.82,3.16 0.36,0.55 1.05,1 1.78,1.49 0.77,0.51 1.57,1.05 1.95,1.69 0.76,1.27 0.98,2.36 0.86,2.89 z m -5.05,10.75 c -0.1,-0.25 -0.27,-0.65 -0.49,-0.97 -0.18,-0.33 -0.66,-0.79 -1.53,-1.45 -0.07,-0.05 -0.49,-0.21 -1,-0.38 0.02,-0.08 0.01,-0.16 -0.05,-0.25 l -0.06,-0.08 q -0.16,-0.22 -0.15,-0.67 v -0.23 c 0.01,-0.51 0,-0.62 0,-0.74 0,-0.06 0,-0.12 0,-0.24 0,-0.15 -0.05,-0.31 -0.11,-0.49 0.16,-0.04 0.35,-0.08 0.55,-0.13 0.54,-0.12 1.21,-0.62 1.68,-1.27 0.15,-0.21 0.35,-0.82 0.51,-1.35 0.35,-0.1 0.79,-0.22 1.11,-0.12 0.54,0.16 1.67,0.78 1.91,1.16 0.14,0.23 0.26,0.69 0.37,1.13 0.03,0.13 0.07,0.26 0.1,0.38 l -2.02,0.16 -1.26,0.29 -1.43,0.6 0.36,0.41 0.02,0.02 h 0.03 c 0.14,-0.02 1.35,-0.16 1.46,-0.2 1.99,-0.56 3.25,-0.17 3.26,-0.16 h 0.02 c 0,0 0.08,0.05 0.12,0.07 0.05,0.08 0.09,0.15 0.14,0.23 0.25,0.4 0.51,0.81 0.54,0.96 0.03,0.23 -0.19,0.92 -0.57,1.51 -0.23,0.11 -0.66,0.29 -1.07,0.3 l -0.82,-0.08 -0.55,-0.12 c -0.1,-0.05 -0.35,-0.15 -0.41,-0.15 -0.05,0 -0.3,-0.13 -0.51,-0.24 -0.49,-0.39 -0.55,-0.4 -0.57,-0.4 -0.05,0 -0.4,-0.12 -0.72,-0.24 l -0.69,-0.05 0.41,0.49 0.44,0.24 0.36,0.09 0.62,0.53 0.57,0.38 0.35,0.16 0.48,0.16 0.88,0.09 1.06,-0.05 c 0.38,0.09 0.79,0.24 0.8,0.33 l 0.11,0.3 c -0.06,0.02 -0.1,0.04 -0.17,0.06 -0.01,0 -1.1,0.67 -3.07,0.67 -0.14,0 -0.28,0 -0.42,0 l -0.59,-0.64 c 0,0 0,0 0,0 z m -4.95,-3.46 c -0.59,-0.34 -0.96,-0.66 -1.15,-0.84 -0.04,-0.03 -0.07,-0.06 -0.09,-0.08 -0.97,-0.81 -1.49,-0.95 -1.52,-0.96 -0.05,0 -0.11,-0.01 -0.16,-0.01 -0.01,0 -0.03,0 -0.04,0 -0.27,-0.31 -0.66,-0.82 -0.6,-1.08 0.09,-0.4 0.26,-0.66 0.51,-0.78 0.17,-0.08 0.87,-0.1 1.37,-0.1 0.01,0 0.02,0.01 0.04,0.02 0.35,0.22 1.22,0.73 1.23,0.73 0.49,0.26 0.82,0.68 0.97,1.24 0.18,0.65 -0.11,1.73 -0.19,1.97 -0.18,-0.06 -0.32,-0.11 -0.37,-0.12 z m -2.1,-11.45 c -0.51,0.07 -1.22,0.15 -1.48,-0.06 -0.22,-0.19 -0.46,-0.52 -0.68,-0.85 -0.19,-0.27 -0.36,-0.53 -0.53,-0.7 -0.29,-0.29 -0.69,-0.52 -1.1,-0.71 -0.15,-0.27 -0.59,-1.07 -0.86,-1.31 -0.7,-0.64 -1.18,-1 -1.61,-1.32 -0.19,-0.14 -0.37,-0.28 -0.55,-0.42 -1.11,-0.89 -2.34,-1.37 -2.78,-1.53 0.25,-0.67 0.41,-1.22 0.52,-1.65 0.32,0.06 0.67,0.09 1.05,0.11 1.04,0.06 2.23,0.13 3.17,0.87 0.09,0.07 0.17,0.61 0.24,1.08 0.11,0.73 0.22,1.49 0.47,1.65 0.3,0.19 0.7,0.34 1.12,0.51 0.81,0.32 1.74,0.69 2.3,1.39 0.72,0.9 0.74,2.42 0.72,2.95 z m 5.72,5.72 c -0.11,0.48 -0.32,1.28 -0.53,1.65 -0.31,0.56 -0.68,0.8 -1.1,1.04 -0.24,0.14 -0.56,0.13 -0.79,0.1 -0.14,-0.25 -0.4,-0.4 -0.71,-0.54 -0.19,-0.09 -0.39,-0.18 -0.54,-0.31 -0.22,-0.17 -0.56,-0.41 -0.85,-0.6 0.38,-0.29 0.7,-0.91 0.79,-1.33 0.15,-0.66 0.17,-1.12 0.15,-1.74 v -0.11 c -0.02,-0.53 -0.04,-0.94 -0.13,-1.17 0.35,-0.3 0.94,-0.75 1.91,-0.56 0.81,0.16 1.51,1.89 1.77,2.79 0.04,0.15 0.03,0.47 0.02,0.78 z M 263.88,83.69 c 0.72,0.55 1.51,1.35 1.81,1.65 l 0.09,0.1 c 0.11,0.1 0.17,0.24 0.23,0.38 -0.57,-0.14 -1.16,-0.25 -1.51,-0.25 -0.43,0 -1.15,0.21 -1.62,0.59 -0.06,0.05 -0.1,0.09 -0.15,0.14 -0.37,-0.95 -1.25,-1.91 -1.29,-1.95 -0.59,-0.59 -0.54,-0.92 -0.54,-0.92 0.12,-0.25 0.22,-0.48 0.32,-0.71 0.64,0.09 1.8,0.32 2.67,0.98 z m -1.11,4.99 c 0.11,-0.47 0.11,-1.04 0.08,-1.5 0.26,-0.3 0.63,-0.66 0.99,-0.75 0.7,-0.18 1.54,-0.03 2.11,0.12 0.58,0.16 1.56,0.42 2.07,1.05 0.14,0.17 0.27,0.37 0.39,0.56 0.25,0.39 0.5,0.79 0.89,1 0.26,0.14 0.96,0.29 1.42,0.39 0.13,0.03 0.25,0.05 0.33,0.07 0.43,0.1 0.7,0.28 0.9,0.49 0,0.01 0,0.03 0,0.04 0.12,0.35 0.52,1.6 0.52,2.78 0,0.19 -0.11,0.94 -0.43,1.55 -0.04,0.07 -0.06,0.14 -0.09,0.2 -0.06,0.16 -0.11,0.26 -0.23,0.26 -0.04,0 -0.09,-0.01 -0.15,-0.03 -0.16,-0.06 -0.27,-0.11 -0.37,-0.15 -0.16,-0.07 -0.29,-0.13 -0.53,-0.2 -0.39,-0.11 -0.91,-0.11 -0.93,-0.11 0,0 -0.95,0.19 -1.29,-0.27 -0.16,-0.22 -0.24,-0.48 -0.31,-0.72 -0.09,-0.3 -0.17,-0.56 -0.4,-0.63 -0.1,-0.03 -0.17,-0.07 -0.25,-0.11 0.03,-0.04 0.06,-0.08 0.08,-0.12 0.33,-0.48 0.42,-0.68 0.48,-1.08 0.06,-0.4 -0.01,-1.15 -0.12,-1.49 -0.2,-0.65 -0.59,-1.28 -0.71,-1.46 -0.2,-0.31 -1.49,-0.83 -1.8,-0.83 0,0 -0.02,0 -0.02,0 -0.08,0 -0.1,0.06 -0.11,0.08 -0.04,0.21 0.78,0.7 0.88,0.76 0.47,0.27 0.92,1.1 1.06,1.56 0.12,0.41 -0.24,1.51 -0.3,1.7 -0.17,0.06 -1.12,0.37 -1.6,0.19 -0.3,-0.11 -0.55,-0.25 -0.82,-0.39 -0.21,-0.12 -0.44,-0.24 -0.7,-0.35 -0.41,-0.18 -1.13,-0.96 -1.5,-1.37 0.13,-0.62 0.45,-1.24 0.46,-1.25 v 0 z m 0.65,3.07 c 0.35,0.11 0.52,0.35 0.68,0.55 0.04,0.05 0.07,0.08 0.1,0.12 0.07,0.72 0.2,1.89 0.32,2.36 0.07,0.28 0.17,0.52 0.26,0.73 0.13,0.31 0.24,0.58 0.2,0.86 -0.05,0.31 -0.03,0.82 -0.01,1.18 -1.16,0.04 -1.35,-0.09 -1.36,-0.1 -0.19,-0.24 -0.57,-2.96 -0.79,-4.74 l -0.33,-1.38 c 0.27,0.14 0.61,0.3 0.94,0.4 z m 2.08,4.24 -0.06,-0.24 c -0.16,-0.59 -0.36,-1.32 -0.35,-1.76 0,-0.37 -0.04,-0.93 -0.07,-1.24 0.19,0.09 0.41,0.21 0.61,0.33 0.22,0.13 0.43,0.25 0.61,0.33 0.09,0.04 0.17,0.05 0.26,0.05 0.04,0 0.07,-0.02 0.11,-0.03 -0.06,0.17 -0.11,0.34 -0.15,0.43 -0.13,0.28 -0.14,0.83 -0.14,1.22 0,0.39 0.1,1.12 0.22,1.41 0.07,0.16 0.17,0.59 0.25,0.93 -0.4,0.04 -0.75,0.07 -1.06,0.1 -0.03,-0.38 -0.1,-1.08 -0.22,-1.53 z m 2.84,2.66 v -0.02 c -0.22,-0.31 -0.31,-0.7 -0.32,-0.77 0.02,-0.11 -0.01,-0.2 -0.08,-0.28 0,0 -0.02,-0.01 -0.03,-0.02 l -0.06,-0.05 c 0,0 -0.62,-0.5 -0.62,-1.13 0,-0.28 -0.08,-0.64 -0.14,-0.99 -0.1,-0.49 -0.19,-0.99 -0.08,-1.14 0.11,-0.15 0.34,-0.3 0.53,-0.41 0.19,0.18 0.36,0.36 0.45,0.5 0.05,0.06 0.09,0.13 0.13,0.19 0.27,0.39 0.53,0.77 1.13,0.81 h 0.11 c 0.49,0.04 0.75,0.07 1.24,0.24 -0.32,0.02 -0.67,0.07 -0.83,0.23 -0.26,0.27 -0.62,0.69 -0.69,1.18 -0.05,0.32 0.03,0.7 0.12,1.14 l 0.02,0.08 c 0.02,0.12 0.09,0.25 0.15,0.36 -0.23,0.16 -0.44,0.35 -0.61,0.52 -0.34,-0.17 -0.41,-0.41 -0.41,-0.42 z m 22.77,13.34 c 0,0 -0.06,0.03 -0.1,0.03 -0.02,0 -0.04,0 -0.06,0 h -0.02 c -2.4,0.47 -3.19,0.17 -3.43,-0.16 -0.17,-0.24 -0.07,-0.55 -0.02,-0.67 0.06,0 0.17,-0.09 0.69,-1.8 0.19,-0.53 -0.32,-1.2 -0.39,-1.28 -0.08,-0.2 -0.91,-1.13 -1.17,-1.42 0.03,-0.04 0.06,-0.09 0.08,-0.11 0.01,0 0.02,0 0.03,0 0.26,-0.04 1.08,-0.22 1.11,-0.23 1.71,-0.21 3.17,-0.2 3.6,2.13 -0.04,0.17 -0.47,1.92 -0.34,3.53 z m -35.98,-36.83 -0.83,1.28 c 0,0 -0.09,0.16 -0.2,0.38 -0.12,0.02 -0.29,0.03 -0.51,-0.06 -0.28,-0.11 -1.06,-0.89 -1.69,-1.53 -0.08,-0.08 -0.14,-0.14 -0.21,-0.21 0.11,-0.06 0.26,-0.13 0.47,-0.18 0.07,-0.02 0.13,-0.02 0.19,-0.03 0.45,0.29 1.08,0.48 1.99,0.29 0.03,0 0.56,-0.05 0.9,-0.1 -0.06,0.08 -0.12,0.15 -0.12,0.15 z m -3.48,-1.05 c -0.23,0.06 -0.43,0.2 -0.57,0.32 -0.04,-0.04 -0.11,-0.1 -0.14,-0.12 -0.85,-0.58 -1.9,-0.36 -2.45,-0.18 -0.18,0.06 -0.48,0.23 -0.82,0.45 -0.13,0 -0.28,-0.05 -0.41,-0.18 l -0.13,-0.13 c -0.41,-0.41 -0.82,-0.82 -0.93,-0.88 -0.36,-0.23 -0.8,-0.37 -1.08,-0.46 l 0.14,-0.16 0.29,-0.41 c 0,0 0.46,-0.68 0.93,-1.01 l 0.09,-0.05 c 0.31,-0.15 0.67,-0.33 1.01,-0.33 h 0.02 l 1.82,0.14 c 0,0 1.21,0 1.44,0.96 l 0.62,1.68 c 0,0 0.06,0.16 0.19,0.35 0,0 0,0 0,0 z m -7.04,-0.44 c 0.38,0.04 0.84,0.17 1.29,0.5 0.28,0.21 0.74,0.68 0.99,0.94 -0.65,0.47 -1.29,0.98 -1.51,1.2 -0.14,0.14 -0.32,0.32 -0.49,0.51 -1.79,-0.3 -2.82,0.55 -3.1,0.83 -0.95,0.96 -2,0.97 -2.61,0.73 0.33,-0.27 0.78,-0.63 1.04,-0.84 0.47,-0.37 0.94,-1.02 1.38,-1.66 0.47,-0.67 2.15,-1.84 2.15,-1.84 z m 9.06,35.25 c -0.08,0 -0.17,0 -0.25,0 -1.47,0 -2.45,-0.37 -2.93,-1.09 -0.74,-1.12 0,-2.74 0,-2.76 l 0.46,-1.12 c 0.07,-0.2 0.17,-0.18 0.36,-0.15 0.06,0.01 0.13,0.02 0.2,0.03 h 0.06 c 0.2,0 0.32,-0.05 0.36,-0.15 0.1,-0.22 -0.21,-0.56 -0.25,-0.59 -0.19,-0.2 -0.39,-0.54 -0.38,-0.89 0,-0.23 0.11,-0.45 0.31,-0.63 l 0.02,-0.02 v -0.02 c 0,0 0,-0.09 -0.04,-0.12 -0.09,-0.08 -0.3,-0.05 -0.33,-0.05 h -0.02 c -0.61,0.41 -0.88,0.09 -0.89,0.08 -0.11,-0.17 -0.15,-0.34 -0.12,-0.49 0.05,-0.25 0.28,-0.39 0.28,-0.39 h 0.01 c 0,0 0.33,-0.34 1.49,-0.03 0.29,0.08 0.98,0 1.01,0 0.55,-0.1 0.54,-0.54 0.54,-0.55 v -0.03 l -0.02,-0.02 c -0.29,-0.21 -0.42,-0.32 -0.5,-0.39 -0.1,-0.09 -0.14,-0.12 -0.32,-0.2 -0.09,-0.03 -0.15,0.04 -0.22,0.13 -0.15,0.2 -0.41,0.52 -1.14,0.01 -0.54,-0.51 -0.66,-0.5 -0.76,-0.49 -0.13,0 -0.23,0 -0.31,0.01 -0.32,0.02 -0.36,0.03 -0.49,-0.45 l -0.05,-2.44 0.02,-0.66 1.02,0.13 c 0.52,0.18 0.85,0.17 0.99,0.16 v 0 c 0.06,0.02 0.39,-0.07 0.6,-0.28 0.19,-0.19 0.37,-0.53 0.14,-1.09 l -0.05,-0.13 -0.05,0.13 c -0.26,0.64 -1.53,0.5 -1.68,0.48 -1.06,-0.76 -2.49,-0.41 -2.54,-0.39 -0.54,0.08 -0.89,0 -1.05,-0.22 -0.26,-0.37 0.09,-1.03 0.09,-1.03 l 1.78,-2.82 c 0,0 1.95,-2.73 2.98,-4.48 v -0.02 c 0.22,-1.77 0.53,-2.53 0.57,-2.61 0.73,-0.81 0.96,-1.53 1,-1.66 1.03,-3.4 1.21,-4.11 1.21,-4.12 0.13,-0.54 0.81,-1.66 1.59,-1.81 0.07,0 0.16,-0.02 0.28,-0.04 0.5,-0.07 1.35,-0.18 1.62,-0.13 0.07,0.01 0.16,0.02 0.26,0.03 0.5,0.06 1.33,0.15 2.54,0.67 1.16,0.35 0.39,3.28 0.39,3.3 l -1.72,3.73 c -0.17,0.33 0.47,0.9 0.53,0.95 0.1,0.14 0.96,1.21 1.01,1.26 0,0 0.82,0.75 0.7,2.14 0.1,0.89 -0.11,1.24 -0.32,1.62 -0.09,0.16 -0.19,0.33 -0.27,0.54 v 0.02 c -0.05,0.78 0.33,2.25 0.35,2.32 0,0.01 0.01,0.04 0.02,0.05 -0.38,0.29 -1.04,0.73 -2.12,1.15 -0.23,0.09 -0.5,0.19 -0.77,0.29 -1.43,0.53 -1.88,0.72 -1.88,0.87 0,0.02 0,0.06 0.05,0.09 0.1,0.08 0.35,0.1 0.61,0.1 0.28,0 0.58,-0.03 0.74,-0.06 0.38,-0.08 1.45,-0.43 1.82,-0.58 0.27,-0.1 1.28,-0.54 1.81,-0.77 0.08,0.37 0.16,0.77 0.23,1.12 -0.19,0.11 -0.41,0.23 -0.61,0.32 -0.34,0.15 -0.83,0.41 -1.2,0.59 -0.17,0.09 -0.31,0.16 -0.4,0.2 -0.18,0.09 -0.87,0.51 -0.89,0.64 0,0.03 0,0.06 0.03,0.09 0.09,0.1 0.37,0.22 0.54,0.22 0.01,0 0.02,0 0.03,0 0.12,-0.01 0.58,-0.2 1.22,-0.47 0.2,-0.08 0.38,-0.16 0.52,-0.22 0.31,-0.12 0.68,-0.3 0.93,-0.42 0,0.02 0.01,0.06 0.01,0.06 0.16,2.29 0.27,2.73 0.34,2.81 0.19,0.22 1.5,0.19 4.01,0.04 1.1,0.52 1.27,1.35 1.35,1.71 l -0.24,0.67 c -0.37,0.93 -1.85,5 -1.86,5.03 -0.05,0.09 -0.09,0.2 -0.14,0.31 -0.23,0.54 -0.51,1.2 -1.7,1.43 -1.23,0.47 -1.97,0.67 -3.42,0.93 -2.41,0.55 -4.14,0.55 -4.16,0.55 l -2.97,0.06 z m 5.57,0.88 c -0.03,-0.07 -0.04,-0.09 -0.04,-0.16 0,-0.13 0.59,-0.27 1.14,-0.32 5.23,-0.9 5.98,-2.29 6.26,-2.82 0.03,-0.05 0.05,-0.1 0.08,-0.14 0.9,-1.58 2.47,-6.17 2.56,-6.42 0.07,-0.07 0.56,-0.64 0.96,-0.75 0.54,-0.16 1.05,0.4 1.05,0.4 h 0.02 c 0.25,0.16 1.3,0.98 1.31,0.99 0.4,0.29 1.29,0.5 1.33,0.51 0.26,0.06 1.06,0.36 1.54,0.54 0.2,0.08 0.34,0.13 0.39,0.15 0.14,0.04 0.79,0.47 0.83,0.59 0.02,0.05 0.06,0.1 0.12,0.15 0.04,0.13 0.08,0.29 0.07,0.44 l -0.33,0.27 -4.37,3.19 c -3.47,2.69 -8.05,8.52 -8.1,8.58 l -2.57,3.22 -0.33,0.49 -0.34,-1.78 -1.08,-4.97 c -0.29,-1.62 -0.44,-2 -0.51,-2.16 z m 32.4,7.51 c -0.25,-0.21 -0.62,-0.53 -1.04,-0.98 -0.89,-0.94 -1.79,-1.62 -2.82,-2.13 -0.11,-0.05 -0.21,-0.11 -0.32,-0.16 -0.96,-0.47 -1.94,-0.95 -2.23,-1.68 -0.15,-0.37 -0.03,-0.61 0.11,-0.92 0.17,-0.36 0.36,-0.77 0.18,-1.48 -0.21,-0.82 -0.39,-1.5 -0.49,-1.9 0.45,-0.2 0.65,-0.36 0.66,-0.38 0.13,-0.08 0.27,-0.22 0.41,-0.36 0.13,0.21 0.29,0.46 0.35,0.58 v 0.02 c 0,0 0.78,0.71 0.91,1.22 -0.08,0.24 -0.83,2.12 -0.84,2.14 -0.18,0.73 -0.16,1.22 0.08,1.47 0.16,0.17 0.44,0.23 0.78,0.15 l 4.41,0.26 c 0.76,1.22 0.78,2.24 0.74,2.67 0,0.02 0,0.03 0,0.04 0,0.05 0,0.23 -0.64,1.03 -0.01,0.02 -0.12,0.19 -0.25,0.41 z" + id="path6733" /> + <path + class="cls-2" + d="m 240.34,94.98 c 0.04,-0.31 0.02,-0.71 0.01,-0.97 0,-0.1 0,-0.19 0,-0.22 0,-0.09 0.05,-0.2 0.12,-0.23 0.07,-0.04 0.19,-0.05 0.37,-0.04 h 0.12 c 0.15,0.02 0.32,0.03 0.49,0.05 0.2,0.03 0.62,0.1 0.74,0.13 0.05,0.02 0.13,0.06 0.2,0.1 0.09,0.05 0.19,0.11 0.3,0.15 0.05,0.02 0.12,0.04 0.2,0.07 0.24,0.08 0.6,0.21 0.72,0.29 0.15,0.11 0.54,0.56 0.61,0.65 0.07,0.11 0.23,0.31 0.3,0.38 0.08,0.08 0.25,0.19 0.43,0.24 0.18,0.05 0.42,0 0.43,0 l 0.09,-0.02 -0.06,-0.07 c -0.05,-0.06 -0.41,-0.62 -0.69,-1.06 -0.29,-0.45 -0.47,-0.73 -0.5,-0.77 -0.07,-0.08 -0.2,-0.15 -0.41,-0.21 -0.08,-0.02 -0.21,-0.06 -0.34,-0.1 -0.1,-0.03 -0.2,-0.07 -0.28,-0.09 -0.09,-0.03 -0.24,-0.1 -0.41,-0.18 -0.14,-0.06 -0.28,-0.13 -0.4,-0.18 -0.06,-0.02 -0.13,-0.06 -0.22,-0.09 -0.28,-0.12 -0.65,-0.29 -0.95,-0.32 -0.37,-0.04 -1.66,0.05 -1.8,0.11 -0.13,0.06 -0.21,0.19 -0.2,0.31 0,0.07 0.05,0.2 0.13,0.42 0.03,0.07 0.05,0.14 0.07,0.2 0,0 0.08,0.24 0.11,0.43 0.02,0.2 0.03,0.79 0,1.11 -0.03,0.29 -0.08,0.42 -0.15,0.58 l -0.02,0.05 c -0.04,0.1 -0.18,0.29 -0.29,0.44 -0.17,0.23 -0.18,0.26 -0.17,0.3 l 0.02,0.03 h 0.03 c 0,0 0.03,0 0.05,0 0.2,0 0.8,-0.06 0.91,-0.16 0.11,-0.11 0.37,-0.92 0.42,-1.35 z" + id="path6735" /> + <path + class="cls-2" + d="m 243.67,95.76 c 0,0 -0.06,-0.06 -0.1,-0.1 -0.13,-0.13 -0.24,-0.22 -0.29,-0.25 -0.03,-0.02 -0.1,-0.08 -0.16,-0.13 -0.06,-0.05 -0.11,-0.1 -0.15,-0.12 -0.05,-0.04 -0.14,-0.1 -0.2,-0.14 l -0.07,-0.05 c 0,0 -0.31,-0.21 -0.38,-0.23 h -0.02 c -0.06,-0.03 -0.24,-0.1 -0.28,-0.12 -0.01,0 -0.04,-0.03 -0.07,-0.06 -0.05,-0.04 -0.1,-0.09 -0.15,-0.12 -0.07,-0.04 -0.55,-0.14 -0.65,-0.15 v 0 c -0.12,0 -0.34,0.16 -0.39,0.22 -0.03,0.05 -0.02,0.13 0,0.19 0.01,0.04 0.05,0.17 0.13,0.21 0.04,0.02 0.14,0.06 0.24,0.1 -0.04,0.14 -0.1,0.34 -0.11,0.49 -0.02,0.21 -0.03,0.45 0,0.59 0.03,0.14 0.19,0.39 0.29,0.5 0.1,0.11 0.31,0.17 0.32,0.17 0,0 0.02,0 0.03,0 0.04,0 0.09,0 0.14,-0.05 0.06,-0.06 0.07,-0.15 0.05,-0.28 -0.05,-0.26 -0.05,-0.35 -0.06,-0.51 v -0.09 c -0.01,-0.13 0.09,-0.31 0.17,-0.46 0.05,0.02 0.12,0.05 0.15,0.07 0.14,0.09 0.5,0.37 0.6,0.47 0.03,0.03 0.08,0.06 0.12,0.09 0.14,0.08 0.22,0.14 0.18,0.29 -0.06,0.25 -0.22,0.36 -0.37,0.43 -0.15,0.07 -0.37,0.16 -0.51,0.2 -0.15,0.05 -0.52,0.1 -0.63,0.11 -0.15,0.02 -0.41,0.04 -0.41,0.04 h -0.02 c 0,0 -0.18,0.08 -0.19,0.18 -0.01,0.11 0.12,0.17 0.13,0.17 h 0.5 c 0,0 0.17,-0.01 0.3,-0.01 0.04,0 0.1,0 0.16,0 0.12,0 0.26,0 0.34,0 0.14,-0.02 0.4,-0.1 0.53,-0.16 0.16,-0.06 0.83,-0.44 0.9,-0.49 0.07,-0.06 0.15,-0.17 0.18,-0.24 0.04,-0.08 0.02,-0.24 -0.02,-0.34 -0.04,-0.11 -0.2,-0.36 -0.29,-0.44 z" + id="path6737" /> + <path + class="cls-2" + d="m 253.83,85.44 c 0,0 0.02,0 0.04,0 0.26,0 1.22,0.23 1.65,0.36 0.41,0.12 0.58,0.19 0.7,0.27 0.11,0.08 0.59,0.51 0.89,0.81 0.12,0.12 0.23,0.18 0.33,0.23 0.13,0.07 0.22,0.12 0.24,0.29 0,0.04 0.03,0.1 0.16,0.14 0.05,0.01 0.1,0.02 0.15,0.02 0.16,0 0.34,-0.05 0.42,-0.15 0.06,-0.07 0.07,-0.15 0.02,-0.24 -0.07,-0.15 -0.09,-0.18 -0.14,-0.2 -0.02,-0.01 -0.07,-0.04 -0.23,-0.26 -0.17,-0.23 -0.36,-0.39 -0.58,-0.58 -0.08,-0.06 -0.16,-0.13 -0.24,-0.21 -0.4,-0.35 -0.57,-0.48 -0.77,-0.59 -0.02,-0.01 -0.05,-0.03 -0.09,-0.05 -0.32,-0.19 -1.16,-0.69 -2.25,-0.72 0,0 0,0 0,0 -0.26,0 -0.91,0.41 -0.99,0.45 l -0.04,0.02 0.14,0.39 h 0.03 c 0,0 0.34,0.05 0.56,0.02 z" + id="path6739" /> + <path + class="cls-2" + d="m 257.89,88.98 c 0.06,0 0.11,0 0.19,0 0.14,-0.01 0.17,-0.06 0.2,-0.12 0.02,-0.04 0.05,-0.09 0.17,-0.15 0.06,-0.03 0.06,-0.08 0.05,-0.1 -0.07,-0.15 -1.22,-0.21 -1.43,-0.11 -0.1,0.04 -0.3,0.09 -0.5,0.13 -0.28,0.06 -0.57,0.12 -0.7,0.21 -0.06,0.04 -0.16,0.08 -0.27,0.12 -0.25,0.09 -0.54,0.2 -0.51,0.43 0,0.05 0.03,0.09 0.07,0.12 0.04,0.02 0.09,0.04 0.16,0.04 0.19,0 0.48,-0.1 0.81,-0.21 0.08,-0.03 0.16,-0.06 0.22,-0.07 0.19,-0.06 0.25,-0.07 0.38,-0.09 0.1,-0.02 0.25,-0.04 0.52,-0.1 0.42,-0.09 0.54,-0.08 0.66,-0.07 z" + id="path6741" /> + <path + class="cls-2" + d="m 255.36,87 c 0.32,0.09 0.89,0.5 1.04,0.67 -0.01,0 -0.02,0.01 -0.03,0.02 -0.11,0.07 -0.35,0.19 -0.57,0.3 -0.5,0.25 -0.64,0.33 -0.66,0.39 v 0.03 c 0,0 0,0.02 0,0.02 0,0.01 0.02,0.03 0.05,0.04 0,0 0.02,0 0.04,0 0.25,0 1.2,-0.28 1.39,-0.39 0.21,-0.13 0.34,-0.39 0.35,-0.4 v -0.02 c 0,0 -0.05,-0.31 -0.05,-0.31 h -0.01 c -0.05,-0.1 -0.12,-0.22 -0.22,-0.35 -0.18,-0.24 -1.14,-0.76 -1.45,-0.81 -0.02,0 -1.65,-0.27 -1.83,-0.09 -0.16,0.15 -0.05,0.56 -0.04,0.61 v 0.04 c 0,0 0.06,0 0.06,0 h 0.05 c 0.08,0 0.28,0 0.52,0.02 0,0.17 0,0.38 0.02,0.52 0,0.04 0.01,0.08 0.02,0.12 0.02,0.17 0.04,0.3 0.17,0.51 0.02,0.03 0.04,0.06 0.06,0.09 0.07,0.11 0.12,0.2 0.27,0.2 0.03,0 0.06,0 0.1,-0.01 0.19,-0.04 0.18,-0.25 0.17,-0.47 0,-0.12 0,-0.24 0.01,-0.35 0.05,-0.22 0.14,-0.36 0.23,-0.47 0.11,0.02 0.22,0.04 0.33,0.07 z" + id="path6743" /> + </g> + </g> + </g> +</svg> diff --git a/assets/logos/mpcdf.svg b/assets/logos/mpcdf.svg new file mode 100644 index 0000000000000000000000000000000000000000..a164012441bb7c91c7f6ffa29edf1f96380534ff --- /dev/null +++ b/assets/logos/mpcdf.svg @@ -0,0 +1,160 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + viewBox="0 0 1821.0339 300" + version="1.1" + id="svg4947" + width="1821.0339" + height="300" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <defs + id="defs837" /> + <defs + id="defs4879"> + <style + id="style4877">.minerva-base-style{}</style> + </defs> + <g + transform="matrix(1.4285714,0,0,1.4285714,0,1.1830713e-6)" + style="fill:#006c66" + id="g4925"> + <title + id="title4881">minerva</title> + <path + d="M 105,0 A 105,105 0 1 0 210,105 105.1,105.1 0 0 0 105,0 Z m 0,207.1 A 102.1,102.1 0 1 1 207.1,105 102.2,102.2 0 0 1 105,207.1 Z" + id="path4883" /> + <path + class="minerva-base-style" + d="m 166.6,97 c -1.4,-3.1 -0.5,-5.1 -0.9,-7.3 -0.4,-2.2 -2.7,-7 -4.3,-10.8 -0.7,-1.7 3.8,-1.3 0.4,-7.6 0,-0.2 4.7,-2 0,-5.5 a 26.4,26.4 0 0 1 -6,-6.7 1,1 0 0 1 0,-1.3 c 2.7,-2.4 2.8,-5.8 -0.1,-7.5 -2.9,-1.7 -4.5,0 -6.7,1.4 -0.7,0.5 -1.1,0.8 -1.9,0.5 L 145.3,51 c 2.7,-2.6 3.3,-5.2 3.1,-5.6 -0.2,-0.4 -4.6,-1.3 -10.2,1 l -0.4,-0.3 c 2.3,-3.9 1,-6.7 0.9,-6.9 h -0.1 A 81,81 0 0 1 151,25.9 h 0.1 c 0.2,-0.3 0.3,-0.6 -0.2,-0.9 l -1,-0.6 A 92.4,92.4 0 0 0 12.7,105 c 0,29.5 15,57.9 39.4,75.6 a 13.5,13.5 0 0 0 2.8,1.6 1.1,1.1 0 0 0 1.1,-0.2 l 0.3,-0.5 a 1,1 0 0 0 0.3,-0.8 c 0,-0.7 -0.9,-1.3 -2.1,-3 a 27.7,27.7 0 0 1 -4.7,-15.1 22.1,22.1 0 0 1 4.5,-13.7 c 3.7,3.9 11.7,10.9 11.5,17.4 -0.2,6.5 -6.9,6.8 -5.4,12.2 0.9,3.4 3.4,2 3.9,4.6 0.7,4.4 6.7,7.3 9.3,6.9 0.7,-0.1 1.2,0.4 2.4,1.7 1.2,1.3 6.2,1.6 8.2,1.2 2,-0.4 4.1,1.4 8,0.9 3.9,-0.5 6.1,-0.9 8.2,-0.9 2.1,0 22.5,-0.3 36,1.8 2.4,0.4 3.1,-0.7 2.1,-2.5 -4.9,-8.6 -5.6,-15.8 -2.8,-25 5,0.4 12.2,1.7 21.6,-4 a 11,11 0 0 0 5.1,-9.5 c -0.1,-2.1 -1,-4.7 -0.5,-6.7 0.5,-2 1.3,-2.7 2.1,-3.2 3.6,-2.6 1,-4.6 0.4,-4.8 a 3.4,3.4 0 0 0 1.1,-4.6 c -0.7,-0.7 -2.7,-6.2 -0.4,-7.3 2.3,-1.1 5.3,-1.8 8.1,-3.1 a 4.5,4.5 0 0 0 2.4,-6 c -1.4,-3.6 -8.8,-20.6 -9,-21 z M 64.7,179.1 c -0.7,0.2 -2.9,0.3 -2.4,-2.7 0.5,-3 2.3,-2.6 3.3,-1.6 1,1 -0.7,2.8 -0.9,4.3 z m 87,-125.9 c 1.2,-0.8 2.5,-1.1 3.3,-0.4 2.6,2.6 -2.9,4.1 -1.8,6.1 a 30.7,30.7 0 0 0 7.5,8.4 c 1.2,1 1.4,3.1 -3.3,4.1 -4.7,1 -23.6,5.9 -33.6,16.5 -12.5,13.2 -20.4,30.3 -21.5,28 -1.1,-2.3 -3.6,-2.8 -3.2,-3.5 17.9,-30.8 46,-55.1 52.6,-59.2 z m 8.2,21.7 c -1,2.9 -9.1,5.5 -8.7,3.5 0.4,-2 0,-2.2 0.6,-2.3 0.6,-0.1 3.5,-1.1 7.5,-2.1 0.4,-0.1 0.9,0.1 0.6,0.9 z m -20.6,5.3 c -0.2,-1.2 8.5,-4.1 8.8,-3.3 0.3,0.8 -1.8,6 -4.7,7 -2.9,1 -4.7,0.9 -4.6,0.4 a 11,11 0 0 0 0.5,-4.1 z M 119,125.8 c -4,2.5 -6.2,-2.2 -6.8,-3.1 a 3.7,3.7 0 0 1 -0.5,-3.1 c 0.3,-1.4 0.5,-3.3 -0.4,-9.3 -0.4,-2.7 5,-9.2 6.3,-10.4 1.3,-1.2 3.1,0.6 3.2,2.6 0.3,3.6 -1.8,5.6 -3.9,7.2 -2.1,1.6 -3.1,4.4 -2.6,5.1 a 1.5,1.5 0 0 0 1.9,-0.9 c 1.5,-3.3 6,-4.9 6.7,-6.7 0.7,-1.8 0.3,-4.4 0.2,-5.6 -0.1,-1.2 0.9,-1.2 1.6,-1.1 0.7,0.1 1.4,1.4 1.8,2.7 2.9,7.5 -4.3,12 -5.5,13.8 -1.2,1.8 1.1,6.9 -2,8.8 z m 6.1,-29.1 c -2.2,1.5 -5.3,-0.5 -4.7,-1.4 a 43.7,43.7 0 0 1 11.5,-11 c 3.4,-2.1 3.8,-2.3 4,-1.1 a 10.6,10.6 0 0 1 -2.6,7.5 c -2.3,2.5 -4.6,2.3 -5.8,2.6 -1.2,0.3 -0.8,2.3 -2.4,3.4 z m -19.3,25.6 c -1,-0.2 -1.4,-2.1 -1.2,-2.9 0.2,-0.8 3.1,-5.2 4,-6.4 a 0.5,0.5 0 0 1 0.8,0.3 c 0.6,4.1 0,9.8 -3.6,9 z M 138,48.2 a 17.7,17.7 0 0 1 7.5,-1.6 c 0.8,0.1 -1.9,4.8 -6.6,6.8 -4.7,2 -8.5,2.5 -8.9,2.3 -0.4,-0.2 4.1,-5.8 8,-7.5 z m -83.3,78.3 c -1.5,-1.7 -2.8,-2.6 -2.9,-2.5 A 22.4,22.4 0 0 0 48.2,132.9 65.4,65.4 0 0 1 40.7,105 C 39.3,69.6 69,41.1 105.2,41.2 a 56.8,56.8 0 0 1 22.4,4.6 31.3,31.3 0 0 0 -3.7,6.6 c 0,-1.9 -0.5,-3.4 -0.4,-4.6 0.1,-1.2 -5.1,0.9 -9.7,8.3 a 19.9,19.9 0 0 0 -2.2,5.3 c -0.1,-2.8 -0.7,-4.9 -0.9,-4.9 a 16.1,16.1 0 0 0 -8.5,8.8 22.4,22.4 0 0 0 -1.1,3.4 c -0.2,-1.9 -0.7,-3.2 -0.9,-3.2 -0.2,0 -5.9,2.3 -8.6,8.9 A 15.4,15.4 0 0 0 90.5,79 C 90,76.7 89.1,75.3 88.8,75.6 86.9,78 83.1,79.1 81.2,85.2 a 13.2,13.2 0 0 0 -0.7,4.2 c -0.8,-2 -2,-3.2 -2.3,-3.2 -0.3,0 -6.1,5.5 -7,10.9 a 15.8,15.8 0 0 0 0.2,5.8 c -1.1,-1.8 -2.5,-3 -3.1,-4.8 -0.9,0.5 -5.7,5 -5.8,10.7 a 19.7,19.7 0 0 0 0.7,6.1 c -1.6,-2.9 -3.8,-4.2 -4.1,-4.1 -0.3,0.1 -4,4.1 -4.8,11.1 a 11.8,11.8 0 0 0 0.4,4.6 z m 74.1,-79.7 c 2.8,-3.4 7.6,-6.1 8.2,-5.8 0.6,0.3 -0.8,5.6 -3.9,8.6 -3.1,3 -8.1,6.2 -8.6,6.1 -0.5,-0.1 1.7,-5.9 4.3,-8.9 z m -9.3,13 a 21,21 0 0 0 -5.6,6.4 c -0.5,0.9 -1.9,-5 1.7,-10.6 2.2,-3.5 6.6,-6.6 6.5,-6.2 -0.1,0.4 2.1,6.6 -2.6,10.4 z m -10.1,7.5 c -3.4,5.1 -3.6,3.3 -7.3,8.3 -0.2,0.2 -0.2,-6.5 1.1,-9.4 2.1,-4.7 5.7,-7.4 6.2,-7.5 0.5,-0.1 1.9,5.8 0,8.6 z M 98.3,77.4 c -1.7,3 -3.3,2.3 -6.2,6.7 -0.3,0.4 -1.1,-3.6 0.7,-9.1 a 12.6,12.6 0 0 1 5.9,-6.9 c 0.6,-0.1 1.7,5.7 -0.4,9.3 z M 88,88.1 c -1.8,3.9 -2.9,4 -5,6.4 -0.3,0.4 -1.8,-3.7 -0.4,-8.8 1.4,-5.1 4,-5.6 5.3,-7 1.3,-1.4 2,5.3 0.1,9.4 z m -8.4,6.6 a 10.3,10.3 0 0 1 -0.4,3 c -1.3,4.3 -3.9,6.2 -5.3,8.1 A 15.7,15.7 0 0 1 72.3,100 15.2,15.2 0 0 1 77.5,88.8 c 0.8,0 2.1,3.2 2.1,5.9 z m -8.5,12.8 a 14.9,14.9 0 0 1 -5.1,10.8 17.7,17.7 0 0 1 -2.2,-7.6 c -0.2,-6.3 2.4,-8.5 3.6,-9.7 0.5,1.8 3.7,3.2 3.7,6.5 z M 59,113.8 c 1.8,0.9 3.9,3.4 4.1,8.2 0.2,4.8 -3.2,8.7 -4.6,9.4 -0.9,-3.7 -2.6,-4.4 -2.6,-8 a 18,18 0 0 1 3.1,-9.6 z m 7.3,12.5 c 4.6,-2 9.6,-1.7 9.8,-1.5 0.2,0.2 -1.5,5.9 -5.9,8.2 -4.4,2.3 -9.5,2.7 -10,2.1 -0.5,-0.6 1.5,-6.8 6.1,-8.8 z m -0.4,-3.4 c 0.3,-1.5 3,-6.5 7.1,-8.3 v 0 a 18.4,18.4 0 0 1 9.4,-1.5 c 0.5,0.2 -1.7,5.6 -5.8,7.6 -4.1,2 -6.5,0.9 -10.7,2.2 z m 6.9,-11.8 c 0.2,-0.4 3.5,-6.4 7.4,-8.2 a 17.5,17.5 0 0 1 8.9,-1.4 c 0.3,0.1 -1.8,5.4 -6.2,7.6 -4.4,2.2 -10.3,2.5 -10.1,2 z m 8.9,-11.9 c -0.3,-0.2 4.4,-6.4 8.4,-8.3 a 15.6,15.6 0 0 1 8.4,-1 c 0.3,0.3 -1.9,5.5 -6.5,7.5 A 24.2,24.2 0 0 1 81.7,99.2 Z M 92.4,87.4 c -0.2,-0.2 3.4,-6.3 7.4,-7.9 4,-1.6 7.7,-0.1 8.9,0 1.2,0.1 -1.3,4.5 -6.6,6.4 -5.3,1.9 -9,1.8 -9.7,1.5 z m 12,-11.4 c 0.1,-0.3 4.1,-5.9 8.1,-7.3 a 16.4,16.4 0 0 1 9.2,-0.2 c 0.5,0.2 -2.8,5 -7.7,6.5 -4.9,1.5 -9.7,1.3 -9.6,1 z m 12.1,-9.9 c -0.5,-0.3 4.3,-5.7 8.2,-7.2 a 18,18 0 0 1 8.3,-1 c 0.3,0.2 -2.5,4.9 -7.1,6.7 -4.6,1.8 -8.8,1.9 -9.4,1.5 z M 50.2,175.3 C 28.6,158.1 15.6,132.1 15.6,105 a 89.3,89.3 0 0 1 130.8,-79.2 0.4,0.4 0 0 1 0.1,0.7 97.3,97.3 0 0 0 -10.2,11.4 73.1,73.1 0 0 0 -31.3,-7 74.3,74.3 0 0 0 -74.1,74.1 72.1,72.1 0 0 0 17.9,48.2 23.1,23.1 0 0 0 -1.9,9.4 25.6,25.6 0 0 0 3.3,12.7 z m 0.2,-24.8 H 50.3 A 69.2,69.2 0 0 1 33.9,105 71.2,71.2 0 0 1 105,33.9 70.1,70.1 0 0 1 134.6,40.3 22.6,22.6 0 0 0 130.5,42.9 63.1,63.1 0 0 0 105,37.8 67.3,67.3 0 0 0 37.8,105 c 0,16.1 5,30.2 14.8,42 -0.5,0.9 -1.3,2.1 -2.2,3.5 z m 3.5,-5.6 c -1.3,-1.2 -4.1,-4.3 -4.4,-8.3 V 136 c 0,-4.3 1.9,-8.6 2.4,-9 0.5,-0.4 5.3,3.3 5.4,8.7 a 14.4,14.4 0 0 1 -3.4,9.2 z m 8,-7.2 c 3.9,-1.8 9.6,-1.4 9.3,-1.1 -0.3,0.3 -1.8,5.8 -6.2,8 a 12.1,12.1 0 0 1 -8.7,1.3 c 2.3,-2.6 1.8,-6.4 5.6,-8.2 z m 5.2,46.5 c -0.6,-2.7 -0.4,-6.3 0.5,-7.3 0.9,-1 4.9,-1.2 5,-0.1 0.1,1.1 -1.1,5.4 0.3,10.2 -0.3,0.7 -4.6,0.4 -5.8,-2.8 z m 0.3,-11.1 c -0.3,-2 1.6,-3.9 1.6,-8.2 0,-4.3 -6.6,-12.6 -11.1,-17.3 a 19.5,19.5 0 0 0 7.9,-1.9 c 6.6,-3.1 7.9,-10.1 8.1,-10.4 a 11,11 0 0 0 -3.8,-0.4 l 0.8,-0.4 c 6.4,-3.5 8.1,-11 7.8,-11.1 a 17,17 0 0 0 -4,-0.3 l 2,-0.7 c 6.8,-2.7 8.7,-10.3 8.5,-10.6 a 16.1,16.1 0 0 0 -3.5,-0.4 l 1.9,-0.8 c 6.2,-3.1 8.4,-10.1 8.1,-10.3 a 10.5,10.5 0 0 0 -3.3,-0.4 23.7,23.7 0 0 0 4.5,-1.5 c 6.7,-2.9 8.9,-9.3 8.6,-9.6 a 10.9,10.9 0 0 0 -3,-0.5 34.5,34.5 0 0 0 4.4,-1.3 c 6.6,-2.2 9.2,-8.5 8.8,-8.6 L 108,77.6 a 24.5,24.5 0 0 0 6.6,-1.3 c 7.1,-2.4 9.6,-6.7 9.8,-8.6 a 6,6 0 0 0 -2.3,-0.8 29.3,29.3 0 0 0 4.7,-1.2 c 6.6,-2.7 9.4,-9.3 9.6,-9.8 a 29.3,29.3 0 0 0 3.9,-1.6 l 1.9,-0.9 1.6,1.1 c 1,0.6 1.4,0.8 0.9,1.2 C 122,75 105,99.5 97.6,111.3 c -0.2,0.4 -0.6,0.3 -1.3,0.3 -7.9,-0.6 -12.4,8.9 -8.9,17.8 -0.4,1.8 -4.2,5.3 -4.5,5.5 -0.3,0.2 -1,1.4 0.3,1.3 1.3,-0.1 4.2,-3.2 5.4,-4.5 0.4,0.6 2.2,2 1.3,2.8 A 63.6,63.6 0 0 1 76,145 c -2.6,1.2 4.2,2.1 15.7,-8.3 0.7,-0.6 1.5,2.4 2.5,3.7 -2,6.5 2.9,19.1 2.1,23 a 2.8,2.8 0 0 1 -2.8,2.7 c -11.4,0.3 -12.5,-0.3 -18.3,1.4 -2.7,0.8 -2,2.6 -0.1,2.1 1.9,-0.5 4.6,-1.5 16.9,-0.7 3.1,0.1 6.5,-0.6 6.5,-5.7 0,-5.1 -3.6,-18.4 -2.4,-20.3 a 6.9,6.9 0 0 0 3.5,1.4 c -0.2,4.5 7,19 3.8,27 -1.2,3 -6.4,2.7 -15.4,1.8 -15.3,-1.5 -20.3,1.8 -20.6,0 z m 35.1,9.9 c -5.9,2 -8.3,-4.9 -7.3,-6.4 1,-1.5 4.4,1 7.3,-0.9 2.9,-1.9 3.5,6.1 0,7.3 z m -27,4.3 c -0.8,-3.7 -1.1,-10 0.4,-11.5 1.5,-1.5 4.9,-0.9 4.8,0.2 -0.3,4.3 -2.1,9.2 1.2,14.1 1.3,1.9 -5.2,2.2 -6.4,-2.8 z m 11.4,4.2 c -1.6,-0.4 -6,-7.4 -2.4,-15.8 0.3,-0.8 5.8,-0.3 6.8,0 1,0.3 -0.8,6.8 6.8,9.8 0.7,0.3 -0.1,8.8 -11.2,6 z m 47.2,-23.3 c -2.5,8.8 -3.8,12.3 0,21.9 0.5,1.3 0.9,2.3 -0.2,2.1 -7.7,-1.4 -9.4,-2.6 -33.7,-0.6 -1.7,0.2 0.6,-3.4 0.3,-5.8 2.2,-0.3 5.8,-1.3 6.5,-4.9 0.7,-3.6 -2.1,-7.6 -1.8,-8.2 3.5,-6.7 -0.2,-14.1 -3.1,-26.6 -0.3,-1.2 0.4,-1.7 0.9,-1.1 15.6,16.9 25.5,20.2 30.9,21.8 0.5,0.2 0.4,0.8 0.2,1.4 z M 174,122.1 c -3.3,2.9 -8.3,3.1 -10.3,4.9 -2,1.8 -1.5,2.5 -0.4,5.2 1.1,2.7 1.1,1.7 -1.1,2.3 -2.2,0.6 -4.1,5.8 -8.8,4.9 -1.8,-0.3 -0.5,0.8 0.2,0.9 2.6,0.3 3.7,-0.5 4.6,-1.4 0.9,-0.9 2.2,-2.4 3.6,-2.9 1.4,-0.5 2.9,-0.5 3,0.6 0.1,1.1 -1.9,2.1 -2.7,2.5 1,0.5 3.9,1.9 1.4,3.6 -2.5,1.7 -4.6,-0.5 -4.9,-0.7 -0.3,-0.2 -1.7,-0.2 -1.3,0.3 0.4,0.5 5.2,1.3 4.5,2.2 -3.5,4.7 -0.6,7.5 -1.7,12.3 -1.1,4.8 -7.7,7.5 -12.8,8.4 -17.4,3.1 -34.3,-11.6 -44.2,-22.8 0.9,-2.1 0.8,-4.8 -0.1,-3.8 -0.9,1 -0.7,2.4 -2.8,2.9 -3.9,1 -5.7,-5.9 -6.9,-7.1 -4.8,-4.7 -6.7,-11.4 -3.9,-17.3 2.8,-5.9 9,-4.7 11.4,-1.1 2.4,3.6 1.7,7 3.4,8.3 1.7,1.3 4.8,0.2 5.4,0 0.6,-0.2 1.7,4.3 8,4.1 6.3,-0.2 5.9,-10.7 6.9,-11.6 8.6,-8.4 4.2,-15.9 2.6,-17.6 -1.6,-1.7 1,-3.6 1.5,-3.7 a 13,13 0 0 0 9.4,-7.7 c 0,0 8.4,-0.2 11.4,-6.2 0.8,-1.6 3.3,1.5 8.9,-2.9 a 0.8,0.8 0 0 1 1.4,0.3 c 3.7,8.9 5.2,11.3 4.9,15.8 -0.3,4.5 8.7,21.5 9.4,23.1 0.7,1.6 0.8,3.4 0,4.2 z" + id="path4885" /> + <path + class="minerva-base-style" + d="m 153.8,90 c -4.9,0.2 -10.6,6.2 -12.4,7 -1.8,0.8 -1.3,1.5 -0.2,1.1 1.1,-0.4 5.9,-4.7 10.7,-6.4 4.8,-1.7 3.6,1.8 5,1.6 1.4,-0.2 -0.3,-3.4 -3.1,-3.3 z" + id="path4887" /> + <path + class="minerva-base-style" + d="m 154.9,94.8 c -0.4,0.1 0.4,2.2 -1.7,2.3 -4.6,0.3 -8.3,4.7 -11.1,6 a 12.9,12.9 0 0 1 -3.8,1.4 0.30413813,0.30413813 0 0 0 0.1,0.6 c 11.7,1.6 16.2,1.1 16.3,0.7 0.1,-0.4 -0.6,-1.2 -0.4,-1.7 a 11.3,11.3 0 0 0 0.1,-5.5 c -0.2,-0.8 1.8,-0.3 1.8,-1.3 0,-1 -0.6,-2.6 -1.3,-2.5 z m -1.8,9.3 c -0.2,0.9 -5.5,0.5 -8.3,0.2 -0.7,0 -1.8,-0.1 0.3,-1.4 2.1,-1.3 4.1,-2.8 7.2,-3.4 a 0.8,0.8 0 0 1 0.8,0.6 10.6,10.6 0 0 1 0,4 z" + id="path4889" /> + <path + class="minerva-base-style" + d="m 168.4,120.8 c -0.9,0 -4.5,1.6 -5.9,2.5 -1.4,0.9 -4.4,2.7 -4.2,-0.8 0.1,-1.3 0.9,-4.4 0.9,-5.3 0,-0.9 -1,-0.7 -1.1,0 a 36.9,36.9 0 0 1 -0.7,5.3 c -0.4,1.8 1.2,4 3.6,2.7 2.4,-1.3 4.8,-2.9 7.3,-3.4 0.6,-0.1 0.7,-1 0.1,-1 z" + id="path4891" /> + <path + class="minerva-base-style" + d="m 100.5,133.6 c -0.7,-0.3 -0.5,1.2 -1.4,1 -0.9,-0.2 -0.2,-1.3 -1.8,-3 -1.6,-1.7 -2.8,-1.2 -4.3,-3.6 -1.5,-2.4 -0.3,-12 3.1,-10.8 3.4,1.2 1.6,5 1,8 -0.6,3 2.5,2.8 2.8,2.1 0.3,-0.7 -1.1,-0.9 -1.4,-1.9 -0.3,-1 3.5,-7.6 -1.8,-9.4 -3.8,-1.3 -6.4,3.6 -5.9,8.9 a 8,8 0 0 0 5.1,7.1 c 2.3,0.8 0.6,4 3.7,4 1.4,0 1.7,-2.1 0.9,-2.4 z" + id="path4893" /> + <path + class="minerva-base-style" + d="m 131.3,33.4 c 0.2,0.1 0.3,0 0.5,-0.1 l 6.5,-8.3 a 0.5,0.5 0 0 0 -0.2,-0.6 L 137,24 a 0.4,0.4 0 0 0 -0.5,0.1 l -6.5,8.3 c -0.2,0.2 -0.1,0.5 0.2,0.6 z" + id="path4895" /> + <path + class="minerva-base-style" + d="m 119.2,30 1.1,0.3 a 0.5,0.5 0 0 0 0.5,-0.3 l 3.8,-9.4 A 0.4,0.4 0 0 0 124.3,20 l -1.2,-0.2 h -0.3 l -3.9,9.6 a 0.4,0.4 0 0 0 0.3,0.6 z" + id="path4897" /> + <path + class="minerva-base-style" + d="m 105.8,28.7 h 1.1 c 0.2,0.1 0.4,-0.1 0.4,-0.3 l 1,-10 a 0.5,0.5 0 0 0 -0.4,-0.5 h -1.1 c -0.3,0 -0.4,0.2 -0.5,0.4 l -0.9,10 a 0.4,0.4 0 0 0 0.4,0.4 z" + id="path4899" /> + <path + class="minerva-base-style" + d="m 92.8,29.7 1.1,-0.2 c 0.2,0 0.4,-0.2 0.3,-0.4 l -1.9,-9.9 c 0,-0.2 -0.2,-0.4 -0.4,-0.3 h -1.2 c -0.2,0.1 -0.4,0.3 -0.3,0.5 l 1.9,9.9 c 0,0.3 0.2,0.4 0.5,0.4 z" + id="path4901" /> + <path + class="minerva-base-style" + d="M 79.4,32.8 79.9,33 81,32.6 A 0.4,0.4 0 0 0 81.3,32 l -4.6,-9 a 0.4,0.4 0 0 0 -0.5,-0.2 l -1,0.3 a 0.4,0.4 0 0 0 -0.3,0.6 z" + id="path4903" /> + <path + class="minerva-base-style" + d="m 67,38.5 c 0.1,0.2 0.3,0.2 0.5,0.1 l 1,-0.6 a 0.4,0.4 0 0 0 0.1,-0.6 l -6.7,-7.7 c -0.2,-0.2 -0.4,-0.2 -0.5,-0.1 l -1,0.6 c -0.3,0.1 -0.3,0.4 -0.1,0.6 z" + id="path4905" /> + <path + class="minerva-base-style" + d="m 55.4,46.7 c 0.2,0.1 0.4,0.1 0.5,-0.1 l 0.9,-0.7 a 0.5,0.5 0 0 0 0,-0.7 l -8.5,-5.9 h -0.5 l -0.9,0.8 a 0.5,0.5 0 0 0 0,0.7 z" + id="path4907" /> + <path + class="minerva-base-style" + d="m 45.4,57.1 a 0.4,0.4 0 0 0 0.4,-0.2 L 46.6,56 c 0.2,-0.2 0.1,-0.5 -0.2,-0.6 l -9.8,-3.8 c -0.2,-0.1 -0.4,-0.1 -0.5,0.1 l -0.7,0.9 a 0.4,0.4 0 0 0 0.2,0.7 z" + id="path4909" /> + <path + class="minerva-base-style" + d="m 26.8,67.8 10.5,1.5 c 0.2,0 0.4,-0.1 0.4,-0.3 l 0.6,-1 A 0.4,0.4 0 0 0 38,67.4 L 27.5,65.9 27,66.1 a 5.4,5.4 0 0 1 -0.5,1.1 0.4,0.4 0 0 0 0.3,0.6 z" + id="path4911" /> + <path + class="minerva-base-style" + d="m 21.1,83.7 10.7,-1 a 0.3,0.3 0 0 0 0.3,-0.3 7.6,7.6 0 0 0 0.4,-1.1 0.4,0.4 0 0 0 -0.4,-0.6 l -10.8,1 -0.4,0.3 -0.3,1.2 c 0,0.3 0.2,0.6 0.5,0.5 z" + id="path4913" /> + <path + class="minerva-base-style" + d="m 29.2,96.5 c 0,-0.4 0.1,-0.9 0.1,-1.3 0,-0.4 -0.2,-0.5 -0.5,-0.4 l -10.4,3.6 c -0.2,0.1 -0.3,0.2 -0.3,0.4 0,0.2 -0.1,0.8 -0.1,1.2 a 0.4,0.4 0 0 0 0.6,0.4 l 10.3,-3.6 a 0.3,0.3 0 0 0 0.3,-0.3 z" + id="path4915" /> + <path + class="minerva-base-style" + d="m 28.9,110.8 v -1.3 a 0.5,0.5 0 0 0 -0.7,-0.4 l -9.4,6.3 c -0.2,0 -0.2,0.2 -0.2,0.4 0,0.2 0.1,0.8 0.1,1.2 a 0.5,0.5 0 0 0 0.7,0.3 l 9.4,-6.2 c 0.1,-0.1 0.2,-0.2 0.1,-0.3 z" + id="path4917" /> + <path + class="minerva-base-style" + d="M 31.3,125 31,123.7 a 0.4,0.4 0 0 0 -0.7,-0.2 l -7.7,8.5 c -0.1,0.1 -0.2,0.3 -0.1,0.4 0.1,0.1 0.3,0.8 0.4,1.2 a 0.4,0.4 0 0 0 0.7,0.2 l 7.6,-8.4 c 0.1,-0.1 0.1,-0.2 0.1,-0.4 z" + id="path4919" /> + <path + class="minerva-base-style" + d="M 35.2,137.7 29.8,148 c -0.1,0.1 0,0.3 0,0.4 l 0.7,1.2 a 0.4,0.4 0 0 0 0.7,-0.1 l 5.4,-10.2 c 0,-0.1 0.1,-0.2 0,-0.4 L 36,137.7 a 0.5,0.5 0 0 0 -0.8,0 z" + id="path4921" /> + <path + class="minerva-base-style" + d="m 42.9,149.3 c -0.2,-0.3 -0.7,-0.2 -0.7,0.1 l -2.9,12 c -0.1,0.2 0,0.3 0,0.4 l 1,1 a 0.4,0.4 0 0 0 0.7,-0.1 l 2.8,-11.9 c 0.1,-0.1 0,-0.2 0,-0.3 z" + id="path4923" /> + </g> + <rect + x="366.66599" + y="1.1830713e-06" + width="2.6500001" + height="300" + style="fill:#666666" + id="rect4927" /> + <g + transform="matrix(4.2717277,0,0,4.2717277,435.982,1.1830713e-6)" + id="g4935"> + <style + id="style845" /> + <g + id="g841" + transform="matrix(1.3333333,0,0,-1.3333333,-60.145965,95.588512)"> + <path + id="path951" + style="fill:#007ac2;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.0999997" + d="m 77.016475,39.809688 h -4.983 v 4.955899 h 4.983 z m -7.598,7.5371 V 33.939387 h 13.387 v 13.407401 h -13.387" /> + <path + id="path953" + style="fill:#007e73;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.0999997" + d="m 66.368475,62.317586 c 0.339,0.2996 0.508,0.7332 0.508,1.2996 0,0.5382 -0.169,0.9687 -0.508,1.291 -0.339,0.3234 -0.804,0.4902 -1.394,0.5031 h -2.205 v -3.5441 h 2.137 c 0.636,0 1.123,0.1496 1.462,0.4504" /> + <path + id="path955" + style="fill:#007e73;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.0999997" + d="m 84.587475,61.628086 v 0.5273 c 0,1.0254 -0.24,1.8219 -0.722,2.3907 -0.481,0.5683 -1.164,0.8574 -2.048,0.8652 h -1.387 v -7.0762 h 1.251 c 0.917,0 1.63,0.2852 2.14,0.8555 0.511,0.5711 0.766,1.3836 0.766,2.4375" /> + <path + id="path957" + style="fill:#007e73;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.0999997" + d="m 93.784475,65.411286 h -4.398 v -3.0922 h 3.785 v -0.9723 h -3.785 v -3.9843 h -1.191 v 9.0215 h 5.589 z m -0.603,-41.790998 h -28.364 v 28.3633 h 28.364 z m -30.412,33.742198 h -1.191 v 9.0215 h 3.328 c 0.988,0 1.761,-0.2524 2.321,-0.7559 0.559,-0.5039 0.839,-1.1711 0.839,-2.0012 0,-0.8758 -0.274,-1.5508 -0.821,-2.0234 -0.548,-0.4727 -1.331,-0.709 -2.351,-0.709 h -2.125 z m -3.926,0 h -1.19 v 3.5136 l 0.112,3.7918 -2.962,-7.3054 h -0.91 l -2.957,7.2871 0.119,-3.7735 v -3.5136 h -1.191 v 9.0215 h 1.537 l 2.95,-7.3614 2.949,7.3614 h 1.543 z m 10.939,4.9566 c 0,0.8391 0.15,1.5766 0.449,2.2121 0.3,0.6367 0.724,1.125 1.274,1.466 0.549,0.3407 1.185,0.5106 1.908,0.5106 0.959,0 1.727,-0.2676 2.306,-0.8016 0.578,-0.5351 0.914,-1.2765 1.009,-2.2219 h -1.196 c -0.103,0.7208 -0.327,1.243 -0.672,1.5665 -0.344,0.3234 -0.827,0.4843 -1.447,0.4843 -0.76,0 -1.355,-0.2812 -1.787,-0.8437 -0.432,-0.5613 -0.648,-1.3621 -0.648,-2.3992 v -0.875 c 0,-0.9797 0.205,-1.759 0.614,-2.3379 0.409,-0.5782 0.98,-0.8684 1.716,-0.8684 0.661,0 1.168,0.1504 1.521,0.4492 0.354,0.3 0.588,0.8215 0.703,1.5645 h 1.196 c -0.111,-0.9539 -0.463,-1.6903 -1.056,-2.209 -0.593,-0.5184 -1.381,-0.7773 -2.364,-0.7773 -1.066,0 -1.92,0.382 -2.562,1.1464 -0.643,0.7637 -0.964,1.7864 -0.964,3.0676 z m 9.457,4.0649 h 2.547 c 0.785,0 1.479,-0.1731 2.082,-0.5207 0.604,-0.3465 1.069,-0.8399 1.398,-1.4805 0.328,-0.6406 0.494,-1.3762 0.499,-2.2059 v -0.5761 c 0,-0.8508 -0.165,-1.5969 -0.494,-2.2375 -0.328,-0.6395 -0.796,-1.1317 -1.406,-1.4747 -0.609,-0.3425 -1.319,-0.5183 -2.129,-0.5261 h -2.497 z m -34.13,5.3074 V 19.019488 h 52.671 v 52.671898 h -52.671" /> + </g> + </g> + <g + transform="translate(802.64288,41.43462)" + id="g4945"> + <g + transform="translate(0,99.060381)" + style="fill:#006c66" + id="g4939"> + <path + d="M 5.5,-62 H 22.094 L 37.922,-17.029 53.656,-62 H 70.328 V 0 H 57.594 V -16.951 L 58.859,-46.213 42.234,0 h -8.718 l -16.594,-46.166 1.281,29.215 V 0 H 5.5 Z m 124.063,62 -4.282,-12.719 h -22.25 L 98.797,0 h -13.5 l 22.937,-62 H 120 L 143.063,0 Z M 114.109,-46.339 106.453,-23 h 15.406 z M 168,-62 179.547,-40.631 191.109,-62 h 14.594 L 187.766,-31.259 206.172,0 H 191.391 L 179.547,-21.715 167.703,0 H 152.938 L 171.344,-31.259 153.391,-62 Z m 107.328,40.297 H 264.203 V 0 H 251.5 v -62 h 24.031 q 6.953,0 12.219,2.564 5.266,2.564 8.102,7.281 2.836,4.718 2.836,10.745 v 0 q 0,9.151 -6.204,14.429 -6.203,5.278 -17.156,5.278 z M 264.203,-51.719 V -32 h 11.328 q 5.047,0 7.688,-2.415 2.64,-2.415 2.64,-6.91 v 0 q 0,-4.607 -2.664,-7.461 -2.664,-2.853 -7.367,-2.933 v 0 z m 65,-10.281 v 51.797 h 26.953 V 0 H 316.5 v -62 z m 82.36,62 -4.282,-12.719 h -22.25 L 380.797,0 h -13.5 l 22.937,-62 H 402 L 425.063,0 Z M 396.109,-46.339 388.453,-23 h 15.406 z M 489.609,-62 V 0 H 476.906 L 452.203,-40.804 V 0 H 439.5 v -62 h 12.703 l 24.75,40.883 V -62 Z m 55.563,41.625 h 12.703 q -0.719,9.953 -7.344,15.664 Q 543.906,1 533.078,1 v 0 q -11.859,0 -18.648,-7.937 -6.789,-7.937 -6.789,-21.791 v 0 -3.747 q 0,-8.846 3.132,-15.579 3.133,-6.732 8.954,-10.339 5.82,-3.607 13.507,-3.607 v 0 q 10.672,0 17.188,5.719 6.516,5.718 7.531,16.047 v 0 h -12.687 q -0.469,-5.969 -3.328,-8.657 -2.86,-2.687 -8.704,-2.687 v 0 q -6.343,0 -9.492,4.513 -3.148,4.514 -3.242,14.006 v 0 4.622 q 0,9.911 3.031,14.494 3.032,4.584 9.547,4.584 v 0 q 5.875,0 8.774,-2.688 2.898,-2.687 3.32,-8.328 z M 609.625,0 l -15.828,-24.875 -6.594,7.154 V 0 H 574.5 v -62 h 12.703 v 28.099 l 5.578,-7.705 L 608.484,-62 h 15.61 L 602.219,-34.451 624.734,0 Z" + id="path4937" /> + </g> + <g + transform="translate(0,179.07038)" + style="fill:#006c66" + id="g4943"> + <path + d="m 35.781,-15.484 h 6.61 Q 41.453,-7.578 36.555,-3.289 31.656,1 23.516,1 v 0 q -8.813,0 -14.133,-6.311 -5.32,-6.31 -5.32,-16.875 v 0 -4.768 q 0,-6.919 2.484,-12.17 2.484,-5.251 7.023,-8.063 Q 18.109,-50 24.094,-50 v 0 q 7.937,0 12.719,4.43 4.781,4.429 5.578,12.257 v 0 h -6.61 q -0.843,-5.953 -3.703,-8.617 -2.859,-2.664 -7.984,-2.664 v 0 q -6.281,0 -9.852,4.632 -3.57,4.633 -3.57,13.181 v 0 4.796 q 0,8.081 3.383,12.845 3.383,4.765 9.461,4.765 v 0 q 5.468,0 8.39,-2.477 2.922,-2.476 3.875,-8.632 z m 56.282,-10.551 v 3.132 q 0,7.293 -2.461,12.731 -2.461,5.438 -6.977,8.305 Q 78.109,1 72.094,1 v 0 q -5.875,0 -10.422,-2.883 -4.547,-2.882 -7.055,-8.219 -2.508,-5.337 -2.586,-12.349 v 0 -3.584 q 0,-7.152 2.5,-12.645 2.5,-5.492 7.063,-8.406 Q 66.156,-50 72.031,-50 v 0 q 5.985,0 10.547,2.883 4.563,2.882 7.024,8.352 2.461,5.469 2.461,12.73 z m -6.532,3.614 v -3.675 q 0,-8.828 -3.554,-13.546 -3.555,-4.717 -9.946,-4.717 v 0 q -6.218,0 -9.789,4.717 -3.57,4.718 -3.679,13.095 v 0 3.643 q 0,8.548 3.609,13.437 3.609,4.889 9.922,4.889 v 0 q 6.359,0 9.844,-4.617 3.484,-4.616 3.593,-13.226 z M 104.781,-50 h 8.469 L 129.516,-9.199 145.797,-50 h 8.5 V 0 h -6.563 V -19.466 L 148.359,-40.487 132.016,0 H 127 l -16.312,-40.392 0.656,20.926 V 0 h -6.563 z m 82.282,30.359 H 175.344 V 0 h -6.563 v -50 h 18.344 q 8.172,0 12.805,4.183 4.633,4.182 4.633,11.059 v 0 q 0,7.269 -4.532,11.193 -4.531,3.924 -12.968,3.924 z M 175.344,-44.594 V -25 h 11.781 q 5.266,0 8.07,-2.494 2.805,-2.495 2.805,-7.185 v 0 q 0,-4.471 -2.805,-7.146 -2.804,-2.675 -7.695,-2.769 v 0 z M 244.219,-50 h 6.594 v 34.211 q -0.032,7.107 -4.422,11.632 Q 242,0.368 234.469,0.921 v 0 L 232.734,1 q -8.171,0 -13.023,-4.462 -4.852,-4.462 -4.93,-12.264 v 0 V -50 h 6.5 v 34.112 q 0,5.456 2.977,8.485 2.976,3.028 8.476,3.028 v 0 q 5.563,0 8.524,-3.005 2.961,-3.005 2.961,-8.476 v 0 z m 53.937,0 v 5.406 H 282.172 V 0 h -6.531 V -44.594 H 259.672 V -50 Z m 17.657,0 V 0 h -6.563 v -50 z m 53.218,0 V 0 h -6.609 L 337.375,-38.524 V 0 h -6.594 v -50 h 6.594 L 362.5,-11.303 V -50 Z m 50.485,26 v 17.914 q -2.532,3.558 -7.055,5.322 Q 407.938,1 401.922,1 v 0 q -6.094,0 -10.805,-2.852 -4.711,-2.851 -7.297,-8.094 -2.586,-5.244 -2.648,-12.162 v 0 -4.332 q 0,-11.219 5.242,-17.39 5.242,-6.17 14.758,-6.17 v 0 q 7.781,0 12.531,3.984 4.75,3.985 5.813,11.297 v 0 h -6.563 q -1.844,-9.875 -11.75,-9.875 v 0 q -6.594,0 -10,4.617 -3.406,4.617 -3.437,13.367 v 0 4.049 q 0,8.345 3.828,13.266 3.828,4.92 10.359,4.92 v 0 q 3.688,0 6.461,-0.794 2.774,-0.795 4.57,-2.671 v 0 -10.832 H 401.469 V -24 Z m 31.937,10.992 v 0 q 0,-3.584 2,-6.584 2,-2.999 7.641,-6.988 v 0 q -3.313,-4.02 -4.446,-6.475 -1.132,-2.454 -1.132,-4.869 v 0 q 0,-5.672 3.351,-8.874 3.352,-3.202 9.102,-3.202 v 0 q 5.125,0 8.469,2.984 3.343,2.984 3.343,7.518 v 0 q 0,2.992 -1.515,5.532 -1.516,2.54 -5.313,5.345 v 0 l -3.656,2.695 11.078,13.183 q 2.313,-4.426 2.313,-9.848 v 0 h 5.718 q 0,8.695 -4.203,14.413 v 0 L 491.313,0 h -7.594 l -3.313,-3.612 q -2.531,2.259 -5.929,3.436 Q 471.078,1 467.547,1 v 0 q -7.281,0 -11.688,-3.857 -4.406,-3.856 -4.406,-10.151 z m 16.094,8.836 v 0 q 5.031,0 9.203,-3.811 v 0 l -12.141,-14.468 -1.125,0.81 q -5.703,4.188 -5.703,8.625 v 0 q 0,4.017 2.61,6.431 2.609,2.413 7.156,2.413 z m -5.703,-33.962 v 0 q 0,3.269 4.031,8.172 v 0 l 4.031,-2.817 q 2.328,-1.635 3.18,-3.114 0.852,-1.478 0.852,-3.596 v 0 q 0,-2.288 -1.704,-3.798 -1.703,-1.51 -4.312,-1.51 v 0 q -2.797,0 -4.438,1.892 -1.64,1.891 -1.64,4.771 z M 534.547,0 h -13.766 v -50 h 14.047 q 6.485,0 11.477,2.881 4.992,2.88 7.711,8.21 2.718,5.33 2.75,12.221 v 0 3.203 q 0,7.064 -2.719,12.386 -2.719,5.322 -7.758,8.179 Q 541.25,-0.063 534.547,0 Z M 535,-44.594 h -7.656 v 39.235 h 6.906 q 7.578,0 11.805,-4.747 4.226,-4.748 4.226,-13.519 v 0 -2.923 q 0,-8.52 -3.984,-13.251 -3.984,-4.732 -11.297,-4.795 z M 600.016,0 595.25,-12.594 H 574.406 L 569.719,0 h -6.766 l 19.016,-50 h 5.734 L 606.734,0 Z M 584.828,-41.868 576.391,-18 h 16.922 z M 647.156,-50 v 5.406 H 631.172 V 0 h -6.531 V -44.594 H 608.672 V -50 Z m 38.86,50 -4.766,-12.594 H 660.406 L 655.719,0 h -6.766 l 19.016,-50 h 5.734 L 692.734,0 Z M 670.828,-41.868 662.391,-18 h 16.922 z M 750.219,-27 v 5.359 H 729.344 V 0 h -6.563 v -50 h 30.828 v 5.406 H 729.344 V -27 Z M 791.016,0 786.25,-12.594 H 765.406 L 760.719,0 h -6.766 l 19.016,-50 h 5.734 L 797.734,0 Z M 775.828,-41.868 767.391,-18 h 16.922 z m 60.953,26.384 h 6.61 q -0.938,7.906 -5.836,12.195 Q 832.656,1 824.516,1 v 0 q -8.813,0 -14.133,-6.311 -5.32,-6.31 -5.32,-16.875 v 0 -4.768 q 0,-6.919 2.484,-12.17 2.484,-5.251 7.023,-8.063 Q 819.109,-50 825.094,-50 v 0 q 7.937,0 12.719,4.43 4.781,4.429 5.578,12.257 v 0 h -6.61 q -0.843,-5.953 -3.703,-8.617 -2.859,-2.664 -7.984,-2.664 v 0 q -6.281,0 -9.852,4.632 -3.57,4.633 -3.57,13.181 v 0 4.796 q 0,8.081 3.383,12.845 3.383,4.765 9.461,4.765 v 0 q 5.468,0 8.39,-2.477 2.922,-2.476 3.875,-8.632 z M 861.813,-50 V 0 h -6.563 v -50 z m 21.562,0 v 44.641 h 23.578 V 0 h -30.172 v -50 z m 40.438,0 V 0 h -6.563 v -50 z m 48.343,0 v 5.406 H 956.172 V 0 h -6.531 V -44.594 H 933.672 V -50 Z m 12.875,0 12.922,25.102 12.985,-25.102 h 7.453 l -17.157,31.35 V 0 h -6.562 V -18.65 L 977.516,-50 Z" + id="path4941" /> + </g> + </g> +</svg> diff --git a/assets/logos/nomad-infrastructure.svg b/assets/logos/nomad-infrastructure.svg new file mode 100644 index 0000000000000000000000000000000000000000..a1081d68cab0cea475fc9abb374532ba46bddc18 --- /dev/null +++ b/assets/logos/nomad-infrastructure.svg @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 27.5.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 2500 560" style="enable-background:new 0 0 2500 560;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#192E86;stroke:#192E86;stroke-width:38.9717;stroke-miterlimit:10;} + .st1{fill:#2A4CDF;stroke:#2A4CDF;stroke-width:38.9717;stroke-miterlimit:10;} + .st2{fill:#2A4CDF;} +</style> +<g> + <path class="st0" d="M359.7,240.2c43.5,0,78.7-35.2,78.7-78.7c0-43.5-35.2-78.7-78.7-78.7c-43.5,0-78.7,35.2-78.7,78.7 + C281,205,316.3,240.2,359.7,240.2z"/> + <path class="st1" d="M415.5,330.3c-30.8-30.8-80.7-30.8-111.5,0c-28.8,28.8-74.4,30.8-105.6,5.5c-1.9-2.3-3.9-4.7-5.8-6.6 + c-30.8-30.8-30.8-80.7,0-111.5s30.8-80.7,0-111.5c-30.8-30.8-80.7-30.8-111.5,0c-30.8,30.8-30.8,80.7,0,111.5s30.8,80.7,0,111.5 + c-18.3,18.3-25.7,43.6-22.2,67.4c1.9,16.8,9.7,32.7,22.6,45.6c30.8,30.8,80.7,30.8,111.5,0c30.8-30.8,80.7-30.8,111.5,0 + c30.8,30.8,80.7,30.8,111.5,0C446.3,410.9,446.3,361.1,415.5,330.3z"/> + <path class="st2" d="M519.9,468.2c0-62,0-124.7,0-188.2s0-126.3,0-188.2c16.4,0,32.7,0,49.1,0s32.7,0,48.3,0 + c19.5,35.1,39.4,70.5,59.6,106.4s39.8,71.3,59.6,106.4c0-35.1,0-70.5,0-106.4s0-71.3,0-106.4c16,0,31.6,0,47.5,0s31.6,0,47.5,0 + c0,62,0,124.7,0,188.2s0,126.3,0,188.2c-16,0-32,0-48.3,0c-16.4,0-32.7,0-49.1,0c-19.5-35.1-39.4-70.5-59.6-106.4 + c-20.3-35.9-39.8-71.3-59.6-106.4c0,35.1,0,70.5,0,106.4s0,71.3,0,106.4c-16,0-31.6,0-47.5,0C551.9,468.2,535.9,468.2,519.9,468.2z + "/> + <path class="st2" d="M1053.4,477.2c-26.9,0-51.8-5.1-74.8-14.8c-23-9.7-42.5-23.4-59.2-41.3c-16.8-17.5-29.6-38.6-38.6-62.7 + c-9.4-24.2-14-50.3-14-78.7s4.7-54.6,14-78.7c9.4-24.2,22.2-44.8,38.6-62.4c16.8-17.5,36.2-31.2,59.2-40.9 + c23-9.7,47.9-14.8,74.8-14.8c26.9,0,51.8,5.1,74.4,14.8c22.6,9.7,42.5,23.4,59.2,40.9s29.6,38.2,39,62.4 + c9.4,24.2,13.6,50.3,13.6,78.7s-4.7,54.6-13.6,78.7c-9.4,24.2-22.2,45.2-39,62.7s-36.6,31.6-59.2,41.3 + C1105.3,472.1,1080.3,477.2,1053.4,477.2z M1053.4,387.6c17.9,0,33.5-4.7,46.4-13.6c12.9-9,23-21.8,30-37.8 + c7-16.4,10.9-35.1,10.9-56.5c0-21.4-3.5-40.1-10.9-55.7c-7-16-17.1-28.4-30-37.4c-12.9-9-28.4-13.6-46.4-13.6 + c-17.5,0-33.1,4.3-46.4,13.3c-13.3,9-23.4,21.4-30.4,37.4c-7,16-10.9,34.7-10.9,56.1c0,21.4,3.5,40.1,10.9,56.5 + c7,16.4,17.1,28.8,30.4,37.8C1020.3,382.9,1035.9,387.6,1053.4,387.6z"/> + <path class="st2" d="M1275.2,468.2c0-62,0-124.7,0-188.2s0-126.3,0-188.2c23,0,46,0,69.4,0s46.4,0,69.4,0 + c10.5,37.8,21.4,75.6,32,114.2s21,76.8,31.2,114.2c10.1-37.8,20.7-75.6,31.2-114.2c10.5-38.6,21-76.8,31.2-114.2 + c23,0,45.6,0,68.6,0c23,0,45.6,0,68.2,0c0.4,62,0.8,124.7,1.2,188.2c0.4,63.5,0.8,126.3,1.2,188.2c-15.6,0-31.2,0-46.8,0 + c-15.6,0-31.2,0-46.8,0c0-42.1,0-84.6,0-127.4s0-85.3,0-127.4c-10.9,42.1-22.2,84.6-33.9,127.4c-11.3,42.9-22.6,85.3-33.9,127.4 + c-13.6,0-27.7,0-41.7,0c-14,0-28.4,0-42.5,0c-10.9-41.3-22.2-83-33.1-125.5c-10.9-42.1-22.2-84.2-33.1-125.5c0,41.3,0,83,0,125.5 + c0,42.1,0,84.2,0,125.5c-14.8,0-30,0-45.2,0C1306,468.2,1290.4,468.2,1275.2,468.2z"/> + <path class="st2" d="M1714,468.2c19.1-62,38.6-124.7,57.7-188.2c19.5-63.5,38.6-126.3,57.7-188.2c21.8,0,43.6,0,66.3,0 + c22.2,0,44.4,0,66.3,0c19.1,62,38.6,124.7,57.7,188.2c19.5,63.5,38.6,126.3,57.7,188.2c-16,0-32,0-48.3,0s-32.7,0-49.1,0 + c-3.5-11.7-7-23.8-10.5-35.9c-3.5-12.1-7-23.8-10.5-35.9c-21,0-42.1,0-63.5,0c-21,0-42.5,0-63.5,0c-3.5,11.7-7,23.8-10.5,35.9 + s-7,23.8-10.5,35.9c-16,0-32,0-48.3,0C1746.7,468.2,1730.4,468.2,1714,468.2z M1857,314.3c12.9,0,25.7,0,39,0c13.3,0,26.1,0,39,0 + c-6.2-21.8-12.9-43.6-19.5-65.9s-13.3-44-19.5-65.9c-6.2,21.8-12.9,43.6-19.5,65.9C1869.9,270.6,1863.3,292.9,1857,314.3z"/> + <path class="st2" d="M2119.3,468.2c0-62,0-124.7,0-188.2s0-126.3,0-188.2c22.2,0,44.4,0,67,0c22.6,0,44.8,0,67,0 + c27.3,0,52.2,4.7,75.2,14c23,9.4,42.9,22.6,59.6,39.8c17.1,17.1,30,36.6,39.8,59.6c9.4,22.6,14,47.5,14,74.4s-4.7,51.8-14,74.8 + c-9.4,23-22.6,42.9-39.8,60s-37,30.4-59.6,39.8c-23,9.4-47.9,14-75.2,14c-22.2,0-44.4,0-67,0 + C2163.7,468.2,2141.5,468.2,2119.3,468.2z M2253.4,179.5c-5.8,0-12.1,0-18.3,0c-6.2,0-12.5,0-18.7,0c0,33.1,0,66.6,0,100.5 + s0,67.4,0,100.5c6.2,0,12.5,0,18.7,0c6.2,0,12.5,0,18.3,0c18.3,0,34.7-4.3,48.3-13.3c13.6-9,24.2-21,31.6-36.2 + c7.4-15.2,10.9-32.7,10.9-51.8s-3.5-36.2-10.9-51.4c-7.4-15.2-17.9-26.9-31.6-35.9C2287.7,183.7,2271.7,179.5,2253.4,179.5z"/> +</g> +</svg> diff --git a/assets/logos/nomad.svg b/assets/logos/nomad.svg new file mode 100644 index 0000000000000000000000000000000000000000..1f38c509048ea8b6872171b3f270a1b3a593d921 --- /dev/null +++ b/assets/logos/nomad.svg @@ -0,0 +1,300 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/"> +]> +<svg version="1.1" + xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" + x="0px" y="0px" width="425px" height="227px" viewBox="-36.073 -17.643 425 227" enable-background="new -36.073 -17.643 425 227" + xml:space="preserve"> +<defs> +</defs> +<polygon fill="#17A5F7" points="109.873,49.391 98.234,37.752 93.973,53.652 105.613,65.293 "/> +<polygon fill="#17A5F7" points="89.711,69.549 78.072,57.91 73.811,73.811 85.451,85.451 "/> +<polygon fill="#17A5F7" points="137.412,56.77 125.773,45.131 121.512,61.031 133.152,72.67 "/> +<polygon fill="#17A5F7" points="117.25,76.928 105.611,65.289 101.35,81.189 112.99,92.828 "/> +<polygon fill="#17A5F7" points="164.951,64.146 153.313,52.508 149.051,68.408 160.691,80.049 "/> +<polygon fill="#17A5F7" points="144.789,84.305 133.15,72.666 128.889,88.566 140.529,100.207 "/> +<polygon fill="#17A5F7" points="192.491,71.525 180.852,59.887 176.59,75.787 188.231,87.426 "/> +<polygon fill="#17A5F7" points="172.328,91.684 160.689,80.045 156.428,95.945 168.068,107.584 "/> +<polygon fill="#17A5F7" points="220.03,78.902 208.392,67.264 204.13,83.164 215.771,94.805 "/> +<polygon fill="#17A5F7" points="199.868,99.061 188.229,87.422 183.968,103.322 195.608,114.963 "/> +<polygon fill="#17A5F7" points="247.569,86.281 235.931,74.643 231.669,90.543 243.31,102.182 "/> +<polygon fill="#17A5F7" points="227.407,106.439 215.769,94.801 211.507,110.701 223.147,122.341 "/> +<polygon fill="#17A5F7" points="97.09,97.09 85.451,85.451 81.189,101.352 92.83,112.99 "/> +<polygon fill="#17A5F7" points="124.629,104.467 112.99,92.828 108.729,108.729 120.369,120.37 "/> +<polygon fill="#17A5F7" points="152.168,111.846 140.529,100.207 136.268,116.108 147.908,127.747 "/> +<polygon fill="#17A5F7" points="179.707,119.224 168.068,107.584 163.807,123.485 175.447,135.126 "/> +<polygon fill="#17A5F7" points="207.247,126.603 195.608,114.963 191.347,130.864 202.987,142.503 "/> +<polygon fill="#17A5F7" points="226.837,136.11 221.017,130.292 218.886,138.241 224.706,144.062 "/> +<polygon fill="#17A5F7" points="254.382,143.499 248.562,137.679 246.431,145.63 252.251,151.448 "/> +<polygon fill="#17A5F7" points="342.405,90.396 336.585,84.576 334.454,92.527 340.274,98.346 "/> +<polygon fill="#17A5F7" points="300.106,27.936 294.288,22.115 292.157,30.066 297.978,35.885 "/> +<polygon fill="#17A5F7" points="275.108,93.658 263.47,82.02 259.208,97.92 270.849,109.561 "/> +<polygon fill="#17A5F7" points="254.946,113.816 243.308,102.178 239.046,118.079 250.687,129.72 "/> +<polygon fill="#17A5F7" points="302.647,101.037 291.009,89.398 286.747,105.299 298.388,116.938 "/> +<polygon fill="#17A5F7" points="282.485,121.196 270.847,109.557 266.585,125.458 278.226,137.097 "/> +<polygon fill="#17A5F7" points="169.785,18.58 163.965,12.762 161.834,20.711 167.654,26.531 "/> +<polygon fill="#17A5F7" points="122.084,31.359 116.266,25.541 114.135,33.49 119.955,39.311 "/> +<polygon fill="#17A5F7" points="138.271,12.266 135.361,9.355 134.295,13.33 137.205,16.24 "/> +<polygon fill="#17A5F7" points="90.57,25.047 87.66,22.137 86.596,26.111 89.506,29.021 "/> +<polygon fill="#17A5F7" points="63.031,17.67 60.121,14.76 59.055,18.734 61.965,21.645 "/> +<polygon fill="#17A5F7" points="7.951,2.91 5.041,0 3.977,3.975 6.887,6.885 "/> +<polygon fill="#17A5F7" points="15.328,30.449 12.418,27.539 11.354,31.514 14.264,34.424 "/> +<polygon fill="#17A5F7" points="30.086,85.525 27.176,82.615 26.111,86.59 29.021,89.5 "/> +<polygon fill="#17A5F7" points="37.465,113.064 34.555,110.154 33.49,114.129 36.4,117.04 "/> +<polygon fill="#17A5F7" points="65.006,120.448 62.096,117.538 61.029,121.513 63.939,124.423 "/> +<polygon fill="#17A5F7" points="92.545,127.669 89.635,124.759 88.57,128.733 91.48,131.644 "/> +<polygon fill="#17A5F7" points="120.086,135.208 117.176,132.298 116.109,136.272 119.02,139.183 "/> +<polygon fill="#17A5F7" points="202.704,157.345 199.794,154.435 198.729,158.409 201.64,161.319 "/> +<polygon fill="#17A5F7" points="241.052,14.242 238.142,11.332 237.077,15.307 239.987,18.217 "/> +<polygon fill="#17A5F7" points="268.593,21.623 265.683,18.713 264.618,22.688 267.528,25.598 "/> +<polygon fill="#17A5F7" points="331.052,63.922 328.142,61.012 327.077,64.986 329.987,67.896 "/> +<polygon fill="#17A5F7" points="318.269,111.621 315.358,108.711 314.294,112.686 317.204,115.597 "/> +<polygon fill="#17A5F7" points="46.842,36.762 41.023,30.943 38.893,38.893 44.713,44.713 "/> +<polygon fill="#17A5F7" points="74.383,43.986 68.564,38.168 66.434,46.117 72.254,51.938 "/> +<polygon fill="#17A5F7" points="34.061,58.9 28.242,53.08 26.111,61.031 31.932,66.85 "/> +<polygon fill="#17A5F7" points="54.221,64.299 48.402,58.48 46.271,66.43 52.092,72.25 "/> +<polygon fill="#17A5F7" points="151.6,141.521 145.779,135.7 143.648,143.651 149.469,149.47 "/> +<polygon fill="#17A5F7" points="61.6,91.84 55.781,86.021 53.65,93.971 59.471,99.791 "/> +<polygon fill="#17A5F7" points="157.572,36.607 145.934,24.969 141.672,40.869 153.313,52.51 "/> +<polygon fill="#17A5F7" points="197.325,25.959 191.505,20.139 189.374,28.09 195.194,33.908 "/> +<polygon fill="#17A5F7" points="185.112,43.986 173.473,32.348 169.211,48.248 180.852,59.887 "/> +<polygon fill="#17A5F7" points="224.864,33.336 219.044,27.518 216.913,35.467 222.733,41.287 "/> +<polygon fill="#17A5F7" points="212.651,51.363 201.013,39.725 196.751,55.625 208.392,67.266 "/> +<polygon fill="#17A5F7" points="260.353,38.584 248.714,26.945 244.452,42.846 256.093,54.484 "/> +<polygon fill="#17A5F7" points="240.19,58.742 228.552,47.104 224.29,63.004 235.931,74.643 "/> +<polygon fill="#17A5F7" points="287.892,45.961 276.253,34.322 271.991,50.223 283.632,61.863 "/> +<polygon fill="#17A5F7" points="267.729,66.119 256.091,54.48 251.829,70.381 263.47,82.021 "/> +<polygon fill="#17A5F7" points="315.431,53.34 303.792,41.701 299.53,57.602 311.171,69.24 "/> +<polygon fill="#17A5F7" points="295.269,73.498 283.63,61.859 279.368,77.76 291.009,89.398 "/> +<polygon fill="#17A5F7" points="322.808,80.875 311.169,69.236 306.907,85.137 318.548,96.777 "/> +<polygon fill="#00C8C9" points="137.412,56.77 153.313,52.508 149.051,68.408 133.15,72.668 "/> +<polygon fill="#00C8C9" points="117.25,76.928 133.15,72.666 128.889,88.566 112.988,92.826 "/> +<polygon fill="#00C8C9" points="164.951,64.146 180.852,59.887 176.59,75.787 160.689,80.045 "/> +<polygon fill="#00C8C9" points="144.789,84.305 160.689,80.045 156.428,95.945 140.527,100.203 "/> +<polygon fill="#00C8C9" points="192.491,71.525 208.392,67.264 204.13,83.164 188.229,87.424 "/> +<polygon fill="#00C8C9" points="172.328,91.684 188.229,87.422 183.968,103.322 168.066,107.582 "/> +<polygon fill="#00C8C9" points="220.03,78.902 235.931,74.643 231.669,90.543 215.769,94.801 "/> +<polygon fill="#00C8C9" points="247.569,86.281 263.47,82.02 259.208,97.92 243.308,102.18 "/> +<polygon fill="#00C8C9" points="240.19,58.742 256.091,54.48 251.829,70.381 235.929,74.641 "/> +<polygon fill="#527DE3" points="117.252,76.93 105.611,65.289 121.512,61.031 133.152,72.67 "/> +<polygon fill="#527DE3" points="97.09,97.088 85.449,85.447 101.35,81.189 112.99,92.828 "/> +<polygon fill="#527DE3" points="144.791,84.309 133.15,72.668 149.051,68.408 160.691,80.049 "/> +<polygon fill="#527DE3" points="124.629,104.467 112.988,92.826 128.889,88.566 140.529,100.207 "/> +<polygon fill="#527DE3" points="172.33,91.686 160.689,80.045 176.59,75.787 188.231,87.426 "/> +<polygon fill="#527DE3" points="199.87,99.064 188.229,87.424 204.13,83.164 215.771,94.805 "/> +<polygon fill="#527DE3" points="227.409,106.441 215.769,94.801 231.669,90.543 243.31,102.182 "/> +<polygon fill="#527DE3" points="254.948,113.82 243.308,102.18 259.208,97.92 270.849,109.561 "/> +<polygon fill="#527DE3" points="220.03,78.902 208.39,67.262 224.29,63.004 235.931,74.643 "/> +<polygon fill="#527DE3" points="247.569,86.281 235.929,74.641 251.829,70.381 263.47,82.021 "/> +<polygon fill="#527DE3" points="275.108,93.658 263.468,82.018 279.368,77.76 291.009,89.398 "/> +<polygon fill="#00DFE0" points="82.334,42.014 98.234,37.752 93.973,53.652 78.072,57.912 "/> +<polygon fill="#00DFE0" points="62.172,62.172 78.072,57.91 73.811,73.811 57.91,78.07 "/> +<polygon fill="#00DFE0" points="109.873,49.391 125.773,45.131 121.512,61.031 105.611,65.289 "/> +<polygon fill="#00DFE0" points="89.711,69.549 105.611,65.289 101.35,81.189 85.449,85.447 "/> +<polygon fill="#00DFE0" points="199.868,99.061 215.769,94.801 211.507,110.701 195.606,114.959 "/> +<polygon fill="#00DFE0" points="69.551,89.711 85.451,85.451 81.189,101.352 65.289,105.609 "/> +<polygon fill="#00DFE0" points="97.09,97.09 112.99,92.828 108.729,108.729 92.828,112.988 "/> +<polygon fill="#00DFE0" points="124.629,104.467 140.529,100.207 136.268,116.108 120.367,120.366 "/> +<polygon fill="#00DFE0" points="152.168,111.846 168.068,107.584 163.807,123.485 147.906,127.745 "/> +<polygon fill="#00DFE0" points="179.707,119.224 195.608,114.963 191.347,130.864 175.445,135.122 "/> +<polygon fill="#00DFE0" points="213.067,132.421 221.017,130.292 218.886,138.241 210.937,140.37 "/> +<polygon fill="#00DFE0" points="240.612,139.81 248.562,137.679 246.431,145.63 238.481,147.759 "/> +<polygon fill="#00DFE0" points="328.636,86.707 336.585,84.576 334.454,92.527 326.505,94.656 "/> +<polygon fill="#00DFE0" points="286.337,24.246 294.288,22.115 292.157,30.066 284.206,32.195 "/> +<polygon fill="#00DFE0" points="227.407,106.439 243.308,102.178 239.046,118.079 223.146,122.339 "/> +<polygon fill="#00DFE0" points="275.108,93.658 291.009,89.398 286.747,105.299 270.847,109.557 "/> +<polygon fill="#00DFE0" points="254.946,113.816 270.847,109.557 266.585,125.458 250.685,129.716 "/> +<polygon fill="#00DFE0" points="156.016,14.891 163.965,12.762 161.834,20.711 153.885,22.84 "/> +<polygon fill="#00DFE0" points="108.314,27.67 116.266,25.541 114.135,33.49 106.184,35.619 "/> +<polygon fill="#00DFE0" points="131.387,10.42 135.361,9.355 134.295,13.33 130.32,14.395 "/> +<polygon fill="#00DFE0" points="83.686,23.201 87.66,22.137 86.596,26.111 82.619,27.176 "/> +<polygon fill="#00DFE0" points="56.146,15.824 60.121,14.76 59.055,18.734 55.08,19.799 "/> +<polygon fill="#00DFE0" points="1.066,1.064 5.041,0 3.977,3.975 0,5.039 "/> +<polygon fill="#00DFE0" points="8.443,28.604 12.418,27.539 11.354,31.514 7.377,32.578 "/> +<polygon fill="#00DFE0" points="23.201,83.68 27.176,82.615 26.111,86.59 22.135,87.654 "/> +<polygon fill="#00DFE0" points="30.58,111.219 34.555,110.154 33.49,114.129 29.514,115.194 "/> +<polygon fill="#00DFE0" points="58.121,118.603 62.096,117.538 61.029,121.513 57.055,122.577 "/> +<polygon fill="#00DFE0" points="85.66,125.823 89.635,124.759 88.57,128.733 84.594,129.798 "/> +<polygon fill="#00DFE0" points="113.201,133.362 117.176,132.298 116.109,136.272 112.135,137.337 "/> +<polygon fill="#00DFE0" points="195.819,155.499 199.794,154.435 198.729,158.409 194.753,159.474 "/> +<polygon fill="#00DFE0" points="234.167,12.396 238.142,11.332 237.077,15.307 233.101,16.371 "/> +<polygon fill="#00DFE0" points="261.708,19.777 265.683,18.713 264.618,22.688 260.642,23.752 "/> +<polygon fill="#00DFE0" points="324.167,62.076 328.142,61.012 327.077,64.986 323.101,66.051 "/> +<polygon fill="#00DFE0" points="311.384,109.775 315.358,108.711 314.294,112.686 310.317,113.75 "/> +<polygon fill="#00DFE0" points="33.072,33.072 41.023,30.943 38.893,38.893 30.941,41.021 "/> +<polygon fill="#00DFE0" points="60.613,40.297 68.564,38.168 66.434,46.117 58.482,48.246 "/> +<polygon fill="#00DFE0" points="20.291,55.211 28.242,53.08 26.111,61.031 18.16,63.16 "/> +<polygon fill="#00DFE0" points="40.451,60.609 48.402,58.48 46.271,66.43 38.32,68.559 "/> +<polygon fill="#00DFE0" points="137.83,137.831 145.779,135.7 143.648,143.651 135.699,145.78 "/> +<polygon fill="#00DFE0" points="47.83,88.15 55.781,86.021 53.65,93.971 45.699,96.1 "/> +<polygon fill="#00DFE0" points="130.033,29.23 145.934,24.969 141.672,40.869 125.771,45.129 "/> +<polygon fill="#00DFE0" points="183.556,22.27 191.505,20.139 189.374,28.09 181.424,30.219 "/> +<polygon fill="#00DFE0" points="157.572,36.607 173.473,32.348 169.211,48.248 153.311,52.506 "/> +<polygon fill="#00DFE0" points="211.095,29.646 219.044,27.518 216.913,35.467 208.964,37.596 "/> +<polygon fill="#00DFE0" points="185.112,43.986 201.013,39.725 196.751,55.625 180.85,59.885 "/> +<polygon fill="#00DFE0" points="232.813,31.205 248.714,26.945 244.452,42.846 228.552,47.104 "/> +<polygon fill="#00DFE0" points="212.651,51.363 228.552,47.104 224.29,63.004 208.39,67.262 "/> +<polygon fill="#00DFE0" points="260.353,38.584 276.253,34.322 271.991,50.223 256.091,54.482 "/> +<polygon fill="#00DFE0" points="287.892,45.961 303.792,41.701 299.53,57.602 283.63,61.859 "/> +<polygon fill="#00DFE0" points="267.729,66.119 283.63,61.859 279.368,77.76 263.468,82.018 "/> +<polygon fill="#00DFE0" points="295.269,73.498 311.169,69.236 306.907,85.137 291.007,89.396 "/> +<polygon fill="#4472DB" points="89.713,69.553 78.072,57.912 93.973,53.652 105.613,65.293 "/> +<polygon fill="#4472DB" points="69.551,89.711 57.91,78.07 73.811,73.811 85.451,85.451 "/> +<polygon fill="#4472DB" points="152.168,111.844 140.527,100.203 156.428,95.945 168.068,107.584 "/> +<polygon fill="#4472DB" points="179.707,119.224 168.066,107.582 183.968,103.322 195.608,114.963 "/> +<polygon fill="#4472DB" points="207.247,126.601 195.606,114.959 211.507,110.701 223.147,122.341 "/> +<polygon fill="#4472DB" points="76.93,117.251 65.289,105.609 81.189,101.352 92.83,112.99 "/> +<polygon fill="#4472DB" points="104.469,124.63 92.828,112.988 108.729,108.729 120.369,120.37 "/> +<polygon fill="#4472DB" points="132.008,132.007 120.367,120.366 136.268,116.108 147.908,127.747 "/> +<polygon fill="#4472DB" points="159.547,139.386 147.906,127.745 163.807,123.485 175.447,135.126 "/> +<polygon fill="#4472DB" points="187.087,146.763 175.445,135.122 191.347,130.864 202.987,142.503 "/> +<polygon fill="#4472DB" points="216.757,146.19 210.937,140.37 218.886,138.241 224.706,144.062 "/> +<polygon fill="#4472DB" points="244.302,153.579 238.481,147.759 246.431,145.63 252.251,151.448 "/> +<polygon fill="#4472DB" points="332.325,100.477 326.505,94.656 334.454,92.527 340.274,98.346 "/> +<polygon fill="#4472DB" points="290.026,38.016 284.206,32.195 292.157,30.066 297.978,35.885 "/> +<polygon fill="#4472DB" points="234.786,133.979 223.146,122.339 239.046,118.079 250.687,129.72 "/> +<polygon fill="#4472DB" points="282.487,121.198 270.847,109.557 286.747,105.299 298.388,116.938 "/> +<polygon fill="#4472DB" points="262.325,141.356 250.685,129.716 266.585,125.458 278.226,137.097 "/> +<polygon fill="#4472DB" points="159.705,28.66 153.885,22.84 161.834,20.711 167.654,26.531 "/> +<polygon fill="#4472DB" points="112.004,41.439 106.184,35.619 114.135,33.49 119.955,39.311 "/> +<polygon fill="#4472DB" points="133.23,17.305 130.32,14.395 134.295,13.33 137.205,16.24 "/> +<polygon fill="#4472DB" points="85.529,30.086 82.619,27.176 86.596,26.111 89.506,29.021 "/> +<polygon fill="#4472DB" points="57.99,22.709 55.08,19.799 59.055,18.734 61.965,21.645 "/> +<polygon fill="#4472DB" points="2.91,7.949 0,5.039 3.977,3.975 6.887,6.885 "/> +<polygon fill="#4472DB" points="10.287,35.488 7.377,32.578 11.354,31.514 14.264,34.424 "/> +<polygon fill="#4472DB" points="25.045,90.564 22.135,87.654 26.111,86.59 29.021,89.5 "/> +<polygon fill="#4472DB" points="32.424,118.104 29.514,115.194 33.49,114.129 36.4,117.04 "/> +<polygon fill="#4472DB" points="59.965,125.487 57.055,122.577 61.029,121.513 63.939,124.423 "/> +<polygon fill="#4472DB" points="87.504,132.708 84.594,129.798 88.57,128.733 91.48,131.644 "/> +<polygon fill="#4472DB" points="115.045,140.247 112.135,137.337 116.109,136.272 119.02,139.183 "/> +<polygon fill="#4472DB" points="197.663,162.384 194.753,159.474 198.729,158.409 201.64,161.319 "/> +<polygon fill="#4472DB" points="236.011,19.281 233.101,16.371 237.077,15.307 239.987,18.217 "/> +<polygon fill="#4472DB" points="263.552,26.662 260.642,23.752 264.618,22.688 267.528,25.598 "/> +<polygon fill="#4472DB" points="326.011,68.961 323.101,66.051 327.077,64.986 329.987,67.896 "/> +<polygon fill="#4472DB" points="313.228,116.661 310.317,113.75 314.294,112.686 317.204,115.597 "/> +<polygon fill="#4472DB" points="36.762,46.842 30.941,41.021 38.893,38.893 44.713,44.713 "/> +<polygon fill="#4472DB" points="64.303,54.066 58.482,48.246 66.434,46.117 72.254,51.938 "/> +<polygon fill="#4472DB" points="23.98,68.98 18.16,63.16 26.111,61.031 31.932,66.85 "/> +<polygon fill="#4472DB" points="44.141,74.379 38.32,68.559 46.271,66.43 52.092,72.25 "/> +<polygon fill="#4472DB" points="141.52,151.601 135.699,145.78 143.648,143.651 149.469,149.47 "/> +<polygon fill="#4472DB" points="51.52,101.92 45.699,96.1 53.65,93.971 59.471,99.791 "/> +<polygon fill="#4472DB" points="137.412,56.77 125.771,45.129 141.672,40.869 153.313,52.51 "/> +<polygon fill="#4472DB" points="187.245,36.039 181.424,30.219 189.374,28.09 195.194,33.908 "/> +<polygon fill="#4472DB" points="164.951,64.146 153.311,52.506 169.211,48.248 180.852,59.887 "/> +<polygon fill="#4472DB" points="214.784,43.416 208.964,37.596 216.913,35.467 222.733,41.287 "/> +<polygon fill="#4472DB" points="192.491,71.525 180.85,59.885 196.751,55.625 208.392,67.266 "/> +<polygon fill="#4472DB" points="240.192,58.744 228.552,47.104 244.452,42.846 256.093,54.484 "/> +<polygon fill="#4472DB" points="267.731,66.123 256.091,54.482 271.991,50.223 283.632,61.863 "/> +<polygon fill="#4472DB" points="295.271,73.5 283.63,61.859 299.53,57.602 311.171,69.24 "/> +<polygon fill="#4472DB" points="302.647,101.037 291.007,89.396 306.907,85.137 318.548,96.777 "/> +<path fill="#4472DB" d="M1.465,191.705V174.12h1.055l9.918,11.02v-11.02h3.166v17.585h-1.161l-9.813-10.903v10.903H1.465z"/> +<path fill="#4472DB" d="M20.244,189.179c-1.513-1.684-2.269-3.773-2.269-6.266c0-2.502,0.756-4.592,2.269-6.272 + c1.512-1.681,3.394-2.521,5.645-2.521s4.132,0.84,5.645,2.521c1.512,1.681,2.268,3.771,2.268,6.272c0,2.501-0.756,4.592-2.268,6.272 + c-1.513,1.68-3.394,2.52-5.645,2.52S21.756,190.863,20.244,189.179z M25.9,188.423c1.399,0,2.539-0.527,3.418-1.582 + c0.879-1.057,1.319-2.365,1.319-3.928c0-1.563-0.44-2.873-1.319-3.928c-0.879-1.055-2.026-1.583-3.439-1.583 + c-1.4,0-2.54,0.528-3.419,1.583s-1.319,2.364-1.319,3.928c0,1.563,0.439,2.871,1.319,3.928 + C23.339,187.896,24.486,188.423,25.9,188.423z"/> +<path fill="#4472DB" d="M37.049,174.12l4.495,12.883l4.579-12.883h3.376l-6.32,17.585h-3.165l-6.341-17.585H37.049z"/> +<path fill="#4472DB" d="M51.544,191.705v-17.574l11.627-0.011v3.282h-8.462v3.752h6.341v3.271h-6.341v3.998h8.441v3.282H51.544z"/> +<path fill="#4472DB" d="M69.879,174.12v14.303h8.441v3.282H66.714V174.12H69.879z"/> +<path fill="#4472DB" d="M88.853,191.705V174.12h1.055l6.859,8.675l6.869-8.675h1.055v17.585h-3.166l-0.011-10.199l-4.748,5.861 + l-4.749-5.861v10.199H88.853z"/> +<path fill="#4472DB" d="M107.011,191.705l6.331-17.585h3.166l6.32,17.572l-3.366,0.013l-0.949-2.696h-7.175l-0.95,2.696H107.011z + M115.009,178.81l-2.405,6.682h4.748L115.009,178.81z"/> +<path fill="#4472DB" d="M134.864,174.12v3.282h-5.275v14.303h-3.166v-14.303h-5.275v-3.282H134.864z"/> +<path fill="#4472DB" d="M137.283,191.705v-17.574l11.627-0.011v3.282h-8.462v3.752h6.341v3.271h-6.341v3.998h8.441v3.282H137.283z" + /> +<path fill="#4472DB" d="M161.732,184.038l3.946,7.667h-3.629l-3.788-7.269h-2.891v7.269h-3.165V174.12h6.9 + c3.693,0,5.54,1.688,5.54,5.064C164.645,181.725,163.674,183.342,161.732,184.038z M155.37,181.154h4.432 + c1.273-0.023,1.928-0.668,1.962-1.936c-0.035-1.156-0.679-1.757-1.931-1.805h-4.463V181.154z"/> +<path fill="#4472DB" d="M168.19,174.108h3.155v17.597h-3.155V174.108z"/> +<path fill="#4472DB" d="M173.795,191.705l6.331-17.585h3.166l6.32,17.572l-3.366,0.013l-0.949-2.696h-7.176l-0.95,2.696H173.795z + M181.793,178.81l-2.405,6.682h4.749L181.793,178.81z"/> +<path fill="#4472DB" d="M194.956,174.12v14.303h8.441v3.282h-11.605V174.12H194.956z"/> +<path fill="#4472DB" d="M214.464,174.705c0.809,0.392,1.564,0.979,2.268,1.76l-2.11,2.345c-0.703-0.938-1.688-1.407-2.954-1.407 + c-1.266,0-2.074,0.332-2.427,0.997c-0.352,0.664-0.352,1.23,0,1.7c0.353,0.469,1.161,0.82,2.427,1.055 + c1.336,0.156,2.55,0.645,3.641,1.466c1.09,0.819,1.636,2.129,1.636,3.927c0,1.407-0.583,2.618-1.747,3.634 + c-1.164,1.017-2.52,1.524-4.067,1.524c-1.471,0-2.697-0.234-3.683-0.703c-0.984-0.469-1.828-1.095-2.532-1.876l2.11-2.345 + c0.703,0.938,1.899,1.485,3.588,1.642c1.406,0,2.283-0.332,2.632-0.996c0.349-0.665,0.349-1.329,0-1.993 + c-0.349-0.665-1.226-1.075-2.632-1.231c-1.266-0.156-2.427-0.587-3.482-1.289c-1.055-0.704-1.583-1.916-1.583-3.635 + c0-1.556,0.601-2.805,1.799-3.746c1.199-0.941,2.434-1.412,3.699-1.412C212.515,174.12,213.654,174.315,214.464,174.705z"/> +<path fill="#4472DB" d="M227.696,191.705v-17.597h6.1c4.924,0,7.385,2.935,7.385,8.805c0,5.86-2.461,8.792-7.385,8.792H227.696z + M233.796,188.199c2.806-0.007,4.213-1.771,4.221-5.286c-0.008-3.519-1.415-5.276-4.221-5.276h-2.934v10.563H233.796z"/> +<path fill="#4472DB" d="M244.362,174.108h3.155v17.597h-3.155V174.108z"/> +<path fill="#4472DB" d="M259.909,174.705c0.809,0.392,1.564,0.979,2.27,1.76l-2.11,2.345c-0.705-0.938-1.688-1.407-2.956-1.407 + c-1.265,0-2.074,0.332-2.426,0.997c-0.352,0.664-0.352,1.23,0,1.7c0.352,0.469,1.161,0.82,2.426,1.055 + c1.338,0.156,2.551,0.645,3.641,1.466c1.091,0.819,1.636,2.129,1.636,3.927c0,1.407-0.582,2.618-1.746,3.634 + c-1.164,1.017-2.521,1.524-4.067,1.524c-1.471,0-2.698-0.234-3.682-0.703c-0.986-0.469-1.83-1.095-2.532-1.876l2.109-2.345 + c0.703,0.938,1.899,1.485,3.587,1.642c1.407,0,2.285-0.332,2.633-0.996c0.349-0.665,0.349-1.329,0-1.993 + c-0.348-0.665-1.226-1.075-2.633-1.231c-1.266-0.156-2.427-0.587-3.481-1.289c-1.056-0.704-1.583-1.916-1.583-3.635 + c0-1.556,0.601-2.805,1.8-3.746s2.432-1.412,3.697-1.412C257.961,174.12,259.101,174.315,259.909,174.705z"/> +<path fill="#4472DB" d="M266.71,189.179c-1.516-1.676-2.274-3.777-2.274-6.302c0.007-2.47,0.767-4.546,2.279-6.23 + s3.387-2.526,5.624-2.526c2.258,0,4.196,0.78,5.813,2.345l-2.11,2.566c-1.076-0.938-2.311-1.407-3.703-1.407 + c-1.421,0.009-2.565,0.502-3.435,1.479s-1.304,2.228-1.304,3.751c0.008,1.634,0.447,2.931,1.32,3.894 + c0.871,0.961,2.019,1.441,3.439,1.441c1.42,0,2.647-0.466,3.682-1.396l2.11,2.567c-1.611,1.563-3.549,2.345-5.813,2.345 + C270.102,191.697,268.226,190.855,266.71,189.179z"/> +<path fill="#4472DB" d="M281.622,189.179c-1.512-1.684-2.268-3.773-2.268-6.266c0-2.502,0.756-4.592,2.268-6.272 + c1.513-1.681,3.395-2.521,5.646-2.521s4.133,0.84,5.645,2.521c1.513,1.681,2.269,3.771,2.269,6.272c0,2.501-0.756,4.592-2.269,6.272 + c-1.512,1.68-3.394,2.52-5.645,2.52S283.135,190.863,281.622,189.179z M287.278,188.423c1.399,0,2.539-0.527,3.419-1.582 + c0.878-1.057,1.318-2.365,1.318-3.928c0-1.563-0.44-2.873-1.318-3.928c-0.88-1.055-2.026-1.583-3.44-1.583 + c-1.399,0-2.539,0.528-3.418,1.583c-0.88,1.055-1.319,2.364-1.319,3.928c0,1.563,0.439,2.871,1.319,3.928 + C284.718,187.896,285.864,188.423,287.278,188.423z"/> +<path fill="#4472DB" d="M298.535,174.12l4.495,12.883l4.579-12.883h3.377l-6.32,17.585H301.5l-6.342-17.585H298.535z"/> +<path fill="#4472DB" d="M313.139,191.705v-17.574l11.627-0.011v3.282h-8.463v3.752h6.342v3.271h-6.342v3.998h8.441v3.282H313.139z" + /> +<path fill="#4472DB" d="M337.913,184.038l3.945,7.667h-3.63l-3.788-7.269h-2.891v7.269h-3.165V174.12h6.9 + c3.693,0,5.54,1.688,5.54,5.064C340.825,181.725,339.854,183.342,337.913,184.038z M331.55,181.154h4.432 + c1.273-0.023,1.928-0.668,1.963-1.936c-0.035-1.156-0.68-1.757-1.931-1.805h-4.464V181.154z"/> +<path fill="#4472DB" d="M342.036,174.12h3.714l3.671,5.744l3.757-5.744h3.63l-5.804,8.793v8.792h-3.165v-8.792L342.036,174.12z"/> +<polygon fill="#4472DB" points="98.127,101.262 90.656,101.262 94.012,102.851 101.336,102.851 101.336,79.317 98.127,75.787 "/> +<polygon fill="#4472DB" points="124.025,60.173 124.025,101.262 121.286,101.262 124.042,102.851 126.727,102.851 126.727,62.999 + "/> +<polygon fill="#4472DB" points="116.555,84.642 96.879,62.999 93.146,60.173 116.555,85.922 "/> +<polygon fill="#FFFFFF" points="124.025,60.173 116.555,60.173 116.555,84.642 116.555,85.922 93.146,60.173 90.656,60.173 + 90.656,101.262 98.127,101.262 98.127,75.787 101.336,79.317 121.286,101.262 124.025,101.262 "/> +<path fill="none" d="M142.09,74.569c-2.035,2.417-3.051,5.416-3.051,8.997c0,3.58,1.016,6.58,3.051,8.996 + c0.207,0.246,0.425,0.471,0.645,0.692c1.544,0.914,3.319,1.375,5.33,1.375c3.238,0,5.875-1.209,7.91-3.625 + c2.035-2.418,3.053-5.416,3.053-8.997s-1.018-6.579-3.053-8.997c-0.207-0.246-0.425-0.471-0.645-0.692 + c-1.543-0.914-3.318-1.375-5.33-1.375C146.762,70.943,144.125,72.152,142.09,74.569z"/> +<path fill="#4472DB" d="M163.086,69.198c-1.014-1.115-2.108-2.049-3.265-2.841c0.438,0.401,0.866,0.826,1.281,1.281 + c3.5,3.85,5.25,8.639,5.25,14.368s-1.75,10.519-5.25,14.368s-7.854,5.773-13.061,5.773c-3.695,0-6.951-0.991-9.786-2.933 + c3.262,2.993,7.184,4.491,11.771,4.491c5.207,0,9.561-1.924,13.061-5.773s5.25-8.639,5.25-14.367 + C168.336,77.837,166.586,73.048,163.086,69.198z"/> +<path fill="#4472DB" d="M142.09,92.563c-2.035-2.416-3.051-5.416-3.051-8.996c0-3.581,1.016-6.58,3.051-8.997 + s4.672-3.626,7.91-3.626c2.011,0,3.786,0.461,5.33,1.375c-1.941-1.949-4.375-2.933-7.314-2.933c-3.238,0-5.875,1.209-7.91,3.625 + c-2.035,2.418-3.051,5.416-3.051,8.997s1.016,6.579,3.051,8.997c0.784,0.931,1.662,1.678,2.629,2.25 + C142.515,93.033,142.297,92.809,142.09,92.563z"/> +<path fill="#FFFFFF" d="M161.102,96.375c3.5-3.85,5.25-8.639,5.25-14.368s-1.75-10.519-5.25-14.368 + c-0.415-0.456-0.843-0.88-1.281-1.281c-3.264-2.992-7.189-4.492-11.78-4.492c-5.209,0-9.563,1.925-13.063,5.773 + c-3.5,3.85-5.248,8.639-5.248,14.368c0,5.712,1.748,10.497,5.248,14.354c1.017,1.121,2.115,2.06,3.276,2.854 + c2.835,1.942,6.091,2.933,9.786,2.933C153.249,102.148,157.602,100.225,161.102,96.375z M140.106,91.004 + c-2.035-2.418-3.051-5.416-3.051-8.997s1.016-6.579,3.051-8.997c2.035-2.416,4.672-3.625,7.91-3.625 + c2.938,0,5.373,0.984,7.314,2.933c0.22,0.221,0.438,0.446,0.645,0.692c2.035,2.418,3.053,5.416,3.053,8.997 + s-1.018,6.579-3.053,8.997c-2.035,2.416-4.672,3.625-7.91,3.625c-2.011,0-3.786-0.461-5.33-1.375 + C141.768,92.682,140.89,91.935,140.106,91.004z"/> +<polygon fill="#4472DB" points="179.49,101.262 172.02,101.262 174.044,102.851 181.515,102.851 181.515,79.904 179.49,77.43 "/> +<polygon fill="#4472DB" points="190.696,91.127 192.721,92.717 201.906,81.489 201.902,77.43 "/> +<path fill="#4472DB" d="M209.399,60.145c0,0.028,0,41.117,0,41.117h-7.471l2.023,1.589h7.471V61.762L209.399,60.145z"/> +<polygon fill="#4472DB" points="191.291,79.699 176.968,61.762 174.51,60.173 190.696,80.443 "/> +<path fill="#FFFFFF" d="M209.399,60.173c-0.008,0-2.49,0-2.49,0l-15.618,19.526l-0.595,0.744L174.51,60.173h-2.49v41.089h7.471 + V77.43l2.024,2.474l9.182,11.223l0.362-0.442l10.844-13.255l0.004,4.059l0.022,19.772h7.471V60.173z"/> +<polygon fill="none" points="237.677,86.745 233.432,74.755 229.072,86.745 "/> +<polygon fill="#4472DB" points="223.482,94.962 221.241,101.262 213.272,101.262 215.296,102.851 223.265,102.851 225.506,96.552 + 240.981,96.552 240.416,94.962 "/> +<polygon fill="#4472DB" points="252.624,102.851 237.708,61.762 235.685,60.173 250.6,101.234 242.79,101.261 244.681,102.851 "/> +<polygon fill="#4472DB" points="233.432,74.755 232.148,71.13 226.471,86.745 229.072,86.745 "/> +<path fill="#FFFFFF" d="M235.685,60.173h-7.471l-14.941,41.089h7.969l2.241-6.299h16.934l0.565,1.59l1.615,4.541 + c0.002,0.007,0.061,0.168,0.061,0.168l0.133,0l7.81-0.027L235.685,60.173z M232.148,71.13l1.283,3.625l4.245,11.989h-8.604h-2.602 + L232.148,71.13z"/> +<path fill="none" d="M263.963,69.98v23.092h4.899c6.624-0.018,9.944-4.136,9.961-12.354c-0.008-4.358-0.956-7.548-2.823-9.596 + c-1.401-0.757-3.104-1.142-5.114-1.142H263.963z"/> +<path fill="#4472DB" d="M263.963,69.98h6.923c2.011,0,3.713,0.385,5.114,1.142c-1.653-1.813-4.026-2.731-7.138-2.731h-6.923v24.681 + h2.023V69.98z"/> +<path fill="#4472DB" d="M281.001,64.315c3.521,3.394,5.293,8.853,5.293,16.402c0,13.697-5.812,20.544-17.432,20.544h-14.394 + l2.023,1.589h14.394c11.621,0,17.432-6.847,17.432-20.543C288.317,73.433,285.868,67.447,281.001,64.315z"/> +<path fill="#FFFFFF" d="M286.294,80.717c0-7.549-1.771-13.008-5.293-16.402c-2.875-2.772-6.914-4.17-12.139-4.17h-14.394v41.117 + h14.394C280.482,101.262,286.294,94.415,286.294,80.717z M261.939,68.391h6.923c3.111,0,5.484,0.918,7.138,2.731 + c1.867,2.047,2.815,5.238,2.823,9.596c-0.017,8.219-3.337,12.336-9.961,12.354h-4.899h-2.023V68.391z"/> +</svg> diff --git a/clustering_tutorial.ipynb b/clustering_tutorial.ipynb index 69eff4195abb8f4a0ec3cc85b3c69c1215d128db..1db18df9951a67db40b0762ddd659b2026474623 100644 --- a/clustering_tutorial.ipynb +++ b/clustering_tutorial.ipynb @@ -9,16 +9,36 @@ } }, "source": [ - "<img src=\"assets/clustering_tutorial/header.jpg\" width=\"900\"> " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "<img style=\"float: left;\" src=\"assets/clustering_tutorial/logo_MPG.png\" width=150>\n", - "<img style=\"float: left; margin-top: -10px\" src=\"assets/clustering_tutorial/logo_NOMAD.png\" width=250>\n", - "<img style=\"float: left; margin-top: -5px\" src=\"assets/clustering_tutorial/logo_HU.png\" width=130>" + "<div style=\"\n", + " background-color: #f7f7f7;\n", + " background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjcyIgogICBoZWlnaHQ9IjczIgogICB2aWV3Qm94PSIwIDAgNzIgNzMiCiAgIGZpbGw9Im5vbmUiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEzMTkiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczEzMjMiIC8+CiAgPHBhdGgKICAgICBkPSJNIC0wLjQ5OTk4NSwxNDUgQyAzOS41MzMsMTQ1IDcyLDExMi41MzIgNzIsNzIuNSA3MiwzMi40Njc4IDM5LjUzMywwIC0wLjQ5OTk4NSwwIC00MC41MzI5LDAgLTczLDMyLjQ2NzggLTczLDcyLjUgYyAwLDQwLjAzMiAzMi40NjcxLDcyLjUgNzIuNTAwMDE1LDcyLjUgeiIKICAgICBmaWxsPSIjMDA4YTY3IgogICAgIGZpbGwtb3BhY2l0eT0iMC4yNSIKICAgICBpZD0icGF0aDEzMTciIC8+Cjwvc3ZnPgo='), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjIxNyIKICAgaGVpZ2h0PSIyMjMiCiAgIHZpZXdCb3g9IjAgMCAyMTcgMjIzIgogICBmaWxsPSJub25lIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxMTA3IgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMxMTExIiAvPgogIDxwYXRoCiAgICAgZD0ibSAyMi4wNDIsNDUuMDEwOSBjIDIxLjM2MjUsMjEuMjc1NyA1NS45NzYsMjEuMjc1NyA3Ny41MTkyLDAgQyAxMTkuNTU4LDI1LjA4IDE1MS41MDIsMjMuNzM1MiAxNzIuODY0LDQxLjM3OCBjIDEuMzQ1LDEuNTI1NCAyLjY5LDMuMjUxNiA0LjIzNiw0Ljc5NzEgMjEuMzYzLDIxLjI3NTYgMjEuMzYzLDU1Ljc5ODkgMCw3Ny4yNTQ5IC0yMS4zNjIsMjEuMjc2IC0yMS4zNjIsNTUuNzk4IDAsNzcuMjU1IDIxLjM2MywyMS40NTYgNTUuOTc2LDIxLjI3NSA3Ny41MiwwIDIxLjU0MywtMjEuMjc2IDIxLjM2MiwtNTUuNzk5IDAsLTc3LjI1NSAtMjEuMzYzLC0yMS4yNzYgLTIxLjM2MywtNTUuNzk4NiAwLC03Ny4yNTQ5IDEyLjY4OSwtMTIuNjQ1IDE3Ljg4OSwtMzAuMTA3MSAxNS4zOTksLTQ2LjU4NTc2IC0xLjU0NiwtMTEuNTAwOTQgLTYuNzI2LC0yMi44MjExNCAtMTUuNTgsLTMxLjYzMjU0IC0yMS4zNjMsLTIxLjI3NTYgLTU1Ljk3NiwtMjEuMjc1NiAtNzcuNTE5LDAgLTIxLjM2MywyMS4yNzU3IC01NS45NzYsMjEuMjc1NyAtNzcuNTE5NCwwIC0yMS4zNjI1LC0yMS4yNzU2IC01NS45NzYxLC0yMS4yNzU2IC03Ny41MTkyLDAgQyAwLjY3OTU2NSwtMTAuNzg3NiAwLjY3OTU5NiwyMy43MzUyIDIyLjA0Miw0NS4wMTA5IFoiCiAgICAgZmlsbD0iIzJhNGNkZiIKICAgICBzdHJva2U9IiMyYTRjZGYiCiAgICAgc3Ryb2tlLXdpZHRoPSIxMiIKICAgICBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiCiAgICAgaWQ9InBhdGgxMTA1IiAvPgogIDxwYXRoCiAgICAgZD0ibSA1MS45OTUyMTIsMjIyLjczMDEzIGMgMjguMzU5MSwwIDUxLjM1ODM5OCwtMjIuOTk5OSA1MS4zNTgzOTgsLTUxLjM1ODQgMCwtMjguMzU4NiAtMjIuOTk5Mjk4LC01MS4zNTg1OSAtNTEuMzU4Mzk4LC01MS4zNTg1OSAtMjguMzU5MSwwIC01MS4zNTg2MDIsMjIuOTk5OTkgLTUxLjM1ODYwMiw1MS4zNTg1OSAwLDI4LjM1ODUgMjIuOTk5NTAyLDUxLjM1ODQgNTEuMzU4NjAyLDUxLjM1ODQgeiIKICAgICBmaWxsPSIjMTkyZTg2IgogICAgIGZpbGwtb3BhY2l0eT0iMC4zNSIKICAgICBpZD0icGF0aDE5MzciIC8+Cjwvc3ZnPgo=') ;\n", + " background-position: left bottom, right top;\n", + " background-repeat: no-repeat, no-repeat;\n", + " background-size: auto 60px, auto 160px;\n", + " border-radius: 5px;\n", + " box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0,0,0,.12);\">\n", + "\n", + "<h1 style=\"\n", + " color: #2a4cdf;\n", + " font-style: normal;\n", + " font-size: 4rem;\n", + " line-height: 1.4em;\n", + " font-weight: 4600;\n", + " padding: 30px 200px 0px 30px;\">\n", + " Introduction to clustering</h1>\n", + "\n", + "<p style=\"font-size: 1.25em; font-style: italic; padding: 5px 200px 30px 30px;\">\n", + " Luigi Sbailò and Luca M. Ghiringhelli\n", + "</p>\n", + "</div>\n", + "\n", + "<div style=\"margin: 10px;\">\n", + " <img style=\"float: left; margin: 5px 20px 0px 0px;\" src=\"assets/logos/hu-berlin.svg\" width=\"110\">\n", + " <img style=\"float: left; margin: 0px 20px 0px 0px;\" src=\"assets/logos/nomad.svg\" width=\"110\">\n", + " <img style=\"float: left; margin: 15px 20px 0px 0px;\" src=\"assets/logos/nomad-infrastructure.svg\" width=\"120\">\n", + " <img style=\"float: left; margin: 5px 20px 0px 10px;\" src=\"assets/logos/mpcdf.svg\" width=\"270\">\n", + "</div>\n", + "<p style=\"text-align: right; padding: 0px 10px 10px 0px;\">[Last updated: February, 2024]</p>\n" ] }, { @@ -75,17 +95,16 @@ }, "outputs": [], "source": [ - "from sklearn.datasets import make_blobs, make_moons\n", - "from sklearn.cluster import KMeans, DBSCAN\n", "import hdbscan\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", - "import matplotlib as mpl\n", + "\n", "from scipy.cluster.hierarchy import dendrogram, linkage, cut_tree\n", - "# here we set the style of the plots that will be shown below\n", - "plt.style.use('bmh')\n", - "plt.rcParams[\"figure.figsize\"] = (8,6)\n", - "title_size=24" + "from sklearn.datasets import make_blobs, make_moons\n", + "from sklearn.cluster import KMeans, DBSCAN\n", + "\n", + "# # here we set the style of the plots that will be shown below\n", + "plt.style.use(\"bmh\")" ] }, { @@ -147,21 +166,24 @@ "source": [ "# We set a random_state to generate always the same Gaussian sampling.\n", "random_state = 0\n", + "\n", "# The make_blobs function requires the centers, standard deviations and number of samples for each Gaussian to sample.\n", - "centers = [[10,7],[0,3],[-5,0],[3,0]]\n", - "n_samples = [500,200,300,100]\n", - "cluster_std=[1.5,1,1,0.5]\n", - " \n", - "X_blobs, y_blobs = make_blobs(n_samples=n_samples,\n", - " random_state=random_state,\n", - " cluster_std=cluster_std,\n", - " centers=centers)\n", - "\n", - "fig, axs = plt.subplots(1,2,figsize=[16,6])\n", - "axs[0].scatter(X_blobs[:,0],X_blobs[:,1],c=y_blobs)\n", - "axs[0].set_title('labeled blobs', size=title_size)\n", - "axs[1].scatter(X_blobs[:,0],X_blobs[:,1])\n", - "axs[1].set_title('dataset', size=title_size)\n", + "centers = [[10, 7], [0, 3], [-5, 0], [3, 0]]\n", + "n_samples = [500, 200, 300, 100]\n", + "cluster_std = [1.5, 1, 1, 0.5]\n", + "\n", + "X_blobs, y_blobs = make_blobs(\n", + " n_samples=n_samples,\n", + " random_state=random_state,\n", + " cluster_std=cluster_std,\n", + " centers=centers,\n", + ")\n", + "\n", + "fig, axs = plt.subplots(1, 2, figsize=[16, 6])\n", + "axs[0].scatter(X_blobs[:, 0], X_blobs[:, 1], c=y_blobs)\n", + "axs[0].set_title(\"labeled blobs\")\n", + "axs[1].scatter(X_blobs[:, 0], X_blobs[:, 1])\n", + "axs[1].set_title(\"dataset\")\n", "\n", "plt.show();" ] @@ -189,13 +211,15 @@ "outputs": [], "source": [ "n_clusters = 4\n", + "\n", "# 'fit_predict' runs the clustering algorithm and returns the labels assigned to each datapoint.\n", "# Different label values indicate different clusters.\n", "labels = KMeans(n_clusters=n_clusters).fit_predict(X_blobs)\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", "\n", - "plt.title('k-means', size=title_size)\n", - "plt.scatter(X_blobs[:,0],X_blobs[:,1],c=labels);" + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "plt.title(\"k-means\")\n", + "plt.scatter(X_blobs[:, 0], X_blobs[:, 1], c=labels);" ] }, { @@ -222,10 +246,13 @@ "outputs": [], "source": [ "n_clusters = 6\n", + "\n", "labels = KMeans(n_clusters=n_clusters).fit_predict(X_blobs)\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "plt.title('k-means', size=title_size)\n", - "plt.scatter(X_blobs[:,0],X_blobs[:,1],c=labels);" + "\n", + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "plt.title(\"k-means\")\n", + "plt.scatter(X_blobs[:, 0], X_blobs[:, 1], c=labels);" ] }, { @@ -250,10 +277,13 @@ "outputs": [], "source": [ "n_clusters = 2\n", + "\n", "labels = KMeans(n_clusters=n_clusters).fit_predict(X_blobs)\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "plt.title('k-means', size=title_size)\n", - "plt.scatter(X_blobs[:,0],X_blobs[:,1],c=labels);" + "\n", + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "plt.title(\"k-means\")\n", + "plt.scatter(X_blobs[:, 0], X_blobs[:, 1], c=labels);" ] }, { @@ -331,15 +361,19 @@ }, "outputs": [], "source": [ - "distance_threshold=100\n", + "distance_threshold = 100\n", + "\n", "# We use the SciPy implementation of hierarchical clustering and select the 'ward' the linkage criterion.\n", - "Z = linkage(X_blobs, 'ward' )\n", + "Z = linkage(X_blobs, \"ward\")\n", + "\n", "# 'cut_tree' returns the cluster assignments obtained if the algorithm stops merging clusters\n", - "# when they are at a further distance than a 'distance_threshold' value. \n", + "# when they are at a further distance than a 'distance_threshold' value.\n", "labels = cut_tree(Z, height=distance_threshold)\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "plt.title('ward', size=title_size)\n", - "plt.scatter(X_blobs[:,0],X_blobs[:,1],c=labels.T[0]);" + "\n", + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "plt.title(\"ward\")\n", + "plt.scatter(X_blobs[:, 0], X_blobs[:, 1], c=labels.T[0]);" ] }, { @@ -369,7 +403,7 @@ "outputs": [], "source": [ "# SciPy implements a function for directly plotting the dendrogram.\n", - "dendrogram(Z, truncate_mode='lastp',p=4);" + "dendrogram(Z, truncate_mode=\"lastp\", p=4);" ] }, { @@ -406,12 +440,15 @@ "outputs": [], "source": [ "distance_threshold = 40\n", - "Z = linkage(X_blobs, 'ward' )\n", + "\n", + "Z = linkage(X_blobs, \"ward\")\n", + "\n", "labels = cut_tree(Z, height=distance_threshold)\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", "\n", - "plt.title('ward', size=title_size)\n", - "plt.scatter(X_blobs[:,0],X_blobs[:,1],c=labels.T[0]);" + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "plt.title(\"ward\")\n", + "plt.scatter(X_blobs[:, 0], X_blobs[:, 1], c=labels.T[0]);" ] }, { @@ -438,11 +475,11 @@ }, "outputs": [], "source": [ - "fig, axs = plt.subplots(1,2,figsize=[16,6])\n", - "axs[0].scatter(X_blobs[:,0],X_blobs[:,1],c=y_blobs)\n", - "axs[0].set_title('labeled blobs', size=title_size)\n", - "axs[1].scatter(X_blobs[:,0],X_blobs[:,1])\n", - "axs[1].set_title('dataset', size=title_size);" + "fig, axs = plt.subplots(1, 2, figsize=[16, 6])\n", + "axs[0].scatter(X_blobs[:, 0], X_blobs[:, 1], c=y_blobs)\n", + "axs[0].set_title(\"labeled blobs\")\n", + "axs[1].scatter(X_blobs[:, 0], X_blobs[:, 1])\n", + "axs[1].set_title(\"dataset\");" ] }, { @@ -457,26 +494,27 @@ }, "outputs": [], "source": [ - "def scaling (X, a_x, b_y):\n", - " transformation = np.array([[a_x,0],[0,b_y]])\n", - " return np.dot(transformation,X.T).T\n", + "def scaling(X, a_x, b_y):\n", + " transformation = np.array([[a_x, 0], [0, b_y]])\n", + " return np.dot(transformation, X.T).T\n", + "\n", "\n", "# sk-learn implements the make_moons function to generate two interleaving half circles.\n", - "X_moons,y_moons = make_moons(n_samples=200, noise=0.04)\n", + "X_moons, y_moons = make_moons(n_samples=200, noise=0.04)\n", "\n", - "X_moons = scaling (X_moons, 4, 3)\n", - "X_moons[:,0] = X_moons[:,0] + 10\n", - "X_moons[:,1] = X_moons[:,1] - 4 \n", + "X_moons = scaling(X_moons, 4, 3)\n", + "X_moons[:, 0] = X_moons[:, 0] + 10\n", + "X_moons[:, 1] = X_moons[:, 1] - 4\n", "y_moons = y_moons + np.max(y_blobs) + 1\n", "\n", - "X_moons = np.concatenate([X_blobs,X_moons])\n", - "y_moons = np.concatenate([y_blobs,y_moons])\n", + "X_moons = np.concatenate([X_blobs, X_moons])\n", + "y_moons = np.concatenate([y_blobs, y_moons])\n", "\n", - "fig, axs = plt.subplots(1,2,figsize=[16,6])\n", - "axs[0].scatter(X_moons[:,0],X_moons[:,1],c=y_moons)\n", - "axs[0].set_title('labeled blobs', size=title_size)\n", - "axs[1].scatter(X_moons[:,0],X_moons[:,1])\n", - "axs[1].set_title('dataset', size=title_size)\n", + "fig, axs = plt.subplots(1, 2, figsize=[16, 6])\n", + "axs[0].scatter(X_moons[:, 0], X_moons[:, 1], c=y_moons)\n", + "axs[0].set_title(\"labeled blobs\")\n", + "axs[1].scatter(X_moons[:, 0], X_moons[:, 1])\n", + "axs[1].set_title(\"dataset\")\n", "plt.show();" ] }, @@ -499,17 +537,24 @@ }, "outputs": [], "source": [ - "fig, axs = plt.subplots(1,2,figsize=[16,6])\n", "labels = KMeans(n_clusters=6).fit_predict(X_moons)\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "axs[0].scatter(X_moons[:,0],X_moons[:,1],c=labels)\n", - "axs[0].set_title ('k-means', size=title_size)\n", + "\n", + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "fig, axs = plt.subplots(1, 2, figsize=[16, 6])\n", + "axs[0].scatter(X_moons[:, 0], X_moons[:, 1], c=labels)\n", + "axs[0].set_title(\"k-means\")\n", + "\n", "distance_threshold = 40\n", - "Z = linkage(X_moons, 'ward' )\n", + "\n", + "Z = linkage(X_moons, \"ward\")\n", + "\n", "labels = cut_tree(Z, height=distance_threshold)\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "axs[1].scatter(X_moons[:,0],X_moons[:,1],c=labels.T[0])\n", - "axs[1].set_title('ward', size=title_size);" + "\n", + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "axs[1].scatter(X_moons[:, 0], X_moons[:, 1], c=labels.T[0])\n", + "axs[1].set_title(\"ward\");" ] }, { @@ -541,11 +586,15 @@ "outputs": [], "source": [ "distance_threshold = 1.03\n", - "Z = linkage(X_moons, 'single' )\n", + "\n", + "Z = linkage(X_moons, \"single\")\n", + "\n", "labels = cut_tree(Z, height=distance_threshold)\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "plt.title('single linkage', size=title_size)\n", - "plt.scatter(X_moons[:,0],X_moons[:,1],c=labels.T[0]);" + "\n", + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "plt.title(\"single linkage\")\n", + "plt.scatter(X_moons[:, 0], X_moons[:, 1], c=labels.T[0]);" ] }, { @@ -569,11 +618,15 @@ "outputs": [], "source": [ "distance_threshold = 1.04\n", - "Z = linkage(X_moons, 'single' )\n", + "\n", + "Z = linkage(X_moons, \"single\")\n", + "\n", "labels = cut_tree(Z, height=distance_threshold)\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "plt.title('single linkage', size=title_size)\n", - "plt.scatter(X_moons[:,0],X_moons[:,1],c=labels.T[0]);" + "\n", + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "plt.title(\"single linkage\")\n", + "plt.scatter(X_moons[:, 0], X_moons[:, 1], c=labels.T[0]);" ] }, { @@ -602,13 +655,17 @@ }, "outputs": [], "source": [ - "noise_points = 100 \n", + "noise_points = 100\n", "np.random.seed(seed=0)\n", + "\n", "# noise is generated as random samples on a surface fully covering our dataset.\n", - "noise = np.concatenate([np.expand_dims(np.random.random_sample(noise_points),axis=1)*30-10,\n", - " np.expand_dims(np.random.random_sample(noise_points),axis=1)*20-5],axis=1)\n", - "y_noisy = np.concatenate ([-1*np.ones(noise_points),y_moons])\n", - "X_noisy = np.concatenate([noise,X_moons])" + "noise = np.concatenate([\n", + " np.expand_dims(np.random.random_sample(noise_points), axis=1) * 30 - 10,\n", + " np.expand_dims(np.random.random_sample(noise_points), axis=1) * 20 - 5,],\n", + " axis=1,\n", + ")\n", + "y_noisy = np.concatenate([-1 * np.ones(noise_points), y_moons])\n", + "X_noisy = np.concatenate([noise, X_moons])" ] }, { @@ -623,11 +680,11 @@ }, "outputs": [], "source": [ - "fig, axs = plt.subplots(1,2,figsize=[16,6])\n", - "axs[0].scatter(X_noisy[:,0],X_noisy[:,1],c=y_noisy)\n", - "axs[0].set_title('labeled blobs', size=title_size)\n", - "axs[1].scatter(X_noisy[:,0],X_noisy[:,1])\n", - "axs[1].set_title('dataset', size=title_size)\n", + "fig, axs = plt.subplots(1, 2, figsize=[16, 6])\n", + "axs[0].scatter(X_noisy[:, 0], X_noisy[:, 1], c=y_noisy)\n", + "axs[0].set_title(\"labeled blobs\")\n", + "axs[1].scatter(X_noisy[:, 0], X_noisy[:, 1])\n", + "axs[1].set_title(\"dataset\")\n", "plt.show();" ] }, @@ -644,11 +701,15 @@ "outputs": [], "source": [ "distance_threshold = 1\n", - "Z = linkage(X_noisy, 'single' )\n", + "\n", + "Z = linkage(X_noisy, \"single\")\n", + "\n", "labels = cut_tree(Z, height=distance_threshold)\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "plt.title('single linkage', size=title_size)\n", - "plt.scatter(X_noisy[:,0],X_noisy[:,1],c=labels.T[0]);" + "\n", + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "plt.title(\"single linkage\")\n", + "plt.scatter(X_noisy[:, 0], X_noisy[:, 1], c=labels.T[0]);" ] }, { @@ -695,20 +756,28 @@ }, "outputs": [], "source": [ - "# Cluster assignments are generated with a function analogous to the one used for k-means, \n", - "# we used for both their sk-learn implementation.\n", + "# Cluster assignments are generated with a function analogous to the one used for k-means,\n", + "# we used for both their sk-learn implementation.\n", "labels = DBSCAN(eps=0.8, min_samples=10).fit_predict(X_noisy)\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "plt.title('DBSCAN', size=title_size)\n", + "\n", + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", "# Points classified as outliers are labeled with -1.\n", "# For the plot below, points with -1 label are excluded using the 'np.where()' function.\n", - "plt.scatter(X_noisy[np.where(labels!=-1)][:,0],X_noisy[np.where(labels!=-1)][:,1],c=labels[np.where(labels!=-1)]);" + "plt.scatter(\n", + " X_noisy[np.where(labels != -1)][:, 0],\n", + " X_noisy[np.where(labels != -1)][:, 1],\n", + " c=labels[np.where(labels != -1)],\n", + ")\n", + "plt.title(\"DBSCAN\")\n", + "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "\n", "The plot above does not show points that were labeled as noise during clustering.\n", "In this example, we can see that DBSCAN is able to detect clusters with irregular shapes and isolate noise.\n", "However, differently from previous algorithms, this algorithm requires 2 input parameters.\n", @@ -732,16 +801,19 @@ "outputs": [], "source": [ "random_state = 0\n", - "centers = [[-2,10]]\n", + "centers = [[-2, 10]]\n", "n_samples = [50]\n", - "cluster_std=[[3,2]]\n", - "X_mixed, y_mixed = make_blobs(n_samples=n_samples,\n", - " random_state=random_state,\n", - " cluster_std=cluster_std,\n", - " centers=centers)\n", + "cluster_std = [[3, 2]]\n", + "\n", + "X_mixed, y_mixed = make_blobs(\n", + " n_samples=n_samples,\n", + " random_state=random_state,\n", + " cluster_std=cluster_std,\n", + " centers=centers,\n", + ")\n", "y_mixed = y_mixed + np.max(y_noisy) + 1\n", - "y_mixed = np.concatenate ([y_noisy,y_mixed])\n", - "X_mixed = np.concatenate([X_noisy,X_mixed])" + "y_mixed = np.concatenate([y_noisy, y_mixed])\n", + "X_mixed = np.concatenate([X_noisy, X_mixed])" ] }, { @@ -756,12 +828,18 @@ }, "outputs": [], "source": [ - "fig, axs = plt.subplots(1,2,figsize=[16,6])\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "axs[0].scatter(X_mixed[np.where(y_mixed!=-1)][:,0],X_mixed[np.where(y_mixed!=-1)][:,1],c=y_mixed[np.where(y_mixed!=-1)])\n", - "axs[0].set_title ('labeled blobs', size=title_size)\n", - "axs[1].scatter(X_mixed[:,0],X_mixed[:,1])\n", - "axs[1].set_title ('dataset', size=title_size);" + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "fig, axs = plt.subplots(1, 2, figsize=[16, 6])\n", + "axs[0].scatter(\n", + " X_mixed[np.where(y_mixed != -1)][:, 0],\n", + " X_mixed[np.where(y_mixed != -1)][:, 1],\n", + " c=y_mixed[np.where(y_mixed != -1)],\n", + ")\n", + "axs[0].set_title(\"labeled blobs\")\n", + "axs[1].scatter(X_mixed[:, 0], X_mixed[:, 1])\n", + "axs[1].set_title(\"dataset\")\n", + "plt.show()" ] }, { @@ -784,10 +862,19 @@ "outputs": [], "source": [ "clustering = DBSCAN(eps=0.8, min_samples=8).fit(X_mixed)\n", + "\n", "labels = clustering.labels_\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "plt.title('DBSCAN', size=title_size)\n", - "plt.scatter(X_mixed[:,0][np.where(labels!=-1)],X_mixed[:,1][np.where(labels!=-1)],c=labels[np.where(labels!=-1)]);" + "\n", + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "\n", + "plt.scatter(\n", + " X_mixed[:, 0][np.where(labels != -1)],\n", + " X_mixed[:, 1][np.where(labels != -1)],\n", + " c=labels[np.where(labels != -1)],\n", + ")\n", + "plt.title(\"DBSCAN\")\n", + "plt.show()" ] }, { @@ -810,10 +897,18 @@ "outputs": [], "source": [ "clustering = DBSCAN(eps=0.6, min_samples=3).fit(X_mixed)\n", - "plt.title('DBSCAN', size=title_size)\n", + "\n", "labels = clustering.labels_\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "plt.scatter(X_mixed[:,0][np.where(labels!=-1)],X_mixed[:,1][np.where(labels!=-1)],c=labels[np.where(labels!=-1)]);" + "\n", + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "plt.scatter(\n", + " X_mixed[:, 0][np.where(labels != -1)],\n", + " X_mixed[:, 1][np.where(labels != -1)],\n", + " c=labels[np.where(labels != -1)],\n", + ")\n", + "plt.title(\"DBSCAN\")\n", + "plt.show()" ] }, { @@ -882,11 +977,19 @@ "outputs": [], "source": [ "min_cluster_size = 8\n", - "# Even though is not part of the sk-learn package, HDBSCAN implementation uses the same sk-learn syntax. \n", - "labels=hdbscan.HDBSCAN(min_cluster_size=min_cluster_size, gen_min_span_tree=True).fit_predict(X_mixed)\n", - "plt.title('HDBSCAN', size=title_size)\n", - "print(np.max(labels)+1,' clusters were extracted.') \n", - "plt.scatter(X_mixed[np.where(labels!=-1)][:,0],X_mixed[np.where(labels!=-1)][:,1],c=labels[np.where(labels!=-1)]);" + "\n", + "# Even though is not part of the sk-learn package, HDBSCAN implementation uses the same sk-learn syntax.\n", + "labels = hdbscan.HDBSCAN(min_cluster_size=min_cluster_size, gen_min_span_tree=True).fit_predict(X_mixed)\n", + "\n", + "print(np.max(labels) + 1, \" clusters were extracted.\")\n", + "\n", + "plt.scatter(\n", + " X_mixed[np.where(labels != -1)][:, 0],\n", + " X_mixed[np.where(labels != -1)][:, 1],\n", + " c=labels[np.where(labels != -1)],\n", + ")\n", + "plt.title(\"HDBSCAN\")\n", + "plt.show()" ] }, { @@ -913,7 +1016,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.9.13" }, "widgets": { "application/vnd.jupyter.widget-state+json": { diff --git a/metainfo.json b/metainfo.json deleted file mode 100644 index 06c7c6e27a62d758acb17de397da0a490157d254..0000000000000000000000000000000000000000 --- a/metainfo.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "authors": [ - "Sbailò, Luigi", - "Ghiringhelli, Luca M." - ], - "email": "sbailo@fhi-berlin.mpg.de", - "title": "Introduction to clustering", - "description": "In this tutorial, we introduce to the most popular clustering algorithms. We focus on partitioning, hierarchical and density-based clustering algorithms. The methods are tested on synthetic datasets of increasing complexity", - "notebook_name": "clustering_tutorial.ipynb", - "url": "https://gitlab.mpcdf.mpg.de/nomad-lab/analytics-clustering-tutorial", - "link": "https://analytics-toolkit.nomad-coe.eu/hub/user-redirect/notebooks/tutorials/clustering_tutorial.ipynb", - "link_public": "https://analytics-toolkit.nomad-coe.eu/public/user-redirect/notebooks/tutorials/clustering_tutorial.ipynb", - "updated": "2021-01-21", - "flags":{ - "featured": true, - "top_of_list": false - }, - "labels": { - "application_section": [ - "Tutorials for artificial-intelligence methods" - ], - "application_system": [ - "Synthetic data" - ], - "category": [ - "beginner_tutorial" - ], - "ai_methods": [ - "Unsupervised learning", - "Clustering", - "k-means", - "Hierarchical clustering", - "DBSCAN", - "HDBSCAN" - ], - "platform": [ - "jupyter" - ] - } -} diff --git a/requirements.in b/requirements.in new file mode 100644 index 0000000000000000000000000000000000000000..12072fc91eb6ddf16f6a422d03a9f51bf8d80fed --- /dev/null +++ b/requirements.in @@ -0,0 +1,4 @@ +numpy +matplotlib +scikit-learn +hdbscan \ No newline at end of file