Files
vito/resources/svg/caddy.svg
Rasel Islam Rafi 984c1f3a8e Add Caddy Server Support Alongside Nginx (#600)
* added enum

* add config for caddy

* add svg icon

* add caddy service class

* wip

* install caddy

* create base Caddyfile with common snippets

* Create a systemd service to run Caddy in the background.

* create uninstall file

* wip

* create path

* create vhost

* get vhost

* delete site

* add php version change file

* add custom ssl

* create redirect file

* add vhost for caddy site & load balancer

* update svg

* fix caddy icon

* fix style

* add systemctl reload method

* Reload systemd after modifying the Caddy service file.

* add caddy

* added tests

* format with pint

* prevent multiple web server installations

* added error log & access log

(cherry picked from commit 2318e1b1df)
2025-05-29 11:39:00 +02:00

9 lines
17 KiB
XML

<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" width="400" height="400">
<title>New Project</title>
<defs>
<image width="800" height="802" id="img1" href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDM3OSAxMTQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG1sbnM6c2VyaWY9Imh0dHA6Ly93d3cuc2VyaWYuY29tLyIgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDsiPgogICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsMSwtMzUuNTk4NSwtNjcuOTQ4KSI+CiAgICAgICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMS4xNjU0OCwwLDAsMS4xMDE5NSwtMTI0LC02OC4yNykiPgogICAgICAgICAgICA8ZyBpZD0iTGlnaHQtTG9nbyIgc2VyaWY6aWQ9IkxpZ2h0IExvZ28iIHRyYW5zZm9ybT0ibWF0cml4KDAuODU4MDEzLDAsMCwwLjkwNzQ4NSwtMzI0My40MiwtMTQ2OS4xNykiPgogICAgICAgICAgICAgICAgPGcgaWQ9IkxvZ28iIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLDEsMjEuNDc1OSwzNi43MzU5KSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikljb24iPgogICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KC0wLjE5MTc5NCwtMC43MTU3ODYsMC43MTU3ODYsLTAuMTkxNzk0LDQzMjkuMTQsNDY3My42NCkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOTAxLjU2LDYxMC43MzRDMzg5My41Myw2MTAuMjYxIDM4ODYuMDYsNjA4LjEgMzg3OS4yLDYwNC44NzdDMzg3Mi4yNCw2MDEuNjA4IDM4NjYuMDQsNTk3LjA5MyAzODYwLjgsNTkxLjYzM0MzODU4LjcxLDU4OS40NTcgMzg1Ni43Niw1ODcuMTQ5IDM4NTQuOTcsNTg0LjcwOUMzODUzLjIsNTgyLjI4MSAzODUxLjU3LDU3OS43MzMgMzg1MC4xMyw1NzcuMDY2QzM4NDUuODksNTY5LjIyNCAzODQzLjIxLDU2MC4zODEgMzg0Mi44OSw1NTAuODY4QzM4NDIuNTcsNTQzLjMyMSAzODQzLjY0LDUzNi4wNTUgMzg0NS45NCw1MjkuMzA3QzM4NDguMzcsNTIyLjIwMyAzODUyLjA4LDUxNS42OTYgMzg1Ni44Myw1MTAuMDQ5TDM4NTUuNzksNTA5LjA5NUMzODUwLjM5LDUxNC41NCAzODQ2LjAyLDUyMC45ODEgMzg0Mi45LDUyOC4xMjVDMzgzOS44NCw1MzUuMTI1IDM4MzguMDMsNTQyLjc4MSAzODM3LjY4LDU1MC44NjhDMzgzNy4zNCw1NjEuMzkxIDM4MzkuNTEsNTcxLjQyNSAzODQzLjc5LDU4MC4zMDZDMzg0NS4yNyw1ODMuMzggMzg0Ny4wMyw1ODYuMzA0IDM4NDkuMDEsNTg5LjA0OUMzODUxLjAxLDU5MS44MDYgMzg1My4yNCw1OTQuMzkgMzg1NS42OSw1OTYuNzQyQzM4NjEuNzUsNjAyLjU2OCAzODY5LDYwNy4xOSAzODc3LjAzLDYxMC4xQzM4ODQuNjYsNjEyLjg2NyAzODkyLjk2LDYxNC4wNTkgMzkwMS41Niw2MTMuNTUyTDM5MDEuNTYsNjEwLjczNFoiIHN0eWxlPSJmaWxsOnJnYigwLDE0NCwyMjEpOyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoLTAuMTkxNzk0LC0wLjcxNTc4NiwwLjcxNTc4NiwtMC4xOTE3OTQsNDMyOS4xNCw0NjczLjY0KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTM4NzUuNjksNDk2LjU3M0MzODc5LjYyLDQ5NC41MzggMzg4My44LDQ5Mi44OTcgMzg4OC4yLDQ5MS43ODZDMzg5Mi40OSw0OTAuNzA0IDM4OTYuOTYsNDkwLjEyNCAzOTAxLjU2LDQ5MC4wMzJDMzkwMy44Miw0OTAuMTMgMzkwNi4wMyw0OTAuMzMyIDM5MDguMjEsNDkwLjY4OEMzOTE3LjEzLDQ5Mi4xNDcgMzkyNS4xOSw0OTUuODE0IDM5MzIuMzEsNTAwLjY4M0MzOTM2LjEzLDUwMy4yOTQgMzkzOS41OSw1MDYuMzM1IDM5NDIuODEsNTA5LjYxOUMzOTQ3LjA5LDUxMy45OCAzOTUwLjg5LDUxOC44MTYgMzk1My44NSw1MjQuMjMyQzM5NTguMiw1MzIuMTk3IDM5NjAuOTYsNTQxLjE4NiAzOTYxLjMyLDU1MC44NjhDMzk2MS42MSw1NTguNzQ4IDM5NjAuNDYsNTY2LjM0NSAzOTU3Ljg4LDU3My4zMjJDMzk1Ni4wOSw1NzguMTY5IDM5NTMuNyw1ODIuNzUzIDM5NTAuNjYsNTg2LjgzOEMzOTQ3LjIyLDU5MS40NjEgMzk0Mi45Niw1OTUuNDI3IDM5MzguMjcsNTk4Ljc2OUMzOTMzLjY2LDYwMi4wNTUgMzkyOC41Myw2MDQuNjE5IDM5MjMuMDksNjA2LjQ3OEMzOTIyLjM3LDYwNi43MjEgMzkyMS42LDYwNi44MDUgMzkyMC45Myw2MDcuMTY3QzM5MjAuNDIsNjA3LjQ0OCAzOTIwLjE0LDYwNy44NTQgMzkxOS42OSw2MDguMjI0TDM5MjAuMzcsNjEwLjM4OUMzOTIwLjk4LDYxMC40MzIgMzkyMS40Nyw2MTAuNTczIDM5MjIuMDcsNjEwLjQ3NEMzOTIyLjg2LDYxMC4zNDQgMzkyMy41NSw2MDkuODgzIDM5MjQuMjgsNjA5LjU2NkMzOTMxLjk5LDYwNi4yMTYgMzkzOC44Miw2MDEuMzU1IDM5NDQuNTcsNTk1LjQyOEMzOTQ3LjAyLDU5Mi45MDMgMzk0OS4yNSw1OTAuMTc0IDM5NTEuMzEsNTg3LjMxOUMzOTUzLjU5LDU4NC4xNjggMzk1NS42Niw1ODAuODUzIDM5NTcuNDMsNTc3LjM0OEMzOTYxLjQ3LDU2OS4zNCAzOTY0LjAxLDU2MC40MjIgMzk2NC4zNiw1NTAuODY4QzM5NjQuNzQsNTQwLjUxMSAzOTYyLjY2LDUzMC42MjggMzk1OC40OCw1MjEuODY4QzM5NTUuNTcsNTE1Ljc3NSAzOTUxLjcyLDUxMC4xNjMgMzk0Ni45NSw1MDUuNDc4QzM5NDMuMzcsNTAxLjk2MiAzOTM5LjI2LDQ5OC45OSAzOTM0Ljg0LDQ5Ni41NjJDMzkyNi44OCw0OTIuMTkyIDM5MTcuODcsNDg5Ljc2IDM5MDguMzcsNDg5LjIyOUMzOTA2LjEyLDQ4OS4xMDQgMzkwMy44Niw0ODkuMDU0IDM5MDEuNTYsNDg5LjE1NEMzODk2Ljg3LDQ4OS4wNiAzODkyLjMsNDg5LjUxOSAzODg3Ljg5LDQ5MC4zOTdDMzg4My4zLDQ5MS4zMDkgMzg3OC44OSw0OTIuNjgzIDM4NzQuNzEsNDk0LjUyNUwzODc1LjY5LDQ5Ni41NzNaIiBzdHlsZT0iZmlsbDpyZ2IoMCwxNDQsMjIxKTsiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KC0zLjM3MTA5LC0wLjUxNDU2NSwwLjUxNDU2NSwtMy4zNzEwOSw0MDc4LjA3LDE4MDYuODgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjIsMTJDMjIsMTAuOTAzIDIxLjA5NywxMCAyMCwxMEMxOS40MjEsMTAgMTguODk3LDEwLjI1MSAxOC41MywxMC42NDlDMTguMjAyLDExLjAwNiAxOCwxMS40ODEgMTgsMTJDMTgsMTMuMDk3IDE4LjkwMywxNCAyMCwxNEMyMS4wOTcsMTQgMjIsMTMuMDk3IDIyLDEyWiIgc3R5bGU9ImZpbGw6bm9uZTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6cmdiKDAsMTQ0LDIyMSk7c3Ryb2tlLXdpZHRoOjEuMDVweDsiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KC01LjMzOTIxLC01LjI2MTU5LC0zLjEyMTA2LC02Ljk2MzkzLDQwNzMuODcsMTg2MS41NSkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMC4zMTUsNS4zMzNDMTAuMzE1LDUuMzMzIDkuNzQ4LDUuOTIxIDkuMDMsNi42NzNDNy43NjgsNy45OTUgNi4wNTQsOS44MDUgNi4wNTQsOS44MDVMNi4yMzcsOS44NkM2LjIzNyw5Ljg2IDguMDQ1LDguMDc3IDkuMzYsNi43NzFDMTAuMTA3LDYuMDI4IDEwLjY4OSw1LjQ0NCAxMC42ODksNS40NDRMMTAuMzE1LDUuMzMzWiIgc3R5bGU9ImZpbGw6cmdiKDAsMTQ0LDIyMSk7Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IlBhZGxvY2siIHRyYW5zZm9ybT0ibWF0cml4KDMuMTE0MjYsMCwwLDMuMTE0MjYsMzkzOC4zMSwxNzM3LjI1KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOS44NzYsMjFMMTguMTYyLDIxQzE4LjYyNSwyMSAxOSwyMC42MjUgMTksMjAuMTYyTDE5LDExLjgzOEMxOSwxMS4zNzUgMTguNjI1LDExIDE4LjE2MiwxMUw1LjgzOCwxMUM1LjM3NSwxMSA1LDExLjM3NSA1LDExLjgzOEw1LDE2Ljc1OCIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6cmdiKDM0LDE4Miw1Nik7c3Ryb2tlLXdpZHRoOjEuODlweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjsiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOCwxMUw4LDdDOCw0LjgwNiA5LjgwNiwzIDEyLDNDMTQuMTk0LDMgMTYsNC44MDYgMTYsN0wxNiwxMSIgc3R5bGU9ImZpbGw6bm9uZTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6cmdiKDM0LDE4Miw1Nik7c3Ryb2tlLXdpZHRoOjEuODlweDsiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8Zz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDUuMzA5NzcsMC42OTc0MTUsLTAuNjk3NDE1LDUuMzA5NzcsMzg1Mi43MiwxNzI3Ljk3KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIyLDEyQzIyLDExLjY1OSAyMS45MTMsMTEuMzM3IDIxLjc2LDExLjA1NUMyMS40MjEsMTAuNDI5IDIwLjc1NiwxMCAyMCwxMEMxOC45MDMsMTAgMTgsMTAuOTAzIDE4LDEyQzE4LDEzLjA5NyAxOC45MDMsMTQgMjAsMTRDMjEuMDk3LDE0IDIyLDEzLjA5NyAyMiwxMloiIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOnJnYigwLDE0NCwyMjEpO3N0cm9rZS13aWR0aDowLjk4cHg7Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCg0LjkzMTE0LDIuNDk2MDQsMS4xMTAxOCw1LjQ0ODQ3LDM5MjEuNDEsMTcyNi43MikiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04LjkwMiw2Ljc3QzguOTAyLDYuNzcgNy4yMzUsOC4yNTMgNi4wMjcsOS4zNjZDNS4zNDMsOS45OTYgNC44MTksMTAuNTAyIDQuODE5LDEwLjUwMkw1LjUyLDExLjE2NEM1LjUyLDExLjE2NCA2LjAyMSwxMC42MzcgNi42NDYsOS45NTFDNy43NDksOC43MzkgOS4yMTksNy4wNjggOS4yMTksNy4wNjhMOC45MDIsNi43N1oiIHN0eWxlPSJmaWxsOnJnYigwLDE0NCwyMjEpOyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJXb3JkbWFyayIgdHJhbnNmb3JtPSJtYXRyaXgoMS41NDE1OSwwLDAsMi44NzQ0LDI3MTAuNiw3MDkuODA0KSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJ5IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUwMjkxLDAsMCwwLjI4MTYwNyw5MDUuNTMzLDMwNC45ODcpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOTIuMTUyLDI4Ni44NzVMMjAyLjYyOSwyNjguNjRDMTg3LjgwNCwyNzAuMTA2IDE4My4zOTcsMjY1Ljc3OSAxODAuMTQzLDI2My4zOTFDMTc2Ljg4OCwyNjEuMDA0IDE3NC4zNjIsMjU3Ljk5IDE3Mi41NjMsMjU0LjM0N0MxNzAuNzY1LDI1MC43MDUgMTY5Ljg2NiwyNDYuNjkxIDE2OS44NjYsMjQyLjMwNUwxNjkuODY2LDIwOC4xMDdMMTgzLjIxLDIwOC4xMDdMMTgzLjIxLDI0Mi4yMTNDMTgzLjIxLDI0NS4xODggMTgzLjg5NiwyNDcuODIyIDE4NS4yNjgsMjUwLjExNkMxODYuNjQsMjUyLjQxIDE4OC40NjUsMjU0LjE5NyAxOTAuNzQzLDI1NS40NzVDMTkzLjAyMiwyNTYuNzU0IDE5NS41MDEsMjU3LjM5MyAxOTguMTgyLDI1Ny4zOTNDMjAwLjg5NCwyNTcuMzkzIDIwMy4zOTMsMjU2Ljc1IDIwNS42OCwyNTUuNDYzQzIwNy45NjYsMjU0LjE3NyAyMDkuNzk5LDI1Mi4zOTEgMjExLjE3OCwyNTAuMTA1QzIxMi41NTgsMjQ3LjgxOCAyMTMuMjQ4LDI0NS4xODggMjEzLjI0OCwyNDIuMjEzTDIxMy4yNDgsMjA4LjEwN0wyMjYuNTQ1LDIwOC4xMDdMMjI2LjU0NSwyNDIuMzA1QzIyNi41NDUsMjQ2LjcwNyAyMjUuMzc4LDI1OC40NiAyMTguMDc5LDI2OC42NEMyMTUuNzM1LDI3MS45MDkgMjA3LjgzNSwyODYuODc1IDIwNy44MzUsMjg2Ljg3NUwxOTIuMTUyLDI4Ni44NzVaIiBzdHlsZT0iZmlsbDpyZ2IoMjU1LDI1NSwyNTUpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIGlkPSJhZGQiIHRyYW5zZm9ybT0ibWF0cml4KDAuNTI1MDc1LDAsMCwwLjI4MTYwNyw4MDEuODcxLDMwNC45ODcpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDExNi4yNDIsMCwwLDExNi4yNDIsMTYxLjg0NiwyNjcuMzkpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMC4yNzYsMC4wMTJDMC4yMjcsMC4wMTIgMC4xODYsMCAwLjE1LC0wLjAyNEMwLjExNSwtMC4wNDggMC4wODgsLTAuMDggMC4wNjksLTAuMTJDMC4wNSwtMC4xNjEgMC4wNCwtMC4yMDUgMC4wNCwtMC4yNTRDMC4wNCwtMC4zMDUgMC4wNTEsLTAuMzUgMC4wNzIsLTAuMzlDMC4wOTQsLTAuNDMxIDAuMTI1LC0wLjQ2MyAwLjE2NSwtMC40ODdDMC4yMDUsLTAuNTEgMC4yNTQsLTAuNTIyIDAuMzEsLTAuNTIyQzAuMzY2LC0wLjUyMiAwLjQxMywtMC41MSAwLjQ1MiwtMC40ODZDMC40OTEsLTAuNDYzIDAuNTIxLC0wLjQzMSAwLjU0MiwtMC4zOUMwLjU2MiwtMC4zNSAwLjU3MywtMC4zMDUgMC41NzMsLTAuMjU2TDAuNTczLC0wTDAuNDU4LC0wTDAuNDU4LC0wLjA5NUwwLjQ1NiwtMC4wOTVDMC40NDYsLTAuMDc2IDAuNDMzLC0wLjA1OCAwLjQxNywtMC4wNDJDMC40MDEsLTAuMDI2IDAuMzgxLC0wLjAxMyAwLjM1OCwtMC4wMDNDMC4zMzUsMC4wMDcgMC4zMDcsMC4wMTIgMC4yNzYsMC4wMTJaTTAuMzA3LC0wLjA4NkMwLjMzNywtMC4wODYgMC4zNjMsLTAuMDkzIDAuMzg2LC0wLjEwOEMwLjQwOCwtMC4xMjMgMC40MjYsLTAuMTQ0IDAuNDM4LC0wLjE3QzAuNDUsLTAuMTk1IDAuNDU2LC0wLjIyNCAwLjQ1NiwtMC4yNTZDMC40NTYsLTAuMjg4IDAuNDUsLTAuMzE3IDAuNDM4LC0wLjM0MkMwLjQyNiwtMC4zNjcgMC40MDksLTAuMzg3IDAuMzg3LC0wLjQwMkMwLjM2NSwtMC40MTcgMC4zMzgsLTAuNDI0IDAuMzA4LC0wLjQyNEMwLjI3NiwtMC40MjQgMC4yNDksLTAuNDE3IDAuMjI2LC0wLjQwMkMwLjIwNCwtMC4zODcgMC4xODYsLTAuMzY2IDAuMTc0LC0wLjM0MUMwLjE2MiwtMC4zMTUgMC4xNTYsLTAuMjg3IDAuMTU2LC0wLjI1NUMwLjE1NiwtMC4yMjQgMC4xNjIsLTAuMTk1IDAuMTc0LC0wLjE2OUMwLjE4NiwtMC4xNDQgMC4yMDMsLTAuMTIzIDAuMjI2LC0wLjEwOEMwLjI0OCwtMC4wOTMgMC4yNzUsLTAuMDg2IDAuMzA3LC0wLjA4NloiIHN0eWxlPSJmaWxsOnJnYigyNTUsMjU1LDI1NSk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxMTYuMjQyLDAsMCwxMTYuMjQyLDIyNi41OTIsMjY3LjM5KSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTAuMzA2LDAuMDEyQzAuMjY1LDAuMDEyIDAuMjI5LDAuMDA2IDAuMTk2LC0wLjAwOEMwLjE2MywtMC4wMjEgMC4xMzUsLTAuMDM5IDAuMTEyLC0wLjA2NEMwLjA4OSwtMC4wODggMC4wNzEsLTAuMTE3IDAuMDU5LC0wLjE1MUMwLjA0NiwtMC4xODUgMC4wNCwtMC4yMjIgMC4wNCwtMC4yNjNDMC4wNCwtMC4zMTUgMC4wNTEsLTAuMzYgMC4wNzIsLTAuMzk5QzAuMDkzLC0wLjQzNyAwLjEyMiwtMC40NjggMC4xNTksLTAuNDg5QzAuMTk2LC0wLjUxMSAwLjIzOSwtMC41MjIgMC4yODcsLTAuNTIyQzAuMzExLC0wLjUyMiAwLjMzMywtMC41MTggMC4zNTUsLTAuNTExQzAuMzc3LC0wLjUwNCAwLjM5NiwtMC40OTMgMC40MTMsLTAuNDhDMC40MzEsLTAuNDY2IDAuNDQ1LC0wLjQ1MSAwLjQ1NSwtMC40MzNMMC40NTYsLTAuNDMzTDAuNDU2LC0wLjczTDAuNTcxLC0wLjczTDAuNTcxLC0wLjI2MUMwLjU3MSwtMC4yMDUgMC41NiwtMC4xNTYgMC41MzcsLTAuMTE1QzAuNTE1LC0wLjA3NCAwLjQ4NCwtMC4wNDMgMC40NDQsLTAuMDIxQzAuNDA1LDAuMDAxIDAuMzU4LDAuMDEyIDAuMzA2LDAuMDEyWk0wLjMwNiwtMC4wODZDMC4zMzUsLTAuMDg2IDAuMzYxLC0wLjA5MyAwLjM4NCwtMC4xMDdDMC40MDYsLTAuMTIyIDAuNDIzLC0wLjE0MSAwLjQzNiwtMC4xNjdDMC40NDgsLTAuMTkyIDAuNDU1LC0wLjIyMSAwLjQ1NSwtMC4yNTVDMC40NTUsLTAuMjg4IDAuNDQ4LC0wLjMxNyAwLjQzNiwtMC4zNDNDMC40MjMsLTAuMzY4IDAuNDA2LC0wLjM4OCAwLjM4MywtMC40MDJDMC4zNjEsLTAuNDE3IDAuMzM1LC0wLjQyNCAwLjMwNSwtMC40MjRDMC4yNzYsLTAuNDI0IDAuMjUxLC0wLjQxNyAwLjIyOCwtMC40MDJDMC4yMDYsLTAuMzg3IDAuMTg4LC0wLjM2OCAwLjE3NSwtMC4zNDJDMC4xNjMsLTAuMzE3IDAuMTU2LC0wLjI4OCAwLjE1NiwtMC4yNTVDMC4xNTYsLTAuMjIyIDAuMTYzLC0wLjE5MyAwLjE3NSwtMC4xNjdDMC4xODgsLTAuMTQyIDAuMjA2LC0wLjEyMiAwLjIyOSwtMC4xMDhDMC4yNTEsLTAuMDkzIDAuMjc3LC0wLjA4NiAwLjMwNiwtMC4wODZaIiBzdHlsZT0iZmlsbDpyZ2IoMjU1LDI1NSwyNTUpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMTE2LjI0MiwwLDAsMTE2LjI0MiwyOTAuMjkzLDI2Ny4zOSkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLjMwNiwwLjAxMkMwLjI2NSwwLjAxMiAwLjIyOSwwLjAwNiAwLjE5NiwtMC4wMDhDMC4xNjMsLTAuMDIxIDAuMTM1LC0wLjAzOSAwLjExMiwtMC4wNjRDMC4wODksLTAuMDg4IDAuMDcxLC0wLjExNyAwLjA1OSwtMC4xNTFDMC4wNDYsLTAuMTg1IDAuMDQsLTAuMjIyIDAuMDQsLTAuMjYzQzAuMDQsLTAuMzE1IDAuMDUxLC0wLjM2IDAuMDcyLC0wLjM5OUMwLjA5MywtMC40MzcgMC4xMjIsLTAuNDY4IDAuMTU5LC0wLjQ4OUMwLjE5NiwtMC41MTEgMC4yMzksLTAuNTIyIDAuMjg3LC0wLjUyMkMwLjMxMSwtMC41MjIgMC4zMzMsLTAuNTE4IDAuMzU1LC0wLjUxMUMwLjM3NywtMC41MDQgMC4zOTYsLTAuNDkzIDAuNDEzLC0wLjQ4QzAuNDMxLC0wLjQ2NiAwLjQ0NSwtMC40NTEgMC40NTUsLTAuNDMzTDAuNDU2LC0wLjQzM0wwLjQ1NiwtMC43M0wwLjU3MSwtMC43M0wwLjU3MSwtMC4yNjFDMC41NzEsLTAuMjA1IDAuNTYsLTAuMTU2IDAuNTM3LC0wLjExNUMwLjUxNSwtMC4wNzQgMC40ODQsLTAuMDQzIDAuNDQ0LC0wLjAyMUMwLjQwNSwwLjAwMSAwLjM1OCwwLjAxMiAwLjMwNiwwLjAxMlpNMC4zMDYsLTAuMDg2QzAuMzM1LC0wLjA4NiAwLjM2MSwtMC4wOTMgMC4zODQsLTAuMTA3QzAuNDA2LC0wLjEyMiAwLjQyMywtMC4xNDEgMC40MzYsLTAuMTY3QzAuNDQ4LC0wLjE5MiAwLjQ1NSwtMC4yMjEgMC40NTUsLTAuMjU1QzAuNDU1LC0wLjI4OCAwLjQ0OCwtMC4zMTcgMC40MzYsLTAuMzQzQzAuNDIzLC0wLjM2OCAwLjQwNiwtMC4zODggMC4zODMsLTAuNDAyQzAuMzYxLC0wLjQxNyAwLjMzNSwtMC40MjQgMC4zMDUsLTAuNDI0QzAuMjc2LC0wLjQyNCAwLjI1MSwtMC40MTcgMC4yMjgsLTAuNDAyQzAuMjA2LC0wLjM4NyAwLjE4OCwtMC4zNjggMC4xNzUsLTAuMzQyQzAuMTYzLC0wLjMxNyAwLjE1NiwtMC4yODggMC4xNTYsLTAuMjU1QzAuMTU2LC0wLjIyMiAwLjE2MywtMC4xOTMgMC4xNzUsLTAuMTY3QzAuMTg4LC0wLjE0MiAwLjIwNiwtMC4xMjIgMC4yMjksLTAuMTA4QzAuMjUxLC0wLjA5MyAwLjI3NywtMC4wODYgMC4zMDYsLTAuMDg2WiIgc3R5bGU9ImZpbGw6cmdiKDI1NSwyNTUsMjU1KTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iYyIgdHJhbnNmb3JtPSJtYXRyaXgoLTAuMDcxNjQ2MiwwLjMxMzA0LC0wLjU4MzY4NSwtMC4wMzg0MjUxLDE0ODkuNzYsLTQ0NC4wNTEpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yNjY4LjExLDcwMC40QzI2NjYuNzksNzAzLjY5OSAyNjY2LjEyLDcwNy4yMTYgMjY2Ni4xMiw3MTAuNzY2QzI2NjYuMTIsNzI2LjI2OCAyNjc4LjcxLDczOC44NTQgMjY5NC4yMSw3MzguODU0QzI3MDkuNzEsNzM4Ljg1NCAyNzIyLjMsNzI2LjI2OCAyNzIyLjMsNzEwLjc2NkMyNzIyLjMsNzA0LjExMSAyNzE5LjkzLDY5Ny42NzIgMjcxNS42Myw2OTIuNTk3TDI3MDcuNjMsNjk5LjM3OEMyNzEwLjMzLDcwMi41NTkgMjcxMS41Nyw3MDYuNjAyIDI3MTEuODEsNzEwLjc2NkMyNzEyLjIsNzE3LjM4IDI3MDYuNjEsNzI0LjUyIDI2OTcuMjcsNzI2LjYzN0MyNjgzLjksNzI4LjU4MSAyNjc2LjYxLDcyMC40ODIgMjY3Ni42MSw3MTAuNzY2QzI2NzYuNjEsNzA4LjU0MSAyNjc3LjAzLDcwNi4zMzYgMjY3Ny44NSw3MDQuMjY5TDI2NjguMTEsNzAwLjRaIiBzdHlsZT0iZmlsbDpyZ2IoMjU1LDI1NSwyNTUpOyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPGcgaWQ9IlIiIHRyYW5zZm9ybT0ibWF0cml4KDAuNDk3MDE2LDAsMCwwLjQ5NzAxNiwyMzkwLjM4LDgyMy4xNTIpIj4KICAgICAgICAgICAgICAgICAgICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLC0wLjEwNzg2LDAuNDUwODAxKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEyLjEyNDcsMCwwLDEyLjEyNDcsMzg2Mi42MSwxOTI5LjkpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLjA3MywtMEwwLjA3MywtMC43TDAuMzgzLC0wLjdDMC40MjgsLTAuNyAwLjQ2OSwtMC42OSAwLjUwNiwtMC42N0MwLjU0MywtMC42NTEgMC41NzIsLTAuNjIzIDAuNTk0LC0wLjU4OEMwLjYxNiwtMC41NTMgMC42MjcsLTAuNTEyIDAuNjI3LC0wLjQ2NUMwLjYyNywtMC40MTggMC42MTUsLTAuMzc3IDAuNTkyLC0wLjM0MkMwLjU2OSwtMC4zMDYgMC41MzksLTAuMjc5IDAuNTAxLC0wLjI1OUwwLjU3LC0wLjEyOEMwLjU3NCwtMC4xMiAwLjU3OSwtMC4xMTUgMC41ODQsLTAuMTExQzAuNTksLTAuMTA3IDAuNTk2LC0wLjEwNiAwLjYwNSwtMC4xMDZMMC42NjQsLTAuMTA2TDAuNjY0LC0wTDAuNTg3LC0wQzAuNTYsLTAgMC41MzUsLTAuMDA3IDAuNTE0LC0wLjAyQzAuNDkzLC0wLjAzNCAwLjQ3NiwtMC4wNTIgMC40NjMsLTAuMDc1TDAuMzgxLC0wLjIzMkMwLjM3NSwtMC4yMzEgMC4zNjgsLTAuMjMxIDAuMzYxLC0wLjIzMUMwLjM1NCwtMC4yMzEgMC4zNDcsLTAuMjMxIDAuMzQsLTAuMjMxTDAuMTkyLC0wLjIzMUwwLjE5MiwtMEwwLjA3MywtMFpNMC4xOTIsLTAuMzM2TDAuMzY4LC0wLjMzNkMwLjM5NCwtMC4zMzYgMC40MTcsLTAuMzQxIDAuNDM4LC0wLjM1MUMwLjQ1OSwtMC4zNjEgMC40NzYsLTAuMzc2IDAuNDg5LC0wLjM5NkMwLjUwMSwtMC40MTUgMC41MDcsLTAuNDM4IDAuNTA3LC0wLjQ2NUMwLjUwNywtMC40OTIgMC41MDEsLTAuNTE2IDAuNDg4LC0wLjUzNUMwLjQ3NSwtMC41NTQgMC40NTksLTAuNTY5IDAuNDM4LC0wLjU3OUMwLjQxNywtMC41OSAwLjM5NCwtMC41OTUgMC4zNjksLTAuNTk1TDAuMTkyLC0wLjU5NUwwLjE5MiwtMC4zMzZaIiBzdHlsZT0iZmlsbDpyZ2IoMjU1LDI1NSwyNTUpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLDEsMC4yNzg1NjksMC4xMDE4ODEpIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD0iMzg2Ni40MyIgY3k9IjE5MjYuMTQiIHI9IjguOTIzIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTpyZ2IoMjU1LDI1NSwyNTUpO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7Ii8+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgPC9nPgo8L3N2Zz4K"/>
</defs>
<style>
</style>
<use id="logo-dark (1)" href="#img1" transform="matrix(1.841,0,0,1.836,-25,-536)"/>
</svg>